@schlessera/brain-ui-server 0.18.0 → 0.19.0

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.
Files changed (101) hide show
  1. package/dist/activity/digest.d.ts +29 -0
  2. package/dist/activity/digest.d.ts.map +1 -0
  3. package/dist/activity/digest.js +61 -0
  4. package/dist/activity/digest.js.map +1 -0
  5. package/dist/activity/notify.d.ts +62 -0
  6. package/dist/activity/notify.d.ts.map +1 -0
  7. package/dist/activity/notify.js +171 -0
  8. package/dist/activity/notify.js.map +1 -0
  9. package/dist/activity/push-sender.d.ts +63 -0
  10. package/dist/activity/push-sender.d.ts.map +1 -0
  11. package/dist/activity/push-sender.js +131 -0
  12. package/dist/activity/push-sender.js.map +1 -0
  13. package/dist/activity/query.d.ts +16 -0
  14. package/dist/activity/query.d.ts.map +1 -0
  15. package/dist/activity/query.js +128 -0
  16. package/dist/activity/query.js.map +1 -0
  17. package/dist/activity/recorder.d.ts +48 -0
  18. package/dist/activity/recorder.d.ts.map +1 -0
  19. package/dist/activity/recorder.js +205 -0
  20. package/dist/activity/recorder.js.map +1 -0
  21. package/dist/activity/runtime.d.ts +31 -0
  22. package/dist/activity/runtime.d.ts.map +1 -0
  23. package/dist/activity/runtime.js +109 -0
  24. package/dist/activity/runtime.js.map +1 -0
  25. package/dist/activity/span-sink.d.ts +22 -0
  26. package/dist/activity/span-sink.d.ts.map +1 -0
  27. package/dist/activity/span-sink.js +138 -0
  28. package/dist/activity/span-sink.js.map +1 -0
  29. package/dist/activity/store.d.ts +207 -0
  30. package/dist/activity/store.d.ts.map +1 -0
  31. package/dist/activity/store.js +440 -0
  32. package/dist/activity/store.js.map +1 -0
  33. package/dist/activity/stream.d.ts +45 -0
  34. package/dist/activity/stream.d.ts.map +1 -0
  35. package/dist/activity/stream.js +312 -0
  36. package/dist/activity/stream.js.map +1 -0
  37. package/dist/app.d.ts.map +1 -1
  38. package/dist/app.js +16 -0
  39. package/dist/app.js.map +1 -1
  40. package/dist/cron/scheduler.d.ts.map +1 -1
  41. package/dist/cron/scheduler.js +20 -5
  42. package/dist/cron/scheduler.js.map +1 -1
  43. package/dist/db/client.d.ts.map +1 -1
  44. package/dist/db/client.js +32 -6
  45. package/dist/db/client.js.map +1 -1
  46. package/dist/index.d.ts +4 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +7 -0
  49. package/dist/index.js.map +1 -1
  50. package/dist/routes/activity.d.ts +20 -0
  51. package/dist/routes/activity.d.ts.map +1 -0
  52. package/dist/routes/activity.js +300 -0
  53. package/dist/routes/activity.js.map +1 -0
  54. package/dist/routes/push.d.ts +6 -0
  55. package/dist/routes/push.d.ts.map +1 -0
  56. package/dist/routes/push.js +73 -0
  57. package/dist/routes/push.js.map +1 -0
  58. package/dist/routes/sessions.d.ts.map +1 -1
  59. package/dist/routes/sessions.js +20 -4
  60. package/dist/routes/sessions.js.map +1 -1
  61. package/dist/ws/bridge.d.ts +2 -1
  62. package/dist/ws/bridge.d.ts.map +1 -1
  63. package/dist/ws/bridge.js +27 -2
  64. package/dist/ws/bridge.js.map +1 -1
  65. package/dist/ws/connection.d.ts.map +1 -1
  66. package/dist/ws/connection.js +9 -1
  67. package/dist/ws/connection.js.map +1 -1
  68. package/dist/ws/dispatch.d.ts.map +1 -1
  69. package/dist/ws/dispatch.js +11 -0
  70. package/dist/ws/dispatch.js.map +1 -1
  71. package/dist/ws/host.d.ts +16 -0
  72. package/dist/ws/host.d.ts.map +1 -1
  73. package/dist/ws/host.js +2 -0
  74. package/dist/ws/host.js.map +1 -1
  75. package/dist/ws/run-session.d.ts.map +1 -1
  76. package/dist/ws/run-session.js +21 -1
  77. package/dist/ws/run-session.js.map +1 -1
  78. package/migrations/007_activity.sql +114 -0
  79. package/migrations/008_push_subscriptions.sql +24 -0
  80. package/package.json +5 -3
  81. package/src/activity/digest.ts +92 -0
  82. package/src/activity/notify.ts +285 -0
  83. package/src/activity/push-sender.ts +215 -0
  84. package/src/activity/query.ts +160 -0
  85. package/src/activity/recorder.ts +261 -0
  86. package/src/activity/runtime.ts +141 -0
  87. package/src/activity/span-sink.ts +152 -0
  88. package/src/activity/store.ts +774 -0
  89. package/src/activity/stream.ts +366 -0
  90. package/src/app.ts +17 -0
  91. package/src/cron/scheduler.ts +28 -8
  92. package/src/db/client.ts +31 -6
  93. package/src/index.ts +22 -0
  94. package/src/routes/activity.ts +363 -0
  95. package/src/routes/push.ts +90 -0
  96. package/src/routes/sessions.ts +24 -4
  97. package/src/ws/bridge.ts +29 -2
  98. package/src/ws/connection.ts +9 -1
  99. package/src/ws/dispatch.ts +13 -0
  100. package/src/ws/host.ts +18 -0
  101. package/src/ws/run-session.ts +28 -1
@@ -0,0 +1,312 @@
1
+ import { sendTo } from "../ws/clients.js";
2
+ /** Events per snapshot frame — keeps each frame far below the WS size cap. */
3
+ const SNAPSHOT_EVENT_CHUNK = 100;
4
+ /** Spans per snapshot frame, same rationale. */
5
+ const SNAPSHOT_SPAN_CHUNK = 100;
6
+ /** Fast-poll cadence while subscriptions exist (foreign-writer liveness). */
7
+ const POLL_INTERVAL_MS = 1500;
8
+ const TOOL_NAME_PREFIX = "execute_tool ";
9
+ /** Store row → wire span. Lifts the typed fields the protocol promotes
10
+ * (toolName, subagent enrichment) out of the naming/attr conventions. */
11
+ export function toWireSpan(span) {
12
+ const isToolLike = span.kind === "tool" || span.kind === "subagent";
13
+ const toolName = span.kind === "subagent" && span.name.startsWith(`${TOOL_NAME_PREFIX}Agent`)
14
+ ? "Agent"
15
+ : isToolLike && span.name.startsWith(TOOL_NAME_PREFIX)
16
+ ? span.name.slice(TOOL_NAME_PREFIX.length)
17
+ : isToolLike
18
+ ? span.name
19
+ : undefined;
20
+ const subagent = span.kind === "subagent" ? subagentOf(span.attrs) : undefined;
21
+ return {
22
+ spanId: span.spanId,
23
+ runId: span.runId,
24
+ parentSpanId: span.parentSpanId ?? undefined,
25
+ name: span.name,
26
+ ...(toolName !== undefined ? { toolName } : {}),
27
+ kind: span.kind,
28
+ origin: span.origin,
29
+ sessionId: span.sessionId ?? undefined,
30
+ jobName: span.jobName ?? undefined,
31
+ startedAt: span.startedAt,
32
+ waitUntil: span.waitUntil ?? undefined,
33
+ endedAt: span.endedAt ?? undefined,
34
+ outcome: span.outcome ?? undefined,
35
+ outcomeReason: span.outcomeReason ?? undefined,
36
+ usage: hasUsage(span) ? { ...span.usage } : undefined,
37
+ ...(subagent ? { subagent } : {}),
38
+ attrs: Object.keys(span.attrs).length > 0 ? span.attrs : undefined,
39
+ };
40
+ }
41
+ function subagentOf(attrs) {
42
+ const type = attrs["subagent.type"];
43
+ const description = attrs["subagent.description"];
44
+ const summary = attrs["subagent.summary"];
45
+ const totalTokens = attrs["subagent.total_tokens"];
46
+ const subagent = {
47
+ ...(typeof type === "string" ? { type } : {}),
48
+ ...(typeof description === "string" ? { description } : {}),
49
+ ...(typeof summary === "string" ? { summary } : {}),
50
+ ...(typeof totalTokens === "number" ? { totalTokens } : {}),
51
+ };
52
+ return Object.keys(subagent).length > 0 ? subagent : undefined;
53
+ }
54
+ export function toWireEvent(event) {
55
+ return {
56
+ spanId: event.spanId,
57
+ eventIndex: event.eventIndex,
58
+ ts: event.ts,
59
+ eventType: event.eventType,
60
+ payload: event.payload,
61
+ ...(event.truncated ? { truncated: true } : {}),
62
+ };
63
+ }
64
+ export function createActivityStream(store, log) {
65
+ const subscriptions = new Map();
66
+ let cursor = store.latestChangeCursor();
67
+ let pumping = false;
68
+ let pollHandle = null;
69
+ /** runId → sessionId, learned from any span seen; a run's session never
70
+ * changes, so entries are immutable. Replaces per-event store lookups
71
+ * when matching event deltas against session-view subscriptions. */
72
+ const runSessions = new Map();
73
+ function noteSpan(span) {
74
+ if (span.sessionId && !runSessions.has(span.runId)) {
75
+ runSessions.set(span.runId, span.sessionId);
76
+ }
77
+ }
78
+ function subKey(s) {
79
+ return `${s.view}:${s.sessionId ?? ""}:${s.runId ?? ""}`;
80
+ }
81
+ function matches(sub, runId, span) {
82
+ if (sub.view === "index")
83
+ return true;
84
+ if (sub.view === "run")
85
+ return sub.runId === runId;
86
+ // Session view: match by the span's session when we have it; event-only
87
+ // deltas resolve through the memoized run→session map.
88
+ if (span?.sessionId)
89
+ return span.sessionId === sub.sessionId;
90
+ return runSessions.get(runId) === sub.sessionId;
91
+ }
92
+ function ensurePolling() {
93
+ if (pollHandle || subscriptions.size === 0)
94
+ return;
95
+ pollHandle = setInterval(() => pump(), POLL_INTERVAL_MS);
96
+ }
97
+ function stopPollingIfIdle() {
98
+ if (pollHandle && subscriptions.size === 0) {
99
+ clearInterval(pollHandle);
100
+ pollHandle = null;
101
+ }
102
+ }
103
+ function deltaFrame(change) {
104
+ return change.kind === "span"
105
+ ? { type: "activity_delta", runId: change.runId, seq: change.seq, span: toWireSpan(change.span) }
106
+ : {
107
+ type: "activity_delta",
108
+ runId: change.runId,
109
+ seq: change.seq,
110
+ event: toWireEvent(change.event),
111
+ };
112
+ }
113
+ function pump() {
114
+ if (pumping)
115
+ return;
116
+ pumping = true;
117
+ try {
118
+ // Nobody listening: skip the changes entirely, but keep the cursor at
119
+ // the log's head — otherwise the first subscriber's pump would replay
120
+ // history its snapshot already carries (harmless under the client's
121
+ // seq-discard rule, but pure waste). Side effects that must see every
122
+ // change (the notifier) keep their OWN cursor.
123
+ if (subscriptions.size === 0) {
124
+ cursor = store.latestChangeCursor();
125
+ return;
126
+ }
127
+ for (;;) {
128
+ const changes = store.changesSince(cursor, 200);
129
+ if (changes.length === 0)
130
+ break;
131
+ for (const change of changes) {
132
+ cursor = change.changeId;
133
+ const span = change.kind === "span" ? change.span : undefined;
134
+ if (span)
135
+ noteSpan(span);
136
+ const frame = deltaFrame(change);
137
+ for (const [ws, subs] of subscriptions) {
138
+ if (subs.some((s) => matches(s, change.runId, span))) {
139
+ sendTo(ws, frame);
140
+ }
141
+ }
142
+ }
143
+ if (changes.length < 200)
144
+ break;
145
+ }
146
+ }
147
+ catch (err) {
148
+ log?.emit({
149
+ severityText: "WARN",
150
+ body: "activity pump failed",
151
+ attributes: { error: err instanceof Error ? err.message : String(err) },
152
+ });
153
+ }
154
+ finally {
155
+ pumping = false;
156
+ }
157
+ }
158
+ function sendSnapshot(ws, sub) {
159
+ let spans = [];
160
+ let events = [];
161
+ const highWater = {};
162
+ if (sub.view === "run" && sub.runId) {
163
+ const snap = store.snapshotRun(sub.runId);
164
+ if (snap) {
165
+ spans = snap.spans;
166
+ events = snap.events;
167
+ highWater[snap.runId] = snap.highWaterSeq;
168
+ // No pump-cursor rewind: the pump cursor can only LAG the snapshot
169
+ // read (it never runs ahead of the DB), so unpumped changes are
170
+ // already inside this snapshot's high-water and the client's
171
+ // seq-discard rule absorbs them when the pump catches up.
172
+ }
173
+ }
174
+ else if (sub.view === "session" && sub.sessionId) {
175
+ for (const root of store.openRootSpans()) {
176
+ if (root.sessionId !== sub.sessionId)
177
+ continue;
178
+ const snap = store.snapshotRun(root.runId);
179
+ if (!snap)
180
+ continue;
181
+ spans = spans.concat(snap.spans);
182
+ events = events.concat(snap.events);
183
+ highWater[snap.runId] = snap.highWaterSeq;
184
+ }
185
+ }
186
+ else {
187
+ // Index view: open roots only — history is the REST activity API's job.
188
+ for (const root of store.openRootSpans()) {
189
+ spans.push(root);
190
+ highWater[root.runId] = store.runHighWaterSeq(root.runId);
191
+ }
192
+ }
193
+ for (const span of spans)
194
+ noteSpan(span);
195
+ const base = {
196
+ type: "activity_snapshot",
197
+ view: sub.view,
198
+ ...(sub.sessionId ? { sessionId: sub.sessionId } : {}),
199
+ ...(sub.runId ? { runId: sub.runId } : {}),
200
+ highWaterSeq: highWater,
201
+ };
202
+ // Chunk: first span/event batch in the base frame, then append frames
203
+ // for the rest (the client's applySnapshot merges append frames).
204
+ const wireSpans = spans.map(toWireSpan);
205
+ sendTo(ws, {
206
+ ...base,
207
+ spans: wireSpans.slice(0, SNAPSHOT_SPAN_CHUNK),
208
+ events: events.slice(0, SNAPSHOT_EVENT_CHUNK).map(toWireEvent),
209
+ });
210
+ for (let i = SNAPSHOT_SPAN_CHUNK; i < wireSpans.length; i += SNAPSHOT_SPAN_CHUNK) {
211
+ sendTo(ws, {
212
+ ...base,
213
+ spans: wireSpans.slice(i, i + SNAPSHOT_SPAN_CHUNK),
214
+ events: [],
215
+ append: true,
216
+ });
217
+ }
218
+ for (let i = SNAPSHOT_EVENT_CHUNK; i < events.length; i += SNAPSHOT_EVENT_CHUNK) {
219
+ sendTo(ws, {
220
+ ...base,
221
+ spans: [],
222
+ events: events.slice(i, i + SNAPSHOT_EVENT_CHUNK).map(toWireEvent),
223
+ append: true,
224
+ });
225
+ }
226
+ }
227
+ return {
228
+ handleSubscribe(ws, msg) {
229
+ // A scoped view without its scope id can never match anything and
230
+ // would only leak an all-runs snapshot shape — ignore it up front.
231
+ if ((msg.view === "session" && !msg.sessionId) || (msg.view === "run" && !msg.runId)) {
232
+ return;
233
+ }
234
+ const sub = {
235
+ view: msg.view,
236
+ ...(msg.sessionId ? { sessionId: msg.sessionId } : {}),
237
+ ...(msg.runId ? { runId: msg.runId } : {}),
238
+ };
239
+ const list = subscriptions.get(ws) ?? [];
240
+ if (!list.some((s) => subKey(s) === subKey(sub)))
241
+ list.push(sub);
242
+ subscriptions.set(ws, list);
243
+ ensurePolling();
244
+ try {
245
+ sendSnapshot(ws, sub);
246
+ }
247
+ catch (err) {
248
+ log?.emit({
249
+ severityText: "WARN",
250
+ body: "activity snapshot failed",
251
+ attributes: { error: err instanceof Error ? err.message : String(err) },
252
+ });
253
+ }
254
+ },
255
+ handleUnsubscribe(ws, msg) {
256
+ const list = subscriptions.get(ws);
257
+ if (!list)
258
+ return;
259
+ const key = subKey({
260
+ view: msg.view,
261
+ ...(msg.sessionId ? { sessionId: msg.sessionId } : {}),
262
+ ...(msg.runId ? { runId: msg.runId } : {}),
263
+ });
264
+ const remaining = list.filter((s) => subKey(s) !== key);
265
+ if (remaining.length > 0)
266
+ subscriptions.set(ws, remaining);
267
+ else
268
+ subscriptions.delete(ws);
269
+ stopPollingIfIdle();
270
+ },
271
+ dropConnection(ws) {
272
+ subscriptions.delete(ws);
273
+ stopPollingIfIdle();
274
+ },
275
+ pump,
276
+ isWatched(scope) {
277
+ for (const subs of subscriptions.values()) {
278
+ for (const s of subs) {
279
+ if (s.view === "index")
280
+ return true;
281
+ if (scope.runId && s.view === "run" && s.runId === scope.runId)
282
+ return true;
283
+ if (scope.sessionId && s.view === "session" && s.sessionId === scope.sessionId)
284
+ return true;
285
+ }
286
+ }
287
+ return false;
288
+ },
289
+ subscriptionCount() {
290
+ let n = 0;
291
+ for (const subs of subscriptions.values())
292
+ n += subs.length;
293
+ return n;
294
+ },
295
+ close() {
296
+ if (pollHandle)
297
+ clearInterval(pollHandle);
298
+ pollHandle = null;
299
+ subscriptions.clear();
300
+ },
301
+ };
302
+ }
303
+ function hasUsage(span) {
304
+ const u = span.usage;
305
+ return (u.inputTokens !== undefined ||
306
+ u.outputTokens !== undefined ||
307
+ u.cacheReadTokens !== undefined ||
308
+ u.cacheCreationTokens !== undefined ||
309
+ u.costUsd !== undefined ||
310
+ u.model !== undefined);
311
+ }
312
+ //# sourceMappingURL=stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/activity/stream.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOzE,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,EAML,KAAK,QAAQ,EAEd,MAAM,sBAAsB,CAAC;AAU9B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAmB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEnF,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,sEAAsE;IACtE,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB,kEAAkE;IAClE,EAAE,EAAE,QAAQ,CAAC;IACb,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,aAAa,EAAE,aAAa,CAAC;IAC7B,iDAAiD;IACjD,YAAY,IAAI,OAAO,CAAC;IACxB,6EAA6E;IAC7E,iBAAiB,IAAI,OAAO,CAAC;IAC7B,0DAA0D;IAC1D,KAAK,IAAI,IAAI,CAAC;CACf;AAqBD,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CA0OpE"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAQzE,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI1E,OAAO,EAML,KAAK,QAAQ,EAEd,MAAM,sBAAsB,CAAC;AAY9B,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAmB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGhE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEnF,YAAY,EAAE,WAAW,EAAE,CAAC;AAE5B,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,2DAA2D;AAC3D,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,sEAAsE;IACtE,MAAM,EAAE,YAAY,CAAC;IACrB;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB,kEAAkE;IAClE,EAAE,EAAE,QAAQ,CAAC;IACb,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,aAAa,EAAE,aAAa,CAAC;IAC7B,iDAAiD;IACjD,YAAY,IAAI,OAAO,CAAC;IACxB,6EAA6E;IAC7E,iBAAiB,IAAI,OAAO,CAAC;IAC7B,0DAA0D;IAC1D,KAAK,IAAI,IAAI,CAAC;CACf;AAqBD,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,UAAU,CAwPpE"}
package/dist/app.js CHANGED
@@ -6,6 +6,7 @@ import { resolveServerConfig } from "./config/env.js";
6
6
  import { createHealthRoutes, createStatusRoutes } from "./routes/health.js";
7
7
  import { createBrainRoutes } from "./routes/brain.js";
8
8
  import { createSessionRoutes } from "./routes/sessions.js";
9
+ import { createActivityRoutes } from "./routes/activity.js";
9
10
  import { createVoiceRoutes } from "./routes/voice.js";
10
11
  import { createFilesRoutes } from "./routes/files.js";
11
12
  import { createShareRoutes, shareTargetFallbackRoutes } from "./routes/share.js";
@@ -17,6 +18,8 @@ import { resolveAuthMode, assertAuthConfig, authGuard, authRoutes, isWsAuthorize
17
18
  import { passkeyPublicRoutes, passkeyManagementRoutes, passwordLoginDisabled, assertPasskeyConfig, } from "./middleware/passkeys.js";
18
19
  import { createUiDb } from "./db/client.js";
19
20
  import { getHiddenModelIds } from "./db/settings.js";
21
+ import { createActivityRuntime } from "./activity/runtime.js";
22
+ import { createPushRoutes } from "./routes/push.js";
20
23
  import { assertBackendResolvable, createBackendRegistry, } from "./agent/backend.js";
21
24
  import { createBrainClient } from "./brain/client.js";
22
25
  import { createCronScheduler } from "./cron/scheduler.js";
@@ -79,6 +82,9 @@ export function createApp(options = {}) {
79
82
  const db = createUiDb(config.dbPath, { log: dbLog });
80
83
  const brain = createBrainClient({ brainPath: config.brainPath });
81
84
  const cron = createCronScheduler({ db, brain, log: observability.logger("cron") });
85
+ // Activity record: span store + live stream + notifications + lifecycle
86
+ // sweeps, owned by the runtime (see activity/runtime.ts).
87
+ const activity = createActivityRuntime(db, { log: observability.logger("activity") });
82
88
  const registry = options.registry ??
83
89
  createBackendRegistry({
84
90
  brainPath: config.brainPath,
@@ -97,6 +103,11 @@ export function createApp(options = {}) {
97
103
  : {}),
98
104
  maxConcurrentSessions: () => config.maxConcurrentSessions,
99
105
  wsRate: config.wsRate,
106
+ activity: {
107
+ store: activity.store,
108
+ stream: activity.stream,
109
+ query: activity.query,
110
+ },
100
111
  });
101
112
  const wsUpgrade = createWsUpgrade(host);
102
113
  // One instrument for every way a login can fail — passkey ceremonies and
@@ -185,6 +196,10 @@ export function createApp(options = {}) {
185
196
  }));
