@cortexkit/opencode-magic-context 0.46.1 → 0.48.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 (462) 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 +112 -0
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/live-run-config.d.ts.map +1 -1
  7. package/dist/config/migrate-config-location.d.ts.map +1 -1
  8. package/dist/config/mural-model-deprecation.d.ts +15 -0
  9. package/dist/config/mural-model-deprecation.d.ts.map +1 -0
  10. package/dist/config/project-security.d.ts +0 -3
  11. package/dist/config/project-security.d.ts.map +1 -1
  12. package/dist/config/schema/magic-context.d.ts +21 -9
  13. package/dist/config/schema/magic-context.d.ts.map +1 -1
  14. package/dist/{conflict-warning-hook-7fj2b9jw.js → conflict-warning-hook-w8cykrnf.js} +12 -9
  15. package/dist/{context-sh2m2vde.js → context-m0cy262m.js} +1785 -913
  16. package/dist/{derive-budgets-7nj7r1rv.js → derive-budgets-sg0xsq7s.js} +4 -3
  17. package/dist/embedding-activity-g1dhes6g.js +10 -0
  18. package/dist/embedding-backfill-9rcm1mfy.js +21 -0
  19. package/dist/embedding-cache-mgyr73ef.js +16 -0
  20. package/dist/embedding-worker.js +11 -9
  21. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
  23. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
  25. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
  27. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
  29. package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
  30. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  31. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  32. package/dist/features/magic-context/message-index-async.d.ts +16 -3
  33. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  34. package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
  35. package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
  36. package/dist/features/magic-context/message-index.d.ts +7 -1
  37. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  38. package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
  39. package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
  40. package/dist/features/magic-context/overflow-detection.d.ts +2 -0
  41. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  42. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  43. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  44. package/dist/features/magic-context/project-embedding-registry.d.ts +7 -0
  45. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  46. package/dist/features/magic-context/search.d.ts +31 -0
  47. package/dist/features/magic-context/search.d.ts.map +1 -1
  48. package/dist/features/magic-context/session-activity.d.ts.map +1 -1
  49. package/dist/features/magic-context/session-project-storage.d.ts +8 -2
  50. package/dist/features/magic-context/session-project-storage.d.ts.map +1 -1
  51. package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
  52. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  53. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  54. package/dist/features/magic-context/storage-historian-runs.d.ts +2 -5
  55. package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -1
  56. package/dist/features/magic-context/storage-meta-persisted.d.ts +12 -0
  57. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  58. package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
  59. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  60. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +30 -0
  61. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  62. package/dist/features/magic-context/storage-tags.d.ts +148 -3
  63. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  64. package/dist/features/magic-context/storage.d.ts +1 -0
  65. package/dist/features/magic-context/storage.d.ts.map +1 -1
  66. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  67. package/dist/features/magic-context/transform-decision-log.d.ts +4 -2
  68. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  69. package/dist/harness-e4avh192.js +10 -0
  70. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +10 -0
  71. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -0
  72. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts +2 -0
  74. package/dist/hooks/magic-context/auto-search-blocking.fixture.d.ts.map +1 -0
  75. package/dist/hooks/magic-context/auto-search-deadline.d.ts +7 -0
  76. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  77. package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts +3 -0
  78. package/dist/hooks/magic-context/auto-search-host-review.fixture.d.ts.map +1 -0
  79. package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts +2 -0
  80. package/dist/hooks/magic-context/auto-search-lock-review.fixture.d.ts.map +1 -0
  81. package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts +2 -0
  82. package/dist/hooks/magic-context/auto-search-long-lock-review.fixture.d.ts.map +1 -0
  83. package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts +4 -0
  84. package/dist/hooks/magic-context/auto-search-omp-host-review.fixture.d.ts.map +1 -0
  85. package/dist/hooks/magic-context/auto-search-omp-loader.fixture.d.ts +3 -0
  86. package/dist/hooks/magic-context/auto-search-omp-loader.fixture.d.ts.map +1 -0
  87. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  88. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  89. package/dist/hooks/magic-context/auto-search-snapshot.fixture.d.ts +4 -0
  90. package/dist/hooks/magic-context/auto-search-snapshot.fixture.d.ts.map +1 -0
  91. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +98 -0
  92. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -0
  93. package/dist/hooks/magic-context/auto-search-worker.d.ts +2 -0
  94. package/dist/hooks/magic-context/auto-search-worker.d.ts.map +1 -0
  95. package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -1
  96. package/dist/hooks/magic-context/command-handler.d.ts +1 -0
  97. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  98. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  100. package/dist/hooks/magic-context/compartment-runner-types.d.ts +3 -5
  101. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  102. package/dist/hooks/magic-context/compartment-runner.d.ts +2 -1
  103. package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -1
  104. package/dist/hooks/magic-context/compartment-trigger.d.ts +3 -1
  105. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  106. package/dist/hooks/magic-context/event-handler.d.ts +1 -1
  107. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  108. package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
  110. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +2 -0
  111. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  112. package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/historian-drain-gate.d.ts +11 -0
  114. package/dist/hooks/magic-context/historian-drain-gate.d.ts.map +1 -0
  115. package/dist/hooks/magic-context/hook.d.ts +3 -2
  116. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  117. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  118. package/dist/hooks/magic-context/latest-assistant-turn.d.ts +25 -0
  119. package/dist/hooks/magic-context/latest-assistant-turn.d.ts.map +1 -0
  120. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +61 -0
  121. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -0
  122. package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
  123. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  124. package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
  125. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  126. package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
  127. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  128. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
  129. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
  130. package/dist/hooks/magic-context/module-wire.d.ts.map +1 -1
  131. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
  132. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
  133. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
  134. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
  135. package/dist/hooks/magic-context/opencode-proven-floor.d.ts +6 -0
  136. package/dist/hooks/magic-context/opencode-proven-floor.d.ts.map +1 -0
  137. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
  138. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
  139. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  140. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  141. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  142. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  143. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
  144. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
  145. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
  146. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
  147. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
  148. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
  149. package/dist/hooks/magic-context/read-session-chunk.d.ts +12 -0
  150. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  151. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  152. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  153. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  154. package/dist/hooks/magic-context/read-session-raw.d.ts +83 -1
  155. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  156. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  157. package/dist/hooks/magic-context/reasoning-budget-status.d.ts +15 -0
  158. package/dist/hooks/magic-context/reasoning-budget-status.d.ts.map +1 -0
  159. package/dist/hooks/magic-context/reasoning-budget.d.ts +40 -0
  160. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -0
  161. package/dist/hooks/magic-context/reasoning-removal.d.ts +6 -6
  162. package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -1
  163. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  164. package/dist/hooks/magic-context/sentinel.d.ts +45 -1
  165. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  166. package/dist/hooks/magic-context/strip-content.d.ts +21 -5
  167. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  168. package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
  169. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  170. package/dist/hooks/magic-context/tag-messages.d.ts +21 -0
  171. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  172. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
  173. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  174. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  175. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  176. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  177. package/dist/hooks/magic-context/tool-drop-target.d.ts +5 -0
  178. package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -1
  179. package/dist/hooks/magic-context/transform-compartment-phase.d.ts +3 -28
  180. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  181. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +28 -6
  182. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  183. package/dist/hooks/magic-context/transform.d.ts +11 -3
  184. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  185. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  186. package/dist/{index-hpecdzec.js → index-0an7742d.js} +6820 -6587
  187. package/dist/index-0qhce371.js +120 -0
  188. package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
  189. package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
  190. package/dist/index-14cjxt20.js +819 -0
  191. package/dist/{v2/server-51dv1pr5.js → index-1qb0z7wa.js} +301 -27
  192. package/dist/index-2bvekkfy.js +11 -0
  193. package/dist/{index-sj29b3z2.js → index-2y0s2hep.js} +3 -3
  194. package/dist/index-4dhv7mqz.js +131 -0
  195. package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
  196. package/dist/index-5zygecde.js +152 -0
  197. package/dist/{index-sjthx78w.js → index-692jzy0p.js} +16879 -22907
  198. package/dist/index-72nhv486.js +2307 -0
  199. package/dist/index-7jzrrxap.js +931 -0
  200. package/dist/index-7mx8v0pw.js +3591 -0
  201. package/dist/index-8ajstryz.js +18 -0
  202. package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
  203. package/dist/{index-hybnrwq0.js → index-8j7gqj40.js} +131 -128
  204. package/dist/index-bdckkfw6.js +3261 -0
  205. package/dist/{index-8x2v7gg9.js → index-bhvjj0ys.js} +158 -2455
  206. package/dist/index-c43kr12f.js +3030 -0
  207. package/dist/index-cb7emxgj.js +984 -0
  208. package/dist/index-d9vfe7xq.js +16 -0
  209. package/dist/{index-5gq3b2ya.js → index-db7zwa3v.js} +147 -209
  210. package/dist/index-dhwzyd54.js +1142 -0
  211. package/dist/{index-8da2zjhz.js → index-eeezr5zz.js} +9 -7
  212. package/dist/{index-pkbcrdqs.js → index-f0h6xwqm.js} +3412 -4552
  213. package/dist/index-fb3zxn06.js +13 -0
  214. package/dist/index-fbv1dn35.js +171 -0
  215. package/dist/index-fr0wbhdn.js +43 -0
  216. package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
  217. package/dist/{index-fzbvakh0.js → index-jcbd3znx.js} +3 -3
  218. package/dist/{index-5p8jdswx.js → index-k1xb52kd.js} +20 -13
  219. package/dist/index-k9nnwad5.js +3532 -0
  220. package/dist/{v2/server-fg34g6a5.js → index-kb9nn0a0.js} +309 -52
  221. package/dist/index-knh4y330.js +566 -0
  222. package/dist/{index-q4yp4b52.js → index-mfkzp7qj.js} +28 -28
  223. package/dist/{index-sgthv3f7.js → index-mmyh6d8f.js} +4 -4
  224. package/dist/index-pavzsdc6.js +17 -0
  225. package/dist/{index-0d3g3461.js → index-pdecwzrd.js} +19 -16
  226. package/dist/index-pg50n748.js +1060 -0
  227. package/dist/index-q2tqeqde.js +2106 -0
  228. package/dist/index-q7h7csab.js +3469 -0
  229. package/dist/index-qt1qqasc.js +22 -0
  230. package/dist/{index-majxda46.js → index-ty64eqcn.js} +28 -18
  231. package/dist/{index-7qw742ev.js → index-yq8n9qcb.js} +25 -44
  232. package/dist/{index-sfnj6h8h.js → index-z8e0psj8.js} +20 -20
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +1061 -260
  235. package/dist/logger-d3wex3dz.js +20 -0
  236. package/dist/message-index-bounded-7ezbgddp.js +124 -0
  237. package/dist/{v2/message-time-backfill-r6qkem1x.js → message-time-backfill-brbd63hv.js} +8 -6
  238. package/dist/migration-worker.js +25 -16
  239. package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  240. package/dist/plugin/dream-timer.d.ts +1 -1
  241. package/dist/plugin/dream-timer.d.ts.map +1 -1
  242. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -1
  243. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  244. package/dist/plugin/host-stall-profiler-report.d.ts +2 -0
  245. package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -0
  246. package/dist/plugin/host-stall-profiler.d.ts +3 -0
  247. package/dist/plugin/host-stall-profiler.d.ts.map +1 -0
  248. package/dist/plugin/messages-transform.d.ts +21 -19
  249. package/dist/plugin/messages-transform.d.ts.map +1 -1
  250. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  251. package/dist/plugin/tool-registry.d.ts.map +1 -1
  252. package/dist/project-embedding-registry-7qzptcw7.js +88 -0
  253. package/dist/raw-ordinal-warmup-worker.js +60 -0
  254. package/dist/{read-session-chunk-egz7r68d.js → read-session-chunk-6k83m4fj.js} +15 -9
  255. package/dist/read-session-raw-3g9qy1xa.js +58 -0
  256. package/dist/recomp-orchestrator-d3fp1cy0.js +57 -0
  257. package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-5ffqq32m.js} +4 -2
  258. package/dist/search-epax1ecv.js +45 -0
  259. package/dist/{v2/send-session-notification-qs0j78v6.js → send-session-notification-erecz4y4.js} +10 -6
  260. package/dist/shared/auto-search-lifecycle.d.ts +7 -0
  261. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -0
  262. package/dist/shared/conflict-detector.d.ts.map +1 -1
  263. package/dist/shared/historian-tool-expansions.d.ts +1 -1
  264. package/dist/shared/historian-tool-expansions.d.ts.map +1 -1
  265. package/dist/shared/historian-tool-template.d.ts +2 -2
  266. package/dist/shared/historian-tool-template.d.ts.map +1 -1
  267. package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
  268. package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
  269. package/dist/shared/host-stall-profiler-common.d.ts +58 -0
  270. package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
  271. package/dist/shared/host-stall-profiler-node.d.ts +36 -0
  272. package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
  273. package/dist/shared/host-stall-profiler-report.d.ts +68 -0
  274. package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
  275. package/dist/shared/host-stall-profiler.d.ts +5 -0
  276. package/dist/shared/host-stall-profiler.d.ts.map +1 -0
  277. package/dist/shared/model-resolution.d.ts +2 -3
  278. package/dist/shared/model-resolution.d.ts.map +1 -1
  279. package/dist/shared/sqlite.d.ts +46 -1
  280. package/dist/shared/sqlite.d.ts.map +1 -1
  281. package/dist/shared/stable-json.d.ts.map +1 -1
  282. package/dist/shared/status-view.d.ts.map +1 -1
  283. package/dist/shared/user-facing-codes.d.ts +0 -5
  284. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  285. package/dist/shared/window-geometry.d.ts +4 -0
  286. package/dist/shared/window-geometry.d.ts.map +1 -1
  287. package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  288. package/dist/sqlite-mhjkerzq.js +46 -0
  289. package/dist/storage-memory-07fx57k6.js +71 -0
  290. package/dist/storage-tags-d3b0v2ss.js +131 -0
  291. package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
  292. package/dist/tools/ctx-expand/render.d.ts.map +1 -1
  293. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  294. package/dist/tools/ctx-note/constants.d.ts +4 -0
  295. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  296. package/dist/tools/ctx-note/tools.d.ts +1 -0
  297. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  298. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  299. package/dist/tools/parameter-descriptions.d.ts +2 -2
  300. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  301. package/dist/{transform-postprocess-phase-bqhz6vdr.js → transform-postprocess-phase-spcy2qre.js} +35 -17
  302. package/dist/transformers-node-wasm.js +18415 -18415
  303. package/dist/v2/auto-search-worker.js +112 -0
  304. package/dist/v2/{context-zecmzk5s.js → context-sf98kstd.js} +8378 -8530
  305. package/dist/v2/{derive-budgets-kdgp4s3r.js → derive-budgets-3vc0y84t.js} +4 -3
  306. package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
  307. package/dist/v2/embedding-backfill-vn8g1nh1.js +21 -0
  308. package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
  309. package/dist/v2/embedding-worker.js +12 -9
  310. package/dist/v2/fold/host-media.d.ts +4 -0
  311. package/dist/v2/fold/host-media.d.ts.map +1 -1
  312. package/dist/v2/fold/memory-cache.d.ts +70 -0
  313. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  314. package/dist/v2/fold/native-codec.d.ts +10 -0
  315. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  316. package/dist/v2/fold/native-replay.d.ts +58 -0
  317. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  318. package/dist/v2/fold/policy.d.ts +24 -0
  319. package/dist/v2/fold/policy.d.ts.map +1 -0
  320. package/dist/v2/harness-e4avh192.js +10 -0
  321. package/dist/v2/hidden-completion.d.ts.map +1 -1
  322. package/dist/v2/hooks/context.d.ts +2 -2
  323. package/dist/v2/hooks/context.d.ts.map +1 -1
  324. package/dist/v2/hooks/dream-manual.d.ts +1 -1
  325. package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
  326. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  327. package/dist/v2/hooks/dream-trigger.d.ts +1 -2
  328. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  329. package/dist/v2/hooks/payload.d.ts.map +1 -1
  330. package/dist/v2/hooks/tools.d.ts.map +1 -1
  331. package/dist/v2/hooks/types.d.ts +6 -0
  332. package/dist/v2/hooks/types.d.ts.map +1 -1
  333. package/dist/v2/logger-mxd0ym09.js +19 -0
  334. package/dist/v2/message-index-bounded-dy3s2k1e.js +123 -0
  335. package/dist/{message-time-backfill-68gj6t3e.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
  336. package/dist/v2/migration-worker.js +24 -15
  337. package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  338. package/dist/v2/project-embedding-registry-1tgba5dv.js +86 -0
  339. package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
  340. package/dist/v2/{read-session-chunk-8vjp6581.js → read-session-chunk-rh4khdkv.js} +14 -8
  341. package/dist/v2/read-session-raw-bsbmf0vj.js +57 -0
  342. package/dist/v2/recomp-orchestrator-az61rfcg.js +57 -0
  343. package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-73ax1p5v.js} +3 -3
  344. package/dist/v2/search-nzkwrc6n.js +45 -0
  345. package/dist/{send-session-notification-dyw42dtr.js → v2/send-session-notification-6km439kn.js} +9 -7
  346. package/dist/{index-5eqk6z3s.js → v2/server-1r6pmz4f.js} +301 -27
  347. package/dist/v2/server-2bvekkfy.js +11 -0
  348. package/dist/v2/server-2fbhp79z.js +3205 -0
  349. package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
  350. package/dist/v2/server-4dhv7mqz.js +131 -0
  351. package/dist/v2/{server-xa4xe3rv.js → server-4k748ke6.js} +11 -1053
  352. package/dist/v2/{server-vs5gpnd4.js → server-52awr2mw.js} +81 -145
  353. package/dist/v2/{server-1qbnzc80.js → server-5m3dt5r1.js} +136 -148
  354. package/dist/v2/server-686jg6eb.js +3508 -0
  355. package/dist/v2/server-7jzrrxap.js +931 -0
  356. package/dist/v2/server-7wwc2nga.js +3023 -0
  357. package/dist/v2/server-8ajstryz.js +18 -0
  358. package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
  359. package/dist/v2/server-8pyt7hev.js +3408 -0
  360. package/dist/v2/server-8tqanswc.js +984 -0
  361. package/dist/v2/{server-14vq4kpm.js → server-aan4q8mx.js} +3 -3
  362. package/dist/v2/server-d9vfe7xq.js +16 -0
  363. package/dist/v2/server-e0vdaae2.js +3591 -0
  364. package/dist/v2/server-ezhze64f.js +1048 -0
  365. package/dist/v2/server-fb3zxn06.js +13 -0
  366. package/dist/v2/server-fr0wbhdn.js +43 -0
  367. package/dist/v2/server-g5r0n3b6.js +1137 -0
  368. package/dist/v2/server-gjcr4w98.js +154 -0
  369. package/dist/v2/server-k228xhjg.js +171 -0
  370. package/dist/v2/{server-jc7y02q0.js → server-k8x2rbxc.js} +5119 -10948
  371. package/dist/{index-fg34g6a5.js → v2/server-kb9nn0a0.js} +309 -52
  372. package/dist/v2/{server-g0fjrkta.js → server-mfkzp7qj.js} +28 -28
  373. package/dist/v2/server-pavzsdc6.js +17 -0
  374. package/dist/v2/server-psqc7e9n.js +2106 -0
  375. package/dist/v2/server-qt1qqasc.js +22 -0
  376. package/dist/v2/server-qye6ykf7.js +120 -0
  377. package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
  378. package/dist/v2/server-sggvvzhb.js +759 -0
  379. package/dist/v2/{server-y8maxeft.js → server-v06jcv0w.js} +16 -13
  380. package/dist/v2/server-vqpf3167.js +1048 -0
  381. package/dist/v2/{server-c5gz8wph.js → server-x2g40a71.js} +2048 -2059
  382. package/dist/v2/{server-wvjvfhck.js → server-xdfwt6kh.js} +20 -16
  383. package/dist/v2/{server-mcfawjgc.js → server-xxm59eww.js} +25 -44
  384. package/dist/v2/server-yczc713m.js +564 -0
  385. package/dist/v2/{server-3n4q9xme.js → server-z2037m6z.js} +4 -4
  386. package/dist/v2/{server-e29d7p7c.js → server-zm570tr2.js} +166 -160
  387. package/dist/v2/{server-6r257mf5.js → server-zxhgvsf9.js} +3 -3
  388. package/dist/v2/server.js +16 -14
  389. package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  390. package/dist/v2/sqlite-mhjkerzq.js +46 -0
  391. package/dist/v2/storage-memory-07fx57k6.js +71 -0
  392. package/dist/v2/storage-tags-w4tv77sn.js +130 -0
  393. package/dist/v2/store-reader.d.ts +16 -0
  394. package/dist/v2/store-reader.d.ts.map +1 -1
  395. package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
  396. package/dist/v2/transformers-node-wasm.js +18415 -18415
  397. package/dist/v2/tui/index.d.ts.map +1 -1
  398. package/dist/v2/tui/types.d.ts +1 -10
  399. package/dist/v2/tui/types.d.ts.map +1 -1
  400. package/dist/v2/{wrapup-orchestrator-0snhvwcv.js → wrapup-orchestrator-mz7efs7w.js} +51 -27
  401. package/dist/wrapup-orchestrator-amzta1t4.js +44 -0
  402. package/package.json +4 -3
  403. package/src/agents/magic-context-prompt.ts +27 -2
  404. package/src/agents/smart-notes-enabled.test.ts +294 -0
  405. package/src/agents/smart-notes-on.golden.json +70 -0
  406. package/src/config/index.test.ts +67 -1
  407. package/src/config/index.ts +8 -0
  408. package/src/config/latch-permanence-guard.test.ts +4 -0
  409. package/src/config/live-run-config.test.ts +37 -1
  410. package/src/config/live-run-config.ts +28 -0
  411. package/src/config/migrate-config-location.ts +10 -3
  412. package/src/config/mural-model-deprecation.ts +24 -0
  413. package/src/config/project-security.hostile-matrix.test.ts +4 -44
  414. package/src/config/project-security.test.ts +9 -14
  415. package/src/config/project-security.ts +13 -55
  416. package/src/config/schema/magic-context.test.ts +6 -5
  417. package/src/config/schema/magic-context.ts +34 -16
  418. package/src/features/magic-context/dreamer/task-registry.ts +6 -0
  419. package/src/shared/auto-search-lifecycle.ts +27 -0
  420. package/src/shared/conflict-detector.test.ts +56 -0
  421. package/src/shared/conflict-detector.ts +16 -5
  422. package/src/shared/historian-tool-defaults.json +6 -6
  423. package/src/shared/historian-tool-expansions.ts +65 -8
  424. package/src/shared/historian-tool-preview-defaults.json +13 -0
  425. package/src/shared/historian-tool-template.ts +48 -14
  426. package/src/shared/host-stall-profiler-bun.ts +358 -0
  427. package/src/shared/host-stall-profiler-common.ts +159 -0
  428. package/src/shared/host-stall-profiler-node.test.ts +234 -0
  429. package/src/shared/host-stall-profiler-node.ts +274 -0
  430. package/src/shared/host-stall-profiler-report.ts +248 -0
  431. package/src/shared/host-stall-profiler.ts +57 -0
  432. package/src/shared/model-resolution.test.ts +54 -17
  433. package/src/shared/model-resolution.ts +6 -17
  434. package/src/shared/sqlite-640-review-r2.test.ts +136 -0
  435. package/src/shared/sqlite-640-review.test.ts +183 -0
  436. package/src/shared/sqlite-acquisition-routing.test.ts +18 -0
  437. package/src/shared/sqlite.test.ts +52 -0
  438. package/src/shared/sqlite.ts +423 -37
  439. package/src/shared/stable-json-linear.test.ts +109 -0
  440. package/src/shared/stable-json.ts +37 -7
  441. package/src/shared/status-view.test.ts +6 -1
  442. package/src/shared/status-view.ts +15 -1
  443. package/src/shared/tag-transcript.ts +6 -0
  444. package/src/shared/user-facing-codes.ts +2 -6
  445. package/src/shared/window-geometry.ts +10 -0
  446. package/src/shared/write-transaction-attribution.test.ts +2 -2
  447. package/src/v2/tui/host-contract.test.ts +41 -67
  448. package/src/v2/tui/index.ts +6 -214
  449. package/src/v2/tui/types.ts +5 -17
  450. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
  451. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
  452. package/dist/features/magic-context/checkout-claim.d.ts +0 -155
  453. package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
  454. package/dist/index-3h0ybwah.js +0 -6540
  455. package/dist/index-r5hmbx3t.js +0 -7773
  456. package/dist/recomp-orchestrator-y15j0rb9.js +0 -39
  457. package/dist/v2/recomp-orchestrator-8ejxvrzz.js +0 -39
  458. package/dist/v2/server-frbm99q5.js +0 -7698
  459. package/dist/v2/server-qp5hx1ad.js +0 -6366
  460. package/dist/wrapup-orchestrator-39amhv9s.js +0 -26
  461. /package/dist/{index-en1k8h8m.js → index-2pp04pmg.js} +0 -0
  462. /package/dist/v2/{index-en1k8h8m.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,18 +79,95 @@ 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", {
70
166
  configurable: true,
71
167
  writable: true,
72
168
  value: (sql) => {
169
+ if (/^\s*(?:COMMIT|END)\b/i.test(sql))
170
+ assertTransformWrite2();
73
171
  if (/^\s*BEGIN\s+(?:IMMEDIATE|EXCLUSIVE)(?:\s+TRANSACTION)?\s*;?\s*$/i.test(sql)) {
74
172
  openWriterTransactions.delete(db);
75
173
  if (transformPassScope.getStore()?.active || backgroundWriterScope.getStore())
@@ -80,8 +178,14 @@ function installTransactionRouting(db, readonly) {
80
178
  }
81
179
  if (WRITER_TRANSACTION_END.test(sql) && openWriterTransactions.has(db))
82
180
  return endWriterTransaction(db, () => nativeExec(sql), sql);
83
- if (!/^\s*(?:SELECT|EXPLAIN|PRAGMA|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE)\b/i.test(sql))
84
- 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
+ }
85
189
  return nativeExec(sql);
86
190
  }
87
191
  });
