@remnic/core 1.1.12 → 1.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-cli.d.ts +2 -1
- package/dist/access-cli.js +263 -82
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +26 -60
- package/dist/access-http.js +43 -29
- package/dist/access-mcp.d.ts +24 -6
- package/dist/access-mcp.js +35 -28
- package/dist/access-schema.d.ts +9 -6
- package/dist/access-schema.js +7 -5
- package/dist/access-service-DcCDmNYC.d.ts +1542 -0
- package/dist/access-service.d.ts +25 -7
- package/dist/access-service.js +33 -26
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.js +11 -3
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +24 -0
- package/dist/adapters/claude-code.js +9 -0
- package/dist/adapters/codex.d.ts +25 -0
- package/dist/adapters/codex.js +9 -0
- package/dist/adapters/hermes.d.ts +35 -0
- package/dist/adapters/hermes.js +9 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.js +26 -0
- package/dist/adapters/registry.d.ts +20 -0
- package/dist/adapters/registry.js +13 -0
- package/dist/adapters/replit.d.ts +28 -0
- package/dist/adapters/replit.js +9 -0
- package/dist/adapters/types.d.ts +43 -0
- package/dist/adapters/types.js +8 -0
- package/dist/bootstrap.d.ts +20 -5
- package/dist/boxes.d.ts +7 -0
- package/dist/boxes.js +1 -1
- package/dist/briefing.d.ts +5 -3
- package/dist/briefing.js +9 -6
- package/dist/buffer-surprise-report.js +1 -1
- package/dist/buffer.d.ts +18 -4
- package/dist/buffer.js +1 -1
- package/dist/calibration.js +4 -4
- package/dist/capsule-cli.d.ts +4 -4
- package/dist/capsule-cli.js +1 -1
- package/dist/capsule-crypto-5CYAGVC5.js +18 -0
- package/dist/capsule-merge-4MGKE7C5.js +189 -0
- package/dist/causal-behavior.d.ts +8 -28
- package/dist/causal-behavior.js +6 -3
- package/dist/causal-behavior.js.map +1 -1
- package/dist/causal-chain.js +3 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +24 -13
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory.js +1 -1
- package/dist/chunk-25MQ7IHJ.js +427 -0
- package/dist/chunk-25MQ7IHJ.js.map +1 -0
- package/dist/chunk-2F2W355T.js +256 -0
- package/dist/chunk-2F2W355T.js.map +1 -0
- package/dist/chunk-2KI4QFHU.js +228 -0
- package/dist/chunk-2KI4QFHU.js.map +1 -0
- package/dist/chunk-2PRQG7PV.js +86 -0
- package/dist/chunk-2PRQG7PV.js.map +1 -0
- package/dist/chunk-2QR3XXIC.js +2272 -0
- package/dist/chunk-2QR3XXIC.js.map +1 -0
- package/dist/chunk-2WWLHTZY.js +121 -0
- package/dist/chunk-326G7DJK.js +2185 -0
- package/dist/chunk-326G7DJK.js.map +1 -0
- package/dist/chunk-34DQE4KF.js +174 -0
- package/dist/chunk-34DQE4KF.js.map +1 -0
- package/dist/chunk-3APJ5EVB.js +601 -0
- package/dist/chunk-3APJ5EVB.js.map +1 -0
- package/dist/chunk-3HPAPHUK.js +51 -0
- package/dist/chunk-3HPAPHUK.js.map +1 -0
- package/dist/chunk-3JXBXXM2.js +69 -0
- package/dist/chunk-3JXBXXM2.js.map +1 -0
- package/dist/chunk-3KW65B36.js +681 -0
- package/dist/chunk-3KW65B36.js.map +1 -0
- package/dist/chunk-3UXOZBHV.js +20 -0
- package/dist/chunk-3UXOZBHV.js.map +1 -0
- package/dist/chunk-3VAL7ZL2.js +266 -0
- package/dist/chunk-3VAL7ZL2.js.map +1 -0
- package/dist/chunk-3Y4P7RXM.js +31 -0
- package/dist/chunk-3Y4P7RXM.js.map +1 -0
- package/dist/chunk-47VWKCAF.js +273 -0
- package/dist/chunk-47VWKCAF.js.map +1 -0
- package/dist/chunk-4CRG46BG.js +271 -0
- package/dist/chunk-5375UYTQ.js +914 -0
- package/dist/chunk-5375UYTQ.js.map +1 -0
- package/dist/chunk-56K5QLHX.js +506 -0
- package/dist/chunk-56K5QLHX.js.map +1 -0
- package/dist/chunk-5RGLBDQF.js +596 -0
- package/dist/chunk-5RGLBDQF.js.map +1 -0
- package/dist/chunk-5UZXUTVO.js +9 -0
- package/dist/chunk-5UZXUTVO.js.map +1 -0
- package/dist/chunk-65PG43EQ.js +105 -0
- package/dist/chunk-65PG43EQ.js.map +1 -0
- package/dist/chunk-66DHUKLO.js +57 -0
- package/dist/chunk-66DHUKLO.js.map +1 -0
- package/dist/chunk-6FC5EGNV.js +46 -0
- package/dist/chunk-6FC5EGNV.js.map +1 -0
- package/dist/chunk-6H2TESSP.js +62 -0
- package/dist/chunk-6H2TESSP.js.map +1 -0
- package/dist/chunk-6LVVDPJ4.js +32 -0
- package/dist/chunk-6LVVDPJ4.js.map +1 -0
- package/dist/chunk-6RVI47ZR.js +159 -0
- package/dist/chunk-6RVI47ZR.js.map +1 -0
- package/dist/chunk-7AAT6G4Q.js +5117 -0
- package/dist/chunk-7AAT6G4Q.js.map +1 -0
- package/dist/chunk-7DTASS5T.js +29 -0
- package/dist/chunk-7DTASS5T.js.map +1 -0
- package/dist/chunk-7IASACLB.js +596 -0
- package/dist/chunk-7MNMYOFP.js +32 -0
- package/dist/chunk-7MNMYOFP.js.map +1 -0
- package/dist/chunk-7N4KAIGN.js +133 -0
- package/dist/chunk-7N4KAIGN.js.map +1 -0
- package/dist/chunk-7OZ53EXP.js +101 -0
- package/dist/chunk-7OZ53EXP.js.map +1 -0
- package/dist/chunk-7XYTQGCC.js +134 -0
- package/dist/chunk-7XYTQGCC.js.map +1 -0
- package/dist/chunk-A2XUIMJ3.js +341 -0
- package/dist/chunk-A2XUIMJ3.js.map +1 -0
- package/dist/chunk-AGZQD76C.js +201 -0
- package/dist/chunk-AGZQD76C.js.map +1 -0
- package/dist/chunk-APO3DCMU.js +361 -0
- package/dist/chunk-APO3DCMU.js.map +1 -0
- package/dist/chunk-BFBF3XEF.js +283 -0
- package/dist/chunk-BFBF3XEF.js.map +1 -0
- package/dist/chunk-BJ3KMYTB.js +1974 -0
- package/dist/chunk-BJ3KMYTB.js.map +1 -0
- package/dist/chunk-CHEL3SKB.js +6758 -0
- package/dist/chunk-CHEL3SKB.js.map +1 -0
- package/dist/chunk-CQZRLNMV.js +1491 -0
- package/dist/chunk-CQZRLNMV.js.map +1 -0
- package/dist/chunk-D46YSIYX.js +892 -0
- package/dist/chunk-D46YSIYX.js.map +1 -0
- package/dist/chunk-DINWEURR.js +648 -0
- package/dist/chunk-DINWEURR.js.map +1 -0
- package/dist/chunk-DK5LDEQM.js +530 -0
- package/dist/chunk-DK5LDEQM.js.map +1 -0
- package/dist/chunk-DOM4GKSW.js +34 -0
- package/dist/chunk-DOM4GKSW.js.map +1 -0
- package/dist/chunk-EDTHC6UD.js +1075 -0
- package/dist/chunk-EFJ3MQ4V.js +721 -0
- package/dist/chunk-EHRTFRWW.js +89 -0
- package/dist/chunk-EHRTFRWW.js.map +1 -0
- package/dist/chunk-FAJ7FZYM.js +11 -0
- package/dist/chunk-FAJ7FZYM.js.map +1 -0
- package/dist/chunk-FBYESMQ2.js +570 -0
- package/dist/chunk-FDU6HUUL.js +147 -0
- package/dist/chunk-FF4KLI5W.js +99 -0
- package/dist/chunk-FF4KLI5W.js.map +1 -0
- package/dist/chunk-FIT6DMX6.js +310 -0
- package/dist/chunk-FIT6DMX6.js.map +1 -0
- package/dist/chunk-FJ43PRLT.js +272 -0
- package/dist/chunk-FJ43PRLT.js.map +1 -0
- package/dist/chunk-FKFMOY3N.js +32 -0
- package/dist/chunk-FKFMOY3N.js.map +1 -0
- package/dist/chunk-FLTNHQK6.js +262 -0
- package/dist/chunk-FLTNHQK6.js.map +1 -0
- package/dist/chunk-GA454ALV.js +12436 -0
- package/dist/chunk-GA454ALV.js.map +1 -0
- package/dist/chunk-GGKRUQOO.js +228 -0
- package/dist/chunk-GIF42EW3.js +63 -0
- package/dist/chunk-GIF42EW3.js.map +1 -0
- package/dist/chunk-GL6I6MEQ.js +647 -0
- package/dist/chunk-H3ME6L6D.js +709 -0
- package/dist/chunk-H3ME6L6D.js.map +1 -0
- package/dist/chunk-HHLLAQGZ.js +1 -0
- package/dist/chunk-HXXBL2KD.js +2040 -0
- package/dist/chunk-I5V2VDIW.js +219 -0
- package/dist/chunk-I5V2VDIW.js.map +1 -0
- package/dist/chunk-I6K5FBRQ.js +35 -0
- package/dist/chunk-I6K5FBRQ.js.map +1 -0
- package/dist/chunk-ICRIXAP2.js +121 -0
- package/dist/chunk-ICRIXAP2.js.map +1 -0
- package/dist/chunk-J4EB7DNW.js +11 -0
- package/dist/chunk-J4EB7DNW.js.map +1 -0
- package/dist/chunk-JLFA7DQG.js +62 -0
- package/dist/chunk-JLFA7DQG.js.map +1 -0
- package/dist/chunk-KJTKLXTH.js +9 -0
- package/dist/chunk-KJTKLXTH.js.map +1 -0
- package/dist/chunk-KLAO5DGL.js +917 -0
- package/dist/chunk-KLAO5DGL.js.map +1 -0
- package/dist/chunk-KNKUID7G.js +183 -0
- package/dist/chunk-KOSORCJG.js +624 -0
- package/dist/chunk-KOSORCJG.js.map +1 -0
- package/dist/chunk-KUJVMMZQ.js +1262 -0
- package/dist/chunk-KUJVMMZQ.js.map +1 -0
- package/dist/chunk-LCR46JY5.js +123 -0
- package/dist/chunk-LCR46JY5.js.map +1 -0
- package/dist/chunk-LLQ2LLWF.js +148 -0
- package/dist/chunk-LLQ2LLWF.js.map +1 -0
- package/dist/chunk-LPMVBPA3.js +236 -0
- package/dist/chunk-LT3NLYSI.js +50 -0
- package/dist/chunk-LT3NLYSI.js.map +1 -0
- package/dist/chunk-LUDTDZLK.js +287 -0
- package/dist/chunk-LUDTDZLK.js.map +1 -0
- package/dist/chunk-M23FSH32.js +3963 -0
- package/dist/chunk-M23FSH32.js.map +1 -0
- package/dist/chunk-MC26UJIM.js +118 -0
- package/dist/chunk-ME6ESPZU.js +119 -0
- package/dist/chunk-ME6ESPZU.js.map +1 -0
- package/dist/chunk-MGKYQQYF.js +272 -0
- package/dist/chunk-MJFNCJXV.js +66 -0
- package/dist/chunk-MJFNCJXV.js.map +1 -0
- package/dist/chunk-MSWG7JI6.js +237 -0
- package/dist/chunk-MSWG7JI6.js.map +1 -0
- package/dist/chunk-MT25YHYH.js +141 -0
- package/dist/chunk-MT25YHYH.js.map +1 -0
- package/dist/chunk-MT4HVDUZ.js +53 -0
- package/dist/chunk-MY6TPVXW.js +219 -0
- package/dist/chunk-N2D6GXBM.js +267 -0
- package/dist/chunk-N2D6GXBM.js.map +1 -0
- package/dist/chunk-NJ3MJQZX.js +46 -0
- package/dist/chunk-NJ3MJQZX.js.map +1 -0
- package/dist/chunk-NMZY542O.js +335 -0
- package/dist/chunk-NMZY542O.js.map +1 -0
- package/dist/chunk-NNVTUXEB.js +23 -0
- package/dist/chunk-NZL6GGQE.js +375 -0
- package/dist/chunk-NZL6GGQE.js.map +1 -0
- package/dist/chunk-P4NEIHUT.js +108 -0
- package/dist/chunk-P7FMDTKL.js +103 -0
- package/dist/chunk-P7FMDTKL.js.map +1 -0
- package/dist/chunk-PHK3HARR.js +32 -0
- package/dist/chunk-PHK3HARR.js.map +1 -0
- package/dist/chunk-PIRJPV5T.js +98 -0
- package/dist/chunk-PIRJPV5T.js.map +1 -0
- package/dist/chunk-PK7H5L6Y.js +159 -0
- package/dist/chunk-PK7H5L6Y.js.map +1 -0
- package/dist/chunk-PR5FBTFU.js +233 -0
- package/dist/chunk-PR5FBTFU.js.map +1 -0
- package/dist/chunk-PU63GXWS.js +174 -0
- package/dist/chunk-PU63GXWS.js.map +1 -0
- package/dist/chunk-PZIAX57I.js +124 -0
- package/dist/chunk-PZIAX57I.js.map +1 -0
- package/dist/chunk-Q7P4WJDP.js +26 -0
- package/dist/chunk-Q7P4WJDP.js.map +1 -0
- package/dist/chunk-QQUAB63I.js +63 -0
- package/dist/chunk-QQUAB63I.js.map +1 -0
- package/dist/chunk-QRNI5JBH.js +18 -0
- package/dist/chunk-RHY3HH7P.js +601 -0
- package/dist/chunk-RHY3HH7P.js.map +1 -0
- package/dist/chunk-RRF5UOBJ.js +91 -0
- package/dist/chunk-RXDLTSWT.js +124 -0
- package/dist/chunk-RXDLTSWT.js.map +1 -0
- package/dist/chunk-RYED3SPJ.js +42 -0
- package/dist/chunk-RYED3SPJ.js.map +1 -0
- package/dist/chunk-S7KDBTWT.js +106 -0
- package/dist/chunk-S7KDBTWT.js.map +1 -0
- package/dist/chunk-SEDEKFYQ.js +1 -0
- package/dist/chunk-TECVW3JP.js +36 -0
- package/dist/chunk-TECVW3JP.js.map +1 -0
- package/dist/chunk-TFO23QT4.js +88 -0
- package/dist/chunk-TFO23QT4.js.map +1 -0
- package/dist/chunk-TK4UEOSK.js +76 -0
- package/dist/chunk-TK4UEOSK.js.map +1 -0
- package/dist/chunk-TKWGAOLV.js +122 -0
- package/dist/chunk-TKWGAOLV.js.map +1 -0
- package/dist/chunk-TMM4S4IJ.js +597 -0
- package/dist/chunk-TMM4S4IJ.js.map +1 -0
- package/dist/chunk-TMQLARTH.js +188 -0
- package/dist/chunk-TMQLARTH.js.map +1 -0
- package/dist/chunk-TPDBFYEG.js +130 -0
- package/dist/chunk-TPDBFYEG.js.map +1 -0
- package/dist/chunk-TPMQ3G6Z.js +145 -0
- package/dist/chunk-TPMQ3G6Z.js.map +1 -0
- package/dist/chunk-TZOLIGIG.js +61 -0
- package/dist/chunk-TZOLIGIG.js.map +1 -0
- package/dist/chunk-U3PN77QT.js +113 -0
- package/dist/chunk-U3WSW6PZ.js +277 -0
- package/dist/chunk-U4SCL7B7.js +640 -0
- package/dist/chunk-U4SCL7B7.js.map +1 -0
- package/dist/chunk-UWK5OXUJ.js +156 -0
- package/dist/chunk-UWK5OXUJ.js.map +1 -0
- package/dist/chunk-UWVJF25J.js +74 -0
- package/dist/chunk-UXHQAFNA.js +1317 -0
- package/dist/chunk-UXHQAFNA.js.map +1 -0
- package/dist/chunk-V5OCT34X.js +1 -0
- package/dist/chunk-VLXA6PI2.js +304 -0
- package/dist/chunk-VLXA6PI2.js.map +1 -0
- package/dist/chunk-VNO6ZJ35.js +500 -0
- package/dist/chunk-VNO6ZJ35.js.map +1 -0
- package/dist/chunk-VW676BEI.js +827 -0
- package/dist/chunk-VW676BEI.js.map +1 -0
- package/dist/chunk-W3LR522O.js +2296 -0
- package/dist/chunk-W4L6CZKA.js +96 -0
- package/dist/chunk-W4L6CZKA.js.map +1 -0
- package/dist/chunk-W4RVMTHR.js +372 -0
- package/dist/chunk-W4RVMTHR.js.map +1 -0
- package/dist/chunk-WEHSQBFR.js +188 -0
- package/dist/chunk-WEHSQBFR.js.map +1 -0
- package/dist/chunk-WELDCG6C.js +380 -0
- package/dist/chunk-WELDCG6C.js.map +1 -0
- package/dist/chunk-WZYKANL3.js +2800 -0
- package/dist/chunk-WZYKANL3.js.map +1 -0
- package/dist/chunk-XIG5PDM7.js +48 -0
- package/dist/chunk-XJNBEDFE.js +193 -0
- package/dist/chunk-XJNBEDFE.js.map +1 -0
- package/dist/chunk-XVVIG67A.js +291 -0
- package/dist/chunk-XVVIG67A.js.map +1 -0
- package/dist/chunk-XVZ7B3HG.js +135 -0
- package/dist/chunk-YBPYIAA5.js +73 -0
- package/dist/chunk-YBPYIAA5.js.map +1 -0
- package/dist/chunk-Z734BLO3.js +21 -0
- package/dist/chunk-Z734BLO3.js.map +1 -0
- package/dist/chunk-ZKSK55RC.js +269 -0
- package/dist/chunk-ZKSK55RC.js.map +1 -0
- package/dist/chunk-ZTFCYYEZ.js +69 -0
- package/dist/chunk-ZTFCYYEZ.js.map +1 -0
- package/dist/chunk-ZY2MNJR6.js +329 -0
- package/dist/chunk-ZY2MNJR6.js.map +1 -0
- package/dist/cli-D3VpkVwB.d.ts +1136 -0
- package/dist/cli.d.ts +39 -10
- package/dist/cli.js +108 -49
- package/dist/commitment-ledger.js +1 -1
- package/dist/compat/checks.d.ts +5 -0
- package/dist/compat/checks.js +11 -0
- package/dist/compat/checks.js.map +1 -0
- package/dist/compat/types.d.ts +30 -0
- package/dist/compat/types.js +1 -0
- package/dist/compat/types.js.map +1 -0
- package/dist/compounding/engine.d.ts +221 -0
- package/dist/compounding/engine.js +32 -0
- package/dist/compounding/engine.js.map +1 -0
- package/dist/compounding/preference-consolidator.d.ts +92 -0
- package/dist/compounding/preference-consolidator.js +553 -0
- package/dist/compounding/preference-consolidator.js.map +1 -0
- package/dist/config.d.ts +4 -2
- package/dist/config.js +9 -4
- package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
- package/dist/connectors/codex-materialize-runner.d.ts +64 -0
- package/dist/connectors/codex-materialize-runner.js +33 -0
- package/dist/connectors/codex-materialize-runner.js.map +1 -0
- package/dist/connectors/codex-materialize.d.ts +195 -0
- package/dist/connectors/codex-materialize.js +38 -0
- package/dist/connectors/codex-materialize.js.map +1 -0
- package/dist/connectors/index.d.ts +444 -0
- package/dist/connectors/index.js +115 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
- package/dist/connectors-cli.d.ts +1 -1
- package/dist/consolidation-provenance-check.d.ts +3 -1
- package/dist/consolidation-undo.d.ts +3 -1
- package/dist/contradiction/index.d.ts +258 -0
- package/dist/contradiction/index.js +43 -0
- package/dist/contradiction/index.js.map +1 -0
- package/dist/contradiction-review-ATP4S6IC.js +30 -0
- package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
- package/dist/contradiction-scan-5A4IDZV5.js +13 -0
- package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
- package/dist/conversation-index/backend.d.ts +97 -0
- package/dist/conversation-index/backend.js +13 -0
- package/dist/conversation-index/backend.js.map +1 -0
- package/dist/conversation-index/chunker.d.ts +16 -0
- package/dist/conversation-index/chunker.js +8 -0
- package/dist/conversation-index/chunker.js.map +1 -0
- package/dist/conversation-index/cleanup.d.ts +11 -0
- package/dist/conversation-index/cleanup.js +9 -0
- package/dist/conversation-index/cleanup.js.map +1 -0
- package/dist/conversation-index/faiss-adapter.d.ts +6 -0
- package/dist/conversation-index/faiss-adapter.js +16 -0
- package/dist/conversation-index/faiss-adapter.js.map +1 -0
- package/dist/conversation-index/indexer.d.ts +23 -0
- package/dist/conversation-index/indexer.js +15 -0
- package/dist/conversation-index/indexer.js.map +1 -0
- package/dist/conversation-index/search.d.ts +6 -0
- package/dist/conversation-index/search.js +11 -0
- package/dist/conversation-index/search.js.map +1 -0
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +163 -0
- package/dist/enrichment/index.js +18 -0
- package/dist/enrichment/index.js.map +1 -0
- package/dist/entity-retrieval.d.ts +4 -2
- package/dist/entity-retrieval.js +8 -5
- package/dist/evals.js +1 -1
- package/dist/explicit-capture.d.ts +20 -5
- package/dist/explicit-capture.js +2 -2
- package/dist/extraction-judge-training.js +1 -1
- package/dist/extraction.js +8 -8
- package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
- package/dist/fallback-llm.d.ts +2 -0
- package/dist/fallback-llm.js +4 -4
- package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
- package/dist/index.d.ts +66 -711
- package/dist/index.js +556 -2680
- package/dist/index.js.map +1 -1
- package/dist/lcm/archive.d.ts +89 -0
- package/dist/lcm/archive.js +12 -0
- package/dist/lcm/archive.js.map +1 -0
- package/dist/lcm/dag.d.ts +48 -0
- package/dist/lcm/dag.js +8 -0
- package/dist/lcm/dag.js.map +1 -0
- package/dist/lcm/engine.d.ts +116 -0
- package/dist/lcm/engine.js +20 -0
- package/dist/lcm/engine.js.map +1 -0
- package/dist/lcm/index.d.ts +12 -0
- package/dist/lcm/index.js +44 -0
- package/dist/lcm/index.js.map +1 -0
- package/dist/lcm/queue.d.ts +62 -0
- package/dist/lcm/queue.js +8 -0
- package/dist/lcm/queue.js.map +1 -0
- package/dist/lcm/recall.d.ts +20 -0
- package/dist/lcm/recall.js +8 -0
- package/dist/lcm/recall.js.map +1 -0
- package/dist/lcm/schema.d.ts +16 -0
- package/dist/lcm/schema.js +14 -0
- package/dist/lcm/schema.js.map +1 -0
- package/dist/lcm/summarizer.d.ts +38 -0
- package/dist/lcm/summarizer.js +12 -0
- package/dist/lcm/summarizer.js.map +1 -0
- package/dist/lcm/tools.d.ts +29 -0
- package/dist/lcm/tools.js +8 -0
- package/dist/lcm/tools.js.map +1 -0
- package/dist/live-connectors-runner.js +5 -5
- package/dist/local-llm.js +3 -3
- package/dist/maintenance/archive-observations.d.ts +18 -0
- package/dist/maintenance/archive-observations.js +8 -0
- package/dist/maintenance/archive-observations.js.map +1 -0
- package/dist/maintenance/backup-stamp.d.ts +3 -0
- package/dist/maintenance/backup-stamp.js +8 -0
- package/dist/maintenance/backup-stamp.js.map +1 -0
- package/dist/maintenance/memory-governance-cron.d.ts +85 -0
- package/dist/maintenance/memory-governance-cron.js +22 -0
- package/dist/maintenance/memory-governance-cron.js.map +1 -0
- package/dist/maintenance/memory-governance.d.ts +137 -0
- package/dist/maintenance/memory-governance.js +40 -0
- package/dist/maintenance/memory-governance.js.map +1 -0
- package/dist/maintenance/migrate-observations.d.ts +18 -0
- package/dist/maintenance/migrate-observations.js +9 -0
- package/dist/maintenance/migrate-observations.js.map +1 -0
- package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
- package/dist/maintenance/observation-ledger-utils.js +10 -0
- package/dist/maintenance/observation-ledger-utils.js.map +1 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
- package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
- package/dist/maintenance/rebuild-memory-projection.js +35 -0
- package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
- package/dist/maintenance/rebuild-observations.d.ts +17 -0
- package/dist/maintenance/rebuild-observations.js +9 -0
- package/dist/maintenance/rebuild-observations.js.map +1 -0
- package/dist/mcp-memory-inspector-app.d.ts +24 -6
- package/dist/memory-projection-store.d.ts +108 -3
- package/dist/memory-projection-store.js +2 -1
- package/dist/memory-worth-outcomes.d.ts +4 -2
- package/dist/migrate/from-engram.d.ts +24 -0
- package/dist/migrate/from-engram.js +12 -0
- package/dist/migrate/from-engram.js.map +1 -0
- package/dist/namespaces/migrate.d.ts +50 -0
- package/dist/namespaces/migrate.js +50 -0
- package/dist/namespaces/migrate.js.map +1 -0
- package/dist/namespaces/principal.d.ts +17 -0
- package/dist/namespaces/principal.js +16 -0
- package/dist/namespaces/principal.js.map +1 -0
- package/dist/namespaces/search.d.ts +46 -0
- package/dist/namespaces/search.js +28 -0
- package/dist/namespaces/search.js.map +1 -0
- package/dist/namespaces/storage.d.ts +32 -0
- package/dist/namespaces/storage.js +28 -0
- package/dist/namespaces/storage.js.map +1 -0
- package/dist/network/tailscale.d.ts +41 -0
- package/dist/network/tailscale.js +9 -0
- package/dist/network/tailscale.js.map +1 -0
- package/dist/network/webdav.d.ts +39 -0
- package/dist/network/webdav.js +10 -0
- package/dist/network/webdav.js.map +1 -0
- package/dist/objective-state-writers.js +2 -2
- package/dist/operator-toolkit.d.ts +4 -2
- package/dist/operator-toolkit.js +32 -14
- package/dist/opik-exporter.js +2 -2
- package/dist/opik-exporter.js.map +1 -1
- package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
- package/dist/orchestrator.d.ts +22 -7
- package/dist/orchestrator.js +79 -44
- package/dist/path-MR5JPYOP.js +9 -0
- package/dist/path-MR5JPYOP.js.map +1 -0
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +102 -3
- package/dist/qmd.js +23 -5
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +6 -0
- package/dist/replay/normalizers/chatgpt.js +11 -0
- package/dist/replay/normalizers/chatgpt.js.map +1 -0
- package/dist/replay/normalizers/claude.d.ts +6 -0
- package/dist/replay/normalizers/claude.js +11 -0
- package/dist/replay/normalizers/claude.js.map +1 -0
- package/dist/replay/normalizers/openclaw.d.ts +6 -0
- package/dist/replay/normalizers/openclaw.js +11 -0
- package/dist/replay/normalizers/openclaw.js.map +1 -0
- package/dist/replay/normalizers/shared.d.ts +16 -0
- package/dist/replay/normalizers/shared.js +14 -0
- package/dist/replay/normalizers/shared.js.map +1 -0
- package/dist/replay/runner.d.ts +35 -0
- package/dist/replay/runner.js +16 -0
- package/dist/replay/runner.js.map +1 -0
- package/dist/replay/types.d.ts +57 -0
- package/dist/replay/types.js +19 -0
- package/dist/replay/types.js.map +1 -0
- package/dist/resolution-B7FNQSSP.js +12 -0
- package/dist/resolution-B7FNQSSP.js.map +1 -0
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +8 -6
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/routing/engine.d.ts +35 -0
- package/dist/routing/engine.js +16 -0
- package/dist/routing/engine.js.map +1 -0
- package/dist/routing/store.d.ts +27 -0
- package/dist/routing/store.js +10 -0
- package/dist/routing/store.js.map +1 -0
- package/dist/runtime/better-sqlite.d.ts +8 -0
- package/dist/runtime/better-sqlite.js +10 -0
- package/dist/runtime/better-sqlite.js.map +1 -0
- package/dist/runtime/child-process.d.ts +32 -0
- package/dist/runtime/child-process.js +10 -0
- package/dist/runtime/child-process.js.map +1 -0
- package/dist/runtime/env.d.ts +5 -0
- package/dist/runtime/env.js +12 -0
- package/dist/runtime/env.js.map +1 -0
- package/dist/schemas.d.ts +22 -22
- package/dist/sdk-compat.js +1 -1
- package/dist/search/document-scanner.d.ts +22 -0
- package/dist/search/document-scanner.js +8 -0
- package/dist/search/document-scanner.js.map +1 -0
- package/dist/search/embed-helper.d.ts +35 -0
- package/dist/search/embed-helper.js +9 -0
- package/dist/search/embed-helper.js.map +1 -0
- package/dist/search/factory.d.ts +32 -0
- package/dist/search/factory.js +29 -0
- package/dist/search/factory.js.map +1 -0
- package/dist/search/index.d.ts +15 -0
- package/dist/search/index.js +50 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/lancedb-backend.d.ts +51 -0
- package/dist/search/lancedb-backend.js +10 -0
- package/dist/search/lancedb-backend.js.map +1 -0
- package/dist/search/meilisearch-backend.d.ts +48 -0
- package/dist/search/meilisearch-backend.js +10 -0
- package/dist/search/meilisearch-backend.js.map +1 -0
- package/dist/search/noop-backend.d.ts +26 -0
- package/dist/search/noop-backend.js +8 -0
- package/dist/search/noop-backend.js.map +1 -0
- package/dist/search/orama-backend.d.ts +53 -0
- package/dist/search/orama-backend.js +10 -0
- package/dist/search/orama-backend.js.map +1 -0
- package/dist/search/port.d.ts +61 -0
- package/dist/search/port.js +1 -0
- package/dist/search/port.js.map +1 -0
- package/dist/search/remote-backend.d.ts +39 -0
- package/dist/search/remote-backend.js +9 -0
- package/dist/search/remote-backend.js.map +1 -0
- package/dist/secure-store/index.d.ts +890 -0
- package/dist/secure-store/index.js +156 -0
- package/dist/secure-store/index.js.map +1 -0
- package/dist/semantic-VwGI14Ok.d.ts +69 -0
- package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +13 -6
- package/dist/semantic-rule-promotion.js +8 -5
- package/dist/semantic-rule-verifier.js +8 -5
- package/dist/shared-context/manager.d.ts +131 -0
- package/dist/shared-context/manager.js +15 -0
- package/dist/shared-context/manager.js.map +1 -0
- package/dist/skills-registry.js +13 -1
- package/dist/skills-registry.js.map +1 -1
- package/dist/state-store-VZU2IA53.js +16 -0
- package/dist/state-store-VZU2IA53.js.map +1 -0
- package/dist/storage-paths.d.ts +9 -0
- package/dist/storage-paths.js +20 -0
- package/dist/storage-paths.js.map +1 -0
- package/dist/storage.d.ts +3 -1
- package/dist/storage.js +7 -4
- package/dist/summarizer.d.ts +5 -0
- package/dist/summarizer.js +9 -8
- package/dist/summary-snapshot.js +2 -1
- package/dist/surfaces/dreams.d.ts +16 -0
- package/dist/surfaces/dreams.js +282 -0
- package/dist/surfaces/dreams.js.map +1 -0
- package/dist/surfaces/heartbeat.d.ts +17 -0
- package/dist/surfaces/heartbeat.js +265 -0
- package/dist/surfaces/heartbeat.js.map +1 -0
- package/dist/temporal-supersession.d.ts +3 -1
- package/dist/threading.d.ts +5 -0
- package/dist/threading.js +2 -1
- package/dist/tier-migration.d.ts +4 -2
- package/dist/tokens.js +2 -2
- package/dist/transcript.d.ts +15 -1
- package/dist/transcript.js +2 -1
- package/dist/transfer/autodetect.d.ts +4 -0
- package/dist/transfer/autodetect.js +15 -0
- package/dist/transfer/autodetect.js.map +1 -0
- package/dist/transfer/backup.d.ts +21 -0
- package/dist/transfer/backup.js +17 -0
- package/dist/transfer/backup.js.map +1 -0
- package/dist/transfer/capsule-export.d.ts +113 -0
- package/dist/transfer/capsule-export.js +19 -0
- package/dist/transfer/capsule-export.js.map +1 -0
- package/dist/transfer/capsule-import.d.ts +124 -0
- package/dist/transfer/capsule-import.js +16 -0
- package/dist/transfer/capsule-import.js.map +1 -0
- package/dist/transfer/constants.d.ts +13 -0
- package/dist/transfer/constants.js +12 -0
- package/dist/transfer/constants.js.map +1 -0
- package/dist/transfer/export-json.d.ts +11 -0
- package/dist/transfer/export-json.js +11 -0
- package/dist/transfer/export-json.js.map +1 -0
- package/dist/transfer/export-md.d.ts +10 -0
- package/dist/transfer/export-md.js +13 -0
- package/dist/transfer/export-md.js.map +1 -0
- package/dist/transfer/export-sqlite.d.ts +9 -0
- package/dist/transfer/export-sqlite.js +12 -0
- package/dist/transfer/export-sqlite.js.map +1 -0
- package/dist/transfer/fs-utils.d.ts +61 -0
- package/dist/transfer/fs-utils.js +40 -0
- package/dist/transfer/fs-utils.js.map +1 -0
- package/dist/transfer/import-json.d.ts +16 -0
- package/dist/transfer/import-json.js +13 -0
- package/dist/transfer/import-json.js.map +1 -0
- package/dist/transfer/import-md.d.ts +14 -0
- package/dist/transfer/import-md.js +11 -0
- package/dist/transfer/import-md.js.map +1 -0
- package/dist/transfer/import-sqlite.d.ts +14 -0
- package/dist/transfer/import-sqlite.js +12 -0
- package/dist/transfer/import-sqlite.js.map +1 -0
- package/dist/transfer/sqlite-schema.d.ts +4 -0
- package/dist/transfer/sqlite-schema.js +10 -0
- package/dist/transfer/sqlite-schema.js.map +1 -0
- package/dist/transfer/types.d.ts +916 -0
- package/dist/transfer/types.js +30 -0
- package/dist/transfer/types.js.map +1 -0
- package/dist/types.d.ts +28 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +9 -6
- package/dist/work/board.d.ts +43 -0
- package/dist/work/board.js +14 -0
- package/dist/work/board.js.map +1 -0
- package/dist/work/boundary.d.ts +8 -0
- package/dist/work/boundary.js +14 -0
- package/dist/work/boundary.js.map +1 -0
- package/dist/work/storage.d.ts +39 -0
- package/dist/work/storage.js +11 -0
- package/dist/work/storage.js.map +1 -0
- package/dist/work/types.d.ts +75 -0
- package/dist/work/types.js +1 -0
- package/dist/work/types.js.map +1 -0
- package/package.json +2767 -6
- package/scripts/faiss_index.py +816 -0
- package/scripts/faiss_requirements.txt +3 -0
- package/skills/remnic-entities/SKILL.md +51 -0
- package/skills/remnic-memory-workflow/SKILL.md +61 -0
- package/skills/remnic-recall/SKILL.md +51 -0
- package/skills/remnic-remember/SKILL.md +56 -0
- package/skills/remnic-search/SKILL.md +51 -0
- package/skills/remnic-status/SKILL.md +51 -0
- package/src/abort-error.test.ts +49 -0
- package/src/abort-error.ts +46 -0
- package/src/abstraction-nodes.ts +162 -0
- package/src/access-audit.test.ts +178 -0
- package/src/access-audit.ts +125 -0
- package/src/access-cli.test.ts +439 -0
- package/src/access-cli.ts +438 -0
- package/src/access-http.test.ts +225 -0
- package/src/access-http.ts +1899 -0
- package/src/access-idempotency.ts +232 -0
- package/src/access-mcp.test.ts +568 -0
- package/src/access-mcp.ts +3056 -0
- package/src/access-schema-pi.test.ts +60 -0
- package/src/access-schema.ts +522 -0
- package/src/access-service-namespace.test.ts +123 -0
- package/src/access-service.ts +5629 -0
- package/src/action-confidence.test.ts +206 -0
- package/src/action-confidence.ts +466 -0
- package/src/active-memory-bridge.test.ts +285 -0
- package/src/active-memory-bridge.ts +217 -0
- package/src/active-recall.test.ts +484 -0
- package/src/active-recall.ts +459 -0
- package/src/adapters/claude-code.ts +56 -0
- package/src/adapters/codex.ts +57 -0
- package/src/adapters/hermes.ts +64 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/registry.ts +41 -0
- package/src/adapters/replit.ts +55 -0
- package/src/adapters/types.ts +51 -0
- package/src/behavior-learner.ts +144 -0
- package/src/behavior-signals.ts +73 -0
- package/src/binary-lifecycle/backend.ts +117 -0
- package/src/binary-lifecycle/index.ts +35 -0
- package/src/binary-lifecycle/manifest.ts +79 -0
- package/src/binary-lifecycle/pipeline.ts +352 -0
- package/src/binary-lifecycle/scanner.ts +89 -0
- package/src/binary-lifecycle/types.ts +89 -0
- package/src/bootstrap.ts +178 -0
- package/src/boxes.ts +521 -0
- package/src/briefing.test.ts +1535 -0
- package/src/briefing.ts +1382 -0
- package/src/buffer-session.test.ts +443 -0
- package/src/buffer-surprise-report.ts +176 -0
- package/src/buffer-surprise-telemetry.test.ts +606 -0
- package/src/buffer-surprise-trigger.test.ts +766 -0
- package/src/buffer-surprise.test.ts +339 -0
- package/src/buffer-surprise.ts +203 -0
- package/src/buffer.ts +900 -0
- package/src/bulk-import/cli-command.test.ts +204 -0
- package/src/bulk-import/index.ts +34 -0
- package/src/bulk-import/pipeline.test.ts +445 -0
- package/src/bulk-import/pipeline.ts +178 -0
- package/src/bulk-import/registry.test.ts +151 -0
- package/src/bulk-import/registry.ts +72 -0
- package/src/bulk-import/types.test.ts +272 -0
- package/src/bulk-import/types.ts +145 -0
- package/src/calibration.ts +394 -0
- package/src/capsule-cli.test.ts +398 -0
- package/src/capsule-cli.ts +565 -0
- package/src/causal-behavior.ts +308 -0
- package/src/causal-chain.ts +419 -0
- package/src/causal-consolidation.ts +370 -0
- package/src/causal-retrieval.ts +286 -0
- package/src/causal-trajectory-graph.ts +60 -0
- package/src/causal-trajectory.ts +303 -0
- package/src/chunking.ts +220 -0
- package/src/citations.ts +232 -0
- package/src/cli.ts +9403 -0
- package/src/codex-cli-fallback.ts +162 -0
- package/src/codex-thread-key.ts +1 -0
- package/src/coding/access-coding-context.test.ts +197 -0
- package/src/coding/coding-branch-scope.test.ts +281 -0
- package/src/coding/coding-namespace.test.ts +360 -0
- package/src/coding/coding-namespace.ts +412 -0
- package/src/coding/coding-orchestrator.test.ts +249 -0
- package/src/coding/git-context.test.ts +507 -0
- package/src/coding/git-context.ts +336 -0
- package/src/coding/mcp-set-coding-context.test.ts +174 -0
- package/src/coding/review-context.test.ts +316 -0
- package/src/coding/review-context.ts +349 -0
- package/src/coding/wire-coding-context.test.ts +468 -0
- package/src/commitment-ledger.test.ts +78 -0
- package/src/commitment-ledger.ts +337 -0
- package/src/compat/checks.test.ts +206 -0
- package/src/compat/checks.ts +716 -0
- package/src/compat/types.ts +33 -0
- package/src/compounding/engine.ts +1686 -0
- package/src/compounding/preference-consolidator.ts +778 -0
- package/src/compression-optimizer.ts +312 -0
- package/src/config.test.ts +930 -0
- package/src/config.ts +3807 -0
- package/src/connectors/codex/instructions.md +160 -0
- package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
- package/src/connectors/codex-marketplace.ts +500 -0
- package/src/connectors/codex-materialize-runner.ts +212 -0
- package/src/connectors/codex-materialize.ts +983 -0
- package/src/connectors/coerce.ts +62 -0
- package/src/connectors/index.test.ts +1570 -0
- package/src/connectors/index.ts +3222 -0
- package/src/connectors/live/framework.ts +164 -0
- package/src/connectors/live/github.test.ts +1218 -0
- package/src/connectors/live/github.ts +1068 -0
- package/src/connectors/live/gmail.test.ts +1706 -0
- package/src/connectors/live/gmail.ts +1293 -0
- package/src/connectors/live/google-drive.test.ts +696 -0
- package/src/connectors/live/google-drive.ts +724 -0
- package/src/connectors/live/index.ts +101 -0
- package/src/connectors/live/live-connectors.test.ts +689 -0
- package/src/connectors/live/notion.test.ts +1109 -0
- package/src/connectors/live/notion.ts +978 -0
- package/src/connectors/live/registry.ts +103 -0
- package/src/connectors/live/state-store.ts +399 -0
- package/src/connectors/live/transient-errors.ts +150 -0
- package/src/connectors/weclone-installer.test.ts +850 -0
- package/src/connectors-cli.ts +513 -0
- package/src/console/state.test.ts +224 -0
- package/src/console/state.ts +514 -0
- package/src/console/trace.test.ts +813 -0
- package/src/console/trace.ts +603 -0
- package/src/console/tui.test.ts +582 -0
- package/src/console/tui.ts +508 -0
- package/src/consolidation-operator.ts +182 -0
- package/src/consolidation-provenance-check.ts +551 -0
- package/src/consolidation-undo.ts +718 -0
- package/src/contradiction/contradiction-judge.test.ts +189 -0
- package/src/contradiction/contradiction-judge.ts +333 -0
- package/src/contradiction/contradiction-review.ts +574 -0
- package/src/contradiction/contradiction-scan.ts +504 -0
- package/src/contradiction/contradiction.test.ts +2230 -0
- package/src/contradiction/index.ts +37 -0
- package/src/contradiction/resolution.ts +383 -0
- package/src/conversation-index/backend.ts +323 -0
- package/src/conversation-index/chunker.ts +47 -0
- package/src/conversation-index/cleanup.ts +53 -0
- package/src/conversation-index/faiss-adapter.ts +384 -0
- package/src/conversation-index/indexer.test.ts +164 -0
- package/src/conversation-index/indexer.ts +192 -0
- package/src/conversation-index/search.ts +37 -0
- package/src/cross-namespace-budget.test.ts +275 -0
- package/src/cross-namespace-budget.ts +365 -0
- package/src/cue-anchors.ts +163 -0
- package/src/curation/index.ts +544 -0
- package/src/dashboard-runtime.ts +337 -0
- package/src/day-summary.ts +122 -0
- package/src/dedup/index.ts +330 -0
- package/src/dedup/semantic.test.ts +1577 -0
- package/src/dedup/semantic.ts +148 -0
- package/src/delinearize.ts +193 -0
- package/src/direct-answer-wiring.test.ts +473 -0
- package/src/direct-answer-wiring.ts +180 -0
- package/src/direct-answer.test.ts +484 -0
- package/src/direct-answer.ts +273 -0
- package/src/embedding-fallback.ts +565 -0
- package/src/enrichment/audit.ts +89 -0
- package/src/enrichment/index.ts +27 -0
- package/src/enrichment/pipeline.ts +197 -0
- package/src/enrichment/provider-registry.ts +85 -0
- package/src/enrichment/types.ts +100 -0
- package/src/enrichment/web-search-provider.ts +63 -0
- package/src/entity-retrieval.ts +774 -0
- package/src/entity-schema.ts +239 -0
- package/src/evals.ts +1312 -0
- package/src/event-order-recall.test.ts +4164 -0
- package/src/event-order-recall.ts +2802 -0
- package/src/evidence-pack.test.ts +89 -0
- package/src/evidence-pack.ts +388 -0
- package/src/explicit-capture.ts +530 -0
- package/src/explicit-cue-recall.test.ts +3019 -0
- package/src/explicit-cue-recall.ts +5545 -0
- package/src/extraction-judge-telemetry.ts +234 -0
- package/src/extraction-judge-training.ts +221 -0
- package/src/extraction-judge.ts +846 -0
- package/src/extraction-timeout.test.ts +265 -0
- package/src/extraction.ts +2719 -0
- package/src/fallback-llm.test.ts +1060 -0
- package/src/fallback-llm.ts +918 -0
- package/src/focused-list-recall.test.ts +734 -0
- package/src/focused-list-recall.ts +1160 -0
- package/src/graph-dashboard-diff.ts +35 -0
- package/src/graph-dashboard-key.ts +5 -0
- package/src/graph-dashboard-parser.ts +104 -0
- package/src/graph-edge-reinforcement.ts +192 -0
- package/src/graph-events.ts +151 -0
- package/src/graph-recall.test.ts +164 -0
- package/src/graph-recall.ts +189 -0
- package/src/graph-retrieval.test.ts +809 -0
- package/src/graph-retrieval.ts +823 -0
- package/src/graph-snapshot.ts +329 -0
- package/src/graph.ts +813 -0
- package/src/harmonic-retrieval.ts +223 -0
- package/src/himem.ts +154 -0
- package/src/hygiene.ts +87 -0
- package/src/identity-continuity.ts +333 -0
- package/src/importance.ts +328 -0
- package/src/importers/base.test.ts +294 -0
- package/src/importers/base.ts +436 -0
- package/src/importers/index.ts +21 -0
- package/src/index.ts +1204 -0
- package/src/intent.ts +154 -0
- package/src/json-extract.ts +85 -0
- package/src/json-store.ts +42 -0
- package/src/lcm/archive.ts +617 -0
- package/src/lcm/dag.ts +199 -0
- package/src/lcm/engine.ts +645 -0
- package/src/lcm/index.ts +7 -0
- package/src/lcm/queue.test.ts +178 -0
- package/src/lcm/queue.ts +200 -0
- package/src/lcm/recall.ts +117 -0
- package/src/lcm/schema.ts +154 -0
- package/src/lcm/summarizer.ts +235 -0
- package/src/lcm/tools.ts +191 -0
- package/src/lcm-engine.test.ts +660 -0
- package/src/legacy-hook-compat.test.ts +20 -0
- package/src/legacy-hook-compat.ts +45 -0
- package/src/lifecycle.ts +289 -0
- package/src/live-connectors-runner.ts +385 -0
- package/src/local-llm-qos.test.ts +303 -0
- package/src/local-llm-thinking.test.ts +292 -0
- package/src/local-llm.ts +1464 -0
- package/src/logger.ts +49 -0
- package/src/maintenance/archive-observations.ts +147 -0
- package/src/maintenance/backup-stamp.ts +3 -0
- package/src/maintenance/dreams-ledger.ts +516 -0
- package/src/maintenance/first-start-migration.ts +362 -0
- package/src/maintenance/forget.test.ts +206 -0
- package/src/maintenance/forget.ts +126 -0
- package/src/maintenance/graph-edge-decay.test.ts +409 -0
- package/src/maintenance/graph-edge-decay.ts +394 -0
- package/src/maintenance/memory-governance-cron.ts +447 -0
- package/src/maintenance/memory-governance.ts +1039 -0
- package/src/maintenance/migrate-observations.ts +216 -0
- package/src/maintenance/observation-ledger-utils.ts +54 -0
- package/src/maintenance/pattern-reinforcement.test.ts +875 -0
- package/src/maintenance/pattern-reinforcement.ts +369 -0
- package/src/maintenance/purge.ts +334 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
- package/src/maintenance/rebuild-memory-projection.ts +1234 -0
- package/src/maintenance/rebuild-observations.ts +178 -0
- package/src/maintenance/tier-stats.test.ts +378 -0
- package/src/maintenance/tier-stats.ts +222 -0
- package/src/mcp-memory-inspector-app.ts +421 -0
- package/src/memory-action-policy.ts +80 -0
- package/src/memory-cache.ts +208 -0
- package/src/memory-extension/claude-code-publisher.ts +51 -0
- package/src/memory-extension/codex-publisher.ts +149 -0
- package/src/memory-extension/hermes-publisher.ts +51 -0
- package/src/memory-extension/index.ts +100 -0
- package/src/memory-extension/shared-instructions.ts +133 -0
- package/src/memory-extension/types.ts +86 -0
- package/src/memory-extension-host/host-discovery.ts +276 -0
- package/src/memory-extension-host/index.ts +14 -0
- package/src/memory-extension-host/render-extensions-block.ts +73 -0
- package/src/memory-extension-host/types.ts +21 -0
- package/src/memory-lifecycle-ledger-utils.ts +116 -0
- package/src/memory-projection-format.ts +11 -0
- package/src/memory-projection-store.ts +951 -0
- package/src/memory-provenance.test.ts +196 -0
- package/src/memory-provenance.ts +484 -0
- package/src/memory-worth-bench.test.ts +71 -0
- package/src/memory-worth-bench.ts +265 -0
- package/src/memory-worth-filter.test.ts +209 -0
- package/src/memory-worth-filter.ts +204 -0
- package/src/memory-worth-frontmatter.test.ts +311 -0
- package/src/memory-worth-outcomes.test.ts +316 -0
- package/src/memory-worth-outcomes.ts +286 -0
- package/src/memory-worth.test.ts +317 -0
- package/src/memory-worth.ts +215 -0
- package/src/message-parts/index.ts +806 -0
- package/src/message-parts/message-parts.test.ts +421 -0
- package/src/migrate/from-engram.ts +789 -0
- package/src/model-registry.ts +313 -0
- package/src/models-json.ts +76 -0
- package/src/namespaces/migrate.ts +187 -0
- package/src/namespaces/path.ts +25 -0
- package/src/namespaces/principal.test.ts +195 -0
- package/src/namespaces/principal.ts +86 -0
- package/src/namespaces/search.test.ts +105 -0
- package/src/namespaces/search.ts +233 -0
- package/src/namespaces/storage.ts +74 -0
- package/src/native-knowledge.ts +1823 -0
- package/src/negative.ts +72 -0
- package/src/network/tailscale.ts +179 -0
- package/src/network/webdav.ts +385 -0
- package/src/objective-state-writers.ts +951 -0
- package/src/objective-state.ts +320 -0
- package/src/onboarding/index.ts +529 -0
- package/src/openai-chat-compat.ts +56 -0
- package/src/operator-toolkit.ts +2132 -0
- package/src/opik-exporter.test.ts +72 -0
- package/src/opik-exporter.ts +587 -0
- package/src/orchestrator-extraction-queue.test.ts +197 -0
- package/src/orchestrator-flush.test.ts +1171 -0
- package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
- package/src/orchestrator-source-attribution.test.ts +701 -0
- package/src/orchestrator.ts +16368 -0
- package/src/page-versioning.ts +450 -0
- package/src/patterns-cli.ts +574 -0
- package/src/peers/index.ts +54 -0
- package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
- package/src/peers/migrate-from-identity-anchor.ts +350 -0
- package/src/peers/peers.test.ts +419 -0
- package/src/peers/profile-reasoner.ts +694 -0
- package/src/peers/storage.ts +1350 -0
- package/src/peers/types.ts +138 -0
- package/src/plugin-id.ts +84 -0
- package/src/policy-runtime.ts +209 -0
- package/src/procedural/procedure-miner.ts +150 -0
- package/src/procedural/procedure-recall.ts +93 -0
- package/src/procedural/procedure-stats.ts +213 -0
- package/src/procedural/procedure-types.ts +132 -0
- package/src/procedural/reinforcement-core.test.ts +132 -0
- package/src/procedural/reinforcement-core.ts +73 -0
- package/src/profiling.test.ts +263 -0
- package/src/profiling.ts +435 -0
- package/src/projection/index.ts +398 -0
- package/src/qmd-recall-cache.test.ts +138 -0
- package/src/qmd-recall-cache.ts +111 -0
- package/src/qmd.test.ts +258 -0
- package/src/qmd.ts +2614 -0
- package/src/reasoning-trace-recall.ts +201 -0
- package/src/reasoning-trace-types.ts +235 -0
- package/src/recall-audit-anomaly.test.ts +246 -0
- package/src/recall-audit-anomaly.ts +297 -0
- package/src/recall-audit.test.ts +51 -0
- package/src/recall-audit.ts +72 -0
- package/src/recall-budget-config.test.ts +87 -0
- package/src/recall-disclosure-escalation.test.ts +196 -0
- package/src/recall-disclosure-escalation.ts +158 -0
- package/src/recall-disclosure-shaping.test.ts +146 -0
- package/src/recall-disclosure.test.ts +214 -0
- package/src/recall-explain-renderer.test.ts +140 -0
- package/src/recall-explain-renderer.ts +356 -0
- package/src/recall-mmr.test.ts +808 -0
- package/src/recall-mmr.ts +607 -0
- package/src/recall-qos.test.ts +85 -0
- package/src/recall-qos.ts +82 -0
- package/src/recall-query-policy.ts +221 -0
- package/src/recall-state.test.ts +233 -0
- package/src/recall-state.ts +456 -0
- package/src/recall-tag-filter.ts +143 -0
- package/src/recall-tokenization.ts +35 -0
- package/src/recall-xray-cli.test.ts +118 -0
- package/src/recall-xray-cli.ts +100 -0
- package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
- package/src/recall-xray-renderer.test.ts +539 -0
- package/src/recall-xray-renderer.ts +487 -0
- package/src/recall-xray.test.ts +503 -0
- package/src/recall-xray.ts +621 -0
- package/src/reconstruct.ts +41 -0
- package/src/release-changelog.ts +35 -0
- package/src/relevance.ts +67 -0
- package/src/replay/normalizers/chatgpt.ts +133 -0
- package/src/replay/normalizers/claude.ts +102 -0
- package/src/replay/normalizers/openclaw.ts +119 -0
- package/src/replay/normalizers/shared.ts +69 -0
- package/src/replay/runner.ts +197 -0
- package/src/replay/types.ts +143 -0
- package/src/rerank.test.ts +48 -0
- package/src/rerank.ts +176 -0
- package/src/resolve-auth-token.test.ts +226 -0
- package/src/resolve-auth-token.ts +151 -0
- package/src/resolve-provider-secret.test.ts +187 -0
- package/src/resolve-provider-secret.ts +410 -0
- package/src/response-guidance-recall.test.ts +3952 -0
- package/src/response-guidance-recall.ts +4431 -0
- package/src/resume-bundles.ts +415 -0
- package/src/retrieval-agents.ts +623 -0
- package/src/retrieval-tiers.ts +25 -0
- package/src/retrieval.ts +104 -0
- package/src/review/index.test.ts +201 -0
- package/src/review/index.ts +536 -0
- package/src/routing/engine.ts +162 -0
- package/src/routing/store.ts +321 -0
- package/src/runtime/better-sqlite.test.ts +32 -0
- package/src/runtime/better-sqlite.ts +76 -0
- package/src/runtime/child-process.ts +67 -0
- package/src/runtime/env.ts +48 -0
- package/src/sanitize.ts +58 -0
- package/src/schemas.ts +449 -0
- package/src/sdk-compat.ts +87 -0
- package/src/search/document-scanner.ts +96 -0
- package/src/search/embed-helper.ts +142 -0
- package/src/search/factory.ts +189 -0
- package/src/search/index.ts +10 -0
- package/src/search/lancedb-backend.ts +342 -0
- package/src/search/meilisearch-backend.ts +232 -0
- package/src/search/noop-backend.ts +57 -0
- package/src/search/orama-backend.ts +358 -0
- package/src/search/port.ts +86 -0
- package/src/search/remote-backend.ts +124 -0
- package/src/secure-store/cipher.ts +271 -0
- package/src/secure-store/cli-handlers.ts +355 -0
- package/src/secure-store/cli-renderer.ts +131 -0
- package/src/secure-store/header.ts +373 -0
- package/src/secure-store/index.ts +137 -0
- package/src/secure-store/kdf.ts +263 -0
- package/src/secure-store/keyring.ts +106 -0
- package/src/secure-store/metadata.ts +394 -0
- package/src/secure-store/passphrase-reader.ts +252 -0
- package/src/secure-store/secure-fs.ts +571 -0
- package/src/secure-store/secure-store.test.ts +755 -0
- package/src/semantic-chunking.ts +545 -0
- package/src/semantic-consolidation.test.ts +182 -0
- package/src/semantic-consolidation.ts +432 -0
- package/src/semantic-rule-promotion.ts +183 -0
- package/src/semantic-rule-verifier.ts +160 -0
- package/src/session-integrity.ts +569 -0
- package/src/session-observer-bands.ts +11 -0
- package/src/session-observer-state.ts +346 -0
- package/src/session-toggles.test.ts +96 -0
- package/src/session-toggles.ts +159 -0
- package/src/shared-context/manager.ts +810 -0
- package/src/signal.ts +84 -0
- package/src/skills-registry.test.ts +277 -0
- package/src/skills-registry.ts +120 -0
- package/src/source-attribution-roundtrip.test.ts +215 -0
- package/src/source-attribution.test.ts +1425 -0
- package/src/source-attribution.ts +639 -0
- package/src/spaces/index.ts +627 -0
- package/src/storage-paths.ts +117 -0
- package/src/storage.ts +6657 -0
- package/src/store-contract.ts +55 -0
- package/src/summarizer.ts +844 -0
- package/src/summary-snapshot.test.ts +681 -0
- package/src/summary-snapshot.ts +238 -0
- package/src/surfaces/dreams.test.ts +394 -0
- package/src/surfaces/dreams.ts +346 -0
- package/src/surfaces/heartbeat.test.ts +415 -0
- package/src/surfaces/heartbeat.ts +325 -0
- package/src/sync/index.ts +308 -0
- package/src/targeted-fact-recall.test.ts +1694 -0
- package/src/targeted-fact-recall.ts +2905 -0
- package/src/taxonomy/default-taxonomy.ts +87 -0
- package/src/taxonomy/index.ts +26 -0
- package/src/taxonomy/resolver-doc-generator.ts +57 -0
- package/src/taxonomy/resolver.ts +184 -0
- package/src/taxonomy/taxonomy-loader.ts +186 -0
- package/src/taxonomy/types.ts +48 -0
- package/src/telemetry-transcript.ts +70 -0
- package/src/temporal-index.ts +890 -0
- package/src/temporal-supersession.test.ts +2703 -0
- package/src/temporal-supersession.ts +493 -0
- package/src/temporal-validity.test.ts +448 -0
- package/src/temporal-validity.ts +123 -0
- package/src/threading.ts +395 -0
- package/src/tier-migration.ts +124 -0
- package/src/tier-routing.ts +102 -0
- package/src/tmt.ts +462 -0
- package/src/tokens.test.ts +178 -0
- package/src/tokens.ts +279 -0
- package/src/topics.ts +147 -0
- package/src/training-export/cli-date-validation.test.ts +258 -0
- package/src/training-export/converter.test.ts +452 -0
- package/src/training-export/converter.ts +319 -0
- package/src/training-export/date-parse.ts +117 -0
- package/src/training-export/index.ts +26 -0
- package/src/training-export/registry.test.ts +85 -0
- package/src/training-export/registry.ts +57 -0
- package/src/training-export/types.ts +31 -0
- package/src/transcript.ts +1179 -0
- package/src/transfer/autodetect.ts +30 -0
- package/src/transfer/backup.ts +138 -0
- package/src/transfer/capsule-crypto.ts +485 -0
- package/src/transfer/capsule-encrypt.test.ts +690 -0
- package/src/transfer/capsule-export.ts +543 -0
- package/src/transfer/capsule-fork.ts +375 -0
- package/src/transfer/capsule-import.ts +564 -0
- package/src/transfer/capsule-merge.ts +433 -0
- package/src/transfer/conflict-policy.ts +16 -0
- package/src/transfer/constants.ts +13 -0
- package/src/transfer/exclusions.ts +37 -0
- package/src/transfer/export-json.ts +65 -0
- package/src/transfer/export-md.ts +59 -0
- package/src/transfer/export-sqlite.ts +52 -0
- package/src/transfer/fs-utils.ts +269 -0
- package/src/transfer/import-json.ts +108 -0
- package/src/transfer/import-md.ts +84 -0
- package/src/transfer/import-sqlite.ts +100 -0
- package/src/transfer/integrity.ts +71 -0
- package/src/transfer/sqlite-schema.ts +16 -0
- package/src/transfer/types.ts +297 -0
- package/src/trust-zones.ts +1186 -0
- package/src/types.ts +3074 -0
- package/src/user-model.test.ts +124 -0
- package/src/user-model.ts +162 -0
- package/src/utility-learner.ts +353 -0
- package/src/utility-runtime.ts +88 -0
- package/src/utility-telemetry.ts +215 -0
- package/src/utils/category-dir.ts +44 -0
- package/src/utils/errno.ts +6 -0
- package/src/utils/iso-timestamp.test.ts +37 -0
- package/src/utils/iso-timestamp.ts +164 -0
- package/src/utils/path.ts +26 -0
- package/src/verified-recall.ts +138 -0
- package/src/version-utils.test.ts +10 -0
- package/src/version-utils.ts +9 -0
- package/src/whitespace.ts +10 -0
- package/src/work/board.ts +359 -0
- package/src/work/boundary.ts +107 -0
- package/src/work/storage.ts +436 -0
- package/src/work/types.ts +82 -0
- package/src/work-product-ledger.ts +265 -0
- package/dist/access-service-DDjzFALq.d.ts +0 -2088
- package/dist/capsule-crypto-SJS5VVAP.js +0 -18
- package/dist/capsule-export-7QNCBZOQ.js +0 -17
- package/dist/capsule-import-EPBHD2EN.js +0 -16
- package/dist/capsule-merge-DI7PNQ2H.js +0 -189
- package/dist/chunk-23ZZK64Y.js +0 -26
- package/dist/chunk-23ZZK64Y.js.map +0 -1
- package/dist/chunk-242S3I2A.js +0 -647
- package/dist/chunk-2LGMW3DJ.js +0 -111
- package/dist/chunk-3B6KIRBH.js +0 -5213
- package/dist/chunk-3B6KIRBH.js.map +0 -1
- package/dist/chunk-457A4P3L.js +0 -119
- package/dist/chunk-457A4P3L.js.map +0 -1
- package/dist/chunk-4IS4SXIQ.js +0 -2040
- package/dist/chunk-4YM32CRU.js +0 -721
- package/dist/chunk-6TBWYBJ3.js +0 -236
- package/dist/chunk-74EMIVE4.js +0 -329
- package/dist/chunk-74EMIVE4.js.map +0 -1
- package/dist/chunk-767ODGE6.js +0 -183
- package/dist/chunk-7V22HTMD.js +0 -623
- package/dist/chunk-7V22HTMD.js.map +0 -1
- package/dist/chunk-7ZM3BFKK.js +0 -9705
- package/dist/chunk-7ZM3BFKK.js.map +0 -1
- package/dist/chunk-AQJNPMOA.js +0 -643
- package/dist/chunk-AQJNPMOA.js.map +0 -1
- package/dist/chunk-ASAITVLA.js +0 -64
- package/dist/chunk-ASAITVLA.js.map +0 -1
- package/dist/chunk-BBE34QBJ.js +0 -275
- package/dist/chunk-BBE34QBJ.js.map +0 -1
- package/dist/chunk-BZSQEPRW.js +0 -14710
- package/dist/chunk-BZSQEPRW.js.map +0 -1
- package/dist/chunk-CPKTBRS2.js +0 -891
- package/dist/chunk-CPKTBRS2.js.map +0 -1
- package/dist/chunk-D4GAOFF6.js +0 -562
- package/dist/chunk-D4GAOFF6.js.map +0 -1
- package/dist/chunk-D54LZC5L.js +0 -147
- package/dist/chunk-DF3RVK3X.js +0 -119
- package/dist/chunk-DF3RVK3X.js.map +0 -1
- package/dist/chunk-DZZPC36E.js +0 -1451
- package/dist/chunk-DZZPC36E.js.map +0 -1
- package/dist/chunk-E2UCDP5S.js +0 -570
- package/dist/chunk-E6K4NIEU.js +0 -747
- package/dist/chunk-E6K4NIEU.js.map +0 -1
- package/dist/chunk-EEQLFRUM.js +0 -89
- package/dist/chunk-ETOW6ACV.js +0 -158
- package/dist/chunk-ETOW6ACV.js.map +0 -1
- package/dist/chunk-FMEBPEAO.js +0 -347
- package/dist/chunk-FMEBPEAO.js.map +0 -1
- package/dist/chunk-FQDPCE3I.js +0 -1837
- package/dist/chunk-FQDPCE3I.js.map +0 -1
- package/dist/chunk-FYIYMQ5N.js +0 -221
- package/dist/chunk-FYIYMQ5N.js.map +0 -1
- package/dist/chunk-G2WADRQ3.js +0 -219
- package/dist/chunk-G4SK7DSQ.js +0 -121
- package/dist/chunk-GVPWB7EY.js +0 -390
- package/dist/chunk-GVPWB7EY.js.map +0 -1
- package/dist/chunk-HELQZFZO.js +0 -1075
- package/dist/chunk-HL5LRPNA.js +0 -1914
- package/dist/chunk-HL5LRPNA.js.map +0 -1
- package/dist/chunk-HQZVVSVB.js +0 -147
- package/dist/chunk-HQZVVSVB.js.map +0 -1
- package/dist/chunk-HY3L4WKC.js +0 -2195
- package/dist/chunk-HY3L4WKC.js.map +0 -1
- package/dist/chunk-IB3BFHGN.js +0 -228
- package/dist/chunk-IXEJRKCZ.js +0 -18
- package/dist/chunk-JBMSGZEQ.js +0 -441
- package/dist/chunk-JBMSGZEQ.js.map +0 -1
- package/dist/chunk-JESOB2HO.js +0 -108
- package/dist/chunk-JKDVIE52.js +0 -272
- package/dist/chunk-JRNQ3RNA.js +0 -284
- package/dist/chunk-JRNQ3RNA.js.map +0 -1
- package/dist/chunk-K6WK37A6.js +0 -865
- package/dist/chunk-K6WK37A6.js.map +0 -1
- package/dist/chunk-MARWOCVP.js +0 -48
- package/dist/chunk-MNU6ZBWT.js +0 -4454
- package/dist/chunk-MNU6ZBWT.js.map +0 -1
- package/dist/chunk-N5AKDXAI.js +0 -74
- package/dist/chunk-OA3L7BFR.js +0 -183
- package/dist/chunk-OA3L7BFR.js.map +0 -1
- package/dist/chunk-OR64ZGRZ.js +0 -23
- package/dist/chunk-P77UEOU2.js +0 -1521
- package/dist/chunk-P77UEOU2.js.map +0 -1
- package/dist/chunk-PH4C2U43.js +0 -239
- package/dist/chunk-PH4C2U43.js.map +0 -1
- package/dist/chunk-RVPLBATS.js +0 -1586
- package/dist/chunk-RVPLBATS.js.map +0 -1
- package/dist/chunk-U5JMRGKX.js +0 -340
- package/dist/chunk-U5JMRGKX.js.map +0 -1
- package/dist/chunk-URB2WSKZ.js +0 -350
- package/dist/chunk-URB2WSKZ.js.map +0 -1
- package/dist/chunk-UVMUAWVT.js +0 -596
- package/dist/chunk-WEJG4TB5.js +0 -118
- package/dist/chunk-X7HPGUVG.js +0 -271
- package/dist/chunk-XAMBKFQS.js +0 -2777
- package/dist/chunk-XAMBKFQS.js.map +0 -1
- package/dist/chunk-XJKFSSDW.js +0 -726
- package/dist/chunk-XJKFSSDW.js.map +0 -1
- package/dist/chunk-XMHBH5H6.js +0 -283
- package/dist/chunk-XMHBH5H6.js.map +0 -1
- package/dist/chunk-XMVFHBHT.js +0 -277
- package/dist/chunk-Y3VMVTYX.js +0 -53
- package/dist/chunk-YNB73F22.js +0 -137
- package/dist/chunk-YNB73F22.js.map +0 -1
- package/dist/chunk-Z2E7VW55.js +0 -335
- package/dist/chunk-Z2E7VW55.js.map +0 -1
- package/dist/chunk-ZG7PTKBK.js +0 -2296
- package/dist/chunk-ZNQN6ZTA.js +0 -135
- package/dist/chunk-ZVTKDVVM.js +0 -827
- package/dist/chunk-ZVTKDVVM.js.map +0 -1
- package/dist/cli-BR8KpIU0.d.ts +0 -1259
- package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
- package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
- package/dist/contradiction-review-5LTTVDQV.js +0 -22
- package/dist/contradiction-scan-QTXAMBUA.js +0 -414
- package/dist/contradiction-scan-QTXAMBUA.js.map +0 -1
- package/dist/engine-35M5BKQ7.js +0 -28
- package/dist/fs-utils-IRVUFB6G.js +0 -30
- package/dist/graph-edge-decay-PWB63GRE.js +0 -207
- package/dist/memory-governance-IMPQZXFC.js +0 -37
- package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
- package/dist/orchestrator-DDMPqU6R.d.ts +0 -1792
- package/dist/path-RMTY5Y5A.js +0 -9
- package/dist/port-B6VEDIkC.d.ts +0 -53
- package/dist/resolution-YGIBORXI.js +0 -101
- package/dist/resolution-YGIBORXI.js.map +0 -1
- package/dist/secure-store-4R2GSO7S.js +0 -156
- package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
- package/dist/state-store-3EH7HYIN.js +0 -16
- package/dist/types-V3FJ26TF.js +0 -30
- /package/dist/{capsule-crypto-SJS5VVAP.js.map → adapters/claude-code.js.map} +0 -0
- /package/dist/{capsule-export-7QNCBZOQ.js.map → adapters/codex.js.map} +0 -0
- /package/dist/{capsule-import-EPBHD2EN.js.map → adapters/hermes.js.map} +0 -0
- /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/index.js.map} +0 -0
- /package/dist/{engine-35M5BKQ7.js.map → adapters/registry.js.map} +0 -0
- /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/replit.js.map} +0 -0
- /package/dist/{memory-governance-IMPQZXFC.js.map → adapters/types.js.map} +0 -0
- /package/dist/{path-RMTY5Y5A.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
- /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
- /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
- /package/dist/{chunk-X7HPGUVG.js.map → chunk-4CRG46BG.js.map} +0 -0
- /package/dist/{chunk-UVMUAWVT.js.map → chunk-7IASACLB.js.map} +0 -0
- /package/dist/{chunk-HELQZFZO.js.map → chunk-EDTHC6UD.js.map} +0 -0
- /package/dist/{chunk-4YM32CRU.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
- /package/dist/{chunk-E2UCDP5S.js.map → chunk-FBYESMQ2.js.map} +0 -0
- /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
- /package/dist/{chunk-IB3BFHGN.js.map → chunk-GGKRUQOO.js.map} +0 -0
- /package/dist/{chunk-242S3I2A.js.map → chunk-GL6I6MEQ.js.map} +0 -0
- /package/dist/{secure-store-4R2GSO7S.js.map → chunk-HHLLAQGZ.js.map} +0 -0
- /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
- /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
- /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
- /package/dist/{chunk-WEJG4TB5.js.map → chunk-MC26UJIM.js.map} +0 -0
- /package/dist/{chunk-JKDVIE52.js.map → chunk-MGKYQQYF.js.map} +0 -0
- /package/dist/{chunk-Y3VMVTYX.js.map → chunk-MT4HVDUZ.js.map} +0 -0
- /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
- /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
- /package/dist/{chunk-JESOB2HO.js.map → chunk-P4NEIHUT.js.map} +0 -0
- /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
- /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
- /package/dist/{state-store-3EH7HYIN.js.map → chunk-SEDEKFYQ.js.map} +0 -0
- /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
- /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
- /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
- /package/dist/{types-V3FJ26TF.js.map → chunk-V5OCT34X.js.map} +0 -0
- /package/dist/{chunk-ZG7PTKBK.js.map → chunk-W3LR522O.js.map} +0 -0
- /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
- /package/dist/{chunk-ZNQN6ZTA.js.map → chunk-XVZ7B3HG.js.map} +0 -0
- /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// src/buffer-surprise-report.ts
|
|
2
|
+
async function reportBufferSurpriseDistribution(readEvents, options = {}) {
|
|
3
|
+
const limit = normalizeReportLimit(options.limit);
|
|
4
|
+
const raw = await readEvents({ limit, since: options.since });
|
|
5
|
+
const sinceMs = typeof options.since === "string" && options.since.length > 0 ? Date.parse(options.since) : Number.NaN;
|
|
6
|
+
const rows = raw.filter((row) => {
|
|
7
|
+
if (!row || row.event !== "BUFFER_SURPRISE") return false;
|
|
8
|
+
const ts = Date.parse(row.timestamp);
|
|
9
|
+
if (!Number.isFinite(ts)) return false;
|
|
10
|
+
if (typeof row.surpriseScore !== "number") return false;
|
|
11
|
+
if (!Number.isFinite(row.surpriseScore)) return false;
|
|
12
|
+
if (row.surpriseScore < 0 || row.surpriseScore > 1) return false;
|
|
13
|
+
if (typeof row.triggeredFlush !== "boolean") return false;
|
|
14
|
+
if (Number.isFinite(sinceMs)) {
|
|
15
|
+
if (!Number.isFinite(ts) || ts <= sinceMs) return false;
|
|
16
|
+
}
|
|
17
|
+
return true;
|
|
18
|
+
}).sort((left, right) => Date.parse(left.timestamp) - Date.parse(right.timestamp));
|
|
19
|
+
const windowStart = Math.max(0, rows.length - limit);
|
|
20
|
+
const windowRows = rows.slice(windowStart);
|
|
21
|
+
if (windowRows.length === 0) {
|
|
22
|
+
return {
|
|
23
|
+
count: 0,
|
|
24
|
+
triggeredCount: 0,
|
|
25
|
+
triggeredRate: 0,
|
|
26
|
+
mean: 0,
|
|
27
|
+
median: 0,
|
|
28
|
+
p90: 0,
|
|
29
|
+
min: 0,
|
|
30
|
+
max: 0,
|
|
31
|
+
currentThreshold: null
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const scores = windowRows.map((r) => r.surpriseScore).sort((a, b) => a - b);
|
|
35
|
+
const triggeredCount = windowRows.reduce(
|
|
36
|
+
(acc, r) => acc + (r.triggeredFlush ? 1 : 0),
|
|
37
|
+
0
|
|
38
|
+
);
|
|
39
|
+
const sum = scores.reduce((acc, v) => acc + v, 0);
|
|
40
|
+
const mean = sum / scores.length;
|
|
41
|
+
const median = percentile(scores, 0.5);
|
|
42
|
+
const p90 = percentile(scores, 0.9);
|
|
43
|
+
const mostRecent = windowRows[windowRows.length - 1];
|
|
44
|
+
const currentThreshold = mostRecent && typeof mostRecent.threshold === "number" ? mostRecent.threshold : null;
|
|
45
|
+
return {
|
|
46
|
+
count: scores.length,
|
|
47
|
+
triggeredCount,
|
|
48
|
+
triggeredRate: triggeredCount / scores.length,
|
|
49
|
+
mean,
|
|
50
|
+
median,
|
|
51
|
+
p90,
|
|
52
|
+
min: scores[0],
|
|
53
|
+
max: scores[scores.length - 1],
|
|
54
|
+
currentThreshold
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function normalizeReportLimit(limit) {
|
|
58
|
+
if (limit === void 0) return 200;
|
|
59
|
+
if (typeof limit !== "number" || !Number.isFinite(limit)) return 200;
|
|
60
|
+
const floored = Math.floor(limit);
|
|
61
|
+
return floored > 0 ? floored : 200;
|
|
62
|
+
}
|
|
63
|
+
function percentile(sorted, p) {
|
|
64
|
+
if (sorted.length === 0) return 0;
|
|
65
|
+
const clamped = Math.max(0, Math.min(1, p));
|
|
66
|
+
const rank = Math.max(1, Math.ceil(clamped * sorted.length));
|
|
67
|
+
return sorted[rank - 1];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
reportBufferSurpriseDistribution
|
|
72
|
+
};
|
|
73
|
+
//# sourceMappingURL=chunk-YBPYIAA5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/buffer-surprise-report.ts"],"sourcesContent":["/**\n * Buffer-surprise telemetry report (issue #563 PR 3).\n *\n * Reads the append-only `state/buffer-surprise-ledger.jsonl` file written\n * by `SmartBuffer` and summarizes the recent distribution of surprise\n * scores for the Doctor surface. This module is intentionally standalone\n * and pure — the only I/O is reading the ledger via the injected\n * `readEvents` callback, so it can be exercised directly in tests\n * without touching the filesystem.\n *\n * # Output shape\n *\n * `BufferSurpriseDistribution` has fields sized for a one-screen Doctor\n * display:\n *\n * - `count` — rows considered in the summary window.\n * - `triggeredCount` — rows whose `triggeredFlush === true`.\n * - `triggeredRate` — `triggeredCount / count`, or `0` when empty.\n * - `mean` — arithmetic mean of `surpriseScore`.\n * - `median` — middle value (50th percentile).\n * - `p90` — 90th percentile (tail of novelty).\n * - `min`, `max` — window extremes.\n * - `currentThreshold` — threshold from the MOST RECENT row, or `null`.\n *\n * All percentile math uses the nearest-rank method (no interpolation) so\n * the report is stable across small windows.\n *\n * # Why a pure function + injected reader?\n *\n * The Doctor surface is exercised both at runtime (through the CLI and\n * gateway tools) and in tests. A pure distribution helper fed from an\n * arbitrary `readEvents` callback keeps the report logic trivially\n * testable without spinning up a real `StorageManager`.\n */\n\nimport type { BufferSurpriseEvent } from \"./types.js\";\n\nexport interface BufferSurpriseDistribution {\n count: number;\n triggeredCount: number;\n triggeredRate: number;\n mean: number;\n median: number;\n p90: number;\n min: number;\n max: number;\n currentThreshold: number | null;\n}\n\nexport interface BufferSurpriseReportOptions {\n /**\n * Maximum number of recent rows to include. Defaults to `200` — large\n * enough to see a distribution, small enough to read in one sitting.\n */\n limit?: number;\n /** Lower-bound ISO timestamp; rows at or before this are excluded. */\n since?: string;\n}\n\n/**\n * Reader callback shape. The helper does not want to know whether the\n * rows come from a file, a queue, or an in-memory buffer.\n */\nexport type BufferSurpriseReader = (\n options: BufferSurpriseReportOptions,\n) => Promise<readonly BufferSurpriseEvent[]>;\n\n/**\n * Summarize the recent buffer-surprise distribution. Returns the empty\n * distribution shape when the ledger has no applicable rows — callers can\n * detect this via `count === 0` and render \"no data yet\".\n */\nexport async function reportBufferSurpriseDistribution(\n readEvents: BufferSurpriseReader,\n options: BufferSurpriseReportOptions = {},\n): Promise<BufferSurpriseDistribution> {\n const limit = normalizeReportLimit(options.limit);\n const raw = await readEvents({ limit, since: options.since });\n\n // Filter for sanity: finite numeric scores in [0, 1], event tag match,\n // and the optional `since` lower bound. Malformed rows are skipped.\n const sinceMs =\n typeof options.since === \"string\" && options.since.length > 0\n ? Date.parse(options.since)\n : Number.NaN;\n const rows = raw.filter((row): row is BufferSurpriseEvent => {\n if (!row || row.event !== \"BUFFER_SURPRISE\") return false;\n const ts = Date.parse(row.timestamp);\n if (!Number.isFinite(ts)) return false;\n if (typeof row.surpriseScore !== \"number\") return false;\n if (!Number.isFinite(row.surpriseScore)) return false;\n if (row.surpriseScore < 0 || row.surpriseScore > 1) return false;\n // `triggeredFlush` must be a real boolean — not a string or other\n // truthy value. A row with `triggeredFlush: \"false\"` (string from a\n // JSON-parsing bug upstream) would otherwise be counted as\n // triggered, inflating the rate and misleading operators tuning the\n // threshold from real traffic.\n if (typeof row.triggeredFlush !== \"boolean\") return false;\n if (Number.isFinite(sinceMs)) {\n if (!Number.isFinite(ts) || ts <= sinceMs) return false;\n }\n return true;\n }).sort((left, right) => Date.parse(left.timestamp) - Date.parse(right.timestamp));\n\n const windowStart = Math.max(0, rows.length - limit);\n const windowRows = rows.slice(windowStart);\n\n if (windowRows.length === 0) {\n return {\n count: 0,\n triggeredCount: 0,\n triggeredRate: 0,\n mean: 0,\n median: 0,\n p90: 0,\n min: 0,\n max: 0,\n currentThreshold: null,\n };\n }\n\n const scores = windowRows.map((r) => r.surpriseScore).sort((a, b) => a - b);\n const triggeredCount = windowRows.reduce(\n (acc, r) => acc + (r.triggeredFlush ? 1 : 0),\n 0,\n );\n const sum = scores.reduce((acc, v) => acc + v, 0);\n const mean = sum / scores.length;\n\n // Nearest-rank percentiles keep the output stable for small windows.\n const median = percentile(scores, 0.5);\n const p90 = percentile(scores, 0.9);\n\n // \"Current\" threshold is whichever was in force for the most recent row\n // — not necessarily the one configured right now, but the value the\n // ledger rows were judged against. That's what operators need to reason\n // about the distribution.\n const mostRecent = windowRows[windowRows.length - 1];\n const currentThreshold =\n mostRecent && typeof mostRecent.threshold === \"number\"\n ? mostRecent.threshold\n : null;\n\n return {\n count: scores.length,\n triggeredCount,\n triggeredRate: triggeredCount / scores.length,\n mean,\n median,\n p90,\n min: scores[0]!,\n max: scores[scores.length - 1]!,\n currentThreshold,\n };\n}\n\nfunction normalizeReportLimit(limit: number | undefined): number {\n if (limit === undefined) return 200;\n if (typeof limit !== \"number\" || !Number.isFinite(limit)) return 200;\n const floored = Math.floor(limit);\n return floored > 0 ? floored : 200;\n}\n\n/**\n * Nearest-rank percentile of a pre-sorted ascending array.\n *\n * Returns `sorted[ceil(p * n) - 1]`, with `p` clamped to `[0, 1]`.\n * This avoids the interpolation ambiguity of R-7/R-8 percentiles and is\n * stable when the window is small (e.g. 3-5 rows).\n */\nfunction percentile(sorted: readonly number[], p: number): number {\n if (sorted.length === 0) return 0;\n const clamped = Math.max(0, Math.min(1, p));\n const rank = Math.max(1, Math.ceil(clamped * sorted.length));\n return sorted[rank - 1]!;\n}\n"],"mappings":";AAwEA,eAAsB,iCACpB,YACA,UAAuC,CAAC,GACH;AACrC,QAAM,QAAQ,qBAAqB,QAAQ,KAAK;AAChD,QAAM,MAAM,MAAM,WAAW,EAAE,OAAO,OAAO,QAAQ,MAAM,CAAC;AAI5D,QAAM,UACJ,OAAO,QAAQ,UAAU,YAAY,QAAQ,MAAM,SAAS,IACxD,KAAK,MAAM,QAAQ,KAAK,IACxB,OAAO;AACb,QAAM,OAAO,IAAI,OAAO,CAAC,QAAoC;AAC3D,QAAI,CAAC,OAAO,IAAI,UAAU,kBAAmB,QAAO;AACpD,UAAM,KAAK,KAAK,MAAM,IAAI,SAAS;AACnC,QAAI,CAAC,OAAO,SAAS,EAAE,EAAG,QAAO;AACjC,QAAI,OAAO,IAAI,kBAAkB,SAAU,QAAO;AAClD,QAAI,CAAC,OAAO,SAAS,IAAI,aAAa,EAAG,QAAO;AAChD,QAAI,IAAI,gBAAgB,KAAK,IAAI,gBAAgB,EAAG,QAAO;AAM3D,QAAI,OAAO,IAAI,mBAAmB,UAAW,QAAO;AACpD,QAAI,OAAO,SAAS,OAAO,GAAG;AAC5B,UAAI,CAAC,OAAO,SAAS,EAAE,KAAK,MAAM,QAAS,QAAO;AAAA,IACpD;AACA,WAAO;AAAA,EACT,CAAC,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,MAAM,KAAK,SAAS,IAAI,KAAK,MAAM,MAAM,SAAS,CAAC;AAEjF,QAAM,cAAc,KAAK,IAAI,GAAG,KAAK,SAAS,KAAK;AACnD,QAAM,aAAa,KAAK,MAAM,WAAW;AAEzC,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,MACL,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,eAAe;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,kBAAkB;AAAA,IACpB;AAAA,EACF;AAEA,QAAM,SAAS,WAAW,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;AAC1E,QAAM,iBAAiB,WAAW;AAAA,IAChC,CAAC,KAAK,MAAM,OAAO,EAAE,iBAAiB,IAAI;AAAA,IAC1C;AAAA,EACF;AACA,QAAM,MAAM,OAAO,OAAO,CAAC,KAAK,MAAM,MAAM,GAAG,CAAC;AAChD,QAAM,OAAO,MAAM,OAAO;AAG1B,QAAM,SAAS,WAAW,QAAQ,GAAG;AACrC,QAAM,MAAM,WAAW,QAAQ,GAAG;AAMlC,QAAM,aAAa,WAAW,WAAW,SAAS,CAAC;AACnD,QAAM,mBACJ,cAAc,OAAO,WAAW,cAAc,WAC1C,WAAW,YACX;AAEN,SAAO;AAAA,IACL,OAAO,OAAO;AAAA,IACd;AAAA,IACA,eAAe,iBAAiB,OAAO;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAK,OAAO,CAAC;AAAA,IACb,KAAK,OAAO,OAAO,SAAS,CAAC;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,OAAmC;AAC/D,MAAI,UAAU,OAAW,QAAO;AAChC,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACjE,QAAM,UAAU,KAAK,MAAM,KAAK;AAChC,SAAO,UAAU,IAAI,UAAU;AACjC;AASA,SAAS,WAAW,QAA2B,GAAmB;AAChE,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,QAAM,UAAU,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;AAC1C,QAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,OAAO,MAAM,CAAC;AAC3D,SAAO,OAAO,OAAO,CAAC;AACxB;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/transfer/sqlite-schema.ts
|
|
2
|
+
var SQLITE_SCHEMA_VERSION = 1;
|
|
3
|
+
var SQLITE_TABLES_SQL = `
|
|
4
|
+
CREATE TABLE IF NOT EXISTS meta (
|
|
5
|
+
key TEXT PRIMARY KEY,
|
|
6
|
+
value TEXT NOT NULL
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
10
|
+
path_rel TEXT PRIMARY KEY,
|
|
11
|
+
bytes INTEGER NOT NULL,
|
|
12
|
+
sha256 TEXT NOT NULL,
|
|
13
|
+
content TEXT NOT NULL
|
|
14
|
+
);
|
|
15
|
+
`;
|
|
16
|
+
|
|
17
|
+
export {
|
|
18
|
+
SQLITE_SCHEMA_VERSION,
|
|
19
|
+
SQLITE_TABLES_SQL
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=chunk-Z734BLO3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/transfer/sqlite-schema.ts"],"sourcesContent":["export const SQLITE_SCHEMA_VERSION = 1 as const;\n\nexport const SQLITE_TABLES_SQL = `\nCREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS files (\n path_rel TEXT PRIMARY KEY,\n bytes INTEGER NOT NULL,\n sha256 TEXT NOT NULL,\n content TEXT NOT NULL\n);\n`;\n\n"],"mappings":";AAAO,IAAM,wBAAwB;AAE9B,IAAM,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import {
|
|
2
|
+
WORK_ID_PATTERN,
|
|
3
|
+
WorkStorage
|
|
4
|
+
} from "./chunk-WELDCG6C.js";
|
|
5
|
+
|
|
6
|
+
// src/work/board.ts
|
|
7
|
+
var BOARD_STATUS_ORDER = [
|
|
8
|
+
"todo",
|
|
9
|
+
"in_progress",
|
|
10
|
+
"blocked",
|
|
11
|
+
"done",
|
|
12
|
+
"cancelled"
|
|
13
|
+
];
|
|
14
|
+
var BOARD_STATUS_LABEL = {
|
|
15
|
+
todo: "Todo",
|
|
16
|
+
in_progress: "In Progress",
|
|
17
|
+
blocked: "Blocked",
|
|
18
|
+
done: "Done",
|
|
19
|
+
cancelled: "Cancelled"
|
|
20
|
+
};
|
|
21
|
+
var PRIORITY_WEIGHT = {
|
|
22
|
+
high: 0,
|
|
23
|
+
medium: 1,
|
|
24
|
+
low: 2
|
|
25
|
+
};
|
|
26
|
+
function stableSortTasks(tasks) {
|
|
27
|
+
return [...tasks].sort((a, b) => {
|
|
28
|
+
const priorityCmp = PRIORITY_WEIGHT[a.priority] - PRIORITY_WEIGHT[b.priority];
|
|
29
|
+
if (priorityCmp !== 0) return priorityCmp;
|
|
30
|
+
const createdCmp = a.createdAt.localeCompare(b.createdAt);
|
|
31
|
+
if (createdCmp !== 0) return createdCmp;
|
|
32
|
+
return a.id.localeCompare(b.id);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function projectMatches(task, projectId) {
|
|
36
|
+
if (!projectId) return true;
|
|
37
|
+
return task.projectId === projectId;
|
|
38
|
+
}
|
|
39
|
+
function assertValidImportEnums(item) {
|
|
40
|
+
if (!["todo", "in_progress", "blocked", "done", "cancelled"].includes(item.status)) {
|
|
41
|
+
throw new Error(`invalid task status in snapshot for ${item.id}: ${item.status}`);
|
|
42
|
+
}
|
|
43
|
+
if (!["low", "medium", "high"].includes(item.priority)) {
|
|
44
|
+
throw new Error(`invalid task priority in snapshot for ${item.id}: ${item.priority}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function normalizeImportedProjectId(rawValue, taskId, fallbackForUndefined) {
|
|
48
|
+
if (rawValue === void 0) return fallbackForUndefined;
|
|
49
|
+
if (rawValue === null) return null;
|
|
50
|
+
if (typeof rawValue === "string") {
|
|
51
|
+
const trimmed = rawValue.trim();
|
|
52
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
53
|
+
}
|
|
54
|
+
throw new Error(`invalid task projectId in snapshot for ${taskId}`);
|
|
55
|
+
}
|
|
56
|
+
function normalizeImportedTags(rawValue, taskId) {
|
|
57
|
+
if (rawValue === void 0 || rawValue === null) return [];
|
|
58
|
+
if (!Array.isArray(rawValue)) {
|
|
59
|
+
throw new Error(`invalid task tags in snapshot for ${taskId}`);
|
|
60
|
+
}
|
|
61
|
+
if (!rawValue.every((entry) => typeof entry === "string")) {
|
|
62
|
+
throw new Error(`invalid task tags in snapshot for ${taskId}`);
|
|
63
|
+
}
|
|
64
|
+
return [...rawValue];
|
|
65
|
+
}
|
|
66
|
+
function assertValidImportedTaskId(rawValue) {
|
|
67
|
+
if (typeof rawValue !== "string") {
|
|
68
|
+
throw new Error("invalid task id in snapshot");
|
|
69
|
+
}
|
|
70
|
+
const trimmed = rawValue.trim();
|
|
71
|
+
if (!WORK_ID_PATTERN.test(trimmed)) {
|
|
72
|
+
throw new Error(`invalid task id in snapshot: ${trimmed}`);
|
|
73
|
+
}
|
|
74
|
+
return trimmed;
|
|
75
|
+
}
|
|
76
|
+
function normalizeImportedNullableField(rawValue, taskId, fieldName, fallbackForUndefined) {
|
|
77
|
+
if (rawValue === void 0) return fallbackForUndefined;
|
|
78
|
+
if (rawValue === null) return null;
|
|
79
|
+
if (typeof rawValue === "string") return rawValue;
|
|
80
|
+
throw new Error(`invalid task ${fieldName} in snapshot for ${taskId}`);
|
|
81
|
+
}
|
|
82
|
+
function normalizeImportedTitle(rawValue, taskId) {
|
|
83
|
+
if (typeof rawValue !== "string") {
|
|
84
|
+
throw new Error(`invalid task title in snapshot for ${taskId}`);
|
|
85
|
+
}
|
|
86
|
+
const trimmed = rawValue.trim();
|
|
87
|
+
if (trimmed.length === 0) {
|
|
88
|
+
throw new Error(`invalid task title in snapshot for ${taskId}`);
|
|
89
|
+
}
|
|
90
|
+
return trimmed;
|
|
91
|
+
}
|
|
92
|
+
function normalizeImportedDescription(rawValue, taskId) {
|
|
93
|
+
if (typeof rawValue !== "string") {
|
|
94
|
+
throw new Error(`invalid task description in snapshot for ${taskId}`);
|
|
95
|
+
}
|
|
96
|
+
return rawValue;
|
|
97
|
+
}
|
|
98
|
+
function asBoardItem(task) {
|
|
99
|
+
return {
|
|
100
|
+
id: task.id,
|
|
101
|
+
title: task.title,
|
|
102
|
+
description: task.description,
|
|
103
|
+
status: task.status,
|
|
104
|
+
priority: task.priority,
|
|
105
|
+
owner: task.owner,
|
|
106
|
+
assignee: task.assignee,
|
|
107
|
+
projectId: task.projectId,
|
|
108
|
+
tags: [...task.tags],
|
|
109
|
+
dueAt: task.dueAt
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function formatTaskLine(task) {
|
|
113
|
+
const bits = [`id:${task.id}`, `priority:${task.priority}`];
|
|
114
|
+
if (task.assignee) bits.push(`assignee:${task.assignee}`);
|
|
115
|
+
if (task.owner) bits.push(`owner:${task.owner}`);
|
|
116
|
+
if (task.dueAt) bits.push(`due:${task.dueAt}`);
|
|
117
|
+
if (task.tags.length > 0) bits.push(`tags:${task.tags.join(",")}`);
|
|
118
|
+
const checked = task.status === "done";
|
|
119
|
+
return `- [${checked ? "x" : " "}] ${task.title} \`[${bits.join(" ")}]\``;
|
|
120
|
+
}
|
|
121
|
+
async function exportWorkBoardSnapshot(options) {
|
|
122
|
+
const storage = new WorkStorage(options.memoryDir);
|
|
123
|
+
await storage.ensureDirectories();
|
|
124
|
+
const projectId = options.projectId?.trim() || void 0;
|
|
125
|
+
let project = null;
|
|
126
|
+
if (projectId) {
|
|
127
|
+
project = await storage.getProject(projectId);
|
|
128
|
+
if (!project) throw new Error(`project not found: ${projectId}`);
|
|
129
|
+
}
|
|
130
|
+
const allTasks = await storage.listTasks();
|
|
131
|
+
const filtered = stableSortTasks(allTasks.filter((task) => projectMatches(task, projectId)));
|
|
132
|
+
return {
|
|
133
|
+
version: 1,
|
|
134
|
+
generatedAt: (options.now ?? /* @__PURE__ */ new Date()).toISOString(),
|
|
135
|
+
projectId: projectId ?? null,
|
|
136
|
+
projectName: project?.name ?? null,
|
|
137
|
+
items: filtered.map(asBoardItem)
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function renderWorkBoardMarkdown(snapshot) {
|
|
141
|
+
const lines = [];
|
|
142
|
+
lines.push("# Work Board");
|
|
143
|
+
lines.push("");
|
|
144
|
+
lines.push(`Generated: ${snapshot.generatedAt}`);
|
|
145
|
+
lines.push(`Project: ${snapshot.projectName ?? "all"} (${snapshot.projectId ?? "all"})`);
|
|
146
|
+
lines.push("");
|
|
147
|
+
for (const status of BOARD_STATUS_ORDER) {
|
|
148
|
+
const bucket = snapshot.items.filter((item) => item.status === status);
|
|
149
|
+
lines.push(`## ${BOARD_STATUS_LABEL[status]} (${bucket.length})`);
|
|
150
|
+
if (bucket.length === 0) {
|
|
151
|
+
lines.push("_none_");
|
|
152
|
+
} else {
|
|
153
|
+
for (const item of bucket) {
|
|
154
|
+
lines.push(formatTaskLine(item));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
lines.push("");
|
|
158
|
+
}
|
|
159
|
+
return `${lines.join("\n").trim()}
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
async function exportWorkBoardMarkdown(options) {
|
|
163
|
+
const snapshot = await exportWorkBoardSnapshot(options);
|
|
164
|
+
return renderWorkBoardMarkdown(snapshot);
|
|
165
|
+
}
|
|
166
|
+
async function importWorkBoardSnapshot(options) {
|
|
167
|
+
if (options.snapshot.version !== 1) {
|
|
168
|
+
throw new Error(`unsupported work board snapshot version: ${options.snapshot.version}`);
|
|
169
|
+
}
|
|
170
|
+
const storage = new WorkStorage(options.memoryDir);
|
|
171
|
+
await storage.ensureDirectories();
|
|
172
|
+
const forcedProjectId = options.projectId === void 0 ? void 0 : options.projectId?.trim() || null;
|
|
173
|
+
const snapshotProjectId = normalizeImportedProjectId(
|
|
174
|
+
options.snapshot.projectId,
|
|
175
|
+
"snapshot",
|
|
176
|
+
null
|
|
177
|
+
);
|
|
178
|
+
const preparedRows = [];
|
|
179
|
+
const seenItemIds = /* @__PURE__ */ new Set();
|
|
180
|
+
for (const item of options.snapshot.items) {
|
|
181
|
+
const id = assertValidImportedTaskId(item.id);
|
|
182
|
+
if (seenItemIds.has(id)) {
|
|
183
|
+
throw new Error(`duplicate task id in snapshot: ${id}`);
|
|
184
|
+
}
|
|
185
|
+
seenItemIds.add(id);
|
|
186
|
+
assertValidImportEnums(item);
|
|
187
|
+
const existing = await storage.getTask(id);
|
|
188
|
+
const title = normalizeImportedTitle(item.title, id);
|
|
189
|
+
const description = normalizeImportedDescription(item.description, id);
|
|
190
|
+
const fallbackProjectId = existing ? existing.projectId : snapshotProjectId;
|
|
191
|
+
const projectId = forcedProjectId === void 0 ? normalizeImportedProjectId(
|
|
192
|
+
item.projectId,
|
|
193
|
+
item.id,
|
|
194
|
+
fallbackProjectId
|
|
195
|
+
) : forcedProjectId;
|
|
196
|
+
const hasTagsField = Object.prototype.hasOwnProperty.call(
|
|
197
|
+
item,
|
|
198
|
+
"tags"
|
|
199
|
+
);
|
|
200
|
+
const tags = hasTagsField ? normalizeImportedTags(item.tags, item.id) : existing ? [...existing.tags] : [];
|
|
201
|
+
const owner = normalizeImportedNullableField(
|
|
202
|
+
item.owner,
|
|
203
|
+
id,
|
|
204
|
+
"owner",
|
|
205
|
+
existing?.owner ?? null
|
|
206
|
+
);
|
|
207
|
+
const assignee = normalizeImportedNullableField(
|
|
208
|
+
item.assignee,
|
|
209
|
+
id,
|
|
210
|
+
"assignee",
|
|
211
|
+
existing?.assignee ?? null
|
|
212
|
+
);
|
|
213
|
+
const dueAt = normalizeImportedNullableField(
|
|
214
|
+
item.dueAt,
|
|
215
|
+
id,
|
|
216
|
+
"dueAt",
|
|
217
|
+
existing?.dueAt ?? null
|
|
218
|
+
);
|
|
219
|
+
preparedRows.push({ item, existing, id, title, description, projectId, tags, owner, assignee, dueAt });
|
|
220
|
+
}
|
|
221
|
+
const projectIdsToValidate = new Set(
|
|
222
|
+
preparedRows.map((row) => row.projectId).filter((projectId) => typeof projectId === "string")
|
|
223
|
+
);
|
|
224
|
+
for (const projectId of projectIdsToValidate) {
|
|
225
|
+
const project = await storage.getProject(projectId);
|
|
226
|
+
if (!project) throw new Error(`project not found: ${projectId}`);
|
|
227
|
+
}
|
|
228
|
+
let created = 0;
|
|
229
|
+
let updated = 0;
|
|
230
|
+
for (const row of preparedRows) {
|
|
231
|
+
const { item, existing, id, title, description, projectId, tags, owner, assignee, dueAt } = row;
|
|
232
|
+
if (existing) {
|
|
233
|
+
await storage.updateTask(id, {
|
|
234
|
+
title,
|
|
235
|
+
description,
|
|
236
|
+
status: item.status,
|
|
237
|
+
priority: item.priority,
|
|
238
|
+
owner,
|
|
239
|
+
assignee,
|
|
240
|
+
projectId,
|
|
241
|
+
tags,
|
|
242
|
+
dueAt
|
|
243
|
+
}, options.now, { skipStatusTransitionValidation: true });
|
|
244
|
+
updated += 1;
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
await storage.createTask({
|
|
248
|
+
id,
|
|
249
|
+
title,
|
|
250
|
+
description,
|
|
251
|
+
status: item.status,
|
|
252
|
+
priority: item.priority,
|
|
253
|
+
owner,
|
|
254
|
+
assignee,
|
|
255
|
+
projectId,
|
|
256
|
+
tags,
|
|
257
|
+
dueAt
|
|
258
|
+
}, options.now);
|
|
259
|
+
created += 1;
|
|
260
|
+
}
|
|
261
|
+
return { created, updated };
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export {
|
|
265
|
+
exportWorkBoardSnapshot,
|
|
266
|
+
exportWorkBoardMarkdown,
|
|
267
|
+
importWorkBoardSnapshot
|
|
268
|
+
};
|
|
269
|
+
//# sourceMappingURL=chunk-ZKSK55RC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/work/board.ts"],"sourcesContent":["import type { WorkProject, WorkTask, WorkTaskPriority, WorkTaskStatus } from \"./types.js\";\nimport { WORK_ID_PATTERN, WorkStorage } from \"./storage.js\";\n\nconst BOARD_STATUS_ORDER: WorkTaskStatus[] = [\n \"todo\",\n \"in_progress\",\n \"blocked\",\n \"done\",\n \"cancelled\",\n];\n\nconst BOARD_STATUS_LABEL: Record<WorkTaskStatus, string> = {\n todo: \"Todo\",\n in_progress: \"In Progress\",\n blocked: \"Blocked\",\n done: \"Done\",\n cancelled: \"Cancelled\",\n};\n\nconst PRIORITY_WEIGHT: Record<WorkTaskPriority, number> = {\n high: 0,\n medium: 1,\n low: 2,\n};\n\nexport interface WorkBoardItem {\n id: string;\n title: string;\n description: string;\n status: WorkTaskStatus;\n priority: WorkTaskPriority;\n owner: string | null;\n assignee: string | null;\n projectId: string | null;\n tags: string[];\n dueAt: string | null;\n}\n\nexport interface WorkBoardSnapshot {\n version: 1;\n generatedAt: string;\n projectId: string | null;\n projectName: string | null;\n items: WorkBoardItem[];\n}\n\nexport interface ImportWorkBoardResult {\n created: number;\n updated: number;\n}\n\nfunction stableSortTasks(tasks: WorkTask[]): WorkTask[] {\n return [...tasks].sort((a, b) => {\n const priorityCmp = PRIORITY_WEIGHT[a.priority] - PRIORITY_WEIGHT[b.priority];\n if (priorityCmp !== 0) return priorityCmp;\n const createdCmp = a.createdAt.localeCompare(b.createdAt);\n if (createdCmp !== 0) return createdCmp;\n return a.id.localeCompare(b.id);\n });\n}\n\nfunction projectMatches(task: WorkTask, projectId?: string): boolean {\n if (!projectId) return true;\n return task.projectId === projectId;\n}\n\nfunction assertValidImportEnums(item: WorkBoardItem): void {\n if (![\"todo\", \"in_progress\", \"blocked\", \"done\", \"cancelled\"].includes(item.status)) {\n throw new Error(`invalid task status in snapshot for ${item.id}: ${item.status}`);\n }\n if (![\"low\", \"medium\", \"high\"].includes(item.priority)) {\n throw new Error(`invalid task priority in snapshot for ${item.id}: ${item.priority}`);\n }\n}\n\nfunction normalizeImportedProjectId(\n rawValue: unknown,\n taskId: string,\n fallbackForUndefined: string | null,\n): string | null {\n if (rawValue === undefined) return fallbackForUndefined;\n if (rawValue === null) return null;\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n return trimmed.length > 0 ? trimmed : null;\n }\n throw new Error(`invalid task projectId in snapshot for ${taskId}`);\n}\n\nfunction normalizeImportedTags(rawValue: unknown, taskId: string): string[] {\n if (rawValue === undefined || rawValue === null) return [];\n if (!Array.isArray(rawValue)) {\n throw new Error(`invalid task tags in snapshot for ${taskId}`);\n }\n if (!rawValue.every((entry) => typeof entry === \"string\")) {\n throw new Error(`invalid task tags in snapshot for ${taskId}`);\n }\n return [...rawValue];\n}\n\nfunction assertValidImportedTaskId(rawValue: unknown): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(\"invalid task id in snapshot\");\n }\n const trimmed = rawValue.trim();\n if (!WORK_ID_PATTERN.test(trimmed)) {\n throw new Error(`invalid task id in snapshot: ${trimmed}`);\n }\n return trimmed;\n}\n\nfunction normalizeImportedNullableField(\n rawValue: unknown,\n taskId: string,\n fieldName: \"owner\" | \"assignee\" | \"dueAt\",\n fallbackForUndefined: string | null,\n): string | null {\n if (rawValue === undefined) return fallbackForUndefined;\n if (rawValue === null) return null;\n if (typeof rawValue === \"string\") return rawValue;\n throw new Error(`invalid task ${fieldName} in snapshot for ${taskId}`);\n}\n\nfunction normalizeImportedTitle(rawValue: unknown, taskId: string): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(`invalid task title in snapshot for ${taskId}`);\n }\n const trimmed = rawValue.trim();\n if (trimmed.length === 0) {\n throw new Error(`invalid task title in snapshot for ${taskId}`);\n }\n return trimmed;\n}\n\nfunction normalizeImportedDescription(rawValue: unknown, taskId: string): string {\n if (typeof rawValue !== \"string\") {\n throw new Error(`invalid task description in snapshot for ${taskId}`);\n }\n return rawValue;\n}\n\nfunction asBoardItem(task: WorkTask): WorkBoardItem {\n return {\n id: task.id,\n title: task.title,\n description: task.description,\n status: task.status,\n priority: task.priority,\n owner: task.owner,\n assignee: task.assignee,\n projectId: task.projectId,\n tags: [...task.tags],\n dueAt: task.dueAt,\n };\n}\n\nfunction formatTaskLine(task: WorkBoardItem): string {\n const bits: string[] = [`id:${task.id}`, `priority:${task.priority}`];\n if (task.assignee) bits.push(`assignee:${task.assignee}`);\n if (task.owner) bits.push(`owner:${task.owner}`);\n if (task.dueAt) bits.push(`due:${task.dueAt}`);\n if (task.tags.length > 0) bits.push(`tags:${task.tags.join(\",\")}`);\n const checked = task.status === \"done\";\n return `- [${checked ? \"x\" : \" \"}] ${task.title} \\`[${bits.join(\" \")}]\\``;\n}\n\nexport async function exportWorkBoardSnapshot(options: {\n memoryDir: string;\n projectId?: string;\n now?: Date;\n}): Promise<WorkBoardSnapshot> {\n const storage = new WorkStorage(options.memoryDir);\n await storage.ensureDirectories();\n\n const projectId = options.projectId?.trim() || undefined;\n let project: WorkProject | null = null;\n if (projectId) {\n project = await storage.getProject(projectId);\n if (!project) throw new Error(`project not found: ${projectId}`);\n }\n\n const allTasks = await storage.listTasks();\n const filtered = stableSortTasks(allTasks.filter((task) => projectMatches(task, projectId)));\n return {\n version: 1,\n generatedAt: (options.now ?? new Date()).toISOString(),\n projectId: projectId ?? null,\n projectName: project?.name ?? null,\n items: filtered.map(asBoardItem),\n };\n}\n\nfunction renderWorkBoardMarkdown(snapshot: WorkBoardSnapshot): string {\n const lines: string[] = [];\n lines.push(\"# Work Board\");\n lines.push(\"\");\n lines.push(`Generated: ${snapshot.generatedAt}`);\n lines.push(`Project: ${snapshot.projectName ?? \"all\"} (${snapshot.projectId ?? \"all\"})`);\n lines.push(\"\");\n\n for (const status of BOARD_STATUS_ORDER) {\n const bucket = snapshot.items.filter((item) => item.status === status);\n lines.push(`## ${BOARD_STATUS_LABEL[status]} (${bucket.length})`);\n if (bucket.length === 0) {\n lines.push(\"_none_\");\n } else {\n for (const item of bucket) {\n lines.push(formatTaskLine(item));\n }\n }\n lines.push(\"\");\n }\n\n return `${lines.join(\"\\n\").trim()}\\n`;\n}\n\nexport async function exportWorkBoardMarkdown(options: {\n memoryDir: string;\n projectId?: string;\n now?: Date;\n}): Promise<string> {\n const snapshot = await exportWorkBoardSnapshot(options);\n return renderWorkBoardMarkdown(snapshot);\n}\n\nexport async function importWorkBoardSnapshot(options: {\n memoryDir: string;\n snapshot: WorkBoardSnapshot;\n projectId?: string | null;\n now?: Date;\n}): Promise<ImportWorkBoardResult> {\n if (options.snapshot.version !== 1) {\n throw new Error(`unsupported work board snapshot version: ${options.snapshot.version}`);\n }\n\n const storage = new WorkStorage(options.memoryDir);\n await storage.ensureDirectories();\n\n const forcedProjectId = options.projectId === undefined\n ? undefined\n : (options.projectId?.trim() || null);\n const snapshotProjectId = normalizeImportedProjectId(\n (options.snapshot as unknown as { projectId?: unknown }).projectId,\n \"snapshot\",\n null,\n );\n\n type PreparedImportRow = {\n item: WorkBoardItem;\n existing: WorkTask | null;\n id: string;\n title: string;\n description: string;\n projectId: string | null;\n tags: string[];\n owner: string | null;\n assignee: string | null;\n dueAt: string | null;\n };\n\n const preparedRows: PreparedImportRow[] = [];\n const seenItemIds = new Set<string>();\n for (const item of options.snapshot.items) {\n const id = assertValidImportedTaskId((item as unknown as { id?: unknown }).id);\n if (seenItemIds.has(id)) {\n throw new Error(`duplicate task id in snapshot: ${id}`);\n }\n seenItemIds.add(id);\n assertValidImportEnums(item);\n const existing = await storage.getTask(id);\n const title = normalizeImportedTitle((item as unknown as { title?: unknown }).title, id);\n const description = normalizeImportedDescription((item as unknown as { description?: unknown }).description, id);\n const fallbackProjectId = existing ? existing.projectId : snapshotProjectId;\n const projectId = forcedProjectId === undefined\n ? normalizeImportedProjectId(\n (item as unknown as { projectId?: unknown }).projectId,\n item.id,\n fallbackProjectId,\n )\n : forcedProjectId;\n\n const hasTagsField = Object.prototype.hasOwnProperty.call(\n item as unknown as Record<string, unknown>,\n \"tags\",\n );\n const tags = hasTagsField\n ? normalizeImportedTags((item as unknown as { tags?: unknown }).tags, item.id)\n : (existing ? [...existing.tags] : []);\n\n const owner = normalizeImportedNullableField(\n (item as unknown as { owner?: unknown }).owner,\n id,\n \"owner\",\n existing?.owner ?? null,\n );\n const assignee = normalizeImportedNullableField(\n (item as unknown as { assignee?: unknown }).assignee,\n id,\n \"assignee\",\n existing?.assignee ?? null,\n );\n const dueAt = normalizeImportedNullableField(\n (item as unknown as { dueAt?: unknown }).dueAt,\n id,\n \"dueAt\",\n existing?.dueAt ?? null,\n );\n\n preparedRows.push({ item, existing, id, title, description, projectId, tags, owner, assignee, dueAt });\n }\n\n const projectIdsToValidate = new Set(\n preparedRows\n .map((row) => row.projectId)\n .filter((projectId): projectId is string => typeof projectId === \"string\"),\n );\n for (const projectId of projectIdsToValidate) {\n const project = await storage.getProject(projectId);\n if (!project) throw new Error(`project not found: ${projectId}`);\n }\n\n let created = 0;\n let updated = 0;\n for (const row of preparedRows) {\n const { item, existing, id, title, description, projectId, tags, owner, assignee, dueAt } = row;\n\n if (existing) {\n await storage.updateTask(id, {\n title,\n description,\n status: item.status,\n priority: item.priority,\n owner,\n assignee,\n projectId,\n tags,\n dueAt,\n }, options.now, { skipStatusTransitionValidation: true });\n updated += 1;\n continue;\n }\n\n await storage.createTask({\n id,\n title,\n description,\n status: item.status,\n priority: item.priority,\n owner,\n assignee,\n projectId,\n tags,\n dueAt,\n }, options.now);\n created += 1;\n }\n\n return { created, updated };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// src/lcm/recall.ts
|
|
2
|
+
function assembleCompressedHistory(dag, archive, sessionId, config) {
|
|
3
|
+
const maxTurn = archive.getMaxTurnIndex(sessionId);
|
|
4
|
+
if (maxTurn < 0) return "";
|
|
5
|
+
const allNodes = dag.getAllNodes(sessionId);
|
|
6
|
+
if (allNodes.length === 0) return "";
|
|
7
|
+
const freshTailStart = Math.max(0, maxTurn - config.freshTailTurns + 1);
|
|
8
|
+
const sections = [];
|
|
9
|
+
let usedChars = 0;
|
|
10
|
+
if (freshTailStart > 0) {
|
|
11
|
+
const oldNodes = selectBestCoverage(allNodes, 0, freshTailStart - 1);
|
|
12
|
+
for (const node of oldNodes) {
|
|
13
|
+
const label = formatRangeLabel(node, maxTurn);
|
|
14
|
+
const entry = `**${label}** (depth ${node.depth}):
|
|
15
|
+
${node.summary_text}`;
|
|
16
|
+
if (usedChars + entry.length > config.budgetChars) break;
|
|
17
|
+
sections.push(entry);
|
|
18
|
+
usedChars += entry.length;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const freshNodes = allNodes.filter(
|
|
22
|
+
(n) => n.depth === 0 && n.msg_end >= freshTailStart && n.msg_end <= maxTurn
|
|
23
|
+
).sort((a, b) => a.msg_start - b.msg_start);
|
|
24
|
+
for (const node of freshNodes) {
|
|
25
|
+
const label = `Recent (turns ${node.msg_start}-${node.msg_end})`;
|
|
26
|
+
const entry = `**${label}**:
|
|
27
|
+
${node.summary_text}`;
|
|
28
|
+
if (usedChars + entry.length > config.budgetChars) break;
|
|
29
|
+
sections.push(entry);
|
|
30
|
+
usedChars += entry.length;
|
|
31
|
+
}
|
|
32
|
+
if (sections.length === 0) return "";
|
|
33
|
+
return `## Session History (Compressed)
|
|
34
|
+
|
|
35
|
+
${sections.join("\n\n")}`;
|
|
36
|
+
}
|
|
37
|
+
function selectBestCoverage(allNodes, fromTurn, toTurn) {
|
|
38
|
+
const candidates = allNodes.filter(
|
|
39
|
+
(n) => n.msg_start <= toTurn && n.msg_end >= fromTurn
|
|
40
|
+
);
|
|
41
|
+
if (candidates.length === 0) return [];
|
|
42
|
+
candidates.sort((a, b) => {
|
|
43
|
+
if (a.msg_start !== b.msg_start) return a.msg_start - b.msg_start;
|
|
44
|
+
return b.depth - a.depth;
|
|
45
|
+
});
|
|
46
|
+
const selected = [];
|
|
47
|
+
let coveredUpTo = fromTurn - 1;
|
|
48
|
+
for (const node of candidates) {
|
|
49
|
+
if (node.msg_start > coveredUpTo) {
|
|
50
|
+
selected.push(node);
|
|
51
|
+
coveredUpTo = Math.min(node.msg_end, toTurn);
|
|
52
|
+
if (coveredUpTo >= toTurn) break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
selected.sort((a, b) => a.msg_start - b.msg_start);
|
|
56
|
+
return selected;
|
|
57
|
+
}
|
|
58
|
+
function formatRangeLabel(node, maxTurn) {
|
|
59
|
+
const startPct = Math.round(node.msg_start / Math.max(1, maxTurn) * 100);
|
|
60
|
+
const endPct = Math.round(node.msg_end / Math.max(1, maxTurn) * 100);
|
|
61
|
+
if (startPct < 33) return `Early session (turns ${node.msg_start}-${node.msg_end})`;
|
|
62
|
+
if (endPct < 66) return `Mid session (turns ${node.msg_start}-${node.msg_end})`;
|
|
63
|
+
return `Later session (turns ${node.msg_start}-${node.msg_end})`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
assembleCompressedHistory
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=chunk-ZTFCYYEZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lcm/recall.ts"],"sourcesContent":["import type { LcmDag, SummaryNode } from \"./dag.js\";\nimport type { LcmArchive } from \"./archive.js\";\nimport { log } from \"../logger.js\";\n\nexport interface LcmRecallConfig {\n freshTailTurns: number;\n budgetChars: number;\n}\n\n/**\n * Assemble a compressed session history section from the summary DAG.\n *\n * Strategy:\n * 1. For the \"fresh tail\" (most recent N turns), use leaf-level summaries for maximum detail.\n * 2. For older portions, use the deepest available summary nodes (most compressed).\n * 3. Fill within budget, prioritizing recent content.\n */\nexport function assembleCompressedHistory(\n dag: LcmDag,\n archive: LcmArchive,\n sessionId: string,\n config: LcmRecallConfig,\n): string {\n const maxTurn = archive.getMaxTurnIndex(sessionId);\n if (maxTurn < 0) return \"\";\n\n const allNodes = dag.getAllNodes(sessionId);\n if (allNodes.length === 0) return \"\";\n\n const freshTailStart = Math.max(0, maxTurn - config.freshTailTurns + 1);\n const sections: string[] = [];\n let usedChars = 0;\n\n // Collect nodes covering the \"old\" portion (before fresh tail)\n if (freshTailStart > 0) {\n const oldNodes = selectBestCoverage(allNodes, 0, freshTailStart - 1);\n for (const node of oldNodes) {\n const label = formatRangeLabel(node, maxTurn);\n const entry = `**${label}** (depth ${node.depth}):\\n${node.summary_text}`;\n if (usedChars + entry.length > config.budgetChars) break;\n sections.push(entry);\n usedChars += entry.length;\n }\n }\n\n // Collect leaf nodes that overlap with the fresh tail region.\n // The old section uses deep nodes (depth > 0), so leaf nodes included here\n // won't duplicate old-section content. Use msg_end >= freshTailStart to\n // include straddling leaf nodes that partially cover the fresh region.\n const freshNodes = allNodes\n .filter(\n (n) => n.depth === 0 && n.msg_end >= freshTailStart && n.msg_end <= maxTurn,\n )\n .sort((a, b) => a.msg_start - b.msg_start);\n\n for (const node of freshNodes) {\n const label = `Recent (turns ${node.msg_start}-${node.msg_end})`;\n const entry = `**${label}**:\\n${node.summary_text}`;\n if (usedChars + entry.length > config.budgetChars) break;\n sections.push(entry);\n usedChars += entry.length;\n }\n\n if (sections.length === 0) return \"\";\n\n return `## Session History (Compressed)\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n\n/**\n * Select the best coverage for a turn range.\n * Prefers deeper (more compressed) nodes. Avoids overlapping coverage.\n */\nfunction selectBestCoverage(\n allNodes: SummaryNode[],\n fromTurn: number,\n toTurn: number,\n): SummaryNode[] {\n // Filter to nodes that overlap with the requested range\n const candidates = allNodes.filter(\n (n) => n.msg_start <= toTurn && n.msg_end >= fromTurn,\n );\n\n if (candidates.length === 0) return [];\n\n // Sort by msg_start ascending, then depth descending (prefer deeper at same position)\n candidates.sort((a, b) => {\n if (a.msg_start !== b.msg_start) return a.msg_start - b.msg_start;\n return b.depth - a.depth;\n });\n\n // Greedily select non-overlapping nodes, preferring deeper coverage.\n // Clamp msg_end to toTurn to prevent deep nodes from extending\n // past the requested range (e.g., into the fresh tail region).\n const selected: SummaryNode[] = [];\n let coveredUpTo = fromTurn - 1;\n\n for (const node of candidates) {\n if (node.msg_start > coveredUpTo) {\n selected.push(node);\n coveredUpTo = Math.min(node.msg_end, toTurn);\n if (coveredUpTo >= toTurn) break;\n }\n }\n\n // Re-sort selected by msg_start for chronological output\n selected.sort((a, b) => a.msg_start - b.msg_start);\n return selected;\n}\n\nfunction formatRangeLabel(node: SummaryNode, maxTurn: number): string {\n const startPct = Math.round((node.msg_start / Math.max(1, maxTurn)) * 100);\n const endPct = Math.round((node.msg_end / Math.max(1, maxTurn)) * 100);\n\n if (startPct < 33) return `Early session (turns ${node.msg_start}-${node.msg_end})`;\n if (endPct < 66) return `Mid session (turns ${node.msg_start}-${node.msg_end})`;\n return `Later session (turns ${node.msg_start}-${node.msg_end})`;\n}\n"],"mappings":";AAiBO,SAAS,0BACd,KACA,SACA,WACA,QACQ;AACR,QAAM,UAAU,QAAQ,gBAAgB,SAAS;AACjD,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,WAAW,IAAI,YAAY,SAAS;AAC1C,MAAI,SAAS,WAAW,EAAG,QAAO;AAElC,QAAM,iBAAiB,KAAK,IAAI,GAAG,UAAU,OAAO,iBAAiB,CAAC;AACtE,QAAM,WAAqB,CAAC;AAC5B,MAAI,YAAY;AAGhB,MAAI,iBAAiB,GAAG;AACtB,UAAM,WAAW,mBAAmB,UAAU,GAAG,iBAAiB,CAAC;AACnE,eAAW,QAAQ,UAAU;AAC3B,YAAM,QAAQ,iBAAiB,MAAM,OAAO;AAC5C,YAAM,QAAQ,KAAK,KAAK,aAAa,KAAK,KAAK;AAAA,EAAO,KAAK,YAAY;AACvE,UAAI,YAAY,MAAM,SAAS,OAAO,YAAa;AACnD,eAAS,KAAK,KAAK;AACnB,mBAAa,MAAM;AAAA,IACrB;AAAA,EACF;AAMA,QAAM,aAAa,SAChB;AAAA,IACC,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,WAAW,kBAAkB,EAAE,WAAW;AAAA,EACtE,EACC,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AAE3C,aAAW,QAAQ,YAAY;AAC7B,UAAM,QAAQ,iBAAiB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC7D,UAAM,QAAQ,KAAK,KAAK;AAAA,EAAQ,KAAK,YAAY;AACjD,QAAI,YAAY,MAAM,SAAS,OAAO,YAAa;AACnD,aAAS,KAAK,KAAK;AACnB,iBAAa,MAAM;AAAA,EACrB;AAEA,MAAI,SAAS,WAAW,EAAG,QAAO;AAElC,SAAO;AAAA;AAAA,EAAsC,SAAS,KAAK,MAAM,CAAC;AACpE;AAMA,SAAS,mBACP,UACA,UACA,QACe;AAEf,QAAM,aAAa,SAAS;AAAA,IAC1B,CAAC,MAAM,EAAE,aAAa,UAAU,EAAE,WAAW;AAAA,EAC/C;AAEA,MAAI,WAAW,WAAW,EAAG,QAAO,CAAC;AAGrC,aAAW,KAAK,CAAC,GAAG,MAAM;AACxB,QAAI,EAAE,cAAc,EAAE,UAAW,QAAO,EAAE,YAAY,EAAE;AACxD,WAAO,EAAE,QAAQ,EAAE;AAAA,EACrB,CAAC;AAKD,QAAM,WAA0B,CAAC;AACjC,MAAI,cAAc,WAAW;AAE7B,aAAW,QAAQ,YAAY;AAC7B,QAAI,KAAK,YAAY,aAAa;AAChC,eAAS,KAAK,IAAI;AAClB,oBAAc,KAAK,IAAI,KAAK,SAAS,MAAM;AAC3C,UAAI,eAAe,OAAQ;AAAA,IAC7B;AAAA,EACF;AAGA,WAAS,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS;AACjD,SAAO;AACT;AAEA,SAAS,iBAAiB,MAAmB,SAAyB;AACpE,QAAM,WAAW,KAAK,MAAO,KAAK,YAAY,KAAK,IAAI,GAAG,OAAO,IAAK,GAAG;AACzE,QAAM,SAAS,KAAK,MAAO,KAAK,UAAU,KAAK,IAAI,GAAG,OAAO,IAAK,GAAG;AAErE,MAAI,WAAW,GAAI,QAAO,wBAAwB,KAAK,SAAS,IAAI,KAAK,OAAO;AAChF,MAAI,SAAS,GAAI,QAAO,sBAAsB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC5E,SAAO,wBAAwB,KAAK,SAAS,IAAI,KAAK,OAAO;AAC/D;","names":[]}
|