@cortexkit/opencode-magic-context 0.47.0 → 0.49.0

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 (425) hide show
  1. package/dist/agents/magic-context-prompt.d.ts +1 -1
  2. package/dist/agents/magic-context-prompt.d.ts.map +1 -1
  3. package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
  4. package/dist/auto-search-worker.js +27 -30
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/mural-model-deprecation.d.ts +15 -0
  7. package/dist/config/mural-model-deprecation.d.ts.map +1 -0
  8. package/dist/config/project-security.d.ts +0 -3
  9. package/dist/config/project-security.d.ts.map +1 -1
  10. package/dist/config/schema/magic-context.d.ts +10 -6
  11. package/dist/config/schema/magic-context.d.ts.map +1 -1
  12. package/dist/{conflict-warning-hook-z44ynfz7.js → conflict-warning-hook-kzx4dmk1.js} +12 -10
  13. package/dist/{context-wq4ffwyb.js → context-nj5f293n.js} +2765 -1925
  14. package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-qz5rrr08.js} +4 -3
  15. package/dist/embedding-activity-g1dhes6g.js +10 -0
  16. package/dist/embedding-backfill-aetxv1vt.js +21 -0
  17. package/dist/embedding-cache-mgyr73ef.js +16 -0
  18. package/dist/embedding-worker.js +11 -9
  19. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
  21. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
  23. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
  25. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
  27. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  29. package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
  30. package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
  31. package/dist/features/magic-context/message-index-async.d.ts +16 -3
  32. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  33. package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
  34. package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
  35. package/dist/features/magic-context/message-index.d.ts +7 -1
  36. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  37. package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
  38. package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
  39. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  40. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  41. package/dist/features/magic-context/search-rerank.d.ts +35 -0
  42. package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
  43. package/dist/features/magic-context/search.d.ts +40 -0
  44. package/dist/features/magic-context/search.d.ts.map +1 -1
  45. package/dist/features/magic-context/session-activity.d.ts.map +1 -1
  46. package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
  47. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  48. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  49. package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
  50. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  51. package/dist/features/magic-context/storage-meta-session.d.ts +7 -1
  52. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  53. package/dist/features/magic-context/storage-meta.d.ts +1 -1
  54. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  55. package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
  56. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  57. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +50 -0
  58. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  59. package/dist/features/magic-context/storage-tags.d.ts +153 -4
  60. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  61. package/dist/features/magic-context/storage.d.ts +1 -1
  62. package/dist/features/magic-context/storage.d.ts.map +1 -1
  63. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  64. package/dist/features/magic-context/tagger.d.ts +2 -0
  65. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  66. package/dist/features/magic-context/transform-decision-log.d.ts +4 -1
  67. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  68. package/dist/harness-e4avh192.js +10 -0
  69. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
  70. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
  73. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
  74. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  75. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +34 -3
  77. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/command-handler.d.ts +3 -0
  79. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  80. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  82. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
  84. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
  85. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
  87. package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/hook.d.ts +3 -2
  89. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  90. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
  92. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
  94. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
  96. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
  98. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
  100. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
  101. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
  102. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
  103. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
  104. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
  105. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
  106. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
  107. package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
  108. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  110. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  111. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
  112. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
  113. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
  114. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
  115. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
  116. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
  117. package/dist/hooks/magic-context/read-session-chunk.d.ts +19 -1
  118. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  119. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  120. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  121. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  122. package/dist/hooks/magic-context/read-session-raw.d.ts +118 -1
  123. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  124. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  125. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
  126. package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
  127. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  128. package/dist/hooks/magic-context/sentinel.d.ts +41 -1
  129. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  130. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
  131. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
  132. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
  133. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
  134. package/dist/hooks/magic-context/strip-content.d.ts +14 -2
  135. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  136. package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
  137. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  138. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  139. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  140. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
  141. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  142. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  143. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  144. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  145. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
  146. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  147. package/dist/hooks/magic-context/transform.d.ts +9 -2
  148. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  149. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  150. package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
  151. package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
  152. package/dist/{index-5gq3b2ya.js → index-1bt88epp.js} +227 -205
  153. package/dist/{index-cwf6s3ay.js → index-1g30axtz.js} +3279 -2907
  154. package/dist/{index-5a2r0p9f.js → index-1r0k9js3.js} +20 -13
  155. package/dist/index-2bvekkfy.js +11 -0
  156. package/dist/{index-6d9e1m08.js → index-2jcbj7r1.js} +13301 -13225
  157. package/dist/index-2jgwttpt.js +3269 -0
  158. package/dist/index-4dhv7mqz.js +131 -0
  159. package/dist/{index-sj29b3z2.js → index-4mjhqadz.js} +3 -3
  160. package/dist/{index-0c82743p.js → index-57mrqed8.js} +17 -15
  161. package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
  162. package/dist/index-7jzrrxap.js +931 -0
  163. package/dist/index-8ajstryz.js +18 -0
  164. package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
  165. package/dist/{index-6wkcswft.js → index-9qjqq45k.js} +29 -19
  166. package/dist/{index-adwfkpex.js → index-9rt53q79.js} +23 -23
  167. package/dist/index-b7mv1jx3.js +1060 -0
  168. package/dist/index-d9vfe7xq.js +16 -0
  169. package/dist/{index-gg8j07zz.js → index-ezmszwbd.js} +8 -6
  170. package/dist/index-fb3zxn06.js +13 -0
  171. package/dist/index-fr0wbhdn.js +43 -0
  172. package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
  173. package/dist/index-gzcmtmar.js +171 -0
  174. package/dist/{index-w2t4ah5j.js → index-h2py7207.js} +6762 -7400
  175. package/dist/index-h2wc01qk.js +120 -0
  176. package/dist/index-h5zfkjyk.js +1277 -0
  177. package/dist/{index-92bp57hg.js → index-ha87j7a8.js} +1343 -149
  178. package/dist/index-hj2q50k0.js +856 -0
  179. package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
  180. package/dist/index-kmpvemph.js +1314 -0
  181. package/dist/index-kp5qe690.js +3030 -0
  182. package/dist/{index-m5fe6jch.js → index-kq57tdf0.js} +152 -2453
  183. package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
  184. package/dist/{v2/server-njt3np1k.js → index-nm6a8xpd.js} +220 -961
  185. package/dist/{index-hybnrwq0.js → index-nsjyysj0.js} +137 -130
  186. package/dist/index-nydv6g8r.js +3569 -0
  187. package/dist/index-pavzsdc6.js +17 -0
  188. package/dist/index-peshmj6h.js +152 -0
  189. package/dist/index-pxwp2hjk.js +571 -0
  190. package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
  191. package/dist/{v2/server-51dv1pr5.js → index-qx53vezw.js} +301 -27
  192. package/dist/{index-rrrsepyw.js → index-s4j7t92z.js} +90 -85
  193. package/dist/{index-9pk9exrb.js → index-stbr4ce6.js} +18 -18
  194. package/dist/{index-fzbvakh0.js → index-tqf7yg27.js} +3 -3
  195. package/dist/index-vkbqdnkj.js +2307 -0
  196. package/dist/{index-8da2zjhz.js → index-z1tjp257.js} +9 -7
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +608 -349
  199. package/dist/logger-ewak5q1s.js +20 -0
  200. package/dist/message-index-bounded-h0mrd4pr.js +124 -0
  201. package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-8x06r9kx.js} +8 -6
  202. package/dist/migration-worker.js +25 -18
  203. package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  204. package/dist/plugin/dream-timer.d.ts +1 -1
  205. package/dist/plugin/dream-timer.d.ts.map +1 -1
  206. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -0
  207. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  208. package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
  209. package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
  210. package/dist/plugin/host-stall-profiler.d.ts +2 -95
  211. package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
  212. package/dist/plugin/messages-transform.d.ts +0 -13
  213. package/dist/plugin/messages-transform.d.ts.map +1 -1
  214. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  215. package/dist/plugin/tool-registry.d.ts.map +1 -1
  216. package/dist/project-embedding-registry-rtt0djyb.js +88 -0
  217. package/dist/raw-ordinal-warmup-worker.js +60 -0
  218. package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-ty89v75e.js} +17 -9
  219. package/dist/read-session-raw-8sjbc9h0.js +60 -0
  220. package/dist/recomp-orchestrator-4f1yyd1q.js +57 -0
  221. package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-q0cyrx3x.js} +4 -2
  222. package/dist/search-pz4f4wge.js +45 -0
  223. package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-38cd5dqt.js} +10 -7
  224. package/dist/shared/auto-search-lifecycle.d.ts +14 -0
  225. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
  226. package/dist/shared/conflict-detector.d.ts.map +1 -1
  227. package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
  228. package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
  229. package/dist/shared/host-stall-profiler-common.d.ts +58 -0
  230. package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
  231. package/dist/shared/host-stall-profiler-node.d.ts +36 -0
  232. package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
  233. package/dist/shared/host-stall-profiler-report.d.ts +68 -0
  234. package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
  235. package/dist/shared/host-stall-profiler.d.ts +5 -0
  236. package/dist/shared/host-stall-profiler.d.ts.map +1 -0
  237. package/dist/shared/logger.d.ts.map +1 -1
  238. package/dist/shared/model-resolution.d.ts +2 -3
  239. package/dist/shared/model-resolution.d.ts.map +1 -1
  240. package/dist/shared/models-dev-temperature.d.ts +18 -0
  241. package/dist/shared/models-dev-temperature.d.ts.map +1 -0
  242. package/dist/shared/project-directory-key.d.ts +16 -0
  243. package/dist/shared/project-directory-key.d.ts.map +1 -1
  244. package/dist/shared/sqlite.d.ts +30 -0
  245. package/dist/shared/sqlite.d.ts.map +1 -1
  246. package/dist/shared/stable-json.d.ts.map +1 -1
  247. package/dist/shared/subagent-temperature.d.ts +46 -0
  248. package/dist/shared/subagent-temperature.d.ts.map +1 -0
  249. package/dist/shared/user-facing-codes.d.ts +0 -5
  250. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  251. package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  252. package/dist/sqlite-mhjkerzq.js +46 -0
  253. package/dist/storage-memory-07fx57k6.js +71 -0
  254. package/dist/storage-tags-k0pda32s.js +133 -0
  255. package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
  256. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  257. package/dist/tools/ctx-note/constants.d.ts +4 -0
  258. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  259. package/dist/tools/ctx-note/tools.d.ts +1 -0
  260. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  261. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  262. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  263. package/dist/tools/ctx-search/types.d.ts +1 -0
  264. package/dist/tools/ctx-search/types.d.ts.map +1 -1
  265. package/dist/tools/parameter-descriptions.d.ts +2 -2
  266. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  267. package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-tck4g20s.js} +35 -20
  268. package/dist/transformers-node-wasm.js +18415 -18415
  269. package/dist/v2/auto-search-worker.js +27 -30
  270. package/dist/v2/{context-14v1hr8b.js → context-crbt6p1y.js} +4708 -4218
  271. package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-fgej9j46.js} +4 -3
  272. package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
  273. package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
  274. package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
  275. package/dist/v2/embedding-worker.js +12 -9
  276. package/dist/v2/fold/host-media.d.ts +4 -0
  277. package/dist/v2/fold/host-media.d.ts.map +1 -1
  278. package/dist/v2/fold/memory-cache.d.ts +70 -0
  279. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  280. package/dist/v2/fold/native-codec.d.ts +10 -0
  281. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  282. package/dist/v2/fold/native-replay.d.ts +58 -0
  283. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  284. package/dist/v2/fold/policy.d.ts +24 -0
  285. package/dist/v2/fold/policy.d.ts.map +1 -0
  286. package/dist/v2/harness-e4avh192.js +10 -0
  287. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  288. package/dist/v2/hidden-completion.d.ts +7 -0
  289. package/dist/v2/hidden-completion.d.ts.map +1 -1
  290. package/dist/v2/hooks/context.d.ts +2 -2
  291. package/dist/v2/hooks/context.d.ts.map +1 -1
  292. package/dist/v2/hooks/dream-manual.d.ts +1 -1
  293. package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
  294. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  295. package/dist/v2/hooks/dream-trigger.d.ts +5 -3
  296. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  297. package/dist/v2/hooks/generate.d.ts +9 -2
  298. package/dist/v2/hooks/generate.d.ts.map +1 -1
  299. package/dist/v2/hooks/payload.d.ts.map +1 -1
  300. package/dist/v2/hooks/tools.d.ts.map +1 -1
  301. package/dist/v2/hooks/types.d.ts +6 -0
  302. package/dist/v2/hooks/types.d.ts.map +1 -1
  303. package/dist/v2/logger-pj02s7sr.js +19 -0
  304. package/dist/v2/message-index-bounded-xwqdywxg.js +123 -0
  305. package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-cje68egj.js} +7 -7
  306. package/dist/v2/migration-worker.js +24 -17
  307. package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  308. package/dist/v2/project-embedding-registry-d6m7tyxr.js +86 -0
  309. package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
  310. package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-8p5mdryx.js} +16 -8
  311. package/dist/v2/read-session-raw-j8dvp7f4.js +59 -0
  312. package/dist/v2/recomp-orchestrator-ckfgt6wq.js +57 -0
  313. package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-y3p1hce9.js} +3 -3
  314. package/dist/v2/search-ym8rehhz.js +45 -0
  315. package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-5m0yapqx.js} +9 -8
  316. package/dist/v2/{server-rz514f14.js → server-19zjmn02.js} +2044 -2060
  317. package/dist/v2/server-1tk82krw.js +796 -0
  318. package/dist/v2/server-2bvekkfy.js +11 -0
  319. package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
  320. package/dist/v2/server-2s6ayq3t.js +1048 -0
  321. package/dist/v2/{server-fcdehk1s.js → server-2s9qz6n7.js} +4 -4
  322. package/dist/v2/server-3j4d00kf.js +171 -0
  323. package/dist/v2/{server-14vq4kpm.js → server-3t0q2cqx.js} +3 -3
  324. package/dist/v2/server-4dhv7mqz.js +131 -0
  325. package/dist/v2/server-4ez8mntn.js +3213 -0
  326. package/dist/v2/{server-6r257mf5.js → server-676xw7at.js} +3 -3
  327. package/dist/v2/{server-vs5gpnd4.js → server-6byqfbqf.js} +165 -145
  328. package/dist/v2/server-7ekna9zs.js +120 -0
  329. package/dist/v2/server-7h861yms.js +1272 -0
  330. package/dist/v2/server-7jzrrxap.js +931 -0
  331. package/dist/v2/server-8ajstryz.js +18 -0
  332. package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
  333. package/dist/v2/{server-cpepxy2q.js → server-8k2agx29.js} +14 -12
  334. package/dist/v2/server-c5rrgrcd.js +3545 -0
  335. package/dist/v2/server-d9vfe7xq.js +16 -0
  336. package/dist/v2/server-fb3zxn06.js +13 -0
  337. package/dist/v2/server-fr0wbhdn.js +43 -0
  338. package/dist/v2/{server-y10vbq6y.js → server-hb6xhh9q.js} +11 -1053
  339. package/dist/v2/server-jvxzm1jy.js +3023 -0
  340. package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
  341. package/dist/{index-5eqk6z3s.js → v2/server-kzns2hbz.js} +301 -27
  342. package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
  343. package/dist/v2/server-pavzsdc6.js +17 -0
  344. package/dist/v2/{server-vd4e7174.js → server-pj4pjv02.js} +21 -17
  345. package/dist/v2/{server-e0c1b7a7.js → server-q4ph9bwn.js} +1340 -148
  346. package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
  347. package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
  348. package/dist/v2/{server-d0sraw7m.js → server-sa8jvrfc.js} +291 -286
  349. package/dist/v2/server-ss95ky04.js +1048 -0
  350. package/dist/v2/{server-1qbnzc80.js → server-t4k4qexw.js} +142 -150
  351. package/dist/{index-x3kwrmqk.js → v2/server-v4mewb78.js} +35 -792
  352. package/dist/v2/server-w32kmdez.js +154 -0
  353. package/dist/v2/{server-nf82q6pt.js → server-x4hscabv.js} +5547 -5449
  354. package/dist/v2/server-xwz4dqh9.js +569 -0
  355. package/dist/v2/{server-efhwzx05.js → server-ycw9qqcy.js} +23 -23
  356. package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
  357. package/dist/v2/server-zp53y8js.js +1311 -0
  358. package/dist/v2/server.js +16 -14
  359. package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  360. package/dist/v2/sqlite-mhjkerzq.js +46 -0
  361. package/dist/v2/storage-memory-07fx57k6.js +71 -0
  362. package/dist/v2/storage-tags-8vw924zn.js +132 -0
  363. package/dist/v2/store-reader.d.ts +24 -2
  364. package/dist/v2/store-reader.d.ts.map +1 -1
  365. package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
  366. package/dist/v2/transformers-node-wasm.js +18415 -18415
  367. package/dist/v2/tui/index.d.ts.map +1 -1
  368. package/dist/v2/tui/types.d.ts +1 -10
  369. package/dist/v2/tui/types.d.ts.map +1 -1
  370. package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-a7efxaax.js} +51 -30
  371. package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
  372. package/package.json +4 -3
  373. package/src/agents/magic-context-prompt.ts +27 -2
  374. package/src/agents/smart-notes-enabled.test.ts +294 -0
  375. package/src/agents/smart-notes-on.golden.json +70 -0
  376. package/src/config/index.test.ts +67 -1
  377. package/src/config/index.ts +2 -0
  378. package/src/config/latch-permanence-guard.test.ts +4 -0
  379. package/src/config/mural-model-deprecation.ts +24 -0
  380. package/src/config/project-security.hostile-matrix.test.ts +4 -44
  381. package/src/config/project-security.test.ts +9 -14
  382. package/src/config/project-security.ts +13 -55
  383. package/src/config/schema/magic-context.test.ts +2 -2
  384. package/src/config/schema/magic-context.ts +16 -10
  385. package/src/features/magic-context/dreamer/task-registry.ts +6 -0
  386. package/src/shared/auto-search-lifecycle.ts +43 -0
  387. package/src/shared/conflict-detector.test.ts +56 -0
  388. package/src/shared/conflict-detector.ts +16 -5
  389. package/src/shared/host-stall-profiler-bun.ts +358 -0
  390. package/src/shared/host-stall-profiler-common.ts +159 -0
  391. package/src/shared/host-stall-profiler-node.test.ts +234 -0
  392. package/src/shared/host-stall-profiler-node.ts +274 -0
  393. package/src/shared/host-stall-profiler-report.ts +248 -0
  394. package/src/shared/host-stall-profiler.ts +57 -0
  395. package/src/shared/logger.test.ts +38 -0
  396. package/src/shared/logger.ts +10 -2
  397. package/src/shared/model-resolution.test.ts +54 -17
  398. package/src/shared/model-resolution.ts +6 -17
  399. package/src/shared/models-dev-temperature.ts +107 -0
  400. package/src/shared/project-directory-key.test.ts +59 -0
  401. package/src/shared/project-directory-key.ts +20 -0
  402. package/src/shared/sqlite.test.ts +52 -0
  403. package/src/shared/sqlite.ts +339 -23
  404. package/src/shared/stable-json-linear.test.ts +109 -0
  405. package/src/shared/stable-json.ts +37 -7
  406. package/src/shared/subagent-temperature.test.ts +270 -0
  407. package/src/shared/subagent-temperature.ts +110 -0
  408. package/src/shared/user-facing-codes.ts +2 -6
  409. package/src/shared/write-transaction-attribution.test.ts +2 -2
  410. package/src/v2/tui/host-contract.test.ts +41 -67
  411. package/src/v2/tui/index.ts +6 -214
  412. package/src/v2/tui/types.ts +5 -17
  413. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
  414. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
  415. package/dist/features/magic-context/checkout-claim.d.ts +0 -155
  416. package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
  417. package/dist/index-bb36vgr3.js +0 -6608
  418. package/dist/index-fnn5pjtt.js +0 -6554
  419. package/dist/recomp-orchestrator-rervg6q4.js +0 -42
  420. package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
  421. package/dist/v2/server-3trjk1hx.js +0 -6360
  422. package/dist/v2/server-nm9n3aqq.js +0 -6461
  423. package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
  424. /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
  425. /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
@@ -2,11 +2,11 @@
2
2
  import { AsyncLocalStorage } from "node:async_hooks";
3
3
  import { statSync } from "node:fs";
4
4
  var reportSlowPrivilegedWrite;
5
- function registerSlowWriteReporter(reporter) {
5
+ function registerSlowWriteReporter2(reporter) {
6
6
  reportSlowPrivilegedWrite = reporter;
7
7
  }
8
8
  var sqliteDiagnosticSink;
9
- function registerSqliteDiagnosticSink(sink) {
9
+ function registerSqliteDiagnosticSink2(sink) {
10
10
  sqliteDiagnosticSink = sink;
11
11
  }
12
12
  function reportSqliteDiagnostic(message) {
@@ -14,7 +14,7 @@ function reportSqliteDiagnostic(message) {
14
14
  sqliteDiagnosticSink?.(`[magic-context] ${message}`);
15
15
  } catch {}
16
16
  }
17
- function detectSqliteRuntime() {
17
+ function detectSqliteRuntime2() {
18
18
  const hasBunVersion = typeof process !== "undefined" && typeof process.versions?.bun === "string";
19
19
  const hasBunGlobal = typeof globalThis !== "undefined" && typeof globalThis.Bun !== "undefined";
20
20
  return hasBunVersion || hasBunGlobal ? "Bun" : "Node.js";
@@ -47,10 +47,31 @@ class SqliteRuntimeUnavailableError extends Error {
47
47
  this.specifier = specifier;
48
48
  }
49
49
  }
50
- async function loadSqliteModule(runtime = detectSqliteRuntime(), importer = importSqliteModule) {
51
- const specifier = runtime === "Bun" ? bunSpec : nodeSpec;
50
+ function isNodeSqliteExperimentalWarning(args) {
51
+ const [warning, options] = args;
52
+ const message = warning instanceof Error ? warning.message : warning;
53
+ const type = typeof options === "string" ? options : options && typeof options === "object" ? options.type : undefined;
54
+ return type === "ExperimentalWarning" && typeof message === "string" && message.startsWith("SQLite is an experimental feature");
55
+ }
56
+ async function importSqliteModuleForRuntime(runtime, specifier, importer) {
57
+ if (runtime !== "Node.js")
58
+ return importer(specifier);
59
+ const originalEmitWarning = process.emitWarning;
60
+ process.emitWarning = function(...args) {
61
+ if (isNodeSqliteExperimentalWarning(args))
62
+ return;
63
+ Reflect.apply(originalEmitWarning, this, args);
64
+ };
52
65
  try {
53
66
  return await importer(specifier);
67
+ } finally {
68
+ process.emitWarning = originalEmitWarning;
69
+ }
70
+ }
71
+ async function loadSqliteModule(runtime = detectSqliteRuntime2(), importer = importSqliteModule) {
72
+ const specifier = runtime === "Bun" ? bunSpec : nodeSpec;
73
+ try {
74
+ return await importSqliteModuleForRuntime(runtime, specifier, importer);
54
75
  } catch (error) {
55
76
  if (isModuleNotFoundError(error, specifier)) {
56
77
  throw new SqliteRuntimeUnavailableError(runtime, specifier, error);
@@ -58,12 +79,87 @@ async function loadSqliteModule(runtime = detectSqliteRuntime(), importer = impo
58
79
  throw error;
59
80
  }
60
81
  }
61
- var detectedRuntime = detectSqliteRuntime();
82
+ var detectedRuntime = detectSqliteRuntime2();
62
83
  var isBun = detectedRuntime === "Bun";
63
84
  var sqliteModule = await loadSqliteModule(detectedRuntime);
64
85
  var DatabaseImpl = isBun ? sqliteModule.Database : buildNodeSqliteDatabaseClass(sqliteModule.DatabaseSync);
65
86
  var trackedSqliteConnections = new Map;
66
87
  var nextSqliteConnectionSequence = 1;
88
+ var TAG_COLUMNS_OUTSIDE_IDENTITY = new Set([
89
+ "status",
90
+ "drop_mode",
91
+ "byte_size",
92
+ "input_byte_size",
93
+ "reasoning_byte_size",
94
+ "token_count",
95
+ "input_token_count",
96
+ "caveman_depth",
97
+ "entry_fingerprint",
98
+ "tool_name",
99
+ "harness"
100
+ ]);
101
+ var tagIdentityWriteGeneration = 0;
102
+ function mayChangeTagIdentity(sql) {
103
+ if (!/\btags\b/i.test(sql) || /^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql))
104
+ return false;
105
+ if (/^\s*WITH\b/i.test(sql) && !/\b(?:INSERT|UPDATE|DELETE|REPLACE)\b/i.test(sql))
106
+ return false;
107
+ if (/;\s*\S/.test(sql) || /\bREPLACE\b/i.test(sql) || /\bON\s+CONFLICT\b/i.test(sql))
108
+ return true;
109
+ const insert = /^\s*INSERT\s+INTO\s+(?:main\.)?["`]?tags["`]?\s*\(([^)]*)\)/i.exec(sql);
110
+ if (insert) {
111
+ const columns = (insert[1] ?? "").split(",").map((column) => column.trim().replace(/["`[\]]/g, "").toLowerCase());
112
+ return columns.includes("id") || columns.includes("rowid");
113
+ }
114
+ const update = /^\s*UPDATE\s+(?:main\.)?["`]?tags["`]?\s+SET\s+([\s\S]*?)\bWHERE\b/i.exec(sql);
115
+ if (update && !/\bSELECT\b/i.test(sql)) {
116
+ const assignments = topLevelCommaSegments(update[1] ?? "");
117
+ if (!assignments)
118
+ return true;
119
+ return !assignments.every((assignment) => {
120
+ const column = /^\s*["`]?(\w+)["`]?\s*=(?!=)/.exec(assignment)?.[1];
121
+ return column !== undefined && TAG_COLUMNS_OUTSIDE_IDENTITY.has(column.toLowerCase());
122
+ });
123
+ }
124
+ return true;
125
+ }
126
+ function topLevelCommaSegments(text) {
127
+ const segments = [];
128
+ let depth = 0;
129
+ let quote = null;
130
+ let start = 0;
131
+ for (let index = 0;index < text.length; index += 1) {
132
+ const char = text[index];
133
+ if (quote) {
134
+ if (char === quote) {
135
+ if (text[index + 1] === quote)
136
+ index += 1;
137
+ else
138
+ quote = null;
139
+ }
140
+ continue;
141
+ }
142
+ if (char === "'" || char === '"' || char === "`")
143
+ quote = char;
144
+ else if (char === "(")
145
+ depth += 1;
146
+ else if (char === ")") {
147
+ depth -= 1;
148
+ if (depth < 0)
149
+ return null;
150
+ } else if (char === "," && depth === 0) {
151
+ segments.push(text.slice(start, index));
152
+ start = index + 1;
153
+ }
154
+ }
155
+ if (quote || depth !== 0)
156
+ return null;
157
+ segments.push(text.slice(start));
158
+ return segments;
159
+ }
160
+ function getTagIdentityWriteGeneration2() {
161
+ return tagIdentityWriteGeneration;
162
+ }
67
163
  function installTransactionRouting(db, readonly) {
68
164
  const nativeExec = db.exec.bind(db);
69
165
  Object.defineProperty(db, "exec", {
@@ -71,7 +167,7 @@ function installTransactionRouting(db, readonly) {
71
167
  writable: true,
72
168
  value: (sql) => {
73
169
  if (/^\s*(?:COMMIT|END)\b/i.test(sql))
74
- assertTransformWrite();
170
+ assertTransformWrite2();
75
171
  if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
76
172
  openWriterTransactions.delete(db);
77
173
  if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
@@ -82,8 +178,14 @@ function installTransactionRouting(db, readonly) {
82
178
  }
83
179
  if (WRITER_TRANSACTION_END.test(sql) && openWriterTransactions.has(db))
84
180
  return endWriterTransaction(db, () => nativeExec(sql), sql);
85
- if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql))
86
- return withAutocommitTimeout(db, () => nativeExec(sql));
181
+ if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql)) {
182
+ try {
183
+ return withAutocommitTimeout(db, () => nativeExec(sql));
184
+ } finally {
185
+ if (mayChangeTagIdentity(sql))
186
+ tagIdentityWriteGeneration += 1;
187
+ }
188
+ }
87
189
  return nativeExec(sql);
88
190
  }
