feat(gui): implement Phases 2-5 of Comprehensive GUI UX track

- Add cost tracking with new cost_tracker.py module
- Enhance Track Proposal modal with editable titles and goals
- Add Conductor Setup summary and New Track creation form to MMA Dashboard
- Implement Task DAG editing (add/delete tickets) and track-scoped discussion
- Add visual polish: color-coded statuses, tinted progress bars, and node indicators
- Support live worker streaming from AI providers to GUI panels
- Fix numerous integration test regressions and stabilize headless service
This commit is contained in:
2026-03-01 20:17:31 -05:00
parent 2ce7a87069
commit d1ce0eaaeb
27 changed files with 1763 additions and 254 deletions

View File

@@ -75,11 +75,12 @@ class GeminiCliAdapter:
if msg_type == "init":
if "session_id" in data:
self.session_id = data.get("session_id")
elif msg_type == "message":
elif msg_type == "message" or msg_type == "chunk":
# CRITICAL: Only accumulate content from the assistant/model role.
# The CLI echoes back the 'user' prompt in the stream, which we must skip.
role = data.get("role", "")
if role in ["assistant", "model"]:
# Chunks usually don't have role, so we assume assistant if missing
if role in ["assistant", "model"] or not role:
content = data.get("content", data.get("text"))
if content:
accumulated_text += content