@remnic/core 10.0.47 → 10.0.49

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 (335) hide show
  1. package/dist/access-admin-ops-surface.js +63 -61
  2. package/dist/access-audit.js +2 -2
  3. package/dist/access-authorization-probe.js +64 -62
  4. package/dist/access-boundary.js +63 -61
  5. package/dist/access-cli.js +144 -142
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-extraction-force-flush.js +63 -61
  8. package/dist/access-http-briefing.js +64 -62
  9. package/dist/access-http-query.js +65 -63
  10. package/dist/access-http.js +85 -83
  11. package/dist/access-identity-continuity-surface.js +63 -61
  12. package/dist/access-lcm-surface.js +63 -61
  13. package/dist/access-mcp.js +74 -72
  14. package/dist/access-namespace-preflight.js +63 -61
  15. package/dist/access-observe-write-category.js +11 -10
  16. package/dist/access-observe-write-surface.js +63 -61
  17. package/dist/access-offline-manifest.js +8 -7
  18. package/dist/access-operations-batch.js +66 -64
  19. package/dist/access-operations.js +73 -71
  20. package/dist/access-recall-concurrency.js +63 -61
  21. package/dist/access-recall-response.js +63 -61
  22. package/dist/access-recall-surface.js +63 -61
  23. package/dist/access-schema.js +10 -9
  24. package/dist/access-service.d.ts.map +1 -1
  25. package/dist/access-service.js +63 -61
  26. package/dist/access-surface-catalog.js +65 -63
  27. package/dist/access-surface-catalog.js.map +1 -1
  28. package/dist/active-recall.js +23 -21
  29. package/dist/active-recall.js.map +1 -1
  30. package/dist/adapters/index.js +4 -4
  31. package/dist/adapters/registry.js +2 -2
  32. package/dist/briefing.js +13 -12
  33. package/dist/buffer.js +5 -5
  34. package/dist/calibration.js +3 -3
  35. package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
  36. package/dist/capture-write-lock-scope.d.ts +7 -0
  37. package/dist/capture-write-lock-scope.d.ts.map +1 -0
  38. package/dist/capture-write-lock-scope.js +10 -0
  39. package/dist/causal-behavior.js +2 -2
  40. package/dist/causal-chain.js +2 -2
  41. package/dist/causal-consolidation.js +16 -15
  42. package/dist/causal-consolidation.js.map +1 -1
  43. package/dist/causal-retrieval.js +2 -2
  44. package/dist/causal-trajectory-graph.js +3 -3
  45. package/dist/causal-trajectory.js +1 -1
  46. package/dist/{chunk-J6B6FK2X.js → chunk-2BY56HE6.js} +43 -43
  47. package/dist/{chunk-ME5LVISI.js → chunk-2J6BIOVN.js} +2 -2
  48. package/dist/{chunk-EIYJK7OD.js → chunk-2M36PR7R.js} +2 -2
  49. package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
  50. package/dist/{chunk-WOPZ2P5Z.js → chunk-3INLTKTW.js} +2 -2
  51. package/dist/{chunk-6P6MZDBL.js → chunk-3NL4ALUP.js} +2 -2
  52. package/dist/{chunk-YUE7J2HZ.js → chunk-3NYIXVCT.js} +2 -2
  53. package/dist/{chunk-B44NFHWI.js → chunk-3PVKV3XL.js} +2 -2
  54. package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
  55. package/dist/{chunk-5KGYR5VN.js → chunk-5DVOBBTV.js} +2 -2
  56. package/dist/{chunk-WCGJK4NQ.js → chunk-5FNZ3G6X.js} +10 -10
  57. package/dist/{chunk-IJH6METJ.js → chunk-5IDQVE4U.js} +5 -5
  58. package/dist/{chunk-OXSTKCYK.js → chunk-6AEKSOWV.js} +33 -5
  59. package/dist/chunk-6AEKSOWV.js.map +1 -0
  60. package/dist/{chunk-2DPJFJFH.js → chunk-6TIVVOVU.js} +10 -10
  61. package/dist/{chunk-L46MG2GE.js → chunk-6W3QH3QW.js} +17 -14
  62. package/dist/chunk-6W3QH3QW.js.map +1 -0
  63. package/dist/{chunk-BUKK5SWA.js → chunk-7LCGFUMB.js} +4 -4
  64. package/dist/chunk-7VLBZKNB.js +26 -0
  65. package/dist/chunk-7VLBZKNB.js.map +1 -0
  66. package/dist/{chunk-CHSRA76M.js → chunk-7XFQSQYS.js} +2 -2
  67. package/dist/{chunk-A45QXZMU.js → chunk-A3WXV7YU.js} +2 -2
  68. package/dist/{chunk-LXN737FX.js → chunk-AAANTXCQ.js} +2 -2
  69. package/dist/{chunk-JNLYHJG7.js → chunk-AF4UIHON.js} +9 -9
  70. package/dist/{chunk-JGMJZBFV.js → chunk-AGCEJDG2.js} +2 -2
  71. package/dist/{chunk-I3IPXGFQ.js → chunk-AJJPXUE6.js} +4 -4
  72. package/dist/{chunk-KAUCVTAW.js → chunk-BJTFLP3J.js} +2 -2
  73. package/dist/{chunk-QR6W3FSW.js → chunk-BMG3SAXA.js} +3 -3
  74. package/dist/{chunk-QE2XQM3S.js → chunk-BWF3KNSQ.js} +2 -2
  75. package/dist/{chunk-BCDECPVO.js → chunk-C3HRYVGD.js} +2 -2
  76. package/dist/{chunk-RQLTCHUL.js → chunk-C7WDWD35.js} +10 -10
  77. package/dist/{chunk-YL564QS2.js → chunk-CMOYD5CA.js} +3 -3
  78. package/dist/{chunk-4J7BNL7B.js → chunk-CPBYKOTC.js} +2 -2
  79. package/dist/{chunk-PPDNG7WC.js → chunk-CRJX4OMN.js} +2 -2
  80. package/dist/{chunk-YFJHFEET.js → chunk-D76AHITY.js} +2 -2
  81. package/dist/{chunk-ZX5N5D6M.js → chunk-DAOMWGO2.js} +4 -4
  82. package/dist/{chunk-2RQR4TXV.js → chunk-DM6SOROF.js} +2 -2
  83. package/dist/{chunk-VWJ56T63.js → chunk-E3DL3CAL.js} +2 -2
  84. package/dist/{chunk-M7LA4QBY.js → chunk-E47UQBYW.js} +3 -3
  85. package/dist/{chunk-23ZMQONL.js → chunk-ERMT5WQM.js} +2 -2
  86. package/dist/{chunk-FAKRTS3Y.js → chunk-ESDOQEJM.js} +2 -2
  87. package/dist/{chunk-VTCNVGM6.js → chunk-FOKTW6GY.js} +2 -2
  88. package/dist/{chunk-TF5NZGPS.js → chunk-FYZXZUGU.js} +2 -2
  89. package/dist/{chunk-XTN54NML.js → chunk-G3T6YMBO.js} +4 -4
  90. package/dist/{chunk-2JNBPOZ2.js → chunk-GDYLZ6FR.js} +3 -3
  91. package/dist/{chunk-DZPTR2XQ.js → chunk-GFAEKSFR.js} +2 -2
  92. package/dist/{chunk-GLZWOIU3.js → chunk-HCPVL6SF.js} +3 -3
  93. package/dist/{chunk-NDMPRT3Z.js → chunk-HDT3DMUF.js} +2 -2
  94. package/dist/{chunk-BWRX322G.js → chunk-HI53EK3Y.js} +2 -2
  95. package/dist/{chunk-BFPF5N3H.js → chunk-HXFIILGF.js} +4 -4
  96. package/dist/chunk-JNA7LFMQ.js +41 -0
  97. package/dist/chunk-JNA7LFMQ.js.map +1 -0
  98. package/dist/{chunk-2V664H6O.js → chunk-JS44PBCM.js} +5 -5
  99. package/dist/{chunk-XKTHJHSQ.js → chunk-JZCBMKR5.js} +3 -3
  100. package/dist/{chunk-KRACAE73.js → chunk-KMTMMBEB.js} +6 -6
  101. package/dist/{chunk-FJ264QBP.js → chunk-KNCR7APE.js} +5 -5
  102. package/dist/{chunk-WUBGMV3G.js → chunk-KRAMCBIW.js} +9 -9
  103. package/dist/{chunk-DRXTMDAG.js → chunk-LCHFINL4.js} +2 -2
  104. package/dist/{chunk-PJBYVJKO.js → chunk-LXXIV7Y2.js} +2 -2
  105. package/dist/{chunk-6CC2YCKG.js → chunk-MCS4LIXP.js} +2 -2
  106. package/dist/{chunk-2NX7JTST.js → chunk-MPWOAIIH.js} +2 -2
  107. package/dist/{chunk-CMNL3QSL.js → chunk-N5PISU26.js} +2 -2
  108. package/dist/{chunk-PKPOO6X5.js → chunk-N6EM7ESC.js} +16 -16
  109. package/dist/{chunk-FWV2SXSL.js → chunk-NH37SP6V.js} +64 -64
  110. package/dist/{chunk-MZCTS3ZG.js → chunk-NMOEOQV4.js} +2 -2
  111. package/dist/{chunk-VECRSYQG.js → chunk-NRGQ5HJO.js} +1 -1
  112. package/dist/{chunk-3DKKZVXS.js → chunk-NUK5XU3P.js} +5 -5
  113. package/dist/{chunk-YBKQAVPZ.js → chunk-O4CA53UY.js} +77 -63
  114. package/dist/chunk-O4CA53UY.js.map +1 -0
  115. package/dist/{chunk-FPANDKMQ.js → chunk-O7GNSHFF.js} +2 -2
  116. package/dist/{chunk-5R2IF2KI.js → chunk-OD7ZXCUF.js} +4 -4
  117. package/dist/{chunk-RT2GN6KQ.js → chunk-PBWJVRKE.js} +2 -2
  118. package/dist/{chunk-EX27VKU6.js → chunk-PDTNQLPC.js} +2 -2
  119. package/dist/{chunk-LJCHDFLP.js → chunk-Q6PYCPHO.js} +2 -2
  120. package/dist/{chunk-XTVH2NAW.js → chunk-QFTNWDJ6.js} +3 -3
  121. package/dist/{chunk-6CWAY4R7.js → chunk-QZK6HG4J.js} +2 -2
  122. package/dist/{chunk-Q6UZREJK.js → chunk-RKRX4C4H.js} +2 -2
  123. package/dist/{chunk-UXAF4RQM.js → chunk-RZDDNH63.js} +2 -2
  124. package/dist/{chunk-CCTLRRV6.js → chunk-SA6P2KS3.js} +24 -19
  125. package/dist/chunk-SA6P2KS3.js.map +1 -0
  126. package/dist/{chunk-QFQ4UG3I.js → chunk-SVJ5JVZO.js} +4 -4
  127. package/dist/{chunk-CTHYR4QK.js → chunk-SW3WHVKN.js} +2 -2
  128. package/dist/{chunk-Y57GJDG5.js → chunk-SWRRZNHM.js} +14 -17
  129. package/dist/chunk-SWRRZNHM.js.map +1 -0
  130. package/dist/{chunk-B4XSXFKI.js → chunk-V4GPFCJ7.js} +2 -2
  131. package/dist/{chunk-7AIPWNM7.js → chunk-VCBS5GRQ.js} +2 -2
  132. package/dist/{chunk-LU57EEJW.js → chunk-VGRBKEBH.js} +3 -3
  133. package/dist/{chunk-M7L5A2AT.js → chunk-VKUMKVEU.js} +3 -3
  134. package/dist/{chunk-3EGL7XZO.js → chunk-WIBWONL4.js} +2 -2
  135. package/dist/{chunk-BGK3SFCC.js → chunk-WJCAAVZX.js} +2 -2
  136. package/dist/{chunk-BMOJFGVX.js → chunk-WQFHHJWK.js} +2 -2
  137. package/dist/{chunk-6HVLHIAB.js → chunk-X52SXKVC.js} +2 -2
  138. package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
  139. package/dist/{chunk-XM747YJF.js → chunk-XFND63OB.js} +2 -2
  140. package/dist/{chunk-RUAIO5UA.js → chunk-XSJL62LE.js} +2 -2
  141. package/dist/{chunk-3SL52JKD.js → chunk-XVZA6VXC.js} +4 -4
  142. package/dist/{chunk-MXPVNDGO.js → chunk-YB3WN6XA.js} +8 -8
  143. package/dist/{chunk-JCYEDMOY.js → chunk-YY6PWFUC.js} +2 -2
  144. package/dist/{chunk-6Q56WDHG.js → chunk-ZLCBLDJO.js} +2 -2
  145. package/dist/cli.js +104 -102
  146. package/dist/coding/export-okf-codegraph.js +12 -11
  147. package/dist/coding/export-okf-codegraph.js.map +1 -1
  148. package/dist/coding/pre-action-gate.js +2 -2
  149. package/dist/compounding/engine.js +14 -13
  150. package/dist/config.js +23 -21
  151. package/dist/connectors/codex-materialize-runner.js +13 -12
  152. package/dist/connectors/index.js +13 -12
  153. package/dist/convergence-refresh.js +15 -14
  154. package/dist/corpus-watermark.js +15 -14
  155. package/dist/deep-recall-http-glue.js +11 -10
  156. package/dist/deep-recall.js +2 -2
  157. package/dist/embedding-fallback.js +3 -2
  158. package/dist/embedding-generation-marker.d.ts +16 -0
  159. package/dist/embedding-generation-marker.d.ts.map +1 -0
  160. package/dist/embedding-generation-marker.js +19 -0
  161. package/dist/embedding-generation-marker.js.map +1 -0
  162. package/dist/embedding-index-storage.d.ts +2 -4
  163. package/dist/embedding-index-storage.d.ts.map +1 -1
  164. package/dist/embedding-index-storage.js +2 -1
  165. package/dist/entity-retrieval.js +14 -13
  166. package/dist/event-order-recall.js +2 -2
  167. package/dist/explicit-capture.js +1 -1
  168. package/dist/external-wiki-access.js +64 -62
  169. package/dist/extraction-span-materialize.js +2 -2
  170. package/dist/extraction.js +23 -22
  171. package/dist/{first-start-migration-A6PHIBUQ.js → first-start-migration-QVD22WWS.js} +4 -4
  172. package/dist/{graph-edge-decay-3HVLMT6U.js → graph-edge-decay-IU75NV42.js} +6 -6
  173. package/dist/graph-edge-decay-IU75NV42.js.map +1 -0
  174. package/dist/graph-jsonl.js +4 -4
  175. package/dist/graph-snapshot.js +4 -4
  176. package/dist/graph.js +5 -5
  177. package/dist/harmonic-retrieval.js +13 -12
  178. package/dist/index.d.ts +1 -1
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +192 -188
  181. package/dist/lcm/engine.js +4 -4
  182. package/dist/lcm/index.js +9 -9
  183. package/dist/local-llm.js +3 -3
  184. package/dist/location/index.js +15 -14
  185. package/dist/maintenance/memory-governance.js +13 -12
  186. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -12
  187. package/dist/maintenance/rebuild-memory-projection-runner.js +15 -14
  188. package/dist/maintenance/rebuild-memory-projection.js +14 -13
  189. package/dist/memory-browse-operations.js +64 -62
  190. package/dist/memory-browse.js +5 -5
  191. package/dist/namespaces/migrate.js +14 -13
  192. package/dist/namespaces/search.js +6 -6
  193. package/dist/namespaces/storage.js +13 -12
  194. package/dist/offline-sync-changeset-generations.js +5 -4
  195. package/dist/offline-sync-embedding-generation.d.ts +12 -2
  196. package/dist/offline-sync-embedding-generation.d.ts.map +1 -1
  197. package/dist/offline-sync-embedding-generation.js +6 -3
  198. package/dist/offline-sync-snapshot-stream.js +8 -7
  199. package/dist/offline-sync.d.ts.map +1 -1
  200. package/dist/offline-sync.js +9 -8
  201. package/dist/operator-doctor-corpus.js +16 -15
  202. package/dist/operator-toolkit.js +35 -33
  203. package/dist/orchestration/maintenance.js +26 -25
  204. package/dist/orchestrator.js +146 -144
  205. package/dist/qmd.js +2 -2
  206. package/dist/recall-navigation-operations.js +64 -62
  207. package/dist/recall-navigation.js +63 -61
  208. package/dist/recall-state-view-admission.js +5 -5
  209. package/dist/recall-why-service.js +5 -5
  210. package/dist/resume-bundles.js +24 -22
  211. package/dist/search/factory.js +5 -5
  212. package/dist/search/index.js +9 -9
  213. package/dist/semantic-consolidation.js +14 -13
  214. package/dist/semantic-rule-promotion.js +13 -12
  215. package/dist/semantic-rule-verifier.js +13 -12
  216. package/dist/source-agent-qualifier.js +16 -15
  217. package/dist/standup/build.js +13 -12
  218. package/dist/storage.d.ts.map +1 -1
  219. package/dist/storage.js +12 -11
  220. package/dist/summarizer.js +4 -4
  221. package/dist/support-passport/index.js +66 -64
  222. package/dist/transfer/backup.js +2 -2
  223. package/dist/transfer/capsule-export.js +2 -2
  224. package/dist/transfer/capsule-import.js +2 -2
  225. package/dist/transfer/export-okf.js +13 -12
  226. package/dist/verified-recall.js +13 -12
  227. package/dist/who-knows-cli.js +14 -13
  228. package/dist/who-knows.js +13 -12
  229. package/package.json +2 -2
  230. package/src/access-service-peer-capture-backoff.test.ts +236 -0
  231. package/src/access-service.ts +6 -2
  232. package/src/capture-write-lock-scope.test.ts +32 -0
  233. package/src/capture-write-lock-scope.ts +30 -0
  234. package/src/embedding-generation-marker.ts +51 -0
  235. package/src/embedding-index-storage.ts +13 -29
  236. package/src/index.ts +1 -1
  237. package/src/offline-sync-embedding-delete-digest.test.ts +58 -0
  238. package/src/offline-sync-embedding-generation-marker.test.ts +245 -0
  239. package/src/offline-sync-embedding-generation.ts +47 -2
  240. package/src/offline-sync-embedding-lock-loss.test.ts +42 -0
  241. package/src/offline-sync.ts +4 -1
  242. package/src/storage.ts +2 -1
  243. package/dist/chunk-CCTLRRV6.js.map +0 -1
  244. package/dist/chunk-L46MG2GE.js.map +0 -1
  245. package/dist/chunk-OXSTKCYK.js.map +0 -1
  246. package/dist/chunk-Y57GJDG5.js.map +0 -1
  247. package/dist/chunk-YBKQAVPZ.js.map +0 -1
  248. /package/dist/{capsule-crypto-GWVG7LGC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  249. /package/dist/{graph-edge-decay-3HVLMT6U.js.map → capture-write-lock-scope.js.map} +0 -0
  250. /package/dist/{chunk-J6B6FK2X.js.map → chunk-2BY56HE6.js.map} +0 -0
  251. /package/dist/{chunk-ME5LVISI.js.map → chunk-2J6BIOVN.js.map} +0 -0
  252. /package/dist/{chunk-EIYJK7OD.js.map → chunk-2M36PR7R.js.map} +0 -0
  253. /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
  254. /package/dist/{chunk-WOPZ2P5Z.js.map → chunk-3INLTKTW.js.map} +0 -0
  255. /package/dist/{chunk-6P6MZDBL.js.map → chunk-3NL4ALUP.js.map} +0 -0
  256. /package/dist/{chunk-YUE7J2HZ.js.map → chunk-3NYIXVCT.js.map} +0 -0
  257. /package/dist/{chunk-B44NFHWI.js.map → chunk-3PVKV3XL.js.map} +0 -0
  258. /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
  259. /package/dist/{chunk-5KGYR5VN.js.map → chunk-5DVOBBTV.js.map} +0 -0
  260. /package/dist/{chunk-WCGJK4NQ.js.map → chunk-5FNZ3G6X.js.map} +0 -0
  261. /package/dist/{chunk-IJH6METJ.js.map → chunk-5IDQVE4U.js.map} +0 -0
  262. /package/dist/{chunk-2DPJFJFH.js.map → chunk-6TIVVOVU.js.map} +0 -0
  263. /package/dist/{chunk-BUKK5SWA.js.map → chunk-7LCGFUMB.js.map} +0 -0
  264. /package/dist/{chunk-CHSRA76M.js.map → chunk-7XFQSQYS.js.map} +0 -0
  265. /package/dist/{chunk-A45QXZMU.js.map → chunk-A3WXV7YU.js.map} +0 -0
  266. /package/dist/{chunk-LXN737FX.js.map → chunk-AAANTXCQ.js.map} +0 -0
  267. /package/dist/{chunk-JNLYHJG7.js.map → chunk-AF4UIHON.js.map} +0 -0
  268. /package/dist/{chunk-JGMJZBFV.js.map → chunk-AGCEJDG2.js.map} +0 -0
  269. /package/dist/{chunk-I3IPXGFQ.js.map → chunk-AJJPXUE6.js.map} +0 -0
  270. /package/dist/{chunk-KAUCVTAW.js.map → chunk-BJTFLP3J.js.map} +0 -0
  271. /package/dist/{chunk-QR6W3FSW.js.map → chunk-BMG3SAXA.js.map} +0 -0
  272. /package/dist/{chunk-QE2XQM3S.js.map → chunk-BWF3KNSQ.js.map} +0 -0
  273. /package/dist/{chunk-BCDECPVO.js.map → chunk-C3HRYVGD.js.map} +0 -0
  274. /package/dist/{chunk-RQLTCHUL.js.map → chunk-C7WDWD35.js.map} +0 -0
  275. /package/dist/{chunk-YL564QS2.js.map → chunk-CMOYD5CA.js.map} +0 -0
  276. /package/dist/{chunk-4J7BNL7B.js.map → chunk-CPBYKOTC.js.map} +0 -0
  277. /package/dist/{chunk-PPDNG7WC.js.map → chunk-CRJX4OMN.js.map} +0 -0
  278. /package/dist/{chunk-YFJHFEET.js.map → chunk-D76AHITY.js.map} +0 -0
  279. /package/dist/{chunk-ZX5N5D6M.js.map → chunk-DAOMWGO2.js.map} +0 -0
  280. /package/dist/{chunk-2RQR4TXV.js.map → chunk-DM6SOROF.js.map} +0 -0
  281. /package/dist/{chunk-VWJ56T63.js.map → chunk-E3DL3CAL.js.map} +0 -0
  282. /package/dist/{chunk-M7LA4QBY.js.map → chunk-E47UQBYW.js.map} +0 -0
  283. /package/dist/{chunk-23ZMQONL.js.map → chunk-ERMT5WQM.js.map} +0 -0
  284. /package/dist/{chunk-FAKRTS3Y.js.map → chunk-ESDOQEJM.js.map} +0 -0
  285. /package/dist/{chunk-VTCNVGM6.js.map → chunk-FOKTW6GY.js.map} +0 -0
  286. /package/dist/{chunk-TF5NZGPS.js.map → chunk-FYZXZUGU.js.map} +0 -0
  287. /package/dist/{chunk-XTN54NML.js.map → chunk-G3T6YMBO.js.map} +0 -0
  288. /package/dist/{chunk-2JNBPOZ2.js.map → chunk-GDYLZ6FR.js.map} +0 -0
  289. /package/dist/{chunk-DZPTR2XQ.js.map → chunk-GFAEKSFR.js.map} +0 -0
  290. /package/dist/{chunk-GLZWOIU3.js.map → chunk-HCPVL6SF.js.map} +0 -0
  291. /package/dist/{chunk-NDMPRT3Z.js.map → chunk-HDT3DMUF.js.map} +0 -0
  292. /package/dist/{chunk-BWRX322G.js.map → chunk-HI53EK3Y.js.map} +0 -0
  293. /package/dist/{chunk-BFPF5N3H.js.map → chunk-HXFIILGF.js.map} +0 -0
  294. /package/dist/{chunk-2V664H6O.js.map → chunk-JS44PBCM.js.map} +0 -0
  295. /package/dist/{chunk-XKTHJHSQ.js.map → chunk-JZCBMKR5.js.map} +0 -0
  296. /package/dist/{chunk-KRACAE73.js.map → chunk-KMTMMBEB.js.map} +0 -0
  297. /package/dist/{chunk-FJ264QBP.js.map → chunk-KNCR7APE.js.map} +0 -0
  298. /package/dist/{chunk-WUBGMV3G.js.map → chunk-KRAMCBIW.js.map} +0 -0
  299. /package/dist/{chunk-DRXTMDAG.js.map → chunk-LCHFINL4.js.map} +0 -0
  300. /package/dist/{chunk-PJBYVJKO.js.map → chunk-LXXIV7Y2.js.map} +0 -0
  301. /package/dist/{chunk-6CC2YCKG.js.map → chunk-MCS4LIXP.js.map} +0 -0
  302. /package/dist/{chunk-2NX7JTST.js.map → chunk-MPWOAIIH.js.map} +0 -0
  303. /package/dist/{chunk-CMNL3QSL.js.map → chunk-N5PISU26.js.map} +0 -0
  304. /package/dist/{chunk-PKPOO6X5.js.map → chunk-N6EM7ESC.js.map} +0 -0
  305. /package/dist/{chunk-FWV2SXSL.js.map → chunk-NH37SP6V.js.map} +0 -0
  306. /package/dist/{chunk-MZCTS3ZG.js.map → chunk-NMOEOQV4.js.map} +0 -0
  307. /package/dist/{chunk-VECRSYQG.js.map → chunk-NRGQ5HJO.js.map} +0 -0
  308. /package/dist/{chunk-3DKKZVXS.js.map → chunk-NUK5XU3P.js.map} +0 -0
  309. /package/dist/{chunk-FPANDKMQ.js.map → chunk-O7GNSHFF.js.map} +0 -0
  310. /package/dist/{chunk-5R2IF2KI.js.map → chunk-OD7ZXCUF.js.map} +0 -0
  311. /package/dist/{chunk-RT2GN6KQ.js.map → chunk-PBWJVRKE.js.map} +0 -0
  312. /package/dist/{chunk-EX27VKU6.js.map → chunk-PDTNQLPC.js.map} +0 -0
  313. /package/dist/{chunk-LJCHDFLP.js.map → chunk-Q6PYCPHO.js.map} +0 -0
  314. /package/dist/{chunk-XTVH2NAW.js.map → chunk-QFTNWDJ6.js.map} +0 -0
  315. /package/dist/{chunk-6CWAY4R7.js.map → chunk-QZK6HG4J.js.map} +0 -0
  316. /package/dist/{chunk-Q6UZREJK.js.map → chunk-RKRX4C4H.js.map} +0 -0
  317. /package/dist/{chunk-UXAF4RQM.js.map → chunk-RZDDNH63.js.map} +0 -0
  318. /package/dist/{chunk-QFQ4UG3I.js.map → chunk-SVJ5JVZO.js.map} +0 -0
  319. /package/dist/{chunk-CTHYR4QK.js.map → chunk-SW3WHVKN.js.map} +0 -0
  320. /package/dist/{chunk-B4XSXFKI.js.map → chunk-V4GPFCJ7.js.map} +0 -0
  321. /package/dist/{chunk-7AIPWNM7.js.map → chunk-VCBS5GRQ.js.map} +0 -0
  322. /package/dist/{chunk-LU57EEJW.js.map → chunk-VGRBKEBH.js.map} +0 -0
  323. /package/dist/{chunk-M7L5A2AT.js.map → chunk-VKUMKVEU.js.map} +0 -0
  324. /package/dist/{chunk-3EGL7XZO.js.map → chunk-WIBWONL4.js.map} +0 -0
  325. /package/dist/{chunk-BGK3SFCC.js.map → chunk-WJCAAVZX.js.map} +0 -0
  326. /package/dist/{chunk-BMOJFGVX.js.map → chunk-WQFHHJWK.js.map} +0 -0
  327. /package/dist/{chunk-6HVLHIAB.js.map → chunk-X52SXKVC.js.map} +0 -0
  328. /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
  329. /package/dist/{chunk-XM747YJF.js.map → chunk-XFND63OB.js.map} +0 -0
  330. /package/dist/{chunk-RUAIO5UA.js.map → chunk-XSJL62LE.js.map} +0 -0
  331. /package/dist/{chunk-3SL52JKD.js.map → chunk-XVZA6VXC.js.map} +0 -0
  332. /package/dist/{chunk-MXPVNDGO.js.map → chunk-YB3WN6XA.js.map} +0 -0
  333. /package/dist/{chunk-JCYEDMOY.js.map → chunk-YY6PWFUC.js.map} +0 -0
  334. /package/dist/{chunk-6Q56WDHG.js.map → chunk-ZLCBLDJO.js.map} +0 -0
  335. /package/dist/{first-start-migration-A6PHIBUQ.js.map → first-start-migration-QVD22WWS.js.map} +0 -0
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  readChainIndex,
3
3
  resolveChainsDir
4
- } from "./chunk-Q6UZREJK.js";
4
+ } from "./chunk-RKRX4C4H.js";
5
5
  import "./chunk-B7RWBZXW.js";
