@@ -49,6 +49,10 @@ class Citation(pydantic.BaseModel):
4949 description: str | None = None
5050
5151
52+ class CitationMetadata(pydantic.BaseModel):
53+ citations: list[Citation] = pydantic.Field(default_factory=list)
54+
55+
5256class CitationExtensionSpec(NoParamsBaseExtensionSpec):
5357 URI: str = "https://a2a-extensions.beeai.dev/ui/citation/v1"
5458
@@ -57,43 +61,22 @@ class CitationExtensionServer(BaseExtensionServer[CitationExtensionSpec, NoneTyp
5761 def citation_metadata(
5862 self,
5963 *,
60- start_index: int | None = None,
61- end_index: int | None = None,
62- url: str | None = None,
63- title: str | None = None,
64- description: str | None = None,
65- ) -> dict[str, Citation]:
66- return {
67- self.spec.URI: Citation(
68- start_index=start_index,
69- end_index=end_index,
70- url=url,
71- title=title,
72- description=description,
73- )
74- }
64+ citations: list[Citation],
65+ ) -> dict[str, CitationMetadata]:
66+ return {self.spec.URI: CitationMetadata(citations=citations)}
7567
7668 def message(
7769 self,
7870 text: str | None = None,
7971 parts: list[Part] | None = None,
80- citation_start_index: int | None = None,
81- citation_end_index: int | None = None,
82- citation_url: str | None = None,
83- citation_title: str | None = None,
84- citation_description: str | None = None,
72+ *,
73+ citations: list[Citation],
8574 ) -> AgentMessage:
8675 return AgentMessage(
8776 text=text,
8877 parts=parts or [],
89- metadata=self.citation_metadata(
90- start_index=citation_start_index,
91- end_index=citation_end_index,
92- url=citation_url,
93- title=citation_title,
94- description=citation_description,
95- ),
78+ metadata=self.citation_metadata(citations=citations),
9679 )
9780
9881
99- class CitationExtensionClient(BaseExtensionClient[CitationExtensionSpec, Citation ]): ...
82+ class CitationExtensionClient(BaseExtensionClient[CitationExtensionSpec, CitationMetadata ]): ...
0 commit comments