@cortexkit/opencode-magic-context 0.44.1 → 0.44.3

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 (216) hide show
  1. package/README.md +6 -0
  2. package/dist/agents/dreamer.d.ts +4 -6
  3. package/dist/agents/dreamer.d.ts.map +1 -1
  4. package/dist/config/live-child-output-cap.d.ts.map +1 -1
  5. package/dist/config/schema/magic-context.d.ts +63 -10
  6. package/dist/config/schema/magic-context.d.ts.map +1 -1
  7. package/dist/{conflict-warning-hook-d14ah73v.js → conflict-warning-hook-hmpzxep6.js} +3 -3
  8. package/dist/{derive-budgets-gd2270s0.js → derive-budgets-vjmvh6pz.js} +3 -1
  9. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  10. package/dist/features/magic-context/compartment-chunk-embedding.d.ts +11 -0
  11. package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
  12. package/dist/features/magic-context/compartment-storage.d.ts.map +1 -1
  13. package/dist/features/magic-context/dreamer/classify.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/docs-proposals.d.ts +2 -0
  15. package/dist/features/magic-context/dreamer/docs-proposals.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/hidden-single-shot.d.ts.map +1 -1
  17. package/dist/features/magic-context/dreamer/lease.d.ts +1 -1
  18. package/dist/features/magic-context/dreamer/lease.d.ts.map +1 -1
  19. package/dist/features/magic-context/dreamer/manual-summary.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts +1 -1
  21. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/map-memories.d.ts +5 -0
  23. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/refresh-primers.d.ts +5 -0
  25. package/dist/features/magic-context/dreamer/refresh-primers.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/retrospective-raw-provider.d.ts +2 -2
  27. package/dist/features/magic-context/dreamer/retrospective-raw-provider.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts +8 -1
  29. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts.map +1 -1
  30. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  31. package/dist/features/magic-context/dreamer/task-executor.d.ts +5 -0
  32. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  33. package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
  34. package/dist/features/magic-context/dreamer/task-prompts.d.ts +18 -2
  35. package/dist/features/magic-context/dreamer/task-prompts.d.ts.map +1 -1
  36. package/dist/features/magic-context/dreamer/task-registry.d.ts +12 -0
  37. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  38. package/dist/features/magic-context/dreamer/task-scheduler.d.ts +3 -1
  39. package/dist/features/magic-context/dreamer/task-scheduler.d.ts.map +1 -1
  40. package/dist/features/magic-context/dreamer/token-budget.d.ts +33 -0
  41. package/dist/features/magic-context/dreamer/token-budget.d.ts.map +1 -0
  42. package/dist/features/magic-context/dreamer/verify-diff.d.ts +15 -0
  43. package/dist/features/magic-context/dreamer/verify-diff.d.ts.map +1 -0
  44. package/dist/features/magic-context/dreamer/verify-gate.d.ts.map +1 -1
  45. package/dist/features/magic-context/dreamer/verify-prompt.d.ts +5 -2
  46. package/dist/features/magic-context/dreamer/verify-prompt.d.ts.map +1 -1
  47. package/dist/features/magic-context/dreamer/verify-read-cap.d.ts +4 -0
  48. package/dist/features/magic-context/dreamer/verify-read-cap.d.ts.map +1 -0
  49. package/dist/features/magic-context/dreamer/verify.d.ts +5 -0
  50. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  51. package/dist/features/magic-context/git-commits/git-log-reader.d.ts.map +1 -1
  52. package/dist/features/magic-context/memory/project-identity-cache.d.ts +6 -0
  53. package/dist/features/magic-context/memory/project-identity-cache.d.ts.map +1 -0
  54. package/dist/features/magic-context/memory/project-identity.d.ts +11 -22
  55. package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
  56. package/dist/features/magic-context/memory/storage-memory-fts.d.ts +1 -0
  57. package/dist/features/magic-context/memory/storage-memory-fts.d.ts.map +1 -1
  58. package/dist/features/magic-context/memory/verification-paths.d.ts +1 -0
  59. package/dist/features/magic-context/memory/verification-paths.d.ts.map +1 -1
  60. package/dist/features/magic-context/message-index-async.d.ts +1 -1
  61. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  62. package/dist/features/magic-context/project-embedding-registry.d.ts +5 -0
  63. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  64. package/dist/features/magic-context/search.d.ts.map +1 -1
  65. package/dist/features/magic-context/session-activity.d.ts +10 -0
  66. package/dist/features/magic-context/session-activity.d.ts.map +1 -0
  67. package/dist/features/magic-context/session-project-backfill.d.ts +4 -1
  68. package/dist/features/magic-context/session-project-backfill.d.ts.map +1 -1
  69. package/dist/features/magic-context/session-project-storage.d.ts +5 -5
  70. package/dist/features/magic-context/session-project-storage.d.ts.map +1 -1
  71. package/dist/features/magic-context/smart-notes/compiler.d.ts +5 -0
  72. package/dist/features/magic-context/smart-notes/compiler.d.ts.map +1 -1
  73. package/dist/features/magic-context/smart-notes/sandbox-runner.d.ts +1 -0
  74. package/dist/features/magic-context/smart-notes/sandbox-runner.d.ts.map +1 -1
  75. package/dist/features/magic-context/smart-notes/storage.d.ts +1 -1
  76. package/dist/features/magic-context/smart-notes/storage.d.ts.map +1 -1
  77. package/dist/features/magic-context/smart-notes/types.d.ts +2 -0
  78. package/dist/features/magic-context/smart-notes/types.d.ts.map +1 -1
  79. package/dist/features/magic-context/storage-db.d.ts +2 -1
  80. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  81. package/dist/features/magic-context/storage-embedding-measurements.d.ts.map +1 -1
  82. package/dist/features/magic-context/storage-identity-merge.d.ts +4 -1
  83. package/dist/features/magic-context/storage-identity-merge.d.ts.map +1 -1
  84. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  85. package/dist/features/magic-context/v22-deferred-backfill.d.ts.map +1 -1
  86. package/dist/hooks/auto-update-checker/checker.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/compartment-runner-historian.d.ts +2 -1
  89. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  90. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  92. package/dist/hooks/magic-context/compartment-runner-types.d.ts +1 -0
  93. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  94. package/dist/hooks/magic-context/compartment-runner.d.ts +1 -0
  95. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  96. package/dist/hooks/magic-context/derive-budgets.d.ts +4 -0
  97. package/dist/hooks/magic-context/derive-budgets.d.ts.map +1 -1
  98. package/dist/hooks/magic-context/dropped-input-guard.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/embed-session-state.d.ts +3 -0
  100. package/dist/hooks/magic-context/embed-session-state.d.ts.map +1 -1
  101. package/dist/hooks/magic-context/event-handler.d.ts +1 -0
  102. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  103. package/dist/hooks/magic-context/event-payloads.d.ts +1 -0
  104. package/dist/hooks/magic-context/event-payloads.d.ts.map +1 -1
  105. package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
  106. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  107. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  108. package/dist/hooks/magic-context/lkg-persist.d.ts +1 -4
  109. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  110. package/dist/hooks/magic-context/lkg-replay.d.ts +6 -4
  111. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  112. package/dist/hooks/magic-context/module-state-sync.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
  114. package/dist/hooks/magic-context/producer-window-guard.d.ts +4 -1
  115. package/dist/hooks/magic-context/producer-window-guard.d.ts.map +1 -1
  116. package/dist/hooks/magic-context/rust-mode-transform.d.ts +1 -0
  117. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  118. package/dist/hooks/magic-context/storage-busy-refusal.d.ts +13 -0
  119. package/dist/hooks/magic-context/storage-busy-refusal.d.ts.map +1 -0
  120. package/dist/hooks/magic-context/strip-content.d.ts +1 -0
  121. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  122. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  123. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  124. package/dist/{index-a9vbtdzv.js → index-33q7s9y2.js} +1 -1
  125. package/dist/{index-cz88kw0n.js → index-4an2p8qa.js} +183 -39
  126. package/dist/{index-d107az47.js → index-638hf49n.js} +1 -1
  127. package/dist/{index-stb5fg12.js → index-9y5p0d50.js} +31 -1
  128. package/dist/{index-s6b7h12g.js → index-dgg5y7er.js} +73 -2
  129. package/dist/{index-6w9p73jz.js → index-jqcbs2k1.js} +10 -0
  130. package/dist/{index-0rp6pj54.js → index-nf9sk8sh.js} +7 -5
  131. package/dist/index-q5p1aqvv.js +7260 -0
  132. package/dist/index-rdsaxnf2.js +125 -0
  133. package/dist/{index-jtdrvmcn.js → index-yhm60r53.js} +37544 -37072
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +8402 -14429
  136. package/dist/plugin/dream-timer.d.ts.map +1 -1
  137. package/dist/plugin/embedding-bootstrap.d.ts.map +1 -1
  138. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  139. package/dist/plugin/messages-transform.d.ts +10 -9
  140. package/dist/plugin/messages-transform.d.ts.map +1 -1
  141. package/dist/plugin/rpc-handlers.d.ts +1 -0
  142. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  143. package/dist/{read-session-chunk-fkdv2g5b.js → read-session-chunk-n072mcq4.js} +2 -2
  144. package/dist/{recomp-orchestrator-k4h5n0p3.js → recomp-orchestrator-19tr6zya.js} +6 -5
  145. package/dist/{send-session-notification-g2k03zyn.js → send-session-notification-04hvd54c.js} +2 -2
  146. package/dist/shared/model-suggestion-retry.d.ts +1 -1
  147. package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
  148. package/dist/shared/prompt-async-transport.d.ts +7 -7
  149. package/dist/shared/prompt-async-transport.d.ts.map +1 -1
  150. package/dist/shared/rpc-server.d.ts.map +1 -1
  151. package/dist/shared/rpc-utils.d.ts +21 -0
  152. package/dist/shared/rpc-utils.d.ts.map +1 -1
  153. package/dist/shared/run-token-log.d.ts +13 -0
  154. package/dist/shared/run-token-log.d.ts.map +1 -0
  155. package/dist/shared/sqlite-write-locker-test-support.d.ts.map +1 -1
  156. package/dist/shared/sqlite.d.ts +19 -0
  157. package/dist/shared/sqlite.d.ts.map +1 -1
  158. package/dist/shared/subagent-runner.d.ts +3 -1
  159. package/dist/shared/subagent-runner.d.ts.map +1 -1
  160. package/dist/shared/user-facing-codes.d.ts +5 -0
  161. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  162. package/dist/{task-config-mgf5nsh3.js → task-config-2bm68628.js} +1 -1
  163. package/dist/transform-postprocess-phase-z2mfc5w1.js +36 -0
  164. package/dist/v2/hidden-completion.d.ts +9 -1
  165. package/dist/v2/hidden-completion.d.ts.map +1 -1
  166. package/dist/v2/hooks/context.d.ts.map +1 -1
  167. package/dist/v2/hooks/hidden-child.d.ts +1 -0
  168. package/dist/v2/hooks/hidden-child.d.ts.map +1 -1
  169. package/dist/v2/hooks/hidden-terminal-error.d.ts +8 -0
  170. package/dist/v2/hooks/hidden-terminal-error.d.ts.map +1 -0
  171. package/dist/v2/hooks/lkg-system.d.ts +11 -0
  172. package/dist/v2/hooks/lkg-system.d.ts.map +1 -0
  173. package/dist/v2/hooks/session-project-backfill.d.ts +1 -1
  174. package/dist/v2/hooks/session-project-backfill.d.ts.map +1 -1
  175. package/dist/v2/hooks/storage-gate.d.ts +11 -5
  176. package/dist/v2/hooks/storage-gate.d.ts.map +1 -1
  177. package/dist/v2/hooks/tools.d.ts +1 -1
  178. package/dist/v2/hooks/tools.d.ts.map +1 -1
  179. package/dist/v2/host-service.d.ts +2 -1
  180. package/dist/v2/host-service.d.ts.map +1 -1
  181. package/dist/v2/server.js +24948 -22659
  182. package/dist/v2/store-reader.d.ts +2 -0
  183. package/dist/v2/store-reader.d.ts.map +1 -1
  184. package/dist/{wrapup-orchestrator-35y56636.js → wrapup-orchestrator-sy4m56a7.js} +7 -6
  185. package/package.json +1 -1
  186. package/src/agents/dreamer.ts +4 -6
  187. package/src/agents/hidden-agent-registrations.ts +3 -3
  188. package/src/agents/permissions.test.ts +3 -4
  189. package/src/config/latch-permanence-guard.test.ts +13 -0
  190. package/src/config/live-child-output-cap.test.ts +26 -0
  191. package/src/config/live-child-output-cap.ts +6 -2
  192. package/src/config/schema/magic-context.ts +21 -6
  193. package/src/features/magic-context/dreamer/task-registry.ts +13 -0
  194. package/src/shared/data-path.test.ts +1 -1
  195. package/src/shared/logger.test.ts +1 -0
  196. package/src/shared/model-suggestion-retry.ts +9 -2
  197. package/src/shared/models-dev-cache.test.ts +30 -1
  198. package/src/shared/prompt-async-transport.test.ts +254 -1
  199. package/src/shared/prompt-async-transport.ts +153 -44
  200. package/src/shared/rpc-async-probes.test.ts +230 -0
  201. package/src/shared/rpc-server.ts +6 -4
  202. package/src/shared/rpc-utils.test.ts +27 -1
  203. package/src/shared/rpc-utils.ts +161 -9
  204. package/src/shared/run-token-log.test.ts +65 -0
  205. package/src/shared/run-token-log.ts +39 -0
  206. package/src/shared/sqlite-acquisition-fence.test.ts +132 -0
  207. package/src/shared/sqlite-acquisition-routing.test.ts +102 -0
  208. package/src/shared/sqlite-pass-scope.test.ts +153 -0
  209. package/src/shared/sqlite-transaction-mode-guard.test.ts +42 -10
  210. package/src/shared/sqlite-write-locker-test-support.ts +1 -0
  211. package/src/shared/sqlite.ts +245 -56
  212. package/src/shared/storage-busy.test.ts +72 -0
  213. package/src/shared/subagent-runner.ts +4 -0
  214. package/src/shared/user-facing-codes.ts +6 -0
  215. package/src/shared/windows-hidden-spawns.test.ts +132 -0
  216. package/src/shared/write-transaction-attribution.test.ts +14 -11
@@ -207,6 +207,7 @@ function closeQuietly(db) {
207
207
  }
208
208
 
209
209
  // src/shared/sqlite.ts
210
+ import { AsyncLocalStorage } from "node:async_hooks";
210
211
  import { statSync as statSync2 } from "node:fs";
211
212
  var reportSlowPrivilegedWrite;
212
213
  function registerSlowWriteReporter(reporter) {
@@ -262,6 +263,65 @@ var sqliteModule = await loadSqliteModule(detectedRuntime);
262
263
  var DatabaseImpl = isBun ? sqliteModule.Database : buildNodeSqliteDatabaseClass(sqliteModule.DatabaseSync);
263
264
  var trackedSqliteConnections = new Map;
264
265
  var nextSqliteConnectionSequence = 1;
266
+ function installTransactionRouting(db, readonly) {
267
+ const nativeExec = db.exec.bind(db);
268
+ Object.defineProperty(db, "exec", {
269
+ configurable: true,
270
+ writable: true,
271
+ value: (sql) => {
272
+ if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
273
+ if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
274
+ acquireShort(db, () => nativeExec(sql), sql.trim());
275
+ else
276
+ nativeExec(sql);
277
+ return db;
278
+ }
279
+ return nativeExec(sql);
280
+ }
281
+ });
282
+ Object.defineProperty(db, "transaction", {
283
+ configurable: true,
284
+ writable: true,
285
+ value: (fn) => {
286
+ const make = (mode) => function(...args) {
287
+ const nested = isInTransaction(db);
288
+ const savepoint = "mc_tx_sp";
289
+ db.exec(nested ? `SAVEPOINT ${savepoint}` : `BEGIN ${mode}`);
290
+ try {
291
+ const result = fn.apply(this, args);
292
+ db.exec(nested ? `RELEASE ${savepoint}` : "COMMIT");
293
+ return result;
294
+ } catch (error) {
295
+ if (isInTransaction(db)) {
296
+ if (nested) {
297
+ db.exec(`ROLLBACK TO ${savepoint}`);
298
+ db.exec(`RELEASE ${savepoint}`);
299
+ } else
300
+ db.exec("ROLLBACK");
301
+ }
302
+ throw error;
303
+ }
304
+ };
305
+ const defaultTransaction = make(readonly ? "DEFERRED" : "IMMEDIATE");
306
+ const variants = {
307
+ default: defaultTransaction,
308
+ deferred: make("DEFERRED"),
309
+ immediate: make("IMMEDIATE"),
310
+ exclusive: make("EXCLUSIVE"),
311
+ database: db
312
+ };
313
+ for (const transaction of [
314
+ variants.default,
315
+ variants.deferred,
316
+ variants.immediate,
317
+ variants.exclusive
318
+ ]) {
319
+ Object.assign(transaction, variants);
320
+ }
321
+ return defaultTransaction;
322
+ }
323
+ });
324
+ }
265
325
  function trackSqliteConnection(db, filename, options) {
266
326
  const originalClose = db.close.bind(db);
267
327
  const sequence = nextSqliteConnectionSequence++;
@@ -270,6 +330,7 @@ function trackSqliteConnection(db, filename, options) {
270
330
  filename: typeof filename === "string" ? filename : Buffer.isBuffer(filename) ? "<buffer>" : ":memory:",
271
331
  readonly: Boolean(options) && typeof options === "object" && (options.readonly === true || options.readOnly === true)
272
332
  };
333
+ installTransactionRouting(db, metadata.readonly);
273
334
  Object.defineProperty(db, "close", {
274
335
  configurable: true,
275
336
  value: (...args) => {
@@ -293,7 +354,6 @@ var TrackedDatabase = new Proxy(DatabaseImpl, {
293
354
  }
294
355
  });
295
356
  function buildNodeSqliteDatabaseClass(DatabaseSync) {
296
- const SAVEPOINT = "mc_tx_sp";
297
357
 
298
358
  class NodeSqliteDatabase extends DatabaseSync {
299
359
  constructor(filename, options) {
@@ -312,42 +372,6 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
312
372
  }
313
373
  return stmt;
314
374
  }
315
- transaction(fn) {
316
- const self = this;
317
- const execute = (mode, receiver, args) => {
318
- const nested = self.isTransaction === true;
319
- self.exec(nested ? `SAVEPOINT ${SAVEPOINT}` : `BEGIN${mode ? ` ${mode}` : ""}`);
320
- try {
321
- const result = fn.apply(receiver, args);
322
- self.exec(nested ? `RELEASE ${SAVEPOINT}` : "COMMIT");
323
- return result;
324
- } catch (error) {
325
- if (nested) {
326
- self.exec(`ROLLBACK TO ${SAVEPOINT}`);
327
- self.exec(`RELEASE ${SAVEPOINT}`);
328
- } else {
329
- self.exec("ROLLBACK");
330
- }
331
- throw error;
332
- }
333
- };
334
- const wrapped = function(...args) {
335
- return execute("", this, args);
336
- };
337
- wrapped.default = function(...args) {
338
- return execute("", this, args);
339
- };
340
- wrapped.deferred = function(...args) {
341
- return execute("DEFERRED", this, args);
342
- };
343
- wrapped.immediate = function(...args) {
344
- return execute("IMMEDIATE", this, args);
345
- };
346
- wrapped.exclusive = function(...args) {
347
- return execute("EXCLUSIVE", this, args);
348
- };
349
- return wrapped;
350
- }
351
375
  }
352
376
  return NodeSqliteDatabase;
353
377
  }
@@ -432,6 +456,120 @@ function getSqliteMemoryStats() {
432
456
  };
433
457
  }
434
458
  var privilegeDepth = new WeakMap;
459
+ var transformPassScope = new AsyncLocalStorage;
460
+ var admissionScope = new AsyncLocalStorage;
461
+ var backgroundWriterScope = new AsyncLocalStorage;
462
+ function withSqliteBackgroundWriter(operation) {
463
+ return backgroundWriterScope.run(true, operation);
464
+ }
465
+ function withSqliteTransformPass(operation) {
466
+ const lease = { active: true };
467
+ return transformPassScope.run(lease, () => {
468
+ try {
469
+ const result = operation();
470
+ if (result && typeof result.then === "function") {
471
+ return Promise.resolve(result).finally(() => {
472
+ lease.active = false;
473
+ });
474
+ }
475
+ lease.active = false;
476
+ return result;
477
+ } catch (error) {
478
+ lease.active = false;
479
+ throw error;
480
+ }
481
+ });
482
+ }
483
+ function withoutSqliteTransformPass(operation) {
484
+ return transformPassScope.run(undefined, operation);
485
+ }
486
+ function isTransientSqliteError(error) {
487
+ if (!error || typeof error !== "object")
488
+ return false;
489
+ const value = error;
490
+ return typeof value.code === "string" && /^(SQLITE_BUSY|SQLITE_LOCKED)(_|$)/.test(value.code) || typeof value.errcode === "number" && [5, 6].includes(value.errcode & 255);
491
+ }
492
+
493
+ class SqliteAcquisitionBusyError extends Error {
494
+ code = "SQLITE_BUSY";
495
+ stage;
496
+ constructor(cause, stage = "BEGIN IMMEDIATE") {
497
+ super("SQLite writer acquisition remained busy", { cause });
498
+ this.name = "SqliteAcquisitionBusyError";
499
+ this.stage = stage;
500
+ }
501
+ }
502
+ var SHORT_BUSY_TIMEOUT_MS = 25;
503
+ var FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS = 250;
504
+ var FOREGROUND_ACQUISITION_BUDGET_MS = 16500;
505
+ function acquireShort(db, acquire, site) {
506
+ const started = performance.now();
507
+ const previous = pragmaNumber(db, "busy_timeout");
508
+ let acquired = false;
509
+ try {
510
+ const timeout = transformPassScope.getStore()?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS : SHORT_BUSY_TIMEOUT_MS;
511
+ db.exec(`PRAGMA busy_timeout=${timeout}`);
512
+ acquire();
513
+ acquired = true;
514
+ } catch (error) {
515
+ if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
516
+ throw new SqliteAcquisitionBusyError(error, site);
517
+ throw error;
518
+ } finally {
519
+ if (previous !== null)
520
+ db.exec(`PRAGMA busy_timeout=${previous}`);
521
+ const elapsed = performance.now() - started;
522
+ if (elapsed >= 250)
523
+ console.warn(`[${new Date().toISOString()}] [magic-context] sqlite acquisition site=${site} lane=${transformPassScope.getStore()?.active ? "foreground" : "background"} elapsed=${Math.round(elapsed)}ms attempts=1 outcome=${acquired ? "acquired" : "busy"}`);
524
+ }
525
+ }
526
+ async function beginSqliteWriterAsync(db, site) {
527
+ const started = performance.now();
528
+ let attempts = 0;
529
+ for (;; ) {
530
+ attempts++;
531
+ try {
532
+ withSqliteBackgroundWriter(() => db.exec("BEGIN IMMEDIATE"));
533
+ const elapsed = performance.now() - started;
534
+ if (elapsed >= 250)
535
+ console.warn(`[${new Date().toISOString()}] [magic-context] sqlite acquisition site=${site} lane=background elapsed=${Math.round(elapsed)}ms attempts=${attempts} outcome=acquired`);
536
+ return;
537
+ } catch (error) {
538
+ if (!isTransientSqliteError(error))
539
+ throw error;
540
+ const elapsed = performance.now() - started;
541
+ if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
542
+ console.warn(`[${new Date().toISOString()}] [magic-context] sqlite acquisition site=${site} lane=background elapsed=${Math.round(elapsed)}ms attempts=${attempts} outcome=busy`);
543
+ throw error;
544
+ }
545
+ await new Promise((resolve) => setTimeout(resolve, Math.min(attempts === 1 ? 500 : 1000, FOREGROUND_ACQUISITION_BUDGET_MS - elapsed)));
546
+ }
547
+ }
548
+ }
549
+ async function withAsyncPrivilegedWriter(db, operation) {
550
+ const started = performance.now();
551
+ let attempts = 0;
552
+ for (;; ) {
553
+ attempts++;
554
+ try {
555
+ const result = admissionScope.run(true, () => withSqliteTransformPass(() => withPrivilegedWriter(db, operation)));
556
+ const elapsed = performance.now() - started;
557
+ if (elapsed >= 250)
558
+ console.warn(`[${new Date().toISOString()}] [magic-context] sqlite acquisition site=privileged_writer lane=foreground elapsed=${Math.round(elapsed)}ms attempts=${attempts} outcome=acquired`);
559
+ return result;
560
+ } catch (error) {
561
+ if (!(error instanceof SqliteAcquisitionBusyError))
562
+ throw error;
563
+ const elapsed = performance.now() - started;
564
+ if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
565
+ if (elapsed >= 250)
566
+ console.warn(`[${new Date().toISOString()}] [magic-context] sqlite acquisition site=privileged_writer lane=foreground elapsed=${Math.round(elapsed)}ms attempts=${attempts} outcome=busy`);
567
+ throw error instanceof SqliteAcquisitionBusyError ? error : new SqliteAcquisitionBusyError(error);
568
+ }
569
+ await new Promise((resolve) => setTimeout(resolve, Math.min(attempts === 1 ? 500 : 1000, FOREGROUND_ACQUISITION_BUDGET_MS - elapsed)));
570
+ }
571
+ }
572
+ }
435
573
  function isInTransaction(db) {
436
574
  const candidate = db;
437
575
  return candidate.inTransaction === true || candidate.isTransaction === true;
@@ -444,7 +582,13 @@ function withPrivilegedWriter(db, operation) {
444
582
  if (nested) {
445
583
  db.exec(`SAVEPOINT ${savepoint}`);
446
584
  } else {
447
- db.exec("BEGIN IMMEDIATE");
585
+ try {
586
+ db.exec("BEGIN IMMEDIATE");
587
+ } catch (error) {
588
+ if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
589
+ throw new SqliteAcquisitionBusyError(error);
590
+ throw error;
591
+ }
448
592
  }
449
593
  privilegeDepth.set(db, previousDepth + 1);
450
594
  try {
@@ -909,4 +1053,4 @@ function findLastAssistantModelFromOpenCodeDb(sessionId) {
909
1053
  }
910
1054
  }
911
1055
 
912
- export { resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, formatOpenCodeDbMissingBanner, formatOpenCodeDbMissingStatusLine, formatOpenCodeDbReadFailureStatusLine, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, getOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce, registerSlowWriteReporter, detectSqliteRuntime, Database, getSqliteMemoryStats, withPrivilegedWriter, closeQuietly, openCodeDbExists, withReadOnlySessionDb, getRawSessionMessageCountFromDb, observeOpenCodeTurnEvent, clearTrackedOpenCodeSession, assistantAwaitingTools, shouldHoldIgnoredNotification, latestPersistedMessageForRecovery, getMessageTimesFromOpenCodeDb, findLastAssistantModelFromOpenCodeDb };
1056
+ export { resolveOpenCodeDbPath, hasV1MessageTables, assertOpenCodeStoreGeneration, openCodeDbPathExists, getOpenCodeDbProbeDescriptions, formatOpenCodeDbMissingBanner, formatOpenCodeDbMissingStatusLine, formatOpenCodeDbReadFailureStatusLine, recordOpenCodeDbReadFailure, clearOpenCodeDbReadFailure, getOpenCodeDbReadFailure, claimOpenCodeDbDiagnosticOnce, registerSlowWriteReporter, detectSqliteRuntime, Database, getSqliteMemoryStats, withSqliteBackgroundWriter, withSqliteTransformPass, withoutSqliteTransformPass, isTransientSqliteError, SqliteAcquisitionBusyError, beginSqliteWriterAsync, withAsyncPrivilegedWriter, withPrivilegedWriter, closeQuietly, openCodeDbExists, withReadOnlySessionDb, getRawSessionMessageCountFromDb, observeOpenCodeTurnEvent, clearTrackedOpenCodeSession, assistantAwaitingTools, shouldHoldIgnoredNotification, latestPersistedMessageForRecovery, getMessageTimesFromOpenCodeDb, findLastAssistantModelFromOpenCodeDb };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./index-3bygzk2d.js";
4
4
  import {
5
5
  sendStatusNotification2
6
- } from "./index-a9vbtdzv.js";
6
+ } from "./index-33q7s9y2.js";
7
7
  import {
8
8
  readJsoncFile
9
9
  } from "./index-sd3egckz.js";
@@ -787,6 +787,21 @@ function getSdkOutputLimit(providerID, modelID) {
787
787
  loadPersistedApiCacheOnce();
788
788
  return lookupMetadataWithTagFallback(apiCache, providerID, modelID)?.outputLimit;
789
789
  }
790
+ function getSdkInputLimit(providerID, modelID) {
791
+ loadPersistedApiCacheOnce();
792
+ if (!apiCache)
793
+ return;
794
+ const direct = apiCache.get(`${providerID}/${modelID}`)?.inputLimit;
795
+ if (isSaneLimit(direct))
796
+ return direct;
797
+ const colon = modelID.indexOf(":");
798
+ if (colon > 0) {
799
+ const tagless = apiCache.get(`${providerID}/${modelID.slice(0, colon)}`)?.inputLimit;
800
+ if (isSaneLimit(tagless))
801
+ return tagless;
802
+ }
803
+ return;
804
+ }
790
805
  function lookupMetadataWithTagFallback(cache, providerID, modelID) {
791
806
  if (!cache)
792
807
  return;
@@ -842,6 +857,21 @@ function resolveKnownHistorianContextLimit2(historianModelOverride) {
842
857
  const limit = getSdkContextLimit(providerID, modelID, undefined, { reservation: "none" });
843
858
  return typeof limit === "number" && limit > 0 ? limit : undefined;
844
859
  }
860
+ function resolveHistorianProducerLimits2(modelKey) {
861
+ if (!modelKey?.includes("/"))
862
+ return {};
863
+ const [provider, ...parts] = modelKey.split("/");
864
+ const model = parts.join("/");
865
+ if (!provider || !model)
866
+ return {};
867
+ const input = getSdkInputLimit(provider, model);
868
+ const window = getSdkWindowGeometry(provider, model)?.derivation.window;
869
+ const context = window ?? (input === undefined ? resolveKnownHistorianContextLimit2(modelKey) : undefined);
870
+ return {
871
+ ...context !== undefined ? { context } : {},
872
+ ...input !== undefined ? { input } : {}
873
+ };
874
+ }
845
875
  function resolveHistorianContextLimit2(historianModelOverride) {
846
876
  if (typeof historianModelOverride === "string" && historianModelOverride.includes("/")) {
847
877
  return resolveKnownHistorianContextLimit2(historianModelOverride) ?? DEFAULT_HISTORIAN_CONTEXT_FALLBACK;
@@ -857,4 +887,4 @@ function producerSourceLocalBudget2(providerTokens, modelKey) {
857
887
  return ratio === 1 ? providerTokens : localBudget(providerTokens, ratio);
858
888
  }
859
889
 
860
- export { canonicalModelIdentity, piModelRefToCanonical, modelRefLookupOrder, setStoragePrivatePermissionEnforcement, shouldEnforcePrivateStoragePermissions, catalogOutputReserve, setWindowOverlayPath, reloadWindowOverlay, hasTrustedAbsoluteWall, applyProvenInputFloor, formatWindowDerivationLine, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, refreshModelLimitsAfterAuthOnce, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getModelsDevCacheState, deriveTriggerBudget2, deriveHistorianChunkTokens2, resolveKnownHistorianContextLimit2, resolveHistorianContextLimit2, producerSourceLocalBudget2 };
890
+ export { canonicalModelIdentity, piModelRefToCanonical, modelRefLookupOrder, setStoragePrivatePermissionEnforcement, shouldEnforcePrivateStoragePermissions, catalogOutputReserve, setWindowOverlayPath, reloadWindowOverlay, hasTrustedAbsoluteWall, applyProvenInputFloor, formatWindowDerivationLine, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, refreshModelLimitsAfterAuthOnce, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getModelsDevCacheState, deriveTriggerBudget2, deriveHistorianChunkTokens2, resolveKnownHistorianContextLimit2, resolveHistorianProducerLimits2, resolveHistorianContextLimit2, producerSourceLocalBudget2 };
@@ -6,7 +6,7 @@ import {
6
6
  withReadOnlySessionDb,
7
7
  getRawSessionMessageCountFromDb,
8
8
  getMessageTimesFromOpenCodeDb
9
- } from "./index-cz88kw0n.js";
9
+ } from "./index-4an2p8qa.js";
10
10
  import {
11
11
  UNKNOWN_FIT_RATIO,
12
12
  resolveDecisionCalibration,
@@ -3984,6 +3984,72 @@ function buildFileSourceContent(parts) {
3984
3984
  return content.length > 0 ? content : null;
3985
3985
  }
3986
3986
 
3987
+ // src/features/magic-context/dreamer/token-budget.ts
3988
+ class DreamTokenBudgetExceeded extends Error {
3989
+ sessionId;
3990
+ spent;
3991
+ constructor(sessionId, spent) {
3992
+ super(`Dreamer child ${sessionId} spent ${spent} prompt tokens (token_budget)`);
3993
+ this.sessionId = sessionId;
3994
+ this.spent = spent;
3995
+ this.name = "DreamTokenBudgetExceeded";
3996
+ }
3997
+ }
3998
+ var TOKEN_BUDGET_FINALIZE_MESSAGE = "You're out of token budget. Stop investigating: make no more tool calls and output your result now, covering only what you've already checked; leave the rest out.";
3999
+ var TOKEN_BUDGET_TOOL_REFUSAL = "Out of token budget: no more tool calls. Output your result now.";
4000
+ var finalizingChildren = new Map;
4001
+ function registerBudgetFinalizeChild(sessionId, guard) {
4002
+ finalizingChildren.set(sessionId, guard);
4003
+ }
4004
+ function releaseBudgetFinalizeChild(sessionId) {
4005
+ finalizingChildren.delete(sessionId);
4006
+ }
4007
+ function refuseBudgetedToolCall(sessionId) {
4008
+ return finalizingChildren.get(sessionId)?.refuseTool() ?? null;
4009
+ }
4010
+ function createDreamTokenBudget(budget) {
4011
+ if (!Number.isSafeInteger(budget) || budget <= 0)
4012
+ throw new Error("Invalid token budget");
4013
+ let spent = 0;
4014
+ let finalizeFired = false;
4015
+ let refusedCalls = 0;
4016
+ let forcedStop = false;
4017
+ const snapshot = () => ({
4018
+ budget,
4019
+ spent,
4020
+ finalizeFired,
4021
+ refusedCalls,
4022
+ hardStopped: forcedStop || spent >= budget || refusedCalls >= 2
4023
+ });
4024
+ return {
4025
+ snapshot,
4026
+ charge(input, cacheRead, cacheWrite, completed = false, canFinalize = true) {
4027
+ for (const value of [input, cacheRead, cacheWrite]) {
4028
+ if (!Number.isSafeInteger(value) || value < 0)
4029
+ throw new Error("Invalid prompt usage");
4030
+ }
4031
+ spent += input + cacheRead + cacheWrite;
4032
+ if (spent >= budget)
4033
+ return "stop";
4034
+ if (!completed && !finalizeFired && spent >= budget * 0.8) {
4035
+ if (!canFinalize) {
4036
+ forcedStop = true;
4037
+ return "stop";
4038
+ }
4039
+ finalizeFired = true;
4040
+ return "finalize";
4041
+ }
4042
+ return "continue";
4043
+ },
4044
+ refuseTool() {
4045
+ if (!finalizeFired)
4046
+ return null;
4047
+ refusedCalls += 1;
4048
+ return { message: TOKEN_BUDGET_TOOL_REFUSAL, hardStopped: snapshot().hardStopped };
4049
+ }
4050
+ };
4051
+ }
4052
+
3987
4053
  // src/hooks/magic-context/dropped-input-guard.ts
3988
4054
  var LEGACY_TRUNCATED_VALUE = /^[\s\S]{0,5}\.\.\.\[truncated\]$/;
3989
4055
  var MAX_QUOTED_ARGUMENTS = 160;
@@ -4150,6 +4216,11 @@ function createDroppedInputToolExecuteBeforeHook() {
4150
4216
  return async (input, output) => {
4151
4217
  const call = isRecord2(input) ? input : {};
4152
4218
  const args = isRecord2(output) ? output.args : undefined;
4219
+ if (typeof call.sessionID === "string") {
4220
+ const refusal = refuseBudgetedToolCall(call.sessionID);
4221
+ if (refusal)
4222
+ throw new Error(refusal.message);
4223
+ }
4153
4224
  assertExecutableToolInput(guard, {
4154
4225
  sessionID: typeof call.sessionID === "string" ? call.sessionID : undefined,
4155
4226
  toolName: typeof call.tool === "string" ? call.tool : undefined,
@@ -5687,4 +5758,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
5687
5758
  });
5688
5759
  }
5689
5760
 
5690
- export { textMentionsRecentCommit, removeSystemReminders, hasMeaningfulUserText2, extractTexts2, extractToolCallSummaries, getTokenizerNativeMemoryStats, preloadTokenizer, estimateTokens, normalizeText, stableStringify, getCurrentToolSetHash, setDatabase, loadToolDefinitionMeasurements, recordToolDefinition, getMeasuredToolDefinitionTokens, CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isThinkingPart, isRecord, estimateImageTokensFromDataUrl, estimateToolAttachmentImageTokens, normalizeTodoStateJson, buildSyntheticTodoPart, computeSyntheticCallId, isSyntheticTodoPart, countRealUserMessages, tailHygieneStructuralSignature, sameTailHygieneStructuralSignature, formatTailHygienePrefixMismatch, refreshTailHygieneBaseline, effectiveTailHygiene, assertTailHygieneContentUnchanged, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, isDroppedToolOutput, toolOutputTokens, decideChannel1, evaluateChannel2, formatChannel1Evaluation, formatChannel2Evaluation, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, estimateEmergencyDropReclaimTokens, planEmergencyDrop, measureEmergencyTag, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, getActiveTagTokenTotalsByMessage, getAllStatusTagTokenTotalsFlat, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, markWhitespaceAssistantTagInert, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, updateTagMessageId, foldShrunkPartTags, markTagsCompactedByMessageIds, deleteTagsByMessageId, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, TAG_SELECT_COLUMNS, getTagsBySession, getActiveTagsBySession, getTailHygieneTags, getDroppedTagsBySession, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getTagById, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, getCandidateToolOwners, pickNearestPriorOwner, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, isStrictGapHealingMessage, isRawCompactionSummaryInfo, extractInMemoryMessageViews, buildInMemoryTailRawMessages, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, describeFinalWireTail, estimateMessageTokens, estimateFinalWireInputTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, visitRawSessionMessages2, readRawSessionMessageRange2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessagePartsById2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, readSessionChunk2, readRawSessionSeedTail2 };
5761
+ export { textMentionsRecentCommit, removeSystemReminders, hasMeaningfulUserText2, extractTexts2, extractToolCallSummaries, getTokenizerNativeMemoryStats, preloadTokenizer, estimateTokens, normalizeText, stableStringify, getCurrentToolSetHash, setDatabase, loadToolDefinitionMeasurements, recordToolDefinition, getMeasuredToolDefinitionTokens, CTX_REDUCE_KEEP, newestCtxReduceTagNumbers, stripWellFormedLeadingTagPrefix, stripPersistedAssistantText, byteSize, stripTagPrefix, peelLeadingMcTagNotation, prependTag, isThinkingPart, isRecord, estimateImageTokensFromDataUrl, estimateToolAttachmentImageTokens, normalizeTodoStateJson, buildSyntheticTodoPart, computeSyntheticCallId, isSyntheticTodoPart, countRealUserMessages, tailHygieneStructuralSignature, sameTailHygieneStructuralSignature, formatTailHygienePrefixMismatch, refreshTailHygieneBaseline, effectiveTailHygiene, assertTailHygieneContentUnchanged, CHANNEL1_SENTINEL, CHANNEL1_FLOOR_TOKENS, isDroppedToolOutput, toolOutputTokens, decideChannel1, evaluateChannel2, formatChannel1Evaluation, formatChannel2Evaluation, reclaimableToolOutputCount, buildChannel2Reminder, buildChannel1Reminder, estimateEmergencyDropReclaimTokens, planEmergencyDrop, measureEmergencyTag, getRecentTagOwnerMessageIds, AGE_RECLAIM_MIN_TOKENS, getOldestActiveUnprotectedToolTags, getActiveToolTagsForAgeReclaim, getTriggerTagTokenUpperBound, getActiveTagTokenTotalsByMessage, getAllStatusTagTokenTotalsFlat, tagTokenCountIsNull, backfillTagTokenCounts, insertTag, updateTagStatus, markWhitespaceAssistantTagInert, getInertWhitespaceAssistantTags, updateTagDropMode, updateCavemanDepth, updateTagMessageId, foldShrunkPartTags, markTagsCompactedByMessageIds, deleteTagsByMessageId, getMaxTagNumberBySession, getTagNumberByMessageId, getAssignableTagNumberByMessageId, deriveTagLoadFloor, TAG_SELECT_COLUMNS, getTagsBySession, getActiveTagsBySession, getTailHygieneTags, getDroppedTagsBySession, getTagsByNumbers, getDroppedTagsByNumbers, getMaxDroppedTagNumber, getTagById, getToolTagNumberByOwner, getNullOwnerToolTag, adoptNullOwnerToolTag, getCandidateToolOwners, pickNearestPriorOwner, markHostUnservedRow, retreatPastHostUnservedRows, snapTerminalCompartmentToServedRow, isHostRenderedSystemMessage, isStrictGapHealingMessage, isRawCompactionSummaryInfo, extractInMemoryMessageViews, buildInMemoryTailRawMessages, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, invalidateTrueRawTokenCache, isTextPart, isToolPartWithOutput, isFilePart, buildFileSourceContent, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, createDroppedInputToolExecuteBeforeHook, isEditTool, describeFinalWireTail, estimateMessageTokens, estimateFinalWireInputTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, setRawMessageProvider2, setBoundedRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, visitRawSessionMessages2, readRawSessionMessageRange2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessagePartsById2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, readSessionChunk2, readRawSessionSeedTail2 };
@@ -17,6 +17,15 @@ var CANONICAL_DREAM_TASKS = [
17
17
  "promote-primers",
18
18
  "refresh-primers"
19
19
  ];
20
+ var DREAM_TOOL_LOOP_TOKEN_BUDGETS = {
21
+ "map-memories": 1500000,
22
+ verify: 1700000,
23
+ "verify-broad": 1700000,
24
+ curate: 1500000,
25
+ retrospective: 300000,
26
+ "maintain-docs": 1600000,
27
+ "refresh-primers": 350000
28
+ };
20
29
  var DREAM_TASK_CAPABILITIES = {
21
30
  "map-memories": {
22
31
  requiresTools: true,
@@ -157,6 +166,7 @@ function buildDreamTaskRuntimeConfigs2(dreamer, harness, language, muralModel) {
157
166
  thinkingLevel: harness === "pi" ? resolved.primary?.qualifier : undefined,
158
167
  language,
159
168
  timeoutMinutes: resolved.timeoutMinutes ?? 20,
169
+ tokenBudget: task in DREAM_TOOL_LOOP_TOKEN_BUDGETS ? dreamer?.tasks?.[task]?.token_budget ?? DREAM_TOOL_LOOP_TOKEN_BUDGETS[task] : undefined,
160
170
  promotionThreshold: resolved.promotionThreshold,
161
171
  docsMaxTokens: task === "maintain-docs" ? dreamer?.tasks?.["maintain-docs"]?.max_tokens ?? 12000 : undefined,
162
172
  retrospectiveRecencyDays: task === "retrospective" ? dreamer?.tasks?.retrospective?.recency_days ?? 30 : undefined
@@ -20,16 +20,18 @@ import {
20
20
  runCompartmentAgent,
21
21
  getActiveCompartmentRun,
22
22
  markActiveCompartmentRunPublished,
23
- registerActiveCompartmentRun,
24
- setRecompStarting2,
25
- setRecompTerminal2
26
- } from "./index-jtdrvmcn.js";
23
+ registerActiveCompartmentRun
24
+ } from "./index-yhm60r53.js";
27
25
  import {
28
26
  pushNotification2
29
27
  } from "./index-jdxxq8cz.js";
30
28
  import {
31
29
  sendStatusNotification2
32
- } from "./index-a9vbtdzv.js";
30
+ } from "./index-33q7s9y2.js";
31
+ import {
32
+ setRecompStarting2,
33
+ setRecompTerminal2
34
+ } from "./index-rdsaxnf2.js";
33
35
 
34
36
  // src/hooks/magic-context/wrapup-orchestrator.ts
35
37
  import * as crypto from "node:crypto";