Skip to content

Conversation

@a2a-bot
Copy link
Collaborator

@a2a-bot a2a-bot commented Dec 24, 2025

@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 synchronizes the codebase with the latest A2A protocol specification, version v0.3.0. The update introduces a more refined API structure, enhances field validation by marking several fields as required, and expands the service capabilities with new methods for task listing and extended agent card retrieval. It also standardizes terminology and improves the clarity of field descriptions.

Highlights

  • Specification Update: The pull request updates the A2A specification to a newer version (v0.3.0), leading to significant changes in the protobuf definitions and generated code.
  • API Changes: Numerous API fields have been updated, including renaming push_notification to push_notification_config in SendMessageConfiguration, mime_type to media_type in FilePart, and content to parts in Message. Many fields across various messages are now explicitly marked as required.
  • New Functionality & RPC Methods: New RPC methods ListTasks and GetExtendedAgentCard have been introduced, along with corresponding request and response message types. Existing RPC methods like TaskSubscription and CreateTaskPushNotificationConfig have been renamed to SubscribeToTask and SetTaskPushNotificationConfig, respectively.
  • Tenant Support: A new tenant field has been added to several request messages and the AgentInterface to support multi-tenancy.
  • Code Generation Refinements: The generated Python protobuf (a2a_pb2.py) and gRPC (a2a_pb2_grpc.py) files reflect these specification changes, including the removal of __slots__ from message classes in the type stubs for optimization.
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 A2A specification to version 0.3.0, which introduces several breaking changes and new features across the gRPC and Pydantic type definitions. The changes, including renaming of fields and methods for clarity, addition of new functionality like ListTasks, and marking many fields as required, are consistently applied across all generated files. The script for generating Pydantic types from the JSON schema has also been notably improved for more flexible version handling. My review includes a few minor suggestions to improve documentation that was simplified during the update.

Comment on lines +10 to 11
"""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 docstring for A2AServiceStub has been simplified, which removes some useful context about the service's design principles and resource handling. The previous, more detailed version was helpful for developers to understand the API structure. If this information isn't captured elsewhere, I'd recommend restoring the more descriptive docstring in the source .proto file.

"""A2AService defines the gRPC version of the A2A protocol. This has a slightly
different shape than the JSONRPC version to better conform to AIP-127,
where appropriate. The nouns are AgentCard, Message, Task and
TaskPushNotificationConfig.
- Messages are not a standard resource so there is no get/delete/update/list
interface, only a send and stream custom methods.
- Tasks have a get interface and custom cancel and subscribe methods.
- TaskPushNotificationConfig are a resource whose parent is a task.
They have get, list and create methods.
- AgentCard is a static resource with only a get method.
"""

Comment on lines +77 to 78
"""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

Similar to the A2AServiceStub docstring, this one for A2AServiceServicer has been simplified, losing valuable context. For a better developer experience, it would be beneficial to restore the more detailed explanation of the service from the previous version in the source .proto file.

"""A2AService defines the gRPC version of the A2A protocol. This has a slightly
different shape than the JSONRPC version to better conform to AIP-127,
where appropriate. The nouns are AgentCard, Message, Task and
TaskPushNotificationConfig.
- Messages are not a standard resource so there is no get/delete/update/list
interface, only a send and stream custom methods.
- Tasks have a get interface and custom cancel and subscribe methods.
- TaskPushNotificationConfig are a resource whose parent is a task.
They have get, list and create methods.
- AgentCard is a static resource with only a get method.
"""

Comment on lines +225 to 226
"""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 docstring for the experimental A2AService class has also been shortened, removing helpful details about the API design. To aid developers, please consider bringing back the more descriptive version in the source .proto file.

"""A2AService defines the gRPC version of the A2A protocol. This has a slightly
different shape than the JSONRPC version to better conform to AIP-127,
where appropriate. The nouns are AgentCard, Message, Task and
TaskPushNotificationConfig.
- Messages are not a standard resource so there is no get/delete/update/list
interface, only a send and stream custom methods.
- Tasks have a get interface and custom cancel and subscribe methods.
- TaskPushNotificationConfig are a resource whose parent is a task.
They have get, list and create methods.
- AgentCard is a static resource with only a get method.
"""

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