Skip to content

Conversation

yarolegovich
Copy link
Collaborator

@yarolegovich yarolegovich commented Sep 18, 2025

Details

The PR implements CallInterceptor invocations and adds tests which demonstrate how interceptors can be used to observe, modify and reject requests and responses.

CallInterceptor can use CallContext to understand which method is being called and be able to extract a typed value from Request.Payload.

CallInterceptor can modify Request.CallMeta to attach information like auth headers to the request context. Transport can access the aggregated CallMeta and add it to the request in a transport-specific way (eg. HTTP headers).

re #47

Copy link

@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.

Summary of Changes

Hello @yarolegovich, 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 significantly enhances the A2A client library by introducing a robust client-side interceptor mechanism. This feature allows developers to inject custom logic before and after API calls, enabling advanced functionalities like request/response transformation, authentication, logging, and error handling without modifying the core client logic. The changes also include the addition of standard A2A protocol error types and a comprehensive test suite to ensure the reliability and correctness of the new interceptor system.

Highlights

  • Client Interceptor Implementation: Introduced CallInterceptor invocations to allow for observing, modifying, and rejecting client requests and responses.
  • Contextual Information: CallInterceptor can now access CallContext to determine the method being called and extract typed payload from Request.Payload.
  • Metadata Management: Interceptors can modify Request.CallMeta to attach additional information, such as authentication headers, which can then be used by the transport layer.
  • Enhanced Error Handling: Added new A2A protocol-specific error types (ErrParseError, ErrInvalidRequest, ErrMethodNotFound, ErrInvalidParams, ErrInternalError, ErrServerError) to a2a/errors.go.
  • Comprehensive Testing: A new test file a2aclient/client_test.go has been added with extensive tests covering various interceptor functionalities, including request/response modification, rejection, and context data sharing.
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

@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 introduces client-side interceptor invocations, which is a great feature for observing and modifying requests and responses. The implementation is mostly solid, but I've found a critical bug in the error handling logic. Errors returned from the transport layer are currently being swallowed if an interceptor doesn't explicitly return an error. This could lead to silent failures. I've provided detailed comments and suggestions to fix this issue in a2aclient/client.go for each affected method. Additionally, I've suggested adding a new test case to a2aclient/client_test.go to cover this scenario and prevent future regressions. Once these issues are addressed, the implementation will be much more robust.

@yarolegovich yarolegovich mentioned this pull request Sep 17, 2025
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant