@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
@@ -74,7 +74,7 @@ import {
74
74
  adoptNullOwnerToolTag2,
75
75
  getCandidateToolOwners2,
76
76
  pickNearestPriorOwner2
77
- } from "./index-ksv0a31x.js";
77
+ } from "./index-8jjjmhab.js";
78
78
  import {
79
79
  textMentionsRecentCommit,
80
80
  hasMeaningfulUserText2,
@@ -94,12 +94,15 @@ import {
94
94
  assertTransformWrite2,
95
95
  isTransientSqliteError2
96
96
  } from "./index-gzy5w8ya.js";
97
+ import {
98
+ reuseWorker
99
+ } from "./index-96ztjvkn.js";
97
100
  import {
98
101
  createWorkerShutdown
99
- } from "./index-cpjk5jd2.js";
102
+ } from "./index-1d042x6w.js";
100
103
  import {
101
104
  runSessionWarmupWorker
102
- } from "./index-qncw9hey.js";
105
+ } from "./index-r2epb000.js";
103
106
  import {
104
107
  getMaxM0MutationId,
105
108
  getLastCompartmentEndMessage,
@@ -117,11 +120,11 @@ import {
117
120
  saveSourceContent,
118
121
  replaceSourceContent,
119
122
  getSourceContents
120
- } from "./index-f297z1n8.js";
123
+ } from "./index-72czy45z.js";
121
124
  import {
122
125
  cleanSearchText,
123
126
  matchedSearchSnippet
124
- } from "./index-pq0dpwrc.js";
127
+ } from "./index-2rs7912w.js";
125
128
  import {
126
129
  stripSystemInjection,
127
130
  isTextPart,
@@ -219,15 +222,15 @@ import {
219
222
  extractToolCallObservation,
220
223
  ToolMutationBatch,
221
224
  createToolDropTarget
222
- } from "./index-brg2w6qc.js";
225
+ } from "./index-tn9drm1a.js";
223
226
  import {
224
227
  isValidLanguageCode
225
- } from "./index-nxrsns5x.js";
228
+ } from "./index-c5dzns43.js";
226
229
  import {
227
230
  getProjectEmbeddingSnapshot2,
228
231
  embedTextForProject2,
229
232
  embedBatchForProject2
230
- } from "./index-jn0ddrhp.js";
233
+ } from "./index-21fgrfrf.js";
231
234
  import {
232
235
  isEmbeddingHostBusy2
233
236
  } from "./index-qt1qqasc.js";
@@ -235,7 +238,7 @@ import {
235
238
  openCodeDbExists,
236
239
  withReadOnlySessionDb,
237
240
  getMessageTimesFromOpenCodeDb
238
- } from "./index-pztqab6k.js";
241
+ } from "./index-vd2ywmfe.js";
239
242
  import {
240
243
  BoundedSessionMap
241
244
  } from "./index-jkanybgq.js";
@@ -243,7 +246,7 @@ import {
243
246
  getMessageIndexEpoch,
244
247
  isMessageIndexSearchable,
245
248
  createAutoSearchDiagnostics
246
- } from "./index-87ctnzz9.js";
249
+ } from "./index-dz48h1wx.js";
247
250
  import {
248
251
  compareOpenCodeMessagesByCanonicalOrder,
249
252
  prepareCompactionMarkerCandidates,
@@ -263,10 +266,10 @@ import {
263
266
  peekNoteNudgeText,
264
267
  markNoteNudgeDelivered,
265
268
  getActiveCompartmentRun
266
- } from "./index-4bgk5ztz.js";
269
+ } from "./index-9tdvbdv1.js";
267
270
  import {
268
271
  userFacingFailureCode
269
- } from "./index-0c7p8mq5.js";
272
+ } from "./index-xnm0wq1r.js";
270
273
  import {
271
274
  normalizeProtectedToolName,
272
275
  mergeProtectedTools
@@ -1437,7 +1440,7 @@ async function acquireSearchWorker(db, key, entry, input, signal) {
1437
1440
  }
1438
1441
  const fresh = !slot;
1439
1442
  if (!slot) {
1440
- const worker = inRootAsyncContext2(() => new Worker(entry, { workerData: { ...input, persistent: true } }));
1443
+ const worker = inRootAsyncContext2(() => input.job === "backfill" && entry.href === defaultAutoSearchWorkerEntry().href ? reuseWorker(entry, { workerData: input }) : new Worker(entry, { workerData: { ...input, persistent: true } }));
1441
1444
  const shutdown = createWorkerShutdown(worker, "auto-search", AUTO_SEARCH_WORKER_CLOSE_DEADLINE_MS);
1442
1445
  slot = {
1443
1446
  worker,
@@ -1515,6 +1518,7 @@ function queueAutoSearchBackfill(db, sessionId, projectPath, query) {
1515
1518
  pending.set(key, work);
1516
1519
  return work;
1517
1520
  }
1521
+ var nextSearchJobId = 0;
1518
1522
  async function executeAutoSearchWorker(db, sessionId, projectPath, query, options, entry, job) {
1519
1523
  if (options.signal?.aborted)
1520
1524
  return [];
@@ -1535,6 +1539,7 @@ async function executeAutoSearchWorker(db, sessionId, projectPath, query, option
1535
1539
  const signal = deadlineSignal ? AbortSignal.any([deadlineSignal, lifecycle.signal]) : lifecycle.signal;
1536
1540
  const snapshot = getProjectEmbeddingSnapshot2(projectPath);
1537
1541
  const input = {
1542
+ jobId: ++nextSearchJobId,
1538
1543
  job,
1539
1544
  path,
1540
1545
  harness: getHarness2(),
@@ -1654,6 +1659,8 @@ async function executeAutoSearchWorker(db, sessionId, projectPath, query, option
1654
1659
  const onMessage = async (reply) => {
1655
1660
  if (released)
1656
1661
  return;
1662
+ if (entry.href === defaultAutoSearchWorkerEntry().href && reply.jobId !== input.jobId)
1663
+ return;
1657
1664
  if (reply.kind === "diagnostics") {
1658
1665
  if (!settled && options.autoSearchDiagnostics) {
1659
1666
  const workerStarted = options.autoSearchDiagnostics.workerStarted;
@@ -1681,7 +1688,7 @@ async function executeAutoSearchWorker(db, sessionId, projectPath, query, option
1681
1688
  }
1682
1689
  if (reply.kind === "messages" || reply.kind === "accepted")
1683
1690
  return;
1684
- const response = { id: reply.id };
1691
+ const response = { id: reply.id, jobId: input.jobId };
1685
1692
  if (!signal.aborted) {
1686
1693
  const requestedAt = performance.now();
1687
1694
  try {
@@ -1810,7 +1817,7 @@ function searchMessageHistoryOffThread(db, request, entry = defaultAutoSearchWor
1810
1817
  deadline.unref?.();
1811
1818
  };
1812
1819
  try {
1813
- worker = inRootAsyncContext2(() => new Worker(entry, { workerData: input }));
1820
+ worker = inRootAsyncContext2(() => entry.href === defaultAutoSearchWorkerEntry().href ? reuseWorker(entry, { workerData: input }) : new Worker(entry, { workerData: input }));
1814
1821
  shutdown = createWorkerShutdown(worker, "message-search", MESSAGE_SEARCH_WORKER_CLOSE_DEADLINE_MS);
1815
1822
  } catch (error) {
1816
1823
  finish(null, "start-failed", error);
@@ -3360,6 +3367,130 @@ function degradedPassError(site, error) {
3360
3367
  return new DegradedPassRefusalError(site, { cause: error });
3361
3368
  }
3362
3369
 
3370
+ // src/hooks/magic-context/strip-structural-noise.ts
3371
+ var STRUCTURAL_PART_TYPES = new Set(["meta", "step-start", "step-finish", "reasoning"]);
3372
+ var structuralSentinels = new WeakSet;
3373
+ function isStructuralNoiseSentinel(part) {
3374
+ return isRecord(part) && structuralSentinels.has(part);
3375
+ }
3376
+ function isStructuralNoisePart(part) {
3377
+ if (!isRecord(part) || typeof part.type !== "string") {
3378
+ return false;
3379
+ }
3380
+ if (!STRUCTURAL_PART_TYPES.has(part.type)) {
3381
+ return false;
3382
+ }
3383
+ if (part.type === "reasoning" && typeof part.text === "string" && part.text !== "[cleared]") {
3384
+ return false;
3385
+ }
3386
+ return true;
3387
+ }
3388
+ function stripStructuralNoise(messages) {
3389
+ let strippedParts = 0;
3390
+ for (const message of messages) {
3391
+ if (!Array.isArray(message.parts)) {
3392
+ continue;
3393
+ }
3394
+ for (let i = 0;i < message.parts.length; i++) {
3395
+ const part = message.parts[i];
3396
+ if (isSentinel(part))
3397
+ continue;
3398
+ if (!isStructuralNoisePart(part))
3399
+ continue;
3400
+ message.parts[i] = makeSentinel(part);
3401
+ if (isRecord(part) && part.type !== "reasoning") {
3402
+ structuralSentinels.add(message.parts[i]);
3403
+ }
3404
+ strippedParts++;
3405
+ }
3406
+ }
3407
+ return strippedParts;
3408
+ }
3409
+
3410
+ // src/hooks/magic-context/project-structural-sentinels.ts
3411
+ function readOmissions(value) {
3412
+ if (value === undefined)
3413
+ return new Set;
3414
+ if (!Array.isArray(value) || value.some((id) => typeof id !== "string" || !id))
3415
+ throw new Error("Invalid structural-sentinel replay decisions");
3416
+ return new Set(value);
3417
+ }
3418
+ function hasSignedReasoning(message) {
3419
+ return message.info.role === "assistant" && message.parts.some((part) => {
3420
+ if (!isRecord(part) || part.type !== "reasoning" || !isRecord(part.metadata))
3421
+ return false;
3422
+ const anthropic = part.metadata.anthropic;
3423
+ return isRecord(anthropic) && typeof anthropic.signature === "string";
3424
+ });
3425
+ }
3426
+ function readKeepIds(document) {
3427
+ const value = document.structuralSentinelUpgrade;
3428
+ if (value === undefined)
3429
+ return;
3430
+ if (!isRecord(value) || !Array.isArray(value.keep) || value.keep.some((id) => typeof id !== "string" || !id))
3431
+ throw new Error("Invalid structural-sentinel upgrade");
3432
+ return new Set(value.keep);
3433
+ }
3434
+ function prepareStructuralSentinelChoices(args) {
3435
+ const document = readReplayEnvelope(args.db, args.sessionId);
3436
+ if (readKeepIds(document))
3437
+ return document;
3438
+ const prior = !!args.db.prepare(`SELECT 1 WHERE
3439
+ EXISTS (SELECT 1 FROM session_meta WHERE session_id = ? AND trailing_blank_decisions <> '')
3440
+ OR EXISTS (SELECT 1 FROM session_replay_decisions WHERE session_id = ?)
3441
+ OR EXISTS (SELECT 1 FROM tags WHERE session_id = ?)
3442
+ OR EXISTS (SELECT 1 FROM lkg_slots WHERE session_id = ?)`).get(args.sessionId, args.sessionId, args.sessionId, args.sessionId);
3443
+ try {
3444
+ const persisted = updateReplayDocument(args.db, args.sessionId, (current) => {
3445
+ if (readKeepIds(current))
3446
+ return false;
3447
+ current.version = 2;
3448
+ current.structuralSentinelUpgrade = {
3449
+ keep: prior ? args.messages.flatMap((message) => message.info.id && hasSignedReasoning(message) ? [message.info.id] : []) : []
3450
+ };
3451
+ return true;
3452
+ });
3453
+ if (!persisted)
3454
+ throw new Error("Cannot persist structural-sentinel upgrade");
3455
+ } catch (error) {
3456
+ sessionLog2(args.sessionId, `structural-sentinel upgrade deferred: ${String(error)}`);
3457
+ return document;
3458
+ }
3459
+ return readReplayEnvelope(args.db, args.sessionId);
3460
+ }
3461
+ function projectStructuralSentinels(args) {
3462
+ const structuralMessages = args.messages.filter((message) => message.parts.some(isStructuralNoiseSentinel));
3463
+ if (structuralMessages.length === 0)
3464
+ return 0;
3465
+ const document = args.deferUpgrade ? readReplayEnvelope(args.db, args.sessionId) : prepareStructuralSentinelChoices(args);
3466
+ const keepIds = args.deferUpgrade ? undefined : readKeepIds(document);
3467
+ let omittedIds = readOmissions(document.structuralSentinelOmissions);
3468
+ const candidates = structuralMessages.filter((message) => typeof message.info.id === "string" && message.info.id !== "" && hasSignedReasoning(message));
3469
+ const selected = keepIds && args.rebuilding ? candidates.filter((message) => keepIds.has(message.info.id ?? "") && !omittedIds.has(message.info.id ?? "")) : [];
3470
+ if (selected.length) {
3471
+ if (!updateReplayDocument(args.db, args.sessionId, (document) => {
3472
+ const ids = readOmissions(document.structuralSentinelOmissions);
3473
+ for (const message of selected) {
3474
+ ids.add(message.info.id);
3475
+ }
3476
+ document.version = 2;
3477
+ document.structuralSentinelOmissions = [...ids];
3478
+ return true;
3479
+ }))
3480
+ throw new Error("Cannot persist structural-sentinel omissions");
3481
+ omittedIds = readOmissions(readReplayEnvelope(args.db, args.sessionId).structuralSentinelOmissions);
3482
+ }
3483
+ let removed = 0;
3484
+ for (const message of candidates) {
3485
+ if (!omittedIds.has(message.info.id ?? "") && (!keepIds || keepIds.has(message.info.id ?? "")))
3486
+ continue;
3487
+ const parts = message.parts.filter((part) => !isStructuralNoiseSentinel(part));
3488
+ removed += message.parts.length - parts.length;
3489
+ message.parts = parts;
3490
+ }
3491
+ return removed;
3492
+ }
3493
+
3363
3494
  // src/features/magic-context/storage-host-instruction-retention.ts
3364
3495
  var NAMESPACE3 = "hostInstructionRetention";
3365
3496
  var enabled = true;
@@ -4644,38 +4775,6 @@ ${typeof state?.output === "string" ? state.output : JSON.stringify(state?.outpu
4644
4775
  text: typeof part.text === "string" ? part.text : typeof part.thinking === "string" ? part.thinking : undefined
4645
4776
  };
4646
4777
  }
4647
- // src/hooks/magic-context/strip-structural-noise.ts
4648
- var STRUCTURAL_PART_TYPES = new Set(["meta", "step-start", "step-finish", "reasoning"]);
4649
- function isStructuralNoisePart(part) {
4650
- if (!isRecord(part) || typeof part.type !== "string") {
4651
- return false;
4652
- }
4653
- if (!STRUCTURAL_PART_TYPES.has(part.type)) {
4654
- return false;
4655
- }
4656
- if (part.type === "reasoning" && typeof part.text === "string" && part.text !== "[cleared]") {
4657
- return false;
4658
- }
4659
- return true;
4660
- }
4661
- function stripStructuralNoise(messages) {
4662
- let strippedParts = 0;
4663
- for (const message of messages) {
4664
- if (!Array.isArray(message.parts)) {
4665
- continue;
4666
- }
4667
- for (let i = 0;i < message.parts.length; i++) {
4668
- const part = message.parts[i];
4669
- if (isSentinel(part))
4670
- continue;
4671
- if (!isStructuralNoisePart(part))
4672
- continue;
4673
- message.parts[i] = makeSentinel(part);
4674
- strippedParts++;
4675
- }
4676
- }
4677
- return strippedParts;
4678
- }
4679
4778
  // src/hooks/magic-context/foreign-text-parts.ts
4680
4779
  function hasStringId(part) {
4681
4780
  return part !== null && typeof part === "object" && typeof part.id === "string";
@@ -6166,6 +6265,9 @@ async function runPostTransformPhase2(args) {
6166
6265
  }
6167
6266
  };
6168
6267
  const trailingBlankSourceDecisions = args.trailingBlankSourceDecisions ?? snapshotTrailingBlankSourceDecisions(args.messages);
6268
+ let structuralSentinelUpgradeFailed = args.structuralSentinelUpgradeFailed ?? false;
6269
+ if (!structuralSentinelUpgradeFailed && args.opencode1 && !compactionOff && modelAcceptsEmptyContent(args.resolvedProviderID))
6270
+ structuralSentinelUpgradeFailed = prepareStructuralSentinelChoices(args).structuralSentinelUpgrade === undefined;
6169
6271
  if (!modelAcceptsEmptyContent(args.resolvedProviderID) && !compactionOff)
6170
6272
  captureInlineThinkingRepairs(args.messages, args.messageTagNumbers, args.sessionMeta?.clearedReasoningThroughTag ?? 0);
6171
6273
  const servedShapeRepair = prepareServedShapeRepair(args.db, args.sessionId, args.messages, args.readLastServedMessages, compactionOff ? undefined : postprocessReplaySnapshot(args.db, args.sessionId));
@@ -6284,6 +6386,8 @@ async function runPostTransformPhase2(args) {
6284
6386
  const servedBeforeFirstRender = firstRenderBust ? args.readLastServedMessages?.() : null;
6285
6387
  let foldExecutedThisPass = false;
6286
6388
  let foldBustsServedPrefixThisPass = false;
6389
+ let foldChangesHeadThisPass = false;
6390
+ let recoveryExternalFoldCause = null;
6287
6391
  let publishedM1RefreshedThisPass = false;
6288
6392
  let prefixPreflightFailed = false;
6289
6393
  const softRefreshOpportunity = !freezeM0M1 && (args.schedulerDecision === "execute" || deferredMaterialize || servedShapeRepair.needsRebuild);
@@ -6362,9 +6466,16 @@ async function runPostTransformPhase2(args) {
6362
6466
  prefixPreflightFailed = foldResult.materializationContentionRetryExhausted === true;
6363
6467
  foldExecutedThisPass = foldExecutesThisPass(foldDueDecision.value || softRefreshOpportunity, foldResult.m0RematerializedThisPass);
6364
6468
  foldBustsServedPrefixThisPass = foldExecutedThisPass && (committedFoldBustsServedPrefix ?? true);
6469
+ foldChangesHeadThisPass = foldExecutedThisPass && committedFoldChangesHead === true;
6365
6470
  publishedM1RefreshedThisPass = !foldResult.materializationContentionRetryExhausted && previousM1 !== args.sessionMeta.cachedM1Bytes?.toString("utf8");
6366
6471
  m0RematerializedThisPass = foldResult.m0RematerializedThisPass;
6367
6472
  m0MaterializeReason = foldResult.decision.reason;
6473
+ if (!prefixPreflightFailed && foldExecutedThisPass) {
6474
+ const decision = foldResult.decision;
6475
+ if (decision.reason === "system_hash" && decision.systemHashPrev && decision.systemHashPrev !== "0" || decision.reason === "model_change" && decision.m0ModelKeyPrev || decision.reason === "tool_definitions") {
6476
+ recoveryExternalFoldCause = decision.reason;
6477
+ }
6478
+ }
6368
6479
  if (foldResult.m0RematerializedThisPass && convertedToolSkeletons.size > 0) {
6369
6480
  convertedToolSkeletonsDidMutate = renderConvertedToolSkeletons(args.targets, convertedToolSkeletons);
6370
6481
  sessionLog2(args.sessionId, `HARD fold converted ${convertedToolSkeletons.size} legacy dropped-tool skeleton(s) to real-or-absent`);
@@ -6467,8 +6578,14 @@ async function runPostTransformPhase2(args) {
6467
6578
  newTargets = args.targets;
6468
6579
  }
6469
6580
  }
6581
+ const recoveryHasHistoryHead = m0M1EnabledForFold || (args.pendingCompartmentInjection?.compartmentCount ?? 0) > 0;
6582
+ const recoveryHeadChangedThisPass = !prefixPreflightFailed && (foldChangesHeadThisPass || !firstRenderBust && publishedM1RefreshedThisPass || !m0M1EnabledForFold && legacyPublishedHeadChanged(args));
6583
+ const recoveryHeadlessRebuild = !recoveryHasHistoryHead && (args.schedulerDecision === "execute" || isExplicitFlush || forceMaterialization || emergencyDropEligible);
6584
+ const recoveredShapeRewriteProof = recoveryHeadChangedThisPass ? "head_bytes" : recoveryExternalFoldCause ?? (recoveryHeadlessRebuild ? "headless_rebuild" : null);
6585
+ const canNormalizeRecoveredShape = isCacheBustingPass && !activeThinkingPrefixHold && recoveredShapeRewriteProof !== null;
6586
+ sessionLog2(args.sessionId, `rewrite permission: allowed=${isCacheBustingPass} ${reclaimRideLabel(rideSignals)} served_shape_repair=${servedShapeRepair.needsRebuild} signed_prefix_release=${rewritingSignedPrefix} fold_prefix_loss=${foldBustsServedPrefixThisPass} first_render=${firstRenderBust} idle_expiry=${idleExpiryRebuild} thinking_hold=${activeThinkingPrefixHold} recovery_has_head=${recoveryHasHistoryHead} recovery_head_changed=${recoveryHeadChangedThisPass} recovery_headless_rebuild=${recoveryHeadlessRebuild} proven_external_fold=${recoveryExternalFoldCause ?? "none"} recovered_shape_proof=${recoveredShapeRewriteProof ?? "none"}`);
6470
6587
  let recoveryTailNormalizedThisPass = false;
6471
- if (args.normalizeRecoveryTail && isCacheBustingPass && !activeThinkingPrefixHold) {
6588
+ if (args.normalizeRecoveryTail && canNormalizeRecoveredShape) {
6472
6589
  args.normalizeRecoveryTail();
6473
6590
  recoveryTailNormalizedThisPass = true;
6474
6591
  args.tags = getTagsBySession2(args.db, args.sessionId);
@@ -7586,6 +7703,19 @@ async function runPostTransformPhase2(args) {
7586
7703
  if (reasoningRemovalEnabled)
7587
7704
  removeReasoningParts(args.messages, removedReasoningIds, args.resolvedProviderID);
7588
7705
  }
7706
+ const releaseRecoveryThisPass = canEditWholePrefix;
7707
+ if (releaseRecoveryThisPass)
7708
+ args.releaseRecoveryPrefix?.();
7709
+ sessionLog2(args.sessionId, `recovery projection: case=${canNormalizeRecoveredShape ? recoveredShapeRewriteProof : releaseRecoveryThisPass ? "conversation_only" : "defer"} released=${releaseRecoveryThisPass} normalized=${recoveryTailNormalizedThisPass}`);
7710
+ if (canUseEmptySentinels && args.opencode1) {
7711
+ projectStructuralSentinels({
7712
+ db: args.db,
7713
+ sessionId: args.sessionId,
7714
+ messages: args.messages,
7715
+ rebuilding: canNormalizeRecoveredShape && bustedThisPass,
7716
+ deferUpgrade: structuralSentinelUpgradeFailed
7717
+ });
7718
+ }
7589
7719
  sessionLog2(args.sessionId, `final representation: clearedParts=${finalRepresentation.clearedParts} mergedReasoningParts=${finalRepresentation.mergedReasoningParts} removedReasoningParts=${removedReasoningParts} settledDroppedReasoning=${settledDroppedReasoning}`);
7590
7720
  logTransformTiming(args.sessionId, "finalizeMessageRepresentation", tFinalRepresentation, `clearedParts=${finalRepresentation.clearedParts} mergedReasoningParts=${finalRepresentation.mergedReasoningParts}`);
7591
7721
  const tTailBaseline = performance.now();
@@ -7723,4 +7853,4 @@ function checkM0MutationDriftAndSignal2(args) {
7723
7853
  return false;
7724
7854
  }
7725
7855
 
7726
- export { makeToolCompositeKey, createTagger, cavemanWordRulesForLanguage, searchMessageHistoryOffThread, findSessionId, findLastUserMessageId, clearAutoSearchForSession, setCtxReduceRegisteredGlobally, resolveCtxReduceAvailabilityFromMessages, resolveCtxReduceAvailability, primeCtxReduceSpawnPermission, ctxReduceSpawnPermissionReadNeeded, spawnAgentFromMessages, spawnAgentFromOpenCodeDb, todowritePermissionDenied, cachedToolPermissionDenied, clearToolPermissionDenied, resolveTodowriteAvailabilityFromMessages, resolveTodowriteAvailability, diagnosticStateChanged, clearDiagnosticLogState, canConsumeDeferredOnThisPass, hasReclaimRide, reclaimRidePermitted, reclaimRideLabel, pendingDropEligibilityKey, createPendingDropEligibilityCache, readExecuteReclaimState, writeExecuteReclaimState, maintainExecuteFloorMark, captureOpencodeReasoningBudgetStatus, reasoningBudgetStatusLine, ENGINE_RECONNECTING_USER_MESSAGE, ENGINE_BUSY_USER_MESSAGE, SIGNED_THINKING_RESET_FENCE_FAILED, contextRefusalError, protectedToolRefusal, outgoingContextRefusal, signedTurnContextRefusal, EmergencyFailClosedError, latestAssistantTurnStart, latestAssistantTurnMessages, hasActiveAnthropicThinkingTurn, replayCavemanCompression, DegradedPassRefusalError, degradedPassError, renderDroppedText, applyFlushedStatuses, prewarmTagOwners, waitForTagOwners, stripStructuralNoise, collectForeignTextParts, isLegacyForeignTextTag, withTransformTimingSummary, logTransformTiming, hasRecentAssistantCommit, tagMessages, resetDegradedCacheCount2, isSyntheticHeadMessage2, applyTodoSynthesis2, freezeReasoningOnBustingPass2, servesThinkingBlock2, firstServedDivergenceIndex2, rustModeServedKeyAfterPersistedStrips2, replayRustModeBindingMismatchStrips2, RUST_MARKER_LOCK_SKIP_LOG2, applyRustModeDeferredCompactionMarker2, clearRustModeBoundaryRecord2, runRustModePostprocess2, reconcileMarkerRepresentation2, clearPendingCompactionMarkerAfterSuccessfulDrain2, defaultCompactionMarkerStrategy2, abortSessionFailClosed2, evaluateEmergencyFailClosed2, finalizeMessageRepresentation2, runPostTransformPhase2, checkM0MutationDriftAndSignal2 };
7856
+ export { makeToolCompositeKey, createTagger, cavemanWordRulesForLanguage, searchMessageHistoryOffThread, findSessionId, findLastUserMessageId, clearAutoSearchForSession, setCtxReduceRegisteredGlobally, resolveCtxReduceAvailabilityFromMessages, resolveCtxReduceAvailability, primeCtxReduceSpawnPermission, ctxReduceSpawnPermissionReadNeeded, spawnAgentFromMessages, spawnAgentFromOpenCodeDb, todowritePermissionDenied, cachedToolPermissionDenied, clearToolPermissionDenied, resolveTodowriteAvailabilityFromMessages, resolveTodowriteAvailability, diagnosticStateChanged, clearDiagnosticLogState, canConsumeDeferredOnThisPass, hasReclaimRide, reclaimRidePermitted, reclaimRideLabel, pendingDropEligibilityKey, createPendingDropEligibilityCache, readExecuteReclaimState, writeExecuteReclaimState, maintainExecuteFloorMark, captureOpencodeReasoningBudgetStatus, reasoningBudgetStatusLine, ENGINE_RECONNECTING_USER_MESSAGE, ENGINE_BUSY_USER_MESSAGE, SIGNED_THINKING_RESET_FENCE_FAILED, contextRefusalError, protectedToolRefusal, outgoingContextRefusal, signedTurnContextRefusal, EmergencyFailClosedError, latestAssistantTurnStart, latestAssistantTurnMessages, hasActiveAnthropicThinkingTurn, replayCavemanCompression, DegradedPassRefusalError, degradedPassError, isStructuralNoiseSentinel, stripStructuralNoise, prepareStructuralSentinelChoices, renderDroppedText, applyFlushedStatuses, prewarmTagOwners, waitForTagOwners, collectForeignTextParts, isLegacyForeignTextTag, withTransformTimingSummary, logTransformTiming, hasRecentAssistantCommit, tagMessages, resetDegradedCacheCount2, isSyntheticHeadMessage2, applyTodoSynthesis2, freezeReasoningOnBustingPass2, servesThinkingBlock2, firstServedDivergenceIndex2, rustModeServedKeyAfterPersistedStrips2, replayRustModeBindingMismatchStrips2, RUST_MARKER_LOCK_SKIP_LOG2, applyRustModeDeferredCompactionMarker2, clearRustModeBoundaryRecord2, runRustModePostprocess2, reconcileMarkerRepresentation2, clearPendingCompactionMarkerAfterSuccessfulDrain2, defaultCompactionMarkerStrategy2, abortSessionFailClosed2, evaluateEmergencyFailClosed2, finalizeMessageRepresentation2, runPostTransformPhase2, checkM0MutationDriftAndSignal2 };
@@ -13,7 +13,7 @@ import {
13
13
  } from "./index-gzy5w8ya.js";
14
14
  import {
15
15
  runSessionWarmupWorker
16
- } from "./index-qncw9hey.js";
16
+ } from "./index-r2epb000.js";
17
17
  import {
18
18
  scheduleAfterBootQuiet
19
19
  } from "./index-txs8tce6.js";
@@ -28,7 +28,7 @@ import {
28
28
  clearIndexedMessages,
29
29
  indexSingleMessage,
30
30
  indexMessagesAfterOrdinal
31
- } from "./index-pq0dpwrc.js";
31
+ } from "./index-2rs7912w.js";
32
32
 
33
33
  // src/features/magic-context/message-index-async.ts
34
34
  var indexCancellations = new Map;