Skip to content

Conversation

@a2a-bot
Copy link
Collaborator

@a2a-bot a2a-bot commented Nov 20, 2025

Commit: a2aproject/A2A@b078419

Release-As: 1.0.0

@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 integrates an updated version of the A2A specification, bringing significant enhancements and refinements to the gRPC Python client. The changes encompass the introduction of new task listing capabilities, a comprehensive renaming effort for fields and service methods to improve API clarity, and stricter data validation through the explicit marking of required fields. Additionally, the update includes minor optimizations in the generated Python protobuf code and clearer documentation for data model fields.

Highlights

  • API Specification Update: The underlying A2A specification has been updated to version v0.3.0, leading to several changes in the generated Python protobuf and type hint files.
  • New Functionality: New methods for listing tasks (ListTasksRequest, ListTasksResponse) have been introduced, expanding the API's capabilities for task management.
  • Field Renames and Requirements: Several fields across various messages have been renamed for clarity (e.g., push_notification to push_notification_config, mime_type to media_type, content to parts, transport to protocol_binding). Additionally, many fields have been explicitly marked as required, enforcing stricter data validation.
  • Service Method Renames: Multiple gRPC service methods have been renamed to improve consistency and readability, including TaskSubscription to SubscribeToTask, CreateTaskPushNotificationConfig to SetTaskPushNotificationConfig, and GetAgentCard to GetExtendedAgentCard.
  • Python Protobuf Optimization: The __slots__ attribute has been removed from numerous message classes in the a2a_pb2.pyi file, which can impact memory usage and attribute access performance for these objects.
  • Description Clarifications: Descriptions for various identifier fields (e.g., id, task_id, context_id, artifact_id) have been refined across the types.py file, removing redundant examples like '(e.g. UUID)' for conciseness.
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 gRPC files to align with a new version of the A2A specification. While the generated files themselves seem correct, this PR appears to be critically incomplete. The gRPC service methods have been renamed (e.g., TaskSubscription to SubscribeToTask, CreateTaskPushNotificationConfig to SetTaskPushNotificationConfig), but the client and server code that implements and uses these methods (like src/a2a/client/transports/grpc.py and src/a2a/server/request_handlers/grpc_handler.py) have not been updated accordingly in this pull request. This will lead to build failures and runtime errors. Please include the necessary updates to the client and server implementation files to match the new gRPC interface.


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

Choose a reason for hiding this comment

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

medium

The __slots__ attribute for this and other Protobuf message classes in this file has been changed to an empty tuple. This removes the memory and performance benefits of using __slots__ and also disables the protection against accidentally setting non-existent attributes, which can hide typos. Was this change intentional? If not, it might be worth investigating the mypy-protobuf generator settings to see if __slots__ can be re-enabled for these generated classes.

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

The updated docstrings for A2AServiceStub, A2AServiceServicer, and several methods are much shorter and have lost some useful details that were present in the previous version. For example, the old class docstrings explained the resource model and available operations, which was helpful context for developers. While this is a generated file, it might be worth checking if the comments in the source .proto file can be improved to restore this information in the generated code.

@holtskinner holtskinner changed the title Update to specification from b0784199543eebf2e95dcb02e9336cb213923506 chore(spec): Large refactor of specification to separate application protocol definition from mapping to transports. Nov 21, 2025
@holtskinner holtskinner changed the title chore(spec): Large refactor of specification to separate application protocol definition from mapping to transports. refactor(spec): Large refactor of specification to separate application protocol definition from mapping to transports. Nov 21, 2025
@holtskinner holtskinner changed the title refactor(spec): Large refactor of specification to separate application protocol definition from mapping to transports. refactor(spec)!: Large refactor of specification to separate application protocol definition from mapping to transports. Nov 21, 2025
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