Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions python/packages/a2a/agent_framework_a2a/_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -537,6 +537,7 @@ def _updates_from_task(
contents=contents,
role="assistant" if status.message.role == A2ARole.ROLE_AGENT else "user",
response_id=task.id,
message_id=status.message.message_id,
additional_properties={"a2a_metadata": task_metadata} if task_metadata else None,
raw_representation=task,
)
Expand Down Expand Up @@ -585,6 +586,7 @@ def _updates_from_task_update_event(
contents=contents,
role="assistant" if message.role == A2ARole.ROLE_AGENT else "user",
response_id=update_event.task_id,
message_id=message.message_id,
additional_properties={"a2a_metadata": merged_metadata} if merged_metadata else None,
raw_representation=update_event,
)
Expand Down
13 changes: 10 additions & 3 deletions python/packages/a2a/tests/test_a2a_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -1130,9 +1130,14 @@ async def test_streaming_working_update_without_message_is_skipped(

async def test_streaming_working_update_user_role_mapping(a2a_agent: A2AAgent, mock_a2a_client: MockA2AClient) -> None:
"""Test that A2ARole.ROLE_USER in status message maps to role='user'."""
mock_a2a_client.add_in_progress_task_response(
"task-u", context_id="ctx-u", text="User echo", role=A2ARole.ROLE_USER
message = A2AMessage(
message_id="msg-user-echo",
role=A2ARole.ROLE_USER,
parts=[Part(text="User echo")],
)
status = TaskStatus(state=TaskState.TASK_STATE_WORKING, message=message)
task = Task(id="task-u", context_id="ctx-u", status=status)
mock_a2a_client.responses.append(StreamResponse(task=task))
mock_a2a_client.add_task_response("task-u", [{"id": "art-u", "content": "Done"}])

updates: list[AgentResponseUpdate] = []
Expand All @@ -1142,6 +1147,7 @@ async def test_streaming_working_update_user_role_mapping(a2a_agent: A2AAgent, m
assert len(updates) == 2
assert updates[0].contents[0].text == "User echo"
assert updates[0].role == "user"
assert updates[0].message_id == "msg-user-echo"


async def test_background_with_status_message_yields_continuation_token(
Expand Down Expand Up @@ -1247,7 +1253,7 @@ async def test_streaming_status_update_event_yields_content(
status=TaskStatus(
state=TaskState.TASK_STATE_WORKING,
message=A2AMessage(
message_id=str(uuid4()),
message_id="msg-status",
role=A2ARole.ROLE_AGENT,
parts=[Part(text="Still working")],
),
Expand All @@ -1262,6 +1268,7 @@ async def test_streaming_status_update_event_yields_content(
assert len(updates) == 1
assert updates[0].text == "Still working"
assert updates[0].role == "assistant"
assert updates[0].message_id == "msg-status"
assert updates[0].raw_representation == update_event


Expand Down