@cortexkit/opencode-magic-context 0.49.34 → 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 (312) hide show
  1. package/README.md +1 -1
  2. package/dist/auto-search-worker.js +163 -155
  3. package/dist/chunk-embedding-write-worker.js +70 -66
  4. package/dist/{compaction-marker-candidates-31h86ph0.js → compaction-marker-candidates-5p1qkve9.js} +5 -2
  5. package/dist/compaction-marker-candidates-worker.js +24 -23
  6. package/dist/{compartment-chunk-embedding-5q5gj67r.js → compartment-chunk-embedding-ypktm0tk.js} +10 -8
  7. package/dist/{conflict-warning-hook-xgskea1v.js → conflict-warning-hook-b75jn458.js} +11 -9
  8. package/dist/{context-p3xrarzt.js → context-969z683s.js} +1839 -746
  9. package/dist/{derive-budgets-pqybnx09.js → derive-budgets-htj16n4x.js} +3 -2
  10. package/dist/embedding-backfill-rma0v2ct.js +28 -0
  11. package/dist/embedding-worker-process.js +2 -1
  12. package/dist/embedding-worker.js +6 -5
  13. package/dist/expand-attachments-h33jbgyz.js +21 -0
  14. package/dist/features/magic-context/auto-search-diagnostics.d.ts +21 -0
  15. package/dist/features/magic-context/auto-search-diagnostics.d.ts.map +1 -0
  16. package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -1
  17. package/dist/features/magic-context/compaction-marker.d.ts +5 -3
  18. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  19. package/dist/features/magic-context/compartment-chunk-embedding.d.ts +1 -1
  20. package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
  21. package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/verify-gate.d.ts +2 -0
  23. package/dist/features/magic-context/dreamer/verify-gate.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/verify-state.d.ts +9 -0
  25. package/dist/features/magic-context/dreamer/verify-state.d.ts.map +1 -0
  26. package/dist/features/magic-context/dreamer/verify.d.ts +2 -1
  27. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  28. package/dist/features/magic-context/migration-worker-client.d.ts +3 -0
  29. package/dist/features/magic-context/migration-worker-client.d.ts.map +1 -1
  30. package/dist/features/magic-context/migration-worker.d.ts +15 -0
  31. package/dist/features/magic-context/migration-worker.d.ts.map +1 -1
  32. package/dist/features/magic-context/overflow-detection.d.ts +2 -2
  33. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  34. package/dist/features/magic-context/search-rerank.d.ts.map +1 -1
  35. package/dist/features/magic-context/search.d.ts +4 -0
  36. package/dist/features/magic-context/search.d.ts.map +1 -1
  37. package/dist/features/magic-context/storage-meta-persisted.d.ts +1 -0
  38. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  39. package/dist/features/magic-context/storage-tags.d.ts +4 -0
  40. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  41. package/dist/features/magic-context/store-generation-rebase-labels.d.ts +6 -0
  42. package/dist/features/magic-context/store-generation-rebase-labels.d.ts.map +1 -0
  43. package/dist/features/magic-context/store-generation-rebase.d.ts.map +1 -1
  44. package/dist/features/magic-context/work-metrics-carry-storage.d.ts +10 -0
  45. package/dist/features/magic-context/work-metrics-carry-storage.d.ts.map +1 -0
  46. package/dist/{history-owner-36wp3mkb.js → history-owner-0z620wgz.js} +3 -2
  47. package/dist/hooks/magic-context/apply-operations.d.ts +20 -3
  48. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/auto-search-observation.d.ts +13 -0
  50. package/dist/hooks/magic-context/auto-search-observation.d.ts.map +1 -0
  51. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  52. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +10 -2
  53. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/compaction-marker-publication.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/compartment-commit-hashes.d.ts +4 -0
  56. package/dist/hooks/magic-context/compartment-commit-hashes.d.ts.map +1 -0
  57. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/compartment-runner-validation.d.ts +1 -0
  59. package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/final-wire-completeness.d.ts +15 -0
  62. package/dist/hooks/magic-context/final-wire-completeness.d.ts.map +1 -0
  63. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/issue-423-fixture.d.ts +1 -1
  65. package/dist/hooks/magic-context/issue-423-fixture.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/issue-424-fixture.d.ts +1 -1
  67. package/dist/hooks/magic-context/issue-424-fixture.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/project-structural-sentinels.d.ts +25 -0
  69. package/dist/hooks/magic-context/project-structural-sentinels.d.ts.map +1 -0
  70. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +8 -1
  71. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +1 -0
  73. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/read-session-chunk.d.ts +11 -0
  75. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/read-session-formatting.d.ts +2 -0
  77. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +2 -0
  79. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  80. package/dist/hooks/magic-context/release-recovery-prefix.d.ts +9 -0
  81. package/dist/hooks/magic-context/release-recovery-prefix.d.ts.map +1 -0
  82. package/dist/hooks/magic-context/strip-structural-noise.d.ts +6 -3
  83. package/dist/hooks/magic-context/strip-structural-noise.d.ts.map +1 -1
  84. package/dist/hooks/magic-context/transform-context-state.d.ts +3 -0
  85. package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +3 -0
  87. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  89. package/dist/{index-cpjk5jd2.js → index-1d042x6w.js} +16 -14
  90. package/dist/{index-2743x98y.js → index-21fgrfrf.js} +35 -142
  91. package/dist/index-2amn2s73.js +123 -0
  92. package/dist/{index-c7phnbvk.js → index-2p37txes.js} +1 -1
  93. package/dist/index-2qbtqg1w.js +529 -0
  94. package/dist/{index-9gpw8hrm.js → index-2rs7912w.js} +4 -4
  95. package/dist/{index-m1x9ghk5.js → index-4ks89h5a.js} +37 -7
  96. package/dist/{index-b88dwwrh.js → index-4xyjr62e.js} +1 -1
  97. package/dist/index-4y35msh5.js +531 -0
  98. package/dist/index-66a50f3e.js +777 -0
  99. package/dist/index-72czy45z.js +4557 -0
  100. package/dist/index-7v05d9b7.js +58 -0
  101. package/dist/{index-qgh1qwjj.js → index-850vthn3.js} +9 -3
  102. package/dist/{index-np3rgfw4.js → index-8jjjmhab.js} +15 -4
  103. package/dist/index-96ztjvkn.js +204 -0
  104. package/dist/{index-fm36bjv4.js → index-9fgmkfaf.js} +22 -277
  105. package/dist/{index-atekmqef.js → index-9tdvbdv1.js} +508 -5547
  106. package/dist/{index-xrnsygfq.js → index-9wnbnx8f.js} +1 -1
  107. package/dist/{index-waktfbjy.js → index-ae1ar4v1.js} +4 -4
  108. package/dist/{index-v15ne3a3.js → index-b1ydbp95.js} +2 -2
  109. package/dist/{index-nxrsns5x.js → index-c5dzns43.js} +75 -75
  110. package/dist/{index-v7287tzq.js → index-dcjkw41m.js} +19 -8
  111. package/dist/{index-hbx7m8he.js → index-dfdg2cgg.js} +338 -86
  112. package/dist/{index-spwjbkc7.js → index-dnqqqc5f.js} +1 -1
  113. package/dist/{index-04z754rd.js → index-dz48h1wx.js} +33 -5
  114. package/dist/{index-rrv26qjz.js → index-fw42ms3m.js} +1 -1
  115. package/dist/{index-t5pck3ss.js → index-fxbk7gk3.js} +1 -1
  116. package/dist/{index-wfybj1dw.js → index-g4t7850m.js} +2 -2
  117. package/dist/{index-97spytxq.js → index-gnmhbyyc.js} +583 -474
  118. package/dist/{index-4pnsgvfk.js → index-hacf2tyx.js} +1 -1
  119. package/dist/index-j105mf16.js +270 -0
  120. package/dist/{index-gkee6p4g.js → index-jggt5gf2.js} +3 -3
  121. package/dist/{index-s1n8dd2n.js → index-jkanybgq.js} +2 -2
  122. package/dist/{index-h7tgn49j.js → index-jrfre9ah.js} +5 -222
  123. package/dist/{index-kfyb3k6n.js → index-jz5bk7xd.js} +2 -2
  124. package/dist/{index-7kkphb6c.js → index-nj360hcs.js} +4 -4
  125. package/dist/{index-07vskjn8.js → index-pp8vdn01.js} +15 -13
  126. package/dist/index-prw8apnc.js +194 -0
  127. package/dist/{index-rverk2vz.js → index-r2epb000.js} +34 -4
  128. package/dist/{index-7g9dr8gy.js → index-tn9drm1a.js} +125 -143
  129. package/dist/{index-kq5w68dp.js → index-txs8tce6.js} +1 -1
  130. package/dist/{index-rfxzazzy.js → index-ty4vhe4n.js} +5 -5
  131. package/dist/{index-y1qwzvxn.js → index-vd2ywmfe.js} +2 -2
  132. package/dist/{index-0677w9sd.js → index-wcwhhtdh.js} +58 -23
  133. package/dist/index-wh9fxds5.js +265 -0
  134. package/dist/{index-51rdvtkz.js → index-xd2p95m7.js} +3 -3
  135. package/dist/{index-as2amvn3.js → index-xnm0wq1r.js} +6 -531
  136. package/dist/{index-ftr84kkv.js → index-ys7j6679.js} +7 -5
  137. package/dist/index-z4p0ry94.js +222 -0
  138. package/dist/index-z9zygwse.js +89 -0
  139. package/dist/index.js +86 -74
  140. package/dist/{logger-94kew5wm.js → logger-qwnbcfj9.js} +2 -1
  141. package/dist/{message-fts-rowid-map-va36knh4.js → message-fts-rowid-map-t6qsyg9s.js} +7 -5
  142. package/dist/{message-index-bounded-qh91fdr3.js → message-index-bounded-wfk6aqxk.js} +15 -13
  143. package/dist/{message-time-backfill-4qva0b4f.js → message-time-backfill-39bm498k.js} +3 -2
  144. package/dist/migration-worker.js +55 -48
  145. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  146. package/dist/{project-embedding-registry-6yex0r9f.js → project-embedding-registry-3yyegjma.js} +16 -13
  147. package/dist/raw-ordinal-warmup-worker.js +114 -113
  148. package/dist/{read-session-chunk-kaghtr75.js → read-session-chunk-26yrrhyz.js} +18 -12
  149. package/dist/{read-session-raw-b2sd67v4.js → read-session-raw-j7c9w57v.js} +5 -3
  150. package/dist/recomp-orchestrator-wk509qkp.js +69 -0
  151. package/dist/render-h1qarr8a.js +44 -0
  152. package/dist/{safe-notification-target-mkr9yzvr.js → safe-notification-target-wztd7bgk.js} +3 -2
  153. package/dist/search-5h9fydyq.js +54 -0
  154. package/dist/search-archive-q79hyqxs.js +29 -0
  155. package/dist/{send-session-notification-vz86nt79.js → send-session-notification-14p3yje4.js} +9 -7
  156. package/dist/shared/model-suggestion-retry.d.ts +7 -0
  157. package/dist/shared/model-suggestion-retry.d.ts.map +1 -1
  158. package/dist/shared/prompt-async-transport.d.ts.map +1 -1
  159. package/dist/shared/reusable-worker-entry.d.ts +4 -0
  160. package/dist/shared/reusable-worker-entry.d.ts.map +1 -0
  161. package/dist/shared/reusable-worker.d.ts +6 -0
  162. package/dist/shared/reusable-worker.d.ts.map +1 -0
  163. package/dist/shared/reusable-worker.fixture.d.ts +2 -0
  164. package/dist/shared/reusable-worker.fixture.d.ts.map +1 -0
  165. package/dist/shared/worker-shutdown.d.ts +1 -1
  166. package/dist/shared/worker-shutdown.d.ts.map +1 -1
  167. package/dist/{storage-tags-6hvkk01c.js → storage-tags-vj0yj7ed.js} +5 -4
  168. package/dist/store-reader-yh19h38c.js +14 -0
  169. package/dist/store-s3eykdjt.js +21 -0
  170. package/dist/tools/ctx-expand/render.d.ts +5 -3
  171. package/dist/tools/ctx-expand/render.d.ts.map +1 -1
  172. package/dist/tools/ctx-expand/search-archive.d.ts.map +1 -1
  173. package/dist/tools/ctx-expand/tools.d.ts +2 -0
  174. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  175. package/dist/tools/ctx-expand/v2-archive-reader.d.ts +33 -0
  176. package/dist/tools/ctx-expand/v2-archive-reader.d.ts.map +1 -0
  177. package/dist/{transform-postprocess-phase-ph38mhrs.js → transform-postprocess-phase-4gj0mtcg.js} +39 -32
  178. package/dist/v2/auto-search-worker.js +163 -155
  179. package/dist/v2/chunk-embedding-write-worker.js +71 -67
  180. package/dist/v2/compaction-marker-candidates-worker.js +24 -23
  181. package/dist/v2/{compaction-marker-candidates-m4vmye3w.js → compaction-marker-candidates-yeb2ky46.js} +6 -3
  182. package/dist/v2/{compartment-chunk-embedding-rc31e6md.js → compartment-chunk-embedding-qfk791bd.js} +11 -9
  183. package/dist/v2/{context-s60hcatx.js → context-bxr039be.js} +2678 -1246
  184. package/dist/v2/{derive-budgets-knf763tt.js → derive-budgets-sa0v7bz0.js} +4 -3
  185. package/dist/v2/embedding-backfill-00tw59rx.js +27 -0
  186. package/dist/v2/embedding-worker-process.js +2 -1
  187. package/dist/v2/embedding-worker.js +6 -5
  188. package/dist/v2/expand-attachments-h33jbgyz.js +21 -0
  189. package/dist/v2/fold/code-mode-catalog.d.ts +3 -0
  190. package/dist/v2/fold/code-mode-catalog.d.ts.map +1 -0
  191. package/dist/v2/fold/idle.d.ts +16 -0
  192. package/dist/v2/fold/idle.d.ts.map +1 -0
  193. package/dist/v2/fold/manual-baseline.d.ts +8 -0
  194. package/dist/v2/fold/manual-baseline.d.ts.map +1 -0
  195. package/dist/v2/fold/native-replay-v3.d.ts +75 -0
  196. package/dist/v2/fold/native-replay-v3.d.ts.map +1 -0
  197. package/dist/v2/fold/native-replay.d.ts +81 -8
  198. package/dist/v2/fold/native-replay.d.ts.map +1 -1
  199. package/dist/v2/fold/policy.d.ts +2 -1
  200. package/dist/v2/fold/policy.d.ts.map +1 -1
  201. package/dist/v2/fold/restore.d.ts.map +1 -1
  202. package/dist/v2/fold/summary.d.ts +4 -0
  203. package/dist/v2/fold/summary.d.ts.map +1 -0
  204. package/dist/v2/hidden-completion.d.ts.map +1 -1
  205. package/dist/v2/{history-owner-ad0crnrn.js → history-owner-fpka43cn.js} +3 -2
  206. package/dist/v2/hooks/channel2.d.ts +6 -0
  207. package/dist/v2/hooks/channel2.d.ts.map +1 -1
  208. package/dist/v2/hooks/context.d.ts.map +1 -1
  209. package/dist/v2/hooks/expand-attachments.d.ts +8 -0
  210. package/dist/v2/hooks/expand-attachments.d.ts.map +1 -0
  211. package/dist/v2/hooks/overflow-recovery.d.ts +45 -0
  212. package/dist/v2/hooks/overflow-recovery.d.ts.map +1 -0
  213. package/dist/v2/hooks/restore-rows.d.ts +12 -2
  214. package/dist/v2/hooks/restore-rows.d.ts.map +1 -1
  215. package/dist/v2/hooks/store.d.ts +7 -2
  216. package/dist/v2/hooks/store.d.ts.map +1 -1
  217. package/dist/v2/hooks/synthetic-admission.d.ts +7 -0
  218. package/dist/v2/hooks/synthetic-admission.d.ts.map +1 -0
  219. package/dist/v2/hooks/usage-persist.d.ts.map +1 -1
  220. package/dist/v2/{logger-p34mjtja.js → logger-4cj6d03m.js} +2 -1
  221. package/dist/v2/{message-fts-rowid-map-78awh03v.js → message-fts-rowid-map-z86avy0n.js} +8 -6
  222. package/dist/v2/{message-index-bounded-4htdr1j6.js → message-index-bounded-w14496s9.js} +16 -14
  223. package/dist/v2/{message-time-backfill-zvthw6xb.js → message-time-backfill-0c4h7sg6.js} +3 -2
  224. package/dist/v2/migration-worker.js +56 -49
  225. package/dist/v2/ordinal-range.fixture.d.ts +7 -0
  226. package/dist/v2/ordinal-range.fixture.d.ts.map +1 -0
  227. package/dist/v2/{project-embedding-registry-1x5qe2fy.js → project-embedding-registry-jqq2qeqb.js} +17 -14
  228. package/dist/v2/raw-ordinal-warmup-worker.js +114 -113
  229. package/dist/v2/{read-session-chunk-1fa9qzwb.js → read-session-chunk-tqnh1ret.js} +18 -12
  230. package/dist/v2/{read-session-raw-5x088amc.js → read-session-raw-qpp6x9kg.js} +6 -4
  231. package/dist/v2/recomp-orchestrator-9cjk6aej.js +68 -0
  232. package/dist/v2/render-5dz1knf2.js +43 -0
  233. package/dist/v2/{safe-notification-target-khnzg57c.js → safe-notification-target-gphhast7.js} +3 -2
  234. package/dist/v2/search-8yfet25y.js +52 -0
  235. package/dist/v2/search-archive-z6z9jqwf.js +28 -0
  236. package/dist/v2/{send-session-notification-x5nzy34v.js → send-session-notification-kxp47tsw.js} +9 -7
  237. package/dist/v2/{server-cpjk5jd2.js → server-1d042x6w.js} +16 -14
  238. package/dist/v2/server-2amn2s73.js +123 -0
  239. package/dist/v2/{server-6g98c227.js → server-3schkz95.js} +4 -4
  240. package/dist/v2/server-468mya5v.js +209 -0
  241. package/dist/v2/{server-z2wft9zv.js → server-5by3vdzs.js} +562 -5560
  242. package/dist/v2/{server-qjvk4a9t.js → server-69m30b21.js} +1 -1
  243. package/dist/v2/server-6emy0v9a.js +531 -0
  244. package/dist/v2/{server-vr4szghm.js → server-6vzh6wej.js} +3 -3
  245. package/dist/v2/{server-ajxhrgjv.js → server-7094pk3w.js} +80 -19
  246. package/dist/v2/{server-ab8017gw.js → server-7acq7815.js} +34 -141
  247. package/dist/v2/server-7v05d9b7.js +58 -0
  248. package/dist/v2/{server-24g8r2d0.js → server-7zacmty5.js} +75 -75
  249. package/dist/v2/{server-3mz2qh5a.js → server-969cdpmg.js} +1 -1
  250. package/dist/v2/server-96ztjvkn.js +204 -0
  251. package/dist/v2/{server-grakwy1v.js → server-a9w5f0yw.js} +37 -7
  252. package/dist/v2/{server-835q39kd.js → server-avdveykk.js} +3 -3
  253. package/dist/v2/{server-qc915kw2.js → server-bez34e60.js} +4 -4
  254. package/dist/v2/{server-h1byrhwx.js → server-cp1a03vc.js} +19 -8
  255. package/dist/v2/{server-bsgd4dk1.js → server-dcws5831.js} +2 -2
  256. package/dist/v2/{server-m1pfg2d4.js → server-dfq5vb8j.js} +4 -4
  257. package/dist/v2/server-e51xmr4d.js +194 -0
  258. package/dist/v2/server-ef1mskas.js +777 -0
  259. package/dist/v2/{server-1bw1wcbp.js → server-f0j864ma.js} +1 -1
  260. package/dist/v2/{server-jw5qe9y8.js → server-g3gqq4ac.js} +18 -217
  261. package/dist/v2/{server-2aasmpsp.js → server-gkse1wyz.js} +5 -5
  262. package/dist/v2/{server-6495nmn9.js → server-jb6tjyeb.js} +5 -222
  263. package/dist/v2/{server-qvy4qavp.js → server-jd7vzwn4.js} +125 -143
  264. package/dist/v2/{server-a7x00tw8.js → server-mfn1yf9d.js} +1 -1
  265. package/dist/v2/{server-awr8qa4c.js → server-nmyganc8.js} +2 -2
  266. package/dist/v2/{server-tkdabx8q.js → server-nq3cb7be.js} +5 -530
  267. package/dist/v2/server-qjyp27vf.js +270 -0
  268. package/dist/v2/{server-gyy4k6mf.js → server-qmmkhz2z.js} +1 -1
  269. package/dist/v2/{server-29qp8nz4.js → server-qxzbmtqt.js} +1 -1
  270. package/dist/v2/{server-806rzhs6.js → server-r4430x9m.js} +10 -4
  271. package/dist/v2/{server-53eh1r8r.js → server-sd8hvzte.js} +2 -2
  272. package/dist/v2/{server-k3t06fxr.js → server-sefxj8k1.js} +1 -1
  273. package/dist/v2/server-t8y64xj7.js +4513 -0
  274. package/dist/v2/{server-6vd2n183.js → server-tnzbk64q.js} +35 -5
  275. package/dist/v2/{server-v77xa5wj.js → server-tpt7bwq8.js} +1 -1
  276. package/dist/v2/{server-51779zs2.js → server-v0p37hm2.js} +4 -1
  277. package/dist/v2/{server-nxas8v1d.js → server-xfjjbrkt.js} +15 -4
  278. package/dist/v2/{server-cqjvxyrp.js → server-xy7w7hrd.js} +2 -2
  279. package/dist/v2/server-ypf1ap0v.js +529 -0
  280. package/dist/v2/server-z4p0ry94.js +222 -0
  281. package/dist/v2/server-z9zygwse.js +89 -0
  282. package/dist/v2/{server-ab1g0wn9.js → server-zzgtgqmd.js} +2 -2
  283. package/dist/v2/server.js +7 -6
  284. package/dist/v2/{storage-tags-18nbaanf.js → storage-tags-cw07ky67.js} +5 -4
  285. package/dist/v2/store-reader-cgx47zkp.js +14 -0
  286. package/dist/v2/store-reader.d.ts +9 -2
  287. package/dist/v2/store-reader.d.ts.map +1 -1
  288. package/dist/v2/store-z3qe67cg.js +21 -0
  289. package/dist/v2/v2-archive-reader-z7wr42ry.js +11 -0
  290. package/dist/v2/{wrapup-orchestrator-wxf7n5k6.js → wrapup-orchestrator-j1v62bkj.js} +50 -42
  291. package/dist/v2-archive-reader-028z6kck.js +11 -0
  292. package/dist/wrapup-orchestrator-xg9avt2p.js +56 -0
  293. package/package.json +1 -1
  294. package/src/shared/model-suggestion-retry.ts +1 -1
  295. package/src/shared/prompt-async-transport.test.ts +64 -3
  296. package/src/shared/prompt-async-transport.ts +61 -16
  297. package/src/shared/reusable-worker-entry.ts +58 -0
  298. package/src/shared/reusable-worker-reset.test.ts +108 -0
  299. package/src/shared/reusable-worker.fixture.ts +35 -0
  300. package/src/shared/reusable-worker.test.ts +253 -0
  301. package/src/shared/reusable-worker.ts +240 -0
  302. package/src/shared/sqlite-transaction-mode-guard.test.ts +2 -0
  303. package/src/shared/worker-shutdown.ts +21 -17
  304. package/dist/embedding-backfill-0jgtqxen.js +0 -25
  305. package/dist/recomp-orchestrator-0y983w7h.js +0 -62
  306. package/dist/search-archive-1kw2rp19.js +0 -26
  307. package/dist/search-p684j8ww.js +0 -50
  308. package/dist/v2/embedding-backfill-f43hd8y6.js +0 -24
  309. package/dist/v2/recomp-orchestrator-7q9nvxte.js +0 -61
  310. package/dist/v2/search-archive-xfp51s0g.js +0 -25
  311. package/dist/v2/search-wf8rqxhm.js +0 -48
  312. package/dist/wrapup-orchestrator-ys2nrkkb.js +0 -49
@@ -0,0 +1,68 @@
1
+ import {
2
+ isRecompFailure2,
3
+ isRecompSkip2,
4
+ extractRecompReason2,
5
+ setRecompStarting2,
6
+ setRecompNote2,
7
+ setRecompTerminal2,
8
+ buildRecompDeps2,
9
+ runManagedRecomp2
10
+ } from "./server-5by3vdzs.js";
11
+ import"./server-r4430x9m.js";
12
+ import"./server-nq3cb7be.js";
13
+ import"./server-gkse1wyz.js";
14
+ import"./server-jjvbk92s.js";
15
+ import"./server-7acq7815.js";
16
+ import"./server-4dhv7mqz.js";
17
+ import"./server-t8y64xj7.js";
18
+ import"./server-ypf1ap0v.js";
19
+ import"./server-dfq5vb8j.js";
20
+ import"./server-2amn2s73.js";
21
+ import"./server-ef1mskas.js";
22
+ import"./server-sd8hvzte.js";
23
+ import"./server-bez34e60.js";
24
+ import"./server-qt1qqasc.js";
25
+ import"./server-jd7vzwn4.js";
26
+ import"./server-xfjjbrkt.js";
27
+ import"./server-1zx87sdm.js";
28
+ import"./server-mfn1yf9d.js";
29
+ import"./server-f0j864ma.js";
30
+ import"./server-avdveykk.js";
31
+ import"./server-qxzbmtqt.js";
32
+ import"./server-x8a7jmkh.js";
33
+ import"./server-6vzh6wej.js";
34
+ import"./server-7zacmty5.js";
35
+ import"./server-dcws5831.js";
36
+ import"./server-cp1a03vc.js";
37
+ import"./server-zzgtgqmd.js";
38
+ import"./server-g3gqq4ac.js";
39
+ import"./server-fb3zxn06.js";
40
+ import"./server-3schkz95.js";
41
+ import"./server-fr0wbhdn.js";
42
+ import"./server-69m30b21.js";
43
+ import"./server-nmyganc8.js";
44
+ import"./server-468mya5v.js";
45
+ import"./server-sefxj8k1.js";
46
+ import"./server-xy7w7hrd.js";
47
+ import"./server-tpt7bwq8.js";
48
+ import"./server-tnzbk64q.js";
49
+ import"./server-96ztjvkn.js";
50
+ import"./server-v0p37hm2.js";
51
+ import"./server-2ra6pwf3.js";
52
+ import"./server-qmmkhz2z.js";
53
+ import"./server-969cdpmg.js";
54
+ import"./server-gzy5w8ya.js";
55
+ import"./server-jb6tjyeb.js";
56
+ import"./server-pavzsdc6.js";
57
+ import"./server-z4p0ry94.js";
58
+ import"./server-1d042x6w.js";
59
+ export {
60
+ buildRecompDeps2 as buildRecompDeps,
61
+ extractRecompReason2 as extractRecompReason,
62
+ isRecompFailure2 as isRecompFailure,
63
+ isRecompSkip2 as isRecompSkip,
64
+ runManagedRecomp2 as runManagedRecomp,
65
+ setRecompNote2 as setRecompNote,
66
+ setRecompStarting2 as setRecompStarting,
67
+ setRecompTerminal2 as setRecompTerminal
68
+ };
@@ -0,0 +1,43 @@
1
+ import {
2
+ renderMessageByOrdinal2,
3
+ renderVerboseRangeForTool2,
4
+ renderItemByTag2
5
+ } from "./server-qjyp27vf.js";
6
+ import"./server-t8y64xj7.js";
7
+ import"./server-ypf1ap0v.js";
8
+ import"./server-dfq5vb8j.js";
9
+ import"./server-2amn2s73.js";
10
+ import"./server-ef1mskas.js";
11
+ import"./server-jd7vzwn4.js";
12
+ import"./server-xfjjbrkt.js";
13
+ import"./server-1zx87sdm.js";
14
+ import"./server-mfn1yf9d.js";
15
+ import"./server-7zacmty5.js";
16
+ import"./server-cp1a03vc.js";
17
+ import"./server-zzgtgqmd.js";
18
+ import"./server-g3gqq4ac.js";
19
+ import"./server-fb3zxn06.js";
20
+ import"./server-3schkz95.js";
21
+ import"./server-fr0wbhdn.js";
22
+ import"./server-69m30b21.js";
23
+ import"./server-nmyganc8.js";
24
+ import"./server-468mya5v.js";
25
+ import"./server-sefxj8k1.js";
26
+ import"./server-xy7w7hrd.js";
27
+ import"./server-tpt7bwq8.js";
28
+ import"./server-tnzbk64q.js";
29
+ import"./server-96ztjvkn.js";
30
+ import"./server-v0p37hm2.js";
31
+ import"./server-2ra6pwf3.js";
32
+ import"./server-qmmkhz2z.js";
33
+ import"./server-969cdpmg.js";
34
+ import"./server-gzy5w8ya.js";
35
+ import"./server-jb6tjyeb.js";
36
+ import"./server-pavzsdc6.js";
37
+ import"./server-z4p0ry94.js";
38
+ import"./server-1d042x6w.js";
39
+ export {
40
+ renderItemByTag2 as renderItemByTag,
41
+ renderMessageByOrdinal2 as renderMessageByOrdinal,
42
+ renderVerboseRangeForTool2 as renderVerboseRangeForTool
43
+ };
@@ -1,9 +1,10 @@
1
1
  import {
2
2
  isDefaultSessionTitle2,
3
3
  waitForSafeNotificationTarget2
4
- } from "./server-1bw1wcbp.js";
5
- import"./server-6495nmn9.js";
4
+ } from "./server-f0j864ma.js";
5
+ import"./server-jb6tjyeb.js";
6
6
  import"./server-pavzsdc6.js";
7
+ import"./server-z4p0ry94.js";
7
8
  export {
8
9
  isDefaultSessionTitle2 as isDefaultSessionTitle,
9
10
  waitForSafeNotificationTarget2 as waitForSafeNotificationTarget
@@ -0,0 +1,52 @@
1
+ import {
2
+ createUnifiedSearchDiagnostics2,
3
+ searchMessageHistory2,
4
+ parseIdShapedQuery2,
5
+ resolveMemoriesByIdsForSearch2,
6
+ unifiedSearch2,
7
+ formatSearchResults2
8
+ } from "./server-7094pk3w.js";
9
+ import"./server-kaqs6h31.js";
10
+ import"./server-nq3cb7be.js";
11
+ import"./server-gkse1wyz.js";
12
+ import"./server-jjvbk92s.js";
13
+ import"./server-7acq7815.js";
14
+ import"./server-4dhv7mqz.js";
15
+ import"./server-ypf1ap0v.js";
16
+ import"./server-dfq5vb8j.js";
17
+ import"./server-2amn2s73.js";
18
+ import"./server-qt1qqasc.js";
19
+ import"./server-jd7vzwn4.js";
20
+ import"./server-xfjjbrkt.js";
21
+ import"./server-1zx87sdm.js";
22
+ import"./server-mfn1yf9d.js";
23
+ import"./server-6vzh6wej.js";
24
+ import"./server-7zacmty5.js";
25
+ import"./server-dcws5831.js";
26
+ import"./server-cp1a03vc.js";
27
+ import"./server-zzgtgqmd.js";
28
+ import"./server-3schkz95.js";
29
+ import"./server-fr0wbhdn.js";
30
+ import"./server-69m30b21.js";
31
+ import"./server-nmyganc8.js";
32
+ import"./server-xy7w7hrd.js";
33
+ import"./server-tpt7bwq8.js";
34
+ import"./server-tnzbk64q.js";
35
+ import"./server-96ztjvkn.js";
36
+ import"./server-v0p37hm2.js";
37
+ import"./server-2ra6pwf3.js";
38
+ import"./server-qmmkhz2z.js";
39
+ import"./server-969cdpmg.js";
40
+ import"./server-gzy5w8ya.js";
41
+ import"./server-jb6tjyeb.js";
42
+ import"./server-pavzsdc6.js";
43
+ import"./server-z4p0ry94.js";
44
+ import"./server-1d042x6w.js";
45
+ export {
46
+ createUnifiedSearchDiagnostics2 as createUnifiedSearchDiagnostics,
47
+ formatSearchResults2 as formatSearchResults,
48
+ parseIdShapedQuery2 as parseIdShapedQuery,
49
+ resolveMemoriesByIdsForSearch2 as resolveMemoriesByIdsForSearch,
50
+ searchMessageHistory2 as searchMessageHistory,
51
+ unifiedSearch2 as unifiedSearch
52
+ };
@@ -0,0 +1,28 @@
1
+ import {
2
+ renderSearchArchive2,
3
+ renderSearchArchiveOffThread2
4
+ } from "./server-a9w5f0yw.js";
5
+ import"./server-e51xmr4d.js";
6
+ import"./server-kaqs6h31.js";
7
+ import"./server-jd7vzwn4.js";
8
+ import"./server-xfjjbrkt.js";
9
+ import"./server-1zx87sdm.js";
10
+ import"./server-mfn1yf9d.js";
11
+ import"./server-7zacmty5.js";
12
+ import"./server-xy7w7hrd.js";
13
+ import"./server-tpt7bwq8.js";
14
+ import"./server-tnzbk64q.js";
15
+ import"./server-96ztjvkn.js";
16
+ import"./server-v0p37hm2.js";
17
+ import"./server-2ra6pwf3.js";
18
+ import"./server-qmmkhz2z.js";
19
+ import"./server-969cdpmg.js";
20
+ import"./server-gzy5w8ya.js";
21
+ import"./server-jb6tjyeb.js";
22
+ import"./server-pavzsdc6.js";
23
+ import"./server-z4p0ry94.js";
24
+ import"./server-1d042x6w.js";
25
+ export {
26
+ renderSearchArchive2 as renderSearchArchive,
27
+ renderSearchArchiveOffThread2 as renderSearchArchiveOffThread
28
+ };
@@ -8,17 +8,19 @@ import {
8
8
  clearIgnoredMessages2,
9
9
  observeIgnoredNotificationEvent2,
10
10
  sendStatusNotification2
11
- } from "./server-qc915kw2.js";
11
+ } from "./server-bez34e60.js";
12
12
  import"./server-qt1qqasc.js";
13
- import"./server-a7x00tw8.js";
14
- import"./server-1bw1wcbp.js";
13
+ import"./server-mfn1yf9d.js";
14
+ import"./server-f0j864ma.js";
15
+ import"./server-tnzbk64q.js";
16
+ import"./server-96ztjvkn.js";
17
+ import"./server-v0p37hm2.js";
15
18
  import"./server-2ra6pwf3.js";
16
- import"./server-6vd2n183.js";
17
- import"./server-51779zs2.js";
18
19
  import"./server-gzy5w8ya.js";
19
- import"./server-6495nmn9.js";
20
+ import"./server-jb6tjyeb.js";
20
21
  import"./server-pavzsdc6.js";
21
- import"./server-cpjk5jd2.js";
22
+ import"./server-z4p0ry94.js";
23
+ import"./server-1d042x6w.js";
22
24
  export {
23
25
  MAX_QUEUED_IGNORED_NOTIFICATIONS2 as MAX_QUEUED_IGNORED_NOTIFICATIONS,
24
26
  __ignoredNotificationTest2 as __ignoredNotificationTest,
@@ -3,31 +3,33 @@ var WORKER_CLOSE_MESSAGE = { kind: "close" };
3
3
  function isWorkerCloseMessage(message) {
4
4
  return typeof message === "object" && message !== null && message.kind === WORKER_CLOSE_MESSAGE.kind;
5
5
  }
6
- function exitOnWorkerClose(port, closeConnections) {
6
+ function exitOnWorkerClose(port, closeConnections, exitThread = true) {
7
7
  const listener = (message) => {
8
8
  if (!isWorkerCloseMessage(message))
9
9
  return;
10
10
  try {
11
11
  closeConnections();
12
12
  } finally {
13
- process.exit(0);
13
+ if (exitThread)
14
+ process.exit(0);
15
+ closePort();
14
16
  }
15
17
  };
16
18
  if (!port)
17
19
  return { closePort() {} };
18
- port.on("message", listener);
20
+ const owner = port;
21
+ owner.on("message", listener);
19
22
  let closed = false;
20
- return {
21
- closePort() {
22
- if (closed)
23
- return;
24
- closed = true;
25
- setTimeout(() => {
26
- port.off("message", listener);
27
- port.close();
28
- });
29
- }
30
- };
23
+ function closePort() {
24
+ if (closed)
25
+ return;
26
+ closed = true;
27
+ setTimeout(() => {
28
+ owner.off("message", listener);
29
+ owner.close();
30
+ });
31
+ }
32
+ return { closePort };
31
33
  }
32
34
  var outcomes = new Map;
33
35
  function createWorkerShutdown(worker, site, deadlineMs) {
@@ -0,0 +1,123 @@
1
+ import {
2
+ withSqliteBackgroundWriter2,
3
+ withoutSqliteTransformPass2,
4
+ isTransientSqliteError2
5
+ } from "./server-gzy5w8ya.js";
6
+
7
+ // src/hooks/magic-context/embed-session-state.ts
8
+ var embedPauseBySession = new Set;
9
+ var embedRunStateBySession = new Map;
10
+ var activeEmbeddingSessions = new Map;
11
+ var autoEmbedAttemptedBySession = new Set;
12
+ var autoEmbedIdentityBySession = new Map;
13
+ var autoEmbedRetryAfterBySession = new Map;
14
+ function invalidateAutoEmbedSession(sessionId) {
15
+ autoEmbedAttemptedBySession.delete(sessionId);
16
+ autoEmbedIdentityBySession.delete(sessionId);
17
+ autoEmbedRetryAfterBySession.delete(sessionId);
18
+ }
19
+ function getEmbedDrainUiStatus(sessionId, progress) {
20
+ if (embedPauseBySession.has(sessionId)) {
21
+ return { status: "paused" };
22
+ }
23
+ const activeRun = embedRunStateBySession.get(sessionId);
24
+ if (activeRun && !activeRun.signal.aborted || progress?.kind === "embed" && progress.phase === "recomp") {
25
+ return { status: "running" };
26
+ }
27
+ if (progress?.kind === "embed" && (progress.phase === "failed" || progress.phase === "skipped") && progress.message) {
28
+ if (/provider/i.test(progress.message)) {
29
+ return { status: "stopped", detail: progress.message };
30
+ }
31
+ }
32
+ return { status: "idle" };
33
+ }
34
+ function clearEmbedSessionState(sessionId) {
35
+ activeEmbeddingSessions.delete(sessionId);
36
+ embedPauseBySession.delete(sessionId);
37
+ const ctrl = embedRunStateBySession.get(sessionId);
38
+ if (ctrl) {
39
+ ctrl.abort();
40
+ embedRunStateBySession.delete(sessionId);
41
+ }
42
+ invalidateAutoEmbedSession(sessionId);
43
+ }
44
+
45
+ // src/shared/background-batch-drain.ts
46
+ async function drainBackgroundBatches(step, options = {}) {
47
+ const now = options.now ?? (() => performance.now());
48
+ const deadline = now() + (options.budgetMs ?? 2000);
49
+ const yieldFn = options.yieldFn ?? (() => new Promise((resolve) => setTimeout(resolve, 0)));
50
+ let batches = 0;
51
+ while (now() < deadline) {
52
+ try {
53
+ if (!withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(step)))
54
+ break;
55
+ } catch (error) {
56
+ if (isTransientSqliteError2(error))
57
+ break;
58
+ throw error;
59
+ }
60
+ batches++;
61
+ await yieldFn();
62
+ }
63
+ return batches;
64
+ }
65
+
66
+ // src/features/magic-context/storage-embedding-measurements.ts
67
+ import { createHash } from "node:crypto";
68
+ function normalizedQueryHash(query) {
69
+ const normalized = query.trim().replace(/\s+/g, " ").toLowerCase();
70
+ return createHash("sha256").update(normalized).digest("hex");
71
+ }
72
+ var MEASUREMENT_CORPUS_SESSION_ROW_CAP = 2000;
73
+ function recordEmbeddingMeasurement(db, input, cap = MEASUREMENT_CORPUS_SESSION_ROW_CAP) {
74
+ const queryTextHash = normalizedQueryHash(input.queryText);
75
+ const dedupKey = queryTextHash;
76
+ const result = db.prepare(`INSERT OR IGNORE INTO embedding_measurement_corpus
77
+ (session_id, project_path, dedup_key, cohort_key, query_text_hash,
78
+ primary_result_ids_json, shadow_result_ids_json, primary_latency_ms, shadow_latency_ms,
79
+ primary_failed, shadow_failed, primary_model_id, shadow_model_id,
80
+ primary_fingerprint, shadow_fingerprint, primary_epoch, shadow_epoch,
81
+ corpus_hash, coverage_json, created_at)
82
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.sessionId, input.projectPath, dedupKey, input.cohortKey, queryTextHash, JSON.stringify(input.primaryResultIds.slice(0, 10)), JSON.stringify(input.shadowResultIds.slice(0, 10)), input.primaryLatencyMs, input.shadowLatencyMs, input.primaryFailed ? 1 : 0, input.shadowFailed ? 1 : 0, input.primaryModelId, input.shadowModelId, input.primaryFingerprint, input.shadowFingerprint, input.primaryEpoch, input.shadowEpoch, input.corpusHash, JSON.stringify(input.coverage), Date.now());
83
+ if (result.changes > 0) {
84
+ const rowCount = db.prepare("SELECT COUNT(*) AS count FROM embedding_measurement_corpus WHERE session_id = ?").get(input.sessionId).count;
85
+ const overflow = rowCount - cap;
86
+ if (overflow > 0) {
87
+ db.prepare(`DELETE FROM embedding_measurement_corpus
88
+ WHERE session_id = ?
89
+ AND id IN (
90
+ SELECT id FROM embedding_measurement_corpus
91
+ WHERE session_id = ?
92
+ ORDER BY id ASC
93
+ LIMIT ?
94
+ )`).run(input.sessionId, input.sessionId, overflow);
95
+ }
96
+ }
97
+ return result.changes > 0;
98
+ }
99
+ function beginSynapseBatchLedger(db, input, now = Date.now()) {
100
+ db.prepare(`INSERT INTO synapse_batch_ledger
101
+ (session_id, project_path, scope, manifest_json, request_key, status, created_at, updated_at)
102
+ VALUES (?, ?, ?, ?, ?, 'pending', ?, ?)
103
+ ON CONFLICT(session_id, request_key) DO UPDATE SET
104
+ manifest_json = excluded.manifest_json,
105
+ updated_at = excluded.updated_at`).run(input.sessionId, input.projectPath, input.scope, JSON.stringify(input.manifest), input.requestKey, now, now);
106
+ }
107
+ function finishSynapseBatchLedger(db, sessionId, requestKey, status, now = Date.now()) {
108
+ db.prepare("UPDATE synapse_batch_ledger SET status = ?, updated_at = ? WHERE session_id = ? AND request_key = ?").run(status, now, sessionId, requestKey);
109
+ }
110
+ var SYNAPSE_BATCH_LEDGER_TTL_MS = 14 * 24 * 60 * 60 * 1000;
111
+ function pruneSynapseBatchLedgerForProject(db, projectIdentity, ttlMs = SYNAPSE_BATCH_LEDGER_TTL_MS) {
112
+ const ledgerTable = db.prepare("SELECT 1 AS present FROM sqlite_master WHERE type = 'table' AND name = 'synapse_batch_ledger'").get();
113
+ if (!ledgerTable)
114
+ return 0;
115
+ const shadow = `shadow:${projectIdentity}`;
116
+ const cutoff = Date.now() - ttlMs;
117
+ const predicate = "session_id IN (?, ?) AND updated_at < ?";
118
+ if (!db.prepare(`SELECT 1 FROM synapse_batch_ledger WHERE ${predicate} LIMIT 1`).get(projectIdentity, shadow, cutoff))
119
+ return 0;
120
+ return db.prepare(`DELETE FROM synapse_batch_ledger WHERE ${predicate}`).run(projectIdentity, shadow, cutoff).changes;
121
+ }
122
+
123
+ export { embedPauseBySession, embedRunStateBySession, activeEmbeddingSessions, autoEmbedAttemptedBySession, autoEmbedIdentityBySession, autoEmbedRetryAfterBySession, invalidateAutoEmbedSession, getEmbedDrainUiStatus, clearEmbedSessionState, drainBackgroundBatches, recordEmbeddingMeasurement, beginSynapseBatchLedger, finishSynapseBatchLedger, pruneSynapseBatchLedgerForProject };
@@ -3,12 +3,12 @@ import {
3
3
  } from "./server-fr0wbhdn.js";
4
4
  import {
5
5
  log2
6
- } from "./server-6495nmn9.js";
6
+ } from "./server-jb6tjyeb.js";
7
7
  import {
8
8
  ensureColumn,
9
9
  healAllNullColumns,
10
10
  installV95PerfSchema
11
- } from "./server-v77xa5wj.js";
11
+ } from "./server-tpt7bwq8.js";
12
12
  import {
13
13
  resolveOpenCodeDbPath,
14
14
  openCodeDbPathExists,
@@ -20,10 +20,10 @@ import {
20
20
  import {
21
21
  normalizeStoredProjectPath,
22
22
  storedPathBelongsToIdentity
23
- } from "./server-qjvk4a9t.js";
23
+ } from "./server-69m30b21.js";
24
24
  import {
25
25
  logSlowWriteTransaction
26
- } from "./server-gyy4k6mf.js";
26
+ } from "./server-qmmkhz2z.js";
27
27
 
28
28
  // src/features/magic-context/migrations.ts
29
29
  import { isMainThread } from "node:worker_threads";
@@ -0,0 +1,209 @@
1
+ import {
2
+ sanitizeDiagnosticText
3
+ } from "./server-z4p0ry94.js";
4
+
5
+ // src/features/magic-context/fail-closed-block.ts
6
+ var FAIL_CLOSED_DOCTOR_COMMAND = "npx @cortexkit/magic-context@latest doctor";
7
+ function attachFailClosedBlockingProcessEvidence(process, evidence) {
8
+ Object.defineProperties(process, {
9
+ startTime: { configurable: true, value: evidence.startTime },
10
+ commandLine: { configurable: true, value: evidence.commandLine }
11
+ });
12
+ return process;
13
+ }
14
+
15
+ class FailClosedBlockingError extends Error {
16
+ code = "FAIL_CLOSED_BLOCKING";
17
+ reason;
18
+ constructor(message, reason, options) {
19
+ super(message, options);
20
+ this.name = "FailClosedBlockingError";
21
+ this.reason = reason;
22
+ }
23
+ }
24
+ var OPENCODE_INTERNAL_AGENT_NAMES = new Set(["title", "summary", "compaction"]);
25
+ function isMagicContextHiddenAgentName(agent) {
26
+ if (agent === "smart-note-compiler" || agent.startsWith("smart-note-")) {
27
+ return true;
28
+ }
29
+ if (agent === "historian" || agent.startsWith("historian-"))
30
+ return true;
31
+ if (agent === "dreamer" || agent.startsWith("dreamer-"))
32
+ return true;
33
+ return false;
34
+ }
35
+ var MAX_FORMATTED_BLOCKING_PROCESSES = 8;
36
+ var MAX_FORMATTED_COMMAND_LINE_LENGTH = 80;
37
+ function normalizeFailClosedProcessKind(process) {
38
+ switch (process.kind) {
39
+ case "OpenCode server":
40
+ case "OpenCode instance (TUI/CLI)":
41
+ case "Pi":
42
+ case "process":
43
+ return process.kind;
44
+ }
45
+ switch (process.harness?.trim().toLowerCase()) {
46
+ case "opencode server":
47
+ return "OpenCode server";
48
+ case "opencode instance (tui/cli)":
49
+ case "opencode instance":
50
+ return "OpenCode instance (TUI/CLI)";
51
+ case "pi":
52
+ case "pi harness":
53
+ case "omp":
54
+ return "Pi";
55
+ default:
56
+ return "process";
57
+ }
58
+ }
59
+ function formatFailClosedProcessStartTime(startTime) {
60
+ if (!Number.isFinite(startTime) || startTime <= 0)
61
+ return "unverified";
62
+ try {
63
+ const parts = new Intl.DateTimeFormat("en-US", {
64
+ day: "numeric",
65
+ hour: "2-digit",
66
+ minute: "2-digit",
67
+ month: "short",
68
+ hour12: false
69
+ }).formatToParts(new Date(startTime));
70
+ const values = Object.fromEntries(parts.map(({ type, value }) => [type, value]));
71
+ if (!values.month || !values.day || !values.hour || !values.minute)
72
+ return "unverified";
73
+ return `${values.month} ${values.day} ${values.hour}:${values.minute}`;
74
+ } catch {
75
+ return "unverified";
76
+ }
77
+ }
78
+ function formatFailClosedCommandLine(commandLine) {
79
+ if (typeof commandLine !== "string" || commandLine.trim().length === 0)
80
+ return "unverified";
81
+ try {
82
+ const normalized = commandLine.replaceAll("\x00", " ").replace(/\s+/g, " ").trim();
83
+ if (normalized.length === 0)
84
+ return "unverified";
85
+ const sanitized = sanitizeDiagnosticText(normalized).trim();
86
+ if (sanitized.length === 0)
87
+ return "unverified";
88
+ return sanitized.length > MAX_FORMATTED_COMMAND_LINE_LENGTH ? `${sanitized.slice(0, MAX_FORMATTED_COMMAND_LINE_LENGTH - 3)}...` : sanitized;
89
+ } catch {
90
+ return "unverified";
91
+ }
92
+ }
93
+ function formatFailClosedBlockingProcesses(processes) {
94
+ const uniqueProcesses = new Map;
95
+ for (const process of processes) {
96
+ if (!Number.isInteger(process.pid) || process.pid <= 0)
97
+ continue;
98
+ const candidate = {
99
+ kind: normalizeFailClosedProcessKind(process),
100
+ pid: process.pid,
101
+ startTime: process.startTime,
102
+ commandLine: process.commandLine
103
+ };
104
+ const previous = uniqueProcesses.get(process.pid);
105
+ if (!previous || previous.kind === "process" && candidate.kind !== "process") {
106
+ uniqueProcesses.set(process.pid, candidate);
107
+ } else {
108
+ uniqueProcesses.set(process.pid, {
109
+ ...previous,
110
+ startTime: previous.startTime ?? candidate.startTime,
111
+ commandLine: previous.commandLine ?? candidate.commandLine
112
+ });
113
+ }
114
+ }
115
+ const entries = [...uniqueProcesses.values()];
116
+ const visible = entries.slice(0, MAX_FORMATTED_BLOCKING_PROCESSES);
117
+ const rendered = visible.map(({ kind, pid }) => `${kind} (PID ${pid})`);
118
+ const omitted = entries.length - visible.length;
119
+ if (omitted > 0)
120
+ rendered.push(`${omitted} more blocking process(es)`);
121
+ if (rendered.length === 0)
122
+ return "a live process";
123
+ const summary = rendered.length === 1 ? rendered[0] : `${rendered.slice(0, -1).join(", ")}, and ${rendered.at(-1)}`;
124
+ const evidence = entries.map(({ kind, pid, startTime, commandLine }) => `- PID ${pid}: ${kind}, started ${formatFailClosedProcessStartTime(startTime)}, cmd: ${formatFailClosedCommandLine(commandLine)}`).join(`
125
+ `);
126
+ return `${summary}
127
+ Blocking process evidence:
128
+ ${evidence}`;
129
+ }
130
+ function formatFailClosedBlockingMessage(reason) {
131
+ if (reason.kind === "migration_guard") {
132
+ if (reason.unreadableFile) {
133
+ const arm = reason.unreadableArm ?? "io";
134
+ const recovery = arm === "io" ? `If none of these processes are running, it is safe to delete ${reason.unreadableFile} and retry.` : `The file may be a recent incomplete write; retry after the file is older than the ten-minute grace window, or stop the relevant process before deleting it.`;
135
+ return [
136
+ `Magic Context cannot migrate the shared database because RPC discovery file ${reason.unreadableFile} is uncertain (${arm} arm), so the absence of a live process cannot be proven.`,
137
+ recovery,
138
+ `Recovery: ${FAIL_CLOSED_DOCTOR_COMMAND}`
139
+ ].join(" ");
140
+ }
141
+ return [
142
+ `Magic Context cannot migrate the shared database (one database serves every project on this machine) because ${formatFailClosedBlockingProcesses(reason.blockingProcesses)} may be running an older Magic Context build that would fail against the migrated database.`,
143
+ `The database is at upstream migration v${reason.persistedVersion}; this build needs v${reason.supportedVersion}.`,
144
+ "Restart the blocking process — even one from a different project — and it will pick up the new build and migrate on start; or shut it down and retry.",
145
+ "If that host loads a pinned or cached older Magic Context build, a restart alone is not enough: stop it or update its Magic Context build, then start this host once so it migrates the database with nothing older attached.",
146
+ `Recovery: ${FAIL_CLOSED_DOCTOR_COMMAND}`
147
+ ].join(" ");
148
+ }
149
+ if (reason.kind === "schema_fence") {
150
+ return [
151
+ `Magic Context cannot operate: this Magic Context build is older than the database; upgrade/restart this harness (upstream migration lane v${reason.persistedVersion}, build supports through v${reason.supportedVersion}).`,
152
+ `Recovery: ${FAIL_CLOSED_DOCTOR_COMMAND}`
153
+ ].join(" ");
154
+ }
155
+ const cause = reason.cause.trim().length > 0 ? reason.cause.trim() : "unknown storage error";
156
+ return [
157
+ `Magic Context cannot operate: persistent storage failed (${cause}).`,
158
+ "The plugin will not silently degrade to native compaction while enabled.",
159
+ `Recovery: ${FAIL_CLOSED_DOCTOR_COMMAND}`
160
+ ].join(" ");
161
+ }
162
+ function formatFailClosedBlockingSummary(reason) {
163
+ if (reason.kind === "migration_guard") {
164
+ if (reason.unreadableFile) {
165
+ return `Magic Context cannot migrate the shared database from v${reason.persistedVersion} to v${reason.supportedVersion}: RPC discovery file ${reason.unreadableFile} could not be read, so an older host may still be attached.`;
166
+ }
167
+ const blockers = reason.blockingProcesses.filter((process) => Number.isInteger(process.pid) && process.pid > 0).map((process) => `${normalizeFailClosedProcessKind(process)} (PID ${process.pid})`);
168
+ const named = blockers.length > 0 ? blockers.join(", ") : "a live process";
169
+ return `Magic Context cannot migrate the shared database from v${reason.persistedVersion} to v${reason.supportedVersion} while ${named} may still run an older Magic Context build. Stop or update that host, then start this one once.`;
170
+ }
171
+ if (reason.kind === "schema_fence") {
172
+ return `Magic Context cannot operate: the shared database is at v${reason.persistedVersion}, newer than this build supports (v${reason.supportedVersion}). Update and restart this host.`;
173
+ }
174
+ const cause = reason.cause.trim().length > 0 ? reason.cause.trim() : "unknown storage error";
175
+ return `Magic Context cannot operate: persistent storage failed (${cause}).`;
176
+ }
177
+ function createFailClosedBlockingError(reason, options) {
178
+ return new FailClosedBlockingError(formatFailClosedBlockingMessage(reason), reason, options);
179
+ }
180
+ function isFailClosedBlockingError(error) {
181
+ return error instanceof FailClosedBlockingError || typeof error === "object" && error !== null && error.name === "FailClosedBlockingError" && error.code === "FAIL_CLOSED_BLOCKING";
182
+ }
183
+ function shouldBypassFailClosedBlock(input) {
184
+ if (input.isPiSubagentEnv === true)
185
+ return true;
186
+ if (input.isInternalChildSession === true)
187
+ return true;
188
+ const agent = typeof input.agent === "string" ? input.agent.trim() : "";
189
+ if (agent.length === 0)
190
+ return false;
191
+ if (OPENCODE_INTERNAL_AGENT_NAMES.has(agent))
192
+ return true;
193
+ if (isMagicContextHiddenAgentName(agent))
194
+ return true;
195
+ return false;
196
+ }
197
+ function resolveAgentNameFromMessages(messages) {
198
+ for (let i = messages.length - 1;i >= 0; i -= 1) {
199
+ const info = messages[i]?.info;
200
+ if (!info || typeof info !== "object")
201
+ continue;
202
+ const agent = info.agent;
203
+ if (typeof agent === "string" && agent.length > 0)
204
+ return agent;
205
+ }
206
+ return;
207
+ }
208
+
209
+ export { FAIL_CLOSED_DOCTOR_COMMAND, attachFailClosedBlockingProcessEvidence, formatFailClosedBlockingMessage, formatFailClosedBlockingSummary, createFailClosedBlockingError, isFailClosedBlockingError, shouldBypassFailClosedBlock, resolveAgentNameFromMessages };