feat: A2A Version Header#422
Conversation
🧪 Code Coverage
Generated by coverage-comment.yml |
There was a problem hiding this comment.
Code Review
This pull request introduces A2A protocol versioning support, ensuring that the A2A-Version header is sent with client requests and validated by the server. It adds version constants, a VersionNotSupportedError, and a validation utility, while updating transport handlers and the ServerCallContext to handle versioning logic. Review feedback suggests improving the robustness of the ServerCallContext constructor's type checking, scoping version validation to specific protocol bindings (e.g., JSONRPC, GRPC), and using a getter for the client's protocol version to avoid stale data if the agent card is updated.
…bgralewicz/version_header
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…the protocol name.
…bgralewicz/version_header
There was a problem hiding this comment.
Hmm, why do we need it? I think in fact it's not the case that this ITK agent supports 0.3 protocol version?
🤖 I have created a release *beep* *boop* --- ## 1.0.0-alpha.0 (2026-05-11) See the [v0.3 -> v1.0-alpha.0 migration guide](https://github.com/a2aproject/a2a-js/blob/v1.0.0-alpha.0/docs/migration-guide.md). **Note**: Enabling backward compatibility with v0.3 is tracked in [#452](#452). ### ⚠ BREAKING CHANGES * Drop support for node 18 ([#368](#368)) * Make ServerCallContext parameter mandatory across all places ([#405](#405)) * Remove JSON-RPC client ([#353](#353)) * Remove transport-specific exports ([#404](#404)) * Update codebase to use A2A 1.0.0 data model ([#375](#375)) * Remove A2AExpressApp ([#363](#363)) ### Features * Add A2A Version Header ([#422](#422)) ([b5f3db7](b5f3db7)) * Add cache-headers logic to the agent card handler ([#435](#435)) ([955b52b](955b52b)) * Add resource scoping ([#450](#450)) ([c527086](c527086)) * Add support for custom authentication scheme and credentials in auth-headers ([#430](#430)) ([5a4389b](5a4389b)) * AgentCardSignature support ([#448](#448)) ([4a41a8c](4a41a8c)) * Enforce events ordering ([#437](#437)) ([157cf48](157cf48)) * Enriched Error Model ([#427](#427)) ([c130778](c130778)) * Implement listTasks method ([#383](#383)) ([7d4c472](7d4c472)) * Send current task as the first event after subscribing to it ([#418](#418)) ([4bfcf5f](4bfcf5f)) * Support multi-tenancy ([#419](#419)) ([1877877](1877877)) ### Code Refactoring * remove A2AExpressApp ([#363](#363)) ([0b84728](0b84728)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: bartek-gralewicz <bgralewicz@google.com> Co-authored-by: Ivan Shymko <ishymko@google.com>
Description
Added an A2A Version Header. The followings are now true:
VersionNotSupportedErrorif unsupported,