From ffa21aba591fa5f36341c039da226bf5bf360b85 Mon Sep 17 00:00:00 2001 From: herczyn Date: Fri, 5 Dec 2025 08:38:48 +0000 Subject: [PATCH 1/4] Add pause and resume to a2a.proto --- specification/grpc/a2a.proto | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/specification/grpc/a2a.proto b/specification/grpc/a2a.proto index 8234c7081..0a24a55b8 100644 --- a/specification/grpc/a2a.proto +++ b/specification/grpc/a2a.proto @@ -59,6 +59,28 @@ service A2AService { } }; } + // Pause a task. + rpc PauseTask(PauseTaskRequest) returns (Task) { + option (google.api.http) = { + post: "/{name=tasks/*}:pause" + body: "*" + additional_bindings: { + post: "/{tenant}/{name=tasks/*}:pause" + body: "*" + } + }; + } + // Resume a task. + rpc ResumeTask(ResumeTaskRequest) returns (Task) { + option (google.api.http) = { + post: "/{name=tasks/*}:resume" + body: "*" + additional_bindings: { + post: "/{tenant}/{name=tasks/*}:resume" + body: "*" + } + }; + } // Cancel a task. rpc CancelTask(CancelTaskRequest) returns (Task) { option (google.api.http) = { @@ -483,6 +505,8 @@ message AgentCapabilities { repeated AgentExtension extensions = 3; // Indicates if the agent provides a history of state transitions for a task. optional bool state_transition_history = 4; + // Indicates if the agent supports pause and resume of tasks. + optional bool pause_resume = 5; } // --8<-- [end:AgentCapabilities] @@ -775,6 +799,28 @@ message ListTasksResponse { } // --8<-- [end:ListTasksResponse] +// --8<-- [start:PauseTaskRequest] +// Represents a request for the `tasks/cancel` method. +message PauseTaskRequest { + // Optional tenant, provided as a path parameter. + string tenant = 2; + // The resource name of the task to cancel. + // Format: tasks/{task_id} + string name = 1; +} +// --8<-- [end:PauseTaskRequest] + +// --8<-- [start:ResumeTaskRequest] +// Represents a request for the `tasks/cancel` method. +message ResumeTaskRequest { + // Optional tenant, provided as a path parameter. + string tenant = 2; + // The resource name of the task to cancel. + // Format: tasks/{task_id} + string name = 1; +} +// --8<-- [end:ResumeTaskRequest] + // --8<-- [start:CancelTaskRequest] // Represents a request for the `tasks/cancel` method. message CancelTaskRequest { From ed7f940b7b0513da237caef74b11950e252c0a76 Mon Sep 17 00:00:00 2001 From: herczyn Date: Fri, 5 Dec 2025 08:42:48 +0000 Subject: [PATCH 2/4] Add paused state. --- specification/grpc/a2a.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/specification/grpc/a2a.proto b/specification/grpc/a2a.proto index 0a24a55b8..2387f5096 100644 --- a/specification/grpc/a2a.proto +++ b/specification/grpc/a2a.proto @@ -224,6 +224,8 @@ enum TaskState { // client. Authentication is expected to come out-of-band thus this is not // an interrupted or terminal state. TASK_STATE_AUTH_REQUIRED = 8; + // Represents the status a task was paused and could be resumed. + TASK_STATE_PAUSED = 8; } // --8<-- [end:TaskState] From c5d35cf633eb5fc87662f6dad21f32f7429622a5 Mon Sep 17 00:00:00 2001 From: herczyn Date: Fri, 5 Dec 2025 13:59:27 +0000 Subject: [PATCH 3/4] Fix typos. --- specification/grpc/a2a.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specification/grpc/a2a.proto b/specification/grpc/a2a.proto index 2387f5096..a7f5ba388 100644 --- a/specification/grpc/a2a.proto +++ b/specification/grpc/a2a.proto @@ -802,22 +802,22 @@ message ListTasksResponse { // --8<-- [end:ListTasksResponse] // --8<-- [start:PauseTaskRequest] -// Represents a request for the `tasks/cancel` method. +// Represents a request for the `tasks/pause` method. message PauseTaskRequest { // Optional tenant, provided as a path parameter. string tenant = 2; - // The resource name of the task to cancel. + // The resource name of the task to pause. // Format: tasks/{task_id} string name = 1; } // --8<-- [end:PauseTaskRequest] // --8<-- [start:ResumeTaskRequest] -// Represents a request for the `tasks/cancel` method. +// Represents a request for the `tasks/resume` method. message ResumeTaskRequest { // Optional tenant, provided as a path parameter. string tenant = 2; - // The resource name of the task to cancel. + // The resource name of the task to resume. // Format: tasks/{task_id} string name = 1; } From 85376ac0510e6adad7450d1c510954f558f5542a Mon Sep 17 00:00:00 2001 From: herczyn Date: Fri, 5 Dec 2025 15:10:38 +0100 Subject: [PATCH 4/4] FIx tag. Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- specification/grpc/a2a.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/grpc/a2a.proto b/specification/grpc/a2a.proto index a7f5ba388..3e7af863a 100644 --- a/specification/grpc/a2a.proto +++ b/specification/grpc/a2a.proto @@ -225,7 +225,7 @@ enum TaskState { // an interrupted or terminal state. TASK_STATE_AUTH_REQUIRED = 8; // Represents the status a task was paused and could be resumed. - TASK_STATE_PAUSED = 8; + TASK_STATE_PAUSED = 9; } // --8<-- [end:TaskState]