@remnic/core 1.1.12 → 1.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-cli.d.ts +2 -1
- package/dist/access-cli.js +263 -82
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +26 -60
- package/dist/access-http.js +43 -29
- package/dist/access-mcp.d.ts +24 -6
- package/dist/access-mcp.js +35 -28
- package/dist/access-schema.d.ts +9 -6
- package/dist/access-schema.js +7 -5
- package/dist/access-service-DcCDmNYC.d.ts +1542 -0
- package/dist/access-service.d.ts +25 -7
- package/dist/access-service.js +33 -26
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.js +11 -3
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +24 -0
- package/dist/adapters/claude-code.js +9 -0
- package/dist/adapters/codex.d.ts +25 -0
- package/dist/adapters/codex.js +9 -0
- package/dist/adapters/hermes.d.ts +35 -0
- package/dist/adapters/hermes.js +9 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.js +26 -0
- package/dist/adapters/registry.d.ts +20 -0
- package/dist/adapters/registry.js +13 -0
- package/dist/adapters/replit.d.ts +28 -0
- package/dist/adapters/replit.js +9 -0
- package/dist/adapters/types.d.ts +43 -0
- package/dist/adapters/types.js +8 -0
- package/dist/bootstrap.d.ts +20 -5
- package/dist/boxes.d.ts +7 -0
- package/dist/boxes.js +1 -1
- package/dist/briefing.d.ts +5 -3
- package/dist/briefing.js +9 -6
- package/dist/buffer-surprise-report.js +1 -1
- package/dist/buffer.d.ts +18 -4
- package/dist/buffer.js +1 -1
- package/dist/calibration.js +4 -4
- package/dist/capsule-cli.d.ts +4 -4
- package/dist/capsule-cli.js +1 -1
- package/dist/capsule-crypto-5CYAGVC5.js +18 -0
- package/dist/capsule-merge-4MGKE7C5.js +189 -0
- package/dist/causal-behavior.d.ts +8 -28
- package/dist/causal-behavior.js +6 -3
- package/dist/causal-behavior.js.map +1 -1
- package/dist/causal-chain.js +3 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +24 -13
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory.js +1 -1
- package/dist/chunk-25MQ7IHJ.js +427 -0
- package/dist/chunk-25MQ7IHJ.js.map +1 -0
- package/dist/chunk-2F2W355T.js +256 -0
- package/dist/chunk-2F2W355T.js.map +1 -0
- package/dist/chunk-2KI4QFHU.js +228 -0
- package/dist/chunk-2KI4QFHU.js.map +1 -0
- package/dist/chunk-2PRQG7PV.js +86 -0
- package/dist/chunk-2PRQG7PV.js.map +1 -0
- package/dist/chunk-2QR3XXIC.js +2272 -0
- package/dist/chunk-2QR3XXIC.js.map +1 -0
- package/dist/chunk-2WWLHTZY.js +121 -0
- package/dist/chunk-326G7DJK.js +2185 -0
- package/dist/chunk-326G7DJK.js.map +1 -0
- package/dist/chunk-34DQE4KF.js +174 -0
- package/dist/chunk-34DQE4KF.js.map +1 -0
- package/dist/chunk-3APJ5EVB.js +601 -0
- package/dist/chunk-3APJ5EVB.js.map +1 -0
- package/dist/chunk-3HPAPHUK.js +51 -0
- package/dist/chunk-3HPAPHUK.js.map +1 -0
- package/dist/chunk-3JXBXXM2.js +69 -0
- package/dist/chunk-3JXBXXM2.js.map +1 -0
- package/dist/chunk-3KW65B36.js +681 -0
- package/dist/chunk-3KW65B36.js.map +1 -0
- package/dist/chunk-3UXOZBHV.js +20 -0
- package/dist/chunk-3UXOZBHV.js.map +1 -0
- package/dist/chunk-3VAL7ZL2.js +266 -0
- package/dist/chunk-3VAL7ZL2.js.map +1 -0
- package/dist/chunk-3Y4P7RXM.js +31 -0
- package/dist/chunk-3Y4P7RXM.js.map +1 -0
- package/dist/chunk-47VWKCAF.js +273 -0
- package/dist/chunk-47VWKCAF.js.map +1 -0
- package/dist/chunk-4CRG46BG.js +271 -0
- package/dist/chunk-5375UYTQ.js +914 -0
- package/dist/chunk-5375UYTQ.js.map +1 -0
- package/dist/chunk-56K5QLHX.js +506 -0
- package/dist/chunk-56K5QLHX.js.map +1 -0
- package/dist/chunk-5RGLBDQF.js +596 -0
- package/dist/chunk-5RGLBDQF.js.map +1 -0
- package/dist/chunk-5UZXUTVO.js +9 -0
- package/dist/chunk-5UZXUTVO.js.map +1 -0
- package/dist/chunk-65PG43EQ.js +105 -0
- package/dist/chunk-65PG43EQ.js.map +1 -0
- package/dist/chunk-66DHUKLO.js +57 -0
- package/dist/chunk-66DHUKLO.js.map +1 -0
- package/dist/chunk-6FC5EGNV.js +46 -0
- package/dist/chunk-6FC5EGNV.js.map +1 -0
- package/dist/chunk-6H2TESSP.js +62 -0
- package/dist/chunk-6H2TESSP.js.map +1 -0
- package/dist/chunk-6LVVDPJ4.js +32 -0
- package/dist/chunk-6LVVDPJ4.js.map +1 -0
- package/dist/chunk-6RVI47ZR.js +159 -0
- package/dist/chunk-6RVI47ZR.js.map +1 -0
- package/dist/chunk-7AAT6G4Q.js +5117 -0
- package/dist/chunk-7AAT6G4Q.js.map +1 -0
- package/dist/chunk-7DTASS5T.js +29 -0
- package/dist/chunk-7DTASS5T.js.map +1 -0
- package/dist/chunk-7IASACLB.js +596 -0
- package/dist/chunk-7MNMYOFP.js +32 -0
- package/dist/chunk-7MNMYOFP.js.map +1 -0
- package/dist/chunk-7N4KAIGN.js +133 -0
- package/dist/chunk-7N4KAIGN.js.map +1 -0
- package/dist/chunk-7OZ53EXP.js +101 -0
- package/dist/chunk-7OZ53EXP.js.map +1 -0
- package/dist/chunk-7XYTQGCC.js +134 -0
- package/dist/chunk-7XYTQGCC.js.map +1 -0
- package/dist/chunk-A2XUIMJ3.js +341 -0
- package/dist/chunk-A2XUIMJ3.js.map +1 -0
- package/dist/chunk-AGZQD76C.js +201 -0
- package/dist/chunk-AGZQD76C.js.map +1 -0
- package/dist/chunk-APO3DCMU.js +361 -0
- package/dist/chunk-APO3DCMU.js.map +1 -0
- package/dist/chunk-BFBF3XEF.js +283 -0
- package/dist/chunk-BFBF3XEF.js.map +1 -0
- package/dist/chunk-BJ3KMYTB.js +1974 -0
- package/dist/chunk-BJ3KMYTB.js.map +1 -0
- package/dist/chunk-CHEL3SKB.js +6758 -0
- package/dist/chunk-CHEL3SKB.js.map +1 -0
- package/dist/chunk-CQZRLNMV.js +1491 -0
- package/dist/chunk-CQZRLNMV.js.map +1 -0
- package/dist/chunk-D46YSIYX.js +892 -0
- package/dist/chunk-D46YSIYX.js.map +1 -0
- package/dist/chunk-DINWEURR.js +648 -0
- package/dist/chunk-DINWEURR.js.map +1 -0
- package/dist/chunk-DK5LDEQM.js +530 -0
- package/dist/chunk-DK5LDEQM.js.map +1 -0
- package/dist/chunk-DOM4GKSW.js +34 -0
- package/dist/chunk-DOM4GKSW.js.map +1 -0
- package/dist/chunk-EDTHC6UD.js +1075 -0
- package/dist/chunk-EFJ3MQ4V.js +721 -0
- package/dist/chunk-EHRTFRWW.js +89 -0
- package/dist/chunk-EHRTFRWW.js.map +1 -0
- package/dist/chunk-FAJ7FZYM.js +11 -0
- package/dist/chunk-FAJ7FZYM.js.map +1 -0
- package/dist/chunk-FBYESMQ2.js +570 -0
- package/dist/chunk-FDU6HUUL.js +147 -0
- package/dist/chunk-FF4KLI5W.js +99 -0
- package/dist/chunk-FF4KLI5W.js.map +1 -0
- package/dist/chunk-FIT6DMX6.js +310 -0
- package/dist/chunk-FIT6DMX6.js.map +1 -0
- package/dist/chunk-FJ43PRLT.js +272 -0
- package/dist/chunk-FJ43PRLT.js.map +1 -0
- package/dist/chunk-FKFMOY3N.js +32 -0
- package/dist/chunk-FKFMOY3N.js.map +1 -0
- package/dist/chunk-FLTNHQK6.js +262 -0
- package/dist/chunk-FLTNHQK6.js.map +1 -0
- package/dist/chunk-GA454ALV.js +12436 -0
- package/dist/chunk-GA454ALV.js.map +1 -0
- package/dist/chunk-GGKRUQOO.js +228 -0
- package/dist/chunk-GIF42EW3.js +63 -0
- package/dist/chunk-GIF42EW3.js.map +1 -0
- package/dist/chunk-GL6I6MEQ.js +647 -0
- package/dist/chunk-H3ME6L6D.js +709 -0
- package/dist/chunk-H3ME6L6D.js.map +1 -0
- package/dist/chunk-HHLLAQGZ.js +1 -0
- package/dist/chunk-HXXBL2KD.js +2040 -0
- package/dist/chunk-I5V2VDIW.js +219 -0
- package/dist/chunk-I5V2VDIW.js.map +1 -0
- package/dist/chunk-I6K5FBRQ.js +35 -0
- package/dist/chunk-I6K5FBRQ.js.map +1 -0
- package/dist/chunk-ICRIXAP2.js +121 -0
- package/dist/chunk-ICRIXAP2.js.map +1 -0
- package/dist/chunk-J4EB7DNW.js +11 -0
- package/dist/chunk-J4EB7DNW.js.map +1 -0
- package/dist/chunk-JLFA7DQG.js +62 -0
- package/dist/chunk-JLFA7DQG.js.map +1 -0
- package/dist/chunk-KJTKLXTH.js +9 -0
- package/dist/chunk-KJTKLXTH.js.map +1 -0
- package/dist/chunk-KLAO5DGL.js +917 -0
- package/dist/chunk-KLAO5DGL.js.map +1 -0
- package/dist/chunk-KNKUID7G.js +183 -0
- package/dist/chunk-KOSORCJG.js +624 -0
- package/dist/chunk-KOSORCJG.js.map +1 -0
- package/dist/chunk-KUJVMMZQ.js +1262 -0
- package/dist/chunk-KUJVMMZQ.js.map +1 -0
- package/dist/chunk-LCR46JY5.js +123 -0
- package/dist/chunk-LCR46JY5.js.map +1 -0
- package/dist/chunk-LLQ2LLWF.js +148 -0
- package/dist/chunk-LLQ2LLWF.js.map +1 -0
- package/dist/chunk-LPMVBPA3.js +236 -0
- package/dist/chunk-LT3NLYSI.js +50 -0
- package/dist/chunk-LT3NLYSI.js.map +1 -0
- package/dist/chunk-LUDTDZLK.js +287 -0
- package/dist/chunk-LUDTDZLK.js.map +1 -0
- package/dist/chunk-M23FSH32.js +3963 -0
- package/dist/chunk-M23FSH32.js.map +1 -0
- package/dist/chunk-MC26UJIM.js +118 -0
- package/dist/chunk-ME6ESPZU.js +119 -0
- package/dist/chunk-ME6ESPZU.js.map +1 -0
- package/dist/chunk-MGKYQQYF.js +272 -0
- package/dist/chunk-MJFNCJXV.js +66 -0
- package/dist/chunk-MJFNCJXV.js.map +1 -0
- package/dist/chunk-MSWG7JI6.js +237 -0
- package/dist/chunk-MSWG7JI6.js.map +1 -0
- package/dist/chunk-MT25YHYH.js +141 -0
- package/dist/chunk-MT25YHYH.js.map +1 -0
- package/dist/chunk-MT4HVDUZ.js +53 -0
- package/dist/chunk-MY6TPVXW.js +219 -0
- package/dist/chunk-N2D6GXBM.js +267 -0
- package/dist/chunk-N2D6GXBM.js.map +1 -0
- package/dist/chunk-NJ3MJQZX.js +46 -0
- package/dist/chunk-NJ3MJQZX.js.map +1 -0
- package/dist/chunk-NMZY542O.js +335 -0
- package/dist/chunk-NMZY542O.js.map +1 -0
- package/dist/chunk-NNVTUXEB.js +23 -0
- package/dist/chunk-NZL6GGQE.js +375 -0
- package/dist/chunk-NZL6GGQE.js.map +1 -0
- package/dist/chunk-P4NEIHUT.js +108 -0
- package/dist/chunk-P7FMDTKL.js +103 -0
- package/dist/chunk-P7FMDTKL.js.map +1 -0
- package/dist/chunk-PHK3HARR.js +32 -0
- package/dist/chunk-PHK3HARR.js.map +1 -0
- package/dist/chunk-PIRJPV5T.js +98 -0
- package/dist/chunk-PIRJPV5T.js.map +1 -0
- package/dist/chunk-PK7H5L6Y.js +159 -0
- package/dist/chunk-PK7H5L6Y.js.map +1 -0
- package/dist/chunk-PR5FBTFU.js +233 -0
- package/dist/chunk-PR5FBTFU.js.map +1 -0
- package/dist/chunk-PU63GXWS.js +174 -0
- package/dist/chunk-PU63GXWS.js.map +1 -0
- package/dist/chunk-PZIAX57I.js +124 -0
- package/dist/chunk-PZIAX57I.js.map +1 -0
- package/dist/chunk-Q7P4WJDP.js +26 -0
- package/dist/chunk-Q7P4WJDP.js.map +1 -0
- package/dist/chunk-QQUAB63I.js +63 -0
- package/dist/chunk-QQUAB63I.js.map +1 -0
- package/dist/chunk-QRNI5JBH.js +18 -0
- package/dist/chunk-RHY3HH7P.js +601 -0
- package/dist/chunk-RHY3HH7P.js.map +1 -0
- package/dist/chunk-RRF5UOBJ.js +91 -0
- package/dist/chunk-RXDLTSWT.js +124 -0
- package/dist/chunk-RXDLTSWT.js.map +1 -0
- package/dist/chunk-RYED3SPJ.js +42 -0
- package/dist/chunk-RYED3SPJ.js.map +1 -0
- package/dist/chunk-S7KDBTWT.js +106 -0
- package/dist/chunk-S7KDBTWT.js.map +1 -0
- package/dist/chunk-SEDEKFYQ.js +1 -0
- package/dist/chunk-TECVW3JP.js +36 -0
- package/dist/chunk-TECVW3JP.js.map +1 -0
- package/dist/chunk-TFO23QT4.js +88 -0
- package/dist/chunk-TFO23QT4.js.map +1 -0
- package/dist/chunk-TK4UEOSK.js +76 -0
- package/dist/chunk-TK4UEOSK.js.map +1 -0
- package/dist/chunk-TKWGAOLV.js +122 -0
- package/dist/chunk-TKWGAOLV.js.map +1 -0
- package/dist/chunk-TMM4S4IJ.js +597 -0
- package/dist/chunk-TMM4S4IJ.js.map +1 -0
- package/dist/chunk-TMQLARTH.js +188 -0
- package/dist/chunk-TMQLARTH.js.map +1 -0
- package/dist/chunk-TPDBFYEG.js +130 -0
- package/dist/chunk-TPDBFYEG.js.map +1 -0
- package/dist/chunk-TPMQ3G6Z.js +145 -0
- package/dist/chunk-TPMQ3G6Z.js.map +1 -0
- package/dist/chunk-TZOLIGIG.js +61 -0
- package/dist/chunk-TZOLIGIG.js.map +1 -0
- package/dist/chunk-U3PN77QT.js +113 -0
- package/dist/chunk-U3WSW6PZ.js +277 -0
- package/dist/chunk-U4SCL7B7.js +640 -0
- package/dist/chunk-U4SCL7B7.js.map +1 -0
- package/dist/chunk-UWK5OXUJ.js +156 -0
- package/dist/chunk-UWK5OXUJ.js.map +1 -0
- package/dist/chunk-UWVJF25J.js +74 -0
- package/dist/chunk-UXHQAFNA.js +1317 -0
- package/dist/chunk-UXHQAFNA.js.map +1 -0
- package/dist/chunk-V5OCT34X.js +1 -0
- package/dist/chunk-VLXA6PI2.js +304 -0
- package/dist/chunk-VLXA6PI2.js.map +1 -0
- package/dist/chunk-VNO6ZJ35.js +500 -0
- package/dist/chunk-VNO6ZJ35.js.map +1 -0
- package/dist/chunk-VW676BEI.js +827 -0
- package/dist/chunk-VW676BEI.js.map +1 -0
- package/dist/chunk-W3LR522O.js +2296 -0
- package/dist/chunk-W4L6CZKA.js +96 -0
- package/dist/chunk-W4L6CZKA.js.map +1 -0
- package/dist/chunk-W4RVMTHR.js +372 -0
- package/dist/chunk-W4RVMTHR.js.map +1 -0
- package/dist/chunk-WEHSQBFR.js +188 -0
- package/dist/chunk-WEHSQBFR.js.map +1 -0
- package/dist/chunk-WELDCG6C.js +380 -0
- package/dist/chunk-WELDCG6C.js.map +1 -0
- package/dist/chunk-WZYKANL3.js +2800 -0
- package/dist/chunk-WZYKANL3.js.map +1 -0
- package/dist/chunk-XIG5PDM7.js +48 -0
- package/dist/chunk-XJNBEDFE.js +193 -0
- package/dist/chunk-XJNBEDFE.js.map +1 -0
- package/dist/chunk-XVVIG67A.js +291 -0
- package/dist/chunk-XVVIG67A.js.map +1 -0
- package/dist/chunk-XVZ7B3HG.js +135 -0
- package/dist/chunk-YBPYIAA5.js +73 -0
- package/dist/chunk-YBPYIAA5.js.map +1 -0
- package/dist/chunk-Z734BLO3.js +21 -0
- package/dist/chunk-Z734BLO3.js.map +1 -0
- package/dist/chunk-ZKSK55RC.js +269 -0
- package/dist/chunk-ZKSK55RC.js.map +1 -0
- package/dist/chunk-ZTFCYYEZ.js +69 -0
- package/dist/chunk-ZTFCYYEZ.js.map +1 -0
- package/dist/chunk-ZY2MNJR6.js +329 -0
- package/dist/chunk-ZY2MNJR6.js.map +1 -0
- package/dist/cli-D3VpkVwB.d.ts +1136 -0
- package/dist/cli.d.ts +39 -10
- package/dist/cli.js +108 -49
- package/dist/commitment-ledger.js +1 -1
- package/dist/compat/checks.d.ts +5 -0
- package/dist/compat/checks.js +11 -0
- package/dist/compat/checks.js.map +1 -0
- package/dist/compat/types.d.ts +30 -0
- package/dist/compat/types.js +1 -0
- package/dist/compat/types.js.map +1 -0
- package/dist/compounding/engine.d.ts +221 -0
- package/dist/compounding/engine.js +32 -0
- package/dist/compounding/engine.js.map +1 -0
- package/dist/compounding/preference-consolidator.d.ts +92 -0
- package/dist/compounding/preference-consolidator.js +553 -0
- package/dist/compounding/preference-consolidator.js.map +1 -0
- package/dist/config.d.ts +4 -2
- package/dist/config.js +9 -4
- package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
- package/dist/connectors/codex-materialize-runner.d.ts +64 -0
- package/dist/connectors/codex-materialize-runner.js +33 -0
- package/dist/connectors/codex-materialize-runner.js.map +1 -0
- package/dist/connectors/codex-materialize.d.ts +195 -0
- package/dist/connectors/codex-materialize.js +38 -0
- package/dist/connectors/codex-materialize.js.map +1 -0
- package/dist/connectors/index.d.ts +444 -0
- package/dist/connectors/index.js +115 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
- package/dist/connectors-cli.d.ts +1 -1
- package/dist/consolidation-provenance-check.d.ts +3 -1
- package/dist/consolidation-undo.d.ts +3 -1
- package/dist/contradiction/index.d.ts +258 -0
- package/dist/contradiction/index.js +43 -0
- package/dist/contradiction/index.js.map +1 -0
- package/dist/contradiction-review-ATP4S6IC.js +30 -0
- package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
- package/dist/contradiction-scan-5A4IDZV5.js +13 -0
- package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
- package/dist/conversation-index/backend.d.ts +97 -0
- package/dist/conversation-index/backend.js +13 -0
- package/dist/conversation-index/backend.js.map +1 -0
- package/dist/conversation-index/chunker.d.ts +16 -0
- package/dist/conversation-index/chunker.js +8 -0
- package/dist/conversation-index/chunker.js.map +1 -0
- package/dist/conversation-index/cleanup.d.ts +11 -0
- package/dist/conversation-index/cleanup.js +9 -0
- package/dist/conversation-index/cleanup.js.map +1 -0
- package/dist/conversation-index/faiss-adapter.d.ts +6 -0
- package/dist/conversation-index/faiss-adapter.js +16 -0
- package/dist/conversation-index/faiss-adapter.js.map +1 -0
- package/dist/conversation-index/indexer.d.ts +23 -0
- package/dist/conversation-index/indexer.js +15 -0
- package/dist/conversation-index/indexer.js.map +1 -0
- package/dist/conversation-index/search.d.ts +6 -0
- package/dist/conversation-index/search.js +11 -0
- package/dist/conversation-index/search.js.map +1 -0
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +163 -0
- package/dist/enrichment/index.js +18 -0
- package/dist/enrichment/index.js.map +1 -0
- package/dist/entity-retrieval.d.ts +4 -2
- package/dist/entity-retrieval.js +8 -5
- package/dist/evals.js +1 -1
- package/dist/explicit-capture.d.ts +20 -5
- package/dist/explicit-capture.js +2 -2
- package/dist/extraction-judge-training.js +1 -1
- package/dist/extraction.js +8 -8
- package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
- package/dist/fallback-llm.d.ts +2 -0
- package/dist/fallback-llm.js +4 -4
- package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
- package/dist/index.d.ts +66 -711
- package/dist/index.js +556 -2680
- package/dist/index.js.map +1 -1
- package/dist/lcm/archive.d.ts +89 -0
- package/dist/lcm/archive.js +12 -0
- package/dist/lcm/archive.js.map +1 -0
- package/dist/lcm/dag.d.ts +48 -0
- package/dist/lcm/dag.js +8 -0
- package/dist/lcm/dag.js.map +1 -0
- package/dist/lcm/engine.d.ts +116 -0
- package/dist/lcm/engine.js +20 -0
- package/dist/lcm/engine.js.map +1 -0
- package/dist/lcm/index.d.ts +12 -0
- package/dist/lcm/index.js +44 -0
- package/dist/lcm/index.js.map +1 -0
- package/dist/lcm/queue.d.ts +62 -0
- package/dist/lcm/queue.js +8 -0
- package/dist/lcm/queue.js.map +1 -0
- package/dist/lcm/recall.d.ts +20 -0
- package/dist/lcm/recall.js +8 -0
- package/dist/lcm/recall.js.map +1 -0
- package/dist/lcm/schema.d.ts +16 -0
- package/dist/lcm/schema.js +14 -0
- package/dist/lcm/schema.js.map +1 -0
- package/dist/lcm/summarizer.d.ts +38 -0
- package/dist/lcm/summarizer.js +12 -0
- package/dist/lcm/summarizer.js.map +1 -0
- package/dist/lcm/tools.d.ts +29 -0
- package/dist/lcm/tools.js +8 -0
- package/dist/lcm/tools.js.map +1 -0
- package/dist/live-connectors-runner.js +5 -5
- package/dist/local-llm.js +3 -3
- package/dist/maintenance/archive-observations.d.ts +18 -0
- package/dist/maintenance/archive-observations.js +8 -0
- package/dist/maintenance/archive-observations.js.map +1 -0
- package/dist/maintenance/backup-stamp.d.ts +3 -0
- package/dist/maintenance/backup-stamp.js +8 -0
- package/dist/maintenance/backup-stamp.js.map +1 -0
- package/dist/maintenance/memory-governance-cron.d.ts +85 -0
- package/dist/maintenance/memory-governance-cron.js +22 -0
- package/dist/maintenance/memory-governance-cron.js.map +1 -0
- package/dist/maintenance/memory-governance.d.ts +137 -0
- package/dist/maintenance/memory-governance.js +40 -0
- package/dist/maintenance/memory-governance.js.map +1 -0
- package/dist/maintenance/migrate-observations.d.ts +18 -0
- package/dist/maintenance/migrate-observations.js +9 -0
- package/dist/maintenance/migrate-observations.js.map +1 -0
- package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
- package/dist/maintenance/observation-ledger-utils.js +10 -0
- package/dist/maintenance/observation-ledger-utils.js.map +1 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
- package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
- package/dist/maintenance/rebuild-memory-projection.js +35 -0
- package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
- package/dist/maintenance/rebuild-observations.d.ts +17 -0
- package/dist/maintenance/rebuild-observations.js +9 -0
- package/dist/maintenance/rebuild-observations.js.map +1 -0
- package/dist/mcp-memory-inspector-app.d.ts +24 -6
- package/dist/memory-projection-store.d.ts +108 -3
- package/dist/memory-projection-store.js +2 -1
- package/dist/memory-worth-outcomes.d.ts +4 -2
- package/dist/migrate/from-engram.d.ts +24 -0
- package/dist/migrate/from-engram.js +12 -0
- package/dist/migrate/from-engram.js.map +1 -0
- package/dist/namespaces/migrate.d.ts +50 -0
- package/dist/namespaces/migrate.js +50 -0
- package/dist/namespaces/migrate.js.map +1 -0
- package/dist/namespaces/principal.d.ts +17 -0
- package/dist/namespaces/principal.js +16 -0
- package/dist/namespaces/principal.js.map +1 -0
- package/dist/namespaces/search.d.ts +46 -0
- package/dist/namespaces/search.js +28 -0
- package/dist/namespaces/search.js.map +1 -0
- package/dist/namespaces/storage.d.ts +32 -0
- package/dist/namespaces/storage.js +28 -0
- package/dist/namespaces/storage.js.map +1 -0
- package/dist/network/tailscale.d.ts +41 -0
- package/dist/network/tailscale.js +9 -0
- package/dist/network/tailscale.js.map +1 -0
- package/dist/network/webdav.d.ts +39 -0
- package/dist/network/webdav.js +10 -0
- package/dist/network/webdav.js.map +1 -0
- package/dist/objective-state-writers.js +2 -2
- package/dist/operator-toolkit.d.ts +4 -2
- package/dist/operator-toolkit.js +32 -14
- package/dist/opik-exporter.js +2 -2
- package/dist/opik-exporter.js.map +1 -1
- package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
- package/dist/orchestrator.d.ts +22 -7
- package/dist/orchestrator.js +79 -44
- package/dist/path-MR5JPYOP.js +9 -0
- package/dist/path-MR5JPYOP.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +102 -3
- package/dist/qmd.js +23 -5
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +6 -0
- package/dist/replay/normalizers/chatgpt.js +11 -0
- package/dist/replay/normalizers/chatgpt.js.map +1 -0
- package/dist/replay/normalizers/claude.d.ts +6 -0
- package/dist/replay/normalizers/claude.js +11 -0
- package/dist/replay/normalizers/claude.js.map +1 -0
- package/dist/replay/normalizers/openclaw.d.ts +6 -0
- package/dist/replay/normalizers/openclaw.js +11 -0
- package/dist/replay/normalizers/openclaw.js.map +1 -0
- package/dist/replay/normalizers/shared.d.ts +16 -0
- package/dist/replay/normalizers/shared.js +14 -0
- package/dist/replay/normalizers/shared.js.map +1 -0
- package/dist/replay/runner.d.ts +35 -0
- package/dist/replay/runner.js +16 -0
- package/dist/replay/runner.js.map +1 -0
- package/dist/replay/types.d.ts +57 -0
- package/dist/replay/types.js +19 -0
- package/dist/replay/types.js.map +1 -0
- package/dist/resolution-B7FNQSSP.js +12 -0
- package/dist/resolution-B7FNQSSP.js.map +1 -0
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +8 -6
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/routing/engine.d.ts +35 -0
- package/dist/routing/engine.js +16 -0
- package/dist/routing/engine.js.map +1 -0
- package/dist/routing/store.d.ts +27 -0
- package/dist/routing/store.js +10 -0
- package/dist/routing/store.js.map +1 -0
- package/dist/runtime/better-sqlite.d.ts +8 -0
- package/dist/runtime/better-sqlite.js +10 -0
- package/dist/runtime/better-sqlite.js.map +1 -0
- package/dist/runtime/child-process.d.ts +32 -0
- package/dist/runtime/child-process.js +10 -0
- package/dist/runtime/child-process.js.map +1 -0
- package/dist/runtime/env.d.ts +5 -0
- package/dist/runtime/env.js +12 -0
- package/dist/runtime/env.js.map +1 -0
- package/dist/schemas.d.ts +22 -22
- package/dist/sdk-compat.js +1 -1
- package/dist/search/document-scanner.d.ts +22 -0
- package/dist/search/document-scanner.js +8 -0
- package/dist/search/document-scanner.js.map +1 -0
- package/dist/search/embed-helper.d.ts +35 -0
- package/dist/search/embed-helper.js +9 -0
- package/dist/search/embed-helper.js.map +1 -0
- package/dist/search/factory.d.ts +32 -0
- package/dist/search/factory.js +29 -0
- package/dist/search/factory.js.map +1 -0
- package/dist/search/index.d.ts +15 -0
- package/dist/search/index.js +50 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/lancedb-backend.d.ts +51 -0
- package/dist/search/lancedb-backend.js +10 -0
- package/dist/search/lancedb-backend.js.map +1 -0
- package/dist/search/meilisearch-backend.d.ts +48 -0
- package/dist/search/meilisearch-backend.js +10 -0
- package/dist/search/meilisearch-backend.js.map +1 -0
- package/dist/search/noop-backend.d.ts +26 -0
- package/dist/search/noop-backend.js +8 -0
- package/dist/search/noop-backend.js.map +1 -0
- package/dist/search/orama-backend.d.ts +53 -0
- package/dist/search/orama-backend.js +10 -0
- package/dist/search/orama-backend.js.map +1 -0
- package/dist/search/port.d.ts +61 -0
- package/dist/search/port.js +1 -0
- package/dist/search/port.js.map +1 -0
- package/dist/search/remote-backend.d.ts +39 -0
- package/dist/search/remote-backend.js +9 -0
- package/dist/search/remote-backend.js.map +1 -0
- package/dist/secure-store/index.d.ts +890 -0
- package/dist/secure-store/index.js +156 -0
- package/dist/secure-store/index.js.map +1 -0
- package/dist/semantic-VwGI14Ok.d.ts +69 -0
- package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +13 -6
- package/dist/semantic-rule-promotion.js +8 -5
- package/dist/semantic-rule-verifier.js +8 -5
- package/dist/shared-context/manager.d.ts +131 -0
- package/dist/shared-context/manager.js +15 -0
- package/dist/shared-context/manager.js.map +1 -0
- package/dist/skills-registry.js +13 -1
- package/dist/skills-registry.js.map +1 -1
- package/dist/state-store-VZU2IA53.js +16 -0
- package/dist/state-store-VZU2IA53.js.map +1 -0
- package/dist/storage-paths.d.ts +9 -0
- package/dist/storage-paths.js +20 -0
- package/dist/storage-paths.js.map +1 -0
- package/dist/storage.d.ts +3 -1
- package/dist/storage.js +7 -4
- package/dist/summarizer.d.ts +5 -0
- package/dist/summarizer.js +9 -8
- package/dist/summary-snapshot.js +2 -1
- package/dist/surfaces/dreams.d.ts +16 -0
- package/dist/surfaces/dreams.js +282 -0
- package/dist/surfaces/dreams.js.map +1 -0
- package/dist/surfaces/heartbeat.d.ts +17 -0
- package/dist/surfaces/heartbeat.js +265 -0
- package/dist/surfaces/heartbeat.js.map +1 -0
- package/dist/temporal-supersession.d.ts +3 -1
- package/dist/threading.d.ts +5 -0
- package/dist/threading.js +2 -1
- package/dist/tier-migration.d.ts +4 -2
- package/dist/tokens.js +2 -2
- package/dist/transcript.d.ts +15 -1
- package/dist/transcript.js +2 -1
- package/dist/transfer/autodetect.d.ts +4 -0
- package/dist/transfer/autodetect.js +15 -0
- package/dist/transfer/autodetect.js.map +1 -0
- package/dist/transfer/backup.d.ts +21 -0
- package/dist/transfer/backup.js +17 -0
- package/dist/transfer/backup.js.map +1 -0
- package/dist/transfer/capsule-export.d.ts +113 -0
- package/dist/transfer/capsule-export.js +19 -0
- package/dist/transfer/capsule-export.js.map +1 -0
- package/dist/transfer/capsule-import.d.ts +124 -0
- package/dist/transfer/capsule-import.js +16 -0
- package/dist/transfer/capsule-import.js.map +1 -0
- package/dist/transfer/constants.d.ts +13 -0
- package/dist/transfer/constants.js +12 -0
- package/dist/transfer/constants.js.map +1 -0
- package/dist/transfer/export-json.d.ts +11 -0
- package/dist/transfer/export-json.js +11 -0
- package/dist/transfer/export-json.js.map +1 -0
- package/dist/transfer/export-md.d.ts +10 -0
- package/dist/transfer/export-md.js +13 -0
- package/dist/transfer/export-md.js.map +1 -0
- package/dist/transfer/export-sqlite.d.ts +9 -0
- package/dist/transfer/export-sqlite.js +12 -0
- package/dist/transfer/export-sqlite.js.map +1 -0
- package/dist/transfer/fs-utils.d.ts +61 -0
- package/dist/transfer/fs-utils.js +40 -0
- package/dist/transfer/fs-utils.js.map +1 -0
- package/dist/transfer/import-json.d.ts +16 -0
- package/dist/transfer/import-json.js +13 -0
- package/dist/transfer/import-json.js.map +1 -0
- package/dist/transfer/import-md.d.ts +14 -0
- package/dist/transfer/import-md.js +11 -0
- package/dist/transfer/import-md.js.map +1 -0
- package/dist/transfer/import-sqlite.d.ts +14 -0
- package/dist/transfer/import-sqlite.js +12 -0
- package/dist/transfer/import-sqlite.js.map +1 -0
- package/dist/transfer/sqlite-schema.d.ts +4 -0
- package/dist/transfer/sqlite-schema.js +10 -0
- package/dist/transfer/sqlite-schema.js.map +1 -0
- package/dist/transfer/types.d.ts +916 -0
- package/dist/transfer/types.js +30 -0
- package/dist/transfer/types.js.map +1 -0
- package/dist/types.d.ts +28 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +9 -6
- package/dist/work/board.d.ts +43 -0
- package/dist/work/board.js +14 -0
- package/dist/work/board.js.map +1 -0
- package/dist/work/boundary.d.ts +8 -0
- package/dist/work/boundary.js +14 -0
- package/dist/work/boundary.js.map +1 -0
- package/dist/work/storage.d.ts +39 -0
- package/dist/work/storage.js +11 -0
- package/dist/work/storage.js.map +1 -0
- package/dist/work/types.d.ts +75 -0
- package/dist/work/types.js +1 -0
- package/dist/work/types.js.map +1 -0
- package/package.json +2767 -6
- package/scripts/faiss_index.py +816 -0
- package/scripts/faiss_requirements.txt +3 -0
- package/skills/remnic-entities/SKILL.md +51 -0
- package/skills/remnic-memory-workflow/SKILL.md +61 -0
- package/skills/remnic-recall/SKILL.md +51 -0
- package/skills/remnic-remember/SKILL.md +56 -0
- package/skills/remnic-search/SKILL.md +51 -0
- package/skills/remnic-status/SKILL.md +51 -0
- package/src/abort-error.test.ts +49 -0
- package/src/abort-error.ts +46 -0
- package/src/abstraction-nodes.ts +162 -0
- package/src/access-audit.test.ts +178 -0
- package/src/access-audit.ts +125 -0
- package/src/access-cli.test.ts +439 -0
- package/src/access-cli.ts +438 -0
- package/src/access-http.test.ts +225 -0
- package/src/access-http.ts +1899 -0
- package/src/access-idempotency.ts +232 -0
- package/src/access-mcp.test.ts +568 -0
- package/src/access-mcp.ts +3056 -0
- package/src/access-schema-pi.test.ts +60 -0
- package/src/access-schema.ts +522 -0
- package/src/access-service-namespace.test.ts +123 -0
- package/src/access-service.ts +5629 -0
- package/src/action-confidence.test.ts +206 -0
- package/src/action-confidence.ts +466 -0
- package/src/active-memory-bridge.test.ts +285 -0
- package/src/active-memory-bridge.ts +217 -0
- package/src/active-recall.test.ts +484 -0
- package/src/active-recall.ts +459 -0
- package/src/adapters/claude-code.ts +56 -0
- package/src/adapters/codex.ts +57 -0
- package/src/adapters/hermes.ts +64 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/registry.ts +41 -0
- package/src/adapters/replit.ts +55 -0
- package/src/adapters/types.ts +51 -0
- package/src/behavior-learner.ts +144 -0
- package/src/behavior-signals.ts +73 -0
- package/src/binary-lifecycle/backend.ts +117 -0
- package/src/binary-lifecycle/index.ts +35 -0
- package/src/binary-lifecycle/manifest.ts +79 -0
- package/src/binary-lifecycle/pipeline.ts +352 -0
- package/src/binary-lifecycle/scanner.ts +89 -0
- package/src/binary-lifecycle/types.ts +89 -0
- package/src/bootstrap.ts +178 -0
- package/src/boxes.ts +521 -0
- package/src/briefing.test.ts +1535 -0
- package/src/briefing.ts +1382 -0
- package/src/buffer-session.test.ts +443 -0
- package/src/buffer-surprise-report.ts +176 -0
- package/src/buffer-surprise-telemetry.test.ts +606 -0
- package/src/buffer-surprise-trigger.test.ts +766 -0
- package/src/buffer-surprise.test.ts +339 -0
- package/src/buffer-surprise.ts +203 -0
- package/src/buffer.ts +900 -0
- package/src/bulk-import/cli-command.test.ts +204 -0
- package/src/bulk-import/index.ts +34 -0
- package/src/bulk-import/pipeline.test.ts +445 -0
- package/src/bulk-import/pipeline.ts +178 -0
- package/src/bulk-import/registry.test.ts +151 -0
- package/src/bulk-import/registry.ts +72 -0
- package/src/bulk-import/types.test.ts +272 -0
- package/src/bulk-import/types.ts +145 -0
- package/src/calibration.ts +394 -0
- package/src/capsule-cli.test.ts +398 -0
- package/src/capsule-cli.ts +565 -0
- package/src/causal-behavior.ts +308 -0
- package/src/causal-chain.ts +419 -0
- package/src/causal-consolidation.ts +370 -0
- package/src/causal-retrieval.ts +286 -0
- package/src/causal-trajectory-graph.ts +60 -0
- package/src/causal-trajectory.ts +303 -0
- package/src/chunking.ts +220 -0
- package/src/citations.ts +232 -0
- package/src/cli.ts +9403 -0
- package/src/codex-cli-fallback.ts +162 -0
- package/src/codex-thread-key.ts +1 -0
- package/src/coding/access-coding-context.test.ts +197 -0
- package/src/coding/coding-branch-scope.test.ts +281 -0
- package/src/coding/coding-namespace.test.ts +360 -0
- package/src/coding/coding-namespace.ts +412 -0
- package/src/coding/coding-orchestrator.test.ts +249 -0
- package/src/coding/git-context.test.ts +507 -0
- package/src/coding/git-context.ts +336 -0
- package/src/coding/mcp-set-coding-context.test.ts +174 -0
- package/src/coding/review-context.test.ts +316 -0
- package/src/coding/review-context.ts +349 -0
- package/src/coding/wire-coding-context.test.ts +468 -0
- package/src/commitment-ledger.test.ts +78 -0
- package/src/commitment-ledger.ts +337 -0
- package/src/compat/checks.test.ts +206 -0
- package/src/compat/checks.ts +716 -0
- package/src/compat/types.ts +33 -0
- package/src/compounding/engine.ts +1686 -0
- package/src/compounding/preference-consolidator.ts +778 -0
- package/src/compression-optimizer.ts +312 -0
- package/src/config.test.ts +930 -0
- package/src/config.ts +3807 -0
- package/src/connectors/codex/instructions.md +160 -0
- package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
- package/src/connectors/codex-marketplace.ts +500 -0
- package/src/connectors/codex-materialize-runner.ts +212 -0
- package/src/connectors/codex-materialize.ts +983 -0
- package/src/connectors/coerce.ts +62 -0
- package/src/connectors/index.test.ts +1570 -0
- package/src/connectors/index.ts +3222 -0
- package/src/connectors/live/framework.ts +164 -0
- package/src/connectors/live/github.test.ts +1218 -0
- package/src/connectors/live/github.ts +1068 -0
- package/src/connectors/live/gmail.test.ts +1706 -0
- package/src/connectors/live/gmail.ts +1293 -0
- package/src/connectors/live/google-drive.test.ts +696 -0
- package/src/connectors/live/google-drive.ts +724 -0
- package/src/connectors/live/index.ts +101 -0
- package/src/connectors/live/live-connectors.test.ts +689 -0
- package/src/connectors/live/notion.test.ts +1109 -0
- package/src/connectors/live/notion.ts +978 -0
- package/src/connectors/live/registry.ts +103 -0
- package/src/connectors/live/state-store.ts +399 -0
- package/src/connectors/live/transient-errors.ts +150 -0
- package/src/connectors/weclone-installer.test.ts +850 -0
- package/src/connectors-cli.ts +513 -0
- package/src/console/state.test.ts +224 -0
- package/src/console/state.ts +514 -0
- package/src/console/trace.test.ts +813 -0
- package/src/console/trace.ts +603 -0
- package/src/console/tui.test.ts +582 -0
- package/src/console/tui.ts +508 -0
- package/src/consolidation-operator.ts +182 -0
- package/src/consolidation-provenance-check.ts +551 -0
- package/src/consolidation-undo.ts +718 -0
- package/src/contradiction/contradiction-judge.test.ts +189 -0
- package/src/contradiction/contradiction-judge.ts +333 -0
- package/src/contradiction/contradiction-review.ts +574 -0
- package/src/contradiction/contradiction-scan.ts +504 -0
- package/src/contradiction/contradiction.test.ts +2230 -0
- package/src/contradiction/index.ts +37 -0
- package/src/contradiction/resolution.ts +383 -0
- package/src/conversation-index/backend.ts +323 -0
- package/src/conversation-index/chunker.ts +47 -0
- package/src/conversation-index/cleanup.ts +53 -0
- package/src/conversation-index/faiss-adapter.ts +384 -0
- package/src/conversation-index/indexer.test.ts +164 -0
- package/src/conversation-index/indexer.ts +192 -0
- package/src/conversation-index/search.ts +37 -0
- package/src/cross-namespace-budget.test.ts +275 -0
- package/src/cross-namespace-budget.ts +365 -0
- package/src/cue-anchors.ts +163 -0
- package/src/curation/index.ts +544 -0
- package/src/dashboard-runtime.ts +337 -0
- package/src/day-summary.ts +122 -0
- package/src/dedup/index.ts +330 -0
- package/src/dedup/semantic.test.ts +1577 -0
- package/src/dedup/semantic.ts +148 -0
- package/src/delinearize.ts +193 -0
- package/src/direct-answer-wiring.test.ts +473 -0
- package/src/direct-answer-wiring.ts +180 -0
- package/src/direct-answer.test.ts +484 -0
- package/src/direct-answer.ts +273 -0
- package/src/embedding-fallback.ts +565 -0
- package/src/enrichment/audit.ts +89 -0
- package/src/enrichment/index.ts +27 -0
- package/src/enrichment/pipeline.ts +197 -0
- package/src/enrichment/provider-registry.ts +85 -0
- package/src/enrichment/types.ts +100 -0
- package/src/enrichment/web-search-provider.ts +63 -0
- package/src/entity-retrieval.ts +774 -0
- package/src/entity-schema.ts +239 -0
- package/src/evals.ts +1312 -0
- package/src/event-order-recall.test.ts +4164 -0
- package/src/event-order-recall.ts +2802 -0
- package/src/evidence-pack.test.ts +89 -0
- package/src/evidence-pack.ts +388 -0
- package/src/explicit-capture.ts +530 -0
- package/src/explicit-cue-recall.test.ts +3019 -0
- package/src/explicit-cue-recall.ts +5545 -0
- package/src/extraction-judge-telemetry.ts +234 -0
- package/src/extraction-judge-training.ts +221 -0
- package/src/extraction-judge.ts +846 -0
- package/src/extraction-timeout.test.ts +265 -0
- package/src/extraction.ts +2719 -0
- package/src/fallback-llm.test.ts +1060 -0
- package/src/fallback-llm.ts +918 -0
- package/src/focused-list-recall.test.ts +734 -0
- package/src/focused-list-recall.ts +1160 -0
- package/src/graph-dashboard-diff.ts +35 -0
- package/src/graph-dashboard-key.ts +5 -0
- package/src/graph-dashboard-parser.ts +104 -0
- package/src/graph-edge-reinforcement.ts +192 -0
- package/src/graph-events.ts +151 -0
- package/src/graph-recall.test.ts +164 -0
- package/src/graph-recall.ts +189 -0
- package/src/graph-retrieval.test.ts +809 -0
- package/src/graph-retrieval.ts +823 -0
- package/src/graph-snapshot.ts +329 -0
- package/src/graph.ts +813 -0
- package/src/harmonic-retrieval.ts +223 -0
- package/src/himem.ts +154 -0
- package/src/hygiene.ts +87 -0
- package/src/identity-continuity.ts +333 -0
- package/src/importance.ts +328 -0
- package/src/importers/base.test.ts +294 -0
- package/src/importers/base.ts +436 -0
- package/src/importers/index.ts +21 -0
- package/src/index.ts +1204 -0
- package/src/intent.ts +154 -0
- package/src/json-extract.ts +85 -0
- package/src/json-store.ts +42 -0
- package/src/lcm/archive.ts +617 -0
- package/src/lcm/dag.ts +199 -0
- package/src/lcm/engine.ts +645 -0
- package/src/lcm/index.ts +7 -0
- package/src/lcm/queue.test.ts +178 -0
- package/src/lcm/queue.ts +200 -0
- package/src/lcm/recall.ts +117 -0
- package/src/lcm/schema.ts +154 -0
- package/src/lcm/summarizer.ts +235 -0
- package/src/lcm/tools.ts +191 -0
- package/src/lcm-engine.test.ts +660 -0
- package/src/legacy-hook-compat.test.ts +20 -0
- package/src/legacy-hook-compat.ts +45 -0
- package/src/lifecycle.ts +289 -0
- package/src/live-connectors-runner.ts +385 -0
- package/src/local-llm-qos.test.ts +303 -0
- package/src/local-llm-thinking.test.ts +292 -0
- package/src/local-llm.ts +1464 -0
- package/src/logger.ts +49 -0
- package/src/maintenance/archive-observations.ts +147 -0
- package/src/maintenance/backup-stamp.ts +3 -0
- package/src/maintenance/dreams-ledger.ts +516 -0
- package/src/maintenance/first-start-migration.ts +362 -0
- package/src/maintenance/forget.test.ts +206 -0
- package/src/maintenance/forget.ts +126 -0
- package/src/maintenance/graph-edge-decay.test.ts +409 -0
- package/src/maintenance/graph-edge-decay.ts +394 -0
- package/src/maintenance/memory-governance-cron.ts +447 -0
- package/src/maintenance/memory-governance.ts +1039 -0
- package/src/maintenance/migrate-observations.ts +216 -0
- package/src/maintenance/observation-ledger-utils.ts +54 -0
- package/src/maintenance/pattern-reinforcement.test.ts +875 -0
- package/src/maintenance/pattern-reinforcement.ts +369 -0
- package/src/maintenance/purge.ts +334 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
- package/src/maintenance/rebuild-memory-projection.ts +1234 -0
- package/src/maintenance/rebuild-observations.ts +178 -0
- package/src/maintenance/tier-stats.test.ts +378 -0
- package/src/maintenance/tier-stats.ts +222 -0
- package/src/mcp-memory-inspector-app.ts +421 -0
- package/src/memory-action-policy.ts +80 -0
- package/src/memory-cache.ts +208 -0
- package/src/memory-extension/claude-code-publisher.ts +51 -0
- package/src/memory-extension/codex-publisher.ts +149 -0
- package/src/memory-extension/hermes-publisher.ts +51 -0
- package/src/memory-extension/index.ts +100 -0
- package/src/memory-extension/shared-instructions.ts +133 -0
- package/src/memory-extension/types.ts +86 -0
- package/src/memory-extension-host/host-discovery.ts +276 -0
- package/src/memory-extension-host/index.ts +14 -0
- package/src/memory-extension-host/render-extensions-block.ts +73 -0
- package/src/memory-extension-host/types.ts +21 -0
- package/src/memory-lifecycle-ledger-utils.ts +116 -0
- package/src/memory-projection-format.ts +11 -0
- package/src/memory-projection-store.ts +951 -0
- package/src/memory-provenance.test.ts +196 -0
- package/src/memory-provenance.ts +484 -0
- package/src/memory-worth-bench.test.ts +71 -0
- package/src/memory-worth-bench.ts +265 -0
- package/src/memory-worth-filter.test.ts +209 -0
- package/src/memory-worth-filter.ts +204 -0
- package/src/memory-worth-frontmatter.test.ts +311 -0
- package/src/memory-worth-outcomes.test.ts +316 -0
- package/src/memory-worth-outcomes.ts +286 -0
- package/src/memory-worth.test.ts +317 -0
- package/src/memory-worth.ts +215 -0
- package/src/message-parts/index.ts +806 -0
- package/src/message-parts/message-parts.test.ts +421 -0
- package/src/migrate/from-engram.ts +789 -0
- package/src/model-registry.ts +313 -0
- package/src/models-json.ts +76 -0
- package/src/namespaces/migrate.ts +187 -0
- package/src/namespaces/path.ts +25 -0
- package/src/namespaces/principal.test.ts +195 -0
- package/src/namespaces/principal.ts +86 -0
- package/src/namespaces/search.test.ts +105 -0
- package/src/namespaces/search.ts +233 -0
- package/src/namespaces/storage.ts +74 -0
- package/src/native-knowledge.ts +1823 -0
- package/src/negative.ts +72 -0
- package/src/network/tailscale.ts +179 -0
- package/src/network/webdav.ts +385 -0
- package/src/objective-state-writers.ts +951 -0
- package/src/objective-state.ts +320 -0
- package/src/onboarding/index.ts +529 -0
- package/src/openai-chat-compat.ts +56 -0
- package/src/operator-toolkit.ts +2132 -0
- package/src/opik-exporter.test.ts +72 -0
- package/src/opik-exporter.ts +587 -0
- package/src/orchestrator-extraction-queue.test.ts +197 -0
- package/src/orchestrator-flush.test.ts +1171 -0
- package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
- package/src/orchestrator-source-attribution.test.ts +701 -0
- package/src/orchestrator.ts +16368 -0
- package/src/page-versioning.ts +450 -0
- package/src/patterns-cli.ts +574 -0
- package/src/peers/index.ts +54 -0
- package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
- package/src/peers/migrate-from-identity-anchor.ts +350 -0
- package/src/peers/peers.test.ts +419 -0
- package/src/peers/profile-reasoner.ts +694 -0
- package/src/peers/storage.ts +1350 -0
- package/src/peers/types.ts +138 -0
- package/src/plugin-id.ts +84 -0
- package/src/policy-runtime.ts +209 -0
- package/src/procedural/procedure-miner.ts +150 -0
- package/src/procedural/procedure-recall.ts +93 -0
- package/src/procedural/procedure-stats.ts +213 -0
- package/src/procedural/procedure-types.ts +132 -0
- package/src/procedural/reinforcement-core.test.ts +132 -0
- package/src/procedural/reinforcement-core.ts +73 -0
- package/src/profiling.test.ts +263 -0
- package/src/profiling.ts +435 -0
- package/src/projection/index.ts +398 -0
- package/src/qmd-recall-cache.test.ts +138 -0
- package/src/qmd-recall-cache.ts +111 -0
- package/src/qmd.test.ts +257 -0
- package/src/qmd.ts +2614 -0
- package/src/reasoning-trace-recall.ts +201 -0
- package/src/reasoning-trace-types.ts +235 -0
- package/src/recall-audit-anomaly.test.ts +246 -0
- package/src/recall-audit-anomaly.ts +297 -0
- package/src/recall-audit.test.ts +51 -0
- package/src/recall-audit.ts +72 -0
- package/src/recall-budget-config.test.ts +87 -0
- package/src/recall-disclosure-escalation.test.ts +196 -0
- package/src/recall-disclosure-escalation.ts +158 -0
- package/src/recall-disclosure-shaping.test.ts +146 -0
- package/src/recall-disclosure.test.ts +214 -0
- package/src/recall-explain-renderer.test.ts +140 -0
- package/src/recall-explain-renderer.ts +356 -0
- package/src/recall-mmr.test.ts +808 -0
- package/src/recall-mmr.ts +607 -0
- package/src/recall-qos.test.ts +85 -0
- package/src/recall-qos.ts +82 -0
- package/src/recall-query-policy.ts +221 -0
- package/src/recall-state.test.ts +233 -0
- package/src/recall-state.ts +456 -0
- package/src/recall-tag-filter.ts +143 -0
- package/src/recall-tokenization.ts +35 -0
- package/src/recall-xray-cli.test.ts +118 -0
- package/src/recall-xray-cli.ts +100 -0
- package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
- package/src/recall-xray-renderer.test.ts +539 -0
- package/src/recall-xray-renderer.ts +487 -0
- package/src/recall-xray.test.ts +503 -0
- package/src/recall-xray.ts +621 -0
- package/src/reconstruct.ts +41 -0
- package/src/release-changelog.ts +35 -0
- package/src/relevance.ts +67 -0
- package/src/replay/normalizers/chatgpt.ts +133 -0
- package/src/replay/normalizers/claude.ts +102 -0
- package/src/replay/normalizers/openclaw.ts +119 -0
- package/src/replay/normalizers/shared.ts +69 -0
- package/src/replay/runner.ts +197 -0
- package/src/replay/types.ts +143 -0
- package/src/rerank.test.ts +48 -0
- package/src/rerank.ts +176 -0
- package/src/resolve-auth-token.test.ts +226 -0
- package/src/resolve-auth-token.ts +151 -0
- package/src/resolve-provider-secret.test.ts +187 -0
- package/src/resolve-provider-secret.ts +410 -0
- package/src/response-guidance-recall.test.ts +3952 -0
- package/src/response-guidance-recall.ts +4431 -0
- package/src/resume-bundles.ts +415 -0
- package/src/retrieval-agents.ts +623 -0
- package/src/retrieval-tiers.ts +25 -0
- package/src/retrieval.ts +104 -0
- package/src/review/index.test.ts +201 -0
- package/src/review/index.ts +536 -0
- package/src/routing/engine.ts +162 -0
- package/src/routing/store.ts +321 -0
- package/src/runtime/better-sqlite.test.ts +32 -0
- package/src/runtime/better-sqlite.ts +76 -0
- package/src/runtime/child-process.ts +67 -0
- package/src/runtime/env.ts +48 -0
- package/src/sanitize.ts +58 -0
- package/src/schemas.ts +449 -0
- package/src/sdk-compat.ts +87 -0
- package/src/search/document-scanner.ts +96 -0
- package/src/search/embed-helper.ts +142 -0
- package/src/search/factory.ts +189 -0
- package/src/search/index.ts +10 -0
- package/src/search/lancedb-backend.ts +342 -0
- package/src/search/meilisearch-backend.ts +232 -0
- package/src/search/noop-backend.ts +57 -0
- package/src/search/orama-backend.ts +358 -0
- package/src/search/port.ts +86 -0
- package/src/search/remote-backend.ts +124 -0
- package/src/secure-store/cipher.ts +271 -0
- package/src/secure-store/cli-handlers.ts +355 -0
- package/src/secure-store/cli-renderer.ts +131 -0
- package/src/secure-store/header.ts +373 -0
- package/src/secure-store/index.ts +137 -0
- package/src/secure-store/kdf.ts +263 -0
- package/src/secure-store/keyring.ts +106 -0
- package/src/secure-store/metadata.ts +394 -0
- package/src/secure-store/passphrase-reader.ts +252 -0
- package/src/secure-store/secure-fs.ts +571 -0
- package/src/secure-store/secure-store.test.ts +755 -0
- package/src/semantic-chunking.ts +545 -0
- package/src/semantic-consolidation.test.ts +182 -0
- package/src/semantic-consolidation.ts +432 -0
- package/src/semantic-rule-promotion.ts +183 -0
- package/src/semantic-rule-verifier.ts +160 -0
- package/src/session-integrity.ts +569 -0
- package/src/session-observer-bands.ts +11 -0
- package/src/session-observer-state.ts +346 -0
- package/src/session-toggles.test.ts +96 -0
- package/src/session-toggles.ts +159 -0
- package/src/shared-context/manager.ts +810 -0
- package/src/signal.ts +84 -0
- package/src/skills-registry.test.ts +277 -0
- package/src/skills-registry.ts +120 -0
- package/src/source-attribution-roundtrip.test.ts +215 -0
- package/src/source-attribution.test.ts +1425 -0
- package/src/source-attribution.ts +639 -0
- package/src/spaces/index.ts +627 -0
- package/src/storage-paths.ts +117 -0
- package/src/storage.ts +6657 -0
- package/src/store-contract.ts +55 -0
- package/src/summarizer.ts +844 -0
- package/src/summary-snapshot.test.ts +681 -0
- package/src/summary-snapshot.ts +238 -0
- package/src/surfaces/dreams.test.ts +394 -0
- package/src/surfaces/dreams.ts +346 -0
- package/src/surfaces/heartbeat.test.ts +415 -0
- package/src/surfaces/heartbeat.ts +325 -0
- package/src/sync/index.ts +308 -0
- package/src/targeted-fact-recall.test.ts +1694 -0
- package/src/targeted-fact-recall.ts +2905 -0
- package/src/taxonomy/default-taxonomy.ts +87 -0
- package/src/taxonomy/index.ts +26 -0
- package/src/taxonomy/resolver-doc-generator.ts +57 -0
- package/src/taxonomy/resolver.ts +184 -0
- package/src/taxonomy/taxonomy-loader.ts +186 -0
- package/src/taxonomy/types.ts +48 -0
- package/src/telemetry-transcript.ts +70 -0
- package/src/temporal-index.ts +890 -0
- package/src/temporal-supersession.test.ts +2703 -0
- package/src/temporal-supersession.ts +493 -0
- package/src/temporal-validity.test.ts +448 -0
- package/src/temporal-validity.ts +123 -0
- package/src/threading.ts +395 -0
- package/src/tier-migration.ts +124 -0
- package/src/tier-routing.ts +102 -0
- package/src/tmt.ts +462 -0
- package/src/tokens.test.ts +178 -0
- package/src/tokens.ts +279 -0
- package/src/topics.ts +147 -0
- package/src/training-export/cli-date-validation.test.ts +258 -0
- package/src/training-export/converter.test.ts +452 -0
- package/src/training-export/converter.ts +319 -0
- package/src/training-export/date-parse.ts +117 -0
- package/src/training-export/index.ts +26 -0
- package/src/training-export/registry.test.ts +85 -0
- package/src/training-export/registry.ts +57 -0
- package/src/training-export/types.ts +31 -0
- package/src/transcript.ts +1179 -0
- package/src/transfer/autodetect.ts +30 -0
- package/src/transfer/backup.ts +138 -0
- package/src/transfer/capsule-crypto.ts +485 -0
- package/src/transfer/capsule-encrypt.test.ts +690 -0
- package/src/transfer/capsule-export.ts +543 -0
- package/src/transfer/capsule-fork.ts +375 -0
- package/src/transfer/capsule-import.ts +564 -0
- package/src/transfer/capsule-merge.ts +433 -0
- package/src/transfer/conflict-policy.ts +16 -0
- package/src/transfer/constants.ts +13 -0
- package/src/transfer/exclusions.ts +37 -0
- package/src/transfer/export-json.ts +65 -0
- package/src/transfer/export-md.ts +59 -0
- package/src/transfer/export-sqlite.ts +52 -0
- package/src/transfer/fs-utils.ts +269 -0
- package/src/transfer/import-json.ts +108 -0
- package/src/transfer/import-md.ts +84 -0
- package/src/transfer/import-sqlite.ts +100 -0
- package/src/transfer/integrity.ts +71 -0
- package/src/transfer/sqlite-schema.ts +16 -0
- package/src/transfer/types.ts +297 -0
- package/src/trust-zones.ts +1186 -0
- package/src/types.ts +3074 -0
- package/src/user-model.test.ts +124 -0
- package/src/user-model.ts +162 -0
- package/src/utility-learner.ts +353 -0
- package/src/utility-runtime.ts +88 -0
- package/src/utility-telemetry.ts +215 -0
- package/src/utils/category-dir.ts +44 -0
- package/src/utils/errno.ts +6 -0
- package/src/utils/iso-timestamp.test.ts +37 -0
- package/src/utils/iso-timestamp.ts +164 -0
- package/src/utils/path.ts +26 -0
- package/src/verified-recall.ts +138 -0
- package/src/version-utils.test.ts +10 -0
- package/src/version-utils.ts +9 -0
- package/src/whitespace.ts +10 -0
- package/src/work/board.ts +359 -0
- package/src/work/boundary.ts +107 -0
- package/src/work/storage.ts +436 -0
- package/src/work/types.ts +82 -0
- package/src/work-product-ledger.ts +265 -0
- package/dist/access-service-DDjzFALq.d.ts +0 -2088
- package/dist/capsule-crypto-SJS5VVAP.js +0 -18
- package/dist/capsule-export-7QNCBZOQ.js +0 -17
- package/dist/capsule-import-EPBHD2EN.js +0 -16
- package/dist/capsule-merge-DI7PNQ2H.js +0 -189
- package/dist/chunk-23ZZK64Y.js +0 -26
- package/dist/chunk-23ZZK64Y.js.map +0 -1
- package/dist/chunk-242S3I2A.js +0 -647
- package/dist/chunk-2LGMW3DJ.js +0 -111
- package/dist/chunk-3B6KIRBH.js +0 -5213
- package/dist/chunk-3B6KIRBH.js.map +0 -1
- package/dist/chunk-457A4P3L.js +0 -119
- package/dist/chunk-457A4P3L.js.map +0 -1
- package/dist/chunk-4IS4SXIQ.js +0 -2040
- package/dist/chunk-4YM32CRU.js +0 -721
- package/dist/chunk-6TBWYBJ3.js +0 -236
- package/dist/chunk-74EMIVE4.js +0 -329
- package/dist/chunk-74EMIVE4.js.map +0 -1
- package/dist/chunk-767ODGE6.js +0 -183
- package/dist/chunk-7V22HTMD.js +0 -623
- package/dist/chunk-7V22HTMD.js.map +0 -1
- package/dist/chunk-7ZM3BFKK.js +0 -9705
- package/dist/chunk-7ZM3BFKK.js.map +0 -1
- package/dist/chunk-AQJNPMOA.js +0 -643
- package/dist/chunk-AQJNPMOA.js.map +0 -1
- package/dist/chunk-ASAITVLA.js +0 -64
- package/dist/chunk-ASAITVLA.js.map +0 -1
- package/dist/chunk-BBE34QBJ.js +0 -275
- package/dist/chunk-BBE34QBJ.js.map +0 -1
- package/dist/chunk-BZSQEPRW.js +0 -14710
- package/dist/chunk-BZSQEPRW.js.map +0 -1
- package/dist/chunk-CPKTBRS2.js +0 -891
- package/dist/chunk-CPKTBRS2.js.map +0 -1
- package/dist/chunk-D4GAOFF6.js +0 -562
- package/dist/chunk-D4GAOFF6.js.map +0 -1
- package/dist/chunk-D54LZC5L.js +0 -147
- package/dist/chunk-DF3RVK3X.js +0 -119
- package/dist/chunk-DF3RVK3X.js.map +0 -1
- package/dist/chunk-DZZPC36E.js +0 -1451
- package/dist/chunk-DZZPC36E.js.map +0 -1
- package/dist/chunk-E2UCDP5S.js +0 -570
- package/dist/chunk-E6K4NIEU.js +0 -747
- package/dist/chunk-E6K4NIEU.js.map +0 -1
- package/dist/chunk-EEQLFRUM.js +0 -89
- package/dist/chunk-ETOW6ACV.js +0 -158
- package/dist/chunk-ETOW6ACV.js.map +0 -1
- package/dist/chunk-FMEBPEAO.js +0 -347
- package/dist/chunk-FMEBPEAO.js.map +0 -1
- package/dist/chunk-FQDPCE3I.js +0 -1837
- package/dist/chunk-FQDPCE3I.js.map +0 -1
- package/dist/chunk-FYIYMQ5N.js +0 -221
- package/dist/chunk-FYIYMQ5N.js.map +0 -1
- package/dist/chunk-G2WADRQ3.js +0 -219
- package/dist/chunk-G4SK7DSQ.js +0 -121
- package/dist/chunk-GVPWB7EY.js +0 -390
- package/dist/chunk-GVPWB7EY.js.map +0 -1
- package/dist/chunk-HELQZFZO.js +0 -1075
- package/dist/chunk-HL5LRPNA.js +0 -1914
- package/dist/chunk-HL5LRPNA.js.map +0 -1
- package/dist/chunk-HQZVVSVB.js +0 -147
- package/dist/chunk-HQZVVSVB.js.map +0 -1
- package/dist/chunk-HY3L4WKC.js +0 -2195
- package/dist/chunk-HY3L4WKC.js.map +0 -1
- package/dist/chunk-IB3BFHGN.js +0 -228
- package/dist/chunk-IXEJRKCZ.js +0 -18
- package/dist/chunk-JBMSGZEQ.js +0 -441
- package/dist/chunk-JBMSGZEQ.js.map +0 -1
- package/dist/chunk-JESOB2HO.js +0 -108
- package/dist/chunk-JKDVIE52.js +0 -272
- package/dist/chunk-JRNQ3RNA.js +0 -284
- package/dist/chunk-JRNQ3RNA.js.map +0 -1
- package/dist/chunk-K6WK37A6.js +0 -865
- package/dist/chunk-K6WK37A6.js.map +0 -1
- package/dist/chunk-MARWOCVP.js +0 -48
- package/dist/chunk-MNU6ZBWT.js +0 -4454
- package/dist/chunk-MNU6ZBWT.js.map +0 -1
- package/dist/chunk-N5AKDXAI.js +0 -74
- package/dist/chunk-OA3L7BFR.js +0 -183
- package/dist/chunk-OA3L7BFR.js.map +0 -1
- package/dist/chunk-OR64ZGRZ.js +0 -23
- package/dist/chunk-P77UEOU2.js +0 -1521
- package/dist/chunk-P77UEOU2.js.map +0 -1
- package/dist/chunk-PH4C2U43.js +0 -239
- package/dist/chunk-PH4C2U43.js.map +0 -1
- package/dist/chunk-RVPLBATS.js +0 -1586
- package/dist/chunk-RVPLBATS.js.map +0 -1
- package/dist/chunk-U5JMRGKX.js +0 -340
- package/dist/chunk-U5JMRGKX.js.map +0 -1
- package/dist/chunk-URB2WSKZ.js +0 -350
- package/dist/chunk-URB2WSKZ.js.map +0 -1
- package/dist/chunk-UVMUAWVT.js +0 -596
- package/dist/chunk-WEJG4TB5.js +0 -118
- package/dist/chunk-X7HPGUVG.js +0 -271
- package/dist/chunk-XAMBKFQS.js +0 -2777
- package/dist/chunk-XAMBKFQS.js.map +0 -1
- package/dist/chunk-XJKFSSDW.js +0 -726
- package/dist/chunk-XJKFSSDW.js.map +0 -1
- package/dist/chunk-XMHBH5H6.js +0 -283
- package/dist/chunk-XMHBH5H6.js.map +0 -1
- package/dist/chunk-XMVFHBHT.js +0 -277
- package/dist/chunk-Y3VMVTYX.js +0 -53
- package/dist/chunk-YNB73F22.js +0 -137
- package/dist/chunk-YNB73F22.js.map +0 -1
- package/dist/chunk-Z2E7VW55.js +0 -335
- package/dist/chunk-Z2E7VW55.js.map +0 -1
- package/dist/chunk-ZG7PTKBK.js +0 -2296
- package/dist/chunk-ZNQN6ZTA.js +0 -135
- package/dist/chunk-ZVTKDVVM.js +0 -827
- package/dist/chunk-ZVTKDVVM.js.map +0 -1
- package/dist/cli-BR8KpIU0.d.ts +0 -1259
- package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
- package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
- package/dist/contradiction-review-5LTTVDQV.js +0 -22
- package/dist/contradiction-scan-QTXAMBUA.js +0 -414
- package/dist/contradiction-scan-QTXAMBUA.js.map +0 -1
- package/dist/engine-35M5BKQ7.js +0 -28
- package/dist/fs-utils-IRVUFB6G.js +0 -30
- package/dist/graph-edge-decay-PWB63GRE.js +0 -207
- package/dist/memory-governance-IMPQZXFC.js +0 -37
- package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
- package/dist/orchestrator-DDMPqU6R.d.ts +0 -1792
- package/dist/path-RMTY5Y5A.js +0 -9
- package/dist/port-B6VEDIkC.d.ts +0 -53
- package/dist/resolution-YGIBORXI.js +0 -101
- package/dist/resolution-YGIBORXI.js.map +0 -1
- package/dist/secure-store-4R2GSO7S.js +0 -156
- package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
- package/dist/state-store-3EH7HYIN.js +0 -16
- package/dist/types-V3FJ26TF.js +0 -30
- /package/dist/{capsule-crypto-SJS5VVAP.js.map → adapters/claude-code.js.map} +0 -0
- /package/dist/{capsule-export-7QNCBZOQ.js.map → adapters/codex.js.map} +0 -0
- /package/dist/{capsule-import-EPBHD2EN.js.map → adapters/hermes.js.map} +0 -0
- /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/index.js.map} +0 -0
- /package/dist/{engine-35M5BKQ7.js.map → adapters/registry.js.map} +0 -0
- /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/replit.js.map} +0 -0
- /package/dist/{memory-governance-IMPQZXFC.js.map → adapters/types.js.map} +0 -0
- /package/dist/{path-RMTY5Y5A.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
- /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
- /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
- /package/dist/{chunk-X7HPGUVG.js.map → chunk-4CRG46BG.js.map} +0 -0
- /package/dist/{chunk-UVMUAWVT.js.map → chunk-7IASACLB.js.map} +0 -0
- /package/dist/{chunk-HELQZFZO.js.map → chunk-EDTHC6UD.js.map} +0 -0
- /package/dist/{chunk-4YM32CRU.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
- /package/dist/{chunk-E2UCDP5S.js.map → chunk-FBYESMQ2.js.map} +0 -0
- /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
- /package/dist/{chunk-IB3BFHGN.js.map → chunk-GGKRUQOO.js.map} +0 -0
- /package/dist/{chunk-242S3I2A.js.map → chunk-GL6I6MEQ.js.map} +0 -0
- /package/dist/{secure-store-4R2GSO7S.js.map → chunk-HHLLAQGZ.js.map} +0 -0
- /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
- /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
- /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
- /package/dist/{chunk-WEJG4TB5.js.map → chunk-MC26UJIM.js.map} +0 -0
- /package/dist/{chunk-JKDVIE52.js.map → chunk-MGKYQQYF.js.map} +0 -0
- /package/dist/{chunk-Y3VMVTYX.js.map → chunk-MT4HVDUZ.js.map} +0 -0
- /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
- /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
- /package/dist/{chunk-JESOB2HO.js.map → chunk-P4NEIHUT.js.map} +0 -0
- /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
- /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
- /package/dist/{state-store-3EH7HYIN.js.map → chunk-SEDEKFYQ.js.map} +0 -0
- /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
- /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
- /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
- /package/dist/{types-V3FJ26TF.js.map → chunk-V5OCT34X.js.map} +0 -0
- /package/dist/{chunk-ZG7PTKBK.js.map → chunk-W3LR522O.js.map} +0 -0
- /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
- /package/dist/{chunk-ZNQN6ZTA.js.map → chunk-XVZ7B3HG.js.map} +0 -0
- /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Operator console TUI for issue #688 (PR 2/3).
|
|
3
|
+
*
|
|
4
|
+
* Renders a five-panel one-screen layout that periodically polls
|
|
5
|
+
* `gatherConsoleState` and repaints the terminal. Deliberately uses
|
|
6
|
+
* the minimal-deps "clear + repaint" approach (no curses / blessed /
|
|
7
|
+
* ink) — we just emit ANSI control sequences directly to the output
|
|
8
|
+
* stream. This keeps the surface portable and dependency-free.
|
|
9
|
+
*
|
|
10
|
+
* PR 1/3 (#721) shipped `gatherConsoleState` plus the CLI's
|
|
11
|
+
* `--state-only` flag (one-shot JSON snapshot). PR 2/3 wires the
|
|
12
|
+
* interactive surface. Trace replay (`--trace <session-id>`) is
|
|
13
|
+
* deferred to PR 3/3.
|
|
14
|
+
*
|
|
15
|
+
* Design contract:
|
|
16
|
+
* - Read-only: never mutates orchestrator state.
|
|
17
|
+
* - Resilient: a thrown error in one refresh cycle must NOT crash
|
|
18
|
+
* the loop. Errors are surfaced inside the rendered frame.
|
|
19
|
+
* - Cleanly stoppable: `runConsoleTui` returns a `stop()` that
|
|
20
|
+
* clears the interval, restores the cursor, and resolves the
|
|
21
|
+
* pending exit promise. SIGINT triggers the same cleanup.
|
|
22
|
+
* - No external deps: only ANSI control sequences.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import type { Writable } from "node:stream";
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
gatherConsoleState,
|
|
29
|
+
type ConsoleStateOrchestratorLike,
|
|
30
|
+
type ConsoleStateSnapshot,
|
|
31
|
+
} from "./state.js";
|
|
32
|
+
|
|
33
|
+
/** ANSI: clear screen + move cursor to home (top-left). */
|
|
34
|
+
const ANSI_CLEAR_HOME = "\x1b[2J\x1b[H";
|
|
35
|
+
/** ANSI: hide / show the cursor (we hide during the loop, restore on exit). */
|
|
36
|
+
const ANSI_HIDE_CURSOR = "\x1b[?25l";
|
|
37
|
+
const ANSI_SHOW_CURSOR = "\x1b[?25h";
|
|
38
|
+
|
|
39
|
+
/** Total inner width of the rendered frame (between the box borders). */
|
|
40
|
+
const FRAME_INNER_WIDTH = 70;
|
|
41
|
+
|
|
42
|
+
/** Default refresh interval in milliseconds. Chosen to match the spec. */
|
|
43
|
+
const DEFAULT_REFRESH_INTERVAL_MS = 2000;
|
|
44
|
+
|
|
45
|
+
export interface RunConsoleTuiOptions {
|
|
46
|
+
/** Polling interval in milliseconds. Defaults to 2000ms. */
|
|
47
|
+
refreshIntervalMs?: number;
|
|
48
|
+
/** Output stream. Defaults to `process.stdout`. */
|
|
49
|
+
output?: Writable;
|
|
50
|
+
/**
|
|
51
|
+
* Optional clock injection — primarily for tests so the rendered
|
|
52
|
+
* timestamp is deterministic. Defaults to `Date.now`.
|
|
53
|
+
*/
|
|
54
|
+
now?: () => number;
|
|
55
|
+
/**
|
|
56
|
+
* If true, install a SIGINT handler that calls `stop()` and resolves
|
|
57
|
+
* the returned promise. Defaults to true. Tests typically pass false.
|
|
58
|
+
*/
|
|
59
|
+
installSigintHandler?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Optional trace recorder. When provided, every successfully
|
|
62
|
+
* gathered snapshot is appended to the recorder for later replay
|
|
63
|
+
* via `replayTrace`. Failed appends are surfaced through the
|
|
64
|
+
* recorder's `getLastError()` and never crash the loop (issue
|
|
65
|
+
* #688 PR 3/3).
|
|
66
|
+
*/
|
|
67
|
+
traceRecorder?: {
|
|
68
|
+
append: (snapshot: ConsoleStateSnapshot) => Promise<void>;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface RunConsoleTuiHandle {
|
|
73
|
+
/**
|
|
74
|
+
* Stop the refresh loop and restore the cursor. Returns immediately;
|
|
75
|
+
* callers should `await handle.done` to wait for any in-flight tick
|
|
76
|
+
* (and its trace append) to finish. Codex P2 (#732 round 4): without
|
|
77
|
+
* the in-flight await on the `done` path, a Ctrl-C that fires while
|
|
78
|
+
* a tick is past its `stopped` check could still call
|
|
79
|
+
* `traceRecorder.append` AFTER the CLI begins closing the recorder.
|
|
80
|
+
*/
|
|
81
|
+
stop: () => void;
|
|
82
|
+
/**
|
|
83
|
+
* Resolves once `stop()` has been invoked, the interval is cleared,
|
|
84
|
+
* AND any in-flight tick (including its fire-and-forget trace
|
|
85
|
+
* append) has resolved. Callers that close a trace recorder after
|
|
86
|
+
* the TUI exits MUST await this promise before initiating close,
|
|
87
|
+
* otherwise the close path can race a still-running `append` call
|
|
88
|
+
* and surface phantom "post-close" appends to the recorder. Codex
|
|
89
|
+
* P2 (#732 round 4).
|
|
90
|
+
*/
|
|
91
|
+
done: Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Number of trace frames that were dropped due to backpressure (i.e.
|
|
94
|
+
* the previous `traceRecorder.append()` had not yet resolved when
|
|
95
|
+
* the tick fired). Non-zero values indicate the trace recorder is
|
|
96
|
+
* falling behind — typically caused by a slow or network-backed
|
|
97
|
+
* filesystem. Codex P2 (PR #732 round 5): exposed so operators can
|
|
98
|
+
* detect recording lag via `--state-only` snapshots or future
|
|
99
|
+
* diagnostic surfaces.
|
|
100
|
+
*/
|
|
101
|
+
getDroppedTraceFrames: () => number;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Start the operator console TUI. Returns immediately with a handle
|
|
106
|
+
* exposing `stop()` and a `done` promise that resolves once the loop
|
|
107
|
+
* has been torn down. The caller can `await handle.done` to block
|
|
108
|
+
* until the user (or a SIGINT) exits.
|
|
109
|
+
*/
|
|
110
|
+
export function runConsoleTui(
|
|
111
|
+
orchestrator: ConsoleStateOrchestratorLike,
|
|
112
|
+
options: RunConsoleTuiOptions = {},
|
|
113
|
+
): RunConsoleTuiHandle {
|
|
114
|
+
const refreshIntervalMs = Math.max(
|
|
115
|
+
50,
|
|
116
|
+
options.refreshIntervalMs ?? DEFAULT_REFRESH_INTERVAL_MS,
|
|
117
|
+
);
|
|
118
|
+
const output: Writable = options.output ?? process.stdout;
|
|
119
|
+
const now = options.now ?? (() => Date.now());
|
|
120
|
+
const installSigintHandler = options.installSigintHandler ?? true;
|
|
121
|
+
|
|
122
|
+
let stopped = false;
|
|
123
|
+
let inFlight = false;
|
|
124
|
+
// Codex P2 (PR #732 round 4): track the in-flight tick promise so
|
|
125
|
+
// `stop()` can await it before resolving `done`. Without this, a
|
|
126
|
+
// Ctrl-C that fires while a tick is past its `if (stopped) return`
|
|
127
|
+
// check can still execute `traceRecorder.append(snapshot)` AFTER
|
|
128
|
+
// `done` resolves and the CLI shutdown path begins closing the
|
|
129
|
+
// recorder. By awaiting the tick body, we ensure
|
|
130
|
+
// `recorder.append()` has at least been called (synchronously
|
|
131
|
+
// enqueueing the line onto the recorder's internal writeChain)
|
|
132
|
+
// before `done` resolves; the recorder's `close()` then drains
|
|
133
|
+
// that writeChain. Without the await, `close()` can begin draining
|
|
134
|
+
// while the tick is still about to call `append()`, producing a
|
|
135
|
+
// post-close append.
|
|
136
|
+
//
|
|
137
|
+
// We deliberately do NOT also await the resulting fire-and-forget
|
|
138
|
+
// trace promise. The append is fire-and-forget on purpose
|
|
139
|
+
// (backpressure: see comment further below); a wedged disk that
|
|
140
|
+
// stalls the append must not also stall shutdown. The recorder's
|
|
141
|
+
// own `close()` path (combined with `flushWithTimeout` in the CLI)
|
|
142
|
+
// is the right place to bound the disk-drain wait.
|
|
143
|
+
let inFlightTickPromise: Promise<void> | null = null;
|
|
144
|
+
// Codex P2 (PR #732): backpressure for trace recording. If the
|
|
145
|
+
// previous fire-and-forget `append()` has not resolved yet, we drop
|
|
146
|
+
// the current frame instead of enqueuing it onto the recorder's
|
|
147
|
+
// internal writeChain. Without this guard, a wedged filesystem
|
|
148
|
+
// would let memory grow unboundedly — every tick adds a JSON line
|
|
149
|
+
// to a serialized chain that never drains. Dropping is preferable
|
|
150
|
+
// to OOM; the operator can inspect `getLastError()` to learn that
|
|
151
|
+
// tracing fell behind.
|
|
152
|
+
let traceWritePending = false;
|
|
153
|
+
let traceFramesDropped = 0;
|
|
154
|
+
let resolveDone!: () => void;
|
|
155
|
+
const done = new Promise<void>((resolve) => {
|
|
156
|
+
resolveDone = resolve;
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Hide the cursor while the loop runs so the repaint doesn't flicker.
|
|
160
|
+
safeWrite(output, ANSI_HIDE_CURSOR);
|
|
161
|
+
|
|
162
|
+
const tick = async () => {
|
|
163
|
+
if (stopped || inFlight) return;
|
|
164
|
+
inFlight = true;
|
|
165
|
+
// Cursor Low: wrap the entire body in try/finally so a thrown
|
|
166
|
+
// `renderFrame` (or any other unexpected sync failure after the
|
|
167
|
+
// gatherConsoleState try/catch) still releases the `inFlight`
|
|
168
|
+
// latch. Without this guard, a single render-time exception
|
|
169
|
+
// permanently freezes the loop because every subsequent tick
|
|
170
|
+
// hits `if (inFlight) return`. Honors the file's design contract
|
|
171
|
+
// ("a thrown error in one refresh cycle must NOT crash the loop").
|
|
172
|
+
try {
|
|
173
|
+
let snapshot: ConsoleStateSnapshot | null = null;
|
|
174
|
+
let renderError: string | null = null;
|
|
175
|
+
try {
|
|
176
|
+
snapshot = await gatherConsoleState(orchestrator);
|
|
177
|
+
} catch (err) {
|
|
178
|
+
renderError = describeError(err);
|
|
179
|
+
}
|
|
180
|
+
if (stopped) return;
|
|
181
|
+
let frame: string;
|
|
182
|
+
try {
|
|
183
|
+
frame = renderFrame({ snapshot, renderError, now });
|
|
184
|
+
} catch (err) {
|
|
185
|
+
// If the renderer itself throws (e.g. an invalid clock
|
|
186
|
+
// injection produced `NaN`), fall back to a minimal error
|
|
187
|
+
// frame instead of letting the exception escape and reject
|
|
188
|
+
// the void-floated promise (which would also be unhandled).
|
|
189
|
+
frame = `remnic console: render failed: ${describeError(err)}\n`;
|
|
190
|
+
}
|
|
191
|
+
safeWrite(output, ANSI_CLEAR_HOME);
|
|
192
|
+
safeWrite(output, frame);
|
|
193
|
+
// Codex P2: do NOT await trace writes inside the render tick.
|
|
194
|
+
// Awaiting holds `inFlight = true` for the duration of the disk
|
|
195
|
+
// write; on a slow / network-backed filesystem that stretches
|
|
196
|
+
// the visual refresh interval and skips ticks. Fire-and-forget
|
|
197
|
+
// preserves the paint cadence; errors are captured via
|
|
198
|
+
// `getLastError()`.
|
|
199
|
+
//
|
|
200
|
+
// Codex P2 (PR #732 follow-up): apply backpressure. If the
|
|
201
|
+
// previous append is still pending (writeChain not yet
|
|
202
|
+
// drained), drop this frame instead of queuing another line.
|
|
203
|
+
// Without this gate, a wedged FS lets the chain grow
|
|
204
|
+
// unboundedly — one JSON line per tick — until the process
|
|
205
|
+
// OOMs. Dropping is preferable; the operator can inspect
|
|
206
|
+
// `getLastError()` to see tracing fell behind.
|
|
207
|
+
if (snapshot && options.traceRecorder && !traceWritePending) {
|
|
208
|
+
traceWritePending = true;
|
|
209
|
+
void options.traceRecorder
|
|
210
|
+
.append(snapshot)
|
|
211
|
+
.catch(() => {
|
|
212
|
+
// already recorded in lastError; defense-in-depth.
|
|
213
|
+
})
|
|
214
|
+
.finally(() => {
|
|
215
|
+
traceWritePending = false;
|
|
216
|
+
});
|
|
217
|
+
} else if (snapshot && options.traceRecorder) {
|
|
218
|
+
traceFramesDropped += 1;
|
|
219
|
+
}
|
|
220
|
+
} finally {
|
|
221
|
+
inFlight = false;
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
// Kick off an immediate first paint, then schedule the interval.
|
|
226
|
+
// Codex P1: do NOT call `handle.unref()`. The CLI path keeps the
|
|
227
|
+
// process alive by `await`-ing `handle.done`, but a pending promise
|
|
228
|
+
// alone is not enough to keep Node.js running — the interval timer
|
|
229
|
+
// is the only ref'd handle that holds the event loop open between
|
|
230
|
+
// ticks. Unref'ing it caused `remnic console` to render once and
|
|
231
|
+
// exit immediately. Tests that don't want the process held open
|
|
232
|
+
// can call `handle.stop()` directly when they're done.
|
|
233
|
+
// Codex P2 (PR #732 round 4): wrap each tick launch so we hold a
|
|
234
|
+
// reference to the in-flight tick promise. `stop()` awaits this
|
|
235
|
+
// promise before resolving `done`, ensuring no late
|
|
236
|
+
// `traceRecorder.append` call races the CLI shutdown path that
|
|
237
|
+
// closes the recorder once `done` resolves.
|
|
238
|
+
const launchTick = (): void => {
|
|
239
|
+
const p = runTickSafely(tick);
|
|
240
|
+
inFlightTickPromise = p;
|
|
241
|
+
void p.then(() => {
|
|
242
|
+
if (inFlightTickPromise === p) {
|
|
243
|
+
inFlightTickPromise = null;
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
};
|
|
247
|
+
launchTick();
|
|
248
|
+
const handle = setInterval(launchTick, refreshIntervalMs);
|
|
249
|
+
|
|
250
|
+
const sigintHandler = () => {
|
|
251
|
+
stop();
|
|
252
|
+
};
|
|
253
|
+
if (installSigintHandler) {
|
|
254
|
+
process.on("SIGINT", sigintHandler);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
const stop = () => {
|
|
258
|
+
if (stopped) return;
|
|
259
|
+
stopped = true;
|
|
260
|
+
clearInterval(handle);
|
|
261
|
+
if (installSigintHandler) {
|
|
262
|
+
try {
|
|
263
|
+
process.removeListener("SIGINT", sigintHandler);
|
|
264
|
+
} catch {
|
|
265
|
+
// ignore
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
safeWrite(output, ANSI_SHOW_CURSOR);
|
|
269
|
+
// Codex P2 (PR #732 round 4): wait for any in-flight tick before
|
|
270
|
+
// resolving `done`. Without this, a Ctrl-C that fires while a
|
|
271
|
+
// tick is past its `if (stopped) return` check can still execute
|
|
272
|
+
// `traceRecorder.append(snapshot)` AFTER `done` resolves and the
|
|
273
|
+
// CLI shutdown path begins closing the recorder, producing a
|
|
274
|
+
// phantom post-close append. By awaiting the tick body, we
|
|
275
|
+
// ensure `recorder.append()` has at least been *called*
|
|
276
|
+
// (synchronously enqueueing the line onto the recorder's
|
|
277
|
+
// writeChain) before `done` resolves; the recorder's `close()`
|
|
278
|
+
// then drains that writeChain.
|
|
279
|
+
//
|
|
280
|
+
// We do NOT also await the fire-and-forget trace append promise
|
|
281
|
+
// itself. A wedged disk that stalls the append must not also
|
|
282
|
+
// stall shutdown — the recorder's `close()` path (bounded by
|
|
283
|
+
// `flushWithTimeout` in the CLI) is the right place to bound
|
|
284
|
+
// the disk-drain wait.
|
|
285
|
+
void (async () => {
|
|
286
|
+
try {
|
|
287
|
+
const pendingTick = inFlightTickPromise;
|
|
288
|
+
if (pendingTick) {
|
|
289
|
+
await pendingTick;
|
|
290
|
+
}
|
|
291
|
+
} finally {
|
|
292
|
+
resolveDone();
|
|
293
|
+
}
|
|
294
|
+
})();
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
return {
|
|
298
|
+
stop,
|
|
299
|
+
done,
|
|
300
|
+
getDroppedTraceFrames: () => traceFramesDropped,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
interface RenderFrameInput {
|
|
305
|
+
snapshot: ConsoleStateSnapshot | null;
|
|
306
|
+
renderError: string | null;
|
|
307
|
+
now: () => number;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Build the full rendered frame as a single string. Pure — exposed
|
|
312
|
+
* for testing.
|
|
313
|
+
*/
|
|
314
|
+
export function renderFrame(input: RenderFrameInput): string {
|
|
315
|
+
const ts = new Date(input.now()).toISOString();
|
|
316
|
+
const lines: string[] = [];
|
|
317
|
+
lines.push(renderHeader(ts));
|
|
318
|
+
for (const panel of renderPanels(input)) {
|
|
319
|
+
lines.push(panel);
|
|
320
|
+
}
|
|
321
|
+
lines.push(renderFooter());
|
|
322
|
+
return lines.join("\n") + "\n";
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function renderHeader(ts: string): string {
|
|
326
|
+
// ╔═ remnic console ════════════════════════════════ <ts> ═╗
|
|
327
|
+
const title = " remnic console ";
|
|
328
|
+
const trailing = ` ${ts} `;
|
|
329
|
+
// 2 corner chars + title + ts + filler. Filler at minimum 1 char.
|
|
330
|
+
const fillerLen = Math.max(
|
|
331
|
+
1,
|
|
332
|
+
FRAME_INNER_WIDTH - title.length - trailing.length,
|
|
333
|
+
);
|
|
334
|
+
const filler = "═".repeat(fillerLen);
|
|
335
|
+
return `╔${title}${filler}${trailing}╗`;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
function renderFooter(): string {
|
|
339
|
+
return `╚${"═".repeat(FRAME_INNER_WIDTH)}╝`;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
function renderPanels(input: RenderFrameInput): string[] {
|
|
343
|
+
const lines: string[] = [];
|
|
344
|
+
const snap = input.snapshot;
|
|
345
|
+
|
|
346
|
+
if (input.renderError !== null) {
|
|
347
|
+
lines.push(panelLine("Error", `refresh failed: ${input.renderError}`));
|
|
348
|
+
// Even on error we still print the section headers so the layout
|
|
349
|
+
// stays stable for the operator and tests can locate them.
|
|
350
|
+
lines.push(panelLine("Buffer", "(unavailable)"));
|
|
351
|
+
lines.push(panelLine("Extraction", "(unavailable)"));
|
|
352
|
+
lines.push(panelLine("Dedup", "(unavailable)"));
|
|
353
|
+
lines.push(panelLine("Maintenance", "(unavailable)"));
|
|
354
|
+
lines.push(panelLine("QMD", "(unavailable)"));
|
|
355
|
+
return lines;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Buffer panel.
|
|
359
|
+
if (snap) {
|
|
360
|
+
lines.push(
|
|
361
|
+
panelLine(
|
|
362
|
+
"Buffer",
|
|
363
|
+
`turns=${snap.bufferState.turnsCount} bytes=${snap.bufferState.byteCount}`,
|
|
364
|
+
),
|
|
365
|
+
);
|
|
366
|
+
|
|
367
|
+
// Extraction panel.
|
|
368
|
+
const verdicts = snap.extractionQueue.recentVerdicts;
|
|
369
|
+
const accepts = verdicts.filter((v) => v.kind === "accept").length;
|
|
370
|
+
const rejects = verdicts.filter((v) => v.kind === "reject").length;
|
|
371
|
+
lines.push(
|
|
372
|
+
panelLine(
|
|
373
|
+
"Extraction",
|
|
374
|
+
`queue=${snap.extractionQueue.depth} recent verdicts: accept(${accepts})/reject(${rejects})`,
|
|
375
|
+
),
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
// Dedup panel.
|
|
379
|
+
const dedupSummary = formatDedupSummary(snap.dedupRecent, input.now);
|
|
380
|
+
lines.push(panelLine("Dedup", dedupSummary));
|
|
381
|
+
|
|
382
|
+
// Maintenance panel.
|
|
383
|
+
const maintSummary = formatMaintenanceTail(snap.maintenanceLedgerTail);
|
|
384
|
+
lines.push(panelLine("Maintenance", maintSummary));
|
|
385
|
+
|
|
386
|
+
// QMD panel.
|
|
387
|
+
lines.push(panelLine("QMD", formatQmdSummary(snap)));
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
// Surface aggregator-level read errors (e.g. ledger I/O failures)
|
|
391
|
+
// without crashing the loop. These are not fatal — the snapshot is
|
|
392
|
+
// still partially usable.
|
|
393
|
+
if (snap && snap.errors.length > 0) {
|
|
394
|
+
const head = snap.errors[0];
|
|
395
|
+
lines.push(panelLine("Errors", head ?? ""));
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
return lines;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
function formatDedupSummary(
|
|
402
|
+
decisions: ConsoleStateSnapshot["dedupRecent"],
|
|
403
|
+
now: () => number,
|
|
404
|
+
): string {
|
|
405
|
+
if (decisions.length === 0) return "no recent decisions";
|
|
406
|
+
const last = decisions[decisions.length - 1];
|
|
407
|
+
if (!last) return "no recent decisions";
|
|
408
|
+
const ageMs = ageMsFromIso(last.ts, now);
|
|
409
|
+
const ageStr = ageMs === null ? "T-?" : `T-${Math.round(ageMs / 1000)}s`;
|
|
410
|
+
const fp = last.fingerprint ? `hash=${last.fingerprint}` : "hash=?";
|
|
411
|
+
return `recent: ${fp} decision=${last.decision} (${ageStr})`;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
function formatMaintenanceTail(
|
|
415
|
+
events: ConsoleStateSnapshot["maintenanceLedgerTail"],
|
|
416
|
+
): string {
|
|
417
|
+
if (events.length === 0) return "no events";
|
|
418
|
+
const last = events[events.length - 1];
|
|
419
|
+
if (!last) return "no events";
|
|
420
|
+
// Show count + most-recent event line.
|
|
421
|
+
return `n=${events.length} last: ${last.category} ${truncate(last.summary, 40)}`;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
function formatQmdSummary(snap: ConsoleStateSnapshot): string {
|
|
425
|
+
const probe = snap.qmdProbe.available ? "ok" : "down";
|
|
426
|
+
const uptimeH = snap.daemon.uptimeMs / 3_600_000;
|
|
427
|
+
const uptimeStr = uptimeH < 1
|
|
428
|
+
? `${Math.round(snap.daemon.uptimeMs / 1000)}s`
|
|
429
|
+
: `${uptimeH.toFixed(1)}h`;
|
|
430
|
+
const mode = snap.qmdProbe.daemonMode ? "daemon" : "cli";
|
|
431
|
+
return `probe=${probe} mode=${mode} uptime=${uptimeStr}`;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function panelLine(label: string, value: string): string {
|
|
435
|
+
// Layout: ║<space><label padded to LABEL_WIDTH><value padded to fill><space>║
|
|
436
|
+
// Cursor Medium: the closing ║ must be preceded by a trailing space
|
|
437
|
+
// so the rendered line width matches the header/footer borders.
|
|
438
|
+
// Without it, every panel line was 71 chars while the borders were
|
|
439
|
+
// 72, misaligning the right-hand box edge.
|
|
440
|
+
const LABEL_WIDTH = 13;
|
|
441
|
+
const labelCol = padRight(label, LABEL_WIDTH);
|
|
442
|
+
// Two spaces (leading + trailing) inside the box, consuming 2 cols.
|
|
443
|
+
const remaining = FRAME_INNER_WIDTH - LABEL_WIDTH - 2;
|
|
444
|
+
const valueCol = padRight(truncate(value, remaining), remaining);
|
|
445
|
+
return `║ ${labelCol}${valueCol} ║`;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
function padRight(s: string, width: number): string {
|
|
449
|
+
if (s.length >= width) return s;
|
|
450
|
+
return s + " ".repeat(width - s.length);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
function truncate(s: string, max: number): string {
|
|
454
|
+
if (max <= 0) return "";
|
|
455
|
+
if (s.length <= max) return s;
|
|
456
|
+
if (max <= 1) return s.slice(0, max);
|
|
457
|
+
return s.slice(0, max - 1) + "…";
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
function ageMsFromIso(iso: string, now: () => number): number | null {
|
|
461
|
+
const ms = Date.parse(iso);
|
|
462
|
+
if (!Number.isFinite(ms)) return null;
|
|
463
|
+
const delta = now() - ms;
|
|
464
|
+
return delta < 0 ? 0 : delta;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* Run an async tick function and swallow any rejection so the floated
|
|
469
|
+
* `void runTickSafely(tick)` call never produces an unhandled-rejection
|
|
470
|
+
* crash (which Node ≥15 escalates to a process exit). The tick body
|
|
471
|
+
* itself already wraps everything in try/finally, but this is the
|
|
472
|
+
* outermost belt-and-suspenders guard.
|
|
473
|
+
*/
|
|
474
|
+
async function runTickSafely(tick: () => Promise<void>): Promise<void> {
|
|
475
|
+
try {
|
|
476
|
+
await tick();
|
|
477
|
+
} catch {
|
|
478
|
+
// Any error has already been (or will be) surfaced inside the
|
|
479
|
+
// rendered frame; never let it escape the timer callback.
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
function safeWrite(output: Writable, chunk: string): void {
|
|
484
|
+
try {
|
|
485
|
+
output.write(chunk);
|
|
486
|
+
} catch {
|
|
487
|
+
// Writing to a closed / broken stream is non-fatal for the TUI;
|
|
488
|
+
// the next tick will retry.
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
function describeError(err: unknown): string {
|
|
493
|
+
if (err instanceof Error) return err.message;
|
|
494
|
+
try {
|
|
495
|
+
return String(err);
|
|
496
|
+
} catch {
|
|
497
|
+
return "unknown error";
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Strip ANSI escape sequences from a string. Exposed for tests so the
|
|
503
|
+
* rendered frame can be asserted against plain text.
|
|
504
|
+
*/
|
|
505
|
+
export function stripAnsi(s: string): string {
|
|
506
|
+
// eslint-disable-next-line no-control-regex
|
|
507
|
+
return s.replace(/\x1b\[[0-9;?]*[A-Za-z]/g, "");
|
|
508
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* consolidation-operator.ts — Standalone operator vocabulary + validators
|
|
3
|
+
* for the consolidation subsystem (issue #561, All-Mem paper
|
|
4
|
+
* arxiv:2603.19595).
|
|
5
|
+
*
|
|
6
|
+
* This module is intentionally dependency-free so storage, the `remnic
|
|
7
|
+
* doctor` check (PR 4), and the undo CLI (PR 5) can import the validators
|
|
8
|
+
* without dragging in the full consolidation engine — which in turn pulls
|
|
9
|
+
* in the Codex materialize runner and creates a `storage → consolidation
|
|
10
|
+
* → codex-materialize-runner → storage` import cycle.
|
|
11
|
+
*
|
|
12
|
+
* The `semantic-consolidation.ts` module re-exports these symbols so
|
|
13
|
+
* existing import paths continue to work.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Operator algebra for non-destructive consolidation.
|
|
18
|
+
*
|
|
19
|
+
* - `split` — one source memory is rewritten as multiple smaller memories.
|
|
20
|
+
* - `merge` — multiple source memories are collapsed into one canonical
|
|
21
|
+
* memory.
|
|
22
|
+
* - `update` — a newer value supersedes an older value within the same
|
|
23
|
+
* logical fact.
|
|
24
|
+
* - `pattern-reinforcement` (issue #687 PR 2/4) — emitted by the
|
|
25
|
+
* pattern-reinforcement maintenance job when it clusters duplicate
|
|
26
|
+
* non-procedural memories and promotes the most recent member to
|
|
27
|
+
* canonical. Unlike the other operators, the job does not produce
|
|
28
|
+
* page-versioning snapshots — it just stamps reinforcement metadata
|
|
29
|
+
* on the canonical and points superseded duplicates at it. See
|
|
30
|
+
* `maintenance/pattern-reinforcement.ts`.
|
|
31
|
+
*/
|
|
32
|
+
export type ConsolidationOperator =
|
|
33
|
+
| "split"
|
|
34
|
+
| "merge"
|
|
35
|
+
| "update"
|
|
36
|
+
| "pattern-reinforcement";
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Allowed values for the `derived_via` frontmatter field. Used by storage
|
|
40
|
+
* validation to reject unknown operator values on write.
|
|
41
|
+
*/
|
|
42
|
+
export const CONSOLIDATION_OPERATORS: readonly ConsolidationOperator[] = [
|
|
43
|
+
"split",
|
|
44
|
+
"merge",
|
|
45
|
+
"update",
|
|
46
|
+
"pattern-reinforcement",
|
|
47
|
+
] as const;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Regular expression for validating a single `derived_from` entry.
|
|
51
|
+
*
|
|
52
|
+
* Format: `<non-empty memory path>:<integer version >= 0>`. Matches the
|
|
53
|
+
* `path:versionNumber` convention used by `page-versioning.ts` snapshots
|
|
54
|
+
* (e.g. `"facts/preferences.md:3"`). The path portion is greedy-last so
|
|
55
|
+
* paths that themselves contain a colon remain parseable — only the final
|
|
56
|
+
* `:<digits>` is consumed as the version.
|
|
57
|
+
*/
|
|
58
|
+
const DERIVED_FROM_ENTRY_RE = /^(.+):(\d+)$/;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Regular expression for validating a memory-id `derived_from` entry
|
|
62
|
+
* (issue #687 PR 2/4). Pattern reinforcement records source memory IDs
|
|
63
|
+
* directly rather than page-versioning snapshots, so we also need to
|
|
64
|
+
* accept that shape.
|
|
65
|
+
*
|
|
66
|
+
* Memory IDs are alphanumeric with hyphens, underscores, or COLONS —
|
|
67
|
+
* the namespace-prefixed form (e.g. `global:fact-abc-123`,
|
|
68
|
+
* `entity:person-alice`) is a legitimate ID format already used
|
|
69
|
+
* throughout the graph-retrieval code path (`stripDerivedFromVersion`).
|
|
70
|
+
* The disambiguation against `<path>:<version>` is *not* "no colons
|
|
71
|
+
* allowed" — it's "the segment after the last colon must NOT be a
|
|
72
|
+
* non-negative integer" (PR #730 review feedback, Codex P1).
|
|
73
|
+
*
|
|
74
|
+
* Slashes and dots remain forbidden so paths cannot accidentally pass
|
|
75
|
+
* as memory IDs.
|
|
76
|
+
*
|
|
77
|
+
* Exported so the consolidation-provenance integrity scanner (PR
|
|
78
|
+
* #730 review feedback) can recognize bare memory IDs instead of
|
|
79
|
+
* flagging them as malformed snapshot references.
|
|
80
|
+
*/
|
|
81
|
+
export const DERIVED_FROM_MEMORY_ID_RE = /^[A-Za-z0-9][A-Za-z0-9_:-]*$/;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Disambiguator: an entry is a `<path>:<version>` snapshot reference
|
|
85
|
+
* iff it ends with `:<digits>` AND the left side contains a `/` or
|
|
86
|
+
* `.` (path-shape). Without the path-shape requirement a legitimate
|
|
87
|
+
* namespace-prefixed memory id like `global:42` would be silently
|
|
88
|
+
* misinterpreted as a snapshot reference.
|
|
89
|
+
*
|
|
90
|
+
* This mirrors the precedence used by `stripDerivedFromVersion` in
|
|
91
|
+
* `graph-retrieval.ts`: only strip the trailing `:<digits>` when the
|
|
92
|
+
* left side actually looks like a stored path.
|
|
93
|
+
*/
|
|
94
|
+
function looksLikeSnapshotEntry(entry: string): boolean {
|
|
95
|
+
const match = entry.match(DERIVED_FROM_ENTRY_RE);
|
|
96
|
+
if (!match) return false;
|
|
97
|
+
const pathPart = match[1];
|
|
98
|
+
// A real snapshot path always contains a directory separator or a
|
|
99
|
+
// file extension dot. Memory IDs use neither.
|
|
100
|
+
return pathPart.includes("/") || pathPart.includes(".");
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Validate a `derived_from` entry string. Returns `true` for either
|
|
105
|
+
* - the snapshot format `<non-empty path>:<integer >= 0>` (issue #561), or
|
|
106
|
+
* - a memory-id of the form `[A-Za-z0-9][A-Za-z0-9_:-]*` (issue #687
|
|
107
|
+
* PR 2/4 — used by pattern-reinforcement provenance). Memory IDs
|
|
108
|
+
* may include `:` for namespace-prefixed forms like
|
|
109
|
+
* `global:fact-abc-123` (PR #730 review feedback, Codex P1).
|
|
110
|
+
*
|
|
111
|
+
* Disambiguation rule: only treat the entry as `<path>:<version>` when
|
|
112
|
+
* the trailing segment after the last `:` is a non-negative integer
|
|
113
|
+
* AND the left side looks like a path (contains `/` or `.`).
|
|
114
|
+
* Otherwise treat the entire string as a memory ID. This is the same
|
|
115
|
+
* heuristic the graph retrieval path uses when splitting derived_from
|
|
116
|
+
* references back into a memory id.
|
|
117
|
+
*
|
|
118
|
+
* Kept pure so storage and future CLI/doctor paths can share the same
|
|
119
|
+
* validator.
|
|
120
|
+
*/
|
|
121
|
+
export function isValidDerivedFromEntry(entry: unknown): entry is string {
|
|
122
|
+
if (typeof entry !== "string") return false;
|
|
123
|
+
if (entry.length === 0) return false;
|
|
124
|
+
// Snapshot format takes precedence ONLY when the left side looks
|
|
125
|
+
// like a real path. This avoids misclassifying memory IDs whose
|
|
126
|
+
// tail happens to be numeric (e.g. `global:42`).
|
|
127
|
+
if (looksLikeSnapshotEntry(entry)) {
|
|
128
|
+
const match = entry.match(DERIVED_FROM_ENTRY_RE);
|
|
129
|
+
if (!match) return false;
|
|
130
|
+
const pathPart = match[1];
|
|
131
|
+
if (pathPart.length === 0 || pathPart.trim().length === 0) return false;
|
|
132
|
+
const versionNum = Number(match[2]);
|
|
133
|
+
return Number.isInteger(versionNum) && versionNum >= 0;
|
|
134
|
+
}
|
|
135
|
+
// Otherwise treat as a memory ID. Empty or `:`-only entries are
|
|
136
|
+
// already excluded by the leading-alphanumeric requirement of the
|
|
137
|
+
// regex.
|
|
138
|
+
return DERIVED_FROM_MEMORY_ID_RE.test(entry);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Type guard for `ConsolidationOperator`.
|
|
143
|
+
*/
|
|
144
|
+
export function isConsolidationOperator(value: unknown): value is ConsolidationOperator {
|
|
145
|
+
return (
|
|
146
|
+
typeof value === "string" &&
|
|
147
|
+
(CONSOLIDATION_OPERATORS as readonly string[]).includes(value)
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Narrow operator vocabulary for the LLM-driven semantic-consolidation
|
|
153
|
+
* pass (issue #561 PR 3). This explicitly excludes
|
|
154
|
+
* `"pattern-reinforcement"` (issue #687 PR 2/4), which is reserved for
|
|
155
|
+
* the maintenance job and must NEVER be emitted by the consolidation
|
|
156
|
+
* LLM. Without this narrow gate, a hallucinated
|
|
157
|
+
* `{"operator":"pattern-reinforcement"}` response from the LLM would
|
|
158
|
+
* write misleading provenance on a semantic-consolidation memory
|
|
159
|
+
* (Cursor Bugbot review, PR #730 head `aa1c2a8`).
|
|
160
|
+
*/
|
|
161
|
+
export type SemanticConsolidationLlmOperator = "split" | "merge" | "update";
|
|
162
|
+
|
|
163
|
+
const SEMANTIC_CONSOLIDATION_LLM_OPERATORS: readonly SemanticConsolidationLlmOperator[] = [
|
|
164
|
+
"split",
|
|
165
|
+
"merge",
|
|
166
|
+
"update",
|
|
167
|
+
] as const;
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Type guard restricted to the operator subset the
|
|
171
|
+
* semantic-consolidation LLM is allowed to emit. Use this in any
|
|
172
|
+
* code path that validates LLM output — `isConsolidationOperator` is
|
|
173
|
+
* for validating values that came from disk / internal callers.
|
|
174
|
+
*/
|
|
175
|
+
export function isSemanticConsolidationLlmOperator(
|
|
176
|
+
value: unknown,
|
|
177
|
+
): value is SemanticConsolidationLlmOperator {
|
|
178
|
+
return (
|
|
179
|
+
typeof value === "string" &&
|
|
180
|
+
(SEMANTIC_CONSOLIDATION_LLM_OPERATORS as readonly string[]).includes(value)
|
|
181
|
+
);
|
|
182
|
+
}
|