@remnic/core 10.0.28 → 10.0.30

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 (330) hide show
  1. package/dist/access-admin-ops-surface.js +47 -46
  2. package/dist/access-authorization-probe.js +48 -47
  3. package/dist/access-boundary.js +47 -46
  4. package/dist/access-citation-namespace.js +3 -2
  5. package/dist/access-cli.js +96 -95
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-extraction-force-flush.js +47 -46
  8. package/dist/access-http-briefing.js +48 -47
  9. package/dist/access-http-query.js +49 -48
  10. package/dist/access-http.js +65 -64
  11. package/dist/access-identity-continuity-surface.js +47 -46
  12. package/dist/access-lcm-surface.js +47 -46
  13. package/dist/access-mcp.js +57 -56
  14. package/dist/access-namespace-preflight.js +47 -46
  15. package/dist/access-observe-write-category.js +11 -11
  16. package/dist/access-observe-write-surface.js +47 -46
  17. package/dist/access-offline-manifest.js +10 -10
  18. package/dist/access-operations-batch.js +49 -48
  19. package/dist/access-operations.js +56 -55
  20. package/dist/access-recall-concurrency.js +47 -46
  21. package/dist/access-recall-response.js +47 -46
  22. package/dist/access-recall-surface.js +47 -46
  23. package/dist/access-schema.js +6 -5
  24. package/dist/access-service.js +47 -46
  25. package/dist/access-surface-catalog.js +49 -48
  26. package/dist/access-surface-catalog.js.map +1 -1
  27. package/dist/active-recall.js +23 -22
  28. package/dist/active-recall.js.map +1 -1
  29. package/dist/{auto-sync-UQESPLCB.js → auto-sync-MX2AHVPQ.js} +8 -8
  30. package/dist/briefing.js +19 -18
  31. package/dist/buffer.js +8 -8
  32. package/dist/{capsule-merge-LGYURS3C.js → capsule-merge-LGYZAMO4.js} +3 -3
  33. package/dist/causal-consolidation.js +21 -20
  34. package/dist/causal-consolidation.js.map +1 -1
  35. package/dist/{chunk-2TGDT37F.js → chunk-27OJ5G3D.js} +13 -13
  36. package/dist/{chunk-5LRV557D.js → chunk-2FIJQNL7.js} +2 -2
  37. package/dist/{chunk-ETPIYK4J.js → chunk-2VBDSZ7U.js} +2 -2
  38. package/dist/{chunk-QLI74KWK.js → chunk-2XVLY424.js} +3 -3
  39. package/dist/{chunk-P55FACBG.js → chunk-3BOQPLCF.js} +6 -6
  40. package/dist/{chunk-3LRBJQZE.js → chunk-3CHHQXAR.js} +2 -2
  41. package/dist/{chunk-3GYSZHMT.js → chunk-3CZRBTJK.js} +2 -2
  42. package/dist/{chunk-HFSPY26A.js → chunk-3IXNL6SK.js} +2 -2
  43. package/dist/{chunk-4DQ4VEIQ.js → chunk-3SN2D43X.js} +2 -2
  44. package/dist/{chunk-QMYB3N7X.js → chunk-4HNINU7Q.js} +28 -28
  45. package/dist/{chunk-LW6UHNWA.js → chunk-4HYP4OKH.js} +2 -2
  46. package/dist/{chunk-GKJJNO7C.js → chunk-4OE4UE2Y.js} +6 -6
  47. package/dist/{chunk-5SMR542T.js → chunk-5GT4ESLR.js} +2 -2
  48. package/dist/{chunk-DWL6YIZH.js → chunk-5JI3XWI2.js} +2 -2
  49. package/dist/{chunk-PDN6MRWF.js → chunk-5NPZFXQH.js} +2 -2
  50. package/dist/{chunk-Y6IF6H2U.js → chunk-5SMHQW45.js} +2 -2
  51. package/dist/{chunk-PRUXE3RC.js → chunk-654GT5UP.js} +2 -2
  52. package/dist/{chunk-3E6DGSGZ.js → chunk-6MC7UQ6D.js} +2 -2
  53. package/dist/{chunk-655FVTCD.js → chunk-74IN6PV5.js} +2 -2
  54. package/dist/{chunk-XOSCGZEV.js → chunk-7FZ4YVOH.js} +2 -2
  55. package/dist/{chunk-MWWAQXZ6.js → chunk-7HFTCBCZ.js} +2 -2
  56. package/dist/{chunk-NDZ7APNY.js → chunk-7VB3Y5OL.js} +3 -3
  57. package/dist/{chunk-YEF5AAWN.js → chunk-A54E2ZTD.js} +2 -2
  58. package/dist/{chunk-DEY7B77Y.js → chunk-AHCELJMH.js} +2 -2
  59. package/dist/{chunk-PIWFNPQT.js → chunk-AL3TCNSJ.js} +4 -4
  60. package/dist/{chunk-KNWC2EPP.js → chunk-AUYFUBBE.js} +5 -5
  61. package/dist/{chunk-XN6ABQGM.js → chunk-BIE3ZH3N.js} +27 -27
  62. package/dist/{chunk-A3IURDU2.js → chunk-C2AOL6MK.js} +3 -3
  63. package/dist/{chunk-J4PILQJG.js → chunk-C2QVDLQV.js} +2 -2
  64. package/dist/{chunk-RKB4JZEM.js → chunk-CKR7LXEK.js} +67 -45
  65. package/dist/chunk-CKR7LXEK.js.map +1 -0
  66. package/dist/{chunk-AWLQNLTM.js → chunk-CSGFGQBI.js} +2 -2
  67. package/dist/{chunk-HZKDYR3Z.js → chunk-D4RV54HH.js} +2 -2
  68. package/dist/{chunk-OKNB2II7.js → chunk-DDLRKPR2.js} +6 -6
  69. package/dist/{chunk-3X3PNU3T.js → chunk-DLH3ECZP.js} +5 -5
  70. package/dist/chunk-DNIG3JME.js +892 -0
  71. package/dist/chunk-DNIG3JME.js.map +1 -0
  72. package/dist/{chunk-SA6GMZJY.js → chunk-DP3TSAYT.js} +2 -2
  73. package/dist/{chunk-XAJH5H3Z.js → chunk-FN6OFDBZ.js} +2 -2
  74. package/dist/{chunk-SUZG7UUK.js → chunk-G6DAE2LT.js} +2 -2
  75. package/dist/{chunk-AUPL775F.js → chunk-GSKW64NB.js} +2 -2
  76. package/dist/{chunk-3Z5LSDKR.js → chunk-GWB7ZD2A.js} +2 -2
  77. package/dist/{chunk-XOWR3I2W.js → chunk-HG2VVIKI.js} +9 -9
  78. package/dist/{chunk-23ZQPP2G.js → chunk-HOSJESKO.js} +3 -3
  79. package/dist/{chunk-EU6IRUCY.js → chunk-IDPZCHET.js} +2 -2
  80. package/dist/{chunk-3EE7EHFX.js → chunk-IO2UQVR2.js} +2 -2
  81. package/dist/{chunk-BWXKJDDH.js → chunk-ISMZ5UNE.js} +3 -3
  82. package/dist/{chunk-SX4QDWXK.js → chunk-IWUFKS4J.js} +2 -2
  83. package/dist/{chunk-MIIZAEJD.js → chunk-IY7DGT2Z.js} +2 -2
  84. package/dist/{chunk-STBX5X6B.js → chunk-JAYNUYSJ.js} +2 -2
  85. package/dist/{chunk-GV2V4CX6.js → chunk-K2REHR42.js} +2 -2
  86. package/dist/{chunk-NRG67KMO.js → chunk-KFKFK6G6.js} +10 -10
  87. package/dist/{chunk-FDPE6OIK.js → chunk-LDEKVBVO.js} +4 -4
  88. package/dist/{chunk-C2J4LBNB.js → chunk-M236YHUH.js} +5 -5
  89. package/dist/{chunk-L5VCT7LU.js → chunk-MCLZM5G7.js} +2 -2
  90. package/dist/{chunk-7Z3DLNSD.js → chunk-MGKH5KO3.js} +2 -2
  91. package/dist/{chunk-PUDYANAX.js → chunk-MMBLOJJB.js} +2 -2
  92. package/dist/{chunk-EFHNFTWB.js → chunk-MND4YJSX.js} +2 -2
  93. package/dist/{chunk-BQOGQULP.js → chunk-MZZEMPCI.js} +2 -2
  94. package/dist/{chunk-CQBNFDSG.js → chunk-NAPHQ2MG.js} +2 -2
  95. package/dist/{chunk-B6VPA3PF.js → chunk-NB2YX6X2.js} +6 -6
  96. package/dist/{chunk-PCSPXMPD.js → chunk-NCPR2FOJ.js} +3 -3
  97. package/dist/{chunk-67F6SBCJ.js → chunk-NOMHXZD7.js} +2 -2
  98. package/dist/{chunk-LWFWZTWX.js → chunk-NQV6G6MU.js} +2 -2
  99. package/dist/{chunk-JSFU7AFZ.js → chunk-OANSZGAG.js} +2 -2
  100. package/dist/{chunk-364M2T3D.js → chunk-OIIAIY7J.js} +3 -3
  101. package/dist/{chunk-IP5QGSNH.js → chunk-OXX4ORRL.js} +15 -15
  102. package/dist/{chunk-RTTPBBAN.js → chunk-OXYXMGRH.js} +4 -4
  103. package/dist/{chunk-K7BN34IA.js → chunk-PL26BCRN.js} +5 -5
  104. package/dist/{chunk-PM72NSEW.js → chunk-PYCTZ2HX.js} +2 -2
  105. package/dist/{chunk-P3NXZAV7.js → chunk-PZEADMX4.js} +2 -2
  106. package/dist/{chunk-QPH52AZB.js → chunk-QNDOTDJK.js} +2 -2
  107. package/dist/{chunk-LZACDIM2.js → chunk-RBGRQEW3.js} +4 -4
  108. package/dist/{chunk-V4JZCTMK.js → chunk-TKBW4YLS.js} +2 -2
  109. package/dist/{chunk-4D2YH47Z.js → chunk-TRW7N4FS.js} +2 -2
  110. package/dist/{chunk-XALR4DOQ.js → chunk-TTIEXXL3.js} +365 -1108
  111. package/dist/chunk-TTIEXXL3.js.map +1 -0
  112. package/dist/{chunk-OQJKY3Z5.js → chunk-UAAAXSKQ.js} +2 -2
  113. package/dist/{chunk-4LJSCW24.js → chunk-UM73Q46J.js} +2 -2
  114. package/dist/{chunk-7EJCAFMS.js → chunk-UTXYOWDR.js} +2 -2
  115. package/dist/{chunk-OGOADX26.js → chunk-UUYAW3JH.js} +2 -2
  116. package/dist/{chunk-UTGHW2Y5.js → chunk-UVUBLLM3.js} +3 -3
  117. package/dist/{chunk-4GGTC2AX.js → chunk-V4FI2TG6.js} +3 -3
  118. package/dist/{chunk-MO6N4QYY.js → chunk-VARNSLUW.js} +4 -4
  119. package/dist/{chunk-RQUF3FXK.js → chunk-VEB7NEON.js} +4 -4
  120. package/dist/{chunk-SSFO7B7H.js → chunk-VLBFSD7B.js} +2 -2
  121. package/dist/{chunk-NZFFGO5O.js → chunk-VXWOJPSY.js} +36 -3
  122. package/dist/chunk-VXWOJPSY.js.map +1 -0
  123. package/dist/{chunk-JNIVZNIB.js → chunk-WKVL2G7X.js} +4 -4
  124. package/dist/{chunk-KJXP6RUG.js → chunk-WNEVEMJ3.js} +4 -4
  125. package/dist/{chunk-I4MYLDRY.js → chunk-WQIYGYY6.js} +2 -2
  126. package/dist/{chunk-GQJKVQJR.js → chunk-WYLBEJQI.js} +2 -2
  127. package/dist/{chunk-JCPR47NY.js → chunk-XNROYP5E.js} +2 -2
  128. package/dist/{chunk-XNAOCY67.js → chunk-XVZIBMSY.js} +3 -3
  129. package/dist/{chunk-TZZFGR4E.js → chunk-YGVZ4QOZ.js} +4 -4
  130. package/dist/{chunk-C5JXYJHN.js → chunk-YZTFQBYY.js} +4 -4
  131. package/dist/{chunk-JTLXVXYH.js → chunk-ZCRDYQL6.js} +2 -2
  132. package/dist/{chunk-MAAL6OZV.js → chunk-ZG3HZZ6K.js} +90 -36
  133. package/dist/chunk-ZG3HZZ6K.js.map +1 -0
  134. package/dist/{chunk-CRVL6SLC.js → chunk-ZXTAHSQU.js} +2 -2
  135. package/dist/cli.js +80 -79
  136. package/dist/coding/export-okf-codegraph.js +20 -19
  137. package/dist/coding/export-okf-codegraph.js.map +1 -1
  138. package/dist/compounding/engine.js +22 -21
  139. package/dist/config.js +23 -22
  140. package/dist/connectors/codex-materialize-runner.js +20 -19
  141. package/dist/connectors/codex-materialize.js +2 -2
  142. package/dist/connectors/index.js +20 -19
  143. package/dist/consolidation-provenance-check.js +3 -3
  144. package/dist/consolidation-undo.js +2 -2
  145. package/dist/contradiction/index.js +6 -5
  146. package/dist/convergence-refresh.js +21 -20
  147. package/dist/corpus-watermark.js +21 -20
  148. package/dist/deep-recall-http-glue.js +7 -6
  149. package/dist/entity-canonical-id-migration-GD5MPFUF.js +28 -0
  150. package/dist/entity-retrieval.js +19 -18
  151. package/dist/explicit-capture.js +8 -7
  152. package/dist/external-wiki-access.js +48 -47
  153. package/dist/extraction.js +24 -23
  154. package/dist/harmonic-retrieval.js +20 -19
  155. package/dist/harmonic-source-lookup.js +3 -2
  156. package/dist/index.js +96 -95
  157. package/dist/location/index.js +22 -21
  158. package/dist/maintenance/memory-governance.js +19 -18
  159. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -18
  160. package/dist/maintenance/rebuild-memory-projection-runner.js +21 -20
  161. package/dist/maintenance/rebuild-memory-projection.js +20 -19
  162. package/dist/memory-browse-operations.js +48 -47
  163. package/dist/memory-subject.js +4 -3
  164. package/dist/namespaces/migrate.js +20 -19
  165. package/dist/namespaces/search.js +7 -7
  166. package/dist/namespaces/storage.js +19 -18
  167. package/dist/offline-sync-file-io.js +3 -2
  168. package/dist/offline-sync-impression-drain.js +4 -4
  169. package/dist/offline-sync-snapshot-stream.js +6 -5
  170. package/dist/offline-sync-upload-staging.js +4 -3
  171. package/dist/offline-sync.js +5 -4
  172. package/dist/operator-doctor-corpus.js +22 -21
  173. package/dist/operator-toolkit.js +33 -32
  174. package/dist/orchestration/maintenance.js +32 -31
  175. package/dist/orchestration/orchestrator-init.d.ts +3 -0
  176. package/dist/orchestration/orchestrator-init.d.ts.map +1 -1
  177. package/dist/orchestrator.d.ts.map +1 -1
  178. package/dist/orchestrator.js +96 -95
  179. package/dist/page-versioning.js +2 -2
  180. package/dist/recall-navigation-operations.js +48 -47
  181. package/dist/recall-navigation.js +47 -46
  182. package/dist/recall-state.js +2 -2
  183. package/dist/reconcile/manifest.js +4 -3
  184. package/dist/{resolution-ZU5BIAJA.js → resolution-AMYTPT5X.js} +7 -6
  185. package/dist/resolution-AMYTPT5X.js.map +1 -0
  186. package/dist/resume-bundles.js +24 -23
  187. package/dist/retrieval-agents.js +3 -2
  188. package/dist/salvage-envelope.js +6 -5
  189. package/dist/search/document-scanner.js +2 -2
  190. package/dist/search/factory.js +6 -6
  191. package/dist/search/index.js +6 -6
  192. package/dist/search/lancedb-backend.js +3 -3
  193. package/dist/search/meilisearch-backend.js +3 -3
  194. package/dist/search/orama-backend.js +3 -3
  195. package/dist/secure-store/entity-file-read.d.ts +9 -0
  196. package/dist/secure-store/entity-file-read.d.ts.map +1 -0
  197. package/dist/secure-store/index.js +3 -2
  198. package/dist/secure-store/secure-fs.d.ts.map +1 -1
  199. package/dist/semantic-consolidation.js +21 -20
  200. package/dist/semantic-rule-promotion.js +19 -18
  201. package/dist/semantic-rule-verifier.js +19 -18
  202. package/dist/shared-context/manager.js +2 -2
  203. package/dist/source-agent-qualifier.js +23 -22
  204. package/dist/standup/build.js +19 -18
  205. package/dist/storage/entity-canonical-id-migration-runner.d.ts +12 -0
  206. package/dist/storage/entity-canonical-id-migration-runner.d.ts.map +1 -1
  207. package/dist/storage/entity-canonical-id-migration.d.ts +1 -0
  208. package/dist/storage/entity-canonical-id-migration.d.ts.map +1 -1
  209. package/dist/storage/entity-canonical-id-references.d.ts +14 -0
  210. package/dist/storage/entity-canonical-id-references.d.ts.map +1 -1
  211. package/dist/storage/entity-store.d.ts +4 -0
  212. package/dist/storage/entity-store.d.ts.map +1 -1
  213. package/dist/storage.d.ts +7 -2
  214. package/dist/storage.d.ts.map +1 -1
  215. package/dist/storage.js +18 -17
  216. package/dist/subject-config.js +5 -4
  217. package/dist/support-passport/index.js +50 -49
  218. package/dist/transfer/capsule-import.js +3 -3
  219. package/dist/transfer/export-okf.js +20 -19
  220. package/dist/verified-recall.js +19 -18
  221. package/dist/who-knows-cli.js +20 -19
  222. package/dist/who-knows.js +19 -18
  223. package/dist/write-envelope.js +5 -4
  224. package/package.json +2 -2
  225. package/src/orchestration/orchestrator-init.ts +26 -3
  226. package/src/orchestrator.ts +1 -0
  227. package/src/secure-store/entity-file-read.ts +55 -0
  228. package/src/secure-store/secure-fs.ts +2 -1
  229. package/src/storage/entity-canonical-id-migration-runner.ts +36 -0
  230. package/src/storage/entity-canonical-id-migration.ts +1 -1
  231. package/src/storage/entity-canonical-id-references.ts +57 -2
  232. package/src/storage/entity-store.ts +138 -25
  233. package/src/storage.ts +15 -15
  234. package/dist/chunk-MAAL6OZV.js.map +0 -1
  235. package/dist/chunk-NZFFGO5O.js.map +0 -1
  236. package/dist/chunk-RKB4JZEM.js.map +0 -1
  237. package/dist/chunk-XALR4DOQ.js.map +0 -1
  238. /package/dist/{auto-sync-UQESPLCB.js.map → auto-sync-MX2AHVPQ.js.map} +0 -0
  239. /package/dist/{capsule-merge-LGYURS3C.js.map → capsule-merge-LGYZAMO4.js.map} +0 -0
  240. /package/dist/{chunk-2TGDT37F.js.map → chunk-27OJ5G3D.js.map} +0 -0
  241. /package/dist/{chunk-5LRV557D.js.map → chunk-2FIJQNL7.js.map} +0 -0
  242. /package/dist/{chunk-ETPIYK4J.js.map → chunk-2VBDSZ7U.js.map} +0 -0
  243. /package/dist/{chunk-QLI74KWK.js.map → chunk-2XVLY424.js.map} +0 -0
  244. /package/dist/{chunk-P55FACBG.js.map → chunk-3BOQPLCF.js.map} +0 -0
  245. /package/dist/{chunk-3LRBJQZE.js.map → chunk-3CHHQXAR.js.map} +0 -0
  246. /package/dist/{chunk-3GYSZHMT.js.map → chunk-3CZRBTJK.js.map} +0 -0
  247. /package/dist/{chunk-HFSPY26A.js.map → chunk-3IXNL6SK.js.map} +0 -0
  248. /package/dist/{chunk-4DQ4VEIQ.js.map → chunk-3SN2D43X.js.map} +0 -0
  249. /package/dist/{chunk-QMYB3N7X.js.map → chunk-4HNINU7Q.js.map} +0 -0
  250. /package/dist/{chunk-LW6UHNWA.js.map → chunk-4HYP4OKH.js.map} +0 -0
  251. /package/dist/{chunk-GKJJNO7C.js.map → chunk-4OE4UE2Y.js.map} +0 -0
  252. /package/dist/{chunk-5SMR542T.js.map → chunk-5GT4ESLR.js.map} +0 -0
  253. /package/dist/{chunk-DWL6YIZH.js.map → chunk-5JI3XWI2.js.map} +0 -0
  254. /package/dist/{chunk-PDN6MRWF.js.map → chunk-5NPZFXQH.js.map} +0 -0
  255. /package/dist/{chunk-Y6IF6H2U.js.map → chunk-5SMHQW45.js.map} +0 -0
  256. /package/dist/{chunk-PRUXE3RC.js.map → chunk-654GT5UP.js.map} +0 -0
  257. /package/dist/{chunk-3E6DGSGZ.js.map → chunk-6MC7UQ6D.js.map} +0 -0
  258. /package/dist/{chunk-655FVTCD.js.map → chunk-74IN6PV5.js.map} +0 -0
  259. /package/dist/{chunk-XOSCGZEV.js.map → chunk-7FZ4YVOH.js.map} +0 -0
  260. /package/dist/{chunk-MWWAQXZ6.js.map → chunk-7HFTCBCZ.js.map} +0 -0
  261. /package/dist/{chunk-NDZ7APNY.js.map → chunk-7VB3Y5OL.js.map} +0 -0
  262. /package/dist/{chunk-YEF5AAWN.js.map → chunk-A54E2ZTD.js.map} +0 -0
  263. /package/dist/{chunk-DEY7B77Y.js.map → chunk-AHCELJMH.js.map} +0 -0
  264. /package/dist/{chunk-PIWFNPQT.js.map → chunk-AL3TCNSJ.js.map} +0 -0
  265. /package/dist/{chunk-KNWC2EPP.js.map → chunk-AUYFUBBE.js.map} +0 -0
  266. /package/dist/{chunk-XN6ABQGM.js.map → chunk-BIE3ZH3N.js.map} +0 -0
  267. /package/dist/{chunk-A3IURDU2.js.map → chunk-C2AOL6MK.js.map} +0 -0
  268. /package/dist/{chunk-J4PILQJG.js.map → chunk-C2QVDLQV.js.map} +0 -0
  269. /package/dist/{chunk-AWLQNLTM.js.map → chunk-CSGFGQBI.js.map} +0 -0
  270. /package/dist/{chunk-HZKDYR3Z.js.map → chunk-D4RV54HH.js.map} +0 -0
  271. /package/dist/{chunk-OKNB2II7.js.map → chunk-DDLRKPR2.js.map} +0 -0
  272. /package/dist/{chunk-3X3PNU3T.js.map → chunk-DLH3ECZP.js.map} +0 -0
  273. /package/dist/{chunk-SA6GMZJY.js.map → chunk-DP3TSAYT.js.map} +0 -0
  274. /package/dist/{chunk-XAJH5H3Z.js.map → chunk-FN6OFDBZ.js.map} +0 -0
  275. /package/dist/{chunk-SUZG7UUK.js.map → chunk-G6DAE2LT.js.map} +0 -0
  276. /package/dist/{chunk-AUPL775F.js.map → chunk-GSKW64NB.js.map} +0 -0
  277. /package/dist/{chunk-3Z5LSDKR.js.map → chunk-GWB7ZD2A.js.map} +0 -0
  278. /package/dist/{chunk-XOWR3I2W.js.map → chunk-HG2VVIKI.js.map} +0 -0
  279. /package/dist/{chunk-23ZQPP2G.js.map → chunk-HOSJESKO.js.map} +0 -0
  280. /package/dist/{chunk-EU6IRUCY.js.map → chunk-IDPZCHET.js.map} +0 -0
  281. /package/dist/{chunk-3EE7EHFX.js.map → chunk-IO2UQVR2.js.map} +0 -0
  282. /package/dist/{chunk-BWXKJDDH.js.map → chunk-ISMZ5UNE.js.map} +0 -0
  283. /package/dist/{chunk-SX4QDWXK.js.map → chunk-IWUFKS4J.js.map} +0 -0
  284. /package/dist/{chunk-MIIZAEJD.js.map → chunk-IY7DGT2Z.js.map} +0 -0
  285. /package/dist/{chunk-STBX5X6B.js.map → chunk-JAYNUYSJ.js.map} +0 -0
  286. /package/dist/{chunk-GV2V4CX6.js.map → chunk-K2REHR42.js.map} +0 -0
  287. /package/dist/{chunk-NRG67KMO.js.map → chunk-KFKFK6G6.js.map} +0 -0
  288. /package/dist/{chunk-FDPE6OIK.js.map → chunk-LDEKVBVO.js.map} +0 -0
  289. /package/dist/{chunk-C2J4LBNB.js.map → chunk-M236YHUH.js.map} +0 -0
  290. /package/dist/{chunk-L5VCT7LU.js.map → chunk-MCLZM5G7.js.map} +0 -0
  291. /package/dist/{chunk-7Z3DLNSD.js.map → chunk-MGKH5KO3.js.map} +0 -0
  292. /package/dist/{chunk-PUDYANAX.js.map → chunk-MMBLOJJB.js.map} +0 -0
  293. /package/dist/{chunk-EFHNFTWB.js.map → chunk-MND4YJSX.js.map} +0 -0
  294. /package/dist/{chunk-BQOGQULP.js.map → chunk-MZZEMPCI.js.map} +0 -0
  295. /package/dist/{chunk-CQBNFDSG.js.map → chunk-NAPHQ2MG.js.map} +0 -0
  296. /package/dist/{chunk-B6VPA3PF.js.map → chunk-NB2YX6X2.js.map} +0 -0
  297. /package/dist/{chunk-PCSPXMPD.js.map → chunk-NCPR2FOJ.js.map} +0 -0
  298. /package/dist/{chunk-67F6SBCJ.js.map → chunk-NOMHXZD7.js.map} +0 -0
  299. /package/dist/{chunk-LWFWZTWX.js.map → chunk-NQV6G6MU.js.map} +0 -0
  300. /package/dist/{chunk-JSFU7AFZ.js.map → chunk-OANSZGAG.js.map} +0 -0
  301. /package/dist/{chunk-364M2T3D.js.map → chunk-OIIAIY7J.js.map} +0 -0
  302. /package/dist/{chunk-IP5QGSNH.js.map → chunk-OXX4ORRL.js.map} +0 -0
  303. /package/dist/{chunk-RTTPBBAN.js.map → chunk-OXYXMGRH.js.map} +0 -0
  304. /package/dist/{chunk-K7BN34IA.js.map → chunk-PL26BCRN.js.map} +0 -0
  305. /package/dist/{chunk-PM72NSEW.js.map → chunk-PYCTZ2HX.js.map} +0 -0
  306. /package/dist/{chunk-P3NXZAV7.js.map → chunk-PZEADMX4.js.map} +0 -0
  307. /package/dist/{chunk-QPH52AZB.js.map → chunk-QNDOTDJK.js.map} +0 -0
  308. /package/dist/{chunk-LZACDIM2.js.map → chunk-RBGRQEW3.js.map} +0 -0
  309. /package/dist/{chunk-V4JZCTMK.js.map → chunk-TKBW4YLS.js.map} +0 -0
  310. /package/dist/{chunk-4D2YH47Z.js.map → chunk-TRW7N4FS.js.map} +0 -0
  311. /package/dist/{chunk-OQJKY3Z5.js.map → chunk-UAAAXSKQ.js.map} +0 -0
  312. /package/dist/{chunk-4LJSCW24.js.map → chunk-UM73Q46J.js.map} +0 -0
  313. /package/dist/{chunk-7EJCAFMS.js.map → chunk-UTXYOWDR.js.map} +0 -0
  314. /package/dist/{chunk-OGOADX26.js.map → chunk-UUYAW3JH.js.map} +0 -0
  315. /package/dist/{chunk-UTGHW2Y5.js.map → chunk-UVUBLLM3.js.map} +0 -0
  316. /package/dist/{chunk-4GGTC2AX.js.map → chunk-V4FI2TG6.js.map} +0 -0
  317. /package/dist/{chunk-MO6N4QYY.js.map → chunk-VARNSLUW.js.map} +0 -0
  318. /package/dist/{chunk-RQUF3FXK.js.map → chunk-VEB7NEON.js.map} +0 -0
  319. /package/dist/{chunk-SSFO7B7H.js.map → chunk-VLBFSD7B.js.map} +0 -0
  320. /package/dist/{chunk-JNIVZNIB.js.map → chunk-WKVL2G7X.js.map} +0 -0
  321. /package/dist/{chunk-KJXP6RUG.js.map → chunk-WNEVEMJ3.js.map} +0 -0
  322. /package/dist/{chunk-I4MYLDRY.js.map → chunk-WQIYGYY6.js.map} +0 -0
  323. /package/dist/{chunk-GQJKVQJR.js.map → chunk-WYLBEJQI.js.map} +0 -0
  324. /package/dist/{chunk-JCPR47NY.js.map → chunk-XNROYP5E.js.map} +0 -0
  325. /package/dist/{chunk-XNAOCY67.js.map → chunk-XVZIBMSY.js.map} +0 -0
  326. /package/dist/{chunk-TZZFGR4E.js.map → chunk-YGVZ4QOZ.js.map} +0 -0
  327. /package/dist/{chunk-C5JXYJHN.js.map → chunk-YZTFQBYY.js.map} +0 -0
  328. /package/dist/{chunk-JTLXVXYH.js.map → chunk-ZCRDYQL6.js.map} +0 -0
  329. /package/dist/{chunk-CRVL6SLC.js.map → chunk-ZXTAHSQU.js.map} +0 -0
  330. /package/dist/{resolution-ZU5BIAJA.js.map → entity-canonical-id-migration-GD5MPFUF.js.map} +0 -0
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-GZXXPCWJ.js";
5
5
  import {
6
6
  buildExtensionsBlockForConsolidation
7
- } from "./chunk-JSFU7AFZ.js";
7
+ } from "./chunk-OANSZGAG.js";
8
8
  import "./chunk-5JMAGU26.js";
