Skip to content

Commit eaa5eae

Browse files
committed
chore: incorporate latest proto changes
a2aproject/A2A#1507
1 parent 08794f7 commit eaa5eae

12 files changed

Lines changed: 141 additions & 145 deletions

File tree

buf.gen.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
version: v2
33
inputs:
44
- git_repo: https://github.com/a2aproject/A2A.git
5-
ref: aca981cee3e7a3f22a4df8fb8a5302406f7a1cf5
5+
ref: main
66
subdir: specification
77
managed:
88
enabled: true

src/a2a/client/base_client.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,7 @@ async def send_message(
9494
yield client_event
9595

9696
def _apply_client_config(self, request: SendMessageRequest) -> None:
97-
if not request.configuration.blocking and self._config.polling:
98-
request.configuration.blocking = not self._config.polling
97+
request.configuration.return_immediately |= self._config.polling
9998
if (
10099
not request.configuration.HasField('task_push_notification_config')
101100
and self._config.push_notification_configs

src/a2a/compat/v0_3/conversions.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,7 @@ def to_core_send_message_configuration(
304304
) -> pb2_v10.SendMessageConfiguration:
305305
"""Convert send message configuration to v1.0 core type."""
306306
core_config = pb2_v10.SendMessageConfiguration()
307-
core_config.blocking = (
308-
True # Default to True as per A2A spec for SendMessage
309-
)
307+
# Result will be blocking by default (return_immediately=False)
310308
if compat_config.accepted_output_modes:
311309
core_config.accepted_output_modes.extend(
312310
compat_config.accepted_output_modes
@@ -320,7 +318,7 @@ def to_core_send_message_configuration(
320318
if compat_config.history_length is not None:
321319
core_config.history_length = compat_config.history_length
322320
if compat_config.blocking is not None:
323-
core_config.blocking = compat_config.blocking
321+
core_config.return_immediately = not compat_config.blocking
324322
return core_config
325323

326324

@@ -340,7 +338,7 @@ def to_compat_send_message_configuration(
340338
history_length=core_config.history_length
341339
if core_config.HasField('history_length')
342340
else None,
343-
blocking=core_config.blocking,
341+
blocking=not core_config.return_immediately,
344342
)
345343

346344

@@ -1039,8 +1037,6 @@ def to_core_send_message_request(
10391037
core_req.configuration.CopyFrom(
10401038
to_core_send_message_configuration(compat_req.params.configuration)
10411039
)
1042-
else:
1043-
core_req.configuration.blocking = True # Default for A2A
10441040
if compat_req.params.metadata:
10451041
ParseDict(compat_req.params.metadata, core_req.metadata)
10461042
return core_req

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,7 @@ async def on_message_send(
340340
consumer = EventConsumer(queue)
341341
producer_task.add_done_callback(consumer.agent_task_callback)
342342

343-
blocking = True # Default to blocking behavior
344-
if params.configuration and params.configuration.blocking is False:
345-
blocking = False
343+
blocking = not params.configuration.return_immediately
346344

347345
interrupted_or_non_blocking = False
348346
try:

src/a2a/types/a2a_pb2.py

Lines changed: 108 additions & 108 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/a2a/types/a2a_pb2.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,16 @@ ROLE_USER: Role
4646
ROLE_AGENT: Role
4747

4848
class SendMessageConfiguration(_message.Message):
49-
__slots__ = ("accepted_output_modes", "task_push_notification_config", "history_length", "blocking")
49+
__slots__ = ("accepted_output_modes", "task_push_notification_config", "history_length", "return_immediately")
5050
ACCEPTED_OUTPUT_MODES_FIELD_NUMBER: _ClassVar[int]
5151
TASK_PUSH_NOTIFICATION_CONFIG_FIELD_NUMBER: _ClassVar[int]
5252
HISTORY_LENGTH_FIELD_NUMBER: _ClassVar[int]
53-
BLOCKING_FIELD_NUMBER: _ClassVar[int]
53+
RETURN_IMMEDIATELY_FIELD_NUMBER: _ClassVar[int]
5454
accepted_output_modes: _containers.RepeatedScalarFieldContainer[str]
5555
task_push_notification_config: TaskPushNotificationConfig
5656
history_length: int
57-
blocking: bool
58-
def __init__(self, accepted_output_modes: _Optional[_Iterable[str]] = ..., task_push_notification_config: _Optional[_Union[TaskPushNotificationConfig, _Mapping]] = ..., history_length: _Optional[int] = ..., blocking: _Optional[bool] = ...) -> None: ...
57+
return_immediately: bool
58+
def __init__(self, accepted_output_modes: _Optional[_Iterable[str]] = ..., task_push_notification_config: _Optional[_Union[TaskPushNotificationConfig, _Mapping]] = ..., history_length: _Optional[int] = ..., return_immediately: _Optional[bool] = ...) -> None: ...
5959

6060
class Task(_message.Message):
6161
__slots__ = ("id", "context_id", "status", "artifacts", "history", "metadata")

tests/client/test_base_client.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ async def test_send_message_callsite_config_overrides_non_streaming(
235235

236236
cfg = SendMessageConfiguration(
237237
history_length=2,
238-
blocking=False,
238+
return_immediately=True,
239239
accepted_output_modes=['application/json'],
240240
)
241241
request = SendMessageRequest(message=sample_message, configuration=cfg)
@@ -249,7 +249,7 @@ async def test_send_message_callsite_config_overrides_non_streaming(
249249

250250
params = mock_transport.send_message.call_args[0][0]
251251
assert params.configuration.history_length == 2
252-
assert params.configuration.blocking is False
252+
assert params.configuration.return_immediately is True
253253
assert params.configuration.accepted_output_modes == [
254254
'application/json'
255255
]
@@ -278,7 +278,7 @@ async def create_stream(*args, **kwargs):
278278

279279
cfg = SendMessageConfiguration(
280280
history_length=0,
281-
blocking=True,
281+
return_immediately=False,
282282
accepted_output_modes=['text/plain'],
283283
)
284284
request = SendMessageRequest(message=sample_message, configuration=cfg)
@@ -292,5 +292,5 @@ async def create_stream(*args, **kwargs):
292292

293293
params = mock_transport.send_message_streaming.call_args[0][0]
294294
assert params.configuration.history_length == 0
295-
assert params.configuration.blocking is True
295+
assert params.configuration.return_immediately is False
296296
assert params.configuration.accepted_output_modes == ['text/plain']

tests/compat/v0_3/test_conversions.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ def test_send_message_configuration_conversion():
427427
v10_expected = pb2_v10.SendMessageConfiguration(
428428
accepted_output_modes=['text/plain', 'application/json'],
429429
history_length=10,
430-
blocking=True,
430+
return_immediately=False,
431431
task_push_notification_config=pb2_v10.TaskPushNotificationConfig(
432432
url='http://test',
433433
authentication=pb2_v10.AuthenticationInfo(scheme='Basic'),
@@ -443,7 +443,7 @@ def test_send_message_configuration_conversion():
443443

444444
def test_send_message_configuration_conversion_minimal():
445445
v03_config = types_v03.MessageSendConfiguration()
446-
v10_expected = pb2_v10.SendMessageConfiguration(blocking=True)
446+
v10_expected = pb2_v10.SendMessageConfiguration(return_immediately=False)
447447

448448
v10_config = to_core_send_message_configuration(v03_config)
449449
assert v10_config == v10_expected
@@ -1307,7 +1307,7 @@ def test_send_message_request_conversion():
13071307
parts=[pb2_v10.Part(text='Hi')],
13081308
),
13091309
configuration=pb2_v10.SendMessageConfiguration(
1310-
history_length=5, blocking=True
1310+
history_length=5, return_immediately=False
13111311
),
13121312
)
13131313
ParseDict({'k': 'v'}, v10_expected.metadata)
@@ -1767,8 +1767,7 @@ def test_to_core_send_message_request_no_configuration():
17671767
),
17681768
)
17691769
core_req = to_core_send_message_request(v03_req)
1770-
# Default is True if configuration is absent
1771-
assert core_req.configuration.blocking is True
1770+
assert not core_req.HasField('configuration')
17721771
assert not core_req.HasField('message')
17731772

17741773

tests/compat/v0_3/test_grpc_handler.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ async def test_send_message_success_task(
6868
message_id='msg-1', role=a2a_pb2.Role.ROLE_USER
6969
),
7070
configuration=a2a_pb2.SendMessageConfiguration(
71-
history_length=0, blocking=False
71+
history_length=0, return_immediately=True
7272
),
7373
)
7474
mock_request_handler.on_message_send.assert_called_once_with(
@@ -105,7 +105,7 @@ async def test_send_message_success_message(
105105
message_id='msg-1', role=a2a_pb2.Role.ROLE_USER
106106
),
107107
configuration=a2a_pb2.SendMessageConfiguration(
108-
history_length=0, blocking=False
108+
history_length=0, return_immediately=True
109109
),
110110
)
111111
mock_request_handler.on_message_send.assert_called_once_with(
@@ -158,7 +158,7 @@ async def mock_stream(*args, **kwargs):
158158
message_id='msg-1', role=a2a_pb2.Role.ROLE_USER
159159
),
160160
configuration=a2a_pb2.SendMessageConfiguration(
161-
history_length=0, blocking=False
161+
history_length=0, return_immediately=True
162162
),
163163
)
164164
mock_request_handler.on_message_send_stream.assert_called_once_with(

tests/e2e/push_notifications/test_default_push_notification_support.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ async def test_notification_triggering_after_config_change_e2e(
184184
parts=[Part(text='How are you?')],
185185
role=Role.ROLE_USER,
186186
),
187-
configuration=SendMessageConfiguration(blocking=True),
187+
configuration=SendMessageConfiguration(
188+
return_immediately=False
189+
),
188190
)
189191
)
190192
]
@@ -225,7 +227,9 @@ async def test_notification_triggering_after_config_change_e2e(
225227
parts=[Part(text='Good')],
226228
role=Role.ROLE_USER,
227229
),
228-
configuration=SendMessageConfiguration(blocking=True),
230+
configuration=SendMessageConfiguration(
231+
return_immediately=False
232+
),
229233
)
230234
)
231235
]

0 commit comments

Comments
 (0)