Skip to content

Commit 59f7347

Browse files
google-genai-botcopybara-github
authored andcommitted
fix(small): Convert events to the A2A format while respecting user vs agent role
PiperOrigin-RevId: 917275872
1 parent 3d07960 commit 59f7347

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

src/google/adk/a2a/converters/event_converter.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,10 @@ def convert_event_to_a2a_events(
570570

571571
# Handle regular message content
572572
message = convert_event_to_a2a_message(
573-
event, invocation_context, part_converter=part_converter
573+
event,
574+
invocation_context,
575+
part_converter=part_converter,
576+
role=Role.user if event.author == "user" else Role.agent,
574577
)
575578
if message:
576579
running_event = _create_status_update_event(

tests/unittests/a2a/converters/test_event_converter.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_events
3434
from google.adk.a2a.converters.event_converter import convert_event_to_a2a_message
3535
from google.adk.a2a.converters.event_converter import DEFAULT_ERROR_MESSAGE
36+
from google.adk.a2a.converters.part_converter import convert_genai_part_to_a2a_part
3637
from google.adk.a2a.converters.utils import ADK_METADATA_KEY_PREFIX
3738
from google.adk.agents.invocation_context import InvocationContext
3839
from google.adk.events.event import Event
@@ -438,6 +439,42 @@ def test_convert_event_to_a2a_events_with_custom_ids(self):
438439
context_id,
439440
)
440441

442+
def test_convert_event_to_a2a_events_user_role(self):
443+
"""Test event to A2A events conversion with events from a user."""
444+
# Setup message
445+
mock_message = Mock(spec=Message)
446+
mock_message.parts = []
447+
448+
with patch(
449+
"google.adk.a2a.converters.event_converter.convert_event_to_a2a_message"
450+
) as mock_convert_message:
451+
mock_convert_message.return_value = mock_message
452+
453+
with patch(
454+
"google.adk.a2a.converters.event_converter._create_status_update_event"
455+
) as mock_create_running:
456+
mock_running_event = Mock()
457+
mock_create_running.return_value = mock_running_event
458+
self.mock_event.author = "user"
459+
460+
task_id = "custom-task-id"
461+
context_id = "custom-context-id"
462+
463+
result = convert_event_to_a2a_events(
464+
self.mock_event, self.mock_invocation_context, task_id, context_id
465+
)
466+
467+
assert len(result) == 1
468+
assert result[0] == mock_running_event
469+
470+
# Verify the function is called with the specific task_id and context_id
471+
mock_convert_message.assert_called_once_with(
472+
self.mock_event,
473+
self.mock_invocation_context,
474+
part_converter=convert_genai_part_to_a2a_part,
475+
role=Role.user,
476+
)
477+
441478
def test_create_status_update_event_with_auth_required_state(self):
442479
"""Test creation of status update event with auth_required state."""
443480
from a2a.types import DataPart

0 commit comments

Comments
 (0)