@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,16 +1,16 @@
1
1
  import {
2
- observeEmbeddingActivity
3
- } from "./server-yr3zj7e7.js";
2
+ observeEmbeddingActivity2
3
+ } from "./server-qt1qqasc.js";
4
4
  import {
5
5
  importPluginModule,
6
- sessionLog
7
- } from "./server-1qbnzc80.js";
6
+ sessionLog2
7
+ } from "./server-t4k4qexw.js";
8
8
  import {
9
9
  isDefaultSessionTitle2
10
- } from "./server-6r257mf5.js";
10
+ } from "./server-676xw7at.js";
11
11
  import {
12
12
  shouldHoldIgnoredNotification
13
- } from "./server-vd4e7174.js";
13
+ } from "./server-pj4pjv02.js";
14
14
  import {
15
15
  getErrorMessage
16
16
  } from "./server-y8v6yerm.js";
@@ -29,7 +29,7 @@ var noticeDeleter;
29
29
  var notificationDiagnosticObserverForTests;
30
30
  function notificationDiagnostic(sessionId, message) {
31
31
  notificationDiagnosticObserverForTests?.(message);
32
- sessionLog(sessionId, message);
32
+ sessionLog2(sessionId, message);
33
33
  }
34
34
  function queueIgnoredNotification(notification) {
35
35
  const queued = queuedIgnoredNotifications.get(notification.sessionId) ?? [];
@@ -38,7 +38,7 @@ function queueIgnoredNotification(notification) {
38
38
  queued.push(notification);
39
39
  if (queued.length > MAX_QUEUED_IGNORED_NOTIFICATIONS2) {
40
40
  queued.splice(0, queued.length - MAX_QUEUED_IGNORED_NOTIFICATIONS2);
41
- sessionLog(notification.sessionId, `ignored notification queue full; dropped oldest entries (kept newest ${MAX_QUEUED_IGNORED_NOTIFICATIONS2})`);
41
+ sessionLog2(notification.sessionId, `ignored notification queue full; dropped oldest entries (kept newest ${MAX_QUEUED_IGNORED_NOTIFICATIONS2})`);
42
42
  }
43
43
  queuedIgnoredNotifications.set(notification.sessionId, queued);
44
44
  }
@@ -66,7 +66,7 @@ async function trySendTuiToast(sessionId, text, params, forcePersist) {
66
66
  }, sessionId);
67
67
  return true;
68
68
  } catch {
69
- sessionLog(sessionId, "TUI RPC toast enqueue failed, falling back to ignored message");
69
+ sessionLog2(sessionId, "TUI RPC toast enqueue failed, falling back to ignored message");
70
70
  return false;
71
71
  }
72
72
  }
@@ -102,7 +102,7 @@ function notifyDelivered(sessionId, params) {
102
102
  try {
103
103
  params.onDelivered?.();
104
104
  } catch (error) {
105
- sessionLog(sessionId, "notification delivery callback failed:", getErrorMessage(error));
105
+ sessionLog2(sessionId, "notification delivery callback failed:", getErrorMessage(error));
106
106
  }
107
107
  }
108
108
  function hasNotificationSessionClient(client) {
@@ -142,9 +142,9 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
142
142
  holdIgnoredNotification({ client, sessionId, text, params, forcePersist }, "during target checks");
143
143
  return "queued";
144
144
  }
145
- const { waitForSafeNotificationTarget } = await importPluginModule(() => import("./safe-notification-target-eb1n1vfb.js"));
145
+ const { waitForSafeNotificationTarget } = await importPluginModule(() => import("./safe-notification-target-y3p1hce9.js"));
146
146
  if (await waitForSafeNotificationTarget(client, sessionId) === "skip") {
147
- sessionLog(sessionId, "notification skipped (session not titled yet)");
147
+ sessionLog2(sessionId, "notification skipped (session not titled yet)");
148
148
  return "skipped";
149
149
  }
150
150
  if ((activityEpoch.get(sessionId) ?? 0) !== epoch)
@@ -154,7 +154,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
154
154
  return "queued";
155
155
  }
156
156
  if (!hasNotificationSessionClient(client)) {
157
- sessionLog(sessionId, "session prompt API unavailable for notification");
157
+ sessionLog2(sessionId, "session prompt API unavailable for notification");
158
158
  return "failed";
159
159
  }
160
160
  const c = client;
@@ -201,7 +201,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
201
201
  } else if (typeof c.session?.promptAsync === "function") {
202
202
  result = await c.session.promptAsync(input);
203
203
  } else {
204
- sessionLog(sessionId, "session prompt API unavailable for notification");
204
+ sessionLog2(sessionId, "session prompt API unavailable for notification");
205
205
  return "failed";
206
206
  }
207
207
  const messageId = extractPromptedMessageId(result);
@@ -221,7 +221,7 @@ async function sendIgnoredMessageNow(client, sessionId, text, params, forcePersi
221
221
  return "sent";
222
222
  } catch (error) {
223
223
  const msg = getErrorMessage(error);
224
- sessionLog(sessionId, "failed to send notification:", msg);
224
+ sessionLog2(sessionId, "failed to send notification:", msg);
225
225
  return "failed";
226
226
  }
227
227
  }
@@ -244,7 +244,7 @@ async function deleteNoticeMessage(sessionId, messageId) {
244
244
  if (noticeDeleter)
245
245
  return noticeDeleter(sessionId, messageId);
246
246
  if (!notificationServerUrl) {
247
- sessionLog(sessionId, "cannot roll back notice: no server URL for session.message.delete");
247
+ sessionLog2(sessionId, "cannot roll back notice: no server URL for session.message.delete");
248
248
  return false;
249
249
  }
250
250
  const url = `${notificationServerUrl}/session/${encodeURIComponent(sessionId)}/message/${encodeURIComponent(messageId)}`;
@@ -256,12 +256,12 @@ async function deleteNoticeMessage(sessionId, messageId) {
256
256
  signal: AbortSignal.timeout(1e4)
257
257
  });
258
258
  if (!response.ok) {
259
- sessionLog(sessionId, `notice rollback DELETE failed status=${response.status} url=${url}`);
259
+ sessionLog2(sessionId, `notice rollback DELETE failed status=${response.status} url=${url}`);
260
260
  return false;
261
261
  }
262
262
  return true;
263
263
  } catch (error) {
264
- sessionLog(sessionId, "notice rollback DELETE error:", getErrorMessage(error));
264
+ sessionLog2(sessionId, "notice rollback DELETE error:", getErrorMessage(error));
265
265
  return false;
266
266
  }
267
267
  }
@@ -274,10 +274,10 @@ async function revertNoticeIfUnsafe(notification) {
274
274
  if (deleted) {
275
275
  notificationDiagnostic(notification.sessionId, `notice rolled back (deleted row ${notification.messageId}); consumed after append`);
276
276
  } else {
277
- sessionLog(notification.sessionId, "failed to roll back a notice that landed while a run was active");
277
+ sessionLog2(notification.sessionId, "failed to roll back a notice that landed while a run was active");
278
278
  }
279
279
  } else {
280
- sessionLog(notification.sessionId, "notice landed while a run was active but the new row id was not returned");
280
+ sessionLog2(notification.sessionId, "notice landed while a run was active but the new row id was not returned");
281
281
  }
282
282
  lastDeliveredText.set(notification.sessionId, notification.text);
283
283
  return true;
@@ -309,7 +309,7 @@ async function sendCommandResult2(client, sessionId, text, params) {
309
309
  }
310
310
  return disposition;
311
311
  } catch (error) {
312
- sessionLog(sessionId, "command result delivery failed:", getErrorMessage(error));
312
+ sessionLog2(sessionId, "command result delivery failed:", getErrorMessage(error));
313
313
  return "failed";
314
314
  }
315
315
  }
@@ -361,7 +361,7 @@ function clearIgnoredMessages2(sessionId) {
361
361
  activityEpoch.delete(sessionId);
362
362
  }
363
363
  function observeIgnoredNotificationEvent2(event) {
364
- observeEmbeddingActivity(event);
364
+ observeEmbeddingActivity2(event);
365
365
  const record = (value) => value !== null && typeof value === "object" ? value : undefined;
366
366
  const props = record(event.properties);
367
367
  const info = record(props?.info);
@@ -396,7 +396,7 @@ async function sendStatusNotification2(_client, sessionId, text, params) {
396
396
  notifyDelivered(sessionId, params);
397
397
  return "sent";
398
398
  } catch (error) {
399
- sessionLog(sessionId, "status RPC enqueue failed:", getErrorMessage(error));
399
+ sessionLog2(sessionId, "status RPC enqueue failed:", getErrorMessage(error));
400
400
  return "failed";
401
401
  }
402
402
  }
