a2aproject / a2aproject/a2a-rs
task: add stdio transport binding
- Lingua principale
- Rust
- Stelle
- 75
- Fork
- 19
- Merge medio
- 11h 27m
- PR unite (30g)
- 21
Descrizione
Type: Task
## Summary
Add a stdio transport binding for subprocess-hosted agents using stdin/stdout, alongside the current JSON-RPC over HTTP, REST / HTTP+JSON, gRPC, and SSE streaming support.
## Why
The existing bindings are network-oriented. A stdio transport would make local subprocess execution a first-class option for tool-style integrations, local development, and process-scoped agent hosting while still reusing the core transport abstraction and shared protocol types.
## Scope / plan
- [ ] Add a stdio protocol identifier and interface contract for subprocess-backed agents
- [ ] Implement a client transport that spawns and manages a subprocess over stdin/stdout
- [ ] Define request framing, startup handshake, streaming behavior, shutdown, and cancellation semantics
- [ ] Define how ServiceParams are carried without HTTP or gRPC metadata
- [ ] Define A2AError mapping for process exits, broken pipes, invalid frames, and timeouts
- [ ] Add integration tests and supporting docs for the stdio contract and lifecycle behavior
## Acceptance criteria
- A client can launch a subprocess-backed agent and complete unary and streaming operations over stdio
- Lifecycle handling is deterministic for startup failure, clean exit, cancellation, and broken-pipe cases
- ServiceParams propagation and A2AError mapping are specified and covered by tests
- Docs describe the stdio contract clearly enough for another implementation to interoperate
Parent feature: #12
Guida per i contributori
Apri la guida per i contributori
Valutazione
Questa issue non è ancora stata valutata.