-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
A2A v1.0 Protocol Support
This is a tracking issue for adding A2A v1.0 protocol support to a2a-elixir. The work comes from zeroasterisk/a2a-elixir, which implemented the full v1.0 spec as a standalone SDK. Rather than maintain two competing Elixir A2A packages, we'd like to contribute that work here as a series of focused PRs.
Context
The A2A v1.0 spec (currently in alpha on a2aproject/a2a-python 1.0-dev branch) introduces breaking changes from v0.3:
- PascalCase JSON-RPC method names (e.g.,
SendMessageinstead ofmessage/send) - Flat
Partstructure (replaces discriminatedTextPart/FilePart/DataPart) SCREAMING_SNAKE_CASEenums (TASK_STATE_WORKINGinstead ofworking)- New fields on AgentCard (
supportedInterfaces[],documentation_url,signatures,icon_url) - Extension mechanism (
A2A-Extensionsheader negotiation) - Version header support (
A2A-Versionheader validation) - New error types (
ExtensionSupportRequiredError,VersionNotSupportedError) - New methods (
ListTaskPushNotificationConfigs,DeleteTaskPushNotificationConfig,GetExtendedAgentCard) - Push notification CRUD (full implementation, not just stubs)
- Multi-tenant server support
Proposed PR Series
Each PR is self-contained with tests and backward compatibility:
- v1.0 data model — Update structs for v1.0 fields (AgentCard, Part, Message, Task, etc.) while keeping v0.3 wire format working
- v1.0 JSON-RPC method names — Accept both PascalCase and legacy method names on server; client sends v1.0 names
- v1.0 error types — Add
ExtensionSupportRequiredError(-32008) andVersionNotSupportedError(-32009) - Extension mechanism —
A2A-Extensionsheader negotiation on server and client - A2A-Version header — Version validation with
VersionNotSupportedError - Push notification CRUD — Full implementation of set/get/list/delete with webhook sender behaviour
- Multi-tenant server — Path-based
/:tenant/:agent/routing with per-tenant task isolation (optional Plug)
Approach
- All PRs maintain backward compatibility with v0.3 clients
- Server accepts both v0.3 and v1.0 method names/formats
- Each PR includes tests
- Builds on the existing architecture (Agent behaviour, TaskStore, Plug, etc.)
We admire the TCK integration, agent runtime, and overall ergonomics of this library — it's the right foundation for the Elixir A2A ecosystem.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels