feat: add initial acp streable http rfc. - #100
Conversation
Million-mo
commented
Aug 22, 2026
- Fix Hypercorn terminology: server framework -> ASGI server - Document port default (8080) differs from legacy WebSocketTransport (8765) - Change JSON-RPC error code -32600 -> -32002 for initialize-required state - Add Rejected Options table in Decision Record per RFC rules - Add Initialize Guard implementation notes explaining protocol-layer interception
- Add ACPWebSocketTransport dataclass for streamable-http config - Implement _serve_streamable_http() with Starlette/uvicorn server - Add _StarletteWebSocketReadStream/_StarletteWebSocketWriteStream adapters - Generate Acp-Connection-Id UUID header per connection - Track active connections with graceful cleanup on shutdown - Add initialize guard to AgentSideConnection (-32002 error before init) - Extend ACPPoolServerConfig with transport/host/port fields - Update ACPServer.from_config() to resolve YAML transport config - Extend CLI with --transport streamable-http/--host/--port options - Add deprecation warning for legacy 'websocket' transport literal - Migrate Toad helper in ui.py to use new transport - Add starlette>=0.40 to dependencies - Fix WebSocket accept header format (bytes instead of str) - Add 41 unit/integration/CLI tests for streamable-http transport - Update existing tests to work with initialize guard
- Add buffering to _StarletteWebSocketReadStream.receive to respect max_bytes - Change _StarletteWebSocketWriteStream.send to use rstrip(b'\n') instead of strip() - Add test for buffering behavior across receive calls
|
|