@cortexkit/opencode-magic-context 0.49.35 → 0.49.36

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 (200) hide show
  1. package/README.md +1 -1
  2. package/dist/auto-search-worker.js +163 -160
  3. package/dist/chunk-embedding-write-worker.js +58 -56
  4. package/dist/{compaction-marker-candidates-g0p67ced.js → compaction-marker-candidates-5p1qkve9.js} +3 -1
  5. package/dist/compaction-marker-candidates-worker.js +24 -23
  6. package/dist/{compartment-chunk-embedding-y4136are.js → compartment-chunk-embedding-ypktm0tk.js} +5 -4
  7. package/dist/{conflict-warning-hook-hhw8z5ak.js → conflict-warning-hook-b75jn458.js} +6 -5
  8. package/dist/{context-fk8e3h9p.js → context-969z683s.js} +485 -91
  9. package/dist/{embedding-backfill-q6n72sy0.js → embedding-backfill-rma0v2ct.js} +9 -8
  10. package/dist/embedding-worker.js +2 -2
  11. package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -1
  12. package/dist/features/magic-context/compaction-marker.d.ts +5 -3
  13. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
  15. package/dist/features/magic-context/dreamer/verify-gate.d.ts +2 -0
  16. package/dist/features/magic-context/dreamer/verify-gate.d.ts.map +1 -1
  17. package/dist/features/magic-context/dreamer/verify-state.d.ts +9 -0
  18. package/dist/features/magic-context/dreamer/verify-state.d.ts.map +1 -0
  19. package/dist/features/magic-context/dreamer/verify.d.ts +2 -1
  20. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  21. package/dist/features/magic-context/migration-worker-client.d.ts +3 -0
  22. package/dist/features/magic-context/migration-worker-client.d.ts.map +1 -1
  23. package/dist/features/magic-context/migration-worker.d.ts +15 -0
  24. package/dist/features/magic-context/migration-worker.d.ts.map +1 -1
  25. package/dist/features/magic-context/overflow-detection.d.ts +2 -2
  26. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  27. package/dist/features/magic-context/search-rerank.d.ts.map +1 -1
  28. package/dist/features/magic-context/storage-meta-persisted.d.ts +1 -0
  29. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  30. package/dist/features/magic-context/storage-tags.d.ts +4 -0
  31. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  32. package/dist/features/magic-context/work-metrics-carry-storage.d.ts +10 -0
  33. package/dist/features/magic-context/work-metrics-carry-storage.d.ts.map +1 -0
  34. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +5 -1
  35. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  36. package/dist/hooks/magic-context/compaction-marker-publication.d.ts.map +1 -1
  37. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  38. package/dist/hooks/magic-context/issue-423-fixture.d.ts +1 -1
  39. package/dist/hooks/magic-context/issue-423-fixture.d.ts.map +1 -1
  40. package/dist/hooks/magic-context/issue-424-fixture.d.ts +1 -1
  41. package/dist/hooks/magic-context/issue-424-fixture.d.ts.map +1 -1
  42. package/dist/hooks/magic-context/project-structural-sentinels.d.ts +25 -0
  43. package/dist/hooks/magic-context/project-structural-sentinels.d.ts.map +1 -0
  44. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +8 -1
  45. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  46. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +2 -0
  48. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/release-recovery-prefix.d.ts +9 -0
  50. package/dist/hooks/magic-context/release-recovery-prefix.d.ts.map +1 -0
  51. package/dist/hooks/magic-context/strip-structural-noise.d.ts +6 -3
  52. package/dist/hooks/magic-context/strip-structural-noise.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/transform-context-state.d.ts +3 -0
  54. package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +3 -0
  56. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  58. package/dist/{index-cpjk5jd2.js → index-1d042x6w.js} +16 -14
  59. package/dist/{index-jn0ddrhp.js → index-21fgrfrf.js} +8 -6
  60. package/dist/{index-pq0dpwrc.js → index-2rs7912w.js} +2 -2
  61. package/dist/{index-ezv6dz3y.js → index-4ks89h5a.js} +4 -4
  62. package/dist/{index-vzhhr1ht.js → index-4y35msh5.js} +1 -2
  63. package/dist/{index-f297z1n8.js → index-72czy45z.js} +5 -5
  64. package/dist/index-7v05d9b7.js +58 -0
  65. package/dist/{index-f9b3vtt1.js → index-850vthn3.js} +8 -2
  66. package/dist/{index-ksv0a31x.js → index-8jjjmhab.js} +12 -1
  67. package/dist/index-96ztjvkn.js +204 -0
  68. package/dist/{index-gyaa159j.js → index-9fgmkfaf.js} +6 -3
  69. package/dist/{index-4bgk5ztz.js → index-9tdvbdv1.js} +187 -90
  70. package/dist/{index-2v6nvy3k.js → index-ae1ar4v1.js} +1 -1
  71. package/dist/{index-faxb7mck.js → index-b1ydbp95.js} +1 -1
  72. package/dist/{index-nxrsns5x.js → index-c5dzns43.js} +75 -75
  73. package/dist/{index-zhqwda72.js → index-dcjkw41m.js} +1 -1
  74. package/dist/{index-x2mrq5xv.js → index-dfdg2cgg.js} +179 -49
  75. package/dist/{index-87ctnzz9.js → index-dz48h1wx.js} +2 -2
  76. package/dist/{index-b6xz3qbe.js → index-gnmhbyyc.js} +366 -83
  77. package/dist/{index-qx8j6kds.js → index-j105mf16.js} +2 -2
  78. package/dist/{index-p56dszfp.js → index-jggt5gf2.js} +1 -1
  79. package/dist/{index-xwwsbsd3.js → index-pp8vdn01.js} +5 -5
  80. package/dist/{index-dy7w6wm4.js → index-prw8apnc.js} +5 -5
  81. package/dist/{index-qncw9hey.js → index-r2epb000.js} +33 -3
  82. package/dist/{index-brg2w6qc.js → index-tn9drm1a.js} +16 -14
  83. package/dist/{index-pswsyf1w.js → index-ty4vhe4n.js} +3 -3
  84. package/dist/{index-pztqab6k.js → index-vd2ywmfe.js} +1 -1
  85. package/dist/{index-3j9t1v4n.js → index-wcwhhtdh.js} +10 -9
  86. package/dist/{index-1rhgxqs8.js → index-xd2p95m7.js} +1 -1
  87. package/dist/{index-0c7p8mq5.js → index-xnm0wq1r.js} +1 -1
  88. package/dist/{index-3d3872c6.js → index-ys7j6679.js} +4 -4
  89. package/dist/index.js +38 -37
  90. package/dist/{message-fts-rowid-map-xg7hr0mk.js → message-fts-rowid-map-t6qsyg9s.js} +4 -3
  91. package/dist/{message-index-bounded-narw7bnz.js → message-index-bounded-wfk6aqxk.js} +9 -8
  92. package/dist/migration-worker.js +45 -40
  93. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  94. package/dist/{project-embedding-registry-tdz7985n.js → project-embedding-registry-3yyegjma.js} +8 -7
  95. package/dist/raw-ordinal-warmup-worker.js +114 -118
  96. package/dist/{read-session-chunk-vmg1zjg0.js → read-session-chunk-26yrrhyz.js} +7 -6
  97. package/dist/{read-session-raw-mncmzbm9.js → read-session-raw-j7c9w57v.js} +3 -2
  98. package/dist/{recomp-orchestrator-qyyhnc9b.js → recomp-orchestrator-wk509qkp.js} +20 -19
  99. package/dist/{render-c5p0k846.js → render-h1qarr8a.js} +13 -12
  100. package/dist/{search-f6hwvcxk.js → search-5h9fydyq.js} +16 -15
  101. package/dist/{search-archive-0ny7p3bw.js → search-archive-q79hyqxs.js} +9 -8
  102. package/dist/{send-session-notification-0gwcz3fw.js → send-session-notification-14p3yje4.js} +5 -4
  103. package/dist/shared/model-suggestion-retry.d.ts +7 -0
  104. package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
  105. package/dist/shared/prompt-async-transport.d.ts.map +1 -1
  106. package/dist/shared/reusable-worker-entry.d.ts +4 -0
  107. package/dist/shared/reusable-worker-entry.d.ts.map +1 -0
  108. package/dist/shared/reusable-worker.d.ts +6 -0
  109. package/dist/shared/reusable-worker.d.ts.map +1 -0
  110. package/dist/shared/reusable-worker.fixture.d.ts +2 -0
  111. package/dist/shared/reusable-worker.fixture.d.ts.map +1 -0
  112. package/dist/shared/worker-shutdown.d.ts +1 -1
  113. package/dist/shared/worker-shutdown.d.ts.map +1 -1
  114. package/dist/{storage-tags-zx1023km.js → storage-tags-vj0yj7ed.js} +1 -1
  115. package/dist/{store-620rjzt9.js → store-s3eykdjt.js} +1 -1
  116. package/dist/{transform-postprocess-phase-807ff6t2.js → transform-postprocess-phase-4gj0mtcg.js} +21 -20
  117. package/dist/v2/auto-search-worker.js +163 -160
  118. package/dist/v2/chunk-embedding-write-worker.js +59 -57
  119. package/dist/v2/compaction-marker-candidates-worker.js +24 -23
  120. package/dist/v2/{compaction-marker-candidates-t1aq6gsj.js → compaction-marker-candidates-yeb2ky46.js} +4 -2
  121. package/dist/v2/{compartment-chunk-embedding-ncsk0r9e.js → compartment-chunk-embedding-qfk791bd.js} +6 -5
  122. package/dist/v2/{context-znqfkap4.js → context-bxr039be.js} +1011 -209
  123. package/dist/v2/{embedding-backfill-11j425e0.js → embedding-backfill-00tw59rx.js} +10 -9
  124. package/dist/v2/embedding-worker.js +2 -2
  125. package/dist/v2/fold/code-mode-catalog.d.ts +3 -0
  126. package/dist/v2/fold/code-mode-catalog.d.ts.map +1 -0
  127. package/dist/v2/fold/idle.d.ts +1 -0
  128. package/dist/v2/fold/idle.d.ts.map +1 -1
  129. package/dist/v2/fold/manual-baseline.d.ts +8 -0
  130. package/dist/v2/fold/manual-baseline.d.ts.map +1 -0
  131. package/dist/v2/fold/native-replay-v3.d.ts +7 -0
  132. package/dist/v2/fold/native-replay-v3.d.ts.map +1 -1
  133. package/dist/v2/fold/native-replay.d.ts +24 -7
  134. package/dist/v2/fold/native-replay.d.ts.map +1 -1
  135. package/dist/v2/fold/restore.d.ts.map +1 -1
  136. package/dist/v2/fold/summary.d.ts +4 -0
  137. package/dist/v2/fold/summary.d.ts.map +1 -0
  138. package/dist/v2/hidden-completion.d.ts.map +1 -1
  139. package/dist/v2/hooks/channel2.d.ts +6 -0
  140. package/dist/v2/hooks/channel2.d.ts.map +1 -1
  141. package/dist/v2/hooks/context.d.ts.map +1 -1
  142. package/dist/v2/hooks/restore-rows.d.ts +12 -2
  143. package/dist/v2/hooks/restore-rows.d.ts.map +1 -1
  144. package/dist/v2/hooks/synthetic-admission.d.ts +7 -0
  145. package/dist/v2/hooks/synthetic-admission.d.ts.map +1 -0
  146. package/dist/v2/hooks/usage-persist.d.ts.map +1 -1
  147. package/dist/v2/{message-fts-rowid-map-rmk571mb.js → message-fts-rowid-map-z86avy0n.js} +5 -4
  148. package/dist/v2/{message-index-bounded-620bppw7.js → message-index-bounded-w14496s9.js} +9 -8
  149. package/dist/v2/migration-worker.js +46 -41
  150. package/dist/v2/{project-embedding-registry-bm5fe1a8.js → project-embedding-registry-jqq2qeqb.js} +9 -8
  151. package/dist/v2/raw-ordinal-warmup-worker.js +114 -118
  152. package/dist/v2/{read-session-chunk-qfwv1k71.js → read-session-chunk-tqnh1ret.js} +7 -6
  153. package/dist/v2/{read-session-raw-q294t8xs.js → read-session-raw-qpp6x9kg.js} +4 -3
  154. package/dist/v2/{recomp-orchestrator-fcnjref7.js → recomp-orchestrator-9cjk6aej.js} +19 -18
  155. package/dist/v2/{render-98a1qv0b.js → render-5dz1knf2.js} +13 -12
  156. package/dist/v2/{search-z1zqzsmh.js → search-8yfet25y.js} +15 -14
  157. package/dist/v2/{search-archive-r0y1bafr.js → search-archive-z6z9jqwf.js} +9 -8
  158. package/dist/v2/{send-session-notification-fst6hkg7.js → send-session-notification-kxp47tsw.js} +4 -3
  159. package/dist/v2/{server-cpjk5jd2.js → server-1d042x6w.js} +16 -14
  160. package/dist/v2/{server-fqj6ddpr.js → server-5by3vdzs.js} +186 -89
  161. package/dist/v2/{server-5jp38p98.js → server-6emy0v9a.js} +1 -2
  162. package/dist/v2/{server-rktnzs89.js → server-6vzh6wej.js} +1 -1
  163. package/dist/v2/{server-qa74bj91.js → server-7094pk3w.js} +9 -8
  164. package/dist/v2/{server-bxpz2dcn.js → server-7acq7815.js} +8 -6
  165. package/dist/v2/server-7v05d9b7.js +58 -0
  166. package/dist/v2/{server-24g8r2d0.js → server-7zacmty5.js} +75 -75
  167. package/dist/v2/server-96ztjvkn.js +204 -0
  168. package/dist/v2/{server-hnknwaz8.js → server-a9w5f0yw.js} +3 -3
  169. package/dist/v2/{server-9k0mjef7.js → server-avdveykk.js} +1 -1
  170. package/dist/v2/{server-hsf0qsn5.js → server-cp1a03vc.js} +1 -1
  171. package/dist/v2/{server-r3chnxs5.js → server-dfq5vb8j.js} +2 -2
  172. package/dist/v2/{server-x4m6xcn4.js → server-e51xmr4d.js} +6 -6
  173. package/dist/v2/{server-7ccxt4nq.js → server-g3gqq4ac.js} +6 -3
  174. package/dist/v2/{server-kkxzwa6w.js → server-gkse1wyz.js} +3 -3
  175. package/dist/v2/{server-1xesqm5h.js → server-jd7vzwn4.js} +15 -13
  176. package/dist/v2/{server-ws5exe6q.js → server-nmyganc8.js} +1 -1
  177. package/dist/v2/{server-q0z2q2dx.js → server-nq3cb7be.js} +1 -1
  178. package/dist/v2/{server-55v5hpth.js → server-qjyp27vf.js} +2 -2
  179. package/dist/v2/{server-xbtw0p9t.js → server-r4430x9m.js} +9 -3
  180. package/dist/v2/{server-qf2kzsh2.js → server-t8y64xj7.js} +4 -4
  181. package/dist/v2/{server-s9xgyyj9.js → server-tnzbk64q.js} +34 -4
  182. package/dist/v2/{server-51779zs2.js → server-v0p37hm2.js} +4 -1
  183. package/dist/v2/{server-bpvsvtph.js → server-xfjjbrkt.js} +12 -1
  184. package/dist/v2/server.js +4 -4
  185. package/dist/v2/{storage-tags-19s0ebf0.js → storage-tags-cw07ky67.js} +1 -1
  186. package/dist/v2/{store-vdm8v3jd.js → store-z3qe67cg.js} +1 -1
  187. package/dist/v2/{v2-archive-reader-t2c0eypn.js → v2-archive-reader-z7wr42ry.js} +3 -3
  188. package/dist/v2/{wrapup-orchestrator-aqpqsveg.js → wrapup-orchestrator-j1v62bkj.js} +19 -18
  189. package/dist/{v2-archive-reader-tm2eayp2.js → v2-archive-reader-028z6kck.js} +2 -2
  190. package/dist/{wrapup-orchestrator-k5yp19a6.js → wrapup-orchestrator-xg9avt2p.js} +21 -20
  191. package/package.json +1 -1
  192. package/src/shared/model-suggestion-retry.ts +1 -1
  193. package/src/shared/prompt-async-transport.test.ts +64 -3
  194. package/src/shared/prompt-async-transport.ts +61 -16
  195. package/src/shared/reusable-worker-entry.ts +58 -0
  196. package/src/shared/reusable-worker-reset.test.ts +108 -0
  197. package/src/shared/reusable-worker.fixture.ts +35 -0
  198. package/src/shared/reusable-worker.test.ts +253 -0
  199. package/src/shared/reusable-worker.ts +240 -0
  200. package/src/shared/worker-shutdown.ts +21 -17
