ive harnessed the harness
Something went wrong. Try again.
2.9 kB · 77 lines
SQL
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778-- New runtime database only. Never apply this migration to the legacy memory DB.BEGIN IMMEDIATE;PRAGMA application_id = 1263288882; -- KLB2PRAGMA user_version = 1;
CREATE TABLE releases ( id TEXT PRIMARY KEY, path TEXT NOT NULL) STRICT;
CREATE TABLE sessions ( id TEXT PRIMARY KEY, state TEXT NOT NULL DEFAULT 'ready' CHECK(state IN ('ready','waiting')), wake_at_ms INTEGER, hook_revision TEXT REFERENCES releases(id), hook_epoch INTEGER NOT NULL DEFAULT 0 CHECK(hook_epoch >= 0), CHECK(state = 'waiting' OR wake_at_ms IS NULL)) STRICT;
CREATE TABLE events ( seq INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL REFERENCES sessions(id), kind TEXT NOT NULL CHECK(kind IN ( 'input','scratchpad','execution.started','execution.completed', 'local.sent','delivery.held','kernel.reset','session.waited', 'session.woke','hooks.activated' )), source_key TEXT, payload TEXT NOT NULL CHECK(json_valid(payload)), created_ms INTEGER NOT NULL CHECK(created_ms >= 0), UNIQUE(session_id, source_key)) STRICT;CREATE INDEX events_session_order ON events(session_id, seq);CREATE TRIGGER events_no_update BEFORE UPDATE ON events BEGIN SELECT RAISE(ABORT, 'historical events are immutable');END;CREATE TRIGGER events_no_delete BEFORE DELETE ON events BEGIN SELECT RAISE(ABORT, 'historical events are immutable');END;
CREATE TABLE inbox ( event_id INTEGER PRIMARY KEY REFERENCES events(seq), status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending','consumed'))) STRICT;
CREATE TABLE executions ( id TEXT PRIMARY KEY, session_id TEXT NOT NULL REFERENCES sessions(id), generation TEXT NOT NULL, hook_revision TEXT NOT NULL REFERENCES releases(id), state TEXT NOT NULL CHECK(state IN ('running','ok','error','yielded','interrupted')), started_event INTEGER NOT NULL UNIQUE REFERENCES events(seq), completed_event INTEGER UNIQUE REFERENCES events(seq)) STRICT;CREATE UNIQUE INDEX one_running_execution ON executions(session_id) WHERE completed_event IS NULL;
CREATE TABLE effects ( id TEXT PRIMARY KEY, execution_id TEXT NOT NULL REFERENCES executions(id), request_id TEXT NOT NULL, text TEXT NOT NULL, status TEXT NOT NULL CHECK(status IN ('proposed','confirmed','held')), event_id INTEGER UNIQUE REFERENCES events(seq), reason TEXT, UNIQUE(execution_id,request_id), CHECK((status = 'confirmed' AND event_id IS NOT NULL AND reason IS NULL) OR (status = 'held' AND event_id IS NULL AND reason IS NOT NULL) OR (status = 'proposed' AND event_id IS NULL AND reason IS NULL))) STRICT;
CREATE TABLE hook_traces ( effect_id TEXT PRIMARY KEY REFERENCES effects(id), revision TEXT NOT NULL REFERENCES releases(id), decision TEXT NOT NULL CHECK(json_valid(decision)), fault TEXT) STRICT;COMMIT;