@remnic/core 1.1.12 → 1.1.13
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.
- package/dist/access-cli.d.ts +2 -1
- package/dist/access-cli.js +263 -82
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +26 -60
- package/dist/access-http.js +43 -29
- package/dist/access-mcp.d.ts +24 -6
- package/dist/access-mcp.js +35 -28
- package/dist/access-schema.d.ts +9 -6
- package/dist/access-schema.js +7 -5
- package/dist/access-service-DcCDmNYC.d.ts +1542 -0
- package/dist/access-service.d.ts +25 -7
- package/dist/access-service.js +33 -26
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.js +11 -3
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +24 -0
- package/dist/adapters/claude-code.js +9 -0
- package/dist/adapters/codex.d.ts +25 -0
- package/dist/adapters/codex.js +9 -0
- package/dist/adapters/hermes.d.ts +35 -0
- package/dist/adapters/hermes.js +9 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.js +26 -0
- package/dist/adapters/registry.d.ts +20 -0
- package/dist/adapters/registry.js +13 -0
- package/dist/adapters/replit.d.ts +28 -0
- package/dist/adapters/replit.js +9 -0
- package/dist/adapters/types.d.ts +43 -0
- package/dist/adapters/types.js +8 -0
- package/dist/bootstrap.d.ts +20 -5
- package/dist/boxes.d.ts +7 -0
- package/dist/boxes.js +1 -1
- package/dist/briefing.d.ts +5 -3
- package/dist/briefing.js +9 -6
- package/dist/buffer-surprise-report.js +1 -1
- package/dist/buffer.d.ts +18 -4
- package/dist/buffer.js +1 -1
- package/dist/calibration.js +4 -4
- package/dist/capsule-cli.d.ts +4 -4
- package/dist/capsule-cli.js +1 -1
- package/dist/capsule-crypto-5CYAGVC5.js +18 -0
- package/dist/capsule-merge-4MGKE7C5.js +189 -0
- package/dist/causal-behavior.d.ts +8 -28
- package/dist/causal-behavior.js +6 -3
- package/dist/causal-behavior.js.map +1 -1
- package/dist/causal-chain.js +3 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +24 -13
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory.js +1 -1
- package/dist/chunk-25MQ7IHJ.js +427 -0
- package/dist/chunk-25MQ7IHJ.js.map +1 -0
- package/dist/chunk-2F2W355T.js +256 -0
- package/dist/chunk-2F2W355T.js.map +1 -0
- package/dist/chunk-2KI4QFHU.js +228 -0
- package/dist/chunk-2KI4QFHU.js.map +1 -0
- package/dist/chunk-2PRQG7PV.js +86 -0
- package/dist/chunk-2PRQG7PV.js.map +1 -0
- package/dist/chunk-2QR3XXIC.js +2272 -0
- package/dist/chunk-2QR3XXIC.js.map +1 -0
- package/dist/chunk-2WWLHTZY.js +121 -0
- package/dist/chunk-326G7DJK.js +2185 -0
- package/dist/chunk-326G7DJK.js.map +1 -0
- package/dist/chunk-34DQE4KF.js +174 -0
- package/dist/chunk-34DQE4KF.js.map +1 -0
- package/dist/chunk-3APJ5EVB.js +601 -0
- package/dist/chunk-3APJ5EVB.js.map +1 -0
- package/dist/chunk-3HPAPHUK.js +51 -0
- package/dist/chunk-3HPAPHUK.js.map +1 -0
- package/dist/chunk-3JXBXXM2.js +69 -0
- package/dist/chunk-3JXBXXM2.js.map +1 -0
- package/dist/chunk-3KW65B36.js +681 -0
- package/dist/chunk-3KW65B36.js.map +1 -0
- package/dist/chunk-3UXOZBHV.js +20 -0
- package/dist/chunk-3UXOZBHV.js.map +1 -0
- package/dist/chunk-3VAL7ZL2.js +266 -0
- package/dist/chunk-3VAL7ZL2.js.map +1 -0
- package/dist/chunk-3Y4P7RXM.js +31 -0
- package/dist/chunk-3Y4P7RXM.js.map +1 -0
- package/dist/chunk-47VWKCAF.js +273 -0
- package/dist/chunk-47VWKCAF.js.map +1 -0
- package/dist/chunk-4CRG46BG.js +271 -0
- package/dist/chunk-5375UYTQ.js +914 -0
- package/dist/chunk-5375UYTQ.js.map +1 -0
- package/dist/chunk-56K5QLHX.js +506 -0
- package/dist/chunk-56K5QLHX.js.map +1 -0
- package/dist/chunk-5RGLBDQF.js +596 -0
- package/dist/chunk-5RGLBDQF.js.map +1 -0
- package/dist/chunk-5UZXUTVO.js +9 -0
- package/dist/chunk-5UZXUTVO.js.map +1 -0
- package/dist/chunk-65PG43EQ.js +105 -0
- package/dist/chunk-65PG43EQ.js.map +1 -0
- package/dist/chunk-66DHUKLO.js +57 -0
- package/dist/chunk-66DHUKLO.js.map +1 -0
- package/dist/chunk-6FC5EGNV.js +46 -0
- package/dist/chunk-6FC5EGNV.js.map +1 -0
- package/dist/chunk-6H2TESSP.js +62 -0
- package/dist/chunk-6H2TESSP.js.map +1 -0
- package/dist/chunk-6LVVDPJ4.js +32 -0
- package/dist/chunk-6LVVDPJ4.js.map +1 -0
- package/dist/chunk-6RVI47ZR.js +159 -0
- package/dist/chunk-6RVI47ZR.js.map +1 -0
- package/dist/chunk-7AAT6G4Q.js +5117 -0
- package/dist/chunk-7AAT6G4Q.js.map +1 -0
- package/dist/chunk-7DTASS5T.js +29 -0
- package/dist/chunk-7DTASS5T.js.map +1 -0
- package/dist/chunk-7IASACLB.js +596 -0
- package/dist/chunk-7MNMYOFP.js +32 -0
- package/dist/chunk-7MNMYOFP.js.map +1 -0
- package/dist/chunk-7N4KAIGN.js +133 -0
- package/dist/chunk-7N4KAIGN.js.map +1 -0
- package/dist/chunk-7OZ53EXP.js +101 -0
- package/dist/chunk-7OZ53EXP.js.map +1 -0
- package/dist/chunk-7XYTQGCC.js +134 -0
- package/dist/chunk-7XYTQGCC.js.map +1 -0
- package/dist/chunk-A2XUIMJ3.js +341 -0
- package/dist/chunk-A2XUIMJ3.js.map +1 -0
- package/dist/chunk-AGZQD76C.js +201 -0
- package/dist/chunk-AGZQD76C.js.map +1 -0
- package/dist/chunk-APO3DCMU.js +361 -0
- package/dist/chunk-APO3DCMU.js.map +1 -0
- package/dist/chunk-BFBF3XEF.js +283 -0
- package/dist/chunk-BFBF3XEF.js.map +1 -0
- package/dist/chunk-BJ3KMYTB.js +1974 -0
- package/dist/chunk-BJ3KMYTB.js.map +1 -0
- package/dist/chunk-CHEL3SKB.js +6758 -0
- package/dist/chunk-CHEL3SKB.js.map +1 -0
- package/dist/chunk-CQZRLNMV.js +1491 -0
- package/dist/chunk-CQZRLNMV.js.map +1 -0
- package/dist/chunk-D46YSIYX.js +892 -0
- package/dist/chunk-D46YSIYX.js.map +1 -0
- package/dist/chunk-DINWEURR.js +648 -0
- package/dist/chunk-DINWEURR.js.map +1 -0
- package/dist/chunk-DK5LDEQM.js +530 -0
- package/dist/chunk-DK5LDEQM.js.map +1 -0
- package/dist/chunk-DOM4GKSW.js +34 -0
- package/dist/chunk-DOM4GKSW.js.map +1 -0
- package/dist/chunk-EDTHC6UD.js +1075 -0
- package/dist/chunk-EFJ3MQ4V.js +721 -0
- package/dist/chunk-EHRTFRWW.js +89 -0
- package/dist/chunk-EHRTFRWW.js.map +1 -0
- package/dist/chunk-FAJ7FZYM.js +11 -0
- package/dist/chunk-FAJ7FZYM.js.map +1 -0
- package/dist/chunk-FBYESMQ2.js +570 -0
- package/dist/chunk-FDU6HUUL.js +147 -0
- package/dist/chunk-FF4KLI5W.js +99 -0
- package/dist/chunk-FF4KLI5W.js.map +1 -0
- package/dist/chunk-FIT6DMX6.js +310 -0
- package/dist/chunk-FIT6DMX6.js.map +1 -0
- package/dist/chunk-FJ43PRLT.js +272 -0
- package/dist/chunk-FJ43PRLT.js.map +1 -0
- package/dist/chunk-FKFMOY3N.js +32 -0
- package/dist/chunk-FKFMOY3N.js.map +1 -0
- package/dist/chunk-FLTNHQK6.js +262 -0
- package/dist/chunk-FLTNHQK6.js.map +1 -0
- package/dist/chunk-GA454ALV.js +12436 -0
- package/dist/chunk-GA454ALV.js.map +1 -0
- package/dist/chunk-GGKRUQOO.js +228 -0
- package/dist/chunk-GIF42EW3.js +63 -0
- package/dist/chunk-GIF42EW3.js.map +1 -0
- package/dist/chunk-GL6I6MEQ.js +647 -0
- package/dist/chunk-H3ME6L6D.js +709 -0
- package/dist/chunk-H3ME6L6D.js.map +1 -0
- package/dist/chunk-HHLLAQGZ.js +1 -0
- package/dist/chunk-HXXBL2KD.js +2040 -0
- package/dist/chunk-I5V2VDIW.js +219 -0
- package/dist/chunk-I5V2VDIW.js.map +1 -0
- package/dist/chunk-I6K5FBRQ.js +35 -0
- package/dist/chunk-I6K5FBRQ.js.map +1 -0
- package/dist/chunk-ICRIXAP2.js +121 -0
- package/dist/chunk-ICRIXAP2.js.map +1 -0
- package/dist/chunk-J4EB7DNW.js +11 -0
- package/dist/chunk-J4EB7DNW.js.map +1 -0
- package/dist/chunk-JLFA7DQG.js +62 -0
- package/dist/chunk-JLFA7DQG.js.map +1 -0
- package/dist/chunk-KJTKLXTH.js +9 -0
- package/dist/chunk-KJTKLXTH.js.map +1 -0
- package/dist/chunk-KLAO5DGL.js +917 -0
- package/dist/chunk-KLAO5DGL.js.map +1 -0
- package/dist/chunk-KNKUID7G.js +183 -0
- package/dist/chunk-KOSORCJG.js +624 -0
- package/dist/chunk-KOSORCJG.js.map +1 -0
- package/dist/chunk-KUJVMMZQ.js +1262 -0
- package/dist/chunk-KUJVMMZQ.js.map +1 -0
- package/dist/chunk-LCR46JY5.js +123 -0
- package/dist/chunk-LCR46JY5.js.map +1 -0
- package/dist/chunk-LLQ2LLWF.js +148 -0
- package/dist/chunk-LLQ2LLWF.js.map +1 -0
- package/dist/chunk-LPMVBPA3.js +236 -0
- package/dist/chunk-LT3NLYSI.js +50 -0
- package/dist/chunk-LT3NLYSI.js.map +1 -0
- package/dist/chunk-LUDTDZLK.js +287 -0
- package/dist/chunk-LUDTDZLK.js.map +1 -0
- package/dist/chunk-M23FSH32.js +3963 -0
- package/dist/chunk-M23FSH32.js.map +1 -0
- package/dist/chunk-MC26UJIM.js +118 -0
- package/dist/chunk-ME6ESPZU.js +119 -0
- package/dist/chunk-ME6ESPZU.js.map +1 -0
- package/dist/chunk-MGKYQQYF.js +272 -0
- package/dist/chunk-MJFNCJXV.js +66 -0
- package/dist/chunk-MJFNCJXV.js.map +1 -0
- package/dist/chunk-MSWG7JI6.js +237 -0
- package/dist/chunk-MSWG7JI6.js.map +1 -0
- package/dist/chunk-MT25YHYH.js +141 -0
- package/dist/chunk-MT25YHYH.js.map +1 -0
- package/dist/chunk-MT4HVDUZ.js +53 -0
- package/dist/chunk-MY6TPVXW.js +219 -0
- package/dist/chunk-N2D6GXBM.js +267 -0
- package/dist/chunk-N2D6GXBM.js.map +1 -0
- package/dist/chunk-NJ3MJQZX.js +46 -0
- package/dist/chunk-NJ3MJQZX.js.map +1 -0
- package/dist/chunk-NMZY542O.js +335 -0
- package/dist/chunk-NMZY542O.js.map +1 -0
- package/dist/chunk-NNVTUXEB.js +23 -0
- package/dist/chunk-NZL6GGQE.js +375 -0
- package/dist/chunk-NZL6GGQE.js.map +1 -0
- package/dist/chunk-P4NEIHUT.js +108 -0
- package/dist/chunk-P7FMDTKL.js +103 -0
- package/dist/chunk-P7FMDTKL.js.map +1 -0
- package/dist/chunk-PHK3HARR.js +32 -0
- package/dist/chunk-PHK3HARR.js.map +1 -0
- package/dist/chunk-PIRJPV5T.js +98 -0
- package/dist/chunk-PIRJPV5T.js.map +1 -0
- package/dist/chunk-PK7H5L6Y.js +159 -0
- package/dist/chunk-PK7H5L6Y.js.map +1 -0
- package/dist/chunk-PR5FBTFU.js +233 -0
- package/dist/chunk-PR5FBTFU.js.map +1 -0
- package/dist/chunk-PU63GXWS.js +174 -0
- package/dist/chunk-PU63GXWS.js.map +1 -0
- package/dist/chunk-PZIAX57I.js +124 -0
- package/dist/chunk-PZIAX57I.js.map +1 -0
- package/dist/chunk-Q7P4WJDP.js +26 -0
- package/dist/chunk-Q7P4WJDP.js.map +1 -0
- package/dist/chunk-QQUAB63I.js +63 -0
- package/dist/chunk-QQUAB63I.js.map +1 -0
- package/dist/chunk-QRNI5JBH.js +18 -0
- package/dist/chunk-RHY3HH7P.js +601 -0
- package/dist/chunk-RHY3HH7P.js.map +1 -0
- package/dist/chunk-RRF5UOBJ.js +91 -0
- package/dist/chunk-RXDLTSWT.js +124 -0
- package/dist/chunk-RXDLTSWT.js.map +1 -0
- package/dist/chunk-RYED3SPJ.js +42 -0
- package/dist/chunk-RYED3SPJ.js.map +1 -0
- package/dist/chunk-S7KDBTWT.js +106 -0
- package/dist/chunk-S7KDBTWT.js.map +1 -0
- package/dist/chunk-SEDEKFYQ.js +1 -0
- package/dist/chunk-TECVW3JP.js +36 -0
- package/dist/chunk-TECVW3JP.js.map +1 -0
- package/dist/chunk-TFO23QT4.js +88 -0
- package/dist/chunk-TFO23QT4.js.map +1 -0
- package/dist/chunk-TK4UEOSK.js +76 -0
- package/dist/chunk-TK4UEOSK.js.map +1 -0
- package/dist/chunk-TKWGAOLV.js +122 -0
- package/dist/chunk-TKWGAOLV.js.map +1 -0
- package/dist/chunk-TMM4S4IJ.js +597 -0
- package/dist/chunk-TMM4S4IJ.js.map +1 -0
- package/dist/chunk-TMQLARTH.js +188 -0
- package/dist/chunk-TMQLARTH.js.map +1 -0
- package/dist/chunk-TPDBFYEG.js +130 -0
- package/dist/chunk-TPDBFYEG.js.map +1 -0
- package/dist/chunk-TPMQ3G6Z.js +145 -0
- package/dist/chunk-TPMQ3G6Z.js.map +1 -0
- package/dist/chunk-TZOLIGIG.js +61 -0
- package/dist/chunk-TZOLIGIG.js.map +1 -0
- package/dist/chunk-U3PN77QT.js +113 -0
- package/dist/chunk-U3WSW6PZ.js +277 -0
- package/dist/chunk-U4SCL7B7.js +640 -0
- package/dist/chunk-U4SCL7B7.js.map +1 -0
- package/dist/chunk-UWK5OXUJ.js +156 -0
- package/dist/chunk-UWK5OXUJ.js.map +1 -0
- package/dist/chunk-UWVJF25J.js +74 -0
- package/dist/chunk-UXHQAFNA.js +1317 -0
- package/dist/chunk-UXHQAFNA.js.map +1 -0
- package/dist/chunk-V5OCT34X.js +1 -0
- package/dist/chunk-VLXA6PI2.js +304 -0
- package/dist/chunk-VLXA6PI2.js.map +1 -0
- package/dist/chunk-VNO6ZJ35.js +500 -0
- package/dist/chunk-VNO6ZJ35.js.map +1 -0
- package/dist/chunk-VW676BEI.js +827 -0
- package/dist/chunk-VW676BEI.js.map +1 -0
- package/dist/chunk-W3LR522O.js +2296 -0
- package/dist/chunk-W4L6CZKA.js +96 -0
- package/dist/chunk-W4L6CZKA.js.map +1 -0
- package/dist/chunk-W4RVMTHR.js +372 -0
- package/dist/chunk-W4RVMTHR.js.map +1 -0
- package/dist/chunk-WEHSQBFR.js +188 -0
- package/dist/chunk-WEHSQBFR.js.map +1 -0
- package/dist/chunk-WELDCG6C.js +380 -0
- package/dist/chunk-WELDCG6C.js.map +1 -0
- package/dist/chunk-WZYKANL3.js +2800 -0
- package/dist/chunk-WZYKANL3.js.map +1 -0
- package/dist/chunk-XIG5PDM7.js +48 -0
- package/dist/chunk-XJNBEDFE.js +193 -0
- package/dist/chunk-XJNBEDFE.js.map +1 -0
- package/dist/chunk-XVVIG67A.js +291 -0
- package/dist/chunk-XVVIG67A.js.map +1 -0
- package/dist/chunk-XVZ7B3HG.js +135 -0
- package/dist/chunk-YBPYIAA5.js +73 -0
- package/dist/chunk-YBPYIAA5.js.map +1 -0
- package/dist/chunk-Z734BLO3.js +21 -0
- package/dist/chunk-Z734BLO3.js.map +1 -0
- package/dist/chunk-ZKSK55RC.js +269 -0
- package/dist/chunk-ZKSK55RC.js.map +1 -0
- package/dist/chunk-ZTFCYYEZ.js +69 -0
- package/dist/chunk-ZTFCYYEZ.js.map +1 -0
- package/dist/chunk-ZY2MNJR6.js +329 -0
- package/dist/chunk-ZY2MNJR6.js.map +1 -0
- package/dist/cli-D3VpkVwB.d.ts +1136 -0
- package/dist/cli.d.ts +39 -10
- package/dist/cli.js +108 -49
- package/dist/commitment-ledger.js +1 -1
- package/dist/compat/checks.d.ts +5 -0
- package/dist/compat/checks.js +11 -0
- package/dist/compat/checks.js.map +1 -0
- package/dist/compat/types.d.ts +30 -0
- package/dist/compat/types.js +1 -0
- package/dist/compat/types.js.map +1 -0
- package/dist/compounding/engine.d.ts +221 -0
- package/dist/compounding/engine.js +32 -0
- package/dist/compounding/engine.js.map +1 -0
- package/dist/compounding/preference-consolidator.d.ts +92 -0
- package/dist/compounding/preference-consolidator.js +553 -0
- package/dist/compounding/preference-consolidator.js.map +1 -0
- package/dist/config.d.ts +4 -2
- package/dist/config.js +9 -4
- package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
- package/dist/connectors/codex-materialize-runner.d.ts +64 -0
- package/dist/connectors/codex-materialize-runner.js +33 -0
- package/dist/connectors/codex-materialize-runner.js.map +1 -0
- package/dist/connectors/codex-materialize.d.ts +195 -0
- package/dist/connectors/codex-materialize.js +38 -0
- package/dist/connectors/codex-materialize.js.map +1 -0
- package/dist/connectors/index.d.ts +444 -0
- package/dist/connectors/index.js +115 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
- package/dist/connectors-cli.d.ts +1 -1
- package/dist/consolidation-provenance-check.d.ts +3 -1
- package/dist/consolidation-undo.d.ts +3 -1
- package/dist/contradiction/index.d.ts +258 -0
- package/dist/contradiction/index.js +43 -0
- package/dist/contradiction/index.js.map +1 -0
- package/dist/contradiction-review-ATP4S6IC.js +30 -0
- package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
- package/dist/contradiction-scan-5A4IDZV5.js +13 -0
- package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
- package/dist/conversation-index/backend.d.ts +97 -0
- package/dist/conversation-index/backend.js +13 -0
- package/dist/conversation-index/backend.js.map +1 -0
- package/dist/conversation-index/chunker.d.ts +16 -0
- package/dist/conversation-index/chunker.js +8 -0
- package/dist/conversation-index/chunker.js.map +1 -0
- package/dist/conversation-index/cleanup.d.ts +11 -0
- package/dist/conversation-index/cleanup.js +9 -0
- package/dist/conversation-index/cleanup.js.map +1 -0
- package/dist/conversation-index/faiss-adapter.d.ts +6 -0
- package/dist/conversation-index/faiss-adapter.js +16 -0
- package/dist/conversation-index/faiss-adapter.js.map +1 -0
- package/dist/conversation-index/indexer.d.ts +23 -0
- package/dist/conversation-index/indexer.js +15 -0
- package/dist/conversation-index/indexer.js.map +1 -0
- package/dist/conversation-index/search.d.ts +6 -0
- package/dist/conversation-index/search.js +11 -0
- package/dist/conversation-index/search.js.map +1 -0
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +163 -0
- package/dist/enrichment/index.js +18 -0
- package/dist/enrichment/index.js.map +1 -0
- package/dist/entity-retrieval.d.ts +4 -2
- package/dist/entity-retrieval.js +8 -5
- package/dist/evals.js +1 -1
- package/dist/explicit-capture.d.ts +20 -5
- package/dist/explicit-capture.js +2 -2
- package/dist/extraction-judge-training.js +1 -1
- package/dist/extraction.js +8 -8
- package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
- package/dist/fallback-llm.d.ts +2 -0
- package/dist/fallback-llm.js +4 -4
- package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
- package/dist/index.d.ts +66 -711
- package/dist/index.js +556 -2680
- package/dist/index.js.map +1 -1
- package/dist/lcm/archive.d.ts +89 -0
- package/dist/lcm/archive.js +12 -0
- package/dist/lcm/archive.js.map +1 -0
- package/dist/lcm/dag.d.ts +48 -0
- package/dist/lcm/dag.js +8 -0
- package/dist/lcm/dag.js.map +1 -0
- package/dist/lcm/engine.d.ts +116 -0
- package/dist/lcm/engine.js +20 -0
- package/dist/lcm/engine.js.map +1 -0
- package/dist/lcm/index.d.ts +12 -0
- package/dist/lcm/index.js +44 -0
- package/dist/lcm/index.js.map +1 -0
- package/dist/lcm/queue.d.ts +62 -0
- package/dist/lcm/queue.js +8 -0
- package/dist/lcm/queue.js.map +1 -0
- package/dist/lcm/recall.d.ts +20 -0
- package/dist/lcm/recall.js +8 -0
- package/dist/lcm/recall.js.map +1 -0
- package/dist/lcm/schema.d.ts +16 -0
- package/dist/lcm/schema.js +14 -0
- package/dist/lcm/schema.js.map +1 -0
- package/dist/lcm/summarizer.d.ts +38 -0
- package/dist/lcm/summarizer.js +12 -0
- package/dist/lcm/summarizer.js.map +1 -0
- package/dist/lcm/tools.d.ts +29 -0
- package/dist/lcm/tools.js +8 -0
- package/dist/lcm/tools.js.map +1 -0
- package/dist/live-connectors-runner.js +5 -5
- package/dist/local-llm.js +3 -3
- package/dist/maintenance/archive-observations.d.ts +18 -0
- package/dist/maintenance/archive-observations.js +8 -0
- package/dist/maintenance/archive-observations.js.map +1 -0
- package/dist/maintenance/backup-stamp.d.ts +3 -0
- package/dist/maintenance/backup-stamp.js +8 -0
- package/dist/maintenance/backup-stamp.js.map +1 -0
- package/dist/maintenance/memory-governance-cron.d.ts +85 -0
- package/dist/maintenance/memory-governance-cron.js +22 -0
- package/dist/maintenance/memory-governance-cron.js.map +1 -0
- package/dist/maintenance/memory-governance.d.ts +137 -0
- package/dist/maintenance/memory-governance.js +40 -0
- package/dist/maintenance/memory-governance.js.map +1 -0
- package/dist/maintenance/migrate-observations.d.ts +18 -0
- package/dist/maintenance/migrate-observations.js +9 -0
- package/dist/maintenance/migrate-observations.js.map +1 -0
- package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
- package/dist/maintenance/observation-ledger-utils.js +10 -0
- package/dist/maintenance/observation-ledger-utils.js.map +1 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
- package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
- package/dist/maintenance/rebuild-memory-projection.js +35 -0
- package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
- package/dist/maintenance/rebuild-observations.d.ts +17 -0
- package/dist/maintenance/rebuild-observations.js +9 -0
- package/dist/maintenance/rebuild-observations.js.map +1 -0
- package/dist/mcp-memory-inspector-app.d.ts +24 -6
- package/dist/memory-projection-store.d.ts +108 -3
- package/dist/memory-projection-store.js +2 -1
- package/dist/memory-worth-outcomes.d.ts +4 -2
- package/dist/migrate/from-engram.d.ts +24 -0
- package/dist/migrate/from-engram.js +12 -0
- package/dist/migrate/from-engram.js.map +1 -0
- package/dist/namespaces/migrate.d.ts +50 -0
- package/dist/namespaces/migrate.js +50 -0
- package/dist/namespaces/migrate.js.map +1 -0
- package/dist/namespaces/principal.d.ts +17 -0
- package/dist/namespaces/principal.js +16 -0
- package/dist/namespaces/principal.js.map +1 -0
- package/dist/namespaces/search.d.ts +46 -0
- package/dist/namespaces/search.js +28 -0
- package/dist/namespaces/search.js.map +1 -0
- package/dist/namespaces/storage.d.ts +32 -0
- package/dist/namespaces/storage.js +28 -0
- package/dist/namespaces/storage.js.map +1 -0
- package/dist/network/tailscale.d.ts +41 -0
- package/dist/network/tailscale.js +9 -0
- package/dist/network/tailscale.js.map +1 -0
- package/dist/network/webdav.d.ts +39 -0
- package/dist/network/webdav.js +10 -0
- package/dist/network/webdav.js.map +1 -0
- package/dist/objective-state-writers.js +2 -2
- package/dist/operator-toolkit.d.ts +4 -2
- package/dist/operator-toolkit.js +32 -14
- package/dist/opik-exporter.js +2 -2
- package/dist/opik-exporter.js.map +1 -1
- package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
- package/dist/orchestrator.d.ts +22 -7
- package/dist/orchestrator.js +79 -44
- package/dist/path-MR5JPYOP.js +9 -0
- package/dist/path-MR5JPYOP.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +102 -3
- package/dist/qmd.js +23 -5
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +6 -0
- package/dist/replay/normalizers/chatgpt.js +11 -0
- package/dist/replay/normalizers/chatgpt.js.map +1 -0
- package/dist/replay/normalizers/claude.d.ts +6 -0
- package/dist/replay/normalizers/claude.js +11 -0
- package/dist/replay/normalizers/claude.js.map +1 -0
- package/dist/replay/normalizers/openclaw.d.ts +6 -0
- package/dist/replay/normalizers/openclaw.js +11 -0
- package/dist/replay/normalizers/openclaw.js.map +1 -0
- package/dist/replay/normalizers/shared.d.ts +16 -0
- package/dist/replay/normalizers/shared.js +14 -0
- package/dist/replay/normalizers/shared.js.map +1 -0
- package/dist/replay/runner.d.ts +35 -0
- package/dist/replay/runner.js +16 -0
- package/dist/replay/runner.js.map +1 -0
- package/dist/replay/types.d.ts +57 -0
- package/dist/replay/types.js +19 -0
- package/dist/replay/types.js.map +1 -0
- package/dist/resolution-B7FNQSSP.js +12 -0
- package/dist/resolution-B7FNQSSP.js.map +1 -0
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +8 -6
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/routing/engine.d.ts +35 -0
- package/dist/routing/engine.js +16 -0
- package/dist/routing/engine.js.map +1 -0
- package/dist/routing/store.d.ts +27 -0
- package/dist/routing/store.js +10 -0
- package/dist/routing/store.js.map +1 -0
- package/dist/runtime/better-sqlite.d.ts +8 -0
- package/dist/runtime/better-sqlite.js +10 -0
- package/dist/runtime/better-sqlite.js.map +1 -0
- package/dist/runtime/child-process.d.ts +32 -0
- package/dist/runtime/child-process.js +10 -0
- package/dist/runtime/child-process.js.map +1 -0
- package/dist/runtime/env.d.ts +5 -0
- package/dist/runtime/env.js +12 -0
- package/dist/runtime/env.js.map +1 -0
- package/dist/schemas.d.ts +22 -22
- package/dist/sdk-compat.js +1 -1
- package/dist/search/document-scanner.d.ts +22 -0
- package/dist/search/document-scanner.js +8 -0
- package/dist/search/document-scanner.js.map +1 -0
- package/dist/search/embed-helper.d.ts +35 -0
- package/dist/search/embed-helper.js +9 -0
- package/dist/search/embed-helper.js.map +1 -0
- package/dist/search/factory.d.ts +32 -0
- package/dist/search/factory.js +29 -0
- package/dist/search/factory.js.map +1 -0
- package/dist/search/index.d.ts +15 -0
- package/dist/search/index.js +50 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/lancedb-backend.d.ts +51 -0
- package/dist/search/lancedb-backend.js +10 -0
- package/dist/search/lancedb-backend.js.map +1 -0
- package/dist/search/meilisearch-backend.d.ts +48 -0
- package/dist/search/meilisearch-backend.js +10 -0
- package/dist/search/meilisearch-backend.js.map +1 -0
- package/dist/search/noop-backend.d.ts +26 -0
- package/dist/search/noop-backend.js +8 -0
- package/dist/search/noop-backend.js.map +1 -0
- package/dist/search/orama-backend.d.ts +53 -0
- package/dist/search/orama-backend.js +10 -0
- package/dist/search/orama-backend.js.map +1 -0
- package/dist/search/port.d.ts +61 -0
- package/dist/search/port.js +1 -0
- package/dist/search/port.js.map +1 -0
- package/dist/search/remote-backend.d.ts +39 -0
- package/dist/search/remote-backend.js +9 -0
- package/dist/search/remote-backend.js.map +1 -0
- package/dist/secure-store/index.d.ts +890 -0
- package/dist/secure-store/index.js +156 -0
- package/dist/secure-store/index.js.map +1 -0
- package/dist/semantic-VwGI14Ok.d.ts +69 -0
- package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +13 -6
- package/dist/semantic-rule-promotion.js +8 -5
- package/dist/semantic-rule-verifier.js +8 -5
- package/dist/shared-context/manager.d.ts +131 -0
- package/dist/shared-context/manager.js +15 -0
- package/dist/shared-context/manager.js.map +1 -0
- package/dist/skills-registry.js +13 -1
- package/dist/skills-registry.js.map +1 -1
- package/dist/state-store-VZU2IA53.js +16 -0
- package/dist/state-store-VZU2IA53.js.map +1 -0
- package/dist/storage-paths.d.ts +9 -0
- package/dist/storage-paths.js +20 -0
- package/dist/storage-paths.js.map +1 -0
- package/dist/storage.d.ts +3 -1
- package/dist/storage.js +7 -4
- package/dist/summarizer.d.ts +5 -0
- package/dist/summarizer.js +9 -8
- package/dist/summary-snapshot.js +2 -1
- package/dist/surfaces/dreams.d.ts +16 -0
- package/dist/surfaces/dreams.js +282 -0
- package/dist/surfaces/dreams.js.map +1 -0
- package/dist/surfaces/heartbeat.d.ts +17 -0
- package/dist/surfaces/heartbeat.js +265 -0
- package/dist/surfaces/heartbeat.js.map +1 -0
- package/dist/temporal-supersession.d.ts +3 -1
- package/dist/threading.d.ts +5 -0
- package/dist/threading.js +2 -1
- package/dist/tier-migration.d.ts +4 -2
- package/dist/tokens.js +2 -2
- package/dist/transcript.d.ts +15 -1
- package/dist/transcript.js +2 -1
- package/dist/transfer/autodetect.d.ts +4 -0
- package/dist/transfer/autodetect.js +15 -0
- package/dist/transfer/autodetect.js.map +1 -0
- package/dist/transfer/backup.d.ts +21 -0
- package/dist/transfer/backup.js +17 -0
- package/dist/transfer/backup.js.map +1 -0
- package/dist/transfer/capsule-export.d.ts +113 -0
- package/dist/transfer/capsule-export.js +19 -0
- package/dist/transfer/capsule-export.js.map +1 -0
- package/dist/transfer/capsule-import.d.ts +124 -0
- package/dist/transfer/capsule-import.js +16 -0
- package/dist/transfer/capsule-import.js.map +1 -0
- package/dist/transfer/constants.d.ts +13 -0
- package/dist/transfer/constants.js +12 -0
- package/dist/transfer/constants.js.map +1 -0
- package/dist/transfer/export-json.d.ts +11 -0
- package/dist/transfer/export-json.js +11 -0
- package/dist/transfer/export-json.js.map +1 -0
- package/dist/transfer/export-md.d.ts +10 -0
- package/dist/transfer/export-md.js +13 -0
- package/dist/transfer/export-md.js.map +1 -0
- package/dist/transfer/export-sqlite.d.ts +9 -0
- package/dist/transfer/export-sqlite.js +12 -0
- package/dist/transfer/export-sqlite.js.map +1 -0
- package/dist/transfer/fs-utils.d.ts +61 -0
- package/dist/transfer/fs-utils.js +40 -0
- package/dist/transfer/fs-utils.js.map +1 -0
- package/dist/transfer/import-json.d.ts +16 -0
- package/dist/transfer/import-json.js +13 -0
- package/dist/transfer/import-json.js.map +1 -0
- package/dist/transfer/import-md.d.ts +14 -0
- package/dist/transfer/import-md.js +11 -0
- package/dist/transfer/import-md.js.map +1 -0
- package/dist/transfer/import-sqlite.d.ts +14 -0
- package/dist/transfer/import-sqlite.js +12 -0
- package/dist/transfer/import-sqlite.js.map +1 -0
- package/dist/transfer/sqlite-schema.d.ts +4 -0
- package/dist/transfer/sqlite-schema.js +10 -0
- package/dist/transfer/sqlite-schema.js.map +1 -0
- package/dist/transfer/types.d.ts +916 -0
- package/dist/transfer/types.js +30 -0
- package/dist/transfer/types.js.map +1 -0
- package/dist/types.d.ts +28 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +9 -6
- package/dist/work/board.d.ts +43 -0
- package/dist/work/board.js +14 -0
- package/dist/work/board.js.map +1 -0
- package/dist/work/boundary.d.ts +8 -0
- package/dist/work/boundary.js +14 -0
- package/dist/work/boundary.js.map +1 -0
- package/dist/work/storage.d.ts +39 -0
- package/dist/work/storage.js +11 -0
- package/dist/work/storage.js.map +1 -0
- package/dist/work/types.d.ts +75 -0
- package/dist/work/types.js +1 -0
- package/dist/work/types.js.map +1 -0
- package/package.json +2767 -6
- package/scripts/faiss_index.py +816 -0
- package/scripts/faiss_requirements.txt +3 -0
- package/skills/remnic-entities/SKILL.md +51 -0
- package/skills/remnic-memory-workflow/SKILL.md +61 -0
- package/skills/remnic-recall/SKILL.md +51 -0
- package/skills/remnic-remember/SKILL.md +56 -0
- package/skills/remnic-search/SKILL.md +51 -0
- package/skills/remnic-status/SKILL.md +51 -0
- package/src/abort-error.test.ts +49 -0
- package/src/abort-error.ts +46 -0
- package/src/abstraction-nodes.ts +162 -0
- package/src/access-audit.test.ts +178 -0
- package/src/access-audit.ts +125 -0
- package/src/access-cli.test.ts +439 -0
- package/src/access-cli.ts +438 -0
- package/src/access-http.test.ts +225 -0
- package/src/access-http.ts +1899 -0
- package/src/access-idempotency.ts +232 -0
- package/src/access-mcp.test.ts +568 -0
- package/src/access-mcp.ts +3056 -0
- package/src/access-schema-pi.test.ts +60 -0
- package/src/access-schema.ts +522 -0
- package/src/access-service-namespace.test.ts +123 -0
- package/src/access-service.ts +5629 -0
- package/src/action-confidence.test.ts +206 -0
- package/src/action-confidence.ts +466 -0
- package/src/active-memory-bridge.test.ts +285 -0
- package/src/active-memory-bridge.ts +217 -0
- package/src/active-recall.test.ts +484 -0
- package/src/active-recall.ts +459 -0
- package/src/adapters/claude-code.ts +56 -0
- package/src/adapters/codex.ts +57 -0
- package/src/adapters/hermes.ts +64 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/registry.ts +41 -0
- package/src/adapters/replit.ts +55 -0
- package/src/adapters/types.ts +51 -0
- package/src/behavior-learner.ts +144 -0
- package/src/behavior-signals.ts +73 -0
- package/src/binary-lifecycle/backend.ts +117 -0
- package/src/binary-lifecycle/index.ts +35 -0
- package/src/binary-lifecycle/manifest.ts +79 -0
- package/src/binary-lifecycle/pipeline.ts +352 -0
- package/src/binary-lifecycle/scanner.ts +89 -0
- package/src/binary-lifecycle/types.ts +89 -0
- package/src/bootstrap.ts +178 -0
- package/src/boxes.ts +521 -0
- package/src/briefing.test.ts +1535 -0
- package/src/briefing.ts +1382 -0
- package/src/buffer-session.test.ts +443 -0
- package/src/buffer-surprise-report.ts +176 -0
- package/src/buffer-surprise-telemetry.test.ts +606 -0
- package/src/buffer-surprise-trigger.test.ts +766 -0
- package/src/buffer-surprise.test.ts +339 -0
- package/src/buffer-surprise.ts +203 -0
- package/src/buffer.ts +900 -0
- package/src/bulk-import/cli-command.test.ts +204 -0
- package/src/bulk-import/index.ts +34 -0
- package/src/bulk-import/pipeline.test.ts +445 -0
- package/src/bulk-import/pipeline.ts +178 -0
- package/src/bulk-import/registry.test.ts +151 -0
- package/src/bulk-import/registry.ts +72 -0
- package/src/bulk-import/types.test.ts +272 -0
- package/src/bulk-import/types.ts +145 -0
- package/src/calibration.ts +394 -0
- package/src/capsule-cli.test.ts +398 -0
- package/src/capsule-cli.ts +565 -0
- package/src/causal-behavior.ts +308 -0
- package/src/causal-chain.ts +419 -0
- package/src/causal-consolidation.ts +370 -0
- package/src/causal-retrieval.ts +286 -0
- package/src/causal-trajectory-graph.ts +60 -0
- package/src/causal-trajectory.ts +303 -0
- package/src/chunking.ts +220 -0
- package/src/citations.ts +232 -0
- package/src/cli.ts +9403 -0
- package/src/codex-cli-fallback.ts +162 -0
- package/src/codex-thread-key.ts +1 -0
- package/src/coding/access-coding-context.test.ts +197 -0
- package/src/coding/coding-branch-scope.test.ts +281 -0
- package/src/coding/coding-namespace.test.ts +360 -0
- package/src/coding/coding-namespace.ts +412 -0
- package/src/coding/coding-orchestrator.test.ts +249 -0
- package/src/coding/git-context.test.ts +507 -0
- package/src/coding/git-context.ts +336 -0
- package/src/coding/mcp-set-coding-context.test.ts +174 -0
- package/src/coding/review-context.test.ts +316 -0
- package/src/coding/review-context.ts +349 -0
- package/src/coding/wire-coding-context.test.ts +468 -0
- package/src/commitment-ledger.test.ts +78 -0
- package/src/commitment-ledger.ts +337 -0
- package/src/compat/checks.test.ts +206 -0
- package/src/compat/checks.ts +716 -0
- package/src/compat/types.ts +33 -0
- package/src/compounding/engine.ts +1686 -0
- package/src/compounding/preference-consolidator.ts +778 -0
- package/src/compression-optimizer.ts +312 -0
- package/src/config.test.ts +930 -0
- package/src/config.ts +3807 -0
- package/src/connectors/codex/instructions.md +160 -0
- package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
- package/src/connectors/codex-marketplace.ts +500 -0
- package/src/connectors/codex-materialize-runner.ts +212 -0
- package/src/connectors/codex-materialize.ts +983 -0
- package/src/connectors/coerce.ts +62 -0
- package/src/connectors/index.test.ts +1570 -0
- package/src/connectors/index.ts +3222 -0
- package/src/connectors/live/framework.ts +164 -0
- package/src/connectors/live/github.test.ts +1218 -0
- package/src/connectors/live/github.ts +1068 -0
- package/src/connectors/live/gmail.test.ts +1706 -0
- package/src/connectors/live/gmail.ts +1293 -0
- package/src/connectors/live/google-drive.test.ts +696 -0
- package/src/connectors/live/google-drive.ts +724 -0
- package/src/connectors/live/index.ts +101 -0
- package/src/connectors/live/live-connectors.test.ts +689 -0
- package/src/connectors/live/notion.test.ts +1109 -0
- package/src/connectors/live/notion.ts +978 -0
- package/src/connectors/live/registry.ts +103 -0
- package/src/connectors/live/state-store.ts +399 -0
- package/src/connectors/live/transient-errors.ts +150 -0
- package/src/connectors/weclone-installer.test.ts +850 -0
- package/src/connectors-cli.ts +513 -0
- package/src/console/state.test.ts +224 -0
- package/src/console/state.ts +514 -0
- package/src/console/trace.test.ts +813 -0
- package/src/console/trace.ts +603 -0
- package/src/console/tui.test.ts +582 -0
- package/src/console/tui.ts +508 -0
- package/src/consolidation-operator.ts +182 -0
- package/src/consolidation-provenance-check.ts +551 -0
- package/src/consolidation-undo.ts +718 -0
- package/src/contradiction/contradiction-judge.test.ts +189 -0
- package/src/contradiction/contradiction-judge.ts +333 -0
- package/src/contradiction/contradiction-review.ts +574 -0
- package/src/contradiction/contradiction-scan.ts +504 -0
- package/src/contradiction/contradiction.test.ts +2230 -0
- package/src/contradiction/index.ts +37 -0
- package/src/contradiction/resolution.ts +383 -0
- package/src/conversation-index/backend.ts +323 -0
- package/src/conversation-index/chunker.ts +47 -0
- package/src/conversation-index/cleanup.ts +53 -0
- package/src/conversation-index/faiss-adapter.ts +384 -0
- package/src/conversation-index/indexer.test.ts +164 -0
- package/src/conversation-index/indexer.ts +192 -0
- package/src/conversation-index/search.ts +37 -0
- package/src/cross-namespace-budget.test.ts +275 -0
- package/src/cross-namespace-budget.ts +365 -0
- package/src/cue-anchors.ts +163 -0
- package/src/curation/index.ts +544 -0
- package/src/dashboard-runtime.ts +337 -0
- package/src/day-summary.ts +122 -0
- package/src/dedup/index.ts +330 -0
- package/src/dedup/semantic.test.ts +1577 -0
- package/src/dedup/semantic.ts +148 -0
- package/src/delinearize.ts +193 -0
- package/src/direct-answer-wiring.test.ts +473 -0
- package/src/direct-answer-wiring.ts +180 -0
- package/src/direct-answer.test.ts +484 -0
- package/src/direct-answer.ts +273 -0
- package/src/embedding-fallback.ts +565 -0
- package/src/enrichment/audit.ts +89 -0
- package/src/enrichment/index.ts +27 -0
- package/src/enrichment/pipeline.ts +197 -0
- package/src/enrichment/provider-registry.ts +85 -0
- package/src/enrichment/types.ts +100 -0
- package/src/enrichment/web-search-provider.ts +63 -0
- package/src/entity-retrieval.ts +774 -0
- package/src/entity-schema.ts +239 -0
- package/src/evals.ts +1312 -0
- package/src/event-order-recall.test.ts +4164 -0
- package/src/event-order-recall.ts +2802 -0
- package/src/evidence-pack.test.ts +89 -0
- package/src/evidence-pack.ts +388 -0
- package/src/explicit-capture.ts +530 -0
- package/src/explicit-cue-recall.test.ts +3019 -0
- package/src/explicit-cue-recall.ts +5545 -0
- package/src/extraction-judge-telemetry.ts +234 -0
- package/src/extraction-judge-training.ts +221 -0
- package/src/extraction-judge.ts +846 -0
- package/src/extraction-timeout.test.ts +265 -0
- package/src/extraction.ts +2719 -0
- package/src/fallback-llm.test.ts +1060 -0
- package/src/fallback-llm.ts +918 -0
- package/src/focused-list-recall.test.ts +734 -0
- package/src/focused-list-recall.ts +1160 -0
- package/src/graph-dashboard-diff.ts +35 -0
- package/src/graph-dashboard-key.ts +5 -0
- package/src/graph-dashboard-parser.ts +104 -0
- package/src/graph-edge-reinforcement.ts +192 -0
- package/src/graph-events.ts +151 -0
- package/src/graph-recall.test.ts +164 -0
- package/src/graph-recall.ts +189 -0
- package/src/graph-retrieval.test.ts +809 -0
- package/src/graph-retrieval.ts +823 -0
- package/src/graph-snapshot.ts +329 -0
- package/src/graph.ts +813 -0
- package/src/harmonic-retrieval.ts +223 -0
- package/src/himem.ts +154 -0
- package/src/hygiene.ts +87 -0
- package/src/identity-continuity.ts +333 -0
- package/src/importance.ts +328 -0
- package/src/importers/base.test.ts +294 -0
- package/src/importers/base.ts +436 -0
- package/src/importers/index.ts +21 -0
- package/src/index.ts +1204 -0
- package/src/intent.ts +154 -0
- package/src/json-extract.ts +85 -0
- package/src/json-store.ts +42 -0
- package/src/lcm/archive.ts +617 -0
- package/src/lcm/dag.ts +199 -0
- package/src/lcm/engine.ts +645 -0
- package/src/lcm/index.ts +7 -0
- package/src/lcm/queue.test.ts +178 -0
- package/src/lcm/queue.ts +200 -0
- package/src/lcm/recall.ts +117 -0
- package/src/lcm/schema.ts +154 -0
- package/src/lcm/summarizer.ts +235 -0
- package/src/lcm/tools.ts +191 -0
- package/src/lcm-engine.test.ts +660 -0
- package/src/legacy-hook-compat.test.ts +20 -0
- package/src/legacy-hook-compat.ts +45 -0
- package/src/lifecycle.ts +289 -0
- package/src/live-connectors-runner.ts +385 -0
- package/src/local-llm-qos.test.ts +303 -0
- package/src/local-llm-thinking.test.ts +292 -0
- package/src/local-llm.ts +1464 -0
- package/src/logger.ts +49 -0
- package/src/maintenance/archive-observations.ts +147 -0
- package/src/maintenance/backup-stamp.ts +3 -0
- package/src/maintenance/dreams-ledger.ts +516 -0
- package/src/maintenance/first-start-migration.ts +362 -0
- package/src/maintenance/forget.test.ts +206 -0
- package/src/maintenance/forget.ts +126 -0
- package/src/maintenance/graph-edge-decay.test.ts +409 -0
- package/src/maintenance/graph-edge-decay.ts +394 -0
- package/src/maintenance/memory-governance-cron.ts +447 -0
- package/src/maintenance/memory-governance.ts +1039 -0
- package/src/maintenance/migrate-observations.ts +216 -0
- package/src/maintenance/observation-ledger-utils.ts +54 -0
- package/src/maintenance/pattern-reinforcement.test.ts +875 -0
- package/src/maintenance/pattern-reinforcement.ts +369 -0
- package/src/maintenance/purge.ts +334 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
- package/src/maintenance/rebuild-memory-projection.ts +1234 -0
- package/src/maintenance/rebuild-observations.ts +178 -0
- package/src/maintenance/tier-stats.test.ts +378 -0
- package/src/maintenance/tier-stats.ts +222 -0
- package/src/mcp-memory-inspector-app.ts +421 -0
- package/src/memory-action-policy.ts +80 -0
- package/src/memory-cache.ts +208 -0
- package/src/memory-extension/claude-code-publisher.ts +51 -0
- package/src/memory-extension/codex-publisher.ts +149 -0
- package/src/memory-extension/hermes-publisher.ts +51 -0
- package/src/memory-extension/index.ts +100 -0
- package/src/memory-extension/shared-instructions.ts +133 -0
- package/src/memory-extension/types.ts +86 -0
- package/src/memory-extension-host/host-discovery.ts +276 -0
- package/src/memory-extension-host/index.ts +14 -0
- package/src/memory-extension-host/render-extensions-block.ts +73 -0
- package/src/memory-extension-host/types.ts +21 -0
- package/src/memory-lifecycle-ledger-utils.ts +116 -0
- package/src/memory-projection-format.ts +11 -0
- package/src/memory-projection-store.ts +951 -0
- package/src/memory-provenance.test.ts +196 -0
- package/src/memory-provenance.ts +484 -0
- package/src/memory-worth-bench.test.ts +71 -0
- package/src/memory-worth-bench.ts +265 -0
- package/src/memory-worth-filter.test.ts +209 -0
- package/src/memory-worth-filter.ts +204 -0
- package/src/memory-worth-frontmatter.test.ts +311 -0
- package/src/memory-worth-outcomes.test.ts +316 -0
- package/src/memory-worth-outcomes.ts +286 -0
- package/src/memory-worth.test.ts +317 -0
- package/src/memory-worth.ts +215 -0
- package/src/message-parts/index.ts +806 -0
- package/src/message-parts/message-parts.test.ts +421 -0
- package/src/migrate/from-engram.ts +789 -0
- package/src/model-registry.ts +313 -0
- package/src/models-json.ts +76 -0
- package/src/namespaces/migrate.ts +187 -0
- package/src/namespaces/path.ts +25 -0
- package/src/namespaces/principal.test.ts +195 -0
- package/src/namespaces/principal.ts +86 -0
- package/src/namespaces/search.test.ts +105 -0
- package/src/namespaces/search.ts +233 -0
- package/src/namespaces/storage.ts +74 -0
- package/src/native-knowledge.ts +1823 -0
- package/src/negative.ts +72 -0
- package/src/network/tailscale.ts +179 -0
- package/src/network/webdav.ts +385 -0
- package/src/objective-state-writers.ts +951 -0
- package/src/objective-state.ts +320 -0
- package/src/onboarding/index.ts +529 -0
- package/src/openai-chat-compat.ts +56 -0
- package/src/operator-toolkit.ts +2132 -0
- package/src/opik-exporter.test.ts +72 -0
- package/src/opik-exporter.ts +587 -0
- package/src/orchestrator-extraction-queue.test.ts +197 -0
- package/src/orchestrator-flush.test.ts +1171 -0
- package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
- package/src/orchestrator-source-attribution.test.ts +701 -0
- package/src/orchestrator.ts +16368 -0
- package/src/page-versioning.ts +450 -0
- package/src/patterns-cli.ts +574 -0
- package/src/peers/index.ts +54 -0
- package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
- package/src/peers/migrate-from-identity-anchor.ts +350 -0
- package/src/peers/peers.test.ts +419 -0
- package/src/peers/profile-reasoner.ts +694 -0
- package/src/peers/storage.ts +1350 -0
- package/src/peers/types.ts +138 -0
- package/src/plugin-id.ts +84 -0
- package/src/policy-runtime.ts +209 -0
- package/src/procedural/procedure-miner.ts +150 -0
- package/src/procedural/procedure-recall.ts +93 -0
- package/src/procedural/procedure-stats.ts +213 -0
- package/src/procedural/procedure-types.ts +132 -0
- package/src/procedural/reinforcement-core.test.ts +132 -0
- package/src/procedural/reinforcement-core.ts +73 -0
- package/src/profiling.test.ts +263 -0
- package/src/profiling.ts +435 -0
- package/src/projection/index.ts +398 -0
- package/src/qmd-recall-cache.test.ts +138 -0
- package/src/qmd-recall-cache.ts +111 -0
- package/src/qmd.test.ts +257 -0
- package/src/qmd.ts +2614 -0
- package/src/reasoning-trace-recall.ts +201 -0
- package/src/reasoning-trace-types.ts +235 -0
- package/src/recall-audit-anomaly.test.ts +246 -0
- package/src/recall-audit-anomaly.ts +297 -0
- package/src/recall-audit.test.ts +51 -0
- package/src/recall-audit.ts +72 -0
- package/src/recall-budget-config.test.ts +87 -0
- package/src/recall-disclosure-escalation.test.ts +196 -0
- package/src/recall-disclosure-escalation.ts +158 -0
- package/src/recall-disclosure-shaping.test.ts +146 -0
- package/src/recall-disclosure.test.ts +214 -0
- package/src/recall-explain-renderer.test.ts +140 -0
- package/src/recall-explain-renderer.ts +356 -0
- package/src/recall-mmr.test.ts +808 -0
- package/src/recall-mmr.ts +607 -0
- package/src/recall-qos.test.ts +85 -0
- package/src/recall-qos.ts +82 -0
- package/src/recall-query-policy.ts +221 -0
- package/src/recall-state.test.ts +233 -0
- package/src/recall-state.ts +456 -0
- package/src/recall-tag-filter.ts +143 -0
- package/src/recall-tokenization.ts +35 -0
- package/src/recall-xray-cli.test.ts +118 -0
- package/src/recall-xray-cli.ts +100 -0
- package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
- package/src/recall-xray-renderer.test.ts +539 -0
- package/src/recall-xray-renderer.ts +487 -0
- package/src/recall-xray.test.ts +503 -0
- package/src/recall-xray.ts +621 -0
- package/src/reconstruct.ts +41 -0
- package/src/release-changelog.ts +35 -0
- package/src/relevance.ts +67 -0
- package/src/replay/normalizers/chatgpt.ts +133 -0
- package/src/replay/normalizers/claude.ts +102 -0
- package/src/replay/normalizers/openclaw.ts +119 -0
- package/src/replay/normalizers/shared.ts +69 -0
- package/src/replay/runner.ts +197 -0
- package/src/replay/types.ts +143 -0
- package/src/rerank.test.ts +48 -0
- package/src/rerank.ts +176 -0
- package/src/resolve-auth-token.test.ts +226 -0
- package/src/resolve-auth-token.ts +151 -0
- package/src/resolve-provider-secret.test.ts +187 -0
- package/src/resolve-provider-secret.ts +410 -0
- package/src/response-guidance-recall.test.ts +3952 -0
- package/src/response-guidance-recall.ts +4431 -0
- package/src/resume-bundles.ts +415 -0
- package/src/retrieval-agents.ts +623 -0
- package/src/retrieval-tiers.ts +25 -0
- package/src/retrieval.ts +104 -0
- package/src/review/index.test.ts +201 -0
- package/src/review/index.ts +536 -0
- package/src/routing/engine.ts +162 -0
- package/src/routing/store.ts +321 -0
- package/src/runtime/better-sqlite.test.ts +32 -0
- package/src/runtime/better-sqlite.ts +76 -0
- package/src/runtime/child-process.ts +67 -0
- package/src/runtime/env.ts +48 -0
- package/src/sanitize.ts +58 -0
- package/src/schemas.ts +449 -0
- package/src/sdk-compat.ts +87 -0
- package/src/search/document-scanner.ts +96 -0
- package/src/search/embed-helper.ts +142 -0
- package/src/search/factory.ts +189 -0
- package/src/search/index.ts +10 -0
- package/src/search/lancedb-backend.ts +342 -0
- package/src/search/meilisearch-backend.ts +232 -0
- package/src/search/noop-backend.ts +57 -0
- package/src/search/orama-backend.ts +358 -0
- package/src/search/port.ts +86 -0
- package/src/search/remote-backend.ts +124 -0
- package/src/secure-store/cipher.ts +271 -0
- package/src/secure-store/cli-handlers.ts +355 -0
- package/src/secure-store/cli-renderer.ts +131 -0
- package/src/secure-store/header.ts +373 -0
- package/src/secure-store/index.ts +137 -0
- package/src/secure-store/kdf.ts +263 -0
- package/src/secure-store/keyring.ts +106 -0
- package/src/secure-store/metadata.ts +394 -0
- package/src/secure-store/passphrase-reader.ts +252 -0
- package/src/secure-store/secure-fs.ts +571 -0
- package/src/secure-store/secure-store.test.ts +755 -0
- package/src/semantic-chunking.ts +545 -0
- package/src/semantic-consolidation.test.ts +182 -0
- package/src/semantic-consolidation.ts +432 -0
- package/src/semantic-rule-promotion.ts +183 -0
- package/src/semantic-rule-verifier.ts +160 -0
- package/src/session-integrity.ts +569 -0
- package/src/session-observer-bands.ts +11 -0
- package/src/session-observer-state.ts +346 -0
- package/src/session-toggles.test.ts +96 -0
- package/src/session-toggles.ts +159 -0
- package/src/shared-context/manager.ts +810 -0
- package/src/signal.ts +84 -0
- package/src/skills-registry.test.ts +277 -0
- package/src/skills-registry.ts +120 -0
- package/src/source-attribution-roundtrip.test.ts +215 -0
- package/src/source-attribution.test.ts +1425 -0
- package/src/source-attribution.ts +639 -0
- package/src/spaces/index.ts +627 -0
- package/src/storage-paths.ts +117 -0
- package/src/storage.ts +6657 -0
- package/src/store-contract.ts +55 -0
- package/src/summarizer.ts +844 -0
- package/src/summary-snapshot.test.ts +681 -0
- package/src/summary-snapshot.ts +238 -0
- package/src/surfaces/dreams.test.ts +394 -0
- package/src/surfaces/dreams.ts +346 -0
- package/src/surfaces/heartbeat.test.ts +415 -0
- package/src/surfaces/heartbeat.ts +325 -0
- package/src/sync/index.ts +308 -0
- package/src/targeted-fact-recall.test.ts +1694 -0
- package/src/targeted-fact-recall.ts +2905 -0
- package/src/taxonomy/default-taxonomy.ts +87 -0
- package/src/taxonomy/index.ts +26 -0
- package/src/taxonomy/resolver-doc-generator.ts +57 -0
- package/src/taxonomy/resolver.ts +184 -0
- package/src/taxonomy/taxonomy-loader.ts +186 -0
- package/src/taxonomy/types.ts +48 -0
- package/src/telemetry-transcript.ts +70 -0
- package/src/temporal-index.ts +890 -0
- package/src/temporal-supersession.test.ts +2703 -0
- package/src/temporal-supersession.ts +493 -0
- package/src/temporal-validity.test.ts +448 -0
- package/src/temporal-validity.ts +123 -0
- package/src/threading.ts +395 -0
- package/src/tier-migration.ts +124 -0
- package/src/tier-routing.ts +102 -0
- package/src/tmt.ts +462 -0
- package/src/tokens.test.ts +178 -0
- package/src/tokens.ts +279 -0
- package/src/topics.ts +147 -0
- package/src/training-export/cli-date-validation.test.ts +258 -0
- package/src/training-export/converter.test.ts +452 -0
- package/src/training-export/converter.ts +319 -0
- package/src/training-export/date-parse.ts +117 -0
- package/src/training-export/index.ts +26 -0
- package/src/training-export/registry.test.ts +85 -0
- package/src/training-export/registry.ts +57 -0
- package/src/training-export/types.ts +31 -0
- package/src/transcript.ts +1179 -0
- package/src/transfer/autodetect.ts +30 -0
- package/src/transfer/backup.ts +138 -0
- package/src/transfer/capsule-crypto.ts +485 -0
- package/src/transfer/capsule-encrypt.test.ts +690 -0
- package/src/transfer/capsule-export.ts +543 -0
- package/src/transfer/capsule-fork.ts +375 -0
- package/src/transfer/capsule-import.ts +564 -0
- package/src/transfer/capsule-merge.ts +433 -0
- package/src/transfer/conflict-policy.ts +16 -0
- package/src/transfer/constants.ts +13 -0
- package/src/transfer/exclusions.ts +37 -0
- package/src/transfer/export-json.ts +65 -0
- package/src/transfer/export-md.ts +59 -0
- package/src/transfer/export-sqlite.ts +52 -0
- package/src/transfer/fs-utils.ts +269 -0
- package/src/transfer/import-json.ts +108 -0
- package/src/transfer/import-md.ts +84 -0
- package/src/transfer/import-sqlite.ts +100 -0
- package/src/transfer/integrity.ts +71 -0
- package/src/transfer/sqlite-schema.ts +16 -0
- package/src/transfer/types.ts +297 -0
- package/src/trust-zones.ts +1186 -0
- package/src/types.ts +3074 -0
- package/src/user-model.test.ts +124 -0
- package/src/user-model.ts +162 -0
- package/src/utility-learner.ts +353 -0
- package/src/utility-runtime.ts +88 -0
- package/src/utility-telemetry.ts +215 -0
- package/src/utils/category-dir.ts +44 -0
- package/src/utils/errno.ts +6 -0
- package/src/utils/iso-timestamp.test.ts +37 -0
- package/src/utils/iso-timestamp.ts +164 -0
- package/src/utils/path.ts +26 -0
- package/src/verified-recall.ts +138 -0
- package/src/version-utils.test.ts +10 -0
- package/src/version-utils.ts +9 -0
- package/src/whitespace.ts +10 -0
- package/src/work/board.ts +359 -0
- package/src/work/boundary.ts +107 -0
- package/src/work/storage.ts +436 -0
- package/src/work/types.ts +82 -0
- package/src/work-product-ledger.ts +265 -0
- package/dist/access-service-DDjzFALq.d.ts +0 -2088
- package/dist/capsule-crypto-SJS5VVAP.js +0 -18
- package/dist/capsule-export-7QNCBZOQ.js +0 -17
- package/dist/capsule-import-EPBHD2EN.js +0 -16
- package/dist/capsule-merge-DI7PNQ2H.js +0 -189
- package/dist/chunk-23ZZK64Y.js +0 -26
- package/dist/chunk-23ZZK64Y.js.map +0 -1
- package/dist/chunk-242S3I2A.js +0 -647
- package/dist/chunk-2LGMW3DJ.js +0 -111
- package/dist/chunk-3B6KIRBH.js +0 -5213
- package/dist/chunk-3B6KIRBH.js.map +0 -1
- package/dist/chunk-457A4P3L.js +0 -119
- package/dist/chunk-457A4P3L.js.map +0 -1
- package/dist/chunk-4IS4SXIQ.js +0 -2040
- package/dist/chunk-4YM32CRU.js +0 -721
- package/dist/chunk-6TBWYBJ3.js +0 -236
- package/dist/chunk-74EMIVE4.js +0 -329
- package/dist/chunk-74EMIVE4.js.map +0 -1
- package/dist/chunk-767ODGE6.js +0 -183
- package/dist/chunk-7V22HTMD.js +0 -623
- package/dist/chunk-7V22HTMD.js.map +0 -1
- package/dist/chunk-7ZM3BFKK.js +0 -9705
- package/dist/chunk-7ZM3BFKK.js.map +0 -1
- package/dist/chunk-AQJNPMOA.js +0 -643
- package/dist/chunk-AQJNPMOA.js.map +0 -1
- package/dist/chunk-ASAITVLA.js +0 -64
- package/dist/chunk-ASAITVLA.js.map +0 -1
- package/dist/chunk-BBE34QBJ.js +0 -275
- package/dist/chunk-BBE34QBJ.js.map +0 -1
- package/dist/chunk-BZSQEPRW.js +0 -14710
- package/dist/chunk-BZSQEPRW.js.map +0 -1
- package/dist/chunk-CPKTBRS2.js +0 -891
- package/dist/chunk-CPKTBRS2.js.map +0 -1
- package/dist/chunk-D4GAOFF6.js +0 -562
- package/dist/chunk-D4GAOFF6.js.map +0 -1
- package/dist/chunk-D54LZC5L.js +0 -147
- package/dist/chunk-DF3RVK3X.js +0 -119
- package/dist/chunk-DF3RVK3X.js.map +0 -1
- package/dist/chunk-DZZPC36E.js +0 -1451
- package/dist/chunk-DZZPC36E.js.map +0 -1
- package/dist/chunk-E2UCDP5S.js +0 -570
- package/dist/chunk-E6K4NIEU.js +0 -747
- package/dist/chunk-E6K4NIEU.js.map +0 -1
- package/dist/chunk-EEQLFRUM.js +0 -89
- package/dist/chunk-ETOW6ACV.js +0 -158
- package/dist/chunk-ETOW6ACV.js.map +0 -1
- package/dist/chunk-FMEBPEAO.js +0 -347
- package/dist/chunk-FMEBPEAO.js.map +0 -1
- package/dist/chunk-FQDPCE3I.js +0 -1837
- package/dist/chunk-FQDPCE3I.js.map +0 -1
- package/dist/chunk-FYIYMQ5N.js +0 -221
- package/dist/chunk-FYIYMQ5N.js.map +0 -1
- package/dist/chunk-G2WADRQ3.js +0 -219
- package/dist/chunk-G4SK7DSQ.js +0 -121
- package/dist/chunk-GVPWB7EY.js +0 -390
- package/dist/chunk-GVPWB7EY.js.map +0 -1
- package/dist/chunk-HELQZFZO.js +0 -1075
- package/dist/chunk-HL5LRPNA.js +0 -1914
- package/dist/chunk-HL5LRPNA.js.map +0 -1
- package/dist/chunk-HQZVVSVB.js +0 -147
- package/dist/chunk-HQZVVSVB.js.map +0 -1
- package/dist/chunk-HY3L4WKC.js +0 -2195
- package/dist/chunk-HY3L4WKC.js.map +0 -1
- package/dist/chunk-IB3BFHGN.js +0 -228
- package/dist/chunk-IXEJRKCZ.js +0 -18
- package/dist/chunk-JBMSGZEQ.js +0 -441
- package/dist/chunk-JBMSGZEQ.js.map +0 -1
- package/dist/chunk-JESOB2HO.js +0 -108
- package/dist/chunk-JKDVIE52.js +0 -272
- package/dist/chunk-JRNQ3RNA.js +0 -284
- package/dist/chunk-JRNQ3RNA.js.map +0 -1
- package/dist/chunk-K6WK37A6.js +0 -865
- package/dist/chunk-K6WK37A6.js.map +0 -1
- package/dist/chunk-MARWOCVP.js +0 -48
- package/dist/chunk-MNU6ZBWT.js +0 -4454
- package/dist/chunk-MNU6ZBWT.js.map +0 -1
- package/dist/chunk-N5AKDXAI.js +0 -74
- package/dist/chunk-OA3L7BFR.js +0 -183
- package/dist/chunk-OA3L7BFR.js.map +0 -1
- package/dist/chunk-OR64ZGRZ.js +0 -23
- package/dist/chunk-P77UEOU2.js +0 -1521
- package/dist/chunk-P77UEOU2.js.map +0 -1
- package/dist/chunk-PH4C2U43.js +0 -239
- package/dist/chunk-PH4C2U43.js.map +0 -1
- package/dist/chunk-RVPLBATS.js +0 -1586
- package/dist/chunk-RVPLBATS.js.map +0 -1
- package/dist/chunk-U5JMRGKX.js +0 -340
- package/dist/chunk-U5JMRGKX.js.map +0 -1
- package/dist/chunk-URB2WSKZ.js +0 -350
- package/dist/chunk-URB2WSKZ.js.map +0 -1
- package/dist/chunk-UVMUAWVT.js +0 -596
- package/dist/chunk-WEJG4TB5.js +0 -118
- package/dist/chunk-X7HPGUVG.js +0 -271
- package/dist/chunk-XAMBKFQS.js +0 -2777
- package/dist/chunk-XAMBKFQS.js.map +0 -1
- package/dist/chunk-XJKFSSDW.js +0 -726
- package/dist/chunk-XJKFSSDW.js.map +0 -1
- package/dist/chunk-XMHBH5H6.js +0 -283
- package/dist/chunk-XMHBH5H6.js.map +0 -1
- package/dist/chunk-XMVFHBHT.js +0 -277
- package/dist/chunk-Y3VMVTYX.js +0 -53
- package/dist/chunk-YNB73F22.js +0 -137
- package/dist/chunk-YNB73F22.js.map +0 -1
- package/dist/chunk-Z2E7VW55.js +0 -335
- package/dist/chunk-Z2E7VW55.js.map +0 -1
- package/dist/chunk-ZG7PTKBK.js +0 -2296
- package/dist/chunk-ZNQN6ZTA.js +0 -135
- package/dist/chunk-ZVTKDVVM.js +0 -827
- package/dist/chunk-ZVTKDVVM.js.map +0 -1
- package/dist/cli-BR8KpIU0.d.ts +0 -1259
- package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
- package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
- package/dist/contradiction-review-5LTTVDQV.js +0 -22
- package/dist/contradiction-scan-QTXAMBUA.js +0 -414
- package/dist/contradiction-scan-QTXAMBUA.js.map +0 -1
- package/dist/engine-35M5BKQ7.js +0 -28
- package/dist/fs-utils-IRVUFB6G.js +0 -30
- package/dist/graph-edge-decay-PWB63GRE.js +0 -207
- package/dist/memory-governance-IMPQZXFC.js +0 -37
- package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
- package/dist/orchestrator-DDMPqU6R.d.ts +0 -1792
- package/dist/path-RMTY5Y5A.js +0 -9
- package/dist/port-B6VEDIkC.d.ts +0 -53
- package/dist/resolution-YGIBORXI.js +0 -101
- package/dist/resolution-YGIBORXI.js.map +0 -1
- package/dist/secure-store-4R2GSO7S.js +0 -156
- package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
- package/dist/state-store-3EH7HYIN.js +0 -16
- package/dist/types-V3FJ26TF.js +0 -30
- /package/dist/{capsule-crypto-SJS5VVAP.js.map → adapters/claude-code.js.map} +0 -0
- /package/dist/{capsule-export-7QNCBZOQ.js.map → adapters/codex.js.map} +0 -0
- /package/dist/{capsule-import-EPBHD2EN.js.map → adapters/hermes.js.map} +0 -0
- /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/index.js.map} +0 -0
- /package/dist/{engine-35M5BKQ7.js.map → adapters/registry.js.map} +0 -0
- /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/replit.js.map} +0 -0
- /package/dist/{memory-governance-IMPQZXFC.js.map → adapters/types.js.map} +0 -0
- /package/dist/{path-RMTY5Y5A.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
- /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
- /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
- /package/dist/{chunk-X7HPGUVG.js.map → chunk-4CRG46BG.js.map} +0 -0
- /package/dist/{chunk-UVMUAWVT.js.map → chunk-7IASACLB.js.map} +0 -0
- /package/dist/{chunk-HELQZFZO.js.map → chunk-EDTHC6UD.js.map} +0 -0
- /package/dist/{chunk-4YM32CRU.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
- /package/dist/{chunk-E2UCDP5S.js.map → chunk-FBYESMQ2.js.map} +0 -0
- /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
- /package/dist/{chunk-IB3BFHGN.js.map → chunk-GGKRUQOO.js.map} +0 -0
- /package/dist/{chunk-242S3I2A.js.map → chunk-GL6I6MEQ.js.map} +0 -0
- /package/dist/{secure-store-4R2GSO7S.js.map → chunk-HHLLAQGZ.js.map} +0 -0
- /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
- /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
- /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
- /package/dist/{chunk-WEJG4TB5.js.map → chunk-MC26UJIM.js.map} +0 -0
- /package/dist/{chunk-JKDVIE52.js.map → chunk-MGKYQQYF.js.map} +0 -0
- /package/dist/{chunk-Y3VMVTYX.js.map → chunk-MT4HVDUZ.js.map} +0 -0
- /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
- /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
- /package/dist/{chunk-JESOB2HO.js.map → chunk-P4NEIHUT.js.map} +0 -0
- /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
- /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
- /package/dist/{state-store-3EH7HYIN.js.map → chunk-SEDEKFYQ.js.map} +0 -0
- /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
- /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
- /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
- /package/dist/{types-V3FJ26TF.js.map → chunk-V5OCT34X.js.map} +0 -0
- /package/dist/{chunk-ZG7PTKBK.js.map → chunk-W3LR522O.js.map} +0 -0
- /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
- /package/dist/{chunk-ZNQN6ZTA.js.map → chunk-XVZ7B3HG.js.map} +0 -0
- /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Peer registry types — issue #679 PR 1/5.
|
|
3
|
+
*
|
|
4
|
+
* Generalizes the singular identity-anchor model to a multi-peer registry.
|
|
5
|
+
* Every party Remnic interacts with — humans, agents, integrations, and
|
|
6
|
+
* "self" — is represented as a `Peer` with an evolving cognitive profile.
|
|
7
|
+
*
|
|
8
|
+
* This module defines pure types only. Storage primitives live in
|
|
9
|
+
* `./storage.ts`. Reasoner integration, recall injection, CLI/HTTP/MCP
|
|
10
|
+
* surfaces, and migration of existing identity-anchor data ship in later
|
|
11
|
+
* PRs (2/5 — 5/5).
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Kind of peer.
|
|
16
|
+
*
|
|
17
|
+
* - `self` — the current Remnic operator (replaces singular identity-anchor).
|
|
18
|
+
* - `human` — another human collaborator distinct from self.
|
|
19
|
+
* - `agent` — another AI agent (Claude Code, Codex, Hermes, etc.).
|
|
20
|
+
* - `integration` — non-conversational integration (cron, webhook, importer).
|
|
21
|
+
*/
|
|
22
|
+
export type PeerKind = "self" | "human" | "agent" | "integration";
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Stable, slow-changing facts about a peer.
|
|
26
|
+
*
|
|
27
|
+
* `id` matches `^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$`, 1-64 chars,
|
|
28
|
+
* with no leading/trailing/consecutive dots or dashes. Stored on disk under
|
|
29
|
+
* `peers/{id}/identity.md` as YAML frontmatter + markdown body.
|
|
30
|
+
*/
|
|
31
|
+
export interface Peer {
|
|
32
|
+
/** Stable, opaque identifier. See PEER_ID_PATTERN. */
|
|
33
|
+
readonly id: string;
|
|
34
|
+
/** Kind of peer. Drives default profile schema and recall posture. */
|
|
35
|
+
readonly kind: PeerKind;
|
|
36
|
+
/** Human-readable display name. Distinct from `id`; mutable. */
|
|
37
|
+
readonly displayName: string;
|
|
38
|
+
/** ISO-8601 timestamp of first registration. */
|
|
39
|
+
readonly createdAt: string;
|
|
40
|
+
/** ISO-8601 timestamp of most recent update to identity. */
|
|
41
|
+
readonly updatedAt: string;
|
|
42
|
+
/** Optional free-form markdown body for the identity kernel. */
|
|
43
|
+
readonly notes?: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Evolving cognitive profile for a peer.
|
|
48
|
+
*
|
|
49
|
+
* Updated by the async profile reasoner (PR 2/5) from observable session
|
|
50
|
+
* signals. Every field carries provenance back to its originating session
|
|
51
|
+
* and signal. This PR only defines the shape — population is deferred.
|
|
52
|
+
*/
|
|
53
|
+
export interface PeerProfile {
|
|
54
|
+
/** Peer this profile belongs to. */
|
|
55
|
+
readonly peerId: string;
|
|
56
|
+
/** ISO-8601 timestamp of most recent profile mutation. */
|
|
57
|
+
readonly updatedAt: string;
|
|
58
|
+
/**
|
|
59
|
+
* Arbitrary key/value profile fields. Values are markdown strings.
|
|
60
|
+
* Keys are stable section identifiers (e.g. `communication_style`,
|
|
61
|
+
* `recurring_concerns`). The reasoner is responsible for choosing
|
|
62
|
+
* keys; this PR does not constrain them beyond requiring strings.
|
|
63
|
+
*/
|
|
64
|
+
readonly fields: Record<string, string>;
|
|
65
|
+
/**
|
|
66
|
+
* Per-field provenance. Maps field key → list of provenance entries.
|
|
67
|
+
* A field may have multiple sources (the reasoner accumulates evidence
|
|
68
|
+
* across sessions before promoting a field).
|
|
69
|
+
*/
|
|
70
|
+
readonly provenance: Record<string, ReadonlyArray<PeerProfileFieldProvenance>>;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Provenance for a single profile-field mutation.
|
|
75
|
+
*
|
|
76
|
+
* Reasoner output (PR 2/5) attaches one of these every time it touches a
|
|
77
|
+
* field, so the user can audit exactly why a profile claim exists.
|
|
78
|
+
*/
|
|
79
|
+
export interface PeerProfileFieldProvenance {
|
|
80
|
+
/** ISO-8601 timestamp the field was set/updated by this signal. */
|
|
81
|
+
readonly observedAt: string;
|
|
82
|
+
/** Originating session id (or other source identifier). */
|
|
83
|
+
readonly sourceSessionId?: string;
|
|
84
|
+
/** Short label for the signal type (e.g. "explicit_preference"). */
|
|
85
|
+
readonly signal: string;
|
|
86
|
+
/** Optional free-form note explaining the inference. */
|
|
87
|
+
readonly note?: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* One row of the append-only interaction log for a peer.
|
|
92
|
+
*
|
|
93
|
+
* Stored on disk under `peers/{id}/interactions.log.md` as a sequence of
|
|
94
|
+
* markdown bullet entries with a leading ISO-8601 timestamp. Append-only
|
|
95
|
+
* by contract — the reasoner reads this log to derive profile updates.
|
|
96
|
+
*/
|
|
97
|
+
export interface PeerInteractionLogEntry {
|
|
98
|
+
/** ISO-8601 timestamp the interaction occurred. */
|
|
99
|
+
readonly timestamp: string;
|
|
100
|
+
/** Originating session id, if any. */
|
|
101
|
+
readonly sessionId?: string;
|
|
102
|
+
/** Short kind label (e.g. "message", "tool_call", "preference_set"). */
|
|
103
|
+
readonly kind: string;
|
|
104
|
+
/** Free-form markdown summary of the interaction. */
|
|
105
|
+
readonly summary: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Regex enforced on `Peer.id`. Exported so callers can mirror validation
|
|
110
|
+
* before constructing a `Peer`.
|
|
111
|
+
*
|
|
112
|
+
* Rules:
|
|
113
|
+
* - 1-64 characters total
|
|
114
|
+
* - First and last character must be `[A-Za-z0-9]`
|
|
115
|
+
* - Interior may contain `.`, `_`, `-` in addition to alphanumerics
|
|
116
|
+
* - No leading or trailing dot/dash/underscore
|
|
117
|
+
* - No consecutive separators (`..`, `--`, `__`, `.-`, etc.)
|
|
118
|
+
*
|
|
119
|
+
* Cursor Medium: previously the regex allowed `a..b` even though the
|
|
120
|
+
* docs claimed otherwise — a separate JS-side check enforced the rule
|
|
121
|
+
* but the standalone PATTERN was wrong for any external consumer
|
|
122
|
+
* relying on it. Tighten the regex itself so PEER_ID_PATTERN is the
|
|
123
|
+
* single source of truth: an alphanumeric, optionally followed by
|
|
124
|
+
* groups of (one separator + one-or-more alphanumerics), with the
|
|
125
|
+
* final group ending on an alphanumeric. Negative lookahead-free so
|
|
126
|
+
* it works in any JS engine.
|
|
127
|
+
*/
|
|
128
|
+
// CodeQL alert #75: the previous form `^[A-Za-z0-9](?:[._-]?[A-Za-z0-9]+)*$`
|
|
129
|
+
// was ambiguous on alphanumeric runs because `[._-]?` could match
|
|
130
|
+
// empty, letting each iteration consume 1+ alphanumerics in many
|
|
131
|
+
// overlapping ways — exponential backtracking on adversarial inputs.
|
|
132
|
+
// Tighten so the optional group REQUIRES a separator before each
|
|
133
|
+
// subsequent alphanumeric run; no overlapping match paths, linear
|
|
134
|
+
// time on any input.
|
|
135
|
+
export const PEER_ID_PATTERN = /^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$/;
|
|
136
|
+
|
|
137
|
+
/** Maximum length for `Peer.id`. */
|
|
138
|
+
export const PEER_ID_MAX_LENGTH = 64;
|
package/src/plugin-id.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical plugin id for @remnic/plugin-openclaw.
|
|
3
|
+
*
|
|
4
|
+
* This is the identifier OpenClaw uses as a lookup key in plugins.slots.memory
|
|
5
|
+
* and plugins.entries.<id>. The legacy shim package @joshuaswarren/openclaw-engram
|
|
6
|
+
* intentionally uses a different id ("openclaw-engram") as a backwards-compat alias.
|
|
7
|
+
*/
|
|
8
|
+
export const PLUGIN_ID = "openclaw-remnic" as const;
|
|
9
|
+
export const LEGACY_PLUGIN_ID = "openclaw-engram" as const;
|
|
10
|
+
|
|
11
|
+
/** The set of plugin ids that belong to Remnic (new canonical + legacy). */
|
|
12
|
+
const REMNIC_PLUGIN_IDS: ReadonlySet<string> = new Set([PLUGIN_ID, LEGACY_PLUGIN_ID]);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the Remnic plugin entry from an OpenClaw-shaped config object.
|
|
16
|
+
*
|
|
17
|
+
* Lookup order:
|
|
18
|
+
* 1. `plugins.slots.memory` — but **only** when it resolves to a known
|
|
19
|
+
* Remnic plugin id; foreign slots are ignored so mixed-plugin installs
|
|
20
|
+
* do not accidentally apply another plugin's config to Remnic.
|
|
21
|
+
* 2. `preferredId` — the caller's own plugin id (e.g. `"openclaw-engram"` for
|
|
22
|
+
* the shim package); only consulted when no active slot overrides the choice.
|
|
23
|
+
* 3. `plugins.entries["openclaw-remnic"]`
|
|
24
|
+
* 4. `plugins.entries["openclaw-engram"]` (legacy backward-compat)
|
|
25
|
+
*
|
|
26
|
+
* Returns `undefined` when no Remnic entry is found.
|
|
27
|
+
*
|
|
28
|
+
* All five config-loader sites (loadPluginEntryFromFile, readPluginHooksPolicy,
|
|
29
|
+
* loadPluginConfig in access-cli.ts, loadCliPluginConfig in operator-toolkit.ts,
|
|
30
|
+
* and unwrapOpenClawEntry in materialize.cjs) delegate here so fallback order
|
|
31
|
+
* and guard logic are defined in exactly one place.
|
|
32
|
+
*
|
|
33
|
+
* @param raw - The raw OpenClaw config object.
|
|
34
|
+
* @param preferredId - The calling plugin's own id. When present and no
|
|
35
|
+
* `plugins.slots.memory` slot is set, this id is tried before the hardcoded
|
|
36
|
+
* `PLUGIN_ID`/`LEGACY_PLUGIN_ID` fallbacks. Ignored if it is not a known
|
|
37
|
+
* Remnic plugin id (safety guard against unexpected values).
|
|
38
|
+
*/
|
|
39
|
+
export function resolveRemnicPluginEntry(
|
|
40
|
+
raw: unknown,
|
|
41
|
+
preferredId?: string,
|
|
42
|
+
): Record<string, unknown> | undefined {
|
|
43
|
+
if (!raw || typeof raw !== "object") return undefined;
|
|
44
|
+
const r = raw as Record<string, unknown>;
|
|
45
|
+
const plugins =
|
|
46
|
+
r["plugins"] && typeof r["plugins"] === "object"
|
|
47
|
+
? (r["plugins"] as Record<string, unknown>)
|
|
48
|
+
: undefined;
|
|
49
|
+
const entries =
|
|
50
|
+
plugins && plugins["entries"] && typeof plugins["entries"] === "object"
|
|
51
|
+
? (plugins["entries"] as Record<string, unknown>)
|
|
52
|
+
: undefined;
|
|
53
|
+
if (!entries) return undefined;
|
|
54
|
+
|
|
55
|
+
const rawSlot =
|
|
56
|
+
plugins && plugins["slots"] && typeof plugins["slots"] === "object"
|
|
57
|
+
? ((plugins["slots"] as Record<string, unknown>)["memory"] as string | undefined)
|
|
58
|
+
: undefined;
|
|
59
|
+
const activeId =
|
|
60
|
+
typeof rawSlot === "string" && REMNIC_PLUGIN_IDS.has(rawSlot)
|
|
61
|
+
? rawSlot
|
|
62
|
+
: undefined;
|
|
63
|
+
|
|
64
|
+
// When no slot is set, honour the caller's own plugin id so shim installs
|
|
65
|
+
// (id="openclaw-engram") prefer their own entry over the canonical one.
|
|
66
|
+
const ownId =
|
|
67
|
+
!activeId &&
|
|
68
|
+
typeof preferredId === "string" &&
|
|
69
|
+
REMNIC_PLUGIN_IDS.has(preferredId)
|
|
70
|
+
? preferredId
|
|
71
|
+
: undefined;
|
|
72
|
+
|
|
73
|
+
const candidateIds = [activeId, ownId, PLUGIN_ID, LEGACY_PLUGIN_ID].filter(
|
|
74
|
+
(id): id is string => typeof id === "string",
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
for (const id of candidateIds) {
|
|
78
|
+
const entry = entries[id];
|
|
79
|
+
if (entry !== undefined) {
|
|
80
|
+
return entry as Record<string, unknown>;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
3
|
+
import { clamp01, clampLifecycleThreshold } from "./lifecycle.js";
|
|
4
|
+
import { clampInstructionHeavyTokenCap } from "./recall-query-policy.js";
|
|
5
|
+
import type { BehaviorLoopPolicyState, PluginConfig } from "./types.js";
|
|
6
|
+
|
|
7
|
+
export interface RuntimePolicyValues {
|
|
8
|
+
recencyWeight?: number;
|
|
9
|
+
lifecyclePromoteHeatThreshold?: number;
|
|
10
|
+
lifecycleStaleDecayThreshold?: number;
|
|
11
|
+
cronRecallInstructionHeavyTokenCap?: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface RuntimePolicySnapshot {
|
|
15
|
+
version: number;
|
|
16
|
+
updatedAt: string;
|
|
17
|
+
values: RuntimePolicyValues;
|
|
18
|
+
sourceAdjustmentCount: number;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const RUNTIME_POLICY_VERSION = 1;
|
|
22
|
+
const RUNTIME_POLICY_FILE = "policy-runtime.json";
|
|
23
|
+
const RUNTIME_POLICY_PREV_FILE = "policy-runtime.prev.json";
|
|
24
|
+
|
|
25
|
+
export function sanitizeRuntimePolicyValues(
|
|
26
|
+
values: RuntimePolicyValues,
|
|
27
|
+
options?: { maxStaleDecayThreshold?: number },
|
|
28
|
+
): RuntimePolicyValues {
|
|
29
|
+
const out: RuntimePolicyValues = {};
|
|
30
|
+
if (typeof values.recencyWeight === "number") {
|
|
31
|
+
out.recencyWeight = clamp01(values.recencyWeight);
|
|
32
|
+
}
|
|
33
|
+
if (typeof values.lifecyclePromoteHeatThreshold === "number") {
|
|
34
|
+
out.lifecyclePromoteHeatThreshold = clampLifecycleThreshold(values.lifecyclePromoteHeatThreshold);
|
|
35
|
+
}
|
|
36
|
+
if (typeof values.lifecycleStaleDecayThreshold === "number") {
|
|
37
|
+
const staleDecayThreshold = clampLifecycleThreshold(values.lifecycleStaleDecayThreshold);
|
|
38
|
+
const maxStaleDecayThreshold = typeof options?.maxStaleDecayThreshold === "number"
|
|
39
|
+
? clampLifecycleThreshold(options.maxStaleDecayThreshold)
|
|
40
|
+
: 1;
|
|
41
|
+
out.lifecycleStaleDecayThreshold = Math.min(staleDecayThreshold, maxStaleDecayThreshold);
|
|
42
|
+
}
|
|
43
|
+
if (typeof values.cronRecallInstructionHeavyTokenCap === "number") {
|
|
44
|
+
out.cronRecallInstructionHeavyTokenCap = clampInstructionHeavyTokenCap(
|
|
45
|
+
values.cronRecallInstructionHeavyTokenCap,
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function isRuntimeParameter(parameter: string): parameter is keyof RuntimePolicyValues {
|
|
52
|
+
return (
|
|
53
|
+
parameter === "recencyWeight" ||
|
|
54
|
+
parameter === "lifecyclePromoteHeatThreshold" ||
|
|
55
|
+
parameter === "lifecycleStaleDecayThreshold" ||
|
|
56
|
+
parameter === "cronRecallInstructionHeavyTokenCap"
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export async function readRuntimePolicySnapshot(
|
|
61
|
+
filePath: string,
|
|
62
|
+
options?: { maxStaleDecayThreshold?: number },
|
|
63
|
+
): Promise<RuntimePolicySnapshot | null> {
|
|
64
|
+
try {
|
|
65
|
+
const raw = await readFile(filePath, "utf-8");
|
|
66
|
+
const parsed = JSON.parse(raw) as Partial<RuntimePolicySnapshot>;
|
|
67
|
+
if (
|
|
68
|
+
!parsed ||
|
|
69
|
+
typeof parsed.version !== "number" ||
|
|
70
|
+
parsed.version < 1 ||
|
|
71
|
+
typeof parsed.updatedAt !== "string" ||
|
|
72
|
+
!parsed.values ||
|
|
73
|
+
typeof parsed.values !== "object" ||
|
|
74
|
+
typeof parsed.sourceAdjustmentCount !== "number" ||
|
|
75
|
+
parsed.sourceAdjustmentCount < 0
|
|
76
|
+
) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
version: parsed.version,
|
|
81
|
+
updatedAt: parsed.updatedAt,
|
|
82
|
+
values: sanitizeRuntimePolicyValues(parsed.values, {
|
|
83
|
+
maxStaleDecayThreshold: options?.maxStaleDecayThreshold,
|
|
84
|
+
}),
|
|
85
|
+
sourceAdjustmentCount: parsed.sourceAdjustmentCount,
|
|
86
|
+
};
|
|
87
|
+
} catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
async function writeSnapshotAtomic(filePath: string, snapshot: RuntimePolicySnapshot): Promise<void> {
|
|
93
|
+
const tempPath = `${filePath}.tmp`;
|
|
94
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
95
|
+
await writeFile(tempPath, `${JSON.stringify(snapshot, null, 2)}\n`, "utf-8");
|
|
96
|
+
await rename(tempPath, filePath);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export class PolicyRuntimeManager {
|
|
100
|
+
private readonly runtimePath: string;
|
|
101
|
+
private readonly runtimePrevPath: string;
|
|
102
|
+
|
|
103
|
+
constructor(
|
|
104
|
+
private readonly memoryDir: string,
|
|
105
|
+
private readonly config: PluginConfig,
|
|
106
|
+
) {
|
|
107
|
+
const stateDir = path.join(memoryDir, "state");
|
|
108
|
+
this.runtimePath = path.join(stateDir, RUNTIME_POLICY_FILE);
|
|
109
|
+
this.runtimePrevPath = path.join(stateDir, RUNTIME_POLICY_PREV_FILE);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async loadRuntimeValues(): Promise<RuntimePolicyValues | null> {
|
|
113
|
+
const snapshot = await readRuntimePolicySnapshot(this.runtimePath, {
|
|
114
|
+
maxStaleDecayThreshold: this.config.lifecycleArchiveDecayThreshold,
|
|
115
|
+
});
|
|
116
|
+
if (!snapshot) return null;
|
|
117
|
+
return snapshot.values;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
async rollback(): Promise<boolean> {
|
|
121
|
+
const previous = await readRuntimePolicySnapshot(this.runtimePrevPath, {
|
|
122
|
+
maxStaleDecayThreshold: this.config.lifecycleArchiveDecayThreshold,
|
|
123
|
+
});
|
|
124
|
+
if (!previous) return false;
|
|
125
|
+
await writeSnapshotAtomic(this.runtimePath, {
|
|
126
|
+
...previous,
|
|
127
|
+
updatedAt: new Date().toISOString(),
|
|
128
|
+
});
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async applyFromBehaviorState(
|
|
133
|
+
state: BehaviorLoopPolicyState,
|
|
134
|
+
): Promise<{ applied: boolean; rolledBack: boolean; values: RuntimePolicyValues | null; reason: string }> {
|
|
135
|
+
const adjustmentCount = state.adjustments.length;
|
|
136
|
+
if (adjustmentCount === 0) {
|
|
137
|
+
return { applied: false, rolledBack: false, values: await this.loadRuntimeValues(), reason: "no_adjustments" };
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const protectedSet = new Set<string>([
|
|
141
|
+
...this.config.behaviorLoopProtectedParams,
|
|
142
|
+
...state.protectedParams,
|
|
143
|
+
]);
|
|
144
|
+
const existing = await readRuntimePolicySnapshot(this.runtimePath, {
|
|
145
|
+
maxStaleDecayThreshold: this.config.lifecycleArchiveDecayThreshold,
|
|
146
|
+
});
|
|
147
|
+
const candidate: RuntimePolicyValues = {
|
|
148
|
+
recencyWeight: existing?.values.recencyWeight ?? this.config.recencyWeight,
|
|
149
|
+
lifecyclePromoteHeatThreshold:
|
|
150
|
+
existing?.values.lifecyclePromoteHeatThreshold ?? this.config.lifecyclePromoteHeatThreshold,
|
|
151
|
+
lifecycleStaleDecayThreshold:
|
|
152
|
+
existing?.values.lifecycleStaleDecayThreshold ?? this.config.lifecycleStaleDecayThreshold,
|
|
153
|
+
cronRecallInstructionHeavyTokenCap:
|
|
154
|
+
existing?.values.cronRecallInstructionHeavyTokenCap ?? this.config.cronRecallInstructionHeavyTokenCap,
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
for (const adjustment of state.adjustments) {
|
|
158
|
+
if (!isRuntimeParameter(adjustment.parameter)) {
|
|
159
|
+
let rolledBack = false;
|
|
160
|
+
if (existing) {
|
|
161
|
+
await writeSnapshotAtomic(this.runtimePath, existing);
|
|
162
|
+
rolledBack = true;
|
|
163
|
+
} else {
|
|
164
|
+
rolledBack = await this.rollback();
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
applied: false,
|
|
168
|
+
rolledBack,
|
|
169
|
+
values: await this.loadRuntimeValues(),
|
|
170
|
+
reason: `invalid_parameter:${adjustment.parameter}`,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
if (protectedSet.has(adjustment.parameter)) {
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (!Number.isFinite(adjustment.nextValue)) {
|
|
177
|
+
let rolledBack = false;
|
|
178
|
+
if (existing) {
|
|
179
|
+
await writeSnapshotAtomic(this.runtimePath, existing);
|
|
180
|
+
rolledBack = true;
|
|
181
|
+
} else {
|
|
182
|
+
rolledBack = await this.rollback();
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
applied: false,
|
|
186
|
+
rolledBack,
|
|
187
|
+
values: await this.loadRuntimeValues(),
|
|
188
|
+
reason: `invalid_value:${adjustment.parameter}`,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
candidate[adjustment.parameter] = adjustment.nextValue;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
const sanitized = sanitizeRuntimePolicyValues(candidate, {
|
|
195
|
+
maxStaleDecayThreshold: this.config.lifecycleArchiveDecayThreshold,
|
|
196
|
+
});
|
|
197
|
+
if (existing) {
|
|
198
|
+
await writeSnapshotAtomic(this.runtimePrevPath, existing);
|
|
199
|
+
}
|
|
200
|
+
const nextSnapshot: RuntimePolicySnapshot = {
|
|
201
|
+
version: RUNTIME_POLICY_VERSION,
|
|
202
|
+
updatedAt: new Date().toISOString(),
|
|
203
|
+
values: sanitized,
|
|
204
|
+
sourceAdjustmentCount: adjustmentCount,
|
|
205
|
+
};
|
|
206
|
+
await writeSnapshotAtomic(this.runtimePath, nextSnapshot);
|
|
207
|
+
return { applied: true, rolledBack: false, values: sanitized, reason: "applied" };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cluster causal trajectories into candidate procedure memories (issue #519).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { PluginConfig } from "../types.js";
|
|
6
|
+
import type { StorageManager } from "../storage.js";
|
|
7
|
+
import type { CausalTrajectoryRecord } from "../causal-trajectory.js";
|
|
8
|
+
import {
|
|
9
|
+
readCausalTrajectoryRecords,
|
|
10
|
+
filterTrajectoriesByLookbackDays,
|
|
11
|
+
} from "../causal-trajectory.js";
|
|
12
|
+
import { buildProcedurePersistBody, normalizeProcedureSteps, type ProcedureStep } from "./procedure-types.js";
|
|
13
|
+
import { clusterByKey } from "./reinforcement-core.js";
|
|
14
|
+
import { log } from "../logger.js";
|
|
15
|
+
|
|
16
|
+
/** Must match truncation on `procedure_cluster` structured attribute (dedupe + storage). */
|
|
17
|
+
const PROCEDURE_CLUSTER_ATTR_MAX = 500;
|
|
18
|
+
|
|
19
|
+
export interface ProcedureMiningResult {
|
|
20
|
+
clustersProcessed: number;
|
|
21
|
+
proceduresWritten: number;
|
|
22
|
+
skippedReason?: string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function clusterKey(record: CausalTrajectoryRecord): string {
|
|
26
|
+
const goal = record.goal.trim().toLowerCase().replace(/\s+/g, " ").slice(0, 120);
|
|
27
|
+
const refs = [...(record.entityRefs ?? [])].map((r) => r.trim().toLowerCase()).sort();
|
|
28
|
+
return `${goal}|${refs.join(",")}`;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function successRate(group: CausalTrajectoryRecord[]): number {
|
|
32
|
+
if (group.length === 0) return 0;
|
|
33
|
+
const ok = group.filter((g) => g.outcomeKind === "success" || g.outcomeKind === "partial").length;
|
|
34
|
+
return ok / group.length;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Derive ordered pseudo-steps from trajectory text (v1 heuristic; no tool-call array on records). */
|
|
38
|
+
function pseudoStepsFromCluster(group: CausalTrajectoryRecord[]): ProcedureStep[] {
|
|
39
|
+
const sentences: string[] = [];
|
|
40
|
+
const pushUnique = (raw: string) => {
|
|
41
|
+
const t = raw.trim();
|
|
42
|
+
if (t.length < 8) return;
|
|
43
|
+
if (!sentences.includes(t)) sentences.push(t);
|
|
44
|
+
};
|
|
45
|
+
for (const g of group) {
|
|
46
|
+
const parts = [g.actionSummary, g.observationSummary, g.outcomeSummary]
|
|
47
|
+
.join(" ")
|
|
48
|
+
.split(/[.!?]\s+|;|\n+/)
|
|
49
|
+
.map((s) => s.trim())
|
|
50
|
+
.filter((s) => s.length > 12);
|
|
51
|
+
for (const p of parts) pushUnique(p);
|
|
52
|
+
if (sentences.length >= 5) break;
|
|
53
|
+
}
|
|
54
|
+
if (sentences.length < 2 && group[0]) {
|
|
55
|
+
pushUnique(`${group[0].goal.trim()} — confirm prerequisites and context.`);
|
|
56
|
+
pushUnique("Execute the planned actions, then record the outcome.");
|
|
57
|
+
}
|
|
58
|
+
return sentences.slice(0, 6).map((intent, i) => ({
|
|
59
|
+
order: i + 1,
|
|
60
|
+
intent,
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function hasExistingClusterWrite(
|
|
65
|
+
storage: StorageManager,
|
|
66
|
+
cluster: string,
|
|
67
|
+
): Promise<boolean> {
|
|
68
|
+
const clusterKey = cluster.slice(0, PROCEDURE_CLUSTER_ATTR_MAX);
|
|
69
|
+
const memories = await storage.readAllMemories();
|
|
70
|
+
for (const m of memories) {
|
|
71
|
+
if (m.frontmatter.category !== "procedure") continue;
|
|
72
|
+
const c = m.frontmatter.structuredAttributes?.procedure_cluster;
|
|
73
|
+
if (c === clusterKey) return true;
|
|
74
|
+
}
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Mine recurring successful trajectories into `procedure` memories (pending_review
|
|
80
|
+
* by default; active when auto-promotion thresholds are met).
|
|
81
|
+
*/
|
|
82
|
+
export async function runProcedureMining(options: {
|
|
83
|
+
memoryDir: string;
|
|
84
|
+
storage: StorageManager;
|
|
85
|
+
config: PluginConfig;
|
|
86
|
+
}): Promise<ProcedureMiningResult> {
|
|
87
|
+
const cfg = options.config.procedural;
|
|
88
|
+
if (!cfg?.enabled) {
|
|
89
|
+
return { clustersProcessed: 0, proceduresWritten: 0, skippedReason: "procedural_disabled" };
|
|
90
|
+
}
|
|
91
|
+
if (cfg.minOccurrences <= 0) {
|
|
92
|
+
return { clustersProcessed: 0, proceduresWritten: 0, skippedReason: "minOccurrences_zero" };
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
const trajectoryDir =
|
|
96
|
+
typeof options.config.causalTrajectoryStoreDir === "string" &&
|
|
97
|
+
options.config.causalTrajectoryStoreDir.trim().length > 0
|
|
98
|
+
? options.config.causalTrajectoryStoreDir.trim()
|
|
99
|
+
: undefined;
|
|
100
|
+
const { trajectories } = await readCausalTrajectoryRecords({
|
|
101
|
+
memoryDir: options.memoryDir,
|
|
102
|
+
causalTrajectoryStoreDir: trajectoryDir,
|
|
103
|
+
});
|
|
104
|
+
const recent = filterTrajectoriesByLookbackDays(trajectories, cfg.lookbackDays);
|
|
105
|
+
|
|
106
|
+
const clusters = clusterByKey(recent, clusterKey);
|
|
107
|
+
|
|
108
|
+
let clustersProcessed = 0;
|
|
109
|
+
let proceduresWritten = 0;
|
|
110
|
+
|
|
111
|
+
for (const [key, group] of clusters) {
|
|
112
|
+
if (group.length < cfg.minOccurrences) continue;
|
|
113
|
+
const rate = successRate(group);
|
|
114
|
+
if (rate < cfg.successFloor) continue;
|
|
115
|
+
|
|
116
|
+
clustersProcessed += 1;
|
|
117
|
+
|
|
118
|
+
if (await hasExistingClusterWrite(options.storage, key)) {
|
|
119
|
+
log.debug(`procedure-miner: skip duplicate cluster key=${key.slice(0, 40)}…`);
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const steps = normalizeProcedureSteps(pseudoStepsFromCluster(group));
|
|
124
|
+
if (steps.length < 2) continue;
|
|
125
|
+
|
|
126
|
+
const title = `When you work on goals like: ${group[0].goal.trim().slice(0, 140)}`;
|
|
127
|
+
const body = buildProcedurePersistBody(title, steps);
|
|
128
|
+
|
|
129
|
+
const promote =
|
|
130
|
+
cfg.autoPromoteEnabled === true && group.length >= cfg.autoPromoteOccurrences && rate >= cfg.successFloor;
|
|
131
|
+
|
|
132
|
+
await options.storage.writeMemory("procedure", body, {
|
|
133
|
+
source: "procedure-miner",
|
|
134
|
+
status: promote ? "active" : "pending_review",
|
|
135
|
+
tags: ["procedure-miner", "causal-trajectory"],
|
|
136
|
+
structuredAttributes: {
|
|
137
|
+
procedure_cluster: key.slice(0, PROCEDURE_CLUSTER_ATTR_MAX),
|
|
138
|
+
trajectory_ids: group
|
|
139
|
+
.map((g) => g.trajectoryId)
|
|
140
|
+
.join(",")
|
|
141
|
+
.slice(0, 1900),
|
|
142
|
+
trajectory_count: String(group.length),
|
|
143
|
+
success_rate: rate.toFixed(4),
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
proceduresWritten += 1;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return { clustersProcessed, proceduresWritten };
|
|
150
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Intent-gated recall for active procedure memories (issue #519).
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { MemoryFile, PluginConfig } from "../types.js";
|
|
6
|
+
import type { StorageManager } from "../storage.js";
|
|
7
|
+
import { inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent } from "../intent.js";
|
|
8
|
+
import { isActiveMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
9
|
+
|
|
10
|
+
function tokenOverlapScore(prompt: string, memoryText: string): number {
|
|
11
|
+
const norm = (s: string) =>
|
|
12
|
+
s
|
|
13
|
+
.toLowerCase()
|
|
14
|
+
.split(/[^a-z0-9]+/)
|
|
15
|
+
.filter((t) => t.length > 2);
|
|
16
|
+
const promptTokens = new Set(norm(prompt));
|
|
17
|
+
const memTokens = new Set(norm(memoryText));
|
|
18
|
+
if (promptTokens.size === 0 || memTokens.size === 0) return 0;
|
|
19
|
+
let inter = 0;
|
|
20
|
+
for (const t of promptTokens) {
|
|
21
|
+
if (memTokens.has(t)) inter++;
|
|
22
|
+
}
|
|
23
|
+
const union = new Set([...promptTokens, ...memTokens]);
|
|
24
|
+
return inter / Math.max(1, union.size);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function scoreProcedureForPrompt(
|
|
28
|
+
m: MemoryFile,
|
|
29
|
+
prompt: string,
|
|
30
|
+
queryIntent: ReturnType<typeof inferIntentFromText>,
|
|
31
|
+
): number {
|
|
32
|
+
const memText = `${m.content}\n${(m.frontmatter.tags ?? []).join(" ")}`;
|
|
33
|
+
const jaccard = tokenOverlapScore(prompt, memText);
|
|
34
|
+
const memIntent = inferIntentFromText(m.content.slice(0, 2000));
|
|
35
|
+
const intentScore = intentCompatibilityScore(queryIntent, memIntent);
|
|
36
|
+
return jaccard * 0.55 + intentScore * 0.45;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Build markdown for the recall pipeline when procedural memory is enabled and
|
|
41
|
+
* the prompt looks like task initiation.
|
|
42
|
+
*/
|
|
43
|
+
export async function buildProcedureRecallSection(
|
|
44
|
+
storage: StorageManager,
|
|
45
|
+
prompt: string,
|
|
46
|
+
config: PluginConfig,
|
|
47
|
+
): Promise<string | null> {
|
|
48
|
+
if (config.procedural?.enabled !== true) return null;
|
|
49
|
+
const trimmed = typeof prompt === "string" ? prompt.trim() : "";
|
|
50
|
+
if (!trimmed) return null;
|
|
51
|
+
|
|
52
|
+
const queryIntent = inferIntentFromText(trimmed);
|
|
53
|
+
if (!isTaskInitiationIntent(queryIntent)) return null;
|
|
54
|
+
|
|
55
|
+
const maxN = Math.min(
|
|
56
|
+
10,
|
|
57
|
+
Math.max(
|
|
58
|
+
1,
|
|
59
|
+
typeof config.procedural.recallMaxProcedures === "number" &&
|
|
60
|
+
Number.isFinite(config.procedural.recallMaxProcedures)
|
|
61
|
+
? Math.floor(config.procedural.recallMaxProcedures)
|
|
62
|
+
// Safer-by-default fallback (issue #567 PR 3/5): must match
|
|
63
|
+
// config.ts's canonical default (2). Cursor review on PR #607:
|
|
64
|
+
// divergent fallbacks silently regressed the safer cap whenever
|
|
65
|
+
// the config value was missing or non-finite at this call site.
|
|
66
|
+
: 2,
|
|
67
|
+
),
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
const all = await storage.readAllMemories();
|
|
71
|
+
const scored = all
|
|
72
|
+
.filter(
|
|
73
|
+
(m) =>
|
|
74
|
+
m.frontmatter.category === "procedure" &&
|
|
75
|
+
isActiveMemoryStatus(m.frontmatter.status),
|
|
76
|
+
)
|
|
77
|
+
.map((m) => ({ m, score: scoreProcedureForPrompt(m, trimmed, queryIntent) }))
|
|
78
|
+
.filter((x) => x.score > 0.04)
|
|
79
|
+
.sort((a, b) => b.score - a.score)
|
|
80
|
+
.slice(0, maxN);
|
|
81
|
+
|
|
82
|
+
if (scored.length === 0) return null;
|
|
83
|
+
|
|
84
|
+
const blocks = scored.map(({ m, score }) => {
|
|
85
|
+
const id = m.frontmatter.id;
|
|
86
|
+
const flat = m.content.replace(/\s+/g, " ").trim();
|
|
87
|
+
const preview = flat.slice(0, 320);
|
|
88
|
+
const suffix = flat.length > 320 ? "…" : "";
|
|
89
|
+
return `### ${id} (match ${score.toFixed(2)})\n\n${preview}${suffix}`;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return `## Relevant procedures\n\n${blocks.join("\n\n")}`;
|
|
93
|
+
}
|