Skip to content

Commit 95a1333

Browse files
authored
Fix schema URLs, publish schema on a2ui.org (#572)
1 parent 9c31af2 commit 95a1333

24 files changed

+83
-54
lines changed

a2a_agents/python/a2ui_agent/src/a2ui/extension/a2ui_extension.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@
2929
SUPPORTED_CATALOG_IDS_KEY = "supportedCatalogIds"
3030
INLINE_CATALOGS_KEY = "inlineCatalogs"
3131

32-
STANDARD_CATALOG_ID = "https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json"
32+
STANDARD_CATALOG_ID = (
33+
"https://a2ui.org/specification/v0_8/standard_catalog_definition.json"
34+
)
3335

3436

3537
def create_a2ui_part(a2ui_data: dict[str, Any]) -> Part:

docs/reference/components.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Component Gallery
22

3-
This page showcases all standard A2UI components with examples and usage patterns. For the complete technical specification, see the [Standard Catalog Definition](https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json).
3+
This page showcases all standard A2UI components with examples and usage patterns. For the complete technical specification, see the [Standard Catalog Definition](https://a2ui.org/specification/v0_8/standard_catalog_definition.json).
44

55
## Layout Components
66

docs/reference/messages.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,8 @@ Remove a surface and all its components and data.
386386

387387
All messages should be validated against:
388388

389-
- **[server_to_client.json](https://github.com/google/A2UI/blob/main/specification/v0_8/json/server_to_client.json)**: Message envelope schema
390-
- **[standard_catalog_definition.json](https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json)**: Component schemas
389+
- **[server_to_client.json](https://a2ui.org/specification/v0_8/server_to_client.json)**: Message envelope schema
390+
- **[standard_catalog_definition.json](https://a2ui.org/specification/v0_8/standard_catalog_definition.json)**: Component schemas
391391

392392
## Further Reading
393393

mkdocs.yaml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,17 @@ plugins:
183183
# sections:
184184
# "Specification":
185185
# - a2ui_protocol.md
186-
# - redirects:
187-
# redirect_maps:
188-
# "index.md": "a2ui_protocol.md"
186+
- redirects:
187+
redirect_maps:
188+
"specification/v0_9/server_to_client.json": "specification/v0_9/json/server_to_client.json"
189+
"specification/v0_9/client_to_server.json": "specification/v0_9/json/client_to_server.json"
190+
"specification/v0_9/common_types.json": "specification/v0_9/json/common_types.json"
191+
"specification/v0_9/standard_catalog.json": "specification/v0_9/json/standard_catalog.json"
192+
"specification/v0_9/a2ui_client_capabilities.json": "specification/v0_9/json/a2ui_client_capabilities.json"
193+
"specification/v0_9/a2ui_client_data_model.json": "specification/v0_9/json/a2ui_client_data_model.json"
194+
"specification/v0_8/a2ui_client_capabilities_schema.json": "specification/v0_8/json/a2ui_client_capabilities_schema.json"
195+
"specification/v0_8/catalog_description_schema.json": "specification/v0_8/json/catalog_description_schema.json"
196+
"specification/v0_8/client_to_server.json": "specification/v0_8/json/client_to_server.json"
197+
"specification/v0_8/server_to_client.json": "specification/v0_8/json/server_to_client.json"
198+
"specification/v0_8/server_to_client_with_standard_catalog.json": "specification/v0_8/json/server_to_client_with_standard_catalog.json"
199+
"specification/v0_8/standard_catalog_definition.json": "specification/v0_8/json/standard_catalog_definition.json"

samples/client/angular/projects/orchestrator/src/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ app.post('/a2a', (req, res) => {
6262
metadata: {
6363
a2uiClientCapabilities: {
6464
supportedCatalogIds: [
65-
'https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json',
65+
'https://a2ui.org/specification/v0_8/standard_catalog_definition.json',
6666
],
6767
},
6868
},

samples/client/angular/projects/rizzcharts/src/components/toolbar/toolbar.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,15 @@ import { FormsModule } from '@angular/forms';
2727

2828
@Component({
2929
selector: 'app-toolbar',
30-
imports: [MatButtonModule, MatIconModule, MatToolbarModule, MatSelectModule, MatFormFieldModule, MatInputModule, FormsModule],
30+
imports: [
31+
MatButtonModule,
32+
MatIconModule,
33+
MatToolbarModule,
34+
MatSelectModule,
35+
MatFormFieldModule,
36+
MatInputModule,
37+
FormsModule,
38+
],
3139
templateUrl: './toolbar.html',
3240
styleUrl: './toolbar.scss',
3341
})
@@ -37,22 +45,22 @@ export class Toolbar {
3745

3846
catalogs = [
3947
{
40-
value: 'https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json',
41-
viewValue: 'Standard'
48+
value: 'https://a2ui.org/specification/v0_8/standard_catalog_definition.json',
49+
viewValue: 'Standard',
4250
},
4351
{
44-
value: 'https://github.com/google/A2UI/blob/main/samples/agent/adk/rizzcharts/rizzcharts_catalog_definition.json',
45-
viewValue: 'Rizzcharts Custom'
52+
value:
53+
'https://github.com/google/A2UI/blob/main/samples/agent/adk/rizzcharts/rizzcharts_catalog_definition.json',
54+
viewValue: 'Rizzcharts Custom',
4655
},
4756
];
4857

4958
ngOnInit() {
50-
this.selectedCatalogs = this.catalogs.map(c => c.value);
59+
this.selectedCatalogs = this.catalogs.map((c) => c.value);
5160
this.updateCatalogService();
5261
}
5362

5463
updateCatalogService() {
5564
this.catalogService.catalogUris = this.selectedCatalogs;
5665
}
57-
5866
}

specification/v0_8/docs/a2ui_extension_specification.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Example AgentExtension block:
4141
"required": false,
4242
"params": {
4343
"supportedCatalogIds": [
44-
"https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json",
44+
"https://a2ui.org/specification/v0_8/standard_catalog_definition.json",
4545
"https://my-company.com/a2ui/v0.8/my_custom_catalog.json"
4646
],
4747
"acceptsInlineCatalogs": true

specification/v0_8/docs/a2ui_protocol.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ A2UI's component model is designed for flexibility, separating the protocol from
167167

168168
A **Catalog** defines the contract between the server and the client for the UI that can be rendered. It contains a list of supported component types (e.g., `Row`, `Text`), their properties, and available styles. A catalog is defined by a **Catalog Definition Document**.
169169

170-
There is a **Standard Catalog** associated with each version of the A2UI protocol. For v0.8, its identifier is `https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json`.
170+
There is a **Standard Catalog** associated with each version of the A2UI protocol. For v0.8, its identifier is `https://a2ui.org/specification/v0_8/standard_catalog_definition.json`.
171171

172172
Catalog IDs are simple string identifiers. While they can be anything, it is conventional to use a URI within a domain that you own, to simplify debugging, avoid confusion, and avoid name collisions. Furthermore, if any changes are made to a catalog that could break compatibility between an agent and renderer, a new `catalogId` **must** be assigned. This ensures clear versioning and prevents unexpected behavior if an agent has changes but the client does not, or vice versa.
173173

@@ -192,7 +192,7 @@ The server (agent) advertises its capabilities in its Agent Card as part of the
192192
"uri": "https://a2ui.org/a2a-extension/a2ui/v0.8",
193193
"params": {
194194
"supportedCatalogIds": [
195-
"https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json",
195+
"https://a2ui.org/specification/v0_8/standard_catalog_definition.json",
196196
"https://my-company.com/a2ui/v0.8/my_custom_catalog.json"
197197
],
198198
"acceptsInlineCatalogs": true
@@ -218,7 +218,7 @@ In **every** message sent to the server, the client includes an `a2uiClientCapab
218218
"metadata": {
219219
"a2uiClientCapabilities": {
220220
"supportedCatalogIds": [
221-
"https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json",
221+
"https://a2ui.org/specification/v0_8/standard_catalog_definition.json",
222222
"https://my-company.com/a2ui_catalogs/custom-reporting-catalog-1.2"
223223
],
224224
"inlineCatalogs": [
@@ -249,7 +249,7 @@ The server receives the client's capabilities and chooses a catalog to use for a
249249

250250
- `catalogId` (string, optional): The identifier of the chosen catalog. This ID must be one of the `supportedCatalogIds` or the `catalogId` from one of the `inlineCatalogs` provided by the client.
251251

252-
If the `catalogId` is omitted, the client **MUST** default to the standard catalog for the protocol version (`https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json`).
252+
If the `catalogId` is omitted, the client **MUST** default to the standard catalog for the protocol version (`https://a2ui.org/specification/v0_8/standard_catalog_definition.json`).
253253

254254
**Example `beginRendering` Message:**
255255
```json
@@ -279,7 +279,7 @@ resolved_schema["properties"]["surfaceUpdate"]["properties"]["components"]["item
279279
resolved_schema["properties"]["beginRendering"]["properties"]["styles"]["properties"] = style_properties
280280
```
281281

282-
See `server_to_client_with_standard_catalog.json` for an example of a resolved
282+
See `server_to_client_with_standard_catalog.json` for an example of a resolved
283283
schema which has the components substituted in.
284284

285285
### 2.2. The `surfaceUpdate` Message

specification/v0_8/docs/custom_catalog_changes.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ The previous mechanism, which involved a single, one-time `clientUiCapabilities`
77
## Key changes to the protocol
88

99
1. **Agent capability advertisement (`supportedCatalogIds`, `acceptsInlineCatalogs`)**: The agent's role in negotiation has been expanded. It now can declare a list of supported catalog IDs, in addition to whether it is capable of processing catalogs defined "inline" by the client.
10-
* **Relevant Doc**: [`a2ui_extension_specification.md`](./a2ui_extension_specification.md)
10+
- **Relevant Doc**: [`a2ui_extension_specification.md`](./a2ui_extension_specification.md)
1111

1212
2. **Client capabilities via A2A metadata**: The client now sends its capabilities in an `a2uiClientCapabilities` object. Crucially, this is no longer a standalone message but is included in the `metadata` field of **every** A2A message sent to the agent.
13-
* This object contains `supportedCatalogIds` (an array of known catalog IDs) and an optional `inlineCatalogs` (an array of full catalog definitions).
14-
* **Relevant doc**: The new process is explained in the [`a2ui_protocol.md`](./a2ui_protocol.md#catalog-negotiation) section on Catalog Negotiation.
15-
* **Relevant schema**: [`a2ui_client_capabilities_schema.json`](../json/a2ui_client_capabilities_schema.json)
13+
- This object contains `supportedCatalogIds` (an array of known catalog IDs) and an optional `inlineCatalogs` (an array of full catalog definitions).
14+
- **Relevant doc**: The new process is explained in the [`a2ui_protocol.md`](./a2ui_protocol.md#catalog-negotiation) section on Catalog Negotiation.
15+
- **Relevant schema**: [`a2ui_client_capabilities_schema.json`](../json/a2ui_client_capabilities_schema.json)
1616

1717
3. **Per-Surface catalog selection (`beginRendering`)**: The agent is now responsible for selecting which catalog to use for each UI surface. It signals its choice using the new optional `catalogId` field in the `beginRendering` message. If this field is omitted, the client must default to the Standard Catalog.
18-
* **Relevant doc**: [`a2ui_protocol.md`](./a2ui_protocol.md#catalog-negotiation)
19-
* **Relevant schema**: The change is reflected in [`server_to_client.json`](../json/server_to_client.json).
18+
- **Relevant doc**: [`a2ui_protocol.md`](./a2ui_protocol.md#catalog-negotiation)
19+
- **Relevant schema**: The change is reflected in [`server_to_client.json`](../json/server_to_client.json).
2020

2121
4. **Catalog definition ID (`catalogId`)**: To facilitate identification, the catalog definition schema itself now has a required `catalogId` field.
22-
* **Relevant schema**: [`catalog_description_schema.json`](../json/catalog_description_schema.json)
22+
- **Relevant schema**: [`catalog_description_schema.json`](../json/catalog_description_schema.json)
2323

2424
---
2525

@@ -45,14 +45,14 @@ Your responsibilities are to accurately declare your capabilities and render sur
4545

4646
1. **Declare capabilities on every request**: For every A2A message your application sends, your library must inject the `a2uiClientCapabilities` object into the top-level `metadata` field.
4747

48-
2. **Populate `supportedCatalogIds`**: In the capabilities object, populate this array with the string identifiers of all pre-compiled catalogs your renderer supports. If your renderer supports the standard catalog for v0.8, you **should** include its ID: `https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json`.
48+
2. **Populate `supportedCatalogIds`**: In the capabilities object, populate this array with the string identifiers of all pre-compiled catalogs your renderer supports. If your renderer supports the standard catalog for v0.8, you **should** include its ID: `https://a2ui.org/specification/v0_8/standard_catalog_definition.json`.
4949

5050
3. **Provide `inlineCatalogs` (optional)**: If your renderer supports dynamically generating or defining catalogs at runtime, include their full, valid Catalog Definition Documents in the `inlineCatalogs` array.
5151

5252
4. **Process `beginRendering`**: When your renderer receives a `beginRendering` message, it must inspect the new `catalogId` field.
5353

5454
5. **Select Catalog for surface**:
55-
* If `catalogId` is present, use the corresponding catalog to render that surface. Your renderer must be able to look up the catalog from its pre-compiled list or from the inline definitions it just sent.
56-
* If `catalogId` is **absent**, you **must** default to using the Standard Catalog for v0.8 for that surface.
55+
- If `catalogId` is present, use the corresponding catalog to render that surface. Your renderer must be able to look up the catalog from its pre-compiled list or from the inline definitions it just sent.
56+
- If `catalogId` is **absent**, you **must** default to using the Standard Catalog for v0.8 for that surface.
5757

5858
6. **Manage multiple Catalogs**: Your renderer must be architected to handle multiple surfaces being rendered with different catalogs simultaneously. A dictionary mapping `surfaceId` to the chosen `catalog` is a common approach.

specification/v0_8/json/a2ui_client_capabilities_schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"properties": {
77
"supportedCatalogIds": {
88
"type": "array",
9-
"description": "The URI of each of the catalogs that is supported by the client. The standard catalog for v0.8 is 'https://github.com/google/A2UI/blob/main/specification/v0_8/json/standard_catalog_definition.json'.",
9+
"description": "The URI of each of the catalogs that is supported by the client. The standard catalog for v0.8 is 'https://a2ui.org/specification/v0_8/standard_catalog_definition.json'.",
1010
"items": {
1111
"type": "string"
1212
}

0 commit comments

Comments
 (0)