9
9
  import "./chunk-B7RWBZXW.js";
10
10
  import {
11
11
  runPostConsolidationMaterialize
12
- } from "./chunk-4GGTC2AX.js";
12
+ } from "./chunk-V4FI2TG6.js";
13
13
  import "./chunk-3UXOZBHV.js";
14
- import "./chunk-PIWFNPQT.js";
14
+ import "./chunk-AL3TCNSJ.js";
15
15
  import "./chunk-TOTT6S2V.js";
16
16
  import "./chunk-236PXYG7.js";
17
17
  import "./chunk-ZCUTSMR2.js";
@@ -19,18 +19,19 @@ import "./chunk-QDW3E4RD.js";
19
19
  import {
20
20
  resolveCausalTrajectoryStoreDir
21
21
  } from "./chunk-C2RW36YR.js";
22
- import "./chunk-XALR4DOQ.js";
22
+ import "./chunk-TTIEXXL3.js";
23
23
  import "./chunk-UHVXE24Y.js";
24
24
  import "./chunk-TRMJ6BYC.js";
25
- import "./chunk-V4JZCTMK.js";
26
- import "./chunk-MWWAQXZ6.js";
27
- import "./chunk-RTTPBBAN.js";
28
- import "./chunk-655FVTCD.js";
29
- import "./chunk-GQJKVQJR.js";
25
+ import "./chunk-DNIG3JME.js";
26
+ import "./chunk-TKBW4YLS.js";
27
+ import "./chunk-7HFTCBCZ.js";
28
+ import "./chunk-OXYXMGRH.js";
29
+ import "./chunk-74IN6PV5.js";
30
+ import "./chunk-WYLBEJQI.js";
30
31
  import "./chunk-CYEPCZN5.js";
31
- import "./chunk-HFSPY26A.js";
32
+ import "./chunk-3IXNL6SK.js";
32
33
  import "./chunk-7VO6E5UD.js";
33
- import "./chunk-KJXP6RUG.js";
34
+ import "./chunk-WNEVEMJ3.js";
34
35
  import "./chunk-VOKHZRHW.js";
35
36
  import "./chunk-GUMZC2BO.js";
36
37
  import "./chunk-TFA6HPOA.js";
@@ -47,7 +48,7 @@ import "./chunk-LDXUBPMO.js";
47
48
  import "./chunk-EPOYPPOW.js";
48
49
  import "./chunk-AAD2ZS6P.js";
49
50
  import "./chunk-FF6N7BXC.js";
50
- import "./chunk-JNIVZNIB.js";
51
+ import "./chunk-WKVL2G7X.js";
51
52
  import "./chunk-YXZG5TVN.js";
52
53
  import "./chunk-ZIKENA2C.js";
53
54
  import "./chunk-3OUGSOJP.js";
@@ -56,10 +57,10 @@ import "./chunk-3ONXXHQO.js";
56
57
  import "./chunk-6MKLMEBE.js";
57
58
  import "./chunk-3WU7XOFN.js";
58
59
  import "./chunk-G7D6GZ5J.js";