6
6
  import {
7
7
  resolveCausalTrajectoryStoreDir
8
- } from "./chunk-VECRSYQG.js";
8
+ } from "./chunk-NRGQ5HJO.js";
9
9
  import {
10
10
  normalizeRecallTokens
11
11
  } from "./chunk-YCVB7X56.js";
@@ -6,9 +6,9 @@ import {
6
6
  stitchCausalChain,
7
7
  validateCausalEdge,
8
8
  writeChainIndex
9
- } from "./chunk-Q6UZREJK.js";
9
+ } from "./chunk-RKRX4C4H.js";
10
10
  import "./chunk-B7RWBZXW.js";
11
- import "./chunk-VECRSYQG.js";
11
+ import "./chunk-NRGQ5HJO.js";
12
12
  import "./chunk-YCVB7X56.js";
13
13
  import "./chunk-A2IYSXDQ.js";
14
14
  import "./chunk-2Z5DIDQD.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  readChainIndex,
3
3
  resolveChainsDir
4
- } from "./chunk-Q6UZREJK.js";
4
+ } from "./chunk-RKRX4C4H.js";
5
5
  import {
6
6
  buildExtensionsBlockForConsolidation
7
- } from "./chunk-6HVLHIAB.js";
7
+ } from "./chunk-X52SXKVC.js";
8
8
  import "./chunk-5JMAGU26.js";
