@remnic/core 1.1.31 → 9.3.516
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 +158 -121
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +9 -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-CZfksQuS.d.ts} +11 -130
- 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-NJ3MJQZX.js → chunk-2I5JGH3M.js} +2 -2
- package/dist/{chunk-NJ3MJQZX.js.map → chunk-2I5JGH3M.js.map} +1 -1
- 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-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-XKLD5OK4.js → chunk-4RR6ROTB.js} +10 -11
- package/dist/chunk-4RR6ROTB.js.map +1 -0
- package/dist/{chunk-YROHKYBY.js → chunk-5UHVGNZD.js} +22 -6
- package/dist/chunk-5UHVGNZD.js.map +1 -0
- package/dist/{chunk-ZAVUCJ4H.js → chunk-5V456VRV.js} +154 -69
- package/dist/chunk-5V456VRV.js.map +1 -0
- package/dist/{chunk-77H5NU3M.js → chunk-6BR7L222.js} +82 -18
- package/dist/chunk-6BR7L222.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-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-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-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-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-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-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-TPU5L5EY.js → chunk-FCOQXV3T.js} +272 -411
- package/dist/chunk-FCOQXV3T.js.map +1 -0
- package/dist/{chunk-TMQLARTH.js → chunk-FK556DDH.js} +34 -15
- package/dist/chunk-FK556DDH.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-3VAL7ZL2.js → chunk-FUC4LZMD.js} +60 -25
- package/dist/chunk-FUC4LZMD.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-YU5KIWYQ.js → chunk-HC6EKOID.js} +94 -43
- package/dist/chunk-HC6EKOID.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-PIRJPV5T.js → chunk-JNANKJLN.js} +2 -2
- package/dist/chunk-JNANKJLN.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-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-575RMLWN.js → chunk-KXULCVOC.js} +30 -24
- package/dist/chunk-KXULCVOC.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-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-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-3TNBOMQT.js → chunk-PCI747N2.js} +13 -13
- package/dist/{chunk-3TNBOMQT.js.map → chunk-PCI747N2.js.map} +1 -1
- 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-XVVIG67A.js → chunk-QVJ4NWL2.js} +62 -18
- package/dist/chunk-QVJ4NWL2.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-ZK7I7JYV.js → chunk-R3PS27B4.js} +7 -7
- 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-I5GLV3VE.js → chunk-SML26KED.js} +33 -26
- package/dist/{chunk-I5GLV3VE.js.map → chunk-SML26KED.js.map} +1 -1
- 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-3ZLVGM76.js → chunk-TTGZV5R3.js} +106 -44
- package/dist/chunk-TTGZV5R3.js.map +1 -0
- 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-QLLBRHAT.js → chunk-YDMVYYD2.js} +229 -264
- package/dist/chunk-YDMVYYD2.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-W6AQJ2PY.js → chunk-YNXOKMJP.js} +35 -16
- package/dist/chunk-YNXOKMJP.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-U7EJOMFC.js → chunk-ZEY4KYRQ.js} +41 -14
- package/dist/chunk-ZEY4KYRQ.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-CPe_2KB1.d.ts} +8 -31
- package/dist/cli.d.ts +10 -6
- package/dist/cli.js +124 -119
- 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 +885 -562
- 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 +26 -24
- package/dist/namespaces/principal.d.ts +1 -0
- package/dist/namespaces/principal.js +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +17 -15
- 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.d.ts +4 -0
- package/dist/offline-sync.js +4 -4
- package/dist/operator-toolkit.d.ts +4 -1
- package/dist/operator-toolkit.js +37 -34
- 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 +101 -98
- 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 +2 -1
- 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 +15 -14
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +21 -20
- package/dist/search/lancedb-backend.d.ts +8 -7
- package/dist/search/lancedb-backend.js +4 -2
- package/dist/search/meilisearch-backend.d.ts +8 -7
- package/dist/search/meilisearch-backend.js +4 -2
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/noop-backend.js +1 -1
- package/dist/search/orama-backend.d.ts +10 -8
- package/dist/search/orama-backend.js +8 -4
- package/dist/search/port.d.ts +2 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/search/remote-backend.js +1 -1
- 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 +103 -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-namespace.test.ts +9 -9
- package/src/access-service-project-tag.test.ts +37 -0
- package/src/access-service.ts +15 -14
- 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 +96 -7
- package/src/namespaces/search.ts +32 -25
- 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/offline-sync.test.ts +128 -18
- package/src/offline-sync.ts +41 -7
- package/src/onboarding/index.test.ts +105 -0
- package/src/onboarding/index.ts +17 -5
- package/src/operator-toolkit.ts +43 -5
- package/src/orchestrator.ts +120 -27
- 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 +13 -10
- 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 +66 -23
- package/src/search/meilisearch-backend.ts +39 -13
- package/src/search/noop-backend.ts +1 -1
- package/src/search/orama-backend.test.ts +27 -0
- package/src/search/orama-backend.ts +69 -16
- package/src/search/port.ts +4 -1
- package/src/search/remote-backend.ts +1 -1
- 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-PIRJPV5T.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-U7EJOMFC.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-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,
|
|
@@ -676,6 +680,56 @@ async function raceRecallAbort<T>(
|
|
|
676
680
|
|
|
677
681
|
/** Maximum age (ms) before a compaction-reset signal file is considered stale and removed. */
|
|
678
682
|
const COMPACTION_SIGNAL_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
|
|
683
|
+
const DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS = 10_000;
|
|
684
|
+
|
|
685
|
+
type SearchCollectionState = "present" | "missing" | "unknown" | "skipped";
|
|
686
|
+
|
|
687
|
+
function qmdStartupCollectionCheckTimeoutMs(): number {
|
|
688
|
+
const raw =
|
|
689
|
+
process.env.REMNIC_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS ??
|
|
690
|
+
process.env.ENGRAM_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
|
|
691
|
+
if (raw === undefined) return DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
|
|
692
|
+
const parsed = Number(raw);
|
|
693
|
+
return Number.isFinite(parsed) && parsed >= 1_000
|
|
694
|
+
? Math.floor(parsed)
|
|
695
|
+
: DEFAULT_QMD_STARTUP_COLLECTION_CHECK_TIMEOUT_MS;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
async function qmdStartupCollectionCheckWithTimeout(
|
|
699
|
+
promise: Promise<SearchCollectionState>,
|
|
700
|
+
controller: AbortController,
|
|
701
|
+
label: string,
|
|
702
|
+
): Promise<SearchCollectionState> {
|
|
703
|
+
const timeoutMs = qmdStartupCollectionCheckTimeoutMs();
|
|
704
|
+
let timer: NodeJS.Timeout | undefined;
|
|
705
|
+
let settled = false;
|
|
706
|
+
|
|
707
|
+
const timeoutPromise = new Promise<SearchCollectionState>((resolve) => {
|
|
708
|
+
timer = setTimeout(() => {
|
|
709
|
+
if (settled) return;
|
|
710
|
+
controller.abort();
|
|
711
|
+
log.warn(
|
|
712
|
+
`QMD startup collection check for ${label} timed out after ${timeoutMs}ms; keeping search enabled fail-open`,
|
|
713
|
+
);
|
|
714
|
+
resolve("unknown");
|
|
715
|
+
}, timeoutMs);
|
|
716
|
+
timer.unref?.();
|
|
717
|
+
});
|
|
718
|
+
|
|
719
|
+
const checkedPromise = promise
|
|
720
|
+
.catch((err): SearchCollectionState => {
|
|
721
|
+
log.warn(
|
|
722
|
+
`QMD startup collection check for ${label} failed; keeping search enabled fail-open: ${err}`,
|
|
723
|
+
);
|
|
724
|
+
return "unknown";
|
|
725
|
+
})
|
|
726
|
+
.finally(() => {
|
|
727
|
+
settled = true;
|
|
728
|
+
if (timer) clearTimeout(timer);
|
|
729
|
+
});
|
|
730
|
+
|
|
731
|
+
return await Promise.race([checkedPromise, timeoutPromise]);
|
|
732
|
+
}
|
|
679
733
|
|
|
680
734
|
/** Default workspace directory when no per-agent or config workspace is available. */
|
|
681
735
|
export function defaultWorkspaceDir(): string {
|
|
@@ -2014,9 +2068,10 @@ export class Orchestrator {
|
|
|
2014
2068
|
: this.localLlm;
|
|
2015
2069
|
// Initialize gateway fast LLM for fast-tier ops when modelSource is "gateway"
|
|
2016
2070
|
this._fastGatewayLlm = config.modelSource === "gateway"
|
|
2017
|
-
? new FallbackLlmClient(
|
|
2018
|
-
|
|
2019
|
-
|
|
2071
|
+
? new FallbackLlmClient(
|
|
2072
|
+
config.gatewayConfig,
|
|
2073
|
+
fallbackLlmRuntimeContextFromConfig(config),
|
|
2074
|
+
)
|
|
2020
2075
|
: null;
|
|
2021
2076
|
if (config.modelSource === "gateway") {
|
|
2022
2077
|
log.debug(
|
|
@@ -2448,14 +2503,22 @@ export class Orchestrator {
|
|
|
2448
2503
|
? this.configuredNamespaces()
|
|
2449
2504
|
: [this.config.defaultNamespace];
|
|
2450
2505
|
const states = await Promise.all(
|
|
2451
|
-
namespaces.map(async (namespace) =>
|
|
2452
|
-
|
|
2453
|
-
state
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2506
|
+
namespaces.map(async (namespace) => {
|
|
2507
|
+
const collectionCheckAbort = new AbortController();
|
|
2508
|
+
const state = await qmdStartupCollectionCheckWithTimeout(
|
|
2509
|
+
this.config.namespacesEnabled
|
|
2510
|
+
? this.namespaceSearchRouter.ensureNamespaceCollection(
|
|
2511
|
+
namespace,
|
|
2512
|
+
{ signal: collectionCheckAbort.signal },
|
|
2513
|
+
)
|
|
2514
|
+
: this.qmd.ensureCollection(this.config.memoryDir, {
|
|
2515
|
+
signal: collectionCheckAbort.signal,
|
|
2516
|
+
}),
|
|
2517
|
+
collectionCheckAbort,
|
|
2518
|
+
namespace,
|
|
2519
|
+
);
|
|
2520
|
+
return { namespace, state };
|
|
2521
|
+
}),
|
|
2459
2522
|
);
|
|
2460
2523
|
const defaultState =
|
|
2461
2524
|
states.find(
|
|
@@ -2795,8 +2858,8 @@ export class Orchestrator {
|
|
|
2795
2858
|
namespaces.map(async (namespace) => ({
|
|
2796
2859
|
namespace,
|
|
2797
2860
|
state: this.config.namespacesEnabled
|
|
2798
|
-
? await this.namespaceSearchRouter.ensureNamespaceCollection(namespace)
|
|
2799
|
-
: await this.qmd.ensureCollection(this.config.memoryDir),
|
|
2861
|
+
? await this.namespaceSearchRouter.ensureNamespaceCollection(namespace, { signal })
|
|
2862
|
+
: await this.qmd.ensureCollection(this.config.memoryDir, { signal }),
|
|
2800
2863
|
})),
|
|
2801
2864
|
);
|
|
2802
2865
|
|
|
@@ -3337,9 +3400,10 @@ export class Orchestrator {
|
|
|
3337
3400
|
? this.config.fastGatewayAgentId
|
|
3338
3401
|
: this.config.gatewayAgentId || undefined)
|
|
3339
3402
|
: undefined;
|
|
3340
|
-
const llm = new FallbackLlmClient(
|
|
3341
|
-
|
|
3342
|
-
|
|
3403
|
+
const llm = new FallbackLlmClient(
|
|
3404
|
+
this.config.gatewayConfig,
|
|
3405
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
3406
|
+
);
|
|
3343
3407
|
if (!llm.isAvailable(gatewayAgentId) && !(modelSetting === "fast" && this.fastLlm && !useGateway)) {
|
|
3344
3408
|
log.warn(
|
|
3345
3409
|
"[semantic-consolidation] no LLM available — skipping synthesis",
|
|
@@ -3584,9 +3648,10 @@ export class Orchestrator {
|
|
|
3584
3648
|
if (this.config.peerProfileReasonerEnabled) {
|
|
3585
3649
|
try {
|
|
3586
3650
|
const { runPeerProfileReasoner } = await import("./peers/index.js");
|
|
3587
|
-
const llm = new FallbackLlmClient(
|
|
3588
|
-
|
|
3589
|
-
|
|
3651
|
+
const llm = new FallbackLlmClient(
|
|
3652
|
+
this.config.gatewayConfig,
|
|
3653
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
3654
|
+
);
|
|
3590
3655
|
const peerResult = await runPeerProfileReasoner({
|
|
3591
3656
|
memoryDir: targetStorage.dir,
|
|
3592
3657
|
enabled: true,
|
|
@@ -4627,6 +4692,12 @@ export class Orchestrator {
|
|
|
4627
4692
|
}
|
|
4628
4693
|
const chunks = await this.buildConversationIndexChunks(sessionKey, hours);
|
|
4629
4694
|
await writeConversationChunks(this.conversationIndexDir, chunks);
|
|
4695
|
+
const retentionCutoffMs =
|
|
4696
|
+
Number.isFinite(this.config.conversationIndexRetentionDays) &&
|
|
4697
|
+
this.config.conversationIndexRetentionDays > 0
|
|
4698
|
+
? Date.now() -
|
|
4699
|
+
this.config.conversationIndexRetentionDays * 24 * 60 * 60 * 1000
|
|
4700
|
+
: undefined;
|
|
4630
4701
|
await cleanupConversationChunks(
|
|
4631
4702
|
this.conversationIndexDir,
|
|
4632
4703
|
this.config.conversationIndexRetentionDays,
|
|
@@ -4638,6 +4709,7 @@ export class Orchestrator {
|
|
|
4638
4709
|
if (this.conversationIndexBackend) {
|
|
4639
4710
|
const result = await this.conversationIndexBackend.update(chunks, {
|
|
4640
4711
|
embed: shouldEmbed,
|
|
4712
|
+
...(retentionCutoffMs !== undefined ? { retentionCutoffMs } : {}),
|
|
4641
4713
|
});
|
|
4642
4714
|
embedded = result.embedded;
|
|
4643
4715
|
}
|
|
@@ -4814,7 +4886,7 @@ export class Orchestrator {
|
|
|
4814
4886
|
if (this.config.secureStoreEnabled && !this.storage.isSecureStoreUnlocked()) {
|
|
4815
4887
|
const lockedMsg =
|
|
4816
4888
|
"[secure-store locked] Memory store is encrypted and locked. " +
|
|
4817
|
-
"
|
|
4889
|
+
"Unlock the secure-store inside this daemon process, or restart the daemon through a secure-store aware launcher that installs the key.";
|
|
4818
4890
|
log.warn("recall blocked: secure-store is locked");
|
|
4819
4891
|
return lockedMsg;
|
|
4820
4892
|
}
|
|
@@ -6900,6 +6972,7 @@ export class Orchestrator {
|
|
|
6900
6972
|
const section = await buildEntityRecallSection({
|
|
6901
6973
|
config: this.config,
|
|
6902
6974
|
storage: profileStorage,
|
|
6975
|
+
namespaceStorage: (namespace) => this.getStorage(namespace),
|
|
6903
6976
|
query: retrievalQuery,
|
|
6904
6977
|
recallNamespaces,
|
|
6905
6978
|
recentTurns,
|
|
@@ -7851,6 +7924,7 @@ export class Orchestrator {
|
|
|
7851
7924
|
temporalResults,
|
|
7852
7925
|
this.config.parallelAgentWeights,
|
|
7853
7926
|
qmdFetchLimit + lifecycleHeadroom,
|
|
7927
|
+
this.config.memoryDir,
|
|
7854
7928
|
);
|
|
7855
7929
|
}
|
|
7856
7930
|
} catch (err) {
|
|
@@ -10362,9 +10436,18 @@ export class Orchestrator {
|
|
|
10362
10436
|
|
|
10363
10437
|
async ingestReplayBatch(
|
|
10364
10438
|
turns: ReplayTurn[],
|
|
10365
|
-
options: {
|
|
10439
|
+
options: {
|
|
10440
|
+
deadlineMs?: number;
|
|
10441
|
+
archiveLcm?: boolean;
|
|
10442
|
+
abortSignal?: AbortSignal;
|
|
10443
|
+
} = {},
|
|
10366
10444
|
): Promise<void> {
|
|
10367
10445
|
if (!Array.isArray(turns) || turns.length === 0) return;
|
|
10446
|
+
if (options.abortSignal?.aborted) {
|
|
10447
|
+
throw options.abortSignal.reason instanceof Error
|
|
10448
|
+
? options.abortSignal.reason
|
|
10449
|
+
: new Error("ingestReplayBatch aborted");
|
|
10450
|
+
}
|
|
10368
10451
|
if (shouldSkipImplicitExtraction(this.config)) {
|
|
10369
10452
|
log.debug(
|
|
10370
10453
|
"ingestReplayBatch: skipping implicit extraction because captureMode=explicit",
|
|
@@ -10398,6 +10481,11 @@ export class Orchestrator {
|
|
|
10398
10481
|
}> = [];
|
|
10399
10482
|
for (const [key, sessionTurns] of bySession.entries()) {
|
|
10400
10483
|
if (sessionTurns.length === 0) continue;
|
|
10484
|
+
if (options.abortSignal?.aborted) {
|
|
10485
|
+
throw options.abortSignal.reason instanceof Error
|
|
10486
|
+
? options.abortSignal.reason
|
|
10487
|
+
: new Error("ingestReplayBatch aborted");
|
|
10488
|
+
}
|
|
10401
10489
|
if (options.archiveLcm !== false && this.lcmEngine?.enabled) {
|
|
10402
10490
|
await this.lcmEngine.observeMessages(
|
|
10403
10491
|
key,
|
|
@@ -10437,6 +10525,7 @@ export class Orchestrator {
|
|
|
10437
10525
|
skipUserTurnThreshold: true,
|
|
10438
10526
|
bufferKey,
|
|
10439
10527
|
extractionDeadlineMs: options.deadlineMs,
|
|
10528
|
+
abortSignal: options.abortSignal,
|
|
10440
10529
|
onTaskSettled: (err) => (err ? reject(err) : resolve()),
|
|
10441
10530
|
}).catch(reject);
|
|
10442
10531
|
}),
|
|
@@ -10540,6 +10629,7 @@ export class Orchestrator {
|
|
|
10540
10629
|
parts: turn.parts,
|
|
10541
10630
|
rawContent: turn.rawContent,
|
|
10542
10631
|
sourceFormat: turn.sourceFormat,
|
|
10632
|
+
importProvenance: turn.importProvenance,
|
|
10543
10633
|
});
|
|
10544
10634
|
}
|
|
10545
10635
|
if (sessionTurns.length === 0) return;
|
|
@@ -12163,9 +12253,10 @@ export class Orchestrator {
|
|
|
12163
12253
|
judgeCandidates,
|
|
12164
12254
|
this.config,
|
|
12165
12255
|
this.localLlm,
|
|
12166
|
-
new FallbackLlmClient(
|
|
12167
|
-
|
|
12168
|
-
|
|
12256
|
+
new FallbackLlmClient(
|
|
12257
|
+
this.config.gatewayConfig,
|
|
12258
|
+
fallbackLlmRuntimeContextFromConfig(this.config),
|
|
12259
|
+
),
|
|
12169
12260
|
this.judgeVerdictCache,
|
|
12170
12261
|
this.judgeDeferCounts,
|
|
12171
12262
|
judgeTelemetryHandler,
|
|
@@ -16327,7 +16418,8 @@ export class Orchestrator {
|
|
|
16327
16418
|
private namespaceFromPath(p: string): string {
|
|
16328
16419
|
if (!this.config.namespacesEnabled) return this.config.defaultNamespace;
|
|
16329
16420
|
const m = p.match(/[\\/]+namespaces[\\/]+([^\\/]+)(?:[\\/]|$)/);
|
|
16330
|
-
|
|
16421
|
+
if (!m?.[1]) return this.config.defaultNamespace;
|
|
16422
|
+
return namespaceIdentityFromToken(m[1]) ?? m[1];
|
|
16331
16423
|
}
|
|
16332
16424
|
|
|
16333
16425
|
private namespaceFromStorageDir(storageDir: string): string {
|
|
@@ -16337,7 +16429,8 @@ export class Orchestrator {
|
|
|
16337
16429
|
if (resolvedStorageDir === resolvedMemoryDir)
|
|
16338
16430
|
return this.config.defaultNamespace;
|
|
16339
16431
|
const m = resolvedStorageDir.match(/[\\/]namespaces[\\/]([^\\/]+)$/);
|
|
16340
|
-
|
|
16432
|
+
if (!m?.[1]) return this.config.defaultNamespace;
|
|
16433
|
+
return namespaceIdentityFromToken(m[1]) ?? m[1];
|
|
16341
16434
|
}
|
|
16342
16435
|
|
|
16343
16436
|
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
|
+
});
|