@@ -0,0 +1,204 @@
1
+ import {
2
+ registerExitAbort,
3
+ unregisterExitAbort
4
+ } from "./server-v0p37hm2.js";
5
+ import {
6
+ inRootAsyncContext2
7
+ } from "./server-gzy5w8ya.js";
8
+
9
+ // src/shared/reusable-worker.ts
10
+ import { EventEmitter } from "node:events";
11
+ import * as timers from "node:timers";
12
+ import {
13
+ MessageChannel,
14
+ receiveMessageOnPort,
15
+ Worker
16
+ } from "node:worker_threads";
17
+ var pools = new Map;
18
+ var liveSlots = new Set;
19
+ var nextId = 0;
20
+ var IDLE_MS = 60000;
21
+ var sharedCloneWorks = (() => {
22
+ const source = new SharedArrayBuffer(1);
23
+ const clone = structuredClone(source);
24
+ new Uint8Array(source)[0] = 1;
25
+ return new Uint8Array(clone)[0] === 1;
26
+ })();
27
+ var cloneChannel;
28
+ function cloneJobValue(value, transferList) {
29
+ if (sharedCloneWorks)
30
+ return structuredClone(value, { transfer: transferList });
31
+ if (!cloneChannel) {
32
+ cloneChannel = inRootAsyncContext2(() => new MessageChannel);
33
+ cloneChannel.port1.unref();
34
+ cloneChannel.port2.unref();
35
+ }
36
+ cloneChannel.port1.postMessage(value, transferList);
37
+ const packet = receiveMessageOnPort(cloneChannel.port2);
38
+ if (!packet)
39
+ throw new Error("worker input clone did not arrive synchronously");
40
+ return packet.message;
41
+ }
42
+
43
+ class Lease extends EventEmitter {
44
+ slot;
45
+ data;
46
+ id = ++nextId;
47
+ ended = false;
48
+ referenced = true;
49
+ outbox = [];
50
+ constructor(slot, data) {
51
+ super();
52
+ this.slot = slot;
53
+ this.data = data;
54
+ }
55
+ postMessage(value, transferList) {
56
+ if (this.ended)
57
+ return;
58
+ if (this.slot.active === this)
59
+ this.slot.worker.postMessage({ jobId: this.id, value }, transferList);
60
+ else
61
+ this.outbox.push(cloneJobValue({ value, transferList }, transferList));
62
+ }
63
+ start() {
64
+ if (this.referenced)
65
+ this.slot.worker.ref();
66
+ else
67
+ this.slot.worker.unref();
68
+ this.emit("online");
69
+ this.slot.worker.postMessage({ jobId: this.id, start: this.data });
70
+ for (const { value, transferList } of this.outbox.splice(0))
71
+ this.postMessage(value, transferList);
72
+ }
73
+ ref() {
74
+ this.referenced = true;
75
+ if (this.slot.active === this)
76
+ this.slot.worker.ref();
77
+ return this;
78
+ }
79
+ unref() {
80
+ this.referenced = false;
81
+ if (this.slot.active === this)
82
+ this.slot.worker.unref();
83
+ return this;
84
+ }
85
+ async terminate() {
86
+ if (this.ended)
87
+ return 0;
88
+ if (this.slot.active === this)
89
+ return await this.slot.worker.terminate();
90
+ this.ended = true;
91
+ this.slot.queue.splice(this.slot.queue.indexOf(this), 1);
92
+ this.emit("exit", 0);
93
+ return 0;
94
+ }
95
+ }
96
+ function reuseWorker(entry, options, idleMs = IDLE_MS) {
97
+ const data = cloneJobValue(options.workerData);
98
+ const slot = acquireSlot(entry, options, idleMs);
99
+ const lease = new Lease(slot, data);
100
+ enqueue(slot, lease);
101
+ return lease;
102
+ }
103
+ function enqueue(slot, lease) {
104
+ timers.clearTimeout(slot.idle);
105
+ lease.slot = slot;
106
+ slot.queue.push(lease);
107
+ queueMicrotask(() => slot.advance());
108
+ }
109
+ function acquireSlot(entry, options, idleMs) {
110
+ const data = options.workerData;
111
+ const key = JSON.stringify([
112
+ String(entry),
113
+ data?.path ?? data?.dbPath,
114
+ data?.harness,
115
+ data?.job
116
+ ]);
117
+ let slot = pools.get(key);
118
+ if (!slot) {
119
+ const worker = inRootAsyncContext2(() => new Worker(entry, { ...options, workerData: { reusableWorker: true } }));
120
+ const controller = new AbortController;
121
+ slot = { worker, controller, queue: [], advance: () => {} };
122
+ pools.set(key, slot);
123
+ liveSlots.add(slot);
124
+ const owned = slot;
125
+ const advance = () => {
126
+ if (controller.signal.aborted || owned.active)
127
+ return;
128
+ timers.clearTimeout(owned.idle);
129
+ const lease = owned.queue.shift();
130
+ owned.active = lease;
131
+ if (!lease) {
132
+ worker.unref();
133
+ owned.idle = timers.setTimeout(() => {
134
+ if (pools.get(key) === owned)
135
+ pools.delete(key);
136
+ worker.terminate();
137
+ }, idleMs);
138
+ owned.idle.unref();
139
+ return;
140
+ }
141
+ lease.start();
142
+ };
143
+ owned.advance = advance;
144
+ worker.on("message", (message) => {
145
+ const lease = owned.active;
146
+ if (!lease || message.jobId !== lease.id)
147
+ return;
148
+ if (!message.finished) {
149
+ lease.emit("message", message.value);
150
+ return;
151
+ }
152
+ lease.ended = true;
153
+ owned.active = undefined;
154
+ if (message.code) {
155
+ if (pools.get(key) === owned)
156
+ pools.delete(key);
157
+ lease.emit("exit", message.code);
158
+ worker.terminate();
159
+ return;
160
+ }
161
+ lease.emit("exit", 0);
162
+ advance();
163
+ });
164
+ worker.on("error", (error) => {
165
+ if (pools.get(key) === owned)
166
+ pools.delete(key);
167
+ owned.active?.emit("error", error);
168
+ });
169
+ worker.on("exit", (code) => {
170
+ liveSlots.delete(owned);
171
+ timers.clearTimeout(owned.idle);
172
+ if (pools.get(key) === owned)
173
+ pools.delete(key);
174
+ const active = owned.active;
175
+ owned.active = undefined;
176
+ if (active && !active.ended) {
177
+ active.ended = true;
178
+ active.emit("exit", code);
179
+ }
180
+ for (const lease of owned.queue.splice(0)) {
181
+ if (controller.signal.aborted) {
182
+ lease.ended = true;
183
+ lease.emit("exit", code);
184
+ } else {
185
+ try {
186
+ enqueue(acquireSlot(entry, options, idleMs), lease);
187
+ } catch (error) {
188
+ lease.ended = true;
189
+ lease.emit("error", error);
190
+ lease.emit("exit", 1);
191
+ }
192
+ }
193
+ }
194
+ });
195
+ controller.signal.addEventListener("abort", () => {
196
+ worker.terminate();
197
+ }, { once: true });
198
+ registerExitAbort(controller);
199
+ worker.once("exit", () => unregisterExitAbort(controller));
200
+ }
201
+ return slot;
202
+ }
203
+
204
+ export { reuseWorker };
@@ -6,7 +6,7 @@ import {
6
6
  } from "./server-gzy5w8ya.js";
