From 17a3ecb1e03491111a539ea04c48db18a028ccb3 Mon Sep 17 00:00:00 2001 From: "hgyun.lee" Date: Wed, 15 Oct 2025 22:10:52 +0900 Subject: [PATCH 1/2] fix: Bug when callback_context._invocation_context is missing in GlobalInstructionPlugin --- src/google/adk/plugins/global_instruction_plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/google/adk/plugins/global_instruction_plugin.py b/src/google/adk/plugins/global_instruction_plugin.py index 4251f691f6..02a71121bb 100644 --- a/src/google/adk/plugins/global_instruction_plugin.py +++ b/src/google/adk/plugins/global_instruction_plugin.py @@ -79,7 +79,7 @@ async def before_model_callback( return None # Resolve the global instruction (handle both string and InstructionProvider) - readonly_context = ReadonlyContext(callback_context.invocation_context) + readonly_context = ReadonlyContext(callback_context._invocation_context) final_global_instruction = await self._resolve_global_instruction( readonly_context ) From a0d09ecee3cd3df79f783c91caf6e9a2fd17bdf6 Mon Sep 17 00:00:00 2001 From: "hgyun.lee" Date: Wed, 15 Oct 2025 22:28:04 +0900 Subject: [PATCH 2/2] Fix test fail --- src/google/adk/plugins/global_instruction_plugin.py | 3 +-- .../plugins/test_global_instruction_plugin.py | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/google/adk/plugins/global_instruction_plugin.py b/src/google/adk/plugins/global_instruction_plugin.py index 02a71121bb..ed2a6d4821 100644 --- a/src/google/adk/plugins/global_instruction_plugin.py +++ b/src/google/adk/plugins/global_instruction_plugin.py @@ -79,9 +79,8 @@ async def before_model_callback( return None # Resolve the global instruction (handle both string and InstructionProvider) - readonly_context = ReadonlyContext(callback_context._invocation_context) final_global_instruction = await self._resolve_global_instruction( - readonly_context + callback_context ) if not final_global_instruction: diff --git a/tests/unittests/plugins/test_global_instruction_plugin.py b/tests/unittests/plugins/test_global_instruction_plugin.py index 2253b1fb5a..851f3a9334 100644 --- a/tests/unittests/plugins/test_global_instruction_plugin.py +++ b/tests/unittests/plugins/test_global_instruction_plugin.py @@ -43,7 +43,7 @@ async def test_global_instruction_plugin_with_string(): mock_invocation_context.session = mock_session mock_callback_context = Mock(spec=CallbackContext) - mock_callback_context.invocation_context = mock_invocation_context + mock_callback_context._invocation_context = mock_invocation_context llm_request = LlmRequest( model="gemini-1.5-flash", @@ -80,10 +80,10 @@ async def build_global_instruction(readonly_context: ReadonlyContext) -> str: ) mock_invocation_context = Mock(spec=InvocationContext) - mock_invocation_context.session = mock_session mock_callback_context = Mock(spec=CallbackContext) - mock_callback_context.invocation_context = mock_invocation_context + mock_callback_context._invocation_context = mock_invocation_context + mock_callback_context.session = mock_session llm_request = LlmRequest( model="gemini-1.5-flash", @@ -119,7 +119,7 @@ async def test_global_instruction_plugin_empty_instruction(): mock_invocation_context.session = mock_session mock_callback_context = Mock(spec=CallbackContext) - mock_callback_context.invocation_context = mock_invocation_context + mock_callback_context._invocation_context = mock_invocation_context llm_request = LlmRequest( model="gemini-1.5-flash", @@ -156,7 +156,7 @@ async def test_global_instruction_plugin_leads_existing(): mock_invocation_context.session = mock_session mock_callback_context = Mock(spec=CallbackContext) - mock_callback_context.invocation_context = mock_invocation_context + mock_callback_context._invocation_context = mock_invocation_context llm_request = LlmRequest( model="gemini-1.5-flash", @@ -191,7 +191,7 @@ async def test_global_instruction_plugin_prepends_to_list(): mock_invocation_context.session = mock_session mock_callback_context = Mock(spec=CallbackContext) - mock_callback_context.invocation_context = mock_invocation_context + mock_callback_context._invocation_context = mock_invocation_context llm_request = LlmRequest( model="gemini-1.5-flash",