• feat(#2): BifrostState pane — GET /admin/sessions/{id}/bifrost (admin-key)

    vh released this 2026-06-30 23:12:29 -07:00 | 175 commits to main since this release

    v1 coverage-audit: the last unbuilt design-brief §5 debug widget. First
    admin-key consumer in ratatoskr.

    • sessions.py: get_session_bifrost(client, session_id, *, admin_key) —
      admin-scoped (admin.sessions.read); the request overrides Authorization
      with admin_key (distinct from the consumer bearer). 200 -> dict, non-200
      -> SessionApiFailed (403 scope-denied, 404 not-bound).
    • cli.py: --admin-key flag + RATATOSKR_ADMIN_API_KEY env -> ParsedArgs.admin_key.
    • tui.py: new "Bifrost" TabPane + _format_bifrost_state + _hydrate_bifrost_state
      best-effort worker (unconditional on_mount). Writes {endpoint, connected,
      caps, tools} + audits; self-labels "not configured" / "not bound" / graceful
      on 403+error, never crashes.
    • Contract #2 amended (FN, incl. the bearer-override POST) + validated. TDD:
      4 wrapper tests + 1 format unit + 3 hydrate integration. Suite 552 green.
    • LIVE-AUTH-PROVEN on :8081 (admin key reached resource-layer 404, not 401/403).

    Ledger correction: #11 (AdminEvents) is NO LONGER BLOCKED — the admin key
    was verified to carry admin.events.read; only the pane is unbuilt. Coverage:
    REST 11/40.

    Downloads