diff --git a/src/google/adk/runners.py b/src/google/adk/runners.py index 9802801dca..886629e01d 100644 --- a/src/google/adk/runners.py +++ b/src/google/adk/runners.py @@ -177,7 +177,7 @@ def __init__( *, app: Optional[App] = None, app_name: Optional[str] = None, - agent: Optional[BaseAgent] = None, + agent: Optional[BaseAgent | 'BaseNode'] = None, node: Any = None, plugins: Optional[List[BasePlugin]] = None, artifact_service: Optional[BaseArtifactService] = None, diff --git a/tests/unittests/test_runners.py b/tests/unittests/test_runners.py index 925769951d..5ad81ab3b2 100644 --- a/tests/unittests/test_runners.py +++ b/tests/unittests/test_runners.py @@ -1409,6 +1409,22 @@ def test_resolve_app_with_agent_wraps_in_app(self): assert runner.app_name == "test_app" assert runner.agent is self.root_agent + def test_resolve_app_with_base_node_via_agent_param(self): + """Test that a BaseNode root passed via `agent` is accepted.""" + from google.adk.workflow._base_node import BaseNode + + node = BaseNode(name="test_node") + runner = Runner( + app_name="test_app", + agent=node, + session_service=self.session_service, + artifact_service=self.artifact_service, + ) + assert runner.app is not None + assert runner.app.root_agent is node + assert runner.app_name == "test_app" + assert runner.agent is node + def test_resolve_app_with_node_wraps_in_app(self): """Test that a bare node is wrapped into an App.""" from google.adk.workflow._base_node import BaseNode