feat(context): Finalize AppController decoupling and aggregate integration

This commit is contained in:
2026-05-11 16:12:33 -04:00
parent bb69f1d6f1
commit 0416eaeaa8
+7 -5
View File
@@ -2633,7 +2633,7 @@ class AppController:
self.disc_entries = models.parse_history_entries(disc_data.get("history", []), self.disc_roles) self.disc_entries = models.parse_history_entries(disc_data.get("history", []), self.disc_roles)
if "context_snapshot" in disc_data: if "context_snapshot" in disc_data:
snapshot_data = disc_data["context_snapshot"] snapshot_data = disc_data["context_snapshot"]
self.files = [models.FileItem.from_dict(f) if isinstance(f, dict) else models.FileItem(path=str(f)) for f in snapshot_data] self.context_files = [models.FileItem.from_dict(f) if isinstance(f, dict) else models.FileItem(path=str(f)) for f in snapshot_data]
self.ai_status = f"discussion: {name}" self.ai_status = f"discussion: {name}"
def _flush_disc_entries_to_project(self) -> None: def _flush_disc_entries_to_project(self) -> None:
@@ -2649,7 +2649,7 @@ class AppController:
disc_data = discussions.setdefault(self.active_discussion, project_manager.default_discussion()) disc_data = discussions.setdefault(self.active_discussion, project_manager.default_discussion())
disc_data["history"] = history_strings disc_data["history"] = history_strings
disc_data["last_updated"] = project_manager.now_ts() disc_data["last_updated"] = project_manager.now_ts()
disc_data["context_snapshot"] = [f.to_dict() if hasattr(f, "to_dict") else {"path": str(f)} for f in self.files] disc_data["context_snapshot"] = [f.to_dict() if hasattr(f, "to_dict") else {"path": str(f)} for f in self.context_files]
def _create_discussion(self, name: str) -> None: def _create_discussion(self, name: str) -> None:
""" """
@@ -2661,8 +2661,8 @@ class AppController:
self.ai_status = f"discussion '{name}' already exists" self.ai_status = f"discussion '{name}' already exists"
return return
discussions[name] = project_manager.default_discussion() discussions[name] = project_manager.default_discussion()
if self.files: if self.context_files:
discussions[name]["context_snapshot"] = [f.to_dict() for f in self.files] discussions[name]["context_snapshot"] = [f.to_dict() for f in self.context_files]
self._switch_discussion(name) self._switch_discussion(name)
def _branch_discussion(self, index: int) -> None: def _branch_discussion(self, index: int) -> None:
@@ -3077,6 +3077,7 @@ class AppController:
models.save_config(self.config) models.save_config(self.config)
track_id = self.active_track.id if self.active_track else None track_id = self.active_track.id if self.active_track else None
flat = project_manager.flat_config(self.project, self.active_discussion, track_id=track_id) flat = project_manager.flat_config(self.project, self.active_discussion, track_id=track_id)
flat.setdefault("files", {})["paths"] = self.context_files
persona = self.personas.get(self.ui_active_persona) persona = self.personas.get(self.ui_active_persona)
strategy = persona.aggregation_strategy if persona else "auto" strategy = persona.aggregation_strategy if persona else "auto"
@@ -3111,6 +3112,7 @@ class AppController:
history = orchestrator_pm.get_track_history_summary() history = orchestrator_pm.get_track_history_summary()
proj = project_manager.load_project(self.active_project_path) proj = project_manager.load_project(self.active_project_path)
flat = project_manager.flat_config(self.project) flat = project_manager.flat_config(self.project)
flat.setdefault("files", {})["paths"] = self.context_files
file_items = aggregate.build_file_items(Path(self.active_project_root), flat.get("files", {}).get("paths", [])) file_items = aggregate.build_file_items(Path(self.active_project_root), flat.get("files", {}).get("paths", []))
_t1_baseline = len(ai_client.get_comms_log()) _t1_baseline = len(ai_client.get_comms_log())
@@ -3508,4 +3510,4 @@ class AppController:
if self.active_track: if self.active_track:
self.active_tickets = [asdict(t) if not isinstance(t, dict) else t for t in self.active_track.tickets] self.active_tickets = [asdict(t) if not isinstance(t, dict) else t for t in self.active_track.tickets]
else: else:
self.active_tickets = []] self.active_tickets = []