| 136 | """ |
| 137 | |
| 138 | def __init__( |
| 139 | self, |
| 140 | mcp_client: MCPClient, |
| 141 | llm_client: LLMClient, |
| 142 | config: LoopConfig, |
| 143 | logger: Logger, |
| 144 | ): |
| 145 | self.mcp_client = mcp_client |
| 146 | self.llm_client = llm_client |
| 147 | self.config = config |
| 148 | self.logger = logger |
| 149 | self.session = Session(config) |
| 150 | self._mcp_tools: list[dict] = [] |
| 151 | self._all_tools: list[dict] = [] |
| 152 | self._orchestrator_tools: list[OrchestratorTool] = [] |
| 153 | self._task_board: Optional[TaskBoard] = None |
| 154 | self._plan_executor: Optional[PlanExecutor] = None |
| 155 | self._plan_generator: Optional[PlanGenerator] = None |
| 156 | self._verifier: Optional[PlanVerifier] = None |
| 157 | |
| 158 | def run(self, task: str, plan_mode: bool = False) -> str: |
| 159 | """Run a single task through the agentic loop. |