You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: CancelTaskRequest.metadata never reaches AgentExecutor.cancel #1415
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.
Activity
fix(server): forward CancelTaskRequest.metadata to AgentExecutor.canc…