Skip to content

feat: migrate to A2A protocol v1.0.0 stable#3

Merged
longzhi merged 1 commit into
longzhi:mainfrom
DarumaDocker:feat/a2a-v1.0.0-stable
Mar 14, 2026
Merged

feat: migrate to A2A protocol v1.0.0 stable#3
longzhi merged 1 commit into
longzhi:mainfrom
DarumaDocker:feat/a2a-v1.0.0-stable

Conversation

@DarumaDocker

Copy link
Copy Markdown
Contributor

Summary

  • TaskPushNotificationConfig flattened — removes nested PushNotificationConfig; url, token, authentication are now direct fields; PushNotificationConfig type removed
  • SendMessageConfiguration field renamesblockingreturn_immediately (JSON returnImmediately); push_notification_configtask_push_notification_config: Option<TaskPushNotificationConfig>
  • CreateTaskPushNotificationConfig simplified — removes CreateTaskPushNotificationConfigRequest wrapper; RPC and REST now take TaskPushNotificationConfig directly; REST injects task_id/tenant from path/query into body; configId query param gone
  • ListTaskPushNotificationConfigs pluralised — request/response types, handler method, client method, JSON-RPC method constant value all updated
  • CancelTaskRequest.metadata — new optional field; REST handler accepts optional JSON body
  • Task.context_idStringOption<String> (REQUIRED annotation removed in stable proto)
  • Crate version 0.1.01.0.0 — tracks A2A stable release
  • Normative sources updatedCLAUDE.md, AGENTS.md, README, docs/proto-first-design.md reference v1.0.0 tag and lf.a2a.v1 package

ImplicitOAuthFlow/PasswordOAuthFlow retained: release notes say removed but the official published definitions still include them as deprecated. Will drop when the definitions stop advertising them.

Test plan

  • cargo test --no-default-features — 40 unit tests pass
  • cargo test --all-features — 96 tests pass (unit + integration + wiremock + server + spec)
  • cargo clippy --all-targets --no-default-features -- -D warnings
  • cargo clippy --all-targets --all-features -- -D warnings

🤖 Generated with Claude Code

Breaking changes from v1.0.0-rc proto (lf.a2a.v1):

TaskPushNotificationConfig — flatten nested config
- Remove PushNotificationConfig as a standalone type
- Inline url, token, authentication directly into TaskPushNotificationConfig
- tenant field moved to first position matching proto field order

SendMessageConfiguration — field renames
- blocking -> return_immediately (JSON: "returnImmediately")
- push_notification_config: Option<PushNotificationConfig> ->
  task_push_notification_config: Option<TaskPushNotificationConfig>

CreateTaskPushNotificationConfig — simplified input
- Remove CreateTaskPushNotificationConfigRequest wrapper type
- RPC and REST handler now take TaskPushNotificationConfig directly
- REST handler injects task_id/tenant from path/query into body

ListTaskPushNotificationConfig -> ListTaskPushNotificationConfigs (plural)
- Rename request/response types, handler method, client method
- JSON-RPC method constant value updated to "ListTaskPushNotificationConfigs"

CancelTaskRequest — add optional metadata field

Task.context_id — String -> Option<String>
- RC had field_behavior = REQUIRED; stable removes it

Crate version 0.1.0 -> 1.0.0 to track protocol stable release

Update normative sources in CLAUDE.md, AGENTS.md, README, lib.rs, store.rs,
examples, templates to reference v1.0.0 stable.

ImplicitOAuthFlow/PasswordOAuthFlow retained: release notes say removed but
official published definitions still include them as deprecated (lines 596-608,
634-647). Will drop when the published definitions stop advertising them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@longzhi longzhi merged commit 7378f60 into longzhi:main Mar 14, 2026
10 checks passed
@DarumaDocker DarumaDocker deleted the feat/a2a-v1.0.0-stable branch March 17, 2026 06:01
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