diff --git a/src/google/adk/cli/fast_api.py b/src/google/adk/cli/fast_api.py index 3e437a7772..cd033696ce 100644 --- a/src/google/adk/cli/fast_api.py +++ b/src/google/adk/cli/fast_api.py @@ -337,7 +337,7 @@ def setup_observer(observer: Observer, adk_web_server: ApiServer): agent_change_handler = AgentChangeEventHandler( agent_loader=agent_loader, runners_to_clean=adk_web_server.runners_to_clean, - current_app_name_ref=adk_web_server.current_app_name_ref, + agents_dir=agents_dir, ) observer.schedule(agent_change_handler, agents_dir, recursive=True) observer.start() diff --git a/src/google/adk/cli/utils/agent_change_handler.py b/src/google/adk/cli/utils/agent_change_handler.py index ca7a625de9..aad48c662a 100644 --- a/src/google/adk/cli/utils/agent_change_handler.py +++ b/src/google/adk/cli/utils/agent_change_handler.py @@ -16,11 +16,11 @@ from __future__ import annotations import logging +from pathlib import Path from watchdog.events import FileSystemEventHandler from .agent_loader import AgentLoader -from .shared_value import SharedValue logger = logging.getLogger("google_adk." + __name__) @@ -31,15 +31,18 @@ def __init__( self, agent_loader: AgentLoader, runners_to_clean: set[str], - current_app_name_ref: SharedValue[str], + agents_dir: str, ): self.agent_loader = agent_loader self.runners_to_clean = runners_to_clean - self.current_app_name_ref = current_app_name_ref + self.agents_dir = Path(agents_dir).resolve() def on_modified(self, event): if not event.src_path.endswith((".py", ".yaml", ".yml")): return logger.info("Change detected in agents directory: %s", event.src_path) - self.agent_loader.remove_agent_from_cache(self.current_app_name_ref.value) - self.runners_to_clean.add(self.current_app_name_ref.value) + agent_name = ( + Path(event.src_path).resolve().relative_to(self.agents_dir).parts[0] + ) + self.agent_loader.remove_agent_from_cache(agent_name) + self.runners_to_clean.add(agent_name) diff --git a/tests/unittests/cli/utils/test_agent_change_handler.py b/tests/unittests/cli/utils/test_agent_change_handler.py index 542e2152b9..e0d46a68b8 100644 --- a/tests/unittests/cli/utils/test_agent_change_handler.py +++ b/tests/unittests/cli/utils/test_agent_change_handler.py @@ -16,7 +16,6 @@ from google.adk.cli.utils import agent_loader from google.adk.cli.utils.agent_change_handler import AgentChangeEventHandler -from google.adk.cli.utils.shared_value import SharedValue import pytest from watchdog.events import FileModifiedEvent @@ -35,19 +34,18 @@ def mock_agent_loader(self): def handler(self, mock_agent_loader): """Create an AgentChangeEventHandler with mocked dependencies.""" runners_to_clean = set() - current_app_name_ref = SharedValue(value="test_agent") return AgentChangeEventHandler( agent_loader=mock_agent_loader, runners_to_clean=runners_to_clean, - current_app_name_ref=current_app_name_ref, + agents_dir="/path/to", ) @pytest.mark.parametrize( "file_path", [ - pytest.param("/path/to/agent.py", id="python_file"), - pytest.param("/path/to/config.yaml", id="yaml_file"), - pytest.param("/path/to/config.yml", id="yml_file"), + pytest.param("/path/to/test_agent/agent.py", id="python_file"), + pytest.param("/path/to/test_agent/config.yaml", id="yaml_file"), + pytest.param("/path/to/test_agent/config.yml", id="yml_file"), ], ) def test_on_modified_triggers_reload_for_supported_extensions(