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

    No fields configured for Task.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions