Skip to content

Commit a79ac64

Browse files
committed
Merge branch '1.0-dev' into ishymko/push-notifications
2 parents 86b9783 + 6132053 commit a79ac64

10 files changed

Lines changed: 338 additions & 30 deletions

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -137,25 +137,15 @@ async def on_list_tasks(
137137
) -> ListTasksResponse:
138138
"""Default handler for 'tasks/list'."""
139139
page = await self.task_store.list(params, context)
140-
processed_tasks = []
141140
for task in page.tasks:
142-
processed_task = task
143-
144141
if not params.include_artifacts:
145-
new_task = Task()
146-
new_task.CopyFrom(processed_task)
147-
new_task.ClearField('artifacts')
148-
processed_task = new_task
149-
150-
if params.history_length > 0:
151-
processed_task = apply_history_length(
152-
processed_task, params.history_length
153-
)
154-
processed_tasks.append(processed_task)
155-
return ListTasksResponse(
156-
next_page_token=page.next_page_token or '',
157-
tasks=processed_tasks,
158-
)
142+
task.ClearField('artifacts')
143+
144+
updated_task = apply_history_length(task, params.history_length)
145+
if updated_task is not task:
146+
task.CopyFrom(updated_task)
147+
148+
return page
159149

160150
async def on_cancel_task(
161151
self,

src/a2a/server/request_handlers/grpc_handler.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,6 @@ async def SendMessage(
134134
request, server_context
135135
)
136136
self._set_extension_metadata(context, server_context)
137-
# Wrap in SendMessageResponse based on type
138137
if isinstance(task_or_message, a2a_pb2.Task):
139138
return a2a_pb2.SendMessageResponse(task=task_or_message)
140139
return a2a_pb2.SendMessageResponse(message=task_or_message)

src/a2a/server/request_handlers/jsonrpc_handler.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
GetTaskRequest,
2727
ListTaskPushNotificationConfigRequest,
2828
ListTasksRequest,
29-
Message,
3029
SendMessageRequest,
3130
SendMessageResponse,
3231
SubscribeToTaskRequest,
@@ -171,15 +170,10 @@ async def on_message_send(
171170
task_or_message = await self.request_handler.on_message_send(
172171
request, context
173172
)
174-
# Build result based on return type
175-
response = SendMessageResponse()
176173
if isinstance(task_or_message, Task):
177-
response.task.CopyFrom(task_or_message)
178-
elif isinstance(task_or_message, Message):
179-
response.message.CopyFrom(task_or_message)
174+
response = SendMessageResponse(task=task_or_message)
180175
else:
181-
# Should we handle this fallthrough?
182-
pass
176+
response = SendMessageResponse(message=task_or_message)
183177

184178
result = MessageToDict(response)
185179
return _build_success_response(request_id, result)

src/a2a/server/request_handlers/rest_handler.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ async def on_message_send(
8484
task_or_message = await self.request_handler.on_message_send(
8585
params, context
8686
)
87-
# Wrap the result in a SendMessageResponse
8887
if isinstance(task_or_message, a2a_pb2.Task):
8988
response = a2a_pb2.SendMessageResponse(task=task_or_message)
9089
else:

src/a2a/server/tasks/database_task_store.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,8 @@ async def list(
261261
return a2a_pb2.ListTasksResponse(
262262
tasks=tasks[:page_size],
263263
total_size=total_count,
264-
next_page_token=next_page_token or '',
264+
next_page_token=next_page_token,
265+
page_size=page_size,
265266
)
266267

267268
async def delete(

src/a2a/server/tasks/inmemory_task_store.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ async def list(
106106
break
107107
if not valid_token:
108108
raise ValueError(f'Invalid page token: {params.page_token}')
109-
end_idx = start_idx + (params.page_size or DEFAULT_LIST_TASKS_PAGE_SIZE)
109+
page_size = params.page_size or DEFAULT_LIST_TASKS_PAGE_SIZE
110+
end_idx = start_idx + page_size
110111
next_page_token = (
111112
encode_page_token(tasks[end_idx].id)
112113
if end_idx < total_size
@@ -115,9 +116,10 @@ async def list(
115116
tasks = tasks[start_idx:end_idx]
116117

117118
return a2a_pb2.ListTasksResponse(
118-
next_page_token=next_page_token or '',
119+
next_page_token=next_page_token,
119120
tasks=tasks,
120121
total_size=total_size,
122+
page_size=page_size,
121123
)
122124

123125
async def delete(

tests/integration/test_client_server_integration.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@
9999
LIST_TASKS_RESPONSE = ListTasksResponse(
100100
tasks=[TASK_FROM_BLOCKING, GET_TASK_RESPONSE],
101101
next_page_token='page-2',
102+
total_size=12,
103+
page_size=10,
102104
)
103105

104106

@@ -489,6 +491,8 @@ async def test_http_transport_list_tasks(
489491

490492
assert len(result.tasks) == 2
491493
assert result.next_page_token == 'page-2'
494+
assert result.total_size == 12
495+
assert result.page_size == 10
492496
handler.on_list_tasks.assert_awaited_once()
493497

494498
if hasattr(transport, 'close'):

0 commit comments

Comments
 (0)