@cortexkit/opencode-magic-context 0.48.0 → 0.49.1

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 (304) hide show
  1. package/dist/{announcement-fp14dw0n.js → announcement-hdbkt8v5.js} +1 -1
  2. package/dist/auto-search-worker.js +3 -3
  3. package/dist/config/{mural-model-deprecation.d.ts → deprecated-config.d.ts} +4 -1
  4. package/dist/config/deprecated-config.d.ts.map +1 -0
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/project-security.d.ts +2 -2
  7. package/dist/config/schema/magic-context.d.ts +4 -4
  8. package/dist/config/schema/magic-context.d.ts.map +1 -1
  9. package/dist/{conflict-warning-hook-w8cykrnf.js → conflict-warning-hook-asnt6hfc.js} +7 -7
  10. package/dist/{context-m0cy262m.js → context-tfyhtdcs.js} +187 -68
  11. package/dist/{derive-budgets-sg0xsq7s.js → derive-budgets-j4ry8j8n.js} +2 -2
  12. package/dist/embedding-backfill-wyc3ykyf.js +21 -0
  13. package/dist/embedding-worker-process.js +30 -0
  14. package/dist/embedding-worker.js +6 -6
  15. package/dist/features/magic-context/dreamer/task-registry.d.ts +2 -3
  16. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  17. package/dist/features/magic-context/git-commits/search-git-commits.d.ts +2 -0
  18. package/dist/features/magic-context/git-commits/search-git-commits.d.ts.map +1 -1
  19. package/dist/features/magic-context/memory/embedding-worker-client.d.ts +8 -1
  20. package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
  21. package/dist/features/magic-context/memory/embedding-worker-process.d.ts +2 -0
  22. package/dist/features/magic-context/memory/embedding-worker-process.d.ts.map +1 -0
  23. package/dist/features/magic-context/memory/onnx-telemetry.d.ts +3 -0
  24. package/dist/features/magic-context/memory/onnx-telemetry.d.ts.map +1 -0
  25. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  26. package/dist/features/magic-context/overflow-detection.d.ts +1 -2
  27. package/dist/features/magic-context/overflow-detection.d.ts.map +1 -1
  28. package/dist/features/magic-context/pi-content-decisions.d.ts +1 -1
  29. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  30. package/dist/features/magic-context/search-rerank.d.ts +35 -0
  31. package/dist/features/magic-context/search-rerank.d.ts.map +1 -0
  32. package/dist/features/magic-context/search.d.ts +11 -0
  33. package/dist/features/magic-context/search.d.ts.map +1 -1
  34. package/dist/features/magic-context/storage-meta-persisted.d.ts +13 -2
  35. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  36. package/dist/features/magic-context/storage-meta-session.d.ts +1 -1
  37. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  38. package/dist/features/magic-context/storage-meta.d.ts +1 -1
  39. package/dist/features/magic-context/storage-meta.d.ts.map +1 -1
  40. package/dist/features/magic-context/storage-session-tables.d.ts +2 -0
  41. package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -1
  42. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +29 -9
  43. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-tags.d.ts +9 -0
  45. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  46. package/dist/features/magic-context/storage.d.ts +1 -1
  47. package/dist/features/magic-context/storage.d.ts.map +1 -1
  48. package/dist/features/magic-context/tagger.d.ts +2 -0
  49. package/dist/features/magic-context/tagger.d.ts.map +1 -1
  50. package/dist/features/magic-context/transform-decision-log.d.ts +4 -1
  51. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  52. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts +1 -0
  53. package/dist/features/magic-context/user-memory/storage-user-memory.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts +24 -0
  56. package/dist/hooks/magic-context/auto-search-replay.fixture.d.ts.map +1 -0
  57. package/dist/hooks/magic-context/auto-search-runner.d.ts +1 -1
  58. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +2 -0
  60. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/command-handler.d.ts +2 -0
  62. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/emergency-fail-closed.d.ts +28 -0
  64. package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +1 -0
  67. package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/historian-host-runner.d.ts +8 -0
  69. package/dist/hooks/magic-context/historian-host-runner.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  71. package/dist/hooks/magic-context/hook.d.ts +3 -1
  72. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts +7 -0
  75. package/dist/hooks/magic-context/latest-thinking-recovery.d.ts.map +1 -1
  76. package/dist/hooks/magic-context/lkg-measured-request.d.ts +3 -1
  77. package/dist/hooks/magic-context/lkg-measured-request.d.ts.map +1 -1
  78. package/dist/hooks/magic-context/lkg-persist.d.ts +8 -14
  79. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  80. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +62 -0
  81. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -0
  82. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts +38 -0
  83. package/dist/hooks/magic-context/lkg-recovery-prefix.d.ts.map +1 -0
  84. package/dist/hooks/magic-context/lkg-replay.d.ts +3 -1
  85. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  86. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  87. package/dist/hooks/magic-context/opaque-thinking.d.ts +12 -0
  88. package/dist/hooks/magic-context/opaque-thinking.d.ts.map +1 -0
  89. package/dist/hooks/magic-context/pass-outcome.d.ts +3 -2
  90. package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/pending-materialization.d.ts +8 -0
  92. package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -0
  93. package/dist/hooks/magic-context/read-session-chunk.d.ts +7 -1
  94. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/read-session-db.d.ts +3 -0
  96. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/read-session-raw.d.ts +35 -0
  98. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
  100. package/dist/hooks/magic-context/rust-mode-transform.d.ts +37 -0
  101. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  102. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts +8 -1
  103. package/dist/hooks/magic-context/shared-compartment-boundaries.d.ts.map +1 -1
  104. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts +8 -0
  105. package/dist/hooks/magic-context/strict-thinking-prefix.d.ts.map +1 -0
  106. package/dist/hooks/magic-context/strip-content.d.ts +5 -2
  107. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  108. package/dist/hooks/magic-context/system-date-refresh.d.ts +29 -0
  109. package/dist/hooks/magic-context/system-date-refresh.d.ts.map +1 -0
  110. package/dist/hooks/magic-context/system-prompt-dates.d.ts +6 -0
  111. package/dist/hooks/magic-context/system-prompt-dates.d.ts.map +1 -0
  112. package/dist/hooks/magic-context/system-prompt-delivery.d.ts +47 -0
  113. package/dist/hooks/magic-context/system-prompt-delivery.d.ts.map +1 -0
  114. package/dist/hooks/magic-context/system-prompt-hash.d.ts +4 -0
  115. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  116. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  117. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  118. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +15 -0
  119. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  120. package/dist/hooks/magic-context/transform.d.ts +7 -0
  121. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  122. package/dist/{index-ty64eqcn.js → index-0pjvpfkf.js} +24 -4
  123. package/dist/{index-db7zwa3v.js → index-1bt88epp.js} +93 -9
  124. package/dist/{index-2y0s2hep.js → index-4mjhqadz.js} +1 -1
  125. package/dist/index-6m7rdv7y.js +733 -0
  126. package/dist/{index-k1xb52kd.js → index-6tfxmc4n.js} +11 -11
  127. package/dist/{index-fbv1dn35.js → index-7w18gg78.js} +26 -2
  128. package/dist/{index-7mx8v0pw.js → index-att4bfan.js} +4 -4
  129. package/dist/{index-mmyh6d8f.js → index-eypn4ba6.js} +11 -6
  130. package/dist/{index-q2tqeqde.js → index-fdtkt5r1.js} +1229 -78
  131. package/dist/{index-c43kr12f.js → index-fg00p1cg.js} +42 -40
  132. package/dist/{v2/server-1bc61ans.js → index-fvnzcnww.js} +44 -1
  133. package/dist/index-gbmqa9x9.js +1170 -0
  134. package/dist/{index-knh4y330.js → index-gzky5rva.js} +31 -49
  135. package/dist/{index-0qhce371.js → index-h2wc01qk.js} +2 -2
  136. package/dist/{index-dhwzyd54.js → index-h5zfkjyk.js} +160 -25
  137. package/dist/{index-bhvjj0ys.js → index-k6xvbj2e.js} +255 -1075
  138. package/dist/{index-0w56v4fm.js → index-mw7c950g.js} +1 -1
  139. package/dist/{index-8j7gqj40.js → index-nsjyysj0.js} +6 -2
  140. package/dist/{index-k9nnwad5.js → index-nydv6g8r.js} +44 -7
  141. package/dist/{index-f0h6xwqm.js → index-p0n5ryq8.js} +304 -960
  142. package/dist/{index-pg50n748.js → index-p1hnwfd8.js} +4 -4
  143. package/dist/{index-1qb0z7wa.js → index-qx53vezw.js} +1 -1
  144. package/dist/{index-5zygecde.js → index-r2zcs71c.js} +8 -6
  145. package/dist/{index-cb7emxgj.js → index-rafsaxac.js} +336 -6
  146. package/dist/{index-z8e0psj8.js → index-s7fc0fkn.js} +3 -3
  147. package/dist/{index-14cjxt20.js → index-sfhndpcb.js} +505 -11
  148. package/dist/index-sv0bb7vg.js +6972 -0
  149. package/dist/{index-jcbd3znx.js → index-tqf7yg27.js} +1 -1
  150. package/dist/{index-72nhv486.js → index-vkbqdnkj.js} +2 -2
  151. package/dist/{index-pdecwzrd.js → index-w23dh319.js} +18 -259
  152. package/dist/{index-yq8n9qcb.js → index-xgrwmj82.js} +4 -4
  153. package/dist/{index-0an7742d.js → index-xnanvj3w.js} +1364 -2278
  154. package/dist/{index-eeezr5zz.js → index-z1tjp257.js} +1 -1
  155. package/dist/{index-692jzy0p.js → index-zfzdpeq2.js} +2279 -4061
  156. package/dist/{index-q7h7csab.js → index-zg8yq4ya.js} +34 -749
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +241 -76
  159. package/dist/{logger-d3wex3dz.js → logger-ewak5q1s.js} +1 -1
  160. package/dist/{message-index-bounded-7ezbgddp.js → message-index-bounded-hqktkhdy.js} +15 -14
  161. package/dist/{message-time-backfill-brbd63hv.js → message-time-backfill-8x06r9kx.js} +2 -2
  162. package/dist/migration-worker.js +11 -10
  163. package/dist/plugin/hooks/create-session-hooks.d.ts +5 -1
  164. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  165. package/dist/plugin/messages-transform.d.ts.map +1 -1
  166. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  167. package/dist/plugin/tool-registry.d.ts.map +1 -1
  168. package/dist/{project-embedding-registry-7qzptcw7.js → project-embedding-registry-0gv3h6y8.js} +10 -10
  169. package/dist/raw-ordinal-warmup-worker.js +4 -4
  170. package/dist/{read-session-chunk-6k83m4fj.js → read-session-chunk-5mh0bh8y.js} +12 -9
  171. package/dist/{read-session-raw-3g9qy1xa.js → read-session-raw-8sjbc9h0.js} +5 -3
  172. package/dist/{recomp-orchestrator-d3fp1cy0.js → recomp-orchestrator-kpkhkjhq.js} +28 -27
  173. package/dist/{safe-notification-target-5ffqq32m.js → safe-notification-target-q0cyrx3x.js} +2 -2
  174. package/dist/{search-epax1ecv.js → search-p9w39qv4.js} +22 -21
  175. package/dist/{send-session-notification-erecz4y4.js → send-session-notification-xffh3bbe.js} +5 -5
  176. package/dist/shared/auto-search-lifecycle.d.ts +14 -0
  177. package/dist/shared/auto-search-lifecycle.d.ts.map +1 -1
  178. package/dist/shared/logger.d.ts.map +1 -1
  179. package/dist/shared/models-dev-cache.d.ts.map +1 -1
  180. package/dist/shared/models-dev-temperature.d.ts +18 -0
  181. package/dist/shared/models-dev-temperature.d.ts.map +1 -0
  182. package/dist/shared/project-directory-key.d.ts +16 -0
  183. package/dist/shared/project-directory-key.d.ts.map +1 -1
  184. package/dist/shared/storage-file-mutex.d.ts +9 -0
  185. package/dist/shared/storage-file-mutex.d.ts.map +1 -0
  186. package/dist/shared/storage-permissions.d.ts +6 -0
  187. package/dist/shared/storage-permissions.d.ts.map +1 -1
  188. package/dist/shared/subagent-temperature.d.ts +46 -0
  189. package/dist/shared/subagent-temperature.d.ts.map +1 -0
  190. package/dist/shared/window-geometry.d.ts +9 -66
  191. package/dist/shared/window-geometry.d.ts.map +1 -1
  192. package/dist/standalone-plugin-marker.d.ts +8 -0
  193. package/dist/standalone-plugin-marker.d.ts.map +1 -0
  194. package/dist/{storage-tags-d3b0v2ss.js → storage-tags-k0pda32s.js} +6 -4
  195. package/dist/tools/ctx-reduce/constants.d.ts +1 -2
  196. package/dist/tools/ctx-reduce/constants.d.ts.map +1 -1
  197. package/dist/tools/ctx-reduce/tools.d.ts +1 -1
  198. package/dist/tools/ctx-reduce/tools.d.ts.map +1 -1
  199. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  200. package/dist/tools/ctx-search/types.d.ts +1 -0
  201. package/dist/tools/ctx-search/types.d.ts.map +1 -1
  202. package/dist/{transform-postprocess-phase-spcy2qre.js → transform-postprocess-phase-481j5a7z.js} +28 -27
  203. package/dist/v2/auto-search-worker.js +3 -3
  204. package/dist/v2/{context-sf98kstd.js → context-gsdtha5v.js} +1619 -3111
  205. package/dist/v2/{derive-budgets-3vc0y84t.js → derive-budgets-enckmg7y.js} +3 -3
  206. package/dist/v2/embedding-backfill-dbvjbcmm.js +20 -0
  207. package/dist/v2/embedding-worker-process.js +29 -0
  208. package/dist/v2/embedding-worker.js +6 -7
  209. package/dist/v2/hidden-child-native.d.ts.map +1 -1
  210. package/dist/v2/hidden-completion.d.ts +7 -0
  211. package/dist/v2/hidden-completion.d.ts.map +1 -1
  212. package/dist/v2/hooks/context.d.ts.map +1 -1
  213. package/dist/v2/hooks/copied-tag-notation.d.ts +19 -0
  214. package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -0
  215. package/dist/v2/hooks/dream-trigger.d.ts +4 -1
  216. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  217. package/dist/v2/hooks/generate.d.ts +9 -2
  218. package/dist/v2/hooks/generate.d.ts.map +1 -1
  219. package/dist/v2/hooks/payload.d.ts.map +1 -1
  220. package/dist/v2/hooks/system-prompt-response.d.ts +5 -0
  221. package/dist/v2/hooks/system-prompt-response.d.ts.map +1 -0
  222. package/dist/v2/{logger-mxd0ym09.js → logger-pj02s7sr.js} +1 -1
  223. package/dist/v2/{message-index-bounded-dy3s2k1e.js → message-index-bounded-p6v0n8qh.js} +15 -14
  224. package/dist/v2/{message-time-backfill-gtx1pwk1.js → message-time-backfill-cje68egj.js} +2 -2
  225. package/dist/v2/migration-worker.js +11 -10
  226. package/dist/v2/{project-embedding-registry-1tgba5dv.js → project-embedding-registry-nyq7z8y6.js} +11 -12
  227. package/dist/v2/raw-ordinal-warmup-worker.js +4 -4
  228. package/dist/v2/{read-session-chunk-rh4khdkv.js → read-session-chunk-fhyfe4qa.js} +12 -9
  229. package/dist/v2/{read-session-raw-bsbmf0vj.js → read-session-raw-j8dvp7f4.js} +5 -3
  230. package/dist/v2/recomp-orchestrator-5xy7w136.js +57 -0
  231. package/dist/v2/{safe-notification-target-73ax1p5v.js → safe-notification-target-y3p1hce9.js} +2 -2
  232. package/dist/v2/{search-nzkwrc6n.js → search-j7bakcwa.js} +23 -23
  233. package/dist/v2/{send-session-notification-6km439kn.js → send-session-notification-f6v698r5.js} +5 -5
  234. package/dist/v2/{server-7wwc2nga.js → server-1fszbabv.js} +32 -32
  235. package/dist/v2/{server-k228xhjg.js → server-2htmbqbv.js} +26 -2
  236. package/dist/v2/{server-aan4q8mx.js → server-3t0q2cqx.js} +1 -1
  237. package/dist/v2/{server-686jg6eb.js → server-4c7jt8gq.js} +68 -7
  238. package/dist/v2/{server-xxm59eww.js → server-4enr7s6x.js} +4 -4
  239. package/dist/v2/{server-zxhgvsf9.js → server-676xw7at.js} +1 -1
  240. package/dist/v2/{server-52awr2mw.js → server-6byqfbqf.js} +93 -9
  241. package/dist/v2/{server-e0vdaae2.js → server-6tcrjfw8.js} +4 -4
  242. package/dist/v2/{server-qye6ykf7.js → server-7ekna9zs.js} +2 -2
  243. package/dist/v2/{server-g5r0n3b6.js → server-7h861yms.js} +160 -25
  244. package/dist/v2/{server-k8x2rbxc.js → server-7spkq1y6.js} +3457 -5192
  245. package/dist/v2/{server-8pyt7hev.js → server-7vkj6zhb.js} +34 -749
  246. package/dist/v2/{server-yczc713m.js → server-8xmq9h3f.js} +31 -49
  247. package/dist/v2/{server-sggvvzhb.js → server-bgzy0phk.js} +505 -11
  248. package/dist/v2/server-c7n2ftng.js +6860 -0
  249. package/dist/v2/server-cvgn49tr.js +733 -0
  250. package/dist/v2/{server-zm570tr2.js → server-cw6521wn.js} +232 -7
  251. package/dist/v2/{server-xdfwt6kh.js → server-czb2rkpk.js} +23 -3
  252. package/dist/v2/{server-x2g40a71.js → server-d6g4whc2.js} +21 -15
  253. package/dist/{index-1bc61ans.js → v2/server-fvnzcnww.js} +44 -1
  254. package/dist/v2/{server-4k748ke6.js → server-hb6xhh9q.js} +2 -2
  255. package/dist/v2/{server-gjcr4w98.js → server-kh958yj8.js} +5 -5
  256. package/dist/v2/{server-1r6pmz4f.js → server-kzns2hbz.js} +1 -1
  257. package/dist/v2/{server-psqc7e9n.js → server-mqvtz7wz.js} +1227 -78
  258. package/dist/v2/{server-vqpf3167.js → server-ras2sxnc.js} +135 -15
  259. package/dist/v2/{server-ezhze64f.js → server-s2st631p.js} +4 -4
  260. package/dist/v2/{server-5m3dt5r1.js → server-t4k4qexw.js} +6 -2
  261. package/dist/v2/{server-z2037m6z.js → server-t528t8qm.js} +2 -2
  262. package/dist/v2/{server-v06jcv0w.js → server-vb7pbd9p.js} +18 -259
  263. package/dist/v2/{server-8tqanswc.js → server-zbxjj2mz.js} +331 -4
  264. package/dist/v2/server.d.ts.map +1 -1
  265. package/dist/v2/server.js +150 -6
  266. package/dist/v2/{storage-tags-w4tv77sn.js → storage-tags-5yxrvkaf.js} +6 -4
  267. package/dist/v2/store-reader.d.ts +8 -2
  268. package/dist/v2/store-reader.d.ts.map +1 -1
  269. package/dist/v2/{wrapup-orchestrator-mz7efs7w.js → wrapup-orchestrator-yem5422s.js} +36 -36
  270. package/dist/wrapup-orchestrator-xvrr27ws.js +45 -0
  271. package/package.json +4 -4
  272. package/src/config/{mural-model-deprecation.ts → deprecated-config.ts} +19 -0
  273. package/src/config/index.test.ts +15 -37
  274. package/src/config/index.ts +2 -3
  275. package/src/config/project-security.ts +3 -3
  276. package/src/config/schema/magic-context.ts +11 -7
  277. package/src/features/magic-context/dreamer/task-registry.ts +2 -3
  278. package/src/shared/auto-search-lifecycle.ts +43 -0
  279. package/src/shared/logger.test.ts +38 -0
  280. package/src/shared/logger.ts +10 -2
  281. package/src/shared/models-dev-cache.ts +1 -7
  282. package/src/shared/models-dev-temperature.ts +107 -0
  283. package/src/shared/project-directory-key.test.ts +59 -0
  284. package/src/shared/project-directory-key.ts +20 -0
  285. package/src/shared/sqlite-640-review.test.ts +5 -1
  286. package/src/shared/storage-file-mutex-review.test.ts +162 -0
  287. package/src/shared/storage-file-mutex.ts +130 -0
  288. package/src/shared/storage-permissions.ts +46 -0
  289. package/src/shared/subagent-temperature.test.ts +270 -0
  290. package/src/shared/subagent-temperature.ts +110 -0
  291. package/src/shared/window-geometry.test.ts +102 -236
  292. package/src/shared/window-geometry.ts +23 -413
  293. package/dist/config/mural-model-deprecation.d.ts.map +0 -1
  294. package/dist/embedding-backfill-9rcm1mfy.js +0 -21
  295. package/dist/index-bdckkfw6.js +0 -3261
  296. package/dist/index-mfkzp7qj.js +0 -229
  297. package/dist/v2/embedding-backfill-vn8g1nh1.js +0 -21
  298. package/dist/v2/recomp-orchestrator-az61rfcg.js +0 -57
  299. package/dist/v2/server-2fbhp79z.js +0 -3205
  300. package/dist/v2/server-mfkzp7qj.js +0 -229
  301. package/dist/wrapup-orchestrator-amzta1t4.js +0 -44
  302. package/src/shared/__fixtures__/window-overlay.v1.json +0 -337
  303. /package/dist/{index-2pp04pmg.js → index-69vas84q.js} +0 -0
  304. /package/dist/v2/{index-2pp04pmg.js → index-69vas84q.js} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_LOCAL_EMBEDDING_MODEL
3
- } from "./server-zm570tr2.js";
3
+ } from "./server-cw6521wn.js";
4
4
  import {
5
5
  getHarness2
6
6
  } from "./server-pavzsdc6.js";
@@ -8,10 +8,10 @@ import {
8
8
  getMagicContextStorageDir,
9
9
  importPluginModule,
10
10
  log2
11
- } from "./server-5m3dt5r1.js";
11
+ } from "./server-t4k4qexw.js";
12
12
  import {
13
13
  getSynapseLaneIdentity
14
- } from "./server-4k748ke6.js";
14
+ } from "./server-hb6xhh9q.js";
15
15
  import {
16
16
  computeNormalizedHash
17
17
  } from "./server-2bvekkfy.js";
@@ -21,7 +21,7 @@ import {
21
21
  writeStorageFileAsync,
22
22
  writeStorageFileHandleAsync,
23
23
  createStorageFileHandleAsync
24
- } from "./server-1bc61ans.js";
24
+ } from "./server-fvnzcnww.js";
25
25
 
26
26
  // src/features/magic-context/memory/embedding-local.ts
27
27
  import { readdirSync, statSync } from "node:fs";
@@ -238,29 +238,116 @@ function getEmbeddingProviderIdentity(config) {
238
238
  }
239
239
 
240
240
  // src/features/magic-context/memory/embedding-worker-client.ts
241
+ import { fork } from "node:child_process";
241
242
  import { Worker } from "node:worker_threads";
243
+
244
+ // src/features/magic-context/memory/onnx-telemetry.ts
245
+ import { isMainThread } from "node:worker_threads";
246
+ var FFI_SPECIFIER = "bun:ffi";
247
+ async function prepareNativeOnnxTelemetry() {
248
+ if (process.platform === "win32")
249
+ return true;
250
+ if (!process.versions.bun) {
251
+ if (!isMainThread)
252
+ return false;
253
+ process.env.ORT_DISABLE_TELEMETRY = "1";
254
+ return true;
255
+ }
256
+ let ffi;
257
+ try {
258
+ ffi = await import(FFI_SPECIFIER);
259
+ } catch {
260
+ return false;
261
+ }
262
+ const { dlopen, FFIType } = ffi;
263
+ const paths = process.platform === "darwin" ? ["/usr/lib/libSystem.B.dylib"] : ["libc.so.6", `/lib/ld-musl-${process.arch === "arm64" ? "aarch64" : "x86_64"}.so.1`];
264
+ for (const path of paths) {
265
+ try {
266
+ const library = dlopen(path, {
267
+ setenv: {
268
+ args: [FFIType.cstring, FFIType.cstring, FFIType.i32],
269
+ returns: FFIType.i32
270
+ },
271
+ getenv: { args: [FFIType.cstring], returns: FFIType.cstring }
272
+ });
273
+ try {
274
+ const name = Buffer.from("ORT_DISABLE_TELEMETRY\x00");
275
+ const value = Buffer.from("1\x00");
276
+ const disabled = library.symbols.setenv(name, value, 1) === 0 && String(library.symbols.getenv(name)) === "1";
277
+ if (disabled)
278
+ process.env.ORT_DISABLE_TELEMETRY = "1";
279
+ return disabled;
280
+ } finally {
281
+ library.close();
282
+ }
283
+ } catch {}
284
+ }
285
+ return false;
286
+ }
287
+
288
+ // src/features/magic-context/memory/embedding-worker-client.ts
289
+ var warnedWindowsTelemetry = false;
290
+
242
291
  class EmbeddingWorkerClient {
243
292
  data;
244
293
  entry;
245
294
  timeoutMs;
295
+ prepareTelemetry;
246
296
  worker = null;
297
+ startPromise = null;
247
298
  nextId = 1;
248
299
  pending = new Map;
249
300
  disposed = false;
250
- constructor(data, entry = new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./embedding-worker.ts" : "./embedding-worker.js", import.meta.url), timeoutMs = 5 * 60000) {
301
+ constructor(data, entry = new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./embedding-worker.ts" : "./embedding-worker.js", import.meta.url), timeoutMs = 5 * 60000, prepareTelemetry = prepareNativeOnnxTelemetry) {
251
302
  this.data = data;
252
303
  this.entry = entry;
253
304
  this.timeoutMs = timeoutMs;
305
+ this.prepareTelemetry = prepareTelemetry;
254
306
  }
255
307
  start() {
308
+ if (this.startPromise)
309
+ return this.startPromise;
310
+ this.startPromise = this.startOwner().finally(() => {
311
+ this.startPromise = null;
312
+ });
313
+ return this.startPromise;
314
+ }
315
+ async startOwner() {
256
316
  if (this.disposed)
257
317
  throw new Error("embedding worker disposed");
258
318
  if (this.worker)
259
319
  return this.worker;
260
- const worker = new Worker(this.entry, { workerData: this.data });
320
+ const compiledBun = process.versions.bun && globalThis.Bun?.isStandaloneExecutable;
321
+ const inProcess = !compiledBun && await this.prepareTelemetry();
322
+ if (this.disposed)
323
+ throw new Error("embedding worker disposed");
324
+ const worker = inProcess ? new Worker(this.entry, { workerData: this.data }) : fork(new URL(new URL(import.meta.url).pathname.endsWith(".ts") ? "./embedding-worker-process.ts" : "./embedding-worker-process.js", import.meta.url), [], {
325
+ env: {
326
+ ...process.env,
327
+ ORT_DISABLE_TELEMETRY: "1",
328
+ ...process.versions.bun ? { BUN_BE_BUN: "1" } : {}
329
+ },
330
+ execArgv: [],
331
+ serialization: "json",
332
+ ...{ windowsHide: true },
333
+ stdio: ["ignore", "inherit", "inherit", "ipc"]
334
+ });
335
+ if (process.platform === "win32" && this.data.runtimePreference !== "wasm") {
336
+ if (!warnedWindowsTelemetry) {
337
+ warnedWindowsTelemetry = true;
338
+ const warning = "[magic-context] ORT_DISABLE_TELEMETRY=1 prevents ONNX uploads on POSIX. Windows native ONNX uses OS-controlled ETW diagnostics instead and exposes no JavaScript telemetry-disable API; Windows diagnostic settings and trace collectors govern collection.";
339
+ log2(warning);
340
+ }
341
+ }
261
342
  this.worker = worker;
262
343
  worker.unref();
263
- worker.on("message", (reply) => {
344
+ if (!(worker instanceof Worker))
345
+ worker.channel?.unref?.();
346
+ worker.on("message", (wire) => {
347
+ const reply = worker instanceof Worker ? wire : {
348
+ ...wire,
349
+ vectors: wire.vectors?.map((vector) => vector === null ? null : new Float32Array(Uint8Array.from(Buffer.from(vector, "base64")).buffer))
350
+ };
264
351
  if (this.worker !== worker)
265
352
  return;
266
353
  const request = this.pending.get(reply.id);
@@ -272,8 +359,11 @@ class EmbeddingWorkerClient {
272
359
  request.reject(new Error(reply.error));
273
360
  else
274
361
  request.resolve(reply);
275
- if (this.pending.size === 0)
362
+ if (this.pending.size === 0) {
276
363
  worker.unref();
364
+ if (!(worker instanceof Worker))
365
+ worker.channel?.unref?.();
366
+ }
277
367
  });
278
368
  const fail = (error) => {
279
369
  if (this.worker !== worker)
@@ -285,20 +375,29 @@ class EmbeddingWorkerClient {
285
375
  }
286
376
  this.pending.clear();
287
377
  log2("[magic-context] embedding worker exited unexpectedly:", error);
288
- worker.terminate();
378
+ if (worker instanceof Worker)
379
+ worker.terminate();
380
+ else
381
+ worker.kill();
289
382
  };
290
383
  worker.on("error", fail);
291
- worker.on("exit", (code) => fail(new Error(`embedding worker exited (${code})`)));
384
+ worker.on("exit", (code, signal) => fail(new Error(`embedding worker exited (${signal ?? code})`)));
385
+ if (!(worker instanceof Worker))
386
+ worker.send({ entry: this.entry.href, data: this.data });
292
387
  return worker;
293
388
  }
294
389
  isRunning() {
295
390
  return this.worker !== null;
296
391
  }
297
- request(texts, signal) {
392
+ async request(texts, signal) {
298
393
  if (signal?.aborted)
299
394
  return Promise.reject(new Error("embedding request aborted"));
395
+ const worker = await this.start();
396
+ if (this.disposed)
397
+ throw new Error("embedding worker disposed");
398
+ if (signal?.aborted)
399
+ throw new Error("embedding request aborted");
300
400
  return new Promise((resolve, reject) => {
301
- const worker = this.start();
302
401
  const id = this.nextId++;
303
402
  const timer = setTimeout(() => {
304
403
  this.stop(new Error("embedding worker request timed out"));
@@ -308,8 +407,11 @@ class EmbeddingWorkerClient {
308
407
  this.pending.delete(id);
309
408
  signal?.removeEventListener("abort", abort);
310
409
  reject(new Error("embedding request aborted"));
311
- if (this.pending.size === 0)
410
+ if (this.pending.size === 0) {
312
411
  worker.unref();
412
+ if (!(worker instanceof Worker))
413
+ worker.channel?.unref?.();
414
+ }
313
415
  };
314
416
  signal?.addEventListener("abort", abort, { once: true });
315
417
  const cleanup = () => signal?.removeEventListener("abort", abort);
@@ -325,8 +427,16 @@ class EmbeddingWorkerClient {
325
427
  }
326
428
  });
327
429
  worker.ref();
430
+ if (!(worker instanceof Worker))
431
+ worker.channel?.ref?.();
328
432
  try {
329
- worker.postMessage({ id, texts });
433
+ if (worker instanceof Worker)
434
+ worker.postMessage({ id, texts });
435
+ else
436
+ worker.send({ id, texts }, (error) => {
437
+ if (error && this.worker === worker)
438
+ this.stop(error);
439
+ });
330
440
  } catch (error) {
331
441
  this.stop(error instanceof Error ? error : new Error(String(error)));
332
442
  }
@@ -340,10 +450,20 @@ class EmbeddingWorkerClient {
340
450
  request.reject(error);
341
451
  }
342
452
  this.pending.clear();
343
- await worker?.terminate();
453
+ if (worker instanceof Worker) {
454
+ await worker.terminate();
455
+ } else if (worker && worker.exitCode === null && worker.signalCode === null) {
456
+ worker.ref();
457
+ worker.channel?.ref?.();
458
+ await new Promise((resolve) => {
459
+ worker.once("exit", () => resolve());
460
+ worker.kill();
461
+ });
462
+ }
344
463
  }
345
464
  async dispose() {
346
465
  this.disposed = true;
466
+ await this.startPromise?.catch(() => {});
347
467
  await this.stop(new Error("embedding worker disposed"));
348
468
  }
349
469
  }
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getTokenEstimatorFingerprint,
3
3
  estimateTokens
4
- } from "./server-1r6pmz4f.js";
4
+ } from "./server-kzns2hbz.js";
5
5
  import {
6
6
  getHarness2
7
7
  } from "./server-pavzsdc6.js";
8
8
  import {
9
9
  log2
10
- } from "./server-5m3dt5r1.js";
10
+ } from "./server-t4k4qexw.js";
11
11
  import {
12
12
  isSynapseEmbeddingTruncated
13
- } from "./server-4k748ke6.js";
13
+ } from "./server-hb6xhh9q.js";
14
14
  import {
15
15
  messageFtsOrdinalRangeIsMapped
16
- } from "./server-k228xhjg.js";
16
+ } from "./server-2htmbqbv.js";
17
17
 
18
18
  // src/features/magic-context/compartment-chunk-embedding.ts
19
19
  import { createHash } from "node:crypto";
@@ -552,8 +552,12 @@ function flush() {
552
552
  let currentSize = getCurrentLogSize(logFile);
553
553
  const dataSize = Buffer.byteLength(data);
554
554
  if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
555
- rotateLogFile(logFile, currentSize);
556
- currentSize = 0;
555
+ flushesSinceSizeCheck = SIZE_CHECK_INTERVAL_FLUSHES;
556
+ currentSize = getCurrentLogSize(logFile);
557
+ if (currentSize > 0 && currentSize + dataSize > MAX_LOG_FILE_BYTES) {
558
+ rotateLogFile(logFile, currentSize);
559
+ currentSize = 0;
560
+ }
557
561
  }
558
562
  fs.appendFileSync(logFile, data, { encoding: "utf8", mode: 384 });
559
563
  buffer = [];
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  log2
3
- } from "./server-5m3dt5r1.js";
3
+ } from "./server-t4k4qexw.js";
4
4
  import {
5
5
  getSdkWindowGeometry,
6
6
  getSdkContextLimit,
7
7
  getSdkInputLimit
8
- } from "./server-v06jcv0w.js";
8
+ } from "./server-vb7pbd9p.js";
9
9
  import {
10
10
  localBudget,
11
11
  calibrationForModelKey
@@ -2,25 +2,21 @@ import {
2
2
  getHarness2
3
3
  } from "./server-pavzsdc6.js";
4
4
  import {
5
- getDataDir,
6
5
  getMagicContextStorageDir,
7
6
  sessionLog2
8
- } from "./server-5m3dt5r1.js";
7
+ } from "./server-t4k4qexw.js";
9
8
  import {
10
9
  writeStorageFileAtomicSync
11
- } from "./server-1bc61ans.js";
10
+ } from "./server-fvnzcnww.js";
12
11
  import {
13
12
  modelRefLookupOrder
14
13
  } from "./server-avwt563y.js";
15
14
 
16
15
  // src/shared/models-dev-cache.ts
17
- import { readFileSync as readFileSync2 } from "node:fs";
18
- import { join as join2 } from "node:path";
19
-
20
- // src/shared/window-geometry.ts
21
16
  import { readFileSync } from "node:fs";
22
17
  import { join } from "node:path";
23
- var WINDOW_OVERLAY_SCHEMA = "fusiform-window-overlay/v1";
18
+
19
+ // src/shared/window-geometry.ts
24
20
  var PROMPT_WALL_MARGIN = 4096;
25
21
  var PI_OUTPUT_FLOOR = 4096;
26
22
  var OPENCODE_OUTPUT_CAP = 32000;
@@ -35,241 +31,10 @@ var PROVIDER_GEOMETRY = {
35
31
  google: "separate",
36
32
  "google-antigravity": "separate"
37
33
  };
38
- var GRADES = new Set([
39
- "provider_asserted_runtime",
40
- "measured",
41
- "provider_asserted_doc",
42
- "catalog",
43
- "unknown"
44
- ]);
45
- var UNITS = new Set(["provider", "estimate"]);
46
- var BOUNDARIES = new Set(["Observed", "Asserted", "Corrected"]);
47
- var UNKNOWN_REASONS = new Set([
48
- "placeholder_output_equals_context",
49
- "placeholder_zero",
50
- "never_measured",
51
- "not_single_valued_at_key",
52
- "retracted"
53
- ]);
54
- var NUMERIC_FACT_KEYS = new Set([
55
- "window.advertised",
56
- "window.enforced",
57
- "output.advertised",
58
- "output.enforced",
59
- "output.default"
60
- ]);
61
- var configuredOverlayPath;
62
- var loadedOverlayPath;
63
- var loadedOverlay;
64
34
  var geometryClampLogSeen = new Set;
