@cortexkit/opencode-magic-context 0.49.19 → 0.49.21

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 (323) hide show
  1. package/dist/auto-search-worker.js +48 -9
  2. package/dist/chunk-embedding-write-worker.js +30 -23
  3. package/dist/{compaction-marker-candidates-n4krhat4.js → compaction-marker-candidates-31h86ph0.js} +3 -3
  4. package/dist/compaction-marker-candidates-worker.js +2 -2
  5. package/dist/compartment-chunk-embedding-he60aaa2.js +65 -0
  6. package/dist/config/project-security.d.ts.map +1 -1
  7. package/dist/config/schema/magic-context.d.ts +43 -9
  8. package/dist/config/schema/magic-context.d.ts.map +1 -1
  9. package/dist/{conflict-warning-hook-4pmz879v.js → conflict-warning-hook-2r32hyx6.js} +9 -8
  10. package/dist/{context-j31m2dv7.js → context-j7hp43a0.js} +576 -185
  11. package/dist/{derive-budgets-zn7yzd2d.js → derive-budgets-pqybnx09.js} +2 -2
  12. package/dist/embedding-backfill-dtke6tck.js +25 -0
  13. package/dist/embedding-worker-process.js +2 -2
  14. package/dist/embedding-worker.js +6 -6
  15. package/dist/features/magic-context/chunk-embedding-writer.d.ts.map +1 -1
  16. package/dist/features/magic-context/compartment-chunk-embedding.d.ts +44 -1
  17. package/dist/features/magic-context/compartment-chunk-embedding.d.ts.map +1 -1
  18. package/dist/features/magic-context/dreamer/docs-proposals.d.ts +1 -0
  19. package/dist/features/magic-context/dreamer/docs-proposals.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/hidden-single-shot.d.ts.map +1 -1
  21. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  23. package/dist/features/magic-context/dreamer/task-scheduler.d.ts +2 -0
  24. package/dist/features/magic-context/dreamer/task-scheduler.d.ts.map +1 -1
  25. package/dist/features/magic-context/memory/embedding-identity.d.ts.map +1 -1
  26. package/dist/features/magic-context/memory/embedding-local.d.ts +1 -0
  27. package/dist/features/magic-context/memory/embedding-local.d.ts.map +1 -1
  28. package/dist/features/magic-context/memory/embedding-synapse.d.ts.map +1 -1
  29. package/dist/features/magic-context/memory/embedding-worker-client.d.ts +7 -1
  30. package/dist/features/magic-context/memory/embedding-worker-client.d.ts.map +1 -1
  31. package/dist/features/magic-context/memory/local-embedding-pooling.d.ts +22 -0
  32. package/dist/features/magic-context/memory/local-embedding-pooling.d.ts.map +1 -0
  33. package/dist/features/magic-context/message-index-async.d.ts +7 -2
  34. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  35. package/dist/features/magic-context/message-index.d.ts +2 -0
  36. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  37. package/dist/features/magic-context/mural/compress-cues.d.ts.map +1 -1
  38. package/dist/features/magic-context/project-embedding-registry.d.ts +2 -0
  39. package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
  40. package/dist/features/magic-context/search-rerank.d.ts +9 -2
  41. package/dist/features/magic-context/search-rerank.d.ts.map +1 -1
  42. package/dist/features/magic-context/search.d.ts +29 -0
  43. package/dist/features/magic-context/search.d.ts.map +1 -1
  44. package/dist/features/magic-context/smart-notes/compiler.d.ts.map +1 -1
  45. package/dist/features/magic-context/storage-db.d.ts +2 -0
  46. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  47. package/dist/features/magic-context/storage-meta-persisted.d.ts +2 -0
  48. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  49. package/dist/features/magic-context/subagent-token-capture.d.ts +20 -0
  50. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  51. package/dist/features/magic-context/user-memory/review-user-memories.d.ts.map +1 -1
  52. package/dist/{history-owner-xp3pngv7.js → history-owner-36wp3mkb.js} +2 -2
  53. package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
  54. package/dist/hooks/magic-context/auto-embed-session.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/auto-search-hint.d.ts +7 -1
  56. package/dist/hooks/magic-context/auto-search-hint.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +33 -6
  59. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/cache-busting-signals.d.ts +6 -2
  61. package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/compartment-runner-types.d.ts +5 -0
  65. package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
  66. package/dist/hooks/magic-context/compartment-trigger.d.ts +1 -1
  67. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/diagnostic-log-state.d.ts +4 -0
  69. package/dist/hooks/magic-context/diagnostic-log-state.d.ts.map +1 -0
  70. package/dist/hooks/magic-context/execute-reclaim.d.ts +35 -0
  71. package/dist/hooks/magic-context/execute-reclaim.d.ts.map +1 -0
  72. package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -1
  73. package/dist/hooks/magic-context/hook.d.ts +1 -3
  74. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  75. package/dist/hooks/magic-context/latest-assistant-turn.d.ts +8 -0
  76. package/dist/hooks/magic-context/latest-assistant-turn.d.ts.map +1 -1
  77. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts +5 -0
  78. package/dist/hooks/magic-context/lkg-recovery-fence.d.ts.map +1 -1
  79. package/dist/hooks/magic-context/nudge-evaluation-log.d.ts +3 -0
  80. package/dist/hooks/magic-context/nudge-evaluation-log.d.ts.map +1 -0
  81. package/dist/hooks/magic-context/pending-drop-eligibility.d.ts.map +1 -1
  82. package/dist/hooks/magic-context/protected-tail-boundary.d.ts +4 -0
  83. package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
  84. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
  85. package/dist/hooks/magic-context/served-shape-repair.d.ts +19 -0
  86. package/dist/hooks/magic-context/served-shape-repair.d.ts.map +1 -0
  87. package/dist/hooks/magic-context/strip-content.d.ts +4 -2
  88. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  89. package/dist/hooks/magic-context/system-date-refresh.d.ts +5 -5
  90. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  91. package/dist/hooks/magic-context/system-prompt-sticky-date.d.ts +10 -0
  92. package/dist/hooks/magic-context/system-prompt-sticky-date.d.ts.map +1 -0
  93. package/dist/hooks/magic-context/tag-content-primitives.d.ts +1 -1
  94. package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/tag-messages.d.ts +4 -1
  96. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/text-complete.d.ts +1 -1
  98. package/dist/hooks/magic-context/text-complete.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
  100. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +21 -6
  101. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  102. package/dist/hooks/magic-context/transform.d.ts +2 -2
  103. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  104. package/dist/{index-3esx8tkf.js → index-11gzxvf4.js} +394 -125
  105. package/dist/{index-jn12fvvh.js → index-1gtfne2c.js} +3 -3
  106. package/dist/{index-jhghdnsm.js → index-1kbznkft.js} +521 -214
  107. package/dist/{index-3h4dp9wb.js → index-3svaejkh.js} +5 -5
  108. package/dist/{index-kee4kn5j.js → index-4pnsgvfk.js} +1 -1
  109. package/dist/{index-bjcnntmz.js → index-51rdvtkz.js} +501 -20
  110. package/dist/{v2/server-8cd2j99z.js → index-5kym00ag.js} +32 -13
  111. package/dist/{index-s74zqahq.js → index-66eby7hx.js} +4 -4
  112. package/dist/{index-63k48rv9.js → index-9q1g3c5q.js} +5 -5
  113. package/dist/{index-jrr131e0.js → index-a9zvn5fe.js} +29 -15
  114. package/dist/{index-c5pytzne.js → index-b88dwwrh.js} +1 -1
  115. package/dist/{index-nj7yykkx.js → index-c7phnbvk.js} +1 -1
  116. package/dist/index-cpjk5jd2.js +82 -0
  117. package/dist/{index-c1p88z1y.js → index-ffzhwfzy.js} +4 -4
  118. package/dist/{v2/server-beht37jy.js → index-gzy5w8ya.js} +194 -5
  119. package/dist/{index-j75v2476.js → index-h7tgn49j.js} +12 -15
  120. package/dist/{index-edmpdxcw.js → index-j32jj2t8.js} +5 -5
  121. package/dist/{index-ke416mdc.js → index-j76ah6d7.js} +2 -2
  122. package/dist/{index-s734jcsr.js → index-jfem3dgz.js} +9 -3
  123. package/dist/{index-n37sebck.js → index-jjvbk92s.js} +1 -1
  124. package/dist/{index-4911rn0b.js → index-jmq8kfe7.js} +6 -6
  125. package/dist/{index-rr2bb45z.js → index-kfyb3k6n.js} +2 -2
  126. package/dist/{index-2vxtcb95.js → index-kq5w68dp.js} +2 -2
  127. package/dist/{index-kq82mtg0.js → index-ksq50rg0.js} +3 -3
  128. package/dist/{index-b5vqckbw.js → index-m32esgmj.js} +314 -127
  129. package/dist/{index-9zcsy3hh.js → index-mnhcdfxg.js} +161 -13
  130. package/dist/{index-se4m2g6w.js → index-mnnkgq0q.js} +111 -19
  131. package/dist/{index-p5y3k4g7.js → index-nda0zgna.js} +2 -1
  132. package/dist/{index-wgypt3cs.js → index-nxrsns5x.js} +2466 -1290
  133. package/dist/{index-4s3t0nd0.js → index-qgh1qwjj.js} +2 -2
  134. package/dist/{index-y9f76s3f.js → index-rrv26qjz.js} +1 -1
  135. package/dist/{index-24fezq97.js → index-rxqr723x.js} +5 -5
  136. package/dist/{index-v10f1rjv.js → index-spwjbkc7.js} +1 -1
  137. package/dist/{index-dxmq29t1.js → index-syaazvy2.js} +182 -47
  138. package/dist/{index-k29z4aqh.js → index-t5pck3ss.js} +1 -1
  139. package/dist/{index-6x57ar45.js → index-wfybj1dw.js} +4 -6
  140. package/dist/{index-cf74k5ak.js → index-whcgcfrv.js} +9 -6
  141. package/dist/{index-a6mc0v4d.js → index-x6cbrv9h.js} +3 -3
  142. package/dist/{index-bp5083x2.js → index-x9k3mqrf.js} +1 -1
  143. package/dist/{index-rpxdjkm0.js → index-y76rhsnr.js} +319 -61
  144. package/dist/{index-ze7mvk54.js → index-zy67whjr.js} +95 -59
  145. package/dist/index.js +58 -54
  146. package/dist/{logger-jm3sqqzr.js → logger-94kew5wm.js} +1 -1
  147. package/dist/{message-fts-rowid-map-17s0dfn4.js → message-fts-rowid-map-e79b7b6x.js} +6 -5
  148. package/dist/{message-index-gtpqnj8w.js → message-index-4q8ek2fc.js} +17 -16
  149. package/dist/{message-index-bounded-zyc8h32y.js → message-index-bounded-rydsg9r5.js} +17 -16
  150. package/dist/{message-time-backfill-73mmm76q.js → message-time-backfill-4qva0b4f.js} +3 -3
  151. package/dist/migration-worker.js +13 -12
  152. package/dist/{model-resolution-nx97z3x7.js → model-resolution-280gmqvd.js} +1 -1
  153. package/dist/plugin/embedding-bootstrap.d.ts +4 -1
  154. package/dist/plugin/embedding-bootstrap.d.ts.map +1 -1
  155. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -0
  156. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  157. package/dist/plugin/rpc-handlers.d.ts +8 -0
  158. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  159. package/dist/plugin/subagent-tool-policy.d.ts +9 -0
  160. package/dist/plugin/subagent-tool-policy.d.ts.map +1 -1
  161. package/dist/plugin/tool-registry.d.ts.map +1 -1
  162. package/dist/{project-embedding-registry-z74mhqkf.js → project-embedding-registry-hn529988.js} +16 -13
  163. package/dist/raw-ordinal-warmup-worker.js +136 -101
  164. package/dist/{read-session-chunk-jjb48bt9.js → read-session-chunk-t039f0m5.js} +12 -11
  165. package/dist/{read-session-raw-rsc8c7qy.js → read-session-raw-aw6jgvwg.js} +4 -3
  166. package/dist/recomp-orchestrator-hbm53jj5.js +62 -0
  167. package/dist/{safe-notification-target-1szv1k5k.js → safe-notification-target-mkr9yzvr.js} +2 -2
  168. package/dist/search-archive-weh164mh.js +26 -0
  169. package/dist/search-hea079d7.js +50 -0
  170. package/dist/{send-session-notification-6ve0e8p4.js → send-session-notification-gqzkz7da.js} +7 -6
  171. package/dist/shared/logger.d.ts.map +1 -1
  172. package/dist/shared/model-resolution.d.ts +2 -0
  173. package/dist/shared/model-resolution.d.ts.map +1 -1
  174. package/dist/shared/prompt-async-transport.d.ts +3 -0
  175. package/dist/shared/prompt-async-transport.d.ts.map +1 -1
  176. package/dist/shared/rpc-types.d.ts +7 -0
  177. package/dist/shared/rpc-types.d.ts.map +1 -1
  178. package/dist/shared/sqlite.d.ts +6 -1
  179. package/dist/shared/sqlite.d.ts.map +1 -1
  180. package/dist/shared/subagent-runner.d.ts +2 -0
  181. package/dist/shared/subagent-runner.d.ts.map +1 -1
  182. package/dist/shared/tag-transcript.d.ts +2 -0
  183. package/dist/shared/tag-transcript.d.ts.map +1 -1
  184. package/dist/shared/worker-shutdown.d.ts +68 -0
  185. package/dist/shared/worker-shutdown.d.ts.map +1 -0
  186. package/dist/shared/worker-shutdown.fixture.d.ts +2 -0
  187. package/dist/shared/worker-shutdown.fixture.d.ts.map +1 -0
  188. package/dist/{sqlite-zf72c52d.js → sqlite-zdgm52sv.js} +5 -1
  189. package/dist/{storage-memory-y3qmy00r.js → storage-memory-e6a7mb0k.js} +2 -2
  190. package/dist/{storage-tags-r7k9tjcv.js → storage-tags-a77q4v77.js} +5 -5
  191. package/dist/{task-config-x3qmayd2.js → task-config-t6bpyka7.js} +2 -2
  192. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  193. package/dist/tools/ctx-search/types.d.ts +1 -0
  194. package/dist/tools/ctx-search/types.d.ts.map +1 -1
  195. package/dist/{transform-postprocess-phase-jj99r7z2.js → transform-postprocess-phase-0b04tm1p.js} +35 -32
  196. package/dist/v2/auto-search-worker.js +48 -9
  197. package/dist/v2/chunk-embedding-write-worker.js +30 -23
  198. package/dist/v2/{compaction-marker-candidates-ebx3388k.js → compaction-marker-candidates-m4vmye3w.js} +3 -3
  199. package/dist/v2/compaction-marker-candidates-worker.js +2 -2
  200. package/dist/v2/compartment-chunk-embedding-8jjmcgeg.js +64 -0
  201. package/dist/v2/{context-y5yamxak.js → context-ea3x7smm.js} +1797 -810
  202. package/dist/v2/{derive-budgets-2zh4gm2c.js → derive-budgets-knf763tt.js} +3 -3
  203. package/dist/v2/embedding-backfill-5e74ae0m.js +24 -0
  204. package/dist/v2/embedding-worker-process.js +2 -2
  205. package/dist/v2/embedding-worker.js +6 -6
  206. package/dist/v2/hidden-child-record.d.ts +2 -0
  207. package/dist/v2/hidden-child-record.d.ts.map +1 -1
  208. package/dist/v2/hidden-completion.d.ts +2 -0
  209. package/dist/v2/hidden-completion.d.ts.map +1 -1
  210. package/dist/v2/hidden-model-activity.d.ts +7 -0
  211. package/dist/v2/hidden-model-activity.d.ts.map +1 -0
  212. package/dist/v2/{history-owner-42e16w0n.js → history-owner-ad0crnrn.js} +2 -2
  213. package/dist/v2/hooks/context.d.ts.map +1 -1
  214. package/dist/v2/hooks/copied-tag-notation.d.ts +1 -1
  215. package/dist/v2/hooks/copied-tag-notation.d.ts.map +1 -1
  216. package/dist/v2/hooks/dream-timer.d.ts +2 -0
  217. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  218. package/dist/v2/hooks/embedding-lifecycle.d.ts +7 -0
  219. package/dist/v2/hooks/embedding-lifecycle.d.ts.map +1 -0
  220. package/dist/v2/hooks/generate.d.ts +36 -1
  221. package/dist/v2/hooks/generate.d.ts.map +1 -1
  222. package/dist/v2/hooks/lkg-system.d.ts +35 -4
  223. package/dist/v2/hooks/lkg-system.d.ts.map +1 -1
  224. package/dist/v2/hooks/payload.d.ts +16 -1
  225. package/dist/v2/hooks/payload.d.ts.map +1 -1
  226. package/dist/v2/hooks/store.d.ts +2 -0
  227. package/dist/v2/hooks/store.d.ts.map +1 -1
  228. package/dist/v2/hooks/tools.d.ts +2 -1
  229. package/dist/v2/hooks/tools.d.ts.map +1 -1
  230. package/dist/v2/hooks/transform-features.d.ts +2 -2
  231. package/dist/v2/hooks/transform-features.d.ts.map +1 -1
  232. package/dist/v2/{logger-7qt02bnb.js → logger-p34mjtja.js} +1 -1
  233. package/dist/v2/{message-fts-rowid-map-wfx67gfd.js → message-fts-rowid-map-n8fdg2ja.js} +6 -5
  234. package/dist/v2/{message-index-bounded-spd8r7pj.js → message-index-bounded-8rcd7qq9.js} +17 -16
  235. package/dist/v2/{message-index-8vz2pq76.js → message-index-qz9wdp82.js} +17 -16
  236. package/dist/v2/{message-time-backfill-04t0km1z.js → message-time-backfill-zvthw6xb.js} +3 -3
  237. package/dist/v2/migration-worker.js +13 -12
  238. package/dist/v2/{model-resolution-nx97z3x7.js → model-resolution-280gmqvd.js} +1 -1
  239. package/dist/v2/{project-embedding-registry-gnkj56xp.js → project-embedding-registry-v38q4xd5.js} +16 -13
  240. package/dist/v2/raw-ordinal-warmup-worker.js +136 -101
  241. package/dist/v2/{read-session-chunk-cwkxrmns.js → read-session-chunk-wazfyxcg.js} +12 -11
  242. package/dist/v2/{read-session-raw-yaegtjzh.js → read-session-raw-b70cpwzj.js} +4 -3
  243. package/dist/v2/recomp-orchestrator-b12zaptj.js +61 -0
  244. package/dist/v2/{safe-notification-target-qg7n2s77.js → safe-notification-target-khnzg57c.js} +2 -2
  245. package/dist/v2/search-archive-x64rtz1z.js +25 -0
  246. package/dist/v2/search-hza9x72a.js +49 -0
  247. package/dist/v2/{send-session-notification-3pxn658x.js → send-session-notification-8eqe259v.js} +7 -6
  248. package/dist/v2/{server-45q69hkq.js → server-132h8twc.js} +5 -5
  249. package/dist/v2/{server-h0410h0v.js → server-1bw1wcbp.js} +1 -1
  250. package/dist/v2/{server-271qxsf5.js → server-24g8r2d0.js} +2466 -1290
  251. package/dist/v2/{server-tbe1femw.js → server-29qp8nz4.js} +1 -1
  252. package/dist/v2/{server-gsxjv2q2.js → server-33nqbqkw.js} +182 -47
  253. package/dist/v2/{server-tgnbmwah.js → server-3mz2qh5a.js} +1 -1
  254. package/dist/v2/{server-n1prf1g6.js → server-3vhxy2k5.js} +2 -2
  255. package/dist/v2/{server-xj136kt8.js → server-4kjmrjn4.js} +9 -3
  256. package/dist/v2/{server-34kwfsr4.js → server-53eh1r8r.js} +2 -2
  257. package/dist/{index-8cd2j99z.js → v2/server-5kym00ag.js} +32 -13
  258. package/dist/v2/{server-46neh5fa.js → server-62g58aaz.js} +314 -127
  259. package/dist/v2/{server-f2xf5gcb.js → server-6495nmn9.js} +12 -15
  260. package/dist/v2/{server-a9xqj88f.js → server-6v3cdzsx.js} +4 -4
  261. package/dist/v2/{server-d04vrx0j.js → server-806rzhs6.js} +2 -2
  262. package/dist/v2/{server-qd11g795.js → server-92g7d776.js} +2 -1
  263. package/dist/v2/{server-nj659894.js → server-94wk1ey3.js} +14 -3
  264. package/dist/v2/{server-6tmj0s7j.js → server-ab1g0wn9.js} +4 -6
  265. package/dist/v2/{server-8by8qfec.js → server-ad18djzs.js} +95 -59
  266. package/dist/v2/{server-hy3d3vsx.js → server-bsgd4dk1.js} +2 -2
  267. package/dist/v2/server-cpjk5jd2.js +82 -0
  268. package/dist/v2/{server-g3qma5c0.js → server-d1dzgvwd.js} +2 -2
  269. package/dist/v2/{server-hm38q7r0.js → server-d48x3m4x.js} +5 -5
  270. package/dist/v2/{server-1wy7b9de.js → server-dtp8hcjh.js} +3 -3
  271. package/dist/v2/{server-27gq4mfz.js → server-fa7vtp40.js} +9 -6
  272. package/dist/v2/{server-6pmqg9m4.js → server-gyy4k6mf.js} +1 -1
  273. package/dist/{index-beht37jy.js → v2/server-gzy5w8ya.js} +194 -5
  274. package/dist/v2/{server-bmymkx73.js → server-j8h7bsca.js} +29 -15
  275. package/dist/v2/{server-n37sebck.js → server-jjvbk92s.js} +1 -1
  276. package/dist/v2/{server-da07v4xp.js → server-k3t06fxr.js} +1 -1
  277. package/dist/v2/{server-9hx7g5jp.js → server-m4bfaevz.js} +1197 -1049
  278. package/dist/v2/{server-2ar62dyx.js → server-ppcd1qxh.js} +191 -99
  279. package/dist/v2/{server-rmygf5pn.js → server-qjvk4a9t.js} +2 -2
  280. package/dist/v2/{server-zzkj2fch.js → server-qteg2kt9.js} +5 -5
  281. package/dist/v2/{server-pwv4ezb0.js → server-rqebawx1.js} +2 -2
  282. package/dist/v2/{server-h1v0pyxb.js → server-vr4szghm.js} +501 -20
  283. package/dist/v2/{server-xq7dfjke.js → server-wwaw5npa.js} +5 -5
  284. package/dist/v2/{server-6vdzn1td.js → server-zg5y109h.js} +323 -76
  285. package/dist/v2/server.js +8 -8
  286. package/dist/v2/{sqlite-zf72c52d.js → sqlite-zdgm52sv.js} +5 -1
  287. package/dist/v2/{storage-memory-y3qmy00r.js → storage-memory-e6a7mb0k.js} +2 -2
  288. package/dist/v2/{storage-tags-3wdb8zph.js → storage-tags-q71rnr9f.js} +5 -5
  289. package/dist/v2/store-reader.d.ts +10 -0
  290. package/dist/v2/store-reader.d.ts.map +1 -1
  291. package/dist/v2/{task-config-nvz8mapa.js → task-config-7md27rx8.js} +2 -2
  292. package/dist/v2/{wrapup-orchestrator-embdz8gj.js → wrapup-orchestrator-3ssd5yy1.js} +33 -32
  293. package/dist/wrapup-orchestrator-5vpcd1zx.js +49 -0
  294. package/package.json +2 -2
  295. package/src/config/index.test.ts +72 -6
  296. package/src/config/project-security.ts +15 -0
  297. package/src/config/rerank.test.ts +60 -0
  298. package/src/config/schema/magic-context.ts +57 -0
  299. package/src/shared/logger.test.ts +42 -1
  300. package/src/shared/logger.ts +11 -13
  301. package/src/shared/model-resolution.test.ts +67 -12
  302. package/src/shared/model-resolution.ts +43 -16
  303. package/src/shared/model-suggestion-retry.ts +2 -2
  304. package/src/shared/prompt-async-transport.ts +47 -3
  305. package/src/shared/rpc-types.ts +7 -0
  306. package/src/shared/sqlite-busy-budget-review.test.ts +6 -1
  307. package/src/shared/sqlite-turn-deadline.test.ts +270 -0
  308. package/src/shared/sqlite.ts +239 -9
  309. package/src/shared/subagent-runner.ts +2 -0
  310. package/src/shared/tag-transcript.ts +9 -1
  311. package/src/shared/worker-shutdown-fence.test.ts +87 -0
  312. package/src/shared/worker-shutdown.fixture.ts +25 -0
  313. package/src/shared/worker-shutdown.test.ts +127 -0
  314. package/src/shared/worker-shutdown.ts +160 -0
  315. package/dist/embedding-backfill-fmz50tsy.js +0 -24
  316. package/dist/recomp-orchestrator-999jj4bc.js +0 -61
  317. package/dist/search-archive-6vm0e2f5.js +0 -25
  318. package/dist/search-xsqk1bj4.js +0 -49
  319. package/dist/v2/embedding-backfill-7c7yr69y.js +0 -23
  320. package/dist/v2/recomp-orchestrator-f6m9jr7p.js +0 -60
  321. package/dist/v2/search-archive-wve3tq1k.js +0 -24
  322. package/dist/v2/search-hwg7jfbj.js +0 -48
  323. package/dist/wrapup-orchestrator-whhbjmaz.js +0 -48
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getMagicContextStorageDir,
6
6
  sessionLog2
