a2aproject / a2aproject/a2a-rs

task: add stdio transport binding

Aperta
#15 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
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.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.