Skip to content

task: add stdio transport binding #15

@muscariello

Description

@muscariello

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions