@remnic/core 9.7.14 → 9.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.d.ts +13 -6
- package/dist/access-admin-ops-surface.js +88 -74
- package/dist/access-audit.js +2 -2
- package/dist/access-boundary.d.ts +35 -17
- package/dist/access-boundary.js +89 -77
- package/dist/access-citation.d.ts +28 -0
- package/dist/access-citation.js +9 -0
- package/dist/access-cli.js +197 -181
- package/dist/access-cli.js.map +1 -1
- package/dist/access-errors.d.ts +16 -1
- package/dist/access-errors.js +7 -3
- package/dist/access-http.d.ts +25 -19
- package/dist/access-http.js +103 -90
- package/dist/access-identity-continuity-surface.d.ts +13 -8
- package/dist/access-identity-continuity-surface.js +88 -74
- package/dist/access-lcm-surface.d.ts +16 -9
- package/dist/access-lcm-surface.js +88 -74
- package/dist/access-mcp.d.ts +23 -16
- package/dist/access-mcp.js +99 -87
- package/dist/access-memory-search-fanout.d.ts +93 -0
- package/dist/access-memory-search-fanout.js +18 -0
- package/dist/access-observe-write-surface.d.ts +26 -8
- package/dist/access-observe-write-surface.js +88 -74
- package/dist/access-operations-batch.js +95 -83
- package/dist/access-operations.d.ts +26 -19
- package/dist/access-operations.js +97 -85
- package/dist/access-recall-concurrency.d.ts +250 -0
- package/dist/access-recall-concurrency.js +157 -0
- package/dist/access-recall-response.d.ts +130 -0
- package/dist/access-recall-response.js +147 -0
- package/dist/access-recall-surface.d.ts +15 -7
- package/dist/access-recall-surface.js +88 -74
- package/dist/access-schema.d.ts +34 -34
- package/dist/access-schema.js +8 -6
- package/dist/{access-service-CPhSnLOH.d.ts → access-service-DEL4qCrc.d.ts} +25 -32
- package/dist/access-service.d.ts +13 -6
- package/dist/access-service.js +92 -75
- package/dist/access-surface-catalog.d.ts +23 -16
- package/dist/access-surface-catalog.js +1 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-token-capabilities.d.ts +2 -1
- package/dist/access-token-capabilities.js +4 -2
- package/dist/action-confidence.d.ts +3 -1
- package/dist/active-memory-bridge.d.ts +3 -1
- package/dist/active-memory-bridge.js +4 -4
- package/dist/active-recall.d.ts +4 -1
- package/dist/active-recall.js +23 -13
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/{auto-sync-AAMTVZMK.js → auto-sync-UZG3XQZ5.js} +14 -8
- package/dist/{auto-sync-AAMTVZMK.js.map → auto-sync-UZG3XQZ5.js.map} +1 -1
- package/dist/behavior-learner.d.ts +3 -1
- package/dist/behavior-signals.d.ts +3 -1
- package/dist/bootstrap.d.ts +12 -7
- package/dist/bootstrap.js +2 -2
- package/dist/bounded-jsonl-state.d.ts +54 -0
- package/dist/bounded-jsonl-state.js +10 -0
- package/dist/boxes.js +2 -2
- package/dist/briefing.d.ts +5 -2
- package/dist/briefing.js +37 -27
- package/dist/buffer-surprise-report.d.ts +3 -1
- package/dist/buffer.d.ts +60 -2
- package/dist/buffer.js +3 -3
- package/dist/bulk-import/index.d.ts +5 -3
- package/dist/calibration.d.ts +3 -1
- package/dist/calibration.js +6 -6
- package/dist/capabilities.d.ts +7 -7
- package/dist/capabilities.js +1 -1
- package/dist/{capsule-crypto-CZJSLEFG.js → capsule-crypto-YO5QJ6L3.js} +3 -3
- package/dist/capsule-crypto-YO5QJ6L3.js.map +1 -0
- package/dist/{capsule-merge-Z2HUO6IK.js → capsule-merge-5KKJQBWQ.js} +4 -4
- package/dist/{catalog-uX9sT9ws.d.ts → catalog-BWqHb5HT.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +3 -1
- package/dist/causal-behavior.js +6 -6
- package/dist/causal-chain.js +4 -4
- package/dist/causal-consolidation.d.ts +3 -1
- package/dist/causal-consolidation.js +46 -37
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +6 -6
- package/dist/causal-trajectory-graph.d.ts +3 -1
- package/dist/causal-trajectory-graph.js +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-A3GOMRJG.js → chunk-23L3IXFD.js} +2 -2
- package/dist/chunk-2CGLBUW3.js +15 -0
- package/dist/chunk-2CGLBUW3.js.map +1 -0
- package/dist/{chunk-MRHFJV44.js → chunk-2DQ2XREU.js} +2 -2
- package/dist/{chunk-ASKEM4AR.js → chunk-2EJOEICD.js} +1823 -1483
- package/dist/chunk-2EJOEICD.js.map +1 -0
- package/dist/{chunk-L2B3EE7B.js → chunk-2QMKMVHH.js} +2 -2
- package/dist/{chunk-6CALL5VN.js → chunk-2UFO7X4Q.js} +7 -7
- package/dist/{chunk-2MR3MFQB.js → chunk-2VEOKUPP.js} +3 -3
- package/dist/chunk-2Z24E5W2.js +22 -0
- package/dist/chunk-2Z24E5W2.js.map +1 -0
- package/dist/{chunk-RHOZ5LLO.js → chunk-347WD2LE.js} +2 -2
- package/dist/{chunk-5S7Z5SHA.js → chunk-34RC5RT7.js} +2 -2
- package/dist/{chunk-KGWXHWAH.js → chunk-3QAH2S33.js} +3 -3
- package/dist/{chunk-37CTGERM.js → chunk-3WCASNQZ.js} +12 -1
- package/dist/chunk-3WCASNQZ.js.map +1 -0
- package/dist/{chunk-ZIDSD6VC.js → chunk-3Y224NYC.js} +3 -3
- package/dist/{chunk-RBQLJSJ7.js → chunk-44XZ75OQ.js} +46 -10
- package/dist/chunk-44XZ75OQ.js.map +1 -0
- package/dist/{chunk-VFSP73LP.js → chunk-45GF7Y3V.js} +2 -2
- package/dist/{chunk-7ICYQUOL.js → chunk-4BJQODZF.js} +2514 -1526
- package/dist/chunk-4BJQODZF.js.map +1 -0
- package/dist/{chunk-JMBVCAR4.js → chunk-57OWKFUQ.js} +17 -6
- package/dist/chunk-57OWKFUQ.js.map +1 -0
- package/dist/{chunk-OEHCMALU.js → chunk-5I4M26Q7.js} +5 -5
- package/dist/{chunk-2E6G7FCE.js → chunk-5Q7EVV4X.js} +7 -7
- package/dist/{chunk-LC7OODWZ.js → chunk-5SB7SC2G.js} +80 -49
- package/dist/chunk-5SB7SC2G.js.map +1 -0
- package/dist/{chunk-VZ5OJE4X.js → chunk-5VQJBH2G.js} +2 -2
- package/dist/{chunk-PUBTHW5O.js → chunk-6DRPPQEJ.js} +2 -2
- package/dist/{chunk-NWTGD4AN.js → chunk-6KIQT7RG.js} +10 -9
- package/dist/chunk-6KIQT7RG.js.map +1 -0
- package/dist/{chunk-4LEF6XWJ.js → chunk-6O22TZSB.js} +3 -3
- package/dist/{chunk-ZQ7UBUZ6.js → chunk-6QYST5XN.js} +6 -6
- package/dist/{chunk-W4PGTAS2.js → chunk-6WAFYNVT.js} +3 -3
- package/dist/chunk-6ZMAMSHS.js +20 -0
- package/dist/chunk-6ZMAMSHS.js.map +1 -0
- package/dist/{chunk-R5VAVVHP.js → chunk-72A4L5JJ.js} +2 -2
- package/dist/{chunk-X64YLC24.js → chunk-72VAXGEI.js} +5 -13
- package/dist/chunk-72VAXGEI.js.map +1 -0
- package/dist/{chunk-IKQTFQMI.js → chunk-755Q3DGF.js} +22 -3
- package/dist/chunk-755Q3DGF.js.map +1 -0
- package/dist/{chunk-F7AU34FC.js → chunk-76GLCM57.js} +160 -127
- package/dist/chunk-76GLCM57.js.map +1 -0
- package/dist/{chunk-D7FOKIY5.js → chunk-7AMFUATK.js} +12 -9
- package/dist/{chunk-D7FOKIY5.js.map → chunk-7AMFUATK.js.map} +1 -1
- package/dist/{chunk-BFVEEB7W.js → chunk-7ON2JW73.js} +57 -22
- package/dist/chunk-7ON2JW73.js.map +1 -0
- package/dist/chunk-7RNBVZZO.js +270 -0
- package/dist/chunk-7RNBVZZO.js.map +1 -0
- package/dist/{chunk-3FAMU5TX.js → chunk-A6USBZTO.js} +2 -2
- package/dist/{chunk-TXVD7PLT.js → chunk-A72SWTWW.js} +7 -7
- package/dist/{chunk-FC77VUX5.js → chunk-A7Q43EUZ.js} +2 -2
- package/dist/{chunk-UJBESW6X.js → chunk-AE7WMV4V.js} +7 -7
- package/dist/{chunk-J2HSAU72.js → chunk-AIK5W3IW.js} +29 -1
- package/dist/chunk-AIK5W3IW.js.map +1 -0
- package/dist/{chunk-OKUEZOGW.js → chunk-AITCS2RC.js} +2 -2
- package/dist/{chunk-OC35KQIN.js → chunk-AJ7QCSIS.js} +4 -4
- package/dist/{chunk-FNMFJWBY.js → chunk-ANEUPF6O.js} +5 -5
- package/dist/chunk-AREGMX2J.js +50 -0
- package/dist/chunk-AREGMX2J.js.map +1 -0
- package/dist/chunk-AVPXXV6J.js +448 -0
- package/dist/chunk-AVPXXV6J.js.map +1 -0
- package/dist/{chunk-2A3OXAP2.js → chunk-B7RWBZXW.js} +2 -2
- package/dist/{chunk-GWTFLF2P.js → chunk-BJMBJZ2Y.js} +59 -59
- package/dist/chunk-BJMBJZ2Y.js.map +1 -0
- package/dist/{chunk-N3JDIRBW.js → chunk-BLAKS3CP.js} +4 -4
- package/dist/{chunk-M7VGG3ID.js → chunk-BV5WMSIJ.js} +9 -9
- package/dist/{chunk-2BFLDH5F.js → chunk-BXLOS5AJ.js} +2 -2
- package/dist/{chunk-UXKMMNJD.js → chunk-C23BYTJV.js} +6 -6
- package/dist/{chunk-JZHHREBL.js → chunk-C3AKM55W.js} +2 -2
- package/dist/{chunk-RP7YXA67.js → chunk-C5JF6EZ7.js} +2 -2
- package/dist/{chunk-FBNWOMCE.js → chunk-C6XBRYVD.js} +16 -15
- package/dist/chunk-C6XBRYVD.js.map +1 -0
- package/dist/{chunk-FTYDWKO6.js → chunk-CEN6DW6X.js} +12 -2
- package/dist/chunk-CEN6DW6X.js.map +1 -0
- package/dist/chunk-CGASUJVP.js +421 -0
- package/dist/chunk-CGASUJVP.js.map +1 -0
- package/dist/{chunk-DDGV7NAX.js → chunk-CQMEM5CC.js} +2 -2
- package/dist/{chunk-A7B4RMQG.js → chunk-CXZQOVIE.js} +12 -12
- package/dist/chunk-D3V3UMET.js +44 -0
- package/dist/chunk-D3V3UMET.js.map +1 -0
- package/dist/{chunk-7N2RUBAP.js → chunk-DDA47TES.js} +2 -2
- package/dist/{chunk-64SE4X5G.js → chunk-DEBHXHJR.js} +3 -3
- package/dist/{chunk-EHK6KZHK.js → chunk-DNHVPZOD.js} +2 -2
- package/dist/{chunk-437S3G37.js → chunk-DQEMWVMT.js} +2 -2
- package/dist/{chunk-LZZNTPLR.js → chunk-DX3XRGLH.js} +2 -2
- package/dist/chunk-EA2H5LML.js +72 -0
- package/dist/chunk-EA2H5LML.js.map +1 -0
- package/dist/{chunk-IFJ23BHU.js → chunk-EEC7UJPX.js} +112 -106
- package/dist/chunk-EEC7UJPX.js.map +1 -0
- package/dist/{chunk-KSNVDPDF.js → chunk-EKBNDKDY.js} +21 -20
- package/dist/chunk-EKBNDKDY.js.map +1 -0
- package/dist/{chunk-YF6FMLBT.js → chunk-EQWEIIKQ.js} +64 -34
- package/dist/chunk-EQWEIIKQ.js.map +1 -0
- package/dist/{chunk-7MW3CVLD.js → chunk-ES36HTSC.js} +4 -4
- package/dist/{chunk-TN7THW5U.js → chunk-ET356KSB.js} +2 -2
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-7LFXDGLH.js → chunk-F7GAIWFA.js} +20 -20
- package/dist/{chunk-IKSELOIV.js → chunk-FFPJINJE.js} +7 -7
- package/dist/chunk-FMLKOL2Z.js +636 -0
- package/dist/chunk-FMLKOL2Z.js.map +1 -0
- package/dist/chunk-FQC3DHH2.js +20 -0
- package/dist/chunk-FQC3DHH2.js.map +1 -0
- package/dist/{chunk-V53GJUSL.js → chunk-FUTF72MJ.js} +15 -15
- package/dist/chunk-GCASGYIO.js +71 -0
- package/dist/chunk-GCASGYIO.js.map +1 -0
- package/dist/{chunk-5UNWK7KU.js → chunk-GFPZS3F5.js} +8 -8
- package/dist/{chunk-BCDKBDSY.js → chunk-GNVZQ5JN.js} +99 -41
- package/dist/chunk-GNVZQ5JN.js.map +1 -0
- package/dist/{chunk-G6NKALRN.js → chunk-H4WG3UQZ.js} +2 -2
- package/dist/{chunk-HLTAPHZZ.js → chunk-HNZKVLAN.js} +2 -2
- package/dist/{chunk-5EZXHU36.js → chunk-HYQJQGD3.js} +2 -2
- package/dist/{chunk-ANADNYWK.js → chunk-IDZFBSHN.js} +8 -6
- package/dist/{chunk-ANADNYWK.js.map → chunk-IDZFBSHN.js.map} +1 -1
- package/dist/{chunk-XVLEGMJI.js → chunk-IFH6LWTO.js} +50 -8
- package/dist/chunk-IFH6LWTO.js.map +1 -0
- package/dist/{chunk-RULE4VG5.js → chunk-ILGC6JH6.js} +21 -6
- package/dist/chunk-ILGC6JH6.js.map +1 -0
- package/dist/chunk-IUM3VSHI.js +113 -0
- package/dist/chunk-IUM3VSHI.js.map +1 -0
- package/dist/{chunk-ND5M64JJ.js → chunk-IYNGIMVG.js} +101 -91
- package/dist/chunk-IYNGIMVG.js.map +1 -0
- package/dist/{chunk-TRWPCR6P.js → chunk-JECBQBEX.js} +3 -3
- package/dist/{chunk-HG32URJJ.js → chunk-JYIFGGEM.js} +2 -2
- package/dist/{chunk-VA4WSW54.js → chunk-JYIJNNN3.js} +3 -3
- package/dist/{chunk-L5HJQC36.js → chunk-K2TDK7GG.js} +3 -3
- package/dist/{chunk-MKDRQAA3.js → chunk-KAVBJSBQ.js} +4 -4
- package/dist/{chunk-EEARRVZ2.js → chunk-KF5EUVKQ.js} +16 -6
- package/dist/chunk-KF5EUVKQ.js.map +1 -0
- package/dist/chunk-KFZY2OFH.js +42 -0
- package/dist/chunk-KFZY2OFH.js.map +1 -0
- package/dist/{chunk-4OKLXWDZ.js → chunk-KNB7IBBU.js} +2 -2
- package/dist/{chunk-QLULYKWZ.js → chunk-KSXJOC4F.js} +2 -2
- package/dist/{chunk-OBMR4VIX.js → chunk-L2DPF4DF.js} +186 -15
- package/dist/chunk-L2DPF4DF.js.map +1 -0
- package/dist/{chunk-JI5AVXYO.js → chunk-LEPOP46W.js} +6 -6
- package/dist/{chunk-O7BBFJLP.js → chunk-LTAVSOZW.js} +2 -2
- package/dist/{chunk-E3VODCC3.js → chunk-LUDXM7MD.js} +14 -2
- package/dist/{chunk-E3VODCC3.js.map → chunk-LUDXM7MD.js.map} +1 -1
- package/dist/{chunk-2IZAGAJR.js → chunk-LULR4IUW.js} +3 -3
- package/dist/{chunk-NUWYOKS6.js → chunk-MC5Q3J7S.js} +398 -7
- package/dist/chunk-MC5Q3J7S.js.map +1 -0
- package/dist/{chunk-WMWVO45V.js → chunk-MC6XO7T4.js} +2 -2
- package/dist/chunk-MKQBXQKU.js +107 -0
- package/dist/chunk-MKQBXQKU.js.map +1 -0
- package/dist/{chunk-7PND4PUC.js → chunk-MMGGVZ4Q.js} +29 -9
- package/dist/{chunk-7PND4PUC.js.map → chunk-MMGGVZ4Q.js.map} +1 -1
- package/dist/{chunk-D6RIFG4O.js → chunk-MNB5RMAY.js} +2 -2
- package/dist/{chunk-67ZCJLJY.js → chunk-MYFQ3ED4.js} +8 -8
- package/dist/{chunk-V3UE5I5F.js → chunk-MYVPLJOO.js} +2 -2
- package/dist/chunk-NINSR6LX.js +83 -0
- package/dist/chunk-NINSR6LX.js.map +1 -0
- package/dist/{chunk-MTWKDOVO.js → chunk-NLE6TSLG.js} +2 -2
- package/dist/{chunk-DBRYEIGY.js → chunk-OJP3N7UK.js} +2 -2
- package/dist/{chunk-AD6AMF2N.js → chunk-OQJIB32H.js} +28 -23
- package/dist/chunk-OQJIB32H.js.map +1 -0
- package/dist/{chunk-SMX5267P.js → chunk-OZKOPQCM.js} +2 -2
- package/dist/{chunk-JCK7V6SN.js → chunk-P65YJEEL.js} +2 -2
- package/dist/{chunk-MTR7BZQN.js → chunk-PBGWYM3H.js} +3 -3
- package/dist/chunk-PIG4WJFQ.js +87 -0
- package/dist/chunk-PIG4WJFQ.js.map +1 -0
- package/dist/chunk-PQVCH2AE.js +76 -0
- package/dist/chunk-PQVCH2AE.js.map +1 -0
- package/dist/{chunk-AXTXN4T6.js → chunk-PWFCHOB3.js} +2 -2
- package/dist/{chunk-FDPZVY6D.js → chunk-QFN4U7AG.js} +2 -2
- package/dist/{chunk-K2ZLHESQ.js → chunk-QIEUU4UK.js} +2 -2
- package/dist/{chunk-AHLPZ2SF.js → chunk-QJAQNXWI.js} +44 -6
- package/dist/chunk-QJAQNXWI.js.map +1 -0
- package/dist/{chunk-3D6AFGQR.js → chunk-QVT3E4CE.js} +7 -7
- package/dist/{chunk-VYOFVVNK.js → chunk-R26ZMXR2.js} +24 -24
- package/dist/{chunk-VYOFVVNK.js.map → chunk-R26ZMXR2.js.map} +1 -1
- package/dist/chunk-R3DJVOSM.js +34 -0
- package/dist/chunk-R3DJVOSM.js.map +1 -0
- package/dist/{chunk-SFQ6QNL7.js → chunk-R6YJI3HE.js} +2 -1
- package/dist/{chunk-5CJVLG3H.js → chunk-RFDD3B7W.js} +5 -5
- package/dist/{chunk-JBPKEARU.js → chunk-RKNJBZ55.js} +4 -4
- package/dist/chunk-ROI7BK7H.js +88 -0
- package/dist/chunk-ROI7BK7H.js.map +1 -0
- package/dist/{chunk-UTRJFDP2.js → chunk-S2BBISHU.js} +4 -4
- package/dist/{chunk-IALLX7EE.js → chunk-S2FSBU4H.js} +3 -3
- package/dist/{chunk-BFPETA3S.js → chunk-SCCO46KZ.js} +3 -2
- package/dist/chunk-SCCO46KZ.js.map +1 -0
- package/dist/chunk-SICXL4MK.js +165 -0
- package/dist/chunk-SICXL4MK.js.map +1 -0
- package/dist/chunk-SK7AMF2J.js +168 -0
- package/dist/chunk-SK7AMF2J.js.map +1 -0
- package/dist/{chunk-GMSDQUCR.js → chunk-TDTXKOAJ.js} +6475 -5748
- package/dist/chunk-TDTXKOAJ.js.map +1 -0
- package/dist/{chunk-KSBEEMQF.js → chunk-TG6IHVE2.js} +151 -6
- package/dist/chunk-TG6IHVE2.js.map +1 -0
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-PK5XBDA6.js → chunk-U3ZAVRP3.js} +2 -2
- package/dist/{chunk-ODPLEWB6.js → chunk-UFGFMWAD.js} +47 -17
- package/dist/chunk-UFGFMWAD.js.map +1 -0
- package/dist/{chunk-4KJLYTLS.js → chunk-V57NLO5P.js} +2 -2
- package/dist/{chunk-FLVL4L3L.js → chunk-VDX2J7OX.js} +2 -2
- package/dist/{chunk-7XGSIUP5.js → chunk-W4FBGYGK.js} +1 -1
- package/dist/{chunk-TXLGHDHS.js → chunk-W4XJFLAL.js} +53 -32
- package/dist/chunk-W4XJFLAL.js.map +1 -0
- package/dist/{chunk-6SXVCD7W.js → chunk-W7IGLX4G.js} +2 -2
- package/dist/{chunk-KQDNAXOM.js → chunk-WG5HSQ4P.js} +19 -6
- package/dist/chunk-WG5HSQ4P.js.map +1 -0
- package/dist/{chunk-LTJAMRGI.js → chunk-WL5EBRDH.js} +17 -3
- package/dist/chunk-WL5EBRDH.js.map +1 -0
- package/dist/{chunk-KAWTOYAW.js → chunk-WLZYGLJ4.js} +2 -2
- package/dist/{chunk-W5NKDU24.js → chunk-WON4APQY.js} +4 -4
- package/dist/{chunk-NKCPUHCI.js → chunk-WZFAPHIK.js} +6 -6
- package/dist/{chunk-KQPJLK3X.js → chunk-XL24QQ63.js} +2 -2
- package/dist/{chunk-X47LWMKA.js → chunk-XMMESCPD.js} +26 -1
- package/dist/chunk-XMMESCPD.js.map +1 -0
- package/dist/{chunk-4B4MUS5D.js → chunk-YROFNEG5.js} +7 -7
- package/dist/{chunk-WU46YPY6.js → chunk-YV32N67O.js} +1 -1
- package/dist/chunk-YV32N67O.js.map +1 -0
- package/dist/{chunk-B3F4CWQR.js → chunk-YVKF3HEW.js} +1 -1
- package/dist/chunk-YVKF3HEW.js.map +1 -0
- package/dist/{chunk-VRAD2FGO.js → chunk-Z54EM5YZ.js} +12 -12
- package/dist/{chunk-2VN4JAX7.js → chunk-ZOKZIR5K.js} +95 -33
- package/dist/chunk-ZOKZIR5K.js.map +1 -0
- package/dist/{cli-_Y2Bmt6A.d.ts → cli-C_pqqTCw.d.ts} +28 -12
- package/dist/cli.d.ts +16 -9
- package/dist/cli.js +145 -130
- package/dist/compounding/engine.d.ts +5 -2
- package/dist/compounding/engine.js +39 -29
- package/dist/compounding/preference-consolidator.d.ts +3 -1
- package/dist/compounding/preference-consolidator.js +1 -1
- package/dist/compression-optimizer.d.ts +3 -1
- package/dist/config-qmd.d.ts +8 -0
- package/dist/config-qmd.js +20 -0
- package/dist/config-qmd.js.map +1 -0
- package/dist/config.d.ts +3 -1
- package/dist/config.js +15 -10
- package/dist/connectors/codex-materialize-runner.d.ts +3 -1
- package/dist/connectors/codex-materialize-runner.js +39 -29
- package/dist/connectors/codex-materialize.d.ts +3 -1
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.js +44 -35
- package/dist/consolidation-provenance-check.d.ts +5 -2
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.d.ts +5 -2
- package/dist/consolidation-undo.js +3 -3
- package/dist/contradiction/index.d.ts +5 -2
- package/dist/contradiction/index.js +10 -4
- package/dist/{contradiction-scan-J57T5QV7.js → contradiction-scan-RJBABNRH.js} +4 -4
- package/dist/contradiction-scan-RJBABNRH.js.map +1 -0
- package/dist/conversation-index/backend.d.ts +3 -1
- package/dist/conversation-index/backend.js +5 -5
- package/dist/conversation-index/chunker.d.ts +3 -1
- package/dist/conversation-index/cleanup.js +2 -2
- package/dist/conversation-index/faiss-adapter.d.ts +3 -1
- package/dist/conversation-index/faiss-adapter.js +2 -2
- package/dist/conversation-index/indexer.d.ts +3 -1
- package/dist/conversation-index/indexer.js +2 -2
- package/dist/conversation-index/search.d.ts +3 -1
- package/dist/conversation-index/search.js +2 -2
- package/dist/cross-namespace-budget.d.ts +45 -1
- package/dist/cross-namespace-budget.js +5 -3
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +3 -1
- package/dist/day-summary.js +3 -3
- package/dist/delinearize.d.ts +3 -1
- package/dist/direct-answer-wiring.d.ts +3 -1
- package/dist/direct-answer.d.ts +3 -1
- package/dist/{dreams-ledger-6UODQOX6.js → dreams-ledger-567VKVOU.js} +4 -2
- package/dist/dreams-ledger-567VKVOU.js.map +1 -0
- package/dist/embedding-fallback.d.ts +3 -1
- package/dist/embedding-fallback.js +3 -3
- package/dist/enrichment/index.d.ts +3 -1
- package/dist/entity-retrieval.d.ts +5 -2
- package/dist/entity-retrieval.js +38 -29
- package/dist/entity-schema.d.ts +3 -1
- package/dist/explicit-capture.d.ts +13 -8
- package/dist/explicit-capture.js +7 -3
- package/dist/extraction-faithfulness.d.ts +3 -1
- package/dist/extraction-faithfulness.js +5 -5
- package/dist/extraction-judge-telemetry.d.ts +3 -1
- package/dist/extraction-judge-telemetry.js +2 -2
- package/dist/extraction-judge-training.d.ts +3 -1
- package/dist/extraction-judge-training.js +2 -2
- package/dist/extraction-judge.d.ts +3 -1
- package/dist/extraction-judge.js +5 -5
- package/dist/extraction.d.ts +3 -1
- package/dist/extraction.js +13 -12
- package/dist/faithfulness-config.js +3 -2
- package/dist/fallback-llm.d.ts +3 -1
- package/dist/fallback-llm.js +4 -4
- package/dist/{first-start-migration-TI67YMLG.js → first-start-migration-CSRHCJIQ.js} +2 -2
- package/dist/{forget-CQCLB5LB.js → forget-HRPLVB3W.js} +5 -5
- package/dist/graph-dashboard-diff.d.ts +3 -1
- package/dist/graph-dashboard-key.d.ts +3 -1
- package/dist/graph-dashboard-parser.d.ts +3 -1
- package/dist/{graph-edge-decay-FO7AM4UR.js → graph-edge-decay-Z6ENALU2.js} +3 -3
- package/dist/graph-edge-decay-Z6ENALU2.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +3 -1
- package/dist/graph-snapshot.d.ts +3 -1
- package/dist/graph-snapshot.js +2 -2
- package/dist/graph.d.ts +57 -10
- package/dist/graph.js +1 -1
- package/dist/identity-continuity.d.ts +1 -2
- package/dist/importance.d.ts +3 -1
- package/dist/importers/index.d.ts +3 -1
- package/dist/in-flight-reads.d.ts +3 -1
- package/dist/index.d.ts +101 -92
- package/dist/index.js +290 -242
- package/dist/intent.d.ts +3 -1
- package/dist/lcm/archive.js +2 -2
- package/dist/lcm/engine.d.ts +3 -1
- package/dist/lcm/engine.js +6 -6
- package/dist/lcm/index.d.ts +3 -1
- package/dist/lcm/index.js +13 -13
- package/dist/lcm/schema.js +2 -2
- package/dist/lcm/summarizer.js +3 -3
- package/dist/lcm/tools.d.ts +3 -1
- package/dist/lifecycle.d.ts +3 -1
- package/dist/live-connectors-runner.d.ts +3 -1
- package/dist/local-llm.d.ts +5 -2
- package/dist/local-llm.js +3 -3
- package/dist/local-model-endpoint.d.ts +3 -1
- package/dist/logger.d.ts +3 -1
- package/dist/logger.js +7 -3
- package/dist/maintenance/archive-observations.js +2 -2
- package/dist/maintenance/memory-governance.d.ts +3 -1
- package/dist/maintenance/memory-governance.js +38 -28
- package/dist/maintenance/migrate-observations.js +3 -3
- package/dist/maintenance/observation-ledger-utils.js +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +102 -1
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +40 -28
- package/dist/maintenance/rebuild-memory-projection.js +41 -31
- package/dist/maintenance/rebuild-observations.js +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +22 -15
- package/dist/memory-action-policy.d.ts +3 -1
- package/dist/memory-cache.d.ts +46 -2
- package/dist/memory-cache.js +7 -1
- package/dist/memory-corpus-version.js +2 -2
- package/dist/memory-lifecycle-ledger-utils.d.ts +25 -2
- package/dist/memory-lifecycle-ledger-utils.js +11 -1
- package/dist/memory-projection-store.d.ts +3 -1
- package/dist/memory-projection-store.js +2 -2
- package/dist/memory-provenance.d.ts +3 -1
- package/dist/memory-worth-outcomes.d.ts +5 -2
- package/dist/model-registry.js +2 -2
- package/dist/models-json.d.ts +3 -1
- package/dist/models-json.js +2 -2
- package/dist/namespaces/migrate.d.ts +6 -3
- package/dist/namespaces/migrate.js +54 -45
- package/dist/namespaces/principal.d.ts +27 -2
- package/dist/namespaces/principal.js +6 -2
- package/dist/namespaces/search.d.ts +16 -2
- package/dist/namespaces/search.js +25 -21
- package/dist/namespaces/storage.d.ts +24 -3
- package/dist/namespaces/storage.js +38 -30
- package/dist/native-knowledge.d.ts +3 -1
- package/dist/native-knowledge.js +2 -2
- package/dist/negative.js +2 -2
- package/dist/offline-sync-exclude-globs.d.ts +13 -0
- package/dist/offline-sync-exclude-globs.js +10 -0
- package/dist/offline-sync-exclude-globs.js.map +1 -0
- package/dist/offline-sync-impression-drain.d.ts +78 -0
- package/dist/offline-sync-impression-drain.js +37 -0
- package/dist/offline-sync-impression-drain.js.map +1 -0
- package/dist/offline-sync.js +4 -2
- package/dist/operator-toolkit.d.ts +5 -2
- package/dist/operator-toolkit.js +73 -58
- package/dist/orchestration/compression-guideline-coordinator.d.ts +5 -2
- package/dist/orchestration/compression-guideline-coordinator.js +3 -3
- package/dist/orchestration/maintenance.d.ts +121 -2
- package/dist/orchestration/maintenance.js +47 -34
- package/dist/{orchestrator-BbZ_dQSU.d.ts → orchestrator-CQJ8U7En.d.ts} +85 -79
- package/dist/orchestrator.d.ts +13 -8
- package/dist/orchestrator.js +197 -180
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +3 -1
- package/dist/{pipeline-FRMDb1fn.d.ts → pipeline-Cn-kvYeV.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +3 -1
- package/dist/prioritized-embed.d.ts +19 -0
- package/dist/prioritized-embed.js +8 -0
- package/dist/prioritized-embed.js.map +1 -0
- package/dist/proactive-contention.d.ts +28 -0
- package/dist/proactive-contention.js +8 -0
- package/dist/proactive-contention.js.map +1 -0
- package/dist/profiling.js +2 -2
- package/dist/provenance.d.ts +3 -1
- package/dist/provenance.js +3 -2
- package/dist/{purge-NDWV6WYD.js → purge-IRF47ZTX.js} +3 -3
- package/dist/{qmd-xJRrHFbA.d.ts → qmd-oh9VXz1d.d.ts} +11 -1
- package/dist/qmd-preflight.d.ts +5 -2
- package/dist/qmd-recall-cache.d.ts +3 -1
- package/dist/qmd-status.d.ts +57 -0
- package/dist/qmd-status.js +18 -0
- package/dist/qmd-status.js.map +1 -0
- package/dist/qmd.d.ts +5 -2
- package/dist/qmd.js +8 -4
- package/dist/recall-concurrency-config.d.ts +16 -0
- package/dist/recall-concurrency-config.js +10 -0
- package/dist/recall-concurrency-config.js.map +1 -0
- package/dist/recall-disclosure-escalation.d.ts +3 -1
- package/dist/recall-explain-renderer.d.ts +4 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +26 -0
- package/dist/recall-memory-map.js +18 -0
- package/dist/recall-memory-map.js.map +1 -0
- package/dist/recall-planner-llm.d.ts +3 -1
- package/dist/recall-planner-llm.js +4 -4
- package/dist/recall-qos.js +2 -2
- package/dist/recall-state.d.ts +163 -2
- package/dist/recall-state.js +6 -3
- package/dist/recall-tag-filter.d.ts +3 -1
- package/dist/recall-timings.d.ts +11 -2
- package/dist/recall-timings.js +3 -1
- package/dist/recall-xray-cli.d.ts +3 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +3 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +3 -1
- package/dist/recall-xray.js +2 -2
- package/dist/relevance.js +3 -3
- package/dist/replay/normalizers/chatgpt.d.ts +3 -1
- package/dist/replay/normalizers/claude.d.ts +3 -1
- package/dist/replay/normalizers/openclaw.d.ts +3 -1
- package/dist/replay/normalizers/shared.d.ts +3 -1
- package/dist/replay/runner.d.ts +3 -1
- package/dist/replay/types.d.ts +3 -1
- package/dist/rerank.d.ts +8 -1
- package/dist/rerank.js +3 -1
- package/dist/resolution-3K27T4VO.js +18 -0
- package/dist/resolution-3K27T4VO.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +3 -1
- package/dist/resolve-provider-secret.js +2 -2
- package/dist/resume-bundles.js +19 -14
- package/dist/retrieval-agents.d.ts +19 -16
- package/dist/retrieval-agents.js +3 -3
- package/dist/retrieval-tiers.d.ts +3 -1
- package/dist/routing/engine.d.ts +3 -1
- package/dist/routing/store.d.ts +3 -1
- package/dist/routing/store.js +2 -2
- package/dist/salvage-envelope.d.ts +18 -0
- package/dist/salvage-envelope.js +15 -0
- package/dist/salvage-envelope.js.map +1 -0
- package/dist/schemas.d.ts +24 -24
- package/dist/scope-profiles-EpJG7yKP.d.ts +30 -0
- package/dist/search/document-scanner.js +3 -2
- package/dist/search/embed-helper.d.ts +3 -1
- package/dist/search/embed-helper.js +3 -3
- package/dist/search/factory.d.ts +3 -1
- package/dist/search/factory.js +19 -17
- package/dist/search/index.d.ts +3 -1
- package/dist/search/index.js +23 -21
- package/dist/search/lancedb-backend.d.ts +3 -1
- package/dist/search/lancedb-backend.js +6 -5
- package/dist/search/meilisearch-backend.d.ts +3 -1
- package/dist/search/meilisearch-backend.js +6 -5
- package/dist/search/noop-backend.d.ts +3 -1
- package/dist/search/orama-backend.d.ts +3 -1
- package/dist/search/orama-backend.js +6 -5
- package/dist/search/port.d.ts +27 -2
- package/dist/search/port.js +1 -1
- package/dist/search/remote-backend.d.ts +3 -1
- package/dist/search/remote-backend.js +3 -3
- package/dist/secure-store/index.d.ts +12 -1
- package/dist/secure-store/index.js +6 -3
- package/dist/{semantic-consolidation-fvdZRa5Z.d.ts → semantic-consolidation-DILZEQq3.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +4 -2
- package/dist/semantic-consolidation.js +41 -32
- package/dist/semantic-rule-promotion.js +37 -27
- package/dist/semantic-rule-verifier.d.ts +3 -1
- package/dist/semantic-rule-verifier.js +38 -28
- package/dist/session-observer-bands.d.ts +3 -1
- package/dist/session-observer-state.d.ts +3 -1
- package/dist/session-observer-state.js +2 -2
- package/dist/session-transcript-migration.js +2 -2
- package/dist/shared-context/manager.d.ts +3 -1
- package/dist/shared-context/manager.js +3 -3
- package/dist/signal.d.ts +3 -1
- package/dist/{storage-CrvzaM9C.d.ts → storage-NIyKYD8g.d.ts} +505 -110
- package/dist/storage-guards.js +2 -2
- package/dist/storage.d.ts +6 -3
- package/dist/storage.js +41 -29
- package/dist/structured-attributes.d.ts +23 -1
- package/dist/structured-attributes.js +7 -1
- package/dist/summarizer.d.ts +3 -1
- package/dist/summarizer.js +11 -11
- package/dist/summary-snapshot.d.ts +3 -1
- package/dist/summary-snapshot.js +2 -2
- package/dist/temporal-index-batch.d.ts +1 -0
- package/dist/temporal-index-batch.js +10 -0
- package/dist/temporal-index-batch.js.map +1 -0
- package/dist/temporal-index-compat.d.ts +279 -1
- package/dist/temporal-index-compat.js +1 -1
- package/dist/temporal-index.d.ts +1 -225
- package/dist/temporal-index.js +35 -3
- package/dist/temporal-supersession.d.ts +5 -2
- package/dist/temporal-supersession.js +2 -2
- package/dist/temporal-timeline-recall.d.ts +3 -1
- package/dist/temporal-validity.d.ts +3 -1
- package/dist/threading.d.ts +3 -1
- package/dist/threading.js +2 -2
- package/dist/tier-migration.d.ts +5 -2
- package/dist/tier-routing.d.ts +3 -1
- package/dist/{tier-stats-KV7IWCJR.js → tier-stats-QEJSPFV2.js} +2 -2
- package/dist/tokens.js +3 -3
- package/dist/topics.d.ts +3 -1
- package/dist/transcript.d.ts +3 -1
- package/dist/transcript.js +2 -2
- package/dist/transfer/backup.js +3 -3
- package/dist/transfer/capsule-export.js +3 -3
- package/dist/transfer/capsule-import.js +6 -6
- package/dist/transfer/types.d.ts +24 -24
- package/dist/trust-score-stage.d.ts +75 -38
- package/dist/trust-score-stage.js +11 -3
- package/dist/trust-score.d.ts +3 -1
- package/dist/{types-Bl4BWDM8.d.ts → types-D_fG2ix8.d.ts} +49 -63
- package/dist/types-continuity.d.ts +52 -0
- package/dist/types-continuity.js +1 -0
- package/dist/types-continuity.js.map +1 -0
- package/dist/types.d.ts +3 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +3 -1
- package/dist/utils/serialize-mutations.d.ts +31 -2
- package/dist/utils/serialize-mutations.js +1 -1
- package/dist/verified-recall.js +39 -29
- package/dist/write-envelope.d.ts +282 -0
- package/dist/write-envelope.js +35 -0
- package/dist/write-envelope.js.map +1 -0
- package/dist/write-quarantine.d.ts +79 -0
- package/dist/write-quarantine.js +11 -0
- package/dist/write-quarantine.js.map +1 -0
- package/dist/write-rate-limiter.d.ts +45 -0
- package/dist/write-rate-limiter.js +9 -0
- package/dist/write-rate-limiter.js.map +1 -0
- package/package.json +37 -2
- package/src/access-admin-ops-surface.ts +17 -7
- package/src/access-boundary.test.ts +28 -0
- package/src/access-boundary.ts +31 -2
- package/src/access-citation.test.ts +72 -0
- package/src/access-citation.ts +139 -0
- package/src/access-errors.ts +21 -0
- package/src/access-fingerprint-parity.test.ts +211 -0
- package/src/access-http-cancellation.test.ts +59 -21
- package/src/access-http.test.ts +90 -0
- package/src/access-http.ts +79 -79
- package/src/access-mcp-cancellation.test.ts +16 -7
- package/src/access-memory-search-fanout.test.ts +220 -0
- package/src/access-memory-search-fanout.ts +168 -0
- package/src/access-observe-quarantine.test.ts +120 -0
- package/src/access-observe-write-surface.ts +130 -11
- package/src/access-operations-batch.ts +2 -0
- package/src/access-recall-concurrency.ts +773 -0
- package/src/access-recall-response.ts +307 -0
- package/src/access-recall-surface.ts +100 -252
- package/src/access-service-coding-write.test.ts +22 -4
- package/src/access-service-health.test.ts +49 -0
- package/src/access-service-namespace.test.ts +486 -8
- package/src/access-service-observe-scope.test.ts +4 -0
- package/src/access-service-recall-concurrency.test.ts +1990 -0
- package/src/access-service.ts +182 -175
- package/src/access-surface-catalog.ts +1 -0
- package/src/access-token-capabilities.ts +16 -9
- package/src/active-recall.test.ts +35 -0
- package/src/active-recall.ts +7 -0
- package/src/bounded-jsonl-state.ts +93 -0
- package/src/buffer-session.test.ts +422 -5
- package/src/buffer-surprise-trigger.test.ts +41 -0
- package/src/buffer.ts +218 -3
- package/src/capabilities-cluster-b.test.ts +1 -0
- package/src/capabilities.ts +5 -6
- package/src/cli.ts +21 -22
- package/src/coding/architecture-surfaces.test.ts +6 -3
- package/src/coding/architecture-surfaces.ts +36 -25
- package/src/coding/decision-surfaces.ts +42 -34
- package/src/compounding/engine.test.ts +5 -1
- package/src/compounding/engine.ts +7 -7
- package/src/config-qmd.ts +89 -0
- package/src/config.test.ts +136 -0
- package/src/config.ts +122 -118
- package/src/connector-provenance-lifecycle.test.ts +4 -4
- package/src/connectors/coerce.test.ts +131 -0
- package/src/connectors/coerce.ts +80 -7
- package/src/contradiction/contradiction.test.ts +10 -6
- package/src/contradiction/resolution.ts +17 -4
- package/src/correction/correction-access-wiring.ts +62 -18
- package/src/cross-namespace-budget.test.ts +35 -0
- package/src/cross-namespace-budget.ts +86 -19
- package/src/explicit-capture.ts +54 -17
- package/src/extraction.ts +2 -3
- package/src/faithfulness-graph-guard.test.ts +16 -69
- package/src/graph-recall.test.ts +31 -0
- package/src/graph.test.ts +137 -1
- package/src/graph.ts +274 -17
- package/src/index.ts +22 -2
- package/src/local-llm.ts +4 -6
- package/src/logger.ts +16 -0
- package/src/maintenance/dreams-ledger.ts +100 -49
- package/src/maintenance/rebuild-memory-lifecycle-ledger-cli.ts +77 -0
- package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +373 -9
- package/src/memory-cache.ts +70 -0
- package/src/memory-lifecycle-ledger-utils.ts +51 -5
- package/src/namespaces/principal.test.ts +37 -1
- package/src/namespaces/principal.ts +48 -0
- package/src/namespaces/search.test.ts +79 -5
- package/src/namespaces/search.ts +59 -6
- package/src/namespaces/storage.ts +45 -1
- package/src/offline-sync-exclude-globs.ts +58 -0
- package/src/offline-sync-impression-drain.test.ts +316 -0
- package/src/offline-sync-impression-drain.ts +260 -0
- package/src/offline-sync.test.ts +32 -5
- package/src/offline-sync.ts +1 -14
- package/src/operator-toolkit.ts +1 -1
- package/src/orchestration/batch-deindex-flush.test.ts +146 -0
- package/src/orchestration/consolidation-run.ts +96 -85
- package/src/orchestration/extraction-envelope.ts +94 -0
- package/src/orchestration/extraction-persist-promotion.ts +134 -0
- package/src/orchestration/extraction-persist.ts +325 -260
- package/src/orchestration/extraction-run.test.ts +1 -1
- package/src/orchestration/extraction-run.ts +2 -2
- package/src/orchestration/graph-recall-coordinator.ts +18 -7
- package/src/orchestration/lifecycle-policy-coordinator.ts +63 -48
- package/src/orchestration/maintenance.test.ts +2103 -3
- package/src/orchestration/maintenance.ts +581 -2
- package/src/orchestration/namespace-read-fanout.ts +14 -8
- package/src/orchestration/orchestrator-helpers.ts +8 -1
- package/src/orchestration/orchestrator-init.ts +22 -6
- package/src/orchestration/orchestrator-namespace-scope.ts +71 -0
- package/src/orchestration/persistence-index.ts +64 -9
- package/src/orchestration/qmd-result-resolver.ts +27 -0
- package/src/orchestration/recall-entry.ts +34 -19
- package/src/orchestration/recall-internal.ts +207 -79
- package/src/orchestration/recall-rerank-coordinator.ts +229 -82
- package/src/orchestration/recall-result-formatter.ts +76 -20
- package/src/orchestration/recall-search-pipeline.test.ts +70 -0
- package/src/orchestration/recall-search-pipeline.ts +102 -129
- package/src/orchestration/recall-section-coordinator.ts +315 -85
- package/src/orchestration/semantic-consolidation-coordinator.ts +69 -37
- package/src/orchestration/session-context.ts +21 -0
- package/src/orchestration/workspace-ops.test.ts +348 -0
- package/src/orchestration/workspace-ops.ts +172 -34
- package/src/orchestrator-chunked-hash-durability.test.ts +126 -0
- package/src/orchestrator-connector-dedup.test.ts +1061 -40
- package/src/orchestrator-flush.test.ts +155 -39
- package/src/orchestrator-nonchunked-hash-durability.test.ts +121 -0
- package/src/orchestrator-source-attribution.test.ts +9 -9
- package/src/orchestrator.ts +166 -150
- package/src/prioritized-embed.ts +123 -0
- package/src/proactive-contention.test.ts +80 -0
- package/src/proactive-contention.ts +39 -0
- package/src/procedural/procedure-miner.test.ts +19 -14
- package/src/procedural/procedure-miner.ts +44 -13
- package/src/qmd-client.test.ts +111 -1
- package/src/qmd-status.ts +186 -0
- package/src/qmd.test.ts +22 -0
- package/src/qmd.ts +60 -48
- package/src/recall-budget-config.test.ts +30 -0
- package/src/recall-cold-deadline.test.ts +149 -0
- package/src/recall-concurrency-config.ts +28 -0
- package/src/recall-memory-map.ts +74 -0
- package/src/recall-rerank-coordinator.test.ts +508 -0
- package/src/recall-state.test.ts +825 -1
- package/src/recall-state.ts +406 -7
- package/src/recall-timings-access.test.ts +41 -0
- package/src/recall-timings.ts +16 -0
- package/src/relay/mission-access.test.ts +5 -5
- package/src/rerank.ts +22 -0
- package/src/retrieval-agents.test.ts +79 -0
- package/src/retrieval-agents.ts +71 -19
- package/src/salvage-envelope.ts +28 -0
- package/src/scopes/scope-plan.test.ts +42 -0
- package/src/scopes/scope-plan.ts +45 -0
- package/src/search/port.ts +24 -0
- package/src/secure-store/index.ts +1 -0
- package/src/secure-store/secure-fs.ts +48 -0
- package/src/secure-store/secure-store.test.ts +40 -0
- package/src/semantic-rule-promotion.ts +13 -4
- package/src/storage/content-hash-index.ts +655 -0
- package/src/storage/entity-timeline.ts +473 -0
- package/src/storage/memory-lifecycle-ledger-access.ts +603 -0
- package/src/storage/secure-line-reader.test.ts +197 -0
- package/src/storage/secure-line-reader.ts +181 -3
- package/src/storage-append-header-sniff.test.ts +195 -0
- package/src/storage-behavior-signals-cache.test.ts +237 -0
- package/src/storage-contract/cache-coherence.test.ts +96 -1
- package/src/storage-contract/content-hash.test.ts +47 -2
- package/src/storage-fact-hash-index-defer.test.ts +1200 -0
- package/src/storage-memory-lifecycle-ledger.test.ts +1146 -3
- package/src/storage.ts +942 -903
- package/src/structured-attributes.ts +52 -0
- package/src/temporal-index-batch.ts +112 -0
- package/src/temporal-index.test.ts +193 -0
- package/src/temporal-index.ts +49 -53
- package/src/testing/lifecycle-matrix.test.ts +212 -0
- package/src/testing/lifecycle-matrix.ts +271 -0
- package/src/testing/orchestrator-lite.ts +236 -0
- package/src/testing/subjects/dreams-ledger.test.ts +67 -0
- package/src/testing/subjects/extraction-lifecycle.test.ts +442 -0
- package/src/testing/subjects/lifecycle-ledger.test.ts +93 -0
- package/src/testing/subjects/recall-budget.test.ts +461 -0
- package/src/testing/subjects/serialized-write-chain.test.ts +224 -0
- package/src/trust-score-stage.test.ts +154 -0
- package/src/trust-score-stage.ts +216 -53
- package/src/types-continuity.ts +57 -0
- package/src/types.ts +66 -77
- package/src/utils/path-containment.test.ts +75 -0
- package/src/utils/path-containment.ts +76 -0
- package/src/utils/serialize-mutations.test.ts +122 -0
- package/src/utils/serialize-mutations.ts +68 -3
- package/src/wearables/memory-gen.test.ts +31 -9
- package/src/wearables/memory-gen.ts +95 -55
- package/src/wearables/pipeline.test.ts +10 -7
- package/src/wearables/service.test.ts +6 -8
- package/src/wearables/service.ts +2 -2
- package/src/write-envelope.extension.test.ts +111 -0
- package/src/write-envelope.test.ts +683 -0
- package/src/write-envelope.ts +902 -0
- package/src/write-quarantine.test.ts +193 -0
- package/src/write-quarantine.ts +241 -0
- package/src/write-rate-limiter.test.ts +105 -0
- package/src/write-rate-limiter.ts +135 -0
- package/src/write-sealed-parity.test.ts +204 -0
- package/dist/chunk-2VN4JAX7.js.map +0 -1
- package/dist/chunk-37CTGERM.js.map +0 -1
- package/dist/chunk-7ICYQUOL.js.map +0 -1
- package/dist/chunk-AD6AMF2N.js.map +0 -1
- package/dist/chunk-AHLPZ2SF.js.map +0 -1
- package/dist/chunk-ASKEM4AR.js.map +0 -1
- package/dist/chunk-B3F4CWQR.js.map +0 -1
- package/dist/chunk-BCDKBDSY.js.map +0 -1
- package/dist/chunk-BFPETA3S.js.map +0 -1
- package/dist/chunk-BFVEEB7W.js.map +0 -1
- package/dist/chunk-E5BK6CGV.js +0 -335
- package/dist/chunk-E5BK6CGV.js.map +0 -1
- package/dist/chunk-EEARRVZ2.js.map +0 -1
- package/dist/chunk-F7AU34FC.js.map +0 -1
- package/dist/chunk-FBNWOMCE.js.map +0 -1
- package/dist/chunk-FTYDWKO6.js.map +0 -1
- package/dist/chunk-GMSDQUCR.js.map +0 -1
- package/dist/chunk-GWTFLF2P.js.map +0 -1
- package/dist/chunk-IFJ23BHU.js.map +0 -1
- package/dist/chunk-IKQTFQMI.js.map +0 -1
- package/dist/chunk-J2HSAU72.js.map +0 -1
- package/dist/chunk-JMBVCAR4.js.map +0 -1
- package/dist/chunk-KQDNAXOM.js.map +0 -1
- package/dist/chunk-KSBEEMQF.js.map +0 -1
- package/dist/chunk-KSNVDPDF.js.map +0 -1
- package/dist/chunk-LC7OODWZ.js.map +0 -1
- package/dist/chunk-LTJAMRGI.js.map +0 -1
- package/dist/chunk-ND5M64JJ.js.map +0 -1
- package/dist/chunk-NUWYOKS6.js.map +0 -1
- package/dist/chunk-NWTGD4AN.js.map +0 -1
- package/dist/chunk-OBMR4VIX.js.map +0 -1
- package/dist/chunk-ODPLEWB6.js.map +0 -1
- package/dist/chunk-PHK3HARR.js +0 -32
- package/dist/chunk-PHK3HARR.js.map +0 -1
- package/dist/chunk-RANHFI3P.js +0 -8
- package/dist/chunk-RANHFI3P.js.map +0 -1
- package/dist/chunk-RBQLJSJ7.js.map +0 -1
- package/dist/chunk-RULE4VG5.js.map +0 -1
- package/dist/chunk-SVOZFLIQ.js +0 -16
- package/dist/chunk-SVOZFLIQ.js.map +0 -1
- package/dist/chunk-TXLGHDHS.js.map +0 -1
- package/dist/chunk-UN3CH3CO.js +0 -118
- package/dist/chunk-UN3CH3CO.js.map +0 -1
- package/dist/chunk-VSMRDBFT.js +0 -17
- package/dist/chunk-VSMRDBFT.js.map +0 -1
- package/dist/chunk-WU46YPY6.js.map +0 -1
- package/dist/chunk-X47LWMKA.js.map +0 -1
- package/dist/chunk-X64YLC24.js.map +0 -1
- package/dist/chunk-XVLEGMJI.js.map +0 -1
- package/dist/chunk-YF6FMLBT.js.map +0 -1
- package/dist/resolution-VH4NGENZ.js +0 -12
- /package/dist/{capsule-crypto-CZJSLEFG.js.map → access-citation.js.map} +0 -0
- /package/dist/{contradiction-scan-J57T5QV7.js.map → access-memory-search-fanout.js.map} +0 -0
- /package/dist/{dreams-ledger-6UODQOX6.js.map → access-recall-concurrency.js.map} +0 -0
- /package/dist/{graph-edge-decay-FO7AM4UR.js.map → access-recall-response.js.map} +0 -0
- /package/dist/{resolution-VH4NGENZ.js.map → bounded-jsonl-state.js.map} +0 -0
- /package/dist/{capsule-merge-Z2HUO6IK.js.map → capsule-merge-5KKJQBWQ.js.map} +0 -0
- /package/dist/{chunk-A3GOMRJG.js.map → chunk-23L3IXFD.js.map} +0 -0
- /package/dist/{chunk-MRHFJV44.js.map → chunk-2DQ2XREU.js.map} +0 -0
- /package/dist/{chunk-L2B3EE7B.js.map → chunk-2QMKMVHH.js.map} +0 -0
- /package/dist/{chunk-6CALL5VN.js.map → chunk-2UFO7X4Q.js.map} +0 -0
- /package/dist/{chunk-2MR3MFQB.js.map → chunk-2VEOKUPP.js.map} +0 -0
- /package/dist/{chunk-RHOZ5LLO.js.map → chunk-347WD2LE.js.map} +0 -0
- /package/dist/{chunk-5S7Z5SHA.js.map → chunk-34RC5RT7.js.map} +0 -0
- /package/dist/{chunk-KGWXHWAH.js.map → chunk-3QAH2S33.js.map} +0 -0
- /package/dist/{chunk-ZIDSD6VC.js.map → chunk-3Y224NYC.js.map} +0 -0
- /package/dist/{chunk-VFSP73LP.js.map → chunk-45GF7Y3V.js.map} +0 -0
- /package/dist/{chunk-OEHCMALU.js.map → chunk-5I4M26Q7.js.map} +0 -0
- /package/dist/{chunk-2E6G7FCE.js.map → chunk-5Q7EVV4X.js.map} +0 -0
- /package/dist/{chunk-VZ5OJE4X.js.map → chunk-5VQJBH2G.js.map} +0 -0
- /package/dist/{chunk-PUBTHW5O.js.map → chunk-6DRPPQEJ.js.map} +0 -0
- /package/dist/{chunk-4LEF6XWJ.js.map → chunk-6O22TZSB.js.map} +0 -0
- /package/dist/{chunk-ZQ7UBUZ6.js.map → chunk-6QYST5XN.js.map} +0 -0
- /package/dist/{chunk-W4PGTAS2.js.map → chunk-6WAFYNVT.js.map} +0 -0
- /package/dist/{chunk-R5VAVVHP.js.map → chunk-72A4L5JJ.js.map} +0 -0
- /package/dist/{chunk-3FAMU5TX.js.map → chunk-A6USBZTO.js.map} +0 -0
- /package/dist/{chunk-TXVD7PLT.js.map → chunk-A72SWTWW.js.map} +0 -0
- /package/dist/{chunk-FC77VUX5.js.map → chunk-A7Q43EUZ.js.map} +0 -0
- /package/dist/{chunk-UJBESW6X.js.map → chunk-AE7WMV4V.js.map} +0 -0
- /package/dist/{chunk-OKUEZOGW.js.map → chunk-AITCS2RC.js.map} +0 -0
- /package/dist/{chunk-OC35KQIN.js.map → chunk-AJ7QCSIS.js.map} +0 -0
- /package/dist/{chunk-FNMFJWBY.js.map → chunk-ANEUPF6O.js.map} +0 -0
- /package/dist/{chunk-2A3OXAP2.js.map → chunk-B7RWBZXW.js.map} +0 -0
- /package/dist/{chunk-N3JDIRBW.js.map → chunk-BLAKS3CP.js.map} +0 -0
- /package/dist/{chunk-M7VGG3ID.js.map → chunk-BV5WMSIJ.js.map} +0 -0
- /package/dist/{chunk-2BFLDH5F.js.map → chunk-BXLOS5AJ.js.map} +0 -0
- /package/dist/{chunk-UXKMMNJD.js.map → chunk-C23BYTJV.js.map} +0 -0
- /package/dist/{chunk-JZHHREBL.js.map → chunk-C3AKM55W.js.map} +0 -0
- /package/dist/{chunk-RP7YXA67.js.map → chunk-C5JF6EZ7.js.map} +0 -0
- /package/dist/{chunk-DDGV7NAX.js.map → chunk-CQMEM5CC.js.map} +0 -0
- /package/dist/{chunk-A7B4RMQG.js.map → chunk-CXZQOVIE.js.map} +0 -0
- /package/dist/{chunk-7N2RUBAP.js.map → chunk-DDA47TES.js.map} +0 -0
- /package/dist/{chunk-64SE4X5G.js.map → chunk-DEBHXHJR.js.map} +0 -0
- /package/dist/{chunk-EHK6KZHK.js.map → chunk-DNHVPZOD.js.map} +0 -0
- /package/dist/{chunk-437S3G37.js.map → chunk-DQEMWVMT.js.map} +0 -0
- /package/dist/{chunk-LZZNTPLR.js.map → chunk-DX3XRGLH.js.map} +0 -0
- /package/dist/{chunk-7MW3CVLD.js.map → chunk-ES36HTSC.js.map} +0 -0
- /package/dist/{chunk-TN7THW5U.js.map → chunk-ET356KSB.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-7LFXDGLH.js.map → chunk-F7GAIWFA.js.map} +0 -0
- /package/dist/{chunk-IKSELOIV.js.map → chunk-FFPJINJE.js.map} +0 -0
- /package/dist/{chunk-V53GJUSL.js.map → chunk-FUTF72MJ.js.map} +0 -0
- /package/dist/{chunk-5UNWK7KU.js.map → chunk-GFPZS3F5.js.map} +0 -0
- /package/dist/{chunk-G6NKALRN.js.map → chunk-H4WG3UQZ.js.map} +0 -0
- /package/dist/{chunk-HLTAPHZZ.js.map → chunk-HNZKVLAN.js.map} +0 -0
- /package/dist/{chunk-5EZXHU36.js.map → chunk-HYQJQGD3.js.map} +0 -0
- /package/dist/{chunk-TRWPCR6P.js.map → chunk-JECBQBEX.js.map} +0 -0
- /package/dist/{chunk-HG32URJJ.js.map → chunk-JYIFGGEM.js.map} +0 -0
- /package/dist/{chunk-VA4WSW54.js.map → chunk-JYIJNNN3.js.map} +0 -0
- /package/dist/{chunk-L5HJQC36.js.map → chunk-K2TDK7GG.js.map} +0 -0
- /package/dist/{chunk-MKDRQAA3.js.map → chunk-KAVBJSBQ.js.map} +0 -0
- /package/dist/{chunk-4OKLXWDZ.js.map → chunk-KNB7IBBU.js.map} +0 -0
- /package/dist/{chunk-QLULYKWZ.js.map → chunk-KSXJOC4F.js.map} +0 -0
- /package/dist/{chunk-JI5AVXYO.js.map → chunk-LEPOP46W.js.map} +0 -0
- /package/dist/{chunk-O7BBFJLP.js.map → chunk-LTAVSOZW.js.map} +0 -0
- /package/dist/{chunk-2IZAGAJR.js.map → chunk-LULR4IUW.js.map} +0 -0
- /package/dist/{chunk-WMWVO45V.js.map → chunk-MC6XO7T4.js.map} +0 -0
- /package/dist/{chunk-D6RIFG4O.js.map → chunk-MNB5RMAY.js.map} +0 -0
- /package/dist/{chunk-67ZCJLJY.js.map → chunk-MYFQ3ED4.js.map} +0 -0
- /package/dist/{chunk-V3UE5I5F.js.map → chunk-MYVPLJOO.js.map} +0 -0
- /package/dist/{chunk-MTWKDOVO.js.map → chunk-NLE6TSLG.js.map} +0 -0
- /package/dist/{chunk-DBRYEIGY.js.map → chunk-OJP3N7UK.js.map} +0 -0
- /package/dist/{chunk-SMX5267P.js.map → chunk-OZKOPQCM.js.map} +0 -0
- /package/dist/{chunk-JCK7V6SN.js.map → chunk-P65YJEEL.js.map} +0 -0
- /package/dist/{chunk-MTR7BZQN.js.map → chunk-PBGWYM3H.js.map} +0 -0
- /package/dist/{chunk-AXTXN4T6.js.map → chunk-PWFCHOB3.js.map} +0 -0
- /package/dist/{chunk-FDPZVY6D.js.map → chunk-QFN4U7AG.js.map} +0 -0
- /package/dist/{chunk-K2ZLHESQ.js.map → chunk-QIEUU4UK.js.map} +0 -0
- /package/dist/{chunk-3D6AFGQR.js.map → chunk-QVT3E4CE.js.map} +0 -0
- /package/dist/{chunk-SFQ6QNL7.js.map → chunk-R6YJI3HE.js.map} +0 -0
- /package/dist/{chunk-5CJVLG3H.js.map → chunk-RFDD3B7W.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-RKNJBZ55.js.map} +0 -0
- /package/dist/{chunk-UTRJFDP2.js.map → chunk-S2BBISHU.js.map} +0 -0
- /package/dist/{chunk-IALLX7EE.js.map → chunk-S2FSBU4H.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-PK5XBDA6.js.map → chunk-U3ZAVRP3.js.map} +0 -0
- /package/dist/{chunk-4KJLYTLS.js.map → chunk-V57NLO5P.js.map} +0 -0
- /package/dist/{chunk-FLVL4L3L.js.map → chunk-VDX2J7OX.js.map} +0 -0
- /package/dist/{chunk-7XGSIUP5.js.map → chunk-W4FBGYGK.js.map} +0 -0
- /package/dist/{chunk-6SXVCD7W.js.map → chunk-W7IGLX4G.js.map} +0 -0
- /package/dist/{chunk-KAWTOYAW.js.map → chunk-WLZYGLJ4.js.map} +0 -0
- /package/dist/{chunk-W5NKDU24.js.map → chunk-WON4APQY.js.map} +0 -0
- /package/dist/{chunk-NKCPUHCI.js.map → chunk-WZFAPHIK.js.map} +0 -0
- /package/dist/{chunk-KQPJLK3X.js.map → chunk-XL24QQ63.js.map} +0 -0
- /package/dist/{chunk-4B4MUS5D.js.map → chunk-YROFNEG5.js.map} +0 -0
- /package/dist/{chunk-VRAD2FGO.js.map → chunk-Z54EM5YZ.js.map} +0 -0
- /package/dist/{first-start-migration-TI67YMLG.js.map → first-start-migration-CSRHCJIQ.js.map} +0 -0
- /package/dist/{forget-CQCLB5LB.js.map → forget-HRPLVB3W.js.map} +0 -0
- /package/dist/{purge-NDWV6WYD.js.map → purge-IRF47ZTX.js.map} +0 -0
- /package/dist/{tier-stats-KV7IWCJR.js.map → tier-stats-QEJSPFV2.js.map} +0 -0
package/dist/verified-recall.js
CHANGED
|
@@ -1,55 +1,65 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-7ICYQUOL.js";
|
|
8
|
-
import "./chunk-L2B3EE7B.js";
|
|
4
|
+
} from "./chunk-MYFQ3ED4.js";
|
|
5
|
+
import "./chunk-B7RWBZXW.js";
|
|
6
|
+
import "./chunk-4BJQODZF.js";
|
|
9
7
|
import "./chunk-B3ABVQ36.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-EHK6KZHK.js";
|
|
8
|
+
import "./chunk-2QMKMVHH.js";
|
|
9
|
+
import "./chunk-DEBHXHJR.js";
|
|
10
|
+
import "./chunk-DNHVPZOD.js";
|
|
14
11
|
import "./chunk-6CIAGZ6X.js";
|
|
15
12
|
import "./chunk-J6A3CX5N.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
21
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-V57NLO5P.js";
|
|
14
|
+
import "./chunk-FF4KLI5W.js";
|
|
15
|
+
import "./chunk-YVKF3HEW.js";
|
|
16
|
+
import "./chunk-AVPXXV6J.js";
|
|
17
|
+
import "./chunk-EGGE52UU.js";
|
|
18
|
+
import "./chunk-GCASGYIO.js";
|
|
19
|
+
import "./chunk-WL5EBRDH.js";
|
|
20
|
+
import "./chunk-347WD2LE.js";
|
|
22
21
|
import "./chunk-RL6NEVXT.js";
|
|
22
|
+
import "./chunk-ILGC6JH6.js";
|
|
23
|
+
import "./chunk-SCU65EZI.js";
|
|
23
24
|
import "./chunk-DM2T26WE.js";
|
|
24
25
|
import "./chunk-LDXUBPMO.js";
|
|
25
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-CGASUJVP.js";
|
|
27
|
+
import "./chunk-R3DJVOSM.js";
|
|
28
|
+
import "./chunk-BT7NVCML.js";
|
|
29
|
+
import "./chunk-JYIJNNN3.js";
|
|
26
30
|
import "./chunk-AAD2ZS6P.js";
|
|
27
31
|
import "./chunk-G7D6GZ5J.js";
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-5VQJBH2G.js";
|
|
33
|
+
import "./chunk-AITCS2RC.js";
|
|
34
|
+
import "./chunk-XMMESCPD.js";
|
|
31
35
|
import "./chunk-42JKGUFJ.js";
|
|
32
36
|
import "./chunk-PDJTHRAW.js";
|
|
33
37
|
import "./chunk-W5H6ZRPT.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-VFSP73LP.js";
|
|
38
|
+
import "./chunk-C23BYTJV.js";
|
|
39
|
+
import "./chunk-QIEUU4UK.js";
|
|
37
40
|
import "./chunk-L2EXJQJP.js";
|
|
41
|
+
import "./chunk-45GF7Y3V.js";
|
|
38
42
|
import "./chunk-RGMVMVMF.js";
|
|
39
43
|
import "./chunk-N7RWREIQ.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-PHK3HARR.js";
|
|
42
|
-
import "./chunk-4DJQYKMN.js";
|
|
44
|
+
import "./chunk-5I4M26Q7.js";
|
|
43
45
|
import "./chunk-5GKPFL3S.js";
|
|
46
|
+
import "./chunk-4DJQYKMN.js";
|
|
47
|
+
import "./chunk-PQVCH2AE.js";
|
|
44
48
|
import "./chunk-EYIEWJNI.js";
|
|
45
49
|
import "./chunk-JUC24CTX.js";
|
|
46
|
-
import "./chunk-
|
|
47
|
-
import "./chunk-
|
|
50
|
+
import "./chunk-6MKAMLQL.js";
|
|
51
|
+
import "./chunk-JAKIDQB2.js";
|
|
52
|
+
import "./chunk-ZBJMUXZH.js";
|
|
53
|
+
import "./chunk-BJMBJZ2Y.js";
|
|
54
|
+
import "./chunk-UKJAGEXH.js";
|
|
55
|
+
import "./chunk-FP2373TW.js";
|
|
56
|
+
import "./chunk-AIK5W3IW.js";
|
|
48
57
|
import "./chunk-A6XUJE5D.js";
|
|
58
|
+
import "./chunk-5UZXUTVO.js";
|
|
49
59
|
import "./chunk-P7FMDTKL.js";
|
|
50
60
|
import "./chunk-VS2IYZRU.js";
|
|
51
|
-
import "./chunk-
|
|
52
|
-
import "./chunk-
|
|
61
|
+
import "./chunk-SCCO46KZ.js";
|
|
62
|
+
import "./chunk-3WCASNQZ.js";
|
|
53
63
|
import "./chunk-PZ5AY32C.js";
|
|
54
64
|
export {
|
|
55
65
|
compareVerifiedEpisodeResults,
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { w as MemoryCategory } from './types-D_fG2ix8.js';
|
|
2
|
+
import './message-parts/index.js';
|
|
3
|
+
import './bounded-jsonl-state.js';
|
|
4
|
+
import './types-continuity.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Sealed memory-write envelope (issue #1989, umbrella #1988).
|
|
8
|
+
*
|
|
9
|
+
* THE single stamping point for cross-cutting memory-creation fields.
|
|
10
|
+
*
|
|
11
|
+
* Why this exists: PR #1852 needed 27 rework commits because adding one
|
|
12
|
+
* cross-cutting field (`sourceConnector`) required hand-editing every
|
|
13
|
+
* write call site and every idempotency payload, and reviewers discovered
|
|
14
|
+
* missed sites one round at a time. This module removes the fan-out:
|
|
15
|
+
*
|
|
16
|
+
* 1. `composeMemoryEnvelope()` is the only way to mint a
|
|
17
|
+
* `SealedMemoryEnvelope` — the brand is a non-exported `unique symbol`,
|
|
18
|
+
* so a hand-built object literal fails `tsc` (`npm run check-types`
|
|
19
|
+
* is already a required repo-wide gate; the type system IS the fence).
|
|
20
|
+
* 2. `buildWriteIdempotencyPayload()` derives every access-surface
|
|
21
|
+
* idempotency payload from ONE ordered field registry
|
|
22
|
+
* (`WRITE_FINGERPRINT_FIELDS`). Adding a fingerprint-relevant field is
|
|
23
|
+
* a one-line registry change picked up by every surface; forgetting to
|
|
24
|
+
* classify a new `MemoryWriteInput` field is a compile error (see the
|
|
25
|
+
* exhaustiveness guards at the bottom of this file).
|
|
26
|
+
*
|
|
27
|
+
* PR1 scope (no call-site changes): the composer, the registry, and the
|
|
28
|
+
* payload builder, fully tested. PR2–PR4 migrate storage entry points and
|
|
29
|
+
* the write call sites onto this module (see #1989 for the slicing).
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Every cross-cutting memory-creation field lives HERE and only here.
|
|
34
|
+
*
|
|
35
|
+
* When you add a field you MUST also add it to either
|
|
36
|
+
* `WRITE_FINGERPRINT_FIELDS` or `FINGERPRINT_EXEMPT_FIELDS` — the
|
|
37
|
+
* exhaustiveness guard below makes forgetting a compile error.
|
|
38
|
+
*/
|
|
39
|
+
interface MemoryWriteInput {
|
|
40
|
+
/** Raw memory content. Must be non-empty after trimming. */
|
|
41
|
+
content: string;
|
|
42
|
+
/** Memory category — validated against the canonical category set. */
|
|
43
|
+
category: MemoryCategory;
|
|
44
|
+
/** Free-form labels; normalized (trim/dedupe) and capped, see TAG_LIMITS. */
|
|
45
|
+
tags?: string[];
|
|
46
|
+
/** String→string structured attributes; non-string values are rejected. */
|
|
47
|
+
structuredAttributes?: Record<string, string>;
|
|
48
|
+
/** Entity file reference (e.g. `person-jane-doe`). */
|
|
49
|
+
entityRef?: string;
|
|
50
|
+
/** Extraction confidence in [0, 1]. */
|
|
51
|
+
confidence?: number;
|
|
52
|
+
/** Opaque TTL expression (e.g. `90d` or an ISO date) — validated non-empty. */
|
|
53
|
+
ttl?: string;
|
|
54
|
+
/** Event-time validity start (ISO 8601). */
|
|
55
|
+
validAt?: string;
|
|
56
|
+
/** Connector identity that produced this write (issue #1852). */
|
|
57
|
+
sourceConnector?: string;
|
|
58
|
+
/** Human-readable provenance note. */
|
|
59
|
+
sourceReason?: string;
|
|
60
|
+
}
|
|
61
|
+
/** Context supplied by the write path, not by the payload author. */
|
|
62
|
+
interface WriteContext {
|
|
63
|
+
/** Frontmatter `source` string (e.g. `extraction`, `wearable:bee`). */
|
|
64
|
+
source: string;
|
|
65
|
+
/** Clock override for tests. */
|
|
66
|
+
now?: () => Date;
|
|
67
|
+
}
|
|
68
|
+
/** Scope facts that participate in idempotency but never in frontmatter. */
|
|
69
|
+
interface FingerprintScope {
|
|
70
|
+
/** Access surface performing the write (e.g. `memory_store`, `observe`). */
|
|
71
|
+
surface: string;
|
|
72
|
+
namespace?: string;
|
|
73
|
+
principal?: string;
|
|
74
|
+
codingContext?: string;
|
|
75
|
+
}
|
|
76
|
+
declare const TAG_LIMITS: Readonly<{
|
|
77
|
+
/** Maximum number of tags persisted per memory. */
|
|
78
|
+
maxTags: 50;
|
|
79
|
+
/** Maximum length of a single tag. */
|
|
80
|
+
maxTagLength: 256;
|
|
81
|
+
}>;
|
|
82
|
+
declare const STRUCTURED_ATTRIBUTE_LIMITS: Readonly<{
|
|
83
|
+
/** Maximum number of structured attributes per memory. */
|
|
84
|
+
maxEntries: 64;
|
|
85
|
+
/** Maximum length of one attribute key. */
|
|
86
|
+
maxKeyLength: 128;
|
|
87
|
+
/** Maximum length of one attribute value. */
|
|
88
|
+
maxValueLength: 1024;
|
|
89
|
+
}>;
|
|
90
|
+
declare function isMemoryCategory(value: string): value is MemoryCategory;
|
|
91
|
+
declare const sealed: unique symbol;
|
|
92
|
+
/**
|
|
93
|
+
* A normalized, validated memory-write envelope.
|
|
94
|
+
*
|
|
95
|
+
* Opaque: only `composeMemoryEnvelope()` can mint one. Storage creation
|
|
96
|
+
* entry points accept this type (PR2), so every write path is forced
|
|
97
|
+
* through the composer at compile time.
|
|
98
|
+
*/
|
|
99
|
+
interface SealedMemoryEnvelope {
|
|
100
|
+
readonly [sealed]: true;
|
|
101
|
+
/**
|
|
102
|
+
* Caller-supplied content VERBATIM (validated non-empty-after-trim).
|
|
103
|
+
* `StorageManager.writeMemory` persists content byte-for-byte (callers
|
|
104
|
+
* that trim, e.g. explicit capture, do so before composing), so the
|
|
105
|
+
* envelope must not transform it — the earlier compose-time trim/sanitize
|
|
106
|
+
* broke byte-parity with extraction writes and was removed in PR2.
|
|
107
|
+
*/
|
|
108
|
+
readonly content: string;
|
|
109
|
+
/**
|
|
110
|
+
* The exact body persistence will write: attribute-suffix enrichment then
|
|
111
|
+
* combined sanitization, produced by the SAME `assemblePersistedBody`
|
|
112
|
+
* helper `writeMemory` uses (issue #1989 PR2; AGENTS.md §13). This is the
|
|
113
|
+
* form write-idempotency fingerprints hash.
|
|
114
|
+
*/
|
|
115
|
+
readonly persistedBody: string;
|
|
116
|
+
/** Injection patterns matched during body assembly (empty = clean). */
|
|
117
|
+
readonly sanitizeViolations: readonly string[];
|
|
118
|
+
/**
|
|
119
|
+
* Salvage-mode hygiene notes (empty in strict mode): each dropped/clamped
|
|
120
|
+
* invalid optional field is recorded here — visible, never silent
|
|
121
|
+
* (repo rule 34). Callers persisting machine-generated input log these.
|
|
122
|
+
*/
|
|
123
|
+
readonly salvageNotes: readonly string[];
|
|
124
|
+
readonly category: MemoryCategory;
|
|
125
|
+
readonly tags: readonly string[];
|
|
126
|
+
/**
|
|
127
|
+
* CANONICAL attributes (keys trim+lowercase, values trim) — the form
|
|
128
|
+
* fingerprints and downstream consumers use; stable across caller casing.
|
|
129
|
+
*/
|
|
130
|
+
readonly structuredAttributes: Readonly<Record<string, string>> | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* The validated ORIGINAL attribute map, byte-preserved. `writeMemory`
|
|
133
|
+
* persists frontmatter attributes raw (canonicalizing only the body
|
|
134
|
+
* suffix via normalizeAttributePairs) — a pre-existing raw/canonical
|
|
135
|
+
* inconsistency (supersession keys read the raw form). The sealed path
|
|
136
|
+
* preserves those bytes; canonicalizing the frontmatter at the storage
|
|
137
|
+
* boundary is a follow-up once the legacy path retires (#1989 PR4).
|
|
138
|
+
*/
|
|
139
|
+
readonly rawStructuredAttributes: Readonly<Record<string, string>> | undefined;
|
|
140
|
+
readonly entityRef: string | undefined;
|
|
141
|
+
readonly confidence: number | undefined;
|
|
142
|
+
readonly ttl: string | undefined;
|
|
143
|
+
readonly validAt: string | undefined;
|
|
144
|
+
readonly sourceConnector: string | undefined;
|
|
145
|
+
readonly sourceReason: string | undefined;
|
|
146
|
+
readonly source: string;
|
|
147
|
+
/** ISO timestamp the envelope was composed (from ctx.now). */
|
|
148
|
+
readonly composedAt: string;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Compose-time input hygiene mode (issue #1989 PR2, review round on #2014).
|
|
152
|
+
*
|
|
153
|
+
* - `strict` (default): every invalid field throws — correct for OPERATOR
|
|
154
|
+
* and API input (explicit capture, memory_store), where a bad value is a
|
|
155
|
+
* caller bug that must surface.
|
|
156
|
+
* - `salvage`: for MACHINE-GENERATED input (LLM extraction, wearable
|
|
157
|
+
* ingestion). One malformed fact from an extractor must not abort a whole
|
|
158
|
+
* persistence batch that legacy `writeMemory` would have accepted.
|
|
159
|
+
* Invalid tags/attributes/optional fields are DROPPED with a note pushed
|
|
160
|
+
* to `envelope.salvageNotes` — visible, never silent (repo rule 34);
|
|
161
|
+
* callers log the notes. Content, category, ctx.source, and validAt stay
|
|
162
|
+
* FATAL in both modes (legacy writeMemory also throws on bad validAt, and
|
|
163
|
+
* a write without valid content/category cannot proceed).
|
|
164
|
+
*/
|
|
165
|
+
interface ComposeEnvelopeOptions {
|
|
166
|
+
salvage?: boolean;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Compose (normalize + validate + seal) a memory-write envelope.
|
|
170
|
+
*
|
|
171
|
+
* Strict mode (default) throws on any invalid input — never silently
|
|
172
|
+
* defaults (AGENTS.md §1/§39). Salvage mode (`{ salvage: true }`, for
|
|
173
|
+
* machine-generated input like LLM extraction) drops invalid OPTIONAL
|
|
174
|
+
* fields with notes on `envelope.salvageNotes` instead of aborting the
|
|
175
|
+
* batch; content/category/source/validAt stay fatal in both modes.
|
|
176
|
+
*/
|
|
177
|
+
declare function composeMemoryEnvelope(input: MemoryWriteInput, ctx: WriteContext, opts?: ComposeEnvelopeOptions): SealedMemoryEnvelope;
|
|
178
|
+
/**
|
|
179
|
+
* Runtime check (belt) — the compile-time brand is the real fence.
|
|
180
|
+
*
|
|
181
|
+
* Fast path: WeakSet membership (same module graph). Fallback: RE-COMPOSITION
|
|
182
|
+
* EQUIVALENCE — Node resolves `@remnic/core` through `dist/` for built
|
|
183
|
+
* consumers and `src/` for tsx-loaded tests, and each graph gets its OWN
|
|
184
|
+
* WeakSet, so identity alone would reject genuinely-sealed envelopes that
|
|
185
|
+
* crossed a build boundary. The structural arm requires frozen DATA-only
|
|
186
|
+
* properties (no accessors — TOCTOU guard, round 4), then re-runs the
|
|
187
|
+
* STRICT composer on the candidate's own inputs and demands every envelope
|
|
188
|
+
* field reproduce exactly (#2014 round 2: shape-only validation admitted
|
|
189
|
+
* lookalikes with 51 tags or out-of-range confidence). A value that
|
|
190
|
+
* survives has, by construction, passed every composer invariant, and its
|
|
191
|
+
* fields cannot change between validation and the write that follows.
|
|
192
|
+
*
|
|
193
|
+
* `salvageNotes` is deliberately NOT compared: a legitimately salvage-minted
|
|
194
|
+
* envelope carries notes while the strict re-composition of its (already
|
|
195
|
+
* clean) surviving fields yields none. Notes are advisory provenance, not
|
|
196
|
+
* identity — every load-bearing field is still verified.
|
|
197
|
+
*/
|
|
198
|
+
declare function isSealedMemoryEnvelope(value: unknown): value is SealedMemoryEnvelope;
|
|
199
|
+
/**
|
|
200
|
+
* The ONE mapping from a sealed envelope (+ extras) to the legacy
|
|
201
|
+
* `writeMemory(category, content, options)` argument shape. Used by
|
|
202
|
+
* `StorageManager.writeSealedMemory` AND by test doubles that stub storage —
|
|
203
|
+
* so mock fidelity (AGENTS.md §21) cannot drift from production.
|
|
204
|
+
*/
|
|
205
|
+
declare function sealedWriteToLegacyArgs(envelope: SealedMemoryEnvelope, extras?: Record<string, unknown>): {
|
|
206
|
+
category: MemoryCategory;
|
|
207
|
+
content: string;
|
|
208
|
+
options: Record<string, unknown>;
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Ordered registry of envelope fields that participate in write-idempotency
|
|
212
|
+
* fingerprints. Adding a fingerprint-relevant field = one entry here; every
|
|
213
|
+
* surface that builds its payload via `buildWriteIdempotencyPayload()` picks
|
|
214
|
+
* it up automatically.
|
|
215
|
+
*/
|
|
216
|
+
declare const WRITE_FINGERPRINT_FIELDS: readonly ["content", "category", "tags", "structuredAttributes", "entityRef", "ttl", "validAt", "sourceConnector"];
|
|
217
|
+
/**
|
|
218
|
+
* Envelope fields deliberately EXCLUDED from fingerprints. Exempting a field
|
|
219
|
+
* is a visible, reviewable decision — this list exists so the exhaustiveness
|
|
220
|
+
* guard can force every new `MemoryWriteInput` field to be classified.
|
|
221
|
+
*/
|
|
222
|
+
declare const FINGERPRINT_EXEMPT_FIELDS: readonly ["confidence", "sourceReason"];
|
|
223
|
+
/** Scope keys always folded into the fingerprint payload. */
|
|
224
|
+
declare const FINGERPRINT_SCOPE_FIELDS: readonly ["surface", "namespace", "principal", "codingContext"];
|
|
225
|
+
/**
|
|
226
|
+
* Build the canonical write-idempotency payload for a sealed envelope.
|
|
227
|
+
*
|
|
228
|
+
* Determinism guarantees (AGENTS.md §26):
|
|
229
|
+
* - tags are SORTED in the payload (tag order never changes identity);
|
|
230
|
+
* - structured attributes are serialized key-sorted by the existing
|
|
231
|
+
* `stableStringify` inside `hashAccessIdempotencyPayload`;
|
|
232
|
+
* - the payload shape is versioned (`v: 1`) so a future field-semantics
|
|
233
|
+
* change can migrate stored idempotency state explicitly instead of
|
|
234
|
+
* silently colliding.
|
|
235
|
+
*
|
|
236
|
+
* Feed the result to `hashAccessIdempotencyPayload()` — this module does
|
|
237
|
+
* not hash so surfaces keep a single hashing implementation.
|
|
238
|
+
*/
|
|
239
|
+
declare function buildWriteIdempotencyPayload(envelope: SealedMemoryEnvelope, scope: FingerprintScope): Record<string, unknown>;
|
|
240
|
+
/** The raw request fields the write surfaces fingerprint (legacy shape). */
|
|
241
|
+
interface AccessWriteFingerprintParts {
|
|
242
|
+
schemaVersion: number;
|
|
243
|
+
namespace: string;
|
|
244
|
+
content: string;
|
|
245
|
+
category?: string;
|
|
246
|
+
confidence?: number;
|
|
247
|
+
tags?: string[];
|
|
248
|
+
entityRef?: string;
|
|
249
|
+
ttl?: string;
|
|
250
|
+
sourceReason?: string;
|
|
251
|
+
sourceConnector?: string;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Fingerprint payload for `memory_store` / `suggestion_submit` (write AND
|
|
255
|
+
* peek paths — both MUST call this so peek can never diverge from the
|
|
256
|
+
* write it predicts). Key set and values reproduce the historical inline
|
|
257
|
+
* literals exactly; `hashAccessIdempotencyPayload`'s stableStringify sorts
|
|
258
|
+
* keys and drops `undefined`, so optional absent fields hash identically
|
|
259
|
+
* to the old shape.
|
|
260
|
+
*/
|
|
261
|
+
declare function buildAccessWriteRequestFingerprint(parts: AccessWriteFingerprintParts): Record<string, unknown>;
|
|
262
|
+
/** The raw request fields the observe surface fingerprints (legacy shape). */
|
|
263
|
+
interface ObserveFingerprintParts {
|
|
264
|
+
sessionKey: string;
|
|
265
|
+
messages: unknown;
|
|
266
|
+
namespace?: string;
|
|
267
|
+
skipExtraction?: boolean;
|
|
268
|
+
authenticatedPrincipal?: string;
|
|
269
|
+
cwd?: string;
|
|
270
|
+
projectTag?: string;
|
|
271
|
+
/** Resolved coding context — `null` (not undefined) when absent, matching the historical literal. */
|
|
272
|
+
effectiveCodingContext: unknown;
|
|
273
|
+
sourceConnector?: string;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Fingerprint payload for `observe` — turn ingestion, not a memory write,
|
|
277
|
+
* so it fingerprints session/message identity rather than MemoryWriteInput
|
|
278
|
+
* fields. Shape reproduces the historical inline literal exactly.
|
|
279
|
+
*/
|
|
280
|
+
declare function buildObserveRequestFingerprint(parts: ObserveFingerprintParts): Record<string, unknown>;
|
|
281
|
+
|
|
282
|
+
export { type AccessWriteFingerprintParts, type ComposeEnvelopeOptions, FINGERPRINT_EXEMPT_FIELDS, FINGERPRINT_SCOPE_FIELDS, type FingerprintScope, type MemoryWriteInput, type ObserveFingerprintParts, STRUCTURED_ATTRIBUTE_LIMITS, type SealedMemoryEnvelope, TAG_LIMITS, WRITE_FINGERPRINT_FIELDS, type WriteContext, buildAccessWriteRequestFingerprint, buildObserveRequestFingerprint, buildWriteIdempotencyPayload, composeMemoryEnvelope, isMemoryCategory, isSealedMemoryEnvelope, sealedWriteToLegacyArgs };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {
|
|
2
|
+
FINGERPRINT_EXEMPT_FIELDS,
|
|
3
|
+
FINGERPRINT_SCOPE_FIELDS,
|
|
4
|
+
STRUCTURED_ATTRIBUTE_LIMITS,
|
|
5
|
+
TAG_LIMITS,
|
|
6
|
+
WRITE_FINGERPRINT_FIELDS,
|
|
7
|
+
buildAccessWriteRequestFingerprint,
|
|
8
|
+
buildObserveRequestFingerprint,
|
|
9
|
+
buildWriteIdempotencyPayload,
|
|
10
|
+
composeMemoryEnvelope,
|
|
11
|
+
isMemoryCategory,
|
|
12
|
+
isSealedMemoryEnvelope,
|
|
13
|
+
sealedWriteToLegacyArgs
|
|
14
|
+
} from "./chunk-CGASUJVP.js";
|
|
15
|
+
import "./chunk-R3DJVOSM.js";
|
|
16
|
+
import "./chunk-BT7NVCML.js";
|
|
17
|
+
import "./chunk-5GKPFL3S.js";
|
|
18
|
+
import "./chunk-JAKIDQB2.js";
|
|
19
|
+
import "./chunk-P7FMDTKL.js";
|
|
20
|
+
import "./chunk-PZ5AY32C.js";
|
|
21
|
+
export {
|
|
22
|
+
FINGERPRINT_EXEMPT_FIELDS,
|
|
23
|
+
FINGERPRINT_SCOPE_FIELDS,
|
|
24
|
+
STRUCTURED_ATTRIBUTE_LIMITS,
|
|
25
|
+
TAG_LIMITS,
|
|
26
|
+
WRITE_FINGERPRINT_FIELDS,
|
|
27
|
+
buildAccessWriteRequestFingerprint,
|
|
28
|
+
buildObserveRequestFingerprint,
|
|
29
|
+
buildWriteIdempotencyPayload,
|
|
30
|
+
composeMemoryEnvelope,
|
|
31
|
+
isMemoryCategory,
|
|
32
|
+
isSealedMemoryEnvelope,
|
|
33
|
+
sealedWriteToLegacyArgs
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=write-envelope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dead-letter quarantine for writes rejected by the namespace write-ACL
|
|
3
|
+
* (issue #1888).
|
|
4
|
+
*
|
|
5
|
+
* When `observe` / `memory_store` / `suggestion_submit` fail namespace
|
|
6
|
+
* authorization, the payload used to be dropped with no recoverable copy: a
|
|
7
|
+
* client configured with a namespace that matches no policy (and is not the
|
|
8
|
+
* default/shared namespace) had every write in the window silently destroyed.
|
|
9
|
+
* The ACL rejection is CORRECT and stays fail-closed; this store only
|
|
10
|
+
* preserves the payload so it can be replayed after the config is fixed,
|
|
11
|
+
* following the AGENTS.md "reject loudly but never destroy state" posture
|
|
12
|
+
* (patterns 14/42).
|
|
13
|
+
*
|
|
14
|
+
* Records live OUTSIDE any memory namespace at
|
|
15
|
+
* `<memoryDir>/state/quarantine/<principalSafe>/<timestamp>-<id>.json`, keyed
|
|
16
|
+
* by the encoded principal, and are bounded per principal by count and age.
|
|
17
|
+
* Every path is resolved from `memoryDir` through `resolveSafeStoragePath`, so
|
|
18
|
+
* a symlinked `state`/`quarantine` cannot redirect writes outside the memory
|
|
19
|
+
* directory. The store never re-routes a payload into a writable namespace.
|
|
20
|
+
*/
|
|
21
|
+
type QuarantineOperation = "observe" | "memory_store" | "suggestion_submit";
|
|
22
|
+
interface QuarantineEntryInput {
|
|
23
|
+
operation: QuarantineOperation;
|
|
24
|
+
/** Authenticated principal the write was attributed to, if any. */
|
|
25
|
+
principal: string | undefined;
|
|
26
|
+
/** Namespace the caller attempted to write and was denied. */
|
|
27
|
+
attemptedNamespace: string;
|
|
28
|
+
/** The original request payload, preserved verbatim for replay. */
|
|
29
|
+
payload: unknown;
|
|
30
|
+
/** ISO timestamp; defaults to now. Injectable for deterministic tests. */
|
|
31
|
+
timestamp?: string;
|
|
32
|
+
}
|
|
33
|
+
interface QuarantinedRecord {
|
|
34
|
+
operation: QuarantineOperation;
|
|
35
|
+
principal: string | null;
|
|
36
|
+
attemptedNamespace: string;
|
|
37
|
+
timestamp: string;
|
|
38
|
+
payload: unknown;
|
|
39
|
+
}
|
|
40
|
+
interface QuarantineCaps {
|
|
41
|
+
/** Keep at most this many records per principal (newest win). */
|
|
42
|
+
maxEntriesPerPrincipal: number;
|
|
43
|
+
/** Drop records older than this many milliseconds. */
|
|
44
|
+
maxAgeMs: number;
|
|
45
|
+
}
|
|
46
|
+
declare const DEFAULT_QUARANTINE_CAPS: QuarantineCaps;
|
|
47
|
+
declare class WriteQuarantineStore {
|
|
48
|
+
private readonly caps;
|
|
49
|
+
private readonly memoryDir;
|
|
50
|
+
constructor(memoryDir: string, caps?: QuarantineCaps);
|
|
51
|
+
/** Absolute quarantine root (`<memoryDir>/state/quarantine`). */
|
|
52
|
+
get root(): string;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve a path under the quarantine root, checked for containment and
|
|
55
|
+
* symlink traversal from `memoryDir` down — so a symlinked `state` or
|
|
56
|
+
* `quarantine` component that escapes the memory directory is rejected.
|
|
57
|
+
*/
|
|
58
|
+
private safeDir;
|
|
59
|
+
/**
|
|
60
|
+
* Park a rejected write. Returns the absolute path of the record written.
|
|
61
|
+
* Prunes the principal's bucket to the configured caps afterward.
|
|
62
|
+
*/
|
|
63
|
+
quarantine(input: QuarantineEntryInput): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* All valid, non-expired quarantined records across every principal, oldest
|
|
66
|
+
* first. Expired records are deleted on read (lazy GC), so an inactive
|
|
67
|
+
* principal bucket with no follow-up write is still bounded by age.
|
|
68
|
+
*/
|
|
69
|
+
list(): Promise<QuarantinedRecord[]>;
|
|
70
|
+
/** Total valid, non-expired quarantined record count across every principal. */
|
|
71
|
+
count(): Promise<number>;
|
|
72
|
+
/** lstat (no symlink follow): true only for a real directory. */
|
|
73
|
+
private isRealDir;
|
|
74
|
+
private principalDirs;
|
|
75
|
+
private entryFiles;
|
|
76
|
+
private pruneDir;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export { DEFAULT_QUARANTINE_CAPS, type QuarantineCaps, type QuarantineEntryInput, type QuarantineOperation, type QuarantinedRecord, WriteQuarantineStore };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DEFAULT_QUARANTINE_CAPS,
|
|
3
|
+
WriteQuarantineStore
|
|
4
|
+
} from "./chunk-SICXL4MK.js";
|
|
5
|
+
import "./chunk-FF4KLI5W.js";
|
|
6
|
+
import "./chunk-PZ5AY32C.js";
|
|
7
|
+
export {
|
|
8
|
+
DEFAULT_QUARANTINE_CAPS,
|
|
9
|
+
WriteQuarantineStore
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=write-quarantine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-principal write rate limiter for the access HTTP surface
|
|
3
|
+
* (issues #1937 / #2029).
|
|
4
|
+
*
|
|
5
|
+
* Extracted from access-http.ts so the limiter is a cohesive unit. Each
|
|
6
|
+
* principal (authenticated caller identity) gets its own rolling-window
|
|
7
|
+
* bucket, so one chatty connector cannot starve writes for the others;
|
|
8
|
+
* requests with no resolved principal share a single global bucket.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately transport-agnostic: it never throws `HttpError` — callers
|
|
11
|
+
* translate a refusal into their own 429. It logs a sampled warning when it
|
|
12
|
+
* refuses a write, so a sustained limit condition is diagnosable server-side
|
|
13
|
+
* (previously the refusal was a bare throw with no trace).
|
|
14
|
+
*/
|
|
15
|
+
type Slot = {
|
|
16
|
+
readonly recordedAt: number;
|
|
17
|
+
};
|
|
18
|
+
declare class WriteRateLimiter {
|
|
19
|
+
readonly maxRequests: number;
|
|
20
|
+
readonly windowMs: number;
|
|
21
|
+
private readonly buckets;
|
|
22
|
+
private lastLogAt;
|
|
23
|
+
private suppressed;
|
|
24
|
+
constructor(maxRequests?: number, windowMs?: number);
|
|
25
|
+
private key;
|
|
26
|
+
private prune;
|
|
27
|
+
/** Prune every bucket to the current window; drop buckets that go empty. */
|
|
28
|
+
private sweep;
|
|
29
|
+
/** Live reservation/record count for a principal (test/introspection). */
|
|
30
|
+
slotsFor(principal?: string): ReadonlyArray<Slot>;
|
|
31
|
+
/** Total live reservations across all principals (test/introspection). */
|
|
32
|
+
totalSlots(): number;
|
|
33
|
+
/** True if a write may proceed for the principal. Logs (sampled) when not. */
|
|
34
|
+
hasCapacity(principal?: string): boolean;
|
|
35
|
+
/** Record a committed write against the principal's rolling window. */
|
|
36
|
+
record(principal?: string): void;
|
|
37
|
+
/**
|
|
38
|
+
* Reserve a slot for an in-flight write. Returns a release function, or
|
|
39
|
+
* `null` when the principal is already at the limit (caller raises its 429).
|
|
40
|
+
*/
|
|
41
|
+
reserve(principal?: string): (() => void) | null;
|
|
42
|
+
private logRejected;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { WriteRateLimiter };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.8.0",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,6 +16,11 @@
|
|
|
16
16
|
"remnic-source": "./src/abort-error.ts",
|
|
17
17
|
"import": "./dist/abort-error.js"
|
|
18
18
|
},
|
|
19
|
+
"./salvage-envelope": {
|
|
20
|
+
"types": "./dist/salvage-envelope.d.ts",
|
|
21
|
+
"remnic-source": "./src/salvage-envelope.ts",
|
|
22
|
+
"import": "./dist/salvage-envelope.js"
|
|
23
|
+
},
|
|
19
24
|
"./abort-error.js": {
|
|
20
25
|
"types": "./dist/abort-error.d.ts",
|
|
21
26
|
"remnic-source": "./src/abort-error.ts",
|
|
@@ -1655,6 +1660,16 @@
|
|
|
1655
1660
|
"remnic-source": "./src/objective-state.ts",
|
|
1656
1661
|
"import": "./dist/objective-state.js"
|
|
1657
1662
|
},
|
|
1663
|
+
"./offline-sync-exclude-globs": {
|
|
1664
|
+
"types": "./dist/offline-sync-exclude-globs.d.ts",
|
|
1665
|
+
"remnic-source": "./src/offline-sync-exclude-globs.ts",
|
|
1666
|
+
"import": "./dist/offline-sync-exclude-globs.js"
|
|
1667
|
+
},
|
|
1668
|
+
"./offline-sync-exclude-globs.js": {
|
|
1669
|
+
"types": "./dist/offline-sync-exclude-globs.d.ts",
|
|
1670
|
+
"remnic-source": "./src/offline-sync-exclude-globs.ts",
|
|
1671
|
+
"import": "./dist/offline-sync-exclude-globs.js"
|
|
1672
|
+
},
|
|
1658
1673
|
"./openai-chat-compat": {
|
|
1659
1674
|
"types": "./dist/openai-chat-compat.d.ts",
|
|
1660
1675
|
"remnic-source": "./src/openai-chat-compat.ts",
|
|
@@ -2954,6 +2969,26 @@
|
|
|
2954
2969
|
"types": "./dist/work/types.d.ts",
|
|
2955
2970
|
"remnic-source": "./src/work/types.ts",
|
|
2956
2971
|
"import": "./dist/work/types.js"
|
|
2972
|
+
},
|
|
2973
|
+
"./write-envelope": {
|
|
2974
|
+
"types": "./dist/write-envelope.d.ts",
|
|
2975
|
+
"remnic-source": "./src/write-envelope.ts",
|
|
2976
|
+
"import": "./dist/write-envelope.js"
|
|
2977
|
+
},
|
|
2978
|
+
"./write-envelope.js": {
|
|
2979
|
+
"types": "./dist/write-envelope.d.ts",
|
|
2980
|
+
"remnic-source": "./src/write-envelope.ts",
|
|
2981
|
+
"import": "./dist/write-envelope.js"
|
|
2982
|
+
},
|
|
2983
|
+
"./write-quarantine": {
|
|
2984
|
+
"types": "./dist/write-quarantine.d.ts",
|
|
2985
|
+
"remnic-source": "./src/write-quarantine.ts",
|
|
2986
|
+
"import": "./dist/write-quarantine.js"
|
|
2987
|
+
},
|
|
2988
|
+
"./write-quarantine.js": {
|
|
2989
|
+
"types": "./dist/write-quarantine.d.ts",
|
|
2990
|
+
"remnic-source": "./src/write-quarantine.ts",
|
|
2991
|
+
"import": "./dist/write-quarantine.js"
|
|
2957
2992
|
}
|
|
2958
2993
|
},
|
|
2959
2994
|
"files": [
|
|
@@ -3010,7 +3045,7 @@
|
|
|
3010
3045
|
"core"
|
|
3011
3046
|
],
|
|
3012
3047
|
"peerDependencies": {
|
|
3013
|
-
"@remnic/coding-graph": "^9.
|
|
3048
|
+
"@remnic/coding-graph": "^9.8.0"
|
|
3014
3049
|
},
|
|
3015
3050
|
"peerDependenciesMeta": {
|
|
3016
3051
|
"@remnic/coding-graph": {
|