Conversation
There was a problem hiding this comment.
Code Review
This pull request removes the A2A extension activation mechanism entirely from the specification, transitioning clients and agents to rely solely on A2A metadata for negotiating supported A2UI versions and catalogs. The review feedback points out that the Python SDK implementation still contains the legacy activation logic and needs to be updated to align with this change. Additionally, several grammatical and phrasing improvements are suggested for the documentation to enhance clarity and correctness.
|
|
||
| ### For agents and servers | ||
|
|
||
| - Stop parsing or requiring the A2A extension activation header (e.g., `X-A2A-Extensions`). Use A2A metadata for capability negotiation instead. |
There was a problem hiding this comment.
While the evolution guide correctly instructs agents to stop parsing or requiring the A2A extension activation header, the Python SDK implementation in agent_sdks/python/a2ui_agent/src/a2ui/a2a/extension.py still contains the activation logic (such as try_activate_a2ui_extension and its helper functions). Please ensure the Python SDK implementation is updated or removed to align with this specification change.
|
|
||
| ### 2.6. Agent card and transport metadata | ||
|
|
||
| - Removed the A2A extension activation mechanism entirely. Clients and agents now rely purely on A2A metadata to negotiate supported A2UI version and catalogs. |
| This document is intended for developers implementing the A2UI A2A extension. The extension adds A2UI v1.0 support to A2A, a format for agents to send streaming, interactive user interfaces to clients. | ||
|
|
||
| Note that A2UI extension activation is optional as clients and agents can negotiate A2UI support using A2A `message.metadata["a2uiClientCapabilities"]` which is attached to every A2A message from the client and contains the supported protocol version and catalogs. Agents advertising A2UI support in their AgentCard is encouraged as clients may rely on it to determine if they should send `message.metadata["a2uiClientCapabilities"]`, however it is not explicitly required. | ||
| A2UI does not use A2A extension activation, and only uses the AgentCard part of A2A Extensions. Clients and agents negotiate supported A2UI version and catalogs using A2A `message.metadata["a2uiClientCapabilities"]` which is attached to every A2A message from the client. Agents advertising A2UI support in their AgentCard is encouraged as clients may rely on it to determine if they should send `message.metadata["a2uiClientCapabilities"]`, however it is not explicitly required. |
There was a problem hiding this comment.
There is a minor grammatical/phrasing issue in this line:
- "negotiate supported A2UI version and catalogs" should be "negotiate the supported A2UI version and catalogs" or "negotiate supported A2UI versions and catalogs".
- "Agents advertising A2UI support in their AgentCard is encouraged" has a subject-verb agreement issue. It should be "Advertising A2UI support in the AgentCard is encouraged" or "Agents are encouraged to advertise A2UI support in their AgentCard".
- "however it is not explicitly required" should have a semicolon or comma before/after "however".
Suggested Phrasing:
A2UI does not use A2A extension activation, and only uses the AgentCard part of A2A Extensions. Clients and agents negotiate the supported A2UI version and catalogs using A2A `message.metadata['a2uiClientCapabilities']` which is attached to every A2A message from the client. Advertising A2UI support in the AgentCard is encouraged as clients may rely on it to determine if they should send `message.metadata['a2uiClientCapabilities']`; however, it is not explicitly required.Additionally, please clarify in the documentation that the client determines a function's execution boundary (e.g., clientOnly status) at runtime by reading its configuration from the active catalog definition.
References
- In A2UI protocol documentation and implementation, clarify that the client determines a function's execution boundary (e.g.,
clientOnlystatus) at runtime by reading its configuration from the active catalog definition.
| } | ||
| } | ||
| ``` | ||
| A2UI does not use A2A extension activation. Clients advertise supported A2UI version and catalogs by attaching `message.metadata["a2uiClientCapabilities"]` to their messages. Agents use A2UI by sending payloads with `DataPart.data.metadata["mimeType"] = "application/a2ui+json"` to clients. |
There was a problem hiding this comment.
For better grammatical correctness, "Clients advertise supported A2UI version and catalogs" should be "Clients advertise the supported A2UI version and catalogs" or "Clients advertise supported A2UI versions and catalogs".
Suggested Phrasing:
A2UI does not use A2A extension activation. Clients advertise the supported A2UI version and catalogs by attaching `message.metadata['a2uiClientCapabilities']` to their messages. Agents use A2UI by sending payloads with `DataPart.data.metadata['mimeType'] = 'application/a2ui+json'` to clients.
We made extension activation optional previously as nobody was using it and we didn't need it.
For 1.0 we explicitly remove it.