Skip to content

feature: add SLIMRPC, WebSocket, and stdio transport bindings #12

@muscariello

Description

@muscariello

Type: Feature

Summary

Add first-class SLIMRPC, WebSocket, and stdio transport bindings across the A2A Rust workspace.

Why

The workspace currently supports JSON-RPC over HTTP, REST / HTTP+JSON, gRPC, and SSE streaming. This feature tracks the next transport expansion across the existing transport seams: protocol constants in the core crate, client transport registration in the factory, transport-agnostic server wrappers around RequestHandler, and end-to-end transport coverage in the helloworld example.

Tasks

Scope / plan

  • Extend protocol inventory and negotiation surfaces for SLIMRPC, WebSocket, and stdio
  • Add client transport implementations and registration paths for all three bindings
  • Add corresponding server wrappers or runtime helpers where the binding is server-facing or subprocess-backed
  • Define consistent ServiceParams propagation, streaming semantics, and A2AError mapping across the three bindings
  • Extend end-to-end transport coverage and docs for each binding

Acceptance criteria

  • All three bindings have explicit protocol identifiers and documented negotiation behavior
  • Client negotiation can select the new bindings alongside existing JSON-RPC, REST, and gRPC support
  • Server-facing bindings bridge into RequestHandler without changing executor or task-store semantics
  • End-to-end coverage demonstrates parity for key unary, streaming, and error paths

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions