@cortexkit/opencode-magic-context 0.47.0 → 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 (366) 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-w8cykrnf.js} +12 -10
  13. package/dist/{context-wq4ffwyb.js → context-m0cy262m.js} +2690 -1903
  14. package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-sg0xsq7s.js} +4 -3
  15. package/dist/embedding-activity-g1dhes6g.js +10 -0
  16. package/dist/embedding-backfill-9rcm1mfy.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/message-index-async.d.ts +16 -3
  30. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  31. package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
  32. package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
  33. package/dist/features/magic-context/message-index.d.ts +7 -1
  34. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  35. package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
  36. package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
  37. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  38. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  39. package/dist/features/magic-context/search.d.ts +29 -0
  40. package/dist/features/magic-context/search.d.ts.map +1 -1
  41. package/dist/features/magic-context/session-activity.d.ts.map +1 -1
  42. package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
  43. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  45. package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
  46. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  47. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +30 -0
  48. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  49. package/dist/features/magic-context/storage-tags.d.ts +144 -4
  50. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  51. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  52. package/dist/features/magic-context/transform-decision-log.d.ts +1 -1
  53. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  54. package/dist/harness-e4avh192.js +10 -0
  55. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
  56. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +32 -3
  58. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/command-handler.d.ts +1 -0
  60. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/hook.d.ts +1 -1
  66. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
  69. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
  71. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
  73. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
  75. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
  76. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
  77. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
  78. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
  79. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
  80. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
  81. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
  82. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  83. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  84. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
  85. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
  86. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
  87. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
  88. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
  89. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
  90. package/dist/hooks/magic-context/read-session-chunk.d.ts +12 -0
  91. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  92. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  94. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/read-session-raw.d.ts +83 -1
  96. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  98. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/sentinel.d.ts +41 -1
  100. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  101. package/dist/hooks/magic-context/strip-content.d.ts +14 -2
  102. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  103. package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
  104. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  105. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  106. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  107. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
  108. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  109. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  110. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  111. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  112. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/transform.d.ts +8 -2
  114. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  115. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  116. package/dist/{index-w2t4ah5j.js → index-0an7742d.js} +14072 -14286
  117. package/dist/index-0qhce371.js +120 -0
  118. package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
  119. package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
  120. package/dist/index-14cjxt20.js +819 -0
  121. package/dist/{v2/server-51dv1pr5.js → index-1qb0z7wa.js} +301 -27
  122. package/dist/index-2bvekkfy.js +11 -0
  123. package/dist/{index-sj29b3z2.js → index-2y0s2hep.js} +3 -3
  124. package/dist/index-4dhv7mqz.js +131 -0
  125. package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
  126. package/dist/index-5zygecde.js +152 -0
  127. package/dist/{index-6d9e1m08.js → index-692jzy0p.js} +17775 -17450
  128. package/dist/index-72nhv486.js +2307 -0
  129. package/dist/index-7jzrrxap.js +931 -0
  130. package/dist/{v2/server-njt3np1k.js → index-7mx8v0pw.js} +220 -961
  131. package/dist/index-8ajstryz.js +18 -0
  132. package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
  133. package/dist/{index-hybnrwq0.js → index-8j7gqj40.js} +131 -128
  134. package/dist/index-bdckkfw6.js +3261 -0
  135. package/dist/{index-m5fe6jch.js → index-bhvjj0ys.js} +152 -2453
  136. package/dist/index-c43kr12f.js +3030 -0
  137. package/dist/index-cb7emxgj.js +984 -0
  138. package/dist/index-d9vfe7xq.js +16 -0
  139. package/dist/{index-5gq3b2ya.js → index-db7zwa3v.js} +147 -209
  140. package/dist/index-dhwzyd54.js +1142 -0
  141. package/dist/{index-8da2zjhz.js → index-eeezr5zz.js} +9 -7
  142. package/dist/{index-cwf6s3ay.js → index-f0h6xwqm.js} +2828 -2618
  143. package/dist/index-fb3zxn06.js +13 -0
  144. package/dist/index-fbv1dn35.js +171 -0
  145. package/dist/index-fr0wbhdn.js +43 -0
  146. package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
  147. package/dist/{index-fzbvakh0.js → index-jcbd3znx.js} +3 -3
  148. package/dist/{index-5a2r0p9f.js → index-k1xb52kd.js} +20 -13
  149. package/dist/index-k9nnwad5.js +3532 -0
  150. package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
  151. package/dist/index-knh4y330.js +566 -0
  152. package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
  153. package/dist/{index-gg8j07zz.js → index-mmyh6d8f.js} +4 -4
  154. package/dist/index-pavzsdc6.js +17 -0
  155. package/dist/{index-0c82743p.js → index-pdecwzrd.js} +17 -15
  156. package/dist/index-pg50n748.js +1060 -0
  157. package/dist/{index-92bp57hg.js → index-q2tqeqde.js} +123 -80
  158. package/dist/{index-rrrsepyw.js → index-q7h7csab.js} +90 -85
  159. package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
  160. package/dist/{index-6wkcswft.js → index-ty64eqcn.js} +28 -18
  161. package/dist/{index-adwfkpex.js → index-yq8n9qcb.js} +23 -23
  162. package/dist/{index-9pk9exrb.js → index-z8e0psj8.js} +18 -18
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +586 -344
  165. package/dist/logger-d3wex3dz.js +20 -0
  166. package/dist/message-index-bounded-7ezbgddp.js +124 -0
  167. package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-brbd63hv.js} +8 -6
  168. package/dist/migration-worker.js +25 -18
  169. package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  170. package/dist/plugin/dream-timer.d.ts +1 -1
  171. package/dist/plugin/dream-timer.d.ts.map +1 -1
  172. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -0
  173. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  174. package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
  175. package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
  176. package/dist/plugin/host-stall-profiler.d.ts +2 -95
  177. package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
  178. package/dist/plugin/messages-transform.d.ts +0 -13
  179. package/dist/plugin/messages-transform.d.ts.map +1 -1
  180. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  181. package/dist/plugin/tool-registry.d.ts.map +1 -1
  182. package/dist/project-embedding-registry-7qzptcw7.js +88 -0
  183. package/dist/raw-ordinal-warmup-worker.js +60 -0
  184. package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-6k83m4fj.js} +15 -9
  185. package/dist/read-session-raw-3g9qy1xa.js +58 -0
  186. package/dist/recomp-orchestrator-d3fp1cy0.js +57 -0
  187. package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-5ffqq32m.js} +4 -2
  188. package/dist/search-epax1ecv.js +45 -0
  189. package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-erecz4y4.js} +10 -7
  190. package/dist/shared/conflict-detector.d.ts.map +1 -1
  191. package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
  192. package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
  193. package/dist/shared/host-stall-profiler-common.d.ts +58 -0
  194. package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
  195. package/dist/shared/host-stall-profiler-node.d.ts +36 -0
  196. package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
  197. package/dist/shared/host-stall-profiler-report.d.ts +68 -0
  198. package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
  199. package/dist/shared/host-stall-profiler.d.ts +5 -0
  200. package/dist/shared/host-stall-profiler.d.ts.map +1 -0
  201. package/dist/shared/model-resolution.d.ts +2 -3
  202. package/dist/shared/model-resolution.d.ts.map +1 -1
  203. package/dist/shared/sqlite.d.ts +30 -0
  204. package/dist/shared/sqlite.d.ts.map +1 -1
  205. package/dist/shared/stable-json.d.ts.map +1 -1
  206. package/dist/shared/user-facing-codes.d.ts +0 -5
  207. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  208. package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  209. package/dist/sqlite-mhjkerzq.js +46 -0
  210. package/dist/storage-memory-07fx57k6.js +71 -0
  211. package/dist/storage-tags-d3b0v2ss.js +131 -0
  212. package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
  213. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  214. package/dist/tools/ctx-note/constants.d.ts +4 -0
  215. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  216. package/dist/tools/ctx-note/tools.d.ts +1 -0
  217. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  218. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  219. package/dist/tools/parameter-descriptions.d.ts +2 -2
  220. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  221. package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-spcy2qre.js} +35 -20
  222. package/dist/transformers-node-wasm.js +18415 -18415
  223. package/dist/v2/auto-search-worker.js +27 -30
  224. package/dist/v2/{context-14v1hr8b.js → context-sf98kstd.js} +3737 -3004
  225. package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-3vc0y84t.js} +4 -3
  226. package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
  227. package/dist/v2/embedding-backfill-vn8g1nh1.js +21 -0
  228. package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
  229. package/dist/v2/embedding-worker.js +12 -9
  230. package/dist/v2/fold/host-media.d.ts +4 -0
  231. package/dist/v2/fold/host-media.d.ts.map +1 -1
  232. package/dist/v2/fold/memory-cache.d.ts +70 -0
  233. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  234. package/dist/v2/fold/native-codec.d.ts +10 -0
  235. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  236. package/dist/v2/fold/native-replay.d.ts +58 -0
  237. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  238. package/dist/v2/fold/policy.d.ts +24 -0
  239. package/dist/v2/fold/policy.d.ts.map +1 -0
  240. package/dist/v2/harness-e4avh192.js +10 -0
  241. package/dist/v2/hooks/context.d.ts +2 -2
  242. package/dist/v2/hooks/context.d.ts.map +1 -1
  243. package/dist/v2/hooks/dream-manual.d.ts +1 -1
  244. package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
  245. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  246. package/dist/v2/hooks/dream-trigger.d.ts +1 -2
  247. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  248. package/dist/v2/hooks/payload.d.ts.map +1 -1
  249. package/dist/v2/hooks/tools.d.ts.map +1 -1
  250. package/dist/v2/hooks/types.d.ts +6 -0
  251. package/dist/v2/hooks/types.d.ts.map +1 -1
  252. package/dist/v2/logger-mxd0ym09.js +19 -0
  253. package/dist/v2/message-index-bounded-dy3s2k1e.js +123 -0
  254. package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
  255. package/dist/v2/migration-worker.js +24 -17
  256. package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  257. package/dist/v2/project-embedding-registry-1tgba5dv.js +86 -0
  258. package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
  259. package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-rh4khdkv.js} +14 -8
  260. package/dist/v2/read-session-raw-bsbmf0vj.js +57 -0
  261. package/dist/v2/recomp-orchestrator-az61rfcg.js +57 -0
  262. package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-73ax1p5v.js} +3 -3
  263. package/dist/v2/search-nzkwrc6n.js +45 -0
  264. package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-6km439kn.js} +9 -8
  265. package/dist/{index-5eqk6z3s.js → v2/server-1r6pmz4f.js} +301 -27
  266. package/dist/v2/server-2bvekkfy.js +11 -0
  267. package/dist/v2/server-2fbhp79z.js +3205 -0
  268. package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
  269. package/dist/v2/server-4dhv7mqz.js +131 -0
  270. package/dist/v2/{server-y10vbq6y.js → server-4k748ke6.js} +11 -1053
  271. package/dist/v2/{server-vs5gpnd4.js → server-52awr2mw.js} +81 -145
  272. package/dist/v2/{server-1qbnzc80.js → server-5m3dt5r1.js} +136 -148
  273. package/dist/v2/server-686jg6eb.js +3508 -0
  274. package/dist/v2/server-7jzrrxap.js +931 -0
  275. package/dist/v2/server-7wwc2nga.js +3023 -0
  276. package/dist/v2/server-8ajstryz.js +18 -0
  277. package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
  278. package/dist/v2/{server-d0sraw7m.js → server-8pyt7hev.js} +291 -286
  279. package/dist/v2/server-8tqanswc.js +984 -0
  280. package/dist/v2/{server-14vq4kpm.js → server-aan4q8mx.js} +3 -3
  281. package/dist/v2/server-d9vfe7xq.js +16 -0
  282. package/dist/{index-x3kwrmqk.js → v2/server-e0vdaae2.js} +35 -792
  283. package/dist/v2/server-ezhze64f.js +1048 -0
  284. package/dist/v2/server-fb3zxn06.js +13 -0
  285. package/dist/v2/server-fr0wbhdn.js +43 -0
  286. package/dist/v2/server-g5r0n3b6.js +1137 -0
  287. package/dist/v2/server-gjcr4w98.js +154 -0
  288. package/dist/v2/server-k228xhjg.js +171 -0
  289. package/dist/v2/{server-nf82q6pt.js → server-k8x2rbxc.js} +5946 -5602
  290. package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
  291. package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
  292. package/dist/v2/server-pavzsdc6.js +17 -0
  293. package/dist/v2/{server-e0c1b7a7.js → server-psqc7e9n.js} +122 -79
  294. package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
  295. package/dist/v2/server-qye6ykf7.js +120 -0
  296. package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
  297. package/dist/v2/server-sggvvzhb.js +759 -0
  298. package/dist/v2/{server-cpepxy2q.js → server-v06jcv0w.js} +14 -12
  299. package/dist/v2/server-vqpf3167.js +1048 -0
  300. package/dist/v2/{server-rz514f14.js → server-x2g40a71.js} +2044 -2060
  301. package/dist/v2/{server-vd4e7174.js → server-xdfwt6kh.js} +20 -16
  302. package/dist/v2/{server-efhwzx05.js → server-xxm59eww.js} +23 -23
  303. package/dist/v2/server-yczc713m.js +564 -0
  304. package/dist/v2/{server-fcdehk1s.js → server-z2037m6z.js} +4 -4
  305. package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
  306. package/dist/v2/{server-6r257mf5.js → server-zxhgvsf9.js} +3 -3
  307. package/dist/v2/server.js +16 -14
  308. package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  309. package/dist/v2/sqlite-mhjkerzq.js +46 -0
  310. package/dist/v2/storage-memory-07fx57k6.js +71 -0
  311. package/dist/v2/storage-tags-w4tv77sn.js +130 -0
  312. package/dist/v2/store-reader.d.ts +16 -0
  313. package/dist/v2/store-reader.d.ts.map +1 -1
  314. package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
  315. package/dist/v2/transformers-node-wasm.js +18415 -18415
  316. package/dist/v2/tui/index.d.ts.map +1 -1
  317. package/dist/v2/tui/types.d.ts +1 -10
  318. package/dist/v2/tui/types.d.ts.map +1 -1
  319. package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-mz7efs7w.js} +51 -30
  320. package/dist/wrapup-orchestrator-amzta1t4.js +44 -0
  321. package/package.json +4 -3
  322. package/src/agents/magic-context-prompt.ts +27 -2
  323. package/src/agents/smart-notes-enabled.test.ts +294 -0
  324. package/src/agents/smart-notes-on.golden.json +70 -0
  325. package/src/config/index.test.ts +67 -1
  326. package/src/config/index.ts +2 -0
  327. package/src/config/latch-permanence-guard.test.ts +4 -0
  328. package/src/config/mural-model-deprecation.ts +24 -0
  329. package/src/config/project-security.hostile-matrix.test.ts +4 -44
  330. package/src/config/project-security.test.ts +9 -14
  331. package/src/config/project-security.ts +13 -55
  332. package/src/config/schema/magic-context.test.ts +2 -2
  333. package/src/config/schema/magic-context.ts +16 -10
  334. package/src/features/magic-context/dreamer/task-registry.ts +6 -0
  335. package/src/shared/conflict-detector.test.ts +56 -0
  336. package/src/shared/conflict-detector.ts +16 -5
  337. package/src/shared/host-stall-profiler-bun.ts +358 -0
  338. package/src/shared/host-stall-profiler-common.ts +159 -0
  339. package/src/shared/host-stall-profiler-node.test.ts +234 -0
  340. package/src/shared/host-stall-profiler-node.ts +274 -0
  341. package/src/shared/host-stall-profiler-report.ts +248 -0
  342. package/src/shared/host-stall-profiler.ts +57 -0
  343. package/src/shared/model-resolution.test.ts +54 -17
  344. package/src/shared/model-resolution.ts +6 -17
  345. package/src/shared/sqlite.test.ts +52 -0
  346. package/src/shared/sqlite.ts +339 -23
  347. package/src/shared/stable-json-linear.test.ts +109 -0
  348. package/src/shared/stable-json.ts +37 -7
  349. package/src/shared/user-facing-codes.ts +2 -6
  350. package/src/shared/write-transaction-attribution.test.ts +2 -2
  351. package/src/v2/tui/host-contract.test.ts +41 -67
  352. package/src/v2/tui/index.ts +6 -214
  353. package/src/v2/tui/types.ts +5 -17
  354. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
  355. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
  356. package/dist/features/magic-context/checkout-claim.d.ts +0 -155
  357. package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
  358. package/dist/index-bb36vgr3.js +0 -6608
  359. package/dist/index-fnn5pjtt.js +0 -6554
  360. package/dist/recomp-orchestrator-rervg6q4.js +0 -42
  361. package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
  362. package/dist/v2/server-3trjk1hx.js +0 -6360
  363. package/dist/v2/server-nm9n3aqq.js +0 -6461
  364. package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
  365. /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
  366. /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
@@ -1,148 +1,9 @@
1
1
  import {
2
- estimateTokens
3
- } from "./server-51dv1pr5.js";
4
- import {
5
- sessionLog
6
- } from "./server-1qbnzc80.js";
2
+ sessionLog2
3
+ } from "./server-5m3dt5r1.js";
7
4
  import {
8
5
  isKnownAutocommit
9
- } from "./server-ajzeteqw.js";
10
-
11
- // src/features/magic-context/tool-definition-tokens.ts
12
- import { createHash } from "node:crypto";
13
-
14
- // src/shared/stable-json.ts
15
- function stableStringify(value, seen = new WeakSet) {
16
- if (value === undefined)
17
- return "undefined";
18
- if (value === null || typeof value !== "object")
19
- return JSON.stringify(value) ?? String(value);
20
- if (seen.has(value))
21
- return '"[Circular]"';
22
- seen.add(value);
23
- if (Array.isArray(value)) {
24
- return `[${value.map((item) => stableStringify(item, seen)).join(",")}]`;
25
- }
26
- const entries = Object.entries(value).sort(([a], [b]) => {
27
- if (a < b)
28
- return -1;
29
- if (a > b)
30
- return 1;
31
- return 0;
32
- });
33
- return `{${entries.map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child, seen)}`).join(",")}}`;
34
- }
35
-
36
- // src/features/magic-context/tool-definition-tokens.ts
37
- var measurements = new Map;
38
- var fingerprints = new Map;
39
- var persistenceDb = null;
40
- var cachedInsertStmt = null;
41
- function keyFor(providerID, modelID, agentName) {
42
- const agent = agentName && agentName.length > 0 ? agentName : "default";
43
- return `${providerID}/${modelID}/${agent}`;
44
- }
45
- function fingerprintFor(description, parameters) {
46
- return createHash("sha256").update(description).update("\x00").update(stableStringify(parameters)).digest("hex");
47
- }
48
- function getCurrentToolSetHash(providerID, modelID, agentName) {
49
- if (!providerID || !modelID)
50
- return "";
51
- const toolIds = measurements.get(keyFor(providerID, modelID, agentName));
52
- if (!toolIds || toolIds.size === 0)
53
- return "";
54
- return createHash("sha256").update(Array.from(toolIds.keys()).sort().join("\x00")).digest("hex");
55
- }
56
- function getToolDefinitionMeasurementSignature(providerID, modelID, agentName) {
57
- const key = keyFor(providerID, modelID, agentName);
58
- const measured = measurements.get(key);
59
- const observed = fingerprints.get(key);
60
- if (!measured || !observed || [...measured.keys()].some((id) => !observed.has(id)))
61
- return;
62
- return createHash("sha256").update(JSON.stringify([...measured.keys()].sort().map((id) => [id, observed.get(id)]))).digest("hex");
63
- }
64
- function setDatabase(db) {
65
- persistenceDb = db;
66
- cachedInsertStmt = null;
67
- }
68
- function loadToolDefinitionMeasurements(db) {
69
- let rows = [];
70
- try {
71
- rows = db.prepare("SELECT provider_id, model_id, agent_name, tool_id, token_count FROM tool_definition_measurements").all();
72
- } catch {
73
- return;
74
- }
75
- for (const row of rows) {
76
- const key = keyFor(row.provider_id, row.model_id, row.agent_name);
77
- let inner = measurements.get(key);
78
- if (!inner) {
79
- inner = new Map;
80
- measurements.set(key, inner);
81
- }
82
- inner.set(row.tool_id, row.token_count);
83
- }
84
- }
85
- function recordToolDefinition(providerID, modelID, agentName, toolID, description, parameters) {
86
- if (!providerID || !modelID || !toolID)
87
- return;
88
- const key = keyFor(providerID, modelID, agentName);
89
- const fp = fingerprintFor(description ?? "", parameters);
90
- let innerFp = fingerprints.get(key);
91
- if (innerFp && innerFp.get(toolID) === fp)
92
- return;
93
- let paramsText = "";
94
- try {
95
- paramsText = parameters === undefined ? "" : JSON.stringify(parameters);
96
- } catch {
97
- paramsText = "";
98
- }
99
- const tokens = estimateTokens(description ?? "") + estimateTokens(paramsText);
100
- let inner = measurements.get(key);
101
- if (!inner) {
102
- inner = new Map;
103
- measurements.set(key, inner);
104
- }
105
- inner.set(toolID, tokens);
106
- if (!innerFp) {
107
- innerFp = new Map;
108
- fingerprints.set(key, innerFp);
109
- }
110
- innerFp.set(toolID, fp);
111
- if (persistenceDb) {
112
- try {
113
- const agent = agentName && agentName.length > 0 ? agentName : "default";
114
- if (!cachedInsertStmt) {
115
- cachedInsertStmt = persistenceDb.prepare(`INSERT OR REPLACE INTO tool_definition_measurements
116
- (provider_id, model_id, agent_name, tool_id, token_count, recorded_at)
117
- VALUES (?, ?, ?, ?, ?, ?)`);
118
- }
119
- cachedInsertStmt.run(providerID, modelID, agent, toolID, tokens, Date.now());
120
- } catch {
121
- cachedInsertStmt = null;
122
- }
123
- }
124
- }
125
- function getLargestMeasuredToolDefinitionTokens() {
126
- let largest = 0;
127
- for (const tools of measurements.values()) {
128
- let total = 0;
129
- for (const tokens of tools.values())
130
- total += tokens;
131
- largest = Math.max(largest, total);
132
- }
133
- return largest > 0 ? largest : undefined;
134
- }
135
- function getMeasuredToolDefinitionTokens(providerID, modelID, agentName) {
136
- if (!providerID || !modelID)
137
- return;
138
- const inner = measurements.get(keyFor(providerID, modelID, agentName));
139
- if (!inner || inner.size === 0)
140
- return;
141
- let total = 0;
142
- for (const tokens of inner.values())
143
- total += tokens;
144
- return total;
145
- }
6
+ } from "./server-8ajstryz.js";
146
7
 
147
8
  // src/features/magic-context/storage-schema-helpers.ts
148
9
  var columnCaches = new WeakMap;
@@ -416,11 +277,11 @@ function installV95PerfSchema(db, verifyExistingMap = false, allowCreateMap = tr
416
277
  try {
417
278
  entries = JSON.parse(row.entries);
418
279
  } catch {
419
- sessionLog(row.session_id, "v95 temporal metadata: malformed JSON skipped; original blob retained");
280
+ sessionLog2(row.session_id, "v95 temporal metadata: malformed JSON skipped; original blob retained");
420
281
  continue;
421
282
  }
422
283
  if (!Array.isArray(entries)) {
423
- sessionLog(row.session_id, "v95 temporal metadata: non-array JSON skipped; original blob retained");
284
+ sessionLog2(row.session_id, "v95 temporal metadata: non-array JSON skipped; original blob retained");
424
285
  continue;
425
286
  }
426
287
  const kept = [];
@@ -490,4 +351,79 @@ function tagOrderConstraintIndex(db) {
490
351
  throw new Error("tags lacks its UNIQUE(session_id, tag_number) ordering constraint");
491
352
  }
492
353
 
493
- export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, getCurrentToolSetHash, getToolDefinitionMeasurementSignature, setDatabase, loadToolDefinitionMeasurements, recordToolDefinition, getLargestMeasuredToolDefinitionTokens, getMeasuredToolDefinitionTokens };
354
+ // src/features/magic-context/storage-tag-identity-revision.ts
355
+ var TAG_IDENTITY_REVISION_PREFIX = "tag_identity_revision:";
356
+ function tagIdentityRevisionKey(sessionId) {
357
+ return `${TAG_IDENTITY_REVISION_PREFIX}${sessionId}`;
358
+ }
359
+ var BUMP = (session) => `INSERT INTO schema_migrations_meta (key, value)
360
+ VALUES ('${TAG_IDENTITY_REVISION_PREFIX}' || ${session}, '1')
361
+ ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT)`;
362
+ var TRIGGER_SQL = `CREATE TEMP TRIGGER IF NOT EXISTS mc_tag_identity_revision_au
363
+ AFTER UPDATE OF id, session_id, message_id, tag_number, type, tool_owner_message_id, reasoning_token_count
364
+ ON main.tags
365
+ BEGIN
366
+ ${BUMP("OLD.session_id")};
367
+ INSERT INTO schema_migrations_meta (key, value)
368
+ SELECT '${TAG_IDENTITY_REVISION_PREFIX}' || NEW.session_id, '1'
369
+ WHERE NEW.session_id IS NOT OLD.session_id
370
+ ON CONFLICT(key) DO UPDATE SET value = CAST(CAST(value AS INTEGER) + 1 AS TEXT);
371
+ END`;
372
+ function installTagIdentityRevisionTrigger(db) {
373
+ db.exec(TRIGGER_SQL);
374
+ }
375
+ function deleteTagIdentityRevisions(db, sessionIds) {
376
+ const statement = db.prepare("DELETE FROM schema_migrations_meta WHERE key = ? AND NOT EXISTS (SELECT 1 FROM tags WHERE session_id = ?)");
377
+ for (const sessionId of sessionIds)
378
+ statement.run(tagIdentityRevisionKey(sessionId), sessionId);
379
+ }
380
+
381
+ // src/shared/stable-json.ts
382
+ function stableStringify(value, seen = new WeakSet) {
383
+ const pieces = [];
384
+ writeStable(value, seen, pieces);
385
+ return pieces.join("");
386
+ }
387
+ function writeStable(value, seen, pieces) {
388
+ if (value === undefined) {
389
+ pieces.push("undefined");
390
+ return;
391
+ }
392
+ if (value === null || typeof value !== "object") {
393
+ pieces.push(JSON.stringify(value) ?? String(value));
394
+ return;
395
+ }
396
+ if (seen.has(value)) {
397
+ pieces.push('"[Circular]"');
398
+ return;
399
+ }
400
+ seen.add(value);
401
+ if (Array.isArray(value)) {
402
+ pieces.push("[");
403
+ for (let index = 0;index < value.length; index += 1) {
404
+ if (index > 0)
405
+ pieces.push(",");
406
+ if (index in value)
407
+ writeStable(value[index], seen, pieces);
408
+ }
409
+ pieces.push("]");
410
+ return;
411
+ }
412
+ const entries = Object.entries(value).sort(([a], [b]) => {
413
+ if (a < b)
414
+ return -1;
415
+ if (a > b)
416
+ return 1;
417
+ return 0;
418
+ });
419
+ pieces.push("{");
420
+ entries.forEach(([key, child], index) => {
421
+ if (index > 0)
422
+ pieces.push(",");
423
+ pieces.push(JSON.stringify(key), ":");
424
+ writeStable(child, seen, pieces);
425
+ });
426
+ pieces.push("}");
427
+ }
428
+
429
+ export { getTableColumnNames, ensureColumn, healAllNullColumns, stableStringify, getTemporalDecisions, observeTemporalDecisions, freezeTemporalDecisions, installV95PerfSchema, tagOrderConstraintIndex, tagIdentityRevisionKey, installTagIdentityRevisionTrigger, deleteTagIdentityRevisions };
@@ -1,19 +1,10 @@
1
- // src/shared/harness.ts
2
- var currentHarness = "opencode";
3
- var harnessLocked = false;
4
- function setHarness(value) {
5
- if (harnessLocked && currentHarness !== value) {
6
- throw new Error(`Magic Context: harness already locked to "${currentHarness}"; cannot change to "${value}"`);
7
- }
8
- currentHarness = value;
9
- harnessLocked = true;
10
- }
11
- function getHarness() {
12
- return currentHarness;
13
- }
14
- function harnessOwnsOpenCodeStore(harness = currentHarness) {
15
- return harness === "opencode" || harness === "opencode2";
16
- }
1
+ import {
2
+ getHarness2
3
+ } from "./server-pavzsdc6.js";
4
+
5
+ // src/shared/logger.ts
6
+ import * as fs from "node:fs";
7
+ import * as path2 from "node:path";
17
8
 
18
9
  // src/shared/data-path.ts
19
10
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -28,10 +19,10 @@ var registeredTempDirs = new Set;
28
19
  function getDataDir() {
29
20
  return process.env.XDG_DATA_HOME ?? path.join(os.homedir(), ".local", "share");
30
21
  }
31
- function getMagicContextTempDir(harness = getHarness()) {
22
+ function getMagicContextTempDir(harness = getHarness2()) {
32
23
  return path.join(os.tmpdir(), harness, "magic-context");
33
24
  }
34
- function getMagicContextLogPath(harness = getHarness()) {
25
+ function getMagicContextLogPath(harness = getHarness2()) {
35
26
  const envPath = process.env.MAGIC_CONTEXT_LOG_PATH?.trim();
36
27
  if (envPath)
37
28
  return envPath;
@@ -112,14 +103,6 @@ function getLegacyOpenCodeMagicContextStorageDir() {
112
103
  return path.join(getOpenCodeStorageDir(), "plugin", "magic-context");
113
104
  }
114
105
 
115
- // src/shared/stale-plugin-build.ts
116
- import { posix } from "node:path";
117
- import { fileURLToPath } from "node:url";
118
-
119
- // src/shared/logger.ts
120
- import * as fs from "node:fs";
121
- import * as path2 from "node:path";
122
-
123
106
  // src/shared/redaction.ts
124
107
  import { homedir as homedir2, userInfo } from "node:os";
125
108
  function escapeRegex(value) {
@@ -337,6 +320,122 @@ function sanitizeConfigValue(value, keyPath = []) {
337
320
  return value;
338
321
  }
339
322
 
323
+ // src/shared/stale-plugin-build.ts
324
+ import { posix } from "node:path";
325
+ import { fileURLToPath } from "node:url";
326
+ var STATE = Symbol.for("magic-context.stale-plugin-build");
327
+ function state() {
328
+ const globals = globalThis;
329
+ return globals[STATE] ??= {
330
+ hosts: new Map,
331
+ loggedChunks: new Set,
332
+ notified: false
333
+ };
334
+ }
335
+ function absolutePath(value) {
336
+ let path = value;
337
+ if (path.startsWith("file:")) {
338
+ try {
339
+ path = fileURLToPath(path);
340
+ } catch {
341
+ return;
342
+ }
343
+ }
344
+ path = path.replaceAll("\\", "/").replace(/^\/(?=[A-Za-z]:\/)/, "");
345
+ if (!path.startsWith("/") && !/^[A-Za-z]:\//.test(path))
346
+ return;
347
+ path = posix.normalize(path);
348
+ return /^[A-Za-z]:\//.test(path) ? path.toLowerCase() : path;
349
+ }
350
+ function distForModule(moduleUrl) {
351
+ const path = absolutePath(moduleUrl);
352
+ if (!path)
353
+ return;
354
+ const dist = path.lastIndexOf("/dist/");
355
+ return dist < 0 ? undefined : path.slice(0, dist + "/dist".length);
356
+ }
357
+ function stalePluginBuildGuidance(harness) {
358
+ return harness === "pi" || harness === "omp" ? "Magic Context was rebuilt while this Pi was running; type /reload to load the new build" : "Magic Context was rebuilt while this OpenCode host was running; restart the host to load the new build";
359
+ }
360
+ function deliverNotice(host) {
361
+ const current = state();
362
+ if (current.notified || !current.pendingNotice || !host.notify)
363
+ return;
364
+ current.notified = true;
365
+ try {
366
+ Promise.resolve(host.notify(current.pendingNotice)).catch(() => {});
367
+ } catch {}
368
+ }
369
+ function registerStalePluginBuildHost(options) {
370
+ const dist = distForModule(options.moduleUrl);
371
+ if (!dist)
372
+ return;
373
+ const host = { ...options, dist };
374
+ state().hosts.set(dist, host);
375
+ deliverNotice(host);
376
+ }
377
+ function classifyStalePluginBuild(error) {
378
+ if (error instanceof StalePluginBuildError)
379
+ return error.build;
380
+ const message = error instanceof Error ? error.message : String(error);
381
+ const missing = message.match(/(?:Cannot find module|ENOENT reading)\s+(['"])(.*?)\1/);
382
+ if (!missing)
383
+ return null;
384
+ let chunk = absolutePath(missing[2]);
385
+ if (!chunk && /^\.\.?[/\\]/.test(missing[2])) {
386
+ const importer = message.slice((missing.index ?? 0) + missing[0].length).match(/(?:imported from|from)\s+(?:['"]([^'"]+)['"]|([^\n]+))/);
387
+ const from = importer && absolutePath((importer[1] ?? importer[2]).trim());
388
+ if (from)
389
+ chunk = absolutePath(posix.join(posix.dirname(from), missing[2].replaceAll("\\", "/")));
390
+ }
391
+ if (!chunk)
392
+ return null;
393
+ for (const host of state().hosts.values()) {
394
+ if (chunk.startsWith(`${host.dist}/`)) {
395
+ return { chunk, guidance: stalePluginBuildGuidance(host.harness) };
396
+ }
397
+ }
398
+ const ownDist = distForModule(import.meta.url);
399
+ return ownDist && chunk.startsWith(`${ownDist}/`) ? { chunk, guidance: stalePluginBuildGuidance(getHarness2()) } : null;
400
+ }
401
+
402
+ class StalePluginBuildError extends Error {
403
+ build;
404
+ constructor(build) {
405
+ super(build.guidance);
406
+ this.build = build;
407
+ this.name = "StalePluginBuildError";
408
+ }
409
+ }
410
+ function stalePluginBuildDiagnostic(error) {
411
+ const pending = state().pendingNotice;
412
+ const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
413
+ if (pending && message.includes(pending))
414
+ return null;
415
+ const build = classifyStalePluginBuild(error);
416
+ if (!build)
417
+ return;
418
+ const current = state();
419
+ current.pendingNotice ??= build.guidance;
420
+ for (const host of current.hosts.values())
421
+ deliverNotice(host);
422
+ if (current.loggedChunks.has(build.chunk))
423
+ return null;
424
+ current.loggedChunks.add(build.chunk);
425
+ return `[magic-context] stale plugin build: missing ${build.chunk.replace(/[\r\n]/g, " ")}; ${build.guidance}`;
426
+ }
427
+ async function importPluginModule(load) {
428
+ try {
429
+ return await load();
430
+ } catch (error) {
431
+ const build = classifyStalePluginBuild(error);
432
+ if (!build)
433
+ throw error;
434
+ log2("[magic-context] lazy import failed", error);
435
+ throw new StalePluginBuildError(build);
436
+ }
437
+ }
438
+
340
439
  // src/shared/logger.ts
341
440
  var isTestEnv = false;
342
441
  var buffer = [];
@@ -480,10 +579,10 @@ function scheduleFlush() {
480
579
  }, FLUSH_INTERVAL_MS);
481
580
  }
482
581
  var lineForwarder = null;
483
- function setLogLineForwarder(forward) {
582
+ function setLogLineForwarder2(forward) {
484
583
  lineForwarder = forward;
485
584
  }
486
- function writeForwardedLogLine(line) {
585
+ function writeForwardedLogLine2(line) {
487
586
  if (isTestEnv)
488
587
  return;
489
588
  try {
@@ -496,7 +595,7 @@ function writeForwardedLogLine(line) {
496
595
  scheduleFlush();
497
596
  } catch {}
498
597
  }
499
- function log(message, data) {
598
+ function log2(message, data) {
500
599
  try {
501
600
  let diagnostic = stalePluginBuildDiagnostic(data);
502
601
  if (diagnostic === undefined)
@@ -528,135 +627,24 @@ ${data.stack}` : ""}`)}` : ` ${JSON.stringify(sanitizeConfigValue(data))}`;
528
627
  }
529
628
  } catch {}
530
629
  }
531
- function sessionLog(sessionId, message, data) {
532
- log(`[magic-context][${sessionId}] ${message}`, data);
630
+ function sessionLog2(sessionId, message, data) {
631
+ log2(`[magic-context][${sessionId}] ${message}`, data);
533
632
  }
534
- function getLoggerDiagnostics() {
633
+ function getLoggerDiagnostics2() {
535
634
  return {
536
635
  swallowedWriteCount,
537
636
  lastErrorMessage,
538
637
  lastErrorTime
539
638
  };
540
639
  }
541
- function flushLogger() {
640
+ function flushLogger2() {
542
641
  flush();
543
642
  }
643
+ function getLogFilePath2() {
644
+ return getMagicContextLogPath();
645
+ }
544
646
  if (!isTestEnv) {
545
647
  process.on("exit", flush);
546
648
  }
547
649
 
548
- // src/shared/stale-plugin-build.ts
549
- var STATE = Symbol.for("magic-context.stale-plugin-build");
550
- function state() {
551
- const globals = globalThis;
552
- return globals[STATE] ??= {
553
- hosts: new Map,
554
- loggedChunks: new Set,
555
- notified: false
556
- };
557
- }
558
- function absolutePath(value) {
559
- let path = value;
560
- if (path.startsWith("file:")) {
561
- try {
562
- path = fileURLToPath(path);
563
- } catch {
564
- return;
565
- }
566
- }
567
- path = path.replaceAll("\\", "/").replace(/^\/(?=[A-Za-z]:\/)/, "");
568
- if (!path.startsWith("/") && !/^[A-Za-z]:\//.test(path))
569
- return;
570
- path = posix.normalize(path);
571
- return /^[A-Za-z]:\//.test(path) ? path.toLowerCase() : path;
572
- }
573
- function distForModule(moduleUrl) {
574
- const path = absolutePath(moduleUrl);
575
- if (!path)
576
- return;
577
- const dist = path.lastIndexOf("/dist/");
578
- return dist < 0 ? undefined : path.slice(0, dist + "/dist".length);
579
- }
580
- function stalePluginBuildGuidance(harness) {
581
- return harness === "pi" || harness === "omp" ? "Magic Context was rebuilt while this Pi was running; type /reload to load the new build" : "Magic Context was rebuilt while this OpenCode host was running; restart the host to load the new build";
582
- }
583
- function deliverNotice(host) {
584
- const current = state();
585
- if (current.notified || !current.pendingNotice || !host.notify)
586
- return;
587
- current.notified = true;
588
- try {
589
- Promise.resolve(host.notify(current.pendingNotice)).catch(() => {});
590
- } catch {}
591
- }
592
- function registerStalePluginBuildHost(options) {
593
- const dist = distForModule(options.moduleUrl);
594
- if (!dist)
595
- return;
596
- const host = { ...options, dist };
597
- state().hosts.set(dist, host);
598
- deliverNotice(host);
599
- }
600
- function classifyStalePluginBuild(error) {
601
- if (error instanceof StalePluginBuildError)
602
- return error.build;
603
- const message = error instanceof Error ? error.message : String(error);
604
- const missing = message.match(/(?:Cannot find module|ENOENT reading)\s+(['"])(.*?)\1/);
605
- if (!missing)
606
- return null;
607
- let chunk = absolutePath(missing[2]);
608
- if (!chunk && /^\.\.?[/\\]/.test(missing[2])) {
609
- const importer = message.slice((missing.index ?? 0) + missing[0].length).match(/(?:imported from|from)\s+(?:['"]([^'"]+)['"]|([^\n]+))/);
610
- const from = importer && absolutePath((importer[1] ?? importer[2]).trim());
611
- if (from)
612
- chunk = absolutePath(posix.join(posix.dirname(from), missing[2].replaceAll("\\", "/")));
613
- }
614
- if (!chunk)
615
- return null;
616
- for (const host of state().hosts.values()) {
617
- if (chunk.startsWith(`${host.dist}/`)) {
618
- return { chunk, guidance: stalePluginBuildGuidance(host.harness) };
619
- }
620
- }
621
- const ownDist = distForModule(import.meta.url);
622
- return ownDist && chunk.startsWith(`${ownDist}/`) ? { chunk, guidance: stalePluginBuildGuidance(getHarness()) } : null;
623
- }
624
-
625
- class StalePluginBuildError extends Error {
626
- build;
627
- constructor(build) {
628
- super(build.guidance);
629
- this.build = build;
630
- this.name = "StalePluginBuildError";
631
- }
632
- }
633
- function stalePluginBuildDiagnostic(error) {
634
- const pending = state().pendingNotice;
635
- const message = error instanceof Error ? error.message : typeof error === "string" ? error : "";
636
- if (pending && message.includes(pending))
637
- return null;
638
- const build = classifyStalePluginBuild(error);
639
- if (!build)
640
- return;
641
- const current = state();
642
- current.pendingNotice ??= build.guidance;
643
- for (const host of current.hosts.values())
644
- deliverNotice(host);
645
- if (current.loggedChunks.has(build.chunk))
646
- return null;
647
- current.loggedChunks.add(build.chunk);
648
- return `[magic-context] stale plugin build: missing ${build.chunk.replace(/[\r\n]/g, " ")}; ${build.guidance}`;
649
- }
650
- async function importPluginModule(load) {
651
- try {
652
- return await load();
653
- } catch (error) {
654
- const build = classifyStalePluginBuild(error);
655
- if (!build)
656
- throw error;
657
- log("[magic-context] lazy import failed", error);
658
- throw new StalePluginBuildError(build);
659
- }
660
- }
661
-
662
- export { setHarness, getHarness, harnessOwnsOpenCodeStore, getDataDir, ensureCortexKitArtifactGitignore, getProjectMagicContextHistorianDir, getMagicContextStorageDir, getLegacyOpenCodeMagicContextStorageDir, sanitizeDiagnosticText, hasShareabilitySensitiveText, registerStalePluginBuildHost, classifyStalePluginBuild, importPluginModule, setLogLineForwarder, writeForwardedLogLine, log, sessionLog, getLoggerDiagnostics, flushLogger };
650
+ export { getDataDir, ensureCortexKitArtifactGitignore, getProjectMagicContextHistorianDir, getMagicContextStorageDir, getLegacyOpenCodeMagicContextStorageDir, sanitizeDiagnosticText, hasShareabilitySensitiveText, registerStalePluginBuildHost, classifyStalePluginBuild, importPluginModule, setLogLineForwarder2, writeForwardedLogLine2, log2, sessionLog2, getLoggerDiagnostics2, flushLogger2, getLogFilePath2 };