@@ -92,13 +196,23 @@ function installTransactionRouting(db, readonly) {
92
196
  value: (sql) => {
93
197
  const statement = nativePrepare(sql);
94
198
  if (!readonly && !/^\s*(?:SELECT|EXPLAIN|PRAGMA)\b/i.test(sql)) {
199
+ const changesTagIdentity = mayChangeTagIdentity(sql);
95
200
  for (const method of ["run", "get", "all"]) {
96
201
  const execute = statement[method].bind(statement);
97
202
  Object.defineProperty(statement, method, {
98
203
  configurable: true,
99
- 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
+ }
100
212
  });
101
213
  }
214
+ if (changesTagIdentity)
215
+ wrapRemainingTagWriteForms(statement);
102
216
  }
103
217
  return statement;
104
218
  }
@@ -146,6 +260,35 @@ function installTransactionRouting(db, readonly) {
146
260
  }
147
261
  });
148
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
+ }
149
292
  function trackSqliteConnection(db, filename, options) {
150
293
  const originalClose = db.close.bind(db);
151
294
  const sequence = nextSqliteConnectionSequence++;
@@ -205,7 +348,19 @@ function buildNodeSqliteDatabaseClass(DatabaseSync) {
205
348
  }
206
349
  return NodeSqliteDatabase;
207
350
  }
