@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/src/orchestrator.ts
CHANGED
|
@@ -103,7 +103,11 @@ import { EntitySynthesisCoordinator } from "./orchestration/entity-synthesis-coo
|
|
|
103
103
|
import { RecallResultFormatter } from "./orchestration/recall-result-formatter.js";
|
|
104
104
|
import { ConversationIndexCoordinator } from "./orchestration/conversation-index-coordinator.js";
|
|
105
105
|
import { RecallRerankCoordinator } from "./orchestration/recall-rerank-coordinator.js";
|
|
106
|
-
import {
|
|
106
|
+
import {
|
|
107
|
+
RecallSectionCoordinator,
|
|
108
|
+
type RecallSectionAppendOptions,
|
|
109
|
+
type RecallSectionBuckets,
|
|
110
|
+
} from "./orchestration/recall-section-coordinator.js";
|
|
107
111
|
import { QmdResultResolver, qmdCollectionPathParts, qmdResultPathCandidates } from "./orchestration/qmd-result-resolver.js";
|
|
108
112
|
import { ContradictionLinkingCoordinator } from "./orchestration/contradiction-linking-coordinator.js";
|
|
109
113
|
import {
|
|
@@ -126,6 +130,10 @@ import { RecallEntryCoordinator } from "./orchestration/recall-entry.js";
|
|
|
126
130
|
import { SessionContextCoordinator } from "./orchestration/session-context.js";
|
|
127
131
|
import { drainRecallWrites, trackRecallWrite } from "./orchestration/recall-background-writes.js";
|
|
128
132
|
import { XrayCaptureQueue } from "./orchestration/xray-capture-queue.js";
|
|
133
|
+
import {
|
|
134
|
+
computeSemanticDedupScope,
|
|
135
|
+
qmdCollectionNamespaceFromPrefix as computeQmdCollectionNamespaceFromPrefix,
|
|
136
|
+
} from "./orchestration/orchestrator-namespace-scope.js";
|
|
129
137
|
import {
|
|
130
138
|
abortRecallError,
|
|
131
139
|
buildCompressionGuidelinesMarkdown,
|
|
@@ -275,6 +283,7 @@ import {
|
|
|
275
283
|
} from "./dedup/semantic.js";
|
|
276
284
|
import { BootstrapEngine } from "./bootstrap.js";
|
|
277
285
|
import { parseQmdExplain } from "./qmd.js";
|
|
286
|
+
import { installPrioritizedEmbedding, type PrioritizedEmbeddingHandle } from "./prioritized-embed.js";
|
|
278
287
|
import {
|
|
279
288
|
buildQmdRecallCacheKey,
|
|
280
289
|
getCachedQmdRecall,
|
|
@@ -364,7 +373,6 @@ import { resolveNamespaceCapabilities,
|
|
|
364
373
|
resolveIdentityContinuityCapabilities,
|
|
365
374
|
resolveLocalLlmCapabilities,
|
|
366
375
|
resolveSecurityCapabilities, resolveEvalCapabilities, resolveUtilityLearningCapabilities, resolveObjectiveStateCapabilities, resolveCompressionCapabilities, resolvePresentationCapabilities, resolveConsolidationCapabilities, resolveRecallAuxiliaryCapabilities ,
|
|
367
|
-
resolveRecallEnhancementCapabilities,
|
|
368
376
|
resolvePipelineProcessingCapabilities,
|
|
369
377
|
resolveConversationContextCapabilities,
|
|
370
378
|
} from "./capabilities.js";
|
|
@@ -437,7 +445,6 @@ import {
|
|
|
437
445
|
type NamespaceMaintenanceHealthSummary,
|
|
438
446
|
} from "./maintenance/namespace-maintenance-fanout.js";
|
|
439
447
|
import {
|
|
440
|
-
namespaceIdentityFromToken,
|
|
441
448
|
namespaceIdentityToken,
|
|
442
449
|
normalizeNamespaceIdentity,
|
|
443
450
|
} from "./namespaces/identity.js";
|
|
@@ -535,15 +542,12 @@ import type {
|
|
|
535
542
|
} from "./types.js";
|
|
536
543
|
import { disposeDefaultArchiveScoring, getDefaultArchiveScoring, memoryFileToScoreItem } from "./recall/archive-scoring.js";
|
|
537
544
|
|
|
538
|
-
|
|
539
545
|
// Issue #1526 seam 15: ExtractionRunResult moved to orchestration/extraction-run.ts.
|
|
540
546
|
export type { ExtractionRunResult } from "./orchestration/extraction-run.js";
|
|
541
547
|
|
|
542
|
-
|
|
543
548
|
// Issue #1526 seam 15: deriveTopicsFromExtraction moved to orchestration/extraction-run.ts.
|
|
544
549
|
export { deriveTopicsFromExtraction } from "./orchestration/extraction-run.js";
|
|
545
550
|
|
|
546
|
-
|
|
547
551
|
export class Orchestrator {
|
|
548
552
|
|
|
549
553
|
readonly storage: StorageManager;
|
|
@@ -560,6 +564,7 @@ export class Orchestrator {
|
|
|
560
564
|
* runners (consolidation/pattern-reinforcement/governance) stay here.
|
|
561
565
|
*/
|
|
562
566
|
readonly maintenanceScheduler: MaintenanceScheduler;
|
|
567
|
+
private prioritizedEmbedding?: PrioritizedEmbeddingHandle;
|
|
563
568
|
private readonly conversationQmd?: ConversationQmdRuntime;
|
|
564
569
|
private readonly conversationFaiss?: ReturnType<
|
|
565
570
|
typeof createConversationIndexRuntime
|
|
@@ -604,7 +609,6 @@ export class Orchestrator {
|
|
|
604
609
|
get fastGatewayLlm(): FallbackLlmClient | null {
|
|
605
610
|
return this._fastGatewayLlm;
|
|
606
611
|
}
|
|
607
|
-
|
|
608
612
|
getConsoleFaithfulnessDistribution(): FaithfulnessGateCounters | undefined {
|
|
609
613
|
return this.recallIntrospection.getConsoleFaithfulnessDistribution(
|
|
610
614
|
);
|
|
@@ -701,7 +705,13 @@ export class Orchestrator {
|
|
|
701
705
|
// Batched access-tracking counts and timestamps (Phase 1A).
|
|
702
706
|
private accessTrackingBuffer: Map<
|
|
703
707
|
string,
|
|
704
|
-
{
|
|
708
|
+
{
|
|
709
|
+
memoryId: string;
|
|
710
|
+
memoryPath?: string;
|
|
711
|
+
namespace?: string;
|
|
712
|
+
count: number;
|
|
713
|
+
lastAccessed: string;
|
|
714
|
+
}
|
|
705
715
|
> = new Map();
|
|
706
716
|
|
|
707
717
|
// Passive correction capture (issue #1581) — dedup state + lazy service.
|
|
@@ -822,6 +832,7 @@ export class Orchestrator {
|
|
|
822
832
|
hasContentHashDedup: (targetStorage, content) => this.hasContentHashDedup(targetStorage, content),
|
|
823
833
|
backfillTemporalBoundsOnDedupHit: (targetStorage, dedupContent, bounds, entityRef, sourceConnector) =>
|
|
824
834
|
this.backfillTemporalBoundsOnDedupHit(targetStorage, dedupContent, bounds, entityRef, sourceConnector),
|
|
835
|
+
// Removal-aware reconciling save serializes append vs removal (issue #1909).
|
|
825
836
|
saveContentHashIndexes: () => this.saveContentHashIndexes(),
|
|
826
837
|
artifactTypeForCategory: (category) => this.artifactTypeForCategory(category),
|
|
827
838
|
loadRoutingRules: () => this.loadRoutingRules(),
|
|
@@ -927,12 +938,10 @@ export class Orchestrator {
|
|
|
927
938
|
this.deferredInitAbort = null;
|
|
928
939
|
}
|
|
929
940
|
}
|
|
930
|
-
|
|
931
941
|
/** Track a recall-side write so destroy() can wait for it before teardown. @internal */
|
|
932
942
|
trackRecallBackgroundWrite(promise: Promise<void>, label: string): void {
|
|
933
943
|
trackRecallWrite(this, promise, label);
|
|
934
944
|
}
|
|
935
|
-
|
|
936
945
|
/**
|
|
937
946
|
* Stop background initialization and release runtime-owned handles.
|
|
938
947
|
* Long-lived hosts should call this from their shutdown path; one-shot
|
|
@@ -948,28 +957,63 @@ export class Orchestrator {
|
|
|
948
957
|
}
|
|
949
958
|
this.maintenanceScheduler.dispose();
|
|
950
959
|
await drainRecallWrites(this);
|
|
951
|
-
//
|
|
952
|
-
//
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
960
|
+
// PR #2016 finding 3: drain any deferred lock-timeout hash-index retries so a
|
|
961
|
+
// short-lived writer's durable fact hash reaches disk before the process
|
|
962
|
+
// exits. The per-index background retry is unref'd (it never keeps a
|
|
963
|
+
// long-lived host alive), so a one-shot CLI could exit before it fires; this
|
|
964
|
+
// drives it to completion inline at the shutdown boundary. Best-effort.
|
|
965
|
+
await this.persistenceIndexCoordinator
|
|
966
|
+
.drainContentHashReconcileRetries()
|
|
967
|
+
.catch((err) => log.warn(`content-hash reconcile drain failed during destroy: ${err}`));
|
|
968
|
+
// Issue #1909: persist any turns buffered within the debounce window BEFORE
|
|
969
|
+
// flushing catalog touches (review round 11 finding 2). The buffer save fires
|
|
970
|
+
// a coalesced namespace-catalog touch on an unref'd timer; flushing touches
|
|
971
|
+
// first would let that shutdown-time touch queue after the flush and be lost.
|
|
972
|
+
// Ordering it before flushPendingTouches folds the buffer-save's touch into
|
|
973
|
+
// the flush below so both settle before destroy() returns.
|
|
974
|
+
//
|
|
975
|
+
// Graceful-shutdown durability contract (review round 14): the flush runs
|
|
976
|
+
// with throwOnFailure so a failed buffer write is NOT silently swallowed.
|
|
977
|
+
// flushPendingSave keeps the save pending on failure (in-memory turns are
|
|
978
|
+
// retained), so we finish the rest of teardown in a finally block and then
|
|
979
|
+
// rethrow — the host learns buffered turns did not reach disk instead of
|
|
980
|
+
// destroy() reporting a clean shutdown and losing them on exit.
|
|
981
|
+
let bufferFlushError: unknown;
|
|
982
|
+
try {
|
|
983
|
+
await this.buffer.flushPendingSave({ throwOnFailure: true });
|
|
984
|
+
} catch (err) {
|
|
985
|
+
bufferFlushError = err;
|
|
986
|
+
}
|
|
987
|
+
try {
|
|
988
|
+
// Issue #1903: flush any coalesced namespace-catalog touches before teardown
|
|
989
|
+
// so a long-lived host does not drop buffered read/write timestamps.
|
|
990
|
+
await this.namespaceCatalog.flushPendingTouches().catch(() => undefined);
|
|
991
|
+
this.prioritizedEmbedding?.dispose();
|
|
992
|
+
await this.namespaceSearchRouter.dispose();
|
|
993
|
+
await (this.qmd as { dispose?: () => void | Promise<void> }).dispose?.();
|
|
994
|
+
if (this.conversationQmd && this.conversationQmd !== this.qmd) {
|
|
995
|
+
await (this.conversationQmd as { dispose?: () => void | Promise<void> }).dispose?.();
|
|
996
|
+
}
|
|
997
|
+
// Issue #1674: terminate archive-scoring worker threads on destroy.
|
|
998
|
+
await disposeDefaultArchiveScoring();
|
|
999
|
+
} finally {
|
|
1000
|
+
if (bufferFlushError !== undefined) {
|
|
1001
|
+
log.warn(
|
|
1002
|
+
`orchestrator.destroy: buffer flush failed; pending turns retained in memory but not persisted: ${String(bufferFlushError)}`,
|
|
1003
|
+
);
|
|
1004
|
+
throw bufferFlushError;
|
|
1005
|
+
}
|
|
958
1006
|
}
|
|
959
|
-
// Issue #1674: terminate archive-scoring worker threads on destroy.
|
|
960
|
-
await disposeDefaultArchiveScoring();
|
|
961
1007
|
}
|
|
962
1008
|
|
|
963
1009
|
/** Set per-session workspace for the next recall() call (compaction reset). @internal */
|
|
964
1010
|
setRecallWorkspaceOverride(sessionKey: string, dir: string): void {
|
|
965
1011
|
this._recallWorkspaceOverrides.set(sessionKey, dir);
|
|
966
1012
|
}
|
|
967
|
-
|
|
968
1013
|
/** Remove a per-session workspace selection (cleanup on error or early return). @internal */
|
|
969
1014
|
clearRecallWorkspaceOverride(sessionKey: string): void {
|
|
970
1015
|
this._recallWorkspaceOverrides.delete(sessionKey);
|
|
971
1016
|
}
|
|
972
|
-
|
|
973
1017
|
resolvePrincipal(sessionKey?: string): string | undefined {
|
|
974
1018
|
return resolvePrincipal(sessionKey, this.config);
|
|
975
1019
|
}
|
|
@@ -1249,23 +1293,26 @@ export class Orchestrator {
|
|
|
1249
1293
|
): Promise<ContentHashIndex | null> {
|
|
1250
1294
|
if (!resolveRecallAuxiliaryCapabilities(this.config).factDeduplication) return null;
|
|
1251
1295
|
|
|
1296
|
+
// Round 12: share the StorageManager's corpus-AUTHORITATIVE fact-hash index
|
|
1297
|
+
// (rebuilt from the .md corpus on first use per process) instead of loading a
|
|
1298
|
+
// separate, possibly-stale fact-hashes.txt. This makes the orchestrator's
|
|
1299
|
+
// dedup layer and StorageManager.hasFactContentHash() one coherent source:
|
|
1300
|
+
// after a crash before the deferred batch save, the restart rebuild includes
|
|
1301
|
+
// the durable fact, so hasContentHashDedup() sees it and persistExtraction
|
|
1302
|
+
// does not re-create it. We still cache the reference so saveContentHashIndexes
|
|
1303
|
+
// persists exactly the shared instance.
|
|
1304
|
+
// PR #2016: use the shared (best-effort) accessor, not the throwing
|
|
1305
|
+
// authoritative one — the shared instance must be available for registration
|
|
1306
|
+
// add/remove even under lock contention (it reconciles to disk via the
|
|
1307
|
+
// deferred retry). The dedup READ path (extraction-persist) gates a MISS on
|
|
1308
|
+
// isFactContentHashAuthoritative() and confirms against the corpus, so a
|
|
1309
|
+
// non-authoritative snapshot never causes a false dedup miss.
|
|
1310
|
+
const index = await targetStorage.getSharedFactHashIndex();
|
|
1252
1311
|
if (targetStorage.dir === this.storage.dir) {
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
}
|
|
1257
|
-
return this.contentHashIndex;
|
|
1312
|
+
this.contentHashIndex = index;
|
|
1313
|
+
} else {
|
|
1314
|
+
this.contentHashIndexesByStorageDir.set(targetStorage.dir, index);
|
|
1258
1315
|
}
|
|
1259
|
-
|
|
1260
|
-
const cached = this.contentHashIndexesByStorageDir.get(targetStorage.dir);
|
|
1261
|
-
if (cached) return cached;
|
|
1262
|
-
|
|
1263
|
-
const index = targetStorage.createContentHashIndex();
|
|
1264
|
-
await index.load();
|
|
1265
|
-
this.contentHashIndexesByStorageDir.set(targetStorage.dir, index);
|
|
1266
|
-
log.info(
|
|
1267
|
-
`content-hash dedup: loaded ${index.size} hashes for storage ${targetStorage.dir}`,
|
|
1268
|
-
);
|
|
1269
1316
|
return index;
|
|
1270
1317
|
}
|
|
1271
1318
|
|
|
@@ -1327,8 +1374,7 @@ export class Orchestrator {
|
|
|
1327
1374
|
}
|
|
1328
1375
|
|
|
1329
1376
|
private async saveContentHashIndexes(): Promise<void> {
|
|
1330
|
-
return this.persistenceIndexCoordinator.saveContentHashIndexes(
|
|
1331
|
-
);
|
|
1377
|
+
return this.persistenceIndexCoordinator.saveContentHashIndexes();
|
|
1332
1378
|
}
|
|
1333
1379
|
|
|
1334
1380
|
constructor(config: PluginConfig) {
|
|
@@ -1338,12 +1384,16 @@ export class Orchestrator {
|
|
|
1338
1384
|
// — including the ephemeral ones recall sub-stages build over the same dir
|
|
1339
1385
|
// — honors the operator's setting. Destructured (not `config.<flag>`) so
|
|
1340
1386
|
// this single access-layer read stays off the scattered-flag ratchet.
|
|
1341
|
-
const { hotMemoriesCacheEnabled } = config;
|
|
1387
|
+
const { hotMemoriesCacheEnabled, scopedCacheInvalidationEnabled } = config;
|
|
1342
1388
|
StorageManager.setHotMemoriesCacheDefault(
|
|
1343
1389
|
config.memoryDir,
|
|
1344
1390
|
hotMemoriesCacheEnabled,
|
|
1345
1391
|
config.hotMemoriesCacheTtlMs,
|
|
1346
1392
|
);
|
|
1393
|
+
// Register the #1904 scope-invalidation gate for this dir so every
|
|
1394
|
+
// StorageManager over it (including ephemeral recall sub-stage instances)
|
|
1395
|
+
// honors the operator's rollback lever.
|
|
1396
|
+
StorageManager.setScopedCacheInvalidationDefault(config.memoryDir, scopedCacheInvalidationEnabled);
|
|
1347
1397
|
this.profiler = new ProfilingCollector({
|
|
1348
1398
|
enabled: resolvePipelineProcessingCapabilities(this.config).profiling,
|
|
1349
1399
|
storageDir: config.profilingStorageDir || path.join(config.memoryDir, "profiling"),
|
|
@@ -1414,15 +1464,28 @@ export class Orchestrator {
|
|
|
1414
1464
|
// and writes will throw SecureStoreLockedError via resolveWriteKey().
|
|
1415
1465
|
}
|
|
1416
1466
|
this.qmd = createSearchBackend(config);
|
|
1467
|
+
// #2019: prioritized embedding for write-path searchability.
|
|
1468
|
+
const qmdCaps = resolveQmdCapabilities(config);
|
|
1469
|
+
if (qmdCaps.qmd && qmdCaps.qmdAutoEmbed) {
|
|
1470
|
+
this.prioritizedEmbedding = installPrioritizedEmbedding(
|
|
1471
|
+
(namespace) => this.namespaceSearchRouter.backendForNamespace(namespace),
|
|
1472
|
+
(msg) => log.debug(msg),
|
|
1473
|
+
);
|
|
1474
|
+
const defaultNs = this.config.defaultNamespace;
|
|
1475
|
+
this.storage.onMemoryWrite = (filePath) => this.prioritizedEmbedding?.enqueue(filePath, defaultNs);
|
|
1476
|
+
this.storageRouter.onStorageCreated = (storage, namespace) => {
|
|
1477
|
+
storage.onMemoryWrite = (filePath) => this.prioritizedEmbedding?.enqueue(filePath, namespace);
|
|
1478
|
+
};
|
|
1479
|
+
this.storageRouter.forEachCachedStorage((storage, namespace) => {
|
|
1480
|
+
storage.onMemoryWrite = (filePath) => this.prioritizedEmbedding?.enqueue(filePath, namespace);
|
|
1481
|
+
});
|
|
1482
|
+
}
|
|
1417
1483
|
this.maintenanceScheduler = new MaintenanceScheduler({
|
|
1418
1484
|
config,
|
|
1419
|
-
// Live accessor: the orchestrator reassigns this.qmd to NoopSearchBackend
|
|
1420
|
-
// after construction when the collection is missing (initialize /
|
|
1421
|
-
// startupSearchSync); the scheduler must read the current backend so
|
|
1422
|
-
// debounced maintenance never runs against a stale/disposed one.
|
|
1423
1485
|
getQmd: () => this.qmd,
|
|
1424
1486
|
namespaceSearchRouter: this.namespaceSearchRouter,
|
|
1425
1487
|
namespaceCatalog: this.namespaceCatalog,
|
|
1488
|
+
getStorage: () => this.storage, storageForNamespace: (namespace) => this.storageRouter.storageFor(namespace),
|
|
1426
1489
|
});
|
|
1427
1490
|
// Issue #1526: background extraction queue lives on its own coordinator.
|
|
1428
1491
|
this.extractionQueueCoordinator = new ExtractionQueueCoordinator();
|
|
@@ -1457,8 +1520,8 @@ export class Orchestrator {
|
|
|
1457
1520
|
this.recallRerankCoordinator = new RecallRerankCoordinator({
|
|
1458
1521
|
getConfig: () => this.config,
|
|
1459
1522
|
getStorage: (namespace) => this.getStorage(namespace),
|
|
1460
|
-
readQmdResultMemory: (resultPath, fallbackStorage, recallNamespaces) =>
|
|
1461
|
-
this.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces),
|
|
1523
|
+
readQmdResultMemory: (resultPath, fallbackStorage, recallNamespaces, preferredNamespace) =>
|
|
1524
|
+
this.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces, preferredNamespace),
|
|
1462
1525
|
});
|
|
1463
1526
|
this.recallSectionCoordinator = new RecallSectionCoordinator({
|
|
1464
1527
|
getConfig: () => this.config,
|
|
@@ -1484,12 +1547,15 @@ export class Orchestrator {
|
|
|
1484
1547
|
this.resolveColdQmdResultForRecall(result, fallbackStorage, recallNamespaces),
|
|
1485
1548
|
storageForAbsoluteQmdResultPath: (resultPath, fallbackStorage, recallNamespaces) =>
|
|
1486
1549
|
this.storageForAbsoluteQmdResultPath(resultPath, fallbackStorage, recallNamespaces),
|
|
1487
|
-
readQmdResultMemory: (resultPath, fallbackStorage, recallNamespaces) =>
|
|
1488
|
-
this.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces),
|
|
1550
|
+
readQmdResultMemory: (resultPath, fallbackStorage, recallNamespaces, preferredNamespace) =>
|
|
1551
|
+
this.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces, preferredNamespace),
|
|
1489
1552
|
});
|
|
1490
1553
|
this.relevance = new RelevanceStore(config.memoryDir);
|
|
1491
1554
|
this.negatives = new NegativeExampleStore(config.memoryDir);
|
|
1492
|
-
this.lastRecall = new LastRecallStore(config.memoryDir
|
|
1555
|
+
this.lastRecall = new LastRecallStore(config.memoryDir, {
|
|
1556
|
+
impressionsRotateBytes: config.recallImpressionsRotateBytes,
|
|
1557
|
+
impressionsRotateKeep: config.recallImpressionsRotateKeep,
|
|
1558
|
+
});
|
|
1493
1559
|
this.handleHistory = new RecallHandleHistoryStore(config.memoryDir, {
|
|
1494
1560
|
maxDepth: config.recallHandleSnapshotDepth,
|
|
1495
1561
|
});
|
|
@@ -1512,6 +1578,7 @@ export class Orchestrator {
|
|
|
1512
1578
|
config.hotMemoriesCacheEnabled,
|
|
1513
1579
|
config.hotMemoriesCacheTtlMs,
|
|
1514
1580
|
);
|
|
1581
|
+
StorageManager.setScopedCacheInvalidationDefault(parentDir, scopedCacheInvalidationEnabled);
|
|
1515
1582
|
return new StorageManager(parentDir, config.entitySchemas, config.hotMemoriesCacheEnabled);
|
|
1516
1583
|
},
|
|
1517
1584
|
});
|
|
@@ -1531,7 +1598,7 @@ export class Orchestrator {
|
|
|
1531
1598
|
getConfig: () => this.config,
|
|
1532
1599
|
storageFor: (namespace) => this.storageRouter.storageFor(namespace),
|
|
1533
1600
|
storageDirNamespace: (storageDir) => this.storageDirNamespace(storageDir),
|
|
1534
|
-
qmdCollectionNamespaceFromPrefix: (prefix) => this.
|
|
1601
|
+
qmdCollectionNamespaceFromPrefix: (prefix) => computeQmdCollectionNamespaceFromPrefix(prefix, this.config),
|
|
1535
1602
|
namespaceFromPath: (p) => this.namespaceFromPath(p),
|
|
1536
1603
|
});
|
|
1537
1604
|
|
|
@@ -2004,7 +2071,6 @@ export class Orchestrator {
|
|
|
2004
2071
|
});
|
|
2005
2072
|
}
|
|
2006
2073
|
|
|
2007
|
-
|
|
2008
2074
|
async applyBehaviorRuntimePolicy(
|
|
2009
2075
|
state: BehaviorLoopPolicyState,
|
|
2010
2076
|
): Promise<{
|
|
@@ -2605,14 +2671,16 @@ export class Orchestrator {
|
|
|
2605
2671
|
}
|
|
2606
2672
|
|
|
2607
2673
|
private appendRecallSection(
|
|
2608
|
-
sectionBuckets:
|
|
2674
|
+
sectionBuckets: RecallSectionBuckets,
|
|
2609
2675
|
sectionId: string,
|
|
2610
2676
|
content: string,
|
|
2677
|
+
options?: RecallSectionAppendOptions,
|
|
2611
2678
|
): boolean {
|
|
2612
2679
|
return this.recallSectionCoordinator.appendRecallSection(
|
|
2613
2680
|
sectionBuckets,
|
|
2614
2681
|
sectionId,
|
|
2615
2682
|
content,
|
|
2683
|
+
options,
|
|
2616
2684
|
);
|
|
2617
2685
|
}
|
|
2618
2686
|
|
|
@@ -2631,7 +2699,7 @@ export class Orchestrator {
|
|
|
2631
2699
|
}
|
|
2632
2700
|
|
|
2633
2701
|
private assembleRecallSections(
|
|
2634
|
-
sectionBuckets:
|
|
2702
|
+
sectionBuckets: RecallSectionBuckets,
|
|
2635
2703
|
budgetOverride?: number,
|
|
2636
2704
|
): {
|
|
2637
2705
|
sections: string[];
|
|
@@ -2639,6 +2707,10 @@ export class Orchestrator {
|
|
|
2639
2707
|
omittedIds: string[];
|
|
2640
2708
|
truncated: boolean;
|
|
2641
2709
|
finalChars: number;
|
|
2710
|
+
includedMemoryIds: string[];
|
|
2711
|
+
includedMemoryPaths: string[];
|
|
2712
|
+
includedMemoryNamespaces: Array<string | undefined>;
|
|
2713
|
+
omittedMemoryIds: string[];
|
|
2642
2714
|
} {
|
|
2643
2715
|
return this.recallSectionCoordinator.assembleRecallSections(
|
|
2644
2716
|
sectionBuckets,
|
|
@@ -2646,7 +2718,6 @@ export class Orchestrator {
|
|
|
2646
2718
|
);
|
|
2647
2719
|
}
|
|
2648
2720
|
|
|
2649
|
-
|
|
2650
2721
|
/**
|
|
2651
2722
|
* Clock source for the shared post-retrieval assembly/enrichment budget. The
|
|
2652
2723
|
* deadline is set from this value and every expiry check reads it back, so a
|
|
@@ -3084,8 +3155,7 @@ export class Orchestrator {
|
|
|
3084
3155
|
requestQmdMaintenanceForTool(reason: string): void {
|
|
3085
3156
|
this.maintenanceScheduler.requestQmdMaintenanceForTool(reason);
|
|
3086
3157
|
}
|
|
3087
|
-
|
|
3088
|
-
private async persistExtraction(
|
|
3158
|
+
async persistExtraction(
|
|
3089
3159
|
result: ExtractionResult,
|
|
3090
3160
|
storage: StorageManager,
|
|
3091
3161
|
threadIdForExtraction?: string | null,
|
|
@@ -3096,8 +3166,8 @@ export class Orchestrator {
|
|
|
3096
3166
|
sourceText?: string,
|
|
3097
3167
|
graphCaps: GraphConstructionCapabilitySet = resolveGraphConstructionCapabilities(this.config),
|
|
3098
3168
|
lifecycleCaps: MemoryLifecycleCapabilitySet = resolveMemoryLifecycleCapabilities(this.config),
|
|
3099
|
-
): Promise<string[]> {
|
|
3100
|
-
|
|
3169
|
+
): Promise<{ persistedIds: string[]; memoryPathById: Map<string, string> }> {
|
|
3170
|
+
const { persistedIds, memoryPathById } = await this.extractionPersistCoordinator.persistExtraction(
|
|
3101
3171
|
result,
|
|
3102
3172
|
storage,
|
|
3103
3173
|
threadIdForExtraction,
|
|
@@ -3108,6 +3178,7 @@ export class Orchestrator {
|
|
|
3108
3178
|
graphCaps,
|
|
3109
3179
|
lifecycleCaps,
|
|
3110
3180
|
);
|
|
3181
|
+
return { persistedIds, memoryPathById };
|
|
3111
3182
|
}
|
|
3112
3183
|
/**
|
|
3113
3184
|
* Append persisted ids to the thread episode set, excluding pending_review
|
|
@@ -3210,7 +3281,6 @@ export class Orchestrator {
|
|
|
3210
3281
|
return this.compressionGuidelineCoordinator.buildCompressionGuidelineRecallSection();
|
|
3211
3282
|
}
|
|
3212
3283
|
|
|
3213
|
-
|
|
3214
3284
|
async runLifecyclePolicyNow(storage: StorageManager = this.storage): Promise<{ memoriesAssessed: number }> {
|
|
3215
3285
|
const lifecycleCorpus = await storage.readAllMemories();
|
|
3216
3286
|
// Record the catalog write when the pass rewrote any frontmatter (codex NR-tS).
|
|
@@ -3345,7 +3415,7 @@ export class Orchestrator {
|
|
|
3345
3415
|
private publishRecallResults(options: {
|
|
3346
3416
|
title: string;
|
|
3347
3417
|
results: QmdSearchResult[];
|
|
3348
|
-
sectionBuckets:
|
|
3418
|
+
sectionBuckets: RecallSectionBuckets;
|
|
3349
3419
|
retrievalQuery: string;
|
|
3350
3420
|
sessionKey: string | undefined;
|
|
3351
3421
|
identityInjection?: {
|
|
@@ -3370,41 +3440,13 @@ export class Orchestrator {
|
|
|
3370
3440
|
);
|
|
3371
3441
|
}
|
|
3372
3442
|
|
|
3373
|
-
/**
|
|
3374
|
-
* Apply MMR over the pre-truncation recall candidate pool and then slice
|
|
3375
|
-
* the result to `limit`. This is the single place in the pipeline where
|
|
3376
|
-
* MMR runs, and it must be called *before* callers throw away candidates
|
|
3377
|
-
* that would otherwise sit below the final cutoff. Running MMR post-slice
|
|
3378
|
-
* is a no-op in the cases we care about — diverse candidates just below
|
|
3379
|
-
* the cutoff are already gone and can never be promoted.
|
|
3380
|
-
*
|
|
3381
|
-
* Callers must pass the full candidate pool (post-rerank, pre-slice).
|
|
3382
|
-
*/
|
|
3383
|
-
private qmdCollectionNamespaceFromPrefix(collectionPrefix: string): string | null {
|
|
3384
|
-
const baseCollection = this.config.qmdCollection;
|
|
3385
|
-
if (collectionPrefix === baseCollection) return this.config.defaultNamespace;
|
|
3386
|
-
const namespaceSuffix = collectionPrefix.startsWith(`${baseCollection}--`)
|
|
3387
|
-
? collectionPrefix.slice(baseCollection.length + 2)
|
|
3388
|
-
: "";
|
|
3389
|
-
if (!namespaceSuffix) return null;
|
|
3390
|
-
|
|
3391
|
-
const decoded = namespaceIdentityFromToken(namespaceSuffix);
|
|
3392
|
-
if (decoded !== null) return decoded || this.config.defaultNamespace;
|
|
3393
|
-
if (namespaceSuffix.startsWith("ns--")) {
|
|
3394
|
-
const legacyNamespace = namespaceSuffix.slice("ns--".length).trim();
|
|
3395
|
-
return legacyNamespace || null;
|
|
3396
|
-
}
|
|
3397
|
-
return null;
|
|
3398
|
-
}
|
|
3399
|
-
|
|
3400
|
-
// Issue #1526 seam 11: QMD result-resolution methods moved to QmdResultResolver.
|
|
3401
|
-
// Thin delegation keeps the private API stable for callers + tests.
|
|
3402
3443
|
private async readQmdResultMemory(
|
|
3403
3444
|
resultPath: string,
|
|
3404
3445
|
fallbackStorage: StorageManager,
|
|
3405
3446
|
recallNamespaces: readonly string[] = [],
|
|
3447
|
+
preferredNamespace?: string,
|
|
3406
3448
|
): Promise<MemoryFile | null> {
|
|
3407
|
-
return this.qmdResultResolver.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces);
|
|
3449
|
+
return this.qmdResultResolver.readQmdResultMemory(resultPath, fallbackStorage, recallNamespaces, preferredNamespace);
|
|
3408
3450
|
}
|
|
3409
3451
|
|
|
3410
3452
|
private async resolveColdQmdResultForRecall(
|
|
@@ -3428,18 +3470,20 @@ export class Orchestrator {
|
|
|
3428
3470
|
private async applyMemoryWorthRerank(
|
|
3429
3471
|
results: QmdSearchResult[],
|
|
3430
3472
|
namespaces: string[],
|
|
3473
|
+
preloadedFrontmatter?: ReadonlyMap<string, MemoryFile>,
|
|
3431
3474
|
): Promise<QmdSearchResult[]> {
|
|
3432
|
-
return this.recallRerankCoordinator.applyMemoryWorthRerank(results, namespaces);
|
|
3475
|
+
return this.recallRerankCoordinator.applyMemoryWorthRerank(results, namespaces, preloadedFrontmatter);
|
|
3433
3476
|
}
|
|
3434
3477
|
|
|
3435
3478
|
private async applyTrustScoreRerank(
|
|
3436
3479
|
results: QmdSearchResult[],
|
|
3437
3480
|
namespaces: string[],
|
|
3481
|
+
preloadedFrontmatter?: ReadonlyMap<string, MemoryFile>,
|
|
3438
3482
|
): Promise<{
|
|
3439
3483
|
results: QmdSearchResult[];
|
|
3440
3484
|
trustByPath: Map<string, TrustStageResultItem> | null;
|
|
3441
3485
|
}> {
|
|
3442
|
-
return this.recallRerankCoordinator.applyTrustScoreRerank(results, namespaces);
|
|
3486
|
+
return this.recallRerankCoordinator.applyTrustScoreRerank(results, namespaces, preloadedFrontmatter);
|
|
3443
3487
|
}
|
|
3444
3488
|
|
|
3445
3489
|
private async applyTrustScoreToBranch(
|
|
@@ -3447,11 +3491,20 @@ export class Orchestrator {
|
|
|
3447
3491
|
namespaces: string[],
|
|
3448
3492
|
caps: CapabilitySet,
|
|
3449
3493
|
label: string,
|
|
3494
|
+
preloadedFrontmatter?: ReadonlyMap<string, MemoryFile>,
|
|
3495
|
+
abortSignal?: AbortSignal,
|
|
3450
3496
|
): Promise<{
|
|
3451
3497
|
results: QmdSearchResult[];
|
|
3452
3498
|
trustByPath: Map<string, TrustStageResultItem> | null;
|
|
3453
3499
|
}> {
|
|
3454
|
-
return this.recallRerankCoordinator.applyTrustScoreToBranch(
|
|
3500
|
+
return this.recallRerankCoordinator.applyTrustScoreToBranch(
|
|
3501
|
+
results,
|
|
3502
|
+
namespaces,
|
|
3503
|
+
caps,
|
|
3504
|
+
label,
|
|
3505
|
+
preloadedFrontmatter,
|
|
3506
|
+
abortSignal,
|
|
3507
|
+
);
|
|
3455
3508
|
}
|
|
3456
3509
|
|
|
3457
3510
|
private diversifyAndLimitRecallResults(
|
|
@@ -3480,13 +3533,17 @@ export class Orchestrator {
|
|
|
3480
3533
|
finalContextChars?: number;
|
|
3481
3534
|
truncated?: boolean;
|
|
3482
3535
|
includedSections?: string[];
|
|
3536
|
+
includedMemoryIds?: string[];
|
|
3537
|
+
includedMemoryPaths?: string[];
|
|
3538
|
+
includedMemoryNamespaces?: Array<string | undefined>;
|
|
3539
|
+
omittedMemoryIds?: string[];
|
|
3483
3540
|
omittedSections?: string[];
|
|
3484
3541
|
}): LastRecallBudgetSummary {
|
|
3485
3542
|
return this.recallSectionCoordinator.buildLastRecallBudgetSummary(options);
|
|
3486
3543
|
}
|
|
3487
3544
|
|
|
3488
3545
|
private collectLastRecallSources(
|
|
3489
|
-
sectionBuckets:
|
|
3546
|
+
sectionBuckets: RecallSectionBuckets,
|
|
3490
3547
|
recallSource:
|
|
3491
3548
|
| "none"
|
|
3492
3549
|
| "hot_qmd"
|
|
@@ -3530,34 +3587,7 @@ export class Orchestrator {
|
|
|
3530
3587
|
pathPrefix?: string;
|
|
3531
3588
|
pathExcludePrefixes?: readonly string[];
|
|
3532
3589
|
} {
|
|
3533
|
-
|
|
3534
|
-
const memoryDir = path.resolve(this.config.memoryDir);
|
|
3535
|
-
const storageDir = path.resolve(targetStorage.dir);
|
|
3536
|
-
if (storageDir === memoryDir) {
|
|
3537
|
-
// Default namespace at legacy root. Include everything that isn't
|
|
3538
|
-
// under `namespaces/*` (those belong to other namespaces).
|
|
3539
|
-
return { pathExcludePrefixes: ["namespaces/"] };
|
|
3540
|
-
}
|
|
3541
|
-
let rel = path.relative(memoryDir, storageDir);
|
|
3542
|
-
if (!rel || rel.startsWith("..")) {
|
|
3543
|
-
// Round 12 fix (PR #399 thread PRRT_kwDORJXyws56U6Gj): when
|
|
3544
|
-
// targetStorage.dir is outside memoryDir (custom namespace routing),
|
|
3545
|
-
// toMemoryRelativePath() stores the absolute file path in the index
|
|
3546
|
-
// rather than a memoryDir-relative path. Return the absolute storageDir
|
|
3547
|
-
// as the pathPrefix so the search() filter still scopes the lookup to
|
|
3548
|
-
// the correct tenant's files. Previously this returned {} (no scoping),
|
|
3549
|
-
// which let high-similarity hits from other namespaces' absolute-path
|
|
3550
|
-
// entries suppress writes in the target namespace — a cross-tenant
|
|
3551
|
-
// dedup suppression path.
|
|
3552
|
-
log.debug(
|
|
3553
|
-
`semantic dedup: target storage dir ${storageDir} is outside memoryDir ${memoryDir}; scoping lookup to absolute path prefix`,
|
|
3554
|
-
);
|
|
3555
|
-
const absPrefix = storageDir.replace(/\\/g, "/");
|
|
3556
|
-
return { pathPrefix: absPrefix.endsWith("/") ? absPrefix : `${absPrefix}/` };
|
|
3557
|
-
}
|
|
3558
|
-
rel = rel.replace(/\\/g, "/");
|
|
3559
|
-
if (!rel.endsWith("/")) rel = `${rel}/`;
|
|
3560
|
-
return { pathPrefix: rel };
|
|
3590
|
+
return computeSemanticDedupScope(targetStorage, this.config);
|
|
3561
3591
|
}
|
|
3562
3592
|
|
|
3563
3593
|
private async searchEmbeddingFallback(
|
|
@@ -3640,27 +3670,16 @@ export class Orchestrator {
|
|
|
3640
3670
|
* Record that memories were accessed (retrieved).
|
|
3641
3671
|
* Updates are batched in memory and flushed during consolidation.
|
|
3642
3672
|
*/
|
|
3643
|
-
trackMemoryAccess(
|
|
3644
|
-
|
|
3645
|
-
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
|
|
3653
|
-
}
|
|
3654
|
-
|
|
3655
|
-
// Flush if buffer exceeds max size
|
|
3656
|
-
if (
|
|
3657
|
-
this.accessTrackingBuffer.size >= this.config.accessTrackingBufferMaxSize
|
|
3658
|
-
) {
|
|
3659
|
-
this.trackRecallBackgroundWrite(
|
|
3660
|
-
this.flushAccessTracking(),
|
|
3661
|
-
"background access tracking flush",
|
|
3662
|
-
);
|
|
3663
|
-
}
|
|
3673
|
+
trackMemoryAccess(
|
|
3674
|
+
memoryIds: string[],
|
|
3675
|
+
memoryPaths: string[] = [],
|
|
3676
|
+
memoryNamespaces: Array<string | undefined> = [],
|
|
3677
|
+
): void {
|
|
3678
|
+
this.workspaceOpsCoordinator.trackMemoryAccess(
|
|
3679
|
+
memoryIds,
|
|
3680
|
+
memoryPaths,
|
|
3681
|
+
memoryNamespaces,
|
|
3682
|
+
);
|
|
3664
3683
|
}
|
|
3665
3684
|
|
|
3666
3685
|
async flushAccessTracking(): Promise<void> {
|
|
@@ -3753,15 +3772,10 @@ export class Orchestrator {
|
|
|
3753
3772
|
);
|
|
3754
3773
|
}
|
|
3755
3774
|
|
|
3756
|
-
/**
|
|
3757
|
-
* Extract memory IDs from QMD search results for access tracking.
|
|
3758
|
-
*/
|
|
3759
3775
|
private extractMemoryIdsFromResults(results: QmdSearchResult[]): string[] {
|
|
3760
|
-
// QMD results have paths like /path/to/fact-123.md
|
|
3761
|
-
// Extract the ID from the filename
|
|
3762
3776
|
return results
|
|
3763
3777
|
.map((r) => {
|
|
3764
|
-
const match = r.path.match(/([
|
|
3778
|
+
const match = r.path.match(/([^/\\]+)\.md$/);
|
|
3765
3779
|
return match ? match[1] : null;
|
|
3766
3780
|
})
|
|
3767
3781
|
.filter((id): id is string => id !== null);
|
|
@@ -3795,6 +3809,10 @@ export class Orchestrator {
|
|
|
3795
3809
|
return this.lastRecall.get(sessionKey);
|
|
3796
3810
|
}
|
|
3797
3811
|
|
|
3812
|
+
async drainPendingRecallImpressions() {
|
|
3813
|
+
return this.lastRecall.drainPendingImpressions();
|
|
3814
|
+
}
|
|
3815
|
+
|
|
3798
3816
|
/**
|
|
3799
3817
|
* Issue #1582 — resolve a memory handle (`[m:4f2a]` / bare hex) to its memory
|
|
3800
3818
|
* id against THIS session's recent recall history. Returns the id on a unique
|
|
@@ -3942,7 +3960,6 @@ export class Orchestrator {
|
|
|
3942
3960
|
* and inline-note writes were missing from `writtenSince`/maintenance).
|
|
3943
3961
|
*/
|
|
3944
3962
|
|
|
3945
|
-
|
|
3946
3963
|
// markCatalogRead removed — use storageRouter.recordRead() instead (#1522).
|
|
3947
3964
|
|
|
3948
3965
|
private async readAllMemoriesForNamespaces(
|
|
@@ -3952,7 +3969,6 @@ export class Orchestrator {
|
|
|
3952
3969
|
namespaces,
|
|
3953
3970
|
);
|
|
3954
3971
|
}
|
|
3955
|
-
|
|
3956
3972
|
private async readArchivedMemoriesForNamespaces(
|
|
3957
3973
|
namespaces: string[],
|
|
3958
3974
|
): Promise<MemoryFile[]> {
|