-
Notifications
You must be signed in to change notification settings - Fork 326
fix: fixing JSONRPC error mapping #414
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
Conversation
Final Error Mapping (JSON-RPC 2.0 Compliant): -32700: Parse error (invalid JSON) -32600: Invalid Request (missing/invalid jsonrpc, invalid id type, oversized payload) -32601: Method not found (unknown method names) -32602: Invalid params (valid method, invalid parameters) -32603: Internal error (unexpected server exceptions) -32000 to -32099: Server-defined errors (A2A-specific, pass through unchanged)
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.
Summary of Changes
Hello @maeste, 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 refactors the JSON-RPC request handling within the application to ensure strict compliance with the JSON-RPC 2.0 specification for error mapping. The changes introduce a more robust and granular validation process for incoming requests, allowing for precise error responses based on the nature of the request issue, such as invalid structure, unknown methods, or incorrect parameters. This significantly improves the reliability and predictability of the API's error reporting.
Highlights
- Strict JSON-RPC 2.0 Compliance: The pull request explicitly implements error mapping for various JSON-RPC 2.0 compliant error codes, including -32700 (Parse error), -32600 (Invalid Request), -32601 (Method not found), -32602 (Invalid params), and -32603 (Internal error). This ensures that the API responses are more precise and adhere to the standard.
- Improved Request Validation Flow: The request handling logic in
jsonrpc_app.pyhas been significantly refactored to include a multi-stage validation process. This now includes checks for validrequest_idtypes, early detection of oversized payloads, base JSON-RPC structure validation, and method-specific routing with parameter validation. This structured approach ensures robust error handling at each stage of request processing. - Refined JSONRPCRequest Model: The
JSONRPCRequestmodel intypes.pyhas been refined. Thejsonrpcfield no longer has a default value, enforcing its presence. Additionally, theparamsfield's type has been broadened fromdict[str, Any] | NonetoAny, providing greater flexibility for different parameter structures as allowed by the JSON-RPC specification.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| 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 issue 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
-
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. ↩
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 significantly improves the JSON-RPC error handling by implementing a more granular, multi-step validation process that aligns with the JSON-RPC 2.0 specification. The changes correctly map different failure scenarios (e.g., invalid request structure, unknown method, invalid parameters) to their standard error codes. The modifications to the Pydantic types also enhance spec compliance.
My review includes suggestions to improve logging practices by replacing traceback.print_exc() with structured logging and adjusting a debug-style log message. I've also proposed a refactoring of the method routing logic to enhance maintainability.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
0228f84 to
0d033b1
Compare
0d033b1 to
b134c36
Compare
holtskinner
left a comment
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.
@maeste Don't make direct changes to types.py these need to be adjusted in https://github.com/a2aproject/a2a
|
Tested similar conditions on TCK to avoid type.py changes. Other changes are valid and required |
7a8107c to
b3c048e
Compare
Co-authored-by: Holt Skinner <13262395+holtskinner@users.noreply.github.com>
Co-authored-by: Holt Skinner <13262395+holtskinner@users.noreply.github.com>
1fe99fc to
299e281
Compare
🤖 I have created a release *beep* *boop* --- ## [0.3.3](v0.3.2...v0.3.3) (2025-08-22) ### Features * Update proto conversion utilities ([#424](#424)) ([a3e7e1e](a3e7e1e)) ### Bug Fixes * fixing JSONRPC error mapping ([#414](#414)) ([d2e869f](d2e869f)) * Revert code that enforces uuid structure on context id in tasks ([#429](#429)) ([e3a7207](e3a7207)), closes [#427](#427) ### Performance Improvements * optimize logging performance and modernize string formatting ([#411](#411)) ([3ffae8f](3ffae8f)) ### Reverts * Revert "chore(gRPC): Update a2a.proto to include metadata on GetTaskRequest" ([#428](#428)) ([39c6b43](39c6b43)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Final Error Mapping (JSON-RPC 2.0 Compliant):
-32700: Parse error (invalid JSON)-32600: Invalid Request (missing/invalid jsonrpc, invalid id type, oversized payload)-32601: Method not found (unknown method names)-32602: Invalid params (valid method, invalid parameters) -32603: Internal error (unexpected server exceptions)-32000to-32099: Server-defined errors (A2A-specific, pass through unchanged)Fixes #413 🦕