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 introduces several updates to the core A2A protocol definition, including modifications to data structures, service interfaces, and gRPC configurations. These changes aim to improve the functionality and maintain consistency across the A2A system.

Highlights

  • Proto Definition Updates: The pull request updates the a2a.proto file, which defines the structure and services for the A2A (Agent-to-Agent) system. These updates include changes to message definitions, field options, and service definitions.
  • gRPC Service Changes: The corresponding gRPC stubs and service definitions are updated to reflect the changes in the proto file. This includes adding new methods, updating request and response types, and modifying service descriptions.
  • Type Definition Adjustments: The Python type definitions are updated to align with the new proto definitions, ensuring consistency across the codebase. This involves renaming fields, updating type annotations, and adjusting class structures.
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 pull request updates the generated Protobuf and type definition files based on a new version of the A2A specification. This introduces numerous breaking changes to the API surface, such as renaming fields (e.g., Message.content to Message.parts) and RPC methods (e.g., TaskSubscription to SubscribeToTask). However, the pull request does not include the corresponding updates to the client and server code that consumes this API. For example, src/a2a/client/transports/grpc.py and src/a2a/server/request_handlers/grpc_handler.py will be broken by these changes. Merging this PR as-is will break the build and render the gRPC transport unusable. The PR should be updated to include all necessary changes to the consumer code to adapt to the new API.

Comment on lines +44 to 48
self.SubscribeToTask = channel.unary_stream(
'/a2a.v1.A2AService/SubscribeToTask',
request_serializer=a2a__pb2.SubscribeToTaskRequest.SerializeToString,
response_deserializer=a2a__pb2.StreamResponse.FromString,
_registered_method=True)
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The RPC method TaskSubscription has been renamed to SubscribeToTask. This is a breaking change. The client and server implementations that use this method, such as in src/a2a/client/transports/grpc.py and src/a2a/server/request_handlers/grpc_handler.py, need to be updated accordingly. These updates are missing from this pull request.

Comment on lines +49 to 53
self.SetTaskPushNotificationConfig = channel.unary_unary(
'/a2a.v1.A2AService/SetTaskPushNotificationConfig',
request_serializer=a2a__pb2.SetTaskPushNotificationConfigRequest.SerializeToString,
response_deserializer=a2a__pb2.TaskPushNotificationConfig.FromString,
_registered_method=True)
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The RPC method CreateTaskPushNotificationConfig has been renamed to SetTaskPushNotificationConfig. This is another breaking change that will require updates in the client and server code. These updates seem to be missing from the PR.

Comment on lines +64 to 68
self.GetExtendedAgentCard = channel.unary_unary(
'/a2a.v1.A2AService/GetExtendedAgentCard',
request_serializer=a2a__pb2.GetExtendedAgentCardRequest.SerializeToString,
response_deserializer=a2a__pb2.AgentCard.FromString,
_registered_method=True)
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The RPC method GetAgentCard has been renamed to GetExtendedAgentCard. This breaking change needs to be reflected in the calling code, which is not part of this PR.


class SendMessageConfiguration(_message.Message):
__slots__ = ("accepted_output_modes", "push_notification", "history_length", "blocking")
__slots__ = ("accepted_output_modes", "push_notification_config", "history_length", "blocking")
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The field push_notification has been renamed to push_notification_config. This is a breaking change that needs to be addressed in the code that constructs SendMessageConfiguration objects.


class TaskStatus(_message.Message):
__slots__ = ("state", "update", "timestamp")
__slots__ = ("state", "message", "timestamp")
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The field update in TaskStatus has been renamed to message. This breaking change will affect code that processes task statuses.


class Message(_message.Message):
__slots__ = ("message_id", "context_id", "task_id", "role", "content", "metadata", "extensions")
__slots__ = ("message_id", "context_id", "task_id", "role", "parts", "metadata", "extensions", "reference_task_ids")
Copy link
Contributor

Choose a reason for hiding this comment

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

critical

The field content in the Message class has been renamed to parts. This is a breaking change that will affect any code that creates or processes Message objects. The necessary updates in the consuming code are not included in this PR.

Comment on lines +10 to 20
"""A2AService defines the operations of the A2A protocol.
"""
Copy link
Contributor

Choose a reason for hiding this comment

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

low

This detailed docstring provided a good overview of the gRPC service design and its resources. Removing it reduces clarity for developers trying to understand the service structure. If the service structure has changed significantly, it would be better to update the docstring to reflect the new design rather than removing it entirely.

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