WIP: Regression hell

This commit is contained in:
2026-03-06 21:22:21 -05:00
parent 528f0a04c3
commit f65e9b40b2
14 changed files with 359 additions and 97 deletions

View File

@@ -361,12 +361,16 @@ class AppController:
def _process_pending_gui_tasks(self) -> None:
if not self._pending_gui_tasks:
return
sys.stderr.write(f"[DEBUG] _process_pending_gui_tasks: processing {len(self._pending_gui_tasks)} tasks\n")
sys.stderr.flush()
with self._pending_gui_tasks_lock:
tasks = self._pending_gui_tasks[:]
self._pending_gui_tasks.clear()
for task in tasks:
try:
action = task.get("action")
sys.stderr.write(f"[DEBUG] Processing GUI task: action={action}\n")
sys.stderr.flush()
if action:
session_logger.log_api_hook("PROCESS_TASK", action, str(task))
# ...
@@ -428,14 +432,18 @@ class AppController:
self._show_track_proposal_modal = True
elif action == "mma_state_update":
# Handle both internal (nested) and hook-server (flattened) payloads
payload = task.get("payload")
if not isinstance(payload, dict):
payload = task # Fallback to task if payload missing or wrong type
self.mma_status = payload.get("status", "idle")
self.active_tier = payload.get("active_tier")
p = task.get("payload")
if not isinstance(p, dict):
p = task # Fallback to task itself if payload is missing or wrong type
sys.stderr.write(f"[DEBUG] mma_state_update: status={p.get('status')} active_tier={p.get('active_tier')}\n")
sys.stderr.flush()
self.mma_status = p.get("status", self.mma_status)
self.active_tier = p.get("active_tier", self.active_tier)
# Preserve existing model/provider config if not explicitly in payload
new_usage = payload.get("tier_usage", {})
new_usage = p.get("tier_usage", {})
for tier, data in new_usage.items():
if tier in self.mma_tier_usage:
# Update usage counts but keep selected model/provider if not in update
@@ -446,12 +454,18 @@ class AppController:
else:
self.mma_tier_usage[tier] = data
self.active_tickets = payload.get("tickets", [])
track_data = payload.get("track")
self.active_tickets = p.get("tickets", [])
track_data = p.get("track")
if track_data:
tickets = []
for t_data in self.active_tickets:
tickets.append(models.Ticket(**t_data))
if isinstance(t_data, models.Ticket):
tickets.append(t_data)
else:
# Map 'goal' from Godot format to 'description' if needed
if "goal" in t_data and "description" not in t_data:
t_data["description"] = t_data["goal"]
tickets.append(models.Ticket.from_dict(t_data))
self.active_track = models.Track(
id=track_data.get("id"),
description=track_data.get("title", ""),