7
- } from "./server-f2xf5gcb.js";
7
+ } from "./server-6495nmn9.js";
8
8
  import {
9
9
  modelRefLookupOrder
10
10
  } from "./server-avwt563y.js";
@@ -6,21 +6,23 @@ import {
6
6
  StaleRouteHandleError,
7
7
  SubcClient,
8
8
  isConsumerReconnectTransient
9
- } from "./server-6tmj0s7j.js";
9
+ } from "./server-ab1g0wn9.js";
10
10
  import {
11
11
  getHarness2
12
12
  } from "./server-pavzsdc6.js";
13
13
  import {
14
14
  getDataDir,
15
15
  log2
16
- } from "./server-f2xf5gcb.js";
16
+ } from "./server-6495nmn9.js";
17
17
  import {
18
18
  inRootAsyncContext2
19
- } from "./server-beht37jy.js";
19
+ } from "./server-gzy5w8ya.js";
20
20
  import {
21
- buildCanonicalChunkTextFromFts,
22
- loadCompartmentChunkEmbeddingsForSearch
23
- } from "./server-46neh5fa.js";
21
+ buildCanonicalChunkTextFromFts2,
22
+ loadCompartmentChunkEmbeddingsForSearch2,
23
+ peekCompartmentChunkSearchPool2,
24
+ warmCompartmentChunkSearchPool2
25
+ } from "./server-62g58aaz.js";
24
26
  import {
25
27
  recordEmbeddingMeasurement,
26
28
  saveCommitEmbedding,
@@ -37,7 +39,7 @@ import {
37
39
  enqueueShadowEmbeddingItems2,
38
40
  getProjectEmbeddingSnapshot2,
39
41
  embedItemsForProject2
40
- } from "./server-8by8qfec.js";
42
+ } from "./server-ad18djzs.js";
41
43
  import {
42
44
  getProjectEmbeddings2
43
45
  } from "./server-4dhv7mqz.js";
@@ -46,13 +48,13 @@ import {
46
48
  isEmbeddingEnabled,
47
49
  embedText,
48
50
  ensureMemoryEmbeddings2
49
- } from "./server-zzkj2fch.js";
51
+ } from "./server-qteg2kt9.js";
50
52
  import {
51
53
  ModuleMemoryAuthorityError2,
52
54
  getMemoriesByProject2,
53
55
  getMemoriesByProjects2,
54
56
  updateMemoryRetrievalCount2
55
- } from "./server-n37sebck.js";
57
+ } from "./server-jjvbk92s.js";
56
58
  import {
57
59
  getNotes,
58
60
  getActivePrimers,
@@ -61,27 +63,27 @@ import {
61
63
  sanitizeFtsQuery,
62
64
  searchMemoriesFTS,
63
65
  searchMemoriesFTSUnion
64
- } from "./server-hm38q7r0.js";
66
+ } from "./server-d48x3m4x.js";
65
67
  import {
66
68
  cleanSearchText,
67
69
  keywordRelevance,
68
70
  matchedSearchSnippet,
69
71
  getIndexedMessageCorpusSize2
70
- } from "./server-2ar62dyx.js";
72
+ } from "./server-ppcd1qxh.js";
71
73
  import {
72
74
  MESSAGE_FTS_SESSION_FILTER_SQL,
73
75
  withMessageFtsSessionFilter
74
76
  } from "./server-kaqs6h31.js";
75
77
  import {
76
78
  isRecord
77
- } from "./server-27gq4mfz.js";
79
+ } from "./server-fa7vtp40.js";
78
80
  import {
79
81
  resolveWorkspaceShareCategories,
80
82
  resolveWorkspaceIdentitySet,
81
83
  expandWorkspaceIdentitySetWithAliases,
82
84
  resolveStoredPathWorkspaceIdentity,
83
85
  sourceNameForMemory
84
- } from "./server-xq7dfjke.js";
86
+ } from "./server-wwaw5npa.js";
85
87
  import {
86
88
  isKnownAutocommit
87
89
  } from "./server-8ajstryz.js";
@@ -1425,6 +1427,7 @@ function sha256(value) {
1425
1427
  var RERANK_MODEL = "gte-reranker-modernbert-base-f32";
1426
1428
  var RERANK_LANE_LIMIT = 25;
1427
1429
  var DEADLINE_MS = 1500;
1430
+ var DOCUMENT_BYTES = 1024;
1428
1431
  function isProseQuery(query) {
1429
1432
  const text = query.trim();
1430
1433
  if (!text || /[\n;]|^["'`]|["'`]$/.test(text))
@@ -1504,7 +1507,7 @@ function candidateText(location, title, body) {
1504
1507
  ${truncateUtf8(title.replaceAll(`
1505
1508
  `, " "), 120)}
1506
1509
  `;
1507
- return header + truncateUtf8(body, 1024 - Buffer.byteLength(header));
1510
+ return header + truncateUtf8(body, DOCUMENT_BYTES - Buffer.byteLength(header));
1508
1511
  }
1509
1512
 
1510
1513
  class RerankFailure extends Error {
@@ -1574,7 +1577,79 @@ async function connect(connectionFile) {
1574
1577
  }
1575
1578
  return bounded(connection);
1576
1579
  }
1577
- async function prepareReranker(projectRoot, sessionId, connectionFile, injectedClient) {
1580
+ async function remoteScores(config, query, documents, signal) {
1581
+ const controller = new AbortController;
1582
+ let timer;
1583
+ let onAbort;
1584
+ try {
1585
+ const cancelled = new Promise((_, reject) => {
1586
+ const cancel = (reason) => {
1587
+ reject(new RerankFailure(reason));
1588
+ controller.abort();
1589
+ };
1590
+ onAbort = () => cancel("aborted");
1591
+ if (signal?.aborted)
1592
+ onAbort();
1593
+ else
1594
+ signal?.addEventListener("abort", onAbort, { once: true });
1595
+ timer = setTimeout(() => cancel("timeout"), Math.max(50, Math.min(15000, config.timeout_ms ?? DEADLINE_MS)));
1596
+ });
1597
+ const request = async () => {
1598
+ const tei = config.endpoint?.startsWith("tei+");
1599
+ const endpoint = (tei ? config.endpoint?.slice(4) : config.endpoint)?.replace(/\/+$/, "");
1600
+ if (!endpoint || !/^https?:\/\//.test(endpoint))
1601
+ throw new RerankFailure("invalid_endpoint");
1602
+ const response = await fetch(`${endpoint}/rerank`, {
1603
+ method: "POST",
1604
+ headers: {
1605
+ "Content-Type": "application/json",
1606
+ ...config.api_key ? { Authorization: `Bearer ${config.api_key}` } : {}
1607
+ },
1608
+ body: JSON.stringify(tei ? { query, texts: documents } : {
1609
+ model: config.model,
1610
+ query,
1611
+ documents,
1612
+ top_n: documents.length
1613
+ }),
1614
+ signal: controller.signal,
1615
+ redirect: "error"
1616
+ });
1617
+ if (!response.ok)
1618
+ throw new RerankFailure(`http_${response.status}`);
1619
+ const body = await response.json();
1620
+ const rows = tei ? body : body?.results;
1621
+ if (!Array.isArray(rows) || rows.length !== documents.length)
1622
+ throw new RerankFailure("invalid_reply");
1623
+ const scores = new Array(documents.length);
1624
+ const seen = new Set;
1625
+ for (const row of rows) {
1626
+ const index = row?.index;
1627
+ const score = tei ? row?.score : row?.relevance_score;
1628
+ if (!Number.isInteger(index) || index < 0 || index >= documents.length || seen.has(index) || typeof score !== "number" || !Number.isFinite(score))
1629
+ throw new RerankFailure("invalid_reply");
1630
+ seen.add(index);
1631
+ scores[index] = score;
1632
+ }
1633
+ return scores;
1634
+ };
1635
+ return await Promise.race([cancelled, request()]);
1636
+ } finally {
1637
+ clearTimeout(timer);
1638
+ if (onAbort)
1639
+ signal?.removeEventListener("abort", onAbort);
1640
+ }
1641
+ }
1642
+ function remoteRerankSkipped(reason, onSkipped) {
1643
+ const safe = /^(?:invalid_reply|invalid_endpoint|validation|timeout|aborted|candidate_validation|http_\d{3})$/.test(reason) ? reason : "remote_error";
1644
+ const line = `Reranking skipped: ${safe}`;
1645
+ logRerankFallback(safe);
1646
+ onSkipped?.(line);
1647
+ }
1648
+ async function prepareReranker(projectRoot, sessionId, connectionFile, injectedClient, config) {
1649
+ if (config?.provider === "off")
1650
+ return null;
1651
+ if (config?.provider === "remote")
1652
+ return { remote: config };
1578
1653
  try {
1579
1654
  if (injectedClient === null)
1580
1655
  throw new RerankFailure("missing_synapse");
@@ -1591,36 +1666,43 @@ async function prepareReranker(projectRoot, sessionId, connectionFile, injectedC
1591
1666
  return null;
1592
1667
  }
1593
1668
  }
1594
- async function rerankSearchResults(session, query, baseline, pool, texts, limit) {
1669
+ async function rerankSearchResults(session, query, baseline, pool, texts, limit, signal, onSkipped) {
1595
1670
  if (!pool.length)
1596
1671
  return baseline;
1597
1672
  try {
1598
- if (pool.length > 20 || texts.length !== pool.length || texts.some((text) => Buffer.byteLength(text) > 1024))
1599
- throw new RerankFailure("validation");
1600
- const body = unwrap(await bounded(session.client.call("synapse", "rerank.score", {
1601
- model: RERANK_MODEL,
1602
- query,
1603
- candidates: texts,
1604
- required_fingerprint: session.lane.fingerprint,
1605
- allow_equivalent: false,
1606
- accept_declared: false,
1607
- max_queue_ms: 100,
1608
- deadline_ms: DEADLINE_MS
1609
- }, {
1610
- timeoutMs: DEADLINE_MS,
1611
- targetKind: "management_surface",
1612
- identity: session.identity
1613
- })));
1614
- if (body.fingerprint !== session.lane.fingerprint)
1615
- throw new RerankFailure("fingerprint_mismatch");
1616
- if (body.table_epoch !== session.lane.tableEpoch)
1617
- throw new RerankFailure("epoch_mismatch");
1618
- if (!Array.isArray(body.scores) || body.scores.length !== pool.length || body.scores.some((score) => typeof score !== "number" || !Number.isFinite(score)))
1673
+ if (pool.length > 20 || texts.length !== pool.length || texts.some((text) => Buffer.byteLength(text) > DOCUMENT_BYTES))
1619
1674
  throw new RerankFailure("validation");
1620
- const scores = body.scores;
1675
+ let scores;
1676
+ if ("remote" in session) {
1677
+ scores = await remoteScores(session.remote, query, texts, signal);
1678
+ } else {
1679
+ const body = unwrap(await bounded(session.client.call("synapse", "rerank.score", {
1680
+ model: RERANK_MODEL,
1681
+ query,
1682
+ candidates: texts,
1683
+ required_fingerprint: session.lane.fingerprint,
1684
+ allow_equivalent: false,
1685
+ max_queue_ms: 100,
1686
+ deadline_ms: DEADLINE_MS
1687
+ }, {
1688
+ timeoutMs: DEADLINE_MS,
1689
+ targetKind: "management_surface",
1690
+ identity: session.identity
1691
+ })));
1692
+ if (body.fingerprint !== session.lane.fingerprint)
1693
+ throw new RerankFailure("fingerprint_mismatch");
1694
+ if (body.table_epoch !== session.lane.tableEpoch)
1695
+ throw new RerankFailure("epoch_mismatch");
1696
+ if (!Array.isArray(body.scores) || body.scores.length !== pool.length || body.scores.some((score) => typeof score !== "number" || !Number.isFinite(score)))
1697
+ throw new RerankFailure("validation");
1698
+ scores = body.scores;
1699
+ }
1621
1700
  return pool.map((hit, index) => ({ hit, index, score: scores[index] })).sort((a, b) => b.score - a.score || a.index - b.index).slice(0, limit).map((row) => row.hit);
1622
1701
  } catch (error) {
1623
- logRerankFallback(reasonOf(error));
1702
+ if ("remote" in session)
1703
+ remoteRerankSkipped(error instanceof RerankFailure ? error.reason : "remote_error", onSkipped);
1704
+ else
1705
+ logRerankFallback(reasonOf(error));
1624
1706
  return baseline;
1625
1707
  }
1626
1708
  }
@@ -1675,7 +1757,7 @@ Reason: ${row.reason}` : ""}`;
1675
1757
  case "compartment": {
1676
1758
  title = hit.title;
1677
1759
  location = `compartment ${hit.compartmentId} ${hit.sessionId} @${hit.startOrdinal}-${hit.endOrdinal}`;
1678
- body = buildCanonicalChunkTextFromFts(db, hit.sessionId, hit.startOrdinal, hit.endOrdinal) ?? "";
1760
+ body = buildCanonicalChunkTextFromFts2(db, hit.sessionId, hit.startOrdinal, hit.endOrdinal) ?? "";
1679
1761
  break;
1680
1762
  }
1681
1763
  }
@@ -2614,10 +2696,42 @@ function searchNotes(args) {
2614
2696
  }));
2615
2697
  }
2616
2698
  async function searchCompartmentChunks(args) {
2617
- if (!args.queryEmbedding || args.limit <= 0 || !args.modelId || args.modelId === "off")
2699
+ if (args.limit <= 0 || !args.modelId || args.modelId === "off") {
2700
+ if (args.timings)
2701
+ args.timings.chunkPool = "off";
2702
+ return [];
2703
+ }
2704
+ if (!args.queryEmbedding) {
2705
+ if (args.timings)
2706
+ args.timings.chunkPool = "no-vector";
2707
+ if (args.warmOnly)
2708
+ warmCompartmentChunkSearchPool2(args.db, args.sessionId, args.projectPath, args.modelId);
2618
2709
  return [];
2710
+ }
2619
2711
  const cutoff = args.maxOrdinal != null && args.maxOrdinal >= 0 ? args.maxOrdinal : null;
2620
- const rows = await loadCompartmentChunkEmbeddingsForSearch(args.db, args.sessionId, args.projectPath, args.modelId, args.dateRange);
2712
+ let rows;
2713
+ if (args.warmOnly) {
2714
+ const warm = peekCompartmentChunkSearchPool2(args.db, args.sessionId, args.projectPath, args.modelId, args.dateRange);
2715
+ if (warm === null) {
2716
+ if (args.timings)
2717
+ args.timings.chunkPool = "cold";
2718
+ warmCompartmentChunkSearchPool2(args.db, args.sessionId, args.projectPath, args.modelId);
2719
+ return [];
2720
+ }
2721
+ if (args.timings)
2722
+ args.timings.chunkPool = "warm";
2723
+ rows = warm;
2724
+ } else {
2725
+ try {
2726
+ rows = await loadCompartmentChunkEmbeddingsForSearch2(args.db, args.sessionId, args.projectPath, args.modelId, args.dateRange, args.signal);
2727
+ } catch (error) {
2728
+ if (args.signal?.aborted)
2729
+ return [];
2730
+ throw error;
2731
+ }
2732
+ if (args.timings)
2733
+ args.timings.chunkPool = "loaded";
2734
+ }
2621
2735
  if (rows.length === 0)
2622
2736
  return [];
2623
2737
  const byCompartment = new Map;
@@ -2909,7 +3023,7 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
2909
3023
  return [];
2910
3024
  }
2911
3025
  const limit = normalizeLimit(options.limit);
2912
- const reranker = options.explicitSearch && options.rerank !== false && isProseQuery(trimmedQuery) ? await prepareReranker(projectPath, sessionId, options.rerankConnectionFile, options.rerankClient) : null;
3026
+ const reranker = options.explicitSearch && options.rerank !== false && isProseQuery(trimmedQuery) ? await prepareReranker(projectPath, sessionId, options.rerankConnectionFile, options.rerankClient, options.rerankConfig) : null;
2913
3027
  const lanes = reranker || options.captureRerankLanes ? emptySearchLanes() : undefined;
2914
3028
  const dateRange = normalizeDateRange(options.from, options.to);
2915
3029
  const tierLimit = Math.max(limit * 3, DEFAULT_UNIFIED_SEARCH_LIMIT);
@@ -2942,6 +3056,8 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
2942
3056
  if (options.signal?.aborted)
2943
3057
  return [];
2944
3058
  const messageProbes = options.explicitSearch ? extractLiteralProbes(trimmedQuery) : [];
3059
+ const timings = options.stepTimings;
3060
+ let stepStartedAt = performance.now();
2945
3061
  let messageResults = [];
2946
3062
  if (runMessages) {
2947
3063
  const messageRequest = {
@@ -2968,8 +3084,13 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
2968
3084
  messageResults = outcome.results.filter((result) => result.messageId !== options.excludeMessageId);
2969
3085
  if (lanes)
2970
3086
  lanes.message_fts = (outcome.laneResults ?? outcome.results).slice(0, 25);
3087
+ if (timings)
3088
+ timings.messageMs = performance.now() - stepStartedAt;
2971
3089
  }
3090
+ stepStartedAt = performance.now();
2972
3091
  const capturedQuery = await queryEmbeddingPromise;
3092
+ if (timings && needsEmbedding)
3093
+ timings.vectorWaitMs = performance.now() - stepStartedAt;
2973
3094
  if (options.signal?.aborted)
2974
3095
  return [];
2975
3096
  const embeddingSnapshot = getProjectEmbeddingSnapshot2(projectPath);
@@ -2979,6 +3100,9 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
2979
3100
  const workspace = resolveSearchWorkspaceContext(db, projectPath);
2980
3101
  const embeddingModelId = queryContract?.modelId ?? options.embeddingModelIdOverride ?? embeddingSnapshot?.modelId;
2981
3102
  const chunkModelId = queryContract?.chunkModelId ?? options.chunkModelIdOverride ?? embeddingSnapshot?.chunkModelId;
3103
+ stepStartedAt = performance.now();
3104
+ if (timings)
3105
+ timings.chunkPool = "off";
2982
3106
  const compartmentResults = runCompartmentChunks ? await searchCompartmentChunks({
2983
3107
  db,
2984
3108
  sessionId,
@@ -2987,8 +3111,14 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
2987
3111
  limit: lanes ? Math.max(tierLimit, 25) : tierLimit,
2988
3112
  maxOrdinal: options.maxMessageOrdinal,
2989
3113
  modelId: chunkModelId && chunkModelId !== "off" ? chunkModelId : null,
2990
- dateRange
3114
+ dateRange,
3115
+ warmOnly: options.chunkPoolWarmOnly,
3116
+ signal: options.signal,
3117
+ timings
2991
3118
  }) : [];
3119
+ if (timings && runCompartmentChunks)
3120
+ timings.chunkMs = performance.now() - stepStartedAt;
3121
+ stepStartedAt = performance.now();
2992
3122
  if (lanes)
2993
3123
  lanes.chunk_vector = compartmentResults.slice(0, 25);
2994
3124
  const messageLikeResults = mergeMessageAndCompartmentResults({
@@ -3044,6 +3174,8 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
3044
3174
  dateRange
3045
3175
  })) : Promise.resolve([])
3046
3176
  ]);
3177
+ if (timings)
3178
+ timings.otherLanesMs = performance.now() - stepStartedAt;
3047
3179
  if (options.diagnostics) {
3048
3180
  options.diagnostics.suppressedVisibleMemoryIds = memoryOutcome.suppressedVisibleIds;
3049
3181
  }
@@ -3061,11 +3193,14 @@ async function unifiedSearch2(db, sessionId, projectPath, query, options = {}) {
3061
3193
  options.captureRerankLanes?.(lanes);
3062
3194
  }
3063
3195
  if (reranker && lanes) {
3064
- const pool = fuseSearchLanes(lanes);
3196
+ const pool = fuseSearchLanes(lanes).slice(0, "remote" in reranker ? reranker.remote.top_n : 20);
3065
3197
  try {
3066
- results = await rerankSearchResults(reranker, trimmedQuery, results, pool, candidateTexts(db, sessionId, projectPath, pool), limit);
3198
+ results = await rerankSearchResults(reranker, trimmedQuery, results, pool, candidateTexts(db, sessionId, projectPath, pool), limit, options.signal, options.onRerankSkipped);
3067
3199
  } catch {
3068
- logRerankFallback("candidate_validation");
3200
+ if ("remote" in reranker)
3201
+ remoteRerankSkipped("candidate_validation", options.onRerankSkipped);
3202
+ else
3203
+ logRerankFallback("candidate_validation");
3069
3204
  }
3070
3205
  }
3071
3206
  if (!options.measurementDisabled) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  log2
3
- } from "./server-f2xf5gcb.js";
3
+ } from "./server-6495nmn9.js";
4
4
 
5
5
  // src/hooks/magic-context/read-session-formatting.ts
6
6
  import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./server-pavzsdc6.js";
5
5
  import {
6
6
  log2
7
- } from "./server-f2xf5gcb.js";
7
+ } from "./server-6495nmn9.js";
8
8
  import {
9
9
  resolveOpenCodeDbPath,
10
10
  assertOpenCodeStoreGeneration,
@@ -15,7 +15,7 @@ import {
15
15
  } from "./server-2ra6pwf3.js";
16
16
  import {
17
17
  Database2
18
- } from "./server-beht37jy.js";
18
+ } from "./server-gzy5w8ya.js";
19
19
  import {
20
20
  closeQuietly
21
21
  } from "./server-8ajstryz.js";
@@ -3,12 +3,15 @@ import {
3
3
  } from "./server-51779zs2.js";
4
4
  import {
5
5
  log2
6
- } from "./server-f2xf5gcb.js";
6
+ } from "./server-6495nmn9.js";
7
7
  import {
8
8
  inRootAsyncContext2,
9
9
  getSqliteDatabasePath2,
10
10
  releaseIndexOwner2
11
- } from "./server-beht37jy.js";
11
+ } from "./server-gzy5w8ya.js";
12
+ import {
13
+ createWorkerShutdown
14
+ } from "./server-cpjk5jd2.js";
12
15
 
13
16
  // src/hooks/magic-context/raw-ordinal-warmup.ts
14
17
  import { Worker } from "node:worker_threads";
@@ -1127,6 +1130,7 @@ function readRawSessionBoundaryEndpointsFromDb2(db, sessionId, ids, blockIds = [
1127
1130
  // src/hooks/magic-context/raw-ordinal-warmup.ts
1128
1131
  var ACCEPT_TIMEOUT_MS = 2000;
1129
1132
  var RESULT_TIMEOUT_MS = 10 * 60000;
1133
+ var WARMUP_CLOSE_DEADLINE_MS = 2000;
1130
1134
  var FAILURE_BACKOFF_MS = 5 * 60000;
1131
1135
  var inFlight = new Map;
1132
1136
  var connectionIds = new WeakMap;
@@ -1155,6 +1159,7 @@ function runSessionWarmupWorker(input, options) {
1155
1159
  return new Promise((resolve) => {
1156
1160
  const openCancellation = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
1157
1161
  let worker;
1162
+ let shutdown;
1158
1163
  let deadline;
1159
1164
  let settled = false;
1160
1165
  const finish = (result) => {
@@ -1166,7 +1171,7 @@ function runSessionWarmupWorker(input, options) {
1166
1171
  options.signal?.removeEventListener("abort", abort);
1167
1172
  if (worker) {
1168
1173
  activeWorkers.delete(worker);
1169
- const stopped = worker.terminate();
1174
+ const stopped = shutdown?.close() ?? worker.terminate();
1170
1175
  worker.unref();
1171
1176
  stopped.finally(() => {
1172
1177
  releaseIndexOwner2(input);
@@ -1192,6 +1197,7 @@ function runSessionWarmupWorker(input, options) {
1192
1197
  worker = inRootAsyncContext2(() => new Worker(options.entry ?? defaultEntry(), {
1193
1198
  workerData: { ...input, openCancellation: openCancellation.buffer }
1194
1199
  }));
1200
+ shutdown = createWorkerShutdown(worker, "raw-ordinal-warmup", WARMUP_CLOSE_DEADLINE_MS);
1195
1201
  } catch (error) {
1196
1202
  finish({ failure: "start-failed", detail: String(error) });
1197
1203
  return;
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  log2
3
- } from "./server-f2xf5gcb.js";
3
+ } from "./server-6495nmn9.js";
4
4
  import {
5
5
  getSdkWindowGeometry,
6
6
  getSdkContextLimit,
7
7
  getSdkInputLimit
8
- } from "./server-tbe1femw.js";
8
+ } from "./server-29qp8nz4.js";
9
9
  import {
10
10
  localBudget,
11
11
  calibrationForModelKey
@@ -15,6 +15,9 @@ function resolveHarnessBlock(container, harness) {
15
15
  const selected = harness === "omp" ? container?.omp ?? container?.pi : container?.[harness];
16
16
  return asRecord(selected);
17
17
  }
18
+ function sourceHarness(container, harness) {
19
+ return harness === "omp" && container?.omp == null ? "pi" : harness;
20
+ }
18
21
  function normalizeModelEntry2(entry, harness) {
19
22
  if (typeof entry === "string") {
20
23
  const model = readString(entry);
@@ -61,13 +64,19 @@ function resolveHistorianModel2(config, harness) {
61
64
  const block = resolveHarnessBlock(historian, harness);
62
65
  if (!block)
63
66
  return { fallbacks: [] };
67
+ const source = `historian.${sourceHarness(historian, harness)}`;
68
+ const primary = resolvePrimaryEntry({
69
+ entry: block.model,
70
+ defaultQualifier: block[harness === "opencode" ? "variant" : "thinking_level"],
71
+ harness
72
+ });
73
+ const fallbacks = resolveFallbackEntries2(block.fallback_models, harness);
64
74
  return {
65
- primary: resolvePrimaryEntry({
66
- entry: block.model,
67
- defaultQualifier: block[harness === "opencode" ? "variant" : "thinking_level"],
68
- harness
69
- }),
70
- fallbacks: resolveFallbackEntries2(block.fallback_models, harness)
75
+ primary: primary ? { ...primary, sourceConfigKey: `${source}.model` } : undefined,
76
+ fallbacks: fallbacks.map((entry) => ({
77
+ ...entry,
78
+ sourceConfigKey: `${source}.fallback_models`
79
+ }))
71
80
  };
72
81
  }
73
82
  function resolveDreamerTaskModel2(args) {
@@ -86,15 +95,25 @@ function resolveDreamerTaskModel2(args) {
86
95
  const taskQualifier = taskBlock?.[args.harness === "opencode" ? "variant" : "thinking_level"];
87
96
  const harnessQualifier = harnessBlock[args.harness === "opencode" ? "variant" : "thinking_level"] ?? normalizeModelEntry2(harnessBlock.model, args.harness)?.qualifier;
88
97
  const taskHasModel = taskBlock !== undefined && hasOwn(taskBlock, "model");
98
+ const taskHasFallbacks = taskBlock !== undefined && hasOwn(taskBlock, "fallback_models");
89
99
  const primarySource = taskHasModel ? taskBlock?.model : harnessBlock.model;
90
- const fallbackSource = taskBlock !== undefined && hasOwn(taskBlock, "fallback_models") ? taskBlock.fallback_models : harnessBlock.fallback_models;
100
+ const fallbackSource = taskHasFallbacks ? taskBlock?.fallback_models : harnessBlock.fallback_models;
101
+ const source = `dreamer.${sourceHarness(dreamer, args.harness)}`;
102
+ const primary = resolvePrimaryEntry({
103
+ entry: primarySource,
104
+ defaultQualifier: taskQualifier ?? harnessQualifier,
105
+ harness: args.harness
106
+ });
107
+ const fallbacks = resolveFallbackEntries2(fallbackSource, args.harness);
91
108
  return {
92
- primary: resolvePrimaryEntry({
93
- entry: primarySource,
94
- defaultQualifier: taskQualifier ?? harnessQualifier,
95
- harness: args.harness
96
- }),
97
- fallbacks: resolveFallbackEntries2(fallbackSource, args.harness),
109
+ primary: primary ? {
110
+ ...primary,
111
+ sourceConfigKey: taskHasModel ? `${source}.tasks.${args.task}.model` : `${source}.model`
112
+ } : undefined,
113
+ fallbacks: fallbacks.map((entry) => ({
114
+ ...entry,
115
+ sourceConfigKey: taskHasFallbacks ? `${source}.tasks.${args.task}.fallback_models` : `${source}.fallback_models`
116
+ })),
98
117
  schedule: readString(schedulingTask?.schedule),
99
118
  timeoutMinutes: typeof taskBlock?.timeout_minutes === "number" ? taskBlock.timeout_minutes : undefined,
100
119
  promotionThreshold: typeof schedulingTask?.promotion_threshold === "number" ? schedulingTask.promotion_threshold : undefined