@cortexkit/opencode-magic-context 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/dist/agents/magic-context-prompt.d.ts +1 -1
  2. package/dist/agents/magic-context-prompt.d.ts.map +1 -1
  3. package/dist/{announcement-y35wzg2r.js → announcement-fp14dw0n.js} +3 -2
  4. package/dist/auto-search-worker.js +27 -30
  5. package/dist/config/index.d.ts.map +1 -1
  6. package/dist/config/mural-model-deprecation.d.ts +15 -0
  7. package/dist/config/mural-model-deprecation.d.ts.map +1 -0
  8. package/dist/config/project-security.d.ts +0 -3
  9. package/dist/config/project-security.d.ts.map +1 -1
  10. package/dist/config/schema/magic-context.d.ts +10 -6
  11. package/dist/config/schema/magic-context.d.ts.map +1 -1
  12. package/dist/{conflict-warning-hook-z44ynfz7.js → conflict-warning-hook-w8cykrnf.js} +12 -10
  13. package/dist/{context-wq4ffwyb.js → context-m0cy262m.js} +2690 -1903
  14. package/dist/{derive-budgets-ke12jnnh.js → derive-budgets-sg0xsq7s.js} +4 -3
  15. package/dist/embedding-activity-g1dhes6g.js +10 -0
  16. package/dist/embedding-backfill-9rcm1mfy.js +21 -0
  17. package/dist/embedding-cache-mgyr73ef.js +16 -0
  18. package/dist/embedding-worker.js +11 -9
  19. package/dist/features/magic-context/compaction-marker.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts +1 -0
  21. package/dist/features/magic-context/dreamer/evaluate-smart-notes.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-config.d.ts +3 -3
  23. package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/task-executor.d.ts +1 -1
  25. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/task-registry.d.ts +1 -0
  27. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  29. package/dist/features/magic-context/message-index-async.d.ts +16 -3
  30. package/dist/features/magic-context/message-index-async.d.ts.map +1 -1
  31. package/dist/features/magic-context/message-index-bounded.d.ts +17 -0
  32. package/dist/features/magic-context/message-index-bounded.d.ts.map +1 -0
  33. package/dist/features/magic-context/message-index.d.ts +7 -1
  34. package/dist/features/magic-context/message-index.d.ts.map +1 -1
  35. package/dist/features/magic-context/mural/render-trigger.d.ts +7 -4
  36. package/dist/features/magic-context/mural/render-trigger.d.ts.map +1 -1
  37. package/dist/features/magic-context/pi-content-decisions.d.ts +7 -1
  38. package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -1
  39. package/dist/features/magic-context/search.d.ts +29 -0
  40. package/dist/features/magic-context/search.d.ts.map +1 -1
  41. package/dist/features/magic-context/session-activity.d.ts.map +1 -1
  42. package/dist/features/magic-context/smart-notes/runner.d.ts +1 -0
  43. package/dist/features/magic-context/smart-notes/runner.d.ts.map +1 -1
  44. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  45. package/dist/features/magic-context/storage-meta-session.d.ts +6 -0
  46. package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -1
  47. package/dist/features/magic-context/storage-tag-identity-revision.d.ts +30 -0
  48. package/dist/features/magic-context/storage-tag-identity-revision.d.ts.map +1 -0
  49. package/dist/features/magic-context/storage-tags.d.ts +144 -4
  50. package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
  51. package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -1
  52. package/dist/features/magic-context/transform-decision-log.d.ts +1 -1
  53. package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -1
  54. package/dist/harness-e4avh192.js +10 -0
  55. package/dist/hooks/magic-context/active-anthropic-turn.d.ts +2 -0
  56. package/dist/hooks/magic-context/active-anthropic-turn.d.ts.map +1 -1
  57. package/dist/hooks/magic-context/auto-search-worker-client.d.ts +32 -3
  58. package/dist/hooks/magic-context/auto-search-worker-client.d.ts.map +1 -1
  59. package/dist/hooks/magic-context/command-handler.d.ts +1 -0
  60. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  61. package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -1
  63. package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -1
  64. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  65. package/dist/hooks/magic-context/hook.d.ts +1 -1
  66. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  67. package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -1
  68. package/dist/hooks/magic-context/lkg-persist.d.ts +4 -3
  69. package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -1
  70. package/dist/hooks/magic-context/lkg-replay.d.ts +13 -8
  71. package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -1
  72. package/dist/hooks/magic-context/lkg-slot.d.ts +139 -2
  73. package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -1
  74. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts +2 -0
  75. package/dist/hooks/magic-context/message-search-accepting-silent-worker.fixture.d.ts.map +1 -0
  76. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts +2 -0
  77. package/dist/hooks/magic-context/oc-stall-r2-warmup-worker.fixture.d.ts.map +1 -0
  78. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts +2 -0
  79. package/dist/hooks/magic-context/oc-stall-search-review.fixture.d.ts.map +1 -0
  80. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts +63 -0
  81. package/dist/hooks/magic-context/opencode1-to-model-messages.fixture.d.ts.map +1 -0
  82. package/dist/hooks/magic-context/provider-visible-parts.d.ts +45 -0
  83. package/dist/hooks/magic-context/provider-visible-parts.d.ts.map +1 -0
  84. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts +2 -0
  85. package/dist/hooks/magic-context/raw-ordinal-warmup-silent-worker.fixture.d.ts.map +1 -0
  86. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts +2 -0
  87. package/dist/hooks/magic-context/raw-ordinal-warmup-worker.d.ts.map +1 -0
  88. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +87 -0
  89. package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -0
  90. package/dist/hooks/magic-context/read-session-chunk.d.ts +12 -0
  91. package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -1
  92. package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -1
  93. package/dist/hooks/magic-context/read-session-formatting.d.ts +5 -0
  94. package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -1
  95. package/dist/hooks/magic-context/read-session-raw.d.ts +83 -1
  96. package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
  97. package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -1
  98. package/dist/hooks/magic-context/reasoning-budget.d.ts.map +1 -1
  99. package/dist/hooks/magic-context/sentinel.d.ts +41 -1
  100. package/dist/hooks/magic-context/sentinel.d.ts.map +1 -1
  101. package/dist/hooks/magic-context/strip-content.d.ts +14 -2
  102. package/dist/hooks/magic-context/strip-content.d.ts.map +1 -1
  103. package/dist/hooks/magic-context/system-prompt-hash.d.ts +1 -0
  104. package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -1
  105. package/dist/hooks/magic-context/tag-messages.d.ts +8 -0
  106. package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -1
  107. package/dist/hooks/magic-context/tag-owner-warmup.d.ts +6 -0
  108. package/dist/hooks/magic-context/tag-owner-warmup.d.ts.map +1 -0
  109. package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -1
  110. package/dist/hooks/magic-context/token-count-exact.d.ts +35 -0
  111. package/dist/hooks/magic-context/token-count-exact.d.ts.map +1 -0
  112. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
  113. package/dist/hooks/magic-context/transform.d.ts +8 -2
  114. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  115. package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
  116. package/dist/{index-w2t4ah5j.js → index-0an7742d.js} +14072 -14286
  117. package/dist/index-0qhce371.js +120 -0
  118. package/dist/{index-q6hef7fh.js → index-0sahzkwr.js} +6 -19
  119. package/dist/{index-k5bdx1bx.js → index-0w56v4fm.js} +3 -5
  120. package/dist/index-14cjxt20.js +819 -0
  121. package/dist/{v2/server-51dv1pr5.js → index-1qb0z7wa.js} +301 -27
  122. package/dist/index-2bvekkfy.js +11 -0
  123. package/dist/{index-sj29b3z2.js → index-2y0s2hep.js} +3 -3
  124. package/dist/index-4dhv7mqz.js +131 -0
  125. package/dist/{index-b35pxds2.js → index-58e3y90n.js} +1 -18
  126. package/dist/index-5zygecde.js +152 -0
  127. package/dist/{index-6d9e1m08.js → index-692jzy0p.js} +17775 -17450
  128. package/dist/index-72nhv486.js +2307 -0
  129. package/dist/index-7jzrrxap.js +931 -0
  130. package/dist/{v2/server-njt3np1k.js → index-7mx8v0pw.js} +220 -961
  131. package/dist/index-8ajstryz.js +18 -0
  132. package/dist/{index-sfpzqvdz.js → index-8cd2j99z.js} +2 -3
  133. package/dist/{index-hybnrwq0.js → index-8j7gqj40.js} +131 -128
  134. package/dist/index-bdckkfw6.js +3261 -0
  135. package/dist/{index-m5fe6jch.js → index-bhvjj0ys.js} +152 -2453
  136. package/dist/index-c43kr12f.js +3030 -0
  137. package/dist/index-cb7emxgj.js +984 -0
  138. package/dist/index-d9vfe7xq.js +16 -0
  139. package/dist/{index-5gq3b2ya.js → index-db7zwa3v.js} +147 -209
  140. package/dist/index-dhwzyd54.js +1142 -0
  141. package/dist/{index-8da2zjhz.js → index-eeezr5zz.js} +9 -7
  142. package/dist/{index-cwf6s3ay.js → index-f0h6xwqm.js} +2828 -2618
  143. package/dist/index-fb3zxn06.js +13 -0
  144. package/dist/index-fbv1dn35.js +171 -0
  145. package/dist/index-fr0wbhdn.js +43 -0
  146. package/dist/{index-mc22ayvf.js → index-ghc9f0n7.js} +11 -9
  147. package/dist/{index-fzbvakh0.js → index-jcbd3znx.js} +3 -3
  148. package/dist/{index-5a2r0p9f.js → index-k1xb52kd.js} +20 -13
  149. package/dist/index-k9nnwad5.js +3532 -0
  150. package/dist/{index-wx8a6bw3.js → index-kb9nn0a0.js} +270 -53
  151. package/dist/index-knh4y330.js +566 -0
  152. package/dist/{v2/server-fq7kq32k.js → index-mfkzp7qj.js} +1 -16
  153. package/dist/{index-gg8j07zz.js → index-mmyh6d8f.js} +4 -4
  154. package/dist/index-pavzsdc6.js +17 -0
  155. package/dist/{index-0c82743p.js → index-pdecwzrd.js} +17 -15
  156. package/dist/index-pg50n748.js +1060 -0
  157. package/dist/{index-92bp57hg.js → index-q2tqeqde.js} +123 -80
  158. package/dist/{index-rrrsepyw.js → index-q7h7csab.js} +90 -85
  159. package/dist/{v2/server-yr3zj7e7.js → index-qt1qqasc.js} +6 -7
  160. package/dist/{index-6wkcswft.js → index-ty64eqcn.js} +28 -18
  161. package/dist/{index-adwfkpex.js → index-yq8n9qcb.js} +23 -23
  162. package/dist/{index-9pk9exrb.js → index-z8e0psj8.js} +18 -18
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +586 -344
  165. package/dist/logger-d3wex3dz.js +20 -0
  166. package/dist/message-index-bounded-7ezbgddp.js +124 -0
  167. package/dist/{v2/message-time-backfill-1f9tzvcs.js → message-time-backfill-brbd63hv.js} +8 -6
  168. package/dist/migration-worker.js +25 -18
  169. package/dist/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  170. package/dist/plugin/dream-timer.d.ts +1 -1
  171. package/dist/plugin/dream-timer.d.ts.map +1 -1
  172. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -0
  173. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  174. package/dist/plugin/host-stall-profiler-report.d.ts +1 -66
  175. package/dist/plugin/host-stall-profiler-report.d.ts.map +1 -1
  176. package/dist/plugin/host-stall-profiler.d.ts +2 -95
  177. package/dist/plugin/host-stall-profiler.d.ts.map +1 -1
  178. package/dist/plugin/messages-transform.d.ts +0 -13
  179. package/dist/plugin/messages-transform.d.ts.map +1 -1
  180. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  181. package/dist/plugin/tool-registry.d.ts.map +1 -1
  182. package/dist/project-embedding-registry-7qzptcw7.js +88 -0
  183. package/dist/raw-ordinal-warmup-worker.js +60 -0
  184. package/dist/{read-session-chunk-4jey7hpt.js → read-session-chunk-6k83m4fj.js} +15 -9
  185. package/dist/read-session-raw-3g9qy1xa.js +58 -0
  186. package/dist/recomp-orchestrator-d3fp1cy0.js +57 -0
  187. package/dist/{v2/safe-notification-target-eb1n1vfb.js → safe-notification-target-5ffqq32m.js} +4 -2
  188. package/dist/search-epax1ecv.js +45 -0
  189. package/dist/{v2/send-session-notification-c0wtscea.js → send-session-notification-erecz4y4.js} +10 -7
  190. package/dist/shared/conflict-detector.d.ts.map +1 -1
  191. package/dist/shared/host-stall-profiler-bun.d.ts +46 -0
  192. package/dist/shared/host-stall-profiler-bun.d.ts.map +1 -0
  193. package/dist/shared/host-stall-profiler-common.d.ts +58 -0
  194. package/dist/shared/host-stall-profiler-common.d.ts.map +1 -0
  195. package/dist/shared/host-stall-profiler-node.d.ts +36 -0
  196. package/dist/shared/host-stall-profiler-node.d.ts.map +1 -0
  197. package/dist/shared/host-stall-profiler-report.d.ts +68 -0
  198. package/dist/shared/host-stall-profiler-report.d.ts.map +1 -0
  199. package/dist/shared/host-stall-profiler.d.ts +5 -0
  200. package/dist/shared/host-stall-profiler.d.ts.map +1 -0
  201. package/dist/shared/model-resolution.d.ts +2 -3
  202. package/dist/shared/model-resolution.d.ts.map +1 -1
  203. package/dist/shared/sqlite.d.ts +30 -0
  204. package/dist/shared/sqlite.d.ts.map +1 -1
  205. package/dist/shared/stable-json.d.ts.map +1 -1
  206. package/dist/shared/user-facing-codes.d.ts +0 -5
  207. package/dist/shared/user-facing-codes.d.ts.map +1 -1
  208. package/dist/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  209. package/dist/sqlite-mhjkerzq.js +46 -0
  210. package/dist/storage-memory-07fx57k6.js +71 -0
  211. package/dist/storage-tags-d3b0v2ss.js +131 -0
  212. package/dist/{task-config-v81k8jvk.js → task-config-cgpg0nvh.js} +2 -2
  213. package/dist/tools/ctx-expand/tools.d.ts.map +1 -1
  214. package/dist/tools/ctx-note/constants.d.ts +4 -0
  215. package/dist/tools/ctx-note/constants.d.ts.map +1 -1
  216. package/dist/tools/ctx-note/tools.d.ts +1 -0
  217. package/dist/tools/ctx-note/tools.d.ts.map +1 -1
  218. package/dist/tools/ctx-search/tools.d.ts.map +1 -1
  219. package/dist/tools/parameter-descriptions.d.ts +2 -2
  220. package/dist/tools/parameter-descriptions.d.ts.map +1 -1
  221. package/dist/{transform-postprocess-phase-z5hzpsxv.js → transform-postprocess-phase-spcy2qre.js} +35 -20
  222. package/dist/transformers-node-wasm.js +18415 -18415
  223. package/dist/v2/auto-search-worker.js +27 -30
  224. package/dist/v2/{context-14v1hr8b.js → context-sf98kstd.js} +3737 -3004
  225. package/dist/v2/{derive-budgets-nc9avxz8.js → derive-budgets-3vc0y84t.js} +4 -3
  226. package/dist/v2/embedding-activity-g1dhes6g.js +10 -0
  227. package/dist/v2/embedding-backfill-vn8g1nh1.js +21 -0
  228. package/dist/v2/embedding-cache-mgyr73ef.js +16 -0
  229. package/dist/v2/embedding-worker.js +12 -9
  230. package/dist/v2/fold/host-media.d.ts +4 -0
  231. package/dist/v2/fold/host-media.d.ts.map +1 -1
  232. package/dist/v2/fold/memory-cache.d.ts +70 -0
  233. package/dist/v2/fold/memory-cache.d.ts.map +1 -0
  234. package/dist/v2/fold/native-codec.d.ts +10 -0
  235. package/dist/v2/fold/native-codec.d.ts.map +1 -0
  236. package/dist/v2/fold/native-replay.d.ts +58 -0
  237. package/dist/v2/fold/native-replay.d.ts.map +1 -0
  238. package/dist/v2/fold/policy.d.ts +24 -0
  239. package/dist/v2/fold/policy.d.ts.map +1 -0
  240. package/dist/v2/harness-e4avh192.js +10 -0
  241. package/dist/v2/hooks/context.d.ts +2 -2
  242. package/dist/v2/hooks/context.d.ts.map +1 -1
  243. package/dist/v2/hooks/dream-manual.d.ts +1 -1
  244. package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
  245. package/dist/v2/hooks/dream-timer.d.ts.map +1 -1
  246. package/dist/v2/hooks/dream-trigger.d.ts +1 -2
  247. package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
  248. package/dist/v2/hooks/payload.d.ts.map +1 -1
  249. package/dist/v2/hooks/tools.d.ts.map +1 -1
  250. package/dist/v2/hooks/types.d.ts +6 -0
  251. package/dist/v2/hooks/types.d.ts.map +1 -1
  252. package/dist/v2/logger-mxd0ym09.js +19 -0
  253. package/dist/v2/message-index-bounded-dy3s2k1e.js +123 -0
  254. package/dist/{message-time-backfill-r5epkzj3.js → v2/message-time-backfill-gtx1pwk1.js} +7 -7
  255. package/dist/v2/migration-worker.js +24 -17
  256. package/dist/v2/{model-resolution-xhfmyyvy.js → model-resolution-nx97z3x7.js} +1 -1
  257. package/dist/v2/project-embedding-registry-1tgba5dv.js +86 -0
  258. package/dist/v2/raw-ordinal-warmup-worker.js +60 -0
  259. package/dist/v2/{read-session-chunk-gyyv7w2r.js → read-session-chunk-rh4khdkv.js} +14 -8
  260. package/dist/v2/read-session-raw-bsbmf0vj.js +57 -0
  261. package/dist/v2/recomp-orchestrator-az61rfcg.js +57 -0
  262. package/dist/{safe-notification-target-43r8jsxw.js → v2/safe-notification-target-73ax1p5v.js} +3 -3
  263. package/dist/v2/search-nzkwrc6n.js +45 -0
  264. package/dist/{send-session-notification-0m68ms3n.js → v2/send-session-notification-6km439kn.js} +9 -8
  265. package/dist/{index-5eqk6z3s.js → v2/server-1r6pmz4f.js} +301 -27
  266. package/dist/v2/server-2bvekkfy.js +11 -0
  267. package/dist/v2/server-2fbhp79z.js +3205 -0
  268. package/dist/v2/{server-ajzeteqw.js → server-2ra6pwf3.js} +1 -18
  269. package/dist/v2/server-4dhv7mqz.js +131 -0
  270. package/dist/v2/{server-y10vbq6y.js → server-4k748ke6.js} +11 -1053
  271. package/dist/v2/{server-vs5gpnd4.js → server-52awr2mw.js} +81 -145
  272. package/dist/v2/{server-1qbnzc80.js → server-5m3dt5r1.js} +136 -148
  273. package/dist/v2/server-686jg6eb.js +3508 -0
  274. package/dist/v2/server-7jzrrxap.js +931 -0
  275. package/dist/v2/server-7wwc2nga.js +3023 -0
  276. package/dist/v2/server-8ajstryz.js +18 -0
  277. package/dist/v2/{server-sfpzqvdz.js → server-8cd2j99z.js} +2 -3
  278. package/dist/v2/{server-d0sraw7m.js → server-8pyt7hev.js} +291 -286
  279. package/dist/v2/server-8tqanswc.js +984 -0
  280. package/dist/v2/{server-14vq4kpm.js → server-aan4q8mx.js} +3 -3
  281. package/dist/v2/server-d9vfe7xq.js +16 -0
  282. package/dist/{index-x3kwrmqk.js → v2/server-e0vdaae2.js} +35 -792
  283. package/dist/v2/server-ezhze64f.js +1048 -0
  284. package/dist/v2/server-fb3zxn06.js +13 -0
  285. package/dist/v2/server-fr0wbhdn.js +43 -0
  286. package/dist/v2/server-g5r0n3b6.js +1137 -0
  287. package/dist/v2/server-gjcr4w98.js +154 -0
  288. package/dist/v2/server-k228xhjg.js +171 -0
  289. package/dist/v2/{server-nf82q6pt.js → server-k8x2rbxc.js} +5946 -5602
  290. package/dist/v2/{server-wx8a6bw3.js → server-kb9nn0a0.js} +270 -53
  291. package/dist/{index-rrbbspwh.js → v2/server-mfkzp7qj.js} +1 -16
  292. package/dist/v2/server-pavzsdc6.js +17 -0
  293. package/dist/v2/{server-e0c1b7a7.js → server-psqc7e9n.js} +122 -79
  294. package/dist/{index-yr3zj7e7.js → v2/server-qt1qqasc.js} +6 -7
  295. package/dist/v2/server-qye6ykf7.js +120 -0
  296. package/dist/v2/{server-qdjnb2z1.js → server-r5p3b1wy.js} +11 -9
  297. package/dist/v2/server-sggvvzhb.js +759 -0
  298. package/dist/v2/{server-cpepxy2q.js → server-v06jcv0w.js} +14 -12
  299. package/dist/v2/server-vqpf3167.js +1048 -0
  300. package/dist/v2/{server-rz514f14.js → server-x2g40a71.js} +2044 -2060
  301. package/dist/v2/{server-vd4e7174.js → server-xdfwt6kh.js} +20 -16
  302. package/dist/v2/{server-efhwzx05.js → server-xxm59eww.js} +23 -23
  303. package/dist/v2/server-yczc713m.js +564 -0
  304. package/dist/v2/{server-fcdehk1s.js → server-z2037m6z.js} +4 -4
  305. package/dist/v2/{server-50hvkg3v.js → server-zm570tr2.js} +160 -158
  306. package/dist/v2/{server-6r257mf5.js → server-zxhgvsf9.js} +3 -3
  307. package/dist/v2/server.js +16 -14
  308. package/dist/v2/sqlite-context-pragmas-mv9jqwjh.js +6 -0
  309. package/dist/v2/sqlite-mhjkerzq.js +46 -0
  310. package/dist/v2/storage-memory-07fx57k6.js +71 -0
  311. package/dist/v2/storage-tags-w4tv77sn.js +130 -0
  312. package/dist/v2/store-reader.d.ts +16 -0
  313. package/dist/v2/store-reader.d.ts.map +1 -1
  314. package/dist/v2/{task-config-tbndqyny.js → task-config-x0hq3qfd.js} +2 -2
  315. package/dist/v2/transformers-node-wasm.js +18415 -18415
  316. package/dist/v2/tui/index.d.ts.map +1 -1
  317. package/dist/v2/tui/types.d.ts +1 -10
  318. package/dist/v2/tui/types.d.ts.map +1 -1
  319. package/dist/v2/{wrapup-orchestrator-nbz854vc.js → wrapup-orchestrator-mz7efs7w.js} +51 -30
  320. package/dist/wrapup-orchestrator-amzta1t4.js +44 -0
  321. package/package.json +4 -3
  322. package/src/agents/magic-context-prompt.ts +27 -2
  323. package/src/agents/smart-notes-enabled.test.ts +294 -0
  324. package/src/agents/smart-notes-on.golden.json +70 -0
  325. package/src/config/index.test.ts +67 -1
  326. package/src/config/index.ts +2 -0
  327. package/src/config/latch-permanence-guard.test.ts +4 -0
  328. package/src/config/mural-model-deprecation.ts +24 -0
  329. package/src/config/project-security.hostile-matrix.test.ts +4 -44
  330. package/src/config/project-security.test.ts +9 -14
  331. package/src/config/project-security.ts +13 -55
  332. package/src/config/schema/magic-context.test.ts +2 -2
  333. package/src/config/schema/magic-context.ts +16 -10
  334. package/src/features/magic-context/dreamer/task-registry.ts +6 -0
  335. package/src/shared/conflict-detector.test.ts +56 -0
  336. package/src/shared/conflict-detector.ts +16 -5
  337. package/src/shared/host-stall-profiler-bun.ts +358 -0
  338. package/src/shared/host-stall-profiler-common.ts +159 -0
  339. package/src/shared/host-stall-profiler-node.test.ts +234 -0
  340. package/src/shared/host-stall-profiler-node.ts +274 -0
  341. package/src/shared/host-stall-profiler-report.ts +248 -0
  342. package/src/shared/host-stall-profiler.ts +57 -0
  343. package/src/shared/model-resolution.test.ts +54 -17
  344. package/src/shared/model-resolution.ts +6 -17
  345. package/src/shared/sqlite.test.ts +52 -0
  346. package/src/shared/sqlite.ts +339 -23
  347. package/src/shared/stable-json-linear.test.ts +109 -0
  348. package/src/shared/stable-json.ts +37 -7
  349. package/src/shared/user-facing-codes.ts +2 -6
  350. package/src/shared/write-transaction-attribution.test.ts +2 -2
  351. package/src/v2/tui/host-contract.test.ts +41 -67
  352. package/src/v2/tui/index.ts +6 -214
  353. package/src/v2/tui/types.ts +5 -17
  354. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts +0 -45
  355. package/dist/features/magic-context/checkout-claim-fake-subc.test-support.d.ts.map +0 -1
  356. package/dist/features/magic-context/checkout-claim.d.ts +0 -155
  357. package/dist/features/magic-context/checkout-claim.d.ts.map +0 -1
  358. package/dist/index-bb36vgr3.js +0 -6608
  359. package/dist/index-fnn5pjtt.js +0 -6554
  360. package/dist/recomp-orchestrator-rervg6q4.js +0 -42
  361. package/dist/v2/recomp-orchestrator-42vjba7p.js +0 -42
  362. package/dist/v2/server-3trjk1hx.js +0 -6360
  363. package/dist/v2/server-nm9n3aqq.js +0 -6461
  364. package/dist/wrapup-orchestrator-b2dztrar.js +0 -29
  365. /package/dist/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
  366. /package/dist/v2/{index-5prbx026.js → index-2pp04pmg.js} +0 -0
