Coverage for merco/plugins/builtin/subagent/plugin.py: 100%
26 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 14:04 +0800
1"""SubAgent plugin — creates TodoManager + SubAgentManager and wires TaskTool."""
2from __future__ import annotations
4import logging
5from typing import TYPE_CHECKING
7from merco.plugins.base import Plugin
9if TYPE_CHECKING:
10 from merco.plugins.base import PluginContext
12logger = logging.getLogger("merco.plugins.subagent")
15class SubAgentPlugin(Plugin):
16 """Creates todo manager, sub-agent manager, and wires TaskTool."""
18 name = "subagent"
19 version = "1.0.0"
20 description = "Creates sub-agent dispatch and todo manager"
22 async def activate(self, ctx: "PluginContext") -> None:
23 from merco.todo.manager import TodoManager
24 from merco.agents.subagent import SubAgentManager
26 todo_manager = TodoManager(f"{ctx.config.memory_path}/../todos.db")
27 sub_agent_manager = SubAgentManager(ctx.agent, ctx.agent_profiles)
29 ctx.todo_manager = todo_manager
30 ctx.sub_agent_manager = sub_agent_manager
31 if ctx.agent is not None:
32 ctx.agent.todo_manager = todo_manager
33 ctx.agent.sub_agent_manager = sub_agent_manager
35 task_tool = ctx.tool_registry.get("task")
36 if task_tool is not None:
37 if hasattr(task_tool, "_todo_manager"):
38 task_tool._todo_manager = todo_manager
39 if hasattr(task_tool, "_sub_agent_manager"):
40 task_tool._sub_agent_manager = sub_agent_manager
42 logger.info("SubAgent plugin activated")