@schlessera/brain-ui-server 0.34.0 → 0.35.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 (169) hide show
  1. package/README.md +28 -0
  2. package/dist/activity/notify.d.ts.map +1 -1
  3. package/dist/activity/notify.js +18 -8
  4. package/dist/activity/notify.js.map +1 -1
  5. package/dist/activity/push-sender.d.ts +7 -3
  6. package/dist/activity/push-sender.d.ts.map +1 -1
  7. package/dist/activity/push-sender.js +45 -11
  8. package/dist/activity/push-sender.js.map +1 -1
  9. package/dist/activity/query.d.ts.map +1 -1
  10. package/dist/activity/query.js +8 -0
  11. package/dist/activity/query.js.map +1 -1
  12. package/dist/activity/recorder.d.ts +11 -1
  13. package/dist/activity/recorder.d.ts.map +1 -1
  14. package/dist/activity/recorder.js +52 -2
  15. package/dist/activity/recorder.js.map +1 -1
  16. package/dist/activity/runtime.d.ts.map +1 -1
  17. package/dist/activity/runtime.js +2 -5
  18. package/dist/activity/runtime.js.map +1 -1
  19. package/dist/activity/sql.d.ts +34 -0
  20. package/dist/activity/sql.d.ts.map +1 -0
  21. package/dist/activity/sql.js +114 -0
  22. package/dist/activity/sql.js.map +1 -0
  23. package/dist/activity/store.d.ts +7 -0
  24. package/dist/activity/store.d.ts.map +1 -1
  25. package/dist/activity/store.js +48 -113
  26. package/dist/activity/store.js.map +1 -1
  27. package/dist/activity/stream.d.ts +3 -1
  28. package/dist/activity/stream.d.ts.map +1 -1
  29. package/dist/activity/stream.js +32 -17
  30. package/dist/activity/stream.js.map +1 -1
  31. package/dist/app-env.d.ts +8 -0
  32. package/dist/app-env.d.ts.map +1 -0
  33. package/dist/app-env.js +2 -0
  34. package/dist/app-env.js.map +1 -0
  35. package/dist/app.d.ts.map +1 -1
  36. package/dist/app.js +28 -3
  37. package/dist/app.js.map +1 -1
  38. package/dist/brain/client.d.ts +4 -2
  39. package/dist/brain/client.d.ts.map +1 -1
  40. package/dist/brain/client.js +60 -20
  41. package/dist/brain/client.js.map +1 -1
  42. package/dist/brain/types.d.ts +9 -0
  43. package/dist/brain/types.d.ts.map +1 -1
  44. package/dist/cron/run-job.d.ts.map +1 -1
  45. package/dist/cron/run-job.js +60 -10
  46. package/dist/cron/run-job.js.map +1 -1
  47. package/dist/db/principals.d.ts +72 -0
  48. package/dist/db/principals.d.ts.map +1 -0
  49. package/dist/db/principals.js +294 -0
  50. package/dist/db/principals.js.map +1 -0
  51. package/dist/files/walker.d.ts.map +1 -1
  52. package/dist/files/walker.js +6 -1
  53. package/dist/files/walker.js.map +1 -1
  54. package/dist/index.d.ts +4 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/middleware/auth.d.ts +37 -9
  59. package/dist/middleware/auth.d.ts.map +1 -1
  60. package/dist/middleware/auth.js +148 -74
  61. package/dist/middleware/auth.js.map +1 -1
  62. package/dist/middleware/passkeys.d.ts +9 -7
  63. package/dist/middleware/passkeys.d.ts.map +1 -1
  64. package/dist/middleware/passkeys.js +25 -7
  65. package/dist/middleware/passkeys.js.map +1 -1
  66. package/dist/middleware/principals.d.ts +18 -0
  67. package/dist/middleware/principals.d.ts.map +1 -0
  68. package/dist/middleware/principals.js +138 -0
  69. package/dist/middleware/principals.js.map +1 -0
  70. package/dist/middleware/require-owner.d.ts +5 -0
  71. package/dist/middleware/require-owner.d.ts.map +1 -0
  72. package/dist/middleware/require-owner.js +10 -0
  73. package/dist/middleware/require-owner.js.map +1 -0
  74. package/dist/observability/loggers.js +1 -1
  75. package/dist/observability/loggers.js.map +1 -1
  76. package/dist/routes/activity.d.ts.map +1 -1
  77. package/dist/routes/activity.js +3 -0
  78. package/dist/routes/activity.js.map +1 -1
  79. package/dist/routes/brain.d.ts.map +1 -1
  80. package/dist/routes/brain.js +102 -63
  81. package/dist/routes/brain.js.map +1 -1
  82. package/dist/routes/files.d.ts.map +1 -1
  83. package/dist/routes/files.js +7 -2
  84. package/dist/routes/files.js.map +1 -1
  85. package/dist/routes/push.d.ts +61 -2
  86. package/dist/routes/push.d.ts.map +1 -1
  87. package/dist/routes/push.js +8 -3
  88. package/dist/routes/push.js.map +1 -1
  89. package/dist/routes/sessions.d.ts.map +1 -1
  90. package/dist/routes/sessions.js +30 -4
  91. package/dist/routes/sessions.js.map +1 -1
  92. package/dist/share/staging.d.ts.map +1 -1
  93. package/dist/share/staging.js +11 -4
  94. package/dist/share/staging.js.map +1 -1
  95. package/dist/ws/bridge.d.ts.map +1 -1
  96. package/dist/ws/bridge.js +6 -2
  97. package/dist/ws/bridge.js.map +1 -1
  98. package/dist/ws/clients.d.ts +9 -2
  99. package/dist/ws/clients.d.ts.map +1 -1
  100. package/dist/ws/clients.js +44 -6
  101. package/dist/ws/clients.js.map +1 -1
  102. package/dist/ws/connection.d.ts +7 -4
  103. package/dist/ws/connection.d.ts.map +1 -1
  104. package/dist/ws/connection.js +83 -12
  105. package/dist/ws/connection.js.map +1 -1
  106. package/dist/ws/dispatch.d.ts +12 -1
  107. package/dist/ws/dispatch.d.ts.map +1 -1
  108. package/dist/ws/dispatch.js +46 -6
  109. package/dist/ws/dispatch.js.map +1 -1
  110. package/dist/ws/history.d.ts.map +1 -1
  111. package/dist/ws/history.js +7 -5
  112. package/dist/ws/history.js.map +1 -1
  113. package/dist/ws/host.d.ts +22 -0
  114. package/dist/ws/host.d.ts.map +1 -1
  115. package/dist/ws/host.js +39 -1
  116. package/dist/ws/host.js.map +1 -1
  117. package/dist/ws/run-session.d.ts +7 -7
  118. package/dist/ws/run-session.d.ts.map +1 -1
  119. package/dist/ws/run-session.js +208 -52
  120. package/dist/ws/run-session.js.map +1 -1
  121. package/dist/ws/shrink.d.ts +3 -1
  122. package/dist/ws/shrink.d.ts.map +1 -1
  123. package/dist/ws/shrink.js +46 -16
  124. package/dist/ws/shrink.js.map +1 -1
  125. package/dist/ws/turns.d.ts +58 -3
  126. package/dist/ws/turns.d.ts.map +1 -1
  127. package/dist/ws/turns.js +101 -2
  128. package/dist/ws/turns.js.map +1 -1
  129. package/migrations/011_principals.sql +13 -0
  130. package/migrations/012_activity_principals.sql +12 -0
  131. package/migrations/013_push_subscription_principals.sql +7 -0
  132. package/migrations/014_invalidate_legacy_sessions.sql +14 -0
  133. package/package.json +3 -3
  134. package/src/activity/notify.ts +16 -7
  135. package/src/activity/push-sender.ts +79 -16
  136. package/src/activity/query.ts +8 -0
  137. package/src/activity/recorder.ts +68 -3
  138. package/src/activity/runtime.ts +2 -5
  139. package/src/activity/sql.ts +122 -0
  140. package/src/activity/store.ts +73 -155
  141. package/src/activity/stream.ts +37 -17
  142. package/src/app-env.ts +8 -0
  143. package/src/app.ts +33 -4
  144. package/src/brain/client.ts +61 -20
  145. package/src/brain/types.ts +10 -0
  146. package/src/cron/run-job.ts +41 -17
  147. package/src/db/principals.ts +452 -0
  148. package/src/files/walker.ts +5 -1
  149. package/src/index.ts +6 -1
  150. package/src/middleware/auth.ts +241 -81
  151. package/src/middleware/passkeys.ts +35 -14
  152. package/src/middleware/principals.ts +189 -0
  153. package/src/middleware/require-owner.ts +13 -0
  154. package/src/observability/loggers.ts +1 -1
  155. package/src/routes/activity.ts +3 -0
  156. package/src/routes/brain.ts +107 -70
  157. package/src/routes/files.ts +10 -5
  158. package/src/routes/push.ts +11 -5
  159. package/src/routes/sessions.ts +45 -20
  160. package/src/share/staging.ts +11 -4
  161. package/src/ws/bridge.ts +14 -2
  162. package/src/ws/clients.ts +52 -7
  163. package/src/ws/connection.ts +98 -20
  164. package/src/ws/dispatch.ts +66 -6
  165. package/src/ws/history.ts +7 -5
  166. package/src/ws/host.ts +59 -1
  167. package/src/ws/run-session.ts +247 -74
  168. package/src/ws/shrink.ts +48 -14
  169. package/src/ws/turns.ts +136 -5
