From f81206b2ac0f00d79c12bbb1c2611d1f97c91750 Mon Sep 17 00:00:00 2001 From: Yaroslav Shevchuk Date: Fri, 7 Nov 2025 10:48:26 +0000 Subject: [PATCH 1/2] add metadata to send message request --- src/a2a/client/base_client.py | 5 ++++- src/a2a/client/client.py | 1 + tests/client/test_base_client.py | 10 ++++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/a2a/client/base_client.py b/src/a2a/client/base_client.py index f4a8d03de..4b7053291 100644 --- a/src/a2a/client/base_client.py +++ b/src/a2a/client/base_client.py @@ -1,4 +1,5 @@ from collections.abc import AsyncIterator +from typing import Any from a2a.client.client import ( Client, @@ -47,6 +48,7 @@ async def send_message( request: Message, *, context: ClientCallContext | None = None, + request_metadata: dict[str, Any] | None = None, ) -> AsyncIterator[ClientEvent | Message]: """Sends a message to the agent. @@ -57,6 +59,7 @@ async def send_message( Args: request: The message to send to the agent. context: The client call context. + request_metadata: Extensions Metadata attached to the request. Yields: An async iterator of `ClientEvent` or a final `Message` response. @@ -70,7 +73,7 @@ async def send_message( else None ), ) - params = MessageSendParams(message=request, configuration=config) + params = MessageSendParams(message=request, configuration=config, metadata=request_metadata) if not self._config.streaming or not self._card.capabilities.streaming: response = await self._transport.send_message( diff --git a/src/a2a/client/client.py b/src/a2a/client/client.py index 7cc10423d..0e1c43237 100644 --- a/src/a2a/client/client.py +++ b/src/a2a/client/client.py @@ -110,6 +110,7 @@ async def send_message( request: Message, *, context: ClientCallContext | None = None, + request_metadata: dict[str, Any] | None = None, ) -> AsyncIterator[ClientEvent | Message]: """Sends a message to the server. diff --git a/tests/client/test_base_client.py b/tests/client/test_base_client.py index c1251f1c4..3d6c970f2 100644 --- a/tests/client/test_base_client.py +++ b/tests/client/test_base_client.py @@ -71,9 +71,12 @@ async def create_stream(*args, **kwargs): mock_transport.send_message_streaming.return_value = create_stream() - events = [event async for event in base_client.send_message(sample_message)] + meta = {"test":1} + stream = base_client.send_message(sample_message, request_metadata=meta) + events = [event async for event in stream] mock_transport.send_message_streaming.assert_called_once() + assert mock_transport.send_message_streaming.call_args[0][0].metadata == meta assert not mock_transport.send_message.called assert len(events) == 1 assert events[0][0].id == 'task-123' @@ -90,9 +93,12 @@ async def test_send_message_non_streaming( status=TaskStatus(state=TaskState.completed), ) - events = [event async for event in base_client.send_message(sample_message)] + meta = {"test":1} + stream = base_client.send_message(sample_message, request_metadata=meta) + events = [event async for event in stream] mock_transport.send_message.assert_called_once() + assert mock_transport.send_message.call_args[0][0].metadata == meta assert not mock_transport.send_message_streaming.called assert len(events) == 1 assert events[0][0].id == 'task-456' From 573042c02040fd58b04728213f7ba5086f00239d Mon Sep 17 00:00:00 2001 From: Yaroslav Shevchuk Date: Fri, 7 Nov 2025 10:55:18 +0000 Subject: [PATCH 2/2] reformat --- src/a2a/client/base_client.py | 4 +++- tests/client/test_base_client.py | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/a2a/client/base_client.py b/src/a2a/client/base_client.py index 4b7053291..b8697d860 100644 --- a/src/a2a/client/base_client.py +++ b/src/a2a/client/base_client.py @@ -73,7 +73,9 @@ async def send_message( else None ), ) - params = MessageSendParams(message=request, configuration=config, metadata=request_metadata) + params = MessageSendParams( + message=request, configuration=config, metadata=request_metadata + ) if not self._config.streaming or not self._card.capabilities.streaming: response = await self._transport.send_message( diff --git a/tests/client/test_base_client.py b/tests/client/test_base_client.py index 549e0c348..f5ab25432 100644 --- a/tests/client/test_base_client.py +++ b/tests/client/test_base_client.py @@ -73,12 +73,14 @@ async def create_stream(*args, **kwargs): mock_transport.send_message_streaming.return_value = create_stream() - meta = {"test":1} + meta = {'test': 1} stream = base_client.send_message(sample_message, request_metadata=meta) events = [event async for event in stream] mock_transport.send_message_streaming.assert_called_once() - assert mock_transport.send_message_streaming.call_args[0][0].metadata == meta + assert ( + mock_transport.send_message_streaming.call_args[0][0].metadata == meta + ) assert not mock_transport.send_message.called assert len(events) == 1 assert events[0][0].id == 'task-123' @@ -95,7 +97,7 @@ async def test_send_message_non_streaming( status=TaskStatus(state=TaskState.completed), ) - meta = {"test":1} + meta = {'test': 1} stream = base_client.send_message(sample_message, request_metadata=meta) events = [event async for event in stream]