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:
müde 2026-05-15 19:42:57 +02:00
parent 6d52f67292
commit de09503b59
6 changed files with 170 additions and 23 deletions

1
Cargo.lock generated
View file

@ -453,6 +453,7 @@ dependencies = [
"clap",
"hive-sh4re",
"rmcp",
"rusqlite",
"schemars",
"serde",
"serde_json",