59
- import "./chunk-3GYSZHMT.js";
60
+ import "./chunk-3CZRBTJK.js";
60
61
  import "./chunk-M5GVCJSJ.js";
61
62
  import "./chunk-RBOJCG4T.js";
62
- import "./chunk-NZFFGO5O.js";
63
+ import "./chunk-VXWOJPSY.js";
63
64
  import "./chunk-5WITETWU.js";
64
65
  import "./chunk-6CIAGZ6X.js";
65
66
  import "./chunk-7CT3AI52.js";
@@ -91,22 +92,21 @@ import "./chunk-PJKTFXE2.js";
91
92
  import "./chunk-W5BIQOAJ.js";
92
93
  import "./chunk-LDXNKEYB.js";
93
94
  import "./chunk-YBA52OKG.js";
94
- import "./chunk-5LRV557D.js";
95
+ import "./chunk-2FIJQNL7.js";
95
96
  import "./chunk-BT7NVCML.js";
96
- import "./chunk-STBX5X6B.js";
97
+ import "./chunk-JAYNUYSJ.js";
97
98
  import "./chunk-BJMBJZ2Y.js";
98
99
  import "./chunk-UKJAGEXH.js";
99
100
  import "./chunk-FP2373TW.js";
100
101
  import "./chunk-L272A5QW.js";
