fix(a2a): update A2aVersionNegotiator to support JSON-RPC version 2.0 #3285

Merged
freemo merged 1 commits from fix/a2a-version-negotiator-jsonrpc-2-0 into master 2026-04-05 21:11:46 +00:00
2 changed files with 13 additions and 13 deletions
+11 -11
View File
@@ -223,20 +223,20 @@ Feature: Consolidated Misc
Scenario: Negotiate supported version succeeds
Given a new A2aVersionNegotiator
When I negotiate version "1.0"
Then the negotiated version should be "1.0"
When I negotiate version "2.0"
Then the negotiated version should be "2.0"
Scenario: Negotiate unsupported version raises error
Given a new A2aVersionNegotiator
When I try to negotiate version "2.0"
When I try to negotiate version "99.0"
Then an A2aVersionMismatchError should be raised
And the error requested_version should be "2.0"
And the error requested_version should be "99.0"
Scenario: is_supported returns True for valid version
Given a new A2aVersionNegotiator
Then version "1.0" should be supported
Then version "2.0" should be supported
Scenario: is_supported returns False for invalid version
@@ -246,7 +246,7 @@ Feature: Consolidated Misc
Scenario: get_current returns current version
Given a new A2aVersionNegotiator
Then the current version should be "1.0"
Then the current version should be "2.0"
# -----------------------------------------------------------------------
# A2aRequest model validation
@@ -719,24 +719,24 @@ Feature: Consolidated Misc
# --- A2A version negotiation ---
Scenario: M6 smoke A2A version negotiation accepts 1.0
Scenario: M6 smoke A2A version negotiation accepts 2.0
Given a m6 smoke test runner
And a m6 smoke A2A local facade
When I m6 smoke negotiate A2A version "1.0"
Then the m6 smoke negotiated version should be "1.0"
When I m6 smoke negotiate A2A version "2.0"
Then the m6 smoke negotiated version should be "2.0"
Scenario: M6 smoke A2A version negotiation rejects unsupported
Given a m6 smoke test runner
And a m6 smoke A2A local facade
When I m6 smoke negotiate A2A version "2.0"
When I m6 smoke negotiate A2A version "99.0"
Then the m6 smoke facade should raise A2aVersionMismatchError
Scenario: M6 smoke A2A version is_supported returns correct result
Given a m6 smoke test runner
And a m6 smoke A2A local facade
When I m6 smoke check if version "1.0" is supported
When I m6 smoke check if version "2.0" is supported
Then the m6 smoke version support should be true
When I m6 smoke check if version "99.0" is supported
Then the m6 smoke version support should be false
+2 -2
View File
@@ -17,8 +17,8 @@ logger: structlog.stdlib.BoundLogger = structlog.get_logger(__name__)
class A2aVersionNegotiator:
"""Negotiates A2A protocol versions."""
CURRENT_VERSION: str = "1.0"
SUPPORTED_VERSIONS: tuple[str, ...] = ("1.0",)
CURRENT_VERSION: str = "2.0"
SUPPORTED_VERSIONS: tuple[str, ...] = ("2.0",)
def negotiate(self, requested: str) -> str:
"""Return *requested* if supported, otherwise raise.