diff --git a/specification/grpc/a2a.proto b/specification/grpc/a2a.proto index 8234c7081..3e7af863a 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) = { @@ -202,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 = 9; } // --8<-- [end:TaskState] @@ -483,6 +507,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 +801,28 @@ message ListTasksResponse { } // --8<-- [end:ListTasksResponse] +// --8<-- [start:PauseTaskRequest] +// 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 pause. + // Format: tasks/{task_id} + string name = 1; +} +// --8<-- [end:PauseTaskRequest] + +// --8<-- [start:ResumeTaskRequest] +// 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 resume. + // Format: tasks/{task_id} + string name = 1; +} +// --8<-- [end:ResumeTaskRequest] + // --8<-- [start:CancelTaskRequest] // Represents a request for the `tasks/cancel` method. message CancelTaskRequest {