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)
if "context_snapshot" in disc_data:
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}"
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["history"] = history_strings
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:
"""
@@ -2661,8 +2661,8 @@ class AppController:
self.ai_status = f"discussion '{name}' already exists"
return
discussions[name] = project_manager.default_discussion()
if self.files:
discussions[name]["context_snapshot"] = [f.to_dict() for f in self.files]
if self.context_files:
discussions[name]["context_snapshot"] = [f.to_dict() for f in self.context_files]
self._switch_discussion(name)
def _branch_discussion(self, index: int) -> None:
@@ -3077,6 +3077,7 @@ class AppController:
models.save_config(self.config)
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.setdefault("files", {})["paths"] = self.context_files
persona = self.personas.get(self.ui_active_persona)
strategy = persona.aggregation_strategy if persona else "auto"
@@ -3111,6 +3112,7 @@ class AppController:
history = orchestrator_pm.get_track_history_summary()
proj = project_manager.load_project(self.active_project_path)
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", []))
_t1_baseline = len(ai_client.get_comms_log())
@@ -3508,4 +3510,4 @@ class AppController:
if self.active_track:
self.active_tickets = [asdict(t) if not isinstance(t, dict) else t for t in self.active_track.tickets]
else:
self.active_tickets = []]
self.active_tickets = []