89
191
  });
@@ -94,13 +196,23 @@ function installTransactionRouting(db, readonly) {
94
196
  value: (sql) => {
95
197
  const statement = nativePrepare(sql);
96
198
  if (!readonly && !/^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql)) {
199
+ const changesTagIdentity = mayChangeTagIdentity(sql);
97
200
  for (const method of ["run", "get", "all"]) {
98
201
  const execute = statement[method].bind(statement);
99
202
  Object.defineProperty(statement, method, {
100
203
  configurable: true,
101
- value: (...args) => withAutocommitTimeout(db, () => execute(...args))
204
+ value: (...args) => {
205
+ try {
206
+ return withAutocommitTimeout(db, () => execute(...args));
207
+ } finally {
208
+ if (changesTagIdentity)
209
+ tagIdentityWriteGeneration += 1;
210
+ }
211
+ }
102
212
  });
103
213
  }
214
+ if (changesTagIdentity)
215
+ wrapRemainingTagWriteForms(statement);
104
216
  }
105
217
  return statement;
106
218
  }
@@ -148,6 +260,35 @@ function installTransactionRouting(db, readonly) {
148
260
  }
149
261
  });
150
262
  }
263
+ function wrapRemainingTagWriteForms(statement) {
264
+ if (typeof statement.iterate === "function") {
265
+ const iterate = statement.iterate.bind(statement);
266
+ Object.defineProperty(statement, "iterate", {
267
+ configurable: true,
268
+ value: function* (...args) {
269
+ tagIdentityWriteGeneration += 1;
270
+ try {
271
+ yield* iterate(...args);
272
+ } finally {
273
+ tagIdentityWriteGeneration += 1;
274
+ }
275
+ }
276
+ });
277
+ }
278
+ if (typeof statement.values === "function") {
279
+ const values = statement.values.bind(statement);
280
+ Object.defineProperty(statement, "values", {
281
+ configurable: true,
282
+ value: (...args) => {
283
+ try {
284
+ return values(...args);
285
+ } finally {
286
+ tagIdentityWriteGeneration += 1;
287
+ }
288
+ }
289
+ });
290
+ }
291
+ }
151
292
  function trackSqliteConnection(db, filename, options) {
152
293
  const originalClose = db.close.bind(db);
153
294
  const sequence = nextSqliteConnectionSequence++;
@@ -207,13 +348,17 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
207
348
  }
