Skip to content

feat: AgentCardSignature#448

Merged
bartek-gralewicz merged 8 commits into
epic/1.0_breaking_changesfrom
bgralewicz/agent_card_signature
May 7, 2026
Merged

feat: AgentCardSignature#448
bartek-gralewicz merged 8 commits into
epic/1.0_breaking_changesfrom
bgralewicz/agent_card_signature

Conversation

@bartek-gralewicz
Copy link
Copy Markdown
Contributor

@bartek-gralewicz bartek-gralewicz commented May 5, 2026

Description

Implementing the feature of AgentCardSignature. The PR is based on #290.

Important note

Most changes are ported 1-1. The main difference between the implementation here and the one on the #290 is that in the initial PR, the agentCard had root signatures incremented. This resulted in constantly growing agentCard object.

In the #290 there were also unit tests to confirm that behavior but it seems like an undesired outcome. In this PR, using generateAgentCardSignature will return a new agentCard with incremented signatures instead of incrementing the original object.

Fixes #289 🦕

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 5, 2026

🧪 Code Coverage

⬇️ Download Full Report

Base PR Delta
src/client/multitransport-client.ts 97.24% 96.62% 🔴 -0.62%
src/server/request_handler/default_request_handler.ts 81.88% 81.45% 🔴 -0.43%
src/signature.ts (new) 94.11%
Total 87.76% 87.8% 🟢 +0.04%

Generated by coverage-comment.yml

Copy link
Copy Markdown
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 introduces Agent Card signature support using JWS and JCS canonicalization, adding the jose library as a dependency. Key changes include new signature generation and verification utilities, updates to the client and server request handlers to support signed cards, and comprehensive tests. Feedback focuses on avoiding object mutation in the signer, improving the type safety of object cloning by using destructuring instead of JSON serialization, and refining the canonicalization logic to preserve array semantics and handle Date objects correctly.

Comment thread src/signature.ts Outdated
Comment thread src/signature.ts
Comment thread src/signature.ts Outdated
Comment thread src/signature.ts Outdated
Comment thread src/signature.ts Outdated
Comment thread src/signature.ts Outdated
@bartek-gralewicz

This comment was marked as outdated.

gemini-code-assist[bot]

This comment was marked as outdated.

@bartek-gralewicz

This comment was marked as outdated.

Copy link
Copy Markdown
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 introduces Agent Card signature support using JWS and JCS canonicalization, integrating signing and verification utilities into both the client and server request handlers. Feedback focuses on ensuring the canonicalization logic correctly handles empty array elements and Date objects, avoiding the use of console logging in library code, and reconsidering the minimum Node.js version bump to maintain compatibility.

Comment thread src/signature.ts
Comment thread package-lock.json
Comment thread src/signature.ts
Comment thread src/signature.ts Outdated
@bartek-gralewicz bartek-gralewicz marked this pull request as ready for review May 6, 2026 06:22
@bartek-gralewicz bartek-gralewicz requested a review from a team as a code owner May 6, 2026 06:22
@bartek-gralewicz bartek-gralewicz requested a review from ishymko May 6, 2026 06:24
@bartek-gralewicz bartek-gralewicz merged commit 4a41a8c into epic/1.0_breaking_changes May 7, 2026
9 checks passed
@bartek-gralewicz bartek-gralewicz deleted the bgralewicz/agent_card_signature branch May 7, 2026 08:25
ishymko added a commit that referenced this pull request May 11, 2026
🤖 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>
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.

2 participants