101
- import "./chunk-P55FACBG.js";
102
+ import "./chunk-3BOQPLCF.js";
102
103
  import "./chunk-ZA53AZND.js";
103
104
  import "./chunk-7RJUVTVF.js";
104
105
  import "./chunk-AL3UYZ5N.js";
105
106
  import "./chunk-RL6NEVXT.js";
106
107
  import "./chunk-YET735EZ.js";
107
108
  import "./chunk-PWPIERBM.js";
108
- import "./chunk-C7HJ3NEI.js";
109
- import "./chunk-DEY7B77Y.js";
109
+ import "./chunk-AHCELJMH.js";
110
110
  import "./chunk-5FVVY2EB.js";
111
111
  import "./chunk-BTNNL7ZW.js";
112
112
  import "./chunk-JDSVLVCG.js";
@@ -131,8 +131,9 @@ import {
131
131
  } from "./chunk-2Z5DIDQD.js";
132
132
  import "./chunk-QUIRIG2P.js";
133
133
  import "./chunk-LDPPTPO5.js";
134
- import "./chunk-MAAL6OZV.js";
134
+ import "./chunk-ZG3HZZ6K.js";
135
135
  import "./chunk-A6XUJE5D.js";
136
+ import "./chunk-C7HJ3NEI.js";
136
137
  import "./chunk-VS2IYZRU.js";
