docs: turn_stats sink + event-driven agent badges + dashboard event vocabulary
This commit is contained in:
parent
e772182724
commit
d890509be3
3 changed files with 171 additions and 30 deletions
43
CLAUDE.md
43
CLAUDE.md
|
|
@ -45,9 +45,19 @@ hive-c0re/ host daemon + CLI (one binary, subcommand-dispatched)
|
|||
src/crash_watch.rs poll every 10s; fire HelperEvent::ContainerCrash
|
||||
when a previously-running container disappears
|
||||
without an operator-initiated transient
|
||||
src/container_view.rs ContainerView struct + build_all helper;
|
||||
shared between dashboard.rs (cold-load via
|
||||
/api/state) and coordinator.rs's
|
||||
rescan_containers_and_emit
|
||||
src/coordinator.rs shared state (broker/approvals/operator_questions/
|
||||
transient/sockets) + tombstone enumeration +
|
||||
kick_agent + notify_agent (helper-event push)
|
||||
kick_agent + notify_agent (helper-event push) +
|
||||
last_containers cache + rescan_and_emit diff helper
|
||||
src/open_threads.rs loose-ends aggregator (pending approvals +
|
||||
unanswered questions) — for_agent (filtered) and
|
||||
hive_wide (manager surface). Backs
|
||||
AgentRequest::GetOpenThreads + ManagerRequest::
|
||||
GetOpenThreads (the get_open_threads MCP tool).
|
||||
src/actions.rs approve/deny/destroy (transient-aware)
|
||||
src/auto_update.rs startup rebuild scan + ensure_manager +
|
||||
meta::lock_update_hyperhive bump
|
||||
|
|
@ -85,6 +95,9 @@ hive-ag3nt/ in-container harness crate; produces TWO binaries
|
|||
src/client.rs generic JSON-line request/response over unix socket
|
||||
src/web_ui.rs per-container axum HTTP page (incl /api/cancel,
|
||||
/api/compact, /api/model, /events/history)
|
||||
src/turn_stats.rs per-turn analytics sink (one sqlite row per
|
||||
turn at /state/hyperhive-turn-stats.sqlite);
|
||||
schema + best-effort writer
|
||||
src/events.rs LiveEvent + broadcast Bus + sqlite-backed history
|
||||
(/state/hyperhive-events.sqlite) + TurnState +
|
||||
model selection (persisted at /state/hyperhive-model)
|
||||
|
|
@ -193,6 +206,34 @@ Prune freely.
|
|||
domain tooling — the agent flake's `inputs` block pulls
|
||||
the external flake, `agent.nix` references it via
|
||||
`flakeInputs.<name>.packages.${pkgs.system}.default`.
|
||||
- **Just landed:** per-turn analytics sink. New
|
||||
`hive-ag3nt::turn_stats` writes one row per claude turn to
|
||||
`/state/hyperhive-turn-stats.sqlite`: identity (model,
|
||||
wake_from, result_kind), timing (started/ended_at,
|
||||
duration_ms), cost (full token-usage breakdown), behaviour
|
||||
(tool_call_count + per-tool JSON map), and post-turn snapshot
|
||||
metrics (open_threads_count, open_reminders_count fetched via
|
||||
the existing GetOpenThreads + new CountPendingReminders RPC).
|
||||
Both ag3nt + m1nd bin loops capture, both Bus accumulates
|
||||
tool_use blocks via observe_stream during the stdout pump.
|
||||
Writes are best-effort. No host-side vacuum yet — TODO under
|
||||
Telemetry; same shape as events_vacuum, target 90d retention.
|
||||
- **Just landed:** agent web UI event-driven badges. New
|
||||
`LiveEvent::StatusChanged / ModelChanged / TokenUsageChanged
|
||||
/ TurnStateChanged` variants replace the per-agent page's
|
||||
/api/state polling for the state row. Status/model/token/state
|
||||
badges all update from SSE; /api/state only fetched on cold
|
||||
load + during the login flow (session output isn't event-
|
||||
shaped). Per-agent endpoints (`/api/cancel|compact|model|
|
||||
new-session`, `/login/*`) all flip 303→200. New `alive-badge`
|
||||
chip carries the harness reachability signal (replaces the
|
||||
"● harness alive" paragraph); new `ctx-badge` mirrors Claude
|
||||
Code's bottom-right "N tokens" indicator. Every chip carries
|
||||
a `title=...` tooltip for hover detail.
|
||||
- **Just landed:** events_vacuum simplified to age-only —
|
||||
`KEEP_SECS = 7d`, no row cap. Chatty turn no longer evicts
|
||||
a quiet day's history sooner than expected. Hourly sweep
|
||||
unchanged.
|
||||
- **Just landed:** Phase 6 container events. New
|
||||
`DashboardEvent::ContainerStateChanged { container }` +
|
||||
`ContainerRemoved { name }` close the last refetch loop on the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue