Skip to content

A2A v1.0 Protocol Support #13

@zeroasterisk

Description

@zeroasterisk

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., SendMessage instead of message/send)
  • Flat Part structure (replaces discriminated TextPart/FilePart/DataPart)
  • SCREAMING_SNAKE_CASE enums (TASK_STATE_WORKING instead of working)
  • New fields on AgentCard (supportedInterfaces[], documentation_url, signatures, icon_url)
  • Extension mechanism (A2A-Extensions header negotiation)
  • Version header support (A2A-Version header 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. Original closed PRs from the fork are linked for reference where the work has been re-landed (or will be) as smaller, in-tree PRs.

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.

cc @zeroasterisk

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions