• feat(web): debug-surface parity — BifrostState + AdminEvents + Tools panes, PAD-poll fix, reasoning indicator

    vh released this 2026-07-01 12:33:11 -07:00 | 170 commits to main since this release

    Bring the browser surface to TUI parity as the primary debug surface:

    • Tools inventory (GET /sessions/{id}/tools) folded into the tools pane —
      what the LLM has at turn-fire, above the live tool events.
    • BifrostState pane (GET /admin/sessions/{id}/bifrost) — admin-scoped
      dispatch state; the admin key stays server-side (app.state.admin_key),
      never reaches the browser (INV-003 precedent).
    • AdminEvents pane (GET /admin/events SSE) — admin lifecycle, session-
      filtered SERVER-side (heartbeats + other-session events dropped); one
      fixed "admin_event" browser event so every type renders (no drops).
    • PAD refresh: poll a window (1.5/3.5/6.5/10.5s) instead of a single 2s
      shot that raced the post-turn-async affect.emit (issue #18 foot-gun).
    • Reasoning indicator: ephemeral " is pondering…" in the transcript
      on thinking deltas, cleared when text begins — clearly non-engine.

    Admin key wired through entrypoint -> create_app. 9 new respx/route tests
    (admin-bearer override, filter unit, SSE stream-filter); 59 web tests pass.
    Live-proven against ratatoskr:sindra (bifrost connected, both caps; 253
    thinking events -> indicator fires; affect emit lands -> PAD poll catches it).

    Downloads