@@ -95,22 +95,44 @@ export function probeBrainCliVersion(brainPath, log) {
95
95
  `or newer is required; bump the brain repo's @schlessera/brain pin before deploying.`);
96
96
  }
97
97
  }
98
+ /** Interactive search must finish or fail within a bounded time. */
99
+ const SEARCH_TIMEOUT_MS = 15_000;
98
100
  export function createBrainClient(opts) {
99
101
  const { brainPath } = opts;
100
- async function execBrain(args) {
102
+ const searchTimeoutMs = opts.searchTimeoutMs ?? SEARCH_TIMEOUT_MS;
103
+ if (!Number.isFinite(searchTimeoutMs) || searchTimeoutMs <= 0) {
104
+ throw new Error("searchTimeoutMs must be a positive finite number");
105
+ }
106
+ async function execBrain(args, signal) {
107
+ signal?.throwIfAborted();
101
108
  const proc = Bun.spawn([...brainCliCommand(brainPath), ...args], {
102
109
  cwd: brainPath,
103
110
  stdout: "pipe",
104
111
  stderr: "pipe",
105
112
  // Force JSON output when not a TTY
106
113
  env: subprocessEnv("brainCli", { NO_COLOR: "1" }),
114
+ // Only read-only search passes a signal. Kill even a CLI that ignores
115
+ // SIGTERM; abandoning a request must not leave the local process alive.
116
+ ...(signal ? { signal, killSignal: "SIGKILL" } : {}),
107
117
  });
108
- const [stdout, stderr] = await Promise.all([
109
- new Response(proc.stdout).text(),
110
- new Response(proc.stderr).text(),
111
- ]);
112
- const exitCode = await proc.exited;
113
- return { stdout, stderr, exitCode };
118
+ try {
119
+ const [stdout, stderr, exitCode] = await Promise.all([
120
+ new Response(proc.stdout).text(),
121
+ new Response(proc.stderr).text(),
122
+ proc.exited,
123
+ ]);
124
+ signal?.throwIfAborted();
125
+ return { stdout, stderr, exitCode };
126
+ }
127
+ catch (error) {
128
+ // A pipe-read failure also abandons search. Reap before its caller
129
+ // clears the deadline; otherwise that failure could orphan the child.
130
+ if (signal) {
131
+ proc.kill("SIGKILL");
132
+ await proc.exited;
133
+ }
134
+ throw error;
135
+ }
114
136
  }
115
137
  function parseJsonOutput(result) {
116
138
  if (result.exitCode !== 0) {
@@ -128,21 +150,31 @@ export function createBrainClient(opts) {
128
150
  cliCommand() {
129
151
  return brainCliCommand(brainPath);
130
152
  },
131
- async search(query, opts) {
153
+ async search(query, searchOpts) {
132
154
  const args = ["search"];
133
- if (opts?.type)
134
- args.push("--type", opts.type);
135
- if (opts?.tag)
136
- args.push("--tag", opts.tag);
137
- if (opts?.limit)
138
- args.push("--limit", String(opts.limit));
139
- if (opts?.mode)
140
- args.push("--mode", opts.mode);
155
+ if (searchOpts?.type)
156
+ args.push("--type", searchOpts.type);
157
+ if (searchOpts?.tag)
158
+ args.push("--tag", searchOpts.tag);
159
+ if (searchOpts?.limit)
160
+ args.push("--limit", String(searchOpts.limit));
161
+ if (searchOpts?.mode)
162
+ args.push("--mode", searchOpts.mode);
141
163
  args.push("--", query);
142
- const result = await execBrain(args);
143
- const parsed = parseJsonOutput(result);
144
- // brain returns {results, warnings} since 22e82e1; tolerate the old bare array
145
- return Array.isArray(parsed) ? { results: parsed, warnings: [] } : parsed;
164
+ const deadline = new AbortController();
165
+ const timer = setTimeout(() => deadline.abort(new DOMException("Search timed out. Please try again.", "TimeoutError")), searchTimeoutMs);
166
+ const signal = searchOpts?.signal
167
+ ? AbortSignal.any([searchOpts.signal, deadline.signal])
168
+ : deadline.signal;
169
+ try {
170
+ const result = await execBrain(args, signal);
171
+ const parsed = parseJsonOutput(result);
172
+ // brain returns {results, warnings} since 22e82e1; tolerate the old bare array
173
+ return Array.isArray(parsed) ? { results: parsed, warnings: [] } : parsed;
174
+ }
175
+ finally {
176
+ clearTimeout(timer);
177
+ }
146
178
  },
147
179
  async briefing() {
148
180
  const result = await execBrain(["briefing"]);
@@ -214,6 +246,14 @@ export function createBrainClient(opts) {
214
246
  if (result.exitCode !== 0) {
215
247
  throw new Error(`brain add failed: ${result.stderr}`);
216
248
  }
249
+ const parsed = parseJsonOutput(result);
250
+ if (!parsed || typeof parsed !== "object" || typeof parsed.path !== "string" ||
251
+ typeof parsed.indexed !== "boolean" || typeof parsed.title !== "string" ||
252
+ typeof parsed.type !== "string" || (parsed.indexError !== undefined && typeof parsed.indexError !== "string") ||
253
+ !["created", "appended"].includes(parsed.action)) {
254
+ throw new Error("Capture completed but its outcome could not be read. Check your files before adding it again.");
255
+ }
256
+ return parsed;
217
257
  },
218
258
  async index(opts) {
219
259
  const args = ["index"];
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/brain/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/brain/client.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,13 @@ export interface BrainSyncResult {
38
38
  conflicts: number;
39
39
  message: string;
40
40
  }
41
+ /** Outcome of saving content, including a recoverable indexing failure. */
42
+ export interface BrainAddResult {
43
+ action: "created" | "appended";
44
+ path: string;
45
+ title: string;
46
+ type: string;
47
+ indexed: boolean;
48
+ indexError?: string;
49
+ }
41
50
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/brain/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,kGAAkG;IAClG,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/brain/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,kGAAkG;IAClG,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,2EAA2E;AAC3E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-job.d.ts","sourceRoot":"","sources":["../../src/cron/run-job.ts"],"names":[],"mappings":"AAYA,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,kFAAkF;AAClF,eAAO,MAAM,YAAY,QAAS,CAAC;AACnC,gEAAgE;AAChE,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,UAAU,QAAQ;IAChB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;KACzC,KACE,UAAU,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,KACb,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAUD,gFAAgF;AAChF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7E;AA0FD,gFAAgF;AAChF,wBAAsB,MAAM,CAC1B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,kBAAuB,GACpC,OAAO,CAAC,MAAM,CAAC,CAmEjB"}
1
+ {"version":3,"file":"run-job.d.ts","sourceRoot":"","sources":["../../src/cron/run-job.ts"],"names":[],"mappings":"AAaA,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AACvC,kFAAkF;AAClF,eAAO,MAAM,YAAY,QAAS,CAAC;AACnC,gEAAgE;AAChE,eAAO,MAAM,aAAa,6BAA6B,CAAC;AAExD,UAAU,QAAQ;IAChB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9B;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,UAAU,WAAW;IACnB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1E,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE;QACP,KAAK,EAAE,SAAS,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;KACzC,KACE,UAAU,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,KACb,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAUD,gFAAgF;AAChF,wBAAsB,SAAS,CAC7B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC7B,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7E;AAkGD,gFAAgF;AAChF,wBAAsB,MAAM,CAC1B,OAAO,EAAE,aAAa,EACtB,YAAY,GAAE,kBAAuB,GACpC,OAAO,CAAC,MAAM,CAAC,CA4EjB"}
@@ -7,6 +7,7 @@ import { unlinkSync } from "fs";
7
7
  import { ingestSpanSink } from "../activity/span-sink.js";
8
8
  import { createActivityStore } from "../activity/store.js";
9
9
  import { createUiDb } from "../db/client.js";
10
+ import { resolveSystemPrincipal } from "../db/principals.js";
10
11
  import { recordCronRun } from "./scheduler.js";
11
12
  /** Tail of stderr retained for the cron_runs error row. */
12
13
  export const STDERR_TAIL_CHARS = 2_000;
@@ -20,26 +21,48 @@ function messageOf(error) {
20
21
  return error instanceof Error ? error.message : String(error);
21
22
  }
22
23
  function writeLine(sink, text) {
23
- sink.write(`${text}\n`);
24
+ try {
25
+ sink.write(`${text}\n`);
26
+ }
27
+ catch { /* Logging cannot stop the job. */ }
24
28
  }
25
29
  /** Forward a stream verbatim while exposing decoded chunks for tail capture. */
26
30
  export async function teeStream(stream, sink, onText) {
27
31
  const decoder = new TextDecoder();
28
- for await (const chunk of stream) {
29
- const text = decoder.decode(chunk, { stream: true });
30
- sink.write(text);
32
+ let forwarding = true;
33
+ const forward = async (text) => {
31
34
  onText(text);
35
+ if (!forwarding)
36
+ return;
37
+ try {
38
+ await sink.write(text);
39
+ }
40
+ catch {
41
+ forwarding = false;
42
+ }
43
+ };
44
+ for await (const chunk of stream) {
45
+ await forward(decoder.decode(chunk, { stream: true }));
32
46
  }
47
+ const trailing = decoder.decode();
48
+ if (trailing)
49
+ await forward(trailing);
33
50
  }
34
51
  /** Keep the last `cap` characters, never the head. */
35
52
  export function appendTail(current, text, cap) {
36
53
  return (current + text).slice(-cap);
37
54
  }
38
55
  async function startRecord(name, sinkPath, command, dbPath, stderr) {
56
+ let db;
39
57
  try {
40
- const db = createUiDb(dbPath);
58
+ db = createUiDb(dbPath);
59
+ const openedDb = db;
41
60
  const record = recordCronRun(db, name);
42
61
  const store = createActivityStore(db, { writer: `cron:${process.pid}` });
62
+ const principal = resolveSystemPrincipal(db, {
63
+ identity: "scheduled-jobs",
64
+ label: "Scheduled jobs",
65
+ });
43
66
  const runId = `cron-${name}-${Date.now()}`;
44
67
  const rootSpanId = `${runId}:root`;
45
68
  store.startSpan({
@@ -49,6 +72,7 @@ async function startRecord(name, sinkPath, command, dbPath, stderr) {
49
72
  kind: "cron",
50
73
  origin: "cron",
51
74
  jobName: name,
75
+ principalId: principal.id,
52
76
  });
53
77
  let sinkOffset = 0;
54
78
  const ingest = () => {
@@ -102,11 +126,15 @@ async function startRecord(name, sinkPath, command, dbPath, stderr) {
102
126
  },
103
127
  close() {
104
128
  clearInterval(heartbeat);
105
- db.close();
129
+ openedDb.close();
106
130
  },
107
131
  };
108
132
  }
109
133
  catch (error) {
134
+ try {
135
+ db?.close();
136
+ }
137
+ catch { /* Preserve fail-open tracking. */ }
110
138
  writeLine(stderr, `[cron-run] tracking unavailable (job runs anyway): ${messageOf(error)}`);
111
139
  return null;
112
140
  }
@@ -118,7 +146,13 @@ export async function runJob(options, dependencies = {}) {
118
146
  const sinkPath = dependencies.sinkPath ??
119
147
  `/tmp/brain-activity-sink-${process.pid}-${Date.now()}.jsonl`;
120
148
  const beginRecord = dependencies.startRecord ?? startRecord;
121
- const recorder = await beginRecord(options.jobName, sinkPath, options.command, options.dbPath, stderr);
149
+ let recorder = null;
150
+ try {
151
+ recorder = await beginRecord(options.jobName, sinkPath, options.command, options.dbPath, stderr);
152
+ }
153
+ catch (error) {
154
+ writeLine(stderr, `[cron-run] tracking unavailable (job runs anyway): ${messageOf(error)}`);
155
+ }
122
156
  let exitCode;
123
157
  let errorMessage;
124
158
  let outputTail = "";
@@ -131,7 +165,7 @@ export async function runJob(options, dependencies = {}) {
131
165
  env: { ...options.childEnv, [SPAN_SINK_ENV]: sinkPath },
132
166
  });
133
167
  let stderrTail = "";
134
- await Promise.all([
168
+ const outcomes = await Promise.allSettled([
135
169
  teeStream(proc.stdout, stdout, (text) => {
136
170
  outputTail = appendTail(outputTail, text, OUTPUT_TAIL_CHARS);
137
171
  }),
@@ -139,8 +173,17 @@ export async function runJob(options, dependencies = {}) {
139
173
  stderrTail = appendTail(stderrTail, text, STDERR_TAIL_CHARS);
140
174
  outputTail = appendTail(outputTail, text, OUTPUT_TAIL_CHARS);
141
175
  }),
176
+ proc.exited,
142
177
  ]);
143
- exitCode = await proc.exited;
178
+ for (const outcome of outcomes.slice(0, 2)) {
179
+ if (outcome.status === "rejected") {
180
+ writeLine(stderr, `[cron-run] output capture failed: ${messageOf(outcome.reason)}`);
181
+ }
182
+ }
183
+ const child = outcomes[2];
184
+ if (child.status === "rejected")
185
+ throw child.reason;
186
+ exitCode = child.value;
144
187
  if (exitCode !== 0) {
145
188
  const cause = proc.signalCode ? `killed by ${proc.signalCode}` : `exit code ${exitCode}`;
146
189
  const trimmedTail = stderrTail.trim();
@@ -155,11 +198,18 @@ export async function runJob(options, dependencies = {}) {
155
198
  if (recorder) {
156
199
  try {
157
200
  recorder.finish(errorMessage, outputTail.trim(), exitCode);
158
- recorder.close();
159
201
  }
160
202
  catch (error) {
161
203
  writeLine(stderr, `[cron-run] failed to record run outcome: ${messageOf(error)}`);
162
204
  }
205
+ finally {
206
+ try {
207
+ recorder.close();
208
+ }
209
+ catch (error) {
210
+ writeLine(stderr, `[cron-run] failed to close tracking: ${messageOf(error)}`);
211
+ }
212
+ }
163
213
  }
164
214
  try {
165
215
  (dependencies.removeSink ?? unlinkSync)(sinkPath);
@@ -1 +1 @@
1
- {"version":3,"file":"run-job.js","sourceRoot":"","sources":["../../src/cron/run-job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-job.js","sourceRoot":"","sources":["../../src/cron/run-job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import type { Database } from "bun:sqlite";
2
+ export declare const MAX_LIVE_PRINCIPALS = 100;
3
+ export declare const PRINCIPAL_RETENTION_MS: number;
4
+ export declare const PRINCIPAL_PRUNE_INTERVAL_MS: number;
5
+ export declare const LAST_SEEN_WRITE_INTERVAL_MS = 60000;
6
+ export type PrincipalKind = "owner" | "agent" | "ambient" | "system";
7
+ export type PrincipalAuthMethod = "password" | "passkey" | "delegated" | "ambient";
8
+ export type AmbientPrincipalSource = "none" | "proxy" | "tailscale";
9
+ export interface Principal {
10
+ id: string;
11
+ kind: PrincipalKind;
12
+ authMethod: PrincipalAuthMethod;
13
+ label: string;
14
+ credentialId: string | null;
15
+ createdBy: string | null;
16
+ createdAt: number;
17
+ expiresAt: number;
18
+ lastSeenAt: number | null;
19
+ revokedAt: number | null;
20
+ }
21
+ export interface CreatePrincipalInput {
22
+ authMethod: Exclude<PrincipalAuthMethod, "ambient">;
23
+ label: string;
24
+ credentialId?: string;
25
+ createdBy?: string;
26
+ ttlSeconds: number;
27
+ }
28
+ export interface ResolveSystemPrincipalInput {
29
+ identity: string;
30
+ label: string;
31
+ }
32
+ export declare class PrincipalLimitError extends Error {
33
+ constructor();
34
+ }
35
+ export declare class PrincipalCredentialNotFoundError extends Error {
36
+ constructor(credentialId: string);
37
+ }
38
+ export declare class PrincipalCreatorNotUsableError extends Error {
39
+ constructor(createdBy: string | undefined);
40
+ }
41
+ export declare function createPrincipal(db: Database, input: CreatePrincipalInput): Principal;
42
+ /**
43
+ * Resolve the durable attribution row for an ambient authorization identity.
44
+ * The id is deterministic per mode and full identity so repeated requests —
45
+ * including concurrent first requests — cannot grow one row per authorization
46
+ * check, while bounded display-label collisions remain distinct.
47
+ */
48
+ export declare function resolveAmbientPrincipal(db: Database, source: AmbientPrincipalSource, identity: string, label: string): Principal;
49
+ /** Resolve the durable attribution row for a non-cookie system identity. */
50
+ export declare function resolveSystemPrincipal(db: Database, input: ResolveSystemPrincipalInput): Principal;
51
+ export declare function resolvePrincipal(db: Database, id: string): Principal | null;
52
+ /** List currently usable cookie-bearing principals, newest first. */
53
+ export declare function listLivePrincipals(db: Database, now: number): Principal[];
54
+ export declare function isUsablePrincipal(row: Principal, now: number): boolean;
55
+ /** Whether this principal kind may be carried by an authenticated cookie. */
56
+ export declare function isCookieBearingPrincipal(principal: Principal): principal is Principal & {
57
+ kind: "owner" | "agent";
58
+ };
59
+ /** Whether a stored last_seen_at is old enough to be worth a write. */
60
+ export declare function isLastSeenStale(lastSeenAt: number | null, now: number): boolean;
61
+ export declare function touchLastSeen(db: Database, id: string, now: number): void;
62
+ export declare function revokePrincipal(db: Database, id: string, now: number): string[];
63
+ export declare function revokeAllPrincipals(db: Database, now: number): string[];
64
+ export declare function revokeByCredential(db: Database, credentialId: string, now: number): string[];
65
+ export declare function prunePrincipals(db: Database, now: number): void;
66
+ /**
67
+ * Run principal retention at most once per database per process interval.
68
+ * Authentication paths call this cheaply; only the due call reaches SQLite.
69
+ */
70
+ export declare function prunePrincipalsIfDue(db: Database, now: number): boolean;
71
+ export declare function countLivePrincipals(db: Database, now: number): number;
72
+ //# sourceMappingURL=principals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"principals.d.ts","sourceRoot":"","sources":["../../src/db/principals.ts"],"names":[],"mappings":"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"}