Skip to content

Conversation

@a2a-bot
Copy link
Collaborator

@a2a-bot a2a-bot commented Jan 14, 2026

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @a2a-bot, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request brings a significant update to the A2A protocol specification, enhancing its capabilities and refining its structure. The changes introduce new features like task listing, a new OAuth flow, and tenant-aware operations, alongside a comprehensive refactoring of existing message fields for improved clarity and consistency. The updates ensure the API remains robust and extensible for future development.

Highlights

  • Protocol Buffer Definitions Update: Numerous fields across various messages have been renamed for clarity and consistency (e.g., 'push_notification' to 'push_notification_config', 'mime_type' to 'media_type', 'content' to 'parts'). Several fields have also been explicitly marked as required using google.api.field_behavior.REQUIRED.
  • New Functionality and Fields: New fields like reference_task_ids in Message, protocol_binding and tenant in AgentInterface, and state_transition_history in AgentCapabilities have been introduced. New messages and requests such as ListTasksRequest, ListTasksResponse, DeviceCodeOAuthFlow, and GetExtendedAgentCardRequest have been added to expand API capabilities.
  • OAuth Flow and Agent Card Enhancements: The OAuthFlows now include a device_code flow while removing implicit and password flows. The AuthorizationCodeOAuthFlow gains a pkce_required field. The AgentCard structure has been significantly revised, replacing protocol_version with protocol_versions (repeated), removing several old fields, and adding supported_interfaces. The GetAgentCard RPC has been replaced by GetExtendedAgentCard.
  • Tenant-Aware Operations: A tenant field has been added to several request messages, including SendMessageRequest, GetTaskRequest, CancelTaskRequest, and various push notification configuration requests, enabling multi-tenancy support.
  • gRPC Service and Python Type Model Updates: The gRPC service definitions (a2a_pb2_grpc.py) have been updated to reflect the new and renamed RPC methods and their corresponding request/response types. The Python data models (a2a_types.py) have been regenerated to align with the updated protobuf specification, including refined descriptions for identifier fields.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
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 PR updates the generated code from A2A specification v0.3.0. While the generated files appear correct, the PR is incomplete because it doesn't update the application code and tests that depend on these generated types. This will cause build and runtime failures.

Key areas that need updates include:

  • src/a2a/utils/proto_utils.py: The conversion logic is out of sync. For example, it still references fields like content (now parts) in Message and update (now message) in TaskStatus. Many other renames and structural changes are also not reflected.
  • Tests: Files like tests/server/request_handlers/test_grpc_handler.py and tests/client/transports/test_grpc_client.py will fail as they still use old message types and service methods (e.g., GetAgentCard, CreateTaskPushNotificationConfig).

Please update all dependent code and tests to align with the new specification.


class FilePart(_message.Message):
__slots__ = ("file_with_uri", "file_with_bytes", "mime_type", "name")
__slots__ = ("file_with_uri", "file_with_bytes", "media_type", "name")
Copy link
Contributor

Choose a reason for hiding this comment

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

high

There seems to be an inconsistency between the protobuf specification and the JSON schema for this field. The protobuf FilePart message uses media_type, but the corresponding FileBase Pydantic model in src/a2a/types.py (generated from the JSON schema) still uses mime_type. This will cause issues in the conversion logic in src/a2a/utils/proto_utils.py.

Please ensure the specification is consistent for this field across both protobuf and JSON schema definitions and regenerate the types accordingly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants