feat: Enriched Error Model#427
Conversation
🧪 Code Coverage
Generated by coverage-comment.yml |
There was a problem hiding this comment.
Code Review
This pull request implements an enriched error model across all transport protocols (gRPC, REST, and JSON-RPC) based on the google.rpc.ErrorInfo structure. It introduces standardized error reason codes, domains, and metadata, allowing clients to precisely identify A2A error types. Key changes include the addition of protobuf-generated error detail types, updated error mapping logic in both client and server transports, and enhanced test coverage for the new error formats. Feedback was provided regarding a redundant check in the gRPC error mapping logic that can be simplified.
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request implements an enriched error model across gRPC, REST, and JSON-RPC transports by introducing structured error details via google.rpc.ErrorInfo. Key changes include centralized error mapping in src/errors.ts, updated transport handlers, and the addition of generated protobuf types. Feedback focuses on restoring method-level context in gRPC error messages for better debugging, eliminating redundant buffer allocations in metadata construction, and resolving ambiguity in REST error inference when multiple errors map to the same HTTP status code.
…bgralewicz/enrich_error_model
…bgralewicz/enrich_error_model
…ErrorResponse method to use current mapping values.
🤖 I have created a release *beep* *boop* --- ## 1.0.0-alpha.0 (2026-05-11) See the [v0.3 -> v1.0-alpha.0 migration guide](https://github.com/a2aproject/a2a-js/blob/v1.0.0-alpha.0/docs/migration-guide.md). **Note**: Enabling backward compatibility with v0.3 is tracked in [#452](#452). ### ⚠ BREAKING CHANGES * Drop support for node 18 ([#368](#368)) * Make ServerCallContext parameter mandatory across all places ([#405](#405)) * Remove JSON-RPC client ([#353](#353)) * Remove transport-specific exports ([#404](#404)) * Update codebase to use A2A 1.0.0 data model ([#375](#375)) * Remove A2AExpressApp ([#363](#363)) ### Features * Add A2A Version Header ([#422](#422)) ([b5f3db7](b5f3db7)) * Add cache-headers logic to the agent card handler ([#435](#435)) ([955b52b](955b52b)) * Add resource scoping ([#450](#450)) ([c527086](c527086)) * Add support for custom authentication scheme and credentials in auth-headers ([#430](#430)) ([5a4389b](5a4389b)) * AgentCardSignature support ([#448](#448)) ([4a41a8c](4a41a8c)) * Enforce events ordering ([#437](#437)) ([157cf48](157cf48)) * Enriched Error Model ([#427](#427)) ([c130778](c130778)) * Implement listTasks method ([#383](#383)) ([7d4c472](7d4c472)) * Send current task as the first event after subscribing to it ([#418](#418)) ([4bfcf5f](4bfcf5f)) * Support multi-tenancy ([#419](#419)) ([1877877](1877877)) ### Code Refactoring * remove A2AExpressApp ([#363](#363)) ([0b84728](0b84728)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: bartek-gralewicz <bgralewicz@google.com> Co-authored-by: Ivan Shymko <ishymko@google.com>
Description
Update error handling to the new enriched model. These changes are compliant with https://a2a-protocol.org/latest/specification/#332-error-handling and https://a2a-protocol.org/latest/specification/#116-error-handling.
Bug fix
Error code for
TaskNotCancelableErrorwas previously set to 409 when it should be 400. This PR fixes this issue.Notes
There are a few new proto-generated files which are auto-generated based on updated
bug.gen.yamland were not modified manually. Each one starts with a note// Code generated by protoc-gen-ts_proto. DO NOT EDIT..