186
197
  app.route("/api", createBrainRoutes({ brain, brainPath: config.brainPath, keyterms }));
187
198
  app.route("/api", createSessionRoutes({ registry, db }));
199
+ // Behind the guard by mount position, like /api/status: the activity
200
+ // record leaks strictly more (session activity, errors, spend).
201
+ app.route("/api", createActivityRoutes({ db, store: activity.store, notifier: activity.notifier }));
202
+ app.route("/api", createPushRoutes({ sender: activity.pushSender }));
188
203
  app.route("/api", createVoiceRoutes({ voice: config.voice, keyterms }));
189
204
  app.route("/api", createFilesRoutes({ brainRoot: config.brainPath, log: observability.logger("files") }));
190
205
  app.route("/api", createShareRoutes({
@@ -242,6 +257,7 @@ export function createApp(options = {}) {
242
257
  isTurnActive: () => host.coordinator.isTurnActive(),
243
258
  cancelActiveTurns: () => host.coordinator.cancelAll("Server shutting down"),
244
259
  close: () => {
260
+ activity.close();
245
261
  db.close();
246
262
  },
247
263
  };
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/cron/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,MAAM,WAAW,aAAa;IAC5B,aAAa,IAAI,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAOD,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAqB1E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,EAAE,EAAE,QAAQ,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,aAAa,CAuEhB"}
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/cron/scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQtD,MAAM,WAAW,aAAa;IAC5B,aAAa,IAAI,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,CAAC;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAOD,6DAA6D;AAC7D,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAqB1E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,EAAE,EAAE,QAAQ,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;IACnB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,aAAa,CA2FhB"}
@@ -68,12 +68,27 @@ export function createCronScheduler(deps) {
68
68
  }
69
69
  return {
70
70
  getCronStatus() {
71
- return jobs.map((job) => {
72
- const lastRun = db
73
- .query("SELECT * FROM cron_runs WHERE job_name = ? ORDER BY started_at DESC LIMIT 1")
74
- .get(job.name);
71
+ // Every job name that ever recorded a run, not just the two in-process
72
+ // triggers: module jobs and the maintain/digest crontab entries land in
73
+ // cron_runs through the same recorder and were previously invisible
74
+ // here (the "cron-status name gap"). The in-process names are unioned
75
+ // in so a fresh deployment still lists them before their first run.
76
+ // One window query yields each job's latest run.
77
+ const lastRuns = db
78
+ .query(`SELECT job_name, started_at, status, duration_ms, error_message FROM (
79
+ SELECT *, ROW_NUMBER() OVER (
80
+ PARTITION BY job_name ORDER BY started_at DESC
81
+ ) AS rn FROM cron_runs
82
+ ) WHERE rn = 1 ORDER BY job_name`)
83
+ .all();
84
+ const byName = new Map(lastRuns.map((r) => [r.job_name, r]));
85
+ const names = [
86
+ ...new Set([...jobs.map((j) => j.name), ...lastRuns.map((r) => r.job_name)]),
87
+ ];
88
+ return names.map((name) => {
89
+ const lastRun = byName.get(name);
75
90
  return {
76
- name: job.name,
91
+ name,
77
92
  lastRunAt: lastRun?.started_at ?? null,
78
93
  lastStatus: lastRun?.status ?? null,
79
94
  lastDurationMs: lastRun?.duration_ms ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/cron/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/cron/scheduler.ts"],"names":[],"mappings":"AAgCA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY,EAAE,OAAe;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,EAAE,CAAC,OAAO,CACR,+EAA+E,CAChF,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAE1B,OAAO;QACL,MAAM,CAAC,KAAc;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;YAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,EAAE,CAAC,OAAO,CACR,iHAAiH,CAClH,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,OAAO,CACR,kIAAkI,CACnI,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAKnC;IACC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAEhC,MAAM,IAAI,GAAc;QACtB;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,KAAK,IAAI,EAAE;gBAClB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;YACzB,CAAC;SACF;KACF,CAAC;IAEF,KAAK,UAAU,MAAM,CAAC,GAAY;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,uEAAuE;QACvE,4CAA4C;QAC5C,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,GAAG,EAAE,IAAI,CAAC;gBACR,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,eAAe;gBACrB,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE;aACrE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACvB,GAAG,EAAE,IAAI,CAAC;gBACR,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,YAAY;gBAClB,UAAU,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;aAC9C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa;YACX,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,sEAAsE;YACtE,oEAAoE;YACpE,iDAAiD;YACjD,MAAM,QAAQ,GAAG,EAAE;iBAChB,KAAK,CACJ;;;;4CAIkC,CACnC;iBACA,GAAG,EAMJ,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM,KAAK,GAAG;gBACZ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC7E,CAAC;YACF,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO;oBACL,IAAI;oBACJ,SAAS,EAAE,OAAO,EAAE,UAAU,IAAI,IAAI;oBACtC,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI;oBACnC,cAAc,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;oBAC5C,SAAS,EAAE,OAAO,EAAE,aAAa,IAAI,IAAI;iBAC1C,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,IAAY;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YACvB,qDAAqD;YACrD,MAAM,CAAC,GAAG,CAAC,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,QAAQ,CAMpF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,QAAQ,CAYpF"}
package/dist/db/client.js CHANGED
@@ -5,6 +5,12 @@ export function createUiDb(dbPath, options = {}) {
5
5
  const db = new Database(dbPath, { create: true });
6
6
  db.exec("PRAGMA journal_mode = WAL");
7
7
  db.exec("PRAGMA foreign_keys = ON");
8
+ // Two processes write this database (the server and the cron wrapper). The
9
+ // timeout makes a writer wait for a held lock instead of failing on it.
10
+ // It does NOT rescue a deferred transaction that loses the snapshot-upgrade
11
+ // race (that still throws SQLITE_BUSY) — which is why activity writes use
12
+ // immediate transactions; see src/activity/store.ts.
13
+ db.exec("PRAGMA busy_timeout = 5000");
8
14
  runMigrations(db, options.log);
9
15
  return db;
10
16
  }
@@ -40,12 +46,32 @@ function runMigrations(database, log) {
40
46
  continue;
41
47
  log?.emit({ severityText: "INFO", body: "applying migration", attributes: { file } });
42
48
  const sql = readFileSync(join(migrationsDir, file), "utf-8");
43
- database.transaction(() => {
44
- database.exec(sql);
45
- database
46
- .prepare("INSERT INTO _migrations (filename, applied_at) VALUES (?, ?)")
47
- .run(file, Date.now());
48
- })();
49
+ try {
50
+ database.transaction(() => {
51
+ database.exec(sql);
52
+ database
53
+ .prepare("INSERT INTO _migrations (filename, applied_at) VALUES (?, ?)")
54
+ .run(file, Date.now());
55
+ })();
56
+ }
57
+ catch (err) {
58
+ // Two processes racing a first boot: the loser's transaction fails on
59
+ // the UNIQUE _migrations.filename insert (or on DDL the winner already
60
+ // ran). If the file is now recorded as applied, treat it as such and
61
+ // move on; anything else is a real migration failure.
62
+ const nowApplied = database
63
+ .query("SELECT 1 FROM _migrations WHERE filename = ?")
64
+ .get(file);
65
+ const uniqueViolation = err instanceof Error &&
66
+ err.message.includes("UNIQUE constraint failed: _migrations.filename");
67
+ if (!nowApplied && !uniqueViolation)
68
+ throw err;
69
+ log?.emit({
70
+ severityText: "INFO",
71
+ body: "migration applied concurrently by another process; skipping",
72
+ attributes: { file },
73
+ });
74
+ }
49
75
  }
50
76
  }
51
77
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAsB5B,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,UAA6B,EAAE;IACxE,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB,EAAE,GAAY;IACrD,kCAAkC;IAClC,QAAQ,CAAC,IAAI,CAAC;;;;;;GAMb,CAAC,CAAC;IAEH,uEAAuE;IACvE,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;IAChE,IAAI,KAAe,CAAC;IACpB,IAAI,CAAC;QACH,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACjC,IAAI,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC,CAAC;QAC1F,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,QAAQ;SACL,KAAK,CAAC,kCAAkC,CAAC;SACzC,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAC/B,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAEhC,GAAG,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACtF,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAE7D,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,QAAQ;iBACL,OAAO,CAAC,8DAA8D,CAAC;iBACvE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -21,6 +21,10 @@ export { resolveTurnTarget } from "./ws/routing.js";
21
21
  export { createSessionCatalog, type SessionCatalog, } from "./ws/session-catalog.js";
22
22
  export { createBrainClient, type BrainClient } from "./brain/client.js";
23
23
  export { recordCronRun, type CronRunRecord } from "./cron/scheduler.js";
24
+ export { createActivityStore, SPAN_OUTCOMES, type ActivityStore, type SpanRow, type SpanEventRow, type SpanOutcome, type SpanUsage, type ActivityChange, } from "./activity/store.js";
25
+ export { createActivityStream, type ActivityStream } from "./activity/stream.js";
26
+ export { ingestSpanSink } from "./activity/span-sink.js";
27
+ export { generateActivityDigest, latestActivityDigest, DIGEST_JOB_NAME, type ActivityDigest, } from "./activity/digest.js";
24
28
  export { pruneShareStaging, shareStagingRoot } from "./share/staging.js";
25
29
  export { createObservability, createRecordingObservability, createSilentObservability, createConsoleLoggerProvider, createRecordingLoggerProvider, createSilentLoggerProvider, createInMemoryMeterProvider, SEVERITIES, severityRank, seriesKey, } from "./observability/index.js";
26
30
  export type { Observability, ObservabilityOptions, RecordingObservability, RecordingLoggerProvider, InMemoryMeterProvider, LogReader, LogWriter, MetricsReader, Severity, CapturedLog, LogQuery, MetricPoint, MetricSnapshot, } from "./observability/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EACL,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIxE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKzE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,aAAa,EACb,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EACL,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,GACpB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAKzE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,SAAS,EACT,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,aAAa,EACb,UAAU,EACV,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -34,6 +34,13 @@ export { createBrainClient } from "./brain/client.js";
34
34
  // an external scheduler's wrapper records each run here so /api/status's
35
35
  // `cronJobs` reflects what actually ran.
36
36
  export { recordCronRun } from "./cron/scheduler.js";
37
+ // The activity record. The cron wrapper is a second PROCESS writing spans
38
+ // into the same store (root span + heartbeat + span-sink ingest); everything
39
+ // else consumes it through the app.
40
+ export { createActivityStore, SPAN_OUTCOMES, } from "./activity/store.js";
41
+ export { createActivityStream } from "./activity/stream.js";
42
+ export { ingestSpanSink } from "./activity/span-sink.js";
43
+ export { generateActivityDigest, latestActivityDigest, DIGEST_JOB_NAME, } from "./activity/digest.js";
37
44
  // Share staging: a deployment can sweep expired staging dirs at boot; the
38
45
  // intake route also sweeps opportunistically on every share.
39
46
  export { pruneShareStaging, shareStagingRoot } from "./share/staging.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,SAAS,GAIV,MAAM,UAAU,CAAC;AAElB,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EACL,QAAQ,EACR,mBAAmB,GAOpB,MAAM,iBAAiB,CAAC;AAEzB,4EAA4E;AAC5E,+BAA+B;AAC/B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,GAK5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,GAGhB,MAAM,sBAAsB,CAAC;AAE9B,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,uEAAuE;AACvE,qBAAqB;AACrB,OAAO,EACL,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,+CAA+C;AAC/C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,aAAa,GAEd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AAEjC,0EAA0E;AAC1E,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAExE,8EAA8E;AAC9E,yEAAyE;AACzE,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAExE,0EAA0E;AAC1E,6DAA6D;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,0BAA0B,CAAC;AAiBlC,wEAAwE;AACxE,OAAO,EACL,aAAa,EACb,UAAU,GAEX,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACL,SAAS,GAIV,MAAM,UAAU,CAAC;AAElB,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EACL,QAAQ,EACR,mBAAmB,GAOpB,MAAM,iBAAiB,CAAC;AAEzB,4EAA4E;AAC5E,+BAA+B;AAC/B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,GAK5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,GAGhB,MAAM,sBAAsB,CAAC;AAE9B,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,uEAAuE;AACvE,qBAAqB;AACrB,OAAO,EACL,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,+CAA+C;AAC/C,OAAO,EAAE,MAAM,EAAsB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,aAAa,GAEd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AAEjC,0EAA0E;AAC1E,2BAA2B;AAC3B,OAAO,EAAE,iBAAiB,EAAoB,MAAM,mBAAmB,CAAC;AAExE,8EAA8E;AAC9E,yEAAyE;AACzE,yCAAyC;AACzC,OAAO,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAExE,0EAA0E;AAC1E,6EAA6E;AAC7E,oCAAoC;AACpC,OAAO,EACL,mBAAmB,EACnB,aAAa,GAOd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,GAEhB,MAAM,sBAAsB,CAAC;AAE9B,0EAA0E;AAC1E,6DAA6D;AAC7D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEzE,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,OAAO,EACL,mBAAmB,EACnB,4BAA4B,EAC5B,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,0BAA0B,CAAC;AAiBlC,wEAAwE;AACxE,OAAO,EACL,aAAa,EACb,UAAU,GAEX,MAAM,4BAA4B,CAAC"}