@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,10 +1,12 @@
1
- import { afterEach, expect, spyOn, test } from "bun:test";
1
+ import { afterEach, expect, test } from "bun:test";
2
2
  import { rmSync } from "node:fs";
3
3
  import { tmpdir } from "node:os";
4
4
  import { resolve } from "node:path";
5
5
  import { Host } from "@opencode/plugin/host";
6
- import * as logger from "../../shared/logger";
6
+ import type { MagicContextRpcServer } from "../../shared/rpc-server";
7
7
  import { createTestTempDirFromPath } from "../../shared/test-temp-dir";
8
+ import { registerV2Commands } from "../hooks/commands";
9
+ import type { V2CommandDomain } from "../hooks/types";
8
10
  import { setupWithJsx } from "./index";
9
11
  import type { V2SidebarState, V2SlotClaim, V2TuiContext } from "./types";
10
12
 
@@ -110,7 +112,7 @@ function v1Api(directory: string) {
110
112
  };
111
113
  }
112
114
 
113
- test("GA 2.0.5 resolves ./tui and executes the union setup contract", async () => {
115
+ test("GA 2.0.5 registers each /ctx-* command once on the server, not the TUI keymap", async () => {
114
116
  const packageRoot = resolve(import.meta.dir, "../../..");
115
117
  const entrypoints = Host.resolve({
116
118
  name: "@cortexkit/opencode-magic-context",
@@ -125,76 +127,48 @@ test("GA 2.0.5 resolves ./tui and executes the union setup contract", async () =
125
127
  };
126
128
  };
127
129
  expect(typeof loaded.default.setup).toBe("function");
128
- const fixture = v2Context();
129
- const cleanup = await setupWithJsx(fixture.context, (type, props) => ({ type, props }));
130
- expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content"]);
131
- const sidebarClaim = fixture.claims[0]!;
132
- if (sidebarClaim.append !== "sidebar.content") throw new Error("expected the sidebar claim");
133
- expect(sidebarClaim.render({ sessionID: "ses-v2-tui" })).toEqual({
134
- type: "text",
135
- props: { children: expect.stringContaining("Magic Context") },
136
- });
137
- expect(fixture.layers[0]!.commands.map((command) => command.slash.name)).toEqual([
138
- "ctx-status",
139
- "ctx-recomp",
140
- "ctx-dream",
141
- "ctx-flush",
142
- "ctx-embed",
143
- "ctx-wrapup",
144
- ]);
145
- cleanup();
146
- });
147
-
148
- test("GA 2.0.5 registers the keymap layer from the app slot when setup runs outside the provider", async () => {
149
- const fixture = v2Context();
150
- let providerAvailable = false;
151
- Object.assign(fixture.context.keymap, {
152
- layer: (input: () => unknown) => {
153
- if (!providerAvailable) throw new Error("Keymap.Provider is missing");
154
- fixture.layers.push(input() as never);
130
+ const serverCommands: string[] = [];
131
+ const commandDomain: V2CommandDomain = {
132
+ async transform(callback) {
133
+ callback({ add: (definition) => serverCommands.push(definition.name) });
155
134
  },
135
+ async reload() {},
136
+ };
137
+ const serverRegistered = await registerV2Commands({
138
+ command: commandDomain,
139
+ rpc: { dispatch: async () => ({}) } as unknown as MagicContextRpcServer,
140
+ directory: process.cwd(),
141
+ compactionEnabled: true,
156
142
  });
157
- const cleanup = await setupWithJsx(fixture.context, (type, props) => ({ type, props }));
158
- expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content", "app"]);
159
- expect(fixture.layers).toHaveLength(0);
143
+ expect(serverRegistered).toBe(true);
160
144
 
161
- // The app slot render executes inside the component tree, where the provider resolves.
162
- providerAvailable = true;
163
- const appClaim = fixture.claims.find((claim) => claim.append === "app");
164
- if (appClaim?.append !== "app") throw new Error("expected the app slot claim");
165
- appClaim.render({});
166
- expect(
167
- fixture.layers.map((layer) => layer.commands.map((command) => command.slash.name)),
168
- ).toEqual([["ctx-status", "ctx-recomp", "ctx-dream", "ctx-flush", "ctx-embed", "ctx-wrapup"]]);
169
- // Repeated renders must not stack duplicate layers.
170
- appClaim.render({});
171
- expect(fixture.layers).toHaveLength(1);
172
- cleanup();
173
- });
174
-
175
- test("GA 2.0.5 keeps the sidebar when the app-slot keymap registration also fails", async () => {
176
145
  const fixture = v2Context();
177
- Object.assign(fixture.context.keymap, {
178
- layer: () => {
179
- throw new Error("Keymap.Provider is missing");
180
- },
181
- });
182
- // The gap is recorded in the plugin log; the TUI host drops console output.
183
- const logged = spyOn(logger, "log");
146
+ const cleanup = await setupWithJsx(fixture.context, (type, props) => ({ type, props }));
184
147
  try {
185
- const cleanup = await setupWithJsx(fixture.context, (type, props) => ({ type, props }));
186
- expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content", "app"]);
187
- const appClaim = fixture.claims.find((claim) => claim.append === "app");
188
- if (appClaim?.append !== "app") throw new Error("expected the app slot claim");
189
- appClaim.render({});
190
- appClaim.render({});
191
- expect(fixture.layers).toHaveLength(0);
192
- expect(
193
- logged.mock.calls.filter(([line]) => line.includes("keymap.layer is unavailable")),
194
- ).toHaveLength(1);
195
- cleanup();
148
+ expect(fixture.claims.map((claim) => claim.append)).toEqual(["sidebar.content"]);
149
+ const sidebarClaim = fixture.claims[0]!;
150
+ if (sidebarClaim.append !== "sidebar.content")
151
+ throw new Error("expected the sidebar claim");
152
+ expect(sidebarClaim.render({ sessionID: "ses-v2-tui" })).toEqual({
153
+ type: "text",
154
+ props: { children: expect.stringContaining("Magic Context") },
155
+ });
156
+ const tuiCommands = fixture.layers.flatMap((layer) =>
157
+ layer.commands.map((command) => command.slash.name),
158
+ );
159
+ const allRegistrations = [...serverCommands, ...tuiCommands].sort();
160
+ const expectedCommands = [
161
+ "ctx-dream",
162
+ "ctx-embed",
163
+ "ctx-flush",
164
+ "ctx-recomp",
165
+ "ctx-status",
166
+ "ctx-wrapup",
167
+ ];
168
+ expect(allRegistrations).toEqual(expectedCommands);
169
+ expect(new Set(allRegistrations).size).toBe(expectedCommands.length);
196
170
  } finally {
197
- logged.mockRestore();
171
+ cleanup();
198
172
  }
199
173
  });
200
174
 
@@ -1,23 +1,18 @@
1
1
  import { createElement, spread } from "@opentui/solid";
2
2
  import { COMPACTION_ENABLED_PATH } from "../../config/agent-disable";
3
- import { flushLogger, log } from "../../shared/logger";
3
+ import { log } from "../../shared/logger";
4
4
  import { pluginPackageVersion } from "../../shared/plugin-package-version";
5
5
  import type { SidebarSnapshot, StatusDetail } from "../../shared/rpc-types";
6
6
  import { buildUnavailableStatusView } from "../../shared/status-view";
7
7
  import { statusVersionNotice } from "../../shared/status-view-check";
8
8
  import { compactionOffSidebarRows, nativeCompactionContextLabel } from "../../tui/compaction-off";
9
9
  import {
10
- type CommandRpcResult,
11
10
  closeRpc,
12
11
  getCompartmentCount,
13
12
  initRpcClient,
14
13
  loadSidebarSnapshot,
15
14
  loadStatusDetail,
16
- requestDream,
17
- requestEmbed,
18
- requestFlush,
19
15
  requestRecomp,
20
- requestWrapup,
21
16
  type StatusDetailResult,
22
17
  } from "../../tui/data/context-db";
23
18
  import {
@@ -29,7 +24,7 @@ import { directoryForSession } from "../../tui/data/session-directory";
29
24
  import { eventSessionID } from "./events";
30
25
  import { mountV1Sidebar, sessionDirectory, type V1SidebarMount } from "./sidebar-mount";
31
26
  import { mountV1StatusDialog, type V1StatusDialogMount } from "./status-dialog-mount";
32
- import type { V2KeymapLayer, V2SidebarState, V2TuiContext } from "./types";
27
+ import type { V2SidebarState, V2TuiContext } from "./types";
33
28
 
34
29
  const SIDEBAR_REFRESH_MS = 1_000;
35
30
  const inflight = new Set<string>();
@@ -174,6 +169,9 @@ type JsxFactory = (type: string, props: Record<string, unknown>) => unknown;
174
169
 
175
170
  export async function setupWithJsx(context: V2TuiContext, jsx: JsxFactory): Promise<() => void> {
176
171
  const directory = context.location?.directory ?? context.data.location.default().directory;
172
+ // The server command registry is the single /ctx-* registration for OpenCode 2.
173
+ // This TUI handles its notifications; a keymap slash layer would duplicate the
174
+ // palette entries and would not be available to clients without a TUI.
177
175
  initRpcClient(directory);
178
176
  const [sidebar, updateSidebar] = context.storage.memory<V2SidebarState>(
179
177
  "magic-context.sidebar.v2",
@@ -264,22 +262,6 @@ export async function setupWithJsx(context: V2TuiContext, jsx: JsxFactory): Prom
264
262
  return requested;
265
263
  };
266
264
 
267
- const showDream = async (task?: string) => {
268
- const target = currentSessionID(context);
269
- if (!target) {
270
- context.ui.toast.show({ message: "No active session", variant: "warning" });
271
- return false;
272
- }
273
- const started = await requestDream(target, task);
274
- context.ui.toast.show({
275
- message: started
276
- ? "Dream run started; the summary appears when it finishes"
277
- : "Dream request failed",
278
- variant: started ? "info" : "error",
279
- });
280
- return started;
281
- };
282
-
283
265
  // One sidebar: the OpenCode 1 component, mounted on the v2 slot through the
284
266
  // host's own OpenTUI runtime. `mountV1Sidebar` returns null only when the
285
267
  // host registers no runtime modules to load it through, which is the single
@@ -311,196 +293,6 @@ export async function setupWithJsx(context: V2TuiContext, jsx: JsxFactory): Prom
311
293
  },
312
294
  });
313
295
 
314
- // Every /ctx-* command this host can reach goes through the keymap layer:
315
- // OpenCode 2 has no `command.execute.before` hook, so the server-side command
316
- // handler the OpenCode 1 plugin uses never runs here. Each `run` calls the
317
- // RPC handler that does the same server-side work and reports back through a
318
- // dialog or toast, because this host has no ignored-message chat carrier.
319
- const runCommandRpc = async (
320
- title: string,
321
- call: (sessionID: string) => Promise<CommandRpcResult>,
322
- pending?: string,
323
- ): Promise<boolean> => {
324
- const target = currentSessionID(context);
325
- if (!target) {
326
- context.ui.toast.show({ message: "No active session", variant: "warning" });
327
- return false;
328
- }
329
- const result = await call(target);
330
- if (!result.ok) {
331
- context.ui.toast.show({
332
- message: result.error ?? `${title} request failed`,
333
- variant: "error",
334
- });
335
- return false;
336
- }
337
- // A started background run has no text yet; its outcome arrives later as a
338
- // show-result-dialog notification.
339
- if (result.started) {
340
- context.ui.toast.show({ message: pending ?? `${title} started`, variant: "info" });
341
- return true;
342
- }
343
- if (currentSessionID(context) !== target) return false;
344
- await context.ui.dialog.alert({ title, message: result.message ?? "" });
345
- return true;
346
- };
347
-
348
- // OpenCode 2 runs plugin setup() outside the TUI component tree, where
349
- // context.keymap.layer() throws "Keymap.Provider is missing" (the provider is
350
- // a Solid context). Try the direct call first (hosts that do run setup
351
- // in-tree), then fall back to the app slot: its render executes inside the
352
- // component tree, the same place the host's own built-in plugins register
353
- // their layers.
354
- const buildKeymapLayer = (): V2KeymapLayer => ({
355
- mode: "global",
356
- commands: [
357
- {
358
- id: "magic-context.status",
359
- title: "Magic Context: Status",
360
- group: "Magic Context",
361
- palette: true,
362
- slash: { name: "ctx-status" },
363
- run: async () => {
364
- await showStatus();
365
- },
366
- },
367
- {
368
- id: "magic-context.recomp",
369
- title: "Magic Context: Recomp",
370
- group: "Magic Context",
371
- palette: true,
372
- slash: { name: "ctx-recomp" },
373
- run: async () => {
374
- await showRecomp();
375
- },
376
- },
377
- {
378
- id: "magic-context.dream",
379
- title: "Magic Context: Dream",
380
- group: "Magic Context",
381
- palette: true,
382
- slash: { name: "ctx-dream", arguments: true },
383
- run: async (input) => {
384
- await showDream(input?.trim() || undefined);
385
- },
386
- },
387
- {
388
- id: "magic-context.flush",
389
- title: "Magic Context: Flush",
390
- group: "Magic Context",
391
- palette: true,
392
- slash: { name: "ctx-flush" },
393
- run: async () => {
394
- const flushed = await runCommandRpc("Flush", requestFlush);
395
- if (flushed) void refresh(currentSessionID(context) ?? "", true);
396
- },
397
- },
398
- {
399
- id: "magic-context.embed",
400
- title: "Magic Context: Embed",
401
- group: "Magic Context",
402
- palette: true,
403
- slash: { name: "ctx-embed", arguments: true },
404
- run: async (input) => {
405
- const argument = input?.trim().toLowerCase() ?? "";
406
- if (argument !== "" && argument !== "start" && argument !== "pause") {
407
- context.ui.toast.show({
408
- message:
409
- "Usage: /ctx-embed (status), /ctx-embed start, or /ctx-embed pause",
410
- variant: "warning",
411
- });
412
- return;
413
- }
414
- const action = argument === "" ? "status" : argument;
415
- await runCommandRpc(
416
- "Embed",
417
- (sessionID) => requestEmbed(sessionID, action, directory),
418
- "Embedding started; the summary appears when it finishes",
419
- );
420
- },
421
- },
422
- {
423
- id: "magic-context.wrapup",
424
- title: "Magic Context: Wrapup",
425
- group: "Magic Context",
426
- palette: true,
427
- slash: { name: "ctx-wrapup", arguments: true },
428
- run: async (input) => {
429
- const argument = input?.trim() ?? "";
430
- if (argument !== "" && !/^\d+$/.test(argument)) {
431
- context.ui.toast.show({
432
- message:
433
- "Usage: /ctx-wrapup [messages_to_keep] where messages_to_keep is a positive integer",
434
- variant: "warning",
435
- });
436
- return;
437
- }
438
- const messagesToKeep = argument === "" ? 20 : Number.parseInt(argument, 10);
439
- if (messagesToKeep <= 0) {
440
- context.ui.toast.show({
441
- message: "messages_to_keep must be a positive integer",
442
- variant: "warning",
443
- });
444
- return;
445
- }
446
- await runCommandRpc(
447
- "Wrapup",
448
- (sessionID) => requestWrapup(sessionID, messagesToKeep),
449
- "Wrapup started; the summary appears when it finishes",
450
- );
451
- },
452
- },
453
- ],
454
- });
455
- let keymapLayerRegistered = false;
456
- let keymapGapLogged = false;
457
- const registerKeymapLayer = (): boolean => {
458
- if (keymapLayerRegistered) return true;
459
- try {
460
- context.keymap.layer(buildKeymapLayer);
461
- keymapLayerRegistered = true;
462
- // The accepted layer is the only place that knows which slash commands
463
- // this host actually got, so report them from it. Anything missing here
464
- // is missing from the host's command palette too. It goes to the
465
- // diagnostic log because a TUI host owns the screen and drops plugin
466
- // console output.
467
- const registered = `registered slash commands: ${buildKeymapLayer()
468
- .commands.map((command) => command.slash.name)
469
- .join(" ")}`;
470
- log(`[magic-context] ${registered}`);
471
- // Startup lines are worth an immediate write: a TUI that exits or is
472
- // killed before the next buffer flush would otherwise leave no record
473
- // of which commands this host received.
474
- flushLogger();
475
- return true;
476
- } catch (error) {
477
- if (!(error instanceof Error) || error.message !== "Keymap.Provider is missing")
478
- throw error;
479
- return false;
480
- }
481
- };
482
- let unregisterKeymapSlot: (() => void) | undefined;
483
- if (!registerKeymapLayer()) {
484
- unregisterKeymapSlot = context.ui.slot({
485
- append: "app",
486
- render: () => {
487
- let registered = false;
488
- try {
489
- registered = registerKeymapLayer();
490
- } catch (error) {
491
- log("[magic-context] keymap.layer registration failed", error);
492
- }
493
- if (!registered && !keymapGapLogged) {
494
- keymapGapLogged = true;
495
- log(
496
- "[magic-context] OpenCode 2 keymap.layer is unavailable; /ctx-status, /ctx-recomp, /ctx-dream, /ctx-flush, /ctx-embed and /ctx-wrapup were not registered",
497
- );
498
- }
499
- return null;
500
- },
501
- });
502
- }
503
-
504
296
  // Only the text projection needs the sidebar snapshot store; the mounted
505
297
  // component keeps its own snapshot and subscribes to the same event stream
506
298
  // itself.
@@ -537,6 +329,7 @@ export async function setupWithJsx(context: V2TuiContext, jsx: JsxFactory): Prom
537
329
  if (notification.payload.action === "refresh-sidebar" && target) {
538
330
  if (mountedSidebar) mountedSidebar.refresh();
539
331
  else await refresh(target, true);
332
+ log(`[magic-context] sidebar refresh requested for session ${target}`);
540
333
  return true;
541
334
  }
542
335
  if (notification.payload.action === "show-result-dialog") {
@@ -565,7 +358,6 @@ export async function setupWithJsx(context: V2TuiContext, jsx: JsxFactory): Prom
565
358
  mountedSidebar?.dispose();
566
359
  mountedSidebar = null;
567
360
  statusDialog = null;
568
- unregisterKeymapSlot?.();
569
361
  stopListening();
570
362
  stopNotificationSocket();
571
363
  closeRpc();
@@ -119,23 +119,11 @@ export interface V2TuiContext {
119
119
  };
120
120
  }
121
121
 
122
- /**
123
- * A slot claim's `render` runs inside the host's component tree; `app` is the
124
- * always-mounted root slot, which is where `keymap.layer()` can be called from
125
- * when plugin `setup()` runs outside the keymap provider (see index.ts).
126
- */
127
- export type V2SlotClaim =
128
- | {
129
- readonly append: "sidebar.content";
130
- readonly render: (input: { readonly sessionID: string }) => unknown;
131
- }
132
- | {
133
- readonly append: "app";
134
- readonly render: (input: Readonly<Record<string, never>>) => unknown;
135
- };
136
-
137
- /** The layer object `context.keymap.layer()` accepts, derived from the context type. */
138
- export type V2KeymapLayer = ReturnType<Parameters<V2TuiContext["keymap"]["layer"]>[0]>;
122
+ /** The sidebar slot used by the OpenCode 2 TUI. */
123
+ export type V2SlotClaim = {
124
+ readonly append: "sidebar.content";
125
+ readonly render: (input: { readonly sessionID: string }) => unknown;
126
+ };
139
127
 
140
128
  export interface V2SidebarState {
141
129
  snapshots: Record<string, SidebarSnapshot | undefined>;
@@ -1,45 +0,0 @@
1
- export interface FakeSubcRoute {
2
- target: Record<string, unknown>;
3
- identity: Record<string, unknown>;
4
- consumerIdentity: unknown;
5
- }
6
- export interface FakeSubcCall {
7
- route: FakeSubcRoute;
8
- method: string;
9
- params: unknown;
10
- }
11
- /** `result` is sent as `{"result": ...}`; `error` as an Error frame; `hang` never answers. */
12
- export type FakeSubcReply = {
13
- result: unknown;
14
- } | {
15
- error: {
16
- code: string;
17
- message: string;
18
- };
19
- } | {
20
- hang: true;
21
- };
22
- export interface FakeSubcDaemon {
23
- readonly connectionFile: string;
24
- readonly port: number;
25
- /** Every route.open, in arrival order. */
26
- readonly routeOpens: FakeSubcRoute[];
27
- /** Every data-plane request, in arrival order. */
28
- readonly calls: FakeSubcCall[];
29
- close(): Promise<void>;
30
- }
31
- /**
32
- * Start the fake daemon and write its connection file (mode 0600, as the real
33
- * client requires) at `connectionFile`.
34
- */
35
- export declare function startFakeSubcDaemon(connectionFile: string, respond: (call: FakeSubcCall) => FakeSubcReply | Promise<FakeSubcReply>): Promise<FakeSubcDaemon>;
36
- /**
37
- * The fleet as the checkout-claim check sees it: ALF maps sessions to agents,
38
- * engram reports each agent's claim. Anything not listed answers as ALF and
39
- * engram do for unknown subjects (`agent_id: null`, an unclaimed epoch-0 view).
40
- */
41
- export declare function fakeFleetResponder(fleet: {
42
- agents: Record<string, string>;
43
- claims: Record<string, Record<string, unknown>>;
44
- }): (call: FakeSubcCall) => FakeSubcReply;
45
- //# sourceMappingURL=checkout-claim-fake-subc.test-support.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkout-claim-fake-subc.test-support.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/checkout-claim-fake-subc.test-support.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,8FAA8F;AAC9F,MAAM,MAAM,aAAa,GACnB;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErB,MAAM,WAAW,cAAc;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAkDD;;;GAGG;AACH,wBAAsB,mBAAmB,CACrC,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,GACxE,OAAO,CAAC,cAAc,CAAC,CAkHzB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,aAAa,CAqBxC"}
@@ -1,155 +0,0 @@
1
- export declare const ALF_MODULE_ID = "prefrontal-core";
2
- export declare const ALF_AGENT_FOR_HOST_SESSION_OP = "agent.for_host_session";
3
- export declare const ENGRAM_MODULE_ID = "engram";
4
- export declare const ENGRAM_AGENT_SYNC_SERVICE_ID = "agent-sync";
5
- export declare const ENGRAM_CLAIM_READ_OP = "claim.read";
6
- /** How long an admitted verdict (checked or not) is reused for a session. */
7
- export declare const CHECKOUT_CLAIM_TTL_MS = 60000;
8
- /**
9
- * How long a refusal is reused. Short, so that a turn retried after the agent
10
- * moves back to this machine goes through without waiting out the full TTL,
11
- * while the several passes of one refused turn still share one check.
12
- */
13
- export declare const CHECKOUT_CLAIM_REFUSAL_RECHECK_MS = 5000;
14
- /** The whole check (connect, both queries) must finish within this budget. */
15
- export declare const CHECKOUT_CLAIM_CHECK_TIMEOUT_MS = 1500;
16
- export declare const CHECKOUT_CLAIM_REFUSAL_CODE = "checkout_claim_held_elsewhere";
17
- /** ALF's harness names for host sessions. OMP runs the Pi plugin and its sessions are Pi's. */
18
- export type CheckoutClaimHarness = "opencode" | "pi";
19
- export type CheckoutClaimOutcome = {
20
- verdict: "admit";
21
- reason: "no_agent" | "held_here" | "unclaimed" | "not_held_elsewhere";
22
- agentId: string | null;
23
- epoch?: number;
24
- } | {
25
- verdict: "admit_unchecked";
26
- reason: "not_configured" | "error" | "timeout" | "invalid_reply";
27
- stage: "connect" | "agent" | "claim";
28
- agentId?: string;
29
- code?: string;
30
- detail: string;
31
- } | {
32
- verdict: "refuse";
33
- agentId: string;
34
- holder: string | null;
35
- epoch: number | null;
36
- };
37
- /** One connected client for a single check. Each query resolves to the module's reply body. */
38
- export interface CheckoutClaimConnection {
39
- agentForHostSession(params: {
40
- harness: CheckoutClaimHarness;
41
- session: string;
42
- }, timeoutMs: number): Promise<unknown>;
43
- claimRead(params: {
44
- subject: string;
45
- }, timeoutMs: number): Promise<unknown>;
46
- close(): void;
47
- }
48
- /** Opens a connection for one check, or returns null when subc is not configured on this machine. */
49
- export type CheckoutClaimConnector = (args: {
50
- harness: CheckoutClaimHarness;
51
- sessionId: string;
52
- projectRoot: string;
53
- timeoutMs: number;
54
- }) => Promise<CheckoutClaimConnection | null>;
55
- export declare function renderCheckoutClaimRefusal(holder: string | null, epoch: number | null): string;
56
- /** The turn is refused because another machine holds the session's agent. */
57
- export declare class CheckoutClaimRefusalError extends Error {
58
- readonly code = "checkout_claim_held_elsewhere";
59
- readonly userFacingCode: "MC-C16";
60
- readonly agentId: string;
61
- readonly holder: string | null;
62
- readonly epoch: number | null;
63
- constructor(args: {
64
- agentId: string;
65
- holder: string | null;
66
- epoch: number | null;
67
- });
68
- }
69
- /** Matches the refusal across bundled copies of this module, which do not share the class. */
70
- export declare function isCheckoutClaimRefusalError(error: unknown): error is CheckoutClaimRefusalError;
71
- type ParsedAgent = {
72
- ok: true;
73
- agentId: string | null;
74
- } | {
75
- ok: false;
76
- detail: string;
77
- };
78
- export declare function parseAgentForHostSessionReply(reply: unknown): ParsedAgent;
79
- type ParsedClaim = {
80
- ok: true;
81
- heldElsewhere: boolean;
82
- heldHere: boolean;
83
- epoch: number;
84
- holder: string | null;
85
- } | {
86
- ok: false;
87
- detail: string;
88
- };
89
- export declare function parseClaimReadReply(reply: unknown): ParsedClaim;
90
- /**
91
- * Run one check end to end within `timeoutMs`. Never throws: every way the
92
- * check can fail to finish is an `admit_unchecked` outcome.
93
- */
94
- export declare function readCheckoutClaim(args: {
95
- connector: CheckoutClaimConnector;
96
- harness: CheckoutClaimHarness;
97
- sessionId: string;
98
- projectRoot: string;
99
- timeoutMs: number;
100
- now?: () => number;
101
- }): Promise<CheckoutClaimOutcome>;
102
- /**
103
- * The production connector: a fresh subc client per check, authenticated as a
104
- * direct caller (both queries admit direct callers), closed when the check ends.
105
- */
106
- export declare function subcCheckoutClaimConnector(connectionFile: () => string): CheckoutClaimConnector;
107
- export interface CheckoutClaimGateOptions {
108
- harness: CheckoutClaimHarness;
109
- connector: CheckoutClaimConnector;
110
- /** Runs one check; tests substitute it to drive the cache with fixed outcomes. */
111
- read?: typeof readCheckoutClaim;
112
- ttlMs?: number;
113
- refusalRecheckMs?: number;
114
- timeoutMs?: number;
115
- now?: () => number;
116
- }
117
- /**
118
- * Per-process gate over {@link readCheckoutClaim}: caches each session's
119
- * verdict, shares one in-flight check per session, and turns a refusal into
120
- * {@link CheckoutClaimRefusalError}.
121
- */
122
- export declare class CheckoutClaimGate {
123
- readonly harness: CheckoutClaimHarness;
124
- private readonly connector;
125
- private readonly read;
126
- private readonly ttlMs;
127
- private readonly refusalRecheckMs;
128
- private readonly timeoutMs;
129
- private readonly now;
130
- private readonly cache;
131
- private readonly inFlight;
132
- constructor(options: CheckoutClaimGateOptions);
133
- /** The session's verdict, from the cache while it is fresh. */
134
- check(sessionId: string, projectRoot: string): Promise<CheckoutClaimOutcome>;
135
- /** The refusal to raise for this session, or null when it is admitted. */
136
- refusal(sessionId: string, projectRoot: string): Promise<CheckoutClaimRefusalError | null>;
137
- /** Throws {@link CheckoutClaimRefusalError} when another machine holds the session's agent. */
138
- enforce(sessionId: string, projectRoot: string): Promise<void>;
139
- /** Drop a session's cached verdict so its next pass checks again. */
140
- forget(sessionId: string): void;
141
- private runCheck;
142
- }
143
- /** The gate production hosts use: subc's connection file, ALF and engram over it. */
144
- export declare function createSubcCheckoutClaimGate(harness: CheckoutClaimHarness, connectionFile: () => string): CheckoutClaimGate;
145
- /**
146
- * The session an OpenCode 1 bus event belongs to, or undefined for events that
147
- * name none. Session lifecycle events carry it as `info.id`; message events as
148
- * `info.sessionID`; part events as `part.sessionID`; the rest as `sessionID`.
149
- */
150
- export declare function openCodeEventSessionId(event: {
151
- type?: unknown;
152
- properties?: unknown;
153
- }): string | undefined;
154
- export {};
155
- //# sourceMappingURL=checkout-claim.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkout-claim.d.ts","sourceRoot":"","sources":["../../../src/features/magic-context/checkout-claim.ts"],"names":[],"mappings":"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"}