Skip to content

v0.2.0: OAuth2, Postgres, telemetry, health, rate limiting, push notifications, CLI#18

Merged
reaatech merged 4 commits into
mainfrom
feat/version-bump-updates
May 26, 2026
Merged

v0.2.0: OAuth2, Postgres, telemetry, health, rate limiting, push notifications, CLI#18
reaatech merged 4 commits into
mainfrom
feat/version-bump-updates

Conversation

@reaatech
Copy link
Copy Markdown
Owner

Summary

Prepares the v0.2.0 release: new capabilities across packages, hardening of existing ones, and A2A-spec alignment. Includes the fixes from a full working-tree code review.

New capabilities

  • auth: OAuth2Strategy (client-credentials + authorization-code, refresh), shared scope extraction, JWKS caching, case-insensitive Bearer parsing.
  • core: A2A-spec-compliant Agent Card signatures (JWS over RFC 8785 canonicalization, verified via jose) and MutualTLS scheme; auth-required state transitions.
  • persistence: PostgresTaskStore; principal-scoped list() across all stores; transactional update() that persists history/artifacts.
  • observability: pluggable telemetry-provider abstraction + dedicated logger module.
  • server: health checks (/healthz, /readyz), in-memory rate limiter, push-notification manager wired into the event bus, Redis SSE coordinator, extended agent card, JSON-RPC sendSubscribe.
  • cli: project scaffolding command.

Code-review fixes folded in

  • Push notifications are now actually delivered from the event bus (previously registered but never sent).
  • Signature verification accepts base64url and Ed25519/ES256 (now via jose).
  • OAuth2 token_type comparison is case-insensitive (RFC 6749 §7.1).
  • tasks/list totalSize is correct via store-level principal filtering.
  • X-Forwarded-For trust is gated behind trustProxyHeaders (default off) — closes a rate-limit spoofing vector.
  • Retry-After header and retryAfter body field are both in seconds.

Spec alignment (⚠️ breaking)

  • Agent Card signatures switched to the spec's JWS shape (protected/signature/header).
  • Security schemes switched from the custom scheme discriminator to the spec's OpenAPI-style type discriminator (apiKey | http | oauth2 | openIdConnect | mutualTLS), with fully modeled OAuth flows. Cards using the old scheme/httpScheme shape will no longer validate.

Verification

  • pnpm typecheck
  • pnpm test ✅ (23 packages)
  • pnpm lint

Notes

  • New dependency: jose added to @reaatech/a2a-reference-core (WebCrypto-based, edge-compatible).
  • Breaking schema changes should be called out in the v0.2.0 changelog.

🤖 Generated with Claude Code

reaatech and others added 4 commits May 25, 2026 21:07
…sh notifications, CLI

Adds new capabilities across packages and hardens existing ones for the
v0.2.0 release:

- auth: OAuth2 strategy (client-credentials + auth-code), shared scope
  extraction, JWKS caching, case-insensitive Bearer parsing
- core: A2A-spec-compliant Agent Card signatures (JWS over RFC 8785
  canonicalization, verified via jose) and MutualTLS security scheme;
  auth-required state transitions
- persistence: PostgresTaskStore; principal-scoped list() across all stores;
  transactional update() that persists history/artifacts
- observability: pluggable telemetry provider abstraction + logger module
- server: health checks (/healthz, /readyz), in-memory rate limiter,
  push-notification manager wired into the event bus, Redis SSE coordinator,
  extended agent card, JSON-RPC sendSubscribe
- cli: project scaffolding command

Review fixes folded in:
- deliver push notifications from the event bus (were registered but never sent)
- accept base64url + Ed25519/ES256 signatures
- RFC 6749 case-insensitive OAuth2 token_type
- correct tasks/list totalSize via store-level principal filtering
- gate X-Forwarded-For trust behind trustProxyHeaders (default off)
- Retry-After body/header both in seconds

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…tor)

Replaces the repo's custom `scheme`-discriminated security schemes with the
A2A spec's OpenAPI-style `type` discriminator (§4.5), matching the official
SDK type definitions:

- discriminator `scheme` → `type` (apiKey | http | oauth2 | openIdConnect |
  mutualTLS), now a zod discriminatedUnion for precise errors
- HTTP: `httpScheme: 'bearer'` → spec `scheme: string` (any RFC 7235 scheme)
- OAuth2: fully modeled `flows` (authorizationCode/clientCredentials/implicit/
  password) with tokenUrl/authorizationUrl/refreshUrl/scopes, plus
  `oauth2MetadataUrl`; dropped the ad-hoc top-level endpoint/scope fields
- OpenIdConnect: dropped non-spec top-level `scopes`
- MutualTLS: `type: 'mutualTLS'` to match siblings

Exports the new OAuth flow schemas/types; adds SecuritySchemeSchema coverage.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- core README: signature verification example now passes a key and describes
  the JWS/RFC 8785 model and supported algorithms (was a no-key call that
  would now fail)
- server README: document the new trustProxyHeaders option
- deployment guide: note Retry-After is in seconds and document
  trustProxyHeaders with the X-Forwarded-For spoofing caveat

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@reaatech reaatech merged commit eb1cf6d into main May 26, 2026
12 checks passed
@reaatech reaatech deleted the feat/version-bump-updates branch May 26, 2026 04:27
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