@remnic/core 1.1.12 → 1.1.14
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 +258 -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,133 @@
|
|
|
1
|
+
// src/lcm/dag.ts
|
|
2
|
+
var LcmDag = class {
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
db;
|
|
7
|
+
/** Insert a new summary node. */
|
|
8
|
+
insertNode(node) {
|
|
9
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
10
|
+
this.db.prepare(`
|
|
11
|
+
INSERT INTO lcm_summary_nodes (id, session_id, depth, parent_id, summary_text, token_count, msg_start, msg_end, escalation, created_at)
|
|
12
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
13
|
+
`).run(
|
|
14
|
+
node.id,
|
|
15
|
+
node.session_id,
|
|
16
|
+
node.depth,
|
|
17
|
+
node.parent_id,
|
|
18
|
+
node.summary_text,
|
|
19
|
+
node.token_count,
|
|
20
|
+
node.msg_start,
|
|
21
|
+
node.msg_end,
|
|
22
|
+
node.escalation,
|
|
23
|
+
now
|
|
24
|
+
);
|
|
25
|
+
const rowid = this.db.prepare("SELECT rowid FROM lcm_summary_nodes WHERE id = ?").get(node.id);
|
|
26
|
+
if (rowid) {
|
|
27
|
+
this.db.prepare("INSERT INTO lcm_summaries_fts (rowid, summary_text) VALUES (?, ?)").run(rowid.rowid, node.summary_text);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Get leaf nodes (depth=0) for a session without a parent yet, ordered by msg_start. */
|
|
31
|
+
getOrphanNodesAtDepth(sessionId, depth) {
|
|
32
|
+
return this.db.prepare(
|
|
33
|
+
"SELECT * FROM lcm_summary_nodes WHERE session_id = ? AND depth = ? AND parent_id IS NULL ORDER BY msg_start"
|
|
34
|
+
).all(sessionId, depth);
|
|
35
|
+
}
|
|
36
|
+
/** Get all nodes at a given depth for a session. */
|
|
37
|
+
getNodesAtDepth(sessionId, depth) {
|
|
38
|
+
return this.db.prepare(
|
|
39
|
+
"SELECT * FROM lcm_summary_nodes WHERE session_id = ? AND depth = ? ORDER BY msg_start"
|
|
40
|
+
).all(sessionId, depth);
|
|
41
|
+
}
|
|
42
|
+
/** Get child nodes of a parent. */
|
|
43
|
+
getChildren(parentId) {
|
|
44
|
+
return this.db.prepare("SELECT * FROM lcm_summary_nodes WHERE parent_id = ? ORDER BY msg_start").all(parentId);
|
|
45
|
+
}
|
|
46
|
+
/** Get the deepest summary nodes covering a session (highest depth, broadest coverage). */
|
|
47
|
+
getDeepestNodes(sessionId) {
|
|
48
|
+
const maxDepth = this.db.prepare("SELECT MAX(depth) as max_depth FROM lcm_summary_nodes WHERE session_id = ?").get(sessionId);
|
|
49
|
+
if (!maxDepth?.max_depth && maxDepth?.max_depth !== 0) return [];
|
|
50
|
+
return this.getNodesAtDepth(sessionId, maxDepth.max_depth);
|
|
51
|
+
}
|
|
52
|
+
/** Get the maximum depth for a session. */
|
|
53
|
+
getMaxDepth(sessionId) {
|
|
54
|
+
const row = this.db.prepare("SELECT MAX(depth) as max_depth FROM lcm_summary_nodes WHERE session_id = ?").get(sessionId);
|
|
55
|
+
return row?.max_depth ?? -1;
|
|
56
|
+
}
|
|
57
|
+
/** Get summary nodes that best cover a turn range, preferring higher depth. */
|
|
58
|
+
getCoveringNodes(sessionId, fromTurn, toTurn) {
|
|
59
|
+
return this.db.prepare(`
|
|
60
|
+
SELECT * FROM lcm_summary_nodes
|
|
61
|
+
WHERE session_id = ?
|
|
62
|
+
AND msg_start <= ?
|
|
63
|
+
AND msg_end >= ?
|
|
64
|
+
ORDER BY depth DESC, msg_start
|
|
65
|
+
`).all(sessionId, toTurn, fromTurn);
|
|
66
|
+
}
|
|
67
|
+
/** Get all nodes for a session, ordered by depth then range. */
|
|
68
|
+
getAllNodes(sessionId) {
|
|
69
|
+
return this.db.prepare(
|
|
70
|
+
"SELECT * FROM lcm_summary_nodes WHERE session_id = ? ORDER BY depth, msg_start"
|
|
71
|
+
).all(sessionId);
|
|
72
|
+
}
|
|
73
|
+
/** Get total node count for a session. */
|
|
74
|
+
getNodeCount(sessionId) {
|
|
75
|
+
const row = this.db.prepare("SELECT COUNT(*) as cnt FROM lcm_summary_nodes WHERE session_id = ?").get(sessionId);
|
|
76
|
+
return row.cnt;
|
|
77
|
+
}
|
|
78
|
+
/** Delete all summary and compaction state for one session. */
|
|
79
|
+
deleteSession(sessionId) {
|
|
80
|
+
const txn = this.db.transaction(() => {
|
|
81
|
+
this.db.prepare(
|
|
82
|
+
"DELETE FROM lcm_summaries_fts WHERE rowid IN (SELECT rowid FROM lcm_summary_nodes WHERE session_id = ?)"
|
|
83
|
+
).run(sessionId);
|
|
84
|
+
this.db.prepare("DELETE FROM lcm_compaction_events WHERE session_id = ?").run(sessionId);
|
|
85
|
+
const result = this.db.prepare("DELETE FROM lcm_summary_nodes WHERE session_id = ?").run(sessionId);
|
|
86
|
+
return result.changes;
|
|
87
|
+
});
|
|
88
|
+
return txn();
|
|
89
|
+
}
|
|
90
|
+
/** Delete all summary and compaction state. */
|
|
91
|
+
deleteAll() {
|
|
92
|
+
const txn = this.db.transaction(() => {
|
|
93
|
+
this.db.prepare("DELETE FROM lcm_summaries_fts").run();
|
|
94
|
+
this.db.prepare("DELETE FROM lcm_compaction_events").run();
|
|
95
|
+
const result = this.db.prepare("DELETE FROM lcm_summary_nodes").run();
|
|
96
|
+
return result.changes;
|
|
97
|
+
});
|
|
98
|
+
return txn();
|
|
99
|
+
}
|
|
100
|
+
/** Set parent_id for a list of child node IDs. */
|
|
101
|
+
setParent(childIds, parentId) {
|
|
102
|
+
const stmt = this.db.prepare(
|
|
103
|
+
"UPDATE lcm_summary_nodes SET parent_id = ? WHERE id = ?"
|
|
104
|
+
);
|
|
105
|
+
const txn = this.db.transaction(() => {
|
|
106
|
+
for (const childId of childIds) {
|
|
107
|
+
stmt.run(parentId, childId);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
txn();
|
|
111
|
+
}
|
|
112
|
+
/** Record a compaction event. */
|
|
113
|
+
recordCompaction(sessionId, msgBefore, tokensBefore, tokensAfter) {
|
|
114
|
+
this.db.prepare(`
|
|
115
|
+
INSERT INTO lcm_compaction_events (session_id, fired_at, msg_before, tokens_before, tokens_after)
|
|
116
|
+
VALUES (?, ?, ?, ?, ?)
|
|
117
|
+
`).run(sessionId, (/* @__PURE__ */ new Date()).toISOString(), msgBefore, tokensBefore, tokensAfter);
|
|
118
|
+
}
|
|
119
|
+
/** Prune summary nodes for old sessions. */
|
|
120
|
+
pruneOldNodes(retentionDays) {
|
|
121
|
+
const cutoff = new Date(Date.now() - retentionDays * 864e5).toISOString();
|
|
122
|
+
this.db.prepare(
|
|
123
|
+
"DELETE FROM lcm_summaries_fts WHERE rowid IN (SELECT rowid FROM lcm_summary_nodes WHERE created_at < ?)"
|
|
124
|
+
).run(cutoff);
|
|
125
|
+
const result = this.db.prepare("DELETE FROM lcm_summary_nodes WHERE created_at < ?").run(cutoff);
|
|
126
|
+
return result.changes;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export {
|
|
131
|
+
LcmDag
|
|
132
|
+
};
|
|
133
|
+
//# sourceMappingURL=chunk-7N4KAIGN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lcm/dag.ts"],"sourcesContent":["import type Database from \"better-sqlite3\";\nimport { log } from \"../logger.js\";\n\nexport interface SummaryNode {\n id: string;\n session_id: string;\n depth: number;\n parent_id: string | null;\n summary_text: string;\n token_count: number;\n msg_start: number;\n msg_end: number;\n escalation: number;\n created_at: string;\n}\n\nexport class LcmDag {\n constructor(private readonly db: Database.Database) {}\n\n /** Insert a new summary node. */\n insertNode(node: Omit<SummaryNode, \"created_at\">): void {\n const now = new Date().toISOString();\n this.db\n .prepare(`\n INSERT INTO lcm_summary_nodes (id, session_id, depth, parent_id, summary_text, token_count, msg_start, msg_end, escalation, created_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `)\n .run(\n node.id,\n node.session_id,\n node.depth,\n node.parent_id,\n node.summary_text,\n node.token_count,\n node.msg_start,\n node.msg_end,\n node.escalation,\n now,\n );\n\n // Keep FTS in sync\n const rowid = this.db\n .prepare(\"SELECT rowid FROM lcm_summary_nodes WHERE id = ?\")\n .get(node.id) as { rowid: number } | undefined;\n if (rowid) {\n this.db\n .prepare(\"INSERT INTO lcm_summaries_fts (rowid, summary_text) VALUES (?, ?)\")\n .run(rowid.rowid, node.summary_text);\n }\n }\n\n /** Get leaf nodes (depth=0) for a session without a parent yet, ordered by msg_start. */\n getOrphanNodesAtDepth(sessionId: string, depth: number): SummaryNode[] {\n return this.db\n .prepare(\n \"SELECT * FROM lcm_summary_nodes WHERE session_id = ? AND depth = ? AND parent_id IS NULL ORDER BY msg_start\",\n )\n .all(sessionId, depth) as SummaryNode[];\n }\n\n /** Get all nodes at a given depth for a session. */\n getNodesAtDepth(sessionId: string, depth: number): SummaryNode[] {\n return this.db\n .prepare(\n \"SELECT * FROM lcm_summary_nodes WHERE session_id = ? AND depth = ? ORDER BY msg_start\",\n )\n .all(sessionId, depth) as SummaryNode[];\n }\n\n /** Get child nodes of a parent. */\n getChildren(parentId: string): SummaryNode[] {\n return this.db\n .prepare(\"SELECT * FROM lcm_summary_nodes WHERE parent_id = ? ORDER BY msg_start\")\n .all(parentId) as SummaryNode[];\n }\n\n /** Get the deepest summary nodes covering a session (highest depth, broadest coverage). */\n getDeepestNodes(sessionId: string): SummaryNode[] {\n const maxDepth = this.db\n .prepare(\"SELECT MAX(depth) as max_depth FROM lcm_summary_nodes WHERE session_id = ?\")\n .get(sessionId) as { max_depth: number | null } | undefined;\n\n if (!maxDepth?.max_depth && maxDepth?.max_depth !== 0) return [];\n\n return this.getNodesAtDepth(sessionId, maxDepth.max_depth);\n }\n\n /** Get the maximum depth for a session. */\n getMaxDepth(sessionId: string): number {\n const row = this.db\n .prepare(\"SELECT MAX(depth) as max_depth FROM lcm_summary_nodes WHERE session_id = ?\")\n .get(sessionId) as { max_depth: number | null } | undefined;\n return row?.max_depth ?? -1;\n }\n\n /** Get summary nodes that best cover a turn range, preferring higher depth. */\n getCoveringNodes(sessionId: string, fromTurn: number, toTurn: number): SummaryNode[] {\n return this.db\n .prepare(`\n SELECT * FROM lcm_summary_nodes\n WHERE session_id = ?\n AND msg_start <= ?\n AND msg_end >= ?\n ORDER BY depth DESC, msg_start\n `)\n .all(sessionId, toTurn, fromTurn) as SummaryNode[];\n }\n\n /** Get all nodes for a session, ordered by depth then range. */\n getAllNodes(sessionId: string): SummaryNode[] {\n return this.db\n .prepare(\n \"SELECT * FROM lcm_summary_nodes WHERE session_id = ? ORDER BY depth, msg_start\",\n )\n .all(sessionId) as SummaryNode[];\n }\n\n /** Get total node count for a session. */\n getNodeCount(sessionId: string): number {\n const row = this.db\n .prepare(\"SELECT COUNT(*) as cnt FROM lcm_summary_nodes WHERE session_id = ?\")\n .get(sessionId) as { cnt: number };\n return row.cnt;\n }\n\n /** Delete all summary and compaction state for one session. */\n deleteSession(sessionId: string): number {\n const txn = this.db.transaction(() => {\n this.db\n .prepare(\n \"DELETE FROM lcm_summaries_fts WHERE rowid IN (SELECT rowid FROM lcm_summary_nodes WHERE session_id = ?)\",\n )\n .run(sessionId);\n this.db\n .prepare(\"DELETE FROM lcm_compaction_events WHERE session_id = ?\")\n .run(sessionId);\n const result = this.db\n .prepare(\"DELETE FROM lcm_summary_nodes WHERE session_id = ?\")\n .run(sessionId);\n return result.changes;\n });\n return txn();\n }\n\n /** Delete all summary and compaction state. */\n deleteAll(): number {\n const txn = this.db.transaction(() => {\n this.db.prepare(\"DELETE FROM lcm_summaries_fts\").run();\n this.db.prepare(\"DELETE FROM lcm_compaction_events\").run();\n const result = this.db.prepare(\"DELETE FROM lcm_summary_nodes\").run();\n return result.changes;\n });\n return txn();\n }\n\n /** Set parent_id for a list of child node IDs. */\n setParent(childIds: string[], parentId: string): void {\n const stmt = this.db.prepare(\n \"UPDATE lcm_summary_nodes SET parent_id = ? WHERE id = ?\",\n );\n const txn = this.db.transaction(() => {\n for (const childId of childIds) {\n stmt.run(parentId, childId);\n }\n });\n txn();\n }\n\n /** Record a compaction event. */\n recordCompaction(\n sessionId: string,\n msgBefore: number,\n tokensBefore: number,\n tokensAfter: number,\n ): void {\n this.db\n .prepare(`\n INSERT INTO lcm_compaction_events (session_id, fired_at, msg_before, tokens_before, tokens_after)\n VALUES (?, ?, ?, ?, ?)\n `)\n .run(sessionId, new Date().toISOString(), msgBefore, tokensBefore, tokensAfter);\n }\n\n /** Prune summary nodes for old sessions. */\n pruneOldNodes(retentionDays: number): number {\n const cutoff = new Date(Date.now() - retentionDays * 86400_000).toISOString();\n\n this.db\n .prepare(\n \"DELETE FROM lcm_summaries_fts WHERE rowid IN (SELECT rowid FROM lcm_summary_nodes WHERE created_at < ?)\",\n )\n .run(cutoff);\n\n const result = this.db\n .prepare(\"DELETE FROM lcm_summary_nodes WHERE created_at < ?\")\n .run(cutoff);\n return result.changes;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import {
|
|
2
|
+
exportMarkdownBundle
|
|
3
|
+
} from "./chunk-6H2TESSP.js";
|
|
4
|
+
import {
|
|
5
|
+
encryptCapsuleFile
|
|
6
|
+
} from "./chunk-KNKUID7G.js";
|
|
7
|
+
import {
|
|
8
|
+
isTransferPathExcluded
|
|
9
|
+
} from "./chunk-I6K5FBRQ.js";
|
|
10
|
+
|
|
11
|
+
// src/transfer/backup.ts
|
|
12
|
+
import path from "path";
|
|
13
|
+
import { mkdir, readdir, rm, unlink, writeFile } from "fs/promises";
|
|
14
|
+
import { gzipSync } from "zlib";
|
|
15
|
+
function timestampDirName(now) {
|
|
16
|
+
return now.toISOString().replace(/[:.]/g, "-");
|
|
17
|
+
}
|
|
18
|
+
async function backupMemoryDir(opts) {
|
|
19
|
+
const outDirAbs = path.resolve(opts.outDir);
|
|
20
|
+
await mkdir(outDirAbs, { recursive: true });
|
|
21
|
+
const ts = timestampDirName(/* @__PURE__ */ new Date());
|
|
22
|
+
if (opts.encrypt === true) {
|
|
23
|
+
const { listFilesRecursive, toPosixRelPath } = await import("./transfer/fs-utils.js");
|
|
24
|
+
const { readFile } = await import("fs/promises");
|
|
25
|
+
const memoryDirAbs = path.resolve(opts.memoryDir);
|
|
26
|
+
const filesAbs = await listFilesRecursive(memoryDirAbs);
|
|
27
|
+
const includeTranscripts = opts.includeTranscripts === true;
|
|
28
|
+
const records = [];
|
|
29
|
+
for (const abs of filesAbs) {
|
|
30
|
+
const relPosix = toPosixRelPath(abs, memoryDirAbs);
|
|
31
|
+
if (isTransferPathExcluded(relPosix, { includeTranscripts })) continue;
|
|
32
|
+
const content = await readFile(abs, "utf-8");
|
|
33
|
+
records.push({ path: relPosix, content });
|
|
34
|
+
}
|
|
35
|
+
records.sort((a, b) => a.path.localeCompare(b.path));
|
|
36
|
+
const bundle = {
|
|
37
|
+
format: "remnic.backup.v1",
|
|
38
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
39
|
+
pluginVersion: opts.pluginVersion,
|
|
40
|
+
records
|
|
41
|
+
};
|
|
42
|
+
const tempGzPath = path.join(outDirAbs, `${ts}.backup.json.gz`);
|
|
43
|
+
const gz = gzipSync(Buffer.from(JSON.stringify(bundle), "utf-8"));
|
|
44
|
+
await writeFile(tempGzPath, gz);
|
|
45
|
+
const { encPath } = await encryptCapsuleFile({
|
|
46
|
+
sourceGzPath: tempGzPath,
|
|
47
|
+
memoryDir: opts.memoryDir
|
|
48
|
+
});
|
|
49
|
+
await unlink(tempGzPath);
|
|
50
|
+
if (opts.retentionDays && opts.retentionDays > 0) {
|
|
51
|
+
await enforceRetention(outDirAbs, opts.retentionDays);
|
|
52
|
+
}
|
|
53
|
+
return encPath;
|
|
54
|
+
}
|
|
55
|
+
const backupDir = path.join(outDirAbs, ts);
|
|
56
|
+
await exportMarkdownBundle({
|
|
57
|
+
memoryDir: opts.memoryDir,
|
|
58
|
+
outDir: backupDir,
|
|
59
|
+
includeTranscripts: opts.includeTranscripts,
|
|
60
|
+
pluginVersion: opts.pluginVersion
|
|
61
|
+
});
|
|
62
|
+
if (opts.retentionDays && opts.retentionDays > 0) {
|
|
63
|
+
await enforceRetention(outDirAbs, opts.retentionDays);
|
|
64
|
+
}
|
|
65
|
+
return backupDir;
|
|
66
|
+
}
|
|
67
|
+
async function enforceRetention(outDirAbs, retentionDays) {
|
|
68
|
+
const entries = await readdir(outDirAbs, { withFileTypes: true });
|
|
69
|
+
const cutoffMs = Date.now() - retentionDays * 24 * 60 * 60 * 1e3;
|
|
70
|
+
for (const ent of entries) {
|
|
71
|
+
const name = ent.name;
|
|
72
|
+
if (ent.isDirectory()) {
|
|
73
|
+
const m = name.match(
|
|
74
|
+
/^(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z$/
|
|
75
|
+
);
|
|
76
|
+
const iso = m ? `${m[1]}T${m[2]}:${m[3]}:${m[4]}.${m[5]}Z` : null;
|
|
77
|
+
const tsMs = iso ? Date.parse(iso) : NaN;
|
|
78
|
+
if (!Number.isFinite(tsMs)) continue;
|
|
79
|
+
if (tsMs < cutoffMs) {
|
|
80
|
+
await rm(path.join(outDirAbs, name), { recursive: true, force: true });
|
|
81
|
+
}
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (ent.isFile() && name.endsWith(".backup.json.gz.enc")) {
|
|
85
|
+
const m = name.match(
|
|
86
|
+
/^(\d{4}-\d{2}-\d{2})T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z/
|
|
87
|
+
);
|
|
88
|
+
const iso = m ? `${m[1]}T${m[2]}:${m[3]}:${m[4]}.${m[5]}Z` : null;
|
|
89
|
+
const tsMs = iso ? Date.parse(iso) : NaN;
|
|
90
|
+
if (!Number.isFinite(tsMs)) continue;
|
|
91
|
+
if (tsMs < cutoffMs) {
|
|
92
|
+
await rm(path.join(outDirAbs, name), { force: true });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export {
|
|
99
|
+
backupMemoryDir
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=chunk-7OZ53EXP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/transfer/backup.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir, readdir, rm, unlink, writeFile } from \"node:fs/promises\";\nimport { gzipSync } from \"node:zlib\";\nimport { exportMarkdownBundle } from \"./export-md.js\";\nimport { encryptCapsuleFile } from \"./capsule-crypto.js\";\nimport { isTransferPathExcluded } from \"./exclusions.js\";\n\nexport interface BackupOptions {\n memoryDir: string;\n outDir: string;\n includeTranscripts?: boolean;\n retentionDays?: number;\n pluginVersion: string;\n /**\n * When `true`, produce an encrypted backup archive instead of a plaintext\n * directory. The secure-store keyring for `memoryDir` must be unlocked.\n *\n * An encrypted backup is a single `.backup.tar.gz.enc` file instead of a\n * timestamped directory. It contains a gzip-compressed JSON bundle (same\n * shape as the json export) sealed with AES-256-GCM.\n *\n * Default: `false`.\n */\n encrypt?: boolean;\n}\n\nfunction timestampDirName(now: Date): string {\n return now.toISOString().replace(/[:.]/g, \"-\");\n}\n\nexport async function backupMemoryDir(opts: BackupOptions): Promise<string> {\n const outDirAbs = path.resolve(opts.outDir);\n await mkdir(outDirAbs, { recursive: true });\n const ts = timestampDirName(new Date());\n\n if (opts.encrypt === true) {\n // Encrypted backup: produce a single <timestamp>.backup.json.gz.enc file.\n // We collect the memory directory records manually, gzip them, write a\n // temp plaintext archive, encrypt it, then remove the plaintext.\n // Per gotcha #54: write the encrypted file before removing the plaintext\n // so a crash mid-encrypt cannot destroy the only readable copy.\n const { listFilesRecursive, toPosixRelPath } = await import(\"./fs-utils.js\");\n const { readFile } = await import(\"node:fs/promises\");\n\n const memoryDirAbs = path.resolve(opts.memoryDir);\n const filesAbs = await listFilesRecursive(memoryDirAbs);\n const includeTranscripts = opts.includeTranscripts === true;\n\n const records: Array<{ path: string; content: string }> = [];\n for (const abs of filesAbs) {\n const relPosix = toPosixRelPath(abs, memoryDirAbs);\n if (isTransferPathExcluded(relPosix, { includeTranscripts })) continue;\n const content = await readFile(abs, \"utf-8\");\n records.push({ path: relPosix, content });\n }\n records.sort((a, b) => a.path.localeCompare(b.path));\n\n const bundle = {\n format: \"remnic.backup.v1\",\n createdAt: new Date().toISOString(),\n pluginVersion: opts.pluginVersion,\n records,\n };\n\n const tempGzPath = path.join(outDirAbs, `${ts}.backup.json.gz`);\n const gz = gzipSync(Buffer.from(JSON.stringify(bundle), \"utf-8\"));\n await writeFile(tempGzPath, gz);\n\n // Encrypt and remove plaintext.\n const { encPath } = await encryptCapsuleFile({\n sourceGzPath: tempGzPath,\n memoryDir: opts.memoryDir,\n });\n await unlink(tempGzPath);\n\n if (opts.retentionDays && opts.retentionDays > 0) {\n await enforceRetention(outDirAbs, opts.retentionDays);\n }\n\n return encPath;\n }\n\n const backupDir = path.join(outDirAbs, ts);\n\n await exportMarkdownBundle({\n memoryDir: opts.memoryDir,\n outDir: backupDir,\n includeTranscripts: opts.includeTranscripts,\n pluginVersion: opts.pluginVersion,\n });\n\n if (opts.retentionDays && opts.retentionDays > 0) {\n await enforceRetention(outDirAbs, opts.retentionDays);\n }\n\n return backupDir;\n}\n\nasync function enforceRetention(outDirAbs: string, retentionDays: number): Promise<void> {\n const entries = await readdir(outDirAbs, { withFileTypes: true });\n const cutoffMs = Date.now() - retentionDays * 24 * 60 * 60 * 1000;\n\n for (const ent of entries) {\n const name = ent.name;\n\n // --- Plaintext backup directories ---\n // Directory names are ISO8601 with [: .] replaced by \"-\" to be filesystem-friendly.\n // Example: 2026-02-11T05-06-07-123Z => 2026-02-11T05:06:07.123Z\n if (ent.isDirectory()) {\n const m = name.match(\n /^(\\d{4}-\\d{2}-\\d{2})T(\\d{2})-(\\d{2})-(\\d{2})-(\\d{3})Z$/,\n );\n const iso = m ? `${m[1]}T${m[2]}:${m[3]}:${m[4]}.${m[5]}Z` : null;\n const tsMs = iso ? Date.parse(iso) : NaN;\n if (!Number.isFinite(tsMs)) continue;\n if (tsMs < cutoffMs) {\n await rm(path.join(outDirAbs, name), { recursive: true, force: true });\n }\n continue;\n }\n\n // --- Encrypted backup files (.backup.json.gz.enc) ---\n // Same timestamp pattern in the filename prefix. (Codex P2 / Cursor — the\n // original sweep skipped non-directory entries, leaving encrypted backups\n // to accumulate indefinitely when retention is enabled.)\n if (ent.isFile() && name.endsWith(\".backup.json.gz.enc\")) {\n const m = name.match(\n /^(\\d{4}-\\d{2}-\\d{2})T(\\d{2})-(\\d{2})-(\\d{2})-(\\d{3})Z/,\n );\n const iso = m ? `${m[1]}T${m[2]}:${m[3]}:${m[4]}.${m[5]}Z` : null;\n const tsMs = iso ? Date.parse(iso) : NaN;\n if (!Number.isFinite(tsMs)) continue;\n if (tsMs < cutoffMs) {\n await rm(path.join(outDirAbs, name), { force: true });\n }\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import {
|
|
2
|
+
openBetterSqlite3
|
|
3
|
+
} from "./chunk-3HPAPHUK.js";
|
|
4
|
+
import {
|
|
5
|
+
log
|
|
6
|
+
} from "./chunk-2ODBA7MQ.js";
|
|
7
|
+
|
|
8
|
+
// src/lcm/schema.ts
|
|
9
|
+
import path from "path";
|
|
10
|
+
import { mkdir } from "fs/promises";
|
|
11
|
+
var LCM_SCHEMA_VERSION = 2;
|
|
12
|
+
function openLcmDatabase(memoryDir) {
|
|
13
|
+
const dbPath = path.join(memoryDir, "state", "lcm.sqlite");
|
|
14
|
+
const db = openBetterSqlite3(dbPath);
|
|
15
|
+
db.pragma("journal_mode = WAL");
|
|
16
|
+
db.pragma("busy_timeout = 5000");
|
|
17
|
+
db.pragma("synchronous = NORMAL");
|
|
18
|
+
applySchema(db);
|
|
19
|
+
return db;
|
|
20
|
+
}
|
|
21
|
+
async function ensureLcmStateDir(memoryDir) {
|
|
22
|
+
await mkdir(path.join(memoryDir, "state"), { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
function applyLcmSchema(db) {
|
|
25
|
+
applySchema(db);
|
|
26
|
+
}
|
|
27
|
+
function applySchema(db) {
|
|
28
|
+
const versionRow = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_meta'").get();
|
|
29
|
+
if (!versionRow) {
|
|
30
|
+
createTables(db);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const meta = db.prepare("SELECT value FROM lcm_meta WHERE key = 'schema_version'").get();
|
|
34
|
+
const currentVersion = meta ? parseInt(meta.value, 10) : 0;
|
|
35
|
+
if (currentVersion < LCM_SCHEMA_VERSION) {
|
|
36
|
+
log.info(`LCM schema upgrade: v${currentVersion} \u2192 v${LCM_SCHEMA_VERSION}`);
|
|
37
|
+
createTables(db);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function createTables(db) {
|
|
41
|
+
db.exec(`
|
|
42
|
+
CREATE TABLE IF NOT EXISTS lcm_meta (
|
|
43
|
+
key TEXT PRIMARY KEY,
|
|
44
|
+
value TEXT NOT NULL
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE IF NOT EXISTS lcm_messages (
|
|
48
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
49
|
+
session_id TEXT NOT NULL,
|
|
50
|
+
turn_index INTEGER NOT NULL,
|
|
51
|
+
role TEXT NOT NULL,
|
|
52
|
+
content TEXT NOT NULL,
|
|
53
|
+
token_count INTEGER NOT NULL,
|
|
54
|
+
created_at TEXT NOT NULL,
|
|
55
|
+
metadata TEXT
|
|
56
|
+
);
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_messages_session
|
|
58
|
+
ON lcm_messages(session_id, turn_index);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE IF NOT EXISTS lcm_message_parts (
|
|
61
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
62
|
+
message_id INTEGER NOT NULL REFERENCES lcm_messages(id) ON DELETE CASCADE,
|
|
63
|
+
ordinal INTEGER NOT NULL,
|
|
64
|
+
kind TEXT NOT NULL,
|
|
65
|
+
payload TEXT NOT NULL,
|
|
66
|
+
tool_name TEXT,
|
|
67
|
+
file_path TEXT,
|
|
68
|
+
created_at TEXT NOT NULL
|
|
69
|
+
);
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_msg
|
|
71
|
+
ON lcm_message_parts(message_id, ordinal);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_tool
|
|
73
|
+
ON lcm_message_parts(tool_name);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_file
|
|
75
|
+
ON lcm_message_parts(file_path);
|
|
76
|
+
|
|
77
|
+
CREATE TABLE IF NOT EXISTS lcm_summary_nodes (
|
|
78
|
+
id TEXT PRIMARY KEY,
|
|
79
|
+
session_id TEXT NOT NULL,
|
|
80
|
+
depth INTEGER NOT NULL,
|
|
81
|
+
parent_id TEXT,
|
|
82
|
+
summary_text TEXT NOT NULL,
|
|
83
|
+
token_count INTEGER NOT NULL,
|
|
84
|
+
msg_start INTEGER NOT NULL,
|
|
85
|
+
msg_end INTEGER NOT NULL,
|
|
86
|
+
escalation INTEGER NOT NULL DEFAULT 0,
|
|
87
|
+
created_at TEXT NOT NULL,
|
|
88
|
+
FOREIGN KEY (parent_id) REFERENCES lcm_summary_nodes(id)
|
|
89
|
+
);
|
|
90
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_summary_session
|
|
91
|
+
ON lcm_summary_nodes(session_id, depth);
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_lcm_summary_range
|
|
93
|
+
ON lcm_summary_nodes(session_id, msg_start, msg_end);
|
|
94
|
+
|
|
95
|
+
CREATE TABLE IF NOT EXISTS lcm_compaction_events (
|
|
96
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
97
|
+
session_id TEXT NOT NULL,
|
|
98
|
+
fired_at TEXT NOT NULL,
|
|
99
|
+
msg_before INTEGER NOT NULL,
|
|
100
|
+
tokens_before INTEGER NOT NULL,
|
|
101
|
+
tokens_after INTEGER NOT NULL
|
|
102
|
+
);
|
|
103
|
+
`);
|
|
104
|
+
const hasFts = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_messages_fts'").get();
|
|
105
|
+
if (!hasFts) {
|
|
106
|
+
db.exec(`
|
|
107
|
+
CREATE VIRTUAL TABLE lcm_messages_fts USING fts5(
|
|
108
|
+
content,
|
|
109
|
+
content=lcm_messages,
|
|
110
|
+
content_rowid=id
|
|
111
|
+
);
|
|
112
|
+
`);
|
|
113
|
+
}
|
|
114
|
+
const hasSummaryFts = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_summaries_fts'").get();
|
|
115
|
+
if (!hasSummaryFts) {
|
|
116
|
+
db.exec(`
|
|
117
|
+
CREATE VIRTUAL TABLE lcm_summaries_fts USING fts5(
|
|
118
|
+
summary_text,
|
|
119
|
+
content=lcm_summary_nodes,
|
|
120
|
+
content_rowid=rowid
|
|
121
|
+
);
|
|
122
|
+
`);
|
|
123
|
+
}
|
|
124
|
+
db.prepare("INSERT OR REPLACE INTO lcm_meta (key, value) VALUES ('schema_version', ?)").run(
|
|
125
|
+
String(LCM_SCHEMA_VERSION)
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export {
|
|
130
|
+
openLcmDatabase,
|
|
131
|
+
ensureLcmStateDir,
|
|
132
|
+
applyLcmSchema
|
|
133
|
+
};
|
|
134
|
+
//# sourceMappingURL=chunk-7XYTQGCC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lcm/schema.ts"],"sourcesContent":["import path from \"node:path\";\nimport { mkdir } from \"node:fs/promises\";\nimport { log } from \"../logger.js\";\nimport {\n openBetterSqlite3,\n type BetterSqlite3Database,\n} from \"../runtime/better-sqlite.js\";\n\nconst LCM_SCHEMA_VERSION = 2;\n\nexport function openLcmDatabase(memoryDir: string): BetterSqlite3Database {\n const dbPath = path.join(memoryDir, \"state\", \"lcm.sqlite\");\n const db = openBetterSqlite3(dbPath);\n db.pragma(\"journal_mode = WAL\");\n db.pragma(\"busy_timeout = 5000\");\n db.pragma(\"synchronous = NORMAL\");\n applySchema(db);\n return db;\n}\n\nexport async function ensureLcmStateDir(memoryDir: string): Promise<void> {\n await mkdir(path.join(memoryDir, \"state\"), { recursive: true });\n}\n\n/**\n * Apply (or upgrade) the LCM schema on an already-open SQLite handle.\n *\n * Exposed so optional host packages — e.g. importers using an in-memory\n * destination database for true read-only `--dry-run` execution — can\n * bootstrap the schema without going through `openLcmDatabase()` (which\n * always touches the filesystem).\n */\nexport function applyLcmSchema(db: BetterSqlite3Database): void {\n applySchema(db);\n}\n\nfunction applySchema(db: BetterSqlite3Database): void {\n const versionRow = db\n .prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_meta'\")\n .get() as { name: string } | undefined;\n\n if (!versionRow) {\n createTables(db);\n return;\n }\n\n const meta = db\n .prepare(\"SELECT value FROM lcm_meta WHERE key = 'schema_version'\")\n .get() as { value: string } | undefined;\n const currentVersion = meta ? parseInt(meta.value, 10) : 0;\n\n if (currentVersion < LCM_SCHEMA_VERSION) {\n log.info(`LCM schema upgrade: v${currentVersion} → v${LCM_SCHEMA_VERSION}`);\n createTables(db);\n }\n}\n\nfunction createTables(db: BetterSqlite3Database): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS lcm_meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS lcm_messages (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_id TEXT NOT NULL,\n turn_index INTEGER NOT NULL,\n role TEXT NOT NULL,\n content TEXT NOT NULL,\n token_count INTEGER NOT NULL,\n created_at TEXT NOT NULL,\n metadata TEXT\n );\n CREATE INDEX IF NOT EXISTS idx_lcm_messages_session\n ON lcm_messages(session_id, turn_index);\n\n CREATE TABLE IF NOT EXISTS lcm_message_parts (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n message_id INTEGER NOT NULL REFERENCES lcm_messages(id) ON DELETE CASCADE,\n ordinal INTEGER NOT NULL,\n kind TEXT NOT NULL,\n payload TEXT NOT NULL,\n tool_name TEXT,\n file_path TEXT,\n created_at TEXT NOT NULL\n );\n CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_msg\n ON lcm_message_parts(message_id, ordinal);\n CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_tool\n ON lcm_message_parts(tool_name);\n CREATE INDEX IF NOT EXISTS idx_lcm_message_parts_file\n ON lcm_message_parts(file_path);\n\n CREATE TABLE IF NOT EXISTS lcm_summary_nodes (\n id TEXT PRIMARY KEY,\n session_id TEXT NOT NULL,\n depth INTEGER NOT NULL,\n parent_id TEXT,\n summary_text TEXT NOT NULL,\n token_count INTEGER NOT NULL,\n msg_start INTEGER NOT NULL,\n msg_end INTEGER NOT NULL,\n escalation INTEGER NOT NULL DEFAULT 0,\n created_at TEXT NOT NULL,\n FOREIGN KEY (parent_id) REFERENCES lcm_summary_nodes(id)\n );\n CREATE INDEX IF NOT EXISTS idx_lcm_summary_session\n ON lcm_summary_nodes(session_id, depth);\n CREATE INDEX IF NOT EXISTS idx_lcm_summary_range\n ON lcm_summary_nodes(session_id, msg_start, msg_end);\n\n CREATE TABLE IF NOT EXISTS lcm_compaction_events (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n session_id TEXT NOT NULL,\n fired_at TEXT NOT NULL,\n msg_before INTEGER NOT NULL,\n tokens_before INTEGER NOT NULL,\n tokens_after INTEGER NOT NULL\n );\n `);\n\n // FTS5 tables — created separately so IF NOT EXISTS works correctly\n const hasFts = db\n .prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_messages_fts'\")\n .get();\n if (!hasFts) {\n db.exec(`\n CREATE VIRTUAL TABLE lcm_messages_fts USING fts5(\n content,\n content=lcm_messages,\n content_rowid=id\n );\n `);\n }\n\n const hasSummaryFts = db\n .prepare(\"SELECT name FROM sqlite_master WHERE type='table' AND name='lcm_summaries_fts'\")\n .get();\n if (!hasSummaryFts) {\n db.exec(`\n CREATE VIRTUAL TABLE lcm_summaries_fts USING fts5(\n summary_text,\n content=lcm_summary_nodes,\n content_rowid=rowid\n );\n `);\n }\n\n // Upsert meta version\n db.prepare(\"INSERT OR REPLACE INTO lcm_meta (key, value) VALUES ('schema_version', ?)\").run(\n String(LCM_SCHEMA_VERSION),\n );\n}\n"],"mappings":";;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,aAAa;AAOtB,IAAM,qBAAqB;AAEpB,SAAS,gBAAgB,WAA0C;AACxE,QAAM,SAAS,KAAK,KAAK,WAAW,SAAS,YAAY;AACzD,QAAM,KAAK,kBAAkB,MAAM;AACnC,KAAG,OAAO,oBAAoB;AAC9B,KAAG,OAAO,qBAAqB;AAC/B,KAAG,OAAO,sBAAsB;AAChC,cAAY,EAAE;AACd,SAAO;AACT;AAEA,eAAsB,kBAAkB,WAAkC;AACxE,QAAM,MAAM,KAAK,KAAK,WAAW,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE;AAUO,SAAS,eAAe,IAAiC;AAC9D,cAAY,EAAE;AAChB;AAEA,SAAS,YAAY,IAAiC;AACpD,QAAM,aAAa,GAChB,QAAQ,uEAAuE,EAC/E,IAAI;AAEP,MAAI,CAAC,YAAY;AACf,iBAAa,EAAE;AACf;AAAA,EACF;AAEA,QAAM,OAAO,GACV,QAAQ,yDAAyD,EACjE,IAAI;AACP,QAAM,iBAAiB,OAAO,SAAS,KAAK,OAAO,EAAE,IAAI;AAEzD,MAAI,iBAAiB,oBAAoB;AACvC,QAAI,KAAK,wBAAwB,cAAc,YAAO,kBAAkB,EAAE;AAC1E,iBAAa,EAAE;AAAA,EACjB;AACF;AAEA,SAAS,aAAa,IAAiC;AACrD,KAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA8DP;AAGD,QAAM,SAAS,GACZ,QAAQ,+EAA+E,EACvF,IAAI;AACP,MAAI,CAAC,QAAQ;AACX,OAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMP;AAAA,EACH;AAEA,QAAM,gBAAgB,GACnB,QAAQ,gFAAgF,EACxF,IAAI;AACP,MAAI,CAAC,eAAe;AAClB,OAAG,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAMP;AAAA,EACH;AAGA,KAAG,QAAQ,2EAA2E,EAAE;AAAA,IACtF,OAAO,kBAAkB;AAAA,EAC3B;AACF;","names":[]}
|