diff --git a/src/app_controller.py b/src/app_controller.py index 6a9fbcf..677146d 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -2913,7 +2913,7 @@ class AppController: # Ensure it's loaded as active if not self.active_track or self.active_track.id != track_id: self._cb_load_track(track_id) - if self.active_track: + if self.active_track and self.active_track.id == track_id: # Use the active track object directly to start execution print(f"[DEBUG] _cb_start_track: track_id={self.active_track.id}, desc={self.active_track.description}") self._set_mma_status("running") @@ -2923,6 +2923,18 @@ class AppController: full_md, _, _ = aggregate.run(flat) threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start() self._set_status(f"Track '{self.active_track.description}' started.") + elif self.active_track and self.active_track.id != track_id: + # load_track failed but active_track is still wrong - reload explicitly + print(f"[DEBUG] _cb_start_track: load failed, trying reload track_id={track_id}") + self._cb_load_track(track_id) + if self.active_track and self.active_track.id == track_id: + self._set_mma_status("running") + engine = multi_agent_conductor.ConductorEngine(self.active_track, self.event_queue, auto_queue=not self.mma_step_mode) + self.engines[self.active_track.id] = engine + flat = project_manager.flat_config(self.project, self.active_discussion, track_id=self.active_track.id) + full_md, _, _ = aggregate.run(flat) + threading.Thread(target=engine.run, kwargs={"md_content": full_md}, daemon=True).start() + self._set_status(f"Track '{self.active_track.description}' started.") return idx = 0 if isinstance(user_data, int):