role = "tier3-worker" docs = ["conductor/workflow.md"] prompt = """ Implement Task 1.1 in @gui_2.py: replace the single "Strategy (Tier 1)" text box in _render_mma_dashboard with four collapsible tier stream sections. CURRENT CODE to replace (around lines 2728-2732 in gui_2.py): imgui.separator() imgui.separator() imgui.text("Strategy (Tier 1)") strategy_text = self.mma_streams.get("Tier 1", "") imgui.input_text_multiline("##mma_strategy", strategy_text, imgui.ImVec2(-1, 150), imgui.InputTextFlags_.read_only) REPLACE with these four collapsible sections (insert after the token usage table separator, before "# 4. Task DAG Visualizer"): TIER DEFINITIONS: - Tier 1: label="Strategy", stream key="Tier 1" - Tier 2: label="Tech Lead", stream key="Tier 2 (Tech Lead)" - Tier 3: label="Workers", aggregates all mma_streams keys containing "Tier 3" - Tier 4: label="QA", stream key="Tier 4 (QA)" IMPLEMENTATION REQUIREMENTS: 1. For Tier 1, 2, 4 (single stream): if imgui.collapsing_header(f"Tier {N}: {label}"): content = self.mma_streams.get(stream_key, "") imgui.begin_child(f"##tier{N}_scroll", imgui.ImVec2(-1, 200), True) imgui.text_wrapped(content) imgui.end_child() 2. For Tier 3 (aggregated): if imgui.collapsing_header("Tier 3: Workers"): tier3_keys = [k for k in self.mma_streams if "Tier 3" in k] if not tier3_keys: imgui.text_disabled("No worker output yet.") else: for key in tier3_keys: ticket_id = key.split(": ", 1)[-1] if ": " in key else key imgui.text(ticket_id) # sub-header imgui.begin_child(f"##tier3_{ticket_id}_scroll", imgui.ImVec2(-1, 150), True) imgui.text_wrapped(self.mma_streams[key]) imgui.end_child() 3. Auto-scroll: after imgui.begin_child, if the stream content changed since last frame, call imgui.set_scroll_here_y(1.0). Track last-seen content length in a dict self._tier_stream_last_len: dict[str, int] = {} (init in __init__ if not present). Only scroll if user was at bottom: check imgui.get_scroll_y() >= imgui.get_scroll_max_y() - 10 before deciding to scroll. 4. REMOVE the old lines completely: - imgui.separator() (the second duplicate separator before the old strategy box) - imgui.text("Strategy (Tier 1)") - strategy_text = self.mma_streams.get("Tier 1", "") - imgui.input_text_multiline("##mma_strategy", ...) 5. Also add `self._tier_stream_last_len: dict[str, int] = {}` to __init__ (around line 280, after self.mma_streams = {} line). TESTS that must pass after this change: @tests/test_mma_dashboard_streams.py Use exactly 1-space indentation for Python code. """