@@ -0,0 +1,13 @@
1
+ // src/shared/sqlite-context-pragmas.ts
2
+ function configureContextDatabasePragmas2(db, readonly = false) {
3
+ const [row] = db.prepare(readonly ? "PRAGMA journal_mode" : "PRAGMA journal_mode=WAL").all();
4
+ const mode = row?.journal_mode?.toLowerCase();
5
+ if (mode === "memory" || readonly && mode !== "wal")
6
+ return;
7
+ if (mode !== "wal") {
8
+ throw new Error(`context.db requires WAL before synchronous=NORMAL (got ${mode ?? "unknown"})`);
9
+ }
10
+ db.exec("PRAGMA synchronous=NORMAL");
11
+ }
12
+
13
+ export { configureContextDatabasePragmas2 };
@@ -0,0 +1,171 @@
1
+ import {
2
+ withSqliteBackgroundWriter2,
3
+ withoutSqliteTransformPass2
4
+ } from "./index-kb9nn0a0.js";
5
+ import {
6
+ logSlowWriteTransaction
7
+ } from "./index-2y0s2hep.js";
8
+
9
+ // src/features/magic-context/message-fts-rowid-map.ts
10
+ import { createHash } from "node:crypto";
11
+ var MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE = 100;
12
+ var BACKFILL_STATE_ID = 1;
13
+ var EMPTY_INDEX_CONTENT_HASH = createHash("sha256").update("").digest("hex");
14
+ var upsertMapStatements = new WeakMap;
15
+ var rangeReadyStatements = new WeakMap;
16
+ var updateTimeStatements = new WeakMap;
17
+ var activeBackfills = new WeakMap;
18
+ function getUpsertMapStatement(db) {
19
+ let statement = upsertMapStatements.get(db);
20
+ if (!statement) {
21
+ statement = db.prepare(`INSERT INTO message_fts_rowid_map
22
+ (session_id, message_ordinal, fts_rowid, message_time_ms)
23
+ VALUES (?, ?, ?, ?)
24
+ ON CONFLICT(session_id, message_ordinal) DO UPDATE SET
25
+ fts_rowid = excluded.fts_rowid,
26
+ message_time_ms = COALESCE(
27
+ excluded.message_time_ms,
28
+ message_fts_rowid_map.message_time_ms
29
+ )`);
30
+ upsertMapStatements.set(db, statement);
31
+ }
32
+ return statement;
33
+ }
34
+ function getBackfillState(db) {
35
+ const row = db.prepare(`SELECT watermark_rowid AS watermarkRowid, completed
36
+ FROM message_fts_rowid_map_backfill_state
37
+ WHERE id = ?`).get(BACKFILL_STATE_ID);
38
+ return {
39
+ processed: 0,
40
+ watermarkRowid: typeof row?.watermarkRowid === "number" && Number.isSafeInteger(row.watermarkRowid) ? row.watermarkRowid : 0,
41
+ completed: row?.completed === 1
42
+ };
43
+ }
44
+ function recordMessageFtsRowid(db, sessionId, messageOrdinal, ftsRowid, messageTimeMs = null) {
45
+ const numericRowid = Number(ftsRowid);
46
+ if (!Number.isSafeInteger(numericRowid) || numericRowid <= 0) {
47
+ throw new Error(`invalid message FTS rowid: ${String(ftsRowid)}`);
48
+ }
49
+ const normalizedTime = typeof messageTimeMs === "number" && Number.isSafeInteger(messageTimeMs) && messageTimeMs >= 0 ? messageTimeMs : null;
50
+ getUpsertMapStatement(db).run(sessionId, messageOrdinal, numericRowid, normalizedTime);
51
+ }
52
+ function recordIndexedMessageTime(db, sessionId, messageOrdinal, messageTimeMs) {
53
+ if (typeof messageTimeMs !== "number" || !Number.isSafeInteger(messageTimeMs) || messageTimeMs < 0) {
54
+ return;
55
+ }
56
+ let statement = updateTimeStatements.get(db);
57
+ if (!statement) {
58
+ statement = db.prepare(`UPDATE message_fts_rowid_map
59
+ SET message_time_ms = ?
60
+ WHERE session_id = ? AND message_ordinal = ?
61
+ AND message_time_ms IS NULL`);
62
+ updateTimeStatements.set(db, statement);
63
+ }
64
+ statement.run(messageTimeMs, sessionId, messageOrdinal);
65
+ }
66
+ function backfillMessageFtsRowidMapBatch(db, batchSize = MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE) {
67
+ const boundedBatchSize = Number.isFinite(batchSize) ? Math.min(MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE, Math.max(1, Math.floor(batchSize))) : MESSAGE_FTS_ROWID_MAP_BACKFILL_BATCH_SIZE;
68
+ let progress = {
69
+ processed: 0,
70
+ watermarkRowid: 0,
71
+ completed: false
72
+ };
73
+ let transactionStartedAt = 0;
74
+ db.transaction(() => {
75
+ transactionStartedAt = performance.now();
76
+ db.prepare(`INSERT OR IGNORE INTO message_fts_rowid_map_backfill_state
77
+ (id, watermark_rowid, completed) VALUES (?, 0, 0)`).run(BACKFILL_STATE_ID);
78
+ const state = getBackfillState(db);
79
+ if (state.completed) {
80
+ progress = state;
81
+ return;
82
+ }
83
+ const rows = db.prepare(`SELECT rowid AS ftsRowid,
84
+ session_id AS sessionId, message_ordinal AS messageOrdinal
85
+ FROM message_history_fts WHERE rowid > ? ORDER BY rowid ASC LIMIT ?`).all(state.watermarkRowid, boundedBatchSize);
86
+ let watermarkRowid = state.watermarkRowid;
87
+ for (const row of rows) {
88
+ const ftsRowid = Number(row.ftsRowid);
89
+ const messageOrdinal = Number(row.messageOrdinal);
90
+ if (Number.isSafeInteger(ftsRowid) && ftsRowid > watermarkRowid) {
91
+ watermarkRowid = ftsRowid;
92
+ }
93
+ if (typeof row.sessionId === "string" && Number.isSafeInteger(messageOrdinal) && messageOrdinal >= 0 && Number.isSafeInteger(ftsRowid) && ftsRowid > 0) {
94
+ recordMessageFtsRowid(db, row.sessionId, messageOrdinal, ftsRowid);
95
+ }
96
+ }
97
+ const completed = rows.length < boundedBatchSize;
98
+ db.prepare(`UPDATE message_fts_rowid_map_backfill_state
99
+ SET watermark_rowid = ?, completed = ?, updated_at = ?
100
+ WHERE id = ?`).run(watermarkRowid, completed ? 1 : 0, Date.now(), BACKFILL_STATE_ID);
101
+ progress = {
102
+ processed: rows.length,
103
+ watermarkRowid,
104
+ completed
105
+ };
106
+ }).immediate();
107
+ logSlowWriteTransaction("message_fts_rowid_backfill", transactionStartedAt);
108
+ return progress;
109
+ }
110
+ async function runMessageFtsRowidMapBackfill(db) {
111
+ await new Promise((resolve) => setTimeout(resolve, 0));
112
+ for (;; ) {
113
+ const progress = backfillMessageFtsRowidMapBatch(db);
114
+ if (progress.completed)
115
+ return;
116
+ await new Promise((resolve) => setTimeout(resolve, 0));
117
+ }
118
+ }
119
+ function startMessageFtsRowidMapBackfill(db) {
120
+ const active = activeBackfills.get(db);
121
+ if (active)
122
+ return active;
123
+ const run = withoutSqliteTransformPass2(() => withSqliteBackgroundWriter2(() => runMessageFtsRowidMapBackfill(db))).finally(() => {
124
+ activeBackfills.delete(db);
125
+ });
126
+ activeBackfills.set(db, run);
127
+ return run;
128
+ }
129
+ function messageFtsOrdinalRangeIsMapped(db, sessionId, startOrdinal, endOrdinal) {
130
+ if (endOrdinal < startOrdinal)
131
+ return true;
132
+ if (getBackfillState(db).completed)
133
+ return true;
134
+ let statement = rangeReadyStatements.get(db);
135
+ if (!statement) {
136
+ statement = db.prepare(`SELECT COUNT(DISTINCT source.message_ordinal) AS sourceOrdinalCount,
137
+ COUNT(DISTINCT CASE
138
+ WHEN source.role IN ('user', 'assistant')
139
+ AND source.normalized_content_hash != ?
140
+ THEN source.message_ordinal
141
+ END) AS expectedMapCount,
142
+ COUNT(DISTINCT CASE
143
+ WHEN source.role IN ('user', 'assistant')
144
+ AND source.normalized_content_hash != ?
145
+ AND map.fts_rowid IS NOT NULL
146
+ THEN source.message_ordinal
147
+ END) AS mappedCount
148
+ FROM message_history_source AS source
149
+ LEFT JOIN message_fts_rowid_map AS map
150
+ ON map.session_id = source.session_id
151
+ AND map.message_ordinal = source.message_ordinal
152
+ WHERE source.session_id = ?
153
+ AND source.message_ordinal BETWEEN ? AND ?`);
154
+ rangeReadyStatements.set(db, statement);
155
+ }
156
+ const row = statement.get(EMPTY_INDEX_CONTENT_HASH, EMPTY_INDEX_CONTENT_HASH, sessionId, startOrdinal, endOrdinal);
157
+ const ordinalCount = endOrdinal - startOrdinal + 1;
158
+ return row?.sourceOrdinalCount === ordinalCount && row.expectedMapCount === row.mappedCount;
159
+ }
160
+ function deleteUnmappedMessageFtsRows(db, sessionIds) {
161
+ if (sessionIds.length === 0)
162
+ return;
163
+ const state = getBackfillState(db);
164
+ if (state.completed)
165
+ return;
166
+ const placeholders = sessionIds.map(() => "?").join(", ");
167
+ db.prepare(`DELETE FROM message_history_fts
168
+ WHERE rowid > ? AND session_id IN (${placeholders})`).run(state.watermarkRowid, ...sessionIds);
169
+ }
170
+
171
+ export { recordMessageFtsRowid, recordIndexedMessageTime, startMessageFtsRowidMapBackfill, messageFtsOrdinalRangeIsMapped, deleteUnmappedMessageFtsRows };
@@ -0,0 +1,43 @@
1
+ // src/features/magic-context/memory/constants.ts
2
+ var V2_MEMORY_CATEGORIES = [
3
+ "PROJECT_RULES",
4
+ "ARCHITECTURE",
5
+ "CONSTRAINTS",
6
+ "CONFIG_VALUES",
7
+ "NAMING"
8
+ ];
9
+ var PROMOTABLE_CATEGORIES = [
10
+ ...V2_MEMORY_CATEGORIES,
11
+ "ARCHITECTURE_DECISIONS",
12
+ "CONFIG_DEFAULTS",
13
+ "USER_PREFERENCES",
14
+ "USER_DIRECTIVES",
15
+ "ENVIRONMENT",
16
+ "WORKFLOW_RULES",
17
+ "KNOWN_ISSUES"
18
+ ];
19
+ var CATEGORY_PRIORITY = [
20
+ ...V2_MEMORY_CATEGORIES,
21
+ "USER_DIRECTIVES",
22
+ "USER_PREFERENCES",
23
+ "CONFIG_DEFAULTS",
24
+ "ARCHITECTURE_DECISIONS",
25
+ "ENVIRONMENT",
26
+ "WORKFLOW_RULES",
27
+ "KNOWN_ISSUES"
28
+ ];
29
+ var MEMORY_CATEGORY_ORDER_UNKNOWN = 99;
30
+ var MEMORY_CATEGORY_ORDER_PRIORITY = CATEGORY_PRIORITY.reduce((acc, category, index) => {
31
+ acc[category] = index;
32
+ return acc;
33
+ }, {});
34
+ var MEMORY_CATEGORY_ORDER_SQL = `CASE category ${CATEGORY_PRIORITY.map((category, index) => `WHEN '${category}' THEN ${index}`).join(" ")} ELSE ${MEMORY_CATEGORY_ORDER_UNKNOWN} END`;
35
+ function getMemoryCategoryOrder(category) {
36
+ return MEMORY_CATEGORY_ORDER_PRIORITY[category] ?? MEMORY_CATEGORY_ORDER_UNKNOWN;
37
+ }
38
+ var CATEGORY_DEFAULT_TTL = {
39
+ WORKFLOW_RULES: 90 * 24 * 60 * 60 * 1000,
40
+ KNOWN_ISSUES: 30 * 24 * 60 * 60 * 1000
41
+ };
42
+
43
+ export { V2_MEMORY_CATEGORIES, PROMOTABLE_CATEGORIES, CATEGORY_PRIORITY, MEMORY_CATEGORY_ORDER_SQL, getMemoryCategoryOrder, CATEGORY_DEFAULT_TTL };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveDreamerTaskModel2
3
- } from "./index-sfpzqvdz.js";
3
+ } from "./index-8cd2j99z.js";
4
4
 
5
5
  // src/features/magic-context/dreamer/task-registry.ts
6
6
  var CANONICAL_DREAM_TASKS = [
@@ -17,6 +17,9 @@ var CANONICAL_DREAM_TASKS = [
17
17
  "promote-primers",
18
18
  "refresh-primers"
19
19
  ];
20
+ function availableDreamTasks(smartNotesEnabled = true) {
21
+ return CANONICAL_DREAM_TASKS.filter((task) => smartNotesEnabled || task !== "evaluate-smart-notes");
22
+ }
20
23
  var DREAM_TOOL_LOOP_TOKEN_BUDGETS = {
21
24
  "map-memories": 2500000,
22
25
  verify: 2500000,
@@ -150,13 +153,12 @@ function compareTaskOrder(a, b) {
150
153
  }
151
154
 
152
155
  // src/features/magic-context/dreamer/task-config.ts
153
- function buildDreamTaskRuntimeConfigs2(dreamer, harness, language, muralModel) {
154
- return CANONICAL_DREAM_TASKS.map((task) => {
156
+ function buildDreamTaskRuntimeConfigs2(dreamer, harness, language, smartNotesEnabled = true) {
157
+ return availableDreamTasks(smartNotesEnabled).map((task) => {
155
158
  const resolved = resolveDreamerTaskModel2({
156
159
  config: { dreamer },
157
160
  harness,
158
- task,
159
- muralModel
161
+ task
160
162
  });
161
163
  return {
162
164
  task,
@@ -184,13 +186,13 @@ function dreamTaskScheduled2(dreamer, task) {
184
186
  const schedule = dreamer?.tasks?.[task]?.schedule;
185
187
  return typeof schedule === "string" && schedule.trim() !== "";
186
188
  }
187
- function enabledDreamTasks2(dreamer) {
189
+ function enabledDreamTasks2(dreamer, smartNotesEnabled = true) {
188
190
  if (!dreamer?.tasks)
189
191
  return [];
190
- return CANONICAL_DREAM_TASKS.filter((t) => dreamer.tasks[t]?.schedule?.trim());
192
+ return availableDreamTasks(smartNotesEnabled).filter((t) => dreamer.tasks[t]?.schedule?.trim());
191
193
  }
192
- function summarizeDreamSchedule2(dreamer) {
193
- const enabled = enabledDreamTasks2(dreamer);
194
+ function summarizeDreamSchedule2(dreamer, smartNotesEnabled = true) {
195
+ const enabled = enabledDreamTasks2(dreamer, smartNotesEnabled);
194
196
  if (enabled.length === 0)
195
197
  return "manual-only";
196
198
  return enabled.map((t) => `${t} ${dreamer?.tasks[t]?.schedule}`).join(", ");
@@ -1,6 +1,6 @@
1
1
  import {
2
- log
3
- } from "./index-hybnrwq0.js";
2
+ log2
3
+ } from "./index-8j7gqj40.js";
4
4
 
5
5
  // src/shared/safe-notification-target.ts
6
6
  var DEFAULT_TITLE_RE = /^(New session - |Child session - )\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/;
@@ -33,7 +33,7 @@ async function waitForSafeNotificationTarget2(client, sessionId, options) {
33
33
  await new Promise((resolve) => setTimeout(resolve, delayMs));
34
34
  }
35
35
  }
36
- log(`[magic-context] notification skipped: session ${sessionId} still has its default title (would suppress title generation); will retry on a later startup`);
36
+ log2(`[magic-context] notification skipped: session ${sessionId} still has its default title (would suppress title generation); will retry on a later startup`);
37
37
  return "skip";
38
38
  }
39
39
 
@@ -1,6 +1,6 @@
1
1
  import {
2
- sessionLog
3
- } from "./index-hybnrwq0.js";
2
+ sessionLog2
3
+ } from "./index-8j7gqj40.js";
4
4
  import {
5
5
  COMPARTMENT_LEASE_RENEWAL_MS,
6
6
  acquireCompartmentLease,
@@ -21,17 +21,20 @@ import {
21
21
  getActiveCompartmentRun,
22
22
  markActiveCompartmentRunPublished,
23
23
  registerActiveCompartmentRun
24
- } from "./index-6d9e1m08.js";
24
+ } from "./index-692jzy0p.js";
25
+ import {
26
+ prepareRawSessionOrdinals2
27
+ } from "./index-bdckkfw6.js";
25
28
  import {
26
29
  pushNotification2
27
30
  } from "./index-x8a7jmkh.js";
28
31
  import {
29
32
  sendStatusNotification2
30
- } from "./index-adwfkpex.js";
33
+ } from "./index-yq8n9qcb.js";
31
34
  import {
32
35
  setRecompStarting2,
33
36
  setRecompTerminal2
34
- } from "./index-gg8j07zz.js";
37
+ } from "./index-mmyh6d8f.js";
35
38
 
36
39
  // src/hooks/magic-context/wrapup-orchestrator.ts
37
40
  import * as crypto from "node:crypto";
@@ -123,7 +126,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
123
126
  const remainingMs = () => Math.max(0, waitStartedAt + maxWaitMs - Date.now());
124
127
  for (;; ) {
125
128
  if (remainingMs() <= 0) {
126
- sessionLog(sessionId, "wrapup: timed out waiting for the compartment-state lease");
129
+ sessionLog2(sessionId, "wrapup: timed out waiting for the compartment-state lease");
127
130
  return { ok: false, reason: "timeout" };
128
131
  }
129
132
  const active = getActiveCompartmentRun(sessionId);
@@ -134,7 +137,7 @@ async function acquireCompartmentLeaseForWrapup(ctx, sessionId, renewWrapupMarke
134
137
  emitWrapupProgress(ctx, sessionId, { note: "Waiting for the active historian run…" });
135
138
  const outcome = await waitForActiveRunWithin(active.promise, remainingMs());
136
139
  if (outcome === "timeout") {
137
- sessionLog(sessionId, "wrapup: timed out waiting for the active historian run");
140
+ sessionLog2(sessionId, "wrapup: timed out waiting for the active historian run");
138
141
  return { ok: false, reason: "timeout" };
139
142
  }
140
143
  continue;
@@ -157,10 +160,10 @@ async function runOneWrapupIteration(args) {
157
160
  const renewal = setInterval(() => {
158
161
  try {
159
162
  if (!renewCompartmentLease(ctx.db, sessionId, leaseHolderId)) {
160
- sessionLog(sessionId, "wrapup: compartment lease renewal failed");
163
+ sessionLog2(sessionId, "wrapup: compartment lease renewal failed");
161
164
  }
162
165
  } catch (err) {
163
- sessionLog(sessionId, `wrapup: compartment lease renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
166
+ sessionLog2(sessionId, `wrapup: compartment lease renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
164
167
  }
165
168
  }, COMPARTMENT_LEASE_RENEWAL_MS);
166
169
  const runCompartmentAgentForWrapup = ctx.runCompartmentAgentForWrapup ?? runCompartmentAgent;
@@ -206,13 +209,17 @@ async function runOneWrapupIteration(args) {
206
209
  return { ran: true };
207
210
  } finally {
208
211
  clearInterval(renewal);
209
- releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId, sessionLog);
212
+ releaseCompartmentLeaseBestEffort(ctx.db, sessionId, leaseHolderId, sessionLog2);
210
213
  }
211
214
  }
212
215
  async function runManagedWrapup2(ctx, sessionId, options) {
213
216
  const messagesToKeep = Math.max(1, Math.floor(options.messagesToKeep));
214
217
  setRecompStarting2(ctx.liveSessionState, sessionId, "Estimating wrapup…", "wrapup");
215
218
  try {
219
+ if (!await prepareRawSessionOrdinals2(sessionId)) {
220
+ setRecompTerminal2(ctx.liveSessionState, sessionId, "failed", "Session ordinals are warming; retry wrapup shortly.");
221
+ return "Wrapup deferred while session ordinals warm in the background. Retry shortly.";
222
+ }
216
223
  return await runStartedWrapup(ctx, sessionId, messagesToKeep);
217
224
  } catch (error) {
218
225
  const reason = error instanceof Error ? error.message : String(error);
@@ -265,7 +272,7 @@ ${message}`;
265
272
  if (ownershipLost)
266
273
  return;
267
274
  ownershipLost = true;
268
- sessionLog(sessionId, "wrapup: durable marker ownership lost; aborting loop");
275
+ sessionLog2(sessionId, "wrapup: durable marker ownership lost; aborting loop");
269
276
  };
270
277
  const renewWrapupMarker = (updates) => {
271
278
  const updated = updateWrapupInProgress(ctx.db, sessionId, wrapupHolderId, updates);
@@ -282,7 +289,7 @@ ${message}`;
282
289
  chunkIndex
283
290
  });
284
291
  } catch (err) {
285
- sessionLog(sessionId, `wrapup: marker renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
292
+ sessionLog2(sessionId, `wrapup: marker renewal threw; continuing (${err instanceof Error ? err.message : String(err)})`);
286
293
  }
287
294
  }, 60000);
288
295
  markerRenewal.unref?.();
@@ -338,7 +345,7 @@ ${message}`;
338
345
  if (lastEnd + 1 >= plan.targetEligibleEndOrdinal)
339
346
  break;
340
347
  chunkIndex += 1;
341
- sessionLog(sessionId, `wrapup chunk ${chunkIndex}: ${describeBoundaryDiagnostics(plan.snapshot)}`);
348
+ sessionLog2(sessionId, `wrapup chunk ${chunkIndex}: ${describeBoundaryDiagnostics(plan.snapshot)}`);
342
349
  emitWrapupProgress(ctx, sessionId, {
343
350
  processedMessages: Math.max(0, lastEnd),
344
351
  totalMessages: Math.max(0, plan.targetEligibleEndOrdinal - 1),