65
- function isRecord(value) {
66
- return typeof value === "object" && value !== null && !Array.isArray(value);
67
- }
68
35
  function isFinitePositive(value) {
69
36
  return typeof value === "number" && Number.isFinite(value) && value > 0;
70
37
  }
71
- function scalarizeFact(value) {
72
- if (value.kind === "stated")
73
- return isFinitePositive(value.value) ? value.value : undefined;
74
- if (value.kind === "bracket") {
75
- return isFinitePositive(value.at_least) ? value.at_least : undefined;
76
- }
77
- return;
78
- }
79
- function parseFactValue(value) {
80
- if (!isRecord(value) || typeof value.kind !== "string")
81
- return;
82
- if (value.kind === "stated") {
83
- if ((typeof value.value !== "number" || !Number.isFinite(value.value)) && typeof value.value !== "string") {
84
- return;
85
- }
86
- return { kind: "stated", value: value.value };
87
- }
88
- if (value.kind === "bracket") {
89
- const atLeast = value.at_least;
90
- const below = value.below;
91
- if (atLeast === undefined && below === undefined)
92
- return { kind: "bracket" };
93
- if (atLeast !== undefined && !isFinitePositive(atLeast))
94
- return;
95
- if (below !== undefined && !isFinitePositive(below))
96
- return;
97
- if (isFinitePositive(atLeast) && isFinitePositive(below) && below <= atLeast) {
98
- return;
99
- }
100
- return {
101
- kind: "bracket",
102
- ...isFinitePositive(atLeast) ? { at_least: atLeast } : {},
103
- ...isFinitePositive(below) ? { below } : {}
104
- };
105
- }
106
- if (value.kind === "unknown" && UNKNOWN_REASONS.has(value.why)) {
107
- return { kind: "unknown", why: value.why };
108
- }
109
- return;
110
- }
111
- function parseFact(key, value) {
112
- if (!isRecord(value))
113
- return;
114
- const parsedValue = parseFactValue(value.value);
115
- if (!parsedValue || !GRADES.has(value.grade) || !UNITS.has(value.units) || !BOUNDARIES.has(value.boundary) || typeof value.source_ref !== "string" || value.source_ref.length === 0 || typeof value.observed_at !== "string" || value.observed_at.length === 0) {
116
- return;
117
- }
118
- if (NUMERIC_FACT_KEYS.has(key) && parsedValue.kind === "stated" && !isFinitePositive(parsedValue.value)) {
119
- return;
120
- }
121
- if (key === "geometry" && parsedValue.kind === "stated" && !["shared_upfront", "shared_truncating", "separate"].includes(String(parsedValue.value))) {
122
- return;
123
- }
124
- return {
125
- ...value,
126
- value: parsedValue,
127
- grade: value.grade,
128
- units: value.units,
129
- boundary: value.boundary,
130
- source_ref: value.source_ref,
131
- observed_at: value.observed_at
132
- };
133
- }
134
- function parseWindowOverlay(value) {
135
- if (!isRecord(value)) {
136
- return { badCells: 0, refusal: "overlay root is not an object" };
137
- }
138
- if (value.schema !== WINDOW_OVERLAY_SCHEMA) {
139
- return {
140
- badCells: 0,
141
- refusal: `unrecognized schema ${JSON.stringify(value.schema)}`
142
- };
143
- }
144
- if (typeof value.generated_at !== "string" || !Array.isArray(value.minted_provider_ids) || !value.minted_provider_ids.every((id) => typeof id === "string" && id.length > 0) || !Array.isArray(value.cells)) {
145
- return { badCells: 0, refusal: "invalid v1 envelope" };
146
- }
147
- const cells = [];
148
- let badCells = 0;
149
- for (const rawCell of value.cells) {
150
- if (!isRecord(rawCell) || typeof rawCell.provider_id !== "string" || rawCell.provider_id.length === 0 || typeof rawCell.model_id !== "string" || rawCell.model_id.length === 0 || !isRecord(rawCell.facts)) {
151
- badCells++;
152
- continue;
153
- }
154
- const facts = {};
155
- let valid = true;
156
- for (const [key, rawFact] of Object.entries(rawCell.facts)) {
157
- const fact = parseFact(key, rawFact);
158
- if (!fact) {
159
- valid = false;
160
- break;
161
- }
162
- facts[key] = fact;
163
- }
164
- if (!valid) {
165
- badCells++;
166
- continue;
167
- }
168
- cells.push({
169
- provider_id: rawCell.provider_id,
170
- model_id: rawCell.model_id,
171
- facts
172
- });
173
- }
174
- return {
175
- overlay: {
176
- schema: WINDOW_OVERLAY_SCHEMA,
177
- generated_at: value.generated_at,
178
- minted_provider_ids: [...value.minted_provider_ids],
179
- cells
180
- },
181
- badCells
182
- };
183
- }
184
- function defaultWindowOverlayPath() {
185
- return join(getDataDir(), "fusiform", "window-overlay.json");
186
- }
187
- function readWindowOverlayFile(path, log = (message) => sessionLog2("global", message)) {
188
- let raw;
189
- try {
190
- raw = readFileSync(path, "utf8");
191
- } catch (error) {
192
- if (error.code === "ENOENT")
193
- return;
194
- log(`window-overlay: unable to read ${path}; overlay ignored`);
195
- return;
196
- }
197
- let decoded;
198
- try {
199
- decoded = JSON.parse(raw);
200
- } catch {
201
- log(`window-overlay: invalid JSON in ${path}; overlay ignored`);
202
- return;
203
- }
204
- const parsed = parseWindowOverlay(decoded);
205
- if (parsed.refusal) {
206
- log(`window-overlay: ${parsed.refusal} in ${path}; entire overlay ignored`);
207
- return;
208
- }
209
- if (parsed.badCells > 0) {
210
- log(`window-overlay: skipped ${parsed.badCells} invalid cell(s) from ${path}`);
211
- }
212
- return parsed.overlay;
213
- }
214
- function setWindowOverlayPath(path) {
215
- if (configuredOverlayPath === path)
216
- return;
217
- reloadWindowOverlay(path);
218
- }
219
- function reloadWindowOverlay(path) {
220
- configuredOverlayPath = path;
221
- loadedOverlayPath = undefined;
222
- loadedOverlay = undefined;
223
- }
224
- function getWindowOverlay() {
225
- const path = configuredOverlayPath ?? defaultWindowOverlayPath();
226
- if (loadedOverlayPath === path && loadedOverlay !== undefined) {
227
- return loadedOverlay ?? undefined;
228
- }
229
- loadedOverlayPath = path;
230
- loadedOverlay = readWindowOverlayFile(path) ?? null;
231
- return loadedOverlay ?? undefined;
232
- }
233
- function resolveWindowOverlayFacts(providerID, modelID, overlay = getWindowOverlay()) {
234
- if (!overlay)
235
- return;
236
- const modelRefs = modelRefLookupOrder(`${providerID}/${modelID}`);
237
- const providerCandidates = new Set(modelRefs.map((ref) => ref.slice(0, ref.indexOf("/"))));
238
- const modelCandidates = new Set([
239
- modelID,
240
- ...modelRefs.map((ref) => ref.slice(ref.indexOf("/") + 1))
241
- ]);
242
- const colon = modelID.lastIndexOf(":");
243
- if (colon > 0)
244
- modelCandidates.add(modelID.slice(0, colon));
245
- const wildcardFacts = {};
246
- const specificFacts = {};
247
- for (const cell of overlay.cells) {
248
- if (!providerCandidates.has(cell.provider_id))
249
- continue;
250
- if (cell.model_id === "*")
251
- Object.assign(wildcardFacts, cell.facts);
252
- else if (modelCandidates.has(cell.model_id))
253
- Object.assign(specificFacts, cell.facts);
254
- }
255
- const facts = { ...wildcardFacts, ...specificFacts };
256
- return Object.keys(facts).length > 0 ? { facts } : undefined;
257
- }
258
- function numericOverlayFact(overlay, key) {
259
- const fact = overlay?.facts[key];
260
- return fact ? scalarizeFact(fact.value) : undefined;
261
- }
262
- function overlayGeometry(overlay) {
263
- const fact = overlay?.facts.geometry;
264
- if (fact === undefined)
265
- return;
266
- if (fact.value.kind === "unknown")
267
- return { kind: "unknown" };
268
- if (fact.value.kind !== "stated")
269
- return;
270
- const value = fact.value.value;
271
- return value === "shared_upfront" || value === "shared_truncating" || value === "separate" ? { kind: "stated", value } : undefined;
272
- }
273
38
  function placeholderFilteredOutput(output, context) {
274
39
  if (!isFinitePositive(output))
275
40
  return;
@@ -277,8 +42,8 @@ function placeholderFilteredOutput(output, context) {
277
42
  return;
278
43
  return output;
279
44
  }
280
- function mergePositive(overlayValue, providerValue) {
281
- return isFinitePositive(providerValue) ? providerValue : overlayValue;
45
+ function mergePositive(catalogValue, providerValue) {
46
+ return isFinitePositive(providerValue) ? providerValue : catalogValue;
282
47
  }
283
48
  function logGeometryClampOnce(key, message, log) {
284
49
  if (geometryClampLogSeen.has(key))
@@ -292,10 +57,8 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
292
57
  const providerLimit = options.providerLimit;
293
58
  const catalogContext = isFinitePositive(catalogLimit?.context) ? catalogLimit.context : undefined;
294
59
  const providerContext = isFinitePositive(providerLimit?.context) ? providerLimit.context : undefined;
295
- const advertised = numericOverlayFact(options.overlay, "window.advertised");
296
- const enforced = numericOverlayFact(options.overlay, "window.enforced");
297
- let softContext = mergePositive(enforced ?? advertised ?? catalogContext, providerContext);
298
- let hardContext = mergePositive(enforced ?? softContext, providerContext);
60
+ let softContext = mergePositive(catalogContext, providerContext);
61
+ let hardContext = mergePositive(softContext, providerContext);
299
62
  const contextCap = isFinitePositive(options.contextCap) ? options.contextCap : undefined;
300
63
  const hasContextCap = contextCap !== undefined;
301
64
  if (contextCap !== undefined) {
@@ -305,13 +68,10 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
305
68
  const input = mergePositive(isFinitePositive(catalogLimit?.input) ? catalogLimit.input : undefined, providerLimit?.input);
306
69
  if (!isFinitePositive(softContext) && !isFinitePositive(input))
307
70
  return;
308
- const catalogOutput = options.overlay === undefined && options.providerLimit === undefined ? isFinitePositive(catalogLimit?.output) ? catalogLimit.output : undefined : placeholderFilteredOutput(catalogLimit?.output, softContext);
309
- const overlayOutput = placeholderFilteredOutput(numericOverlayFact(options.overlay, "output.enforced") ?? numericOverlayFact(options.overlay, "output.default") ?? numericOverlayFact(options.overlay, "output.advertised"), softContext);
71
+ const catalogOutput = options.providerLimit === undefined ? isFinitePositive(catalogLimit?.output) ? catalogLimit.output : undefined : placeholderFilteredOutput(catalogLimit?.output, softContext);
310
72
  const providerOutput = placeholderFilteredOutput(providerLimit?.output, softContext);
311
- const output = providerOutput ?? overlayOutput ?? catalogOutput;
312
- const geometryFact = overlayGeometry(options.overlay);
313
- const geometry = geometryFact?.kind === "stated" ? geometryFact.value : geometryFact?.kind === "unknown" ? "shared_upfront" : PROVIDER_GEOMETRY[providerID] ?? "shared_upfront";
314
- const geometryOverride = geometryFact?.kind === "stated" ? geometryFact.value : undefined;
73
+ const output = providerOutput ?? catalogOutput;
74
+ const geometry = PROVIDER_GEOMETRY[providerID] ?? "shared_upfront";
315
75
  const preCarvedInput = isFinitePositive(input) && (!isFinitePositive(softContext) || input < softContext);
316
76
  const outputReserveOverride = typeof options.outputReserveOverride === "number" && Number.isFinite(options.outputReserveOverride) && options.outputReserveOverride >= 0 ? options.outputReserveOverride : undefined;
317
77
  let derivationWindow = softContext ?? input;
@@ -339,14 +99,14 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
339
99
  reserveSource = "output_catalog";
340
100
  }
341
101
  } else if (isFinitePositive(softContext)) {
342
- if (geometry === "separate" && (options.overlay === undefined || options.harness === "pi" || geometryOverride !== undefined)) {
102
+ if (geometry === "separate") {
343
103
  softReserve = 0;
344
104
  reserveSource = "none";
345
105
  } else {
346
106
  softReserve = output ?? 0;
347
107
  reserveSource = output === undefined ? "none" : "output_catalog";
348
108
  const cap = softContext * OUTPUT_RESERVE_CAP_RATIO;
349
- softReserve = Math.min(softReserve, options.harness === "pi" || options.overlay === undefined ? cap : Math.min(cap, OPENCODE_OUTPUT_CAP));
109
+ softReserve = Math.min(softReserve, cap);
350
110
  }
351
111
  const floor = Math.max(MIN_PLAUSIBLE_CONTEXT_LIMIT, softContext * 0.5);
352
112
  const flooredReserve = Math.min(softReserve, Math.max(0, softContext - floor));
@@ -361,7 +121,7 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
361
121
  const hardWindow = hardContext ?? softContext ?? input;
362
122
  if (!isFinitePositive(hardWindow))
363
123
  return;
364
- const windowSource = hasContextCap ? "detected" : providerContext !== undefined ? "provider" : enforced !== undefined || advertised !== undefined ? "overlay" : "catalog";
124
+ const windowSource = hasContextCap ? "detected" : providerContext !== undefined ? "provider" : "catalog";
365
125
  let usableHard;
366
126
  if (geometry === "separate") {
367
127
  usableHard = hardWindow;
@@ -377,7 +137,7 @@ function deriveWindowGeometry(providerID, modelID, catalogLimit, options = {}) {
377
137
  }
378
138
  usableHard = Math.max(MIN_PLAUSIBLE_CONTEXT_LIMIT, Math.floor(usableHard));
379
139
  if (usableHard < usableSoft) {
380
- logGeometryClampOnce(`${providerID}/${modelID}|${usableSoft}|${usableHard}`, `usable hard limit clamped for ${providerID}/${modelID}: ${usableHard} → ${usableSoft} (overlay/provider inversion)`, options.log);
140
+ logGeometryClampOnce(`${providerID}/${modelID}|${usableSoft}|${usableHard}`, `usable hard limit clamped for ${providerID}/${modelID}: ${usableHard} → ${usableSoft} (window limit inversion)`, options.log);
381
141
  usableHard = usableSoft;
382
142
  }
383
143
  const resolvedWindow = derivationWindow ?? usableSoft;
@@ -444,14 +204,14 @@ var apiCache = null;
444
204
  var apiLoadedAt = 0;
445
205
  var persistSeedLoaded = false;
446
206
  function persistFilePath() {
447
- return join2(getMagicContextStorageDir(), `model-context-limits-${getHarness2()}.json`);
207
+ return join(getMagicContextStorageDir(), `model-context-limits-${getHarness2()}.json`);
448
208
  }
449
209
  function loadPersistedApiCacheOnce() {
450
210
  if (persistSeedLoaded || apiCache !== null)
451
211
  return;
452
212
  persistSeedLoaded = true;
453
213
  try {
454
- const raw = readFileSync2(persistFilePath(), "utf-8");
214
+ const raw = readFileSync(persistFilePath(), "utf-8");
455
215
  const obj = JSON.parse(raw);
456
216
  const map = new Map;
457
217
  for (const [key, persisted] of Object.entries(obj)) {
@@ -641,7 +401,6 @@ function getSdkWindowGeometry(providerID, modelID, detectedContextLimit, options
641
401
  input: metadata.inputLimit,
642
402
  output: metadata.outputLimit
643
403
  }, {
644
- overlay: resolveWindowOverlayFacts(providerID, modelID, getWindowOverlay()),
645
404
  outputReserveOverride: resolveOutputReserve(providerID, modelID),
646
405
  harness: options?.harness ?? "opencode",
647
406
  contextCap: promptOnlyDetected === undefined && isFinitePositive2(detectedContextLimit) ? detectedContextLimit : undefined
@@ -725,4 +484,4 @@ function getModelsDevCacheState() {
725
484
  };
726
485
  }
727
486
 
728
- export { catalogOutputReserve, setWindowOverlayPath, hasTrustedAbsoluteWall, applyProvenInputFloor, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getSdkInputLimit, getModelsDevCacheState };
487
+ export { catalogOutputReserve, hasTrustedAbsoluteWall, applyProvenInputFloor, isSaneLimit, setOutputReserveConfig, resolveLimit, refreshModelLimitsFromApi, getSdkWindowGeometry, getSdkContextLimit, modelSupportsVision, getSdkOutputLimit, getSdkInputLimit, getModelsDevCacheState };