Is your feature request related to a problem? Please describe.
The A2A spec requires extensions to be activated per-request via the A2A-Extensions HTTP header (spec). Extensions should default to inactive. Currently neither the server nor the client implements this.
Server (agentstack-sdk-py):
- Extension dependencies are always injected regardless of client activation
- Outgoing message metadata (citations, trajectories, etc.) is never filtered based on activated extensions
- No
A2A-Extensions response header is set
Client (agentstack-sdk-ts / agentstack-ui):
handleAgentCard reads agent card extensions to resolve service demands (LLM, MCP, etc.) via message metadata, but never sends A2A-Extensions header
- UI extensions (citation, trajectory, error, canvas) are parsed from response metadata unconditionally — client never declares which UI extensions it actually supports
sendMessageStream call has no mechanism to attach the activation header
Describe the solution you'd like
- Client should send
A2A-Extensions header listing URIs of extensions it supports
- Server should read the header and only include metadata for activated extensions in responses
- Server should set
A2A-Extensions response header confirming activated extensions
BaseExtensionServer should expose activation state so agent code can branch on it
Additional context
May require upstream changes in a2a-sdk (Python) and @a2a-js/sdk if request/response contexts don't carry header info today.
Is your feature request related to a problem? Please describe.
The A2A spec requires extensions to be activated per-request via the
A2A-ExtensionsHTTP header (spec). Extensions should default to inactive. Currently neither the server nor the client implements this.Server (
agentstack-sdk-py):A2A-Extensionsresponse header is setClient (
agentstack-sdk-ts/agentstack-ui):handleAgentCardreads agent card extensions to resolve service demands (LLM, MCP, etc.) via message metadata, but never sendsA2A-ExtensionsheadersendMessageStreamcall has no mechanism to attach the activation headerDescribe the solution you'd like
A2A-Extensionsheader listing URIs of extensions it supportsA2A-Extensionsresponse header confirming activated extensionsBaseExtensionServershould expose activation state so agent code can branch on itAdditional context
May require upstream changes in
a2a-sdk(Python) and@a2a-js/sdkif request/response contexts don't carry header info today.