From 373f4edac2ff34131bf80d6b5ffe8a69a726c2b9 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sat, 2 May 2026 12:52:57 -0400 Subject: [PATCH] refactor(conductor): Audit and cleanup multi_agent_conductor.py --- src/multi_agent_conductor.py | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/src/multi_agent_conductor.py b/src/multi_agent_conductor.py index 10545af..29a6bff 100644 --- a/src/multi_agent_conductor.py +++ b/src/multi_agent_conductor.py @@ -27,34 +27,6 @@ See Also: - src/dag_engine.py for TrackDAG and ExecutionEngine - src/models.py for Ticket, Track, WorkerContext """ -""" -Multi-Agent Conductor - MMA 4-Tier orchestration engine. - -This module provides the ConductorEngine and WorkerPool for orchestrating - the execution of implementation tickets within a Track using the DAG engine -and the bounded concurrent worker pool with abort event propagation. - -Key Components: - - ConductorEngine: Tier 2 orchestrator that owns the execution loop - - WorkerPool: Bounded concurrent worker pool with semaphore gating - - run_worker_lifecycle: Stateless Tier 3 worker execution with context amnesia - -Thread Safety: - - All state mutations use locks (_workers_lock, _tier_usage_lock) - - Worker threads are daemon threads that clean up on exit - - Abort events enable per-ticket cancellation - -Integration: - - Uses AsyncEventQueue for state updates to the GUI - - Uses ai_client.send() for LLM communication - - Uses mcp_client for tool dispatch - -See Also: - - docs/guide_mma.md for MMA orchestration documentation - - src/dag_engine.py for TrackDAG and ExecutionEngine - - src/ai_client.py for multi-provider LLM abstraction - - src/models.py for Ticket, Track, WorkerContext data structures -""" from src import ai_client import json import threading @@ -151,6 +123,7 @@ class ConductorEngine: self._tier_usage_lock = threading.Lock() def update_usage(self, tier: str, input_tokens: int, output_tokens: int) -> None: + """Updates token usage for a specific tier.""" with self._tier_usage_lock: if tier in self.tier_usage: self.tier_usage[tier]["input"] += input_tokens @@ -180,6 +153,7 @@ class ConductorEngine: self._active_workers.pop(ticket_id, None) def _push_state(self, status: str = "running", active_tier: str = None) -> None: + """Pushes the current engine state to the GUI.""" if not self.event_queue: return payload = { @@ -289,7 +263,6 @@ class ConductorEngine: model_name = ticket.model_override else: # Check if ticket has a persona with preferred_models - models_list = ["gemini-2.5-flash-lite", "gemini-2.5-flash", "gemini-3.1-pro-preview"] if ticket.persona_id: # Try to load preferred_models from persona try: