@remnic/core 9.3.719 → 9.3.720

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/access-boundary.d.ts +10 -7
  2. package/dist/access-boundary.js +18 -17
  3. package/dist/access-cli.js +39 -37
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +11 -8
  6. package/dist/access-http.js +25 -24
  7. package/dist/access-mcp.d.ts +11 -8
  8. package/dist/access-mcp.js +21 -20
  9. package/dist/access-operations-batch.js +19 -18
  10. package/dist/access-operations.d.ts +11 -8
  11. package/dist/access-operations.js +20 -19
  12. package/dist/access-schema.d.ts +19 -19
  13. package/dist/{access-service-CZbnt0t2.d.ts → access-service-Dw-tK1pa.d.ts} +3 -3
  14. package/dist/access-service.d.ts +11 -8
  15. package/dist/access-service.js +17 -16
  16. package/dist/access-surface-catalog.d.ts +10 -7
  17. package/dist/action-confidence.d.ts +1 -1
  18. package/dist/active-memory-bridge.d.ts +1 -1
  19. package/dist/active-recall.d.ts +1 -1
  20. package/dist/active-recall.js +1 -1
  21. package/dist/adapters/index.js +7 -7
  22. package/dist/adapters/registry.js +3 -3
  23. package/dist/behavior-learner.d.ts +1 -1
  24. package/dist/behavior-signals.d.ts +1 -1
  25. package/dist/bootstrap.d.ts +11 -8
  26. package/dist/briefing.d.ts +1 -1
  27. package/dist/briefing.js +4 -4
  28. package/dist/buffer-surprise-report.d.ts +1 -1
  29. package/dist/buffer.d.ts +1 -1
  30. package/dist/calibration.d.ts +1 -1
  31. package/dist/capabilities.d.ts +30 -2
  32. package/dist/capabilities.js +3 -1
  33. package/dist/{catalog-CEYlMs9X.d.ts → catalog-B9SPfcsE.d.ts} +1 -1
  34. package/dist/causal-behavior.d.ts +1 -1
  35. package/dist/causal-behavior.js +2 -2
  36. package/dist/causal-chain.js +2 -2
  37. package/dist/causal-consolidation.d.ts +1 -1
  38. package/dist/causal-consolidation.js +7 -7
  39. package/dist/causal-retrieval.js +2 -2
  40. package/dist/causal-trajectory-graph.d.ts +4 -0
  41. package/dist/causal-trajectory-graph.js +1 -1
  42. package/dist/causal-trajectory.js +1 -1
  43. package/dist/{chunk-7EEVXW7X.js → chunk-2RBMGTK4.js} +2 -2
  44. package/dist/{chunk-L5ASZA2F.js → chunk-3XEGHEQ2.js} +17 -2
  45. package/dist/chunk-3XEGHEQ2.js.map +1 -0
  46. package/dist/{chunk-YYOK4GVF.js → chunk-422TIKIH.js} +3 -3
  47. package/dist/{chunk-KRGC4EDX.js → chunk-5YQN2XYC.js} +2 -2
  48. package/dist/{chunk-ANI5DUAE.js → chunk-6S5ZI7HB.js} +7 -7
  49. package/dist/{chunk-JIZGYQYH.js → chunk-ATGRQ2NE.js} +4 -4
  50. package/dist/chunk-BCDKBDSY.js +173 -0
  51. package/dist/chunk-BCDKBDSY.js.map +1 -0
  52. package/dist/{chunk-P5IPFZVH.js → chunk-BGQ7WKMT.js} +5 -5
  53. package/dist/{chunk-JAKYZGV4.js → chunk-CYJV5AYC.js} +3 -3
  54. package/dist/{chunk-APUJIMDM.js → chunk-DG3ORVCU.js} +2 -2
  55. package/dist/{chunk-PBH4JUAB.js → chunk-DVRHLN2O.js} +18 -3
  56. package/dist/chunk-DVRHLN2O.js.map +1 -0
  57. package/dist/{chunk-S35FX6MU.js → chunk-H2AGJ5SV.js} +2 -2
  58. package/dist/{chunk-A66YRSOS.js → chunk-HAPVZ4CO.js} +2 -2
  59. package/dist/{chunk-4KZGLDJJ.js → chunk-HHSO6VCQ.js} +2 -2
  60. package/dist/{chunk-2VHMVWPU.js → chunk-HTIL3EJK.js} +2 -2
  61. package/dist/{chunk-UCJ5CDTK.js → chunk-HU4EBIXO.js} +22 -14
  62. package/dist/chunk-HU4EBIXO.js.map +1 -0
  63. package/dist/{chunk-CTOQEZSN.js → chunk-IPJD7WJH.js} +2 -2
  64. package/dist/{chunk-DIFU33GU.js → chunk-JV7Q226R.js} +2 -2
  65. package/dist/{chunk-U5H7WHTS.js → chunk-KNN6DAZQ.js} +4 -4
  66. package/dist/{chunk-3JJWNZTT.js → chunk-L2B3EE7B.js} +102 -42
  67. package/dist/chunk-L2B3EE7B.js.map +1 -0
  68. package/dist/{chunk-5RHM43BJ.js → chunk-LLLG5PTE.js} +3 -3
  69. package/dist/{chunk-F3PVXKHP.js → chunk-M3GBOKUX.js} +22 -16
  70. package/dist/chunk-M3GBOKUX.js.map +1 -0
  71. package/dist/{chunk-2PTBLS2S.js → chunk-NBYXOEO7.js} +2 -2
  72. package/dist/{chunk-URM3HW2R.js → chunk-NE5WFIY6.js} +2 -2
  73. package/dist/{chunk-REWQAFSA.js → chunk-NERBFQNY.js} +2 -2
  74. package/dist/{chunk-773DPI6T.js → chunk-NO4DWSQE.js} +10 -10
  75. package/dist/{chunk-OZ2KQ7HF.js → chunk-O6SEGJNV.js} +2 -2
  76. package/dist/{chunk-IF362TF6.js → chunk-PMBWVQ7D.js} +2 -2
  77. package/dist/chunk-PMBWVQ7D.js.map +1 -0
  78. package/dist/{chunk-OJU73BUX.js → chunk-PPVCZPYA.js} +2 -2
  79. package/dist/{chunk-S3OPGGZB.js → chunk-RIW3UDDY.js} +2 -2
  80. package/dist/{chunk-AU7Q3LSC.js → chunk-RKNJBZ55.js} +7 -7
  81. package/dist/{chunk-EH27LHML.js → chunk-RX7EBFFJ.js} +2 -2
  82. package/dist/{chunk-2COL35PK.js → chunk-T3XSXAWK.js} +2 -2
  83. package/dist/{chunk-2KAYTPPT.js → chunk-UUMYB3FR.js} +4 -4
  84. package/dist/{chunk-72VDBALG.js → chunk-V5EGLYXE.js} +52 -43
  85. package/dist/chunk-V5EGLYXE.js.map +1 -0
  86. package/dist/{chunk-LXSG4L55.js → chunk-V7UUIIR7.js} +2 -2
  87. package/dist/{chunk-HLIR3RJ7.js → chunk-WBHQ5LP5.js} +2 -2
  88. package/dist/{chunk-YGKUAX2B.js → chunk-XROP4ZHB.js} +8 -8
  89. package/dist/chunk-XROP4ZHB.js.map +1 -0
  90. package/dist/{chunk-NFRBADNR.js → chunk-Y4I7SOJN.js} +559 -318
  91. package/dist/chunk-Y4I7SOJN.js.map +1 -0
  92. package/dist/{chunk-YTZLBBEB.js → chunk-YMPEGBLL.js} +3 -3
  93. package/dist/chunk-YN2UN7N3.js +217 -0
  94. package/dist/chunk-YN2UN7N3.js.map +1 -0
  95. package/dist/{chunk-YI7RZO7Y.js → chunk-ZE7GJ76H.js} +1 -1
  96. package/dist/{chunk-74MYJSKB.js → chunk-ZG2WP425.js} +2 -2
  97. package/dist/{chunk-A5TUPZ3N.js → chunk-ZKUW2MJG.js} +43 -1
  98. package/dist/chunk-ZKUW2MJG.js.map +1 -0
  99. package/dist/{chunk-N3DUH6OO.js → chunk-ZW5I3UNP.js} +1 -1
  100. package/dist/chunk-ZW5I3UNP.js.map +1 -0
  101. package/dist/{cli-1orcdXOY.d.ts → cli-qcLCJlOD.d.ts} +3 -3
  102. package/dist/cli.d.ts +9 -6
  103. package/dist/cli.js +43 -42
  104. package/dist/compounding/engine.d.ts +1 -1
  105. package/dist/compounding/engine.js +4 -4
  106. package/dist/compounding/preference-consolidator.d.ts +1 -1
  107. package/dist/compression-optimizer.d.ts +1 -1
  108. package/dist/config.d.ts +1 -1
  109. package/dist/config.js +1 -1
  110. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  111. package/dist/connectors/codex-materialize-runner.js +4 -4
  112. package/dist/connectors/codex-materialize.d.ts +1 -1
  113. package/dist/connectors/index.d.ts +1 -1
  114. package/dist/connectors/index.js +4 -4
  115. package/dist/consolidation-provenance-check.d.ts +1 -1
  116. package/dist/consolidation-undo.d.ts +1 -1
  117. package/dist/contradiction/index.d.ts +1 -1
  118. package/dist/conversation-index/backend.d.ts +1 -1
  119. package/dist/conversation-index/chunker.d.ts +1 -1
  120. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  121. package/dist/conversation-index/indexer.d.ts +1 -1
  122. package/dist/conversation-index/search.d.ts +1 -1
  123. package/dist/day-summary.d.ts +1 -1
  124. package/dist/delinearize.d.ts +1 -1
  125. package/dist/direct-answer-wiring.d.ts +1 -1
  126. package/dist/direct-answer.d.ts +1 -1
  127. package/dist/embedding-fallback.d.ts +1 -1
  128. package/dist/enrichment/index.d.ts +1 -1
  129. package/dist/entity-retrieval.d.ts +1 -1
  130. package/dist/entity-retrieval.js +4 -4
  131. package/dist/entity-schema.d.ts +1 -1
  132. package/dist/explicit-capture.d.ts +11 -8
  133. package/dist/extraction-faithfulness.d.ts +1 -1
  134. package/dist/extraction-judge-telemetry.d.ts +1 -1
  135. package/dist/extraction-judge-training.d.ts +1 -1
  136. package/dist/extraction-judge.d.ts +1 -1
  137. package/dist/extraction.d.ts +1 -1
  138. package/dist/fallback-llm.d.ts +1 -1
  139. package/dist/{forget-U66KPDPY.js → forget-OEE5OELK.js} +2 -2
  140. package/dist/graph-dashboard-diff.d.ts +4 -0
  141. package/dist/graph-dashboard-key.d.ts +4 -0
  142. package/dist/graph-dashboard-parser.d.ts +4 -0
  143. package/dist/{graph-edge-decay-JLOF3YW4.js → graph-edge-decay-QDDC6AVV.js} +2 -2
  144. package/dist/graph-edge-reinforcement.d.ts +4 -0
  145. package/dist/graph-snapshot.d.ts +7 -3
  146. package/dist/graph-snapshot.js +2 -2
  147. package/dist/graph.d.ts +7 -1
  148. package/dist/graph.js +1 -1
  149. package/dist/identity-continuity.d.ts +1 -1
  150. package/dist/importance.d.ts +1 -1
  151. package/dist/index.d.ts +571 -570
  152. package/dist/index.js +57 -55
  153. package/dist/index.js.map +1 -1
  154. package/dist/intent.d.ts +1 -1
  155. package/dist/lcm/engine.d.ts +1 -1
  156. package/dist/lcm/engine.js +4 -4
  157. package/dist/lcm/index.d.ts +1 -1
  158. package/dist/lcm/index.js +8 -8
  159. package/dist/lcm/tools.d.ts +1 -1
  160. package/dist/lifecycle.d.ts +1 -1
  161. package/dist/live-connectors-runner.d.ts +1 -1
  162. package/dist/local-llm.d.ts +1 -1
  163. package/dist/maintenance/memory-governance.d.ts +1 -1
  164. package/dist/maintenance/memory-governance.js +4 -4
  165. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
  166. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  167. package/dist/mcp-memory-inspector-app.d.ts +11 -8
  168. package/dist/memory-action-policy.d.ts +1 -1
  169. package/dist/memory-cache.d.ts +1 -1
  170. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  171. package/dist/memory-projection-store.d.ts +1 -1
  172. package/dist/memory-provenance.d.ts +1 -1
  173. package/dist/memory-worth-outcomes.d.ts +1 -1
  174. package/dist/models-json.d.ts +1 -1
  175. package/dist/namespaces/migrate.d.ts +2 -2
  176. package/dist/namespaces/migrate.js +9 -9
  177. package/dist/namespaces/principal.d.ts +1 -1
  178. package/dist/namespaces/search.d.ts +1 -1
  179. package/dist/namespaces/search.js +4 -4
  180. package/dist/namespaces/storage.d.ts +2 -2
  181. package/dist/namespaces/storage.js +4 -4
  182. package/dist/native-knowledge.d.ts +1 -1
  183. package/dist/operator-toolkit.d.ts +3 -2
  184. package/dist/operator-toolkit.js +16 -15
  185. package/dist/orchestration/maintenance.d.ts +2 -2
  186. package/dist/orchestration/maintenance.js +6 -6
  187. package/dist/{orchestrator-kOxredSr.d.ts → orchestrator-Bg5Fnza6.d.ts} +178 -81
  188. package/dist/orchestrator.d.ts +8 -5
  189. package/dist/orchestrator.js +31 -29
  190. package/dist/patterns-cli.d.ts +1 -1
  191. package/dist/policy-runtime.d.ts +1 -1
  192. package/dist/provenance.d.ts +1 -1
  193. package/dist/qmd-recall-cache.d.ts +1 -1
  194. package/dist/qmd.d.ts +1 -1
  195. package/dist/recall-disclosure-escalation.d.ts +1 -1
  196. package/dist/recall-explain-renderer.d.ts +1 -1
  197. package/dist/recall-explain-renderer.js +3 -3
  198. package/dist/recall-planner-llm.d.ts +1 -1
  199. package/dist/recall-state.d.ts +1 -1
  200. package/dist/recall-tag-filter.d.ts +1 -1
  201. package/dist/recall-xray-cli.d.ts +1 -1
  202. package/dist/recall-xray-cli.js +4 -4
  203. package/dist/recall-xray-renderer.d.ts +1 -1
  204. package/dist/recall-xray-renderer.js +3 -3
  205. package/dist/recall-xray.d.ts +18 -1
  206. package/dist/recall-xray.js +2 -2
  207. package/dist/resolve-auth-token.d.ts +1 -1
  208. package/dist/resume-bundles.js +2 -2
  209. package/dist/retrieval-agents.d.ts +1 -1
  210. package/dist/retrieval-tiers.d.ts +1 -1
  211. package/dist/routing/engine.d.ts +1 -1
  212. package/dist/routing/store.d.ts +1 -1
  213. package/dist/search/embed-helper.d.ts +1 -1
  214. package/dist/search/factory.d.ts +1 -1
  215. package/dist/search/factory.js +3 -3
  216. package/dist/search/index.d.ts +1 -1
  217. package/dist/search/index.js +7 -7
  218. package/dist/search/lancedb-backend.d.ts +1 -1
  219. package/dist/search/meilisearch-backend.d.ts +1 -1
  220. package/dist/search/noop-backend.d.ts +1 -1
  221. package/dist/search/orama-backend.d.ts +1 -1
  222. package/dist/search/port.d.ts +1 -1
  223. package/dist/search/remote-backend.d.ts +1 -1
  224. package/dist/{semantic-consolidation-B58v3S-a.d.ts → semantic-consolidation-ClOiS6KP.d.ts} +1 -1
  225. package/dist/semantic-consolidation.d.ts +2 -2
  226. package/dist/semantic-consolidation.js +5 -5
  227. package/dist/semantic-rule-promotion.js +4 -4
  228. package/dist/semantic-rule-verifier.d.ts +1 -1
  229. package/dist/semantic-rule-verifier.js +4 -4
  230. package/dist/session-observer-bands.d.ts +1 -1
  231. package/dist/session-observer-state.d.ts +1 -1
  232. package/dist/shared-context/manager.d.ts +1 -1
  233. package/dist/signal.d.ts +1 -1
  234. package/dist/storage.d.ts +45 -1
  235. package/dist/storage.js +3 -3
  236. package/dist/summarizer.d.ts +1 -1
  237. package/dist/summary-snapshot.d.ts +1 -1
  238. package/dist/temporal-supersession.d.ts +1 -1
  239. package/dist/temporal-validity.d.ts +1 -1
  240. package/dist/threading.d.ts +1 -1
  241. package/dist/tier-migration.d.ts +1 -1
  242. package/dist/tier-routing.d.ts +1 -1
  243. package/dist/topics.d.ts +1 -1
  244. package/dist/transcript.d.ts +1 -1
  245. package/dist/trust-score-stage.d.ts +178 -0
  246. package/dist/trust-score-stage.js +18 -0
  247. package/dist/trust-score-stage.js.map +1 -0
  248. package/dist/trust-score.d.ts +164 -0
  249. package/dist/trust-score.js +22 -0
  250. package/dist/trust-score.js.map +1 -0
  251. package/dist/{types-ACmDOScJ.d.ts → types-BSdUWePh.d.ts} +37 -1
  252. package/dist/types.d.ts +1 -1
  253. package/dist/types.js +1 -1
  254. package/dist/utility-runtime.d.ts +1 -1
  255. package/dist/verified-recall.js +4 -4
  256. package/package.json +2 -2
  257. package/src/access-service.ts +8 -5
  258. package/src/capabilities-cluster-b.test.ts +78 -0
  259. package/src/capabilities.test.ts +11 -1
  260. package/src/capabilities.ts +58 -0
  261. package/src/cli/research-status-commands.ts +7 -3
  262. package/src/cli.ts +11 -6
  263. package/src/config.ts +51 -0
  264. package/src/graph-snapshot.ts +3 -3
  265. package/src/graph.ts +8 -7
  266. package/src/lifecycle/tombstones.test.ts +242 -1
  267. package/src/lifecycle/tombstones.ts +157 -70
  268. package/src/operator-toolkit.ts +24 -7
  269. package/src/orchestration/tier-migration-coordinator.ts +286 -0
  270. package/src/orchestrator.ts +331 -222
  271. package/src/recall-xray.test.ts +62 -0
  272. package/src/recall-xray.ts +34 -0
  273. package/src/trust-score-recall-paths.test.ts +157 -0
  274. package/src/trust-score-stage.test.ts +350 -0
  275. package/src/trust-score-stage.ts +398 -0
  276. package/src/trust-score.test.ts +282 -0
  277. package/src/trust-score.ts +449 -0
  278. package/src/types.ts +42 -0
  279. package/dist/chunk-3JJWNZTT.js.map +0 -1
  280. package/dist/chunk-72VDBALG.js.map +0 -1
  281. package/dist/chunk-A5TUPZ3N.js.map +0 -1
  282. package/dist/chunk-F3PVXKHP.js.map +0 -1
  283. package/dist/chunk-IF362TF6.js.map +0 -1
  284. package/dist/chunk-L5ASZA2F.js.map +0 -1
  285. package/dist/chunk-N3DUH6OO.js.map +0 -1
  286. package/dist/chunk-NFRBADNR.js.map +0 -1
  287. package/dist/chunk-PBH4JUAB.js.map +0 -1
  288. package/dist/chunk-UCJ5CDTK.js.map +0 -1
  289. package/dist/chunk-YGKUAX2B.js.map +0 -1
  290. /package/dist/{chunk-7EEVXW7X.js.map → chunk-2RBMGTK4.js.map} +0 -0
  291. /package/dist/{chunk-YYOK4GVF.js.map → chunk-422TIKIH.js.map} +0 -0
  292. /package/dist/{chunk-KRGC4EDX.js.map → chunk-5YQN2XYC.js.map} +0 -0
  293. /package/dist/{chunk-ANI5DUAE.js.map → chunk-6S5ZI7HB.js.map} +0 -0
  294. /package/dist/{chunk-JIZGYQYH.js.map → chunk-ATGRQ2NE.js.map} +0 -0
  295. /package/dist/{chunk-P5IPFZVH.js.map → chunk-BGQ7WKMT.js.map} +0 -0
  296. /package/dist/{chunk-JAKYZGV4.js.map → chunk-CYJV5AYC.js.map} +0 -0
  297. /package/dist/{chunk-APUJIMDM.js.map → chunk-DG3ORVCU.js.map} +0 -0
  298. /package/dist/{chunk-S35FX6MU.js.map → chunk-H2AGJ5SV.js.map} +0 -0
  299. /package/dist/{chunk-A66YRSOS.js.map → chunk-HAPVZ4CO.js.map} +0 -0
  300. /package/dist/{chunk-4KZGLDJJ.js.map → chunk-HHSO6VCQ.js.map} +0 -0
  301. /package/dist/{chunk-2VHMVWPU.js.map → chunk-HTIL3EJK.js.map} +0 -0
  302. /package/dist/{chunk-CTOQEZSN.js.map → chunk-IPJD7WJH.js.map} +0 -0
  303. /package/dist/{chunk-DIFU33GU.js.map → chunk-JV7Q226R.js.map} +0 -0
  304. /package/dist/{chunk-U5H7WHTS.js.map → chunk-KNN6DAZQ.js.map} +0 -0
  305. /package/dist/{chunk-5RHM43BJ.js.map → chunk-LLLG5PTE.js.map} +0 -0
  306. /package/dist/{chunk-2PTBLS2S.js.map → chunk-NBYXOEO7.js.map} +0 -0
  307. /package/dist/{chunk-URM3HW2R.js.map → chunk-NE5WFIY6.js.map} +0 -0
  308. /package/dist/{chunk-REWQAFSA.js.map → chunk-NERBFQNY.js.map} +0 -0
  309. /package/dist/{chunk-773DPI6T.js.map → chunk-NO4DWSQE.js.map} +0 -0
  310. /package/dist/{chunk-OZ2KQ7HF.js.map → chunk-O6SEGJNV.js.map} +0 -0
  311. /package/dist/{chunk-OJU73BUX.js.map → chunk-PPVCZPYA.js.map} +0 -0
  312. /package/dist/{chunk-S3OPGGZB.js.map → chunk-RIW3UDDY.js.map} +0 -0
  313. /package/dist/{chunk-AU7Q3LSC.js.map → chunk-RKNJBZ55.js.map} +0 -0
  314. /package/dist/{chunk-EH27LHML.js.map → chunk-RX7EBFFJ.js.map} +0 -0
  315. /package/dist/{chunk-2COL35PK.js.map → chunk-T3XSXAWK.js.map} +0 -0
  316. /package/dist/{chunk-2KAYTPPT.js.map → chunk-UUMYB3FR.js.map} +0 -0
  317. /package/dist/{chunk-LXSG4L55.js.map → chunk-V7UUIIR7.js.map} +0 -0
  318. /package/dist/{chunk-HLIR3RJ7.js.map → chunk-WBHQ5LP5.js.map} +0 -0
  319. /package/dist/{chunk-YTZLBBEB.js.map → chunk-YMPEGBLL.js.map} +0 -0
  320. /package/dist/{chunk-YI7RZO7Y.js.map → chunk-ZE7GJ76H.js.map} +0 -0
  321. /package/dist/{chunk-74MYJSKB.js.map → chunk-ZG2WP425.js.map} +0 -0
  322. /package/dist/{forget-U66KPDPY.js.map → forget-OEE5OELK.js.map} +0 -0
  323. /package/dist/{graph-edge-decay-JLOF3YW4.js.map → graph-edge-decay-QDDC6AVV.js.map} +0 -0
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TBBDFYXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-YYOK4GVF.js";
6
+ } from "./chunk-422TIKIH.js";
7
7
  import {
8
8
  assertPathInsideRoot
9
9
  } from "./chunk-5GPPACXK.js";
@@ -751,4 +751,4 @@ export {
751
751
  listMemoryGovernanceRuns,
752
752
  readMemoryGovernanceRunArtifact
753
753
  };
754
- //# sourceMappingURL=chunk-2PTBLS2S.js.map
754
+ //# sourceMappingURL=chunk-NBYXOEO7.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EngramAccessInputError
3
- } from "./chunk-F3PVXKHP.js";
3
+ } from "./chunk-M3GBOKUX.js";
4
4
  import {
5
5
  expandTildePath
6
6
  } from "./chunk-EYIEWJNI.js";
@@ -104,4 +104,4 @@ export {
104
104
  listRegisteredOperations,
105
105
  __resetRegistryForTest
106
106
  };
107
- //# sourceMappingURL=chunk-URM3HW2R.js.map
107
+ //# sourceMappingURL=chunk-NE5WFIY6.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-HLIR3RJ7.js";
6
+ } from "./chunk-WBHQ5LP5.js";
7
7
 
8
8
  // src/maintenance/namespace-maintenance-fanout.ts
9
9
  var NAMESPACE_MAINTENANCE_JOBS = [
@@ -146,4 +146,4 @@ export {
146
146
  summarizeNamespaceMaintenanceHealth,
147
147
  formatNamespaceMaintenanceHealthText
148
148
  };
149
- //# sourceMappingURL=chunk-REWQAFSA.js.map
149
+ //# sourceMappingURL=chunk-NERBFQNY.js.map
@@ -1,12 +1,3 @@
1
- import {
2
- LcmDag
3
- } from "./chunk-7N4KAIGN.js";
4
- import {
5
- LcmWorkQueue
6
- } from "./chunk-TPDBFYEG.js";
7
- import {
8
- assembleCompressedHistory
9
- } from "./chunk-KCYE2MZM.js";
10
1
  import {
11
2
  ensureLcmStateDir,
12
3
  openLcmDatabase
@@ -17,6 +8,15 @@ import {
17
8
  import {
18
9
  LcmArchive
19
10
  } from "./chunk-HW5EF6LV.js";
11
+ import {
12
+ LcmDag
13
+ } from "./chunk-7N4KAIGN.js";
14
+ import {
15
+ LcmWorkQueue
16
+ } from "./chunk-TPDBFYEG.js";
17
+ import {
18
+ assembleCompressedHistory
19
+ } from "./chunk-KCYE2MZM.js";
20
20
  import {
21
21
  log
22
22
  } from "./chunk-NU3CSQ4H.js";
@@ -513,4 +513,4 @@ export {
513
513
  extractLcmConfig,
514
514
  LcmEngine
515
515
  };
516
- //# sourceMappingURL=chunk-773DPI6T.js.map
516
+ //# sourceMappingURL=chunk-NO4DWSQE.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-ZBJMUXZH.js";
5
5
  import {
6
6
  StorageManager
7
- } from "./chunk-YYOK4GVF.js";
7
+ } from "./chunk-422TIKIH.js";
8
8
  import {
9
9
  getCachedRuleMemories,
10
10
  setCachedRuleMemories
@@ -117,4 +117,4 @@ export {
117
117
  compareVerifiedSemanticRuleResults,
118
118
  searchVerifiedSemanticRules
119
119
  };
120
- //# sourceMappingURL=chunk-OZ2KQ7HF.js.map
120
+ //# sourceMappingURL=chunk-O6SEGJNV.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readAllEdges
3
- } from "./chunk-YGKUAX2B.js";
3
+ } from "./chunk-XROP4ZHB.js";
4
4
  import {
5
5
  readEdgeConfidence
6
6
  } from "./chunk-2LSZVONP.js";
@@ -162,4 +162,4 @@ export {
162
162
  parseGraphSnapshotSince,
163
163
  buildGraphSnapshot
164
164
  };
165
- //# sourceMappingURL=chunk-IF362TF6.js.map
165
+ //# sourceMappingURL=chunk-PMBWVQ7D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-snapshot.ts"],"sourcesContent":["/**\n * Graph snapshot — read-only view of the multi-graph memory adjacency\n * (issue #691 PR 2/5).\n *\n * Composes the JSONL edge store from `graph.ts` with optional node-metadata\n * loading so HTTP / MCP / future CLI surfaces can return a consistent\n * `{ nodes, edges, generatedAt }` shape suitable for the admin pane scaffold\n * shipped in PR 1/5.\n *\n * All inputs are validated and clamped at this layer so the access surface\n * (which is responsible for HTTP/MCP-flavored errors) can keep the wiring\n * thin. The module is pure async I/O — no global state, no caches.\n */\n\nimport type { GraphEdge, GraphType } from \"./graph.js\";\nimport { readAllEdges } from \"./graph.js\";\nimport { readEdgeConfidence } from \"./graph-edge-reinforcement.js\";\nimport * as path from \"path\";\n\n/** Default `limit` when the caller omits it. */\nexport const GRAPH_SNAPSHOT_DEFAULT_LIMIT = 500;\n\n/** Hard upper bound on `limit` to keep responses sized for the admin pane. */\nexport const GRAPH_SNAPSHOT_MAX_LIMIT = 5000;\n\n/** Categories accepted by the `categories` filter; matches `MemoryFile.frontmatter.category`. */\nexport type GraphSnapshotCategory = string;\n\nexport interface GraphSnapshotNode {\n /** Stable identifier — relative memory path (matches `GraphEdge.from` / `to`). */\n id: string;\n /** Short human label. Falls back to the basename when no metadata is available. */\n label: string;\n /** Memory category (e.g. `fact`, `decision`, `entity`). `\"unknown\"` when metadata is missing. */\n kind: string;\n /** Aggregate edge confidence touching this node, used for sizing in the admin pane. */\n score: number;\n /** Most recent edge timestamp (ISO) touching this node — best-effort recency signal. */\n lastUpdated: string | null;\n}\n\nexport interface GraphSnapshotEdge {\n source: string;\n target: string;\n kind: GraphType;\n /** Edge confidence in [0, 1]; legacy edges without confidence return 1.0. */\n confidence: number;\n}\n\nexport interface GraphSnapshotResponse {\n nodes: GraphSnapshotNode[];\n edges: GraphSnapshotEdge[];\n generatedAt: string;\n}\n\nexport interface GraphSnapshotRequest {\n /** Max number of edges to include (after filtering). Default 500, max 5000. */\n limit?: number;\n /** Inclusive lower bound on edge `ts` (ISO string). Edges older than this are dropped. */\n since?: string;\n /** When set, restrict the snapshot to the focus node and its direct neighbors. */\n focusNodeId?: string;\n /**\n * Optional category allow-list. Edges are kept only when both endpoints\n * resolve to nodes whose category falls in this set; nodes are kept only\n * when their category matches. When omitted, no category filter is applied.\n */\n categories?: GraphSnapshotCategory[];\n}\n\n/**\n * Loader contract: given a relative memory path, return `{ category, label,\n * updated }` or `null` when the memory cannot be resolved. Implementations\n * typically wrap `StorageManager.readMemoryByPath`; the snapshot module stays\n * agnostic so tests can pass a synchronous in-memory map.\n */\nexport type GraphSnapshotNodeLoader = (\n relPath: string,\n) => Promise<GraphSnapshotNodeMetadata | null>;\n\nexport interface GraphSnapshotNodeMetadata {\n /** Memory category, e.g. `fact` / `decision` / `entity`. */\n category: string;\n /** Display label — usually the memory id or the entity name. */\n label: string;\n /** ISO `updated` timestamp from frontmatter, when available. */\n updated?: string;\n}\n\n/**\n * Coerce a caller-supplied limit into the `[1, GRAPH_SNAPSHOT_MAX_LIMIT]` range.\n *\n * - `undefined` / `null` → `GRAPH_SNAPSHOT_DEFAULT_LIMIT`.\n * - non-finite or non-integer → throws `Error` (callers translate to 400).\n * - `<= 0` → throws.\n * - `> GRAPH_SNAPSHOT_MAX_LIMIT` → clamped to the max (no error — admin\n * panel callers send liberal limits).\n */\nexport function normalizeGraphSnapshotLimit(raw: unknown): number {\n if (raw === undefined || raw === null) return GRAPH_SNAPSHOT_DEFAULT_LIMIT;\n if (typeof raw !== \"number\" || !Number.isFinite(raw) || !Number.isInteger(raw)) {\n throw new Error(\"graphSnapshot: limit must be a positive integer\");\n }\n if (raw <= 0) {\n throw new Error(\"graphSnapshot: limit must be a positive integer\");\n }\n if (raw > GRAPH_SNAPSHOT_MAX_LIMIT) return GRAPH_SNAPSHOT_MAX_LIMIT;\n return raw;\n}\n\n/**\n * Validate and parse an ISO timestamp into a millisecond epoch. Throws\n * when the input cannot be parsed; callers translate to a 400. `undefined`\n * input yields `undefined`.\n */\nexport function parseGraphSnapshotSince(raw: string | undefined): number | undefined {\n if (raw === undefined || raw === null || raw === \"\") return undefined;\n const ms = Date.parse(raw);\n if (!Number.isFinite(ms)) {\n throw new Error(\"graphSnapshot: since must be a parseable ISO timestamp\");\n }\n return ms;\n}\n\n/**\n * Build a `GraphSnapshotResponse` from the raw edge JSONL on disk plus an\n * optional node-metadata loader.\n *\n * The function is split into pure subroutines so HTTP / MCP / tests can\n * exercise the same logic without spinning up a full `StorageManager`.\n */\nexport async function buildGraphSnapshot(opts: {\n memoryDir: string;\n graphConfig: {\n entityGraph: boolean;\n timeGraph: boolean;\n causalGraph: boolean;\n };\n request: GraphSnapshotRequest;\n loadNode: GraphSnapshotNodeLoader;\n /** Override clock for deterministic tests. */\n now?: () => Date;\n}): Promise<GraphSnapshotResponse> {\n const limit = normalizeGraphSnapshotLimit(opts.request.limit);\n const sinceMs = parseGraphSnapshotSince(opts.request.since);\n const focusNodeId = opts.request.focusNodeId?.trim();\n const categoryFilter = normalizeCategoryFilter(opts.request.categories);\n\n const allEdges = await readAllEdges(opts.memoryDir, opts.graphConfig);\n\n // Time-window filter (CLAUDE.md rule 35 — half-open `[since, +∞)`; equality\n // is treated as inclusive because callers expect a single-point pin to\n // surface edges stamped exactly at that instant).\n const timeFiltered = sinceMs === undefined\n ? allEdges\n : allEdges.filter((edge) => {\n const ts = Date.parse(edge.ts);\n return Number.isFinite(ts) && ts >= sinceMs;\n });\n\n // Focus-node neighborhood filter — restrict to edges incident on the node.\n const focusFiltered = focusNodeId\n ? timeFiltered.filter((edge) => edge.from === focusNodeId || edge.to === focusNodeId)\n : timeFiltered;\n\n // Sort newest-first so the limit window keeps the most recent edges. `ts`\n // is an ISO string, so a string comparison agrees with chronological order\n // for any well-formed timestamp; we still parse to avoid surprising\n // ordering when timezones drift, falling back to lexicographic compare on\n // tie / parse failure for stable ordering (CLAUDE.md rule 19).\n const sortedEdges = [...focusFiltered].sort((a, b) => {\n const aMs = Date.parse(a.ts);\n const bMs = Date.parse(b.ts);\n if (Number.isFinite(aMs) && Number.isFinite(bMs) && aMs !== bMs) {\n return bMs - aMs;\n }\n if (a.ts !== b.ts) return a.ts < b.ts ? 1 : -1;\n // Stable secondary key: from/to/type so identical-ts edges have a\n // deterministic order across runs.\n const aKey = `${a.from}|${a.to}|${a.type}`;\n const bKey = `${b.from}|${b.to}|${b.type}`;\n if (aKey === bKey) return 0;\n return aKey < bKey ? -1 : 1;\n });\n\n // Streaming category + limit pass. Metadata is loaded lazily per\n // endpoint with a memoization cache (`metadata`) so we never re-read the\n // same memory file twice, never read more than `2 × limit` files, and\n // never silently drop matching edges because a static cap fired before\n // the category filter saw them — the bug Cursor flagged on PR #734\n // when the pre-limit edge set referenced more than `2 × MAX_LIMIT`\n // unique nodes.\n const metadata = new Map<string, GraphSnapshotNodeMetadata | null>();\n const trimmedEdges: GraphEdge[] = [];\n\n const ensureMetadata = async (relPath: string): Promise<GraphSnapshotNodeMetadata | null> => {\n if (metadata.has(relPath)) return metadata.get(relPath) ?? null;\n let resolved: GraphSnapshotNodeMetadata | null = null;\n try {\n resolved = await opts.loadNode(relPath);\n } catch {\n // Loader errors are best-effort — leave the path absent so it\n // falls through to the basename label / \"unknown\" category.\n resolved = null;\n }\n metadata.set(relPath, resolved);\n return resolved;\n };\n\n for (const edge of sortedEdges) {\n if (trimmedEdges.length >= limit) break;\n if (categoryFilter !== null) {\n const fromMeta = await ensureMetadata(edge.from);\n const toMeta = await ensureMetadata(edge.to);\n if (!fromMeta || !toMeta) continue;\n if (\n !categoryFilter.has(fromMeta.category)\n || !categoryFilter.has(toMeta.category)\n ) {\n continue;\n }\n } else {\n // Even without a category filter we still want labels / kinds for\n // the surfaced nodes, so warm the metadata cache for this edge.\n // The cache is bounded by `2 × limit` because we stop iterating\n // once `trimmedEdges` reaches `limit`.\n await ensureMetadata(edge.from);\n await ensureMetadata(edge.to);\n }\n trimmedEdges.push(edge);\n }\n\n const resolvedMetadata = new Map<string, GraphSnapshotNodeMetadata>();\n for (const [key, value] of metadata) {\n if (value) resolvedMetadata.set(key, value);\n }\n\n const nodes = buildNodeIndex(trimmedEdges, resolvedMetadata);\n const edges: GraphSnapshotEdge[] = trimmedEdges.map((edge) => ({\n source: edge.from,\n target: edge.to,\n kind: edge.type,\n confidence: readEdgeConfidence(edge),\n }));\n\n const generatedAt = (opts.now ? opts.now() : new Date()).toISOString();\n return { nodes, edges, generatedAt };\n}\n\nfunction normalizeCategoryFilter(\n raw: GraphSnapshotCategory[] | undefined,\n): Set<string> | null {\n if (raw === undefined || raw === null) return null;\n if (!Array.isArray(raw)) {\n throw new Error(\"graphSnapshot: categories must be an array of strings\");\n }\n const cleaned = new Set<string>();\n for (const value of raw) {\n if (typeof value !== \"string\") {\n throw new Error(\"graphSnapshot: categories must be an array of strings\");\n }\n const trimmed = value.trim();\n if (trimmed.length > 0) cleaned.add(trimmed);\n }\n // Empty allow-list → reject everything. We surface this as a 400 because\n // the admin pane should never send `categories=` with no values.\n if (cleaned.size === 0) {\n throw new Error(\"graphSnapshot: categories must contain at least one non-empty value\");\n }\n return cleaned;\n}\n\nfunction buildNodeIndex(\n edges: GraphEdge[],\n metadata: Map<string, GraphSnapshotNodeMetadata>,\n): GraphSnapshotNode[] {\n type Aggregate = {\n score: number;\n lastUpdatedMs: number | null;\n lastUpdatedIso: string | null;\n };\n const aggregates = new Map<string, Aggregate>();\n\n function bump(id: string, edge: GraphEdge): void {\n const current = aggregates.get(id) ?? {\n score: 0,\n lastUpdatedMs: null,\n lastUpdatedIso: null,\n };\n current.score += readEdgeConfidence(edge);\n const ms = Date.parse(edge.ts);\n if (Number.isFinite(ms) && (current.lastUpdatedMs === null || ms > current.lastUpdatedMs)) {\n current.lastUpdatedMs = ms;\n current.lastUpdatedIso = edge.ts;\n }\n aggregates.set(id, current);\n }\n\n for (const edge of edges) {\n bump(edge.from, edge);\n bump(edge.to, edge);\n }\n\n // Stable order: descending score, then ascending id for determinism.\n const ids = Array.from(aggregates.keys()).sort((a, b) => {\n const aScore = aggregates.get(a)?.score ?? 0;\n const bScore = aggregates.get(b)?.score ?? 0;\n if (aScore !== bScore) return bScore - aScore;\n if (a === b) return 0;\n return a < b ? -1 : 1;\n });\n\n return ids.map((id) => {\n const meta = metadata.get(id);\n const aggregate = aggregates.get(id);\n return {\n id,\n label: meta?.label ?? defaultLabelFromPath(id),\n kind: meta?.category ?? \"unknown\",\n score: Number((aggregate?.score ?? 0).toFixed(4)),\n lastUpdated: aggregate?.lastUpdatedIso ?? null,\n };\n });\n}\n\nfunction defaultLabelFromPath(relPath: string): string {\n const base = path.basename(relPath, path.extname(relPath));\n return base.length > 0 ? base : relPath;\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  enqueuePassiveCorrectionNotification
3
- } from "./chunk-2COL35PK.js";
3
+ } from "./chunk-T3XSXAWK.js";
4
4
  import {
5
5
  stripAttributesSuffix
6
6
  } from "./chunk-SVOZFLIQ.js";
@@ -1685,4 +1685,4 @@ export {
1685
1685
  capturePassiveCorrections,
1686
1686
  clusterByKey
1687
1687
  };
1688
- //# sourceMappingURL=chunk-OJU73BUX.js.map
1688
+ //# sourceMappingURL=chunk-PPVCZPYA.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-LMDRGRJ2.js";
12
12
  import {
13
13
  parseConfig
14
- } from "./chunk-A5TUPZ3N.js";
14
+ } from "./chunk-ZKUW2MJG.js";
15
15
  import {
16
16
  resolveObjectiveStateStoreDir,
17
17
  validateObjectiveStateSnapshot
@@ -268,4 +268,4 @@ export {
268
268
  recordResumeBundle,
269
269
  getResumeBundleStatus
270
270
  };
271
- //# sourceMappingURL=chunk-S3OPGGZB.js.map
271
+ //# sourceMappingURL=chunk-RIW3UDDY.js.map
@@ -1,15 +1,15 @@
1
- import {
2
- HermesAdapter
3
- } from "./chunk-42NQ7AVG.js";
4
- import {
5
- ReplitAdapter
6
- } from "./chunk-TMSXWOBZ.js";
7
1
  import {
8
2
  ClaudeCodeAdapter
9
3
  } from "./chunk-J64TK33U.js";
10
4
  import {
11
5
  CodexAdapter
12
6
  } from "./chunk-RSUYKGGZ.js";
7
+ import {
8
+ HermesAdapter
9
+ } from "./chunk-42NQ7AVG.js";
10
+ import {
11
+ ReplitAdapter
12
+ } from "./chunk-TMSXWOBZ.js";
13
13
 
14
14
  // src/adapters/registry.ts
15
15
  var AdapterRegistry = class {
@@ -53,4 +53,4 @@ var AdapterRegistry = class {
53
53
  export {
54
54
  AdapterRegistry
55
55
  };
56
- //# sourceMappingURL=chunk-AU7Q3LSC.js.map
56
+ //# sourceMappingURL=chunk-RKNJBZ55.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  compareEntityTimestamps,
6
6
  normalizeEntityName
7
- } from "./chunk-YYOK4GVF.js";
7
+ } from "./chunk-422TIKIH.js";
8
8
  import {
9
9
  sanitizeMemoryContent
10
10
  } from "./chunk-5GKPFL3S.js";
@@ -679,4 +679,4 @@ export {
679
679
  entityIndexVersion,
680
680
  entityRecentTranscriptLookbackHours
681
681
  };
682
- //# sourceMappingURL=chunk-EH27LHML.js.map
682
+ //# sourceMappingURL=chunk-RX7EBFFJ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  StorageManager,
3
3
  normalizeEntityName
4
- } from "./chunk-YYOK4GVF.js";
4
+ } from "./chunk-422TIKIH.js";
5
5
  import {
6
6
  serializeMutations
7
7
  } from "./chunk-LTJAMRGI.js";
@@ -956,4 +956,4 @@ export {
956
956
  resolveBriefingSaveDir,
957
957
  briefingFilename
958
958
  };
959
- //# sourceMappingURL=chunk-2COL35PK.js.map
959
+ //# sourceMappingURL=chunk-T3XSXAWK.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ LanceDbBackend
3
+ } from "./chunk-5CEJH5ZN.js";
1
4
  import {
2
5
  MeilisearchBackend
3
6
  } from "./chunk-WRFKZEO6.js";
@@ -13,9 +16,6 @@ import {
13
16
  import {
14
17
  EmbedHelper
15
18
  } from "./chunk-EHISUJFN.js";
16
- import {
17
- LanceDbBackend
18
- } from "./chunk-5CEJH5ZN.js";
19
19
  import {
20
20
  createConversationIndexBackend
21
21
  } from "./chunk-DCWIQFNA.js";
@@ -170,4 +170,4 @@ export {
170
170
  createConversationSearchBackend,
171
171
  createConversationIndexRuntime
172
172
  };
173
- //# sourceMappingURL=chunk-2KAYTPPT.js.map
173
+ //# sourceMappingURL=chunk-UUMYB3FR.js.map
@@ -1,12 +1,15 @@
1
- import {
2
- chatgptReplayNormalizer
3
- } from "./chunk-MC4FJXPA.js";
4
1
  import {
5
2
  claudeReplayNormalizer
6
3
  } from "./chunk-LQHDIS7L.js";
7
4
  import {
8
5
  openclawReplayNormalizer
9
6
  } from "./chunk-7F7Z6MOS.js";
7
+ import {
8
+ chatgptReplayNormalizer
9
+ } from "./chunk-MC4FJXPA.js";
10
+ import {
11
+ exportJsonBundle
12
+ } from "./chunk-UP6MOYCB.js";
10
13
  import {
11
14
  exportSqlite
12
15
  } from "./chunk-7VFZTJ7K.js";
@@ -25,9 +28,6 @@ import {
25
28
  import {
26
29
  backupMemoryDir
27
30
  } from "./chunk-2NLLXCJG.js";
28
- import {
29
- exportJsonBundle
30
- } from "./chunk-UP6MOYCB.js";
31
31
  import {
32
32
  exportMarkdownBundle
33
33
  } from "./chunk-765K3SAT.js";
@@ -42,11 +42,14 @@ import {
42
42
  clampBatchSize,
43
43
  runReplay
44
44
  } from "./chunk-HOJZMQ4J.js";
45
+ import {
46
+ rebuildMemoryLifecycleLedger
47
+ } from "./chunk-5YQN2XYC.js";
45
48
  import {
46
49
  rebuildMemoryProjection,
47
50
  repairMemoryProjection,
48
51
  verifyMemoryProjection
49
- } from "./chunk-5RHM43BJ.js";
52
+ } from "./chunk-LLLG5PTE.js";
50
53
  import {
51
54
  rebuildObservations
52
55
  } from "./chunk-LZZNTPLR.js";
@@ -56,9 +59,6 @@ import {
56
59
  import {
57
60
  migrateObservations
58
61
  } from "./chunk-D6RIFG4O.js";
59
- import {
60
- rebuildMemoryLifecycleLedger
61
- } from "./chunk-KRGC4EDX.js";
62
62
  import {
63
63
  runCompatChecks
64
64
  } from "./chunk-GQL52GQ5.js";
@@ -70,7 +70,7 @@ import {
70
70
  } from "./chunk-CKITWVWJ.js";
71
71
  import {
72
72
  promoteSemanticRuleFromMemory
73
- } from "./chunk-4KZGLDJJ.js";
73
+ } from "./chunk-HHSO6VCQ.js";
74
74
  import {
75
75
  resolveAgentAccessAuthToken
76
76
  } from "./chunk-TGQ2NTWH.js";
@@ -78,10 +78,10 @@ import {
78
78
  buildResumeBundleFromState,
79
79
  getResumeBundleStatus,
80
80
  recordResumeBundle
81
- } from "./chunk-S3OPGGZB.js";
81
+ } from "./chunk-RIW3UDDY.js";
82
82
  import {
83
83
  parseXrayCliOptions
84
- } from "./chunk-JAKYZGV4.js";
84
+ } from "./chunk-CYJV5AYC.js";
85
85
  import {
86
86
  runBenchmarkRecall,
87
87
  runOperatorConfigReview,
@@ -89,12 +89,12 @@ import {
89
89
  runOperatorInventory,
90
90
  runOperatorRepair,
91
91
  runOperatorSetup
92
- } from "./chunk-UCJ5CDTK.js";
92
+ } from "./chunk-HU4EBIXO.js";
93
93
  import {
94
94
  listNamespaces,
95
95
  runNamespaceMigration,
96
96
  verifyNamespaces
97
- } from "./chunk-YTZLBBEB.js";
97
+ } from "./chunk-YMPEGBLL.js";
98
98
  import {
99
99
  collectPatternMemories,
100
100
  explainPatternMemory,
@@ -107,16 +107,13 @@ import {
107
107
  import {
108
108
  GraphDashboardServer
109
109
  } from "./chunk-YNDLCWXS.js";
110
- import {
111
- isReplaySource,
112
- normalizeReplaySessionKey
113
- } from "./chunk-2PRQG7PV.js";
114
110
  import {
115
111
  RoutingRulesStore
116
112
  } from "./chunk-WIWPSQYU.js";
117
113
  import {
118
- searchVerifiedEpisodes
119
- } from "./chunk-S35FX6MU.js";
114
+ isReplaySource,
115
+ normalizeReplaySessionKey
116
+ } from "./chunk-2PRQG7PV.js";
120
117
  import {
121
118
  getUtilityLearningStatus,
122
119
  learnUtilityPromotionWeights
@@ -125,12 +122,15 @@ import {
125
122
  getUtilityTelemetryStatus,
126
123
  recordUtilityTelemetryEvent
127
124
  } from "./chunk-TERNBNJB.js";
125
+ import {
126
+ searchVerifiedEpisodes
127
+ } from "./chunk-H2AGJ5SV.js";
128
128
  import {
129
129
  ThreadingManager
130
130
  } from "./chunk-QRDOSYOR.js";
131
131
  import {
132
132
  searchVerifiedSemanticRules
133
- } from "./chunk-OZ2KQ7HF.js";
133
+ } from "./chunk-O6SEGJNV.js";
134
134
  import {
135
135
  getWorkProductLedgerStatus,
136
136
  recordWorkProductLedgerEntry,
@@ -141,7 +141,7 @@ import {
141
141
  } from "./chunk-GY3SKOS4.js";
142
142
  import {
143
143
  formatNamespaceMaintenanceHealthText
144
- } from "./chunk-REWQAFSA.js";
144
+ } from "./chunk-NERBFQNY.js";
145
145
  import {
146
146
  analyzeSessionIntegrity,
147
147
  applySessionRepair,
@@ -209,13 +209,13 @@ import {
209
209
  } from "./chunk-UQ7RN5HK.js";
210
210
  import {
211
211
  parseConfig
212
- } from "./chunk-A5TUPZ3N.js";
212
+ } from "./chunk-ZKUW2MJG.js";
213
213
  import {
214
214
  getAbstractionNodeStoreStatus
215
215
  } from "./chunk-OADWQ5CR.js";
216
216
  import {
217
217
  EngramAccessHttpServer
218
- } from "./chunk-ANI5DUAE.js";
218
+ } from "./chunk-6S5ZI7HB.js";
219
219
  import {
220
220
  WearablesInputError
221
221
  } from "./chunk-7WV3F5DQ.js";
@@ -228,10 +228,10 @@ import {
228
228
  createProductionChatLlmAdapter,
229
229
  loadChatSession,
230
230
  sessionBelongsToPrincipal
231
- } from "./chunk-P5IPFZVH.js";
231
+ } from "./chunk-BGQ7WKMT.js";
232
232
  import {
233
233
  EngramAccessService
234
- } from "./chunk-F3PVXKHP.js";
234
+ } from "./chunk-M3GBOKUX.js";
235
235
  import {
236
236
  WorkStorage
237
237
  } from "./chunk-GDB4J2H3.js";
@@ -243,13 +243,13 @@ import {
243
243
  parseRecallExplainFormat,
244
244
  renderRecallExplain,
245
245
  renderXray
246
- } from "./chunk-LXSG4L55.js";
246
+ } from "./chunk-V7UUIIR7.js";
247
247
  import {
248
248
  listMemoryGovernanceRuns,
249
249
  readMemoryGovernanceRunArtifact,
250
250
  restoreMemoryGovernanceRun,
251
251
  runMemoryGovernance
252
- } from "./chunk-2PTBLS2S.js";
252
+ } from "./chunk-NBYXOEO7.js";
253
253
  import {
254
254
  getTrustZoneStoreStatus,
255
255
  promoteTrustZoneRecord,
@@ -258,19 +258,23 @@ import {
258
258
  import {
259
259
  getObjectiveStateStoreStatus
260
260
  } from "./chunk-6HMYUWXR.js";
261
+ import {
262
+ resolveCapabilities,
263
+ resolveGraphConstructionCapabilities
264
+ } from "./chunk-DVRHLN2O.js";
261
265
  import {
262
266
  getCausalTrajectoryStoreStatus
263
- } from "./chunk-YI7RZO7Y.js";
267
+ } from "./chunk-ZE7GJ76H.js";
264
268
  import {
265
269
  analyzeGraphHealth
266
- } from "./chunk-YGKUAX2B.js";
270
+ } from "./chunk-XROP4ZHB.js";
267
271
  import {
268
272
  assertPathInsideRoot
269
273
  } from "./chunk-5GPPACXK.js";
270
274
  import {
271
275
  RECALL_DISCLOSURE_LEVELS,
272
276
  isRecallDisclosure
273
- } from "./chunk-N3DUH6OO.js";
277
+ } from "./chunk-ZW5I3UNP.js";
274
278
  import {
275
279
  RECALL_FALLBACK_DIRS
276
280
  } from "./chunk-VS2IYZRU.js";
@@ -718,6 +722,7 @@ function formatRule(rule) {
718
722
 
719
723
  // src/cli/research-status-commands.ts
720
724
  function registerResearchStatusCommands(cmd, orchestrator) {
725
+ const caps = resolveCapabilities(orchestrator.config);
721
726
  cmd.command("objective-state-status").description("Show objective-state store status, snapshot counts, and latest stored snapshot").action(async () => {
722
727
  const status = await runObjectiveStateStatusCliCommand({
723
728
  memoryDir: orchestrator.config.memoryDir,
@@ -765,7 +770,7 @@ function registerResearchStatusCommands(cmd, orchestrator) {
765
770
  const status = await runAbstractionNodeStatusCliCommand({
766
771
  memoryDir: orchestrator.config.memoryDir,
767
772
  abstractionNodeStoreDir: orchestrator.config.abstractionNodeStoreDir,
768
- harmonicRetrievalEnabled: orchestrator.config.harmonicRetrievalEnabled,
773
+ harmonicRetrievalEnabled: caps.harmonicRetrieval,
769
774
  abstractionAnchorsEnabled: orchestrator.config.abstractionAnchorsEnabled
770
775
  });
771
776
  console.log(JSON.stringify(status, null, 2));
@@ -775,7 +780,7 @@ function registerResearchStatusCommands(cmd, orchestrator) {
775
780
  const status = await runCueAnchorStatusCliCommand({
776
781
  memoryDir: orchestrator.config.memoryDir,
777
782
  abstractionNodeStoreDir: orchestrator.config.abstractionNodeStoreDir,
778
- harmonicRetrievalEnabled: orchestrator.config.harmonicRetrievalEnabled,
783
+ harmonicRetrievalEnabled: caps.harmonicRetrieval,
779
784
  abstractionAnchorsEnabled: orchestrator.config.abstractionAnchorsEnabled
780
785
  });
781
786
  console.log(JSON.stringify(status, null, 2));
@@ -788,7 +793,7 @@ function registerResearchStatusCommands(cmd, orchestrator) {
788
793
  const results = await runHarmonicSearchCliCommand({
789
794
  memoryDir: orchestrator.config.memoryDir,
790
795
  abstractionNodeStoreDir: orchestrator.config.abstractionNodeStoreDir,
791
- harmonicRetrievalEnabled: orchestrator.config.harmonicRetrievalEnabled,
796
+ harmonicRetrievalEnabled: caps.harmonicRetrieval,
792
797
  abstractionAnchorsEnabled: orchestrator.config.abstractionAnchorsEnabled,
793
798
  query,
794
799
  maxResults: Number.isFinite(maxResults) ? maxResults : 3,
@@ -3570,7 +3575,7 @@ function registerCli(api, orchestrator, registerOptions = {}) {
3570
3575
  const idArg = typeof args[0] === "string" ? args[0] : "";
3571
3576
  const options = args[1] ?? {};
3572
3577
  const reason = typeof options.reason === "string" && options.reason.trim().length > 0 ? options.reason.trim() : void 0;
3573
- const { forgetMemory } = await import("./forget-U66KPDPY.js");
3578
+ const { forgetMemory } = await import("./forget-OEE5OELK.js");
3574
3579
  try {
3575
3580
  const result = await forgetMemory(orchestrator.storage, {
3576
3581
  id: idArg,
@@ -5277,11 +5282,12 @@ ${doc.content}` : doc.content,
5277
5282
  cmd.command("rebuild-index").description("Alias for conversation-index-rebuild with operator-friendly naming").option("--session-key <sessionKey>", "Optional session key to rebuild instead of all recent transcripts").option("--hours <count>", "Hours of transcript history to scan", "24").option("--embed", "Force embedding step for backends that support it").action(buildConversationIndexRebuildAction(orchestrator));
5278
5283
  cmd.command("graph-health").description("Show graph edge-file integrity, node coverage, and corruption counts").option("--repair-guidance", "Include non-destructive repair guidance").action(async (...args) => {
5279
5284
  const options = args[0] ?? {};
5285
+ const graphCaps = resolveGraphConstructionCapabilities(orchestrator.config);
5280
5286
  const report = await runGraphHealthCliCommand({
5281
5287
  memoryDir: orchestrator.config.memoryDir,
5282
- entityGraphEnabled: orchestrator.config.entityGraphEnabled,
5283
- timeGraphEnabled: orchestrator.config.timeGraphEnabled,
5284
- causalGraphEnabled: orchestrator.config.causalGraphEnabled,
5288
+ entityGraphEnabled: graphCaps.entityGraph,
5289
+ timeGraphEnabled: graphCaps.timeGraph,
5290
+ causalGraphEnabled: graphCaps.causalGraph,
5285
5291
  includeRepairGuidance: options.repairGuidance === true
5286
5292
  });
5287
5293
  console.log(JSON.stringify(report, null, 2));
@@ -5308,12 +5314,15 @@ ${doc.content}` : doc.content,
5308
5314
  });
5309
5315
  cmd.command("repair").description("Aggregate safe repair planning across session integrity and graph health").option("--apply", "Apply bounded Engram-managed session repairs").option("--dry-run", "Force dry-run output").option("--allow-session-file-repair", "Allow explicit OpenClaw session-file repair path (still no automatic rewiring)").option("--session-files-dir <path>", "Optional OpenClaw session files directory for guarded repair workflow").option("--json", "Emit machine-readable JSON only").action(async (...args) => {
5310
5316
  const options = args[0] ?? {};
5317
+ const repairGraphCaps = resolveGraphConstructionCapabilities(orchestrator.config);
5311
5318
  const report = await runOperatorRepair({
5312
5319
  config: {
5313
5320
  memoryDir: orchestrator.config.memoryDir,
5314
- entityGraphEnabled: orchestrator.config.entityGraphEnabled,
5315
- timeGraphEnabled: orchestrator.config.timeGraphEnabled,
5316
- causalGraphEnabled: orchestrator.config.causalGraphEnabled
5321
+ entityGraphEnabled: repairGraphCaps.entityGraph,
5322
+ timeGraphEnabled: repairGraphCaps.timeGraph,
5323
+ causalGraphEnabled: repairGraphCaps.causalGraph,
5324
+ multiGraphMemoryEnabled: repairGraphCaps.multiGraphMemory,
5325
+ graphWriteSessionAdjacencyEnabled: repairGraphCaps.graphWriteSessionAdjacency
5317
5326
  },
5318
5327
  apply: options.apply === true,
5319
5328
  dryRun: options.dryRun === true,
@@ -7496,4 +7505,4 @@ export {
7496
7505
  listMemoryMarkdownFilePaths,
7497
7506
  registerCli
7498
7507
  };
7499
- //# sourceMappingURL=chunk-72VDBALG.js.map
7508
+ //# sourceMappingURL=chunk-V5EGLYXE.js.map