9
9
  import "./chunk-B7RWBZXW.js";
10
10
  import {
11
11
  runPostConsolidationMaterialize
12
- } from "./chunk-PPDNG7WC.js";
12
+ } from "./chunk-CRJX4OMN.js";
13
13
  import "./chunk-3UXOZBHV.js";
14
14
  import "./chunk-AL3TCNSJ.js";
15
15
  import "./chunk-TOTT6S2V.js";
@@ -18,21 +18,21 @@ import "./chunk-ZCUTSMR2.js";
18
18
  import "./chunk-QDW3E4RD.js";
19
19
  import {
20
20
  resolveCausalTrajectoryStoreDir
21
- } from "./chunk-VECRSYQG.js";
22
- import "./chunk-L46MG2GE.js";
21
+ } from "./chunk-NRGQ5HJO.js";
22
+ import "./chunk-6W3QH3QW.js";
23
23
  import "./chunk-UHVXE24Y.js";
24
24
  import "./chunk-DM5QZ3YU.js";
25
25
  import "./chunk-VY6BD5KB.js";
26
26
  import "./chunk-G6OFEGUR.js";
27
- import "./chunk-PJBYVJKO.js";
28
- import "./chunk-2V664H6O.js";
27
+ import "./chunk-LXXIV7Y2.js";
28
+ import "./chunk-JS44PBCM.js";
29
+ import "./chunk-5CWH2LKL.js";
29
30
  import "./chunk-XKDQTDXN.js";
30
31
  import "./chunk-CYEPCZN5.js";
31
32
  import "./chunk-XRFLR3XF.js";
32
33
  import "./chunk-7VO6E5UD.js";
33
- import "./chunk-EXYT52NR.js";
34
- import "./chunk-5CWH2LKL.js";
35
34
  import "./chunk-WNEVEMJ3.js";
35
+ import "./chunk-EXYT52NR.js";
36
36
  import "./chunk-Y5NLBXPV.js";
37
37
  import "./chunk-TFA6HPOA.js";
38
38
  import "./chunk-F4TWWUMP.js";
@@ -43,17 +43,17 @@ import "./chunk-PPUNC7UX.js";
43
43
  import "./chunk-X3724WL4.js";
44
44
  import "./chunk-MRPOZBJC.js";
45
45
  import "./chunk-S2HLHAZ4.js";
46
- import "./chunk-LDXUBPMO.js";
47
46
  import "./chunk-DM2T26WE.js";
47
+ import "./chunk-LDXUBPMO.js";
48
48
  import "./chunk-FF6N7BXC.js";
49
49
  import "./chunk-WXPBDEMW.js";
50
50
  import "./chunk-AAD2ZS6P.js";
51
51
  import "./chunk-MPJDQC4G.js";
52
52
  import "./chunk-ZIKENA2C.js";
53
- import "./chunk-3ONXXHQO.js";
54
- import "./chunk-YXZG5TVN.js";
55
53
  import "./chunk-3OUGSOJP.js";
56
54
  import "./chunk-SCU65EZI.js";
55
+ import "./chunk-3ONXXHQO.js";
56
+ import "./chunk-YXZG5TVN.js";
57
57
  import "./chunk-P4GUQSK3.js";
58
58
  import "./chunk-3WU7XOFN.js";
59
59
  import "./chunk-G7D6GZ5J.js";
@@ -64,12 +64,13 @@ import "./chunk-LWRIGKFM.js";
64
64
  import "./chunk-5WITETWU.js";
65
65
  import "./chunk-6CIAGZ6X.js";
66
66
  import "./chunk-7CT3AI52.js";
67
- import "./chunk-I3IPXGFQ.js";
67
+ import "./chunk-UUZ7KZAO.js";
68
+ import "./chunk-AJJPXUE6.js";
68
69
  import "./chunk-G26YNEOC.js";
70
+ import "./chunk-VILPVT4S.js";
69
71
  import "./chunk-AF2XMJKD.js";
70
72
  import "./chunk-OR42ZI54.js";
71
73
  import "./chunk-IUM3VSHI.js";
72
- import "./chunk-VILPVT4S.js";
73
74
  import "./chunk-23G5P7TA.js";
74
75
  import "./chunk-C64XATK7.js";
75
76
  import "./chunk-42JKGUFJ.js";
@@ -83,7 +84,7 @@ import {
83
84
  fallbackLlmRuntimeContextFromConfig
84
85
  } from "./chunk-YIJECSIX.js";
85
86
  import "./chunk-E2AWJ7KQ.js";
86
- import "./chunk-UUZ7KZAO.js";
87
+ import "./chunk-7VLBZKNB.js";
87
88
  import "./chunk-HADD45AR.js";
88
89
  import "./chunk-RNFMFC37.js";
