@cortexkit/opencode-magic-context 0.47.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/dist/agents/magic-context-prompt.d.ts +1 -1
  2. package/dist/agents/magic-context-prompt.d.ts.map +1 -1
  3. package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
  4. package/dist/auto-search-worker.js +27 -30
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/mural-model-deprecation.d.ts +15 -0
  7. package/dist/config/mural-model-deprecation.d.ts.map +1 -0
  8. package/dist/config/project-security.d.ts +0 -3
  9. package/dist/config/project-security.d.ts.map +1 -1
  10. package/dist/config/schema/magic-context.d.ts +10 -6
  11. package/dist/config/schema/magic-context.d.ts.map +1 -1
  12. package/dist/{conflict-warning-hook-z44ynfz7.js → conflict-warning-hook-kzx4dmk1.js} +12 -10
  13. package/dist/{context-wq4ffwyb.js → context-nj5f293n.js} +2765 -1925
  14. package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-qz5rrr08.js} +4 -3
  15. package/dist/embedding-activity-g1dhes6g.js +10 -0
  16. package/dist/embedding-backfill-aetxv1vt.js +21 -0
  17. package/dist/embedding-cache-mgyr73ef.js +16 -0
  18. package/dist/embedding-worker.js +11 -9
  19. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
  21. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
  23. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
  25. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
  27. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  29. package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
  30. package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
  31. package/dist/features/magic-context/message-index-async.d.ts +16 -3
  32. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  33. package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
  34. package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
  35. package/dist/features/magic-context/message-index.d.ts +7 -1
  36. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  37. package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
  38. package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
  39. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  40. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  41. package/dist/features/magic-context/search-rerank.d.ts +35 -0
  42. package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
  43. package/dist/features/magic-context/search.d.ts +40 -0
  44. package/dist/features/magic-context/search.d.ts.map +1 -1
  45. package/dist/features/magic-context/session-activity.d.ts.map +1 -1
  46. package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
  47. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  48. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  49. package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
  50. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  51. package/dist/features/magic-context/storage-meta-session.d.ts +7 -1
  52. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  53. package/dist/features/magic-context/storage-meta.d.ts +1 -1
  54. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  55. package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
  56. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  57. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +50 -0
  58. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  59. package/dist/features/magic-context/storage-tags.d.ts +153 -4
  60. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  61. package/dist/features/magic-context/storage.d.ts +1 -1
  62. package/dist/features/magic-context/storage.d.ts.map +1 -1
  63. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  64. package/dist/features/magic-context/tagger.d.ts +2 -0
  65. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  66. package/dist/features/magic-context/transform-decision-log.d.ts +4 -1
  67. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  68. package/dist/harness-e4avh192.js +10 -0
  69. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
  70. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
  73. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
  74. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  75. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +34 -3
  77. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/command-handler.d.ts +3 -0
  79. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  80. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  81. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  82. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  83. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
  84. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
  85. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
  87. package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
  88. package/dist/hooks/magic-context/hook.d.ts +3 -2
  89. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  90. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
  92. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
  94. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
  96. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
  98. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
  100. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
  101. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
  102. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
  103. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
  104. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
  105. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
  106. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
  107. package/dist/hooks/magic-context/pass-outcome.d.ts +1 -0
  108. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  109. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  110. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  111. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
  112. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
  113. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
  114. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
  115. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
  116. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
  117. package/dist/hooks/magic-context/read-session-chunk.d.ts +19 -1
  118. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  119. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  120. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  121. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  122. package/dist/hooks/magic-context/read-session-raw.d.ts +118 -1
  123. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  124. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  125. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
  126. package/dist/hooks/magic-context/rust-mode-transform.d.ts +36 -0
  127. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  128. package/dist/hooks/magic-context/sentinel.d.ts +41 -1
  129. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  130. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
  131. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
  132. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
  133. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
  134. package/dist/hooks/magic-context/strip-content.d.ts +14 -2
  135. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  136. package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
  137. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  138. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  139. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  140. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
  141. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  142. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  143. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  144. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  145. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +13 -0
  146. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  147. package/dist/hooks/magic-context/transform.d.ts +9 -2
  148. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  149. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  150. package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
  151. package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
  152. package/dist/{index-5gq3b2ya.js → index-1bt88epp.js} +227 -205
  153. package/dist/{index-cwf6s3ay.js → index-1g30axtz.js} +3279 -2907
  154. package/dist/{index-5a2r0p9f.js → index-1r0k9js3.js} +20 -13
  155. package/dist/index-2bvekkfy.js +11 -0
  156. package/dist/{index-6d9e1m08.js → index-2jcbj7r1.js} +13301 -13225
  157. package/dist/index-2jgwttpt.js +3269 -0
  158. package/dist/index-4dhv7mqz.js +131 -0
  159. package/dist/{index-sj29b3z2.js → index-4mjhqadz.js} +3 -3
  160. package/dist/{index-0c82743p.js → index-57mrqed8.js} +17 -15
  161. package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
  162. package/dist/index-7jzrrxap.js +931 -0
  163. package/dist/index-8ajstryz.js +18 -0
  164. package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
  165. package/dist/{index-6wkcswft.js → index-9qjqq45k.js} +29 -19
  166. package/dist/{index-adwfkpex.js → index-9rt53q79.js} +23 -23
  167. package/dist/index-b7mv1jx3.js +1060 -0
  168. package/dist/index-d9vfe7xq.js +16 -0
  169. package/dist/{index-gg8j07zz.js → index-ezmszwbd.js} +8 -6
  170. package/dist/index-fb3zxn06.js +13 -0
  171. package/dist/index-fr0wbhdn.js +43 -0
  172. package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
  173. package/dist/index-gzcmtmar.js +171 -0
  174. package/dist/{index-w2t4ah5j.js → index-h2py7207.js} +6762 -7400
  175. package/dist/index-h2wc01qk.js +120 -0
  176. package/dist/index-h5zfkjyk.js +1277 -0
  177. package/dist/{index-92bp57hg.js → index-ha87j7a8.js} +1343 -149
  178. package/dist/index-hj2q50k0.js +856 -0
  179. package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
  180. package/dist/index-kmpvemph.js +1314 -0
  181. package/dist/index-kp5qe690.js +3030 -0
  182. package/dist/{index-m5fe6jch.js → index-kq57tdf0.js} +152 -2453
  183. package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
  184. package/dist/{v2/server-njt3np1k.js → index-nm6a8xpd.js} +220 -961
  185. package/dist/{index-hybnrwq0.js → index-nsjyysj0.js} +137 -130
  186. package/dist/index-nydv6g8r.js +3569 -0
  187. package/dist/index-pavzsdc6.js +17 -0
  188. package/dist/index-peshmj6h.js +152 -0
  189. package/dist/index-pxwp2hjk.js +571 -0
  190. package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
  191. package/dist/{v2/server-51dv1pr5.js → index-qx53vezw.js} +301 -27
  192. package/dist/{index-rrrsepyw.js → index-s4j7t92z.js} +90 -85
  193. package/dist/{index-9pk9exrb.js → index-stbr4ce6.js} +18 -18
  194. package/dist/{index-fzbvakh0.js → index-tqf7yg27.js} +3 -3
  195. package/dist/index-vkbqdnkj.js +2307 -0
  196. package/dist/{index-8da2zjhz.js → index-z1tjp257.js} +9 -7
  197. package/dist/index.d.ts.map +1 -1
  198. package/dist/index.js +608 -349
  199. package/dist/logger-ewak5q1s.js +20 -0
  200. package/dist/message-index-bounded-h0mrd4pr.js +124 -0
  201. package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-8x06r9kx.js} +8 -6
  202. package/dist/migration-worker.js +25 -18
  203. package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  204. package/dist/plugin/dream-timer.d.ts +1 -1
  205. package/dist/plugin/dream-timer.d.ts.map +1 -1
  206. package/dist/plugin/hooks/create-session-hooks.d.ts +3 -0
  207. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  208. package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
  209. package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
  210. package/dist/plugin/host-stall-profiler.d.ts +2 -95
  211. package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
  212. package/dist/plugin/messages-transform.d.ts +0 -13
  213. package/dist/plugin/messages-transform.d.ts.map +1 -1
  214. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  215. package/dist/plugin/tool-registry.d.ts.map +1 -1
  216. package/dist/project-embedding-registry-rtt0djyb.js +88 -0
  217. package/dist/raw-ordinal-warmup-worker.js +60 -0
  218. package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-ty89v75e.js} +17 -9
  219. package/dist/read-session-raw-8sjbc9h0.js +60 -0
  220. package/dist/recomp-orchestrator-4f1yyd1q.js +57 -0
  221. package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-q0cyrx3x.js} +4 -2
  222. package/dist/search-pz4f4wge.js +45 -0
  223. package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-38cd5dqt.js} +10 -7
  224. package/dist/shared/auto-search-lifecycle.d.ts +14 -0
  225. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
  226. package/dist/shared/conflict-detector.d.ts.map +1 -1
  227. package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
  228. package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
  229. package/dist/shared/host-stall-profiler-common.d.ts +58 -0
  230. package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
  231. package/dist/shared/host-stall-profiler-node.d.ts +36 -0
  232. package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
  233. package/dist/shared/host-stall-profiler-report.d.ts +68 -0
  234. package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
  235. package/dist/shared/host-stall-profiler.d.ts +5 -0
  236. package/dist/shared/host-stall-profiler.d.ts.map +1 -0
  237. package/dist/shared/logger.d.ts.map +1 -1
  238. package/dist/shared/model-resolution.d.ts +2 -3
  239. package/dist/shared/model-resolution.d.ts.map +1 -1
  240. package/dist/shared/models-dev-temperature.d.ts +18 -0
  241. package/dist/shared/models-dev-temperature.d.ts.map +1 -0
  242. package/dist/shared/project-directory-key.d.ts +16 -0
  243. package/dist/shared/project-directory-key.d.ts.map +1 -1
  244. package/dist/shared/sqlite.d.ts +30 -0
  245. package/dist/shared/sqlite.d.ts.map +1 -1
  246. package/dist/shared/stable-json.d.ts.map +1 -1
  247. package/dist/shared/subagent-temperature.d.ts +46 -0
  248. package/dist/shared/subagent-temperature.d.ts.map +1 -0
  249. package/dist/shared/user-facing-codes.d.ts +0 -5
  250. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  251. package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  252. package/dist/sqlite-mhjkerzq.js +46 -0
  253. package/dist/storage-memory-07fx57k6.js +71 -0
  254. package/dist/storage-tags-k0pda32s.js +133 -0
  255. package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
  256. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  257. package/dist/tools/ctx-note/constants.d.ts +4 -0
  258. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  259. package/dist/tools/ctx-note/tools.d.ts +1 -0
  260. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  261. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  262. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  263. package/dist/tools/ctx-search/types.d.ts +1 -0
  264. package/dist/tools/ctx-search/types.d.ts.map +1 -1
  265. package/dist/tools/parameter-descriptions.d.ts +2 -2
  266. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  267. package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-tck4g20s.js} +35 -20
  268. package/dist/transformers-node-wasm.js +18415 -18415
  269. package/dist/v2/auto-search-worker.js +27 -30
  270. package/dist/v2/{context-14v1hr8b.js → context-crbt6p1y.js} +4708 -4218
  271. package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-fgej9j46.js} +4 -3
  272. package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
  273. package/dist/v2/embedding-backfill-ph1qfyn3.js +21 -0
  274. package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
  275. package/dist/v2/embedding-worker.js +12 -9
  276. package/dist/v2/fold/host-media.d.ts +4 -0
  277. package/dist/v2/fold/host-media.d.ts.map +1 -1
  278. package/dist/v2/fold/memory-cache.d.ts +70 -0
  279. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  280. package/dist/v2/fold/native-codec.d.ts +10 -0
  281. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  282. package/dist/v2/fold/native-replay.d.ts +58 -0
  283. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  284. package/dist/v2/fold/policy.d.ts +24 -0
  285. package/dist/v2/fold/policy.d.ts.map +1 -0
  286. package/dist/v2/harness-e4avh192.js +10 -0
  287. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  288. package/dist/v2/hidden-completion.d.ts +7 -0
  289. package/dist/v2/hidden-completion.d.ts.map +1 -1
  290. package/dist/v2/hooks/context.d.ts +2 -2
  291. package/dist/v2/hooks/context.d.ts.map +1 -1
  292. package/dist/v2/hooks/dream-manual.d.ts +1 -1
  293. package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
  294. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  295. package/dist/v2/hooks/dream-trigger.d.ts +5 -3
  296. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  297. package/dist/v2/hooks/generate.d.ts +9 -2
  298. package/dist/v2/hooks/generate.d.ts.map +1 -1
  299. package/dist/v2/hooks/payload.d.ts.map +1 -1
  300. package/dist/v2/hooks/tools.d.ts.map +1 -1
  301. package/dist/v2/hooks/types.d.ts +6 -0
  302. package/dist/v2/hooks/types.d.ts.map +1 -1
  303. package/dist/v2/logger-pj02s7sr.js +19 -0
  304. package/dist/v2/message-index-bounded-xwqdywxg.js +123 -0
  305. package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-cje68egj.js} +7 -7
  306. package/dist/v2/migration-worker.js +24 -17
  307. package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  308. package/dist/v2/project-embedding-registry-d6m7tyxr.js +86 -0
  309. package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
  310. package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-8p5mdryx.js} +16 -8
  311. package/dist/v2/read-session-raw-j8dvp7f4.js +59 -0
  312. package/dist/v2/recomp-orchestrator-ckfgt6wq.js +57 -0
  313. package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-y3p1hce9.js} +3 -3
  314. package/dist/v2/search-ym8rehhz.js +45 -0
  315. package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-5m0yapqx.js} +9 -8
  316. package/dist/v2/{server-rz514f14.js → server-19zjmn02.js} +2044 -2060
  317. package/dist/v2/server-1tk82krw.js +796 -0
  318. package/dist/v2/server-2bvekkfy.js +11 -0
  319. package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
  320. package/dist/v2/server-2s6ayq3t.js +1048 -0
  321. package/dist/v2/{server-fcdehk1s.js → server-2s9qz6n7.js} +4 -4
  322. package/dist/v2/server-3j4d00kf.js +171 -0
  323. package/dist/v2/{server-14vq4kpm.js → server-3t0q2cqx.js} +3 -3
  324. package/dist/v2/server-4dhv7mqz.js +131 -0
  325. package/dist/v2/server-4ez8mntn.js +3213 -0
  326. package/dist/v2/{server-6r257mf5.js → server-676xw7at.js} +3 -3
  327. package/dist/v2/{server-vs5gpnd4.js → server-6byqfbqf.js} +165 -145
  328. package/dist/v2/server-7ekna9zs.js +120 -0
  329. package/dist/v2/server-7h861yms.js +1272 -0
  330. package/dist/v2/server-7jzrrxap.js +931 -0
  331. package/dist/v2/server-8ajstryz.js +18 -0
  332. package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
  333. package/dist/v2/{server-cpepxy2q.js → server-8k2agx29.js} +14 -12
  334. package/dist/v2/server-c5rrgrcd.js +3545 -0
  335. package/dist/v2/server-d9vfe7xq.js +16 -0
  336. package/dist/v2/server-fb3zxn06.js +13 -0
  337. package/dist/v2/server-fr0wbhdn.js +43 -0
  338. package/dist/v2/{server-y10vbq6y.js → server-hb6xhh9q.js} +11 -1053
  339. package/dist/v2/server-jvxzm1jy.js +3023 -0
  340. package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
  341. package/dist/{index-5eqk6z3s.js → v2/server-kzns2hbz.js} +301 -27
  342. package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
  343. package/dist/v2/server-pavzsdc6.js +17 -0
  344. package/dist/v2/{server-vd4e7174.js → server-pj4pjv02.js} +21 -17
  345. package/dist/v2/{server-e0c1b7a7.js → server-q4ph9bwn.js} +1340 -148
  346. package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
  347. package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
  348. package/dist/v2/{server-d0sraw7m.js → server-sa8jvrfc.js} +291 -286
  349. package/dist/v2/server-ss95ky04.js +1048 -0
  350. package/dist/v2/{server-1qbnzc80.js → server-t4k4qexw.js} +142 -150
  351. package/dist/{index-x3kwrmqk.js → v2/server-v4mewb78.js} +35 -792
  352. package/dist/v2/server-w32kmdez.js +154 -0
  353. package/dist/v2/{server-nf82q6pt.js → server-x4hscabv.js} +5547 -5449
  354. package/dist/v2/server-xwz4dqh9.js +569 -0
  355. package/dist/v2/{server-efhwzx05.js → server-ycw9qqcy.js} +23 -23
  356. package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
  357. package/dist/v2/server-zp53y8js.js +1311 -0
  358. package/dist/v2/server.js +16 -14
  359. package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  360. package/dist/v2/sqlite-mhjkerzq.js +46 -0
  361. package/dist/v2/storage-memory-07fx57k6.js +71 -0
  362. package/dist/v2/storage-tags-8vw924zn.js +132 -0
  363. package/dist/v2/store-reader.d.ts +24 -2
  364. package/dist/v2/store-reader.d.ts.map +1 -1
  365. package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
  366. package/dist/v2/transformers-node-wasm.js +18415 -18415
  367. package/dist/v2/tui/index.d.ts.map +1 -1
  368. package/dist/v2/tui/types.d.ts +1 -10
  369. package/dist/v2/tui/types.d.ts.map +1 -1
  370. package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-a7efxaax.js} +51 -30
  371. package/dist/wrapup-orchestrator-barbc6h9.js +44 -0
  372. package/package.json +4 -3
  373. package/src/agents/magic-context-prompt.ts +27 -2
  374. package/src/agents/smart-notes-enabled.test.ts +294 -0
  375. package/src/agents/smart-notes-on.golden.json +70 -0
  376. package/src/config/index.test.ts +67 -1
  377. package/src/config/index.ts +2 -0
  378. package/src/config/latch-permanence-guard.test.ts +4 -0
  379. package/src/config/mural-model-deprecation.ts +24 -0
  380. package/src/config/project-security.hostile-matrix.test.ts +4 -44
  381. package/src/config/project-security.test.ts +9 -14
  382. package/src/config/project-security.ts +13 -55
  383. package/src/config/schema/magic-context.test.ts +2 -2
  384. package/src/config/schema/magic-context.ts +16 -10
  385. package/src/features/magic-context/dreamer/task-registry.ts +6 -0
  386. package/src/shared/auto-search-lifecycle.ts +43 -0
  387. package/src/shared/conflict-detector.test.ts +56 -0
  388. package/src/shared/conflict-detector.ts +16 -5
  389. package/src/shared/host-stall-profiler-bun.ts +358 -0
  390. package/src/shared/host-stall-profiler-common.ts +159 -0
  391. package/src/shared/host-stall-profiler-node.test.ts +234 -0
  392. package/src/shared/host-stall-profiler-node.ts +274 -0
  393. package/src/shared/host-stall-profiler-report.ts +248 -0
  394. package/src/shared/host-stall-profiler.ts +57 -0
  395. package/src/shared/logger.test.ts +38 -0
  396. package/src/shared/logger.ts +10 -2
  397. package/src/shared/model-resolution.test.ts +54 -17
  398. package/src/shared/model-resolution.ts +6 -17
  399. package/src/shared/models-dev-temperature.ts +107 -0
  400. package/src/shared/project-directory-key.test.ts +59 -0
  401. package/src/shared/project-directory-key.ts +20 -0
  402. package/src/shared/sqlite.test.ts +52 -0
  403. package/src/shared/sqlite.ts +339 -23
  404. package/src/shared/stable-json-linear.test.ts +109 -0
  405. package/src/shared/stable-json.ts +37 -7
  406. package/src/shared/subagent-temperature.test.ts +270 -0
  407. package/src/shared/subagent-temperature.ts +110 -0
  408. package/src/shared/user-facing-codes.ts +2 -6
  409. package/src/shared/write-transaction-attribution.test.ts +2 -2
  410. package/src/v2/tui/host-contract.test.ts +41 -67
  411. package/src/v2/tui/index.ts +6 -214
  412. package/src/v2/tui/types.ts +5 -17
  413. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
  414. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
  415. package/dist/features/magic-context/checkout-claim.d.ts +0 -155
  416. package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
  417. package/dist/index-bb36vgr3.js +0 -6608
  418. package/dist/index-fnn5pjtt.js +0 -6554
  419. package/dist/recomp-orchestrator-rervg6q4.js +0 -42
  420. package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
  421. package/dist/v2/server-3trjk1hx.js +0 -6360
  422. package/dist/v2/server-nm9n3aqq.js +0 -6461
  423. package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
  424. /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
  425. /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI5E,OAAO,EAYH,KAAK,kBAAkB,EAC1B,MAAM,2BAA2B,CAAC;AAUnC,OAAO,KAAK,EAAiC,YAAY,EAAE,MAAM,SAAS,CAAC;AAY3E;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAyBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,IAAI,CACR,YAAY,EACV,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,CACzB,GACF,MAAM,CA6BR;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoBhE;AAOD,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;AAE5E,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAgZ9F;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAStE;;;;;AAED,wBAAuD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI5E,OAAO,EAOH,KAAK,kBAAkB,EAC1B,MAAM,2BAA2B,CAAC;AAUnC,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,SAAS,CAAC;AAY5D;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,GAAG,MAAM,CAyBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACtB,MAAM,EAAE,IAAI,CACR,YAAY,EACV,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,qBAAqB,GACrB,oBAAoB,CACzB,GACF,MAAM,CA6BR;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoBhE;AAOD,KAAK,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;AAE5E,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAqM9F;AAED,wBAAsB,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAStE;;;;;AAED,wBAAuD"}
@@ -138,22 +138,13 @@ export interface V2TuiContext {
138
138
  };
139
139
  };
140
140
  }
141
- /**
142
- * A slot claim's `render` runs inside the host's component tree; `app` is the
143
- * always-mounted root slot, which is where `keymap.layer()` can be called from
144
- * when plugin `setup()` runs outside the keymap provider (see index.ts).
145
- */
141
+ /** The sidebar slot used by the OpenCode 2 TUI. */
146
142
  export type V2SlotClaim = {
147
143
  readonly append: "sidebar.content";
148
144
  readonly render: (input: {
149
145
  readonly sessionID: string;
150
146
  }) => unknown;
151
- } | {
152
- readonly append: "app";
153
- readonly render: (input: Readonly<Record<string, never>>) => unknown;
154
147
  };
155
- /** The layer object `context.keymap.layer()` accepts, derived from the context type. */
156
- export type V2KeymapLayer = ReturnType<Parameters<V2TuiContext["keymap"]["layer"]>[0]>;
157
148
  export interface V2SidebarState {
158
149
  snapshots: Record<string, SidebarSnapshot | undefined>;
159
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v2/tui/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import"./server-pavzsdc6.js";
1
2
  import {
2
- sessionLog
3
- } from "./server-1qbnzc80.js";
4
- import"./server-d0sraw7m.js";
3
+ sessionLog2
4
+ } from "./server-t4k4qexw.js";
5
+ import"./server-sa8jvrfc.js";
5
6
  import {
6
7
  COMPARTMENT_LEASE_RENEWAL_MS,
7
8
  acquireCompartmentLease,
@@ -24,31 +25,47 @@ import {
24
25
  registerActiveCompartmentRun,
25
26
  setRecompStarting2,
26
27
  setRecompTerminal2
27
- } from "./server-nf82q6pt.js";
28
- import"./server-51dv1pr5.js";
29
- import"./server-y10vbq6y.js";
30
- import"./server-wx8a6bw3.js";
31
- import"./server-njt3np1k.js";
32
- import"./server-3trjk1hx.js";
33
- import"./server-vs5gpnd4.js";
28
+ } from "./server-x4hscabv.js";
29
+ import"./server-kzns2hbz.js";
30
+ import"./server-hb6xhh9q.js";
31
+ import"./server-kb9nn0a0.js";
32
+ import"./server-3j4d00kf.js";
33
+ import"./server-ss95ky04.js";
34
+ import"./server-1tk82krw.js";
35
+ import"./server-6byqfbqf.js";
34
36
  import"./server-1zx87sdm.js";
35
- import"./server-nm9n3aqq.js";
36
- import"./server-fq7kq32k.js";
37
- import"./server-ajzeteqw.js";
38
- import"./server-vd4e7174.js";
39
- import"./server-50hvkg3v.js";
37
+ import"./server-c5rrgrcd.js";
38
+ import"./server-mfkzp7qj.js";
39
+ import"./server-7h861yms.js";
40
+ import"./server-2ra6pwf3.js";
41
+ import"./server-pj4pjv02.js";
42
+ import {
43
+ prepareRawSessionOrdinals2
44
+ } from "./server-4ez8mntn.js";
45
+ import"./server-7ekna9zs.js";
46
+ import"./server-fr0wbhdn.js";
47
+ import"./server-v4mewb78.js";
48
+ import"./server-xwz4dqh9.js";
49
+ import"./server-zm570tr2.js";
50
+ import"./server-fb3zxn06.js";
51
+ import"./server-jvxzm1jy.js";
52
+ import"./server-zp53y8js.js";
40
53
  import {
41
54
  pushNotification2
42
55
  } from "./server-x8a7jmkh.js";
43
- import"./server-yr3zj7e7.js";
44
- import"./server-rz514f14.js";
45
- import"./server-cpepxy2q.js";
46
- import"./server-fcdehk1s.js";
47
- import"./server-6r257mf5.js";
56
+ import"./server-qt1qqasc.js";
57
+ import"./server-4dhv7mqz.js";
58
+ import"./server-2s6ayq3t.js";
59
+ import"./server-w32kmdez.js";
60
+ import"./server-7jzrrxap.js";
61
+ import"./server-19zjmn02.js";
62
+ import"./server-8k2agx29.js";
63
+ import"./server-2s9qz6n7.js";
64
+ import"./server-676xw7at.js";
48
65
  import {
49
66
  sendStatusNotification2
50
- } from "./server-efhwzx05.js";
51
- import"./server-14vq4kpm.js";
67
+ } from "./server-ycw9qqcy.js";
68
+ import"./server-3t0q2cqx.js";
52
69
 
53
70
  // src/hooks/magic-context/wrapup-orchestrator.ts
54
71
  import * as crypto from "node:crypto";
@@ -140,7 +157,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
140
157
  const remainingMs = () => Math.max(0, waitStartedAt + maxWaitMs - Date.now());
141
158
  for (;; ) {
142
159
  if (remainingMs() <= 0) {
143
- sessionLog(sessionId, "wrapup: timed out waiting for the compartment-state lease");
160
+ sessionLog2(sessionId, "wrapup: timed out waiting for the compartment-state lease");
144
161
  return { ok: false, reason: "timeout" };
145
162
  }
146
163
  const active = getActiveCompartmentRun(sessionId);
@@ -151,7 +168,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
151
168
  emitWrapupProgress(ctx, sessionId, { note: "Waiting for the active historian run…" });
152
169
  const outcome = await waitForActiveRunWithin(active.promise, remainingMs());
153
170
  if (outcome === "timeout") {
154
- sessionLog(sessionId, "wrapup: timed out waiting for the active historian run");
171
+ sessionLog2(sessionId, "wrapup: timed out waiting for the active historian run");
155
172
  return { ok: false, reason: "timeout" };
156
173
  }
157
174
  continue;
@@ -174,10 +191,10 @@ async function runOneWrapupIteration(args) {
174
191
  const renewal = setInterval(() => {
175
192
  try {
176
193
  if (!renewCompartmentLease(ctx.db, sessionId, leaseHolderId)) {
177
- sessionLog(sessionId, "wrapup: compartment lease renewal failed");
194
+ sessionLog2(sessionId, "wrapup: compartment lease renewal failed");
178
195
  }
179
196
  } catch (err) {
180
- sessionLog(sessionId, `wrapup: compartment lease renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
197
+ sessionLog2(sessionId, `wrapup: compartment lease renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
181
198
  }
182
199
  }, COMPARTMENT_LEASE_RENEWAL_MS);
183
200
  const runCompartmentAgentForWrapup = ctx.runCompartmentAgentForWrapup ?? runCompartmentAgent;
@@ -223,13 +240,17 @@ async function runOneWrapupIteration(args) {
223
240
  return { ran: true };
224
241
  } finally {
225
242
  clearInterval(renewal);
226
- releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId, sessionLog);
243
+ releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId, sessionLog2);
227
244
  }
228
245
  }
229
246
  async function runManagedWrapup(ctx, sessionId, options) {
230
247
  const messagesToKeep = Math.max(1, Math.floor(options.messagesToKeep));
231
248
  setRecompStarting2(ctx.liveSessionState, sessionId, "Estimating wrapup…", "wrapup");
232
249
  try {
250
+ if (!await prepareRawSessionOrdinals2(sessionId)) {
251
+ setRecompTerminal2(ctx.liveSessionState, sessionId, "failed", "Session ordinals are warming; retry wrapup shortly.");
252
+ return "Wrapup deferred while session ordinals warm in the background. Retry shortly.";
253
+ }
233
254
  return await runStartedWrapup(ctx, sessionId, messagesToKeep);
234
255
  } catch (error) {
235
256
  const reason = error instanceof Error ? error.message : String(error);
@@ -282,7 +303,7 @@ ${message}`;
282
303
  if (ownershipLost)
283
304
  return;
284
305
  ownershipLost = true;
285
- sessionLog(sessionId, "wrapup: durable marker ownership lost; aborting loop");
306
+ sessionLog2(sessionId, "wrapup: durable marker ownership lost; aborting loop");
286
307
  };
287
308
  const renewWrapupMarker = (updates) => {
288
309
  const updated = updateWrapupInProgress(ctx.db, sessionId, wrapupHolderId, updates);
@@ -299,7 +320,7 @@ ${message}`;
299
320
  chunkIndex
300
321
  });
301
322
  } catch (err) {
302
- sessionLog(sessionId, `wrapup: marker renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
323
+ sessionLog2(sessionId, `wrapup: marker renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
303
324
  }
304
325
  }, 60000);
305
326
  markerRenewal.unref?.();
@@ -355,7 +376,7 @@ ${message}`;
355
376
  if (lastEnd + 1 >= plan.targetEligibleEndOrdinal)
356
377
  break;
357
378
  chunkIndex += 1;
358
- sessionLog(sessionId, `wrapup chunk ${chunkIndex}: ${describeBoundaryDiagnostics(plan.snapshot)}`);
379
+ sessionLog2(sessionId, `wrapup chunk ${chunkIndex}: ${describeBoundaryDiagnostics(plan.snapshot)}`);
359
380
  emitWrapupProgress(ctx, sessionId, {
360
381
  processedMessages: Math.max(0, lastEnd),
361
382
  totalMessages: Math.max(0, plan.targetEligibleEndOrdinal - 1),
@@ -0,0 +1,44 @@
1
+ import {
2
+ runManagedWrapup2
3
+ } from "./index-1r0k9js3.js";
4
+ import"./index-ezmszwbd.js";
5
+ import"./index-2jcbj7r1.js";
6
+ import"./index-kmpvemph.js";
7
+ import"./index-hj2q50k0.js";
8
+ import"./index-peshmj6h.js";
9
+ import"./index-7jzrrxap.js";
10
+ import"./index-kp5qe690.js";
11
+ import"./index-b7mv1jx3.js";
12
+ import"./index-4dhv7mqz.js";
13
+ import"./index-sd3egckz.js";
14
+ import"./index-9rt53q79.js";
15
+ import"./index-qt1qqasc.js";
16
+ import"./index-57mrqed8.js";
17
+ import"./index-tqf7yg27.js";
18
+ import"./index-kq57tdf0.js";
19
+ import"./index-vkbqdnkj.js";
20
+ import"./index-s4j7t92z.js";
21
+ import"./index-fb3zxn06.js";
22
+ import"./index-nm6a8xpd.js";
23
+ import"./index-fr0wbhdn.js";
24
+ import"./index-pxwp2hjk.js";
25
+ import"./index-gzcmtmar.js";
26
+ import"./index-2jgwttpt.js";
27
+ import"./index-nydv6g8r.js";
28
+ import"./index-9qjqq45k.js";
29
+ import"./index-h5zfkjyk.js";
30
+ import"./index-1zx87sdm.js";
31
+ import"./index-mfkzp7qj.js";
32
+ import"./index-h2wc01qk.js";
33
+ import"./index-1bt88epp.js";
34
+ import"./index-58e3y90n.js";
35
+ import"./index-qx53vezw.js";
36
+ import"./index-4mjhqadz.js";
37
+ import"./index-kb9nn0a0.js";
38
+ import"./index-nsjyysj0.js";
39
+ import"./index-0sahzkwr.js";
40
+ import"./index-pavzsdc6.js";
41
+ import"./index-x8a7jmkh.js";
42
+ export {
43
+ runManagedWrapup2 as runManagedWrapup
44
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/opencode-magic-context",
3
- "version": "0.47.0",
3
+ "version": "0.49.0",
4
4
  "type": "module",
5
5
  "description": "OpenCode plugin for Magic Context — cross-session memory and context management",
6
6
  "main": "dist/index.js",
@@ -37,8 +37,8 @@
37
37
  "README.md"
38
38
  ],
39
39
  "scripts": {
40
- "build": "bun ../../scripts/check-bun.mjs && tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && bun ../../scripts/clean-dist-chunks.mjs dist index.js transformers-web.js transformers-node-wasm.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts --outdir dist --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && bun run build:v2 && tsc --emitDeclarationOnly",
41
- "build:v2": "bun ../../scripts/clean-dist-chunks.mjs dist/v2 server.js embedding-worker.js migration-worker.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/v2/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist/v2 && bun build src/v2/server.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts --outdir dist/v2 --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite",
40
+ "build": "bun ../../scripts/check-bun.mjs && tsc -p ../retina-local-fs/tsconfig.build.json && bun run build:tui && bun ../../scripts/clean-dist-chunks.mjs dist index.js transformers-web.js transformers-node-wasm.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist && bun build src/index.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts src/hooks/magic-context/raw-ordinal-warmup-worker.ts --outdir dist --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode-ai/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite && bun run build:v2 && tsc --emitDeclarationOnly",
41
+ "build:v2": "bun ../../scripts/clean-dist-chunks.mjs dist/v2 server.js embedding-worker.js migration-worker.js && bun build src/features/magic-context/memory/transformers-web-entry.ts --outfile dist/v2/transformers-web.js --target browser --format esm --external onnxruntime-web && bun scripts/build-transformers-node-wasm.ts dist/v2 && bun build src/v2/server.ts src/features/magic-context/memory/embedding-worker.ts src/features/magic-context/migration-worker.ts src/hooks/magic-context/auto-search-worker.ts src/hooks/magic-context/raw-ordinal-warmup-worker.ts --outdir dist/v2 --entry-naming '[name].[ext]' --target node --format esm --splitting --external @opencode/plugin --external onnxruntime-node --external onnxruntime-web --external sharp --external bun:sqlite --external node:sqlite",
42
42
  "build:tui": "bun scripts/build-tui.ts",
43
43
  "check:tui-compiled": "git diff --exit-code -- src/tui-compiled && test -z \"$(git status --porcelain -- src/tui-compiled)\"",
44
44
  "check:transformers-node-wasm": "bun scripts/verify-transformers-node-wasm.ts",
@@ -81,6 +81,7 @@
81
81
  "@opencode/client": "2.0.22",
82
82
  "effect": "4.0.0-rc.112",
83
83
  "@ai-sdk/anthropic": "3.0.82",
84
+ "ai": "6.0.168",
84
85
  "@huggingface/transformers": "^4.3.0",
85
86
  "@ai-sdk/openai-compatible": "2.0.41",
86
87
  "@biomejs/biome": "^2.5.1",
@@ -103,6 +103,26 @@ const TOOL_HISTORY_GUIDANCE_LIGHT = `Older work is filed off the desk into \`<se
103
103
 
104
104
  const SMART_NOTE_GUIDANCE_LIGHT = `; a \`surface_condition\` leaves the note with an outside checker that returns it when the condition holds`;
105
105
 
106
+ /** Remove smart-note clauses and sections from user guidance when the capability is unavailable. */
107
+ function withoutSmartNoteGuidance(text: string): string {
108
+ let smartSectionLevel = 0;
109
+ return text
110
+ .replace(` ${SMART_NOTE_GUIDANCE}`, "")
111
+ .replace(SMART_NOTE_GUIDANCE_LIGHT, "")
112
+ .split("\n")
113
+ .filter((line) => {
114
+ const mentionsSmartNotes = /smart[-_ ]notes?|surface_condition|outside checker/i.test(
115
+ line,
116
+ );
117
+ const heading = /^\s*(#{1,6})\s/.exec(line);
118
+ if (heading && (!smartSectionLevel || heading[1].length <= smartSectionLevel)) {
119
+ smartSectionLevel = mentionsSmartNotes ? heading[1].length : 0;
120
+ }
121
+ return !smartSectionLevel && !mentionsSmartNotes;
122
+ })
123
+ .join("\n");
124
+ }
125
+
106
126
  const TEMPORAL_AWARENESS_GUIDANCE_LIGHT = `, \`<!-- +Xm -->\` (time since your last reply)`;
107
127
 
108
128
  const BASE_INTRO_LIGHT = (
@@ -169,7 +189,9 @@ export function buildMagicContextSection(
169
189
  memoryEnabled = true,
170
190
  preset: PromptSurfacePreset = "full",
171
191
  primaryOverride?: string,
192
+ smartNotesEnabled = true,
172
193
  ): string {
194
+ dreamerEnabled = dreamerEnabled && smartNotesEnabled;
173
195
  // Subagent sessions: minimal §N§ + ctx_reduce mechanics only. Bypasses the
174
196
  // long-term-partner frame, memory/search/note guidance, and the reduction
175
197
  // taxonomy — none of which apply to a bounded single-task child. Only
@@ -191,10 +213,13 @@ export function buildMagicContextSection(
191
213
  const languageGuidance = languageDirective ? `\n\n${languageDirective}` : "";
192
214
 
193
215
  if (primaryOverride !== undefined) {
194
- // A user override owns the complete primary section. Runtime clauses stay
216
+ // A user override owns primary prose, except for unavailable smart-note clauses. Runtime clauses stay
195
217
  // composer-owned so an override cannot suppress temporal guidance, the
196
218
  // warning against overly compressed prose, or the language directive.
197
- return `${primaryOverride}${temporalOverrideGuidance}${cavemanWarning}${languageGuidance}`;
219
+ const primary = smartNotesEnabled
220
+ ? primaryOverride
221
+ : withoutSmartNoteGuidance(primaryOverride);
222
+ return `${primary}${temporalOverrideGuidance}${cavemanWarning}${languageGuidance}`;
198
223
  }
199
224
 
200
225
  if (!ctxReduceCallable) {
@@ -0,0 +1,294 @@
1
+ import { afterEach, expect, test } from "bun:test";
2
+ import { createHash } from "node:crypto";
3
+ import { rmSync } from "node:fs";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { tool } from "@opencode-ai/plugin";
7
+ import { parsePluginConfig } from "../config";
8
+ import { sampleLiveConfig } from "../config/live-run-config";
9
+ import { stripUnsafeProjectConfigFields } from "../config/project-security";
10
+ import { evaluateSmartNotes } from "../features/magic-context/dreamer/evaluate-smart-notes";
11
+ import { writeTaskScheduleState } from "../features/magic-context/dreamer/storage-task-schedule";
12
+ import { buildDreamTaskRuntimeConfigs } from "../features/magic-context/dreamer/task-config";
13
+ import { resolveProjectIdentityForSession } from "../features/magic-context/memory/project-identity";
14
+ import { runDueCompiledSmartNoteChecks } from "../features/magic-context/smart-notes/runner";
15
+ import {
16
+ addNote,
17
+ closeDatabase,
18
+ getNotes,
19
+ markNoteReady,
20
+ openDatabase,
21
+ } from "../features/magic-context/storage";
22
+ import { onNoteTrigger, peekNoteNudgeText } from "../hooks/magic-context/note-nudger";
23
+ import { buildSidebarSnapshot } from "../plugin/rpc-handlers";
24
+ import { createToolRegistry } from "../plugin/tool-registry";
25
+ import { createTestTempDirFromPath } from "../shared/test-temp-dir";
26
+ import { createCtxNoteTools } from "../tools/ctx-note/tools";
27
+ import { CTX_NOTE_LIGHT_DESCRIPTION } from "../tools/light-descriptions";
28
+ import { applyJsonSchemaParameterDescriptions } from "../tools/parameter-descriptions";
29
+ import { registerTools } from "../v2/hooks/tools";
30
+ import { buildMagicContextSection } from "./magic-context-prompt";
31
+ import golden from "./smart-notes-on.golden.json";
32
+
33
+ // Freeze the OpenCode/Pi note definitions and primary guidance from master before this switch existed:
34
+ // default-on must preserve sessions' cached prompts. Source copies came from git show at
35
+ // 8d8f44bdaaba450ae136e20dd2476b3b41294416; SHA-256 hashes JSON.stringify of rendered strings
36
+ // and { description, schema } tool surfaces, not expectations calculated by the gated implementation.
37
+
38
+ const digest = (value: unknown) => createHash("sha256").update(JSON.stringify(value)).digest("hex");
39
+ const expected = golden as Record<string, string>;
40
+ const oldXdg = process.env.XDG_DATA_HOME;
41
+ let dir: string | undefined;
42
+ afterEach(() => {
43
+ closeDatabase();
44
+ if (oldXdg === undefined) delete process.env.XDG_DATA_HOME;
45
+ else process.env.XDG_DATA_HOME = oldXdg;
46
+ if (dir) rmSync(dir, { recursive: true, force: true });
47
+ });
48
+ function fixture() {
49
+ dir = createTestTempDirFromPath(join(tmpdir(), "smart-notes-enabled-"));
50
+ process.env.XDG_DATA_HOME = dir;
51
+ return openDatabase();
52
+ }
53
+
54
+ test("enabled guidance is byte-identical to master on every built-in primary variant", () => {
55
+ for (const preset of ["full", "light"] as const)
56
+ for (const reduce of [false, true])
57
+ for (const memory of [false, true])
58
+ for (const dreamer of [false, true])
59
+ for (const temporal of [false, true]) {
60
+ for (const enabled of [undefined, true]) {
61
+ const text = buildMagicContextSection(
62
+ null,
63
+ 20,
64
+ reduce,
65
+ dreamer,
66
+ temporal,
67
+ false,
68
+ false,
69
+ undefined,
70
+ memory,
71
+ preset,
72
+ undefined,
73
+ enabled,
74
+ );
75
+ expect(digest(text)).toBe(
76
+ expected[
77
+ `guidance/${preset}/${reduce}/${memory}/${dreamer}/${temporal}`
78
+ ],
79
+ );
80
+ }
81
+ }
82
+ });
83
+
84
+ test("disabled guidance removes every smart-note clause on OpenCode 1 and 2", () => {
85
+ const override =
86
+ "Custom guidance\n### Smart notes\n#### Verification\nUse an external condition to park work.\n### Ordinary notes\nKeep intentions in ctx_note.";
87
+ const custom = buildMagicContextSection(
88
+ null,
89
+ 20,
90
+ true,
91
+ true,
92
+ false,
93
+ false,
94
+ false,
95
+ undefined,
96
+ true,
97
+ "full",
98
+ override,
99
+ false,
100
+ );
101
+ expect(custom).not.toContain("external condition");
102
+ expect(custom).toContain("Keep intentions in ctx_note");
103
+ for (const preset of ["full", "light"] as const)
104
+ for (const reduce of [false, true])
105
+ for (const memory of [false, true]) {
106
+ const text = buildMagicContextSection(
107
+ null,
108
+ 20,
109
+ reduce,
110
+ true,
111
+ true,
112
+ false,
113
+ false,
114
+ undefined,
115
+ memory,
116
+ preset,
117
+ undefined,
118
+ false,
119
+ );
120
+ expect(text).not.toMatch(/surface_condition|smart.note|outside checker/i);
121
+ expect(text).toContain("ctx_note");
122
+ }
123
+ });
124
+
125
+ test("startup capability is user-only, default on, and excluded from live reload", () => {
126
+ const boot = parsePluginConfig({});
127
+ expect(boot.smart_notes.enabled).toBe(true);
128
+ const off = parsePluginConfig({ smart_notes: { enabled: false } });
129
+ expect(off.smart_notes.enabled).toBe(false);
130
+ expect(sampleLiveConfig(boot, off).smart_notes.enabled).toBe(true);
131
+ const project = { smart_notes: { enabled: false, retina_handoff: true } };
132
+ const warnings = stripUnsafeProjectConfigFields(project);
133
+ expect(project.smart_notes).toEqual({ retina_handoff: true } as never);
134
+ expect(warnings.join(" ")).toContain("smart_notes.enabled");
135
+ });
136
+
137
+ test("disabled dreamer task and compiled sweep leave pending notes unchecked", async () => {
138
+ const db = fixture();
139
+ const project = "git:smart-notes-enabled";
140
+ addNote(db, "smart", {
141
+ projectPath: project,
142
+ sessionId: "ses-off",
143
+ content: "parked",
144
+ surfaceCondition: "repository condition",
145
+ });
146
+ const config = parsePluginConfig({ dreamer: {}, smart_notes: { enabled: false } });
147
+ expect(
148
+ buildDreamTaskRuntimeConfigs(config.dreamer, "opencode", undefined, false).map(
149
+ (t) => t.task,
150
+ ),
151
+ ).not.toContain("evaluate-smart-notes");
152
+ const result = await evaluateSmartNotes({
153
+ db,
154
+ projectIdentity: project,
155
+ smartNotesEnabled: false,
156
+ } as never);
157
+ expect(result).toEqual({ ran: false, pending: 1, surfaced: 0 });
158
+ expect(
159
+ await runDueCompiledSmartNoteChecks({
160
+ db,
161
+ projectIdentity: project,
162
+ projectRoot: dir!,
163
+ smartNotesEnabled: false,
164
+ }),
165
+ ).toEqual({ ran: 0, surfaced: 0, failed: 0, networkFailed: 0 });
166
+ expect(getNotes(db, { projectPath: project })[0]?.lastCheckedAt).toBeNull();
167
+ });
168
+
169
+ test("OpenCode 1 and 2 disabled tool surfaces refuse cached conditions and retain ready/read/dismiss", async () => {
170
+ const db = fixture();
171
+ const config = parsePluginConfig({
172
+ smart_notes: { enabled: false },
173
+ dreamer: {},
174
+ memory: { enabled: false },
175
+ });
176
+ const registry = createToolRegistry({
177
+ ctx: { directory: dir! } as never,
178
+ pluginConfig: config,
179
+ });
180
+ const registered: Array<{
181
+ name: string;
182
+ description: string;
183
+ input: unknown;
184
+ execute: (input: unknown, call: unknown) => Promise<{ content: string }>;
185
+ }> = [];
186
+ await registerTools(
187
+ {
188
+ location: { directory: dir },
189
+ tool: {
190
+ transform: async (callback: (editor: unknown) => void) =>
191
+ callback({ add: (definition: never) => registered.push(definition) }),
192
+ },
193
+ } as never,
194
+ db,
195
+ config,
196
+ );
197
+ const v2 = registered.find((t) => t.name === "ctx_note")!;
198
+ expect(v2).toBeDefined();
199
+ expect(
200
+ JSON.stringify({
201
+ description: registry.ctx_note.description,
202
+ schema: tool.schema.toJSONSchema(tool.schema.object(registry.ctx_note.args)),
203
+ }),
204
+ ).not.toMatch(/surface_condition|smart.note|outside checker/i);
205
+ expect(JSON.stringify({ description: v2.description, schema: v2.input })).not.toMatch(
206
+ /surface_condition|smart.note|outside checker/i,
207
+ );
208
+ const call = { sessionID: "ses-off", messageID: "msg-off", agent: "build", progress: () => {} };
209
+ expect(
210
+ await registry.ctx_note.execute(
211
+ { content: "old", surface_condition: "cached" } as never,
212
+ { ...call, directory: dir } as never,
213
+ ),
214
+ ).toContain("Smart notes are disabled");
215
+ expect(
216
+ (await v2.execute({ content: "old", surface_condition: "cached" }, call)).content,
217
+ ).toContain("Smart notes are disabled");
218
+ expect(getNotes(db, {})).toHaveLength(0);
219
+ const local = createCtxNoteTools({
220
+ db,
221
+ smartNotesEnabled: false,
222
+ resolveProjectPath: () => "git:fixture",
223
+ }).ctx_note;
224
+ const ready = addNote(db, "smart", {
225
+ projectPath: "git:fixture",
226
+ content: "already fired",
227
+ surfaceCondition: "done",
228
+ });
229
+ const pending = addNote(db, "smart", {
230
+ projectPath: "git:fixture",
231
+ content: "still parked",
232
+ surfaceCondition: "later",
233
+ });
234
+ markNoteReady(db, ready.id, "already true");
235
+ onNoteTrigger(db, "ses-off", "historian_complete");
236
+ expect(peekNoteNudgeText(db, "ses-off", "u-1", "git:fixture")).toBeNull();
237
+ expect(peekNoteNudgeText(db, "ses-off", "u-2", "git:fixture")).toContain("already fired");
238
+ const ctx = { sessionID: "ses-off", directory: dir } as never;
239
+ expect(await local.execute({ action: "read" }, ctx)).toContain("already fired");
240
+ expect(await local.execute({ action: "read", note_ids: [pending.id] }, ctx)).toContain(
241
+ "still parked",
242
+ );
243
+ expect(
244
+ await local.execute({ action: "dismiss", note_ids: [ready.id, pending.id] }, ctx),
245
+ ).toContain("Dismissed 2 of 2");
246
+ });
247
+
248
+ test("enabled ctx_note schema and description match master golden on both OpenCode versions", () => {
249
+ for (const preset of ["full", "light"] as const)
250
+ for (const enabled of [undefined, true]) {
251
+ const definition = createCtxNoteTools({
252
+ db: null as never,
253
+ smartNotesEnabled: enabled,
254
+ }).ctx_note;
255
+ const schema = tool.schema.toJSONSchema(tool.schema.object(definition.args));
256
+ applyJsonSchemaParameterDescriptions("ctx_note", schema, preset);
257
+ expect(
258
+ digest({
259
+ description:
260
+ preset === "light" ? CTX_NOTE_LIGHT_DESCRIPTION : definition.description,
261
+ schema,
262
+ }),
263
+ ).toBe(expected[`opencode/${preset}`]);
264
+ }
265
+ });
266
+
267
+ test("disabled status omits parked task backlog and historical failure without deleting them", () => {
268
+ const db = fixture();
269
+ const projectPath = resolveProjectIdentityForSession(dir!)!;
270
+ writeTaskScheduleState(db, {
271
+ projectPath,
272
+ task: "evaluate-smart-notes",
273
+ schedule: "0 3 * * *",
274
+ lastRunAt: null,
275
+ nextDueAt: 1,
276
+ lastStatus: "failed",
277
+ lastError: "old evaluation failure",
278
+ retryCount: 2,
279
+ });
280
+ const on = buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
281
+ smart_notes: { enabled: true },
282
+ });
283
+ expect(on.dreamerFailures?.map((state) => state.task)).toContain("evaluate-smart-notes");
284
+ const off = buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
285
+ smart_notes: { enabled: false },
286
+ });
287
+ expect(off.dreamerBacklog).not.toHaveProperty("evaluate-smart-notes");
288
+ expect(off.dreamerFailures?.map((state) => state.task)).not.toContain("evaluate-smart-notes");
289
+ expect(
290
+ buildSidebarSnapshot(db, "ses-status", dir!, undefined, undefined, {
291
+ smart_notes: { enabled: true },
292
+ }).dreamerFailures?.map((state) => state.task),
293
+ ).toContain("evaluate-smart-notes");
294
+ });