Skip to content

Commit 32a124d

Browse files
CopilotCopilot
andcommitted
Fix context_id precedence to use 'is not None' and add session-without-service-id test
Address review feedback: - Use explicit 'is not None' check instead of 'or' for context_id precedence so empty strings don't incorrectly fall through - Add test for AgentSession() with no service_session_id, verifying fallback to message additional_properties context_id Fixes #5353 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 0481cd9 commit 32a124d

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

python/packages/a2a/agent_framework_a2a/_agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ def _prepare_message_for_a2a(self, message: Message, *, context_id: str | None =
683683
role=A2ARole("user"),
684684
parts=parts,
685685
message_id=message.message_id or uuid.uuid4().hex,
686-
context_id=context_id or message.additional_properties.get("context_id"),
686+
context_id=context_id if context_id is not None else message.additional_properties.get("context_id"),
687687
metadata=metadata,
688688
)
689689

python/packages/a2a/tests/test_a2a_agent.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -952,6 +952,24 @@ async def test_run_message_context_id_used_when_no_session(mock_a2a_client: Mock
952952
assert mock_a2a_client.last_message.context_id == "fallback-ctx"
953953

954954

955+
@mark.asyncio
956+
async def test_run_message_context_id_used_when_session_has_no_service_id(mock_a2a_client: MockA2AClient) -> None:
957+
"""Test fallback to additional_properties context_id when session exists but service_session_id is None."""
958+
agent = A2AAgent(name="Test Agent", id="test-agent", client=mock_a2a_client, http_client=None)
959+
mock_a2a_client.add_message_response("msg-ctx4", "reply")
960+
961+
session = AgentSession()
962+
message = Message(
963+
role="user",
964+
contents=[Content.from_text(text="Hello")],
965+
additional_properties={"context_id": "fallback-ctx"},
966+
)
967+
await agent.run(messages=[message], session=session)
968+
969+
assert mock_a2a_client.last_message is not None
970+
assert mock_a2a_client.last_message.context_id == "fallback-ctx"
971+
972+
955973
# endregion
956974

957975

0 commit comments

Comments
 (0)