208
349
  return NodeSqliteDatabase;
209
350
  }
210
- var Database = TrackedDatabase;
211
- function getSqliteDatabasePath(db) {
351
+ var Database2 = TrackedDatabase;
352
+ function getSqliteDatabasePath2(db) {
212
353
  for (const connection of trackedSqliteConnections.values()) {
213
354
  if (connection.reference.deref() === db) {
214
355
  return connection.filename === ":memory:" || connection.filename === "<buffer>" ? null : connection.filename;
215
356
  }
216
357
  }
358
+ const native = db;
359
+ const path = native.filename ?? native.name;
360
+ if (typeof path === "string" && path !== ":memory:" && path !== "")
361
+ return path;
217
362
  return null;
218
363
  }
219
364
  function pragmaValue(db, name) {
@@ -255,7 +400,7 @@ function fts5TableCount(db) {
255
400
  return null;
256
401
  }
257
402
  }
258
- function getSqliteMemoryStats() {
403
+ function getSqliteMemoryStats2() {
259
404
  const connections = [];
260
405
  for (const [sequence, tracked] of trackedSqliteConnections) {
261
406
  const db = tracked.reference.deref();
@@ -297,6 +442,15 @@ function getSqliteMemoryStats() {
297
442
  }
298
443
  var statementOwners = new WeakMap;
299
444
  var FIRST_PRUNE_AT = 256;
445
+ function closeReleasingStatements(close, args) {
446
+ if (args[0] === true)
447
+ return close(true);
448
+ try {
449
+ return close(true);
450
+ } catch {
451
+ return close(...args);
452
+ }
453
+ }
300
454
  function ownPreparedStatement(db, statement) {
301
455
  const finalizable = statement;
302
456
  if (typeof finalizable.finalize !== "function")
@@ -320,7 +474,7 @@ function ownPreparedStatement(db, statement) {
320
474
  }
321
475
  }
322
476
  references.clear();
323
- const result = close(...args);
477
+ const result = closeReleasingStatements(close, args);
324
478
  if (failure)
325
479
  throw failure;
326
480
  return result;
@@ -340,52 +494,59 @@ function ownPreparedStatement(db, statement) {
340
494
  }
341
495
  return statement;
342
496
  }
343
- function prepareCachedStatement(db, sql) {
497
+ function prepareCachedStatement2(db, sql) {
344
498
  return ownPreparedStatement(db, db.prepare(sql));
345
499
  }
346
500
  var privilegeDepth = new WeakMap;
347
501
  var transformPassScope = new AsyncLocalStorage;
348
502
  var admissionScope = new AsyncLocalStorage;
349
503
  var backgroundWriterScope = new AsyncLocalStorage;
350
- function withSqliteBackgroundWriter(operation) {
504
+ function withSqliteBackgroundWriter2(operation) {
351
505
  return backgroundWriterScope.run(true, operation);
352
506
  }
353
- function withSqliteTransformPass(operation) {
507
+ function withSqliteTransformPass2(operation) {
354
508
  const existing = transformPassScope.getStore();
355
509
  if (existing?.active)
356
510
  return operation();
357
- const lease = { active: true, remainingWaitMs: FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS };
358
- return transformPassScope.run(lease, () => {
359
- try {
360
- const result = operation();
361
- if (result && typeof result.then === "function") {
362
- return Promise.resolve(result).finally(() => {
363
- lease.active = false;
364
- });
511
+ const reservation = reserveForegroundSqliteTurn();
512
+ const run = (release) => {
513
+ const lease = { active: true, remainingWaitMs: FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS };
514
+ return transformPassScope.run(lease, () => {
515
+ try {
516
+ const result = operation();
517
+ if (result && typeof result.then === "function") {
518
+ return Promise.resolve(result).finally(() => {
519
+ lease.active = false;
520
+ release();
521
+ });
522
+ }
523
+ lease.active = false;
524
+ release();
525
+ return result;
526
+ } catch (error) {
527
+ lease.active = false;
528
+ release();
529
+ throw error;
365
530
  }
366
- lease.active = false;
367
- return result;
368
- } catch (error) {
369
- lease.active = false;
370
- throw error;
371
- }
372
- });
531
+ });
532
+ };
533
+ return typeof reservation === "function" ? run(reservation) : reservation.then(run);
373
534
  }
374
- function withoutSqliteTransformPass(operation) {
535
+ function withoutSqliteTransformPass2(operation) {
375
536
  return transformPassScope.run(undefined, operation);
376
537
  }
377
- function assertTransformWrite() {
538
+ function assertTransformWrite2() {
378
539
  if (!backgroundWriterScope.getStore())
379
540
  transformPassScope.getStore()?.guard?.assert();
380
541
  }
381
- function isTransientSqliteError(error) {
542
+ function isTransientSqliteError2(error) {
382
543
  if (!error || typeof error !== "object")
383
544
  return false;
384
545
  const value = error;
385
546
  return typeof value.code === "string" && /^(SQLITE_BUSY|SQLITE_LOCKED)(_|$)/.test(value.code) || typeof value.errcode === "number" && [5, 6].includes(value.errcode & 255);
386
547
  }
387
548
 
388
- class SqliteAcquisitionBusyError extends Error {
549
+ class SqliteAcquisitionBusyError2 extends Error {
389
550
  code = "SQLITE_BUSY";
390
551
  stage;
391
552
  constructor(cause, stage = "BEGIN IMMEDIATE") {
@@ -406,7 +567,7 @@ function foregroundWaitLease() {
406
567
  return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
407
568
  }
408
569
  function withAutocommitTimeout(db, operation) {
409
- assertTransformWrite();
570
+ assertTransformWrite2();
410
571
  const lease = foregroundWaitLease();
411
572
  if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
412
573
  return operation();
@@ -416,8 +577,8 @@ function withAutocommitTimeout(db, operation) {
416
577
  try {
417
578
  return operation();
418
579
  } catch (error) {
419
- if (lease && isTransientSqliteError(error))
420
- throw new SqliteAcquisitionBusyError(error, "autocommit");
580
+ if (lease && isTransientSqliteError2(error))
581
+ throw new SqliteAcquisitionBusyError2(error, "autocommit");
421
582
  throw error;
422
583
  } finally {
423
584
  if (lease)
@@ -427,7 +588,7 @@ function withAutocommitTimeout(db, operation) {
427
588
  }
428
589
  }
429
590
  function acquireShort(db, acquire, site) {
430
- assertTransformWrite();
591
+ assertTransformWrite2();
431
592
  const started = performance.now();
432
593
  const previous = pragmaNumber(db, "busy_timeout");
433
594
  const outer = writerAcquisitionScope.getStore();
@@ -444,8 +605,8 @@ function acquireShort(db, acquire, site) {
444
605
  acquire();
445
606
  acquiredAt = performance.now();
446
607
  } catch (error) {
447
- if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
448
- throw new SqliteAcquisitionBusyError(error, site);
608
+ if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
609
+ throw new SqliteAcquisitionBusyError2(error, site);
449
610
  throw error;
450
611
  } finally {
451
612
  const attemptMs = (acquiredAt ?? performance.now()) - started;
@@ -469,23 +630,25 @@ function acquireShort(db, acquire, site) {
469
630
  }
470
631
  function endWriterTransaction(db, end, sql) {
471
632
  let ended = false;
633
+ const endStarted = performance.now();
472
634
  try {
473
635
  const result = end();
474
636
  ended = true;
475
637
  return result;
476
638
  } finally {
477
639
  const open = openWriterTransactions.get(db);
640
+ const endMs = performance.now() - endStarted;
478
641
  if (open && !isInTransaction(db)) {
479
642
  openWriterTransactions.delete(db);
480
643
  const holdMs = performance.now() - open.acquiredAt;
481
644
  if (open.acquireMs >= SLOW_WRITER_LOG_MS || holdMs >= SLOW_WRITER_LOG_MS) {
482
645
  const outcome = /^\s*ROLLBACK/i.test(sql) ? "rolled_back" : ended ? "committed" : "failed";
483
- 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}`);
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}`);
484
647
  }
485
648
  }
486
649
  }
487
650
  }
488
- async function beginSqliteWriterAsync(db, site) {
651
+ async function beginSqliteWriterAsync2(db, site) {
489
652
  const started = performance.now();
490
653
  let attempts = 0;
491
654
  for (;; ) {
@@ -498,10 +661,10 @@ async function beginSqliteWriterAsync(db, site) {
498
661
  attempts,
499
662
  claimed: false
500
663
  };
501
- writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter(() => db.exec("BEGIN IMMEDIATE")));
664
+ writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter2(() => db.exec("BEGIN IMMEDIATE")));
502
665
  return performance.now();
503
666
  } catch (error) {
504
- if (!isTransientSqliteError(error))
667
+ if (!isTransientSqliteError2(error))
505
668
  throw error;
506
669
  const elapsed = performance.now() - started;
507
670
  if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
@@ -512,7 +675,7 @@ async function beginSqliteWriterAsync(db, site) {
512
675
  }
513
676
  }
514
677
  }
515
- async function withAsyncPrivilegedWriter(db, operation, options = {}) {
678
+ async function withAsyncPrivilegedWriter2(db, operation, options = {}) {
516
679
  const started = performance.now();
517
680
  const budgetMs = Math.max(0, Math.min(FOREGROUND_ACQUISITION_BUDGET_MS, options.budgetMs ?? Infinity));
518
681
  let attempts = 0;
@@ -530,12 +693,12 @@ async function withAsyncPrivilegedWriter(db, operation, options = {}) {
530
693
  claimed: false,
531
694
  remainingMs: () => Math.max(0, budgetMs - (performance.now() - started))
532
695
  };
533
- return admissionScope.run(true, () => withSqliteTransformPass(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter(db, () => {
696
+ return admissionScope.run(true, () => withSqliteTransformPass2(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter2(db, () => {
534
697
  entered = true;
535
698
  return operation();
536
699
  }))));
537
700
  } catch (error) {
538
- if (entered || !(error instanceof SqliteAcquisitionBusyError))
701
+ if (entered || !(error instanceof SqliteAcquisitionBusyError2))
539
702
  throw error;
540
703
  options.beforeRetry?.(error);
541
704
  const elapsed = performance.now() - started;
@@ -566,7 +729,7 @@ function isInTransaction(db) {
566
729
  const candidate = db;
567
730
  return candidate.inTransaction === true || candidate.isTransaction === true;
568
731
  }
569
- function withPrivilegedWriter(db, operation) {
732
+ function withPrivilegedWriter2(db, operation) {
570
733
  const previousDepth = privilegeDepth.get(db) ?? 0;
571
734
  const nested = isInTransaction(db);
572
735
  const savepoint = "mc_privilege_scope";
@@ -577,8 +740,8 @@ function withPrivilegedWriter(db, operation) {
577
740
  try {
578
741
  db.exec("BEGIN IMMEDIATE");
579
742
  } catch (error) {
580
- if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
581
- throw new SqliteAcquisitionBusyError(error);
743
+ if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
744
+ throw new SqliteAcquisitionBusyError2(error);
582
745
  throw error;
583
746
  }
584
747
  transactionStartedAt = performance.now();
@@ -620,5 +783,59 @@ function withPrivilegedWriter(db, operation) {
620
783
  throw error;
621
784
  }
622
785
  }
786
+ var indexCoordinationKey = Symbol.for("magic-context.index-foreground-coordination.v1");
787
+ var indexCoordinationHeap = globalThis;
788
+ var indexCoordinationBuffer = indexCoordinationHeap[indexCoordinationKey] ?? new SharedArrayBuffer(3 * Int32Array.BYTES_PER_ELEMENT);
789
+ indexCoordinationHeap[indexCoordinationKey] = indexCoordinationBuffer;
790
+ var indexCoordinationState = new Int32Array(indexCoordinationBuffer);
791
+ function indexCoordinationInput2() {
792
+ return {
793
+ indexCoordination: indexCoordinationBuffer,
794
+ indexOwner: Atomics.add(indexCoordinationState, 2, 1) + 1
795
+ };
796
+ }
797
+ var yieldIndexTurn = () => new Promise((resolve) => setTimeout(resolve, 1));
798
+ function reserveForegroundSqliteTurn() {
799
+ Atomics.add(indexCoordinationState, 0, 1);
800
+ const release = () => {
801
+ Atomics.sub(indexCoordinationState, 0, 1);
802
+ Atomics.notify(indexCoordinationState, 0);
803
+ };
804
+ if (Atomics.load(indexCoordinationState, 1) === 0)
805
+ return release;
806
+ return (async () => {
807
+ while (Atomics.load(indexCoordinationState, 1) !== 0)
808
+ await yieldIndexTurn();
809
+ return release;
810
+ })();
811
+ }
812
+ function releaseIndexOwner2(input) {
813
+ if (!input.indexCoordination || !input.indexOwner)
814
+ return;
815
+ const shared = new Int32Array(input.indexCoordination);
816
+ Atomics.compareExchange(shared, 1, input.indexOwner, 0);
817
+ Atomics.notify(shared, 1);
818
+ }
819
+ async function withIndexChunk2(input, operation) {
820
+ if (!input.indexCoordination || !input.indexOwner)
821
+ return operation();
822
+ const shared = new Int32Array(input.indexCoordination);
823
+ for (;; ) {
824
+ if (Atomics.load(shared, 0) === 0 && Atomics.compareExchange(shared, 1, 0, input.indexOwner) === 0) {
825
+ if (Atomics.load(shared, 0) === 0)
826
+ break;
827
+ releaseIndexOwner2(input);
828
+ }
829
+ await yieldIndexTurn();
830
+ }
831
+ try {
832
+ return await operation();
833
+ } finally {
834
+ releaseIndexOwner2(input);
835
+ }
836
+ }
837
+ async function yieldIndexChunk2() {
838
+ await yieldIndexTurn();
839
+ }
623
840
 
624
- export { registerSlowWriteReporter, registerSqliteDiagnosticSink, detectSqliteRuntime, Database, getSqliteDatabasePath, getSqliteMemoryStats, prepareCachedStatement, withSqliteBackgroundWriter, withSqliteTransformPass, withoutSqliteTransformPass, assertTransformWrite, isTransientSqliteError, SqliteAcquisitionBusyError, beginSqliteWriterAsync, withAsyncPrivilegedWriter, withPrivilegedWriter };
841
+ export { registerSlowWriteReporter2, registerSqliteDiagnosticSink2, detectSqliteRuntime2, getTagIdentityWriteGeneration2, Database2, getSqliteDatabasePath2, getSqliteMemoryStats2, prepareCachedStatement2, withSqliteBackgroundWriter2, withSqliteTransformPass2, withoutSqliteTransformPass2, assertTransformWrite2, isTransientSqliteError2, SqliteAcquisitionBusyError2, beginSqliteWriterAsync2, withAsyncPrivilegedWriter2, withPrivilegedWriter2, indexCoordinationInput2, releaseIndexOwner2, withIndexChunk2, yieldIndexChunk2 };