Turn the read-only status page into an auto-updating visual map of the agent-team DAG (INTAKE -> CLARIFY <-> gate -> PLAN <-> REVIEW -> [BUILD -> VERIFY -> DISPATCH] -> DONE), rendered as hand-rolled inline SVG (no CDN/D3 — the R720 is offline/LAN-only). - Stage model (STAGES) with per-node model/agent role labels (Claude/ GPT-4.1/Gemini/DeepSeek/Slack owner) and gated/role-node flags. - Per-stage live state (idle/active/awaiting-human/parked) + count badge, grouped by current_phase; awaiting-human = OPEN pending_question. - GET /api/state JSON sidecar (snapshot_to_dict); inline vanilla-JS poller fetches it every 4s and repaints node states/counts/cards/clock/tooltip in place (no reload, hover/scroll survive). <noscript> meta-refresh fallback retained. - Hover/focus tooltip per node: short_id, description, status, waiting age. - Existing table view kept as a detail section below the map. - Read-only (mode=ro), fail-safe, no secrets; descriptions escaped for both HTML and the JSON-in-script seed (< / > -> \uXXXX), DOM via textContent. |
||
|---|---|---|
| .. | ||
| db | ||
| nodes | ||
| transport | ||
| __init__.py | ||
| api.py | ||
| billing.py | ||
| ci_fetcher.py | ||
| ci_gate.py | ||
| coordinator.py | ||
| deadline_timer.py | ||
| dispatcher.py | ||
| graph.py | ||
| invoker.py | ||
| invoker_multi.py | ||
| ledger.py | ||
| operator_cli.py | ||
| recovery.py | ||
| responder.py | ||
| resume_worker.py | ||
| state_store.py | ||
| status_page.py | ||
| task_model.py | ||