@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
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getTokenEstimatorFingerprint,
3
3
  estimateTokens
4
- } from "./server-tgnbmwah.js";
4
+ } from "./server-3mz2qh5a.js";
5
5
  import {
6
6
  getHarness2
7
7
  } from "./server-pavzsdc6.js";
8
8
  import {
9
9
  log2
10
- } from "./server-f2xf5gcb.js";
10
+ } from "./server-6495nmn9.js";
11
11
  import {
12
12
  isSynapseEmbeddingTruncated
13
- } from "./server-6tmj0s7j.js";
13
+ } from "./server-ab1g0wn9.js";
14
14
  import {
15
15
  messageFtsOrdinalRangeIsMapped2
16
- } from "./server-1wy7b9de.js";
16
+ } from "./server-dtp8hcjh.js";
17
17
 
18
18
  // src/features/magic-context/compartment-chunk-embedding.ts
19
19
  import { createHash } from "node:crypto";
@@ -104,8 +104,8 @@ function recursiveCharacterSplit(text, options) {
104
104
  }
105
105
 
106
106
  // src/features/magic-context/compartment-chunk-embedding.ts
107
- var DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS = 512;
108
- var CHUNK_WINDOW_SAFETY_RATIO = 0.9;
107
+ var DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2 = 512;
108
+ var CHUNK_WINDOW_SAFETY_RATIO2 = 0.9;
109
109
  var SEARCH_SCOPE_METADATA_FIELDS = [
110
110
  "rowId",
111
111
  "compartmentId",
@@ -142,9 +142,11 @@ var existingHashByProjectStatements = new WeakMap;
142
142
  var deleteByCompartmentStatements = new WeakMap;
143
143
  var insertEmbeddingStatements = new WeakMap;
144
144
  var renumberEmbeddingWindowStatements = new WeakMap;
145
- var searchRowsStatements = new WeakMap;
146
- var searchRowsByModelStatements = new WeakMap;
145
+ var searchRowsByIdStatements = new WeakMap;
147
146
  var searchPoolProbeStatements = new WeakMap;
147
+ var sessionSignatureStatements = new WeakMap;
148
+ var sessionPrefixStatements = new WeakMap;
149
+ var revisionStatements = new WeakMap;
148
150
  var pendingSearchPools = new WeakMap;
149
151
  var backfillCandidateStatements = new WeakMap;
150
152
  var shadowBackfillCandidateStatements = new WeakMap;
@@ -152,7 +154,17 @@ var DECODED_SEARCH_POOL_CACHE_MAX_BYTES = 256 * 1024 * 1024;
152
154
  var decodedSearchPools = new WeakMap;
153
155
  var decodedSearchPoolLru = new Map;
154
156
  var decodedSearchPoolBytes = 0;
155
- var searchPoolStats = { fullRebuilds: 0, appends: 0, probes: 0, probeMs: 0, probePages: 0 };
157
+ var searchPoolStats = {
158
+ fullRebuilds: 0,
159
+ appends: 0,
160
+ partialRefreshes: 0,
161
+ rowsDecoded: 0,
162
+ probes: 0,
163
+ tailProbes: 0,
164
+ endProbes: 0,
165
+ probeMs: 0,
166
+ probePages: 0
167
+ };
156
168
  function getLoadFtsRowsStatement(db) {
157
169
  let stmt = loadFtsRowsStatements.get(db);
158
170
  if (!stmt) {
@@ -239,18 +251,22 @@ function sameScopeMetadata(left, right) {
239
251
  }
240
252
  return true;
241
253
  }
242
- async function probeSearchScope(db, sessionId, projectPath, modelId, previous) {
254
+ async function probeSearchScope(db, sessionId, projectPath, modelId, previous, options = {}) {
243
255
  const started = performance.now();
244
- searchPoolStats.probes++;
256
+ const tailOnly = options.tailOnly === true && previous !== undefined;
257
+ if (tailOnly)
258
+ searchPoolStats.tailProbes++;
259
+ else
260
+ searchPoolStats.probes++;
245
261
  const probe = {
246
- rowCount: 0,
247
- maxRowId: 0,
248
- rowIdSum: 0,
262
+ rowCount: tailOnly ? previous.rowCount : 0,
263
+ maxRowId: tailOnly ? previous.maxRowId : 0,
264
+ rowIdSum: tailOnly ? previous.rowIdSum : 0,
249
265
  metadata: previous?.metadata ?? new Map,
250
266
  ids: previous?.ids ?? []
251
267
  };
252
268
  let copied = previous === undefined;
253
- let oldIndex = 0;
269
+ let oldIndex = tailOnly ? previous.ids.length : 0;
254
270
  const writable = () => {
255
271
  if (!copied) {
256
272
  probe.metadata = new Map(probe.metadata);
@@ -260,6 +276,7 @@ async function probeSearchScope(db, sessionId, projectPath, modelId, previous) {
260
276
  };
261
277
  await yieldSearchPool();
262
278
  for (;; ) {
279
+ options.signal?.throwIfAborted();
263
280
  const rows = getSearchPoolProbeStatement(db).all(sessionId, projectPath, modelId, probe.maxRowId);
264
281
  searchPoolStats.probePages++;
265
282
  if (rows.length === 0) {
@@ -293,22 +310,54 @@ async function probeSearchScope(db, sessionId, projectPath, modelId, previous) {
293
310
  await yieldSearchPool();
294
311
  }
295
312
  }
296
- function sameSearchScope(left, right) {
297
- return left.rowCount === right.rowCount && left.maxRowId === right.maxRowId && left.rowIdSum === right.rowIdSum && (left.metadata === right.metadata || [...left.metadata].every(([id, value]) => right.metadata.get(id) === value));
313
+ function getSessionSignatureStatement(db) {
314
+ let stmt = sessionSignatureStatements.get(db);
315
+ if (!stmt) {
316
+ stmt = db.prepare(`SELECT COUNT(*) AS rowCount, COALESCE(MAX(id), 0) AS maxRowId,
317
+ COALESCE(SUM(id), 0) AS rowIdSum
318
+ FROM compartment_chunk_embeddings WHERE session_id = ?`);
319
+ sessionSignatureStatements.set(db, stmt);
320
+ }
321
+ return stmt;
298
322
  }
299
- function scopeOnlyAppended(cached, probe) {
300
- if (probe.rowCount <= cached.rowCount)
301
- return false;
302
- let addedCount = 0;
303
- let addedSum = 0;
304
- for (const [id, fingerprint] of probe.metadata) {
305
- if (id > cached.maxRowId) {
306
- addedCount++;
307
- addedSum += id;
308
- } else if (cached.metadata.get(id) !== fingerprint)
309
- return false;
323
+ function readSessionChunkSignature(db, sessionId) {
324
+ const row = getSessionSignatureStatement(db).get(sessionId);
325
+ return {
326
+ rowCount: Number(row?.rowCount ?? 0),
327
+ maxRowId: Number(row?.maxRowId ?? 0),
328
+ rowIdSum: Number(row?.rowIdSum ?? 0)
329
+ };
330
+ }
331
+ function sameSessionSignature(left, right) {
332
+ return left.rowCount === right.rowCount && left.maxRowId === right.maxRowId && left.rowIdSum === right.rowIdSum;
333
+ }
334
+ function sessionPrefixUnchanged(db, sessionId, signature) {
335
+ let stmt = sessionPrefixStatements.get(db);
336
+ if (!stmt) {
337
+ stmt = db.prepare(`SELECT COUNT(*) AS rowCount, COALESCE(SUM(id), 0) AS rowIdSum
338
+ FROM compartment_chunk_embeddings WHERE session_id = ? AND id <= ?`);
339
+ sessionPrefixStatements.set(db, stmt);
340
+ }
341
+ const row = stmt.get(sessionId, signature.maxRowId);
342
+ return Number(row?.rowCount ?? 0) === signature.rowCount && Number(row?.rowIdSum ?? 0) === signature.rowIdSum;
343
+ }
344
+ function readDatabaseRevision(db) {
345
+ let statements = revisionStatements.get(db);
346
+ if (!statements) {
347
+ statements = {
348
+ version: db.prepare("PRAGMA data_version"),
349
+ changes: db.prepare("SELECT total_changes() AS changes")
350
+ };
351
+ revisionStatements.set(db, statements);
310
352
  }
311
- return addedCount === probe.rowCount - cached.rowCount && cached.rowIdSum + addedSum === probe.rowIdSum;
353
+ const version = statements.version.get();
354
+ const changes = statements.changes.get();
355
+ if (typeof version?.data_version !== "number" || typeof changes?.changes !== "number")
356
+ return null;
357
+ return `${version.data_version}:${changes.changes}`;
358
+ }
359
+ function sameSearchScope(left, right) {
360
+ return left.rowCount === right.rowCount && left.maxRowId === right.maxRowId && left.rowIdSum === right.rowIdSum && (left.metadata === right.metadata || [...left.metadata].every(([id, value]) => right.metadata.get(id) === value));
312
361
  }
313
362
  function filterSearchPoolDates(rows, dateRange) {
314
363
  if (dateRange === null)
@@ -318,9 +367,9 @@ function filterSearchPoolDates(rows, dateRange) {
318
367
  return compartment !== undefined && compartment.startTime !== null && compartment.endTime !== null && compartment.startTime <= dateRange.to && compartment.endTime >= dateRange.from;
319
368
  });
320
369
  }
321
- function getSearchRowsStatement(db, withModel) {
322
- const map = withModel ? searchRowsByModelStatements : searchRowsStatements;
323
- let stmt = map.get(db);
370
+ var SEARCH_READ_BATCH = 16;
371
+ function getSearchRowsByIdStatement(db) {
372
+ let stmt = searchRowsByIdStatements.get(db);
324
373
  if (!stmt) {
325
374
  stmt = db.prepare(`SELECT e.id AS rowId, e.compartment_id AS compartmentId,
326
375
  start_map.message_time_ms AS startTime, end_map.message_time_ms AS endTime,
@@ -343,10 +392,10 @@ function getSearchRowsStatement(db, withModel) {
343
392
  ON end_map.session_id = c.session_id AND end_map.message_ordinal = c.end_message
344
393
  WHERE e.session_id = ?
345
394
  AND e.project_path = ?
346
- ${withModel ? "AND e.model_id = ?" : ""}
347
- AND e.id > ? AND e.id <= ?
348
- ORDER BY e.id ASC LIMIT 16`);
349
- map.set(db, stmt);
395
+ AND e.model_id = ?
396
+ AND e.id IN (${Array.from({ length: SEARCH_READ_BATCH }, () => "?").join(", ")})
397
+ ORDER BY e.id ASC`);
398
+ searchRowsByIdStatements.set(db, stmt);
350
399
  }
351
400
  return stmt;
352
401
  }
@@ -427,7 +476,7 @@ function estimateDecodedSearchPoolBytes(rows) {
427
476
  }
428
477
  return bytes;
429
478
  }
430
- function cacheDecodedSearchPool(pool, key, probe, rows) {
479
+ function cacheDecodedSearchPool(pool, key, probe, rows, decodedById, sessionSignature, fullProbeAt) {
431
480
  const existing = pool.get(key);
432
481
  if (existing)
433
482
  removeDecodedSearchPoolEntry(existing);
@@ -436,9 +485,12 @@ function cacheDecodedSearchPool(pool, key, probe, rows) {
436
485
  key,
437
486
  ...probe,
438
487
  rows,
488
+ decodedById,
489
+ sessionSignature,
490
+ fullProbeAt,
439
491
  byteSize: estimateDecodedSearchPoolBytes(rows)
440
492
  };
441
- entry.byteSize += probe.ids.length * 8;
493
+ entry.byteSize += probe.ids.length * 24;
442
494
  for (const metadata of probe.metadata.values()) {
443
495
  entry.byteSize += 320;
444
496
  for (const key of SEARCH_SCOPE_METADATA_FIELDS) {
@@ -460,9 +512,9 @@ function cacheDecodedSearchPool(pool, key, probe, rows) {
460
512
  function isFinitePositiveInteger(value) {
461
513
  return typeof value === "number" && Number.isFinite(value) && value > 0;
462
514
  }
463
- function normalizeCompartmentChunkMaxInputTokens(value) {
515
+ function normalizeCompartmentChunkMaxInputTokens2(value) {
464
516
  if (!isFinitePositiveInteger(value)) {
465
- return DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS;
517
+ return DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2;
466
518
  }
467
519
  return Math.max(1, Math.floor(value));
468
520
  }
@@ -511,7 +563,7 @@ function toFloat32Array(blob) {
511
563
  }
512
564
  return new Float32Array(blob.slice(0));
513
565
  }
514
- function buildCanonicalChunkTextFromFts(db, sessionId, startOrdinal, endOrdinal) {
566
+ function buildCanonicalChunkTextFromFts2(db, sessionId, startOrdinal, endOrdinal) {
515
567
  if (endOrdinal < startOrdinal)
516
568
  return "";
517
569
  if (!messageFtsOrdinalRangeIsMapped2(db, sessionId, startOrdinal, endOrdinal))
@@ -543,7 +595,7 @@ function buildCanonicalChunkTextFromFts(db, sessionId, startOrdinal, endOrdinal)
543
595
  return lines.join(`
544
596
  `);
545
597
  }
546
- function buildCompartmentSummaryFallbackText(db, compartmentId) {
598
+ function buildCompartmentSummaryFallbackText2(db, compartmentId) {
547
599
  const row = db.prepare("SELECT title, p1, content FROM compartments WHERE id = ?").get(compartmentId);
548
600
  if (!row)
549
601
  return "";
@@ -553,7 +605,7 @@ function buildCompartmentSummaryFallbackText(db, compartmentId) {
553
605
  return [title, body].filter((s) => s.length > 0).join(`
554
606
  `);
555
607
  }
556
- function canonicalizeInMemoryChunkTextForEmbedding(chunkText, startOrdinal, endOrdinal) {
608
+ function canonicalizeInMemoryChunkTextForEmbedding2(chunkText, startOrdinal, endOrdinal) {
557
609
  const lines = [];
558
610
  for (const rawLine of chunkText.split(/\r?\n/)) {
559
611
  const line = rawLine.trim();
@@ -598,7 +650,7 @@ function canonicalizeInMemoryChunkTextForEmbedding(chunkText, startOrdinal, endO
598
650
  return lines.join(`
599
651
  `);
600
652
  }
601
- function chunkCanonicalText(canonicalText, startOrdinal, endOrdinal, maxInputTokens) {
653
+ function chunkCanonicalText2(canonicalText, startOrdinal, endOrdinal, maxInputTokens) {
602
654
  const lines = canonicalText.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
603
655
  if (lines.length === 0 || endOrdinal < startOrdinal)
604
656
  return [];
@@ -608,8 +660,8 @@ function chunkCanonicalText(canonicalText, startOrdinal, endOrdinal, maxInputTok
608
660
  assertOrdinalRangeWithinCompartment(range.start, range.end, startOrdinal, endOrdinal);
609
661
  }
610
662
  }
611
- const normalizedMax = normalizeCompartmentChunkMaxInputTokens(maxInputTokens);
612
- const effectiveMax = Math.max(1, Math.floor(normalizedMax * CHUNK_WINDOW_SAFETY_RATIO));
663
+ const normalizedMax = normalizeCompartmentChunkMaxInputTokens2(maxInputTokens);
664
+ const effectiveMax = Math.max(1, Math.floor(normalizedMax * CHUNK_WINDOW_SAFETY_RATIO2));
613
665
  const fullText = lines.join(`
614
666
  `);
615
667
  if (estimateTokens(fullText) <= effectiveMax) {
@@ -733,13 +785,13 @@ function getExistingChunkHashes(db, compartmentId, modelId, projectPath) {
733
785
  const rows = scoped ? getExistingHashStatement(db, true).all(compartmentId, modelId, projectPath) : getExistingHashStatement(db, false).all(compartmentId, modelId);
734
786
  return new Map(rows.filter((row) => typeof row.windowIndex === "number" && typeof row.chunkHash === "string").map((row) => [row.windowIndex, row.chunkHash]));
735
787
  }
736
- function chunkEmbeddingWindowsAreCurrent(db, compartmentId, modelId, windows, projectPath) {
788
+ function chunkEmbeddingWindowsAreCurrent2(db, compartmentId, modelId, windows, projectPath) {
737
789
  const existing = getExistingChunkHashes(db, compartmentId, modelId, projectPath);
738
790
  if (existing.size !== windows.length)
739
791
  return false;
740
792
  return windows.every((window) => existing.get(window.windowIndex) === window.chunkHash);
741
793
  }
742
- function replaceCompartmentChunkEmbeddings(db, rows, windowSourceKey) {
794
+ function replaceCompartmentChunkEmbeddings2(db, rows, windowSourceKey) {
743
795
  if (rows.length === 0 || rows.some((row) => isSynapseEmbeddingTruncated(row.vector)))
744
796
  return;
745
797
  const compartmentId = rows[0].compartmentId;
@@ -761,104 +813,239 @@ function searchPoolInTransaction(db) {
761
813
  const connection = db;
762
814
  return connection.inTransaction === true || connection.isTransaction === true;
763
815
  }
764
- async function refreshDecodedSearchPool(db, sessionId, projectPath, modelId) {
816
+ function emptyRefreshTimings() {
817
+ return { probeMs: 0, readMs: 0, decodeMs: 0, probedRows: 0, decodedRows: 0, attempts: 0 };
818
+ }
819
+ function decodeSearchRow(row) {
820
+ if (typeof row.compartmentId !== "number" || typeof row.sessionId !== "string" || typeof row.title !== "string" || typeof row.compartmentStart !== "number" || typeof row.compartmentEnd !== "number" || typeof row.windowIndex !== "number" || typeof row.windowStart !== "number" || typeof row.windowEnd !== "number" || typeof row.chunkHash !== "string" || typeof row.modelId !== "string" || typeof row.dims !== "number" || !(row.vector instanceof Uint8Array || row.vector instanceof ArrayBuffer))
821
+ return null;
822
+ const decoded = {
823
+ compartmentId: row.compartmentId,
824
+ sessionId: row.sessionId,
825
+ title: row.title,
826
+ startOrdinal: row.compartmentStart,
827
+ endOrdinal: row.compartmentEnd,
828
+ windowIndex: row.windowIndex,
829
+ windowStartOrdinal: row.windowStart,
830
+ windowEndOrdinal: row.windowEnd,
831
+ chunkHash: row.chunkHash,
832
+ modelId: row.modelId,
833
+ dims: row.dims,
834
+ vector: toFloat32Array(row.vector)
835
+ };
836
+ searchPoolDates.set(decoded, { startTime: row.startTime, endTime: row.endTime });
837
+ return decoded;
838
+ }
839
+ async function refreshDecodedSearchPool(db, sessionId, projectPath, modelId, options = {}) {
765
840
  const key = searchPoolKey(sessionId, projectPath, modelId);
766
841
  const pool = getDecodedSearchPool(db);
842
+ const timings = options.timings ?? emptyRefreshTimings();
843
+ const { signal } = options;
767
844
  for (;; ) {
845
+ signal?.throwIfAborted();
846
+ timings.attempts++;
768
847
  const inTransaction = searchPoolInTransaction(db);
848
+ const revision = readDatabaseRevision(db);
849
+ const sessionSignature = readSessionChunkSignature(db, sessionId);
769
850
  const previous = pool.get(key);
770
- const probe = await probeSearchScope(db, sessionId, projectPath, modelId, previous);
771
- const rowCount = probe.rowCount;
772
- const maxRowId = probe.maxRowId;
851
+ const tailOnly = options.background === true && !inTransaction && previous !== undefined && sessionPrefixUnchanged(db, sessionId, previous.sessionSignature);
852
+ const probeStarted = performance.now();
853
+ const probe = await probeSearchScope(db, sessionId, projectPath, modelId, previous, {
854
+ tailOnly,
855
+ signal
856
+ });
857
+ timings.probeMs += performance.now() - probeStarted;
858
+ timings.probedRows = probe.rowCount;
859
+ const fullProbeAt = tailOnly && previous ? previous.fullProbeAt : probeStarted;
773
860
  const cached = pool.get(key);
774
861
  if (!inTransaction && cached && sameSearchScope(cached, probe)) {
862
+ cached.sessionSignature = sessionSignature;
863
+ cached.fullProbeAt = Math.max(cached.fullProbeAt, fullProbeAt);
775
864
  touchDecodedSearchPoolEntry(cached);
776
865
  return cached.rows;
777
866
  }
778
- const append = !inTransaction && cached && scopeOnlyAppended(cached, probe);
779
- if (append)
867
+ const reusable = inTransaction ? undefined : previous;
868
+ const decodedById = new Map;
869
+ const missing = [];
870
+ for (const id of probe.ids) {
871
+ const prior = reusable !== undefined && reusable.metadata.get(id) === probe.metadata.get(id) ? reusable.decodedById.get(id) : undefined;
872
+ if (prior === undefined)
873
+ missing.push(id);
874
+ else
875
+ decodedById.set(id, prior);
876
+ }
877
+ if (!reusable || missing.length === probe.ids.length)
878
+ searchPoolStats.fullRebuilds++;
879
+ else if (probe.ids.length - missing.length === reusable.ids.length && missing.every((id) => id > reusable.maxRowId))
780
880
  searchPoolStats.appends++;
781
881
  else
782
- searchPoolStats.fullRebuilds++;
783
- let afterId = append ? cached.maxRowId : 0;
784
- const added = [];
785
- let appendedCount = 0;
882
+ searchPoolStats.partialRefreshes++;
786
883
  await yieldSearchPool();
787
- for (;; ) {
788
- const rows = getSearchRowsStatement(db, true).all(sessionId, projectPath, modelId, afterId, maxRowId);
789
- if (rows.length === 0)
790
- break;
791
- afterId = rows[rows.length - 1].rowId;
792
- appendedCount += rows.length;
793
- for (const row of rows) {
794
- if (typeof row.compartmentId !== "number" || typeof row.sessionId !== "string" || typeof row.title !== "string" || typeof row.compartmentStart !== "number" || typeof row.compartmentEnd !== "number" || typeof row.windowIndex !== "number" || typeof row.windowStart !== "number" || typeof row.windowEnd !== "number" || typeof row.chunkHash !== "string" || typeof row.modelId !== "string" || typeof row.dims !== "number" || !(row.vector instanceof Uint8Array || row.vector instanceof ArrayBuffer))
795
- continue;
796
- added.push({
797
- compartmentId: row.compartmentId,
798
- sessionId: row.sessionId,
799
- title: row.title,
800
- startOrdinal: row.compartmentStart,
801
- endOrdinal: row.compartmentEnd,
802
- windowIndex: row.windowIndex,
803
- windowStartOrdinal: row.windowStart,
804
- windowEndOrdinal: row.windowEnd,
805
- chunkHash: row.chunkHash,
806
- modelId: row.modelId,
807
- dims: row.dims,
808
- vector: toFloat32Array(row.vector)
809
- });
810
- searchPoolDates.set(added[added.length - 1], {
811
- startTime: row.startTime,
812
- endTime: row.endTime
813
- });
814
- }
884
+ const read = getSearchRowsByIdStatement(db);
885
+ for (let start = 0;start < missing.length; start += SEARCH_READ_BATCH) {
886
+ signal?.throwIfAborted();
887
+ const batch = missing.slice(start, start + SEARCH_READ_BATCH);
888
+ const ids = batch.concat(Array(SEARCH_READ_BATCH - batch.length).fill(-1));
889
+ const readStarted = performance.now();
890
+ const rows = read.all(sessionId, projectPath, modelId, ...ids);
891
+ const decodeStarted = performance.now();
892
+ timings.readMs += decodeStarted - readStarted;
893
+ for (const id of batch)
894
+ decodedById.set(id, null);
895
+ for (const row of rows)
896
+ decodedById.set(row.rowId, decodeSearchRow(row));
897
+ timings.decodeMs += performance.now() - decodeStarted;
898
+ timings.decodedRows += rows.length;
899
+ searchPoolStats.rowsDecoded += rows.length;
815
900
  await yieldSearchPool();
816
901
  }
817
- const endProbe = await probeSearchScope(db, sessionId, projectPath, modelId, probe);
818
- if (!sameSearchScope(probe, endProbe) || searchPoolInTransaction(db) !== inTransaction) {
819
- continue;
902
+ let unchanged;
903
+ if (options.background) {
904
+ unchanged = sameSessionSignature(readSessionChunkSignature(db, sessionId), sessionSignature);
905
+ } else if (revision !== null && readDatabaseRevision(db) === revision) {
906
+ unchanged = true;
907
+ } else {
908
+ searchPoolStats.endProbes++;
909
+ unchanged = sameSearchScope(probe, await probeSearchScope(db, sessionId, projectPath, modelId, probe, { signal }));
820
910
  }
821
- if (append && appendedCount !== rowCount - cached.rowCount) {
822
- removeDecodedSearchPoolEntry(cached);
911
+ if (!unchanged || searchPoolInTransaction(db) !== inTransaction)
823
912
  continue;
913
+ const decoded = [];
914
+ for (const id of probe.ids) {
915
+ const row = decodedById.get(id);
916
+ if (row)
917
+ decoded.push(row);
824
918
  }
825
- const decoded = append ? cached.rows.concat(added) : added;
826
919
  decoded.sort((a, b) => a.compartmentId - b.compartmentId || a.windowIndex - b.windowIndex);
827
920
  if (!inTransaction)
828
- cacheDecodedSearchPool(pool, key, probe, decoded);
921
+ cacheDecodedSearchPool(pool, key, probe, decoded, decodedById, sessionSignature, fullProbeAt);
829
922
  return decoded;
830
923
  }
831
924
  }
832
- async function loadCompartmentChunkEmbeddingsForSearch(db, sessionId, projectPath, modelId, dateRange = null) {
833
- if (!modelId) {
834
- throw new Error("loadCompartmentChunkEmbeddingsForSearch requires a current model id");
835
- }
925
+ async function refreshSearchPoolOnce(db, sessionId, projectPath, modelId, options) {
836
926
  const key = searchPoolKey(sessionId, projectPath, modelId);
837
927
  let pending = pendingSearchPools.get(db);
838
928
  if (!pending) {
839
929
  pending = new Map;
840
930
  pendingSearchPools.set(db, pending);
841
931
  }
842
- for (;; ) {
843
- while (pending.has(key))
844
- await pending.get(key);
845
- const operation = refreshDecodedSearchPool(db, sessionId, projectPath, modelId);
846
- const completion = operation.then(() => {});
847
- pending.set(key, completion);
848
- try {
849
- const rows = await operation;
850
- return filterSearchPoolDates(rows, dateRange);
851
- } finally {
932
+ while (pending.has(key))
933
+ await pending.get(key);
934
+ const operation = refreshDecodedSearchPool(db, sessionId, projectPath, modelId, options);
935
+ const completion = operation.then(() => {}, () => {});
936
+ pending.set(key, completion);
937
+ try {
938
+ return await operation;
939
+ } finally {
940
+ if (pending.get(key) === completion)
852
941
  pending.delete(key);
853
- completion.catch(() => {});
942
+ }
943
+ }
944
+ async function loadCompartmentChunkEmbeddingsForSearch2(db, sessionId, projectPath, modelId, dateRange = null, signal) {
945
+ if (!modelId) {
946
+ throw new Error("loadCompartmentChunkEmbeddingsForSearch requires a current model id");
947
+ }
948
+ const rows = await refreshSearchPoolOnce(db, sessionId, projectPath, modelId, { signal });
949
+ return filterSearchPoolDates(rows, dateRange);
950
+ }
951
+ var CHUNK_POOL_FULL_PROBE_INTERVAL_MS = 60000;
952
+ var TRACKED_SEARCH_POOL_LIMIT = 8;
953
+ var trackedSearchPools = new WeakMap;
954
+ function trackSearchPool(db, sessionId, projectPath, modelId) {
955
+ let tracked = trackedSearchPools.get(db);
956
+ if (!tracked) {
957
+ tracked = new Map;
958
+ trackedSearchPools.set(db, tracked);
959
+ }
960
+ const key = searchPoolKey(sessionId, projectPath, modelId);
961
+ tracked.delete(key);
962
+ tracked.set(key, { sessionId, projectPath, modelId });
963
+ while (tracked.size > TRACKED_SEARCH_POOL_LIMIT) {
964
+ const oldest = tracked.keys().next().value;
965
+ if (oldest === undefined)
966
+ break;
967
+ tracked.delete(oldest);
968
+ }
969
+ }
970
+ var lastChunkPoolWarm = null;
971
+ var unretainedSearchPools = new WeakMap;
972
+ function getLastCompartmentChunkPoolWarm2() {
973
+ return lastChunkPoolWarm;
974
+ }
975
+ function peekCompartmentChunkSearchPool2(db, sessionId, projectPath, modelId, dateRange = null) {
976
+ if (!modelId)
977
+ return null;
978
+ trackSearchPool(db, sessionId, projectPath, modelId);
979
+ const entry = getDecodedSearchPool(db).get(searchPoolKey(sessionId, projectPath, modelId));
980
+ if (!entry || searchPoolInTransaction(db))
981
+ return null;
982
+ if (!sameSessionSignature(readSessionChunkSignature(db, sessionId), entry.sessionSignature))
983
+ return null;
984
+ touchDecodedSearchPoolEntry(entry);
985
+ return filterSearchPoolDates(entry.rows, dateRange);
986
+ }
987
+ async function warmCompartmentChunkSearchPool2(db, sessionId, projectPath, modelId) {
988
+ const started = performance.now();
989
+ const timings = emptyRefreshTimings();
990
+ const report = (outcome) => ({
991
+ ...timings,
992
+ outcome,
993
+ totalMs: performance.now() - started,
994
+ finishedAtUnixMs: Date.now()
995
+ });
996
+ if (!modelId)
997
+ return report("current");
998
+ trackSearchPool(db, sessionId, projectPath, modelId);
999
+ const key = searchPoolKey(sessionId, projectPath, modelId);
1000
+ try {
1001
+ if (pendingSearchPools.get(db)?.has(key))
1002
+ return report("in-progress");
1003
+ const unretained = unretainedSearchPools.get(db)?.get(key);
1004
+ if (unretained && sameSessionSignature(readSessionChunkSignature(db, sessionId), unretained))
1005
+ return report("too-large");
1006
+ const entry = getDecodedSearchPool(db).get(key);
1007
+ const fullProbeDue = entry !== undefined && performance.now() - entry.fullProbeAt >= CHUNK_POOL_FULL_PROBE_INTERVAL_MS;
1008
+ if (entry && !fullProbeDue && !searchPoolInTransaction(db) && sameSessionSignature(readSessionChunkSignature(db, sessionId), entry.sessionSignature))
1009
+ return report("current");
1010
+ const signature = readSessionChunkSignature(db, sessionId);
1011
+ await refreshSearchPoolOnce(db, sessionId, projectPath, modelId, {
1012
+ background: !fullProbeDue,
1013
+ timings
1014
+ });
1015
+ let unretainedPools = unretainedSearchPools.get(db);
1016
+ if (!getDecodedSearchPool(db).has(key)) {
1017
+ if (!unretainedPools) {
1018
+ unretainedPools = new Map;
1019
+ unretainedSearchPools.set(db, unretainedPools);
1020
+ }
1021
+ unretainedPools.set(key, signature);
1022
+ const tooLarge = report("too-large");
1023
+ lastChunkPoolWarm = tooLarge;
1024
+ return tooLarge;
854
1025
  }
1026
+ unretainedPools?.delete(key);
1027
+ const refreshed = report("refreshed");
1028
+ lastChunkPoolWarm = refreshed;
1029
+ return refreshed;
1030
+ } catch {
1031
+ const failed = report("failed");
1032
+ lastChunkPoolWarm = failed;
1033
+ return failed;
1034
+ }
1035
+ }
1036
+ async function maintainCompartmentChunkSearchPools2(db) {
1037
+ const tracked = trackedSearchPools.get(db);
1038
+ if (!tracked)
1039
+ return;
1040
+ for (const scope of [...tracked.values()]) {
1041
+ await warmCompartmentChunkSearchPool2(db, scope.sessionId, scope.projectPath, scope.modelId);
855
1042
  }
856
1043
  }
857
- function loadUnembeddedShadowChunkCandidates(db, projectPath, primaryModelId, shadowModelId, limit, shadowMaxInputTokens) {
1044
+ function loadUnembeddedShadowChunkCandidates2(db, projectPath, primaryModelId, shadowModelId, limit, shadowMaxInputTokens) {
858
1045
  const rows = getShadowBackfillCandidateStatement(db).all(projectPath, projectPath, primaryModelId);
859
1046
  return selectHashIncompleteChunkCandidates(db, projectPath, shadowModelId, mapBackfillCandidateRows(rows), Math.max(1, limit), shadowMaxInputTokens);
860
1047
  }
861
- async function loadUnembeddedCompartmentChunkCandidatesPolite(db, projectPath, modelId, limit, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS, leaseHeldRenumber = false, isEligible) {
1048
+ async function loadUnembeddedCompartmentChunkCandidatesPolite2(db, projectPath, modelId, limit, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2, leaseHeldRenumber = false, isEligible) {
862
1049
  const rows = getBackfillCandidateStatement(db).all(projectPath);
863
1050
  const candidates = mapBackfillCandidateRows(rows);
864
1051
  const missing = [];
@@ -900,7 +1087,7 @@ var BACKOFF_PREFIX = "chunk_embed_backoff:";
900
1087
  function backoffKey(compartmentId) {
901
1088
  return `${BACKOFF_PREFIX}${compartmentId}`;
902
1089
  }
903
- function deleteChunkEmbedBackoffForSession(db, sessionId, limit) {
1090
+ function deleteChunkEmbedBackoffForSession2(db, sessionId, limit) {
904
1091
  if (limit !== undefined)
905
1092
  return db.prepare(`DELETE FROM schema_migrations_meta WHERE key IN (
906
1093
  SELECT key FROM schema_migrations_meta JOIN compartments
@@ -913,11 +1100,11 @@ function deleteChunkEmbedBackoffForSession(db, sessionId, limit) {
913
1100
  SELECT ? || id FROM compartments WHERE session_id = ?
914
1101
  )`).run(BACKOFF_PREFIX, sessionId, WINDOW_SOURCE_PREFIX, sessionId).changes;
915
1102
  }
916
- function recordChunkEmbedBackoff(db, candidate, projectPath, modelId) {
917
- const mapped = buildCanonicalChunkTextFromFts(db, candidate.sessionId, candidate.startMessage, candidate.endMessage);
1103
+ function recordChunkEmbedBackoff2(db, candidate, projectPath, modelId) {
1104
+ const mapped = buildCanonicalChunkTextFromFts2(db, candidate.sessionId, candidate.startMessage, candidate.endMessage);
918
1105
  if (mapped === null)
919
1106
  return;
920
- const text = mapped || buildCompartmentSummaryFallbackText(db, candidate.id);
1107
+ const text = mapped || buildCompartmentSummaryFallbackText2(db, candidate.id);
921
1108
  const hash = createHash("sha256").update(text).digest("hex");
922
1109
  const key = backoffKey(candidate.id);
923
1110
  const prior = db.prepare("SELECT value FROM schema_migrations_meta WHERE key = ?").get(key);
@@ -959,13 +1146,13 @@ function windowSourceKeyFromTextHash(textHash, startOrdinal, endOrdinal, maxInpu
959
1146
  return hashChunkText(JSON.stringify([
960
1147
  CHUNKER_VERSION,
961
1148
  getTokenEstimatorFingerprint(),
962
- normalizeCompartmentChunkMaxInputTokens(maxInputTokens),
1149
+ normalizeCompartmentChunkMaxInputTokens2(maxInputTokens),
963
1150
  startOrdinal,
964
1151
  endOrdinal,
965
1152
  textHash
966
1153
  ]));
967
1154
  }
968
- function chunkWindowSourceKey(canonicalText, startOrdinal, endOrdinal, maxInputTokens) {
1155
+ function chunkWindowSourceKey2(canonicalText, startOrdinal, endOrdinal, maxInputTokens) {
969
1156
  return windowSourceKeyFromTextHash(hashChunkText(canonicalText), startOrdinal, endOrdinal, maxInputTokens);
970
1157
  }
971
1158
  function windowSetDigest(windows) {
@@ -1019,7 +1206,7 @@ function memoizedCoverageWindows(candidate, canonicalText, sourceKey, modelId, m
1019
1206
  cachedCoverageWindows.set(key, cached);
1020
1207
  return cached;
1021
1208
  }
1022
- const windows = chunkCanonicalText(canonicalText, candidate.startMessage, candidate.endMessage, maxInputTokens);
1209
+ const windows = chunkCanonicalText2(canonicalText, candidate.startMessage, candidate.endMessage, maxInputTokens);
1023
1210
  cachedCoverageWindows.set(key, windows);
1024
1211
  if (cachedCoverageWindows.size > COVERAGE_MEMO_LIMIT) {
1025
1212
  const oldest = cachedCoverageWindows.keys().next().value;
@@ -1049,14 +1236,14 @@ function renumberOneBasedChunkWindows(db, candidate, projectPath, modelId, windo
1049
1236
  }).immediate();
1050
1237
  }
1051
1238
  function classifyChunkCoverageDefect(db, projectPath, modelId, candidate, maxInputTokens) {
1052
- const mappedText = buildCanonicalChunkTextFromFts(db, candidate.sessionId, candidate.startMessage, candidate.endMessage);
1239
+ const mappedText = buildCanonicalChunkTextFromFts2(db, candidate.sessionId, candidate.startMessage, candidate.endMessage);
1053
1240
  if (mappedText === null)
1054
1241
  return { defect: "deferred", windows: [] };
1055
- const canonicalText = mappedText || buildCompartmentSummaryFallbackText(db, candidate.id);
1242
+ const canonicalText = mappedText || buildCompartmentSummaryFallbackText2(db, candidate.id);
1056
1243
  if (!canonicalText || chunkEmbedBackoffActive(db, candidate, projectPath, modelId, canonicalText)) {
1057
1244
  return { defect: "deferred", windows: [] };
1058
1245
  }
1059
- const sourceKey = chunkWindowSourceKey(canonicalText, candidate.startMessage, candidate.endMessage, maxInputTokens);
1246
+ const sourceKey = chunkWindowSourceKey2(canonicalText, candidate.startMessage, candidate.endMessage, maxInputTokens);
1060
1247
  const existing = getExistingChunkHashes(db, candidate.id, modelId, projectPath);
1061
1248
  if (storedWindowsMatchRecordedSource(db, candidate.id, sourceKey, existing)) {
1062
1249
  return { defect: null, windows: [], sourceKey, confirmedByRecord: true };
@@ -1103,7 +1290,7 @@ function selectHashIncompleteChunkCandidates(db, projectPath, modelId, candidate
1103
1290
  return [...missing, ...stale].slice(0, limit);
1104
1291
  }
1105
1292
  var sessionBackfillCandidateStatements = new WeakMap;
1106
- function loadUnembeddedSessionChunkCandidates(db, projectPath, sessionId, modelId, limit, excludeIds, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS, leaseHeldRenumber = false) {
1293
+ function loadUnembeddedSessionChunkCandidates2(db, projectPath, sessionId, modelId, limit, excludeIds, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2, leaseHeldRenumber = false) {
1107
1294
  const exclusions = excludeIds && excludeIds.length > 0 ? excludeIds : [];
1108
1295
  const exclusionSql = exclusions.length > 0 ? `AND c.id NOT IN (${exclusions.map(() => "?").join(", ")})` : "";
1109
1296
  const stmt = exclusions.length > 0 ? db.prepare(`SELECT c.id AS id,
@@ -1144,7 +1331,7 @@ function loadUnembeddedSessionChunkCandidates(db, projectPath, sessionId, modelI
1144
1331
  const rows = stmt.all(projectPath, sessionId, ...exclusions);
1145
1332
  return selectHashIncompleteChunkCandidates(db, projectPath, modelId, mapBackfillCandidateRows(rows), Math.max(1, limit), maxInputTokens, leaseHeldRenumber);
1146
1333
  }
1147
- async function loadUnembeddedSessionChunkCandidatesPolite(db, projectPath, sessionId, modelId, limit, excludeIds = [], maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS, leaseHeldRenumber = false) {
1334
+ async function loadUnembeddedSessionChunkCandidatesPolite2(db, projectPath, sessionId, modelId, limit, excludeIds = [], maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2, leaseHeldRenumber = false) {
1148
1335
  const excluded = new Set(excludeIds);
1149
1336
  const missing = [];
1150
1337
  const stale = [];
@@ -1166,7 +1353,7 @@ async function loadUnembeddedSessionChunkCandidatesPolite(db, projectPath, sessi
1166
1353
  }
1167
1354
  return [...missing, ...stale].slice(0, Math.max(1, limit));
1168
1355
  }
1169
- function countUnembeddedSessionCompartments(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS) {
1356
+ function countUnembeddedSessionCompartments2(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2) {
1170
1357
  const rows = getSessionBackfillRows(db, projectPath, sessionId);
1171
1358
  let count = 0;
1172
1359
  for (const candidate of rows) {
@@ -1176,7 +1363,7 @@ function countUnembeddedSessionCompartments(db, projectPath, sessionId, modelId,
1176
1363
  }
1177
1364
  return count;
1178
1365
  }
1179
- function countSessionCompartmentEmbedCoverage(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS) {
1366
+ function countSessionCompartmentEmbedCoverage2(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2) {
1180
1367
  const candidates = getSessionBackfillRows(db, projectPath, sessionId);
1181
1368
  let embedded = 0;
1182
1369
  for (const candidate of candidates) {
@@ -1203,7 +1390,7 @@ function getSessionBackfillRows(db, projectPath, sessionId) {
1203
1390
  ORDER BY c.start_message ASC, c.id ASC`).all(projectPath, sessionId);
1204
1391
  return mapBackfillCandidateRows(rows);
1205
1392
  }
1206
- async function countSessionCompartmentEmbedCoveragePolite(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS) {
1393
+ async function countSessionCompartmentEmbedCoveragePolite2(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2) {
1207
1394
  const candidates = getSessionBackfillRows(db, projectPath, sessionId);
1208
1395
  let embedded = 0;
1209
1396
  let started = performance.now();
@@ -1215,7 +1402,7 @@ async function countSessionCompartmentEmbedCoveragePolite(db, projectPath, sessi
1215
1402
  }
1216
1403
  return { embedded, total: candidates.length };
1217
1404
  }
1218
- async function countUnembeddedSessionCompartmentsPolite(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS) {
1405
+ async function countUnembeddedSessionCompartmentsPolite2(db, projectPath, sessionId, modelId, maxInputTokens = DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2) {
1219
1406
  const candidates = getSessionBackfillRows(db, projectPath, sessionId);
1220
1407
  let count = 0;
1221
1408
  let started = performance.now();
@@ -1228,4 +1415,4 @@ async function countUnembeddedSessionCompartmentsPolite(db, projectPath, session
1228
1415
  return count;
1229
1416
  }
1230
1417
 
1231
- export { DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS, CHUNK_WINDOW_SAFETY_RATIO, normalizeCompartmentChunkMaxInputTokens, buildCanonicalChunkTextFromFts, buildCompartmentSummaryFallbackText, canonicalizeInMemoryChunkTextForEmbedding, chunkCanonicalText, chunkEmbeddingWindowsAreCurrent, replaceCompartmentChunkEmbeddings, loadCompartmentChunkEmbeddingsForSearch, loadUnembeddedShadowChunkCandidates, loadUnembeddedCompartmentChunkCandidatesPolite, deleteChunkEmbedBackoffForSession, recordChunkEmbedBackoff, chunkWindowSourceKey, loadUnembeddedSessionChunkCandidates, loadUnembeddedSessionChunkCandidatesPolite, countUnembeddedSessionCompartments, countSessionCompartmentEmbedCoverage, countSessionCompartmentEmbedCoveragePolite, countUnembeddedSessionCompartmentsPolite };
1418
+ export { DEFAULT_COMPARTMENT_CHUNK_MAX_INPUT_TOKENS2, CHUNK_WINDOW_SAFETY_RATIO2, normalizeCompartmentChunkMaxInputTokens2, buildCanonicalChunkTextFromFts2, buildCompartmentSummaryFallbackText2, canonicalizeInMemoryChunkTextForEmbedding2, chunkCanonicalText2, chunkEmbeddingWindowsAreCurrent2, replaceCompartmentChunkEmbeddings2, loadCompartmentChunkEmbeddingsForSearch2, getLastCompartmentChunkPoolWarm2, peekCompartmentChunkSearchPool2, warmCompartmentChunkSearchPool2, maintainCompartmentChunkSearchPools2, loadUnembeddedShadowChunkCandidates2, loadUnembeddedCompartmentChunkCandidatesPolite2, deleteChunkEmbedBackoffForSession2, recordChunkEmbedBackoff2, chunkWindowSourceKey2, loadUnembeddedSessionChunkCandidates2, loadUnembeddedSessionChunkCandidatesPolite2, countUnembeddedSessionCompartments2, countSessionCompartmentEmbedCoverage2, countSessionCompartmentEmbedCoveragePolite2, countUnembeddedSessionCompartmentsPolite2 };