@schlessera/brain-ui-server 0.34.0 → 0.34.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,34 @@
1
+ /** SQL owned by the activity store, kept together so the store reads as operations. */
2
+ export declare const ACTIVITY_SQL: {
3
+ readonly nextSeq: "SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?";
4
+ readonly insertChange: "INSERT INTO activity_changes (run_id, seq, span_id, event_index) VALUES (?, ?, ?, ?)";
5
+ readonly spanById: "SELECT * FROM activity_spans WHERE span_id = ?";
6
+ readonly spanStateById: "SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?";
7
+ readonly endSpan: "UPDATE activity_spans SET outcome = ?, outcome_reason = ?, ended_at = ?, attrs = ?,\n input_tokens = COALESCE(?, input_tokens),\n output_tokens = COALESCE(?, output_tokens),\n cache_read_tokens = COALESCE(?, cache_read_tokens),\n cache_creation_tokens = COALESCE(?, cache_creation_tokens),\n cost_usd = COALESCE(?, cost_usd),\n model = COALESCE(?, model)\n WHERE span_id = ?";
8
+ readonly openSpansByRun: "SELECT span_id FROM activity_spans WHERE run_id = ? AND outcome IS NULL ORDER BY started_at DESC";
9
+ readonly spansByRun: "SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at";
10
+ readonly upsertRollup: "INSERT INTO activity_run_rollups\n (run_id, origin, name, session_id, job_name, started_at, ended_at, outcome,\n duration_ms, span_count, input_tokens, output_tokens, cache_read_tokens,\n cache_creation_tokens, cost_usd, effective_cost_usd, billing_mode,\n pricing_estimate, failure_reason, detail_pruned)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)\n ON CONFLICT(run_id) DO UPDATE SET\n ended_at = excluded.ended_at, outcome = excluded.outcome,\n duration_ms = excluded.duration_ms, span_count = excluded.span_count,\n input_tokens = excluded.input_tokens, output_tokens = excluded.output_tokens,\n cache_read_tokens = excluded.cache_read_tokens,\n cache_creation_tokens = excluded.cache_creation_tokens,\n cost_usd = COALESCE(activity_run_rollups.cost_usd, excluded.cost_usd),\n effective_cost_usd = CASE\n WHEN activity_run_rollups.effective_cost_usd IS NOT NULL\n THEN activity_run_rollups.effective_cost_usd\n WHEN activity_run_rollups.billing_mode IS NULL\n OR activity_run_rollups.billing_mode = excluded.billing_mode\n THEN excluded.effective_cost_usd\n ELSE NULL\n END,\n billing_mode = COALESCE(activity_run_rollups.billing_mode, excluded.billing_mode),\n pricing_estimate = CASE\n WHEN activity_run_rollups.pricing_estimate IS NOT NULL\n THEN activity_run_rollups.pricing_estimate\n WHEN activity_run_rollups.billing_mode IS NULL\n OR activity_run_rollups.billing_mode = excluded.billing_mode\n THEN excluded.pricing_estimate\n ELSE NULL\n END,\n failure_reason = excluded.failure_reason";
11
+ readonly insertSpan: "INSERT INTO activity_spans\n (span_id, run_id, parent_span_id, name, kind, origin, session_id, job_name,\n attrs, started_at, writer, last_heartbeat_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
12
+ readonly patchSpan: "UPDATE activity_spans SET attrs = ?, wait_until = COALESCE(?, wait_until),\n input_tokens = COALESCE(?, input_tokens),\n output_tokens = COALESCE(?, output_tokens),\n cache_read_tokens = COALESCE(?, cache_read_tokens),\n cache_creation_tokens = COALESCE(?, cache_creation_tokens),\n cost_usd = COALESCE(?, cost_usd),\n model = COALESCE(?, model)\n WHERE span_id = ?";
13
+ readonly spanRunById: "SELECT run_id FROM activity_spans WHERE span_id = ?";
14
+ readonly nextEventIndex: "SELECT COALESCE(MAX(event_index), -1) + 1 AS idx FROM activity_events WHERE span_id = ?";
15
+ readonly insertEvent: "INSERT INTO activity_events (span_id, event_index, ts, event_type, payload) VALUES (?, ?, ?, ?, ?)";
16
+ readonly heartbeat: "UPDATE activity_spans SET last_heartbeat_at = ? WHERE span_id = ? AND outcome IS NULL";
17
+ readonly openSessionRuns: "SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL AND origin = 'session'";
18
+ readonly staleRoots: "SELECT span_id, run_id FROM activity_spans\n WHERE outcome IS NULL AND parent_span_id IS NULL\n AND writer != ? AND COALESCE(last_heartbeat_at, started_at) < ?";
19
+ readonly stuckRoots: "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL AND started_at < ?";
20
+ readonly spanChanges: "SELECT c.change_id, c.run_id, c.seq, s.*\n FROM activity_changes c\n JOIN activity_spans s ON s.span_id = c.span_id\n WHERE c.change_id > ? AND c.event_index IS NULL\n ORDER BY c.change_id LIMIT ?";
21
+ readonly eventChanges: "SELECT c.change_id, c.run_id, c.seq, e.*\n FROM activity_changes c\n JOIN activity_events e\n ON e.span_id = c.span_id AND e.event_index = c.event_index\n WHERE c.change_id > ? AND c.event_index IS NOT NULL\n ORDER BY c.change_id LIMIT ?";
22
+ readonly terminalRootChanges: "SELECT MAX(c.change_id) AS change_id, s.*\n FROM activity_changes c\n JOIN activity_spans s ON s.span_id = c.span_id\n WHERE c.change_id > ? AND c.event_index IS NULL\n AND s.parent_span_id IS NULL AND s.outcome IS NOT NULL\n GROUP BY s.span_id\n ORDER BY change_id LIMIT ?";
23
+ readonly latestChangeCursor: "SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes";
24
+ readonly eventsByRun: "SELECT e.* FROM activity_events e\n JOIN activity_spans s ON s.span_id = e.span_id\n WHERE s.run_id = ? ORDER BY e.ts, e.event_index";
25
+ readonly openRootSpans: "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL ORDER BY started_at DESC";
26
+ readonly pruneCandidates: "SELECT run_id, ended_at AS ended FROM activity_run_rollups r\n WHERE detail_pruned = 0 AND ended_at IS NOT NULL\n AND ((ended_at < ? AND ended_at < ?) OR ended_at < ?)\n AND NOT EXISTS (\n SELECT 1 FROM activity_spans s\n WHERE s.run_id = r.run_id AND s.outcome IS NULL\n )\n LIMIT ?";
27
+ readonly markDetailPruned: "UPDATE activity_run_rollups SET detail_pruned = 1 WHERE run_id = ?";
28
+ readonly markDigestCoverageGap: "UPDATE activity_run_rollups SET failure_reason = COALESCE(failure_reason, 'digest coverage gap') WHERE run_id = ?";
29
+ readonly deleteEventsByRun: "DELETE FROM activity_events WHERE span_id IN\n (SELECT span_id FROM activity_spans WHERE run_id = ?)";
30
+ readonly deleteSpansByRun: "DELETE FROM activity_spans WHERE run_id = ?";
31
+ readonly deleteChangesByRun: "DELETE FROM activity_changes WHERE run_id = ?";
32
+ readonly compactChanges: "DELETE FROM activity_changes WHERE change_id < (\n SELECT COALESCE(MAX(change_id), 0) FROM activity_changes\n ) - 100000 AND run_id NOT IN (\n SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL\n )";
33
+ };
34
+ //# sourceMappingURL=sql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/activity/sql.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsHf,CAAC"}
@@ -0,0 +1,112 @@
1
+ /** SQL owned by the activity store, kept together so the store reads as operations. */
2
+ export const ACTIVITY_SQL = {
3
+ nextSeq: "SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?",
4
+ insertChange: "INSERT INTO activity_changes (run_id, seq, span_id, event_index) VALUES (?, ?, ?, ?)",
5
+ spanById: "SELECT * FROM activity_spans WHERE span_id = ?",
6
+ spanStateById: "SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?",
7
+ endSpan: `UPDATE activity_spans SET outcome = ?, outcome_reason = ?, ended_at = ?, attrs = ?,
8
+ input_tokens = COALESCE(?, input_tokens),
9
+ output_tokens = COALESCE(?, output_tokens),
10
+ cache_read_tokens = COALESCE(?, cache_read_tokens),
11
+ cache_creation_tokens = COALESCE(?, cache_creation_tokens),
12
+ cost_usd = COALESCE(?, cost_usd),
13
+ model = COALESCE(?, model)
14
+ WHERE span_id = ?`,
15
+ openSpansByRun: "SELECT span_id FROM activity_spans WHERE run_id = ? AND outcome IS NULL ORDER BY started_at DESC",
16
+ spansByRun: "SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at",
17
+ upsertRollup: `INSERT INTO activity_run_rollups
18
+ (run_id, origin, name, session_id, job_name, started_at, ended_at, outcome,
19
+ duration_ms, span_count, input_tokens, output_tokens, cache_read_tokens,
20
+ cache_creation_tokens, cost_usd, effective_cost_usd, billing_mode,
21
+ pricing_estimate, failure_reason, detail_pruned)
22
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
23
+ ON CONFLICT(run_id) DO UPDATE SET
24
+ ended_at = excluded.ended_at, outcome = excluded.outcome,
25
+ duration_ms = excluded.duration_ms, span_count = excluded.span_count,
26
+ input_tokens = excluded.input_tokens, output_tokens = excluded.output_tokens,
27
+ cache_read_tokens = excluded.cache_read_tokens,
28
+ cache_creation_tokens = excluded.cache_creation_tokens,
29
+ cost_usd = COALESCE(activity_run_rollups.cost_usd, excluded.cost_usd),
30
+ effective_cost_usd = CASE
31
+ WHEN activity_run_rollups.effective_cost_usd IS NOT NULL
32
+ THEN activity_run_rollups.effective_cost_usd
33
+ WHEN activity_run_rollups.billing_mode IS NULL
34
+ OR activity_run_rollups.billing_mode = excluded.billing_mode
35
+ THEN excluded.effective_cost_usd
36
+ ELSE NULL
37
+ END,
38
+ billing_mode = COALESCE(activity_run_rollups.billing_mode, excluded.billing_mode),
39
+ pricing_estimate = CASE
40
+ WHEN activity_run_rollups.pricing_estimate IS NOT NULL
41
+ THEN activity_run_rollups.pricing_estimate
42
+ WHEN activity_run_rollups.billing_mode IS NULL
43
+ OR activity_run_rollups.billing_mode = excluded.billing_mode
44
+ THEN excluded.pricing_estimate
45
+ ELSE NULL
46
+ END,
47
+ failure_reason = excluded.failure_reason`,
48
+ insertSpan: `INSERT INTO activity_spans
49
+ (span_id, run_id, parent_span_id, name, kind, origin, session_id, job_name,
50
+ attrs, started_at, writer, last_heartbeat_at)
51
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
52
+ patchSpan: `UPDATE activity_spans SET attrs = ?, wait_until = COALESCE(?, wait_until),
53
+ input_tokens = COALESCE(?, input_tokens),
54
+ output_tokens = COALESCE(?, output_tokens),
55
+ cache_read_tokens = COALESCE(?, cache_read_tokens),
56
+ cache_creation_tokens = COALESCE(?, cache_creation_tokens),
57
+ cost_usd = COALESCE(?, cost_usd),
58
+ model = COALESCE(?, model)
59
+ WHERE span_id = ?`,
60
+ spanRunById: "SELECT run_id FROM activity_spans WHERE span_id = ?",
61
+ nextEventIndex: "SELECT COALESCE(MAX(event_index), -1) + 1 AS idx FROM activity_events WHERE span_id = ?",
62
+ insertEvent: "INSERT INTO activity_events (span_id, event_index, ts, event_type, payload) VALUES (?, ?, ?, ?, ?)",
63
+ heartbeat: "UPDATE activity_spans SET last_heartbeat_at = ? WHERE span_id = ? AND outcome IS NULL",
64
+ openSessionRuns: "SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL AND origin = 'session'",
65
+ staleRoots: `SELECT span_id, run_id FROM activity_spans
66
+ WHERE outcome IS NULL AND parent_span_id IS NULL
67
+ AND writer != ? AND COALESCE(last_heartbeat_at, started_at) < ?`,
68
+ stuckRoots: "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL AND started_at < ?",
69
+ spanChanges: `SELECT c.change_id, c.run_id, c.seq, s.*
70
+ FROM activity_changes c
71
+ JOIN activity_spans s ON s.span_id = c.span_id
72
+ WHERE c.change_id > ? AND c.event_index IS NULL
73
+ ORDER BY c.change_id LIMIT ?`,
74
+ eventChanges: `SELECT c.change_id, c.run_id, c.seq, e.*
75
+ FROM activity_changes c
76
+ JOIN activity_events e
77
+ ON e.span_id = c.span_id AND e.event_index = c.event_index
78
+ WHERE c.change_id > ? AND c.event_index IS NOT NULL
79
+ ORDER BY c.change_id LIMIT ?`,
80
+ terminalRootChanges: `SELECT MAX(c.change_id) AS change_id, s.*
81
+ FROM activity_changes c
82
+ JOIN activity_spans s ON s.span_id = c.span_id
83
+ WHERE c.change_id > ? AND c.event_index IS NULL
84
+ AND s.parent_span_id IS NULL AND s.outcome IS NOT NULL
85
+ GROUP BY s.span_id
86
+ ORDER BY change_id LIMIT ?`,
87
+ latestChangeCursor: "SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes",
88
+ eventsByRun: `SELECT e.* FROM activity_events e
89
+ JOIN activity_spans s ON s.span_id = e.span_id
90
+ WHERE s.run_id = ? ORDER BY e.ts, e.event_index`,
91
+ openRootSpans: "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL ORDER BY started_at DESC",
92
+ pruneCandidates: `SELECT run_id, ended_at AS ended FROM activity_run_rollups r
93
+ WHERE detail_pruned = 0 AND ended_at IS NOT NULL
94
+ AND ((ended_at < ? AND ended_at < ?) OR ended_at < ?)
95
+ AND NOT EXISTS (
96
+ SELECT 1 FROM activity_spans s
97
+ WHERE s.run_id = r.run_id AND s.outcome IS NULL
98
+ )
99
+ LIMIT ?`,
100
+ markDetailPruned: "UPDATE activity_run_rollups SET detail_pruned = 1 WHERE run_id = ?",
101
+ markDigestCoverageGap: "UPDATE activity_run_rollups SET failure_reason = COALESCE(failure_reason, 'digest coverage gap') WHERE run_id = ?",
102
+ deleteEventsByRun: `DELETE FROM activity_events WHERE span_id IN
103
+ (SELECT span_id FROM activity_spans WHERE run_id = ?)`,
104
+ deleteSpansByRun: "DELETE FROM activity_spans WHERE run_id = ?",
105
+ deleteChangesByRun: "DELETE FROM activity_changes WHERE run_id = ?",
106
+ compactChanges: `DELETE FROM activity_changes WHERE change_id < (
107
+ SELECT COALESCE(MAX(change_id), 0) FROM activity_changes
108
+ ) - 100000 AND run_id NOT IN (
109
+ SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL
110
+ )`,
111
+ };
112
+ //# sourceMappingURL=sql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/activity/sql.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,OAAO,EAAE,2EAA2E;IACpF,YAAY,EACV,sFAAsF;IACxF,QAAQ,EAAE,gDAAgD;IAC1D,aAAa,EAAE,qEAAqE;IACpF,OAAO,EAAE;;;;;;;yBAOc;IACvB,cAAc,EACZ,kGAAkG;IACpG,UAAU,EAAE,mEAAmE;IAC/E,YAAY,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA8BkC;IAChD,UAAU,EAAE;;;uDAGyC;IACrD,SAAS,EAAE;;;;;;;6BAOgB;IAC3B,WAAW,EAAE,qDAAqD;IAClE,cAAc,EACZ,yFAAyF;IAC3F,WAAW,EACT,oGAAoG;IACtG,SAAS,EACP,uFAAuF;IACzF,eAAe,EACb,yFAAyF;IAC3F,UAAU,EAAE;;6EAE+D;IAC3E,UAAU,EACR,kGAAkG;IACpG,WAAW,EAAE;;;;wCAIyB;IACtC,YAAY,EAAE;;;;;wCAKwB;IACtC,mBAAmB,EAAE;;;;;;sCAMe;IACpC,kBAAkB,EAAE,gEAAgE;IACpF,WAAW,EAAE;;+DAEgD;IAC7D,aAAa,EACX,wGAAwG;IAC1G,eAAe,EAAE;;;;;;;qBAOE;IACnB,gBAAgB,EAAE,oEAAoE;IACtF,qBAAqB,EACnB,mHAAmH;IACrH,iBAAiB,EAAE;qEACgD;IACnE,gBAAgB,EAAE,6CAA6C;IAC/D,kBAAkB,EAAE,+CAA+C;IACnE,cAAc,EAAE;;;;aAIL;CACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/activity/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/activity/store.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { isBillingMode } from "@schlessera/brain-ui-sdk/protocol";
2
2
  import { resolveAmbientBillingMode, resolveStandalonePricingConfig, } from "../config/env.js";
3
3
  import { createModelPricing } from "../pricing/model-pricing.js";
4
+ import { ACTIVITY_SQL } from "./sql.js";
4
5
  export const SPAN_OUTCOMES = [
5
6
  "success",
6
7
  "error",
@@ -69,12 +70,12 @@ export function createActivityStore(db, options = {}) {
69
70
  const inWrite = (fn) => db.transaction(fn).immediate();
70
71
  function nextSeq(runId) {
71
72
  const row = db
72
- .query("SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?")
73
+ .query(ACTIVITY_SQL.nextSeq)
73
74
  .get(runId);
74
75
  return row.hi + 1;
75
76
  }
76
77
  function logChange(runId, seq, spanId, eventIndex) {
77
- db.query("INSERT INTO activity_changes (run_id, seq, span_id, event_index) VALUES (?, ?, ?, ?)").run(runId, seq, spanId, eventIndex ?? null);
78
+ db.query(ACTIVITY_SQL.insertChange).run(runId, seq, spanId, eventIndex ?? null);
78
79
  }
79
80
  function rowToSpan(r) {
80
81
  return {
@@ -116,18 +117,18 @@ export function createActivityStore(db, options = {}) {
116
117
  };
117
118
  }
118
119
  function getSpanRaw(spanId) {
119
- const r = db.query("SELECT * FROM activity_spans WHERE span_id = ?").get(spanId);
120
+ const r = db.query(ACTIVITY_SQL.spanById).get(spanId);
120
121
  return r ? rowToSpan(r) : null;
121
122
  }
122
123
  function runHighWaterSeqRaw(runId) {
123
124
  const row = db
124
- .query("SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?")
125
+ .query(ACTIVITY_SQL.nextSeq)
125
126
  .get(runId);
126
127
  return row.hi;
127
128
  }
128
129
  function endSpanInTx(spanId, input) {
129
130
  const existing = db
130
- .query("SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?")
131
+ .query(ACTIVITY_SQL.spanStateById)
131
132
  .get(spanId);
132
133
  if (!existing || existing.outcome !== null)
133
134
  return false;
@@ -136,21 +137,14 @@ export function createActivityStore(db, options = {}) {
136
137
  ? JSON.stringify({ ...(safeParse(existing.attrs) ?? {}), ...input.attrs })
137
138
  : existing.attrs;
138
139
  const u = input.usage ?? {};
139
- db.query(`UPDATE activity_spans SET outcome = ?, outcome_reason = ?, ended_at = ?, attrs = ?,
140
- input_tokens = COALESCE(?, input_tokens),
141
- output_tokens = COALESCE(?, output_tokens),
142
- cache_read_tokens = COALESCE(?, cache_read_tokens),
143
- cache_creation_tokens = COALESCE(?, cache_creation_tokens),
144
- cost_usd = COALESCE(?, cost_usd),
145
- model = COALESCE(?, model)
146
- WHERE span_id = ?`).run(input.outcome, input.reason ?? null, endedAt, attrs, u.inputTokens ?? null, u.outputTokens ?? null, u.cacheReadTokens ?? null, u.cacheCreationTokens ?? null, u.costUsd ?? null, u.model ?? null, spanId);
140
+ db.query(ACTIVITY_SQL.endSpan).run(input.outcome, input.reason ?? null, endedAt, attrs, u.inputTokens ?? null, u.outputTokens ?? null, u.cacheReadTokens ?? null, u.cacheCreationTokens ?? null, u.costUsd ?? null, u.model ?? null, spanId);
147
141
  logChange(existing.run_id, nextSeq(existing.run_id), spanId);
148
142
  return true;
149
143
  }
150
144
  /** Close every open span of the run (children first) and roll it up. */
151
145
  function closeRunInTx(runId, outcome, reason) {
152
146
  const open = db
153
- .query("SELECT span_id FROM activity_spans WHERE run_id = ? AND outcome IS NULL ORDER BY started_at DESC")
147
+ .query(ACTIVITY_SQL.openSpansByRun)
154
148
  .all(runId);
155
149
  let closed = 0;
156
150
  for (const { span_id } of open) {
@@ -163,7 +157,7 @@ export function createActivityStore(db, options = {}) {
163
157
  }
164
158
  function rollupRunInTx(runId) {
165
159
  const spans = db
166
- .query("SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at")
160
+ .query(ACTIVITY_SQL.spansByRun)
167
161
  .all(runId)
168
162
  .map(rowToSpan);
169
163
  if (spans.length === 0)
@@ -214,37 +208,7 @@ export function createActivityStore(db, options = {}) {
214
208
  ? (priced.estimate ? 1 : 0)
215
209
  : null;
216
210
  const costUsd = root.usage.costUsd ?? priced?.costUsd ?? null;
217
- db.query(`INSERT INTO activity_run_rollups
218
- (run_id, origin, name, session_id, job_name, started_at, ended_at, outcome,
219
- duration_ms, span_count, input_tokens, output_tokens, cache_read_tokens,
220
- cache_creation_tokens, cost_usd, effective_cost_usd, billing_mode,
221
- pricing_estimate, failure_reason, detail_pruned)
222
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
223
- ON CONFLICT(run_id) DO UPDATE SET
224
- ended_at = excluded.ended_at, outcome = excluded.outcome,
225
- duration_ms = excluded.duration_ms, span_count = excluded.span_count,
226
- input_tokens = excluded.input_tokens, output_tokens = excluded.output_tokens,
227
- cache_read_tokens = excluded.cache_read_tokens,
228
- cache_creation_tokens = excluded.cache_creation_tokens,
229
- cost_usd = COALESCE(activity_run_rollups.cost_usd, excluded.cost_usd),
230
- effective_cost_usd = CASE
231
- WHEN activity_run_rollups.effective_cost_usd IS NOT NULL
232
- THEN activity_run_rollups.effective_cost_usd
233
- WHEN activity_run_rollups.billing_mode IS NULL
234
- OR activity_run_rollups.billing_mode = excluded.billing_mode
235
- THEN excluded.effective_cost_usd
236
- ELSE NULL
237
- END,
238
- billing_mode = COALESCE(activity_run_rollups.billing_mode, excluded.billing_mode),
239
- pricing_estimate = CASE
240
- WHEN activity_run_rollups.pricing_estimate IS NOT NULL
241
- THEN activity_run_rollups.pricing_estimate
242
- WHEN activity_run_rollups.billing_mode IS NULL
243
- OR activity_run_rollups.billing_mode = excluded.billing_mode
244
- THEN excluded.pricing_estimate
245
- ELSE NULL
246
- END,
247
- failure_reason = excluded.failure_reason`
211
+ db.query(ACTIVITY_SQL.upsertRollup
248
212
  // Every cost column is FROZEN at first non-NULL write (AE5): a re-rollup
249
213
  // after a pricing refresh must not silently reprice history — only a
250
214
  // still-NULL slot may be filled by a later computation. cost_usd gets
@@ -262,10 +226,7 @@ export function createActivityStore(db, options = {}) {
262
226
  startSpan(input) {
263
227
  return inWrite(() => {
264
228
  const startedAt = input.startedAt ?? Date.now();
265
- db.query(`INSERT INTO activity_spans
266
- (span_id, run_id, parent_span_id, name, kind, origin, session_id, job_name,
267
- attrs, started_at, writer, last_heartbeat_at)
268
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.spanId, input.runId, input.parentSpanId ?? null, input.name, input.kind, input.origin, input.sessionId ?? null, input.jobName ?? null, input.attrs ? JSON.stringify(input.attrs) : null, startedAt, writer, input.parentSpanId ? null : startedAt);
229
+ db.query(ACTIVITY_SQL.insertSpan).run(input.spanId, input.runId, input.parentSpanId ?? null, input.name, input.kind, input.origin, input.sessionId ?? null, input.jobName ?? null, input.attrs ? JSON.stringify(input.attrs) : null, startedAt, writer, input.parentSpanId ? null : startedAt);
269
230
  logChange(input.runId, nextSeq(input.runId), input.spanId);
270
231
  return getSpanRaw(input.spanId);
271
232
  });
@@ -276,7 +237,7 @@ export function createActivityStore(db, options = {}) {
276
237
  patchSpan(spanId, patch) {
277
238
  return inWrite(() => {
278
239
  const existing = db
279
- .query("SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?")
240
+ .query(ACTIVITY_SQL.spanStateById)
280
241
  .get(spanId);
281
242
  if (!existing || existing.outcome !== null)
282
243
  return false;
@@ -284,14 +245,7 @@ export function createActivityStore(db, options = {}) {
284
245
  ? JSON.stringify({ ...(safeParse(existing.attrs) ?? {}), ...patch.attrs })
285
246
  : existing.attrs;
286
247
  const u = patch.usage ?? {};
287
- db.query(`UPDATE activity_spans SET attrs = ?, wait_until = COALESCE(?, wait_until),
288
- input_tokens = COALESCE(?, input_tokens),
289
- output_tokens = COALESCE(?, output_tokens),
290
- cache_read_tokens = COALESCE(?, cache_read_tokens),
291
- cache_creation_tokens = COALESCE(?, cache_creation_tokens),
292
- cost_usd = COALESCE(?, cost_usd),
293
- model = COALESCE(?, model)
294
- WHERE span_id = ?`).run(attrs, patch.waitUntil ?? null, u.inputTokens ?? null, u.outputTokens ?? null, u.cacheReadTokens ?? null, u.cacheCreationTokens ?? null, u.costUsd ?? null, u.model ?? null, spanId);
248
+ db.query(ACTIVITY_SQL.patchSpan).run(attrs, patch.waitUntil ?? null, u.inputTokens ?? null, u.outputTokens ?? null, u.cacheReadTokens ?? null, u.cacheCreationTokens ?? null, u.costUsd ?? null, u.model ?? null, spanId);
295
249
  logChange(existing.run_id, nextSeq(existing.run_id), spanId);
296
250
  return true;
297
251
  });
@@ -299,16 +253,16 @@ export function createActivityStore(db, options = {}) {
299
253
  appendEvent(spanId, eventType, payload, ts, cap) {
300
254
  return inWrite(() => {
301
255
  const span = db
302
- .query("SELECT run_id FROM activity_spans WHERE span_id = ?")
256
+ .query(ACTIVITY_SQL.spanRunById)
303
257
  .get(spanId);
304
258
  if (!span)
305
259
  return null;
306
260
  const next = db
307
- .query("SELECT COALESCE(MAX(event_index), -1) + 1 AS idx FROM activity_events WHERE span_id = ?")
261
+ .query(ACTIVITY_SQL.nextEventIndex)
308
262
  .get(spanId);
309
263
  const stored = capPayload(payload, cap);
310
264
  const at = ts ?? Date.now();
311
- db.query("INSERT INTO activity_events (span_id, event_index, ts, event_type, payload) VALUES (?, ?, ?, ?, ?)").run(spanId, next.idx, at, eventType, JSON.stringify(stored));
265
+ db.query(ACTIVITY_SQL.insertEvent).run(spanId, next.idx, at, eventType, JSON.stringify(stored));
312
266
  logChange(span.run_id, nextSeq(span.run_id), spanId, next.idx);
313
267
  // Built from the values just written — no read-back needed.
314
268
  return {
@@ -325,7 +279,7 @@ export function createActivityStore(db, options = {}) {
325
279
  inWrite(() => {
326
280
  // Deliberately NOT change-logged: a heartbeat is liveness metadata,
327
281
  // not activity the client needs a delta for.
328
- db.query("UPDATE activity_spans SET last_heartbeat_at = ? WHERE span_id = ? AND outcome IS NULL").run(at ?? Date.now(), spanId);
282
+ db.query(ACTIVITY_SQL.heartbeat).run(at ?? Date.now(), spanId);
329
283
  });
330
284
  },
331
285
  cascadeClose(runId, outcome, reason) {
@@ -346,7 +300,7 @@ export function createActivityStore(db, options = {}) {
346
300
  // loop re-checks open-ness inside the transaction (endSpanInTx is
347
301
  // write-once), so a race just skips.
348
302
  const open = db
349
- .query("SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL AND origin = 'session'")
303
+ .query(ACTIVITY_SQL.openSessionRuns)
350
304
  .all();
351
305
  if (open.length === 0)
352
306
  return 0;
@@ -365,9 +319,7 @@ export function createActivityStore(db, options = {}) {
365
319
  // legitimately long, quiet run with a live writer is never killed.
366
320
  // Candidate read outside the write transaction, same as sweepOwnOrphans.
367
321
  const staleRoots = db
368
- .query(`SELECT span_id, run_id FROM activity_spans
369
- WHERE outcome IS NULL AND parent_span_id IS NULL
370
- AND writer != ? AND COALESCE(last_heartbeat_at, started_at) < ?`)
322
+ .query(ACTIVITY_SQL.staleRoots)
371
323
  .all(writer, cutoff);
372
324
  if (staleRoots.length === 0)
373
325
  return 0;
@@ -383,7 +335,7 @@ export function createActivityStore(db, options = {}) {
383
335
  findStuck(thresholdMs, now) {
384
336
  const cutoff = (now ?? Date.now()) - thresholdMs;
385
337
  return db
386
- .query("SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL AND started_at < ?")
338
+ .query(ACTIVITY_SQL.stuckRoots)
387
339
  .all(cutoff).map(rowToSpan);
388
340
  },
389
341
  changesSince(changeCursor, limit = 500) {
@@ -391,19 +343,10 @@ export function createActivityStore(db, options = {}) {
391
343
  // change whose span/event row was pruned drops out via the join, same
392
344
  // as the old per-row miss.
393
345
  const spanRows = db
394
- .query(`SELECT c.change_id, c.run_id, c.seq, s.*
395
- FROM activity_changes c
396
- JOIN activity_spans s ON s.span_id = c.span_id
397
- WHERE c.change_id > ? AND c.event_index IS NULL
398
- ORDER BY c.change_id LIMIT ?`)
346
+ .query(ACTIVITY_SQL.spanChanges)
399
347
  .all(changeCursor, limit);
400
348
  const eventRows = db
401
- .query(`SELECT c.change_id, c.run_id, c.seq, e.*
402
- FROM activity_changes c
403
- JOIN activity_events e
404
- ON e.span_id = c.span_id AND e.event_index = c.event_index
405
- WHERE c.change_id > ? AND c.event_index IS NOT NULL
406
- ORDER BY c.change_id LIMIT ?`)
349
+ .query(ACTIVITY_SQL.eventChanges)
407
350
  .all(changeCursor, limit);
408
351
  const changes = [
409
352
  ...spanRows.map((r) => ({
@@ -426,19 +369,13 @@ export function createActivityStore(db, options = {}) {
426
369
  },
427
370
  terminalRootChangesSince(changeCursor, limit = 500) {
428
371
  const rows = db
429
- .query(`SELECT MAX(c.change_id) AS change_id, s.*
430
- FROM activity_changes c
431
- JOIN activity_spans s ON s.span_id = c.span_id
432
- WHERE c.change_id > ? AND c.event_index IS NULL
433
- AND s.parent_span_id IS NULL AND s.outcome IS NOT NULL
434
- GROUP BY s.span_id
435
- ORDER BY change_id LIMIT ?`)
372
+ .query(ACTIVITY_SQL.terminalRootChanges)
436
373
  .all(changeCursor, limit);
437
374
  return rows.map((r) => ({ changeId: r.change_id, span: rowToSpan(r) }));
438
375
  },
439
376
  latestChangeCursor() {
440
377
  const row = db
441
- .query("SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes")
378
+ .query(ACTIVITY_SQL.latestChangeCursor)
442
379
  .get();
443
380
  return row.hi;
444
381
  },
@@ -448,17 +385,15 @@ export function createActivityStore(db, options = {}) {
448
385
  // exactly this moment (no gap between snapshot and first delta).
449
386
  return db.transaction(() => {
450
387
  const spans = db
451
- .query("SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at")
388
+ .query(ACTIVITY_SQL.spansByRun)
452
389
  .all(runId).map(rowToSpan);
453
390
  if (spans.length === 0)
454
391
  return null;
455
392
  const events = db
456
- .query(`SELECT e.* FROM activity_events e
457
- JOIN activity_spans s ON s.span_id = e.span_id
458
- WHERE s.run_id = ? ORDER BY e.ts, e.event_index`)
393
+ .query(ACTIVITY_SQL.eventsByRun)
459
394
  .all(runId).map(rowToEvent);
460
395
  const cursor = db
461
- .query("SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes")
396
+ .query(ACTIVITY_SQL.latestChangeCursor)
462
397
  .get();
463
398
  return {
464
399
  runId,
@@ -473,7 +408,7 @@ export function createActivityStore(db, options = {}) {
473
408
  getSpan: getSpanRaw,
474
409
  openRootSpans() {
475
410
  return db
476
- .query("SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL ORDER BY started_at DESC")
411
+ .query(ACTIVITY_SQL.openRootSpans)
477
412
  .all().map(rowToSpan);
478
413
  },
479
414
  rollupRun(runId) {
@@ -500,36 +435,24 @@ export function createActivityStore(db, options = {}) {
500
435
  // run — that terminal write is what made the run prunable), guarded
501
436
  // against any run that still has an open span.
502
437
  const candidates = db
503
- .query(`SELECT run_id, ended_at AS ended FROM activity_run_rollups r
504
- WHERE detail_pruned = 0 AND ended_at IS NOT NULL
505
- AND ((ended_at < ? AND ended_at < ?) OR ended_at < ?)
506
- AND NOT EXISTS (
507
- SELECT 1 FROM activity_spans s
508
- WHERE s.run_id = r.run_id AND s.outcome IS NULL
509
- )
510
- LIMIT ?`)
438
+ .query(ACTIVITY_SQL.pruneCandidates)
511
439
  .all(floor, retentionCutoff, ceiling, batch);
512
440
  let spansDeleted = 0;
513
441
  for (const { run_id, ended } of candidates) {
514
- db.query("UPDATE activity_run_rollups SET detail_pruned = 1 WHERE run_id = ?").run(run_id);
442
+ db.query(ACTIVITY_SQL.markDetailPruned).run(run_id);
515
443
  if (ended >= floor) {
516
444
  // Pruned by the hard ceiling alone — the digest never covered
517
445
  // this run; make the coverage gap visible on the rollup.
518
- db.query("UPDATE activity_run_rollups SET failure_reason = COALESCE(failure_reason, 'digest coverage gap') WHERE run_id = ?").run(run_id);
446
+ db.query(ACTIVITY_SQL.markDigestCoverageGap).run(run_id);
519
447
  }
520
- db.query(`DELETE FROM activity_events WHERE span_id IN
521
- (SELECT span_id FROM activity_spans WHERE run_id = ?)`).run(run_id);
522
- const res = db.query("DELETE FROM activity_spans WHERE run_id = ?").run(run_id);
448
+ db.query(ACTIVITY_SQL.deleteEventsByRun).run(run_id);
449
+ const res = db.query(ACTIVITY_SQL.deleteSpansByRun).run(run_id);
523
450
  spansDeleted += res.changes;
524
- db.query("DELETE FROM activity_changes WHERE run_id = ?").run(run_id);
451
+ db.query(ACTIVITY_SQL.deleteChangesByRun).run(run_id);
525
452
  }
526
453
  // The change log only serves live polling; rows this deep in the past
527
454
  // are unreachable by any live cursor. Keep runs with open spans.
528
- db.query(`DELETE FROM activity_changes WHERE change_id < (
529
- SELECT COALESCE(MAX(change_id), 0) FROM activity_changes
530
- ) - 100000 AND run_id NOT IN (
531
- SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL
532
- )`).run();
455
+ db.query(ACTIVITY_SQL.compactChanges).run();
533
456
  return { runsPruned: candidates.length, spansDeleted };
534
457
  });
535
458
  },
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/activity/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/activity/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schlessera/brain-ui-server",
3
- "version": "0.34.0",
3
+ "version": "0.34.1",
4
4
  "description": "brain-kit chat-UI server: Hono app factory, WebSocket turn coordinator, auth (password/passkeys/tailscale/proxy), session catalog, and brain/files/voice routes",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -54,8 +54,8 @@
54
54
  "dependencies": {
55
55
  "@opentelemetry/api": "^1.9.1",
56
56
  "@opentelemetry/api-logs": "0.221.0",
57
- "@schlessera/brain-render-template": "0.34.0",
58
- "@schlessera/brain-ui-sdk": "0.34.0",
57
+ "@schlessera/brain-render-template": "0.34.1",
58
+ "@schlessera/brain-ui-sdk": "0.34.1",
59
59
  "@simplewebauthn/server": "^13.3.2",
60
60
  "fflate": "^0.8.2",
61
61
  "gray-matter": "^4.0.3",
@@ -0,0 +1,120 @@
1
+ /** SQL owned by the activity store, kept together so the store reads as operations. */
2
+ export const ACTIVITY_SQL = {
3
+ nextSeq: "SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?",
4
+ insertChange:
5
+ "INSERT INTO activity_changes (run_id, seq, span_id, event_index) VALUES (?, ?, ?, ?)",
6
+ spanById: "SELECT * FROM activity_spans WHERE span_id = ?",
7
+ spanStateById: "SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?",
8
+ endSpan: `UPDATE activity_spans SET outcome = ?, outcome_reason = ?, ended_at = ?, attrs = ?,
9
+ input_tokens = COALESCE(?, input_tokens),
10
+ output_tokens = COALESCE(?, output_tokens),
11
+ cache_read_tokens = COALESCE(?, cache_read_tokens),
12
+ cache_creation_tokens = COALESCE(?, cache_creation_tokens),
13
+ cost_usd = COALESCE(?, cost_usd),
14
+ model = COALESCE(?, model)
15
+ WHERE span_id = ?`,
16
+ openSpansByRun:
17
+ "SELECT span_id FROM activity_spans WHERE run_id = ? AND outcome IS NULL ORDER BY started_at DESC",
18
+ spansByRun: "SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at",
19
+ upsertRollup: `INSERT INTO activity_run_rollups
20
+ (run_id, origin, name, session_id, job_name, started_at, ended_at, outcome,
21
+ duration_ms, span_count, input_tokens, output_tokens, cache_read_tokens,
22
+ cache_creation_tokens, cost_usd, effective_cost_usd, billing_mode,
23
+ pricing_estimate, failure_reason, detail_pruned)
24
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
25
+ ON CONFLICT(run_id) DO UPDATE SET
26
+ ended_at = excluded.ended_at, outcome = excluded.outcome,
27
+ duration_ms = excluded.duration_ms, span_count = excluded.span_count,
28
+ input_tokens = excluded.input_tokens, output_tokens = excluded.output_tokens,
29
+ cache_read_tokens = excluded.cache_read_tokens,
30
+ cache_creation_tokens = excluded.cache_creation_tokens,
31
+ cost_usd = COALESCE(activity_run_rollups.cost_usd, excluded.cost_usd),
32
+ effective_cost_usd = CASE
33
+ WHEN activity_run_rollups.effective_cost_usd IS NOT NULL
34
+ THEN activity_run_rollups.effective_cost_usd
35
+ WHEN activity_run_rollups.billing_mode IS NULL
36
+ OR activity_run_rollups.billing_mode = excluded.billing_mode
37
+ THEN excluded.effective_cost_usd
38
+ ELSE NULL
39
+ END,
40
+ billing_mode = COALESCE(activity_run_rollups.billing_mode, excluded.billing_mode),
41
+ pricing_estimate = CASE
42
+ WHEN activity_run_rollups.pricing_estimate IS NOT NULL
43
+ THEN activity_run_rollups.pricing_estimate
44
+ WHEN activity_run_rollups.billing_mode IS NULL
45
+ OR activity_run_rollups.billing_mode = excluded.billing_mode
46
+ THEN excluded.pricing_estimate
47
+ ELSE NULL
48
+ END,
49
+ failure_reason = excluded.failure_reason`,
50
+ insertSpan: `INSERT INTO activity_spans
51
+ (span_id, run_id, parent_span_id, name, kind, origin, session_id, job_name,
52
+ attrs, started_at, writer, last_heartbeat_at)
53
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
54
+ patchSpan: `UPDATE activity_spans SET attrs = ?, wait_until = COALESCE(?, wait_until),
55
+ input_tokens = COALESCE(?, input_tokens),
56
+ output_tokens = COALESCE(?, output_tokens),
57
+ cache_read_tokens = COALESCE(?, cache_read_tokens),
58
+ cache_creation_tokens = COALESCE(?, cache_creation_tokens),
59
+ cost_usd = COALESCE(?, cost_usd),
60
+ model = COALESCE(?, model)
61
+ WHERE span_id = ?`,
62
+ spanRunById: "SELECT run_id FROM activity_spans WHERE span_id = ?",
63
+ nextEventIndex:
64
+ "SELECT COALESCE(MAX(event_index), -1) + 1 AS idx FROM activity_events WHERE span_id = ?",
65
+ insertEvent:
66
+ "INSERT INTO activity_events (span_id, event_index, ts, event_type, payload) VALUES (?, ?, ?, ?, ?)",
67
+ heartbeat:
68
+ "UPDATE activity_spans SET last_heartbeat_at = ? WHERE span_id = ? AND outcome IS NULL",
69
+ openSessionRuns:
70
+ "SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL AND origin = 'session'",
71
+ staleRoots: `SELECT span_id, run_id FROM activity_spans
72
+ WHERE outcome IS NULL AND parent_span_id IS NULL
73
+ AND writer != ? AND COALESCE(last_heartbeat_at, started_at) < ?`,
74
+ stuckRoots:
75
+ "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL AND started_at < ?",
76
+ spanChanges: `SELECT c.change_id, c.run_id, c.seq, s.*
77
+ FROM activity_changes c
78
+ JOIN activity_spans s ON s.span_id = c.span_id
79
+ WHERE c.change_id > ? AND c.event_index IS NULL
80
+ ORDER BY c.change_id LIMIT ?`,
81
+ eventChanges: `SELECT c.change_id, c.run_id, c.seq, e.*
82
+ FROM activity_changes c
83
+ JOIN activity_events e
84
+ ON e.span_id = c.span_id AND e.event_index = c.event_index
85
+ WHERE c.change_id > ? AND c.event_index IS NOT NULL
86
+ ORDER BY c.change_id LIMIT ?`,
87
+ terminalRootChanges: `SELECT MAX(c.change_id) AS change_id, s.*
88
+ FROM activity_changes c
89
+ JOIN activity_spans s ON s.span_id = c.span_id
90
+ WHERE c.change_id > ? AND c.event_index IS NULL
91
+ AND s.parent_span_id IS NULL AND s.outcome IS NOT NULL
92
+ GROUP BY s.span_id
93
+ ORDER BY change_id LIMIT ?`,
94
+ latestChangeCursor: "SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes",
95
+ eventsByRun: `SELECT e.* FROM activity_events e
96
+ JOIN activity_spans s ON s.span_id = e.span_id
97
+ WHERE s.run_id = ? ORDER BY e.ts, e.event_index`,
98
+ openRootSpans:
99
+ "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL ORDER BY started_at DESC",
100
+ pruneCandidates: `SELECT run_id, ended_at AS ended FROM activity_run_rollups r
101
+ WHERE detail_pruned = 0 AND ended_at IS NOT NULL
102
+ AND ((ended_at < ? AND ended_at < ?) OR ended_at < ?)
103
+ AND NOT EXISTS (
104
+ SELECT 1 FROM activity_spans s
105
+ WHERE s.run_id = r.run_id AND s.outcome IS NULL
106
+ )
107
+ LIMIT ?`,
108
+ markDetailPruned: "UPDATE activity_run_rollups SET detail_pruned = 1 WHERE run_id = ?",
109
+ markDigestCoverageGap:
110
+ "UPDATE activity_run_rollups SET failure_reason = COALESCE(failure_reason, 'digest coverage gap') WHERE run_id = ?",
111
+ deleteEventsByRun: `DELETE FROM activity_events WHERE span_id IN
112
+ (SELECT span_id FROM activity_spans WHERE run_id = ?)`,
113
+ deleteSpansByRun: "DELETE FROM activity_spans WHERE run_id = ?",
114
+ deleteChangesByRun: "DELETE FROM activity_changes WHERE run_id = ?",
115
+ compactChanges: `DELETE FROM activity_changes WHERE change_id < (
116
+ SELECT COALESCE(MAX(change_id), 0) FROM activity_changes
117
+ ) - 100000 AND run_id NOT IN (
118
+ SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL
119
+ )`,
120
+ } as const;
@@ -38,6 +38,7 @@ import {
38
38
  resolveStandalonePricingConfig,
39
39
  } from "../config/env.js";
40
40
  import { createModelPricing, type PricingRates } from "../pricing/model-pricing.js";
41
+ import { ACTIVITY_SQL } from "./sql.js";
41
42
 
42
43
  export const SPAN_OUTCOMES = [
43
44
  "success",
@@ -327,15 +328,13 @@ export function createActivityStore(
327
328
 
328
329
  function nextSeq(runId: string): number {
329
330
  const row = db
330
- .query("SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?")
331
+ .query(ACTIVITY_SQL.nextSeq)
331
332
  .get(runId) as { hi: number };
332
333
  return row.hi + 1;
333
334
  }
334
335
 
335
336
  function logChange(runId: string, seq: number, spanId: string, eventIndex?: number) {
336
- db.query(
337
- "INSERT INTO activity_changes (run_id, seq, span_id, event_index) VALUES (?, ?, ?, ?)"
338
- ).run(runId, seq, spanId, eventIndex ?? null);
337
+ db.query(ACTIVITY_SQL.insertChange).run(runId, seq, spanId, eventIndex ?? null);
339
338
  }
340
339
 
341
340
  function rowToSpan(r: any): SpanRow {
@@ -380,20 +379,20 @@ export function createActivityStore(
380
379
  }
381
380
 
382
381
  function getSpanRaw(spanId: string): SpanRow | null {
383
- const r = db.query("SELECT * FROM activity_spans WHERE span_id = ?").get(spanId);
382
+ const r = db.query(ACTIVITY_SQL.spanById).get(spanId);
384
383
  return r ? rowToSpan(r) : null;
385
384
  }
386
385
 
387
386
  function runHighWaterSeqRaw(runId: string): number {
388
387
  const row = db
389
- .query("SELECT COALESCE(MAX(seq), 0) AS hi FROM activity_changes WHERE run_id = ?")
388
+ .query(ACTIVITY_SQL.nextSeq)
390
389
  .get(runId) as { hi: number };
391
390
  return row.hi;
392
391
  }
393
392
 
394
393
  function endSpanInTx(spanId: string, input: EndSpanInput): boolean {
395
394
  const existing = db
396
- .query("SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?")
395
+ .query(ACTIVITY_SQL.spanStateById)
397
396
  .get(spanId) as { run_id: string; outcome: string | null; attrs: string | null } | null;
398
397
  if (!existing || existing.outcome !== null) return false;
399
398
 
@@ -402,16 +401,7 @@ export function createActivityStore(
402
401
  ? JSON.stringify({ ...(safeParse(existing.attrs) ?? {}), ...input.attrs })
403
402
  : existing.attrs;
404
403
  const u = input.usage ?? {};
405
- db.query(
406
- `UPDATE activity_spans SET outcome = ?, outcome_reason = ?, ended_at = ?, attrs = ?,
407
- input_tokens = COALESCE(?, input_tokens),
408
- output_tokens = COALESCE(?, output_tokens),
409
- cache_read_tokens = COALESCE(?, cache_read_tokens),
410
- cache_creation_tokens = COALESCE(?, cache_creation_tokens),
411
- cost_usd = COALESCE(?, cost_usd),
412
- model = COALESCE(?, model)
413
- WHERE span_id = ?`
414
- ).run(
404
+ db.query(ACTIVITY_SQL.endSpan).run(
415
405
  input.outcome,
416
406
  input.reason ?? null,
417
407
  endedAt,
@@ -431,9 +421,7 @@ export function createActivityStore(
431
421
  /** Close every open span of the run (children first) and roll it up. */
432
422
  function closeRunInTx(runId: string, outcome: SpanOutcome, reason: string): number {
433
423
  const open = db
434
- .query(
435
- "SELECT span_id FROM activity_spans WHERE run_id = ? AND outcome IS NULL ORDER BY started_at DESC"
436
- )
424
+ .query(ACTIVITY_SQL.openSpansByRun)
437
425
  .all(runId) as Array<{ span_id: string }>;
438
426
  let closed = 0;
439
427
  for (const { span_id } of open) {
@@ -445,7 +433,7 @@ export function createActivityStore(
445
433
 
446
434
  function rollupRunInTx(runId: string) {
447
435
  const spans = db
448
- .query("SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at")
436
+ .query(ACTIVITY_SQL.spansByRun)
449
437
  .all(runId)
450
438
  .map(rowToSpan);
451
439
  if (spans.length === 0) return;
@@ -506,37 +494,7 @@ export function createActivityStore(
506
494
  const costUsd = root.usage.costUsd ?? priced?.costUsd ?? null;
507
495
 
508
496
  db.query(
509
- `INSERT INTO activity_run_rollups
510
- (run_id, origin, name, session_id, job_name, started_at, ended_at, outcome,
511
- duration_ms, span_count, input_tokens, output_tokens, cache_read_tokens,
512
- cache_creation_tokens, cost_usd, effective_cost_usd, billing_mode,
513
- pricing_estimate, failure_reason, detail_pruned)
514
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
515
- ON CONFLICT(run_id) DO UPDATE SET
516
- ended_at = excluded.ended_at, outcome = excluded.outcome,
517
- duration_ms = excluded.duration_ms, span_count = excluded.span_count,
518
- input_tokens = excluded.input_tokens, output_tokens = excluded.output_tokens,
519
- cache_read_tokens = excluded.cache_read_tokens,
520
- cache_creation_tokens = excluded.cache_creation_tokens,
521
- cost_usd = COALESCE(activity_run_rollups.cost_usd, excluded.cost_usd),
522
- effective_cost_usd = CASE
523
- WHEN activity_run_rollups.effective_cost_usd IS NOT NULL
524
- THEN activity_run_rollups.effective_cost_usd
525
- WHEN activity_run_rollups.billing_mode IS NULL
526
- OR activity_run_rollups.billing_mode = excluded.billing_mode
527
- THEN excluded.effective_cost_usd
528
- ELSE NULL
529
- END,
530
- billing_mode = COALESCE(activity_run_rollups.billing_mode, excluded.billing_mode),
531
- pricing_estimate = CASE
532
- WHEN activity_run_rollups.pricing_estimate IS NOT NULL
533
- THEN activity_run_rollups.pricing_estimate
534
- WHEN activity_run_rollups.billing_mode IS NULL
535
- OR activity_run_rollups.billing_mode = excluded.billing_mode
536
- THEN excluded.pricing_estimate
537
- ELSE NULL
538
- END,
539
- failure_reason = excluded.failure_reason`
497
+ ACTIVITY_SQL.upsertRollup
540
498
  // Every cost column is FROZEN at first non-NULL write (AE5): a re-rollup
541
499
  // after a pricing refresh must not silently reprice history — only a
542
500
  // still-NULL slot may be filled by a later computation. cost_usd gets
@@ -576,12 +534,7 @@ export function createActivityStore(
576
534
  startSpan(input) {
577
535
  return inWrite(() => {
578
536
  const startedAt = input.startedAt ?? Date.now();
579
- db.query(
580
- `INSERT INTO activity_spans
581
- (span_id, run_id, parent_span_id, name, kind, origin, session_id, job_name,
582
- attrs, started_at, writer, last_heartbeat_at)
583
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`
584
- ).run(
537
+ db.query(ACTIVITY_SQL.insertSpan).run(
585
538
  input.spanId,
586
539
  input.runId,
587
540
  input.parentSpanId ?? null,
@@ -607,23 +560,14 @@ export function createActivityStore(
607
560
  patchSpan(spanId, patch) {
608
561
  return inWrite(() => {
609
562
  const existing = db
610
- .query("SELECT run_id, outcome, attrs FROM activity_spans WHERE span_id = ?")
563
+ .query(ACTIVITY_SQL.spanStateById)
611
564
  .get(spanId) as { run_id: string; outcome: string | null; attrs: string | null } | null;
612
565
  if (!existing || existing.outcome !== null) return false;
613
566
  const attrs = patch.attrs
614
567
  ? JSON.stringify({ ...(safeParse(existing.attrs) ?? {}), ...patch.attrs })
615
568
  : existing.attrs;
616
569
  const u = patch.usage ?? {};
617
- db.query(
618
- `UPDATE activity_spans SET attrs = ?, wait_until = COALESCE(?, wait_until),
619
- input_tokens = COALESCE(?, input_tokens),
620
- output_tokens = COALESCE(?, output_tokens),
621
- cache_read_tokens = COALESCE(?, cache_read_tokens),
622
- cache_creation_tokens = COALESCE(?, cache_creation_tokens),
623
- cost_usd = COALESCE(?, cost_usd),
624
- model = COALESCE(?, model)
625
- WHERE span_id = ?`
626
- ).run(
570
+ db.query(ACTIVITY_SQL.patchSpan).run(
627
571
  attrs,
628
572
  patch.waitUntil ?? null,
629
573
  u.inputTokens ?? null,
@@ -642,19 +586,21 @@ export function createActivityStore(
642
586
  appendEvent(spanId, eventType, payload, ts, cap) {
643
587
  return inWrite(() => {
644
588
  const span = db
645
- .query("SELECT run_id FROM activity_spans WHERE span_id = ?")
589
+ .query(ACTIVITY_SQL.spanRunById)
646
590
  .get(spanId) as { run_id: string } | null;
647
591
  if (!span) return null;
648
592
  const next = db
649
- .query(
650
- "SELECT COALESCE(MAX(event_index), -1) + 1 AS idx FROM activity_events WHERE span_id = ?"
651
- )
593
+ .query(ACTIVITY_SQL.nextEventIndex)
652
594
  .get(spanId) as { idx: number };
653
595
  const stored = capPayload(payload, cap);
654
596
  const at = ts ?? Date.now();
655
- db.query(
656
- "INSERT INTO activity_events (span_id, event_index, ts, event_type, payload) VALUES (?, ?, ?, ?, ?)"
657
- ).run(spanId, next.idx, at, eventType, JSON.stringify(stored));
597
+ db.query(ACTIVITY_SQL.insertEvent).run(
598
+ spanId,
599
+ next.idx,
600
+ at,
601
+ eventType,
602
+ JSON.stringify(stored)
603
+ );
658
604
  logChange(span.run_id, nextSeq(span.run_id), spanId, next.idx);
659
605
  // Built from the values just written — no read-back needed.
660
606
  return {
@@ -672,9 +618,7 @@ export function createActivityStore(
672
618
  inWrite(() => {
673
619
  // Deliberately NOT change-logged: a heartbeat is liveness metadata,
674
620
  // not activity the client needs a delta for.
675
- db.query(
676
- "UPDATE activity_spans SET last_heartbeat_at = ? WHERE span_id = ? AND outcome IS NULL"
677
- ).run(at ?? Date.now(), spanId);
621
+ db.query(ACTIVITY_SQL.heartbeat).run(at ?? Date.now(), spanId);
678
622
  });
679
623
  },
680
624
 
@@ -697,9 +641,7 @@ export function createActivityStore(
697
641
  // loop re-checks open-ness inside the transaction (endSpanInTx is
698
642
  // write-once), so a race just skips.
699
643
  const open = db
700
- .query(
701
- "SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL AND origin = 'session'"
702
- )
644
+ .query(ACTIVITY_SQL.openSessionRuns)
703
645
  .all() as Array<{ run_id: string }>;
704
646
  if (open.length === 0) return 0;
705
647
  getPricing(); // construct outside the write lock; rollup reuses it
@@ -718,11 +660,7 @@ export function createActivityStore(
718
660
  // legitimately long, quiet run with a live writer is never killed.
719
661
  // Candidate read outside the write transaction, same as sweepOwnOrphans.
720
662
  const staleRoots = db
721
- .query(
722
- `SELECT span_id, run_id FROM activity_spans
723
- WHERE outcome IS NULL AND parent_span_id IS NULL
724
- AND writer != ? AND COALESCE(last_heartbeat_at, started_at) < ?`
725
- )
663
+ .query(ACTIVITY_SQL.staleRoots)
726
664
  .all(writer, cutoff) as Array<{ span_id: string; run_id: string }>;
727
665
  if (staleRoots.length === 0) return 0;
728
666
  getPricing(); // construct outside the write lock; rollup reuses it
@@ -739,9 +677,7 @@ export function createActivityStore(
739
677
  const cutoff = (now ?? Date.now()) - thresholdMs;
740
678
  return (
741
679
  db
742
- .query(
743
- "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL AND started_at < ?"
744
- )
680
+ .query(ACTIVITY_SQL.stuckRoots)
745
681
  .all(cutoff) as any[]
746
682
  ).map(rowToSpan);
747
683
  },
@@ -751,23 +687,10 @@ export function createActivityStore(
751
687
  // change whose span/event row was pruned drops out via the join, same
752
688
  // as the old per-row miss.
753
689
  const spanRows = db
754
- .query(
755
- `SELECT c.change_id, c.run_id, c.seq, s.*
756
- FROM activity_changes c
757
- JOIN activity_spans s ON s.span_id = c.span_id
758
- WHERE c.change_id > ? AND c.event_index IS NULL
759
- ORDER BY c.change_id LIMIT ?`
760
- )
690
+ .query(ACTIVITY_SQL.spanChanges)
761
691
  .all(changeCursor, limit) as any[];
762
692
  const eventRows = db
763
- .query(
764
- `SELECT c.change_id, c.run_id, c.seq, e.*
765
- FROM activity_changes c
766
- JOIN activity_events e
767
- ON e.span_id = c.span_id AND e.event_index = c.event_index
768
- WHERE c.change_id > ? AND c.event_index IS NOT NULL
769
- ORDER BY c.change_id LIMIT ?`
770
- )
693
+ .query(ACTIVITY_SQL.eventChanges)
771
694
  .all(changeCursor, limit) as any[];
772
695
  const changes: ActivityChange[] = [
773
696
  ...spanRows.map(
@@ -795,22 +718,14 @@ export function createActivityStore(
795
718
 
796
719
  terminalRootChangesSince(changeCursor, limit = 500) {
797
720
  const rows = db
798
- .query(
799
- `SELECT MAX(c.change_id) AS change_id, s.*
800
- FROM activity_changes c
801
- JOIN activity_spans s ON s.span_id = c.span_id
802
- WHERE c.change_id > ? AND c.event_index IS NULL
803
- AND s.parent_span_id IS NULL AND s.outcome IS NOT NULL
804
- GROUP BY s.span_id
805
- ORDER BY change_id LIMIT ?`
806
- )
721
+ .query(ACTIVITY_SQL.terminalRootChanges)
807
722
  .all(changeCursor, limit) as any[];
808
723
  return rows.map((r) => ({ changeId: r.change_id, span: rowToSpan(r) }));
809
724
  },
810
725
 
811
726
  latestChangeCursor() {
812
727
  const row = db
813
- .query("SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes")
728
+ .query(ACTIVITY_SQL.latestChangeCursor)
814
729
  .get() as { hi: number };
815
730
  return row.hi;
816
731
  },
@@ -822,21 +737,17 @@ export function createActivityStore(
822
737
  return db.transaction(() => {
823
738
  const spans = (
824
739
  db
825
- .query("SELECT * FROM activity_spans WHERE run_id = ? ORDER BY started_at")
740
+ .query(ACTIVITY_SQL.spansByRun)
826
741
  .all(runId) as any[]
827
742
  ).map(rowToSpan);
828
743
  if (spans.length === 0) return null;
829
744
  const events = (
830
745
  db
831
- .query(
832
- `SELECT e.* FROM activity_events e
833
- JOIN activity_spans s ON s.span_id = e.span_id
834
- WHERE s.run_id = ? ORDER BY e.ts, e.event_index`
835
- )
746
+ .query(ACTIVITY_SQL.eventsByRun)
836
747
  .all(runId) as any[]
837
748
  ).map(rowToEvent);
838
749
  const cursor = db
839
- .query("SELECT COALESCE(MAX(change_id), 0) AS hi FROM activity_changes")
750
+ .query(ACTIVITY_SQL.latestChangeCursor)
840
751
  .get() as { hi: number };
841
752
  return {
842
753
  runId,
@@ -855,9 +766,7 @@ export function createActivityStore(
855
766
  openRootSpans() {
856
767
  return (
857
768
  db
858
- .query(
859
- "SELECT * FROM activity_spans WHERE outcome IS NULL AND parent_span_id IS NULL ORDER BY started_at DESC"
860
- )
769
+ .query(ACTIVITY_SQL.openRootSpans)
861
770
  .all() as any[]
862
771
  ).map(rowToSpan);
863
772
  },
@@ -887,46 +796,24 @@ export function createActivityStore(
887
796
  // run — that terminal write is what made the run prunable), guarded
888
797
  // against any run that still has an open span.
889
798
  const candidates = db
890
- .query(
891
- `SELECT run_id, ended_at AS ended FROM activity_run_rollups r
892
- WHERE detail_pruned = 0 AND ended_at IS NOT NULL
893
- AND ((ended_at < ? AND ended_at < ?) OR ended_at < ?)
894
- AND NOT EXISTS (
895
- SELECT 1 FROM activity_spans s
896
- WHERE s.run_id = r.run_id AND s.outcome IS NULL
897
- )
898
- LIMIT ?`
899
- )
799
+ .query(ACTIVITY_SQL.pruneCandidates)
900
800
  .all(floor, retentionCutoff, ceiling, batch) as Array<{ run_id: string; ended: number }>;
901
801
  let spansDeleted = 0;
902
802
  for (const { run_id, ended } of candidates) {
903
- db.query(
904
- "UPDATE activity_run_rollups SET detail_pruned = 1 WHERE run_id = ?"
905
- ).run(run_id);
803
+ db.query(ACTIVITY_SQL.markDetailPruned).run(run_id);
906
804
  if (ended >= floor) {
907
805
  // Pruned by the hard ceiling alone — the digest never covered
908
806
  // this run; make the coverage gap visible on the rollup.
909
- db.query(
910
- "UPDATE activity_run_rollups SET failure_reason = COALESCE(failure_reason, 'digest coverage gap') WHERE run_id = ?"
911
- ).run(run_id);
807
+ db.query(ACTIVITY_SQL.markDigestCoverageGap).run(run_id);
912
808
  }
913
- db.query(
914
- `DELETE FROM activity_events WHERE span_id IN
915
- (SELECT span_id FROM activity_spans WHERE run_id = ?)`
916
- ).run(run_id);
917
- const res = db.query("DELETE FROM activity_spans WHERE run_id = ?").run(run_id);
809
+ db.query(ACTIVITY_SQL.deleteEventsByRun).run(run_id);
810
+ const res = db.query(ACTIVITY_SQL.deleteSpansByRun).run(run_id);
918
811
  spansDeleted += res.changes;
919
- db.query("DELETE FROM activity_changes WHERE run_id = ?").run(run_id);
812
+ db.query(ACTIVITY_SQL.deleteChangesByRun).run(run_id);
920
813
  }
921
814
  // The change log only serves live polling; rows this deep in the past
922
815
  // are unreachable by any live cursor. Keep runs with open spans.
923
- db.query(
924
- `DELETE FROM activity_changes WHERE change_id < (
925
- SELECT COALESCE(MAX(change_id), 0) FROM activity_changes
926
- ) - 100000 AND run_id NOT IN (
927
- SELECT DISTINCT run_id FROM activity_spans WHERE outcome IS NULL
928
- )`
929
- ).run();
816
+ db.query(ACTIVITY_SQL.compactChanges).run();
930
817
  return { runsPruned: candidates.length, spansDeleted };
931
818
  });
932
819
  },