89
90
  import "./chunk-YCVB7X56.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/causal-consolidation.ts"],"sourcesContent":["/**\n * causal-consolidation.ts — CMC Phase 2: LLM-Assisted Causal Consolidation\n *\n * Uses an LLM to analyze causal trajectory patterns across sessions.\n * The LLM receives the causal chain graph as context — connected trajectories\n * from different sessions — and identifies recurring behavioral patterns,\n * preference signals, and actionable rules.\n *\n * This is the core CMC innovation: the LLM gets cross-session causal context\n * that no other memory system provides. It can see that a user investigated\n * a bug in session 1, attempted a fix in session 2, and succeeded in session 3 —\n * and synthesize a rule or preference from that chain.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { resolveCausalTrajectoryStoreDir, type CausalTrajectoryRecord } from \"./causal-trajectory.js\";\nimport { readChainIndex, resolveChainsDir, type CausalChainIndex, type CausalEdge } from \"./causal-chain.js\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport { isRecord } from \"./store-contract.js\";\nimport { FallbackLlmClient, fallbackLlmRuntimeContextFromConfig } from \"./fallback-llm.js\";\nimport type { AgentPersonaModelConfig, GatewayConfig, MemoryFile, PluginConfig } from \"./types.js\";\nimport path from \"node:path\";\nimport { log } from \"./logger.js\";\nimport { runPostConsolidationMaterialize } from \"./connectors/codex-materialize-runner.js\";\nimport type { MaterializeResult, RolloutSummaryInput } from \"./connectors/codex-materialize.js\";\nimport { buildExtensionsBlockForConsolidation } from \"./semantic-consolidation.js\";\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface CausalPatternCandidate {\n id: string;\n sourceType: \"causal-pattern\";\n subject: string;\n category: \"principle\" | \"rule\" | \"preference\";\n content: string;\n score: number;\n rationale: string;\n outcome: null;\n provenance: string[];\n agent: string | null;\n workflow: string | null;\n}\n\nexport interface ConsolidationConfig {\n minRecurrence: number;\n minSessions: number;\n successThreshold: number;\n}\n\nexport interface LlmConsolidationResult {\n rules: Array<{\n content: string;\n category: \"rule\" | \"principle\" | \"preference\";\n confidence: number;\n evidence: string[];\n }>;\n preferences: Array<{\n statement: string;\n confidence: number;\n evidence: string[];\n }>;\n}\n\nconst CAUSAL_RULE_CATEGORIES = new Set([\"rule\", \"principle\", \"preference\"]);\n\ninterface ConsolidationLlmClient {\n isAvailable(options?: { agentId?: string; modelChain?: AgentPersonaModelConfig }): boolean;\n chatCompletion(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options?: { temperature?: number; maxTokens?: number; agentId?: string; modelChain?: AgentPersonaModelConfig },\n ): Promise<{ content: string } | null>;\n}\n\n// ─── Trajectory Reading ──────────────────────────────────────────────────────\n\nasync function readAllTrajectories(\n memoryDir: string,\n causalTrajectoryStoreDir?: string,\n): Promise<CausalTrajectoryRecord[]> {\n const root = resolveCausalTrajectoryStoreDir(memoryDir, causalTrajectoryStoreDir);\n const trajectoriesDir = path.join(root, \"trajectories\");\n\n const files = await listJsonFiles(trajectoriesDir).catch(() => [] as string[]);\n const results: CausalTrajectoryRecord[] = [];\n\n for (const filePath of files) {\n try {\n const raw = await readJsonFile(filePath);\n if (isRecord(raw) && typeof raw.trajectoryId === \"string\") {\n results.push(raw as unknown as CausalTrajectoryRecord);\n }\n } catch {\n // skip invalid\n }\n }\n\n return results;\n}\n\n// ─── Context Formatting ──────────────────────────────────────────────────────\n\n/**\n * Format trajectories and their causal connections as a readable context\n * for the LLM. Groups by session and shows chain connections.\n */\nfunction formatCausalContext(\n trajectories: CausalTrajectoryRecord[],\n chainIndex: CausalChainIndex,\n maxChars: number = 8000,\n): string {\n // Group trajectories by session\n const bySession = new Map<string, CausalTrajectoryRecord[]>();\n for (const t of trajectories) {\n const list = bySession.get(t.sessionKey) ?? [];\n list.push(t);\n bySession.set(t.sessionKey, list);\n }\n\n const lines: string[] = [];\n lines.push(`## Causal Trajectories (${trajectories.length} across ${bySession.size} sessions)`);\n lines.push(\"\");\n\n // Format each session's trajectories\n for (const [sessionKey, sessionTrajs] of bySession) {\n lines.push(`### Session: ${sessionKey}`);\n for (const t of sessionTrajs.slice(0, 5)) {\n const outcome = t.outcomeKind === \"success\" ? \"+\" : t.outcomeKind === \"failure\" ? \"-\" : \"~\";\n lines.push(`[${outcome}] Goal: ${t.goal}`);\n lines.push(` Action: ${t.actionSummary}`);\n lines.push(` Outcome: ${t.outcomeSummary}`);\n if (t.followUpSummary) lines.push(` Follow-up: ${t.followUpSummary}`);\n if (t.entityRefs?.length) lines.push(` Entities: ${t.entityRefs.join(\", \")}`);\n }\n lines.push(\"\");\n }\n\n // Format causal chain connections\n const edgeCount = Object.keys(chainIndex.edges).length;\n if (edgeCount > 0) {\n lines.push(`## Cross-Session Causal Chains (${edgeCount} connections)`);\n lines.push(\"\");\n\n const trajectoryMap = new Map(trajectories.map((t) => [t.trajectoryId, t]));\n const shown = new Set<string>();\n\n for (const [edgeId, edge] of Object.entries(chainIndex.edges)) {\n if (shown.size >= 10) break; // limit output size\n const from = trajectoryMap.get(edge.fromTrajectoryId);\n const to = trajectoryMap.get(edge.toTrajectoryId);\n if (!from || !to) continue;\n\n lines.push(`${edge.edgeType}: \"${from.goal}\" (${from.sessionKey}) → \"${to.goal}\" (${to.sessionKey})`);\n shown.add(edgeId);\n }\n lines.push(\"\");\n }\n\n const result = lines.join(\"\\n\");\n return result.length > maxChars ? result.slice(0, maxChars) + \"\\n[truncated]\" : result;\n}\n\n// ─── LLM Consolidation ──────────────────────────────────────────────────────\n\nconst CONSOLIDATION_PROMPT = `You are analyzing a user's causal trajectory history across multiple sessions. Trajectories record what the user tried to do (goal), what they did (action), and what happened (outcome).\n\nYour job is to identify:\n1. BEHAVIORAL RULES: Recurring patterns where the same approach consistently succeeds or fails. These should be actionable guidance for future sessions.\n2. PREFERENCES: What the user cares about, prefers, or consistently chooses — even if never explicitly stated. Infer preferences from what they repeatedly do, retry until successful, or always include in their workflow.\n\nIMPORTANT:\n- Look for CROSS-SESSION patterns — things that repeat across different sessions are more significant than within-session patterns.\n- A user who retries the same goal across sessions has a strong implicit preference for that outcome.\n- Consistent action choices reveal preferences even when the user never says \"I prefer X.\"\n- Frame preferences as \"The user would prefer responses that...\" when applicable.\n\nOutput valid JSON only:\n{\n \"rules\": [\n {\"content\": \"actionable rule text\", \"category\": \"rule|principle\", \"confidence\": 0.0-1.0, \"evidence\": [\"trajectory IDs\"]}\n ],\n \"preferences\": [\n {\"statement\": \"The user would prefer...\", \"confidence\": 0.0-1.0, \"evidence\": [\"trajectory IDs\"]}\n ]\n}\n\nIf no clear patterns exist, return {\"rules\": [], \"preferences\": []}.`;\n\nasync function consolidateWithLlm(\n context: string,\n llm: ConsolidationLlmClient,\n options: { agentId?: string; modelChain?: AgentPersonaModelConfig } = {},\n): Promise<LlmConsolidationResult> {\n const response = await llm.chatCompletion(\n [\n { role: \"system\", content: CONSOLIDATION_PROMPT },\n { role: \"user\", content: context },\n ],\n { temperature: 0.2, maxTokens: 2000, agentId: options.agentId, modelChain: options.modelChain },\n );\n\n if (!response?.content) {\n return { rules: [], preferences: [] };\n }\n\n try {\n // Extract JSON from response (may have markdown code fences)\n let jsonStr = response.content.trim();\n const fenceMatch = jsonStr.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?\\s*```/);\n if (fenceMatch) jsonStr = fenceMatch[1];\n\n const parsed = JSON.parse(jsonStr);\n const rawRules: unknown[] = Array.isArray(parsed.rules) ? parsed.rules : [];\n const rawPreferences: unknown[] = Array.isArray(parsed.preferences) ? parsed.preferences : [];\n return {\n rules: rawRules\n .map(parseLlmRule)\n .filter((rule): rule is LlmConsolidationResult[\"rules\"][number] => !!rule),\n preferences: rawPreferences\n .map(parseLlmPreference)\n .filter((pref): pref is LlmConsolidationResult[\"preferences\"][number] => !!pref),\n };\n } catch {\n log.warn(\"[cmc] failed to parse LLM consolidation response\");\n return { rules: [], preferences: [] };\n }\n}\n\n// ─── Candidate Generation ────────────────────────────────────────────────────\n\nfunction stablePatternId(content: string): string {\n const digest = createHash(\"sha256\")\n .update(`causal-pattern\\0${content}`)\n .digest(\"hex\")\n .slice(0, 16);\n return `causal-pattern:${digest}`;\n}\n\nfunction parseConfidence(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return undefined;\n return Math.max(0, Math.min(1, value));\n}\n\nfunction parseEvidence(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\" && item.trim().length > 0);\n}\n\nfunction parseLlmRule(raw: unknown): LlmConsolidationResult[\"rules\"][number] | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const r = raw as Record<string, unknown>;\n const content = typeof r.content === \"string\" ? r.content.trim() : \"\";\n const category = typeof r.category === \"string\" ? r.category : \"\";\n const confidence = parseConfidence(r.confidence);\n if (content.length <= 5 || !CAUSAL_RULE_CATEGORIES.has(category) || confidence === undefined) {\n return undefined;\n }\n return {\n content,\n category: category as \"rule\" | \"principle\" | \"preference\",\n confidence,\n evidence: parseEvidence(r.evidence),\n };\n}\n\nfunction parseLlmPreference(raw: unknown): LlmConsolidationResult[\"preferences\"][number] | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const p = raw as Record<string, unknown>;\n const statement = typeof p.statement === \"string\" ? p.statement.trim() : \"\";\n const confidence = parseConfidence(p.confidence);\n if (statement.length <= 5 || confidence === undefined) return undefined;\n return {\n statement,\n confidence,\n evidence: parseEvidence(p.evidence),\n };\n}\n\nfunction llmResultToCandidates(result: LlmConsolidationResult): CausalPatternCandidate[] {\n const candidates: CausalPatternCandidate[] = [];\n\n for (const rule of result.rules) {\n const category =\n rule.category === \"principle\" || rule.category === \"preference\"\n ? rule.category\n : \"rule\";\n candidates.push({\n id: stablePatternId(rule.content),\n sourceType: \"causal-pattern\",\n subject: rule.content.slice(0, 80),\n category,\n content: rule.content,\n score: Math.min(1, rule.confidence ?? 0.7),\n rationale: \"LLM-identified causal pattern from cross-session trajectory analysis\",\n outcome: null,\n provenance: (rule.evidence ?? []).slice(0, 5),\n agent: null,\n workflow: null,\n });\n }\n\n for (const preference of result.preferences) {\n candidates.push({\n id: stablePatternId(preference.statement),\n sourceType: \"causal-pattern\",\n subject: preference.statement.slice(0, 80),\n category: \"preference\",\n content: preference.statement,\n score: Math.min(1, preference.confidence ?? 0.7),\n rationale: \"LLM-identified preference from cross-session trajectory analysis\",\n outcome: null,\n provenance: (preference.evidence ?? []).slice(0, 5),\n agent: null,\n workflow: null,\n });\n }\n\n return candidates;\n}\n\nfunction normalizePositiveInteger(value: number, fallback: number): number {\n return Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;\n}\n\nfunction normalizeSuccessThreshold(value: number): number {\n if (!Number.isFinite(value) || value <= 0) return 0;\n return Math.min(1, value);\n}\n\nfunction trajectorySuccessScore(trajectory: CausalTrajectoryRecord): number {\n if (trajectory.outcomeKind === \"success\") return 1;\n if (trajectory.outcomeKind === \"partial\") return 0.5;\n return 0;\n}\n\nfunction averageSuccessScore(trajectories: CausalTrajectoryRecord[]): number {\n if (trajectories.length === 0) return 0;\n const total = trajectories.reduce((sum, trajectory) => sum + trajectorySuccessScore(trajectory), 0);\n return total / trajectories.length;\n}\n\nfunction passesConsolidationGates(\n trajectories: CausalTrajectoryRecord[],\n config: ConsolidationConfig,\n): boolean {\n const minRecurrence = normalizePositiveInteger(config.minRecurrence, 1);\n if (trajectories.length < minRecurrence) return false;\n\n const minSessions = normalizePositiveInteger(config.minSessions, 1);\n const sessionCount = new Set(trajectories.map((trajectory) => trajectory.sessionKey)).size;\n if (sessionCount < minSessions) return false;\n\n const successThreshold = normalizeSuccessThreshold(config.successThreshold);\n if (successThreshold > 0 && averageSuccessScore(trajectories) < successThreshold) {\n return false;\n }\n\n return true;\n}\n\n// ─── Public API ──────────────────────────────────────────────────────────────\n\n/**\n * Run LLM-assisted consolidation: read trajectories, format causal context,\n * ask LLM to identify patterns and preferences.\n */\nexport async function deriveCausalPromotionCandidates(options: {\n memoryDir: string;\n causalTrajectoryStoreDir?: string;\n config: ConsolidationConfig;\n gatewayConfig?: GatewayConfig;\n gatewayAgentId?: string;\n modelChain?: AgentPersonaModelConfig;\n workspaceDir?: string;\n pluginConfig?: PluginConfig;\n llmClient?: ConsolidationLlmClient;\n}): Promise<CausalPatternCandidate[]> {\n try {\n const trajectories = await readAllTrajectories(options.memoryDir, options.causalTrajectoryStoreDir);\n if (!passesConsolidationGates(trajectories, options.config)) return [];\n\n const chainsDir = resolveChainsDir(options.memoryDir, options.causalTrajectoryStoreDir);\n const chainIndex = await readChainIndex(chainsDir);\n\n // Format the causal context for the LLM\n let context = formatCausalContext(trajectories, chainIndex);\n\n // Append memory extensions block if available (#382)\n if (options.pluginConfig) {\n const extBlock = await buildExtensionsBlockForConsolidation(options.pluginConfig);\n if (extBlock.length > 0) {\n context += \"\\n\\n\" + extBlock;\n }\n }\n\n // If no LLM available, fall back to empty (no deterministic fallback)\n const llm = options.llmClient ?? new FallbackLlmClient(\n options.gatewayConfig,\n options.pluginConfig\n ? fallbackLlmRuntimeContextFromConfig(options.pluginConfig, {\n workspaceDir: options.workspaceDir ?? options.pluginConfig.workspaceDir,\n })\n : { workspaceDir: options.workspaceDir },\n );\n const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };\n if (!llm.isAvailable(llmOptions)) {\n log.debug(\"[cmc] no LLM available for consolidation — skipping\");\n return [];\n }\n\n // Call LLM for pattern analysis\n const result = await consolidateWithLlm(context, llm, llmOptions);\n const candidates = llmResultToCandidates(result);\n\n log.debug(`[cmc] LLM consolidation produced ${candidates.length} rule(s) and ${result.preferences.length} preference(s)`);\n return candidates;\n } catch (error) {\n log.warn(`[cmc] consolidation failed (non-fatal): ${error instanceof Error ? error.message : String(error)}`);\n return [];\n }\n}\n\n/**\n * Get LLM-synthesized preferences from causal trajectory analysis.\n * Returns formatted preference statements for recall injection.\n */\nexport async function synthesizeCausalPreferencesViaLlm(options: {\n memoryDir: string;\n causalTrajectoryStoreDir?: string;\n gatewayConfig?: GatewayConfig;\n gatewayAgentId?: string;\n modelChain?: AgentPersonaModelConfig;\n workspaceDir?: string;\n minTrajectories?: number;\n}): Promise<string | null> {\n try {\n const trajectories = await readAllTrajectories(options.memoryDir, options.causalTrajectoryStoreDir);\n if (trajectories.length < (options.minTrajectories ?? 2)) return null;\n\n const chainsDir = resolveChainsDir(options.memoryDir, options.causalTrajectoryStoreDir);\n const chainIndex = await readChainIndex(chainsDir);\n const context = formatCausalContext(trajectories, chainIndex);\n\n const llm = new FallbackLlmClient(options.gatewayConfig, {\n workspaceDir: options.workspaceDir,\n });\n const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };\n if (!llm.isAvailable(llmOptions)) return null;\n\n const result = await consolidateWithLlm(context, llm, llmOptions);\n if (result.preferences.length === 0 && result.rules.length === 0) return null;\n\n const lines: string[] = [\"## Behavioral Insights (from Causal Chain Analysis)\", \"\"];\n\n for (const pref of result.preferences) {\n lines.push(`- ${pref.statement}`);\n }\n\n for (const rule of result.rules) {\n lines.push(`- ${rule.content}`);\n }\n\n lines.push(\"\");\n return lines.join(\"\\n\");\n } catch (error) {\n log.warn(`[cmc] preference synthesis failed (non-fatal): ${error instanceof Error ? error.message : String(error)}`);\n return null;\n }\n}\n\n/**\n * Optional post-consolidation hook — materializes Codex-native memory artifacts\n * after a causal consolidation run. Guarded by `codexMaterializeMemories` and\n * `codexMaterializeOnConsolidation`. Returns `null` when disabled or when the\n * sentinel is missing (honors user hand-edits).\n *\n * Split from the orchestrator-owned flow so #378 avoids touching\n * orchestrator.ts while Wave 1 edits are in flight.\n */\nexport async function materializeAfterCausalConsolidation(options: {\n config: PluginConfig;\n namespace?: string;\n memories?: MemoryFile[];\n memoryDir?: string;\n codexHome?: string;\n rolloutSummaries?: RolloutSummaryInput[];\n now?: Date;\n}): Promise<MaterializeResult | null> {\n // Delegates to the shared post-consolidation helper — see\n // runPostConsolidationMaterialize in codex-materialize-runner.ts.\n return runPostConsolidationMaterialize(\"[cmc]\", options);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,SAAS,kBAAkB;AAO3B,OAAO,UAAU;AA0CjB,IAAM,yBAAyB,oBAAI,IAAI,CAAC,QAAQ,aAAa,YAAY,CAAC;AAY1E,eAAe,oBACb,WACA,0BACmC;AACnC,QAAM,OAAO,gCAAgC,WAAW,wBAAwB;AAChF,QAAM,kBAAkB,KAAK,KAAK,MAAM,cAAc;AAEtD,QAAM,QAAQ,MAAM,cAAc,eAAe,EAAE,MAAM,MAAM,CAAC,CAAa;AAC7E,QAAM,UAAoC,CAAC;AAE3C,aAAW,YAAY,OAAO;AAC5B,QAAI;AACF,YAAM,MAAM,MAAM,aAAa,QAAQ;AACvC,UAAI,SAAS,GAAG,KAAK,OAAO,IAAI,iBAAiB,UAAU;AACzD,gBAAQ,KAAK,GAAwC;AAAA,MACvD;AAAA,IACF,QAAQ;AAAA,IAER;AAAA,EACF;AAEA,SAAO;AACT;AAQA,SAAS,oBACP,cACA,YACA,WAAmB,KACX;AAER,QAAM,YAAY,oBAAI,IAAsC;AAC5D,aAAW,KAAK,cAAc;AAC5B,UAAM,OAAO,UAAU,IAAI,EAAE,UAAU,KAAK,CAAC;AAC7C,SAAK,KAAK,CAAC;AACX,cAAU,IAAI,EAAE,YAAY,IAAI;AAAA,EAClC;AAEA,QAAM,QAAkB,CAAC;AACzB,QAAM,KAAK,2BAA2B,aAAa,MAAM,WAAW,UAAU,IAAI,YAAY;AAC9F,QAAM,KAAK,EAAE;AAGb,aAAW,CAAC,YAAY,YAAY,KAAK,WAAW;AAClD,UAAM,KAAK,gBAAgB,UAAU,EAAE;AACvC,eAAW,KAAK,aAAa,MAAM,GAAG,CAAC,GAAG;AACxC,YAAM,UAAU,EAAE,gBAAgB,YAAY,MAAM,EAAE,gBAAgB,YAAY,MAAM;AACxF,YAAM,KAAK,IAAI,OAAO,WAAW,EAAE,IAAI,EAAE;AACzC,YAAM,KAAK,eAAe,EAAE,aAAa,EAAE;AAC3C,YAAM,KAAK,gBAAgB,EAAE,cAAc,EAAE;AAC7C,UAAI,EAAE,gBAAiB,OAAM,KAAK,kBAAkB,EAAE,eAAe,EAAE;AACvE,UAAI,EAAE,YAAY,OAAQ,OAAM,KAAK,iBAAiB,EAAE,WAAW,KAAK,IAAI,CAAC,EAAE;AAAA,IACjF;AACA,UAAM,KAAK,EAAE;AAAA,EACf;AAGA,QAAM,YAAY,OAAO,KAAK,WAAW,KAAK,EAAE;AAChD,MAAI,YAAY,GAAG;AACjB,UAAM,KAAK,mCAAmC,SAAS,eAAe;AACtE,UAAM,KAAK,EAAE;AAEb,UAAM,gBAAgB,IAAI,IAAI,aAAa,IAAI,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AAC1E,UAAM,QAAQ,oBAAI,IAAY;AAE9B,eAAW,CAAC,QAAQ,IAAI,KAAK,OAAO,QAAQ,WAAW,KAAK,GAAG;AAC7D,UAAI,MAAM,QAAQ,GAAI;AACtB,YAAM,OAAO,cAAc,IAAI,KAAK,gBAAgB;AACpD,YAAM,KAAK,cAAc,IAAI,KAAK,cAAc;AAChD,UAAI,CAAC,QAAQ,CAAC,GAAI;AAElB,YAAM,KAAK,GAAG,KAAK,QAAQ,MAAM,KAAK,IAAI,MAAM,KAAK,UAAU,aAAQ,GAAG,IAAI,MAAM,GAAG,UAAU,GAAG;AACpG,YAAM,IAAI,MAAM;AAAA,IAClB;AACA,UAAM,KAAK,EAAE;AAAA,EACf;AAEA,QAAM,SAAS,MAAM,KAAK,IAAI;AAC9B,SAAO,OAAO,SAAS,WAAW,OAAO,MAAM,GAAG,QAAQ,IAAI,kBAAkB;AAClF;AAIA,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwB7B,eAAe,mBACb,SACA,KACA,UAAsE,CAAC,GACtC;AACjC,QAAM,WAAW,MAAM,IAAI;AAAA,IACzB;AAAA,MACE,EAAE,MAAM,UAAU,SAAS,qBAAqB;AAAA,MAChD,EAAE,MAAM,QAAQ,SAAS,QAAQ;AAAA,IACnC;AAAA,IACA,EAAE,aAAa,KAAK,WAAW,KAAM,SAAS,QAAQ,SAAS,YAAY,QAAQ,WAAW;AAAA,EAChG;AAEA,MAAI,CAAC,UAAU,SAAS;AACtB,WAAO,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE;AAAA,EACtC;AAEA,MAAI;AAEF,QAAI,UAAU,SAAS,QAAQ,KAAK;AACpC,UAAM,aAAa,QAAQ,MAAM,uCAAuC;AACxE,QAAI,WAAY,WAAU,WAAW,CAAC;AAEtC,UAAM,SAAS,KAAK,MAAM,OAAO;AACjC,UAAM,WAAsB,MAAM,QAAQ,OAAO,KAAK,IAAI,OAAO,QAAQ,CAAC;AAC1E,UAAM,iBAA4B,MAAM,QAAQ,OAAO,WAAW,IAAI,OAAO,cAAc,CAAC;AAC5F,WAAO;AAAA,MACL,OAAO,SACJ,IAAI,YAAY,EAChB,OAAO,CAAC,SAA0D,CAAC,CAAC,IAAI;AAAA,MAC3E,aAAa,eACV,IAAI,kBAAkB,EACtB,OAAO,CAAC,SAAgE,CAAC,CAAC,IAAI;AAAA,IACnF;AAAA,EACF,QAAQ;AACN,QAAI,KAAK,kDAAkD;AAC3D,WAAO,EAAE,OAAO,CAAC,GAAG,aAAa,CAAC,EAAE;AAAA,EACtC;AACF;AAIA,SAAS,gBAAgB,SAAyB;AAChD,QAAM,SAAS,WAAW,QAAQ,EAC/B,OAAO,mBAAmB,OAAO,EAAE,EACnC,OAAO,KAAK,EACZ,MAAM,GAAG,EAAE;AACd,SAAO,kBAAkB,MAAM;AACjC;AAEA,SAAS,gBAAgB,OAAoC;AAC3D,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACjE,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AACvC;AAEA,SAAS,cAAc,OAA0B;AAC/C,MAAI,CAAC,MAAM,QAAQ,KAAK,EAAG,QAAO,CAAC;AACnC,SAAO,MAAM,OAAO,CAAC,SAAyB,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS,CAAC;AAClG;AAEA,SAAS,aAAa,KAAmE;AACvF,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG,EAAG,QAAO;AAClE,QAAM,IAAI;AACV,QAAM,UAAU,OAAO,EAAE,YAAY,WAAW,EAAE,QAAQ,KAAK,IAAI;AACnE,QAAM,WAAW,OAAO,EAAE,aAAa,WAAW,EAAE,WAAW;AAC/D,QAAM,aAAa,gBAAgB,EAAE,UAAU;AAC/C,MAAI,QAAQ,UAAU,KAAK,CAAC,uBAAuB,IAAI,QAAQ,KAAK,eAAe,QAAW;AAC5F,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,cAAc,EAAE,QAAQ;AAAA,EACpC;AACF;AAEA,SAAS,mBAAmB,KAAyE;AACnG,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,GAAG,EAAG,QAAO;AAClE,QAAM,IAAI;AACV,QAAM,YAAY,OAAO,EAAE,cAAc,WAAW,EAAE,UAAU,KAAK,IAAI;AACzE,QAAM,aAAa,gBAAgB,EAAE,UAAU;AAC/C,MAAI,UAAU,UAAU,KAAK,eAAe,OAAW,QAAO;AAC9D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,cAAc,EAAE,QAAQ;AAAA,EACpC;AACF;AAEA,SAAS,sBAAsB,QAA0D;AACvF,QAAM,aAAuC,CAAC;AAE9C,aAAW,QAAQ,OAAO,OAAO;AAC/B,UAAM,WACJ,KAAK,aAAa,eAAe,KAAK,aAAa,eAC/C,KAAK,WACL;AACN,eAAW,KAAK;AAAA,MACd,IAAI,gBAAgB,KAAK,OAAO;AAAA,MAChC,YAAY;AAAA,MACZ,SAAS,KAAK,QAAQ,MAAM,GAAG,EAAE;AAAA,MACjC;AAAA,MACA,SAAS,KAAK;AAAA,MACd,OAAO,KAAK,IAAI,GAAG,KAAK,cAAc,GAAG;AAAA,MACzC,WAAW;AAAA,MACX,SAAS;AAAA,MACT,aAAa,KAAK,YAAY,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,MAC5C,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,aAAW,cAAc,OAAO,aAAa;AAC3C,eAAW,KAAK;AAAA,MACd,IAAI,gBAAgB,WAAW,SAAS;AAAA,MACxC,YAAY;AAAA,MACZ,SAAS,WAAW,UAAU,MAAM,GAAG,EAAE;AAAA,MACzC,UAAU;AAAA,MACV,SAAS,WAAW;AAAA,MACpB,OAAO,KAAK,IAAI,GAAG,WAAW,cAAc,GAAG;AAAA,MAC/C,WAAW;AAAA,MACX,SAAS;AAAA,MACT,aAAa,WAAW,YAAY,CAAC,GAAG,MAAM,GAAG,CAAC;AAAA,MAClD,OAAO;AAAA,MACP,UAAU;AAAA,IACZ,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,SAAS,yBAAyB,OAAe,UAA0B;AACzE,SAAO,OAAO,SAAS,KAAK,KAAK,QAAQ,IAAI,KAAK,MAAM,KAAK,IAAI;AACnE;AAEA,SAAS,0BAA0B,OAAuB;AACxD,MAAI,CAAC,OAAO,SAAS,KAAK,KAAK,SAAS,EAAG,QAAO;AAClD,SAAO,KAAK,IAAI,GAAG,KAAK;AAC1B;AAEA,SAAS,uBAAuB,YAA4C;AAC1E,MAAI,WAAW,gBAAgB,UAAW,QAAO;AACjD,MAAI,WAAW,gBAAgB,UAAW,QAAO;AACjD,SAAO;AACT;AAEA,SAAS,oBAAoB,cAAgD;AAC3E,MAAI,aAAa,WAAW,EAAG,QAAO;AACtC,QAAM,QAAQ,aAAa,OAAO,CAAC,KAAK,eAAe,MAAM,uBAAuB,UAAU,GAAG,CAAC;AAClG,SAAO,QAAQ,aAAa;AAC9B;AAEA,SAAS,yBACP,cACA,QACS;AACT,QAAM,gBAAgB,yBAAyB,OAAO,eAAe,CAAC;AACtE,MAAI,aAAa,SAAS,cAAe,QAAO;AAEhD,QAAM,cAAc,yBAAyB,OAAO,aAAa,CAAC;AAClE,QAAM,eAAe,IAAI,IAAI,aAAa,IAAI,CAAC,eAAe,WAAW,UAAU,CAAC,EAAE;AACtF,MAAI,eAAe,YAAa,QAAO;AAEvC,QAAM,mBAAmB,0BAA0B,OAAO,gBAAgB;AAC1E,MAAI,mBAAmB,KAAK,oBAAoB,YAAY,IAAI,kBAAkB;AAChF,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAQA,eAAsB,gCAAgC,SAUhB;AACpC,MAAI;AACF,UAAM,eAAe,MAAM,oBAAoB,QAAQ,WAAW,QAAQ,wBAAwB;AAClG,QAAI,CAAC,yBAAyB,cAAc,QAAQ,MAAM,EAAG,QAAO,CAAC;AAErE,UAAM,YAAY,iBAAiB,QAAQ,WAAW,QAAQ,wBAAwB;AACtF,UAAM,aAAa,MAAM,eAAe,SAAS;AAGjD,QAAI,UAAU,oBAAoB,cAAc,UAAU;AAG1D,QAAI,QAAQ,cAAc;AACxB,YAAM,WAAW,MAAM,qCAAqC,QAAQ,YAAY;AAChF,UAAI,SAAS,SAAS,GAAG;AACvB,mBAAW,SAAS;AAAA,MACtB;AAAA,IACF;AAGA,UAAM,MAAM,QAAQ,aAAa,IAAI;AAAA,MACnC,QAAQ;AAAA,MACR,QAAQ,eACJ,oCAAoC,QAAQ,cAAc;AAAA,QACxD,cAAc,QAAQ,gBAAgB,QAAQ,aAAa;AAAA,MAC7D,CAAC,IACD,EAAE,cAAc,QAAQ,aAAa;AAAA,IAC3C;AACA,UAAM,aAAa,EAAE,SAAS,QAAQ,gBAAgB,YAAY,QAAQ,WAAW;AACrF,QAAI,CAAC,IAAI,YAAY,UAAU,GAAG;AAChC,UAAI,MAAM,0DAAqD;AAC/D,aAAO,CAAC;AAAA,IACV;AAGA,UAAM,SAAS,MAAM,mBAAmB,SAAS,KAAK,UAAU;AAChE,UAAM,aAAa,sBAAsB,MAAM;AAE/C,QAAI,MAAM,oCAAoC,WAAW,MAAM,gBAAgB,OAAO,YAAY,MAAM,gBAAgB;AACxH,WAAO;AAAA,EACT,SAAS,OAAO;AACd,QAAI,KAAK,2CAA2C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AAC5G,WAAO,CAAC;AAAA,EACV;AACF;AAMA,eAAsB,kCAAkC,SAQ7B;AACzB,MAAI;AACF,UAAM,eAAe,MAAM,oBAAoB,QAAQ,WAAW,QAAQ,wBAAwB;AAClG,QAAI,aAAa,UAAU,QAAQ,mBAAmB,GAAI,QAAO;AAEjE,UAAM,YAAY,iBAAiB,QAAQ,WAAW,QAAQ,wBAAwB;AACtF,UAAM,aAAa,MAAM,eAAe,SAAS;AACjD,UAAM,UAAU,oBAAoB,cAAc,UAAU;AAE5D,UAAM,MAAM,IAAI,kBAAkB,QAAQ,eAAe;AAAA,MACvD,cAAc,QAAQ;AAAA,IACxB,CAAC;AACD,UAAM,aAAa,EAAE,SAAS,QAAQ,gBAAgB,YAAY,QAAQ,WAAW;AACrF,QAAI,CAAC,IAAI,YAAY,UAAU,EAAG,QAAO;AAEzC,UAAM,SAAS,MAAM,mBAAmB,SAAS,KAAK,UAAU;AAChE,QAAI,OAAO,YAAY,WAAW,KAAK,OAAO,MAAM,WAAW,EAAG,QAAO;AAEzE,UAAM,QAAkB,CAAC,uDAAuD,EAAE;AAElF,eAAW,QAAQ,OAAO,aAAa;AACrC,YAAM,KAAK,KAAK,KAAK,SAAS,EAAE;AAAA,IAClC;AAEA,eAAW,QAAQ,OAAO,OAAO;AAC/B,YAAM,KAAK,KAAK,KAAK,OAAO,EAAE;AAAA,IAChC;AAEA,UAAM,KAAK,EAAE;AACb,WAAO,MAAM,KAAK,IAAI;AAAA,EACxB,SAAS,OAAO;AACd,QAAI,KAAK,kDAAkD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE;AACnH,WAAO;AAAA,EACT;AACF;AAWA,eAAsB,oCAAoC,SAQpB;AAGpC,SAAO,gCAAgC,SAAS,OAAO;AACzD;","names":[]}
