[Bug]: CancelTaskRequest.metadata never reaches AgentExecutor.cancel

已关闭
#1,415 0 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

维护者通常 2 天内回复

@muscariello 已经在做这个了。

开始于 2026年11月2日。

  • #1390 来自 @a2a-bot —— 未关闭
  • #1416 来自 @mykytanetipa —— 已合并

评估

这个 Issue 还没有评估数据。

描述

maintainers-only
What happened?

CancelTaskRequest has a metadata field (a2a_pb2.pyi; the REST mapping sends the whole request as the body, post: "/tasks/{id=*}:cancel", body: "*" in a2a.proto), but nothing on the server hands it to AgentExecutor.cancel:

  • RestDispatcher.on_cancel_task (src/a2a/server/routes/rest_dispatcher.py) builds CancelTaskRequest(id=task_id) and does not read the body.
  • On every binding, on_cancel_task in DefaultRequestHandlerV2 reads only params.id, and the RequestContext given to cancel has no request (request=None in default_request_handler.py, no request in ActiveTask.cancel). So context.metadata is {} for a cancel, while for SendMessage it returns the request's metadata.

A caller's {"metadata": {...}} therefore never reaches the executor, whichever transport it uses. The Go SDK (gRPC) and the .NET SDK (gRPC and JSON-RPC) do pass it to the executor; only their REST bindings drop it.

Expected: context.metadata of a cancel holds the request's metadata. For REST, decode the body into CancelTaskRequest and keep the id from the path.

Read from the source at 11f1116 (v1.3.0 + 12 commits); I did not run it.

Relevant log output
n/a (found by reading the source)
Code of Conduct
  • I agree to follow this project's Code of Conduct
主要语言
Python
星标
2.2k
派生
532
平均合并
3 天 6 小时
30 天内合并 PR
42

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

a2aproject/a2a-python 的其他 Issue

查看 a2aproject/a2a-python 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。