@remnic/core 9.69.39 → 9.69.41
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 +16 -14
- package/dist/access-admin-ops-surface.js +75 -74
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +16 -14
- package/dist/access-authorization-probe.js +76 -75
- package/dist/access-boundary.d.ts +16 -14
- package/dist/access-boundary.js +75 -74
- package/dist/access-cli.js +173 -170
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +1 -1
- package/dist/access-extraction-force-flush.d.ts +16 -14
- package/dist/access-extraction-force-flush.js +75 -74
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-briefing.d.ts +16 -14
- package/dist/access-http-briefing.js +76 -75
- package/dist/access-http-lcm-compaction.d.ts +16 -14
- package/dist/access-http-lifecycle-flush.d.ts +16 -14
- package/dist/access-http-offline-stream.d.ts +16 -14
- package/dist/access-http-query.d.ts +2 -2
- package/dist/access-http-query.js +77 -76
- package/dist/access-http.d.ts +17 -15
- package/dist/access-http.js +95 -92
- package/dist/access-identity-continuity-surface.d.ts +13 -12
- package/dist/access-identity-continuity-surface.js +75 -74
- package/dist/access-lcm-surface.d.ts +16 -14
- package/dist/access-lcm-surface.js +75 -74
- package/dist/access-mcp-shared-context-tools.d.ts +156 -0
- package/dist/access-mcp-shared-context-tools.js +8 -0
- package/dist/access-mcp.d.ts +16 -14
- package/dist/access-mcp.js +86 -83
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-DY4z6L5X.d.ts → access-namespace-preflight-DWsMc9Dh.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +75 -74
- package/dist/access-observe-transcript.d.ts +13 -12
- package/dist/access-observe-write-category.d.ts +1 -1
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.d.ts +16 -14
- package/dist/access-observe-write-surface.js +75 -74
- package/dist/access-offline-manifest.d.ts +37 -13
- package/dist/access-offline-manifest.js +15 -11
- package/dist/access-operations-batch.js +79 -77
- package/dist/access-operations.d.ts +16 -14
- package/dist/access-operations.js +84 -82
- package/dist/access-recall-concurrency.d.ts +16 -14
- package/dist/access-recall-concurrency.js +75 -74
- package/dist/access-recall-response.d.ts +16 -14
- package/dist/access-recall-response.js +75 -74
- package/dist/access-recall-surface.d.ts +16 -14
- package/dist/access-recall-surface.js +75 -74
- package/dist/access-schema.d.ts +5 -3
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-MY4bsr_Q.d.ts → access-service-Cisy5YDq.d.ts} +14 -9
- package/dist/access-service-helpers.d.ts +16 -14
- package/dist/access-service.d.ts +16 -14
- package/dist/access-service.js +75 -74
- package/dist/access-surface-catalog.d.ts +16 -14
- package/dist/access-surface-catalog.js +77 -76
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +6 -5
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-memory-bridge.js +3 -3
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +10 -9
- package/dist/active-recall.js.map +1 -1
- package/dist/activity/digest.d.ts +1 -1
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-RP4C6ZPF.js → auto-sync-7PGUFY7U.js} +7 -7
- package/dist/background-generation-config.d.ts +1 -1
- package/dist/background-generation-config.js +3 -1
- package/dist/background-generation.d.ts +1 -1
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +13 -12
- package/dist/briefing-window.d.ts +2 -2
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +23 -23
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/buffer.js +7 -7
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +3 -2
- package/dist/calibration.js +2 -2
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
- package/dist/{capsule-merge-IPG4IOFP.js → capsule-merge-3MNURAQ3.js} +2 -2
- package/dist/{catalog-CW87xGx8.d.ts → catalog-wcX1QhtQ.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +29 -28
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-YFTNZMGR.js → chunk-27NO2KVB.js} +31 -8
- package/dist/chunk-27NO2KVB.js.map +1 -0
- package/dist/{chunk-M6RORUO5.js → chunk-2EYZ32LH.js} +24 -2
- package/dist/{chunk-M6RORUO5.js.map → chunk-2EYZ32LH.js.map} +1 -1
- package/dist/{chunk-XH3HGI2N.js → chunk-2HQPE2NM.js} +2 -2
- package/dist/{chunk-3EKVN2OP.js → chunk-2ZG2LLZT.js} +2 -2
- package/dist/{chunk-6EHM2AV7.js → chunk-3BLHPQHT.js} +5 -5
- package/dist/{chunk-YKREX63Z.js → chunk-3D75XIYO.js} +5 -3
- package/dist/chunk-3D75XIYO.js.map +1 -0
- package/dist/{chunk-J272ODKJ.js → chunk-42DJ235G.js} +2 -2
- package/dist/{chunk-F4EHXVP7.js → chunk-46RII65S.js} +2 -2
- package/dist/{chunk-YUW66UAH.js → chunk-4AX5OYKC.js} +2 -2
- package/dist/{chunk-AECJY3GJ.js → chunk-4IGOLIWM.js} +2 -2
- package/dist/{chunk-2ZTDRNCS.js → chunk-54QPOE45.js} +2 -2
- package/dist/{chunk-O4M4BDIJ.js → chunk-563X6JJX.js} +2 -2
- package/dist/{chunk-IL6ODG6M.js → chunk-5EQT62HH.js} +2 -2
- package/dist/{chunk-JKKII6GX.js → chunk-6MQMYXSQ.js} +2 -2
- package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
- package/dist/{chunk-BV4ZKIZH.js → chunk-7ZLC4DTZ.js} +5 -4
- package/dist/{chunk-WBM2MVBK.js → chunk-A4OIJYCV.js} +2 -2
- package/dist/{chunk-RLJHJQUY.js → chunk-AFJHNHAM.js} +8 -8
- package/dist/{chunk-6YAIN5XJ.js → chunk-AIVRD66I.js} +44 -6
- package/dist/chunk-AIVRD66I.js.map +1 -0
- package/dist/{chunk-OEDW4ER7.js → chunk-AJBWVDRV.js} +2 -1
- package/dist/chunk-AJBWVDRV.js.map +1 -0
- package/dist/{chunk-4RZLTZVM.js → chunk-AKABVXFS.js} +2 -2
- package/dist/{chunk-M6HBPLBA.js → chunk-AUSRUOMQ.js} +2 -2
- package/dist/{chunk-QHT7MOUF.js → chunk-BTPCP535.js} +25 -14
- package/dist/chunk-BTPCP535.js.map +1 -0
- package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
- package/dist/{chunk-Q7CLGFA7.js → chunk-C3G6MW4W.js} +3 -3
- package/dist/{chunk-O76F5QPP.js → chunk-D6PY63OM.js} +2 -2
- package/dist/{chunk-BD7JTBYP.js → chunk-D7MAYFQP.js} +2 -2
- package/dist/{chunk-LMLGBG6H.js → chunk-DBB5JPSL.js} +2 -2
- package/dist/{chunk-TSP5WH72.js → chunk-DIXZQTGY.js} +2 -2
- package/dist/{chunk-P4ZAEYKG.js → chunk-DM5CU5J7.js} +7 -4
- package/dist/chunk-DM5CU5J7.js.map +1 -0
- package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
- package/dist/{chunk-UHRZ324M.js → chunk-E3I3NDUP.js} +4 -4
- package/dist/{chunk-AENM6GKU.js → chunk-E4LMQTST.js} +2 -2
- package/dist/{chunk-YDVAM7S4.js → chunk-EH3HNCAM.js} +13 -8
- package/dist/chunk-EH3HNCAM.js.map +1 -0
- package/dist/{chunk-MUTVRKKY.js → chunk-EMSYMYXO.js} +14 -14
- package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
- package/dist/{chunk-FXHOZGSE.js → chunk-F5H6YG5P.js} +2 -2
- package/dist/{chunk-TRLOFIQC.js → chunk-FGFC2EFR.js} +14 -13
- package/dist/chunk-FGFC2EFR.js.map +1 -0
- package/dist/{chunk-TNSCIPBQ.js → chunk-G6NQ3L4T.js} +2 -2
- package/dist/{chunk-ZMWSYUUL.js → chunk-GCBIXUPT.js} +2 -2
- package/dist/{chunk-EYKIDK33.js → chunk-GMH5QPUU.js} +22 -22
- package/dist/chunk-GMH5QPUU.js.map +1 -0
- package/dist/{chunk-4BCHFSC7.js → chunk-GWNSKQDA.js} +3 -3
- package/dist/{chunk-JDX2OA4R.js → chunk-HNHIHXSD.js} +2 -2
- package/dist/{chunk-GG5FHZJJ.js → chunk-I33QYUAF.js} +6 -6
- package/dist/{chunk-LPYYY4AP.js → chunk-I46BYY7U.js} +653 -328
- package/dist/chunk-I46BYY7U.js.map +1 -0
- package/dist/{chunk-CZTPU65V.js → chunk-ICN37XHG.js} +74 -27
- package/dist/chunk-ICN37XHG.js.map +1 -0
- package/dist/chunk-IFBSZGW3.js +42 -0
- package/dist/chunk-IFBSZGW3.js.map +1 -0
- package/dist/{chunk-AAZEKXUP.js → chunk-IYIPXAIJ.js} +2 -2
- package/dist/{chunk-ACY4ZPF7.js → chunk-J2MGTGKC.js} +10 -5
- package/dist/chunk-J2MGTGKC.js.map +1 -0
- package/dist/chunk-JATHBCAV.js +94 -0
- package/dist/chunk-JATHBCAV.js.map +1 -0
- package/dist/{chunk-5U7K4W6K.js → chunk-JDOBQPJY.js} +3 -3
- package/dist/{chunk-TG3FAM2S.js → chunk-JL4TQYM5.js} +48 -1
- package/dist/{chunk-TG3FAM2S.js.map → chunk-JL4TQYM5.js.map} +1 -1
- package/dist/{chunk-UZZ7SQT3.js → chunk-JMWUPUE6.js} +2 -2
- package/dist/{chunk-ENBPQEVU.js → chunk-JSD7Q7LD.js} +2 -2
- package/dist/{chunk-QTQ6XKGT.js → chunk-K5D2XVNN.js} +4 -4
- package/dist/chunk-K5D2XVNN.js.map +1 -0
- package/dist/{chunk-3CBI2ZSA.js → chunk-KG2OOAFF.js} +20 -12
- package/dist/chunk-KG2OOAFF.js.map +1 -0
- package/dist/{chunk-Q432REND.js → chunk-KJLLPG26.js} +2 -2
- package/dist/{chunk-JTQR6L2N.js → chunk-KLUC2GSG.js} +6 -6
- package/dist/{chunk-OB3XMWX5.js → chunk-KVO2BTA4.js} +2 -2
- package/dist/{chunk-PCOVEDPK.js → chunk-KZJM7R4F.js} +3 -3
- package/dist/{chunk-X4TD4O2F.js → chunk-LE2KZ72G.js} +3 -3
- package/dist/{chunk-HIP6DKJJ.js → chunk-LQVXSRAJ.js} +2 -2
- package/dist/{chunk-A7GQBJP5.js → chunk-LVFI5LG7.js} +7 -7
- package/dist/{chunk-FWWWUPOE.js → chunk-MCMS4VUK.js} +25 -15
- package/dist/chunk-MCMS4VUK.js.map +1 -0
- package/dist/{chunk-5SPCMAUC.js → chunk-N6XTC56E.js} +13 -81
- package/dist/chunk-N6XTC56E.js.map +1 -0
- package/dist/{chunk-VBSNUH4J.js → chunk-ND7MAIJC.js} +2 -2
- package/dist/{chunk-TNZNSMVJ.js → chunk-NYWCFC3K.js} +301 -348
- package/dist/chunk-NYWCFC3K.js.map +1 -0
- package/dist/{chunk-54NX5EG4.js → chunk-P66QH6R6.js} +2 -2
- package/dist/{chunk-62D2PAAM.js → chunk-PAAJWQH5.js} +4 -4
- package/dist/{chunk-TA4C3XB7.js → chunk-PFKIOYJH.js} +2 -2
- package/dist/{chunk-WIWLX65T.js → chunk-PGGPRF6J.js} +2 -2
- package/dist/{chunk-V6EGNVUT.js → chunk-PIWFNPQT.js} +4 -4
- package/dist/{chunk-BLDBT6HZ.js → chunk-PJRKLB4Z.js} +18 -2
- package/dist/chunk-PJRKLB4Z.js.map +1 -0
- package/dist/{chunk-4JVQRFZD.js → chunk-PLJ2MQFT.js} +11 -11
- package/dist/{chunk-4RX5O34R.js → chunk-PQ42DJNG.js} +2 -2
- package/dist/{chunk-37CAEC7E.js → chunk-PWPIERBM.js} +4 -4
- package/dist/{chunk-ZEGL7YCC.js → chunk-Q62GA5U2.js} +2 -2
- package/dist/{chunk-CC37E3QM.js → chunk-QKCXRS5A.js} +16 -1
- package/dist/chunk-QKCXRS5A.js.map +1 -0
- package/dist/{chunk-WKDFJXW5.js → chunk-QM2SPLKQ.js} +1 -1
- package/dist/chunk-QM2SPLKQ.js.map +1 -0
- package/dist/{chunk-GAS7KYC7.js → chunk-RQQO3ORQ.js} +2 -2
- package/dist/{chunk-UZEHHXYC.js → chunk-S4MJTIPG.js} +85 -81
- package/dist/chunk-S4MJTIPG.js.map +1 -0
- package/dist/chunk-SK7D34OL.js +68 -0
- package/dist/chunk-SK7D34OL.js.map +1 -0
- package/dist/{chunk-LQNRVPTV.js → chunk-TRTLWUDD.js} +164 -130
- package/dist/chunk-TRTLWUDD.js.map +1 -0
- package/dist/{chunk-JXN77SGO.js → chunk-U2VDCFXW.js} +1 -1
- package/dist/chunk-U2VDCFXW.js.map +1 -0
- package/dist/{chunk-CWTCMZGE.js → chunk-UHSOPTNB.js} +132 -6
- package/dist/chunk-UHSOPTNB.js.map +1 -0
- package/dist/{chunk-3NPNBVFR.js → chunk-UZGHKD3T.js} +2 -2
- package/dist/{chunk-IQEJIOEU.js → chunk-V2EXYQEQ.js} +20 -12
- package/dist/chunk-V2EXYQEQ.js.map +1 -0
- package/dist/{chunk-OPBFP4TF.js → chunk-V2TOGJPM.js} +46 -13
- package/dist/chunk-V2TOGJPM.js.map +1 -0
- package/dist/{chunk-VJIE4D2I.js → chunk-V62YYBBY.js} +4 -4
- package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
- package/dist/{chunk-6H2G7RFT.js → chunk-VNQRRUNS.js} +11 -10
- package/dist/chunk-VNQRRUNS.js.map +1 -0
- package/dist/{chunk-6AGWBKQU.js → chunk-VSN2DMQK.js} +2 -2
- package/dist/{chunk-ZHXSOMYH.js → chunk-VVX5PZFS.js} +2 -2
- package/dist/{chunk-GI4ZBWPQ.js → chunk-W7UV2ZCA.js} +3 -3
- package/dist/{chunk-GMIQV6DD.js → chunk-WBQ4ONQJ.js} +2 -2
- package/dist/{chunk-FNHLI2RE.js → chunk-WFMQN7JE.js} +3 -3
- package/dist/{chunk-MVAQ2WM3.js → chunk-WGZHSQDV.js} +9 -5
- package/dist/chunk-WGZHSQDV.js.map +1 -0
- package/dist/{chunk-IYKZJVL5.js → chunk-WN2OXGGH.js} +1 -1
- package/dist/chunk-WN2OXGGH.js.map +1 -0
- package/dist/{chunk-ZBW7A667.js → chunk-WPGA4RYI.js} +2 -2
- package/dist/{chunk-YQNNHLCG.js → chunk-WPGR3RW4.js} +2 -2
- package/dist/{chunk-SV4Z2S67.js → chunk-WUUGE7QC.js} +54 -21
- package/dist/chunk-WUUGE7QC.js.map +1 -0
- package/dist/{chunk-NXGSONWM.js → chunk-WZIO3TW6.js} +2 -2
- package/dist/{chunk-ZZUVBZL2.js → chunk-X2QPKLPL.js} +2 -2
- package/dist/{chunk-5HYUUFMQ.js → chunk-XCPNH2MG.js} +259 -10
- package/dist/chunk-XCPNH2MG.js.map +1 -0
- package/dist/{chunk-VSL63CFJ.js → chunk-XRS65T4O.js} +9 -9
- package/dist/{chunk-5N4MZLEH.js → chunk-YFXAWGMR.js} +2 -2
- package/dist/{chunk-KQW3YGEN.js → chunk-YR5QT4SR.js} +32 -9
- package/dist/chunk-YR5QT4SR.js.map +1 -0
- package/dist/{chunk-CARRTDKC.js → chunk-Z22M4JCY.js} +4 -3
- package/dist/chunk-Z22M4JCY.js.map +1 -0
- package/dist/{chunk-D545Z7UH.js → chunk-Z535ADTC.js} +3 -3
- package/dist/{chunk-B36GUU6T.js → chunk-Z7NBT6AK.js} +38 -5
- package/dist/chunk-Z7NBT6AK.js.map +1 -0
- package/dist/{chunk-5YCNDC3C.js → chunk-ZX6NNFSY.js} +3 -3
- package/dist/{chunk-3N3PBBEH.js → chunk-ZYSOT6HD.js} +2 -2
- package/dist/{chunk-MCRVQ5YQ.js → chunk-ZZEIL3MI.js} +2 -2
- package/dist/{cli-DGq0MNpO.d.ts → cli-CUlMlS2N.d.ts} +5 -5
- package/dist/cli.d.ts +18 -16
- package/dist/cli.js +129 -126
- package/dist/coding/export-okf-codegraph.d.ts +1 -1
- package/dist/coding/export-okf-codegraph.js +22 -22
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +25 -25
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +10 -9
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +25 -25
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +25 -25
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +6 -5
- package/dist/contradiction/index.js +4 -4
- package/dist/{contradiction-scan-BSGKZHYJ.js → contradiction-scan-GVD4JJ7B.js} +4 -4
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +26 -26
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +25 -25
- package/dist/cross-lingual-recall.d.ts +1 -1
- package/dist/dashboard-runtime.js +2 -2
- package/dist/day-summary.d.ts +1 -1
- package/dist/deep-recall-config.d.ts +12 -1
- package/dist/deep-recall-config.js +5 -3
- package/dist/deep-recall-http-glue.d.ts +19 -15
- package/dist/deep-recall-http-glue.js +7 -4
- package/dist/deep-recall-mcp-tools.d.ts +16 -14
- package/dist/deep-recall-policy-llm.d.ts +14 -3
- package/dist/deep-recall-policy-llm.js +3 -3
- package/dist/deep-recall-seeds.d.ts +4 -1
- package/dist/deep-recall-seeds.js +1 -1
- package/dist/deep-recall.d.ts +12 -1
- package/dist/deep-recall.js +3 -2
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-Cq1ekOwV.d.ts → dependency-propagation-delivery-BDDjImQn.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-origin-fields.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +24 -24
- package/dist/entity-schema.d.ts +1 -1
- package/dist/episodic-context.d.ts +1 -1
- package/dist/eval-trajectory-contracts.d.ts +1 -1
- package/dist/eval-trajectory-store.d.ts +1 -1
- package/dist/eval-trajectory.d.ts +1 -1
- package/dist/explicit-capture.d.ts +13 -12
- package/dist/explicit-capture.js +3 -3
- package/dist/external-wiki-access.d.ts +16 -14
- package/dist/external-wiki-access.js +76 -75
- package/dist/external-wiki-collection-registration.d.ts +1 -1
- package/dist/external-wiki-collection.d.ts +1 -1
- package/dist/external-wiki-mcp-tools.d.ts +16 -14
- package/dist/extraction-error-classification.d.ts +14 -3
- package/dist/extraction-error-classification.js +5 -3
- package/dist/extraction-faithfulness.d.ts +4 -3
- package/dist/extraction-faithfulness.js +3 -3
- package/dist/extraction-judge-telemetry.d.ts +4 -3
- package/dist/extraction-judge-training.d.ts +4 -3
- package/dist/extraction-judge.d.ts +4 -3
- package/dist/extraction-judge.js +3 -3
- package/dist/extraction-liveness.d.ts +1 -1
- package/dist/extraction-normalization.d.ts +1 -1
- package/dist/extraction-prompt.d.ts +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction-span-config.d.ts +1 -1
- package/dist/extraction-span-materialize.d.ts +1 -1
- package/dist/extraction.d.ts +4 -4
- package/dist/extraction.js +40 -38
- package/dist/fallback-llm-codex-subscription.d.ts +65 -10
- package/dist/fallback-llm-codex-subscription.js +19 -1
- package/dist/fallback-llm.d.ts +25 -28
- package/dist/fallback-llm.js +4 -3
- package/dist/{first-start-migration-ZWMV5CX4.js → first-start-migration-L3UFX5CU.js} +4 -4
- package/dist/{generic-recall-paths-BcySh_f9.d.ts → generic-recall-paths-CpDzNO_I.d.ts} +1 -1
- package/dist/graph-append-error.d.ts +1 -1
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-jsonl.d.ts +1 -1
- package/dist/graph-path-reconstruction.d.ts +1 -1
- package/dist/graph-path-scoring.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/harmonic-retrieval.js +3 -3
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/importers/test-utils.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/{index-DWOb4wz9.d.ts → index-CtmmCJoo.d.ts} +3 -3
- package/dist/index.d.ts +80 -40
- package/dist/index.js +316 -296
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +11 -11
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm-DpXIvm6F.d.ts +247 -0
- package/dist/local-llm-config.d.ts +4 -1
- package/dist/local-llm-config.js +4 -2
- package/dist/local-llm-helpers.d.ts +18 -69
- package/dist/local-llm-helpers.js +1 -1
- package/dist/local-llm.d.ts +3 -170
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/location/index.d.ts +3 -3
- package/dist/location/index.js +25 -25
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +24 -24
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +23 -23
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +25 -25
- package/dist/{maintenance-CW9wCzMP.d.ts → maintenance-CNgoLsoM.d.ts} +13 -6
- package/dist/mcp-memory-inspector-app.d.ts +16 -14
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-controller.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-store.d.ts +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-snapshot.d.ts +1 -1
- package/dist/memory-subject-cli.d.ts +16 -14
- package/dist/memory-subject.d.ts +16 -14
- package/dist/memory-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +24 -24
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +12 -1
- package/dist/namespaces/search.js +9 -9
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +23 -23
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +26 -26
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +45 -44
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +36 -36
- package/dist/{orchestrator-ComHLm49.d.ts → orchestrator-DT7ybIFz.d.ts} +32 -11
- package/dist/orchestrator.d.ts +13 -12
- package/dist/orchestrator.js +176 -171
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-CiYcqqhl.d.ts → pipeline-CgBEmHcz.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +2 -2
- package/dist/provenance.d.ts +1 -1
- package/dist/{public-http-CuK4_Cb1.d.ts → public-http-C8P8fyiO.d.ts} +1 -1
- package/dist/{qmd-qXD4vatU.d.ts → qmd-BkY8KpCh.d.ts} +2 -2
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/qmd.js +2 -2
- package/dist/recall-concurrency-config.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -1
- package/dist/recall-navigate-access.d.ts +1 -1
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.d.ts +1 -1
- package/dist/recall-navigate-disclosure.js +1 -1
- package/dist/recall-navigate.d.ts +1 -1
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-planner-llm.d.ts +3 -2
- package/dist/recall-planner-llm.js +4 -3
- package/dist/recall-planner-llm.js.map +1 -1
- package/dist/recall-state-view-admission.d.ts +13 -3
- package/dist/recall-state-view-admission.js +9 -9
- package/dist/recall-state-view-anchors.d.ts +1 -1
- package/dist/recall-state-view-anchors.js +2 -2
- package/dist/recall-state-view-inject.js +2 -2
- package/dist/recall-state-view-render.js +2 -2
- package/dist/recall-state-view-widen.js +2 -2
- package/dist/recall-state-view-wire.js +3 -3
- package/dist/recall-state-view.d.ts +10 -1
- package/dist/recall-state-view.js +5 -3
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +1 -1
- package/dist/reconcile/cursor.js +2 -2
- package/dist/reconcile/manifest.d.ts +1 -1
- package/dist/reconcile/manifest.js +4 -4
- package/dist/reconcile/plan.d.ts +1 -1
- package/dist/reconcile/plan.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/replica-divergence.d.ts +1 -1
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/{resolution-4GG3QZRJ.js → resolution-LXFQQ4AE.js} +5 -5
- package/dist/resolution-LXFQQ4AE.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +12 -11
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/salvage-envelope.d.ts +1 -1
- package/dist/{scope-profiles-BT9rqC3w.d.ts → scope-profiles-BBPjZ9jb.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +8 -8
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +12 -12
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/orama-backend.js +2 -2
- package/dist/search/port.d.ts +2 -2
- package/dist/search/port.js +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/search/remote-backend.js +2 -2
- package/dist/{semantic-consolidation-CmZi7thY.d.ts → semantic-consolidation-BPFFVO84.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +26 -26
- package/dist/semantic-rule-promotion.js +23 -23
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +23 -23
- package/dist/{service-CLkA7AQB.d.ts → service-jKcr6Jvr.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/shared-context/manager.js +2 -2
- package/dist/shared-context/write-output-controls.d.ts +34 -0
- package/dist/shared-context/write-output-controls.js +10 -0
- package/dist/shared-context/write-output-controls.js.map +1 -0
- package/dist/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +31 -31
- package/dist/source-attribution.d.ts +23 -1
- package/dist/source-attribution.js +13 -3
- package/dist/standup/build.js +23 -23
- package/dist/{storage-wvX01lht.d.ts → storage-C-0Ah5OY.d.ts} +2 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +22 -22
- package/dist/subject-config.d.ts +1 -1
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +6 -6
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +18 -17
- package/dist/support-passport/index.js +78 -77
- package/dist/task-llm-config.d.ts +16 -0
- package/dist/task-llm-config.js +12 -0
- package/dist/task-llm-config.js.map +1 -0
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-timeline-recall.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-routing.d.ts +1 -1
- package/dist/tier-routing.js +3 -3
- package/dist/{tier-stats-LUSUUNU6.js → tier-stats-VK5PCO2L.js} +4 -4
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +3 -3
- package/dist/transfer/export-okf.d.ts +1 -1
- package/dist/transfer/export-okf.js +23 -23
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-Cyr32ABj.d.ts → types-cK5LydjL.d.ts} +6 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +23 -23
- package/dist/who-knows-cli.d.ts +16 -14
- package/dist/who-knows-cli.js +24 -24
- package/dist/who-knows.d.ts +16 -14
- package/dist/who-knows.js +23 -23
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +12 -2
- package/src/access-category-alias.test.ts +93 -0
- package/src/access-http.ts +1 -1
- package/src/access-mcp-shared-context-tools.ts +103 -0
- package/src/access-mcp.ts +4 -74
- package/src/access-offline-manifest.ts +52 -2
- package/src/access-operations-batch.ts +45 -2
- package/src/access-schema.ts +9 -4
- package/src/access-service.ts +14 -7
- package/src/activity/config.test.ts +61 -0
- package/src/activity/config.ts +40 -1
- package/src/activity/timeline/analysis-provider.ts +8 -2
- package/src/activity/timeline/analysis-run.test.ts +82 -0
- package/src/activity/timeline/publish-cli.test.ts +30 -0
- package/src/activity/timeline/publish-cli.ts +7 -0
- package/src/activity/timeline/query.ts +8 -1
- package/src/activity/timeline/regenerate.test.ts +130 -2
- package/src/activity/timeline/regenerate.ts +14 -6
- package/src/activity/vault-frontmatter.test.ts +99 -1
- package/src/activity/vault-frontmatter.ts +131 -0
- package/src/activity/vault-publish.ts +6 -0
- package/src/activity/vault-publisher.test.ts +172 -0
- package/src/activity/vault-publisher.ts +69 -15
- package/src/activity/vault-region.test.ts +7 -2
- package/src/activity/vault-region.ts +7 -3
- package/src/background-generation-config.ts +32 -6
- package/src/background-generation.test.ts +10 -1
- package/src/cli/deep-recall-commands.ts +22 -10
- package/src/cli/timeline-publish-commands.ts +9 -0
- package/src/config.test.ts +170 -43
- package/src/config.ts +22 -5
- package/src/dedup/merge.test.ts +283 -0
- package/src/deep-recall-boundary.test.ts +66 -0
- package/src/deep-recall-cli.test.ts +82 -0
- package/src/deep-recall-config.test.ts +56 -0
- package/src/deep-recall-config.ts +32 -0
- package/src/deep-recall-http-glue.ts +10 -10
- package/src/deep-recall-policy-llm.test.ts +242 -0
- package/src/deep-recall-policy-llm.ts +37 -7
- package/src/deep-recall-seeds.test.ts +53 -0
- package/src/deep-recall-seeds.ts +7 -1
- package/src/deep-recall-surface.test.ts +93 -0
- package/src/deep-recall.test.ts +121 -0
- package/src/deep-recall.ts +88 -28
- package/src/extraction-error-classification.ts +36 -1
- package/src/extraction-timeout.test.ts +110 -1
- package/src/extraction.test.ts +19 -1
- package/src/extraction.ts +23 -21
- package/src/fallback-llm-codex-subscription.ts +220 -12
- package/src/fallback-llm-parse-failure.test.ts +156 -0
- package/src/fallback-llm.test.ts +178 -0
- package/src/fallback-llm.ts +200 -198
- package/src/index.ts +1 -0
- package/src/local-llm-config.ts +11 -10
- package/src/local-llm-headers-timeout.test.ts +30 -0
- package/src/local-llm-helpers.ts +28 -0
- package/src/local-llm.ts +8 -19
- package/src/meetings/config.test.ts +58 -0
- package/src/namespaces/search.test.ts +51 -1
- package/src/namespaces/search.ts +48 -3
- package/src/orchestration/extraction-persist-promotion.test.ts +228 -2
- package/src/orchestration/extraction-persist-promotion.ts +17 -14
- package/src/orchestration/extraction-persist.ts +1 -1
- package/src/orchestration/orchestrator-helpers.test.ts +104 -0
- package/src/orchestration/orchestrator-init.ts +366 -106
- package/src/orchestration/recall-entry.ts +15 -1
- package/src/orchestration/recall-internal.ts +6 -11
- package/src/orchestration/recall-section-coordinator.ts +65 -28
- package/src/orchestration/recall-state-view-pipeline.test.ts +8 -2
- package/src/orchestration/semantic-merge-commit-effects.ts +45 -16
- package/src/orchestration/semantic-merge-persist.ts +23 -36
- package/src/orchestration/semantic-merge-promotion-payload.ts +62 -6
- package/src/orchestration/startup-collection-checks.ts +85 -0
- package/src/orchestrator-flush.test.ts +7 -0
- package/src/orchestrator-init.test.ts +1539 -0
- package/src/orchestrator.ts +7 -0
- package/src/providers/codex-subscription.test.ts +127 -0
- package/src/providers/codex-subscription.ts +1 -1
- package/src/qmd.ts +21 -10
- package/src/recall-state-view-admission.ts +11 -1
- package/src/recall-state-view-budget.test.ts +424 -0
- package/src/recall-state-view-cron-intent.test.ts +268 -0
- package/src/recall-state-view-widen.test.ts +14 -5
- package/src/recall-state-view-widen.ts +8 -1
- package/src/recall-state-view.ts +35 -18
- package/src/reconcile-identity-cache.test.ts +82 -1
- package/src/search/port.ts +1 -1
- package/src/shared-context/envelope-io.ts +25 -0
- package/src/shared-context/envelope-wiring.test.ts +4 -2
- package/src/shared-context/manager.ts +1 -0
- package/src/shared-context/write-output-controls.test.ts +192 -0
- package/src/shared-context/write-output-controls.ts +72 -0
- package/src/source-attribution.test.ts +39 -0
- package/src/source-attribution.ts +72 -0
- package/src/storage/cas-revision-store.test.ts +4 -0
- package/src/storage/cas-revision-store.ts +104 -12
- package/src/storage-frontmatter-cas.test.ts +19 -17
- package/src/summarizer.ts +5 -1
- package/src/task-llm-config.test.ts +124 -0
- package/src/task-llm-config.ts +88 -0
- package/src/testing/subjects/startup-discovery-lifecycle.test.ts +273 -0
- package/src/types.ts +6 -0
- package/dist/chunk-3CBI2ZSA.js.map +0 -1
- package/dist/chunk-5HYUUFMQ.js.map +0 -1
- package/dist/chunk-5SPCMAUC.js.map +0 -1
- package/dist/chunk-6H2G7RFT.js.map +0 -1
- package/dist/chunk-6YAIN5XJ.js.map +0 -1
- package/dist/chunk-ACY4ZPF7.js.map +0 -1
- package/dist/chunk-B36GUU6T.js.map +0 -1
- package/dist/chunk-BLDBT6HZ.js.map +0 -1
- package/dist/chunk-CARRTDKC.js.map +0 -1
- package/dist/chunk-CC37E3QM.js.map +0 -1
- package/dist/chunk-CWTCMZGE.js.map +0 -1
- package/dist/chunk-CZTPU65V.js.map +0 -1
- package/dist/chunk-EYKIDK33.js.map +0 -1
- package/dist/chunk-FWWWUPOE.js.map +0 -1
- package/dist/chunk-IQEJIOEU.js.map +0 -1
- package/dist/chunk-IYKZJVL5.js.map +0 -1
- package/dist/chunk-JXN77SGO.js.map +0 -1
- package/dist/chunk-KQW3YGEN.js.map +0 -1
- package/dist/chunk-LPYYY4AP.js.map +0 -1
- package/dist/chunk-LQNRVPTV.js.map +0 -1
- package/dist/chunk-MVAQ2WM3.js.map +0 -1
- package/dist/chunk-OEDW4ER7.js.map +0 -1
- package/dist/chunk-OPBFP4TF.js.map +0 -1
- package/dist/chunk-P4ZAEYKG.js.map +0 -1
- package/dist/chunk-QHT7MOUF.js.map +0 -1
- package/dist/chunk-QTQ6XKGT.js.map +0 -1
- package/dist/chunk-SV4Z2S67.js.map +0 -1
- package/dist/chunk-TNZNSMVJ.js.map +0 -1
- package/dist/chunk-TRLOFIQC.js.map +0 -1
- package/dist/chunk-UZEHHXYC.js.map +0 -1
- package/dist/chunk-WKDFJXW5.js.map +0 -1
- package/dist/chunk-YDVAM7S4.js.map +0 -1
- package/dist/chunk-YFTNZMGR.js.map +0 -1
- package/dist/chunk-YKREX63Z.js.map +0 -1
- /package/dist/{capsule-crypto-7FJQINUR.js.map → access-mcp-shared-context-tools.js.map} +0 -0
- /package/dist/{auto-sync-RP4C6ZPF.js.map → auto-sync-7PGUFY7U.js.map} +0 -0
- /package/dist/{contradiction-scan-BSGKZHYJ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
- /package/dist/{capsule-merge-IPG4IOFP.js.map → capsule-merge-3MNURAQ3.js.map} +0 -0
- /package/dist/{chunk-XH3HGI2N.js.map → chunk-2HQPE2NM.js.map} +0 -0
- /package/dist/{chunk-3EKVN2OP.js.map → chunk-2ZG2LLZT.js.map} +0 -0
- /package/dist/{chunk-6EHM2AV7.js.map → chunk-3BLHPQHT.js.map} +0 -0
- /package/dist/{chunk-J272ODKJ.js.map → chunk-42DJ235G.js.map} +0 -0
- /package/dist/{chunk-F4EHXVP7.js.map → chunk-46RII65S.js.map} +0 -0
- /package/dist/{chunk-YUW66UAH.js.map → chunk-4AX5OYKC.js.map} +0 -0
- /package/dist/{chunk-AECJY3GJ.js.map → chunk-4IGOLIWM.js.map} +0 -0
- /package/dist/{chunk-2ZTDRNCS.js.map → chunk-54QPOE45.js.map} +0 -0
- /package/dist/{chunk-O4M4BDIJ.js.map → chunk-563X6JJX.js.map} +0 -0
- /package/dist/{chunk-IL6ODG6M.js.map → chunk-5EQT62HH.js.map} +0 -0
- /package/dist/{chunk-JKKII6GX.js.map → chunk-6MQMYXSQ.js.map} +0 -0
- /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
- /package/dist/{chunk-BV4ZKIZH.js.map → chunk-7ZLC4DTZ.js.map} +0 -0
- /package/dist/{chunk-WBM2MVBK.js.map → chunk-A4OIJYCV.js.map} +0 -0
- /package/dist/{chunk-RLJHJQUY.js.map → chunk-AFJHNHAM.js.map} +0 -0
- /package/dist/{chunk-4RZLTZVM.js.map → chunk-AKABVXFS.js.map} +0 -0
- /package/dist/{chunk-M6HBPLBA.js.map → chunk-AUSRUOMQ.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
- /package/dist/{chunk-Q7CLGFA7.js.map → chunk-C3G6MW4W.js.map} +0 -0
- /package/dist/{chunk-O76F5QPP.js.map → chunk-D6PY63OM.js.map} +0 -0
- /package/dist/{chunk-BD7JTBYP.js.map → chunk-D7MAYFQP.js.map} +0 -0
- /package/dist/{chunk-LMLGBG6H.js.map → chunk-DBB5JPSL.js.map} +0 -0
- /package/dist/{chunk-TSP5WH72.js.map → chunk-DIXZQTGY.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
- /package/dist/{chunk-UHRZ324M.js.map → chunk-E3I3NDUP.js.map} +0 -0
- /package/dist/{chunk-AENM6GKU.js.map → chunk-E4LMQTST.js.map} +0 -0
- /package/dist/{chunk-MUTVRKKY.js.map → chunk-EMSYMYXO.js.map} +0 -0
- /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
- /package/dist/{chunk-FXHOZGSE.js.map → chunk-F5H6YG5P.js.map} +0 -0
- /package/dist/{chunk-TNSCIPBQ.js.map → chunk-G6NQ3L4T.js.map} +0 -0
- /package/dist/{chunk-ZMWSYUUL.js.map → chunk-GCBIXUPT.js.map} +0 -0
- /package/dist/{chunk-4BCHFSC7.js.map → chunk-GWNSKQDA.js.map} +0 -0
- /package/dist/{chunk-JDX2OA4R.js.map → chunk-HNHIHXSD.js.map} +0 -0
- /package/dist/{chunk-GG5FHZJJ.js.map → chunk-I33QYUAF.js.map} +0 -0
- /package/dist/{chunk-AAZEKXUP.js.map → chunk-IYIPXAIJ.js.map} +0 -0
- /package/dist/{chunk-5U7K4W6K.js.map → chunk-JDOBQPJY.js.map} +0 -0
- /package/dist/{chunk-UZZ7SQT3.js.map → chunk-JMWUPUE6.js.map} +0 -0
- /package/dist/{chunk-ENBPQEVU.js.map → chunk-JSD7Q7LD.js.map} +0 -0
- /package/dist/{chunk-Q432REND.js.map → chunk-KJLLPG26.js.map} +0 -0
- /package/dist/{chunk-JTQR6L2N.js.map → chunk-KLUC2GSG.js.map} +0 -0
- /package/dist/{chunk-OB3XMWX5.js.map → chunk-KVO2BTA4.js.map} +0 -0
- /package/dist/{chunk-PCOVEDPK.js.map → chunk-KZJM7R4F.js.map} +0 -0
- /package/dist/{chunk-X4TD4O2F.js.map → chunk-LE2KZ72G.js.map} +0 -0
- /package/dist/{chunk-HIP6DKJJ.js.map → chunk-LQVXSRAJ.js.map} +0 -0
- /package/dist/{chunk-A7GQBJP5.js.map → chunk-LVFI5LG7.js.map} +0 -0
- /package/dist/{chunk-VBSNUH4J.js.map → chunk-ND7MAIJC.js.map} +0 -0
- /package/dist/{chunk-54NX5EG4.js.map → chunk-P66QH6R6.js.map} +0 -0
- /package/dist/{chunk-62D2PAAM.js.map → chunk-PAAJWQH5.js.map} +0 -0
- /package/dist/{chunk-TA4C3XB7.js.map → chunk-PFKIOYJH.js.map} +0 -0
- /package/dist/{chunk-WIWLX65T.js.map → chunk-PGGPRF6J.js.map} +0 -0
- /package/dist/{chunk-V6EGNVUT.js.map → chunk-PIWFNPQT.js.map} +0 -0
- /package/dist/{chunk-4JVQRFZD.js.map → chunk-PLJ2MQFT.js.map} +0 -0
- /package/dist/{chunk-4RX5O34R.js.map → chunk-PQ42DJNG.js.map} +0 -0
- /package/dist/{chunk-37CAEC7E.js.map → chunk-PWPIERBM.js.map} +0 -0
- /package/dist/{chunk-ZEGL7YCC.js.map → chunk-Q62GA5U2.js.map} +0 -0
- /package/dist/{chunk-GAS7KYC7.js.map → chunk-RQQO3ORQ.js.map} +0 -0
- /package/dist/{chunk-3NPNBVFR.js.map → chunk-UZGHKD3T.js.map} +0 -0
- /package/dist/{chunk-VJIE4D2I.js.map → chunk-V62YYBBY.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
- /package/dist/{chunk-6AGWBKQU.js.map → chunk-VSN2DMQK.js.map} +0 -0
- /package/dist/{chunk-ZHXSOMYH.js.map → chunk-VVX5PZFS.js.map} +0 -0
- /package/dist/{chunk-GI4ZBWPQ.js.map → chunk-W7UV2ZCA.js.map} +0 -0
- /package/dist/{chunk-GMIQV6DD.js.map → chunk-WBQ4ONQJ.js.map} +0 -0
- /package/dist/{chunk-FNHLI2RE.js.map → chunk-WFMQN7JE.js.map} +0 -0
- /package/dist/{chunk-ZBW7A667.js.map → chunk-WPGA4RYI.js.map} +0 -0
- /package/dist/{chunk-YQNNHLCG.js.map → chunk-WPGR3RW4.js.map} +0 -0
- /package/dist/{chunk-NXGSONWM.js.map → chunk-WZIO3TW6.js.map} +0 -0
- /package/dist/{chunk-ZZUVBZL2.js.map → chunk-X2QPKLPL.js.map} +0 -0
- /package/dist/{chunk-VSL63CFJ.js.map → chunk-XRS65T4O.js.map} +0 -0
- /package/dist/{chunk-5N4MZLEH.js.map → chunk-YFXAWGMR.js.map} +0 -0
- /package/dist/{chunk-D545Z7UH.js.map → chunk-Z535ADTC.js.map} +0 -0
- /package/dist/{chunk-5YCNDC3C.js.map → chunk-ZX6NNFSY.js.map} +0 -0
- /package/dist/{chunk-3N3PBBEH.js.map → chunk-ZYSOT6HD.js.map} +0 -0
- /package/dist/{chunk-MCRVQ5YQ.js.map → chunk-ZZEIL3MI.js.map} +0 -0
- /package/dist/{resolution-4GG3QZRJ.js.map → contradiction-scan-GVD4JJ7B.js.map} +0 -0
- /package/dist/{first-start-migration-ZWMV5CX4.js.map → first-start-migration-L3UFX5CU.js.map} +0 -0
- /package/dist/{tier-stats-LUSUUNU6.js.map → tier-stats-VK5PCO2L.js.map} +0 -0
|
@@ -20,7 +20,9 @@ import { ProfilingCollector } from "../profiling.js";
|
|
|
20
20
|
import { trustResultFor, type TrustStageResultItem } from "../trust-score-stage.js";
|
|
21
21
|
import type { RecallResultFormatter } from "./recall-result-formatter.js";
|
|
22
22
|
import type { IdentityInjectionMode, PluginConfig, QmdSearchResult } from "../types.js";
|
|
23
|
-
import {
|
|
23
|
+
import { stateViewPacketActive } from "../recall-state-view-anchors.js";
|
|
24
|
+
import { resultStateViewKey, stateViewPacketKeys } from "../recall-state-view.js";
|
|
25
|
+
import { applyRecallStateViews } from "../recall-state-view-wire.js";
|
|
24
26
|
|
|
25
27
|
export interface RecallEntryDeps {
|
|
26
28
|
appendRecallSection(
|
|
@@ -300,6 +302,15 @@ export class RecallEntryCoordinator {
|
|
|
300
302
|
);
|
|
301
303
|
if (injectable.length === 0) return;
|
|
302
304
|
|
|
305
|
+
// #2928 — packet-atomic final budgeting: under packet semantics (state
|
|
306
|
+
// view active, no historical asOf pin) rows of one supersession packet
|
|
307
|
+
// share their canonical packet root key, so the section coordinator's
|
|
308
|
+
// character/token cap admits or drops the packet as a unit.
|
|
309
|
+
const packetKeys =
|
|
310
|
+
stateViewPacketActive(options.stateViewActive === true, options.asOfMs)
|
|
311
|
+
? stateViewPacketKeys(injectable)
|
|
312
|
+
: [];
|
|
313
|
+
|
|
303
314
|
const formatted = this.deps.recallResultFormatter.formatQmdResultEntries(
|
|
304
315
|
options.title,
|
|
305
316
|
injectable,
|
|
@@ -324,6 +335,9 @@ export class RecallEntryCoordinator {
|
|
|
324
335
|
...(memoryId ? { memoryId } : {}),
|
|
325
336
|
...(result.path ? { memoryPath: result.path } : {}),
|
|
326
337
|
...(result.namespace ? { memoryNamespace: result.namespace } : {}),
|
|
338
|
+
...(packetKeys[index] && resultStateViewKey(result)
|
|
339
|
+
? { packetKey: packetKeys[index] }
|
|
340
|
+
: {}),
|
|
327
341
|
},
|
|
328
342
|
);
|
|
329
343
|
}
|
|
@@ -98,11 +98,8 @@ import {
|
|
|
98
98
|
type RecallInvocationOptions,
|
|
99
99
|
} from "../orchestrator.js";
|
|
100
100
|
import { isGenericRecallExcludedPath } from "./generic-recall-paths.js";
|
|
101
|
-
import {
|
|
102
|
-
|
|
103
|
-
resolveRecallStateViewFlags,
|
|
104
|
-
} from "../recall-state-view-anchors.js";
|
|
105
|
-
import { indexStateViewAnnotatedResults } from "../recall-state-view-admission.js";
|
|
101
|
+
import { filterRecentScanMemories } from "../recall-state-view-anchors.js";
|
|
102
|
+
import { indexStateViewAnnotatedResults, resolveRecallStateViewActive } from "../recall-state-view-admission.js";
|
|
106
103
|
import type { RecallSectionBuckets } from "./recall-section-coordinator.js";
|
|
107
104
|
import {
|
|
108
105
|
reconcileRecallResultPartition,
|
|
@@ -248,12 +245,9 @@ export class RecallInternalCoordinator {
|
|
|
248
245
|
});
|
|
249
246
|
// #1952 state views: config flag OR per-call override, gated on change intent; computed once for all branches.
|
|
250
247
|
const retrievalQuery = queryPolicy.retrievalQuery || prompt;
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
retrievalQuery,
|
|
255
|
-
asOfMs,
|
|
256
|
-
);
|
|
248
|
+
const stateViewActive = resolveRecallStateViewActive(options, this.deps.config, prompt);
|
|
249
|
+
const stateViewPacketActive =
|
|
250
|
+
stateViewActive === true && !(typeof asOfMs === "number" && Number.isFinite(asOfMs));
|
|
257
251
|
const retrievalQueryHash = createHash("sha256")
|
|
258
252
|
.update(retrievalQuery)
|
|
259
253
|
.digest("hex");
|
|
@@ -5049,6 +5043,7 @@ export class RecallInternalCoordinator {
|
|
|
5049
5043
|
// Build a path → QmdSearchResult index so we can pull per-result
|
|
5050
5044
|
// explain data (e.g. reinforcementBoost) from the result that
|
|
5051
5045
|
// boostSearchResults annotated before surfacing to xray.
|
|
5046
|
+
// #1952: label the captured branch through the same inject-seam annotator.
|
|
5052
5047
|
const xrayResultByPath = indexStateViewAnnotatedResults(
|
|
5053
5048
|
xrayRecalledResults, retrievalQuery, this.deps.config, stateViewActive, asOfMs,
|
|
5054
5049
|
);
|
|
@@ -27,6 +27,13 @@ export interface RecallSectionAppendOptions {
|
|
|
27
27
|
memoryId?: string;
|
|
28
28
|
memoryPath?: string;
|
|
29
29
|
memoryNamespace?: string;
|
|
30
|
+
/**
|
|
31
|
+
* #2928 — state-view packet key (canonical `stateViewPacketKeys` root).
|
|
32
|
+
* Atomic chunks sharing a packetKey are ONE evidence packet: the final
|
|
33
|
+
* budget admits or drops them together, so a historical row can never
|
|
34
|
+
* render without its linked successor. Absent on non-state rows.
|
|
35
|
+
*/
|
|
36
|
+
packetKey?: string;
|
|
30
37
|
}
|
|
31
38
|
|
|
32
39
|
export interface RecallSectionChunk {
|
|
@@ -35,6 +42,7 @@ export interface RecallSectionChunk {
|
|
|
35
42
|
memoryId?: string;
|
|
36
43
|
memoryPath?: string;
|
|
37
44
|
memoryNamespace?: string;
|
|
45
|
+
packetKey?: string;
|
|
38
46
|
}
|
|
39
47
|
|
|
40
48
|
export type RecallSectionBuckets = Map<
|
|
@@ -160,6 +168,7 @@ export class RecallSectionCoordinator {
|
|
|
160
168
|
...(options.memoryNamespace
|
|
161
169
|
? { memoryNamespace: options.memoryNamespace }
|
|
162
170
|
: {}),
|
|
171
|
+
...(options.packetKey ? { packetKey: options.packetKey } : {}),
|
|
163
172
|
});
|
|
164
173
|
} else {
|
|
165
174
|
existing.push(finalContent);
|
|
@@ -454,15 +463,55 @@ export class RecallSectionCoordinator {
|
|
|
454
463
|
let includedPostAtomicContent = false;
|
|
455
464
|
const postAtomicContents: string[] = [];
|
|
456
465
|
let includedLeadingContent = false;
|
|
466
|
+
// #2928 — state-view packets: atomic chunks sharing a packetKey are
|
|
467
|
+
// ONE evidence packet (a historical row plus its linked successor).
|
|
468
|
+
// The packet renders as a block at the FIRST member's position,
|
|
469
|
+
// members in incoming order, and is admitted or dropped together —
|
|
470
|
+
// the final character/token budget can never emit one side alone.
|
|
471
|
+
// Chunks without a packetKey keep the pre-#2928 per-row behavior.
|
|
472
|
+
const packetFirstIndex = new Map<string, number>();
|
|
473
|
+
const packetMembers = new Map<number, number[]>();
|
|
457
474
|
for (const [index, chunk] of section.chunks.entries()) {
|
|
475
|
+
if (!chunk.atomic || !chunk.packetKey) continue;
|
|
476
|
+
const first = packetFirstIndex.get(chunk.packetKey);
|
|
477
|
+
if (first === undefined) {
|
|
478
|
+
packetFirstIndex.set(chunk.packetKey, index);
|
|
479
|
+
packetMembers.set(index, [index]);
|
|
480
|
+
} else {
|
|
481
|
+
packetMembers.get(first)!.push(index);
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
const admitMemoryRefs = (memberIndexes: readonly number[]): void => {
|
|
485
|
+
for (const memberIndex of memberIndexes) {
|
|
486
|
+
const member = section.chunks[memberIndex]!;
|
|
487
|
+
if (member.memoryId && member.memoryPath) {
|
|
488
|
+
includedMemories.push(
|
|
489
|
+
member.memoryNamespace
|
|
490
|
+
? { id: member.memoryId, path: member.memoryPath, namespace: member.memoryNamespace }
|
|
491
|
+
: { id: member.memoryId, path: member.memoryPath },
|
|
492
|
+
);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
for (const [index, chunk] of section.chunks.entries()) {
|
|
497
|
+
const members = chunk.atomic ? packetMembers.get(index) : undefined;
|
|
498
|
+
if (chunk.atomic && chunk.packetKey && members === undefined) {
|
|
499
|
+
// Non-first packet member: decided with its block at the first
|
|
500
|
+
// member's position — never admitted alone (#2928).
|
|
501
|
+
continue;
|
|
502
|
+
}
|
|
503
|
+
const memberIndexes = members ?? [index];
|
|
504
|
+
const content = members
|
|
505
|
+
? members.map((memberIndex) => section.chunks[memberIndex]!.content).join("\n\n")
|
|
506
|
+
: chunk.content;
|
|
458
507
|
if (
|
|
459
508
|
!chunk.atomic &&
|
|
460
509
|
includedAtomicCount === 0 &&
|
|
461
510
|
index < firstAtomicIndex
|
|
462
511
|
) {
|
|
463
512
|
const candidate = rendered
|
|
464
|
-
? `${rendered}\n\n${
|
|
465
|
-
:
|
|
513
|
+
? `${rendered}\n\n${content}`
|
|
514
|
+
: content;
|
|
466
515
|
if (
|
|
467
516
|
candidate.length <= allocatedSectionAvailable &&
|
|
468
517
|
estimateTokenCount(candidate) <= allocatedTokenAvailable
|
|
@@ -476,8 +525,8 @@ export class RecallSectionCoordinator {
|
|
|
476
525
|
}
|
|
477
526
|
|
|
478
527
|
const candidate = rendered
|
|
479
|
-
? `${rendered}\n\n${
|
|
480
|
-
:
|
|
528
|
+
? `${rendered}\n\n${content}`
|
|
529
|
+
: content;
|
|
481
530
|
if (
|
|
482
531
|
candidate.length > allocatedSectionAvailable ||
|
|
483
532
|
estimateTokenCount(candidate) > allocatedTokenAvailable
|
|
@@ -486,32 +535,26 @@ export class RecallSectionCoordinator {
|
|
|
486
535
|
chunk.atomic &&
|
|
487
536
|
includedAtomicCount === 0 &&
|
|
488
537
|
includedLeadingContent &&
|
|
489
|
-
|
|
490
|
-
estimateTokenCount(
|
|
538
|
+
content.length <= allocatedSectionAvailable &&
|
|
539
|
+
estimateTokenCount(content) <= allocatedTokenAvailable
|
|
491
540
|
) {
|
|
492
|
-
rendered =
|
|
541
|
+
rendered = content;
|
|
493
542
|
includedLeadingContent = false;
|
|
494
|
-
includedAtomicCount
|
|
495
|
-
|
|
496
|
-
includedMemories.push(
|
|
497
|
-
chunk.memoryNamespace
|
|
498
|
-
? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
|
|
499
|
-
: { id: chunk.memoryId, path: chunk.memoryPath },
|
|
500
|
-
);
|
|
501
|
-
}
|
|
543
|
+
includedAtomicCount += memberIndexes.length;
|
|
544
|
+
admitMemoryRefs(memberIndexes);
|
|
502
545
|
continue;
|
|
503
546
|
}
|
|
504
547
|
if (
|
|
505
548
|
!chunk.atomic &&
|
|
506
549
|
includedAtomicCount === 0 &&
|
|
507
550
|
includedLeadingContent &&
|
|
508
|
-
|
|
509
|
-
estimateTokenCount(
|
|
551
|
+
content.length <= allocatedSectionAvailable &&
|
|
552
|
+
estimateTokenCount(content) <= allocatedTokenAvailable
|
|
510
553
|
) {
|
|
511
|
-
rendered =
|
|
554
|
+
rendered = content;
|
|
512
555
|
includedLeadingContent = false;
|
|
513
556
|
includedPostAtomicContent = true;
|
|
514
|
-
postAtomicContents.push(
|
|
557
|
+
postAtomicContents.push(content);
|
|
515
558
|
continue;
|
|
516
559
|
}
|
|
517
560
|
truncated = true;
|
|
@@ -520,17 +563,11 @@ export class RecallSectionCoordinator {
|
|
|
520
563
|
|
|
521
564
|
rendered = candidate;
|
|
522
565
|
if (chunk.atomic) {
|
|
523
|
-
includedAtomicCount +=
|
|
524
|
-
|
|
525
|
-
includedMemories.push(
|
|
526
|
-
chunk.memoryNamespace
|
|
527
|
-
? { id: chunk.memoryId, path: chunk.memoryPath, namespace: chunk.memoryNamespace }
|
|
528
|
-
: { id: chunk.memoryId, path: chunk.memoryPath },
|
|
529
|
-
);
|
|
530
|
-
}
|
|
566
|
+
includedAtomicCount += memberIndexes.length;
|
|
567
|
+
admitMemoryRefs(memberIndexes);
|
|
531
568
|
} else {
|
|
532
569
|
includedPostAtomicContent = true;
|
|
533
|
-
postAtomicContents.push(
|
|
570
|
+
postAtomicContents.push(content);
|
|
534
571
|
}
|
|
535
572
|
}
|
|
536
573
|
if (includedAtomicCount === 0) {
|
|
@@ -96,8 +96,14 @@ test("default (stateViewActive unset) keeps filtering superseded — zero-diff b
|
|
|
96
96
|
const explicitOff = coordinator.filterSearchResultsByRecallSafety(results, memories, {
|
|
97
97
|
stateViewActive: false,
|
|
98
98
|
});
|
|
99
|
-
assert.deepEqual(
|
|
100
|
-
|
|
99
|
+
assert.deepEqual(
|
|
100
|
+
baseline.map((r) => r.path),
|
|
101
|
+
[NEW]
|
|
102
|
+
);
|
|
103
|
+
assert.deepEqual(
|
|
104
|
+
explicitOff.map((r) => r.path),
|
|
105
|
+
[NEW]
|
|
106
|
+
);
|
|
101
107
|
// No chain fields leak onto survivors when the view is off.
|
|
102
108
|
assert.equal(baseline[0]?.supersededBy, undefined);
|
|
103
109
|
assert.equal(baseline[0]?.id, undefined);
|
|
@@ -17,8 +17,12 @@ import type { GraphEdge, GraphType } from "../graph.js";
|
|
|
17
17
|
import { readFile } from "node:fs/promises";
|
|
18
18
|
import { removeNodeEdgesForRewrite, rollbackNodeEdgeRewrite } from "../graph-jsonl.js";
|
|
19
19
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
attachCitation,
|
|
21
|
+
citationTemplateIsDetectable,
|
|
22
|
+
citationTemplatesForMerge,
|
|
23
|
+
lastRecognizedCitationMarker,
|
|
24
|
+
stripRecognizedCitations,
|
|
25
|
+
type CitationContext,
|
|
22
26
|
} from "../source-attribution.js";
|
|
23
27
|
import { resolvePipelineProcessingCapabilities } from "../capabilities.js";
|
|
24
28
|
import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
@@ -328,27 +332,52 @@ export async function rewriteMergedTargetGraphEdges(
|
|
|
328
332
|
}
|
|
329
333
|
}
|
|
330
334
|
|
|
335
|
+
/**
|
|
336
|
+
* Round N+7 (C) + #2916: the citation form of the committed merged body.
|
|
337
|
+
* A liftable incoming marker still wins. The fallback attaches only when
|
|
338
|
+
* the current template can be re-matched later. An already-recognized
|
|
339
|
+
* marker — current, default, or a prior configured format still in
|
|
340
|
+
* history — is left in place so a template change does not duplicate it.
|
|
341
|
+
* All-placeholder templates cannot be stripped, so they are not attached.
|
|
342
|
+
*/
|
|
343
|
+
export function committedMergedBody(
|
|
344
|
+
deps: ExtractionPersistDeps,
|
|
345
|
+
mergedContent: string,
|
|
346
|
+
incomingCitedContent: string | undefined,
|
|
347
|
+
incomingCitationContext: Omit<CitationContext, "ts"> | undefined,
|
|
348
|
+
nowIso: string,
|
|
349
|
+
): string {
|
|
350
|
+
if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
|
|
351
|
+
return mergedContent;
|
|
352
|
+
}
|
|
353
|
+
const template = deps.config.inlineSourceAttributionFormat;
|
|
354
|
+
const templates = citationTemplatesForMerge(deps.config);
|
|
355
|
+
if (incomingCitedContent !== undefined) {
|
|
356
|
+
const marker = lastRecognizedCitationMarker(incomingCitedContent, templates);
|
|
357
|
+
if (marker) {
|
|
358
|
+
return mergedContent.endsWith(marker) ? mergedContent : `${mergedContent} ${marker}`;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
if (!citationTemplateIsDetectable(template)) return mergedContent;
|
|
362
|
+
if (lastRecognizedCitationMarker(mergedContent, templates)) return mergedContent;
|
|
363
|
+
return attachCitation(
|
|
364
|
+
mergedContent,
|
|
365
|
+
{ ...incomingCitationContext, ts: nowIso },
|
|
366
|
+
template,
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
|
|
331
370
|
/**
|
|
332
371
|
* Round N+2 (C) — the canonical RAW pre-citation merged body for hashing.
|
|
333
|
-
*
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
* fact text BEFORE any citation is attached. Hashing the cited body would
|
|
337
|
-
* give the merged record a different identity than the equivalent raw
|
|
338
|
-
* write (checklist #13), so the configured citation form is stripped
|
|
339
|
-
* first, exactly like the write path's `rawChunkedContent`
|
|
340
|
-
* canonicalization. Lives in this sibling (extracted from
|
|
341
|
-
* semantic-merge-persist.ts) so that file stays within its file-size
|
|
342
|
-
* ratchet cap.
|
|
372
|
+
* Strips every recognized citation form (current, default, and any prior
|
|
373
|
+
* configured template still in history). All-placeholder templates are
|
|
374
|
+
* not attached on the merge path, so they never reach this hash input.
|
|
343
375
|
*/
|
|
344
376
|
export function rawPreCitationMergedBody(deps: ExtractionPersistDeps, mergedContent: string): string {
|
|
345
377
|
if (resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true) {
|
|
346
378
|
return mergedContent;
|
|
347
379
|
}
|
|
348
|
-
|
|
349
|
-
return hasCitationForTemplate(mergedContent, template)
|
|
350
|
-
? stripCitationForTemplate(mergedContent, template)
|
|
351
|
-
: mergedContent;
|
|
380
|
+
return stripRecognizedCitations(mergedContent, citationTemplatesForMerge(deps.config));
|
|
352
381
|
}
|
|
353
382
|
|
|
354
383
|
/**
|
|
@@ -28,6 +28,7 @@ import { sanitizeMemoryContent } from "../sanitize.js";
|
|
|
28
28
|
import { ContentHashIndex } from "../storage/content-hash-index.js";
|
|
29
29
|
import type { VersioningConfig } from "../page-versioning.js";
|
|
30
30
|
import {
|
|
31
|
+
committedMergedBody,
|
|
31
32
|
committedMergedFactHash,
|
|
32
33
|
discardMergedTargetSnapshot,
|
|
33
34
|
finalizeMergedVersionPrune,
|
|
@@ -57,13 +58,10 @@ import { REFUSED_MERGE_CATEGORIES } from "../dedup/merge-on-write.js";
|
|
|
57
58
|
import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
58
59
|
import { inferIntentFromText } from "../intent.js";
|
|
59
60
|
import {
|
|
60
|
-
|
|
61
|
-
lastCitationMarkerForTemplate,
|
|
62
|
-
stripCitationForTemplate,
|
|
61
|
+
type CitationContext,
|
|
63
62
|
} from "../source-attribution.js";
|
|
64
63
|
import {
|
|
65
64
|
resolveConversationContextCapabilities,
|
|
66
|
-
resolvePipelineProcessingCapabilities,
|
|
67
65
|
resolvePresentationCapabilities,
|
|
68
66
|
resolveRecallAuxiliaryCapabilities,
|
|
69
67
|
type GraphConstructionCapabilitySet,
|
|
@@ -225,6 +223,14 @@ export interface ApplySemanticMergeOptions {
|
|
|
225
223
|
* Absent (or citation-free) commits the judge's merged body unchanged.
|
|
226
224
|
*/
|
|
227
225
|
incomingCitedContent?: string;
|
|
226
|
+
/**
|
|
227
|
+
* #2916: the citation context of THIS write (agent/session) — the same
|
|
228
|
+
* base a fresh attributed write stamps. When no incoming citation marker
|
|
229
|
+
* is liftable, the committed merged body still receives the configured
|
|
230
|
+
* inline-attribution transform exactly as a fresh attributed write would,
|
|
231
|
+
* stamped with this context and the merge's commit timestamp.
|
|
232
|
+
*/
|
|
233
|
+
incomingCitationContext?: Omit<CitationContext, "ts">;
|
|
228
234
|
/**
|
|
229
235
|
* Finding C: async probe run after a merge verdict but before any
|
|
230
236
|
* mutation. True when the would-be target already has promoted
|
|
@@ -470,33 +476,6 @@ export function createPathMergeParity(input: {
|
|
|
470
476
|
};
|
|
471
477
|
}
|
|
472
478
|
|
|
473
|
-
/**
|
|
474
|
-
* Round N+7 (C): the committed merged body carries the incoming extraction's
|
|
475
|
-
* citation marker (lifted from the caller's cited body for this write)
|
|
476
|
-
* appended after the judge's merged text, so incoming claims stay attributed
|
|
477
|
-
* even when the merged text embeds the target's older citation — quoted
|
|
478
|
-
* excerpts travel without frontmatter, so `sources` alone is not enough.
|
|
479
|
-
* Idempotent; a no-op when attribution is off or no marker exists.
|
|
480
|
-
*/
|
|
481
|
-
function committedMergedBody(
|
|
482
|
-
deps: ExtractionPersistDeps,
|
|
483
|
-
mergedContent: string,
|
|
484
|
-
incomingCitedContent: string | undefined,
|
|
485
|
-
): string {
|
|
486
|
-
if (
|
|
487
|
-
resolvePipelineProcessingCapabilities(deps.config).inlineSourceAttribution !== true ||
|
|
488
|
-
incomingCitedContent === undefined
|
|
489
|
-
) {
|
|
490
|
-
return mergedContent;
|
|
491
|
-
}
|
|
492
|
-
const marker = lastCitationMarkerForTemplate(
|
|
493
|
-
incomingCitedContent,
|
|
494
|
-
deps.config.inlineSourceAttributionFormat,
|
|
495
|
-
);
|
|
496
|
-
if (!marker || mergedContent.endsWith(marker)) return mergedContent;
|
|
497
|
-
return `${mergedContent} ${marker}`;
|
|
498
|
-
}
|
|
499
|
-
|
|
500
479
|
function versioningConfigFrom(deps: ExtractionPersistDeps): VersioningConfig {
|
|
501
480
|
return {
|
|
502
481
|
enabled: resolveRecallAuxiliaryCapabilities(deps.config).versioning,
|
|
@@ -611,10 +590,19 @@ export async function applySemanticMergeAtPersist(
|
|
|
611
590
|
if (target.content !== decision.targetContent) {
|
|
612
591
|
return { action: "created", reason: "target_changed" };
|
|
613
592
|
}
|
|
614
|
-
// Round N+7 (C): every mutation below commits THIS body — the
|
|
615
|
-
// merged text
|
|
616
|
-
//
|
|
617
|
-
|
|
593
|
+
// Round N+7 (C) + #2916: every mutation below commits THIS body — the
|
|
594
|
+
// judge's merged text in its cited form (the incoming marker when one is
|
|
595
|
+
// liftable, else the configured transform as a fresh attributed write
|
|
596
|
+
// applies it) — and the outcome reports it, so caller comparisons
|
|
597
|
+
// describe what storage actually holds.
|
|
598
|
+
const nowIso = (options.now ? options.now() : new Date()).toISOString();
|
|
599
|
+
const committedContent = committedMergedBody(
|
|
600
|
+
deps,
|
|
601
|
+
decision.mergedContent,
|
|
602
|
+
options.incomingCitedContent,
|
|
603
|
+
options.incomingCitationContext,
|
|
604
|
+
nowIso,
|
|
605
|
+
);
|
|
618
606
|
|
|
619
607
|
// Create-path parity gate (final round) — ONE place enumerates every
|
|
620
608
|
// trust/scope/verdict field the normal write stamps and bypasses the
|
|
@@ -714,7 +702,6 @@ export async function applySemanticMergeAtPersist(
|
|
|
714
702
|
// snapshot just read: a writer landing between the read and the write must
|
|
715
703
|
// win rather than be overwritten from a stale body. The active-target check
|
|
716
704
|
// above makes a tombstone block structurally impossible here.
|
|
717
|
-
const nowIso = (options.now ? options.now() : new Date()).toISOString();
|
|
718
705
|
let casRevision: string | undefined; // #2813 (P1): OUR content CAS's receipt — feeds the patch stamp below and the catch's rollback comparison
|
|
719
706
|
let mergePatch: MergeFrontmatterUpdate | undefined;
|
|
720
707
|
try {
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
* within its file-size ratchet. Everything here derives from the re-read
|
|
5
5
|
* COMMITTED record; nothing reads the incoming extraction.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
import { createHash } from "node:crypto";
|
|
8
|
+
import { readFile } from "node:fs/promises";
|
|
9
|
+
import { canonicalSemanticFileText } from "../storage/cas-revision-store.js";
|
|
8
10
|
import { parseOriginClass } from "../security/origin-authority.js";
|
|
9
11
|
import { log } from "../logger.js";
|
|
10
12
|
import { inferMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
|
|
@@ -76,6 +78,15 @@ export interface MergedTargetPromotionPayload {
|
|
|
76
78
|
committedRevision?: string;
|
|
77
79
|
/** #2813 (P1 B): sha256 hex digest of the durable memory file when committed. */
|
|
78
80
|
committedDigest?: string;
|
|
81
|
+
/** #2870: canonical SEMANTIC fingerprint of the durable file at
|
|
82
|
+
* payload-build time — access telemetry (`accessCount`/`lastAccessed`)
|
|
83
|
+
* excluded, the same exclusion set `invalidationCommitFingerprint`
|
|
84
|
+
* applies. The final guard re-reads the file and compares THIS, not the
|
|
85
|
+
* byte digest: an access-tracking flush between build and promotion
|
|
86
|
+
* leaves it equal (the flush mints no receipt and touches no semantic
|
|
87
|
+
* line), while any body/confidence/provenance/scope/tags/status change
|
|
88
|
+
* makes it differ. */
|
|
89
|
+
committedSemanticFingerprint?: string;
|
|
79
90
|
}
|
|
80
91
|
|
|
81
92
|
/**
|
|
@@ -151,13 +162,22 @@ export async function buildMergedTargetPromotionPayload(
|
|
|
151
162
|
return { payload: null, readFailed: false };
|
|
152
163
|
}
|
|
153
164
|
const fm = committed.frontmatter;
|
|
154
|
-
// #
|
|
155
|
-
//
|
|
156
|
-
//
|
|
165
|
+
// #2870: bind to the record's SEMANTIC identity, not its bytes. The
|
|
166
|
+
// receipt's committed semantic fingerprint — the durable file with the
|
|
167
|
+
// access-telemetry keys (`accessCount:`, `lastAccessed:`) stripped, the
|
|
168
|
+
// same exclusion set `invalidationCommitFingerprint` applies — stays
|
|
169
|
+
// equal across an access-tracking flush (which rewrites exactly those
|
|
170
|
+
// two lines without minting a receipt), so a flush between the merge
|
|
171
|
+
// commit and this reread no longer blocks a valid promotion. Any other
|
|
172
|
+
// frontmatter or body change still refuses. Shards recorded before
|
|
173
|
+
// #2870 carry no stored semantic fingerprint; those keep the stricter
|
|
174
|
+
// full-digest comparison until the next semantic write re-records the
|
|
175
|
+
// shard.
|
|
157
176
|
const snapshotDigest =
|
|
158
177
|
typeof storage.readDurableFileDigest === "function"
|
|
159
178
|
? await storage.readDurableFileDigest(committed.path).catch(() => null)
|
|
160
179
|
: null;
|
|
180
|
+
const snapshotSemanticFingerprint = await readDurableSemanticFingerprint(committed.path);
|
|
161
181
|
const receipt = await readPromotionReceiptStatus(storage, committed.path);
|
|
162
182
|
if (!receipt.available) {
|
|
163
183
|
log.warn(
|
|
@@ -165,7 +185,22 @@ export async function buildMergedTargetPromotionPayload(
|
|
|
165
185
|
);
|
|
166
186
|
return { payload: null, readFailed: true };
|
|
167
187
|
}
|
|
168
|
-
if (
|
|
188
|
+
if (
|
|
189
|
+
receipt.committedSemanticFingerprint !== undefined &&
|
|
190
|
+
snapshotSemanticFingerprint !== receipt.committedSemanticFingerprint
|
|
191
|
+
) {
|
|
192
|
+
log.warn(
|
|
193
|
+
snapshotSemanticFingerprint == null
|
|
194
|
+
? `semantic-merge: merged-target promotion refused for ${merge.targetId} — the semantic snapshot fingerprint is unavailable while the CAS receipt carries ${receipt.committedSemanticFingerprint}; promotion and reconciliation retry on the next merge`
|
|
195
|
+
: `semantic-merge: merged-target promotion refused for ${merge.targetId} — record semantic fingerprint (${snapshotSemanticFingerprint}) does not match committed receipt fingerprint (${receipt.committedSemanticFingerprint}); record metadata was mutated concurrently`,
|
|
196
|
+
);
|
|
197
|
+
return { payload: null, readFailed: true };
|
|
198
|
+
}
|
|
199
|
+
if (
|
|
200
|
+
receipt.committedSemanticFingerprint === undefined &&
|
|
201
|
+
receipt.committedDigest !== undefined &&
|
|
202
|
+
snapshotDigest !== receipt.committedDigest
|
|
203
|
+
) {
|
|
169
204
|
log.warn(
|
|
170
205
|
snapshotDigest == null
|
|
171
206
|
? `semantic-merge: merged-target promotion refused for ${merge.targetId} — the record snapshot digest is unavailable while the CAS receipt carries committed digest ${receipt.committedDigest}; promotion and reconciliation retry on the next merge`
|
|
@@ -210,11 +245,30 @@ export async function buildMergedTargetPromotionPayload(
|
|
|
210
245
|
: snapshotDigest !== null
|
|
211
246
|
? { committedDigest: snapshotDigest }
|
|
212
247
|
: {}),
|
|
248
|
+
...(receipt.committedSemanticFingerprint !== undefined
|
|
249
|
+
? { committedSemanticFingerprint: receipt.committedSemanticFingerprint }
|
|
250
|
+
: snapshotSemanticFingerprint !== null
|
|
251
|
+
? { committedSemanticFingerprint: snapshotSemanticFingerprint }
|
|
252
|
+
: {}),
|
|
213
253
|
},
|
|
214
254
|
readFailed: false,
|
|
215
255
|
};
|
|
216
256
|
}
|
|
217
257
|
|
|
258
|
+
/** #2870: canonical SEMANTIC fingerprint of a durable file's CURRENT
|
|
259
|
+
* bytes — the file text with access telemetry stripped
|
|
260
|
+
* ({@link canonicalSemanticFileText}), hashed exactly the way the CAS
|
|
261
|
+
* receipt records it at commit time. Null when the file cannot be read
|
|
262
|
+
* (fail-open, like readDurableFileDigest). */
|
|
263
|
+
export async function readDurableSemanticFingerprint(filePath: string): Promise<string | null> {
|
|
264
|
+
try {
|
|
265
|
+
return createHash("sha256")
|
|
266
|
+
.update(canonicalSemanticFileText(await readFile(filePath, "utf8")))
|
|
267
|
+
.digest("hex");
|
|
268
|
+
} catch {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
218
272
|
/** #2813 (P1 A): read the standing receipt as a three-way truth for the
|
|
219
273
|
* promotion path. Present and absent are usable identities (absent = the
|
|
220
274
|
* target predates the sidecar); unavailable is not. A storage whose status
|
|
@@ -223,7 +277,7 @@ export async function readPromotionReceiptStatus(
|
|
|
223
277
|
storage: Pick<StorageManager, "readCasRevisionStatus">,
|
|
224
278
|
filePath: string,
|
|
225
279
|
): Promise<
|
|
226
|
-
| { available: true; revision: string | undefined; committedDigest?: string }
|
|
280
|
+
| { available: true; revision: string | undefined; committedDigest?: string; committedSemanticFingerprint?: string }
|
|
227
281
|
| { available: false; reason: string }
|
|
228
282
|
> {
|
|
229
283
|
try {
|
|
@@ -233,6 +287,8 @@ export async function readPromotionReceiptStatus(
|
|
|
233
287
|
available: true,
|
|
234
288
|
revision: status.status === "present" ? status.revision : undefined,
|
|
235
289
|
committedDigest: status.status === "present" ? status.committedDigest : undefined,
|
|
290
|
+
committedSemanticFingerprint:
|
|
291
|
+
status.status === "present" ? status.committedSemanticFingerprint : undefined,
|
|
236
292
|
};
|
|
237
293
|
} catch (err) {
|
|
238
294
|
return { available: false, reason: err instanceof Error ? err.message : String(err) };
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { log } from "../logger.js";
|
|
2
|
+
import {
|
|
3
|
+
qmdStartupCollectionCheckTimeoutMs,
|
|
4
|
+
type SearchCollectionState,
|
|
5
|
+
} from "./orchestrator-helpers.js";
|
|
6
|
+
|
|
7
|
+
export interface QmdStartupCollectionCheckResult {
|
|
8
|
+
namespace: string;
|
|
9
|
+
state: SearchCollectionState;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface StartupDiscovery<T> {
|
|
13
|
+
value: T;
|
|
14
|
+
complete: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Bound any startup discovery that must not hold a readiness gate forever.
|
|
19
|
+
* Discovery APIs such as the namespace catalog do not accept an AbortSignal,
|
|
20
|
+
* so a late result is deliberately ignored after the configured fallback wins.
|
|
21
|
+
*/
|
|
22
|
+
export async function startupDiscoveryWithTimeout<T>(
|
|
23
|
+
discover: () => Promise<T>,
|
|
24
|
+
configuredFallback: T,
|
|
25
|
+
timeoutMs = qmdStartupCollectionCheckTimeoutMs(),
|
|
26
|
+
): Promise<StartupDiscovery<T>> {
|
|
27
|
+
let timer: NodeJS.Timeout | undefined;
|
|
28
|
+
const fallback: StartupDiscovery<T> = {
|
|
29
|
+
value: configuredFallback,
|
|
30
|
+
complete: false,
|
|
31
|
+
};
|
|
32
|
+
const timeoutPromise = new Promise<StartupDiscovery<T>>((resolve) => {
|
|
33
|
+
timer = setTimeout(() => {
|
|
34
|
+
log.warn(
|
|
35
|
+
`startup discovery timed out after ${timeoutMs}ms; using configured fallback fail-open`,
|
|
36
|
+
);
|
|
37
|
+
resolve(fallback);
|
|
38
|
+
}, timeoutMs);
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
return await Promise.race([
|
|
42
|
+
Promise.resolve()
|
|
43
|
+
.then(discover)
|
|
44
|
+
.then((value) => ({ value, complete: true })),
|
|
45
|
+
timeoutPromise,
|
|
46
|
+
]);
|
|
47
|
+
} finally {
|
|
48
|
+
if (timer) clearTimeout(timer);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Bound the complete startup collection-check batch, not just each individual
|
|
54
|
+
* check. This preserves service availability when a backend ignores an abort
|
|
55
|
+
* signal or a check promise never settles: startup continues with fail-open
|
|
56
|
+
* `unknown` states and the normal background retry path can repair search.
|
|
57
|
+
*/
|
|
58
|
+
export async function qmdStartupCollectionChecksWithTimeout(
|
|
59
|
+
checks: readonly Promise<QmdStartupCollectionCheckResult>[],
|
|
60
|
+
namespaces: readonly string[],
|
|
61
|
+
timeoutMs = qmdStartupCollectionCheckTimeoutMs() + 1_000,
|
|
62
|
+
): Promise<QmdStartupCollectionCheckResult[]> {
|
|
63
|
+
if (checks.length === 0) return [];
|
|
64
|
+
const settled = new Map<string, QmdStartupCollectionCheckResult>();
|
|
65
|
+
const trackedChecks = checks.map((check) => check.then((result) => {
|
|
66
|
+
settled.set(result.namespace, result);
|
|
67
|
+
return result;
|
|
68
|
+
}));
|
|
69
|
+
let timer: NodeJS.Timeout | undefined;
|
|
70
|
+
const timeoutPromise = new Promise<QmdStartupCollectionCheckResult[]>((resolve) => {
|
|
71
|
+
timer = setTimeout(() => {
|
|
72
|
+
log.warn(
|
|
73
|
+
`QMD startup collection check batch timed out after ${timeoutMs}ms; keeping search enabled fail-open`,
|
|
74
|
+
);
|
|
75
|
+
resolve(namespaces.map((namespace) =>
|
|
76
|
+
settled.get(namespace) ?? { namespace, state: "unknown" as const },
|
|
77
|
+
));
|
|
78
|
+
}, timeoutMs);
|
|
79
|
+
});
|
|
80
|
+
try {
|
|
81
|
+
return await Promise.race([Promise.all(trackedChecks), timeoutPromise]);
|
|
82
|
+
} finally {
|
|
83
|
+
if (timer) clearTimeout(timer);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -2770,6 +2770,11 @@ test("deferredInitialize startup sync covers cataloged dynamic namespaces (NHZEV
|
|
|
2770
2770
|
const orchestrator = Object.create(Orchestrator.prototype) as any;
|
|
2771
2771
|
let updateArg: string[] | undefined;
|
|
2772
2772
|
const abortController = new AbortController();
|
|
2773
|
+
// #2980 fences startup work by lifecycle epoch: deferredInitialize() now
|
|
2774
|
+
// begins an epoch that resets the gate fields the selfDeps seam fail-fasts
|
|
2775
|
+
// on (PR #1801 set-trap contract). Prototype fakes must declare them.
|
|
2776
|
+
orchestrator.deferredInitAbort = null;
|
|
2777
|
+
orchestrator.deferredSyncSucceeded = false;
|
|
2773
2778
|
const memoryDir = path.join(os.tmpdir(), "remnic-startup-maintenance-nhzev");
|
|
2774
2779
|
const dynamicNamespace = "project-origin-dynamic";
|
|
2775
2780
|
const dynamicStorageDir = path.join(
|
|
@@ -2838,6 +2843,8 @@ test("deferredInitialize startup sync falls back to configured set on catalog re
|
|
|
2838
2843
|
const orchestrator = Object.create(Orchestrator.prototype) as any;
|
|
2839
2844
|
let updateArg: string[] | undefined;
|
|
2840
2845
|
const abortController = new AbortController();
|
|
2846
|
+
orchestrator.deferredInitAbort = null;
|
|
2847
|
+
orchestrator.deferredSyncSucceeded = false;
|
|
2841
2848
|
|
|
2842
2849
|
orchestrator.config = {
|
|
2843
2850
|
namespacesEnabled: true,
|