@@ -1,165 +1,14 @@
1
1
  import {
2
- toolTemplateError,
2
+ toolTemplateError
3
+ } from "./server-mfkzp7qj.js";
4
+ import {
3
5
  DEFAULT_PROTECTED_TOOLS,
4
6
  mergeProtectedTools
5
- } from "./server-fq7kq32k.js";
7
+ } from "./server-d9vfe7xq.js";
6
8
  import {
7
9
  modelRefLookupOrder
8
10
  } from "./server-avwt563y.js";
9
11
 
10
- // src/agents/language-directive.ts
11
- var ENGLISH_LANGUAGE_NAMES = new Intl.DisplayNames(["en"], {
12
- type: "language",
13
- fallback: "none"
14
- });
15
- function resolveLanguageName(language) {
16
- const code = typeof language === "string" ? language.trim().toLowerCase() : "";
17
- if (!/^[a-z]{2}$/.test(code))
18
- return "";
19
- let english;
20
- try {
21
- english = ENGLISH_LANGUAGE_NAMES.of(code) ?? undefined;
22
- } catch {
23
- return "";
24
- }
25
- if (!english)
26
- return "";
27
- let endonym;
28
- try {
29
- endonym = new Intl.DisplayNames([code], { type: "language", fallback: "none" }).of(code) ?? undefined;
30
- } catch {
31
- endonym = undefined;
32
- }
33
- return endonym && endonym !== english ? `${english} (${endonym})` : english;
34
- }
35
- function isValidLanguageCode(language) {
36
- return resolveLanguageName(language) !== "";
37
- }
38
- function buildContentLanguageDirective(language, options = {}) {
39
- const target = resolveLanguageName(language);
40
- if (!target)
41
- return "";
42
- const lines = [
43
- "## Output language",
44
- "",
45
- `Write human-readable prose you author in: ${target}.`,
46
- "",
47
- "Do not translate or rename structural tokens. Copy required output schemas exactly:",
48
- "- XML tag names, XML attribute names, JSON keys, tool names, tool-call argument keys, enum values, booleans/null, and required sentinel strings stay in English exactly as shown.",
49
- "- Keep code identifiers, file paths, commands, config keys, CLI flags, URLs, commit hashes, model/provider IDs, stack traces, diagnostics, and transcript role markers such as U:, A:, and TC: verbatim.",
50
- "- Localize only free-text prose values/content: summaries, memory text, explanations, titles, observations, and answers — unless the prompt says to preserve original wording.",
51
- "",
52
- "These literal values must remain English when used:",
53
- "PROJECT_RULES, ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING;",
54
- "causal_incident, trajectory_correction;",
55
- "feature, design, docs, release, investigation, bug, refactor, infra;",
56
- "memory, observation; true, false; No relevant memories found.",
57
- "",
58
- "Preserve the required output shape. Do not add commentary outside the requested XML/JSON/tool output."
59
- ];
60
- if (options.preserveUserQuotes) {
61
- lines.push("", `Preserve U: lines and directly quoted user text in their original source language; write the surrounding summary prose in ${target}.`);
62
- }
63
- if (options.retrospective) {
64
- lines.push("", `Write the lesson text in ${target}; paraphrase source text and never quote the user.`);
65
- }
66
- return lines.join(`
67
- `);
68
- }
69
- function withContentLanguageDirective(systemPrompt, language, options = {}) {
70
- const directive = buildContentLanguageDirective(language, options);
71
- return directive ? `${systemPrompt}
72
-
73
- ${directive}` : systemPrompt;
74
- }
75
- function buildPrimaryLanguageDirective(language) {
76
- const target = resolveLanguageName(language);
77
- if (!target)
78
- return "";
79
- return `Use ${target} for your natural-language replies to the user unless the user explicitly asks for another language. Keep code, identifiers, file paths, commands, logs, and quoted text verbatim.`;
80
- }
81
-
82
- // src/shared/prompt-surface.ts
83
- function promptSurfaceConfigIdentity(config) {
84
- return JSON.stringify({
85
- default: config?.default ?? "full",
86
- models: Object.entries(config?.models ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0),
87
- guidanceOverridePath: config?.guidance_override_path ?? null,
88
- toolDescriptions: Object.entries(config?.tool_descriptions ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
89
- });
90
- }
91
- function isValidPromptSurfaceModelKey(key) {
92
- if (key.length === 0 || key.trim() !== key)
93
- return false;
94
- const slash = key.indexOf("/");
95
- if (slash < 0)
96
- return !key.includes("*");
97
- if (slash === 0 || slash === key.length - 1)
98
- return false;
99
- const provider = key.slice(0, slash);
100
- const modelID = key.slice(slash + 1);
101
- if (provider.trim() !== provider || modelID.trim() !== modelID || provider.includes("*") || modelID.includes("*") && modelID !== "*") {
102
- return false;
103
- }
104
- if (modelID === "*")
105
- return true;
106
- return modelID.length > 0 && !modelID.startsWith("/") && !modelID.endsWith("/") && !modelID.includes("//");
107
- }
108
- function modelKeyLookupOrder(modelKey) {
109
- if (!modelKey)
110
- return [];
111
- const slash = modelKey.indexOf("/");
112
- if (slash <= 0 || slash === modelKey.length - 1)
113
- return [];
114
- const provider = modelKey.slice(0, slash);
115
- let modelID = modelKey.slice(slash + 1);
116
- const providerRefs = modelRefLookupOrder(`${provider}/${modelID}`);
117
- const candidates = [];
118
- while (modelID.length > 0) {
119
- for (const providerRef of providerRefs) {
120
- const providerSlash = providerRef.indexOf("/");
121
- const providerPrefix = providerRef.slice(0, providerSlash);
122
- candidates.push({ key: `${providerPrefix}/${modelID}`, source: "exact" });
123
- }
124
- candidates.push({ key: modelID, source: "bare" });
125
- const lastDash = modelID.lastIndexOf("-");
126
- if (lastDash <= 0)
127
- break;
128
- modelID = modelID.slice(0, lastDash);
129
- }
130
- for (const providerRef of providerRefs) {
131
- const providerSlash = providerRef.indexOf("/");
132
- const providerPrefix = providerRef.slice(0, providerSlash);
133
- candidates.push({ key: `${providerPrefix}/*`, source: "wildcard" });
134
- }
135
- const seen = new Set;
136
- return candidates.filter((candidate) => {
137
- if (seen.has(candidate.key))
138
- return false;
139
- seen.add(candidate.key);
140
- return true;
141
- });
142
- }
143
- function resolveModelConfigValue(values, modelKey) {
144
- if (!values)
145
- return;
146
- for (const candidate of modelKeyLookupOrder(modelKey)) {
147
- const value = values[candidate.key];
148
- if (value !== undefined) {
149
- return { value, source: candidate.source };
150
- }
151
- }
152
- return;
153
- }
154
- function resolvePromptSurface(config, modelKey) {
155
- const fallback = config?.default ?? "full";
156
- const match = resolveModelConfigValue(config?.models, modelKey);
157
- if (match) {
158
- return { preset: match.value, source: match.source };
159
- }
160
- return { preset: fallback, source: "default" };
161
- }
162
-
163
12
  // src/config/schema/magic-context.ts
164
13
  import { homedir } from "node:os";
165
14
 
@@ -5019,6 +4868,78 @@ function superRefine(fn, params) {
5019
4868
  }
5020
4869
  // ../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
5021
4870
  config(en_default());
4871
+ // src/agents/language-directive.ts
4872
+ var ENGLISH_LANGUAGE_NAMES = new Intl.DisplayNames(["en"], {
4873
+ type: "language",
4874
+ fallback: "none"
4875
+ });
4876
+ function resolveLanguageName(language) {
4877
+ const code = typeof language === "string" ? language.trim().toLowerCase() : "";
4878
+ if (!/^[a-z]{2}$/.test(code))
4879
+ return "";
4880
+ let english;
4881
+ try {
4882
+ english = ENGLISH_LANGUAGE_NAMES.of(code) ?? undefined;
4883
+ } catch {
4884
+ return "";
4885
+ }
4886
+ if (!english)
4887
+ return "";
4888
+ let endonym;
4889
+ try {
4890
+ endonym = new Intl.DisplayNames([code], { type: "language", fallback: "none" }).of(code) ?? undefined;
4891
+ } catch {
4892
+ endonym = undefined;
4893
+ }
4894
+ return endonym && endonym !== english ? `${english} (${endonym})` : english;
4895
+ }
4896
+ function isValidLanguageCode(language) {
4897
+ return resolveLanguageName(language) !== "";
4898
+ }
4899
+ function buildContentLanguageDirective(language, options = {}) {
4900
+ const target = resolveLanguageName(language);
4901
+ if (!target)
4902
+ return "";
4903
+ const lines = [
4904
+ "## Output language",
4905
+ "",
4906
+ `Write human-readable prose you author in: ${target}.`,
4907
+ "",
4908
+ "Do not translate or rename structural tokens. Copy required output schemas exactly:",
4909
+ "- XML tag names, XML attribute names, JSON keys, tool names, tool-call argument keys, enum values, booleans/null, and required sentinel strings stay in English exactly as shown.",
4910
+ "- Keep code identifiers, file paths, commands, config keys, CLI flags, URLs, commit hashes, model/provider IDs, stack traces, diagnostics, and transcript role markers such as U:, A:, and TC: verbatim.",
4911
+ "- Localize only free-text prose values/content: summaries, memory text, explanations, titles, observations, and answers — unless the prompt says to preserve original wording.",
4912
+ "",
4913
+ "These literal values must remain English when used:",
4914
+ "PROJECT_RULES, ARCHITECTURE, CONSTRAINTS, CONFIG_VALUES, NAMING;",
4915
+ "causal_incident, trajectory_correction;",
4916
+ "feature, design, docs, release, investigation, bug, refactor, infra;",
4917
+ "memory, observation; true, false; No relevant memories found.",
4918
+ "",
4919
+ "Preserve the required output shape. Do not add commentary outside the requested XML/JSON/tool output."
4920
+ ];
4921
+ if (options.preserveUserQuotes) {
4922
+ lines.push("", `Preserve U: lines and directly quoted user text in their original source language; write the surrounding summary prose in ${target}.`);
4923
+ }
4924
+ if (options.retrospective) {
4925
+ lines.push("", `Write the lesson text in ${target}; paraphrase source text and never quote the user.`);
4926
+ }
4927
+ return lines.join(`
4928
+ `);
4929
+ }
4930
+ function withContentLanguageDirective(systemPrompt, language, options = {}) {
4931
+ const directive = buildContentLanguageDirective(language, options);
4932
+ return directive ? `${systemPrompt}
4933
+
4934
+ ${directive}` : systemPrompt;
4935
+ }
4936
+ function buildPrimaryLanguageDirective(language) {
4937
+ const target = resolveLanguageName(language);
4938
+ if (!target)
4939
+ return "";
4940
+ return `Use ${target} for your natural-language replies to the user unless the user explicitly asks for another language. Keep code, identifiers, file paths, commands, logs, and quoted text verbatim.`;
4941
+ }
4942
+
5022
4943
  // src/features/magic-context/dreamer/cron.ts
5023
4944
  var FIELDS = [
5024
4945
  { name: "minute", min: 0, max: 59 },
@@ -5169,6 +5090,87 @@ function nextDueAtMs(expression, afterMs, consumedScheduledAtMs, maxSearchMs = M
5169
5090
  return next ? next.getTime() : null;
5170
5091
  }
5171
5092
 
5093
+ // src/shared/prompt-surface.ts
5094
+ function promptSurfaceConfigIdentity(config) {
5095
+ return JSON.stringify({
5096
+ default: config?.default ?? "full",
5097
+ models: Object.entries(config?.models ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0),
5098
+ guidanceOverridePath: config?.guidance_override_path ?? null,
5099
+ toolDescriptions: Object.entries(config?.tool_descriptions ?? {}).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0)
5100
+ });
5101
+ }
5102
+ function isValidPromptSurfaceModelKey(key) {
5103
+ if (key.length === 0 || key.trim() !== key)
5104
+ return false;
5105
+ const slash = key.indexOf("/");
5106
+ if (slash < 0)
5107
+ return !key.includes("*");
5108
+ if (slash === 0 || slash === key.length - 1)
5109
+ return false;
5110
+ const provider = key.slice(0, slash);
5111
+ const modelID = key.slice(slash + 1);
5112
+ if (provider.trim() !== provider || modelID.trim() !== modelID || provider.includes("*") || modelID.includes("*") && modelID !== "*") {
5113
+ return false;
5114
+ }
5115
+ if (modelID === "*")
5116
+ return true;
5117
+ return modelID.length > 0 && !modelID.startsWith("/") && !modelID.endsWith("/") && !modelID.includes("//");
5118
+ }
5119
+ function modelKeyLookupOrder(modelKey) {
5120
+ if (!modelKey)
5121
+ return [];
5122
+ const slash = modelKey.indexOf("/");
5123
+ if (slash <= 0 || slash === modelKey.length - 1)
5124
+ return [];
5125
+ const provider = modelKey.slice(0, slash);
5126
+ let modelID = modelKey.slice(slash + 1);
5127
+ const providerRefs = modelRefLookupOrder(`${provider}/${modelID}`);
5128
+ const candidates = [];
5129
+ while (modelID.length > 0) {
5130
+ for (const providerRef of providerRefs) {
5131
+ const providerSlash = providerRef.indexOf("/");
5132
+ const providerPrefix = providerRef.slice(0, providerSlash);
5133
+ candidates.push({ key: `${providerPrefix}/${modelID}`, source: "exact" });
5134
+ }
5135
+ candidates.push({ key: modelID, source: "bare" });
5136
+ const lastDash = modelID.lastIndexOf("-");
5137
+ if (lastDash <= 0)
5138
+ break;
5139
+ modelID = modelID.slice(0, lastDash);
5140
+ }
5141
+ for (const providerRef of providerRefs) {
5142
+ const providerSlash = providerRef.indexOf("/");
5143
+ const providerPrefix = providerRef.slice(0, providerSlash);
5144
+ candidates.push({ key: `${providerPrefix}/*`, source: "wildcard" });
5145
+ }
5146
+ const seen = new Set;
5147
+ return candidates.filter((candidate) => {
5148
+ if (seen.has(candidate.key))
5149
+ return false;
5150
+ seen.add(candidate.key);
5151
+ return true;
5152
+ });
5153
+ }
5154
+ function resolveModelConfigValue(values, modelKey) {
5155
+ if (!values)
5156
+ return;
5157
+ for (const candidate of modelKeyLookupOrder(modelKey)) {
5158
+ const value = values[candidate.key];
5159
+ if (value !== undefined) {
5160
+ return { value, source: candidate.source };
5161
+ }
5162
+ }
5163
+ return;
5164
+ }
5165
+ function resolvePromptSurface(config, modelKey) {
5166
+ const fallback = config?.default ?? "full";
5167
+ const match = resolveModelConfigValue(config?.models, modelKey);
5168
+ if (match) {
5169
+ return { preset: match.value, source: match.source };
5170
+ }
5171
+ return { preset: fallback, source: "default" };
5172
+ }
5173
+
5172
5174
  // src/config/schema/agent-overrides.ts
5173
5175
  var PermissionValueSchema = _enum(["ask", "allow", "deny"]);
5174
5176
  var PermissionSchema = object({
@@ -5585,7 +5587,7 @@ var MagicContextConfigSchema = object({
5585
5587
  allow_home_project: boolean2().default(false).describe("Allow Magic Context sessions launched from the exact canonical home directory. A non-git home uses its deterministic dir: identity; a home repository uses its git: identity. USER-LEVEL ONLY: project config is ignored. The home identity is excluded from registry seed exports, never resolves descendants by containment, and cannot join a workspace."),
5586
5588
  mural: object({
5587
5589
  enabled: boolean2().default(false),
5588
- model: string().trim().min(1).optional().describe("Model for the compress-cues task that compresses each memory into a mural cue. The mural image itself is rendered deterministically (no author model).")
5590
+ model: unknown().optional().describe("Deprecated: ignored. compress-cues now uses the dreamer model for each harness, like every other dreamer task; override it with dreamer.opencode.tasks.compress-cues.model (or the pi/omp equivalent). Remove this key; it no longer does anything.").meta({ deprecated: true })
5589
5591
  }).default({ enabled: false }).describe("Experimental mural: a single deterministically-rendered image of project memories that did not fit the context budget. Cues are compressed per-memory by the compress-cues dreamer task."),
5590
5592
  transform_mode: _enum(["ts", "rust"]).default("ts").describe('Experimental: routes the entire Magic Context runtime for the project through the ck-mc Rust module over subc (requires user-level `subc` config); "ts" is the current TypeScript pipeline.'),
5591
5593
  auto_update: boolean2().optional().describe("Enable automatic npm self-update checks for the OpenCode plugin. Security: USER-only in config loader, so hostile project configs cannot suppress updates."),
@@ -5595,8 +5597,9 @@ var MagicContextConfigSchema = object({
5595
5597
  historian: HistorianConfigSchema.describe("Historian metadata plus independent strict OpenCode, Pi, and OMP execution blocks. Retained metadata stays at historian; model, fallback_models, variant, and thinking_level belong only in historian.opencode, historian.pi, or historian.omp."),
5596
5598
  dreamer: DreamerConfigSchema.optional().describe("Dreamer metadata and scheduling plus independent strict OpenCode, Pi, and OMP execution blocks. schedule and promotion_threshold stay at dreamer.tasks; model, fallback_models, variant, thinking_level, and timeout_minutes belong only in the matching harness block."),
5597
5599
  smart_notes: object({
5600
+ enabled: boolean2().default(true).describe("Enable smart-note authoring and condition evaluation. User-level only: tool definitions are process-wide. Changes require a host restart and rebuild each session's cached prompt once. Pending notes remain stored and unchecked; already-ready notes still surface."),
5598
5601
  retina_handoff: boolean2().default(false).describe("When true, dreamer skips smart notes whose surface conditions compiled to retina provider configs at authoring time. Default false keeps both paths active until the retina consumer is deployed.")
5599
- }).default({ retina_handoff: false }).describe("Smart-note ownership transition controls."),
5602
+ }).default({ enabled: true, retina_handoff: false }).describe("Smart-note ownership transition controls."),
5600
5603
  cache_ttl: union([string(), object({ default: string() }).catchall(string())]).default("5m").describe(`How long Magic Context assumes the provider's cached prefix stays valid. This is MC's own deferral gate — it does not change the provider's actual cache lifetime. String (e.g. "5m", "1h", "30s") or per-model object ({ default: "5m", "provider/model": "1h", "provider/*": "never" }); keys resolve most-specific first (exact provider/model, bare model ID, shorter dash-prefixes, then the provider/* wildcard, then default). User and project settings, including an explicit "5m" or object default, apply on the next pass. Only built-in defaults are frozen per session, including across restarts: when unset, GPT-5.6 and later (including gpt-6*, through any provider prefix) use 30m, other models use 5m. /ctx-status shows the effective TTL and whether it comes from your config or a frozen built-in default. Editing the TTL does not itself rewrite prompt bytes; a lowered TTL rebuilds only after normal idle expiry. OpenAI documents at least 30 minutes since the latest write or reuse: https://developers.openai.com/api/docs/guides/prompt-caching (Cache lifetime and Summary of model differences). Set to "never" to mean MC never assumes expiry (for lanes kept warm externally by a cache-keep tool) — disables the idle-TTL heuristic so MC never initiates a rebuild based on elapsed time. Provider-side extended TTL is a separate request-level concern (cache_control: { ttl } in the request body).`),
5601
5604
  prompt_surface: PromptSurfaceConfigSchema.default({ default: "full" }).describe("Prompt-surface presets: default is full; models use bare model IDs, provider/model, or provider/* routing keys. Guidance and tool-description overrides are user-level only. OpenCode 1.x, Pi, and OMP register tool descriptions once per process (they follow the default preset). OpenCode 2 rewrites the five ctx_* descriptions per request from the draft model."),
5602
5605
  output_reserve: union([
@@ -5701,7 +5704,6 @@ var MagicContextConfigSchema = object({
5701
5704
  });
5702
5705
  var LIVE_RELOAD_CONFIG_PATHS = [
5703
5706
  "cache_ttl",
5704
- "mural.model",
5705
5707
  "toast_duration_ms",
5706
5708
  "historian.opencode.model",
5707
5709
  "historian.opencode.fallback_models",