Skip to content

feat: enable multi-mode protocol testing for both TCKs#875

Merged
kabir merged 1 commit into
a2aproject:mainfrom
kabir:tck-dualmode
May 14, 2026
Merged

feat: enable multi-mode protocol testing for both TCKs#875
kabir merged 1 commit into
a2aproject:mainfrom
kabir:tck-dualmode

Conversation

@kabir
Copy link
Copy Markdown
Collaborator

@kabir kabir commented May 14, 2026

Add CI for 0.3 TCK, and multi-mode testing (v1.0 + v0.3 together) for both TCK servers.

  • Add Legacy_0_3_AgentInterface and additionalInterfaces to AgentCard so v1.0 cards are parsable by v0.3 clients
  • Add DerivedAgentCardProducer in compat-0.3/tck to convert v0.3 AgentCard to v1.0 format for multi-mode
  • Add multiversion dispatcher deps to both TCK multi-mode profiles
  • Fix global BodyHandler consuming gRPC request bodies by moving to per-route BodyHandler in A2AServerRoutes
  • Ignore additionalInterfaces in gRPC AgentCardMapper
  • Add Compat03Fields utility to selectively add v0.3 fields to v1.0 AgentCard producers when running in a multi-version setup
  • Enable previously @disabled multiversion agent card tests
  • Allow Long JSON-RPC request ids

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements backward compatibility for v0.3 clients by enhancing the v1.0 AgentCard model with legacy fields (url, preferredTransport, and additionalInterfaces) and providing a mechanism to populate them when both protocol versions are enabled. It includes significant updates to documentation, TCK profiles, and test suites to support multi-version environments. Furthermore, it refines the server's request handling by moving the BodyHandler to a per-route basis to avoid conflicts with gRPC services. I have no further feedback to provide as the existing review comment was purely explanatory.

Add CI for 0.3 TCK, and multi-mode testing (v1.0 + v0.3 together)
for both TCK servers.

- Add Legacy_0_3_AgentInterface and additionalInterfaces to AgentCard
  so v1.0 cards are parsable by v0.3 clients
- Add DerivedAgentCardProducer in compat-0.3/tck to convert v0.3
  AgentCard to v1.0 format for multi-mode
- Add multiversion dispatcher deps to both TCK multi-mode profiles
- Fix global BodyHandler consuming gRPC request bodies by moving
  to per-route BodyHandler in A2AServerRoutes
- Ignore additionalInterfaces in gRPC AgentCardMapper
- Add Compat03Fields utility to selectively add v0.3 fields to v1.0
  AgentCard producers when running in a multi-version setup
- Enable previously @disabled multiversion agent card tests
- Allow Long JSON-RPC request ids

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@kabir
Copy link
Copy Markdown
Collaborator Author

kabir commented May 14, 2026

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces backward compatibility for v0.3 clients by adding legacy fields to the v1.0 AgentCard and providing utilities to populate them. It also refines JSON-RPC ID validation to include all Number types and moves Vert.x BodyHandlers to a per-route basis to avoid gRPC conflicts. Feedback highlighted a potential NullPointerException in the DerivedAgentCardProducer when additionalInterfaces is null and suggested including the primary v0.3 endpoint in the interface mapping.

@kabir kabir merged commit d941ec1 into a2aproject:main May 14, 2026
10 of 11 checks passed
@kabir kabir deleted the tck-dualmode branch May 14, 2026 16:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant