@cortexkit/opencode-magic-context 0.49.6 → 0.49.8

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 (255) hide show
  1. package/dist/auto-search-worker.js +10 -7
  2. package/dist/compaction-marker-candidates-worker.js +2 -2
  3. package/dist/{compaction-marker-candidates-cz72pm1t.js → compaction-marker-candidates-xxz35vwp.js} +3 -3
  4. package/dist/{conflict-warning-hook-1jq1rxx7.js → conflict-warning-hook-w3crzrar.js} +8 -8
  5. package/dist/{context-ae3gxdye.js → context-x0ccfv0f.js} +88 -53
  6. package/dist/{derive-budgets-j4ry8j8n.js → derive-budgets-3nbxsyss.js} +2 -2
  7. package/dist/embedding-backfill-3h2m5n0q.js +21 -0
  8. package/dist/embedding-worker-process.js +6 -2
  9. package/dist/embedding-worker.js +6 -5
  10. package/dist/features/magic-context/compaction-marker-candidates.d.ts.map +1 -1
  11. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  12. package/dist/features/magic-context/dreamer/cron.d.ts +2 -0
  13. package/dist/features/magic-context/dreamer/cron.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/hidden-single-shot.d.ts +6 -3
  15. package/dist/features/magic-context/dreamer/hidden-single-shot.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts +7 -1
  17. package/dist/features/magic-context/dreamer/map-memories-prompt.d.ts.map +1 -1
  18. package/dist/features/magic-context/dreamer/map-memories.d.ts +2 -2
  19. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/primer-seed.d.ts +2 -0
  21. package/dist/features/magic-context/dreamer/primer-seed.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/provider-output-failure.d.ts +1 -0
  23. package/dist/features/magic-context/dreamer/provider-output-failure.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/refresh-primers.d.ts +2 -2
  25. package/dist/features/magic-context/memory/embedding-local.d.ts.map +1 -1
  26. package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
  27. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  28. package/dist/features/magic-context/migration-worker-client.d.ts.map +1 -1
  29. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  30. package/dist/features/magic-context/smart-notes/wake-plane.d.ts.map +1 -1
  31. package/dist/features/magic-context/storage-clone.d.ts.map +1 -1
  32. package/dist/features/magic-context/storage-meta-persisted.d.ts +10 -3
  33. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  34. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  35. package/dist/features/magic-context/storage-replay-document.d.ts +4 -0
  36. package/dist/features/magic-context/storage-replay-document.d.ts.map +1 -1
  37. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  38. package/dist/history-owner-ty29fz0f.js +244 -0
  39. package/dist/hooks/auto-update-checker/checker.d.ts.map +1 -1
  40. package/dist/hooks/magic-context/apply-operations.d.ts +7 -0
  41. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  42. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  43. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  44. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  45. package/dist/hooks/magic-context/edit-marker.d.ts +2 -0
  46. package/dist/hooks/magic-context/edit-marker.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
  48. package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  50. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/module-transport.d.ts +1 -0
  52. package/dist/hooks/magic-context/module-transport.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/note-nudger.d.ts +5 -3
  54. package/dist/hooks/magic-context/note-nudger.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/postprocess-read-cache.d.ts.map +1 -1
  56. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/read-session-chunk.d.ts +15 -4
  58. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/replay-committed-drops.d.ts +9 -0
  60. package/dist/hooks/magic-context/replay-committed-drops.d.ts.map +1 -0
  61. package/dist/hooks/magic-context/rust-lkg-freeze-registry.d.ts +2 -2
  62. package/dist/hooks/magic-context/rust-lkg-freeze-registry.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/rust-mode-transform.d.ts +4 -0
  64. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/rust-refusal-recovery.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/rust-served-raw.d.ts +29 -0
  67. package/dist/hooks/magic-context/rust-served-raw.d.ts.map +1 -0
  68. package/dist/hooks/magic-context/strip-content.d.ts +23 -24
  69. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/tag-messages.d.ts +2 -0
  71. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/tool-drop-target.d.ts +2 -0
  73. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  75. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts +5 -1
  77. package/dist/hooks/magic-context/unresolved-history-boundary.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  79. package/dist/{index-g9exahnx.js → index-0jz47061.js} +6 -3
  80. package/dist/{index-4mjhqadz.js → index-150zz6fh.js} +1 -1
  81. package/dist/{index-ch08qwgd.js → index-2rw244rh.js} +88 -81
  82. package/dist/{index-6q5h70h2.js → index-4hb8nt93.js} +3 -3
  83. package/dist/{index-j55vn694.js → index-7bjgyaj1.js} +4 -4
  84. package/dist/{index-h2wc01qk.js → index-8kk7yh6m.js} +2 -2
  85. package/dist/{index-vztbgcdk.js → index-9g1c4bt9.js} +304 -92
  86. package/dist/{index-7q1m1qjk.js → index-a43xq1pg.js} +5 -5
  87. package/dist/{index-tqf7yg27.js → index-a4b0gbyg.js} +1 -1
  88. package/dist/{index-vnjhmkwk.js → index-angx1s0k.js} +4 -3
  89. package/dist/{index-1xaw2pq8.js → index-b4gcb3rk.js} +8 -8
  90. package/dist/{index-z1tjp257.js → index-b64n4d0h.js} +1 -1
  91. package/dist/{index-1bt88epp.js → index-bd9cjab3.js} +1 -1
  92. package/dist/{index-gbmqa9x9.js → index-bmwfzz28.js} +9 -6
  93. package/dist/{index-qx53vezw.js → index-gjvjh960.js} +1 -1
  94. package/dist/{index-zgzdm6dg.js → index-gzg9ekc1.js} +155 -103
  95. package/dist/{index-vh3e2mvr.js → index-hxrvx6cy.js} +121 -51
  96. package/dist/{index-w23dh319.js → index-jw4gbfkv.js} +1 -1
  97. package/dist/index-knvkbfvh.js +25 -0
  98. package/dist/{index-vkbqdnkj.js → index-kvw6xew3.js} +6 -3
  99. package/dist/{index-bg5qqene.js → index-mp2kghkv.js} +3 -27
  100. package/dist/{index-nsjyysj0.js → index-mvvephtj.js} +5 -1
  101. package/dist/{index-cm4hmxyk.js → index-n78avt2p.js} +1 -1
  102. package/dist/{index-hr64sth2.js → index-pgy3h49n.js} +4 -4
  103. package/dist/{index-a796ct3s.js → index-pjgzdezw.js} +13 -9
  104. package/dist/{index-9m7bn21d.js → index-q28hsbpg.js} +15 -3
  105. package/dist/{index-ab3bgm2m.js → index-q76br5zn.js} +3 -3
  106. package/dist/{index-xqyj5c85.js → index-qgp5vnt4.js} +5 -5
  107. package/dist/{index-9s58tq95.js → index-rg1cezmj.js} +22 -22
  108. package/dist/{index-f3dnvnw6.js → index-s178h9z8.js} +4 -3
  109. package/dist/{index-mj1fgfrk.js → index-w1ejb9qr.js} +939 -160
  110. package/dist/{index-k6xvbj2e.js → index-w28y7d0z.js} +2 -0
  111. package/dist/{index-0nnd4bry.js → index-wafzvyhg.js} +63 -19
  112. package/dist/{index-ck6y3td2.js → index-xf6k8szp.js} +4 -4
  113. package/dist/{index-1j8jcjpa.js → index-xpn05jxq.js} +4 -4
  114. package/dist/{index-s0gsmthp.js → index-ydjgz36f.js} +7 -7
  115. package/dist/{index-besxhcsh.js → index-zf9nydbd.js} +50 -39
  116. package/dist/index.js +53 -52
  117. package/dist/{logger-ewak5q1s.js → logger-wn328tfg.js} +1 -1
  118. package/dist/{message-index-bounded-630j53ps.js → message-index-bounded-hxjp56qk.js} +16 -16
  119. package/dist/{message-index-c84wm2g0.js → message-index-zs882h8e.js} +16 -16
  120. package/dist/{message-time-backfill-8kj57qe3.js → message-time-backfill-nb5hhnrt.js} +3 -3
  121. package/dist/migration-worker.js +11 -11
  122. package/dist/plugin/boot-quiet.d.ts.map +1 -1
  123. package/dist/plugin/dream-timer.d.ts.map +1 -1
  124. package/dist/plugin/messages-transform.d.ts.map +1 -1
  125. package/dist/plugin/rpc-handlers.d.ts +2 -0
  126. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  127. package/dist/{project-embedding-registry-vv59t7ah.js → project-embedding-registry-vy7sv9jt.js} +11 -11
  128. package/dist/raw-ordinal-warmup-worker.js +17 -15
  129. package/dist/{read-session-chunk-t3vjd0h0.js → read-session-chunk-t9r7r0sg.js} +13 -11
  130. package/dist/{read-session-raw-gf7eytnm.js → read-session-raw-gm6xj30v.js} +3 -3
  131. package/dist/recomp-orchestrator-gr36zvd2.js +60 -0
  132. package/dist/{safe-notification-target-q0cyrx3x.js → safe-notification-target-jdynm677.js} +2 -2
  133. package/dist/{search-kth2p6cc.js → search-qjen1pmz.js} +24 -24
  134. package/dist/{send-session-notification-3j6krd4w.js → send-session-notification-q8ngbap3.js} +6 -6
  135. package/dist/shared/history-owner.d.ts +12 -0
  136. package/dist/shared/history-owner.d.ts.map +1 -0
  137. package/dist/shared/off-thread-migration-clock.d.ts +8 -1
  138. package/dist/shared/off-thread-migration-clock.d.ts.map +1 -1
  139. package/dist/shared/processed-image-eligibility.d.ts +22 -0
  140. package/dist/shared/processed-image-eligibility.d.ts.map +1 -0
  141. package/dist/shared/recovery-reasoning-prefix.d.ts +9 -0
  142. package/dist/shared/recovery-reasoning-prefix.d.ts.map +1 -0
  143. package/dist/shared/redaction.d.ts.map +1 -1
  144. package/dist/shared/rpc-server.d.ts.map +1 -1
  145. package/dist/shared/sqlite.d.ts +3 -1
  146. package/dist/shared/sqlite.d.ts.map +1 -1
  147. package/dist/shared/tag-transcript.d.ts +9 -0
  148. package/dist/shared/tag-transcript.d.ts.map +1 -1
  149. package/dist/shared/user-facing-codes.d.ts +2 -2
  150. package/dist/{sqlite-d7edbk1s.js → sqlite-4pqyynrs.js} +3 -1
  151. package/dist/{storage-memory-af5zdz98.js → storage-memory-j3v3hc83.js} +2 -2
  152. package/dist/{storage-tags-dyj7mmbq.js → storage-tags-a513rkj3.js} +5 -5
  153. package/dist/tools/ctx-expand/search-archive.d.ts +4 -0
  154. package/dist/tools/ctx-expand/search-archive.d.ts.map +1 -0
  155. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  156. package/dist/{transform-postprocess-phase-bv3kb5s1.js → transform-postprocess-phase-yv463b7y.js} +30 -30
  157. package/dist/v2/auto-search-worker.js +10 -7
  158. package/dist/v2/{compaction-marker-candidates-6gqp5wrc.js → compaction-marker-candidates-a15w3mqh.js} +3 -3
  159. package/dist/v2/compaction-marker-candidates-worker.js +2 -2
  160. package/dist/v2/{context-p8f2shp1.js → context-wd82v9z6.js} +1133 -278
  161. package/dist/v2/{derive-budgets-enckmg7y.js → derive-budgets-0rmpmxjw.js} +3 -3
  162. package/dist/v2/embedding-backfill-vr7wdtrf.js +20 -0
  163. package/dist/v2/embedding-worker-process.js +6 -2
  164. package/dist/v2/embedding-worker.js +6 -5
  165. package/dist/v2/hidden-completion.d.ts.map +1 -1
  166. package/dist/v2/history-owner-2cr9py37.js +243 -0
  167. package/dist/v2/hooks/context.d.ts.map +1 -1
  168. package/dist/v2/hooks/payload.d.ts.map +1 -1
  169. package/dist/v2/hooks/store.d.ts +1 -0
  170. package/dist/v2/hooks/store.d.ts.map +1 -1
  171. package/dist/v2/{logger-pj02s7sr.js → logger-te6e1j72.js} +1 -1
  172. package/dist/v2/{message-index-bounded-yzxmf6vp.js → message-index-bounded-madg2kfr.js} +16 -16
  173. package/dist/v2/{message-index-3ws17x1g.js → message-index-yd94vt9n.js} +16 -16
  174. package/dist/v2/{message-time-backfill-5nf10c65.js → message-time-backfill-rz1pnpaj.js} +3 -3
  175. package/dist/v2/migration-worker.js +11 -11
  176. package/dist/v2/{project-embedding-registry-rsnf2263.js → project-embedding-registry-ja23aygk.js} +11 -11
  177. package/dist/v2/raw-ordinal-warmup-worker.js +17 -15
  178. package/dist/v2/{read-session-chunk-vtb0w2kd.js → read-session-chunk-7qs791f3.js} +13 -11
  179. package/dist/v2/{read-session-raw-gpcddemt.js → read-session-raw-h4azh85b.js} +3 -3
  180. package/dist/v2/recomp-orchestrator-ee91r9s6.js +59 -0
  181. package/dist/v2/{safe-notification-target-y3p1hce9.js → safe-notification-target-936374xx.js} +2 -2
  182. package/dist/v2/search-pn15rr52.js +46 -0
  183. package/dist/v2/{send-session-notification-5aj2j7vf.js → send-session-notification-6n7chhyp.js} +6 -6
  184. package/dist/v2/{server-09g9pkvx.js → server-08k4zkfk.js} +50 -39
  185. package/dist/v2/{server-ras2sxnc.js → server-44ryn9rb.js} +9 -6
  186. package/dist/v2/{server-158ehmk2.js → server-4easnf78.js} +19 -19
  187. package/dist/v2/{server-ww9nr8pe.js → server-4gz0xkrc.js} +5 -5
  188. package/dist/v2/{server-d6g4whc2.js → server-4qr18rfg.js} +3 -3
  189. package/dist/v2/{server-f9py7s7a.js → server-4rs8sm06.js} +5 -5
  190. package/dist/v2/{server-yezz0cp2.js → server-63ha7f0f.js} +3 -27
  191. package/dist/v2/{server-3t0q2cqx.js → server-7dv9wt9r.js} +1 -1
  192. package/dist/v2/{server-cw6521wn.js → server-7e087rvk.js} +2 -0
  193. package/dist/v2/{server-hb6xhh9q.js → server-988cqjme.js} +6 -3
  194. package/dist/v2/{server-keswwkvv.js → server-9a6bwc12.js} +4 -4
  195. package/dist/v2/{server-t4k4qexw.js → server-9e5r8y60.js} +5 -1
  196. package/dist/v2/{server-7ekna9zs.js → server-adfte03x.js} +2 -2
  197. package/dist/v2/{server-9zqewm6g.js → server-ak7w74j9.js} +4 -4
  198. package/dist/v2/{server-387vkhjq.js → server-bx59ezg6.js} +4 -3
  199. package/dist/v2/{server-676xw7at.js → server-ckrb5rm8.js} +1 -1
  200. package/dist/v2/{server-wrem2nmz.js → server-cxsr0ng6.js} +15 -3
  201. package/dist/v2/{server-t528t8qm.js → server-hn9fb3v0.js} +2 -2
  202. package/dist/v2/{server-qn23p4h7.js → server-j3dm74ey.js} +9 -9
  203. package/dist/v2/{server-yd01snxq.js → server-jjsf29aq.js} +4 -4
  204. package/dist/v2/server-knvkbfvh.js +25 -0
  205. package/dist/v2/{server-cm4hmxyk.js → server-n78avt2p.js} +1 -1
  206. package/dist/v2/{server-btgnsv7w.js → server-njnx39q2.js} +6 -3
  207. package/dist/v2/{server-6a9mxnb2.js → server-npm52h2q.js} +4 -3
  208. package/dist/v2/{server-vb7pbd9p.js → server-nveratm5.js} +1 -1
  209. package/dist/v2/{server-7skbfb81.js → server-q360kdb8.js} +121 -51
  210. package/dist/v2/{server-kzns2hbz.js → server-s6jqh8bj.js} +1 -1
  211. package/dist/v2/{server-6byqfbqf.js → server-shme41gj.js} +1 -1
  212. package/dist/v2/{server-0nnd4bry.js → server-wafzvyhg.js} +63 -19
  213. package/dist/v2/{server-fby0cxbq.js → server-xj4mewze.js} +304 -92
  214. package/dist/v2/{server-aa9w15cs.js → server-y5g32dhq.js} +88 -81
  215. package/dist/v2/{server-x2r63c0x.js → server-yak3sxya.js} +7 -7
  216. package/dist/v2/{server-4tn95znb.js → server-zrwaj29a.js} +2 -2
  217. package/dist/v2/server.js +9 -8
  218. package/dist/v2/{sqlite-d7edbk1s.js → sqlite-4pqyynrs.js} +3 -1
  219. package/dist/v2/{storage-memory-af5zdz98.js → storage-memory-j3v3hc83.js} +2 -2
  220. package/dist/v2/{storage-tags-d47bpaqa.js → storage-tags-spa92sgj.js} +5 -5
  221. package/dist/v2/store-reader.d.ts.map +1 -1
  222. package/dist/v2/{wrapup-orchestrator-cahk37n7.js → wrapup-orchestrator-5wxy1ggv.js} +38 -35
  223. package/dist/wrapup-orchestrator-gv08c6f9.js +47 -0
  224. package/package.json +3 -3
  225. package/src/config/compaction-accessor-guard.test.ts +3 -0
  226. package/src/features/magic-context/dreamer/cron.ts +8 -0
  227. package/src/shared/history-owner.test.ts +60 -0
  228. package/src/shared/history-owner.ts +43 -0
  229. package/src/shared/host-stall-profiler-node.ts +3 -1
  230. package/src/shared/host-stall-profiler.ts +3 -1
  231. package/src/shared/off-thread-migration-clock.test.ts +80 -10
  232. package/src/shared/off-thread-migration-clock.ts +37 -13
  233. package/src/shared/processed-image-eligibility.test.ts +68 -0
  234. package/src/shared/processed-image-eligibility.ts +41 -0
  235. package/src/shared/processed-image-position-review.json +20 -0
  236. package/src/shared/processed-image-position-review.test.ts +19 -0
  237. package/src/shared/recovery-reasoning-prefix.test.ts +34 -0
  238. package/src/shared/recovery-reasoning-prefix.ts +35 -0
  239. package/src/shared/redaction.test.ts +16 -0
  240. package/src/shared/redaction.ts +8 -1
  241. package/src/shared/root-async-context.probe.mjs +36 -0
  242. package/src/shared/root-async-context.test.ts +49 -0
  243. package/src/shared/rpc-server.ts +27 -23
  244. package/src/shared/sqlite-busy-budget-review.test.ts +291 -0
  245. package/src/shared/sqlite-foreground-wait.test.ts +253 -1
  246. package/src/shared/sqlite-writer-diagnostics.test.ts +31 -0
  247. package/src/shared/sqlite.ts +112 -30
  248. package/src/shared/tag-transcript.ts +118 -0
  249. package/src/shared/user-facing-codes.ts +2 -2
  250. package/dist/embedding-backfill-dtjmyktb.js +0 -21
  251. package/dist/recomp-orchestrator-1d08g57a.js +0 -60
  252. package/dist/v2/embedding-backfill-cg4rv90f.js +0 -20
  253. package/dist/v2/recomp-orchestrator-v64r4s4r.js +0 -59
  254. package/dist/v2/search-bpa4fxq1.js +0 -46
  255. package/dist/wrapup-orchestrator-mqp0v195.js +0 -47
@@ -4947,6 +4947,7 @@ var FIELDS = [
4947
4947
  ];
4948
4948
  var MINUTE_MS = 60000;
4949
4949
  var MAX_SEARCH_MS = 4 * 366 * 24 * 60 * MINUTE_MS;
4950
+ var candidateVisitsForTests;
4950
4951
  function parseField(token, spec) {
4951
4952
  const values = new Set;
4952
4953
  const normalize = (n) => spec.name === "day-of-week" && n === 7 ? 0 : n;
@@ -5066,6 +5067,7 @@ function nextOccurrence(cron, after, excludeCivilMinute, maxSearchMs = MAX_SEARC
5066
5067
  let cursorMs = Math.floor(afterMs / MINUTE_MS) * MINUTE_MS + MINUTE_MS;
5067
5068
  const capMs = afterMs + Math.max(0, Math.min(MAX_SEARCH_MS, maxSearchMs));
5068
5069
  while (cursorMs <= capMs) {
5070
+ candidateVisitsForTests?.();
5069
5071
  const candidate = new Date(cursorMs);
5070
5072
  if (matchesCron(cron, candidate)) {
5071
5073
  if (!excludeCivilMinute || civilMinuteKey(candidate) !== excludeCivilMinute) {
@@ -1,17 +1,24 @@
1
1
  // src/shared/sqlite.ts
2
- import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
3
3
  import { statSync } from "node:fs";
4
+ var resourceRoot = new AsyncResource("magic-context:root");
5
+ function inRootAsyncContext2(operation) {
6
+ return resourceRoot.runInAsyncScope(operation);
7
+ }
4
8
  var reportSlowPrivilegedWrite;
5
9
  function registerSlowWriteReporter2(reporter) {
6
10
  reportSlowPrivilegedWrite = reporter;
7
11
  }
8
12
  var sqliteDiagnosticSink;
9
- function registerSqliteDiagnosticSink2(sink) {
13
+ var sqliteDiagnosticHost = () => "unknown";
14
+ function registerSqliteDiagnosticSink2(sink, host) {
10
15
  sqliteDiagnosticSink = sink;
16
+ if (host)
17
+ sqliteDiagnosticHost = host;
11
18
  }
12
19
  function reportSqliteDiagnostic(message) {
13
20
  try {
14
- sqliteDiagnosticSink?.(`[magic-context] ${message}`);
21
+ sqliteDiagnosticSink?.(`[magic-context] ${message} pid=${process.pid} host=${sqliteDiagnosticHost()}`);
15
22
  } catch {}
16
23
  }
17
24
  function detectSqliteRuntime2() {
@@ -170,17 +177,25 @@ function installTransactionRouting(db, readonly) {
170
177
  assertTransformWrite2();
171
178
  if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
172
179
  openWriterTransactions.delete(db);
173
- if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
180
+ if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore()) {
174
181
  acquireShort(db, () => nativeExec(sql), sql.trim());
175
- else
182
+ } else {
176
183
  nativeExec(sql);
184
+ openWriterTransactions.set(db, {
185
+ site: sql.trim(),
186
+ lane: "background",
187
+ acquireMs: 0,
188
+ attempts: 1,
189
+ acquiredAt: performance.now()
190
+ });
191
+ }
177
192
  return db;
178
193
  }
179
194
  if (WRITER_TRANSACTION_END.test(sql) && openWriterTransactions.has(db))
180
195
  return endWriterTransaction(db, () => nativeExec(sql), sql);
181
196
  if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)) {
182
197
  try {
183
- return withAutocommitTimeout(db, () => nativeExec(sql));
198
+ return withAutocommitTimeout(db, () => nativeExec(sql), false);
184
199
  } finally {
185
200
  if (mayChangeTagIdentity(sql))
186
201
  tagIdentityWriteGeneration += 1;
@@ -322,7 +337,7 @@ function trackSqliteConnection(db, filename, options) {
322
337
  }
323
338
  var TrackedDatabase = new Proxy(DatabaseImpl, {
324
339
  construct(target, args) {
325
- const db = Reflect.construct(target, args, target);
340
+ const db = inRootAsyncContext2(() => Reflect.construct(target, args, target));
326
341
  return trackSqliteConnection(db, args[0], args[1]);
327
342
  }
328
343
  });
@@ -558,7 +573,7 @@ class SqliteAcquisitionBusyError2 extends Error {
558
573
  var SHORT_BUSY_TIMEOUT_MS = 25;
559
574
  var FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS = 2000;
560
575
  var FOREGROUND_ACQUISITION_BUDGET_MS = 16500;
561
- var SLOW_WRITER_LOG_MS = 250;
576
+ var SLOW_WRITER_LOG_MS = 100;
562
577
  var WRITER_TRANSACTION_END = /^\s*(?:COMMIT|END|ROLLBACK)(?:\s+TRANSACTION)?\s*;?\s*$/i;
563
578
  var writerAcquisitionScope = new AsyncLocalStorage;
564
579
  var openWriterTransactions = new WeakMap;
@@ -566,25 +581,52 @@ function foregroundWaitLease() {
566
581
  const lease = transformPassScope.getStore();
567
582
  return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
568
583
  }
569
- function withAutocommitTimeout(db, operation) {
584
+ function withAutocommitTimeout(db, operation, singleStatement = true) {
570
585
  assertTransformWrite2();
571
586
  const lease = foregroundWaitLease();
572
- if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
587
+ if (isInTransaction(db))
573
588
  return operation();
574
- const previous = pragmaNumber(db, "busy_timeout");
575
- db.exec(`PRAGMA busy_timeout=${lease ? Math.floor(Math.min(lease.remainingWaitMs, lease.guard?.remainingMs() ?? Infinity)) : SHORT_BUSY_TIMEOUT_MS}`);
589
+ const scoped = lease || backgroundWriterScope.getStore();
590
+ const previous = scoped ? pragmaNumber(db, "busy_timeout") : null;
576
591
  const started = performance.now();
592
+ let completed = false;
593
+ const execute = () => {
594
+ const result = operation();
595
+ completed = true;
596
+ return result;
597
+ };
577
598
  try {
578
- return operation();
599
+ if (!scoped)
600
+ return execute();
601
+ if (singleStatement) {
602
+ db.exec("PRAGMA busy_timeout=0");
603
+ try {
604
+ return execute();
605
+ } catch (error) {
606
+ if (!isTransientSqliteError2(error) || isInTransaction(db))
607
+ throw error;
608
+ }
609
+ assertTransformWrite2();
610
+ }
611
+ const timeout = Math.floor(Math.min(lease?.remainingWaitMs ?? SHORT_BUSY_TIMEOUT_MS, lease?.guard?.remainingMs() ?? Infinity));
612
+ db.exec(`PRAGMA busy_timeout=${timeout}`);
613
+ const waitStarted = performance.now();
614
+ try {
615
+ return execute();
616
+ } finally {
617
+ if (lease)
618
+ lease.remainingWaitMs = Math.max(0, lease.remainingWaitMs - (performance.now() - waitStarted));
619
+ }
579
620
  } catch (error) {
580
621
  if (lease && isTransientSqliteError2(error))
581
622
  throw new SqliteAcquisitionBusyError2(error, "autocommit");
582
623
  throw error;
583
624
  } finally {
584
- if (lease)
585
- lease.remainingWaitMs = Math.max(0, lease.remainingWaitMs - (performance.now() - started));
625
+ const elapsed = performance.now() - started;
586
626
  if (previous !== null)
587
627
  db.exec(`PRAGMA busy_timeout=${previous}`);
628
+ if (elapsed >= SLOW_WRITER_LOG_MS)
629
+ reportSqliteDiagnostic(`sqlite writer site=autocommit lane=${lease ? "foreground" : "background"} elapsed_ms=${Math.round(elapsed)} timing=statement_including_acquisition outcome=${completed ? "completed" : "failed"} caller=${writerCaller()}`);
588
630
  }
589
631
  }
590
632
  function acquireShort(db, acquire, site) {
@@ -630,24 +672,26 @@ function acquireShort(db, acquire, site) {
630
672
  }
631
673
  function endWriterTransaction(db, end, sql) {
632
674
  let ended = false;
633
- const endStarted = performance.now();
634
675
  try {
635
676
  const result = end();
636
677
  ended = true;
637
678
  return result;
638
679
  } finally {
639
680
  const open = openWriterTransactions.get(db);
640
- const endMs = performance.now() - endStarted;
641
681
  if (open && !isInTransaction(db)) {
642
682
  openWriterTransactions.delete(db);
643
683
  const holdMs = performance.now() - open.acquiredAt;
644
684
  if (open.acquireMs >= SLOW_WRITER_LOG_MS || holdMs >= SLOW_WRITER_LOG_MS) {
645
685
  const outcome = /^\s*ROLLBACK/i.test(sql) ? "rolled_back" : ended ? "committed" : "failed";
646
- reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} end_ms=${Math.round(endMs)} attempts=${open.attempts} outcome=${outcome}`);
686
+ reportSqliteDiagnostic(`sqlite writer site=${open.site} lane=${open.lane} acquire_ms=${Math.round(open.acquireMs)} hold_ms=${Math.round(holdMs)} attempts=${open.attempts} outcome=${outcome} timing=through_commit_upper_bound caller=${writerCaller()}`);
647
687
  }
648
688
  }
649
689
  }
650
690
  }
691
+ function writerCaller() {
692
+ return new Error().stack?.split(`
693
+ `).find((line) => line.includes(" at ") && !/[/\\]sqlite\.[tj]s[:)]/.test(line) && !/\b(?:writerCaller|endWriterTransaction|withAutocommitTimeout|value)\b/.test(line))?.trim().replace(/\s+/g, "_") ?? "unknown";
694
+ }
651
695
  async function beginSqliteWriterAsync2(db, site) {
652
696
  const started = performance.now();
653
697
  let attempts = 0;
@@ -838,4 +882,4 @@ async function yieldIndexChunk2() {
838
882
  await yieldIndexTurn();
839
883
  }
840
884
 
841
- export { registerSlowWriteReporter2, registerSqliteDiagnosticSink2, detectSqliteRuntime2, getTagIdentityWriteGeneration2, Database2, getSqliteDatabasePath2, getSqliteMemoryStats2, prepareCachedStatement2, withSqliteBackgroundWriter2, withSqliteTransformPass2, withoutSqliteTransformPass2, assertTransformWrite2, isTransientSqliteError2, SqliteAcquisitionBusyError2, beginSqliteWriterAsync2, withAsyncPrivilegedWriter2, withPrivilegedWriter2, indexCoordinationInput2, releaseIndexOwner2, withIndexChunk2, yieldIndexChunk2 };
885
+ export { inRootAsyncContext2, registerSlowWriteReporter2, registerSqliteDiagnosticSink2, detectSqliteRuntime2, getTagIdentityWriteGeneration2, Database2, getSqliteDatabasePath2, getSqliteMemoryStats2, prepareCachedStatement2, withSqliteBackgroundWriter2, withSqliteTransformPass2, withoutSqliteTransformPass2, assertTransformWrite2, isTransientSqliteError2, SqliteAcquisitionBusyError2, beginSqliteWriterAsync2, withAsyncPrivilegedWriter2, withPrivilegedWriter2, indexCoordinationInput2, releaseIndexOwner2, withIndexChunk2, yieldIndexChunk2 };
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  sessionLog2
3
- } from "./index-nsjyysj0.js";
3
+ } from "./index-mvvephtj.js";
4
4
  import {
5
5
  clearEmergencyRecovery
6
- } from "./index-vztbgcdk.js";
6
+ } from "./index-9g1c4bt9.js";
7
7
  import {
8
8
  requestPendingMaterialization,
9
9
  dropSlot,
10
10
  executeContextRecomp
11
- } from "./index-vh3e2mvr.js";
11
+ } from "./index-hxrvx6cy.js";
12
12
  import {
13
13
  renderUserFacingFailure,
14
14
  userFacingFailureCode
15
- } from "./index-s0gsmthp.js";
15
+ } from "./index-ydjgz36f.js";
16
16
 
17
17
  // src/hooks/magic-context/recomp-orchestrator.ts
18
18
  function resolveLiveModelKey(liveSessionState, sessionId) {
@@ -4,22 +4,22 @@ import {
4
4
  } from "./index-1zx87sdm.js";
5
5
  import {
6
6
  estimateTokens
7
- } from "./index-qx53vezw.js";
7
+ } from "./index-gjvjh960.js";
8
8
  import {
9
9
  getHarness2
10
10
  } from "./index-pavzsdc6.js";
11
11
  import {
12
12
  sessionLog2
13
- } from "./index-nsjyysj0.js";
13
+ } from "./index-mvvephtj.js";
14
14
  import {
15
15
  getTagIdentityWriteGeneration2,
16
16
  getSqliteDatabasePath2
17
- } from "./index-0nnd4bry.js";
17
+ } from "./index-wafzvyhg.js";
18
18
  import {
19
19
  tagIdentityRevisionKey,
20
20
  tagOrderConstraintIndex,
21
21
  stableStringify
22
- } from "./index-1bt88epp.js";
22
+ } from "./index-bd9cjab3.js";
23
23
  import {
24
24
  DEFAULT_PROTECTED_TOOLS,
25
25
  normalizeProtectedToolName,
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  sanitizeDiagnosticText,
3
3
  sessionLog2
4
- } from "./index-nsjyysj0.js";
4
+ } from "./index-mvvephtj.js";
5
5
  import {
6
6
  getHarness2
7
7
  } from "./index-pavzsdc6.js";
8
8
  import {
9
9
  isTransientSqliteError2
10
- } from "./index-0nnd4bry.js";
10
+ } from "./index-wafzvyhg.js";
11
11
  import {
12
12
  PROMOTABLE_CATEGORIES,
13
13
  CATEGORY_DEFAULT_TTL
14
14
  } from "./index-fr0wbhdn.js";
15
15
  import {
16
16
  managedAuthorityNoteRow
17
- } from "./index-xqyj5c85.js";
17
+ } from "./index-qgp5vnt4.js";
18
18
  import {
19
19
  embedTextForProject2
20
- } from "./index-9s58tq95.js";
20
+ } from "./index-rg1cezmj.js";
21
21
  import {
22
22
  saveEmbeddingIfHashMatches
23
23
  } from "./index-4dhv7mqz.js";
@@ -30,7 +30,7 @@ import {
30
30
  buildWorkspaceMemorySqlFilter2,
31
31
  getMemoryById2,
32
32
  updateMemorySeenCount2
33
- } from "./index-cm4hmxyk.js";
33
+ } from "./index-n78avt2p.js";
34
34
  import {
35
35
  computeNormalizedHash
36
36
  } from "./index-2bvekkfy.js";
@@ -49,8 +49,8 @@ var USER_FACING_FAILURES = {
49
49
  },
50
50
  history_boundary_unresolved: {
51
51
  code: "MC-H04",
52
- sentence: "This request was not sent: the message that marks where this session's history summary ends is missing from the OpenCode store, and without it the request is larger than the model's context window.",
53
- action: "Run /ctx-recomp to rebuild the history summary."
52
+ sentence: "This request was not sent: Magic Context could not safely place the history summary boundary in the loaded conversation, and the untrimmed request is larger than the model's context window.",
53
+ action: "Reopen this session in its current project directory, then run /ctx-recomp to rebuild the history summary. A model with a larger context window can also help."
54
54
  },
55
55
  history_over_window_unmanaged: {
56
56
  code: "MC-H06",
@@ -3,8 +3,24 @@ import {
3
3
  importPluginModule,
4
4
  writeForwardedLogLine2,
5
5
  log2
6
- } from "./index-nsjyysj0.js";
6
+ } from "./index-mvvephtj.js";
7
7
  import {
8
+ inRootAsyncContext2,
9
+ registerSlowWriteReporter2,
10
+ registerSqliteDiagnosticSink2,
11
+ detectSqliteRuntime2,
12
+ Database2,
13
+ withSqliteBackgroundWriter2,
14
+ withoutSqliteTransformPass2,
15
+ isTransientSqliteError2,
16
+ withPrivilegedWriter2
17
+ } from "./index-wafzvyhg.js";
18
+ import {
19
+ bootQuietRemainingMs,
20
+ scheduleAfterBootQuiet
21
+ } from "./index-0jz47061.js";
22
+ import {
23
+ getHarness2,
8
24
  harnessOwnsOpenCodeStore2
9
25
  } from "./index-pavzsdc6.js";
10
26
  import {
@@ -21,23 +37,13 @@ import {
21
37
  parseRpcPortFile,
22
38
  inspectProcessesAsync,
23
39
  inspectWindowsProcessesSync
24
- } from "./index-9m7bn21d.js";
25
- import {
26
- registerSlowWriteReporter2,
27
- registerSqliteDiagnosticSink2,
28
- detectSqliteRuntime2,
29
- Database2,
30
- withSqliteBackgroundWriter2,
31
- withoutSqliteTransformPass2,
32
- isTransientSqliteError2,
33
- withPrivilegedWriter2
34
- } from "./index-0nnd4bry.js";
40
+ } from "./index-q28hsbpg.js";
35
41
  import {
36
42
  configureContextDatabasePragmas2
37
43
  } from "./index-fb3zxn06.js";
38
44
  import {
39
45
  startMessageFtsRowidMapBackfill
40
- } from "./index-bg5qqene.js";
46
+ } from "./index-mp2kghkv.js";
41
47
  import {
42
48
  LKG_SLOT_CHUNKS_DDL,
43
49
  SESSION_REPLAY_DECISIONS_DDL,
@@ -47,24 +53,20 @@ import {
47
53
  hasPendingMigrations,
48
54
  getMainThreadMigrationBodyCount,
49
55
  runMigrations
50
- } from "./index-xqyj5c85.js";
56
+ } from "./index-qgp5vnt4.js";
51
57
  import {
52
58
  installTagIdentityRevisionTrigger,
53
59
  ensureColumn,
54
60
  installV95PerfSchema
55
- } from "./index-1bt88epp.js";
61
+ } from "./index-bd9cjab3.js";
56
62
  import {
57
63
  resolveOpenCodeDbPath,
58
64
  hasV1MessageTables
59
65
  } from "./index-58e3y90n.js";
60
- import {
61
- bootQuietRemainingMs,
62
- scheduleAfterBootQuiet
63
- } from "./index-g9exahnx.js";
64
66
  import {
65
67
  setDatabase,
66
68
  loadToolDefinitionMeasurements
67
- } from "./index-h2wc01qk.js";
69
+ } from "./index-8kk7yh6m.js";
68
70
  import {
69
71
  getErrorMessage
70
72
  } from "./index-y8v6yerm.js";
@@ -81,7 +83,7 @@ import {
81
83
  } from "./index-8ajstryz.js";
82
84
  import {
83
85
  logSlowWriteTransaction
84
- } from "./index-4mjhqadz.js";
86
+ } from "./index-150zz6fh.js";
85
87
 
86
88
  // src/features/magic-context/fail-closed-block.ts
87
89
  var FAIL_CLOSED_DOCTOR_COMMAND = "npx @cortexkit/magic-context@latest doctor";
@@ -381,15 +383,25 @@ var activeMigrations = 0;
381
383
  var activeSince = 0;
382
384
  var accumulatedMs = 0;
383
385
  var idleWaiters = [];
384
- function offThreadMigrationMs(now = performance.now()) {
385
- return accumulatedMs + (activeMigrations > 0 ? Math.max(0, now - activeSince) : 0);
386
+ var testClock;
387
+ function now() {
388
+ return testClock?.now() ?? performance.now();
389
+ }
390
+ function scheduleTimeout(callback, delayMs) {
391
+ if (testClock)
392
+ return testClock.setTimeout(callback, delayMs);
393
+ const timer = setTimeout(callback, delayMs);
394
+ return () => clearTimeout(timer);
395
+ }
396
+ function offThreadMigrationMs(at = now()) {
397
+ return accumulatedMs + (activeMigrations > 0 ? Math.max(0, at - activeSince) : 0);
386
398
  }
387
399
  function isOffThreadMigrationRunning() {
388
400
  return activeMigrations > 0;
389
401
  }
390
402
  function beginOffThreadMigration() {
391
403
  if (activeMigrations === 0)
392
- activeSince = performance.now();
404
+ activeSince = now();
393
405
  activeMigrations += 1;
394
406
  let ended = false;
395
407
  return () => {
@@ -399,7 +411,7 @@ function beginOffThreadMigration() {
399
411
  activeMigrations -= 1;
400
412
  if (activeMigrations > 0)
401
413
  return;
402
- accumulatedMs += Math.max(0, performance.now() - activeSince);
414
+ accumulatedMs += Math.max(0, now() - activeSince);
403
415
  const waiters = idleWaiters;
404
416
  idleWaiters = [];
405
417
  for (const wake of waiters)
@@ -412,10 +424,10 @@ function whenOffThreadMigrationIdle() {
412
424
  return new Promise((resolve) => idleWaiters.push(resolve));
413
425
  }
414
426
  function startBootDeadline(timeoutMs, onDeferred) {
415
- const startedAt = performance.now();
427
+ const startedAt = now();
416
428
  const migratedAtStart = offThreadMigrationMs(startedAt);
417
429
  const budgetMs = Math.max(0, timeoutMs);
418
- let timer;
430
+ let cancelTimer;
419
431
  let cancelled = false;
420
432
  let deferredReported = false;
421
433
  let resolveExpired;
@@ -423,12 +435,12 @@ function startBootDeadline(timeoutMs, onDeferred) {
423
435
  resolveExpired = resolve;
424
436
  });
425
437
  const remainingMs = () => {
426
- const now = performance.now();
427
- const countedMs = now - startedAt - (offThreadMigrationMs(now) - migratedAtStart);
438
+ const currentTime = now();
439
+ const countedMs = currentTime - startedAt - (offThreadMigrationMs(currentTime) - migratedAtStart);
428
440
  return budgetMs - countedMs;
429
441
  };
430
442
  const check = () => {
431
- timer = undefined;
443
+ cancelTimer = undefined;
432
444
  if (cancelled)
433
445
  return;
434
446
  if (isOffThreadMigrationRunning()) {
@@ -441,19 +453,18 @@ function startBootDeadline(timeoutMs, onDeferred) {
441
453
  }
442
454
  const left = remainingMs();
443
455
  if (left > 0) {
444
- timer = setTimeout(check, left);
456
+ cancelTimer = scheduleTimeout(check, left);
445
457
  return;
446
458
  }
447
459
  resolveExpired();
448
460
  };
449
- timer = setTimeout(check, budgetMs);
461
+ cancelTimer = scheduleTimeout(check, budgetMs);
450
462
  return {
451
463
  expired,
452
464
  cancel: () => {
453
465
  cancelled = true;
454
- if (timer)
455
- clearTimeout(timer);
456
- timer = undefined;
466
+ cancelTimer?.();
467
+ cancelTimer = undefined;
457
468
  }
458
469
  };
459
470
  }
@@ -470,7 +481,7 @@ function runMigrationsOffThread(data) {
470
481
  return new Promise((resolve, reject) => {
471
482
  let worker;
472
483
  try {
473
- worker = new Worker(workerEntryOverride ?? defaultWorkerEntry(), { workerData: data });
484
+ worker = inRootAsyncContext2(() => new Worker(workerEntryOverride ?? defaultWorkerEntry(), { workerData: data }));
474
485
  } catch (error) {
475
486
  reject(workerStartError(error instanceof Error ? error.message : String(error)));
476
487
  return;
@@ -807,7 +818,7 @@ function backfillToolOwnersInChunks(db, result) {
807
818
 
808
819
  // src/features/magic-context/storage-db.ts
809
820
  registerSlowWriteReporter2(logSlowWriteTransaction);
810
- registerSqliteDiagnosticSink2((message) => log2(message));
821
+ registerSqliteDiagnosticSink2((message) => log2(message), getHarness2);
811
822
  var databases = new Map;
812
823
  var pendingAsyncOpens = new Map;
813
824
  var persistenceByDatabase = new WeakMap;
@@ -1259,8 +1270,8 @@ function finishDatabaseOpen(db, dbPath, explicitDbPath, latestSupportedVersion)
1259
1270
  startMessageFtsRowidMapBackfill(db).then(async () => {
1260
1271
  if (!readsOpenCodeStore)
1261
1272
  return;
1262
- const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-t3vjd0h0.js"));
1263
- const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-8kj57qe3.js"));
1273
+ const { readRawSessionMessagePage, readRawSessionMessages } = await importPluginModule(() => import("./read-session-chunk-t9r7r0sg.js"));
1274
+ const { startMessageTimeBackfill } = await importPluginModule(() => import("./message-time-backfill-nb5hhnrt.js"));
1264
1275
  await startMessageTimeBackfill(db, Object.assign(readRawSessionMessages, {
1265
1276
  readPage: readRawSessionMessagePage
1266
1277
  }));