-
Notifications
You must be signed in to change notification settings - Fork 298
Update to specification from c196824396bb4af4c595f30e2c503a5ab1dbac4b #582
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Update to specification from c196824396bb4af4c595f30e2c503a5ab1dbac4b #582
Conversation
Summary of ChangesHello @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 comprehensive update to the A2A protocol specification, focusing on enhancing the gRPC service definitions and their corresponding Python implementations. The changes introduce new functionalities for task listing and management, enforce stricter field requirements, and improve the overall consistency and clarity of the API through strategic renames and updated documentation. Highlights
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this 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, which involves changes to protobuf definitions, gRPC services, and Pydantic type models. The changes are extensive and reflect a new version of the specification, including renaming fields and methods, adding new ones, and adjusting message structures. My review focuses on the generated gRPC service code, where I've noticed a regression in the quality of docstrings. I've provided suggestions to restore more descriptive documentation to help developers understand the API's behavior. The changes in the protobuf definitions and Pydantic models appear consistent with a specification update.
| """A2AService defines the operations of the A2A protocol. | ||
| """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring for A2AServiceStub has been simplified, which results in the loss of valuable information about the service's resources and methods. Restoring a more detailed docstring would be beneficial for developers using this stub.
"""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 get, list, cancel and subscribe methods.
- TaskPushNotificationConfig are a resource whose parent is a task.
They have get, list, set and delete methods.
- AgentCard is a singleton resource with a get method for the public card,
and another for an extended card for authenticated users.
"""| """A2AService defines the operations of the A2A protocol. | ||
| """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring for A2AServiceServicer has been simplified, losing important context about the service's structure. Providing a more detailed docstring would help developers who need to implement this service.
"""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 get, list, cancel and subscribe methods.
- TaskPushNotificationConfig are a resource whose parent is a task.
They have get, list, set and delete methods.
- AgentCard is a singleton resource with a get method for the public card,
and another for an extended card for authenticated users.
"""| """Send a message to the agent. | ||
| """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| def SendStreamingMessage(self, request, context): | ||
| """SendStreamingMessage is a streaming call that will return a stream of | ||
| task update events until the Task is in an interrupted or terminal state. | ||
| """SendStreamingMessage is a streaming version of SendMessage. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docstring for SendStreamingMessage is a bit too brief. The previous version was more descriptive about the behavior of the streaming call. I suggest a more informative docstring.
"""Send a message to the agent and receive a stream of updates.
This is a streaming call that will return a stream of task update events
until the Task is in an interrupted or terminal state.
"""| def CancelTask(self, request, context): | ||
| """Cancel a task from the agent. If supported one should expect no | ||
| more task updates for the task. | ||
| """Cancel a task. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commit: a2aproject/A2A@c196824