Add SSDL-style docstrings to MMA Orchestrator Panel group functions
This commit is contained in:
@@ -5890,6 +5890,12 @@ def render_heavy_text(app: App, label: str, content: str, id_suffix: str = "") -
|
||||
def render_mma_dashboard(app: App) -> None:
|
||||
"""
|
||||
Main MMA dashboard interface.
|
||||
|
||||
State Mutations:
|
||||
None directly.
|
||||
|
||||
SSDL Shape:
|
||||
`[I:focus_selector] -> [I:track_summary] -> [B:epic_planner] -> [I:track_browser] -> [B:global_controls] -> [I:usage_analytics] -> [I:ticket_queue] -> [I:task_dag] => [I:agent_streams]`
|
||||
"""
|
||||
if app.perf_profiling_enabled: app.perf_monitor.start_component("_render_mma_dashboard")
|
||||
render_mma_focus_selector(app)
|
||||
@@ -6024,6 +6030,15 @@ def render_mma_track_summary(app: App) -> None:
|
||||
imgui.text_colored(C_LBL(), "ETA:"); imgui.same_line(); imgui.text_colored(C_VAL(), f"~{int(eta_mins)}m ({remaining} tickets remaining)")
|
||||
|
||||
def render_mma_epic_planner(app: App) -> None:
|
||||
"""
|
||||
Renders the Epic Planning panel for Tier 1 strategy input and planning button.
|
||||
|
||||
State Mutations:
|
||||
app.ui_epic_input (text input)
|
||||
|
||||
SSDL Shape:
|
||||
`[I:input_textbox] => [B:plan_button]`
|
||||
"""
|
||||
imgui.text_colored(C_LBL(), 'Epic Planning (Tier 1)')
|
||||
_, app.ui_epic_input = imgui.input_text_multiline('##epic_input', app.ui_epic_input, imgui.ImVec2(-1, 80))
|
||||
if imgui.button('Plan Epic (Tier 1)', imgui.ImVec2(-1, 0)): app._cb_plan_epic()
|
||||
@@ -6130,6 +6145,17 @@ def render_mma_usage_section(app: App) -> None:
|
||||
imgui.pop_item_width()
|
||||
|
||||
def render_mma_ticket_editor(app: App) -> None:
|
||||
"""
|
||||
Renders the ticket detail editor panel, letting the user modify priority, target,
|
||||
and persona override, mark a ticket complete, or delete it.
|
||||
|
||||
State Mutations:
|
||||
app.active_tickets (modifies status/priority/override fields via app._push_mma_state_update)
|
||||
app.ui_selected_ticket_id
|
||||
|
||||
SSDL Shape:
|
||||
`[I:ticket_details] -> [B:combo_selectors] => [B:action_buttons]`
|
||||
"""
|
||||
imgui.separator(); imgui.text_colored(C_VAL(), f"Editing: {app.ui_selected_ticket_id}")
|
||||
ticket = next((t for t in app.active_tickets if str(t.get('id', '')) == app.ui_selected_ticket_id), None)
|
||||
if ticket:
|
||||
@@ -6150,6 +6176,15 @@ def render_mma_ticket_editor(app: App) -> None:
|
||||
if imgui.button(f"Delete##{app.ui_selected_ticket_id}"): app.active_tickets = [t for t in app.active_tickets if str(t.get('id', '')) != app.ui_selected_ticket_id]; app.ui_selected_ticket_id = None; app._push_mma_state_update()
|
||||
|
||||
def render_mma_agent_streams(app: App) -> None:
|
||||
"""
|
||||
Renders the agent execution stream panels in a tabbed view for Tier 1, 2, 3, and 4.
|
||||
|
||||
State Mutations:
|
||||
app.show_windows (toggles pop-out sub-windows)
|
||||
|
||||
SSDL Shape:
|
||||
`[I] -> [B:tab_bar] => [I:stream_panels]`
|
||||
"""
|
||||
imgui.text("Agent Streams")
|
||||
if imgui.begin_tab_bar("mma_streams_tabs"):
|
||||
for tier, label, sep_flag_attr in [("Tier 1", "Tier 1", "ui_separate_tier1"), ("Tier 2", "Tier 2 (Tech Lead)", "ui_separate_tier2"), ("Tier 3", None, "ui_separate_tier3"), ("Tier 4", "Tier 4 (QA)", "ui_separate_tier4")]:
|
||||
@@ -6371,6 +6406,17 @@ def render_ticket_queue(app: App) -> None:
|
||||
imgui.end_table()
|
||||
|
||||
def render_task_dag_panel(app: App) -> None: # 4. Task DAG Visualizer
|
||||
"""
|
||||
Renders the interactive node editor DAG visualizer, mapping ticket relationships
|
||||
and allowing creation or deletion of links.
|
||||
|
||||
State Mutations:
|
||||
app.ui_selected_ticket_id (node selection)
|
||||
app.active_tickets (updates dependency lists on link creation or deletion)
|
||||
|
||||
SSDL Shape:
|
||||
`[I:task_nodes] -> [B:node_editor_canvas] => [I:link_connections]`
|
||||
"""
|
||||
imgui.text("Task DAG")
|
||||
if (app.active_track or app.active_tickets) and app.node_editor_ctx:
|
||||
ed.set_current_editor(app.node_editor_ctx)
|
||||
|
||||
Reference in New Issue
Block a user