1
+ {"version":3,"sources":["../src/causal-consolidation.ts"],"sourcesContent":["/**\n * causal-consolidation.ts — CMC Phase 2: LLM-Assisted Causal Consolidation\n *\n * Uses an LLM to analyze causal trajectory patterns across sessions.\n * The LLM receives the causal chain graph as context — connected trajectories\n * from different sessions — and identifies recurring behavioral patterns,\n * preference signals, and actionable rules.\n *\n * This is the core CMC innovation: the LLM gets cross-session causal context\n * that no other memory system provides. It can see that a user investigated\n * a bug in session 1, attempted a fix in session 2, and succeeded in session 3 —\n * and synthesize a rule or preference from that chain.\n */\n\nimport { createHash } from \"node:crypto\";\nimport { resolveCausalTrajectoryStoreDir, type CausalTrajectoryRecord } from \"./causal-trajectory.js\";\nimport { readChainIndex, resolveChainsDir, type CausalChainIndex, type CausalEdge } from \"./causal-chain.js\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport { isRecord } from \"./store-contract.js\";\nimport { FallbackLlmClient, fallbackLlmRuntimeContextFromConfig } from \"./fallback-llm.js\";\nimport type { AgentPersonaModelConfig, GatewayConfig, MemoryFile, PluginConfig } from \"./types.js\";\nimport path from \"node:path\";\nimport { log } from \"./logger.js\";\nimport { runPostConsolidationMaterialize } from \"./connectors/codex-materialize-runner.js\";\nimport type { MaterializeResult, RolloutSummaryInput } from \"./connectors/codex-materialize.js\";\nimport { buildExtensionsBlockForConsolidation } from \"./semantic-consolidation.js\";\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface CausalPatternCandidate {\n id: string;\n sourceType: \"causal-pattern\";\n subject: string;\n category: \"principle\" | \"rule\" | \"preference\";\n content: string;\n score: number;\n rationale: string;\n outcome: null;\n provenance: string[];\n agent: string | null;\n workflow: string | null;\n}\n\nexport interface ConsolidationConfig {\n minRecurrence: number;\n minSessions: number;\n successThreshold: number;\n}\n\nexport interface LlmConsolidationResult {\n rules: Array<{\n content: string;\n category: \"rule\" | \"principle\" | \"preference\";\n confidence: number;\n evidence: string[];\n }>;\n preferences: Array<{\n statement: string;\n confidence: number;\n evidence: string[];\n }>;\n}\n\nconst CAUSAL_RULE_CATEGORIES = new Set([\"rule\", \"principle\", \"preference\"]);\n\ninterface ConsolidationLlmClient {\n isAvailable(options?: { agentId?: string; modelChain?: AgentPersonaModelConfig }): boolean;\n chatCompletion(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options?: { temperature?: number; maxTokens?: number; agentId?: string; modelChain?: AgentPersonaModelConfig },\n ): Promise<{ content: string } | null>;\n}\n\n// ─── Trajectory Reading ──────────────────────────────────────────────────────\n\nasync function readAllTrajectories(\n memoryDir: string,\n causalTrajectoryStoreDir?: string,\n): Promise<CausalTrajectoryRecord[]> {\n const root = resolveCausalTrajectoryStoreDir(memoryDir, causalTrajectoryStoreDir);\n const trajectoriesDir = path.join(root, \"trajectories\");\n\n const files = await listJsonFiles(trajectoriesDir).catch(() => [] as string[]);\n const results: CausalTrajectoryRecord[] = [];\n\n for (const filePath of files) {\n try {\n const raw = await readJsonFile(filePath);\n if (isRecord(raw) && typeof raw.trajectoryId === \"string\") {\n results.push(raw as unknown as CausalTrajectoryRecord);\n }\n } catch {\n // skip invalid\n }\n }\n\n return results;\n}\n\n// ─── Context Formatting ──────────────────────────────────────────────────────\n\n/**\n * Format trajectories and their causal connections as a readable context\n * for the LLM. Groups by session and shows chain connections.\n */\nfunction formatCausalContext(\n trajectories: CausalTrajectoryRecord[],\n chainIndex: CausalChainIndex,\n maxChars: number = 8000,\n): string {\n // Group trajectories by session\n const bySession = new Map<string, CausalTrajectoryRecord[]>();\n for (const t of trajectories) {\n const list = bySession.get(t.sessionKey) ?? [];\n list.push(t);\n bySession.set(t.sessionKey, list);\n }\n\n const lines: string[] = [];\n lines.push(`## Causal Trajectories (${trajectories.length} across ${bySession.size} sessions)`);\n lines.push(\"\");\n\n // Format each session's trajectories\n for (const [sessionKey, sessionTrajs] of bySession) {\n lines.push(`### Session: ${sessionKey}`);\n for (const t of sessionTrajs.slice(0, 5)) {\n const outcome = t.outcomeKind === \"success\" ? \"+\" : t.outcomeKind === \"failure\" ? \"-\" : \"~\";\n lines.push(`[${outcome}] Goal: ${t.goal}`);\n lines.push(` Action: ${t.actionSummary}`);\n lines.push(` Outcome: ${t.outcomeSummary}`);\n if (t.followUpSummary) lines.push(` Follow-up: ${t.followUpSummary}`);\n if (t.entityRefs?.length) lines.push(` Entities: ${t.entityRefs.join(\", \")}`);\n }\n lines.push(\"\");\n }\n\n // Format causal chain connections\n const edgeCount = Object.keys(chainIndex.edges).length;\n if (edgeCount > 0) {\n lines.push(`## Cross-Session Causal Chains (${edgeCount} connections)`);\n lines.push(\"\");\n\n const trajectoryMap = new Map(trajectories.map((t) => [t.trajectoryId, t]));\n const shown = new Set<string>();\n\n for (const [edgeId, edge] of Object.entries(chainIndex.edges)) {\n if (shown.size >= 10) break; // limit output size\n const from = trajectoryMap.get(edge.fromTrajectoryId);\n const to = trajectoryMap.get(edge.toTrajectoryId);\n if (!from || !to) continue;\n\n lines.push(`${edge.edgeType}: \"${from.goal}\" (${from.sessionKey}) → \"${to.goal}\" (${to.sessionKey})`);\n shown.add(edgeId);\n }\n lines.push(\"\");\n }\n\n const result = lines.join(\"\\n\");\n return result.length > maxChars ? result.slice(0, maxChars) + \"\\n[truncated]\" : result;\n}\n\n// ─── LLM Consolidation ──────────────────────────────────────────────────────\n\nconst CONSOLIDATION_PROMPT = `You are analyzing a user's causal trajectory history across multiple sessions. Trajectories record what the user tried to do (goal), what they did (action), and what happened (outcome).\n\nYour job is to identify:\n1. BEHAVIORAL RULES: Recurring patterns where the same approach consistently succeeds or fails. These should be actionable guidance for future sessions.\n2. PREFERENCES: What the user cares about, prefers, or consistently chooses — even if never explicitly stated. Infer preferences from what they repeatedly do, retry until successful, or always include in their workflow.\n\nIMPORTANT:\n- Look for CROSS-SESSION patterns — things that repeat across different sessions are more significant than within-session patterns.\n- A user who retries the same goal across sessions has a strong implicit preference for that outcome.\n- Consistent action choices reveal preferences even when the user never says \"I prefer X.\"\n- Frame preferences as \"The user would prefer responses that...\" when applicable.\n\nOutput valid JSON only:\n{\n \"rules\": [\n {\"content\": \"actionable rule text\", \"category\": \"rule|principle\", \"confidence\": 0.0-1.0, \"evidence\": [\"trajectory IDs\"]}\n ],\n \"preferences\": [\n {\"statement\": \"The user would prefer...\", \"confidence\": 0.0-1.0, \"evidence\": [\"trajectory IDs\"]}\n ]\n}\n\nIf no clear patterns exist, return {\"rules\": [], \"preferences\": []}.`;\n\nasync function consolidateWithLlm(\n context: string,\n llm: ConsolidationLlmClient,\n options: { agentId?: string; modelChain?: AgentPersonaModelConfig } = {},\n): Promise<LlmConsolidationResult> {\n const response = await llm.chatCompletion(\n [\n { role: \"system\", content: CONSOLIDATION_PROMPT },\n { role: \"user\", content: context },\n ],\n { temperature: 0.2, maxTokens: 2000, agentId: options.agentId, modelChain: options.modelChain },\n );\n\n if (!response?.content) {\n return { rules: [], preferences: [] };\n }\n\n try {\n // Extract JSON from response (may have markdown code fences)\n let jsonStr = response.content.trim();\n const fenceMatch = jsonStr.match(/```(?:json)?\\s*\\n?([\\s\\S]*?)\\n?\\s*```/);\n if (fenceMatch) jsonStr = fenceMatch[1];\n\n const parsed = JSON.parse(jsonStr);\n const rawRules: unknown[] = Array.isArray(parsed.rules) ? parsed.rules : [];\n const rawPreferences: unknown[] = Array.isArray(parsed.preferences) ? parsed.preferences : [];\n return {\n rules: rawRules\n .map(parseLlmRule)\n .filter((rule): rule is LlmConsolidationResult[\"rules\"][number] => !!rule),\n preferences: rawPreferences\n .map(parseLlmPreference)\n .filter((pref): pref is LlmConsolidationResult[\"preferences\"][number] => !!pref),\n };\n } catch {\n log.warn(\"[cmc] failed to parse LLM consolidation response\");\n return { rules: [], preferences: [] };\n }\n}\n\n// ─── Candidate Generation ────────────────────────────────────────────────────\n\nfunction stablePatternId(content: string): string {\n const digest = createHash(\"sha256\")\n .update(`causal-pattern\\0${content}`)\n .digest(\"hex\")\n .slice(0, 16);\n return `causal-pattern:${digest}`;\n}\n\nfunction parseConfidence(value: unknown): number | undefined {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return undefined;\n return Math.max(0, Math.min(1, value));\n}\n\nfunction parseEvidence(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((item): item is string => typeof item === \"string\" && item.trim().length > 0);\n}\n\nfunction parseLlmRule(raw: unknown): LlmConsolidationResult[\"rules\"][number] | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const r = raw as Record<string, unknown>;\n const content = typeof r.content === \"string\" ? r.content.trim() : \"\";\n const category = typeof r.category === \"string\" ? r.category : \"\";\n const confidence = parseConfidence(r.confidence);\n if (content.length <= 5 || !CAUSAL_RULE_CATEGORIES.has(category) || confidence === undefined) {\n return undefined;\n }\n return {\n content,\n category: category as \"rule\" | \"principle\" | \"preference\",\n confidence,\n evidence: parseEvidence(r.evidence),\n };\n}\n\nfunction parseLlmPreference(raw: unknown): LlmConsolidationResult[\"preferences\"][number] | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const p = raw as Record<string, unknown>;\n const statement = typeof p.statement === \"string\" ? p.statement.trim() : \"\";\n const confidence = parseConfidence(p.confidence);\n if (statement.length <= 5 || confidence === undefined) return undefined;\n return {\n statement,\n confidence,\n evidence: parseEvidence(p.evidence),\n };\n}\n\nfunction llmResultToCandidates(result: LlmConsolidationResult): CausalPatternCandidate[] {\n const candidates: CausalPatternCandidate[] = [];\n\n for (const rule of result.rules) {\n const category =\n rule.category === \"principle\" || rule.category === \"preference\"\n ? rule.category\n : \"rule\";\n candidates.push({\n id: stablePatternId(rule.content),\n sourceType: \"causal-pattern\",\n subject: rule.content.slice(0, 80),\n category,\n content: rule.content,\n score: Math.min(1, rule.confidence ?? 0.7),\n rationale: \"LLM-identified causal pattern from cross-session trajectory analysis\",\n outcome: null,\n provenance: (rule.evidence ?? []).slice(0, 5),\n agent: null,\n workflow: null,\n });\n }\n\n for (const preference of result.preferences) {\n candidates.push({\n id: stablePatternId(preference.statement),\n sourceType: \"causal-pattern\",\n subject: preference.statement.slice(0, 80),\n category: \"preference\",\n content: preference.statement,\n score: Math.min(1, preference.confidence ?? 0.7),\n rationale: \"LLM-identified preference from cross-session trajectory analysis\",\n outcome: null,\n provenance: (preference.evidence ?? []).slice(0, 5),\n agent: null,\n workflow: null,\n });\n }\n\n return candidates;\n}\n\nfunction normalizePositiveInteger(value: number, fallback: number): number {\n return Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;\n}\n\nfunction normalizeSuccessThreshold(value: number): number {\n if (!Number.isFinite(value) || value <= 0) return 0;\n return Math.min(1, value);\n}\n\nfunction trajectorySuccessScore(trajectory: CausalTrajectoryRecord): number {\n if (trajectory.outcomeKind === \"success\") return 1;\n if (trajectory.outcomeKind === \"partial\") return 0.5;\n return 0;\n}\n\nfunction averageSuccessScore(trajectories: CausalTrajectoryRecord[]): number {\n if (trajectories.length === 0) return 0;\n const total = trajectories.reduce((sum, trajectory) => sum + trajectorySuccessScore(trajectory), 0);\n return total / trajectories.length;\n}\n\nfunction passesConsolidationGates(\n trajectories: CausalTrajectoryRecord[],\n config: ConsolidationConfig,\n): boolean {\n const minRecurrence = normalizePositiveInteger(config.minRecurrence, 1);\n if (trajectories.length < minRecurrence) return false;\n\n const minSessions = normalizePositiveInteger(config.minSessions, 1);\n const sessionCount = new Set(trajectories.map((trajectory) => trajectory.sessionKey)).size;\n if (sessionCount < minSessions) return false;\n\n const successThreshold = normalizeSuccessThreshold(config.successThreshold);\n if (successThreshold > 0 && averageSuccessScore(trajectories) < successThreshold) {\n return false;\n }\n\n return true;\n}\n\n// ─── Public API ──────────────────────────────────────────────────────────────\n\n/**\n * Run LLM-assisted consolidation: read trajectories, format causal context,\n * ask LLM to identify patterns and preferences.\n */\nexport async function deriveCausalPromotionCandidates(options: {\n memoryDir: string;\n causalTrajectoryStoreDir?: string;\n config: ConsolidationConfig;\n gatewayConfig?: GatewayConfig;\n gatewayAgentId?: string;\n modelChain?: AgentPersonaModelConfig;\n workspaceDir?: string;\n pluginConfig?: PluginConfig;\n llmClient?: ConsolidationLlmClient;\n}): Promise<CausalPatternCandidate[]> {\n try {\n const trajectories = await readAllTrajectories(options.memoryDir, options.causalTrajectoryStoreDir);\n if (!passesConsolidationGates(trajectories, options.config)) return [];\n\n const chainsDir = resolveChainsDir(options.memoryDir, options.causalTrajectoryStoreDir);\n const chainIndex = await readChainIndex(chainsDir);\n\n // Format the causal context for the LLM\n let context = formatCausalContext(trajectories, chainIndex);\n\n // Append memory extensions block if available (#382)\n if (options.pluginConfig) {\n const extBlock = await buildExtensionsBlockForConsolidation(options.pluginConfig);\n if (extBlock.length > 0) {\n context += \"\\n\\n\" + extBlock;\n }\n }\n\n // If no LLM available, fall back to empty (no deterministic fallback)\n const llm = options.llmClient ?? new FallbackLlmClient(\n options.gatewayConfig,\n options.pluginConfig\n ? fallbackLlmRuntimeContextFromConfig(options.pluginConfig, {\n workspaceDir: options.workspaceDir ?? options.pluginConfig.workspaceDir,\n })\n : { workspaceDir: options.workspaceDir },\n );\n const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };\n if (!llm.isAvailable(llmOptions)) {\n log.debug(\"[cmc] no LLM available for consolidation — skipping\");\n return [];\n }\n\n // Call LLM for pattern analysis\n const result = await consolidateWithLlm(context, llm, llmOptions);\n const candidates = llmResultToCandidates(result);\n\n log.debug(`[cmc] LLM consolidation produced ${candidates.length} rule(s) and ${result.preferences.length} preference(s)`);\n return candidates;\n } catch (error) {\n log.warn(`[cmc] consolidation failed (non-fatal): ${error instanceof Error ? error.message : String(error)}`);\n return [];\n }\n}\n\n/**\n * Get LLM-synthesized preferences from causal trajectory analysis.\n * Returns formatted preference statements for recall injection.\n */\nexport async function synthesizeCausalPreferencesViaLlm(options: {\n memoryDir: string;\n causalTrajectoryStoreDir?: string;\n gatewayConfig?: GatewayConfig;\n gatewayAgentId?: string;\n modelChain?: AgentPersonaModelConfig;\n workspaceDir?: string;\n minTrajectories?: number;\n}): Promise<string | null> {\n try {\n const trajectories = await readAllTrajectories(options.memoryDir, options.causalTrajectoryStoreDir);\n if (trajectories.length < (options.minTrajectories ?? 2)) return null;\n\n const chainsDir = resolveChainsDir(options.memoryDir, options.causalTrajectoryStoreDir);\n const chainIndex = await readChainIndex(chainsDir);\n const context = formatCausalContext(trajectories, chainIndex);\n\n const llm = new FallbackLlmClient(options.gatewayConfig, {\n workspaceDir: options.workspaceDir,\n });\n const llmOptions = { agentId: options.gatewayAgentId, modelChain: options.modelChain };\n if (!llm.isAvailable(llmOptions)) return null;\n\n const result = await consolidateWithLlm(context, llm, llmOptions);\n if (result.preferences.length === 0 && result.rules.length === 0) return null;\n\n const lines: string[] = [\"## Behavioral Insights (from Causal Chain Analysis)\", \"\"];\n\n for (const pref of result.preferences) {\n lines.push(`- ${pref.statement}`);\n }\n\n for (const rule of result.rules) {\n lines.push(`- ${rule.content}`);\n }\n\n lines.push(\"\");\n return lines.join(\"\\n\");\n } catch (error) {\n log.warn(`[cmc] preference synthesis failed (non-fatal): ${error instanceof Error ? error.message : String(error)}`);\n return null;\n }\n}\n\n/**\n * Optional post-consolidation hook — materializes Codex-native memory artifacts\n * after a causal consolidation run. Guarded by `codexMaterializeMemories` and\n * `codexMaterializeOnConsolidation`. Returns `null` when disabled or when the\n * sentinel is missing (honors user hand-edits).\n *\n * Split from the orchestrator-owned flow so #378 avoids touching\n * orchestrator.ts while Wave 1 edits are in flight.\n */\nexport async function materializeAfterCausalConsolidation(options: {\n config: PluginConfig;\n namespace?: string;\n memories?: MemoryFile[];\n memoryDir?: string;\n codexHome?: string;\n rolloutSummaries?: RolloutSummaryInput[];\n now?: Date;\n}): Promise<MaterializeResult | null> {\n // Delegates to the shared post-consolidation helper — see\n // runPostConsolidationMaterialize in codex-materialize-runner.ts.\n return runPostConsolidationMaterialize(\"[cmc]\", options);\n}\n"],"mappings":"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","names":[]}
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  readChainIndex,
3
3
  resolveChainsDir
4
- } from "./chunk-Q6UZREJK.js";
4
+ } from "./chunk-RKRX4C4H.js";
5
5
  import "./chunk-B7RWBZXW.js";
6
6
  import {
7
7
  readCausalTrajectoryRecords,
8
8
  searchCausalTrajectories
9
- } from "./chunk-VECRSYQG.js";
9
+ } from "./chunk-NRGQ5HJO.js";
10
10
  import "./chunk-YCVB7X56.js";
11
11
  import "./chunk-A2IYSXDQ.js";
12
12
  import "./chunk-2Z5DIDQD.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  appendEdge
3
- } from "./chunk-WUBGMV3G.js";
4
- import "./chunk-LXY5VVGM.js";
3
+ } from "./chunk-KRAMCBIW.js";
5
4
  import "./chunk-YXW4KXCV.js";
6
- import "./chunk-GKCXTSFF.js";
7
5
  import "./chunk-2LSZVONP.js";
8
6
  import "./chunk-DEUNUKTD.js";
7
+ import "./chunk-LXY5VVGM.js";
8
+ import "./chunk-GKCXTSFF.js";
9
9
  import "./chunk-EBRG7ZIK.js";
10
10
  import "./chunk-X4OZMANG.js";
11
11
  import "./chunk-R2MBW2S4.js";
