diff --git a/src/a2a/server/agent_execution/agent_executor.py b/src/a2a/server/agent_execution/agent_executor.py index 38be9c11..62b39db5 100644 --- a/src/a2a/server/agent_execution/agent_executor.py +++ b/src/a2a/server/agent_execution/agent_executor.py @@ -42,3 +42,18 @@ async def cancel( context: The request context containing the task ID to cancel. event_queue: The queue to publish the cancellation status update to. """ + + @abstractmethod + async def resume( + self, context: RequestContext, event_queue: EventQueue + ) -> None: + """Request the agent to resume a canceled task. + + The agent should attempt to resume the task identified by the task_id + in the context and publish a `TaskStatusUpdateEvent` with state + `TaskState.working` to the `event_queue`. + + Args: + context: The request context containing the task ID to resume. + event_queue: The queue to publish the working status update to. + """ diff --git a/tests/server/request_handlers/test_default_request_handler.py b/tests/server/request_handlers/test_default_request_handler.py index 6765000c..c7a50b3f 100644 --- a/tests/server/request_handlers/test_default_request_handler.py +++ b/tests/server/request_handlers/test_default_request_handler.py @@ -81,6 +81,9 @@ async def _run(self): async def cancel(self, context: RequestContext, event_queue: EventQueue): pass + async def resume(self, context: RequestContext, event_queue: EventQueue): + pass + # Helper to create a simple task for tests def create_sample_task( @@ -793,6 +796,9 @@ async def execute(self, context: RequestContext, event_queue: EventQueue): async def cancel(self, context: RequestContext, event_queue: EventQueue): pass + async def resume(self, context: RequestContext, event_queue: EventQueue): + pass + @pytest.mark.asyncio async def test_on_message_send_non_blocking():