-
Notifications
You must be signed in to change notification settings - Fork 1.2k
remove a2a extension activation entirely in v1.0 #2033
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
wrenj
wants to merge
2
commits into
main
Choose a base branch
from
rma2aext
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+6
−58
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,7 +4,8 @@ | |
|
|
||
| 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 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. | ||
|
|
||
|
|
||
| ## Extension URI | ||
|
|
||
|
|
@@ -48,63 +49,7 @@ The `params` object corresponds to the `v1.0` object in the `server_capabilities | |
|
|
||
| ## A2A Extension activation | ||
|
|
||
| Activating the A2UI extension is optional. Clients and agents can negotiate A2UI support using `message.metadata["a2uiClientCapabilities"]` A2A `DataPart.data.metadata["mimeType"] = "application/a2ui+json"`. | ||
|
|
||
| Specifically: | ||
|
|
||
| - If a client includes `message.metadata["a2uiClientCapabilities"]`, the agent can use this object to determine the supported A2UI protocol version and catalogs. | ||
| - If an agent returns A2A A2A `DataPart.data.metadata["mimeType"] = "application/a2ui+json"`, the client knows the payload contains A2UI messages. | ||
|
|
||
| While explicit activation is not required, clients can still explicitly activate the extension using the transport-defined A2A extension activation mechanism. The [A2A Extensions Guide](https://a2a-protocol.org/latest/topics/extensions/) defines this process. | ||
|
|
||
| Note: You should not use `accepted_output_modes: ['a2ui']` (which is not an A2UI standard) to trigger A2UI. | ||
|
|
||
| ### JSON-RPC and HTTP transports | ||
|
|
||
| To activate the A2UI A2A Extension, the `X-A2A-Extensions` HTTP header includes the extension URI. | ||
|
|
||
| **Example HTTP `SendMessageRequest`:** | ||
|
|
||
| ```http | ||
| POST /v1/messages HTTP/1.1 | ||
| Host: agent.example.com | ||
| X-A2A-Extensions: https://a2ui.org/a2a-extension/a2ui/v1.0 | ||
| Content-Type: application/json | ||
|
|
||
| { | ||
| "message": { | ||
| "parts": [ | ||
| { | ||
| "text": "Hello, show me the dashboard" | ||
| } | ||
| ] | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| To see how the agent parses the extension URI, see [`extension.py`](../../../../../agent_sdks/python/a2ui_agent/src/a2ui/a2a/extension.py). | ||
|
|
||
| ### GRPC transport | ||
|
|
||
| To activate the A2UI A2A Extension, the client adds the extension URI to A2A `sendMessageParams.metadata["X-A2A-Extensions"]`. | ||
|
|
||
| **Example gRPC `SendMessageRequest`:** | ||
|
|
||
| ```json | ||
| { | ||
| "metadata": { | ||
| "X-A2A-Extensions": "https://a2ui.org/a2a-extension/a2ui/v1.0" | ||
| }, | ||
| "message": { | ||
| "parts": [ | ||
| { | ||
| "text": "Hello, show me the dashboard" | ||
| } | ||
| ] | ||
| } | ||
| } | ||
| } | ||
| ``` | ||
| 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. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nit: Maybe we can explicitly mention that the developer simply sets the version-specific client capabilities submessages to indicate which protocol versions are available. E.g. |
||
|
|
||
| ## A2A Client to Server Metadata | ||
|
|
||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.