@@ -9,7 +9,7 @@ import {
9
9
  resolveCausalTrajectoryStoreDir,
10
10
  searchCausalTrajectories,
11
11
  validateCausalTrajectoryRecord
12
- } from "./chunk-VECRSYQG.js";
12
+ } from "./chunk-NRGQ5HJO.js";
13
13
  import "./chunk-YCVB7X56.js";
14
14
  import "./chunk-A2IYSXDQ.js";
15
15
  import "./chunk-2Z5DIDQD.js";
@@ -13,13 +13,16 @@ import {
13
13
  import {
14
14
  importSqlite
15
15
  } from "./chunk-PYHOAXTI.js";
16
+ import {
17
+ backupMemoryDir
18
+ } from "./chunk-2NLLXCJG.js";
16
19
  import {
17
20
  exportJsonBundle
18
21
  } from "./chunk-UP6MOYCB.js";
19
22
  import {
20
23
  exportOkfBundle,
21
24
  parseIncludeStatus
22
- } from "./chunk-QE2XQM3S.js";
25
+ } from "./chunk-BWF3KNSQ.js";
23
26
  import {
24
27
  exportSqlite
25
28
  } from "./chunk-BV2TIZ4F.js";
@@ -29,12 +32,12 @@ import {
29
32
  import {
30
33
  importJsonBundle
31
34
  } from "./chunk-2DL3OFLD.js";
32
- import {
33
- backupMemoryDir
34
- } from "./chunk-OWHERGF2.js";
35
35
  import {
36
36
  exportMarkdownBundle
37
37
  } from "./chunk-765K3SAT.js";
38
+ import {
39
+ RoutingRulesStore
40
+ } from "./chunk-TBUEE7XF.js";
38
41
  import {
39
42
  buildReplayNormalizerRegistry,
40
43
  clampBatchSize,
@@ -44,27 +47,24 @@ import {
44
47
  isReplaySource,
45
48
  normalizeReplaySessionKey
46
49
  } from "./chunk-AJVLDJU6.js";
47
- import {
48
- RoutingRulesStore
49
- } from "./chunk-TBUEE7XF.js";
50
50
  import {
51
51
  TailscaleHelper
52
52
  } from "./chunk-SZDLX763.js";
53
53
  import {
54
54
  WebDavServer
55
55
  } from "./chunk-PYIFUBRK.js";
56
+ import {
57
+ migrateObservations
58
+ } from "./chunk-EDR6CVWZ.js";
56
59
  import {
57
60
  rebuildMemoryLifecycleLedger
58
- } from "./chunk-3EGL7XZO.js";
61
+ } from "./chunk-WIBWONL4.js";
59
62
  import {
60
63
  rebuildObservations
61
64
  } from "./chunk-WHCD4Z3D.js";
62
65
  import {
63
66
  archiveObservations
64
67
  } from "./chunk-7IGMKQWK.js";
65
- import {
66
- migrateObservations
67
- } from "./chunk-EDR6CVWZ.js";
68
68
  import {
69
69
  getBulkImportSource,
70
70
  listBulkImportSources,
@@ -77,6 +77,9 @@ import {
77
77
  import {
78
78
  runCompatChecks
79
79
  } from "./chunk-2524MOWK.js";
80
+ import {
81
+ searchVerifiedEpisodes
82
+ } from "./chunk-E3DL3CAL.js";
80
83
  import {
81
84
  getUtilityLearningStatus,
82
85
  learnUtilityPromotionWeights
@@ -85,23 +88,20 @@ import {
85
88
  getUtilityTelemetryStatus,
86
89
  recordUtilityTelemetryEvent
87
90
  } from "./chunk-EOU6V4IN.js";
88
- import {
89
- searchVerifiedEpisodes
90
- } from "./chunk-VWJ56T63.js";
91
91
  import {
92
92
  ThreadingManager
93
93
  } from "./chunk-R7WYAXPO.js";
94
94
  import {
95
95
  promoteSemanticRuleFromMemory
96
- } from "./chunk-MZCTS3ZG.js";
96
+ } from "./chunk-NMOEOQV4.js";
97
97
  import {
98
98
  searchVerifiedSemanticRules
99
- } from "./chunk-FPANDKMQ.js";
99
+ } from "./chunk-O7GNSHFF.js";
100
100
  import {
101
101
  buildResumeBundleFromState,
102
102
  getResumeBundleStatus,
103
103
  recordResumeBundle
104
- } from "./chunk-RUAIO5UA.js";
104
+ } from "./chunk-XSJL62LE.js";
105
105
  import {
106
106
  getWorkProductLedgerStatus,
107
107
  recordWorkProductLedgerEntry,
@@ -113,6 +113,15 @@ import {
113
113
  import {
114
114
  parseXrayCliOptions
115
115
  } from "./chunk-LR7RW4T6.js";
116
+ import {
117
+ collectPatternMemories,
118
+ explainPatternMemory,
119
+ parsePatternsExplainOptions,
120
+ parsePatternsListOptions,
121
+ parseStrictCliDate,
122
+ renderPatternExplain,
123
+ renderPatternsList
124
+ } from "./chunk-3T74IZB3.js";
116
125
  import {
117
126
  readRuntimePolicySnapshot,
118
127
  sanitizeRuntimePolicyValues
@@ -125,21 +134,12 @@ import {
125
134
  runOperatorInventory,
126
135
  runOperatorRepair,
127
136
  runOperatorSetup
128
- } from "./chunk-2DPJFJFH.js";
137
+ } from "./chunk-6TIVVOVU.js";
129
138
  import {
130
139
  analyzeSessionIntegrity,
131
140
  applySessionRepair,
132
141
  planSessionRepair
133
142
  } from "./chunk-KFY3SGN7.js";
134
- import {
135
- collectPatternMemories,
136
- explainPatternMemory,
137
- parsePatternsExplainOptions,
138
- parsePatternsListOptions,
139
- parseStrictCliDate,
140
- renderPatternExplain,
141
- renderPatternsList
142
- } from "./chunk-3T74IZB3.js";
143
143
  import {
144
144
  GITHUB_CONNECTOR_ID,
145
145
  GMAIL_CONNECTOR_ID,
@@ -176,7 +176,7 @@ import {
176
176
  rebuildMemoryProjection,
177
177
  repairMemoryProjection,
178
178
  verifyMemoryProjection
179
- } from "./chunk-LU57EEJW.js";
179
+ } from "./chunk-VGRBKEBH.js";
180
180
  import {
181
181
  buildConnectorRowsFromDefinitions,
182
182
  parseConnectorsListOptions,
@@ -197,7 +197,7 @@ import {
197
197
  } from "./chunk-6TBIWIAG.js";
198
198
  import {
199
199
  parseConfig
200
- } from "./chunk-FJ264QBP.js";
200
+ } from "./chunk-KNCR7APE.js";
201
201
  import {
202
202
  applyManagedRegion,
203
203
  expandVaultTemplateTokens,
@@ -210,7 +210,7 @@ import {
210
210
  import {
211
211
  EngramAccessHttpServer,
212
212
  MeetingsInputError
213
- } from "./chunk-PKPOO6X5.js";
213
+ } from "./chunk-N6EM7ESC.js";
214
214
  import {
215
215
  WearablesInputError
216
216
  } from "./chunk-V7IZKJI3.js";
@@ -220,10 +220,10 @@ import {
220
220
  loadChatSession,
221
221
  processChatMessage,
222
222
  sessionBelongsToPrincipal
223
- } from "./chunk-5R2IF2KI.js";
223
+ } from "./chunk-OD7ZXCUF.js";
224
224
  import {
225
225
  EngramAccessService
226
- } from "./chunk-YBKQAVPZ.js";
226
+ } from "./chunk-O4CA53UY.js";
227
227
  import {
228
228
  WorkStorage
229
229
  } from "./chunk-MPC7TYTZ.js";
@@ -243,16 +243,16 @@ import {
243
243
  } from "./chunk-WUL6LDJ4.js";
244
244
  import {
245
245
  readAggregateExtractionWatermark
246
- } from "./chunk-RT2GN6KQ.js";
246
+ } from "./chunk-PBWJVRKE.js";
247
247
  import {
248
248
  getObjectiveStateStoreStatus
249
249
  } from "./chunk-4RNBLLZR.js";
250
250
  import {
251
251
  journalPath
252
- } from "./chunk-5KGYR5VN.js";
252
+ } from "./chunk-5DVOBBTV.js";
253
253
  import {
254
254
  searchHarmonicRetrieval
255
- } from "./chunk-7AIPWNM7.js";
255
+ } from "./chunk-VCBS5GRQ.js";
256
256
  import {
257
257
  getCueAnchorStoreStatus
258
258
  } from "./chunk-LXATZLSC.js";
@@ -261,18 +261,18 @@ import {
261
261
  readMemoryGovernanceRunArtifact,
262
262
  restoreMemoryGovernanceRun,
263
263
  runMemoryGovernance
264
- } from "./chunk-JCYEDMOY.js";
264
+ } from "./chunk-YY6PWFUC.js";
265
265
  import {
266
266
  listNamespaces,
267
267
  runNamespaceMigration,
268
268
  verifyNamespaces
269
- } from "./chunk-XTVH2NAW.js";
269
+ } from "./chunk-QFTNWDJ6.js";
270
270
  import {
271
271
  resolveNamespaceChildRoot
272
272
  } from "./chunk-3UXOZBHV.js";
273
273
  import {
274
274
  analyzeGraphHealth
275
- } from "./chunk-WUBGMV3G.js";
275
+ } from "./chunk-KRAMCBIW.js";
276
276
  import {
277
277
  hostSecretRefResolver,
278
278
  loadHostSecretRefResolver,
@@ -300,10 +300,10 @@ import {
300
300
  } from "./chunk-QDW3E4RD.js";
301
301
  import {
302
302
  getCausalTrajectoryStoreStatus
303
- } from "./chunk-VECRSYQG.js";
303
+ } from "./chunk-NRGQ5HJO.js";
304
304
  import {
305
305
  meetingIdDate
306
- } from "./chunk-L46MG2GE.js";
306
+ } from "./chunk-6W3QH3QW.js";
307
307
  import {
308
308
  isValidTranscriptDate
309
309
  } from "./chunk-UHVXE24Y.js";
@@ -6702,7 +6702,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6702
6702
  }
6703
6703
  }
6704
6704
  if (sourceArchive.endsWith(".enc")) {
6705
- const { isEncryptedCapsuleFile } = await import("./capsule-crypto-GWVG7LGC.js");
6705
+ const { isEncryptedCapsuleFile } = await import("./capsule-crypto-7FJQINUR.js");
6706
6706
  const encDetected = await isEncryptedCapsuleFile(sourceArchive).catch(() => true);
6707
6707
  if (encDetected) {
6708
6708
  throw new Error(
@@ -6865,7 +6865,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6865
6865
  const { parseExportBundle } = await import("./transfer/types.js");
6866
6866
  let decryptedBuf;
6867
6867
  try {
6868
- const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-GWVG7LGC.js");
6868
+ const { decryptCapsuleFileInMemory } = await import("./capsule-crypto-7FJQINUR.js");
6869
6869
  decryptedBuf = await decryptCapsuleFileInMemory(archivePath, memoryDir);
6870
6870
  } catch (decErr) {
6871
6871
  const msg = decErr instanceof Error ? decErr.message : String(decErr);
@@ -10140,4 +10140,4 @@ export {
10140
10140
  listMemoryMarkdownFilePaths,
10141
10141
  registerCli
10142
10142
  };
10143
- //# sourceMappingURL=chunk-J6B6FK2X.js.map
10143
+ //# sourceMappingURL=chunk-2BY56HE6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listNamespaces
3
- } from "./chunk-XTVH2NAW.js";
3
+ } from "./chunk-QFTNWDJ6.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-IG747LRN.js";
@@ -282,4 +282,4 @@ export {
282
282
  computeServiceCorpusWatermarks,
283
283
  computeServiceCorpusCensus
284
284
  };
285
- //# sourceMappingURL=chunk-ME5LVISI.js.map
285
+ //# sourceMappingURL=chunk-2J6BIOVN.js.map
@@ -2,7 +2,7 @@ import {
2
2
  readCausalTrajectoryRecordsStrict,
3
3
  readCausalTrajectoryRevisionToken,
4
4
  resolveCausalTrajectoryStoreDir
5
- } from "./chunk-VECRSYQG.js";
5
+ } from "./chunk-NRGQ5HJO.js";
6
6
 
7
7
  // src/coding/pre-action-gate.ts
8
8
  import { createHash } from "crypto";
@@ -221,4 +221,4 @@ export {
221
221
  normalizeActionIntent,
222
222
  PreActionFailureGate
223
223
  };
224
- //# sourceMappingURL=chunk-EIYJK7OD.js.map
224
+ //# sourceMappingURL=chunk-2M36PR7R.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-765K3SAT.js";
4
4
  import {
5
5
  encryptCapsuleFile
6
- } from "./chunk-UVYI6VIX.js";
6
+ } from "./chunk-X7Y7WX73.js";
7
7
  import {
8
8
  computeTransferOutputRel,
9
9
  isTransferPathExcluded
@@ -109,4 +109,4 @@ async function enforceRetention(outDirAbs, retentionDays) {
109
109
  export {
110
110
  backupMemoryDir
111
111
  };
112
- //# sourceMappingURL=chunk-OWHERGF2.js.map
112
+ //# sourceMappingURL=chunk-2NLLXCJG.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-LKRXGOQW.js";
11
11
  import {
12
12
  deriveSourceConnector
13
- } from "./chunk-6CC2YCKG.js";
13
+ } from "./chunk-MCS4LIXP.js";
14
14
  import {
15
15
  resolvePipelineProcessingCapabilities
16
16
  } from "./chunk-C5LWPYS3.js";
@@ -112,4 +112,4 @@ export {
112
112
  renderExtractionConversation,
113
113
  applyGroundingWithConnector
114
114
  };
115
- //# sourceMappingURL=chunk-WOPZ2P5Z.js.map
115
+ //# sourceMappingURL=chunk-3INLTKTW.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-5HFVWYHL.js";
4
4
  import {
5
5
  isGenericRecallExcludedPath
6
- } from "./chunk-5KGYR5VN.js";
6
+ } from "./chunk-5DVOBBTV.js";
7
7
  import {
8
8
  planRecallMode
9
9
  } from "./chunk-CSAKJVXW.js";
@@ -132,4 +132,4 @@ async function findExpectedMemory(orchestrator, namespaces, expect) {
132
132
  export {
133
133
  runRecallWhy
134
134
  };
135
- //# sourceMappingURL=chunk-6P6MZDBL.js.map
135
+ //# sourceMappingURL=chunk-3NL4ALUP.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  canonicalCategoryForAlias,
3
3
  categoryAliasCoercion
4
- } from "./chunk-QR6W3FSW.js";
4
+ } from "./chunk-BMG3SAXA.js";
5
5
 
6
6
  // src/access-observe-write-category.ts
7
7
  function splitCanonicalWriteRequest(request) {
@@ -22,4 +22,4 @@ function splitCanonicalWriteRequest(request) {
22
22
  export {
23
23
  splitCanonicalWriteRequest
24
24
  };
25
- //# sourceMappingURL=chunk-YUE7J2HZ.js.map
25
+ //# sourceMappingURL=chunk-3NYIXVCT.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  computeCorpusWatermarks,
6
6
  resolveCorpusNamespaceRoots
7
- } from "./chunk-ME5LVISI.js";
7
+ } from "./chunk-2J6BIOVN.js";
8
8
 
9
9
  // src/operator-doctor-corpus.ts
10
10
  var DIGEST_PREFIX_LENGTH = 12;
@@ -78,4 +78,4 @@ export {
78
78
  corpusWatermarksFromCheck,
79
79
  summarizeCorpusAndReplica
80
80
  };
81
- //# sourceMappingURL=chunk-B44NFHWI.js.map
81
+ //# sourceMappingURL=chunk-3PVKV3XL.js.map