diff --git a/multi_agent/definitions.py b/multi_agent/definitions.py new file mode 100644 index 0000000..362f1e0 --- /dev/null +++ b/multi_agent/definitions.py @@ -0,0 +1,10 @@ +"""Proxy -- re-exports agent definitions from multi_agent.subagent.""" +from .subagent import ( + AgentDefinition, + get_agent_definition, + load_agent_definitions, + _parse_agent_md, + _BUILTIN_AGENTS, +) + +__all__ = ["AgentDefinition", "get_agent_definition", "load_agent_definitions"] diff --git a/multi_agent/manager.py b/multi_agent/manager.py new file mode 100644 index 0000000..4252fb9 --- /dev/null +++ b/multi_agent/manager.py @@ -0,0 +1,4 @@ +"""Proxy -- re-exports SubAgentManager from multi_agent.subagent.""" +from .subagent import SubAgentManager + +__all__ = ["SubAgentManager"] diff --git a/multi_agent/task.py b/multi_agent/task.py new file mode 100644 index 0000000..5d478ed --- /dev/null +++ b/multi_agent/task.py @@ -0,0 +1,11 @@ +"""Proxy -- re-exports task classes from multi_agent.subagent.""" +from .subagent import ( + SubAgentTask, + _extract_final_text, + _git_root, + _create_worktree, + _remove_worktree, + _agent_run, +) + +__all__ = ["SubAgentTask"] diff --git a/tests/test_multi_agent_split.py b/tests/test_multi_agent_split.py new file mode 100644 index 0000000..12a0167 --- /dev/null +++ b/tests/test_multi_agent_split.py @@ -0,0 +1,55 @@ +"""Tests for multi_agent package split import paths (PR #51).""" +from multi_agent.subagent import ( + AgentDefinition, + SubAgentManager, + SubAgentTask, + get_agent_definition, + load_agent_definitions, + _extract_final_text, +) + + +class TestSplitImportPaths: + def test_definitions_reexports(self): + from multi_agent.definitions import ( + AgentDefinition as AD, + get_agent_definition as gad, + load_agent_definitions as lad, + ) + assert AD is AgentDefinition + assert gad is get_agent_definition + assert lad is load_agent_definitions + + def test_manager_reexports(self): + from multi_agent.manager import SubAgentManager as SAM + assert SAM is SubAgentManager + + def test_task_reexports(self): + from multi_agent.task import SubAgentTask as SAT + from multi_agent.task import _extract_final_text as eft + assert SAT is SubAgentTask + assert eft is _extract_final_text + + def test_backward_compat_root_shim(self): + import subagent + assert hasattr(subagent, 'SubAgentManager') + assert hasattr(subagent, 'SubAgentTask') + assert hasattr(subagent, 'AgentDefinition') + + +class TestAgentDefinitionsViaProxy: + def test_builtin_agents(self): + from multi_agent.definitions import load_agent_definitions + agents = load_agent_definitions() + for name in ("general-purpose", "coder", "reviewer", "researcher", "tester"): + assert name in agents + + def test_get_valid(self): + from multi_agent.definitions import get_agent_definition + defn = get_agent_definition("coder") + assert defn is not None + assert defn.name == "coder" + + def test_get_unknown_returns_none(self): + from multi_agent.definitions import get_agent_definition + assert get_agent_definition("nonexistent_xyz") is None