@remnic/core 1.1.11 → 1.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/access-cli.d.ts +2 -1
- package/dist/access-cli.js +293 -104
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +31 -62
- package/dist/access-http.js +53 -35
- package/dist/access-mcp.d.ts +31 -8
- package/dist/access-mcp.js +45 -34
- package/dist/access-schema.d.ts +197 -14
- package/dist/access-schema.js +16 -5
- package/dist/access-service-DcCDmNYC.d.ts +1542 -0
- package/dist/access-service.d.ts +30 -9
- package/dist/access-service.js +42 -32
- package/dist/action-confidence.d.ts +83 -0
- package/dist/action-confidence.js +22 -0
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.d.ts +1 -1
- 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/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +23 -6
- package/dist/boxes.d.ts +7 -0
- package/dist/boxes.js +1 -1
- package/dist/briefing.d.ts +5 -3
- package/dist/briefing.js +10 -7
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-surprise-report.js +1 -1
- package/dist/buffer.d.ts +18 -4
- package/dist/buffer.js +1 -1
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +6 -6
- 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 +9 -29
- 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 +2 -2
- package/dist/causal-consolidation.js +28 -17
- 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-4RA3C3EV.js +60 -0
- package/dist/chunk-4RA3C3EV.js.map +1 -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-5NXIJZFX.js +180 -0
- package/dist/chunk-5NXIJZFX.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-6NKAQ74D.js +2237 -0
- package/dist/chunk-6NKAQ74D.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-AC5LO7IU.js +308 -0
- package/dist/chunk-AC5LO7IU.js.map +1 -0
- package/dist/chunk-AGZQD76C.js +201 -0
- package/dist/chunk-AGZQD76C.js.map +1 -0
- package/dist/chunk-AH2JUU6X.js +336 -0
- package/dist/chunk-AH2JUU6X.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-C5BCH4ZS.js +317 -0
- package/dist/chunk-C5BCH4ZS.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-DB5A3NHS.js +906 -0
- package/dist/chunk-DB5A3NHS.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-EDTHC6UD.js.map +1 -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-FBYESMQ2.js.map +1 -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-MGKYQQYF.js.map +1 -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-OAZ5MFUB.js +4124 -0
- package/dist/chunk-OAZ5MFUB.js.map +1 -0
- package/dist/chunk-OIGNEXKZ.js +237 -0
- package/dist/chunk-OIGNEXKZ.js.map +1 -0
- package/dist/chunk-OZKZ2TRP.js +3729 -0
- package/dist/chunk-OZKZ2TRP.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-PD6O7AXF.js +110 -0
- package/dist/chunk-PD6O7AXF.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-PYPOFEMK.js +294 -0
- package/dist/chunk-PYPOFEMK.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-QDZ2RLEC.js +908 -0
- package/dist/chunk-QDZ2RLEC.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-RK6F44Y6.js +84 -0
- package/dist/chunk-RK6F44Y6.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-SOAU2OE2.js +125 -0
- package/dist/chunk-SOAU2OE2.js.map +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-V5OCT34X.js.map +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-VWT3F4IV.js +2161 -0
- package/dist/chunk-VWT3F4IV.js.map +1 -0
- package/dist/chunk-W3LR522O.js +2296 -0
- package/dist/chunk-W3LR522O.js.map +1 -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 +42 -10
- package/dist/cli.js +121 -58
- package/dist/codex-cli-fallback.d.ts +1 -0
- package/dist/codex-cli-fallback.js +1 -1
- 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/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +5 -3
- 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 +4 -2
- package/dist/consolidation-undo.d.ts +4 -2
- 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/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer-wiring.js +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- 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 +9 -6
- package/dist/entity-schema.d.ts +1 -1
- package/dist/evals.js +1 -1
- package/dist/event-order-recall.d.ts +17 -0
- package/dist/event-order-recall.js +11 -0
- package/dist/event-order-recall.js.map +1 -0
- package/dist/evidence-pack.d.ts +3 -1
- package/dist/evidence-pack.js +5 -3
- package/dist/explicit-capture.d.ts +23 -6
- package/dist/explicit-capture.js +2 -2
- package/dist/explicit-cue-recall.d.ts +4 -1
- package/dist/explicit-cue-recall.js +4 -2
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge-training.js +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +11 -10
- package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
- package/dist/fallback-llm.d.ts +4 -1
- package/dist/fallback-llm.js +6 -6
- package/dist/focused-list-recall.d.ts +17 -0
- package/dist/focused-list-recall.js +11 -0
- package/dist/focused-list-recall.js.map +1 -0
- package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index-DJ9QWMw-.d.ts +35 -0
- package/dist/index.d.ts +107 -715
- package/dist/index.js +657 -2611
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +1 -1
- package/dist/intent.js +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/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/live-connectors-runner.js +5 -5
- package/dist/local-llm.d.ts +8 -4
- 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 +124 -0
- package/dist/mcp-memory-inspector-app.js +20 -0
- package/dist/mcp-memory-inspector-app.js.map +1 -0
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +108 -3
- package/dist/memory-projection-store.js +2 -1
- package/dist/memory-provenance.d.ts +57 -0
- package/dist/memory-provenance.js +13 -0
- package/dist/memory-provenance.js.map +1 -0
- 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/models-json.d.ts +1 -1
- 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/native-knowledge.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/objective-state-writers.js +2 -2
- package/dist/operator-toolkit.d.ts +4 -2
- package/dist/operator-toolkit.js +35 -17
- 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 +24 -7
- package/dist/orchestrator.js +107 -65
- package/dist/path-MR5JPYOP.js +9 -0
- package/dist/path-MR5JPYOP.js.map +1 -0
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/qmd-recall-cache.d.ts +2 -2
- package/dist/qmd.d.ts +103 -4
- package/dist/qmd.js +23 -5
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +3 -1
- package/dist/recall-explain-renderer.js +5 -3
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +3 -1
- package/dist/recall-xray-cli.d.ts +3 -1
- package/dist/recall-xray-cli.js +6 -4
- package/dist/recall-xray-renderer.d.ts +3 -1
- package/dist/recall-xray-renderer.js +5 -3
- package/dist/recall-xray.d.ts +8 -1
- package/dist/recall-xray.js +4 -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-auth-token.d.ts +1 -1
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/response-guidance-recall.d.ts +18 -0
- package/dist/response-guidance-recall.js +11 -0
- package/dist/response-guidance-recall.js.map +1 -0
- package/dist/resume-bundles.js +7 -5
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.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/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 +3 -3
- package/dist/semantic-consolidation.js +15 -8
- package/dist/semantic-rule-promotion.js +9 -6
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +10 -7
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- 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/signal.d.ts +1 -1
- 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 +6 -2
- package/dist/storage.js +8 -5
- package/dist/summarizer.d.ts +6 -1
- package/dist/summarizer.js +11 -10
- package/dist/summary-snapshot.d.ts +1 -1
- 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/targeted-fact-recall.d.ts +17 -0
- package/dist/targeted-fact-recall.js +11 -0
- package/dist/targeted-fact-recall.js.map +1 -0
- package/dist/telemetry-transcript.d.ts +7 -0
- package/dist/telemetry-transcript.js +16 -0
- package/dist/telemetry-transcript.js.map +1 -0
- package/dist/temporal-supersession.d.ts +4 -2
- package/dist/temporal-supersession.js +2 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +6 -1
- package/dist/threading.js +2 -1
- package/dist/tier-migration.d.ts +5 -3
- package/dist/tier-routing.d.ts +1 -1
- package/dist/tokens.js +2 -2
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +16 -2
- 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/trust-zones.d.ts +3 -2
- package/dist/trust-zones.js +1 -1
- package/dist/types.d.ts +88 -3
- package/dist/types.js +1 -1
- package/dist/user-model.d.ts +37 -0
- package/dist/user-model.js +28 -0
- package/dist/user-model.js.map +1 -0
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +11 -8
- package/dist/work/board.d.ts +43 -0
- package/dist/work/board.js +14 -0
- package/dist/work/board.js.map +1 -0
- package/dist/work/boundary.d.ts +8 -0
- package/dist/work/boundary.js +14 -0
- package/dist/work/boundary.js.map +1 -0
- package/dist/work/storage.d.ts +39 -0
- package/dist/work/storage.js +11 -0
- package/dist/work/storage.js.map +1 -0
- package/dist/work/types.d.ts +75 -0
- package/dist/work/types.js +1 -0
- package/dist/work/types.js.map +1 -0
- package/package.json +2767 -6
- package/scripts/faiss_index.py +816 -0
- package/scripts/faiss_requirements.txt +3 -0
- package/skills/remnic-entities/SKILL.md +51 -0
- package/skills/remnic-memory-workflow/SKILL.md +61 -0
- package/skills/remnic-recall/SKILL.md +51 -0
- package/skills/remnic-remember/SKILL.md +56 -0
- package/skills/remnic-search/SKILL.md +51 -0
- package/skills/remnic-status/SKILL.md +51 -0
- package/src/abort-error.test.ts +49 -0
- package/src/abort-error.ts +46 -0
- package/src/abstraction-nodes.ts +162 -0
- package/src/access-audit.test.ts +178 -0
- package/src/access-audit.ts +125 -0
- package/src/access-cli.test.ts +439 -0
- package/src/access-cli.ts +438 -0
- package/src/access-http.test.ts +225 -0
- package/src/access-http.ts +1899 -0
- package/src/access-idempotency.ts +232 -0
- package/src/access-mcp.test.ts +568 -0
- package/src/access-mcp.ts +3056 -0
- package/src/access-schema-pi.test.ts +60 -0
- package/src/access-schema.ts +522 -0
- package/src/access-service-namespace.test.ts +123 -0
- package/src/access-service.ts +5629 -0
- package/src/action-confidence.test.ts +206 -0
- package/src/action-confidence.ts +466 -0
- package/src/active-memory-bridge.test.ts +285 -0
- package/src/active-memory-bridge.ts +217 -0
- package/src/active-recall.test.ts +484 -0
- package/src/active-recall.ts +459 -0
- package/src/adapters/claude-code.ts +56 -0
- package/src/adapters/codex.ts +57 -0
- package/src/adapters/hermes.ts +64 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/registry.ts +41 -0
- package/src/adapters/replit.ts +55 -0
- package/src/adapters/types.ts +51 -0
- package/src/behavior-learner.ts +144 -0
- package/src/behavior-signals.ts +73 -0
- package/src/binary-lifecycle/backend.ts +117 -0
- package/src/binary-lifecycle/index.ts +35 -0
- package/src/binary-lifecycle/manifest.ts +79 -0
- package/src/binary-lifecycle/pipeline.ts +352 -0
- package/src/binary-lifecycle/scanner.ts +89 -0
- package/src/binary-lifecycle/types.ts +89 -0
- package/src/bootstrap.ts +178 -0
- package/src/boxes.ts +521 -0
- package/src/briefing.test.ts +1535 -0
- package/src/briefing.ts +1382 -0
- package/src/buffer-session.test.ts +443 -0
- package/src/buffer-surprise-report.ts +176 -0
- package/src/buffer-surprise-telemetry.test.ts +606 -0
- package/src/buffer-surprise-trigger.test.ts +766 -0
- package/src/buffer-surprise.test.ts +339 -0
- package/src/buffer-surprise.ts +203 -0
- package/src/buffer.ts +900 -0
- package/src/bulk-import/cli-command.test.ts +204 -0
- package/src/bulk-import/index.ts +34 -0
- package/src/bulk-import/pipeline.test.ts +445 -0
- package/src/bulk-import/pipeline.ts +178 -0
- package/src/bulk-import/registry.test.ts +151 -0
- package/src/bulk-import/registry.ts +72 -0
- package/src/bulk-import/types.test.ts +272 -0
- package/src/bulk-import/types.ts +145 -0
- package/src/calibration.ts +394 -0
- package/src/capsule-cli.test.ts +398 -0
- package/src/capsule-cli.ts +565 -0
- package/src/causal-behavior.ts +308 -0
- package/src/causal-chain.ts +419 -0
- package/src/causal-consolidation.ts +370 -0
- package/src/causal-retrieval.ts +286 -0
- package/src/causal-trajectory-graph.ts +60 -0
- package/src/causal-trajectory.ts +303 -0
- package/src/chunking.ts +220 -0
- package/src/citations.ts +232 -0
- package/src/cli.ts +9403 -0
- package/src/codex-cli-fallback.ts +162 -0
- package/src/codex-thread-key.ts +1 -0
- package/src/coding/access-coding-context.test.ts +197 -0
- package/src/coding/coding-branch-scope.test.ts +281 -0
- package/src/coding/coding-namespace.test.ts +360 -0
- package/src/coding/coding-namespace.ts +412 -0
- package/src/coding/coding-orchestrator.test.ts +249 -0
- package/src/coding/git-context.test.ts +507 -0
- package/src/coding/git-context.ts +336 -0
- package/src/coding/mcp-set-coding-context.test.ts +174 -0
- package/src/coding/review-context.test.ts +316 -0
- package/src/coding/review-context.ts +349 -0
- package/src/coding/wire-coding-context.test.ts +468 -0
- package/src/commitment-ledger.test.ts +78 -0
- package/src/commitment-ledger.ts +337 -0
- package/src/compat/checks.test.ts +206 -0
- package/src/compat/checks.ts +716 -0
- package/src/compat/types.ts +33 -0
- package/src/compounding/engine.ts +1686 -0
- package/src/compounding/preference-consolidator.ts +778 -0
- package/src/compression-optimizer.ts +312 -0
- package/src/config.test.ts +930 -0
- package/src/config.ts +3807 -0
- package/src/connectors/codex/instructions.md +160 -0
- package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
- package/src/connectors/codex-marketplace.ts +500 -0
- package/src/connectors/codex-materialize-runner.ts +212 -0
- package/src/connectors/codex-materialize.ts +983 -0
- package/src/connectors/coerce.ts +62 -0
- package/src/connectors/index.test.ts +1570 -0
- package/src/connectors/index.ts +3222 -0
- package/src/connectors/live/framework.ts +164 -0
- package/src/connectors/live/github.test.ts +1218 -0
- package/src/connectors/live/github.ts +1068 -0
- package/src/connectors/live/gmail.test.ts +1706 -0
- package/src/connectors/live/gmail.ts +1293 -0
- package/src/connectors/live/google-drive.test.ts +696 -0
- package/src/connectors/live/google-drive.ts +724 -0
- package/src/connectors/live/index.ts +101 -0
- package/src/connectors/live/live-connectors.test.ts +689 -0
- package/src/connectors/live/notion.test.ts +1109 -0
- package/src/connectors/live/notion.ts +978 -0
- package/src/connectors/live/registry.ts +103 -0
- package/src/connectors/live/state-store.ts +399 -0
- package/src/connectors/live/transient-errors.ts +150 -0
- package/src/connectors/weclone-installer.test.ts +850 -0
- package/src/connectors-cli.ts +513 -0
- package/src/console/state.test.ts +224 -0
- package/src/console/state.ts +514 -0
- package/src/console/trace.test.ts +813 -0
- package/src/console/trace.ts +603 -0
- package/src/console/tui.test.ts +582 -0
- package/src/console/tui.ts +508 -0
- package/src/consolidation-operator.ts +182 -0
- package/src/consolidation-provenance-check.ts +551 -0
- package/src/consolidation-undo.ts +718 -0
- package/src/contradiction/contradiction-judge.test.ts +189 -0
- package/src/contradiction/contradiction-judge.ts +333 -0
- package/src/contradiction/contradiction-review.ts +574 -0
- package/src/contradiction/contradiction-scan.ts +504 -0
- package/src/contradiction/contradiction.test.ts +2230 -0
- package/src/contradiction/index.ts +37 -0
- package/src/contradiction/resolution.ts +383 -0
- package/src/conversation-index/backend.ts +323 -0
- package/src/conversation-index/chunker.ts +47 -0
- package/src/conversation-index/cleanup.ts +53 -0
- package/src/conversation-index/faiss-adapter.ts +384 -0
- package/src/conversation-index/indexer.test.ts +164 -0
- package/src/conversation-index/indexer.ts +192 -0
- package/src/conversation-index/search.ts +37 -0
- package/src/cross-namespace-budget.test.ts +275 -0
- package/src/cross-namespace-budget.ts +365 -0
- package/src/cue-anchors.ts +163 -0
- package/src/curation/index.ts +544 -0
- package/src/dashboard-runtime.ts +337 -0
- package/src/day-summary.ts +122 -0
- package/src/dedup/index.ts +330 -0
- package/src/dedup/semantic.test.ts +1577 -0
- package/src/dedup/semantic.ts +148 -0
- package/src/delinearize.ts +193 -0
- package/src/direct-answer-wiring.test.ts +473 -0
- package/src/direct-answer-wiring.ts +180 -0
- package/src/direct-answer.test.ts +484 -0
- package/src/direct-answer.ts +273 -0
- package/src/embedding-fallback.ts +565 -0
- package/src/enrichment/audit.ts +89 -0
- package/src/enrichment/index.ts +27 -0
- package/src/enrichment/pipeline.ts +197 -0
- package/src/enrichment/provider-registry.ts +85 -0
- package/src/enrichment/types.ts +100 -0
- package/src/enrichment/web-search-provider.ts +63 -0
- package/src/entity-retrieval.ts +774 -0
- package/src/entity-schema.ts +239 -0
- package/src/evals.ts +1312 -0
- package/src/event-order-recall.test.ts +4164 -0
- package/src/event-order-recall.ts +2802 -0
- package/src/evidence-pack.test.ts +89 -0
- package/src/evidence-pack.ts +388 -0
- package/src/explicit-capture.ts +530 -0
- package/src/explicit-cue-recall.test.ts +3019 -0
- package/src/explicit-cue-recall.ts +5545 -0
- package/src/extraction-judge-telemetry.ts +234 -0
- package/src/extraction-judge-training.ts +221 -0
- package/src/extraction-judge.ts +846 -0
- package/src/extraction-timeout.test.ts +265 -0
- package/src/extraction.ts +2719 -0
- package/src/fallback-llm.test.ts +1060 -0
- package/src/fallback-llm.ts +918 -0
- package/src/focused-list-recall.test.ts +734 -0
- package/src/focused-list-recall.ts +1160 -0
- package/src/graph-dashboard-diff.ts +35 -0
- package/src/graph-dashboard-key.ts +5 -0
- package/src/graph-dashboard-parser.ts +104 -0
- package/src/graph-edge-reinforcement.ts +192 -0
- package/src/graph-events.ts +151 -0
- package/src/graph-recall.test.ts +164 -0
- package/src/graph-recall.ts +189 -0
- package/src/graph-retrieval.test.ts +809 -0
- package/src/graph-retrieval.ts +823 -0
- package/src/graph-snapshot.ts +329 -0
- package/src/graph.ts +813 -0
- package/src/harmonic-retrieval.ts +223 -0
- package/src/himem.ts +154 -0
- package/src/hygiene.ts +87 -0
- package/src/identity-continuity.ts +333 -0
- package/src/importance.ts +328 -0
- package/src/importers/base.test.ts +294 -0
- package/src/importers/base.ts +436 -0
- package/src/importers/index.ts +21 -0
- package/src/index.ts +1204 -0
- package/src/intent.ts +154 -0
- package/src/json-extract.ts +85 -0
- package/src/json-store.ts +42 -0
- package/src/lcm/archive.ts +617 -0
- package/src/lcm/dag.ts +199 -0
- package/src/lcm/engine.ts +645 -0
- package/src/lcm/index.ts +7 -0
- package/src/lcm/queue.test.ts +178 -0
- package/src/lcm/queue.ts +200 -0
- package/src/lcm/recall.ts +117 -0
- package/src/lcm/schema.ts +154 -0
- package/src/lcm/summarizer.ts +235 -0
- package/src/lcm/tools.ts +191 -0
- package/src/lcm-engine.test.ts +660 -0
- package/src/legacy-hook-compat.test.ts +20 -0
- package/src/legacy-hook-compat.ts +45 -0
- package/src/lifecycle.ts +289 -0
- package/src/live-connectors-runner.ts +385 -0
- package/src/local-llm-qos.test.ts +303 -0
- package/src/local-llm-thinking.test.ts +292 -0
- package/src/local-llm.ts +1464 -0
- package/src/logger.ts +49 -0
- package/src/maintenance/archive-observations.ts +147 -0
- package/src/maintenance/backup-stamp.ts +3 -0
- package/src/maintenance/dreams-ledger.ts +516 -0
- package/src/maintenance/first-start-migration.ts +362 -0
- package/src/maintenance/forget.test.ts +206 -0
- package/src/maintenance/forget.ts +126 -0
- package/src/maintenance/graph-edge-decay.test.ts +409 -0
- package/src/maintenance/graph-edge-decay.ts +394 -0
- package/src/maintenance/memory-governance-cron.ts +447 -0
- package/src/maintenance/memory-governance.ts +1039 -0
- package/src/maintenance/migrate-observations.ts +216 -0
- package/src/maintenance/observation-ledger-utils.ts +54 -0
- package/src/maintenance/pattern-reinforcement.test.ts +875 -0
- package/src/maintenance/pattern-reinforcement.ts +369 -0
- package/src/maintenance/purge.ts +334 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
- package/src/maintenance/rebuild-memory-projection.ts +1234 -0
- package/src/maintenance/rebuild-observations.ts +178 -0
- package/src/maintenance/tier-stats.test.ts +378 -0
- package/src/maintenance/tier-stats.ts +222 -0
- package/src/mcp-memory-inspector-app.ts +421 -0
- package/src/memory-action-policy.ts +80 -0
- package/src/memory-cache.ts +208 -0
- package/src/memory-extension/claude-code-publisher.ts +51 -0
- package/src/memory-extension/codex-publisher.ts +149 -0
- package/src/memory-extension/hermes-publisher.ts +51 -0
- package/src/memory-extension/index.ts +100 -0
- package/src/memory-extension/shared-instructions.ts +133 -0
- package/src/memory-extension/types.ts +86 -0
- package/src/memory-extension-host/host-discovery.ts +276 -0
- package/src/memory-extension-host/index.ts +14 -0
- package/src/memory-extension-host/render-extensions-block.ts +73 -0
- package/src/memory-extension-host/types.ts +21 -0
- package/src/memory-lifecycle-ledger-utils.ts +116 -0
- package/src/memory-projection-format.ts +11 -0
- package/src/memory-projection-store.ts +951 -0
- package/src/memory-provenance.test.ts +196 -0
- package/src/memory-provenance.ts +484 -0
- package/src/memory-worth-bench.test.ts +71 -0
- package/src/memory-worth-bench.ts +265 -0
- package/src/memory-worth-filter.test.ts +209 -0
- package/src/memory-worth-filter.ts +204 -0
- package/src/memory-worth-frontmatter.test.ts +311 -0
- package/src/memory-worth-outcomes.test.ts +316 -0
- package/src/memory-worth-outcomes.ts +286 -0
- package/src/memory-worth.test.ts +317 -0
- package/src/memory-worth.ts +215 -0
- package/src/message-parts/index.ts +806 -0
- package/src/message-parts/message-parts.test.ts +421 -0
- package/src/migrate/from-engram.ts +789 -0
- package/src/model-registry.ts +313 -0
- package/src/models-json.ts +76 -0
- package/src/namespaces/migrate.ts +187 -0
- package/src/namespaces/path.ts +25 -0
- package/src/namespaces/principal.test.ts +195 -0
- package/src/namespaces/principal.ts +86 -0
- package/src/namespaces/search.test.ts +105 -0
- package/src/namespaces/search.ts +233 -0
- package/src/namespaces/storage.ts +74 -0
- package/src/native-knowledge.ts +1823 -0
- package/src/negative.ts +72 -0
- package/src/network/tailscale.ts +179 -0
- package/src/network/webdav.ts +385 -0
- package/src/objective-state-writers.ts +951 -0
- package/src/objective-state.ts +320 -0
- package/src/onboarding/index.ts +529 -0
- package/src/openai-chat-compat.ts +56 -0
- package/src/operator-toolkit.ts +2132 -0
- package/src/opik-exporter.test.ts +72 -0
- package/src/opik-exporter.ts +587 -0
- package/src/orchestrator-extraction-queue.test.ts +197 -0
- package/src/orchestrator-flush.test.ts +1171 -0
- package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
- package/src/orchestrator-source-attribution.test.ts +701 -0
- package/src/orchestrator.ts +16368 -0
- package/src/page-versioning.ts +450 -0
- package/src/patterns-cli.ts +574 -0
- package/src/peers/index.ts +54 -0
- package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
- package/src/peers/migrate-from-identity-anchor.ts +350 -0
- package/src/peers/peers.test.ts +419 -0
- package/src/peers/profile-reasoner.ts +694 -0
- package/src/peers/storage.ts +1350 -0
- package/src/peers/types.ts +138 -0
- package/src/plugin-id.ts +84 -0
- package/src/policy-runtime.ts +209 -0
- package/src/procedural/procedure-miner.ts +150 -0
- package/src/procedural/procedure-recall.ts +93 -0
- package/src/procedural/procedure-stats.ts +213 -0
- package/src/procedural/procedure-types.ts +132 -0
- package/src/procedural/reinforcement-core.test.ts +132 -0
- package/src/procedural/reinforcement-core.ts +73 -0
- package/src/profiling.test.ts +263 -0
- package/src/profiling.ts +435 -0
- package/src/projection/index.ts +398 -0
- package/src/qmd-recall-cache.test.ts +138 -0
- package/src/qmd-recall-cache.ts +111 -0
- package/src/qmd.test.ts +257 -0
- package/src/qmd.ts +2614 -0
- package/src/reasoning-trace-recall.ts +201 -0
- package/src/reasoning-trace-types.ts +235 -0
- package/src/recall-audit-anomaly.test.ts +246 -0
- package/src/recall-audit-anomaly.ts +297 -0
- package/src/recall-audit.test.ts +51 -0
- package/src/recall-audit.ts +72 -0
- package/src/recall-budget-config.test.ts +87 -0
- package/src/recall-disclosure-escalation.test.ts +196 -0
- package/src/recall-disclosure-escalation.ts +158 -0
- package/src/recall-disclosure-shaping.test.ts +146 -0
- package/src/recall-disclosure.test.ts +214 -0
- package/src/recall-explain-renderer.test.ts +140 -0
- package/src/recall-explain-renderer.ts +356 -0
- package/src/recall-mmr.test.ts +808 -0
- package/src/recall-mmr.ts +607 -0
- package/src/recall-qos.test.ts +85 -0
- package/src/recall-qos.ts +82 -0
- package/src/recall-query-policy.ts +221 -0
- package/src/recall-state.test.ts +233 -0
- package/src/recall-state.ts +456 -0
- package/src/recall-tag-filter.ts +143 -0
- package/src/recall-tokenization.ts +35 -0
- package/src/recall-xray-cli.test.ts +118 -0
- package/src/recall-xray-cli.ts +100 -0
- package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
- package/src/recall-xray-renderer.test.ts +539 -0
- package/src/recall-xray-renderer.ts +487 -0
- package/src/recall-xray.test.ts +503 -0
- package/src/recall-xray.ts +621 -0
- package/src/reconstruct.ts +41 -0
- package/src/release-changelog.ts +35 -0
- package/src/relevance.ts +67 -0
- package/src/replay/normalizers/chatgpt.ts +133 -0
- package/src/replay/normalizers/claude.ts +102 -0
- package/src/replay/normalizers/openclaw.ts +119 -0
- package/src/replay/normalizers/shared.ts +69 -0
- package/src/replay/runner.ts +197 -0
- package/src/replay/types.ts +143 -0
- package/src/rerank.test.ts +48 -0
- package/src/rerank.ts +176 -0
- package/src/resolve-auth-token.test.ts +226 -0
- package/src/resolve-auth-token.ts +151 -0
- package/src/resolve-provider-secret.test.ts +187 -0
- package/src/resolve-provider-secret.ts +410 -0
- package/src/response-guidance-recall.test.ts +3952 -0
- package/src/response-guidance-recall.ts +4431 -0
- package/src/resume-bundles.ts +415 -0
- package/src/retrieval-agents.ts +623 -0
- package/src/retrieval-tiers.ts +25 -0
- package/src/retrieval.ts +104 -0
- package/src/review/index.test.ts +201 -0
- package/src/review/index.ts +536 -0
- package/src/routing/engine.ts +162 -0
- package/src/routing/store.ts +321 -0
- package/src/runtime/better-sqlite.test.ts +32 -0
- package/src/runtime/better-sqlite.ts +76 -0
- package/src/runtime/child-process.ts +67 -0
- package/src/runtime/env.ts +48 -0
- package/src/sanitize.ts +58 -0
- package/src/schemas.ts +449 -0
- package/src/sdk-compat.ts +87 -0
- package/src/search/document-scanner.ts +96 -0
- package/src/search/embed-helper.ts +142 -0
- package/src/search/factory.ts +189 -0
- package/src/search/index.ts +10 -0
- package/src/search/lancedb-backend.ts +342 -0
- package/src/search/meilisearch-backend.ts +232 -0
- package/src/search/noop-backend.ts +57 -0
- package/src/search/orama-backend.ts +358 -0
- package/src/search/port.ts +86 -0
- package/src/search/remote-backend.ts +124 -0
- package/src/secure-store/cipher.ts +271 -0
- package/src/secure-store/cli-handlers.ts +355 -0
- package/src/secure-store/cli-renderer.ts +131 -0
- package/src/secure-store/header.ts +373 -0
- package/src/secure-store/index.ts +137 -0
- package/src/secure-store/kdf.ts +263 -0
- package/src/secure-store/keyring.ts +106 -0
- package/src/secure-store/metadata.ts +394 -0
- package/src/secure-store/passphrase-reader.ts +252 -0
- package/src/secure-store/secure-fs.ts +571 -0
- package/src/secure-store/secure-store.test.ts +755 -0
- package/src/semantic-chunking.ts +545 -0
- package/src/semantic-consolidation.test.ts +182 -0
- package/src/semantic-consolidation.ts +432 -0
- package/src/semantic-rule-promotion.ts +183 -0
- package/src/semantic-rule-verifier.ts +160 -0
- package/src/session-integrity.ts +569 -0
- package/src/session-observer-bands.ts +11 -0
- package/src/session-observer-state.ts +346 -0
- package/src/session-toggles.test.ts +96 -0
- package/src/session-toggles.ts +159 -0
- package/src/shared-context/manager.ts +810 -0
- package/src/signal.ts +84 -0
- package/src/skills-registry.test.ts +277 -0
- package/src/skills-registry.ts +120 -0
- package/src/source-attribution-roundtrip.test.ts +215 -0
- package/src/source-attribution.test.ts +1425 -0
- package/src/source-attribution.ts +639 -0
- package/src/spaces/index.ts +627 -0
- package/src/storage-paths.ts +117 -0
- package/src/storage.ts +6657 -0
- package/src/store-contract.ts +55 -0
- package/src/summarizer.ts +844 -0
- package/src/summary-snapshot.test.ts +681 -0
- package/src/summary-snapshot.ts +238 -0
- package/src/surfaces/dreams.test.ts +394 -0
- package/src/surfaces/dreams.ts +346 -0
- package/src/surfaces/heartbeat.test.ts +415 -0
- package/src/surfaces/heartbeat.ts +325 -0
- package/src/sync/index.ts +308 -0
- package/src/targeted-fact-recall.test.ts +1694 -0
- package/src/targeted-fact-recall.ts +2905 -0
- package/src/taxonomy/default-taxonomy.ts +87 -0
- package/src/taxonomy/index.ts +26 -0
- package/src/taxonomy/resolver-doc-generator.ts +57 -0
- package/src/taxonomy/resolver.ts +184 -0
- package/src/taxonomy/taxonomy-loader.ts +186 -0
- package/src/taxonomy/types.ts +48 -0
- package/src/telemetry-transcript.ts +70 -0
- package/src/temporal-index.ts +890 -0
- package/src/temporal-supersession.test.ts +2703 -0
- package/src/temporal-supersession.ts +493 -0
- package/src/temporal-validity.test.ts +448 -0
- package/src/temporal-validity.ts +123 -0
- package/src/threading.ts +395 -0
- package/src/tier-migration.ts +124 -0
- package/src/tier-routing.ts +102 -0
- package/src/tmt.ts +462 -0
- package/src/tokens.test.ts +178 -0
- package/src/tokens.ts +279 -0
- package/src/topics.ts +147 -0
- package/src/training-export/cli-date-validation.test.ts +258 -0
- package/src/training-export/converter.test.ts +452 -0
- package/src/training-export/converter.ts +319 -0
- package/src/training-export/date-parse.ts +117 -0
- package/src/training-export/index.ts +26 -0
- package/src/training-export/registry.test.ts +85 -0
- package/src/training-export/registry.ts +57 -0
- package/src/training-export/types.ts +31 -0
- package/src/transcript.ts +1179 -0
- package/src/transfer/autodetect.ts +30 -0
- package/src/transfer/backup.ts +138 -0
- package/src/transfer/capsule-crypto.ts +485 -0
- package/src/transfer/capsule-encrypt.test.ts +690 -0
- package/src/transfer/capsule-export.ts +543 -0
- package/src/transfer/capsule-fork.ts +375 -0
- package/src/transfer/capsule-import.ts +564 -0
- package/src/transfer/capsule-merge.ts +433 -0
- package/src/transfer/conflict-policy.ts +16 -0
- package/src/transfer/constants.ts +13 -0
- package/src/transfer/exclusions.ts +37 -0
- package/src/transfer/export-json.ts +65 -0
- package/src/transfer/export-md.ts +59 -0
- package/src/transfer/export-sqlite.ts +52 -0
- package/src/transfer/fs-utils.ts +269 -0
- package/src/transfer/import-json.ts +108 -0
- package/src/transfer/import-md.ts +84 -0
- package/src/transfer/import-sqlite.ts +100 -0
- package/src/transfer/integrity.ts +71 -0
- package/src/transfer/sqlite-schema.ts +16 -0
- package/src/transfer/types.ts +297 -0
- package/src/trust-zones.ts +1186 -0
- package/src/types.ts +3074 -0
- package/src/user-model.test.ts +124 -0
- package/src/user-model.ts +162 -0
- package/src/utility-learner.ts +353 -0
- package/src/utility-runtime.ts +88 -0
- package/src/utility-telemetry.ts +215 -0
- package/src/utils/category-dir.ts +44 -0
- package/src/utils/errno.ts +6 -0
- package/src/utils/iso-timestamp.test.ts +37 -0
- package/src/utils/iso-timestamp.ts +164 -0
- package/src/utils/path.ts +26 -0
- package/src/verified-recall.ts +138 -0
- package/src/version-utils.test.ts +10 -0
- package/src/version-utils.ts +9 -0
- package/src/whitespace.ts +10 -0
- package/src/work/board.ts +359 -0
- package/src/work/boundary.ts +107 -0
- package/src/work/storage.ts +436 -0
- package/src/work/types.ts +82 -0
- package/src/work-product-ledger.ts +265 -0
- package/dist/access-service-BkXt3di1.d.ts +0 -2039
- package/dist/capsule-crypto-SJS5VVAP.js +0 -18
- package/dist/capsule-export-LLEVB2RG.js +0 -17
- package/dist/capsule-import-UW45R2MZ.js +0 -16
- package/dist/capsule-merge-DI7PNQ2H.js +0 -189
- package/dist/chunk-2LGMW3DJ.js +0 -111
- package/dist/chunk-2YMTO4ZJ.js +0 -265
- package/dist/chunk-2YMTO4ZJ.js.map +0 -1
- package/dist/chunk-363MWCD3.js +0 -9683
- package/dist/chunk-363MWCD3.js.map +0 -1
- package/dist/chunk-36CTNQY7.js +0 -1554
- package/dist/chunk-36CTNQY7.js.map +0 -1
- package/dist/chunk-457A4P3L.js +0 -119
- package/dist/chunk-457A4P3L.js.map +0 -1
- package/dist/chunk-4DXC6HQQ.js +0 -1837
- package/dist/chunk-4DXC6HQQ.js.map +0 -1
- package/dist/chunk-4IS4SXIQ.js +0 -2040
- package/dist/chunk-57QNCUEZ.js +0 -1914
- package/dist/chunk-57QNCUEZ.js.map +0 -1
- package/dist/chunk-6AUUAZEX.js +0 -150
- package/dist/chunk-6AUUAZEX.js.map +0 -1
- package/dist/chunk-6TBWYBJ3.js +0 -236
- package/dist/chunk-6XA7UN4Z.js +0 -135
- package/dist/chunk-6Z6UH6TK.js +0 -2129
- package/dist/chunk-6Z6UH6TK.js.map +0 -1
- package/dist/chunk-74EMIVE4.js +0 -329
- package/dist/chunk-74EMIVE4.js.map +0 -1
- package/dist/chunk-74WWN7ZW.js +0 -82
- package/dist/chunk-74WWN7ZW.js.map +0 -1
- package/dist/chunk-767ODGE6.js +0 -183
- package/dist/chunk-A4ACKWIW.js +0 -289
- package/dist/chunk-A4ACKWIW.js.map +0 -1
- package/dist/chunk-ASAITVLA.js +0 -64
- package/dist/chunk-ASAITVLA.js.map +0 -1
- package/dist/chunk-C5HUWVH2.js +0 -891
- package/dist/chunk-C5HUWVH2.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-E6K4NIEU.js +0 -747
- package/dist/chunk-E6K4NIEU.js.map +0 -1
- package/dist/chunk-EEQLFRUM.js +0 -89
- package/dist/chunk-EQINRHYR.js +0 -672
- package/dist/chunk-EQINRHYR.js.map +0 -1
- package/dist/chunk-ETOW6ACV.js +0 -158
- package/dist/chunk-ETOW6ACV.js.map +0 -1
- package/dist/chunk-EYNQTST2.js +0 -721
- 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-GGD5W7TB.js +0 -105
- package/dist/chunk-GGD5W7TB.js.map +0 -1
- package/dist/chunk-GVPWB7EY.js +0 -390
- package/dist/chunk-GVPWB7EY.js.map +0 -1
- package/dist/chunk-HJYHRE4S.js +0 -647
- package/dist/chunk-I6BQZSML.js +0 -1451
- package/dist/chunk-I6BQZSML.js.map +0 -1
- package/dist/chunk-IBX3VFOM.js +0 -446
- package/dist/chunk-IBX3VFOM.js.map +0 -1
- 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-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-KBYWQWSB.js +0 -271
- package/dist/chunk-KUHRUM6B.js +0 -14397
- package/dist/chunk-KUHRUM6B.js.map +0 -1
- package/dist/chunk-KWBPHZUU.js +0 -83
- package/dist/chunk-KWBPHZUU.js.map +0 -1
- package/dist/chunk-LIO5X3CM.js +0 -596
- package/dist/chunk-MARWOCVP.js +0 -48
- package/dist/chunk-MCC6KDQF.js +0 -5095
- package/dist/chunk-MCC6KDQF.js.map +0 -1
- package/dist/chunk-N5AKDXAI.js +0 -74
- package/dist/chunk-NN3LPQ5D.js +0 -936
- package/dist/chunk-NN3LPQ5D.js.map +0 -1
- package/dist/chunk-O4XJUPSF.js +0 -533
- package/dist/chunk-O4XJUPSF.js.map +0 -1
- 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-P73JTV34.js +0 -275
- package/dist/chunk-P73JTV34.js.map +0 -1
- package/dist/chunk-P77UEOU2.js +0 -1521
- package/dist/chunk-P77UEOU2.js.map +0 -1
- package/dist/chunk-PB5KW5PL.js +0 -118
- package/dist/chunk-PHNGXFQ6.js +0 -623
- package/dist/chunk-PHNGXFQ6.js.map +0 -1
- package/dist/chunk-QIGOEM65.js +0 -228
- package/dist/chunk-RXTFCYQF.js +0 -108
- package/dist/chunk-S2JJBLJG.js +0 -2101
- package/dist/chunk-S2JJBLJG.js.map +0 -1
- package/dist/chunk-S3IP6R6K.js +0 -219
- package/dist/chunk-S3IP6R6K.js.map +0 -1
- package/dist/chunk-SRBJUAMP.js +0 -403
- package/dist/chunk-SRBJUAMP.js.map +0 -1
- package/dist/chunk-URB2WSKZ.js +0 -350
- package/dist/chunk-URB2WSKZ.js.map +0 -1
- package/dist/chunk-VQXK37XA.js +0 -26
- package/dist/chunk-VQXK37XA.js.map +0 -1
- package/dist/chunk-VTU2B4VF.js +0 -146
- package/dist/chunk-VTU2B4VF.js.map +0 -1
- package/dist/chunk-VX2IUQFE.js +0 -613
- package/dist/chunk-VX2IUQFE.js.map +0 -1
- package/dist/chunk-WGK4VHGP.js +0 -4292
- package/dist/chunk-WGK4VHGP.js.map +0 -1
- package/dist/chunk-WTFWLUSX.js +0 -827
- package/dist/chunk-WTFWLUSX.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-Y5KDIOKF.js +0 -2403
- package/dist/chunk-Y5KDIOKF.js.map +0 -1
- 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-Z5S5HNGY.js +0 -2280
- package/dist/chunk-Z5S5HNGY.js.map +0 -1
- package/dist/chunk-ZL4S7ARC.js +0 -53
- package/dist/chunk-ZTSE2ZJ6.js +0 -190
- package/dist/chunk-ZTSE2ZJ6.js.map +0 -1
- package/dist/cli-Cvy2SNhF.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-3Z6YW7YA.js +0 -413
- package/dist/contradiction-scan-3Z6YW7YA.js.map +0 -1
- package/dist/engine-FOC3IJLA.js +0 -28
- package/dist/fs-utils-IRVUFB6G.js +0 -30
- package/dist/graph-edge-decay-PWB63GRE.js +0 -207
- package/dist/index-1qIcnbG1.d.ts +0 -34
- package/dist/memory-governance-F3QOJGEY.js +0 -37
- package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
- package/dist/orchestrator-AOQMo7QI.d.ts +0 -1784
- 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 → action-confidence.js.map} +0 -0
- /package/dist/{capsule-export-LLEVB2RG.js.map → adapters/claude-code.js.map} +0 -0
- /package/dist/{capsule-import-UW45R2MZ.js.map → adapters/codex.js.map} +0 -0
- /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/hermes.js.map} +0 -0
- /package/dist/{engine-FOC3IJLA.js.map → adapters/index.js.map} +0 -0
- /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/registry.js.map} +0 -0
- /package/dist/{memory-governance-F3QOJGEY.js.map → adapters/replit.js.map} +0 -0
- /package/dist/{path-RMTY5Y5A.js.map → adapters/types.js.map} +0 -0
- /package/dist/{secure-store-4R2GSO7S.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-KBYWQWSB.js.map → chunk-4CRG46BG.js.map} +0 -0
- /package/dist/{chunk-LIO5X3CM.js.map → chunk-7IASACLB.js.map} +0 -0
- /package/dist/{chunk-EYNQTST2.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
- /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
- /package/dist/{chunk-QIGOEM65.js.map → chunk-GGKRUQOO.js.map} +0 -0
- /package/dist/{chunk-HJYHRE4S.js.map → chunk-GL6I6MEQ.js.map} +0 -0
- /package/dist/{state-store-3EH7HYIN.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-PB5KW5PL.js.map → chunk-MC26UJIM.js.map} +0 -0
- /package/dist/{chunk-ZL4S7ARC.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-RXTFCYQF.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/{types-V3FJ26TF.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/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
- /package/dist/{chunk-6XA7UN4Z.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,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coding-agent namespace overlay (issue #569 PR 2 + PR 3).
|
|
3
|
+
*
|
|
4
|
+
* Given a `CodingContext` (from `resolveGitContext`) and a `CodingModeConfig`,
|
|
5
|
+
* returns the namespace that recall + write paths should use — or `null` when
|
|
6
|
+
* no overlay should apply (coding mode disabled, no context supplied, or
|
|
7
|
+
* feature flags off).
|
|
8
|
+
*
|
|
9
|
+
* PR 2 ships the project overlay. PR 3 will add the branch overlay; the
|
|
10
|
+
* function here already handles both flags so the schema / types / plumbing
|
|
11
|
+
* don't have to change a second time when branch-scope lands.
|
|
12
|
+
*
|
|
13
|
+
* Pure function — no orchestrator, no config side-effects. Callers keep rule
|
|
14
|
+
* 42 (read + write through same namespace layer) by consulting the same
|
|
15
|
+
* function on both paths.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { CodingContext, CodingModeConfig } from "../types.js";
|
|
19
|
+
import { stableHash } from "./git-context.js";
|
|
20
|
+
|
|
21
|
+
export interface CodingNamespaceOverlay {
|
|
22
|
+
/**
|
|
23
|
+
* Effective namespace to use for this session's memory operations. When
|
|
24
|
+
* `branchScope` is on, takes the form `project:<id>/branch:<b>`; otherwise
|
|
25
|
+
* `project:<id>`.
|
|
26
|
+
*/
|
|
27
|
+
namespace: string;
|
|
28
|
+
/**
|
|
29
|
+
* Read fallbacks — additional namespaces a caller should include in recall
|
|
30
|
+
* so that, for example, a branch-scoped session still sees project-level
|
|
31
|
+
* memories that were written before the branch scope was enabled.
|
|
32
|
+
*
|
|
33
|
+
* Writes MUST go to `namespace` only; these are read-side only.
|
|
34
|
+
*
|
|
35
|
+
* Introduced to carry PR 3's branch→project fallback; PR 2 returns an empty
|
|
36
|
+
* array here.
|
|
37
|
+
*/
|
|
38
|
+
readFallbacks: string[];
|
|
39
|
+
/**
|
|
40
|
+
* `"project"` when only project scope applies, `"branch"` when branch scope
|
|
41
|
+
* is also layered on. Used for diagnostics (`remnic doctor`) and logging.
|
|
42
|
+
*/
|
|
43
|
+
scope: "project" | "branch";
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
47
|
+
// Sanitization
|
|
48
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Normalize a projectId / branch fragment so the resulting namespace passes
|
|
52
|
+
* the router's `isSafeRouteNamespace` check (`[A-Za-z0-9._-]{1,64}`).
|
|
53
|
+
*
|
|
54
|
+
* Namespaces are used as filesystem directory names and must not contain
|
|
55
|
+
* path separators (`/`, `\`) or colons — so both `:` and `/` collapse to `-`.
|
|
56
|
+
* The project-id format `origin:<8hex>` and branch names like `feat/x` both
|
|
57
|
+
* flow through this helper before hitting the storage layer.
|
|
58
|
+
*
|
|
59
|
+
* NOT a security boundary — projectIds come from `resolveGitContext` (known
|
|
60
|
+
* hex), and branch names come from local git. This defends against corrupt
|
|
61
|
+
* input only.
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* Single-pass sanitization — each input character is visited exactly once.
|
|
65
|
+
* Rewriting as an explicit loop (instead of chained `replace()` calls with
|
|
66
|
+
* greedy quantifiers) closes the polynomial-backtracking surface that
|
|
67
|
+
* CodeQL flagged on patterns like `-+` and `^-+|-+$`.
|
|
68
|
+
*/
|
|
69
|
+
function sanitizeFragment(input: string): string {
|
|
70
|
+
if (typeof input !== "string") return "";
|
|
71
|
+
const trimmed = input.trim().toLowerCase();
|
|
72
|
+
let out = "";
|
|
73
|
+
let prevIsDash = true; // suppress leading dashes
|
|
74
|
+
for (let i = 0; i < trimmed.length; i += 1) {
|
|
75
|
+
const c = trimmed[i]!;
|
|
76
|
+
const cc = trimmed.charCodeAt(i);
|
|
77
|
+
const isSafe =
|
|
78
|
+
(cc >= 48 && cc <= 57) /* 0-9 */ ||
|
|
79
|
+
(cc >= 97 && cc <= 122) /* a-z */ ||
|
|
80
|
+
cc === 46 /* . */ ||
|
|
81
|
+
cc === 95 /* _ */;
|
|
82
|
+
if (isSafe) {
|
|
83
|
+
out += c;
|
|
84
|
+
prevIsDash = false;
|
|
85
|
+
} else if (!prevIsDash) {
|
|
86
|
+
out += "-";
|
|
87
|
+
prevIsDash = true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// Strip a single trailing dash introduced by the final run of unsafe chars.
|
|
91
|
+
if (out.endsWith("-")) out = out.slice(0, -1);
|
|
92
|
+
return out;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Cap to the router's per-namespace upper bound.
|
|
97
|
+
*
|
|
98
|
+
* Raw truncation alone would collapse distinct long inputs that differ near
|
|
99
|
+
* the end (e.g. two `feat/...` branches with different suffixes) into the
|
|
100
|
+
* same namespace — silently mixing recall/write state across branches or
|
|
101
|
+
* projects. When truncation is needed, we append a short deterministic
|
|
102
|
+
* hash suffix (`-<8hex>`) derived from the FULL pre-truncated value so
|
|
103
|
+
* collisions only happen under true hash collisions, not simple prefix
|
|
104
|
+
* overlap.
|
|
105
|
+
*
|
|
106
|
+
* The tail is trimmed to leave room for the separator and 8-char hash and
|
|
107
|
+
* any trailing `-` introduced by the slice is stripped so the final
|
|
108
|
+
* character before `-<hash>` is always alphanumeric or `.`/`_`.
|
|
109
|
+
*/
|
|
110
|
+
const MAX_NAMESPACE_LEN = 64;
|
|
111
|
+
const HASH_SUFFIX_LEN = 9; // "-" + 8 hex chars
|
|
112
|
+
|
|
113
|
+
function capLength(value: string): string {
|
|
114
|
+
if (value.length <= MAX_NAMESPACE_LEN) return value;
|
|
115
|
+
// Reuse the FNV-1a 32-bit hash from git-context — one canonical
|
|
116
|
+
// implementation, one set of edge-case fixes. Uses Math.imul for
|
|
117
|
+
// correct 32-bit wrap-around, which plain `*` would not guarantee
|
|
118
|
+
// for the largest intermediate products.
|
|
119
|
+
const hash = stableHash(value);
|
|
120
|
+
// Trim trailing '-' with a linear, non-backtracking loop. A regex
|
|
121
|
+
// like `-+$` is linear too, but an explicit loop keeps CodeQL happy
|
|
122
|
+
// about polynomial backtracking warnings when several `\-+` patterns
|
|
123
|
+
// appear in the same module.
|
|
124
|
+
let end = MAX_NAMESPACE_LEN - HASH_SUFFIX_LEN;
|
|
125
|
+
while (end > 0 && value.charCodeAt(end - 1) === 45 /* '-' */) end -= 1;
|
|
126
|
+
return `${value.slice(0, end)}-${hash}`;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Produce the project-scope namespace name. Exported for tests and for
|
|
131
|
+
* `remnic doctor` to render. Guaranteed to satisfy `isSafeRouteNamespace`:
|
|
132
|
+
* no `/`, no `:`, lowercase only, length-capped to 64 chars.
|
|
133
|
+
*/
|
|
134
|
+
export function projectNamespaceName(projectId: string): string {
|
|
135
|
+
const frag = sanitizeFragment(projectId);
|
|
136
|
+
return capLength(`project-${frag || "unknown"}`);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Preserve case when sanitizing a principal-derived base namespace. The
|
|
141
|
+
* router's `isSafeRouteNamespace` check accepts `[A-Za-z0-9._-]{1,64}`, so
|
|
142
|
+
* upper-case characters in the principal name are safe and MUST be kept to
|
|
143
|
+
* avoid colliding two otherwise-distinct principals (e.g. `Alice` vs
|
|
144
|
+
* `alice`) into the same combined namespace.
|
|
145
|
+
*
|
|
146
|
+
* Otherwise identical to `sanitizeFragment`: single-pass, linear, no
|
|
147
|
+
* polynomial-backtracking quantifiers, unsafe chars collapse to `-` with
|
|
148
|
+
* leading/trailing dashes suppressed.
|
|
149
|
+
*/
|
|
150
|
+
function sanitizeBaseFragment(input: string): string {
|
|
151
|
+
if (typeof input !== "string") return "";
|
|
152
|
+
const trimmed = input.trim();
|
|
153
|
+
let out = "";
|
|
154
|
+
let prevIsDash = true;
|
|
155
|
+
for (let i = 0; i < trimmed.length; i += 1) {
|
|
156
|
+
const c = trimmed[i]!;
|
|
157
|
+
const cc = trimmed.charCodeAt(i);
|
|
158
|
+
const isSafe =
|
|
159
|
+
(cc >= 48 && cc <= 57) /* 0-9 */ ||
|
|
160
|
+
(cc >= 65 && cc <= 90) /* A-Z */ ||
|
|
161
|
+
(cc >= 97 && cc <= 122) /* a-z */ ||
|
|
162
|
+
cc === 46 /* . */ ||
|
|
163
|
+
cc === 95 /* _ */;
|
|
164
|
+
if (isSafe) {
|
|
165
|
+
out += c;
|
|
166
|
+
prevIsDash = false;
|
|
167
|
+
} else if (!prevIsDash) {
|
|
168
|
+
out += "-";
|
|
169
|
+
prevIsDash = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (out.endsWith("-")) out = out.slice(0, -1);
|
|
173
|
+
return out;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Combine a principal-derived base namespace (e.g. `default`, `alice`) with a
|
|
178
|
+
* coding-agent overlay namespace (e.g. `project-origin-abcd1234`). The result
|
|
179
|
+
* is a single safe-route token that preserves principal isolation (CLAUDE.md
|
|
180
|
+
* rule 42: read + write must resolve through the same namespace layer — and
|
|
181
|
+
* here, through the same principal-scoped prefix) while layering project or
|
|
182
|
+
* project/branch scope on top.
|
|
183
|
+
*
|
|
184
|
+
* Multiple principals working in the same repo thus get distinct namespaces:
|
|
185
|
+
*
|
|
186
|
+
* alice + project-origin-ab12 → alice-project-origin-ab12
|
|
187
|
+
* bob + project-origin-ab12 → bob-project-origin-ab12
|
|
188
|
+
* Alice + project-origin-ab12 → Alice-project-origin-ab12 (distinct)
|
|
189
|
+
*
|
|
190
|
+
* The base fragment preserves case so `Alice` and `alice` remain distinct;
|
|
191
|
+
* the overlay fragment is still lowercase-sanitized because it derives from
|
|
192
|
+
* deterministic, pre-lowercased git hashes.
|
|
193
|
+
*
|
|
194
|
+
* Output is re-capped through `capLength` so a very long base + overlay
|
|
195
|
+
* combination still fits inside `isSafeRouteNamespace` (≤ 64 chars). The
|
|
196
|
+
* deterministic hash suffix on truncation keeps distinct inputs distinct.
|
|
197
|
+
*/
|
|
198
|
+
export function combineNamespaces(base: string, overlay: string): string {
|
|
199
|
+
const baseFrag = sanitizeBaseFragment(base);
|
|
200
|
+
const overlayFrag = sanitizeFragment(overlay);
|
|
201
|
+
if (!baseFrag) return capLength(overlayFrag || "unknown");
|
|
202
|
+
if (!overlayFrag) return capLength(baseFrag);
|
|
203
|
+
return capLength(`${baseFrag}-${overlayFrag}`);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Produce the branch-scope namespace name. Format:
|
|
208
|
+
* `project-<id>-branch-<name>[-<hash>]`. Uses `-` as the structural separator
|
|
209
|
+
* rather than `/` or `:` so the result is a single safe route-namespace
|
|
210
|
+
* token that can be used directly as a filesystem directory.
|
|
211
|
+
*
|
|
212
|
+
* Two failure modes must not collapse distinct branches to one namespace:
|
|
213
|
+
*
|
|
214
|
+
* 1. Sanitization is lossy (`feat/x` and `feat-x` both sanitize to
|
|
215
|
+
* `feat-x`; `Feature` and `feature` both sanitize to `feature`). When
|
|
216
|
+
* sanitization rewrote any character, we append a short hash of the
|
|
217
|
+
* RAW branch so distinct inputs stay distinct.
|
|
218
|
+
* 2. Truncation is applied when the total exceeds 64 chars. In that
|
|
219
|
+
* mode `capLength` appends its own hash of the full pre-truncated
|
|
220
|
+
* value.
|
|
221
|
+
*
|
|
222
|
+
* Long branches that also sanitize may receive both kinds of hashes — that
|
|
223
|
+
* is acceptable: the router only requires the result be unique and
|
|
224
|
+
* deterministic, and the two hashes derive from different domains so they
|
|
225
|
+
* don't conflict.
|
|
226
|
+
*/
|
|
227
|
+
export function branchNamespaceName(projectId: string, branch: string): string {
|
|
228
|
+
const projectFrag = sanitizeFragment(projectId);
|
|
229
|
+
const trimmedBranch = branch.trim();
|
|
230
|
+
const branchFrag = sanitizeFragment(trimmedBranch);
|
|
231
|
+
// Lossy-sanitization disambiguator: append hash of the raw (trimmed)
|
|
232
|
+
// branch when sanitization actually changed the string. Preserves
|
|
233
|
+
// distinctness across `feat/x` vs `feat-x` and `Feature` vs `feature`.
|
|
234
|
+
// The comparison uses the raw trimmed value (NOT `.toLowerCase()`) so
|
|
235
|
+
// case-only variants are treated as lossy and receive their own hash.
|
|
236
|
+
// Empty / already-safe-lowercase inputs get no hash so the common case
|
|
237
|
+
// stays readable.
|
|
238
|
+
const disambig = trimmedBranch.length > 0 && branchFrag !== trimmedBranch;
|
|
239
|
+
const base = `project-${projectFrag || "unknown"}-branch-${branchFrag || "unknown"}`;
|
|
240
|
+
const suffixed = disambig ? `${base}-${stableHash(trimmedBranch)}` : base;
|
|
241
|
+
return capLength(suffixed);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
245
|
+
// Overlay resolver
|
|
246
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Compute the namespace overlay for a session.
|
|
250
|
+
*
|
|
251
|
+
* Returns `null` when no overlay applies — callers should then use their
|
|
252
|
+
* existing `defaultNamespaceForPrincipal(...)` result unchanged. This keeps
|
|
253
|
+
* CLAUDE.md #30 (escape hatch): setting `codingMode.projectScope: false`
|
|
254
|
+
* exactly restores pre-#569 behaviour at every call site.
|
|
255
|
+
*
|
|
256
|
+
* @param codingContext — git context from the connector
|
|
257
|
+
* @param config — coding mode flags (projectScope, branchScope, globalFallback)
|
|
258
|
+
* @param defaultNamespace — retained for call-site compatibility; no longer
|
|
259
|
+
* used. The global fallback is expressed as an empty-string sentinel in
|
|
260
|
+
* `readFallbacks`, which `combineNamespaces(principal, "")` resolves to the
|
|
261
|
+
* principal's own namespace at the call site.
|
|
262
|
+
*/
|
|
263
|
+
export function resolveCodingNamespaceOverlay(
|
|
264
|
+
codingContext: CodingContext | null | undefined,
|
|
265
|
+
config: Pick<CodingModeConfig, "projectScope" | "branchScope" | "globalFallback">,
|
|
266
|
+
defaultNamespace?: string,
|
|
267
|
+
): CodingNamespaceOverlay | null {
|
|
268
|
+
// No context supplied (session isn't in a git repo, or connector didn't
|
|
269
|
+
// attach one) → no overlay.
|
|
270
|
+
if (!codingContext) return null;
|
|
271
|
+
|
|
272
|
+
// Project scope disabled → no overlay at all. Branch scope depends on
|
|
273
|
+
// project scope being on; there is no branch-only mode.
|
|
274
|
+
if (!config.projectScope) return null;
|
|
275
|
+
|
|
276
|
+
// Require a non-empty projectId — defensive.
|
|
277
|
+
const projectId = typeof codingContext.projectId === "string" ? codingContext.projectId.trim() : "";
|
|
278
|
+
if (!projectId) return null;
|
|
279
|
+
|
|
280
|
+
const projectNs = projectNamespaceName(projectId);
|
|
281
|
+
|
|
282
|
+
// Root/global namespace fallback: when `globalFallback` is true, include
|
|
283
|
+
// the principal's self namespace in readFallbacks so cross-project knowledge
|
|
284
|
+
// remains visible. CLAUDE.md #30: the gate is `globalFallback` — set to
|
|
285
|
+
// false for strict project isolation.
|
|
286
|
+
//
|
|
287
|
+
// The fallback value is "" (empty string), NOT the defaultNamespace name.
|
|
288
|
+
// The orchestrator passes each fallback through combineNamespaces(principal, fallback),
|
|
289
|
+
// and combineNamespaces(base, "") returns base unchanged — yielding the
|
|
290
|
+
// principal's own namespace. Using the actual namespace name (e.g., "default")
|
|
291
|
+
// would produce "default-default" after combination, missing the target.
|
|
292
|
+
const includeRoot = config.globalFallback === true;
|
|
293
|
+
|
|
294
|
+
// Branch-scope layering (PR 3):
|
|
295
|
+
// - only when config.branchScope is explicitly true
|
|
296
|
+
// - only when we actually have a branch (null in detached HEAD)
|
|
297
|
+
// - project namespace becomes a read fallback so project-level memories
|
|
298
|
+
// remain visible from any branch (deliberate asymmetry — branch writes
|
|
299
|
+
// don't leak up, but project reads leak down).
|
|
300
|
+
// - when globalFallback is on, the root namespace is also appended so
|
|
301
|
+
// globally useful memories surface in every branch.
|
|
302
|
+
if (config.branchScope && typeof codingContext.branch === "string" && codingContext.branch.length > 0) {
|
|
303
|
+
const branchNs = branchNamespaceName(projectId, codingContext.branch);
|
|
304
|
+
const fallbacks = [projectNs];
|
|
305
|
+
if (includeRoot) fallbacks.push("");
|
|
306
|
+
return {
|
|
307
|
+
namespace: branchNs,
|
|
308
|
+
readFallbacks: fallbacks,
|
|
309
|
+
scope: "branch",
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return {
|
|
314
|
+
namespace: projectNs,
|
|
315
|
+
readFallbacks: includeRoot ? [""] : [],
|
|
316
|
+
scope: "project",
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
321
|
+
// Diagnostics (issue #569 PR 3 + PR 8)
|
|
322
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
323
|
+
|
|
324
|
+
export interface CodingScopeDescription {
|
|
325
|
+
/** "none" when no overlay is active; otherwise the resolved scope level. */
|
|
326
|
+
scope: "none" | "project" | "branch";
|
|
327
|
+
/** Project id (raw, not sanitized) when a context is attached. */
|
|
328
|
+
projectId: string | null;
|
|
329
|
+
/** Branch name (raw, not sanitized) when available. */
|
|
330
|
+
branch: string | null;
|
|
331
|
+
/** Effective namespace writes route to. `null` when no overlay applies. */
|
|
332
|
+
effectiveNamespace: string | null;
|
|
333
|
+
/** Read fallbacks included in recall (non-empty only when branch-scope is on). */
|
|
334
|
+
readFallbacks: string[];
|
|
335
|
+
/**
|
|
336
|
+
* Why no overlay applies, when `scope === "none"`. One of:
|
|
337
|
+
* - `"no-context"` — connector didn't attach a CodingContext
|
|
338
|
+
* - `"disabled"` — codingMode.projectScope is false
|
|
339
|
+
* - `"empty-project"` — codingContext.projectId was empty/whitespace
|
|
340
|
+
*/
|
|
341
|
+
disabledReason: "no-context" | "disabled" | "empty-project" | null;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Human-readable description of the coding-agent scope that currently applies
|
|
346
|
+
* for a session. Consumed by `remnic doctor` (PR 8) and by logs to surface
|
|
347
|
+
* why recall routes where it does.
|
|
348
|
+
*
|
|
349
|
+
* Pure — callers pass the coding context + config they already have.
|
|
350
|
+
*/
|
|
351
|
+
export function describeCodingScope(
|
|
352
|
+
codingContext: CodingContext | null | undefined,
|
|
353
|
+
config: Pick<CodingModeConfig, "projectScope" | "branchScope" | "globalFallback">,
|
|
354
|
+
defaultNamespace?: string,
|
|
355
|
+
): CodingScopeDescription {
|
|
356
|
+
const projectId = codingContext?.projectId ?? null;
|
|
357
|
+
const branch = codingContext?.branch ?? null;
|
|
358
|
+
|
|
359
|
+
if (!codingContext) {
|
|
360
|
+
return {
|
|
361
|
+
scope: "none",
|
|
362
|
+
projectId: null,
|
|
363
|
+
branch: null,
|
|
364
|
+
effectiveNamespace: null,
|
|
365
|
+
readFallbacks: [],
|
|
366
|
+
disabledReason: "no-context",
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
if (!config.projectScope) {
|
|
370
|
+
return {
|
|
371
|
+
scope: "none",
|
|
372
|
+
projectId,
|
|
373
|
+
branch,
|
|
374
|
+
effectiveNamespace: null,
|
|
375
|
+
readFallbacks: [],
|
|
376
|
+
disabledReason: "disabled",
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
const trimmedId = typeof projectId === "string" ? projectId.trim() : "";
|
|
380
|
+
if (!trimmedId) {
|
|
381
|
+
return {
|
|
382
|
+
scope: "none",
|
|
383
|
+
projectId,
|
|
384
|
+
branch,
|
|
385
|
+
effectiveNamespace: null,
|
|
386
|
+
readFallbacks: [],
|
|
387
|
+
disabledReason: "empty-project",
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
const overlay = resolveCodingNamespaceOverlay(codingContext, config, defaultNamespace);
|
|
392
|
+
// Unreachable in practice given the guards above, but keep the return
|
|
393
|
+
// shape consistent if the resolver grows new null branches later.
|
|
394
|
+
if (!overlay) {
|
|
395
|
+
return {
|
|
396
|
+
scope: "none",
|
|
397
|
+
projectId,
|
|
398
|
+
branch,
|
|
399
|
+
effectiveNamespace: null,
|
|
400
|
+
readFallbacks: [],
|
|
401
|
+
disabledReason: "disabled",
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
return {
|
|
405
|
+
scope: overlay.scope,
|
|
406
|
+
projectId,
|
|
407
|
+
branch,
|
|
408
|
+
effectiveNamespace: overlay.namespace,
|
|
409
|
+
readFallbacks: overlay.readFallbacks,
|
|
410
|
+
disabledReason: null,
|
|
411
|
+
};
|
|
412
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for the orchestrator's coding-namespace overlay surface
|
|
3
|
+
* (issue #569 PR 2).
|
|
4
|
+
*
|
|
5
|
+
* These tests use `Object.create(Orchestrator.prototype)` to exercise the
|
|
6
|
+
* overlay helpers in isolation — no storage, no extraction. The end-to-end
|
|
7
|
+
* contract being verified:
|
|
8
|
+
*
|
|
9
|
+
* 1. A session without a coding context gets the default namespace.
|
|
10
|
+
* 2. A session with a coding context + `codingMode.projectScope: true`
|
|
11
|
+
* gets a `project-<id>` overlay on both read and write paths.
|
|
12
|
+
* 3. Disabling `codingMode.projectScope: false` exactly restores the
|
|
13
|
+
* default namespace (CLAUDE.md #30 escape hatch).
|
|
14
|
+
* 4. Rule 42 invariant: read-path overlay and write-path overlay return
|
|
15
|
+
* the same namespace for the same session + context.
|
|
16
|
+
* 5. Isolation: two sessions on different projects resolve to different
|
|
17
|
+
* namespaces — cross-project leakage cannot occur at the routing layer.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import assert from "node:assert/strict";
|
|
21
|
+
import test from "node:test";
|
|
22
|
+
|
|
23
|
+
import { Orchestrator } from "../orchestrator.js";
|
|
24
|
+
import type { CodingContext, CodingModeConfig, PluginConfig } from "../types.js";
|
|
25
|
+
|
|
26
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
27
|
+
// Minimal orchestrator stub
|
|
28
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
type OrchestratorLike = {
|
|
31
|
+
config: PluginConfig;
|
|
32
|
+
// The private map on the real orchestrator — we mirror its name so the
|
|
33
|
+
// methods under test read from the same slot.
|
|
34
|
+
_codingContextBySession: Map<string, CodingContext>;
|
|
35
|
+
setCodingContextForSession: Orchestrator["setCodingContextForSession"];
|
|
36
|
+
getCodingContextForSession: Orchestrator["getCodingContextForSession"];
|
|
37
|
+
applyCodingNamespaceOverlay: Orchestrator["applyCodingNamespaceOverlay"];
|
|
38
|
+
applyCodingRecallOverlay: Orchestrator["applyCodingRecallOverlay"];
|
|
39
|
+
resolveSelfNamespace: Orchestrator["resolveSelfNamespace"];
|
|
40
|
+
resolvePrincipal: Orchestrator["resolvePrincipal"];
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
function makeOrchestrator(codingMode: Partial<CodingModeConfig> = {}): OrchestratorLike {
|
|
44
|
+
const orch = Object.create(Orchestrator.prototype) as OrchestratorLike;
|
|
45
|
+
orch._codingContextBySession = new Map<string, CodingContext>();
|
|
46
|
+
// Minimal PluginConfig — only the fields the overlay path reads.
|
|
47
|
+
orch.config = {
|
|
48
|
+
namespacesEnabled: true,
|
|
49
|
+
defaultNamespace: "default",
|
|
50
|
+
sharedNamespace: "shared",
|
|
51
|
+
namespacePolicies: [],
|
|
52
|
+
defaultRecallNamespaces: ["self", "shared"],
|
|
53
|
+
principalFromSessionKeyMode: "prefix",
|
|
54
|
+
principalFromSessionKeyRules: [],
|
|
55
|
+
codingMode: {
|
|
56
|
+
projectScope: true,
|
|
57
|
+
branchScope: false,
|
|
58
|
+
...codingMode,
|
|
59
|
+
},
|
|
60
|
+
} as unknown as PluginConfig;
|
|
61
|
+
return orch;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function contextFor(projectId: string, branch: string | null = "main"): CodingContext {
|
|
65
|
+
return {
|
|
66
|
+
projectId,
|
|
67
|
+
branch,
|
|
68
|
+
rootPath: `/work/${projectId}`,
|
|
69
|
+
defaultBranch: "main",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
74
|
+
// Basic setters / getters
|
|
75
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
76
|
+
|
|
77
|
+
test("setCodingContextForSession: stores context; getCodingContextForSession returns it", () => {
|
|
78
|
+
const orch = makeOrchestrator();
|
|
79
|
+
const ctx = contextFor("origin:a1");
|
|
80
|
+
orch.setCodingContextForSession("session-A", ctx);
|
|
81
|
+
assert.deepEqual(orch.getCodingContextForSession("session-A"), ctx);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test("setCodingContextForSession: null clears the context", () => {
|
|
85
|
+
const orch = makeOrchestrator();
|
|
86
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:a1"));
|
|
87
|
+
orch.setCodingContextForSession("session-A", null);
|
|
88
|
+
assert.equal(orch.getCodingContextForSession("session-A"), null);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
test("getCodingContextForSession: missing session returns null", () => {
|
|
92
|
+
const orch = makeOrchestrator();
|
|
93
|
+
assert.equal(orch.getCodingContextForSession("unknown"), null);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
test("setCodingContextForSession: empty sessionKey is a no-op (defensive)", () => {
|
|
97
|
+
const orch = makeOrchestrator();
|
|
98
|
+
orch.setCodingContextForSession("", contextFor("origin:a1"));
|
|
99
|
+
assert.equal(orch._codingContextBySession.size, 0);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
103
|
+
// Overlay on write path
|
|
104
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
105
|
+
|
|
106
|
+
test("applyCodingNamespaceOverlay: returns base unchanged when no context attached", () => {
|
|
107
|
+
const orch = makeOrchestrator();
|
|
108
|
+
assert.equal(orch.applyCodingNamespaceOverlay("session-A", "default"), "default");
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
test("applyCodingNamespaceOverlay: combines base + project overlay when context is set and projectScope on", () => {
|
|
112
|
+
const orch = makeOrchestrator();
|
|
113
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:abcdef12"));
|
|
114
|
+
// Rule 42 / principal isolation: overlay is COMBINED with the principal
|
|
115
|
+
// base, not a replacement. Two principals in the same repo thus get
|
|
116
|
+
// distinct namespaces (`alice-project-…` vs `bob-project-…`).
|
|
117
|
+
assert.equal(
|
|
118
|
+
orch.applyCodingNamespaceOverlay("session-A", "default"),
|
|
119
|
+
"default-project-origin-abcdef12",
|
|
120
|
+
);
|
|
121
|
+
assert.equal(
|
|
122
|
+
orch.applyCodingNamespaceOverlay("session-A", "alice"),
|
|
123
|
+
"alice-project-origin-abcdef12",
|
|
124
|
+
);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
test("applyCodingNamespaceOverlay: different principals on same repo get isolated namespaces", () => {
|
|
128
|
+
const orch = makeOrchestrator();
|
|
129
|
+
orch.setCodingContextForSession("alice-sess", contextFor("origin:deadbeef"));
|
|
130
|
+
orch.setCodingContextForSession("bob-sess", contextFor("origin:deadbeef"));
|
|
131
|
+
const aliceNs = orch.applyCodingNamespaceOverlay("alice-sess", "alice");
|
|
132
|
+
const bobNs = orch.applyCodingNamespaceOverlay("bob-sess", "bob");
|
|
133
|
+
assert.notEqual(
|
|
134
|
+
aliceNs,
|
|
135
|
+
bobNs,
|
|
136
|
+
"distinct principals on the same repo must route to distinct namespaces",
|
|
137
|
+
);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
test("applyCodingNamespaceOverlay: principal base namespace preserves case", () => {
|
|
141
|
+
// Regression: sanitizeFragment() was lowercasing the base, so two valid
|
|
142
|
+
// but case-differing principal identifiers (`Alice` vs `alice`) would
|
|
143
|
+
// collapse to the same combined namespace. The router accepts
|
|
144
|
+
// [A-Za-z0-9._-]{1,64}, so case is a legal discriminator and must not
|
|
145
|
+
// be dropped on the write / read paths.
|
|
146
|
+
const orch = makeOrchestrator();
|
|
147
|
+
orch.setCodingContextForSession("A-sess", contextFor("origin:deadbeef"));
|
|
148
|
+
orch.setCodingContextForSession("a-sess", contextFor("origin:deadbeef"));
|
|
149
|
+
const upperNs = orch.applyCodingNamespaceOverlay("A-sess", "Alice");
|
|
150
|
+
const lowerNs = orch.applyCodingNamespaceOverlay("a-sess", "alice");
|
|
151
|
+
assert.notEqual(
|
|
152
|
+
upperNs,
|
|
153
|
+
lowerNs,
|
|
154
|
+
"case-only principal variants must not collapse to the same namespace",
|
|
155
|
+
);
|
|
156
|
+
assert.equal(upperNs, "Alice-project-origin-deadbeef");
|
|
157
|
+
assert.equal(lowerNs, "alice-project-origin-deadbeef");
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
test("applyCodingNamespaceOverlay: projectScope=false returns base unchanged (escape hatch)", () => {
|
|
161
|
+
const orch = makeOrchestrator({ projectScope: false });
|
|
162
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:abcdef12"));
|
|
163
|
+
assert.equal(
|
|
164
|
+
orch.applyCodingNamespaceOverlay("session-A", "default"),
|
|
165
|
+
"default",
|
|
166
|
+
"codingMode.projectScope=false must exactly restore pre-#569 behaviour",
|
|
167
|
+
);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
test("applyCodingNamespaceOverlay: namespacesEnabled=false returns base unchanged", () => {
|
|
171
|
+
// When namespacesEnabled is off the storage router maps every namespace
|
|
172
|
+
// to the same directory — a `project-*` overlay would create apparent
|
|
173
|
+
// route separation with no actual isolation. In that mode, coding mode
|
|
174
|
+
// degrades to unscoped behavior.
|
|
175
|
+
const orch = makeOrchestrator();
|
|
176
|
+
(orch.config as unknown as { namespacesEnabled: boolean }).namespacesEnabled = false;
|
|
177
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:abcdef12"));
|
|
178
|
+
assert.equal(
|
|
179
|
+
orch.applyCodingNamespaceOverlay("session-A", "default"),
|
|
180
|
+
"default",
|
|
181
|
+
);
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
185
|
+
// Overlay on read path
|
|
186
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
187
|
+
|
|
188
|
+
test("applyCodingRecallOverlay: no context → null (caller uses its existing namespaces)", () => {
|
|
189
|
+
const orch = makeOrchestrator();
|
|
190
|
+
assert.equal(orch.applyCodingRecallOverlay("session-A"), null);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
test("applyCodingRecallOverlay: project context → overlay with empty fallbacks", () => {
|
|
194
|
+
const orch = makeOrchestrator();
|
|
195
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:aaaaaaaa"));
|
|
196
|
+
const overlay = orch.applyCodingRecallOverlay("session-A");
|
|
197
|
+
assert.deepEqual(overlay, { namespace: "project-origin-aaaaaaaa", readFallbacks: [] });
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
test("applyCodingRecallOverlay: projectScope=false → null (escape hatch)", () => {
|
|
201
|
+
const orch = makeOrchestrator({ projectScope: false });
|
|
202
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:aaaaaaaa"));
|
|
203
|
+
assert.equal(orch.applyCodingRecallOverlay("session-A"), null);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test("applyCodingRecallOverlay: namespacesEnabled=false → null", () => {
|
|
207
|
+
const orch = makeOrchestrator();
|
|
208
|
+
(orch.config as unknown as { namespacesEnabled: boolean }).namespacesEnabled = false;
|
|
209
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:aaaaaaaa"));
|
|
210
|
+
assert.equal(orch.applyCodingRecallOverlay("session-A"), null);
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
214
|
+
// Rule 42 — read path and write path resolve consistently
|
|
215
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
216
|
+
|
|
217
|
+
test("CLAUDE.md #42: read and write paths resolve the same namespace for the same principal + session", () => {
|
|
218
|
+
// With the principal-scoped combine, the write-path namespace is
|
|
219
|
+
// `<principal>-project-<id>` and the read-path self namespace is the
|
|
220
|
+
// combine of the same principal base with the overlay. Both must be
|
|
221
|
+
// identical for the same (sessionKey, baseNamespace) pair.
|
|
222
|
+
const orch = makeOrchestrator();
|
|
223
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:deadbeef"));
|
|
224
|
+
|
|
225
|
+
const base = "default";
|
|
226
|
+
const writeNs = orch.applyCodingNamespaceOverlay("session-A", base);
|
|
227
|
+
const recallOverlay = orch.applyCodingRecallOverlay("session-A");
|
|
228
|
+
assert.ok(recallOverlay);
|
|
229
|
+
// The read path callers also perform the combine; here we verify the
|
|
230
|
+
// equivalence contract: a raw overlay + base combined on the read path
|
|
231
|
+
// must match the write-path namespace.
|
|
232
|
+
assert.equal(writeNs, `${base}-${recallOverlay!.namespace}`);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
236
|
+
// Isolation invariant — two projects, two namespaces
|
|
237
|
+
// ──────────────────────────────────────────────────────────────────────────
|
|
238
|
+
|
|
239
|
+
test("two sessions on different projects resolve to different namespaces (no cross-project leakage)", () => {
|
|
240
|
+
const orch = makeOrchestrator();
|
|
241
|
+
orch.setCodingContextForSession("session-A", contextFor("origin:11111111"));
|
|
242
|
+
orch.setCodingContextForSession("session-B", contextFor("origin:22222222"));
|
|
243
|
+
|
|
244
|
+
const nsA = orch.applyCodingNamespaceOverlay("session-A", "default");
|
|
245
|
+
const nsB = orch.applyCodingNamespaceOverlay("session-B", "default");
|
|
246
|
+
assert.notEqual(nsA, nsB);
|
|
247
|
+
assert.equal(nsA, "default-project-origin-11111111");
|
|
248
|
+
assert.equal(nsB, "default-project-origin-22222222");
|
|
249
|
+
});
|