@remnic/core 1.1.31 → 9.3.515
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abstraction-nodes.js +2 -2
- package/dist/access-cli.d.ts +1 -1
- package/dist/access-cli.js +156 -119
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +8 -5
- package/dist/access-http.js +51 -51
- package/dist/access-idempotency.d.ts +2 -0
- package/dist/access-idempotency.js +1 -1
- package/dist/access-mcp.d.ts +16 -9
- package/dist/access-mcp.js +44 -44
- package/dist/access-schema.d.ts +45 -13
- package/dist/access-schema.js +8 -8
- package/dist/{access-service-CkZyb35d.d.ts → access-service-qrrIrC-0.d.ts} +5 -128
- package/dist/access-service.d.ts +7 -4
- package/dist/access-service.js +40 -40
- package/dist/action-confidence.d.ts +1 -0
- package/dist/active-memory-bridge.d.ts +1 -0
- package/dist/active-memory-bridge.js +3 -2
- package/dist/active-recall.d.ts +1 -0
- package/dist/active-recall.js +14 -9
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/claude-code.d.ts +6 -2
- package/dist/adapters/claude-code.js +2 -2
- package/dist/adapters/codex.d.ts +5 -1
- package/dist/adapters/codex.js +2 -2
- package/dist/adapters/hermes.js +2 -2
- package/dist/adapters/index.js +6 -6
- package/dist/adapters/registry.js +6 -6
- package/dist/adapters/replit.d.ts +4 -2
- package/dist/adapters/replit.js +2 -2
- package/dist/adapters/types.d.ts +4 -0
- package/dist/adapters/types.js +1 -1
- package/dist/behavior-learner.d.ts +1 -0
- package/dist/behavior-signals.d.ts +1 -0
- package/dist/behavior-signals.js +1 -1
- package/dist/bootstrap.d.ts +5 -3
- package/dist/bootstrap.js +2 -2
- package/dist/boxes.d.ts +1 -0
- package/dist/boxes.js +1 -1
- package/dist/briefing.d.ts +1 -0
- package/dist/briefing.js +9 -9
- package/dist/buffer-surprise-report.d.ts +1 -0
- package/dist/buffer.d.ts +1 -0
- package/dist/buffer.js +2 -2
- package/dist/bulk-import/index.d.ts +28 -0
- package/dist/bulk-import/index.js +31 -0
- package/dist/calibration.d.ts +2 -0
- package/dist/calibration.js +50 -17
- package/dist/calibration.js.map +1 -1
- package/dist/{capsule-crypto-5CYAGVC5.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/{capsule-merge-4MGKE7C5.js → capsule-merge-T2JRE46P.js} +3 -3
- package/dist/causal-behavior.d.ts +1 -0
- package/dist/causal-behavior.js +4 -4
- package/dist/causal-chain.js +4 -4
- package/dist/causal-consolidation.d.ts +16 -1
- package/dist/causal-consolidation.js +115 -32
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +14 -6
- package/dist/causal-retrieval.js.map +1 -1
- package/dist/causal-trajectory-graph.js +2 -2
- package/dist/causal-trajectory.js +2 -2
- package/dist/{chunk-SAZS2QZB.js → chunk-23UORJ4S.js} +3 -3
- package/dist/{chunk-76FLAAUC.js → chunk-2AN2L4NL.js} +17 -6
- package/dist/chunk-2AN2L4NL.js.map +1 -0
- package/dist/{chunk-W4L6CZKA.js → chunk-2DL3OFLD.js} +15 -10
- package/dist/chunk-2DL3OFLD.js.map +1 -0
- package/dist/{chunk-7OZ53EXP.js → chunk-2NLLXCJG.js} +21 -10
- package/dist/chunk-2NLLXCJG.js.map +1 -0
- package/dist/{chunk-PK7H5L6Y.js → chunk-2NM43EWN.js} +2 -2
- package/dist/{chunk-PYXS46O7.js → chunk-3BP57I6J.js} +2 -2
- package/dist/{chunk-FBYESMQ2.js → chunk-3C5RPJAX.js} +2 -2
- package/dist/{chunk-ZAVUCJ4H.js → chunk-3Q4H3OBR.js} +150 -65
- package/dist/chunk-3Q4H3OBR.js.map +1 -0
- package/dist/{chunk-FKFMOY3N.js → chunk-42NQ7AVG.js} +3 -4
- package/dist/{chunk-FKFMOY3N.js.map → chunk-42NQ7AVG.js.map} +1 -1
- package/dist/chunk-4426WSWL.js +73 -0
- package/dist/chunk-4426WSWL.js.map +1 -0
- package/dist/{chunk-LIRZNNUP.js → chunk-44442YCH.js} +5 -2
- package/dist/chunk-44442YCH.js.map +1 -0
- package/dist/{chunk-H3ME6L6D.js → chunk-46GJIW5M.js} +23 -20
- package/dist/chunk-46GJIW5M.js.map +1 -0
- package/dist/{chunk-QDZ2RLEC.js → chunk-472U7RDF.js} +3 -3
- package/dist/chunk-472U7RDF.js.map +1 -0
- package/dist/{chunk-NN2DKE4T.js → chunk-4H5ZJHEN.js} +16 -3
- package/dist/{chunk-NN2DKE4T.js.map → chunk-4H5ZJHEN.js.map} +1 -1
- package/dist/{chunk-56K5QLHX.js → chunk-4HP7HIE3.js} +56 -13
- package/dist/chunk-4HP7HIE3.js.map +1 -0
- package/dist/{chunk-RK2Y4XOM.js → chunk-4JRRISLU.js} +9 -6
- package/dist/chunk-4JRRISLU.js.map +1 -0
- package/dist/{chunk-U7EJOMFC.js → chunk-4Q73JBSM.js} +4 -4
- package/dist/{chunk-XKLD5OK4.js → chunk-4RR6ROTB.js} +10 -11
- package/dist/chunk-4RR6ROTB.js.map +1 -0
- package/dist/{chunk-4KGVTPGD.js → chunk-6F6BXB7A.js} +9 -8
- package/dist/chunk-6F6BXB7A.js.map +1 -0
- package/dist/{chunk-NMZY542O.js → chunk-6URPAY2D.js} +41 -17
- package/dist/chunk-6URPAY2D.js.map +1 -0
- package/dist/{chunk-N53K2EXC.js → chunk-6VF75M3X.js} +2 -2
- package/dist/{chunk-XSZEP4SF.js → chunk-6XSPNR6L.js} +6 -5
- package/dist/chunk-6XSPNR6L.js.map +1 -0
- package/dist/{chunk-6H2TESSP.js → chunk-765K3SAT.js} +3 -3
- package/dist/{chunk-EDTHC6UD.js → chunk-77NAFXUD.js} +2 -2
- package/dist/{chunk-S7KDBTWT.js → chunk-7F7Z6MOS.js} +29 -14
- package/dist/chunk-7F7Z6MOS.js.map +1 -0
- package/dist/{chunk-MZH6EHNR.js → chunk-7H6CFEBJ.js} +41 -14
- package/dist/chunk-7H6CFEBJ.js.map +1 -0
- package/dist/{chunk-575RMLWN.js → chunk-7MV5CWTE.js} +26 -20
- package/dist/chunk-7MV5CWTE.js.map +1 -0
- package/dist/{chunk-MGKYQQYF.js → chunk-7Q3RCKAQ.js} +2 -2
- package/dist/chunk-7RXCMVFQ.js +27 -0
- package/dist/chunk-7RXCMVFQ.js.map +1 -0
- package/dist/{chunk-DGXUHMOV.js → chunk-A2IYSXDQ.js} +25 -6
- package/dist/chunk-A2IYSXDQ.js.map +1 -0
- package/dist/{chunk-EABGC2TL.js → chunk-A2Z6UCWT.js} +26 -4
- package/dist/chunk-A2Z6UCWT.js.map +1 -0
- package/dist/{chunk-3VAL7ZL2.js → chunk-A52AKD7C.js} +59 -24
- package/dist/chunk-A52AKD7C.js.map +1 -0
- package/dist/{chunk-5375UYTQ.js → chunk-A6D7A2FW.js} +4 -4
- package/dist/chunk-A6D7A2FW.js.map +1 -0
- package/dist/{chunk-FAAFWE4G.js → chunk-ALEPI75L.js} +24 -6
- package/dist/chunk-ALEPI75L.js.map +1 -0
- package/dist/{chunk-3SLRNYNG.js → chunk-AUDJPF4N.js} +15 -4
- package/dist/chunk-AUDJPF4N.js.map +1 -0
- package/dist/chunk-B5XMS73R.js +145 -0
- package/dist/chunk-B5XMS73R.js.map +1 -0
- package/dist/{chunk-HXXBL2KD.js → chunk-BECQDWBA.js} +44 -4
- package/dist/chunk-BECQDWBA.js.map +1 -0
- package/dist/{chunk-7SEAZFFB.js → chunk-BEUDU7Y4.js} +24 -4
- package/dist/chunk-BEUDU7Y4.js.map +1 -0
- package/dist/{chunk-XVVIG67A.js → chunk-BLZAVUD2.js} +61 -17
- package/dist/chunk-BLZAVUD2.js.map +1 -0
- package/dist/chunk-CHBI22MI.js +159 -0
- package/dist/chunk-CHBI22MI.js.map +1 -0
- package/dist/{chunk-GDFS42HT.js → chunk-CHCA44C3.js} +15 -8
- package/dist/chunk-CHCA44C3.js.map +1 -0
- package/dist/chunk-CINZGPSJ.js +22 -0
- package/dist/chunk-CINZGPSJ.js.map +1 -0
- package/dist/chunk-CMTINOFS.js +36 -0
- package/dist/chunk-CMTINOFS.js.map +1 -0
- package/dist/{chunk-34DQE4KF.js → chunk-CO7ZO4TU.js} +2 -2
- package/dist/{chunk-PFV5C235.js → chunk-CPPS65WS.js} +2 -1
- package/dist/{chunk-PFV5C235.js.map → chunk-CPPS65WS.js.map} +1 -1
- package/dist/{chunk-DINWEURR.js → chunk-CSKLPDN6.js} +20 -6
- package/dist/chunk-CSKLPDN6.js.map +1 -0
- package/dist/chunk-CWWMTTQE.js +566 -0
- package/dist/chunk-CWWMTTQE.js.map +1 -0
- package/dist/{chunk-IQT3XTKW.js → chunk-D24OXEPB.js} +13 -7
- package/dist/chunk-D24OXEPB.js.map +1 -0
- package/dist/{chunk-TPU5L5EY.js → chunk-D6WE5MTW.js} +272 -411
- package/dist/chunk-D6WE5MTW.js.map +1 -0
- package/dist/{chunk-WIICJPET.js → chunk-DEUNUKTD.js} +6 -4
- package/dist/{chunk-WIICJPET.js.map → chunk-DEUNUKTD.js.map} +1 -1
- package/dist/{chunk-ZYVPLJ4T.js → chunk-DHGSZ3UD.js} +9 -7
- package/dist/chunk-DHGSZ3UD.js.map +1 -0
- package/dist/{chunk-JR4ZC3G4.js → chunk-DLJ4IR6M.js} +91 -41
- package/dist/chunk-DLJ4IR6M.js.map +1 -0
- package/dist/{chunk-U4SCL7B7.js → chunk-DRD2Q7HQ.js} +82 -18
- package/dist/chunk-DRD2Q7HQ.js.map +1 -0
- package/dist/{chunk-2IWUMAES.js → chunk-E62SBGQ3.js} +28 -13
- package/dist/chunk-E62SBGQ3.js.map +1 -0
- package/dist/{chunk-C5BCH4ZS.js → chunk-EAZGEEG2.js} +21 -3
- package/dist/chunk-EAZGEEG2.js.map +1 -0
- package/dist/{chunk-TPB3I2AC.js → chunk-ECZU5BJH.js} +31 -10
- package/dist/chunk-ECZU5BJH.js.map +1 -0
- package/dist/{chunk-77H5NU3M.js → chunk-EDBEWFJO.js} +82 -18
- package/dist/chunk-EDBEWFJO.js.map +1 -0
- package/dist/chunk-EDQVAMQI.js +308 -0
- package/dist/chunk-EDQVAMQI.js.map +1 -0
- package/dist/{chunk-RRF5UOBJ.js → chunk-EI6V5UXY.js} +22 -15
- package/dist/chunk-EI6V5UXY.js.map +1 -0
- package/dist/{chunk-I5GLV3VE.js → chunk-EIPUHVKE.js} +31 -24
- package/dist/{chunk-I5GLV3VE.js.map → chunk-EIPUHVKE.js.map} +1 -1
- package/dist/{chunk-ZKSK55RC.js → chunk-ETUPBUHB.js} +2 -2
- package/dist/{chunk-25MQ7IHJ.js → chunk-EUML3N6B.js} +17 -6
- package/dist/chunk-EUML3N6B.js.map +1 -0
- package/dist/{chunk-5RGLBDQF.js → chunk-EVZFIAPG.js} +12 -12
- package/dist/chunk-EVZFIAPG.js.map +1 -0
- package/dist/{chunk-QRNI5JBH.js → chunk-EYIEWJNI.js} +2 -2
- package/dist/{chunk-YU5KIWYQ.js → chunk-FER4WARO.js} +79 -41
- package/dist/chunk-FER4WARO.js.map +1 -0
- package/dist/{chunk-43PJZYGL.js → chunk-FPGE5NVO.js} +45 -10
- package/dist/chunk-FPGE5NVO.js.map +1 -0
- package/dist/{chunk-C6QPK5GG.js → chunk-FZZ2QTJI.js} +2 -2
- package/dist/{chunk-D46YSIYX.js → chunk-G3Z3QEF5.js} +19 -11
- package/dist/{chunk-D46YSIYX.js.map → chunk-G3Z3QEF5.js.map} +1 -1
- package/dist/{chunk-3JXBXXM2.js → chunk-G4IAEX6D.js} +2 -2
- package/dist/{chunk-MSWG7JI6.js → chunk-G56P5RLD.js} +8 -2
- package/dist/chunk-G56P5RLD.js.map +1 -0
- package/dist/{chunk-AGZQD76C.js → chunk-GCGJW34D.js} +48 -2
- package/dist/chunk-GCGJW34D.js.map +1 -0
- package/dist/chunk-H2NCNXMS.js +159 -0
- package/dist/chunk-H2NCNXMS.js.map +1 -0
- package/dist/{chunk-XYIK4LF6.js → chunk-H3FZVNRN.js} +8 -2
- package/dist/chunk-H3FZVNRN.js.map +1 -0
- package/dist/{chunk-TK4UEOSK.js → chunk-HDDRVXX4.js} +8 -8
- package/dist/chunk-HDDRVXX4.js.map +1 -0
- package/dist/{chunk-LLQ2LLWF.js → chunk-HENLZHIT.js} +15 -5
- package/dist/chunk-HENLZHIT.js.map +1 -0
- package/dist/{chunk-N2D6GXBM.js → chunk-HINSGUA7.js} +28 -20
- package/dist/chunk-HINSGUA7.js.map +1 -0
- package/dist/{chunk-APO3DCMU.js → chunk-HLAVGJ62.js} +30 -8
- package/dist/chunk-HLAVGJ62.js.map +1 -0
- package/dist/{chunk-TPMQ3G6Z.js → chunk-HOJZMQ4J.js} +2 -2
- package/dist/chunk-HOJZMQ4J.js.map +1 -0
- package/dist/{chunk-LUDTDZLK.js → chunk-HPWVAEET.js} +33 -7
- package/dist/chunk-HPWVAEET.js.map +1 -0
- package/dist/{chunk-NZL6GGQE.js → chunk-HQ6NIBL6.js} +92 -30
- package/dist/chunk-HQ6NIBL6.js.map +1 -0
- package/dist/{chunk-UWVJF25J.js → chunk-HWVTS5NO.js} +20 -6
- package/dist/chunk-HWVTS5NO.js.map +1 -0
- package/dist/{chunk-2WWLHTZY.js → chunk-IC4GELZE.js} +2 -2
- package/dist/{chunk-QA2ZAPBU.js → chunk-IPLYGWQF.js} +28 -20
- package/dist/chunk-IPLYGWQF.js.map +1 -0
- package/dist/{chunk-A6KTB5R6.js → chunk-IQ3OI2RR.js} +3 -3
- package/dist/chunk-IQ3OI2RR.js.map +1 -0
- package/dist/{chunk-6LVVDPJ4.js → chunk-J64TK33U.js} +3 -4
- package/dist/chunk-J64TK33U.js.map +1 -0
- package/dist/{chunk-6FC5EGNV.js → chunk-JBPKEARU.js} +15 -5
- package/dist/{chunk-6FC5EGNV.js.map → chunk-JBPKEARU.js.map} +1 -1
- package/dist/{chunk-RHY3HH7P.js → chunk-JFEKNTX7.js} +125 -33
- package/dist/chunk-JFEKNTX7.js.map +1 -0
- package/dist/{chunk-TZOLIGIG.js → chunk-JJEJJ7RK.js} +4 -2
- package/dist/chunk-JJEJJ7RK.js.map +1 -0
- package/dist/{chunk-PCUKNJAZ.js → chunk-JKV57BTN.js} +2 -2
- package/dist/{chunk-EJI5XIBB.js → chunk-JLNBQWZ2.js} +55 -7
- package/dist/chunk-JLNBQWZ2.js.map +1 -0
- package/dist/{chunk-XIG5PDM7.js → chunk-JUC24CTX.js} +8 -12
- package/dist/chunk-JUC24CTX.js.map +1 -0
- package/dist/{chunk-3ZLVGM76.js → chunk-JYIKKAK3.js} +106 -44
- package/dist/chunk-JYIKKAK3.js.map +1 -0
- package/dist/{chunk-OIGNEXKZ.js → chunk-K5O2QY6T.js} +5 -1
- package/dist/{chunk-OIGNEXKZ.js.map → chunk-K5O2QY6T.js.map} +1 -1
- package/dist/{chunk-ZTFCYYEZ.js → chunk-KCYE2MZM.js} +3 -3
- package/dist/chunk-KCYE2MZM.js.map +1 -0
- package/dist/{chunk-JWPLJLDU.js → chunk-KD3QD3A5.js} +2 -2
- package/dist/{chunk-JWPLJLDU.js.map → chunk-KD3QD3A5.js.map} +1 -1
- package/dist/{chunk-YRMVARQP.js → chunk-KFY3SGN7.js} +49 -2
- package/dist/chunk-KFY3SGN7.js.map +1 -0
- package/dist/{chunk-CYFQJMUV.js → chunk-KIB7SDIJ.js} +15 -10
- package/dist/chunk-KIB7SDIJ.js.map +1 -0
- package/dist/{chunk-3KW65B36.js → chunk-KILOTVIF.js} +95 -48
- package/dist/chunk-KILOTVIF.js.map +1 -0
- package/dist/{chunk-MXFBBHJU.js → chunk-KJMYHC7K.js} +10 -5
- package/dist/chunk-KJMYHC7K.js.map +1 -0
- package/dist/{chunk-W3LR522O.js → chunk-KM2A35EO.js} +36 -34
- package/dist/chunk-KM2A35EO.js.map +1 -0
- package/dist/{chunk-WELDCG6C.js → chunk-L227SKTB.js} +109 -36
- package/dist/chunk-L227SKTB.js.map +1 -0
- package/dist/{chunk-W6AQJ2PY.js → chunk-L7S47WZT.js} +35 -16
- package/dist/chunk-L7S47WZT.js.map +1 -0
- package/dist/{chunk-BVF3AGJP.js → chunk-LJBOVCQG.js} +26 -11
- package/dist/chunk-LJBOVCQG.js.map +1 -0
- package/dist/{chunk-2KI4QFHU.js → chunk-LMDRGRJ2.js} +2 -2
- package/dist/{chunk-MY6TPVXW.js → chunk-LMPHTYJC.js} +2 -2
- package/dist/{chunk-EHRTFRWW.js → chunk-LQHDIS7L.js} +10 -5
- package/dist/chunk-LQHDIS7L.js.map +1 -0
- package/dist/chunk-LUDUFZTV.js +170 -0
- package/dist/chunk-LUDUFZTV.js.map +1 -0
- package/dist/{chunk-5HRY2WRF.js → chunk-LZ3VEOU5.js} +2 -2
- package/dist/{chunk-Q7P4WJDP.js → chunk-M5T4Q2ZU.js} +1 -1
- package/dist/chunk-M5T4Q2ZU.js.map +1 -0
- package/dist/{chunk-ICRIXAP2.js → chunk-MC4FJXPA.js} +16 -6
- package/dist/chunk-MC4FJXPA.js.map +1 -0
- package/dist/{chunk-WPGJYVUH.js → chunk-MGVIEM2O.js} +23 -6
- package/dist/chunk-MGVIEM2O.js.map +1 -0
- package/dist/{chunk-YROHKYBY.js → chunk-O27WNHTT.js} +22 -6
- package/dist/chunk-O27WNHTT.js.map +1 -0
- package/dist/{chunk-NGAVDO7E.js → chunk-OADWQ5CR.js} +2 -2
- package/dist/{chunk-2NMMFZ5T.js → chunk-OD4FM2U7.js} +6 -3
- package/dist/chunk-OD4FM2U7.js.map +1 -0
- package/dist/{chunk-OZHRDTDX.js → chunk-OKTXM5H4.js} +11 -1
- package/dist/chunk-OKTXM5H4.js.map +1 -0
- package/dist/{chunk-RXDLTSWT.js → chunk-ONPLNAPX.js} +16 -7
- package/dist/chunk-ONPLNAPX.js.map +1 -0
- package/dist/{chunk-FJ43PRLT.js → chunk-ORFGK3XI.js} +20 -14
- package/dist/chunk-ORFGK3XI.js.map +1 -0
- package/dist/{chunk-DOM4GKSW.js → chunk-OZKVVUJB.js} +3 -3
- package/dist/{chunk-MT4HVDUZ.js → chunk-PM3QHTFT.js} +3 -3
- package/dist/{chunk-4DWOBS2A.js → chunk-PRQJ5ESM.js} +27 -2
- package/dist/{chunk-4DWOBS2A.js.map → chunk-PRQJ5ESM.js.map} +1 -1
- package/dist/chunk-PU44GBL4.js +52 -0
- package/dist/chunk-PU44GBL4.js.map +1 -0
- package/dist/{chunk-MJFNCJXV.js → chunk-Q4CAQGKQ.js} +47 -9
- package/dist/chunk-Q4CAQGKQ.js.map +1 -0
- package/dist/{chunk-U3WSW6PZ.js → chunk-QMYXNM4P.js} +90 -35
- package/dist/chunk-QMYXNM4P.js.map +1 -0
- package/dist/{chunk-NBNN5GOB.js → chunk-QY7YA7OL.js} +11 -2
- package/dist/chunk-QY7YA7OL.js.map +1 -0
- package/dist/{chunk-QLLBRHAT.js → chunk-R26QUUQN.js} +181 -257
- package/dist/chunk-R26QUUQN.js.map +1 -0
- package/dist/{chunk-ZK7I7JYV.js → chunk-R3PS27B4.js} +7 -7
- package/dist/{chunk-TMQLARTH.js → chunk-RCTS5CKK.js} +33 -14
- package/dist/chunk-RCTS5CKK.js.map +1 -0
- package/dist/{chunk-2PRLKQAH.js → chunk-RLV3PQGH.js} +35 -19
- package/dist/chunk-RLV3PQGH.js.map +1 -0
- package/dist/{chunk-WW3QQF4H.js → chunk-ROZJACKP.js} +16 -1
- package/dist/chunk-ROZJACKP.js.map +1 -0
- package/dist/{chunk-7MNMYOFP.js → chunk-RSUYKGGZ.js} +3 -4
- package/dist/chunk-RSUYKGGZ.js.map +1 -0
- package/dist/{chunk-LT3NLYSI.js → chunk-RUZOJKNF.js} +10 -7
- package/dist/chunk-RUZOJKNF.js.map +1 -0
- package/dist/{chunk-326G7DJK.js → chunk-RW5DGAGO.js} +67 -13
- package/dist/chunk-RW5DGAGO.js.map +1 -0
- package/dist/{chunk-KOSORCJG.js → chunk-S53PKKWK.js} +63 -24
- package/dist/chunk-S53PKKWK.js.map +1 -0
- package/dist/{chunk-65PG43EQ.js → chunk-S7WU3Y3D.js} +21 -4
- package/dist/chunk-S7WU3Y3D.js.map +1 -0
- package/dist/{chunk-SKE7JYKA.js → chunk-SFXKHM7P.js} +2 -2
- package/dist/{chunk-HMDCOMYU.js → chunk-SKGV326D.js} +3 -3
- package/dist/chunk-T2PO5MUF.js +62 -0
- package/dist/chunk-T2PO5MUF.js.map +1 -0
- package/dist/{chunk-C7VW7C3F.js → chunk-TDKQGLJW.js} +3 -3
- package/dist/chunk-TDKQGLJW.js.map +1 -0
- package/dist/{chunk-3QKK7QOS.js → chunk-TERNBNJB.js} +3 -3
- package/dist/chunk-TERNBNJB.js.map +1 -0
- package/dist/{chunk-MXC3AP5I.js → chunk-TGQ2NTWH.js} +12 -7
- package/dist/chunk-TGQ2NTWH.js.map +1 -0
- package/dist/{chunk-3Y4P7RXM.js → chunk-TMSXWOBZ.js} +3 -4
- package/dist/chunk-TMSXWOBZ.js.map +1 -0
- package/dist/{chunk-3TNBOMQT.js → chunk-TVRN5QKH.js} +11 -11
- package/dist/{chunk-3TNBOMQT.js.map → chunk-TVRN5QKH.js.map} +1 -1
- package/dist/{chunk-5UM2VJ6D.js → chunk-UEY3VB6W.js} +2 -2
- package/dist/{chunk-I6K5FBRQ.js → chunk-UI3NYK34.js} +4 -1
- package/dist/{chunk-I6K5FBRQ.js.map → chunk-UI3NYK34.js.map} +1 -1
- package/dist/{chunk-VBJ7V5SK.js → chunk-UIPDNLXA.js} +21 -8
- package/dist/chunk-UIPDNLXA.js.map +1 -0
- package/dist/{chunk-GIF42EW3.js → chunk-UP6MOYCB.js} +3 -3
- package/dist/{chunk-K4FLSOR5.js → chunk-USYGGIJZ.js} +44 -15
- package/dist/chunk-USYGGIJZ.js.map +1 -0
- package/dist/{chunk-FIT6DMX6.js → chunk-UWY7GIVS.js} +152 -54
- package/dist/chunk-UWY7GIVS.js.map +1 -0
- package/dist/{chunk-MRILGULB.js → chunk-V2RCP53Q.js} +2 -2
- package/dist/{chunk-XKECPATV.js → chunk-VFUEZZBS.js} +113 -4
- package/dist/chunk-VFUEZZBS.js.map +1 -0
- package/dist/{chunk-FSFEQI74.js → chunk-W7L6HXUC.js} +2 -2
- package/dist/{chunk-3IQ2TR4N.js → chunk-WLEB7WCG.js} +2 -2
- package/dist/{chunk-GL6I6MEQ.js → chunk-WSGF57U2.js} +3 -3
- package/dist/{chunk-KNKUID7G.js → chunk-X7Y7WX73.js} +72 -6
- package/dist/chunk-X7Y7WX73.js.map +1 -0
- package/dist/{chunk-5NPGSAVB.js → chunk-XEKAG3FM.js} +23 -5
- package/dist/chunk-XEKAG3FM.js.map +1 -0
- package/dist/{chunk-3APJ5EVB.js → chunk-XKIQZXUB.js} +41 -26
- package/dist/chunk-XKIQZXUB.js.map +1 -0
- package/dist/chunk-XKXKSQU7.js +92 -0
- package/dist/chunk-XKXKSQU7.js.map +1 -0
- package/dist/{chunk-JA3AK3PT.js → chunk-XNLXAWHX.js} +4 -4
- package/dist/{chunk-CULXMQJH.js → chunk-XPXEJRUB.js} +3 -3
- package/dist/chunk-XPXEJRUB.js.map +1 -0
- package/dist/{chunk-PZIAX57I.js → chunk-XR6DNK4U.js} +7 -4
- package/dist/chunk-XR6DNK4U.js.map +1 -0
- package/dist/{chunk-47VWKCAF.js → chunk-XSQ4SGM5.js} +33 -4
- package/dist/chunk-XSQ4SGM5.js.map +1 -0
- package/dist/{chunk-66DHUKLO.js → chunk-XSWKORGM.js} +16 -14
- package/dist/chunk-XSWKORGM.js.map +1 -0
- package/dist/{chunk-QR3C7BKQ.js → chunk-XZ4WBBB5.js} +7 -8
- package/dist/chunk-XZ4WBBB5.js.map +1 -0
- package/dist/{chunk-WNARATI3.js → chunk-Y2SXZ5KZ.js} +59 -11
- package/dist/chunk-Y2SXZ5KZ.js.map +1 -0
- package/dist/{chunk-SIC6U3GZ.js → chunk-YHV3KRKS.js} +3 -3
- package/dist/{chunk-ZPKBYX2F.js → chunk-YNDLCWXS.js} +85 -9
- package/dist/chunk-YNDLCWXS.js.map +1 -0
- package/dist/{chunk-VLXA6PI2.js → chunk-YQMZ7IH2.js} +4 -4
- package/dist/{chunk-TMM4S4IJ.js → chunk-YR6GIWWY.js} +58 -8
- package/dist/chunk-YR6GIWWY.js.map +1 -0
- package/dist/{chunk-DK5LDEQM.js → chunk-YR7XMOWK.js} +39 -23
- package/dist/chunk-YR7XMOWK.js.map +1 -0
- package/dist/chunk-ZFXCQPNO.js +27 -0
- package/dist/chunk-ZFXCQPNO.js.map +1 -0
- package/dist/citations.js +1 -1
- package/dist/{cli-kuh9PwZ5.d.ts → cli-X4NJoqSe.d.ts} +8 -31
- package/dist/cli.d.ts +10 -6
- package/dist/cli.js +122 -117
- package/dist/commitment-ledger.js +2 -2
- package/dist/compat/checks.js +1 -2
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +11 -11
- package/dist/compounding/preference-consolidator.d.ts +1 -0
- package/dist/compounding/preference-consolidator.js +8 -8
- package/dist/compounding/preference-consolidator.js.map +1 -1
- package/dist/compression-optimizer.d.ts +1 -0
- package/dist/compression-optimizer.js +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.js +3 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -0
- package/dist/connectors/codex-materialize-runner.js +12 -11
- package/dist/connectors/codex-materialize.d.ts +1 -0
- package/dist/connectors/codex-materialize.js +3 -2
- package/dist/connectors/index.d.ts +1 -0
- package/dist/connectors/index.js +14 -14
- package/dist/{connectors-cli-CwbyjGR7.d.ts → connectors-cli-DbTPNj2H.d.ts} +7 -1
- package/dist/connectors-cli.d.ts +1 -1
- package/dist/connectors-cli.js +3 -1
- package/dist/consolidation-provenance-check.d.ts +1 -0
- package/dist/consolidation-provenance-check.js +2 -2
- package/dist/consolidation-undo.d.ts +1 -0
- package/dist/consolidation-undo.js +1 -1
- package/dist/contradiction/index.d.ts +3 -1
- package/dist/contradiction/index.js +3 -3
- package/dist/{contradiction-review-ATP4S6IC.js → contradiction-review-6V2LXXK6.js} +2 -2
- package/dist/{contradiction-scan-5A4IDZV5.js → contradiction-scan-GIRVC4C7.js} +3 -3
- package/dist/conversation-index/backend.d.ts +3 -1
- package/dist/conversation-index/backend.js +3 -3
- package/dist/conversation-index/chunker.d.ts +1 -0
- package/dist/conversation-index/cleanup.js +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +2 -1
- package/dist/conversation-index/faiss-adapter.js +1 -1
- package/dist/conversation-index/indexer.d.ts +5 -2
- package/dist/conversation-index/indexer.js +1 -1
- package/dist/conversation-index/search.d.ts +2 -1
- package/dist/cross-namespace-budget.js +1 -1
- package/dist/cue-anchors.js +2 -2
- package/dist/dashboard-runtime.d.ts +6 -0
- package/dist/dashboard-runtime.js +3 -3
- package/dist/day-summary.d.ts +1 -0
- package/dist/day-summary.js +2 -2
- package/dist/delinearize.d.ts +1 -0
- package/dist/direct-answer-wiring.d.ts +1 -0
- package/dist/direct-answer.d.ts +1 -0
- package/dist/{dreams-ledger-LR2NBAZE.js → dreams-ledger-3WSCI5V4.js} +5 -4
- package/dist/{dreams-ledger-LR2NBAZE.js.map → dreams-ledger-3WSCI5V4.js.map} +1 -1
- package/dist/embedding-fallback.d.ts +3 -0
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +1 -0
- package/dist/enrichment/index.js +1 -1
- package/dist/entity-retrieval.d.ts +2 -0
- package/dist/entity-retrieval.js +9 -9
- package/dist/entity-schema.d.ts +1 -0
- package/dist/evals.js +1 -1
- package/dist/explicit-capture.d.ts +5 -3
- package/dist/explicit-capture.js +2 -2
- package/dist/extraction-judge-telemetry.d.ts +2 -0
- package/dist/extraction-judge-training.d.ts +2 -0
- package/dist/extraction-judge.d.ts +2 -0
- package/dist/extraction.d.ts +2 -0
- package/dist/extraction.js +12 -12
- package/dist/{faiss-adapter-CzPghc4C.d.ts → faiss-adapter-BHecI1fF.d.ts} +4 -1
- package/dist/fallback-llm.d.ts +11 -1
- package/dist/fallback-llm.js +8 -6
- package/dist/{first-start-migration-4MHQEOSD.js → first-start-migration-CKTCTCQI.js} +5 -5
- package/dist/graph-dashboard-diff.d.ts +4 -0
- package/dist/graph-dashboard-diff.js +1 -1
- package/dist/graph-dashboard-parser.js +1 -1
- package/dist/{graph-edge-decay-5DI5GUNL.js → graph-edge-decay-MUP5J7CC.js} +6 -6
- package/dist/graph-events.js +1 -1
- package/dist/graph-snapshot.js +3 -3
- package/dist/graph.js +2 -2
- package/dist/harmonic-retrieval.js +4 -4
- package/dist/identity-continuity.d.ts +1 -0
- package/dist/importance.d.ts +1 -0
- package/dist/importers/index.d.ts +244 -0
- package/dist/importers/index.js +20 -0
- package/dist/index.d.ts +20 -350
- package/dist/index.js +884 -561
- package/dist/index.js.map +1 -1
- package/dist/intent.d.ts +1 -0
- package/dist/lcm/archive.d.ts +2 -2
- package/dist/lcm/archive.js +2 -2
- package/dist/lcm/engine.d.ts +3 -2
- package/dist/lcm/engine.js +6 -6
- package/dist/lcm/index.d.ts +1 -0
- package/dist/lcm/index.js +8 -8
- package/dist/lcm/recall.js +1 -1
- package/dist/lcm/summarizer.js +3 -3
- package/dist/lcm/tools.d.ts +1 -0
- package/dist/lifecycle.d.ts +1 -0
- package/dist/live-connectors-runner.d.ts +1 -0
- package/dist/live-connectors-runner.js +6 -6
- package/dist/local-llm.d.ts +1 -0
- package/dist/local-llm.js +2 -2
- package/dist/maintenance/archive-observations.js +1 -1
- package/dist/maintenance/memory-governance.d.ts +3 -1
- package/dist/maintenance/memory-governance.js +10 -8
- package/dist/maintenance/migrate-observations.js +3 -2
- package/dist/maintenance/observation-ledger-utils.d.ts +3 -0
- package/dist/maintenance/observation-ledger-utils.js +2 -1
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -1
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +11 -8
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -1
- package/dist/maintenance/rebuild-memory-projection.js +13 -10
- package/dist/maintenance/rebuild-observations.d.ts +1 -0
- package/dist/maintenance/rebuild-observations.js +3 -2
- package/dist/mcp-memory-inspector-app.d.ts +7 -4
- package/dist/mcp-memory-inspector-app.js +1 -1
- package/dist/memory-action-policy.d.ts +1 -0
- package/dist/memory-cache.d.ts +1 -0
- package/dist/memory-cache.js +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -0
- package/dist/memory-projection-store.d.ts +1 -0
- package/dist/memory-projection-store.js +1 -1
- package/dist/memory-provenance.d.ts +1 -0
- package/dist/memory-worth-outcomes.d.ts +1 -0
- package/dist/migrate/from-engram.js +2 -2
- package/dist/{migrate-from-identity-anchor-G27MCD6A.js → migrate-from-identity-anchor-EB4XI4Q2.js} +2 -2
- package/dist/model-registry.js +1 -1
- package/dist/models-json.d.ts +1 -0
- package/dist/namespaces/migrate.d.ts +3 -0
- package/dist/namespaces/migrate.js +24 -22
- package/dist/namespaces/principal.d.ts +1 -0
- package/dist/namespaces/principal.js +2 -1
- package/dist/namespaces/search.d.ts +1 -0
- package/dist/namespaces/search.js +15 -13
- package/dist/namespaces/storage.d.ts +4 -2
- package/dist/namespaces/storage.js +10 -9
- package/dist/native-knowledge.d.ts +1 -0
- package/dist/native-knowledge.js +1 -1
- package/dist/negative.js +1 -1
- package/dist/network/webdav.d.ts +16 -1
- package/dist/network/webdav.js +5 -3
- package/dist/objective-state-writers.js +4 -4
- package/dist/objective-state.js +2 -2
- package/dist/offline-sync.js +4 -4
- package/dist/operator-toolkit.d.ts +1 -0
- package/dist/operator-toolkit.js +35 -32
- package/dist/opik-exporter.js +1 -1
- package/dist/{orchestrator-DuWl9Hwx.d.ts → orchestrator-Co9nxRLF.d.ts} +4 -74
- package/dist/orchestrator.d.ts +5 -3
- package/dist/orchestrator.js +99 -96
- package/dist/page-versioning.js +1 -1
- package/dist/path-X2K5XCHL.js +9 -0
- package/dist/patterns-cli.d.ts +1 -0
- package/dist/peers/index.d.ts +328 -0
- package/dist/{peers-HCVGHMAE.js → peers/index.js} +4 -4
- package/dist/pipeline-D18UAKlN.d.ts +32 -0
- package/dist/plugin-entry-resolver.d.ts +9 -0
- package/dist/plugin-entry-resolver.js +8 -0
- package/dist/plugin-entry-resolver.js.map +1 -0
- package/dist/plugin-id.d.ts +2 -21
- package/dist/plugin-id.js +33 -4
- package/dist/plugin-id.js.map +1 -1
- package/dist/policy-runtime.d.ts +4 -0
- package/dist/policy-runtime.js +1 -1
- package/dist/profiling.js +1 -1
- package/dist/qmd-recall-cache.d.ts +1 -0
- package/dist/qmd.d.ts +1 -0
- package/dist/qmd.js +3 -3
- package/dist/recall-disclosure-escalation.d.ts +1 -0
- package/dist/recall-explain-renderer.d.ts +1 -0
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-state.d.ts +8 -1
- package/dist/recall-state.js +2 -1
- package/dist/recall-tag-filter.d.ts +1 -0
- package/dist/recall-xray-cli.d.ts +1 -0
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -0
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -0
- package/dist/recall-xray.js +2 -2
- package/dist/relevance.d.ts +7 -1
- package/dist/relevance.js +2 -1
- package/dist/replay/normalizers/chatgpt.js +2 -2
- package/dist/replay/normalizers/claude.js +2 -2
- package/dist/replay/normalizers/openclaw.js +2 -2
- package/dist/replay/normalizers/shared.js +1 -1
- package/dist/replay/runner.js +1 -1
- package/dist/rerank.js +1 -1
- package/dist/{resolution-B7FNQSSP.js → resolution-ZY7VM6WS.js} +3 -3
- package/dist/resolution-ZY7VM6WS.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +1 -0
- package/dist/resolve-auth-token.js +1 -1
- package/dist/resolve-provider-secret.d.ts +19 -29
- package/dist/resolve-provider-secret.js +2 -6
- package/dist/resume-bundles.js +10 -9
- package/dist/retrieval-agents.d.ts +2 -1
- package/dist/retrieval-agents.js +2 -1
- package/dist/retrieval-tiers.d.ts +1 -0
- package/dist/routing/engine.d.ts +1 -0
- package/dist/routing/store.d.ts +3 -0
- package/dist/routing/store.js +1 -1
- package/dist/runtime/env.js +1 -1
- package/dist/schemas.d.ts +191 -17
- package/dist/schemas.js +1 -1
- package/dist/sdk-compat.js +1 -1
- package/dist/search/document-scanner.js +1 -1
- package/dist/search/embed-helper.d.ts +7 -2
- package/dist/search/embed-helper.js +3 -1
- package/dist/search/factory.d.ts +2 -1
- package/dist/search/factory.js +13 -12
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +19 -18
- package/dist/search/lancedb-backend.d.ts +7 -6
- package/dist/search/lancedb-backend.js +4 -2
- package/dist/search/meilisearch-backend.d.ts +7 -6
- package/dist/search/meilisearch-backend.js +4 -2
- package/dist/search/noop-backend.d.ts +1 -0
- package/dist/search/orama-backend.d.ts +9 -7
- package/dist/search/orama-backend.js +8 -4
- package/dist/search/port.d.ts +1 -0
- package/dist/search/remote-backend.d.ts +1 -0
- package/dist/secure-store/index.d.ts +16 -3
- package/dist/secure-store/index.js +2 -2
- package/dist/{semantic-VwGI14Ok.d.ts → semantic-SLAa_prH.d.ts} +5 -3
- package/dist/semantic-consolidation.d.ts +1 -0
- package/dist/semantic-consolidation.js +14 -13
- package/dist/semantic-rule-promotion.js +8 -8
- package/dist/semantic-rule-verifier.d.ts +1 -0
- package/dist/semantic-rule-verifier.js +8 -8
- package/dist/session-integrity.d.ts +1 -0
- package/dist/session-integrity.js +1 -1
- package/dist/session-observer-bands.d.ts +1 -0
- package/dist/session-observer-state.d.ts +6 -1
- package/dist/session-observer-state.js +1 -1
- package/dist/shared-context/manager.d.ts +5 -0
- package/dist/shared-context/manager.js +3 -3
- package/dist/signal.d.ts +1 -0
- package/dist/signal.js +1 -1
- package/dist/source-attribution.js +1 -1
- package/dist/state-store-4QZISH3J.js +30 -0
- package/dist/state-store-4QZISH3J.js.map +1 -0
- package/dist/storage-C4DX8CuG.d.ts +157 -0
- package/dist/storage.d.ts +2 -0
- package/dist/storage.js +7 -7
- package/dist/store-contract.js +1 -1
- package/dist/summarizer.d.ts +1 -0
- package/dist/summarizer.js +7 -7
- package/dist/summary-snapshot.d.ts +1 -0
- package/dist/surfaces/dreams.js +48 -17
- package/dist/surfaces/dreams.js.map +1 -1
- package/dist/temporal-supersession.d.ts +1 -0
- package/dist/temporal-supersession.js +1 -1
- package/dist/temporal-validity.d.ts +1 -0
- package/dist/threading.d.ts +1 -0
- package/dist/tier-migration.d.ts +1 -0
- package/dist/tier-routing.d.ts +1 -0
- package/dist/{tier-stats-62ZVDFKS.js → tier-stats-SKML2OSF.js} +5 -5
- package/dist/tmt.js +1 -1
- package/dist/tokens.js +2 -2
- package/dist/topics.d.ts +1 -0
- package/dist/{trace-C5ETWBEF.js → trace-WM7V4CKI.js} +31 -1
- package/dist/trace-WM7V4CKI.js.map +1 -0
- package/dist/transcript.d.ts +1 -0
- package/dist/transcript.js +2 -2
- package/dist/transfer/autodetect.js +7 -7
- package/dist/transfer/backup.js +5 -5
- package/dist/transfer/capsule-export.js +5 -5
- package/dist/transfer/capsule-import.d.ts +6 -0
- package/dist/transfer/capsule-import.js +4 -4
- package/dist/transfer/export-json.js +3 -3
- package/dist/transfer/export-md.js +3 -3
- package/dist/transfer/export-sqlite.js +3 -3
- package/dist/transfer/fs-utils.d.ts +2 -1
- package/dist/transfer/fs-utils.js +5 -3
- package/dist/transfer/import-json.js +3 -3
- package/dist/transfer/import-md.js +3 -3
- package/dist/transfer/import-sqlite.js +3 -3
- package/dist/trust-zones.js +2 -2
- package/dist/types-B1VHaf2w.d.ts +126 -0
- package/dist/types-BliCnURB.d.ts +83 -0
- package/dist/types.d.ts +35 -0
- package/dist/types.js +1 -1
- package/dist/utility-learner.js +3 -3
- package/dist/utility-runtime.d.ts +1 -0
- package/dist/utility-runtime.js +4 -4
- package/dist/utility-telemetry.js +2 -2
- package/dist/verified-recall.js +9 -9
- package/dist/work/board.js +2 -2
- package/dist/work/boundary.js +1 -1
- package/dist/work/storage.d.ts +5 -0
- package/dist/work/storage.js +1 -1
- package/dist/work-product-ledger.js +2 -2
- package/package.json +74 -3
- package/scripts/ensure-better-sqlite3.mjs +8 -7
- package/scripts/faiss_index.py +141 -29
- package/src/access-cli.test.ts +87 -2
- package/src/access-cli.ts +59 -5
- package/src/access-http.test.ts +150 -0
- package/src/access-http.ts +89 -34
- package/src/access-idempotency.ts +136 -3
- package/src/access-mcp.test.ts +155 -0
- package/src/access-mcp.ts +116 -30
- package/src/access-schema.ts +22 -4
- package/src/access-service-project-tag.test.ts +37 -0
- package/src/access-service.ts +11 -10
- package/src/active-recall.test.ts +29 -1
- package/src/active-recall.ts +11 -7
- package/src/adapters/claude-code.ts +7 -8
- package/src/adapters/codex.ts +6 -7
- package/src/adapters/hermes.ts +1 -5
- package/src/adapters/registry.test.ts +63 -0
- package/src/adapters/registry.ts +10 -0
- package/src/adapters/replit.ts +5 -7
- package/src/adapters/types.ts +24 -1
- package/src/behavior-signals.ts +1 -1
- package/src/binary-lifecycle/backend.ts +16 -4
- package/src/binary-lifecycle/pipeline.test.ts +149 -0
- package/src/binary-lifecycle/pipeline.ts +49 -7
- package/src/binary-lifecycle/scanner.ts +19 -4
- package/src/boxes.ts +119 -32
- package/src/buffer-session.test.ts +28 -0
- package/src/buffer.ts +10 -14
- package/src/bulk-import/types.ts +10 -0
- package/src/calibration.test.ts +99 -0
- package/src/calibration.ts +57 -13
- package/src/causal-consolidation.test.ts +214 -0
- package/src/causal-consolidation.ts +131 -14
- package/src/causal-retrieval.ts +16 -3
- package/src/citations.test.ts +75 -0
- package/src/citations.ts +19 -6
- package/src/cli.ts +134 -109
- package/src/coding/coding-namespace.test.ts +7 -0
- package/src/coding/coding-namespace.ts +8 -0
- package/src/coding/review-context.test.ts +30 -0
- package/src/coding/review-context.ts +79 -9
- package/src/coding/wire-coding-context.test.ts +16 -0
- package/src/compat/checks.test.ts +33 -0
- package/src/compat/checks.ts +64 -4
- package/src/compounding/engine.ts +2 -2
- package/src/compounding/preference-consolidator.test.ts +47 -0
- package/src/compounding/preference-consolidator.ts +8 -8
- package/src/compression-optimizer.ts +5 -2
- package/src/config.test.ts +34 -2
- package/src/config.ts +62 -18
- package/src/connectors/codex-materialize-runner.ts +4 -3
- package/src/connectors/codex-materialize.ts +149 -34
- package/src/connectors/index.test.ts +144 -7
- package/src/connectors/index.ts +86 -15
- package/src/connectors/live/github.test.ts +47 -0
- package/src/connectors/live/github.ts +29 -1
- package/src/connectors/live/index.ts +2 -0
- package/src/connectors/live/live-connectors.test.ts +359 -73
- package/src/connectors/live/notion.test.ts +84 -0
- package/src/connectors/live/notion.ts +18 -1
- package/src/connectors/live/state-store.ts +419 -38
- package/src/connectors/weclone-installer.test.ts +16 -18
- package/src/connectors-cli.ts +19 -0
- package/src/console/trace.test.ts +28 -0
- package/src/console/trace.ts +42 -5
- package/src/contradiction/contradiction-judge.test.ts +49 -0
- package/src/contradiction/contradiction-judge.ts +15 -5
- package/src/contradiction/contradiction-review.ts +31 -7
- package/src/contradiction/contradiction-scan.ts +28 -18
- package/src/contradiction/contradiction.test.ts +237 -1
- package/src/contradiction/resolution.ts +43 -4
- package/src/conversation-index/backend.ts +13 -5
- package/src/conversation-index/cleanup.ts +25 -4
- package/src/conversation-index/faiss-adapter.ts +24 -15
- package/src/conversation-index/indexer.test.ts +71 -10
- package/src/conversation-index/indexer.ts +22 -3
- package/src/cross-namespace-budget.test.ts +59 -0
- package/src/cross-namespace-budget.ts +15 -7
- package/src/curation/index.ts +18 -17
- package/src/dashboard-runtime.test.ts +98 -0
- package/src/dashboard-runtime.ts +96 -6
- package/src/dedup/index.test.ts +133 -0
- package/src/dedup/index.ts +73 -10
- package/src/dedup/semantic.test.ts +77 -2
- package/src/dedup/semantic.ts +26 -6
- package/src/embedding-fallback.ts +47 -15
- package/src/enrichment/audit.ts +8 -1
- package/src/enrichment/pipeline.ts +21 -13
- package/src/enrichment/web-search-provider.ts +1 -6
- package/src/entity-retrieval.ts +57 -6
- package/src/evals.ts +22 -13
- package/src/explicit-capture.test.ts +40 -0
- package/src/explicit-capture.ts +14 -2
- package/src/extraction.ts +42 -30
- package/src/fallback-llm.ts +35 -2
- package/src/graph-dashboard-diff.test.ts +57 -0
- package/src/graph-dashboard-diff.ts +24 -2
- package/src/graph-dashboard-parser.test.ts +31 -0
- package/src/graph-dashboard-parser.ts +4 -1
- package/src/graph-events.ts +6 -4
- package/src/graph.test.ts +69 -0
- package/src/graph.ts +7 -4
- package/src/importers/base.test.ts +70 -0
- package/src/importers/base.ts +56 -7
- package/src/index.ts +5 -2
- package/src/lcm/archive.ts +65 -16
- package/src/lcm/engine.ts +27 -8
- package/src/lcm/recall.ts +5 -5
- package/src/lcm-engine.test.ts +87 -1
- package/src/lcm-recall.test.ts +71 -0
- package/src/live-connectors-runner.ts +100 -36
- package/src/maintenance/archive-observations.ts +24 -3
- package/src/maintenance/atomic-file.ts +85 -0
- package/src/maintenance/dreams-ledger.ts +15 -8
- package/src/maintenance/memory-governance.test.ts +53 -0
- package/src/maintenance/memory-governance.ts +15 -5
- package/src/maintenance/observation-ledger-utils.ts +6 -5
- package/src/maintenance/purge.test.ts +64 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +22 -9
- package/src/maintenance/rebuild-memory-projection.ts +22 -9
- package/src/maintenance/rebuild-observations.ts +7 -3
- package/src/mcp-memory-inspector-app.ts +26 -3
- package/src/memory-cache.test.ts +19 -0
- package/src/memory-cache.ts +1 -0
- package/src/memory-extension/codex-publisher.ts +25 -4
- package/src/memory-extension-host/host-discovery.test.ts +69 -0
- package/src/memory-extension-host/host-discovery.ts +63 -6
- package/src/memory-projection-store.ts +114 -62
- package/src/message-parts/index.ts +46 -31
- package/src/message-parts/message-parts.test.ts +77 -0
- package/src/migrate/from-engram.ts +68 -14
- package/src/model-registry.test.ts +38 -0
- package/src/model-registry.ts +12 -7
- package/src/namespaces/identity.test.ts +66 -0
- package/src/namespaces/identity.ts +23 -0
- package/src/namespaces/migrate.test.ts +62 -0
- package/src/namespaces/migrate.ts +82 -14
- package/src/namespaces/principal.test.ts +37 -1
- package/src/namespaces/principal.ts +18 -7
- package/src/namespaces/search.test.ts +76 -6
- package/src/namespaces/search.ts +22 -21
- package/src/namespaces/storage.ts +93 -11
- package/src/native-knowledge.ts +23 -3
- package/src/negative.ts +50 -5
- package/src/network/webdav.ts +177 -58
- package/src/onboarding/index.test.ts +105 -0
- package/src/onboarding/index.ts +17 -5
- package/src/operator-toolkit.ts +39 -4
- package/src/orchestrator.ts +52 -17
- package/src/page-versioning.ts +31 -5
- package/src/peers/peers.test.ts +70 -0
- package/src/peers/storage.ts +32 -3
- package/src/plugin-entry-resolver.test.ts +60 -0
- package/src/plugin-entry-resolver.ts +48 -0
- package/src/plugin-id.test.ts +38 -0
- package/src/plugin-id.ts +31 -64
- package/src/policy-runtime.test.ts +75 -0
- package/src/policy-runtime.ts +32 -3
- package/src/procedural/procedure-miner.test.ts +152 -0
- package/src/procedural/procedure-miner.ts +124 -19
- package/src/profiling.test.ts +23 -0
- package/src/profiling.ts +10 -1
- package/src/projection/index.test.ts +253 -0
- package/src/projection/index.ts +159 -18
- package/src/qmd-client.test.ts +45 -0
- package/src/qmd.ts +8 -8
- package/src/recall-disclosure.test.ts +15 -1
- package/src/recall-state.ts +24 -5
- package/src/relevance.ts +24 -5
- package/src/replay/normalizers/chatgpt.ts +14 -4
- package/src/replay/normalizers/claude.ts +8 -3
- package/src/replay/normalizers/openclaw.ts +35 -12
- package/src/replay/normalizers/replay-normalizers.test.ts +65 -0
- package/src/replay/normalizers/shared.ts +4 -1
- package/src/replay/runner.ts +1 -1
- package/src/rerank.test.ts +41 -1
- package/src/rerank.ts +2 -2
- package/src/resolve-auth-token.test.ts +29 -0
- package/src/resolve-auth-token.ts +12 -7
- package/src/resolve-provider-secret.test.ts +78 -22
- package/src/resolve-provider-secret.ts +55 -223
- package/src/retrieval-agents.ts +51 -14
- package/src/review/index.test.ts +75 -1
- package/src/review/index.ts +88 -30
- package/src/routing/store.ts +36 -6
- package/src/runtime/env.test.ts +73 -0
- package/src/runtime/env.ts +7 -11
- package/src/schemas.ts +16 -1
- package/src/search/abort.ts +18 -0
- package/src/search/document-scanner.test.ts +80 -0
- package/src/search/document-scanner.ts +51 -9
- package/src/search/embed-helper.ts +19 -6
- package/src/search/factory.ts +9 -5
- package/src/search/lancedb-backend.ts +62 -22
- package/src/search/meilisearch-backend.ts +35 -12
- package/src/search/orama-backend.test.ts +27 -0
- package/src/search/orama-backend.ts +65 -15
- package/src/secure-store/cli-handlers.ts +70 -6
- package/src/secure-store/cli-renderer.ts +13 -7
- package/src/secure-store/secure-fs.ts +11 -5
- package/src/secure-store/secure-store.test.ts +70 -0
- package/src/semantic-consolidation.test.ts +45 -0
- package/src/semantic-consolidation.ts +3 -3
- package/src/session-integrity.test.ts +98 -0
- package/src/session-integrity.ts +51 -1
- package/src/session-observer-state.ts +108 -41
- package/src/shared-context/manager.ts +93 -15
- package/src/signal.test.ts +14 -0
- package/src/signal.ts +8 -1
- package/src/source-attribution.test.ts +8 -0
- package/src/source-attribution.ts +24 -2
- package/src/spaces/index.test.ts +93 -0
- package/src/spaces/index.ts +75 -9
- package/src/storage.ts +14 -1
- package/src/store-contract.test.ts +35 -0
- package/src/store-contract.ts +39 -5
- package/src/summarizer.ts +24 -18
- package/src/summary-snapshot.test.ts +77 -0
- package/src/surfaces/dreams.test.ts +73 -0
- package/src/surfaces/dreams.ts +53 -19
- package/src/sync/index.ts +42 -17
- package/src/taxonomy/taxonomy-loader.ts +43 -4
- package/src/temporal-supersession.test.ts +67 -0
- package/src/temporal-supersession.ts +8 -0
- package/src/tmt.test.ts +50 -0
- package/src/tmt.ts +35 -11
- package/src/tokens.test.ts +18 -0
- package/src/tokens.ts +7 -0
- package/src/training-export/converter.test.ts +55 -2
- package/src/training-export/converter.ts +36 -10
- package/src/training-export/registry.test.ts +17 -0
- package/src/training-export/registry.ts +19 -1
- package/src/transcript.ts +2 -2
- package/src/transfer/backup.ts +18 -7
- package/src/transfer/capsule-crypto.ts +105 -21
- package/src/transfer/capsule-encrypt.test.ts +106 -7
- package/src/transfer/capsule-export.ts +23 -14
- package/src/transfer/capsule-import.ts +11 -2
- package/src/transfer/exclusions.ts +7 -0
- package/src/transfer/export-sqlite.ts +14 -13
- package/src/transfer/fs-utils.ts +52 -1
- package/src/transfer/import-json.ts +12 -7
- package/src/transfer/import-md.ts +5 -5
- package/src/transfer/import-sqlite.ts +4 -5
- package/src/trust-zones.ts +1 -1
- package/src/types.ts +25 -0
- package/src/utility-telemetry.ts +1 -1
- package/src/utils/category-dir.test.ts +15 -0
- package/src/utils/category-dir.ts +3 -1
- package/src/work/boundary.ts +30 -18
- package/src/work/storage.ts +116 -38
- package/src/work-product-ledger.ts +1 -1
- package/dist/chunk-25MQ7IHJ.js.map +0 -1
- package/dist/chunk-2IWUMAES.js.map +0 -1
- package/dist/chunk-2NMMFZ5T.js.map +0 -1
- package/dist/chunk-2PRLKQAH.js.map +0 -1
- package/dist/chunk-326G7DJK.js.map +0 -1
- package/dist/chunk-3APJ5EVB.js.map +0 -1
- package/dist/chunk-3KW65B36.js.map +0 -1
- package/dist/chunk-3QKK7QOS.js.map +0 -1
- package/dist/chunk-3SLRNYNG.js.map +0 -1
- package/dist/chunk-3VAL7ZL2.js.map +0 -1
- package/dist/chunk-3Y4P7RXM.js.map +0 -1
- package/dist/chunk-3ZLVGM76.js.map +0 -1
- package/dist/chunk-43PJZYGL.js.map +0 -1
- package/dist/chunk-47VWKCAF.js.map +0 -1
- package/dist/chunk-4KGVTPGD.js.map +0 -1
- package/dist/chunk-5375UYTQ.js.map +0 -1
- package/dist/chunk-56K5QLHX.js.map +0 -1
- package/dist/chunk-575RMLWN.js.map +0 -1
- package/dist/chunk-5NPGSAVB.js.map +0 -1
- package/dist/chunk-5RGLBDQF.js.map +0 -1
- package/dist/chunk-65PG43EQ.js.map +0 -1
- package/dist/chunk-66DHUKLO.js.map +0 -1
- package/dist/chunk-6LVVDPJ4.js.map +0 -1
- package/dist/chunk-76FLAAUC.js.map +0 -1
- package/dist/chunk-77H5NU3M.js.map +0 -1
- package/dist/chunk-7MNMYOFP.js.map +0 -1
- package/dist/chunk-7OZ53EXP.js.map +0 -1
- package/dist/chunk-7SEAZFFB.js.map +0 -1
- package/dist/chunk-A6KTB5R6.js.map +0 -1
- package/dist/chunk-AGZQD76C.js.map +0 -1
- package/dist/chunk-APO3DCMU.js.map +0 -1
- package/dist/chunk-BVF3AGJP.js.map +0 -1
- package/dist/chunk-C5BCH4ZS.js.map +0 -1
- package/dist/chunk-C7VW7C3F.js.map +0 -1
- package/dist/chunk-CULXMQJH.js.map +0 -1
- package/dist/chunk-CYFQJMUV.js.map +0 -1
- package/dist/chunk-D654IBA6.js +0 -61
- package/dist/chunk-D654IBA6.js.map +0 -1
- package/dist/chunk-DGXUHMOV.js.map +0 -1
- package/dist/chunk-DINWEURR.js.map +0 -1
- package/dist/chunk-DK5LDEQM.js.map +0 -1
- package/dist/chunk-EABGC2TL.js.map +0 -1
- package/dist/chunk-EHRTFRWW.js.map +0 -1
- package/dist/chunk-EJI5XIBB.js.map +0 -1
- package/dist/chunk-FAAFWE4G.js.map +0 -1
- package/dist/chunk-FAJ7FZYM.js +0 -11
- package/dist/chunk-FAJ7FZYM.js.map +0 -1
- package/dist/chunk-FDU6HUUL.js +0 -147
- package/dist/chunk-FDU6HUUL.js.map +0 -1
- package/dist/chunk-FIT6DMX6.js.map +0 -1
- package/dist/chunk-FJ43PRLT.js.map +0 -1
- package/dist/chunk-FLTNHQK6.js +0 -262
- package/dist/chunk-FLTNHQK6.js.map +0 -1
- package/dist/chunk-GDFS42HT.js.map +0 -1
- package/dist/chunk-H3ME6L6D.js.map +0 -1
- package/dist/chunk-HXXBL2KD.js.map +0 -1
- package/dist/chunk-ICRIXAP2.js.map +0 -1
- package/dist/chunk-IQT3XTKW.js.map +0 -1
- package/dist/chunk-JR4ZC3G4.js.map +0 -1
- package/dist/chunk-K4FLSOR5.js.map +0 -1
- package/dist/chunk-KNKUID7G.js.map +0 -1
- package/dist/chunk-KOSORCJG.js.map +0 -1
- package/dist/chunk-LIRZNNUP.js.map +0 -1
- package/dist/chunk-LLQ2LLWF.js.map +0 -1
- package/dist/chunk-LPMVBPA3.js +0 -236
- package/dist/chunk-LPMVBPA3.js.map +0 -1
- package/dist/chunk-LT3NLYSI.js.map +0 -1
- package/dist/chunk-LUDTDZLK.js.map +0 -1
- package/dist/chunk-MJFNCJXV.js.map +0 -1
- package/dist/chunk-MSWG7JI6.js.map +0 -1
- package/dist/chunk-MXC3AP5I.js.map +0 -1
- package/dist/chunk-MXFBBHJU.js.map +0 -1
- package/dist/chunk-MZH6EHNR.js.map +0 -1
- package/dist/chunk-N2D6GXBM.js.map +0 -1
- package/dist/chunk-NBNN5GOB.js.map +0 -1
- package/dist/chunk-NMZY542O.js.map +0 -1
- package/dist/chunk-NZL6GGQE.js.map +0 -1
- package/dist/chunk-OZHRDTDX.js.map +0 -1
- package/dist/chunk-PZIAX57I.js.map +0 -1
- package/dist/chunk-Q7P4WJDP.js.map +0 -1
- package/dist/chunk-QA2ZAPBU.js.map +0 -1
- package/dist/chunk-QDZ2RLEC.js.map +0 -1
- package/dist/chunk-QLLBRHAT.js.map +0 -1
- package/dist/chunk-QR3C7BKQ.js.map +0 -1
- package/dist/chunk-RHY3HH7P.js.map +0 -1
- package/dist/chunk-RK2Y4XOM.js.map +0 -1
- package/dist/chunk-RR2PKP3I.js +0 -63
- package/dist/chunk-RR2PKP3I.js.map +0 -1
- package/dist/chunk-RRF5UOBJ.js.map +0 -1
- package/dist/chunk-RXDLTSWT.js.map +0 -1
- package/dist/chunk-RYED3SPJ.js +0 -42
- package/dist/chunk-RYED3SPJ.js.map +0 -1
- package/dist/chunk-S7KDBTWT.js.map +0 -1
- package/dist/chunk-TK4UEOSK.js.map +0 -1
- package/dist/chunk-TMM4S4IJ.js.map +0 -1
- package/dist/chunk-TMQLARTH.js.map +0 -1
- package/dist/chunk-TPB3I2AC.js.map +0 -1
- package/dist/chunk-TPMQ3G6Z.js.map +0 -1
- package/dist/chunk-TPU5L5EY.js.map +0 -1
- package/dist/chunk-TZOLIGIG.js.map +0 -1
- package/dist/chunk-U3WSW6PZ.js.map +0 -1
- package/dist/chunk-U4SCL7B7.js.map +0 -1
- package/dist/chunk-U66YHYC7.js +0 -31
- package/dist/chunk-U66YHYC7.js.map +0 -1
- package/dist/chunk-UWVJF25J.js.map +0 -1
- package/dist/chunk-VBJ7V5SK.js.map +0 -1
- package/dist/chunk-W3LR522O.js.map +0 -1
- package/dist/chunk-W4L6CZKA.js.map +0 -1
- package/dist/chunk-W6AQJ2PY.js.map +0 -1
- package/dist/chunk-WELDCG6C.js.map +0 -1
- package/dist/chunk-WNARATI3.js.map +0 -1
- package/dist/chunk-WPGJYVUH.js.map +0 -1
- package/dist/chunk-WW3QQF4H.js.map +0 -1
- package/dist/chunk-XIG5PDM7.js.map +0 -1
- package/dist/chunk-XKECPATV.js.map +0 -1
- package/dist/chunk-XKLD5OK4.js.map +0 -1
- package/dist/chunk-XSZEP4SF.js.map +0 -1
- package/dist/chunk-XVVIG67A.js.map +0 -1
- package/dist/chunk-XYIK4LF6.js.map +0 -1
- package/dist/chunk-YRMVARQP.js.map +0 -1
- package/dist/chunk-YROHKYBY.js.map +0 -1
- package/dist/chunk-YU5KIWYQ.js.map +0 -1
- package/dist/chunk-ZAVUCJ4H.js.map +0 -1
- package/dist/chunk-ZPKBYX2F.js.map +0 -1
- package/dist/chunk-ZTFCYYEZ.js.map +0 -1
- package/dist/chunk-ZYVPLJ4T.js.map +0 -1
- package/dist/path-MR5JPYOP.js +0 -9
- package/dist/state-store-VZU2IA53.js +0 -16
- package/dist/trace-C5ETWBEF.js.map +0 -1
- /package/dist/{capsule-crypto-5CYAGVC5.js.map → bulk-import/index.js.map} +0 -0
- /package/dist/{contradiction-review-ATP4S6IC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
- /package/dist/{capsule-merge-4MGKE7C5.js.map → capsule-merge-T2JRE46P.js.map} +0 -0
- /package/dist/{chunk-SAZS2QZB.js.map → chunk-23UORJ4S.js.map} +0 -0
- /package/dist/{chunk-PK7H5L6Y.js.map → chunk-2NM43EWN.js.map} +0 -0
- /package/dist/{chunk-PYXS46O7.js.map → chunk-3BP57I6J.js.map} +0 -0
- /package/dist/{chunk-FBYESMQ2.js.map → chunk-3C5RPJAX.js.map} +0 -0
- /package/dist/{chunk-U7EJOMFC.js.map → chunk-4Q73JBSM.js.map} +0 -0
- /package/dist/{chunk-N53K2EXC.js.map → chunk-6VF75M3X.js.map} +0 -0
- /package/dist/{chunk-6H2TESSP.js.map → chunk-765K3SAT.js.map} +0 -0
- /package/dist/{chunk-EDTHC6UD.js.map → chunk-77NAFXUD.js.map} +0 -0
- /package/dist/{chunk-MGKYQQYF.js.map → chunk-7Q3RCKAQ.js.map} +0 -0
- /package/dist/{chunk-34DQE4KF.js.map → chunk-CO7ZO4TU.js.map} +0 -0
- /package/dist/{chunk-ZKSK55RC.js.map → chunk-ETUPBUHB.js.map} +0 -0
- /package/dist/{chunk-QRNI5JBH.js.map → chunk-EYIEWJNI.js.map} +0 -0
- /package/dist/{chunk-C6QPK5GG.js.map → chunk-FZZ2QTJI.js.map} +0 -0
- /package/dist/{chunk-3JXBXXM2.js.map → chunk-G4IAEX6D.js.map} +0 -0
- /package/dist/{chunk-2WWLHTZY.js.map → chunk-IC4GELZE.js.map} +0 -0
- /package/dist/{chunk-PCUKNJAZ.js.map → chunk-JKV57BTN.js.map} +0 -0
- /package/dist/{chunk-2KI4QFHU.js.map → chunk-LMDRGRJ2.js.map} +0 -0
- /package/dist/{chunk-MY6TPVXW.js.map → chunk-LMPHTYJC.js.map} +0 -0
- /package/dist/{chunk-5HRY2WRF.js.map → chunk-LZ3VEOU5.js.map} +0 -0
- /package/dist/{chunk-NGAVDO7E.js.map → chunk-OADWQ5CR.js.map} +0 -0
- /package/dist/{chunk-DOM4GKSW.js.map → chunk-OZKVVUJB.js.map} +0 -0
- /package/dist/{chunk-MT4HVDUZ.js.map → chunk-PM3QHTFT.js.map} +0 -0
- /package/dist/{chunk-ZK7I7JYV.js.map → chunk-R3PS27B4.js.map} +0 -0
- /package/dist/{chunk-SKE7JYKA.js.map → chunk-SFXKHM7P.js.map} +0 -0
- /package/dist/{chunk-HMDCOMYU.js.map → chunk-SKGV326D.js.map} +0 -0
- /package/dist/{chunk-5UM2VJ6D.js.map → chunk-UEY3VB6W.js.map} +0 -0
- /package/dist/{chunk-GIF42EW3.js.map → chunk-UP6MOYCB.js.map} +0 -0
- /package/dist/{chunk-MRILGULB.js.map → chunk-V2RCP53Q.js.map} +0 -0
- /package/dist/{chunk-FSFEQI74.js.map → chunk-W7L6HXUC.js.map} +0 -0
- /package/dist/{chunk-3IQ2TR4N.js.map → chunk-WLEB7WCG.js.map} +0 -0
- /package/dist/{chunk-GL6I6MEQ.js.map → chunk-WSGF57U2.js.map} +0 -0
- /package/dist/{chunk-JA3AK3PT.js.map → chunk-XNLXAWHX.js.map} +0 -0
- /package/dist/{chunk-SIC6U3GZ.js.map → chunk-YHV3KRKS.js.map} +0 -0
- /package/dist/{chunk-VLXA6PI2.js.map → chunk-YQMZ7IH2.js.map} +0 -0
- /package/dist/{contradiction-scan-5A4IDZV5.js.map → contradiction-review-6V2LXXK6.js.map} +0 -0
- /package/dist/{migrate-from-identity-anchor-G27MCD6A.js.map → contradiction-scan-GIRVC4C7.js.map} +0 -0
- /package/dist/{first-start-migration-4MHQEOSD.js.map → first-start-migration-CKTCTCQI.js.map} +0 -0
- /package/dist/{graph-edge-decay-5DI5GUNL.js.map → graph-edge-decay-MUP5J7CC.js.map} +0 -0
- /package/dist/{path-MR5JPYOP.js.map → importers/index.js.map} +0 -0
- /package/dist/{peers-HCVGHMAE.js.map → migrate-from-identity-anchor-EB4XI4Q2.js.map} +0 -0
- /package/dist/{resolution-B7FNQSSP.js.map → path-X2K5XCHL.js.map} +0 -0
- /package/dist/{state-store-VZU2IA53.js.map → peers/index.js.map} +0 -0
- /package/dist/{tier-stats-62ZVDFKS.js.map → tier-stats-SKML2OSF.js.map} +0 -0
package/src/orchestrator.ts
CHANGED
|
@@ -71,7 +71,10 @@ import { extractTopics } from "./topics.js";
|
|
|
71
71
|
import { TranscriptManager } from "./transcript.js";
|
|
72
72
|
import { HourlySummarizer } from "./summarizer.js";
|
|
73
73
|
import { LocalLlmClient } from "./local-llm.js";
|
|
74
|
-
import {
|
|
74
|
+
import {
|
|
75
|
+
FallbackLlmClient,
|
|
76
|
+
fallbackLlmRuntimeContextFromConfig,
|
|
77
|
+
} from "./fallback-llm.js";
|
|
75
78
|
import {
|
|
76
79
|
ensureDaySummaryCron,
|
|
77
80
|
ensureNightlyGovernanceCron,
|
|
@@ -287,6 +290,7 @@ import {
|
|
|
287
290
|
type ConversationQmdRuntime,
|
|
288
291
|
} from "./conversation-index/backend.js";
|
|
289
292
|
import { NamespaceStorageRouter } from "./namespaces/storage.js";
|
|
293
|
+
import { namespaceIdentityFromToken } from "./namespaces/identity.js";
|
|
290
294
|
import {
|
|
291
295
|
canReadNamespace,
|
|
292
296
|
defaultNamespaceForPrincipal,
|
|
@@ -2014,9 +2018,10 @@ export class Orchestrator {
|
|
|
2014
2018
|
: this.localLlm;
|
|
2015
2019
|
// Initialize gateway fast LLM for fast-tier ops when modelSource is "gateway"
|
|
2016
2020
|
this._fastGatewayLlm = config.modelSource === "gateway"
|
|
2017
|
-
? new FallbackLlmClient(
|
|
2018
|
-
|
|
2019
|
-
|
|
2021
|
+
? new FallbackLlmClient(
|
|
2022
|
+
config.gatewayConfig,
|
|
2023
|
+
fallbackLlmRuntimeContextFromConfig(config),
|
|
2024
|
+
)
|
|
2020
2025
|
: null;
|
|
2021
2026
|
if (config.modelSource === "gateway") {
|
|
2022
2027
|
log.debug(
|
|
@@ -3337,9 +3342,10 @@ export class Orchestrator {
|
|
|
3337
3342
|
? this.config.fastGatewayAgentId
|
|
3338
3343
|
: this.config.gatewayAgentId || undefined)
|
|
3339
3344
|
: undefined;
|
|
3340
|
-
const llm = new FallbackLlmClient(
|
|
3341
|
-
|
|
3342
|
-
|
|
3345
|
+
const llm = new FallbackLlmClient(
|
|
3346
|
+
this.config.gatewayConfig,
|
|
3347
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
3348
|
+
);
|
|
3343
3349
|
if (!llm.isAvailable(gatewayAgentId) && !(modelSetting === "fast" && this.fastLlm && !useGateway)) {
|
|
3344
3350
|
log.warn(
|
|
3345
3351
|
"[semantic-consolidation] no LLM available — skipping synthesis",
|
|
@@ -3584,9 +3590,10 @@ export class Orchestrator {
|
|
|
3584
3590
|
if (this.config.peerProfileReasonerEnabled) {
|
|
3585
3591
|
try {
|
|
3586
3592
|
const { runPeerProfileReasoner } = await import("./peers/index.js");
|
|
3587
|
-
const llm = new FallbackLlmClient(
|
|
3588
|
-
|
|
3589
|
-
|
|
3593
|
+
const llm = new FallbackLlmClient(
|
|
3594
|
+
this.config.gatewayConfig,
|
|
3595
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
3596
|
+
);
|
|
3590
3597
|
const peerResult = await runPeerProfileReasoner({
|
|
3591
3598
|
memoryDir: targetStorage.dir,
|
|
3592
3599
|
enabled: true,
|
|
@@ -4627,6 +4634,12 @@ export class Orchestrator {
|
|
|
4627
4634
|
}
|
|
4628
4635
|
const chunks = await this.buildConversationIndexChunks(sessionKey, hours);
|
|
4629
4636
|
await writeConversationChunks(this.conversationIndexDir, chunks);
|
|
4637
|
+
const retentionCutoffMs =
|
|
4638
|
+
Number.isFinite(this.config.conversationIndexRetentionDays) &&
|
|
4639
|
+
this.config.conversationIndexRetentionDays > 0
|
|
4640
|
+
? Date.now() -
|
|
4641
|
+
this.config.conversationIndexRetentionDays * 24 * 60 * 60 * 1000
|
|
4642
|
+
: undefined;
|
|
4630
4643
|
await cleanupConversationChunks(
|
|
4631
4644
|
this.conversationIndexDir,
|
|
4632
4645
|
this.config.conversationIndexRetentionDays,
|
|
@@ -4638,6 +4651,7 @@ export class Orchestrator {
|
|
|
4638
4651
|
if (this.conversationIndexBackend) {
|
|
4639
4652
|
const result = await this.conversationIndexBackend.update(chunks, {
|
|
4640
4653
|
embed: shouldEmbed,
|
|
4654
|
+
...(retentionCutoffMs !== undefined ? { retentionCutoffMs } : {}),
|
|
4641
4655
|
});
|
|
4642
4656
|
embedded = result.embedded;
|
|
4643
4657
|
}
|
|
@@ -4814,7 +4828,7 @@ export class Orchestrator {
|
|
|
4814
4828
|
if (this.config.secureStoreEnabled && !this.storage.isSecureStoreUnlocked()) {
|
|
4815
4829
|
const lockedMsg =
|
|
4816
4830
|
"[secure-store locked] Memory store is encrypted and locked. " +
|
|
4817
|
-
"
|
|
4831
|
+
"Unlock the secure-store inside this daemon process, or restart the daemon through a secure-store aware launcher that installs the key.";
|
|
4818
4832
|
log.warn("recall blocked: secure-store is locked");
|
|
4819
4833
|
return lockedMsg;
|
|
4820
4834
|
}
|
|
@@ -6900,6 +6914,7 @@ export class Orchestrator {
|
|
|
6900
6914
|
const section = await buildEntityRecallSection({
|
|
6901
6915
|
config: this.config,
|
|
6902
6916
|
storage: profileStorage,
|
|
6917
|
+
namespaceStorage: (namespace) => this.getStorage(namespace),
|
|
6903
6918
|
query: retrievalQuery,
|
|
6904
6919
|
recallNamespaces,
|
|
6905
6920
|
recentTurns,
|
|
@@ -7851,6 +7866,7 @@ export class Orchestrator {
|
|
|
7851
7866
|
temporalResults,
|
|
7852
7867
|
this.config.parallelAgentWeights,
|
|
7853
7868
|
qmdFetchLimit + lifecycleHeadroom,
|
|
7869
|
+
this.config.memoryDir,
|
|
7854
7870
|
);
|
|
7855
7871
|
}
|
|
7856
7872
|
} catch (err) {
|
|
@@ -10362,9 +10378,18 @@ export class Orchestrator {
|
|
|
10362
10378
|
|
|
10363
10379
|
async ingestReplayBatch(
|
|
10364
10380
|
turns: ReplayTurn[],
|
|
10365
|
-
options: {
|
|
10381
|
+
options: {
|
|
10382
|
+
deadlineMs?: number;
|
|
10383
|
+
archiveLcm?: boolean;
|
|
10384
|
+
abortSignal?: AbortSignal;
|
|
10385
|
+
} = {},
|
|
10366
10386
|
): Promise<void> {
|
|
10367
10387
|
if (!Array.isArray(turns) || turns.length === 0) return;
|
|
10388
|
+
if (options.abortSignal?.aborted) {
|
|
10389
|
+
throw options.abortSignal.reason instanceof Error
|
|
10390
|
+
? options.abortSignal.reason
|
|
10391
|
+
: new Error("ingestReplayBatch aborted");
|
|
10392
|
+
}
|
|
10368
10393
|
if (shouldSkipImplicitExtraction(this.config)) {
|
|
10369
10394
|
log.debug(
|
|
10370
10395
|
"ingestReplayBatch: skipping implicit extraction because captureMode=explicit",
|
|
@@ -10398,6 +10423,11 @@ export class Orchestrator {
|
|
|
10398
10423
|
}> = [];
|
|
10399
10424
|
for (const [key, sessionTurns] of bySession.entries()) {
|
|
10400
10425
|
if (sessionTurns.length === 0) continue;
|
|
10426
|
+
if (options.abortSignal?.aborted) {
|
|
10427
|
+
throw options.abortSignal.reason instanceof Error
|
|
10428
|
+
? options.abortSignal.reason
|
|
10429
|
+
: new Error("ingestReplayBatch aborted");
|
|
10430
|
+
}
|
|
10401
10431
|
if (options.archiveLcm !== false && this.lcmEngine?.enabled) {
|
|
10402
10432
|
await this.lcmEngine.observeMessages(
|
|
10403
10433
|
key,
|
|
@@ -10437,6 +10467,7 @@ export class Orchestrator {
|
|
|
10437
10467
|
skipUserTurnThreshold: true,
|
|
10438
10468
|
bufferKey,
|
|
10439
10469
|
extractionDeadlineMs: options.deadlineMs,
|
|
10470
|
+
abortSignal: options.abortSignal,
|
|
10440
10471
|
onTaskSettled: (err) => (err ? reject(err) : resolve()),
|
|
10441
10472
|
}).catch(reject);
|
|
10442
10473
|
}),
|
|
@@ -10540,6 +10571,7 @@ export class Orchestrator {
|
|
|
10540
10571
|
parts: turn.parts,
|
|
10541
10572
|
rawContent: turn.rawContent,
|
|
10542
10573
|
sourceFormat: turn.sourceFormat,
|
|
10574
|
+
importProvenance: turn.importProvenance,
|
|
10543
10575
|
});
|
|
10544
10576
|
}
|
|
10545
10577
|
if (sessionTurns.length === 0) return;
|
|
@@ -12163,9 +12195,10 @@ export class Orchestrator {
|
|
|
12163
12195
|
judgeCandidates,
|
|
12164
12196
|
this.config,
|
|
12165
12197
|
this.localLlm,
|
|
12166
|
-
new FallbackLlmClient(
|
|
12167
|
-
|
|
12168
|
-
|
|
12198
|
+
new FallbackLlmClient(
|
|
12199
|
+
this.config.gatewayConfig,
|
|
12200
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
12201
|
+
),
|
|
12169
12202
|
this.judgeVerdictCache,
|
|
12170
12203
|
this.judgeDeferCounts,
|
|
12171
12204
|
judgeTelemetryHandler,
|
|
@@ -16327,7 +16360,8 @@ export class Orchestrator {
|
|
|
16327
16360
|
private namespaceFromPath(p: string): string {
|
|
16328
16361
|
if (!this.config.namespacesEnabled) return this.config.defaultNamespace;
|
|
16329
16362
|
const m = p.match(/[\\/]+namespaces[\\/]+([^\\/]+)(?:[\\/]|$)/);
|
|
16330
|
-
|
|
16363
|
+
if (!m?.[1]) return this.config.defaultNamespace;
|
|
16364
|
+
return namespaceIdentityFromToken(m[1]) ?? m[1];
|
|
16331
16365
|
}
|
|
16332
16366
|
|
|
16333
16367
|
private namespaceFromStorageDir(storageDir: string): string {
|
|
@@ -16337,7 +16371,8 @@ export class Orchestrator {
|
|
|
16337
16371
|
if (resolvedStorageDir === resolvedMemoryDir)
|
|
16338
16372
|
return this.config.defaultNamespace;
|
|
16339
16373
|
const m = resolvedStorageDir.match(/[\\/]namespaces[\\/]([^\\/]+)$/);
|
|
16340
|
-
|
|
16374
|
+
if (!m?.[1]) return this.config.defaultNamespace;
|
|
16375
|
+
return namespaceIdentityFromToken(m[1]) ?? m[1];
|
|
16341
16376
|
}
|
|
16342
16377
|
|
|
16343
16378
|
private async readAllMemoriesForNamespaces(
|
package/src/page-versioning.ts
CHANGED
|
@@ -126,18 +126,44 @@ async function readManifest(
|
|
|
126
126
|
pagePath: string,
|
|
127
127
|
): Promise<VersionHistory> {
|
|
128
128
|
const mp = manifestPath(memoryDir, sidecar, pagePath);
|
|
129
|
+
if (!(await fileExists(mp))) {
|
|
130
|
+
return { pagePath, versions: [], currentVersion: "0" };
|
|
131
|
+
}
|
|
129
132
|
try {
|
|
130
133
|
const raw = await readFile(mp, "utf-8");
|
|
131
134
|
const parsed: unknown = JSON.parse(raw);
|
|
132
135
|
if (typeof parsed !== "object" || parsed === null) {
|
|
133
|
-
|
|
136
|
+
throw new Error("manifest root must be an object");
|
|
134
137
|
}
|
|
135
138
|
const obj = parsed as Record<string, unknown>;
|
|
136
|
-
|
|
137
|
-
|
|
139
|
+
if (!Array.isArray(obj.versions)) {
|
|
140
|
+
throw new Error("manifest versions must be an array");
|
|
141
|
+
}
|
|
142
|
+
const versions = obj.versions.map((entry, index) => {
|
|
143
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
|
|
144
|
+
throw new Error(`manifest version ${index} must be an object`);
|
|
145
|
+
}
|
|
146
|
+
const version = entry as Record<string, unknown>;
|
|
147
|
+
if (
|
|
148
|
+
typeof version.versionId !== "string" ||
|
|
149
|
+
!/^\d+$/.test(version.versionId) ||
|
|
150
|
+
typeof version.timestamp !== "string" ||
|
|
151
|
+
typeof version.contentHash !== "string" ||
|
|
152
|
+
typeof version.sizeBytes !== "number" ||
|
|
153
|
+
!Number.isFinite(version.sizeBytes) ||
|
|
154
|
+
!["write", "consolidation", "revert", "manual"].includes(String(version.trigger))
|
|
155
|
+
) {
|
|
156
|
+
throw new Error(`manifest version ${index} has invalid shape`);
|
|
157
|
+
}
|
|
158
|
+
return version as unknown as PageVersion;
|
|
159
|
+
});
|
|
160
|
+
if (typeof obj.currentVersion !== "string" || !/^\d+$/.test(obj.currentVersion)) {
|
|
161
|
+
throw new Error("manifest currentVersion must be a numeric string");
|
|
162
|
+
}
|
|
163
|
+
const currentVersion = obj.currentVersion;
|
|
138
164
|
return { pagePath: typeof obj.pagePath === "string" ? obj.pagePath : pagePath, versions, currentVersion };
|
|
139
|
-
} catch {
|
|
140
|
-
|
|
165
|
+
} catch (error) {
|
|
166
|
+
throw new Error(`page-versioning: invalid manifest ${mp}: ${error instanceof Error ? error.message : String(error)}`);
|
|
141
167
|
}
|
|
142
168
|
}
|
|
143
169
|
|
package/src/peers/peers.test.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
listPeers,
|
|
19
19
|
PEER_ID_PATTERN,
|
|
20
20
|
readInteractionLogRaw,
|
|
21
|
+
readPeerInteractionLog,
|
|
21
22
|
readPeer,
|
|
22
23
|
readPeerProfile,
|
|
23
24
|
writePeer,
|
|
@@ -274,6 +275,75 @@ test("appendInteractionLog creates peer directory on demand", async () => {
|
|
|
274
275
|
assert.ok(raw.includes("no identity yet"));
|
|
275
276
|
});
|
|
276
277
|
|
|
278
|
+
test("appendInteractionLog rejects non-canonical timestamps", async () => {
|
|
279
|
+
const dir = await makeTempDir();
|
|
280
|
+
|
|
281
|
+
await assert.rejects(
|
|
282
|
+
appendInteractionLog(dir, "self", {
|
|
283
|
+
timestamp: "zzzz",
|
|
284
|
+
kind: "peer_profile_reasoner_run",
|
|
285
|
+
summary: "bad marker",
|
|
286
|
+
}),
|
|
287
|
+
/canonical ISO-8601 timestamp/,
|
|
288
|
+
);
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
test("readPeerInteractionLog skips malformed timestamp lines before timestamp filtering", async () => {
|
|
292
|
+
const dir = await makeTempDir();
|
|
293
|
+
const peerDir = path.join(dir, "peers", "self");
|
|
294
|
+
await fs.mkdir(peerDir, { recursive: true });
|
|
295
|
+
await fs.writeFile(
|
|
296
|
+
path.join(peerDir, "interactions.log.md"),
|
|
297
|
+
[
|
|
298
|
+
"- [zzzz] (peer_profile_reasoner_run) bad marker",
|
|
299
|
+
"- [2026-04-25T00:00:01.000Z] (message) good marker",
|
|
300
|
+
"",
|
|
301
|
+
].join("\n"),
|
|
302
|
+
"utf8",
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
const entries = await readPeerInteractionLog(dir, "self", {
|
|
306
|
+
afterTimestamp: "2026-04-25T00:00:00.000Z",
|
|
307
|
+
});
|
|
308
|
+
|
|
309
|
+
assert.deepEqual(
|
|
310
|
+
entries.map((entry) => entry.summary),
|
|
311
|
+
["good marker"],
|
|
312
|
+
);
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
test("readPeerInteractionLog preserves valid non-canonical ISO timestamps", async () => {
|
|
316
|
+
const dir = await makeTempDir();
|
|
317
|
+
const peerDir = path.join(dir, "peers", "self");
|
|
318
|
+
await fs.mkdir(peerDir, { recursive: true });
|
|
319
|
+
await fs.writeFile(
|
|
320
|
+
path.join(peerDir, "interactions.log.md"),
|
|
321
|
+
[
|
|
322
|
+
"- [2026-04-25T00:00:00Z] (message) no millisecond marker",
|
|
323
|
+
"- [2026-04-25T01:00:00+01:00] (message) offset marker for same instant",
|
|
324
|
+
"- [2026-04-25T00:00:01.000Z] (message) newer marker",
|
|
325
|
+
"",
|
|
326
|
+
].join("\n"),
|
|
327
|
+
"utf8",
|
|
328
|
+
);
|
|
329
|
+
|
|
330
|
+
const allEntries = await readPeerInteractionLog(dir, "self");
|
|
331
|
+
|
|
332
|
+
assert.deepEqual(
|
|
333
|
+
allEntries.map((entry) => entry.timestamp),
|
|
334
|
+
["2026-04-25T00:00:00Z", "2026-04-25T01:00:00+01:00", "2026-04-25T00:00:01.000Z"],
|
|
335
|
+
);
|
|
336
|
+
|
|
337
|
+
const filteredEntries = await readPeerInteractionLog(dir, "self", {
|
|
338
|
+
afterTimestamp: "2026-04-25T00:00:00.000Z",
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
assert.deepEqual(
|
|
342
|
+
filteredEntries.map((entry) => entry.timestamp),
|
|
343
|
+
["2026-04-25T00:00:01.000Z"],
|
|
344
|
+
);
|
|
345
|
+
});
|
|
346
|
+
|
|
277
347
|
test("readInteractionLogRaw returns empty string when log does not exist", async () => {
|
|
278
348
|
const dir = await makeTempDir();
|
|
279
349
|
const raw = await readInteractionLogRaw(dir, "self");
|
package/src/peers/storage.ts
CHANGED
|
@@ -851,6 +851,25 @@ function sanitizeLogField(value: string): string {
|
|
|
851
851
|
return value.replace(/[\r\n\t]+/g, " ").trim();
|
|
852
852
|
}
|
|
853
853
|
|
|
854
|
+
function isCanonicalIsoTimestamp(value: string): boolean {
|
|
855
|
+
const ms = Date.parse(value);
|
|
856
|
+
return Number.isFinite(ms) && new Date(ms).toISOString() === value;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
function parseIsoTimestampMs(value: string): number | null {
|
|
860
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(value)) {
|
|
861
|
+
return null;
|
|
862
|
+
}
|
|
863
|
+
const ms = Date.parse(value);
|
|
864
|
+
return Number.isFinite(ms) ? ms : null;
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
function assertCanonicalIsoTimestamp(value: string, field: string): void {
|
|
868
|
+
if (!isCanonicalIsoTimestamp(value)) {
|
|
869
|
+
throw new Error(`${field} must be a canonical ISO-8601 timestamp`);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
|
|
854
873
|
function formatLogEntry(entry: PeerInteractionLogEntry): string {
|
|
855
874
|
// One line per entry. We use a leading bullet so the file remains
|
|
856
875
|
// readable as ordinary markdown. Order: timestamp, kind, optional
|
|
@@ -899,6 +918,7 @@ export async function appendInteractionLog(
|
|
|
899
918
|
if (typeof entry.timestamp !== "string" || entry.timestamp.trim() === "") {
|
|
900
919
|
throw new Error("interaction entry must have a non-whitespace timestamp");
|
|
901
920
|
}
|
|
921
|
+
assertCanonicalIsoTimestamp(entry.timestamp.trim(), "interaction entry timestamp");
|
|
902
922
|
if (typeof entry.kind !== "string" || entry.kind.trim() === "") {
|
|
903
923
|
throw new Error("interaction entry must have a non-whitespace kind");
|
|
904
924
|
}
|
|
@@ -1245,6 +1265,7 @@ function parseLogLine(line: string): PeerInteractionLogEntry | null {
|
|
|
1245
1265
|
if (tsClose === -1) return null;
|
|
1246
1266
|
const timestamp = line.slice(3, tsClose).trim();
|
|
1247
1267
|
if (timestamp === "") return null;
|
|
1268
|
+
if (parseIsoTimestampMs(timestamp) === null) return null;
|
|
1248
1269
|
// Skip optional whitespace between `]` and `(`.
|
|
1249
1270
|
let cursor = tsClose + 1;
|
|
1250
1271
|
while (cursor < line.length && line[cursor] === " ") cursor += 1;
|
|
@@ -1308,8 +1329,9 @@ function parseLogLine(line: string): PeerInteractionLogEntry | null {
|
|
|
1308
1329
|
*
|
|
1309
1330
|
* `options.limit` (when > 0) restricts the result to the most recent
|
|
1310
1331
|
* N entries. `options.afterTimestamp` (ISO-8601) filters out entries
|
|
1311
|
-
* with `timestamp
|
|
1312
|
-
*
|
|
1332
|
+
* with `timestamp <= afterTimestamp`, comparing parsed instants so
|
|
1333
|
+
* legacy valid ISO-8601 forms like `Z` without milliseconds or
|
|
1334
|
+
* offset timestamps keep working. Both filters are applied in order:
|
|
1313
1335
|
* timestamp first, then limit.
|
|
1314
1336
|
*
|
|
1315
1337
|
* Order: oldest → newest, matching the append-only on-disk order so
|
|
@@ -1337,7 +1359,14 @@ export async function readPeerInteractionLog(
|
|
|
1337
1359
|
let filtered = entries;
|
|
1338
1360
|
if (typeof options.afterTimestamp === "string" && options.afterTimestamp.length > 0) {
|
|
1339
1361
|
const cutoff = options.afterTimestamp;
|
|
1340
|
-
|
|
1362
|
+
const cutoffMs = parseIsoTimestampMs(cutoff);
|
|
1363
|
+
if (cutoffMs === null) {
|
|
1364
|
+
throw new Error("afterTimestamp must be an ISO-8601 timestamp");
|
|
1365
|
+
}
|
|
1366
|
+
filtered = filtered.filter((e) => {
|
|
1367
|
+
const entryMs = parseIsoTimestampMs(e.timestamp);
|
|
1368
|
+
return entryMs !== null && entryMs > cutoffMs;
|
|
1369
|
+
});
|
|
1341
1370
|
}
|
|
1342
1371
|
// Gotcha #27: guard slice(-n) against n === 0 — `slice(-0)` returns
|
|
1343
1372
|
// the entire array. Treat 0 and negatives as "no limit applied".
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
|
|
4
|
+
import { resolvePluginEntry } from "./plugin-entry-resolver.js";
|
|
5
|
+
|
|
6
|
+
function resolve(raw: unknown): Record<string, unknown> | undefined {
|
|
7
|
+
return resolvePluginEntry(raw, {
|
|
8
|
+
candidateIds: ["openclaw-remnic", "openclaw-engram"],
|
|
9
|
+
preferredId: "openclaw-remnic",
|
|
10
|
+
getEntries(candidate) {
|
|
11
|
+
const plugins = candidate["plugins"];
|
|
12
|
+
if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const entries = (plugins as Record<string, unknown>)["entries"];
|
|
16
|
+
return entries && typeof entries === "object" && !Array.isArray(entries)
|
|
17
|
+
? (entries as Record<string, unknown>)
|
|
18
|
+
: undefined;
|
|
19
|
+
},
|
|
20
|
+
getSlotId(candidate) {
|
|
21
|
+
const plugins = candidate["plugins"];
|
|
22
|
+
if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const slots = (plugins as Record<string, unknown>)["slots"];
|
|
26
|
+
if (!slots || typeof slots !== "object" || Array.isArray(slots)) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const slotId = (slots as Record<string, unknown>)["memory"];
|
|
30
|
+
return typeof slotId === "string" ? slotId : undefined;
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
test("resolvePluginEntry returns undefined for a foreign string memory slot", () => {
|
|
36
|
+
const entry = resolve({
|
|
37
|
+
plugins: {
|
|
38
|
+
slots: { memory: "other-memory-plugin" },
|
|
39
|
+
entries: {
|
|
40
|
+
"openclaw-remnic": { config: { memoryDir: "/tmp/remnic" } },
|
|
41
|
+
"openclaw-engram": { config: { memoryDir: "/tmp/engram" } },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
assert.equal(entry, undefined);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
test("resolvePluginEntry falls back to preferred id when memory slot is absent", () => {
|
|
50
|
+
const entry = resolve({
|
|
51
|
+
plugins: {
|
|
52
|
+
entries: {
|
|
53
|
+
"openclaw-remnic": { config: { memoryDir: "/tmp/remnic" } },
|
|
54
|
+
"openclaw-engram": { config: { memoryDir: "/tmp/engram" } },
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
assert.deepEqual(entry, { config: { memoryDir: "/tmp/remnic" } });
|
|
60
|
+
});
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface PluginEntryResolverOptions {
|
|
2
|
+
candidateIds: readonly string[];
|
|
3
|
+
preferredId?: string;
|
|
4
|
+
getEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined;
|
|
5
|
+
getSlotId?: (raw: Record<string, unknown>) => string | undefined;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
function uniqueDefined(values: Array<string | undefined>): string[] {
|
|
9
|
+
const seen = new Set<string>();
|
|
10
|
+
const out: string[] = [];
|
|
11
|
+
for (const value of values) {
|
|
12
|
+
if (value === undefined || seen.has(value)) continue;
|
|
13
|
+
seen.add(value);
|
|
14
|
+
out.push(value);
|
|
15
|
+
}
|
|
16
|
+
return out;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function resolvePluginEntry(
|
|
20
|
+
raw: unknown,
|
|
21
|
+
options: PluginEntryResolverOptions,
|
|
22
|
+
): Record<string, unknown> | undefined {
|
|
23
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return undefined;
|
|
24
|
+
const root = raw as Record<string, unknown>;
|
|
25
|
+
const entries = options.getEntries(root);
|
|
26
|
+
if (!entries) return undefined;
|
|
27
|
+
|
|
28
|
+
const allowedIds = new Set(options.candidateIds);
|
|
29
|
+
const slotId = options.getSlotId?.(root);
|
|
30
|
+
if (typeof slotId === "string" && !allowedIds.has(slotId)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const activeId = typeof slotId === "string" ? slotId : undefined;
|
|
34
|
+
const ownId =
|
|
35
|
+
!activeId &&
|
|
36
|
+
typeof options.preferredId === "string" &&
|
|
37
|
+
allowedIds.has(options.preferredId)
|
|
38
|
+
? options.preferredId
|
|
39
|
+
: undefined;
|
|
40
|
+
|
|
41
|
+
for (const id of uniqueDefined([activeId, ownId, ...options.candidateIds])) {
|
|
42
|
+
const entry = entries[id];
|
|
43
|
+
if (entry && typeof entry === "object" && !Array.isArray(entry)) {
|
|
44
|
+
return entry as Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { readFile } from "node:fs/promises";
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
LEGACY_PLUGIN_ID,
|
|
7
|
+
PLUGIN_ID,
|
|
8
|
+
resolveRemnicPluginEntry,
|
|
9
|
+
} from "./plugin-id.js";
|
|
10
|
+
|
|
11
|
+
test("plugin-id compatibility subpath exposes canonical ids and resolver", () => {
|
|
12
|
+
assert.equal(PLUGIN_ID, "openclaw-remnic");
|
|
13
|
+
assert.equal(LEGACY_PLUGIN_ID, "openclaw-engram");
|
|
14
|
+
|
|
15
|
+
const entry = resolveRemnicPluginEntry(
|
|
16
|
+
{
|
|
17
|
+
plugins: {
|
|
18
|
+
entries: {
|
|
19
|
+
"openclaw-remnic": { config: { memoryDir: "/tmp/remnic" } },
|
|
20
|
+
"openclaw-engram": { config: { memoryDir: "/tmp/engram" } },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
LEGACY_PLUGIN_ID,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
assert.deepEqual(entry, { config: { memoryDir: "/tmp/engram" } });
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("package exports preserve plugin-id compatibility subpaths", async () => {
|
|
31
|
+
const packageJsonUrl = new URL("../package.json", import.meta.url);
|
|
32
|
+
const pkg = JSON.parse(await readFile(packageJsonUrl, "utf8")) as {
|
|
33
|
+
exports?: Record<string, unknown>;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
assert.ok(pkg.exports?.["./plugin-id"]);
|
|
37
|
+
assert.ok(pkg.exports?.["./plugin-id.js"]);
|
|
38
|
+
});
|
package/src/plugin-id.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { resolvePluginEntry } from "./plugin-entry-resolver.js";
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* Canonical plugin id for @remnic/plugin-openclaw.
|
|
3
5
|
*
|
|
@@ -8,77 +10,42 @@
|
|
|
8
10
|
export const PLUGIN_ID = "openclaw-remnic" as const;
|
|
9
11
|
export const LEGACY_PLUGIN_ID = "openclaw-engram" as const;
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
const REMNIC_PLUGIN_IDS: ReadonlySet<string> = new Set([PLUGIN_ID, LEGACY_PLUGIN_ID]);
|
|
13
|
+
const REMNIC_PLUGIN_IDS = [PLUGIN_ID, LEGACY_PLUGIN_ID] as const;
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* Resolve the Remnic plugin entry from an OpenClaw-shaped config object.
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* Remnic plugin id; foreign slots are ignored so mixed-plugin installs
|
|
20
|
-
* do not accidentally apply another plugin's config to Remnic.
|
|
21
|
-
* 2. `preferredId` — the caller's own plugin id (e.g. `"openclaw-engram"` for
|
|
22
|
-
* the shim package); only consulted when no active slot overrides the choice.
|
|
23
|
-
* 3. `plugins.entries["openclaw-remnic"]`
|
|
24
|
-
* 4. `plugins.entries["openclaw-engram"]` (legacy backward-compat)
|
|
25
|
-
*
|
|
26
|
-
* Returns `undefined` when no Remnic entry is found.
|
|
27
|
-
*
|
|
28
|
-
* All five config-loader sites (loadPluginEntryFromFile, readPluginHooksPolicy,
|
|
29
|
-
* loadPluginConfig in access-cli.ts, loadCliPluginConfig in operator-toolkit.ts,
|
|
30
|
-
* and unwrapOpenClawEntry in materialize.cjs) delegate here so fallback order
|
|
31
|
-
* and guard logic are defined in exactly one place.
|
|
32
|
-
*
|
|
33
|
-
* @param raw - The raw OpenClaw config object.
|
|
34
|
-
* @param preferredId - The calling plugin's own id. When present and no
|
|
35
|
-
* `plugins.slots.memory` slot is set, this id is tried before the hardcoded
|
|
36
|
-
* `PLUGIN_ID`/`LEGACY_PLUGIN_ID` fallbacks. Ignored if it is not a known
|
|
37
|
-
* Remnic plugin id (safety guard against unexpected values).
|
|
18
|
+
* Kept as a compatibility subpath for consumers of @remnic/core/plugin-id while
|
|
19
|
+
* the shared resolver lives in plugin-entry-resolver.ts.
|
|
38
20
|
*/
|
|
39
21
|
export function resolveRemnicPluginEntry(
|
|
40
22
|
raw: unknown,
|
|
41
23
|
preferredId?: string,
|
|
42
24
|
): Record<string, unknown> | undefined {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
REMNIC_PLUGIN_IDS.has(preferredId)
|
|
70
|
-
? preferredId
|
|
71
|
-
: undefined;
|
|
72
|
-
|
|
73
|
-
const candidateIds = [activeId, ownId, PLUGIN_ID, LEGACY_PLUGIN_ID].filter(
|
|
74
|
-
(id): id is string => typeof id === "string",
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
for (const id of candidateIds) {
|
|
78
|
-
const entry = entries[id];
|
|
79
|
-
if (entry !== undefined) {
|
|
80
|
-
return entry as Record<string, unknown>;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return undefined;
|
|
25
|
+
return resolvePluginEntry(raw, {
|
|
26
|
+
candidateIds: REMNIC_PLUGIN_IDS,
|
|
27
|
+
preferredId,
|
|
28
|
+
getEntries(candidate) {
|
|
29
|
+
const plugins = candidate["plugins"];
|
|
30
|
+
if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const entries = (plugins as Record<string, unknown>)["entries"];
|
|
34
|
+
return entries && typeof entries === "object" && !Array.isArray(entries)
|
|
35
|
+
? (entries as Record<string, unknown>)
|
|
36
|
+
: undefined;
|
|
37
|
+
},
|
|
38
|
+
getSlotId(candidate) {
|
|
39
|
+
const plugins = candidate["plugins"];
|
|
40
|
+
if (!plugins || typeof plugins !== "object" || Array.isArray(plugins)) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const slots = (plugins as Record<string, unknown>)["slots"];
|
|
44
|
+
if (!slots || typeof slots !== "object" || Array.isArray(slots)) {
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
const slotId = (slots as Record<string, unknown>)["memory"];
|
|
48
|
+
return typeof slotId === "string" ? slotId : undefined;
|
|
49
|
+
},
|
|
50
|
+
});
|
|
84
51
|
}
|