Skip to content

workbench: a2a-mesh demo uses legacy flat endpoints, not A2A v1.0 JSON-RPC #274

@fede-kamel

Description

@fede-kamel

Context

After the A2A v1.0 protocol work merges (PR for feat/a2a-v1-protocol-compat), A2AClient defaults to protocol_version="1.0" and A2AServer advertises protocolVersion + supportedInterfaces on the Agent Card. Notebook 28 was updated to walk through every v1.0 method (SendMessage, GetTask, ListTasks, CancelTask, SendStreamingMessage).

The workbench's A2A mesh demo project (examples/projects/a2a-mesh/) still uses the legacy backwards-compat surface:

  • examples/projects/a2a-mesh/src/a2a_mesh/orchestrator.py:76A2AClient(url).invoke(prompt) hits /a2a/invoke (flat string-in/string-out, not JSON-RPC).
  • examples/projects/a2a-mesh/src/a2a_mesh/orchestrator.py:84http.stream("POST", f"{url}/a2a/stream", ...) hits the legacy SSE endpoint, not SendStreamingMessage.

The demo still works (those endpoints are preserved on purpose for pre-v1.0 peers), but it no longer reflects the recommended path for new code.

Proposal

Update examples/projects/a2a-mesh/src/a2a_mesh/orchestrator.py to:

  1. Use A2AClient.send_message(Message(...)) for the non-streaming path and surface task.artifacts[-1].parts[0].text to the user.
  2. Use A2AClient.send_message_streaming(Message(...)) for the --stream path and render task / status-update / artifact-update events instead of decoding /a2a/stream SSE by hand.
  3. Optionally show card.protocolVersion / card.supportedInterfaces during discovery so the workbench surfaces the same v1.0 metadata the notebook does.

Leave the legacy invoke / /a2a/stream paths reachable via a flag (or a second sample) so the demo still proves backwards-compat works.

Out of scope

  • The workbench/ UI, BFF, and runner — they don't reference protocol method names directly.
  • A2AServer (a2a_mesh.research, a2a_mesh.finance) — already serves both v1.0 and legacy.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions