events: persist to sqlite, survive harness restart
hive_ag3nt::events::Bus replaces its in-memory VecDeque with a sqlite- backed store at /state/hyperhive-events.sqlite (overridable via HYPERHIVE_EVENTS_DB). emit() inserts a row; history() reads back the most recent 2000 events. survives harness restart now — operator reload mid-investigation no longer wipes the trail. vacuum runs hourly (immediate first sweep): drop rows older than 7 days, then trim to 2000 newest. two-stage so a quiet agent keeps a useful tail and a chatty one stays bounded. wired into both hive-ag3nt and hive-m1nd via spawn_events_vacuum. if the db open fails (e.g. no /state mount in dev), Bus runs in no-store mode — events still broadcast, just nothing persisted.
This commit is contained in:
parent
6d52f67292
commit
de09503b59
6 changed files with 170 additions and 23 deletions
8
TODO.md
8
TODO.md
|
|
@ -29,14 +29,6 @@ Pick anything from here when relevant. Cross-cutting design notes live in
|
|||
|
||||
- **Per-agent UI substance.** Show last N inbox messages, last turn timing,
|
||||
link back to dashboard.
|
||||
- **Delivered events history persistence.** The `events::Bus` ring
|
||||
buffer (500 events, in-memory) backfills the terminal on page load
|
||||
but dies on harness restart, and only ever holds the most recent
|
||||
turn or two. Persist to sqlite (`events(agent, id, ts, kind,
|
||||
payload_json)`) so the operator can scroll back through prior
|
||||
turns, and so `/events/history` survives restart. Cap rows per
|
||||
agent or auto-vacuum on age, same trade-off as the bounded broker
|
||||
entry below.
|
||||
- **State badge: compacting + napping states.** Idle/thinking already
|
||||
ship (driven from SSE turn_start/turn_end). Add `compacting 📦` and
|
||||
`napping 😴` once the `/compact` trigger and `nap` tool exist —
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue