From b836cc5cc2a0f4620c2fc846e4d96904d9746d6e Mon Sep 17 00:00:00 2001 From: Connor Moss Date: Mon, 12 Oct 2026 14:22:45 +0200 Subject: [PATCH] fix(compat): block on a v0.3 gRPC and REST send without configuration --- src/a2a/compat/v0_3/proto_utils.py | 4 +++- tests/compat/v0_3/test_grpc_handler.py | 3 --- tests/compat/v0_3/test_proto_utils.py | 7 +++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/a2a/compat/v0_3/proto_utils.py b/src/a2a/compat/v0_3/proto_utils.py index 6453d736d..201d1e169 100644 --- a/src/a2a/compat/v0_3/proto_utils.py +++ b/src/a2a/compat/v0_3/proto_utils.py @@ -804,7 +804,9 @@ def message_send_params( cls, request: a2a_pb2.SendMessageRequest ) -> types.MessageSendParams: return types.MessageSendParams( - configuration=cls.message_send_configuration(request.configuration), + configuration=cls.message_send_configuration(request.configuration) + if request.HasField('configuration') + else None, message=cls.message(request.request), metadata=cls.metadata(request.metadata), ) diff --git a/tests/compat/v0_3/test_grpc_handler.py b/tests/compat/v0_3/test_grpc_handler.py index 5aca673a5..3c4572923 100644 --- a/tests/compat/v0_3/test_grpc_handler.py +++ b/tests/compat/v0_3/test_grpc_handler.py @@ -78,7 +78,6 @@ async def test_send_message_success_task( message=a2a_pb2.Message( message_id='msg-1', role=a2a_pb2.Role.ROLE_USER ), - configuration=a2a_pb2.SendMessageConfiguration(return_immediately=True), ) mock_request_handler.on_message_send.assert_called_once_with( expected_req, ANY @@ -113,7 +112,6 @@ async def test_send_message_success_message( message=a2a_pb2.Message( message_id='msg-1', role=a2a_pb2.Role.ROLE_USER ), - configuration=a2a_pb2.SendMessageConfiguration(return_immediately=True), ) mock_request_handler.on_message_send.assert_called_once_with( expected_req, ANY @@ -164,7 +162,6 @@ async def mock_stream(*args, **kwargs): message=a2a_pb2.Message( message_id='msg-1', role=a2a_pb2.Role.ROLE_USER ), - configuration=a2a_pb2.SendMessageConfiguration(return_immediately=True), ) mock_request_handler.on_message_send_stream.assert_called_once_with( expected_req, ANY diff --git a/tests/compat/v0_3/test_proto_utils.py b/tests/compat/v0_3/test_proto_utils.py index 625c7ac07..78ce2d62d 100644 --- a/tests/compat/v0_3/test_proto_utils.py +++ b/tests/compat/v0_3/test_proto_utils.py @@ -275,6 +275,13 @@ def test_message_send_configuration_history_length( ) assert config.history_length == expected + def test_message_send_params_without_configuration(self): + """An unset configuration stays None so the send defaults to blocking.""" + params = proto_utils.FromProto.message_send_params( + a2a_pb2.SendMessageRequest(request=a2a_pb2.Message(message_id='m')) + ) + assert params.configuration is None + def test_none_handling(self): """Test that None inputs are handled gracefully.""" assert proto_utils.ToProto.message(None) is None