208
- var Database = TrackedDatabase;
351
+ var Database2 = TrackedDatabase;
352
+ function getSqliteDatabasePath2(db) {
353
+ for (const connection of trackedSqliteConnections.values()) {
354
+ if (connection.reference.deref() === db) {
355
+ return connection.filename === ":memory:" || connection.filename === "<buffer>" ? null : connection.filename;
356
+ }
357
+ }
358
+ const native = db;
359
+ const path = native.filename ?? native.name;
360
+ if (typeof path === "string" && path !== ":memory:" && path !== "")
361
+ return path;
362
+ return null;
363
+ }
209
364
  function pragmaValue(db, name) {
210
365
  const row = db.prepare(`PRAGMA ${name}`).get();
211
366
  if (!row)
@@ -245,7 +400,7 @@ function fts5TableCount(db) {
245
400
  return null;
246
401
  }
247
402
  }
248
- function getSqliteMemoryStats() {
403
+ function getSqliteMemoryStats2() {
249
404
  const connections = [];
250
405
  for (const [sequence, tracked] of trackedSqliteConnections) {
251
406
  const db = tracked.reference.deref();
@@ -287,6 +442,15 @@ function getSqliteMemoryStats() {
287
442
  }
288
443
  var statementOwners = new WeakMap;
289
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
+ }
290
454
  function ownPreparedStatement(db, statement) {
291
455
  const finalizable = statement;
292
456
  if (typeof finalizable.finalize !== "function")
@@ -310,7 +474,7 @@ function ownPreparedStatement(db, statement) {
310
474
  }
311
475
  }
312
476
  references.clear();
313
- const result = close(...args);
477
+ const result = closeReleasingStatements(close, args);
314
478
  if (failure)
315
479
  throw failure;
316
480
  return result;
@@ -330,48 +494,59 @@ function ownPreparedStatement(db, statement) {
330
494
  }
331
495
  return statement;
332
496
  }
333
- function prepareCachedStatement(db, sql) {
497
+ function prepareCachedStatement2(db, sql) {
334
498
  return ownPreparedStatement(db, db.prepare(sql));
335
499
  }
336
500
  var privilegeDepth = new WeakMap;
337
501
  var transformPassScope = new AsyncLocalStorage;
338
502
  var admissionScope = new AsyncLocalStorage;
339
503
  var backgroundWriterScope = new AsyncLocalStorage;
340
- function withSqliteBackgroundWriter(operation) {
504
+ function withSqliteBackgroundWriter2(operation) {
341
505
  return backgroundWriterScope.run(true, operation);
342
506
  }
343
- function withSqliteTransformPass(operation) {
507
+ function withSqliteTransformPass2(operation) {
344
508
  const existing = transformPassScope.getStore();
345
509
  if (existing?.active)
346
510
  return operation();
347
- const lease = { active: true, remainingWaitMs: FOREGROUND_IN_PASS_BUSY_TIMEOUT_MS };
348
- return transformPassScope.run(lease, () => {
349
- try {
350
- const result = operation();
351
- if (result && typeof result.then === "function") {
352
- return Promise.resolve(result).finally(() => {
353
- lease.active = false;
354
- });
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;
355
530
  }
356
- lease.active = false;
357
- return result;
358
- } catch (error) {
359
- lease.active = false;
360
- throw error;
361
- }
362
- });
531
+ });
532
+ };
533
+ return typeof reservation === "function" ? run(reservation) : reservation.then(run);
363
534
  }
364
- function withoutSqliteTransformPass(operation) {
535
+ function withoutSqliteTransformPass2(operation) {
365
536
  return transformPassScope.run(undefined, operation);
366
537
  }
367
- function isTransientSqliteError(error) {
538
+ function assertTransformWrite2() {
539
+ if (!backgroundWriterScope.getStore())
540
+ transformPassScope.getStore()?.guard?.assert();
541
+ }
542
+ function isTransientSqliteError2(error) {
368
543
  if (!error || typeof error !== "object")
369
544
  return false;
370
545
  const value = error;
371
546
  return typeof value.code === "string" && /^(SQLITE_BUSY|SQLITE_LOCKED)(_|$)/.test(value.code) || typeof value.errcode === "number" && [5, 6].includes(value.errcode & 255);
372
547
  }
373
548
 
374
- class SqliteAcquisitionBusyError extends Error {
549
+ class SqliteAcquisitionBusyError2 extends Error {
375
550
  code = "SQLITE_BUSY";
376
551
  stage;
377
552
  constructor(cause, stage = "BEGIN IMMEDIATE") {
@@ -392,6 +567,7 @@ function foregroundWaitLease() {
392
567
  return lease?.active && !admissionScope.getStore() && !backgroundWriterScope.getStore() ? lease : undefined;
393
568
  }
394
569
  function withAutocommitTimeout(db, operation) {
570
+ assertTransformWrite2();
395
571
  const lease = foregroundWaitLease();
396
572
  if (isInTransaction(db) || !lease && !backgroundWriterScope.getStore())
397
573
  return operation();
@@ -401,8 +577,8 @@ function withAutocommitTimeout(db, operation) {
401
577
  try {
402
578
  return operation();
403
579
  } catch (error) {
404
- if (lease && isTransientSqliteError(error))
405
- throw new SqliteAcquisitionBusyError(error, "autocommit");
580
+ if (lease && isTransientSqliteError2(error))
581
+ throw new SqliteAcquisitionBusyError2(error, "autocommit");
406
582
  throw error;
407
583
  } finally {
408
584
  if (lease)
@@ -412,6 +588,7 @@ function withAutocommitTimeout(db, operation) {
412
588
  }
413
589
  }
414
590
  function acquireShort(db, acquire, site) {
591
+ assertTransformWrite2();
415
592
  const started = performance.now();
416
593
  const previous = pragmaNumber(db, "busy_timeout");
417
594
  const outer = writerAcquisitionScope.getStore();
@@ -423,13 +600,13 @@ function acquireShort(db, acquire, site) {
423
600
  let acquiredAt;
424
601
  try {
425
602
  const lease = foregroundWaitLease();
426
- const timeout = lease ? Math.floor(lease.remainingWaitMs) : SHORT_BUSY_TIMEOUT_MS;
603
+ const timeout = Math.floor(Math.min(lease ? lease.remainingWaitMs : SHORT_BUSY_TIMEOUT_MS, owner?.remainingMs?.() ?? lease?.guard?.remainingMs() ?? Infinity));
427
604
  db.exec(`PRAGMA busy_timeout=${timeout}`);
428
605
  acquire();
429
606
  acquiredAt = performance.now();
430
607
  } catch (error) {
431
- if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
432
- throw new SqliteAcquisitionBusyError(error, site);
608
+ if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
609
+ throw new SqliteAcquisitionBusyError2(error, site);
433
610
  throw error;
434
611
  } finally {
435
612
  const attemptMs = (acquiredAt ?? performance.now()) - started;
@@ -453,23 +630,25 @@ function acquireShort(db, acquire, site) {
453
630
  }
454
631
  function endWriterTransaction(db, end, sql) {
455
632
  let ended = false;
633
+ const endStarted = performance.now();
456
634
  try {
457
635
  const result = end();
458
636
  ended = true;
459
637
  return result;
460
638
  } finally {
461
639
  const open = openWriterTransactions.get(db);
640
+ const endMs = performance.now() - endStarted;
462
641
  if (open && !isInTransaction(db)) {
463
642
  openWriterTransactions.delete(db);
464
643
  const holdMs = performance.now() - open.acquiredAt;
465
644
  if (open.acquireMs >= SLOW_WRITER_LOG_MS || holdMs >= SLOW_WRITER_LOG_MS) {
466
645
  const outcome = /^\s*ROLLBACK/i.test(sql) ? "rolled_back" : ended ? "committed" : "failed";
467
- 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}`);
468
647
  }
469
648
  }
470
649
  }
471
650
  }
472
- async function beginSqliteWriterAsync(db, site) {
651
+ async function beginSqliteWriterAsync2(db, site) {
473
652
  const started = performance.now();
474
653
  let attempts = 0;
475
654
  for (;; ) {
@@ -482,10 +661,10 @@ async function beginSqliteWriterAsync(db, site) {
482
661
  attempts,
483
662
  claimed: false
484
663
  };
485
- writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter(() => db.exec("BEGIN IMMEDIATE")));
664
+ writerAcquisitionScope.run(acquisition, () => withSqliteBackgroundWriter2(() => db.exec("BEGIN IMMEDIATE")));
486
665
  return performance.now();
487
666
  } catch (error) {
488
- if (!isTransientSqliteError(error))
667
+ if (!isTransientSqliteError2(error))
489
668
  throw error;
490
669
  const elapsed = performance.now() - started;
491
670
  if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
@@ -496,29 +675,53 @@ async function beginSqliteWriterAsync(db, site) {
496
675
  }
497
676
  }
498
677
  }
499
- async function withAsyncPrivilegedWriter(db, operation) {
678
+ async function withAsyncPrivilegedWriter2(db, operation, options = {}) {
500
679
  const started = performance.now();
680
+ const budgetMs = Math.max(0, Math.min(FOREGROUND_ACQUISITION_BUDGET_MS, options.budgetMs ?? Infinity));
501
681
  let attempts = 0;
502
682
  for (;; ) {
683
+ options.signal?.throwIfAborted();
684
+ options.assertCurrentPass?.();
503
685
  attempts++;
686
+ let entered = false;
504
687
  try {
505
688
  const acquisition = {
506
689
  site: "privileged_writer",
507
690
  lane: "foreground",
508
691
  startedAt: started,
509
692
  attempts,
510
- claimed: false
693
+ claimed: false,
694
+ remainingMs: () => Math.max(0, budgetMs - (performance.now() - started))
511
695
  };
512
- return admissionScope.run(true, () => withSqliteTransformPass(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter(db, operation))));
696
+ return admissionScope.run(true, () => withSqliteTransformPass2(() => writerAcquisitionScope.run(acquisition, () => withPrivilegedWriter2(db, () => {
697
+ entered = true;
698
+ return operation();
699
+ }))));
513
700
  } catch (error) {
514
- if (!(error instanceof SqliteAcquisitionBusyError))
701
+ if (entered || !(error instanceof SqliteAcquisitionBusyError2))
515
702
  throw error;
703
+ options.beforeRetry?.(error);
516
704
  const elapsed = performance.now() - started;
517
- if (elapsed >= FOREGROUND_ACQUISITION_BUDGET_MS) {
705
+ if (elapsed >= budgetMs) {
518
706
  reportSqliteDiagnostic(`sqlite writer site=privileged_writer lane=foreground acquire_ms=${Math.round(elapsed)} attempts=${attempts} outcome=busy`);
519
707
  throw error;
520
708
  }
521
- await new Promise((resolve) => setTimeout(resolve, Math.min(attempts === 1 ? 500 : 1000, FOREGROUND_ACQUISITION_BUDGET_MS - elapsed)));
709
+ const backoff = attempts === 1 ? 500 : 1000;
710
+ const delay = Math.min(options.jitter ? backoff * (0.8 + Math.random() * 0.4) : backoff, budgetMs - elapsed);
711
+ await new Promise((resolve, reject) => {
712
+ const abort = () => {
713
+ clearTimeout(timer);
714
+ options.signal?.removeEventListener("abort", abort);
715
+ reject(options.signal?.reason ?? new Error("Writer wait aborted"));
716
+ };
717
+ const timer = setTimeout(() => {
718
+ options.signal?.removeEventListener("abort", abort);
719
+ resolve();
720
+ }, delay);
721
+ options.signal?.addEventListener("abort", abort, { once: true });
722
+ if (options.signal?.aborted)
723
+ abort();
724
+ });
522
725
  }
523
726
  }
524
727
  }
@@ -526,7 +729,7 @@ function isInTransaction(db) {
526
729
  const candidate = db;
527
730
  return candidate.inTransaction === true || candidate.isTransaction === true;
528
731
  }
529
- function withPrivilegedWriter(db, operation) {
732
+ function withPrivilegedWriter2(db, operation) {
530
733
  const previousDepth = privilegeDepth.get(db) ?? 0;
531
734
  const nested = isInTransaction(db);
532
735
  const savepoint = "mc_privilege_scope";
@@ -537,8 +740,8 @@ function withPrivilegedWriter(db, operation) {
537
740
  try {
538
741
  db.exec("BEGIN IMMEDIATE");
539
742
  } catch (error) {
540
- if (transformPassScope.getStore()?.active && isTransientSqliteError(error))
541
- throw new SqliteAcquisitionBusyError(error);
743
+ if (transformPassScope.getStore()?.active && isTransientSqliteError2(error))
744
+ throw new SqliteAcquisitionBusyError2(error);
542
745
  throw error;
543
746
  }
544
747
  transactionStartedAt = performance.now();
@@ -580,5 +783,59 @@ function withPrivilegedWriter(db, operation) {
580
783
  throw error;
581
784
  }
582
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
+ }
583
840
 
584
- export { registerSlowWriteReporter, registerSqliteDiagnosticSink, detectSqliteRuntime, Database, getSqliteMemoryStats, prepareCachedStatement, withSqliteBackgroundWriter, withSqliteTransformPass, withoutSqliteTransformPass, 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 };