137
138
  import "./chunk-KNA3BXXL.js";
138
139
  import {
@@ -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":"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","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":[]}
@@ -9,26 +9,26 @@ import {
9
9
  } from "./chunk-666A3MOW.js";
10
10
  import {
11
11
  PROJECTION_REBUILD_RUNNER_FLAG
12
- } from "./chunk-4DQ4VEIQ.js";
12
+ } from "./chunk-3SN2D43X.js";
13
13
  import {
14
14
  startLocationAutoSync
15
- } from "./chunk-I4MYLDRY.js";
15
+ } from "./chunk-WQIYGYY6.js";
16
16
  import {
17
17
  CompoundingEngine,
18
18
  isIsoWeekId,
19
19
  msUntilNextIsoWeek,
20
20
  previousIsoWeekId
21
- } from "./chunk-NRG67KMO.js";
21
+ } from "./chunk-KFKFK6G6.js";
22
22
  import {
23
23
  rebuildMemoryLifecycleLedger
24
- } from "./chunk-FDPE6OIK.js";
24
+ } from "./chunk-LDEKVBVO.js";
25
25
  import {
26
26
  planNamespaceMaintenance,
27
27
  runNamespaceMaintenanceBatchPlan
28
- } from "./chunk-NDZ7APNY.js";
28
+ } from "./chunk-7VB3Y5OL.js";
29
29
  import {
30
30
  rebuildMemoryProjection
31
- } from "./chunk-C5JXYJHN.js";
31
+ } from "./chunk-YZTFQBYY.js";
32
32
  import {
33
33
  DEFAULT_TIMELINE_CATEGORIES,
34
34
  TIMELINE_RESERVED_IDLE,
@@ -67,15 +67,11 @@ import {
67
67
  drainPendingLifecycleLedgerIfAny,
68
68
  pendingLifecycleLedgerDir,
69
69
  readProjectionRebuiltAt
70
- } from "./chunk-P55FACBG.js";
70
+ } from "./chunk-3BOQPLCF.js";
71
71
  import {
72
72
  displayErrorDetail,
73
73
  openBetterSqlite3
74
74
  } from "./chunk-RL6NEVXT.js";
75
- import {
76
- assertPathInsideRoot,
77
- listContainedSpillFiles
78
- } from "./chunk-C7HJ3NEI.js";
79
75
  import {
80
76
  writeFileAtomically
81
77
  } from "./chunk-BTNNL7ZW.js";
@@ -98,7 +94,11 @@ import {
98
94
  import {
99
95
  SECURE_STORE_ENVELOPE_OVERHEAD_BYTES,
100
96
  probeEncryptedRegularFileHeader
101
- } from "./chunk-MAAL6OZV.js";
97
+ } from "./chunk-ZG3HZZ6K.js";
98
+ import {
99
+ assertPathInsideRoot,
100
+ listContainedSpillFiles
101
+ } from "./chunk-C7HJ3NEI.js";
102
102
  import {
103
103
  isErrnoCode
104
104
  } from "./chunk-KNA3BXXL.js";
@@ -2793,4 +2793,4 @@ export {
2793
2793
  ActivitySyncScheduler,
2794
2794
  MaintenanceScheduler
2795
2795
  };
2796
- //# sourceMappingURL=chunk-2TGDT37F.js.map
2796
+ //# sourceMappingURL=chunk-27OJ5G3D.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BT7NVCML.js";
4
4
  import {
5
5
  isMemorySubject
6
- } from "./chunk-STBX5X6B.js";
6
+ } from "./chunk-JAYNUYSJ.js";
7
7
  import {
8
8
  assemblePersistedBody
9
9
  } from "./chunk-JDSVLVCG.js";
@@ -443,4 +443,4 @@ export {
443
443
  buildAccessWriteRequestFingerprint,
444
444
  buildObserveRequestFingerprint
445
445
  };
446
- //# sourceMappingURL=chunk-5LRV557D.js.map
446
+ //# sourceMappingURL=chunk-2FIJQNL7.js.map
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
14
14
  OFFLINE_SYNC_MAX_MTIME_MS
15
- } from "./chunk-23ZQPP2G.js";
15
+ } from "./chunk-HOSJESKO.js";
16
16
  import {
17
17
  validateArchiveRelativePath
18
18
  } from "./chunk-GCGJW34D.js";
@@ -563,4 +563,4 @@ export {
563
563
  actionConfidenceRequestSchema,
564
564
  validateRequest
565
565
  };
566
- //# sourceMappingURL=chunk-ETPIYK4J.js.map
566
+ //# sourceMappingURL=chunk-2VBDSZ7U.js.map
@@ -3,7 +3,7 @@ import {
3
3
  headerConnector,
4
4
  renderExtractionConversation,
5
5
  resolveSourceConnector
6
- } from "./chunk-PM72NSEW.js";
6
+ } from "./chunk-PYCTZ2HX.js";
7
7
  import {
8
8
  normalizeReasoningTrace
9
9
  } from "./chunk-54V4BZWP.js";
@@ -103,7 +103,7 @@ import {
103
103
  } from "./chunk-YBA52OKG.js";
104
104
  import {
105
105
  isMemoryCategory
106
- } from "./chunk-5LRV557D.js";
106
+ } from "./chunk-2FIJQNL7.js";
107
107
  import {
108
108
  sanitizeMemoryContent
109
109
  } from "./chunk-5GKPFL3S.js";
@@ -2439,4 +2439,4 @@ export {
2439
2439
  shouldEnableLocalExtractionThinking,
2440
2440
  ExtractionEngine
2441
2441
  };
2442
- //# sourceMappingURL=chunk-QLI74KWK.js.map
2442
+ //# sourceMappingURL=chunk-2XVLY424.js.map
@@ -20,10 +20,6 @@ import {
20
20
  import {
21
21
  displayErrorDetail
22
22
  } from "./chunk-RL6NEVXT.js";
23
- import {
24
- ensureContainedSpillDir,
25
- listContainedSpillFiles
26
- } from "./chunk-C7HJ3NEI.js";
27
23
  import {
28
24
  withHeldFileLock
29
25
  } from "./chunk-5B5WYAHQ.js";
@@ -31,7 +27,11 @@ import {
31
27
  MAGIC_HEADER_SIZE,
32
28
  SecureStoreLockedError,
33
29
  isEncryptedFile
34
- } from "./chunk-MAAL6OZV.js";
30
+ } from "./chunk-ZG3HZZ6K.js";
31
+ import {
32
+ ensureContainedSpillDir,
33
+ listContainedSpillFiles
34
+ } from "./chunk-C7HJ3NEI.js";
35
35
  import {
36
36
  isErrnoCode
37
37
  } from "./chunk-KNA3BXXL.js";
@@ -774,4 +774,4 @@ export {
774
774
  drainPendingLifecycleLedgerForSync,
775
775
  drainPendingLifecycleForSyncOrThrow
776
776
  };
777
- //# sourceMappingURL=chunk-P55FACBG.js.map
777
+ //# sourceMappingURL=chunk-3BOQPLCF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCorpusNamespaceRoots
3
- } from "./chunk-HZKDYR3Z.js";
3
+ } from "./chunk-D4RV54HH.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-IG747LRN.js";
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
200
200
  export {
201
201
  readAggregateExtractionWatermark
202
202
  };
203
- //# sourceMappingURL=chunk-3LRBJQZE.js.map
203
+ //# sourceMappingURL=chunk-3CHHQXAR.js.map
@@ -5,7 +5,7 @@ import {
5
5
  pathMayCarryEntityRefs,
6
6
  requestEntityCanonicalIdReconcile,
7
7
  withRawEntityPageMutation
8
- } from "./chunk-NZFFGO5O.js";
8
+ } from "./chunk-VXWOJPSY.js";
9
9
  import {
10
10
  withHeldFileLock
11
11
  } from "./chunk-5B5WYAHQ.js";
@@ -448,4 +448,4 @@ export {
448
448
  revertToVersion,
449
449
  diffVersions
450
450
  };
451
- //# sourceMappingURL=chunk-3GYSZHMT.js.map
451
+ //# sourceMappingURL=chunk-3CZRBTJK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  scanMemoryDir
3
- } from "./chunk-KJXP6RUG.js";
3
+ } from "./chunk-WNEVEMJ3.js";
4
4
  import {
5
5
  isSearchAborted,
6
6
  throwIfSearchAborted
@@ -776,4 +776,4 @@ export {
776
776
  resolveOramaCollectionDbFilePath,
777
777
  OramaBackend
778
778
  };
779
- //# sourceMappingURL=chunk-HFSPY26A.js.map
779
+ //# sourceMappingURL=chunk-3IXNL6SK.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  rebuildMemoryProjection,
3
3
  watchProjectionRebuildParent
4
- } from "./chunk-C5JXYJHN.js";
4
+ } from "./chunk-YZTFQBYY.js";
5
5
  import {
6
6
  initLogger,
7
7
  log
@@ -77,4 +77,4 @@ if (invokedAsRunner) {
77
77
  export {
78
78
  PROJECTION_REBUILD_RUNNER_FLAG
79
79
  };
80
- //# sourceMappingURL=chunk-4DQ4VEIQ.js.map
80
+ //# sourceMappingURL=chunk-3SN2D43X.js.map
@@ -34,7 +34,7 @@ import {
34
34
  import {
35
35
  exportOkfBundle,
36
36
  parseIncludeStatus
37
- } from "./chunk-UTGHW2Y5.js";
37
+ } from "./chunk-UVUBLLM3.js";
38
38
  import {
39
39
  RoutingRulesStore
40
40
  } from "./chunk-TBUEE7XF.js";
@@ -58,7 +58,7 @@ import {
58
58
  } from "./chunk-EDR6CVWZ.js";
59
59
  import {
60
60
  rebuildMemoryLifecycleLedger
61
- } from "./chunk-FDPE6OIK.js";
61
+ } from "./chunk-LDEKVBVO.js";
62
62
  import {
63
63
  rebuildObservations
64
64
  } from "./chunk-WHCD4Z3D.js";
@@ -76,10 +76,10 @@ import {
76
76
  } from "./chunk-HSSERO3E.js";
77
77
  import {
78
78
  lintOkfDir
79
- } from "./chunk-4D2YH47Z.js";
79
+ } from "./chunk-TRW7N4FS.js";
80
80
  import {
81
81
  searchVerifiedEpisodes
82
- } from "./chunk-67F6SBCJ.js";
82
+ } from "./chunk-NOMHXZD7.js";
83
83
  import {
84
84
  getUtilityLearningStatus,
85
85
  learnUtilityPromotionWeights
@@ -93,15 +93,15 @@ import {
93
93
  } from "./chunk-R7WYAXPO.js";
94
94
  import {
95
95
  promoteSemanticRuleFromMemory
96
- } from "./chunk-PCSPXMPD.js";
96
+ } from "./chunk-NCPR2FOJ.js";
97
97
  import {
98
98
  searchVerifiedSemanticRules
99
- } from "./chunk-CRVL6SLC.js";
99
+ } from "./chunk-ZXTAHSQU.js";
100
100
  import {
101
101
  buildResumeBundleFromState,
102
102
  getResumeBundleStatus,
103
103
  recordResumeBundle
104
- } from "./chunk-Y6IF6H2U.js";
104
+ } from "./chunk-5SMHQW45.js";
105
105
  import {
106
106
  getWorkProductLedgerStatus,
107
107
  recordWorkProductLedgerEntry,
@@ -134,7 +134,7 @@ import {
134
134
  runOperatorInventory,
135
135
  runOperatorRepair,
136
136
  runOperatorSetup
137
- } from "./chunk-XOWR3I2W.js";
137
+ } from "./chunk-HG2VVIKI.js";
138
138
  import {
139
139
  analyzeSessionIntegrity,
140
140
  applySessionRepair,
@@ -176,7 +176,7 @@ import {
176
176
  rebuildMemoryProjection,
177
177
  repairMemoryProjection,
178
178
  verifyMemoryProjection
179
- } from "./chunk-C5JXYJHN.js";
179
+ } from "./chunk-YZTFQBYY.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-A3IURDU2.js";
200
+ } from "./chunk-C2AOL6MK.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-IP5QGSNH.js";
213
+ } from "./chunk-OXX4ORRL.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-KNWC2EPP.js";
223
+ } from "./chunk-AUYFUBBE.js";
224
224
  import {
225
225
  EngramAccessService
226
- } from "./chunk-XN6ABQGM.js";
226
+ } from "./chunk-BIE3ZH3N.js";
227
227
  import {
228
228
  WorkStorage
229
229
  } from "./chunk-MPC7TYTZ.js";
@@ -243,7 +243,7 @@ import {
243
243
  } from "./chunk-RRJ462HP.js";
244
244
  import {
245
245
  readAggregateExtractionWatermark
246
- } from "./chunk-3LRBJQZE.js";
246
+ } from "./chunk-3CHHQXAR.js";
247
247
  import {
248
248
  getObjectiveStateStoreStatus
249
249
  } from "./chunk-4RNBLLZR.js";
@@ -252,12 +252,12 @@ import {
252
252
  } from "./chunk-BDLOEODO.js";
253
253
  import {
254
254
  searchHarmonicRetrieval
255
- } from "./chunk-TZZFGR4E.js";
255
+ } from "./chunk-YGVZ4QOZ.js";
256
256
  import {
257
257
  listNamespaces,
258
258
  runNamespaceMigration,
259
259
  verifyNamespaces
260
- } from "./chunk-364M2T3D.js";
260
+ } from "./chunk-OIIAIY7J.js";
261
261
  import {
262
262
  getCueAnchorStoreStatus
263
263
  } from "./chunk-LXATZLSC.js";
@@ -266,7 +266,7 @@ import {
266
266
  readMemoryGovernanceRunArtifact,
267
267
  restoreMemoryGovernanceRun,
268
268
  runMemoryGovernance
269
- } from "./chunk-OKNB2II7.js";
269
+ } from "./chunk-DDLRKPR2.js";
270
270
  import {
271
271
  analyzeGraphHealth
272
272
  } from "./chunk-4IYIGN53.js";
@@ -303,7 +303,7 @@ import {
303
303
  } from "./chunk-C2RW36YR.js";
304
304
  import {
305
305
  meetingIdDate
306
- } from "./chunk-XALR4DOQ.js";
306
+ } from "./chunk-TTIEXXL3.js";
307
307
  import {
308
308
  isValidTranscriptDate
309
309
  } from "./chunk-UHVXE24Y.js";
@@ -334,7 +334,7 @@ import {
334
334
  } from "./chunk-353C5UNV.js";
335
335
  import {
336
336
  composeMemoryEnvelope
337
- } from "./chunk-5LRV557D.js";
337
+ } from "./chunk-2FIJQNL7.js";
338
338
  import {
339
339
  buildActionConfidenceInputFromOptions,
340
340
  evaluateActionConfidence,
@@ -342,7 +342,7 @@ import {
342
342
  } from "./chunk-Z2YFLXHU.js";
343
343
  import {
344
344
  STATE_FILE_MAX_DECRYPT_BYTES
345
- } from "./chunk-P55FACBG.js";
345
+ } from "./chunk-3BOQPLCF.js";
346
346
  import {
347
347
  inferMemoryStatus,
348
348
  isArchivedMemoryPath,
@@ -351,10 +351,6 @@ import {
351
351
  import {
352
352
  isSupportPassportPrivateMemory
353
353
  } from "./chunk-PWPIERBM.js";
354
- import {
355
- assertPathInsideRoot,
356
- pathIsInside
357
- } from "./chunk-C7HJ3NEI.js";
358
354
  import {
359
355
  writeFileAtomically
360
356
  } from "./chunk-BTNNL7ZW.js";
@@ -394,7 +390,11 @@ import {
394
390
  import {
395
391
  SECURE_STORE_ENVELOPE_OVERHEAD_BYTES,
396
392
  probeEncryptedRegularFileHeader
397
- } from "./chunk-MAAL6OZV.js";
393
+ } from "./chunk-ZG3HZZ6K.js";
394
+ import {
395
+ assertPathInsideRoot,
396
+ pathIsInside
397
+ } from "./chunk-C7HJ3NEI.js";
398
398
  import {
399
399
  RECALL_FALLBACK_DIRS
400
400
  } from "./chunk-VS2IYZRU.js";
@@ -6710,7 +6710,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
6710
6710
  );
6711
6711
  }
6712
6712
  }
6713
- const { mergeCapsule } = await import("./capsule-merge-LGYURS3C.js");
6713
+ const { mergeCapsule } = await import("./capsule-merge-LGYZAMO4.js");
6714
6714
  const result = await mergeCapsule({
6715
6715
  sourceArchive,
6716
6716
  targetRoot: memoryDir,
@@ -9355,7 +9355,7 @@ Semantic consolidation complete. clusters=${result.clustersFound}, consolidated=
9355
9355
  console.error("--verb is required. Must be one of: keep-a, keep-b, merge, both-valid, needs-more-context");
9356
9356
  process.exit(1);
9357
9357
  }
9358
- const { isValidResolutionVerb, executeResolution } = await import("./resolution-ZU5BIAJA.js");
9358
+ const { isValidResolutionVerb, executeResolution } = await import("./resolution-AMYTPT5X.js");
9359
9359
  if (!isValidResolutionVerb(verb)) {
9360
9360
  console.error(`Invalid verb: ${verb}. Must be one of: keep-a, keep-b, merge, both-valid, needs-more-context`);
9361
9361
  process.exit(1);
@@ -10140,4 +10140,4 @@ export {
10140
10140
  listMemoryMarkdownFilePaths,
10141
10141
  registerCli
10142
10142
  };
10143
- //# sourceMappingURL=chunk-QMYB3N7X.js.map
10143
+ //# sourceMappingURL=chunk-4HNINU7Q.js.map