Spec gap: recommended transport for A2uiClientAction when surfaces are embedded in a chat (AG-UI / CopilotKit) host #1570
Unanswered
sunholo-voight-kampff
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Context
A2UI v0.9 defines the
A2uiClientActionmessage shape (name,surfaceId,sourceComponentId,timestamp,context) for user interactions (Button click, form submit, etc.) on a rendered surface.The spec is explicit about the message shape but — as far as we can find — silent about the transport when A2UI surfaces are embedded inside a chat-style agent (mounted in an AG-UI / CopilotKit host) rather than running as a standalone A2UI app.
What we did
We POST the action to a sibling REST endpoint on the chat backend:
The backend writes the structured action into ADK session state under a namespaced key (
a2ui_surface_context.{surfaceId}.lastAction) so the agent's next turn can read it. Gated per-skill viatool_configs.a2ui.allow_surface_context_writes(mirrors the per-server opt-in pattern from MCP Apps), 4 KB cap on thecontextfield.This works, but every consumer of our template has to follow our convention — there's no spec hook telling them what the "right" transport is.
What we'd like to clarify
forwardedPropson the next user message — has the "wait until next user input" tradeoff)Related
Happy to contribute a docs PR or reference example once the recommended approach is clear.
cc @MarkEdmondson1234
All reactions