Skip to content

Commit e5853a6

Browse files
author
lkawka
committed
Add empty list_tasks methods
1 parent 4255e39 commit e5853a6

File tree

12 files changed

+142
-0
lines changed

12 files changed

+142
-0
lines changed

src/a2a/client/base_client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
from a2a.types import (
1515
AgentCard,
1616
GetTaskPushNotificationConfigParams,
17+
ListTasksParams,
18+
ListTasksResult,
1719
Message,
1820
MessageSendConfiguration,
1921
MessageSendParams,
@@ -133,6 +135,15 @@ async def get_task(
133135
"""
134136
return await self._transport.get_task(request, context=context)
135137

138+
async def list_tasks(
139+
self,
140+
request: ListTasksParams,
141+
*,
142+
context: ClientCallContext | None = None,
143+
) -> ListTasksResult:
144+
"""Retrieves tasks for an agent."""
145+
return await self._transport.list_tasks(request, context=context)
146+
136147
async def cancel_task(
137148
self,
138149
request: TaskIdParams,

src/a2a/client/client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from a2a.types import (
1313
AgentCard,
1414
GetTaskPushNotificationConfigParams,
15+
ListTasksParams,
16+
ListTasksResult,
1517
Message,
1618
PushNotificationConfig,
1719
Task,
@@ -131,6 +133,15 @@ async def get_task(
131133
) -> Task:
132134
"""Retrieves the current state and history of a specific task."""
133135

136+
@abstractmethod
137+
async def list_tasks(
138+
self,
139+
request: ListTasksParams,
140+
*,
141+
context: ClientCallContext | None = None,
142+
) -> ListTasksResult:
143+
"""Retrieves tasks for an agent."""
144+
134145
@abstractmethod
135146
async def cancel_task(
136147
self,

src/a2a/client/transports/base.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from a2a.types import (
66
AgentCard,
77
GetTaskPushNotificationConfigParams,
8+
ListTasksParams,
9+
ListTasksResult,
810
Message,
911
MessageSendParams,
1012
Task,
@@ -50,6 +52,15 @@ async def get_task(
5052
) -> Task:
5153
"""Retrieves the current state and history of a specific task."""
5254

55+
@abstractmethod
56+
async def list_tasks(
57+
self,
58+
request: ListTasksParams,
59+
*,
60+
context: ClientCallContext | None = None,
61+
) -> ListTasksResult:
62+
"""Retrieves tasks for an agent."""
63+
5364
@abstractmethod
5465
async def cancel_task(
5566
self,

src/a2a/client/transports/grpc.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
from a2a.types import (
2121
AgentCard,
2222
GetTaskPushNotificationConfigParams,
23+
ListTasksParams,
24+
ListTasksResult,
2325
Message,
2426
MessageSendParams,
2527
Task,
@@ -145,6 +147,16 @@ async def get_task(
145147
)
146148
return proto_utils.FromProto.task(task)
147149

150+
async def list_tasks(
151+
self,
152+
request: ListTasksParams,
153+
*,
154+
context: ClientCallContext | None = None,
155+
) -> ListTasksResult:
156+
"""Retrieves tasks for an agent."""
157+
# TODO: #515 - Implement method
158+
raise NotImplementedError('tasks/list not implemented')
159+
148160
async def cancel_task(
149161
self,
150162
request: TaskIdParams,

src/a2a/client/transports/jsonrpc.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
GetTaskRequest,
3131
GetTaskResponse,
3232
JSONRPCErrorResponse,
33+
ListTasksParams,
34+
ListTasksResult,
3335
Message,
3436
MessageSendParams,
3537
SendMessageRequest,
@@ -222,6 +224,16 @@ async def get_task(
222224
raise A2AClientJSONRPCError(response.root)
223225
return response.root.result
224226

227+
async def list_tasks(
228+
self,
229+
request: ListTasksParams,
230+
*,
231+
context: ClientCallContext | None = None,
232+
) -> ListTasksResult:
233+
"""Retrieves tasks for an agent."""
234+
# TODO: #515 - Implement method
235+
raise NotImplementedError('tasks/list not implemented')
236+
225237
async def cancel_task(
226238
self,
227239
request: TaskIdParams,

src/a2a/client/transports/rest.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
from a2a.types import (
1818
AgentCard,
1919
GetTaskPushNotificationConfigParams,
20+
ListTasksParams,
21+
ListTasksResult,
2022
Message,
2123
MessageSendParams,
2224
Task,
@@ -222,6 +224,16 @@ async def get_task(
222224
ParseDict(response_data, task)
223225
return proto_utils.FromProto.task(task)
224226

227+
async def list_tasks(
228+
self,
229+
request: ListTasksParams,
230+
*,
231+
context: ClientCallContext | None = None,
232+
) -> ListTasksResult:
233+
"""Retrieves tasks for an agent."""
234+
# TODO: #515 - Implement method
235+
raise NotImplementedError('tasks/list not implemented')
236+
225237
async def cancel_task(
226238
self,
227239
request: TaskIdParams,

src/a2a/server/apps/jsonrpc/jsonrpc_app.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
JSONRPCRequest,
3737
JSONRPCResponse,
3838
ListTaskPushNotificationConfigRequest,
39+
ListTasksRequest,
3940
MethodNotFoundError,
4041
SendMessageRequest,
4142
SendStreamingMessageRequest,
@@ -160,6 +161,7 @@ class JSONRPCApplication(ABC):
160161
SendMessageRequest
161162
| SendStreamingMessageRequest
162163
| GetTaskRequest
164+
| ListTasksRequest
163165
| CancelTaskRequest
164166
| SetTaskPushNotificationConfigRequest
165167
| GetTaskPushNotificationConfigRequest
@@ -442,6 +444,10 @@ async def _process_non_streaming_request(
442444
handler_result = await self.handler.on_get_task(
443445
request_obj, context
444446
)
447+
case ListTasksRequest():
448+
handler_result = await self.handler.list_tasks(
449+
request_obj, context
450+
)
445451
case SetTaskPushNotificationConfigRequest():
446452
handler_result = (
447453
await self.handler.set_push_notification_config(

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
InternalError,
3333
InvalidParamsError,
3434
ListTaskPushNotificationConfigParams,
35+
ListTasksParams,
36+
ListTasksResult,
3537
Message,
3638
MessageSendParams,
3739
Task,
@@ -121,6 +123,15 @@ async def on_get_task(
121123
# Apply historyLength parameter if specified
122124
return apply_history_length(task, params.history_length)
123125

126+
async def on_list_tasks(
127+
self,
128+
params: ListTasksParams,
129+
context: ServerCallContext | None = None,
130+
) -> ListTasksResult:
131+
"""Default handler for 'tasks/list'."""
132+
# TODO: #515 - Implement method
133+
raise NotImplementedError('tasks/list not implemented')
134+
124135
async def on_cancel_task(
125136
self, params: TaskIdParams, context: ServerCallContext | None = None
126137
) -> Task | None:

src/a2a/server/request_handlers/grpc_handler.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,23 @@ async def GetTask(
331331
await self.abort_context(e, context)
332332
return a2a_pb2.Task()
333333

334+
async def ListTasks(
335+
self,
336+
request: a2a_pb2.ListTasksRequest,
337+
context: grpc.aio.ServicerContext,
338+
) -> a2a_pb2.ListTasksResponse:
339+
"""Handles the 'ListTasks' gRPC method.
340+
341+
Args:
342+
request: The incoming `ListTasksRequest` object.
343+
context: Context provided by the server.
344+
345+
Returns:
346+
A `ListTasksResponse` object.
347+
"""
348+
# TODO: #515 - Implement method
349+
raise NotImplementedError('tasks/list not implemented')
350+
334351
async def GetAgentCard(
335352
self,
336353
request: a2a_pb2.GetAgentCardRequest,

src/a2a/server/request_handlers/jsonrpc_handler.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
ListTaskPushNotificationConfigRequest,
2929
ListTaskPushNotificationConfigResponse,
3030
ListTaskPushNotificationConfigSuccessResponse,
31+
ListTasksRequest,
32+
ListTasksResponse,
3133
Message,
3234
SendMessageRequest,
3335
SendMessageResponse,
@@ -359,6 +361,23 @@ async def on_get_task(
359361
root=JSONRPCErrorResponse(id=request.id, error=TaskNotFoundError())
360362
)
361363

364+
async def list_tasks(
365+
self,
366+
request: ListTasksRequest,
367+
context: ServerCallContext | None = None,
368+
) -> ListTasksResponse:
369+
"""Handles the 'tasks/list' JSON-RPC method.
370+
371+
Args:
372+
request: The incoming `ListTasksRequest` object.
373+
context: Context provided by the server.
374+
375+
Returns:
376+
A `ListTasksResponse` object containing the Task or a JSON-RPC error.
377+
"""
378+
# TODO: #515 - Implement method
379+
raise NotImplementedError('tasks/list not implemented')
380+
362381
async def list_push_notification_config(
363382
self,
364383
request: ListTaskPushNotificationConfigRequest,

0 commit comments

Comments
 (0)