WIP: Regression hell
This commit is contained in:
@@ -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", ""),
|
||||
|
||||
Reference in New Issue
Block a user