diff --git a/src/google/adk/agents/readonly_context.py b/src/google/adk/agents/readonly_context.py index 548425367..3abf81ae9 100644 --- a/src/google/adk/agents/readonly_context.py +++ b/src/google/adk/agents/readonly_context.py @@ -33,6 +33,11 @@ def __init__( ) -> None: self._invocation_context = invocation_context + @property + def user_id(self) -> str: + """The user id that start this invocation. READONLY field.""" + return self._invocation_context.user_id + @property def user_content(self) -> Optional[types.Content]: """The user content that started this invocation. READONLY field.""" diff --git a/tests/unittests/agents/test_readonly_context.py b/tests/unittests/agents/test_readonly_context.py index c2ffa6e0a..0e4f52e40 100644 --- a/tests/unittests/agents/test_readonly_context.py +++ b/tests/unittests/agents/test_readonly_context.py @@ -8,6 +8,8 @@ @pytest.fixture def mock_invocation_context(): mock_context = MagicMock() + + mock_context.user_id = "test-user-id" mock_context.invocation_id = "test-invocation-id" mock_context.agent.name = "test-agent-name" mock_context.session.state = {"key1": "value1", "key2": "value2"} @@ -15,6 +17,12 @@ def mock_invocation_context(): return mock_context +def test_user_id(mock_invocation_context): + readonly_context = ReadonlyContext(mock_invocation_context) + print(readonly_context.__dict__) + assert readonly_context.user_id == "test-user-id" + + def test_invocation_id(mock_invocation_context): readonly_context = ReadonlyContext(mock_invocation_context) assert readonly_context.invocation_id == "test-invocation-id"