@@ -144,7 +144,9 @@ async def _receive_loop(self) -> None:
144144 async with self ._incoming_message_stream_writer :
145145 await super ()._receive_loop ()
146146
147- async def _received_request (self , responder : RequestResponder [types .ClientRequest , types .ServerResult ]):
147+ async def _received_request ( # noqa: PLR0912
148+ self , responder : RequestResponder [types .ClientRequest , types .ServerResult ]
149+ ):
148150 # Handle task creation if task metadata is present
149151 if responder .request_meta and responder .request_meta .task and self ._task_store :
150152 task_meta = responder .request_meta .task
@@ -275,6 +277,23 @@ async def _received_request(self, responder: RequestResponder[types.ClientReques
275277 await responder .respond (
276278 types .ErrorData (code = types .INVALID_REQUEST , message = "Task store not configured" )
277279 )
280+ case types .DeleteTaskRequest (params = params ):
281+ # Handle delete task requests if task store is available
282+ if self ._task_store :
283+ try :
284+ await self ._task_store .delete_task (params .taskId )
285+ with responder :
286+ await responder .respond (types .ServerResult (types .EmptyResult (_meta = {})))
287+ except Exception as e :
288+ with responder :
289+ await responder .respond (
290+ types .ErrorData (code = types .INVALID_PARAMS , message = f"Failed to delete task: { e } " )
291+ )
292+ else :
293+ with responder :
294+ await responder .respond (
295+ types .ErrorData (code = types .INVALID_REQUEST , message = "Task store not configured" )
296+ )
278297 case _:
279298 if self ._initialization_state != InitializationState .Initialized :
280299 raise RuntimeError ("Received request before initialization was complete" )
@@ -459,6 +478,15 @@ async def list_tasks(self, cursor: str | None = None) -> types.ListTasksResult:
459478 types .ListTasksResult ,
460479 )
461480
481+ async def delete_task (self , task_id : str ) -> types .EmptyResult :
482+ """Delete a specific task."""
483+ return await self .send_request (
484+ types .ServerRequest (
485+ types .DeleteTaskRequest (method = "tasks/delete" , params = types .DeleteTaskParams (taskId = task_id ))
486+ ),
487+ types .EmptyResult ,
488+ )
489+
462490 async def _handle_incoming (self , req : ServerRequestResponder ) -> None :
463491 await self ._incoming_message_stream_writer .send (req )
464492
0 commit comments