7
7
  import {
8
8
  runSessionWarmupWorker
9
- } from "./server-s9xgyyj9.js";
9
+ } from "./server-tnzbk64q.js";
10
10
  import {
11
11
  estimateTokens
12
12
  } from "./server-969cdpmg.js";
@@ -19,10 +19,10 @@ import {
19
19
  rawMessageWorkerSource2,
20
20
  rawMessageOffThreadRangeReader2,
21
21
  readRawSessionMessageIdOrdinalsForRange2
22
- } from "./server-1xesqm5h.js";
22
+ } from "./server-jd7vzwn4.js";
23
23
  import {
24
24
  readV2ArchiveOffThread2
25
- } from "./server-x4m6xcn4.js";
25
+ } from "./server-e51xmr4d.js";
26
26
 
27
27
  // src/tools/ctx-expand/search-archive.ts
28
28
  var archiveReadsOnThisThread = 0;
@@ -11,7 +11,7 @@ import {
11
11
  PER_HARNESS_MODEL_KEYS,
12
12
  ConfigProfilesSchema,
13
13
  MagicContextConfigSchema
14
- } from "./server-24g8r2d0.js";
14
+ } from "./server-7zacmty5.js";
15
15
  import {
16
16
  isCompactionEnabled,
17
17
  migrateLegacyAgentEnabledInMemory
@@ -13,7 +13,7 @@ import {
13
13
  } from "./server-zzgtgqmd.js";
14
14
  import {
15
15
  messageFtsOrdinalRangeIsMapped2
16
- } from "./server-ws5exe6q.js";
16
+ } from "./server-nmyganc8.js";
17
17
  import {
18
18
  isKnownAutocommit
19
19
  } from "./server-8ajstryz.js";
@@ -9,13 +9,13 @@ import {
9
9
  } from "./server-pavzsdc6.js";
10
10
  import {
11
11
  cleanUserText2
12
- } from "./server-1xesqm5h.js";
12
+ } from "./server-jd7vzwn4.js";
13
13
  import {
14
14
  recordMessageFtsRowid2,
15
15
  recordIndexedMessageTime2,
16
16
  messageFtsOrdinalRangeIsMapped2,
17
17
  deleteUnmappedMessageFtsRows2
18
- } from "./server-ws5exe6q.js";
18
+ } from "./server-nmyganc8.js";
19
19
  import {
20
20
  logSlowWriteTransaction
21
21
  } from "./server-qmmkhz2z.js";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  registerExitAbort
3
- } from "./server-51779zs2.js";
3
+ } from "./server-v0p37hm2.js";
4
4
  import {
5
5
  inRootAsyncContext2
6
6
  } from "./server-gzy5w8ya.js";
7
7
  import {
8
8
  createWorkerShutdown
9
- } from "./server-cpjk5jd2.js";
9
+ } from "./server-1d042x6w.js";
10
10
 
11
11
  // src/tools/ctx-expand/v2-archive-reader.ts
12
12
  import { Worker } from "node:worker_threads";
@@ -138,10 +138,10 @@ async function serveV2ArchiveReads2(port, openConnections) {
138
138
  ] = await Promise.all([
139
139
  import("./sqlite-zdgm52sv.js"),
140
140
  import("./store-reader-cgx47zkp.js"),
141
- import("./store-vdm8v3jd.js"),
142
- import("./read-session-chunk-qfwv1k71.js"),
143
- import("./render-98a1qv0b.js"),
144
- import("./search-archive-r0y1bafr.js"),
141
+ import("./store-z3qe67cg.js"),
142
+ import("./read-session-chunk-tqnh1ret.js"),
143
+ import("./render-5dz1knf2.js"),
144
+ import("./search-archive-z6z9jqwf.js"),
145
145
  import("./expand-attachments-h33jbgyz.js")
146
146
  ]);
147
147
  const pool = new V2StoreReaderPool;
@@ -42,9 +42,12 @@ import {
42
42
  import {
43
43
  attachFailClosedBlockingProcessEvidence
44
44
  } from "./server-468mya5v.js";
45
+ import {
46
+ reuseWorker
47
+ } from "./server-96ztjvkn.js";
45
48
  import {
46
49
  startMessageFtsRowidMapBackfill2
47
- } from "./server-ws5exe6q.js";
50
+ } from "./server-nmyganc8.js";
48
51
  import {
49
52
  LKG_SLOT_CHUNKS_DDL,
50
53
  SESSION_REPLAY_DECISIONS_DDL,
@@ -222,7 +225,7 @@ function runMigrationsOffThread(data) {
222
225
  return new Promise((resolve, reject) => {
223
226
  let worker;
224
227
  try {
225
- worker = inRootAsyncContext2(() => new Worker(workerEntryOverride ?? defaultWorkerEntry(), { workerData: data }));
228
+ worker = inRootAsyncContext2(() => workerEntryOverride ? new Worker(workerEntryOverride, { workerData: data }) : reuseWorker(defaultWorkerEntry(), { workerData: data }));
226
229
  } catch (error) {
227
230
  reject(workerStartError(error instanceof Error ? error.message : String(error)));
228
231
  return;
@@ -1019,7 +1022,7 @@ function finishDatabaseOpen(db, dbPath, explicitDbPath, latestSupportedVersion)
1019
1022
  state.running = startMessageFtsRowidMapBackfill2(db, signal).then(async () => {
1020
1023
  if (signal.aborted || !readsOpenCodeStore)
1021
1024
  return;
1022
- const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-qfwv1k71.js"));
1025
+ const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-tqnh1ret.js"));
1023
1026
  const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-0c4h7sg6.js"));
1024
1027
  if (signal.aborted)
1025
1028
  return;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_LOCAL_EMBEDDING_MODEL
3
- } from "./server-24g8r2d0.js";
3
+ } from "./server-7zacmty5.js";
4
4
  import {
5
5
  log2
6
6
  } from "./server-jb6tjyeb.js";
@@ -10,12 +10,12 @@ import {
10
10
  } from "./server-zzgtgqmd.js";
11
11
  import {
12
12
  LocalEmbeddingProvider
13
- } from "./server-rktnzs89.js";
13
+ } from "./server-6vzh6wej.js";
14
14
  import {
15
15
  OpenAICompatibleEmbeddingProvider,
16
16
  getProjectEmbeddingSnapshot2,
17
17
  embedBatchForProject2
18
- } from "./server-bxpz2dcn.js";
18
+ } from "./server-7acq7815.js";
19
19
  import {
20
20
  isEmbeddingHostBusy2
21
21
  } from "./server-qt1qqasc.js";
@@ -18,7 +18,7 @@ import {
18
18
  TAG_SELECT_COLUMNS2,
19
19
  getCandidateToolOwners2,
20
20
  pickNearestPriorOwner2
21
- } from "./server-bpvsvtph.js";
21
+ } from "./server-xfjjbrkt.js";
22
22
  import {
23
23
  OMO_INTERNAL_INITIATOR_MARKER,
24
24
  isSystemDirective,
@@ -53,7 +53,7 @@ import {
53
53
  renderToolTemplate,
54
54
  resolveModelConfigValue,
55
55
  deriveDefaultProtectedTokens
56
- } from "./server-24g8r2d0.js";
56
+ } from "./server-7zacmty5.js";
57
57
  import {
58
58
  readRawSessionMessagesFromDb2,
59
59
  readRawSessionMessagePageFromDb2,
@@ -70,7 +70,7 @@ import {
70
70
  readRawSeedTailFromDb2,
71
71
  readRawSessionBoundaryEndpointsFromDb2,
72
72
  prewarmRawSessionOrdinalsForDb
73
- } from "./server-s9xgyyj9.js";
73
+ } from "./server-tnzbk64q.js";
74
74
  import {
75
75
  openCodeDbExists,
76
76
  withReadOnlySessionDb,
@@ -322,7 +322,7 @@ function looksImageLike(part) {
322
322
  const type = typeof part.type === "string" ? part.type.toLowerCase() : "";
323
323
  const mime = typeof part.mime === "string" ? part.mime.toLowerCase() : "";
324
324
  const mediaType = typeof part.mediaType === "string" ? part.mediaType.toLowerCase() : "";
325
- return type.includes("image") || mime.startsWith("image/") || mediaType.startsWith("image/") || part.image_url !== undefined || part.imageUrl !== undefined || part.image !== undefined;
325
+ return type.includes("image") || mime.startsWith("image/") || mediaType.startsWith("image/") || part.image_url !== undefined || part.imageUrl !== undefined || part.image !== undefined || type.includes("file") && (typeof part.url === "string" && part.url.startsWith("data:image/") || typeof part.data === "string" && /^(?:data:image\/|\/9j\/|iVBORw0KGgo|R0lGOD)/.test(part.data));
326
326
  }
327
327
  function defaultImageTokenHeuristic(part) {
328
328
  if (isRecord(part)) {
@@ -686,7 +686,7 @@ function buildTrueRawTokenIndex(sessionId, messages, options) {
686
686
  } else {
687
687
  const raw = tokenForMessage(message, options);
688
688
  const seed = options.calibration;
689
- total = seed ? (raw.toolInput + raw.toolOutput) * seed.toolsRatio + (raw.text + raw.reasoning + raw.other) * seed.proseRatio + raw.image : raw.total;
689
+ total = options.measure === "summary-removed" ? raw.text * (seed?.proseRatio ?? 1) + raw.toolInput * (seed?.toolsRatio ?? 1) : seed ? (raw.toolInput + raw.toolOutput) * seed.toolsRatio + (raw.text + raw.reasoning + raw.other) * seed.proseRatio + raw.image : raw.total;
690
690
  }
691
691
  tokensByOrdinal.set(message.ordinal, total);
692
692
  idsByOrdinal.set(message.ordinal, message.id);
@@ -4028,12 +4028,6 @@ function clearPendingPiCompactionMarkerStateIf(db, sessionId, expected, reason =
4028
4028
  function logPiCompactionMarkerClear(sessionId, marker, reason) {
4029
4029
  sessionLog2(sessionId, `Pi compaction-marker clear: reason=${reason} endMessageId=${marker.endMessageId} ordinal=${marker.ordinal} firstKeptEntryId=${marker.firstKeptEntryId ?? "<none>"}`);
4030
4030
  }
4031
- function setSessionWorkMetrics(db, sessionId, newWorkTokens, totalInputTokens) {
4032
- ensureSessionMetaRow(db, sessionId);
4033
- db.prepare(`UPDATE session_meta
4034
- SET new_work_tokens = ?, total_input_tokens = ?
4035
- WHERE session_id = ?`).run(Math.max(0, Math.floor(newWorkTokens)), Math.max(0, Math.floor(totalInputTokens)), sessionId);
4036
- }
4037
4031
  var preSnapshotSessions = new Map;
4038
4032
  var warnedProtectedTokenTierOverrides = new WeakSet;
4039
4033
  function isPreSnapshotMemo(value) {
@@ -4245,6 +4239,8 @@ var OVERFLOW_PATTERNS = [
4245
4239
  /request entity too large/i,
4246
4240
  /context length is only \d+ tokens/i,
4247
4241
  /input length.*exceeds.*context length/i,
4242
+ /\bContextWindowExceededError\b/i,
4243
+ /\bthe input \(\d+ tokens?\) is longer than the model's context length \(\d+ tokens?\)/i,
4248
4244
  /prompt too long; exceeded (?:max )?context length/i,
4249
4245
  /too large for model with \d+ maximum context length/i,
4250
4246
  /model_context_window_exceeded/i,
@@ -4267,6 +4263,10 @@ var LIMIT_EXTRACTION_PATTERNS = [
4267
4263
  },
4268
4264
  { pattern: /context size[^0-9]{0,40}(\d{4,})\s*tokens?/i, provenance: "combined" },
4269
4265
  { pattern: /exceeds? the context length of (\d+)/i, provenance: "combined" },
4266
+ {
4267
+ pattern: /\bthe input \(\d+ tokens?\) is longer than the model's context length \((\d+) tokens?\)/i,
4268
+ provenance: "combined"
4269
+ },
4270
4270
  {
4271
4271
  pattern: />\s*(\d+)\s*(?:tokens?\s*)?(?:maximum|max|limit)\b/i,
4272
4272
  provenance: "prompt_only"
@@ -4387,7 +4387,9 @@ function parseReportedInputTokens(message) {
4387
4387
  /input token count\s*\(?\s*(\d+)/i,
4388
4388
  /input length\s*(\d+)/i,
4389
4389
  /prompt was\s*(\d+)/i,
4390
- /messages resulted in\s*(\d+)\s*tokens?/i
4390
+ /messages resulted in\s*(\d+)\s*tokens?/i,
4391
+ /\bthe input \((\d+) tokens?\) is longer than the model's context length \(\d+ tokens?\)/i,
4392
+ /\(\s*(\d+)\s+in the messages,\s*\d+\s+in the completion\s*\)/i
4391
4393
  ];
4392
4394
  for (const pattern of patterns) {
4393
4395
  const raw = message.match(pattern)?.[1];
@@ -7466,4 +7468,4 @@ function readRawSessionSeedTail2(sessionId, boundaryId, onQuery) {
7466
7468
  });
7467
7469
  }
7468
7470
 
7469
- export { expandToolPart, askAnswerLines, removeUnsupportedCommitHashes, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, TOOL_USE_DISABLED, needsBlockedRead, withBlockedReadInstruction, rememberV1HiddenRun, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, isEditTool, createFinalWireIncompleteLogger, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, clearCachedM0, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, getCompactionMarkerPublicationState, compareAndSetCompactionMarkerPublicationState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, COMPACTION_OFF_THINKING_FROZEN_PREFIX, compactionOffThinkingFrozenId, compactionOffFrozenThinkingIds, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, setSessionWorkMetrics, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, markServedShapeRepair, prepareServedShapeRepair, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, captureInlineThinkingRepairs, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimatePartImageTokens, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, rawMessageWorkerSource2, rawMessageOffThreadRangeReader2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, resolveHistorianChunkStart2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
7471
+ export { expandToolPart, askAnswerLines, removeUnsupportedCommitHashes, completedToolArcCrossesBoundary, estimateTrueRawMessageTokens, buildToolArcs, fenceBoundaryForCompletedToolArcs, fenceBoundaryForToolArcs, buildTrueRawTokenIndex, computeRawRangeFingerprint, stripSystemInjection, isTextPart, isToolPartWithOutput, isFilePart, toolPartHasUserAnswer, DreamTokenBudgetExceeded, TOKEN_BUDGET_FINALIZE_MESSAGE, registerBudgetFinalizeChild, releaseBudgetFinalizeChild, createDreamTokenBudget, TOOL_USE_DISABLED, needsBlockedRead, withBlockedReadInstruction, rememberV1HiddenRun, recordToolParameters, createDroppedInputGuard, assertExecutableToolInput, isEditTool, createFinalWireIncompleteLogger, MERGED_REASONING_PARTS_PREFIX, decodeMergedReasoningParts, MAX_EXECUTE_THRESHOLD, escalationBands, HYGIENE_PROVIDER_UNITS_VERSION, sessionDecisionCalibration, transitionSessionHygieneUnits, readEpochFloorSnapshot, getProtectionWindowForSession, SESSION_META_SELECT_COLUMNS, META_COLUMNS, BOOLEAN_META_KEYS, NULL_BIND_META_KEYS, isSessionMetaRow, getDefaultSessionMeta, ensureSessionMetaRow, toSessionMeta, persistCachedM0, clearCachedM0M1, clearCachedM0, withReplayEnvelopeSnapshot, invalidateReplayEnvelopeSnapshot, isRustMarkerAdmissionFenced, setRustMarkerAdmissionFence, ReplayDocumentError, readReplayEnvelope, readReplayDocument, updateReplayDocument, writeReplayDocument, isEmergencyRecoveryArmed, isProviderOverflowReconfirmed, isProviderOverflowFailClosedProven, getEmergencyRecoveryArmedAt, describeProtectedTailDrainBudgetSkip, loadPersistedUsage, loadProtectedTailMeta, markProtectedTailPolicyV3Seeded, recordProtectedTailPublicationFloor, recordProtectedTailNoEligibleHead, resetProtectedTailNoEligibleHead, getWrapupInProgressState, isWrapupInProgress, acquireWrapupInProgress, updateWrapupInProgress, releaseWrapupInProgress, resolveCompactionModeRecord, getCompactionModeRecord, setCompactionModeRecord, getProtectedTailDrainBudgetSkip, reserveProtectedTailDrainTokens, clearEmergencyDrainLatch, recordHistorianDrainFailure, clearHistorianDrainFailure, rollbackProtectedTailDrainReservation, clearPersistedReasoningWatermark, getEmergencyInputSample, setEmergencyDropSample, clearEmergencyDropSample, getLastNudgeUndropped, setLastNudgeUndropped, getChannel1NudgeState, setChannel1NudgeState, markChannel1PostReduceGracePending, captureChannel1PostReduceGraceBaseline, getChannel2NudgeState, setChannel2NudgeState, casChannel2NudgeState, claimChannel2NudgeState, casChannel2NudgeClaim, getPersistedNoteNudge, setPersistedNoteNudgeTrigger, setPersistedNoteNudgeTriggerMessageId, getNoteNudgeAnchors, getAutoSearchHintDecisions, deliverNoteNudgeAtomic, appendAutoSearchHintDecision, pruneNoteNudgeAnchors, queueAutoSearchHintDecisionRetirement, flushAutoSearchHintDecisionRetirement, getPersistedTodoPermissionDenied, setPersistedTodoPermissionDenied, getPersistedTodoSyntheticAnchor, setPersistedTodoSyntheticAnchor, clearPersistedTodoSyntheticAnchor, getNoteLastReadAt, setNoteLastReadAt, getHistorianFailureState, incrementHistorianFailure, clearHistorianFailureState, getOverflowState, loadTransformPassStateSnapshot, recordOverflowDetected, recordDetectedContextLimit, clearEmergencyRecovery, clearDetectedContextLimit, getPersistedCompactionMarkerState, getCompactionMarkerPublicationState, compareAndSetCompactionMarkerPublicationState, setPersistedCompactionMarkerState, getDeferredClearedCompactionMarkerState, retireDeferredClearedCompactionMarkerState, parseStrippedPlaceholderState, serializeStrippedPlaceholderState, getStrippedPlaceholderIds, applyStrippedPlaceholderDelta, THINKING_BINDING_RECOVERY_FROZEN_PREFIX, THINKING_BINDING_STRIP_ORDER_END_MARKER, thinkingBindingRecoveryFrozenId, COMPACTION_OFF_THINKING_FROZEN_PREFIX, compactionOffThinkingFrozenId, compactionOffFrozenThinkingIds, getThinkingBindingRecoveryTarget, clearThinkingBindingRecoveryIf, getMergedReasoningStrippedIds, addMergedReasoningStrippedIds, getTrailingBlankDecisions, addTrailingBlankDecisions, demoteTrailingBlankKeepDecisions, getStaleReduceStrippedIds, addStaleReduceStrippedIds, getProcessedImageStrippedIds, parseProcessedImageMarkers, serializeProcessedImageMarkers, getProcessedImageMarkers, addProcessedImageStrippedIds, getPendingCompactionMarkerState, getCompactionMarkerHealth, loadPostprocessReplaySnapshot, setPendingCompactionMarkerState, replacePendingCompactionMarkerStateIf, clearPendingCompactionMarkerStateIf, getPendingPiCompactionMarkerState, clearPendingPiCompactionMarkerStateIf, logPiCompactionMarkerClear, getObservedEpochFloor, resolveEpochFloorForPass, getReasoningRemovalState, addRemovedReasoningIds, markDropLeavesReasoning, detectLatestTurnThinkingMismatch, isPrefixBoundThinkingModel, detectOverflow, modelAcceptsEmptyContent, isAnthropicFamilyRoute, neutralizeDroppedReasoningPart, restoreNeutralizedReasoningPart, isNeutralizedReasoningPart, variantChangeBustsProviderCache, makeSentinel, makeWholeMessageSentinel, isSentinel, replaySentinelByMessageIds, isInActiveAnthropicTurn, activeAnthropicTurnStart, hasAnthropicReasoning, markServedShapeRepair, prepareServedShapeRepair, stripSystemInjectedMessages, stripDroppedPlaceholderMessages, replayClearedReasoning, replayStrippedInlineThinking, clearOldReasoning, stripClearedReasoning, captureInlineThinkingRepairs, stripInlineThinking, findReasoningBearingAssistantIds, findLatestAssistantReasoningMutationExemptMessage, snapshotTrailingBlankSourceDecisions, findTrailingBlankDecisionCandidates, applyFrozenTrailingBlankDecisions, stripReasoningFromAssistantIds, findMergedReasoningStripDecisions, stripReasoningFromMergedAssistants, getEmptyImageParts, stripProcessedImages, projectOpencodeReasoningBudgetCutoff, DEFAULT_KEEP_REASONING_TOKENS, resolveKeepReasoningTokens, reasoningStepCost, reasoningBudgetCutoff, reasoningTextAndOpaque, opencodeReasoningBudgetCutoff, describeFinalWireTail, estimatePartImageTokens, estimateMessageTokens, wireContentBytes, createFinalWireUsageTracker, estimateFinalWireInputTokens, estimateAppendedWireTokens, SKELETON_REAL_INPUT_MAX_BYTES, partHasCompletedResult, extractToolCallObservation, ToolMutationBatch, createToolDropTarget, resolveHostServedBoundaryId2, hasRawMessageProvider2, rawMessageWorkerSource2, rawMessageOffThreadRangeReader2, setRawMessageProvider2, setBoundedRawMessageProvider2, withRawMessageProvider2, cleanUserText2, withRawSessionMessageCache2, readRawSessionMessages2, readRawSessionMessagePage2, getRawSessionMessageOrdinalCount2, RAW_MESSAGE_VISIT_PAGE_SIZE2, visitRawSessionMessages2, visitRawSessionMessagesAsync2, readRawSessionMessageRange2, prepareRawSessionOrdinals2, primeTailRawMessageCache2, getCachedAbsoluteMessageCount2, primeInMemoryTailRawMessageCache2, readRawSessionMessageOrdinalPage2, getRawSessionStoredMessageCount2, readRawSessionMessageIdOrdinalsForRange2, readRawSessionMessageIdOrdinals2, readRawSessionMessagePartsById2, readRawSessionBoundaryEndpoints2, hasRawSessionMessageById2, readRawSessionMessageOrdinalById2, resolveHistorianChunkStart2, compareRawSessionMessageOrder2, readRawSessionMessageById2, getRawSessionMessageCount2, RAW_SESSION_TAG_KEY_PAGE_SIZE2, getRawSessionTagKeysThrough2, getLegacyProtectedTailStartOrdinal2, getProtectedTailStartOrdinal2, readSessionChunk2, getRawSessionMessageIdsThrough2, readRawSessionSeedTail2 };
@@ -5,7 +5,7 @@ import {
5
5
  } from "./server-gzy5w8ya.js";
6
6
  import {
7
7
  runSessionWarmupWorker
8
- } from "./server-s9xgyyj9.js";
8
+ } from "./server-tnzbk64q.js";
9
9
  import {
10
10
  logSlowWriteTransaction
11
11
  } from "./server-qmmkhz2z.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./server-jb6tjyeb.js";
11
11
  import {
12
12
  embedTextForProject2
13
- } from "./server-bxpz2dcn.js";
13
+ } from "./server-7acq7815.js";
14
14
  import {
15
15
  saveEmbeddingIfHashMatches
16
16
  } from "./server-4dhv7mqz.js";
@@ -5,10 +5,10 @@ import {
5
5
  expandToolPart,
6
6
  visitRawSessionMessages2,
7
7
  readRawSessionMessageById2
8
- } from "./server-1xesqm5h.js";
8
+ } from "./server-jd7vzwn4.js";
9
9
  import {
10
10
  getTagById2
11
- } from "./server-bpvsvtph.js";
11
+ } from "./server-xfjjbrkt.js";
12
12
 
13
13
  // src/tools/ctx-expand/render.ts
14
14
  import { createHash } from "node:crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  registerExitAbort
3
- } from "./server-51779zs2.js";
3
+ } from "./server-v0p37hm2.js";
4
4
  import {
5
5
  log2
6
6
  } from "./server-jb6tjyeb.js";
@@ -8,6 +8,12 @@ import {
8
8
  inRootAsyncContext2,
9
9
  getSqliteDatabasePath2
10
10
  } from "./server-gzy5w8ya.js";
11
+ import {
12
+ reuseWorker
13
+ } from "./server-96ztjvkn.js";
14
+ import {
15
+ createWorkerShutdown
16
+ } from "./server-1d042x6w.js";
11
17
 
12
18
  // src/features/magic-context/compaction-marker-candidates.ts
13
19
  import { existsSync, realpathSync } from "node:fs";
@@ -140,7 +146,7 @@ function runCandidateWorker(path, sessionId, options) {
140
146
  return;
141
147
  }
142
148
  workers.delete(worker);
143
- const stopped = worker.terminate();
149
+ const stopped = snapshot ? createWorkerShutdown(worker, "marker-candidates", 1000).close() : worker.terminate();
144
150
  worker.unref();
145
151
  stopped.then(() => resolve(snapshot), () => resolve(snapshot));
146
152
  };
@@ -153,7 +159,7 @@ function runCandidateWorker(path, sessionId, options) {
153
159
  timer.unref?.();
154
160
  };
155
161
  try {
156
- worker = inRootAsyncContext2(() => new Worker(entry, { workerData: { path, sessionId } }));
162
+ worker = inRootAsyncContext2(() => options.entry ? new Worker(entry, { workerData: { path, sessionId } }) : reuseWorker(entry, { workerData: { path, sessionId } }));
157
163
  workers.add(worker);
158
164
  worker.unref();
159
165
  deadline(options.acceptMs ?? 2000);
@@ -18,10 +18,10 @@ import {
18
18
  } from "./server-gzy5w8ya.js";
19
19
  import {
20
20
  deleteUnmappedMessageFtsRows2
21
- } from "./server-ws5exe6q.js";
21
+ } from "./server-nmyganc8.js";
22
22
  import {
23
23
  deleteChunkEmbedBackoffForSession2
24
- } from "./server-hsf0qsn5.js";
24
+ } from "./server-cp1a03vc.js";
25
25
  import {
26
26
  isPidAlive,
27
27
  readProcessStartTime
@@ -53,7 +53,7 @@ import {
53
53
  serializeProcessedImageMarkers,
54
54
  getPendingPiCompactionMarkerState,
55
55
  logPiCompactionMarkerClear
56
- } from "./server-1xesqm5h.js";
56
+ } from "./server-jd7vzwn4.js";
57
57
  import {
58
58
  getTableColumnNames,
59
59
  tagTombstoneOwnerRange,
@@ -66,7 +66,7 @@ import {
66
66
  stripTagPrefix,
67
67
  isRecord,
68
68
  providerVisibleMessage
69
- } from "./server-bpvsvtph.js";
69
+ } from "./server-xfjjbrkt.js";
70
70
  import {
71
71
  withReadOnlySessionDb
72
72
  } from "./server-mfn1yf9d.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  registerExitAbort
3
- } from "./server-51779zs2.js";
3
+ } from "./server-v0p37hm2.js";
4
4
  import {
5
5
  log2
6
6
  } from "./server-jb6tjyeb.js";
@@ -9,9 +9,12 @@ import {
9
9
  getSqliteDatabasePath2,
10
10
  releaseIndexOwner2
11
11
  } from "./server-gzy5w8ya.js";
12
+ import {
13
+ reuseWorker
14
+ } from "./server-96ztjvkn.js";
12
15
  import {
13
16
  createWorkerShutdown
14
- } from "./server-cpjk5jd2.js";
17
+ } from "./server-1d042x6w.js";
15
18
 
16
19
  // src/hooks/magic-context/raw-ordinal-warmup.ts
17
20
  import { Worker } from "node:worker_threads";
@@ -1207,6 +1210,7 @@ function runSessionWarmupWorker(input, options) {
1207
1210
  clearTimeout(deadline);
1208
1211
  options.signal?.removeEventListener("abort", abort);
1209
1212
  if (worker) {
1213
+ worker.off("online", startDeadline);
1210
1214
  activeWorkers.delete(worker);
1211
1215
  const stopped = shutdown?.close() ?? worker.terminate();
1212
1216
  worker.unref();
@@ -1224,6 +1228,10 @@ function runSessionWarmupWorker(input, options) {
1224
1228
  deadline = setTimeout(() => finish({ failure, detail: `no reply within ${ms} ms` }), ms);
1225
1229
  deadline.unref?.();
1226
1230
  };
1231
+ const startDeadline = () => {
1232
+ if (!settled)
1233
+ arm("not-accepted", options.acceptMs ?? ACCEPT_TIMEOUT_MS);
1234
+ };
1227
1235
  const abort = () => finish({ failure: "stopped", detail: "stopped" });
1228
1236
  if (options.signal?.aborted) {
1229
1237
  abort();
@@ -1231,8 +1239,14 @@ function runSessionWarmupWorker(input, options) {
1231
1239
  }
1232
1240
  options.signal?.addEventListener("abort", abort, { once: true });
1233
1241
  try {
1234
- worker = inRootAsyncContext2(() => new Worker(options.entry ?? defaultEntry(), {
1242
+ worker = inRootAsyncContext2(() => options.entry ? new Worker(options.entry, {
1235
1243
  workerData: { ...input, openCancellation: openCancellation.buffer }
1244
+ }) : reuseWorker(defaultEntry(), {
1245
+ workerData: {
1246
+ ...input,
1247
+ job: rawWorkerJobKind(input),
1248
+ openCancellation: openCancellation.buffer
1249
+ }
1236
1250
  }));
1237
1251
  shutdown = createWorkerShutdown(worker, "raw-ordinal-warmup", WARMUP_CLOSE_DEADLINE_MS);
1238
1252
  } catch (error) {
@@ -1241,7 +1255,10 @@ function runSessionWarmupWorker(input, options) {
1241
1255
  }
1242
1256
  worker.unref();
1243
1257
  activeWorkers.set(worker, (failure) => finish({ failure, detail: "stopped" }));
1244
- arm("not-accepted", options.acceptMs ?? ACCEPT_TIMEOUT_MS);
1258
+ if (options.entry)
1259
+ startDeadline();
1260
+ else
1261
+ worker.once("online", startDeadline);
1245
1262
  worker.on("message", (reply) => {
1246
1263
  if (reply.kind === "accepted")
1247
1264
  arm("no-result", options.resultMs ?? RESULT_TIMEOUT_MS);
@@ -1271,6 +1288,19 @@ function runSessionWarmupWorker(input, options) {
1271
1288
  worker.on("exit", (code) => finish({ failure: "exited", detail: `exit code ${code}` }));
1272
1289
  });
1273
1290
  }
1291
+ function rawWorkerJobKind(input) {
1292
+ if (input.indexMessage)
1293
+ return "index-message";
1294
+ if (input.ftsRowidBackfill)
1295
+ return "fts-rowid-backfill";
1296
+ if (input.searchArchive)
1297
+ return "search-archive";
1298
+ if (input.exactOrdinalIds)
1299
+ return "exact-ordinal-ids";
1300
+ if (input.tagRatio !== undefined)
1301
+ return input.tagState ? "tag-delta" : "tag-summary";
1302
+ return "ordinal-scan";
1303
+ }
1274
1304
  function prewarmRawSessionOrdinalsForDb(db, sessionId, options = {}) {
1275
1305
  if (isRawSessionSummaryWarm2(db, sessionId))
1276
1306
  return Promise.resolve("warm");
@@ -15,5 +15,8 @@ function registerExitAbort(controller) {
15
15
  listenerRegistered = true;
16
16
  process.once("exit", abortAll);
17
17
  }
18
+ function unregisterExitAbort(controller) {
19
+ controllers.delete(controller);
20
+ }
18
21
 
19
- export { registerExitAbort };
22
+ export { registerExitAbort, unregisterExitAbort };