All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- A2A spec-compliant wire format — client sends standard method names (
message/send,message/stream,tasks/get,tasks/cancel,tasks/resubscribe,tasks/list) - Outgoing message parts automatically converted to wire format (
type→kind) with auto-generatedmessageId - SSE stream parser unwraps JSON-RPC envelopes and normalizes
kind-based events (status-update,artifact-update,task) to internal format discoverAgent()now acceptsauthandheadersoptions for authenticated agent card discovery- New
examples/directory with echo server (pnpm echo) for quick A2A Inspector testing, OpenAI dual-protocol server (pnpm agent), and LangSmith client test (pnpm test-langsmith)
- LangSmith A2A compatibility — handle both
contextId(camelCase) andcontext_id(snake_case) in task responses
- Examples reorganized from
example/toexamples/withclient/andserver/subdirectories
- Task state transition validation via
VALID_TASK_TRANSITIONSmap andcanTransitionTask()helper - Retryable error metadata — internal server errors include
{ retryable: true }in error data A2AError.retryablegetter for clients to check if a failed operation can be retried
handleCancelTask()returnsINVALID_PARAMSerror when attempting to cancel a task in a terminal state- Promise-based message handlers now correctly transition through
workingbeforecompleted createJsonRpcError()accepts optionaldataparameter for richer error responses