Skip to content

feat(a2a-bridge): advertise multi-turn capabilities#316

Open
zeroasterisk wants to merge 2 commits into
GoogleCloudPlatform:mainfrom
zeroasterisk:a2a/capability-update
Open

feat(a2a-bridge): advertise multi-turn capabilities#316
zeroasterisk wants to merge 2 commits into
GoogleCloudPlatform:mainfrom
zeroasterisk:a2a/capability-update

Conversation

@zeroasterisk

@zeroasterisk zeroasterisk commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Update agent cards to advertise streaming and push notification support now that multi-turn conversations are implemented (PRs #314, #315).

Changes

  • Registry card: streaming: true, pushNotifications: true
  • Per-agent card: streaming: true, pushNotifications: true
  • Remove MVP streaming warning from handleStreamMessage
  • README: Remove single-turn limitation, update known limitations

Review history

  • Round 1: 4 new tests (capability values, drift prevention)
  • Rounds 2-3: 3 clean cycles each, no changes
  • Rebased on upstream/main

Merge order

Merge after #314 and #315.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the SCION A2A bridge to advertise support for streaming and push notifications in agent cards, removes the corresponding warning log for stream messages, and updates the README documentation. However, the feedback indicates that these changes are premature because the underlying bridge implementation still retains the MVP limitation where tasks are closed on the first content message, meaning multi-turn streaming and push notifications are not yet fully supported.

Comment on lines +733 to +734
"streaming": true,
"pushNotifications": true,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Advertising streaming: true and pushNotifications: true is premature because the bridge still contains the MVP limitation in dispatchToActiveTask (lines 633-642), where any non-state-change message is treated as a terminal response and the task is closed. This will cause multi-turn agents to have their tasks closed prematurely on the first content message. Please ensure the multi-turn dispatch logic is fully implemented and the MVP limitation is removed before advertising these capabilities.

Suggested change
"streaming": true,
"pushNotifications": true,
"streaming": false,
"pushNotifications": false,

Comment on lines +227 to +228
"streaming": true,
"pushNotifications": true,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Advertising streaming: true and pushNotifications: true is premature because the bridge still contains the MVP limitation in dispatchToActiveTask (lines 633-642 of bridge.go), where any non-state-change message is treated as a terminal response and the task is closed. This will cause multi-turn agents to have their tasks closed prematurely on the first content message. Please ensure the multi-turn dispatch logic is fully implemented and the MVP limitation is removed before advertising these capabilities.

Suggested change
"streaming": true,
"pushNotifications": true,
"streaming": false,
"pushNotifications": false,

s.log.Warn("message/stream request received — MVP limitation: streaming treats the first content message as terminal; multi-turn agents will break",
"project", projectSlug, "agent", agentSlug)

var params SendMessageParams

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Removing this warning is premature because the underlying bridge still has the MVP limitation in dispatchToActiveTask (lines 633-642 of bridge.go) where it treats the first content message as terminal. If a client sends a streaming request, they will not be warned that multi-turn streaming is still broken.

	s.log.Warn("message/stream request received — MVP limitation: streaming treats the first content message as terminal; multi-turn agents will break",
		"project", projectSlug, "agent", agentSlug)

	var params SendMessageParams


- **Single-turn only.** The bridge treats the first non-state-change message from an agent as the final response and closes the task. Multi-turn agents that emit interim content (clarifying questions, progress updates) will have their task closed prematurely. Agents using `input-required` → `completed` flows are not supported yet. Agent cards advertise `streaming: false` and `pushNotifications: false` to reflect this constraint. Streaming requests (`message/stream`) are accepted but emit a runtime warning because multi-turn dispatch is not implemented.
- **Blocking-mode `input-required` flows never resolve.** State-change messages are intentionally skipped for blocking waiters so the actual content reply is delivered. This means a blocking `message/send` call against an agent that transitions to `input-required` will time out (default 120s) because the state change is suppressed and no content reply follows.
- **No gRPC or REST transport.** The bridge only supports JSON-RPC 2.0 over HTTP. gRPC and HTTP+JSON/REST transports are not implemented.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Removing the Single-turn only limitation from the README is premature. The bridge implementation in bridge.go (lines 633-642) still contains the MVP limitation where any non-state-change message is treated as terminal, closing the task on the first content message. This limitation should remain documented until the multi-turn dispatch logic is fully implemented and the code limitation is removed.

Update agent cards to advertise streaming and push notification
support now that multi-turn conversations are implemented.

- Registry card: streaming=true, pushNotifications=true
- Per-agent cards: streaming=true, pushNotifications=true
- Remove MVP streaming warning from handleStreamMessage
- Update README: remove single-turn limitation, update known
  limitations to reflect current state (no gRPC/REST transport)
4 tests verifying multi-turn capability advertisement:
- Registry card advertises streaming=true, pushNotifications=true
- Per-agent card matches registry capabilities
- Direct unit test of GenerateAgentCard capability values
- Drift prevention test ensuring registry and per-agent cards stay in sync
@zeroasterisk zeroasterisk force-pushed the a2a/capability-update branch from 35b892c to 132803c Compare June 7, 2026 22:51
@zeroasterisk

Copy link
Copy Markdown
Contributor Author

Review rounds complete (3 rounds, 3 clean cycles each). No bugs found in any round — this PR is just boolean flips and README text. Rebased on upstream/main. 4 tests verify capability values.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant