@remnic/core 9.69.38 → 9.69.40
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 +39 -39
- package/dist/access-authorization-probe.d.ts +16 -14
- package/dist/access-authorization-probe.js +40 -40
- package/dist/access-boundary.d.ts +16 -14
- package/dist/access-boundary.js +39 -39
- package/dist/access-cli.js +107 -105
- 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 +39 -39
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-briefing.d.ts +16 -14
- package/dist/access-http-briefing.js +40 -40
- 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 +41 -41
- package/dist/access-http.d.ts +17 -15
- package/dist/access-http.js +58 -58
- package/dist/access-identity-continuity-surface.d.ts +13 -12
- package/dist/access-identity-continuity-surface.js +39 -39
- package/dist/access-lcm-surface.d.ts +16 -14
- package/dist/access-lcm-surface.js +39 -39
- package/dist/access-mcp.d.ts +16 -14
- package/dist/access-mcp.js +47 -47
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-DY4z6L5X.d.ts → access-namespace-preflight-CKBumJ8W.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +39 -39
- 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 +2 -2
- package/dist/access-observe-write-surface.d.ts +16 -14
- package/dist/access-observe-write-surface.js +39 -39
- package/dist/access-offline-manifest.d.ts +37 -13
- package/dist/access-offline-manifest.js +7 -3
- package/dist/access-operations-batch.js +41 -41
- package/dist/access-operations.d.ts +16 -14
- package/dist/access-operations.js +46 -46
- package/dist/access-recall-concurrency.d.ts +16 -14
- package/dist/access-recall-concurrency.js +39 -39
- package/dist/access-recall-response.d.ts +16 -14
- package/dist/access-recall-response.js +39 -39
- package/dist/access-recall-surface.d.ts +16 -14
- package/dist/access-recall-surface.js +39 -39
- package/dist/access-schema.d.ts +5 -3
- package/dist/access-schema.js +1 -1
- package/dist/{access-service-gBcdRUHY.d.ts → access-service-DJ3qogNt.d.ts} +8 -8
- package/dist/access-service-helpers.d.ts +16 -14
- package/dist/access-service.d.ts +16 -14
- package/dist/access-service.js +39 -39
- package/dist/access-surface-catalog.d.ts +16 -14
- package/dist/access-surface-catalog.js +41 -41
- 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-recall.d.ts +1 -1
- package/dist/active-recall.js +6 -5
- package/dist/active-recall.js.map +1 -1
- package/dist/activity/digest.d.ts +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-RP4C6ZPF.js → auto-sync-D6BAPIJV.js} +5 -5
- 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 +16 -16
- 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 +5 -5
- 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/{catalog-CW87xGx8.d.ts → catalog-BHXkBVhg.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 +20 -19
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-B36GUU6T.js → chunk-23HFXQ5J.js} +36 -3
- package/dist/chunk-23HFXQ5J.js.map +1 -0
- package/dist/{chunk-YFTNZMGR.js → chunk-27NO2KVB.js} +31 -8
- package/dist/chunk-27NO2KVB.js.map +1 -0
- package/dist/{chunk-T32B72QX.js → chunk-2SKMZUOW.js} +2 -2
- package/dist/{chunk-VHOSM5G4.js → chunk-2SNCQHJZ.js} +2 -2
- package/dist/{chunk-VV4ZVUE6.js → chunk-3QEVOQF5.js} +2 -2
- package/dist/{chunk-3N3PBBEH.js → chunk-3XPN7AVY.js} +2 -2
- package/dist/{chunk-XN6XT6GR.js → chunk-46Z3VGWF.js} +2 -2
- package/dist/{chunk-2PTNJTBE.js → chunk-4CMXI55L.js} +2 -2
- package/dist/{chunk-2MT4ADLQ.js → chunk-5LYSEZOF.js} +18 -9
- package/dist/chunk-5LYSEZOF.js.map +1 -0
- package/dist/{chunk-XWLLFKHM.js → chunk-62HFZNCJ.js} +19 -12
- package/dist/chunk-62HFZNCJ.js.map +1 -0
- package/dist/{chunk-VELCIWJZ.js → chunk-6L2II3KS.js} +22 -11
- package/dist/chunk-6L2II3KS.js.map +1 -0
- package/dist/{chunk-A6CKMIPK.js → chunk-7D6SER6A.js} +8 -8
- package/dist/{chunk-4B3HBIFX.js → chunk-7Z54NXVS.js} +2 -2
- package/dist/{chunk-X2NFFBTO.js → chunk-A7GQBJP5.js} +4 -4
- package/dist/{chunk-ACY4ZPF7.js → chunk-AEOOGXMQ.js} +10 -5
- package/dist/chunk-AEOOGXMQ.js.map +1 -0
- package/dist/{chunk-NWMUSKED.js → chunk-BGRTZOJB.js} +3 -3
- package/dist/{chunk-ZEGL7YCC.js → chunk-BXIJSPCL.js} +2 -2
- package/dist/{chunk-MLWMR2GE.js → chunk-BYQX4IOG.js} +2 -2
- package/dist/{chunk-ULDBGA5W.js → chunk-C5R73BON.js} +2 -2
- package/dist/{chunk-BD7JTBYP.js → chunk-D7MAYFQP.js} +2 -2
- package/dist/{chunk-V6G2PSXA.js → chunk-DAZANIYU.js} +251 -297
- package/dist/chunk-DAZANIYU.js.map +1 -0
- package/dist/{chunk-BRZWWUCJ.js → chunk-DFVSJFHK.js} +2 -2
- package/dist/{chunk-DPMTLJCT.js → chunk-ES5BUPYB.js} +2 -2
- package/dist/{chunk-MVAQ2WM3.js → chunk-G2XZFGYN.js} +6 -2
- package/dist/chunk-G2XZFGYN.js.map +1 -0
- package/dist/{chunk-TNSCIPBQ.js → chunk-G6NQ3L4T.js} +2 -2
- package/dist/{chunk-5N4MZLEH.js → chunk-GO5LOHCD.js} +2 -2
- package/dist/{chunk-AECJY3GJ.js → chunk-GSSDHAYH.js} +2 -2
- package/dist/{chunk-JA2QJOAX.js → chunk-HJUP3K6L.js} +2 -2
- package/dist/{chunk-ZKZFFWLV.js → chunk-ICNJ6J46.js} +2 -2
- package/dist/{chunk-6EHM2AV7.js → chunk-IMBQFHRV.js} +2 -2
- package/dist/{chunk-6PRY6CLC.js → chunk-IOPIGX7Y.js} +1 -1
- package/dist/{chunk-TRHBQVVO.js → chunk-IS2IDFJP.js} +14 -14
- package/dist/{chunk-R4VAUNNC.js → chunk-J4WGTN2N.js} +2 -2
- package/dist/{chunk-JPOX2AJB.js → chunk-J7FVMLBR.js} +2 -2
- package/dist/{chunk-BYZKLEWG.js → chunk-JAJIMTFB.js} +6 -6
- package/dist/{chunk-OKO57IXB.js → chunk-JOP7W24J.js} +11 -11
- package/dist/{chunk-YUW66UAH.js → chunk-JUDT33RX.js} +2 -2
- package/dist/{chunk-QHT7MOUF.js → chunk-K4A6UVPB.js} +22 -11
- package/dist/chunk-K4A6UVPB.js.map +1 -0
- package/dist/{chunk-UQNYPK7G.js → chunk-K4JKAXMO.js} +2 -2
- package/dist/{chunk-BV4ZKIZH.js → chunk-K75A5XWU.js} +3 -2
- package/dist/{chunk-3CBI2ZSA.js → chunk-KG2OOAFF.js} +20 -12
- package/dist/chunk-KG2OOAFF.js.map +1 -0
- package/dist/{chunk-M6HBPLBA.js → chunk-KOTG3RXE.js} +2 -2
- package/dist/{chunk-CWTCMZGE.js → chunk-KTOXQMW3.js} +119 -3
- package/dist/chunk-KTOXQMW3.js.map +1 -0
- package/dist/{chunk-OB3XMWX5.js → chunk-KVO2BTA4.js} +2 -2
- package/dist/{chunk-CBFYCDYO.js → chunk-KY236SP5.js} +3 -3
- package/dist/{chunk-4BCHFSC7.js → chunk-LFVZD5EC.js} +3 -3
- package/dist/{chunk-GGAXFTNH.js → chunk-LKFVVN7R.js} +2 -2
- package/dist/{chunk-IYKZJVL5.js → chunk-MDIEES23.js} +1 -1
- package/dist/chunk-MDIEES23.js.map +1 -0
- package/dist/{chunk-4RX5O34R.js → chunk-MJC7UKH7.js} +2 -2
- package/dist/{chunk-7S53BPTU.js → chunk-MVG3KXON.js} +69 -22
- package/dist/chunk-MVG3KXON.js.map +1 -0
- package/dist/chunk-NETQXOPY.js +221 -0
- package/dist/chunk-NETQXOPY.js.map +1 -0
- package/dist/{chunk-UZZ7SQT3.js → chunk-NVVZPBKI.js} +2 -2
- package/dist/{chunk-BLDBT6HZ.js → chunk-PJRKLB4Z.js} +18 -2
- package/dist/chunk-PJRKLB4Z.js.map +1 -0
- package/dist/{chunk-TTSJ7WUC.js → chunk-PKUJNICO.js} +2 -2
- package/dist/{chunk-QMWKENNK.js → chunk-Q4AUIFUA.js} +4 -4
- package/dist/{chunk-G43PMSME.js → chunk-QE6YVNP5.js} +7 -7
- package/dist/{chunk-WKDFJXW5.js → chunk-QM2SPLKQ.js} +1 -1
- package/dist/chunk-QM2SPLKQ.js.map +1 -0
- package/dist/{chunk-GT4ZHOKT.js → chunk-QPVNK2VE.js} +2 -2
- package/dist/{chunk-K5DA5TRG.js → chunk-QS5Q5RBV.js} +2 -2
- package/dist/{chunk-BX4EOMKT.js → chunk-RDLPFM7I.js} +2 -2
- package/dist/{chunk-EY5JAWZC.js → chunk-RJQAP333.js} +2 -2
- package/dist/{chunk-5AERZWJD.js → chunk-RLU2Y5GV.js} +4 -4
- package/dist/chunk-RLU2Y5GV.js.map +1 -0
- package/dist/{chunk-2OGTN37H.js → chunk-ROEFLU37.js} +4 -4
- package/dist/{chunk-62QIQEUC.js → chunk-SFHLQPBF.js} +25 -25
- package/dist/chunk-SK7D34OL.js +68 -0
- package/dist/chunk-SK7D34OL.js.map +1 -0
- package/dist/{chunk-HVS7TH2Y.js → chunk-SUEOG2S4.js} +2 -2
- package/dist/{chunk-74AHCL56.js → chunk-TEMKBSV6.js} +2 -2
- package/dist/{chunk-LQNRVPTV.js → chunk-THTF2W7M.js} +151 -118
- package/dist/chunk-THTF2W7M.js.map +1 -0
- package/dist/{chunk-KDFDXEXZ.js → chunk-TO36VPZI.js} +2 -2
- package/dist/{chunk-BJEJUOGM.js → chunk-TZ44E732.js} +44 -6
- package/dist/chunk-TZ44E732.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-3OYSIVOO.js → chunk-UZ6JYPJ6.js} +611 -289
- package/dist/chunk-UZ6JYPJ6.js.map +1 -0
- package/dist/{chunk-M3MYMWXG.js → chunk-V2ZA4YWE.js} +2 -2
- package/dist/{chunk-UIOIDW3L.js → chunk-VHKXRYQN.js} +2 -2
- package/dist/{chunk-GAS7KYC7.js → chunk-VKWFNPBH.js} +2 -2
- package/dist/{chunk-6H2G7RFT.js → chunk-VNQRRUNS.js} +11 -10
- package/dist/chunk-VNQRRUNS.js.map +1 -0
- package/dist/{chunk-XGRXQR6T.js → chunk-VQWBUPSJ.js} +2 -2
- package/dist/{chunk-TUKGXQ5T.js → chunk-VQYWKCDR.js} +2 -2
- package/dist/{chunk-PPQEP4OH.js → chunk-W23JARAQ.js} +2 -2
- package/dist/{chunk-YQNNHLCG.js → chunk-WPGR3RW4.js} +2 -2
- package/dist/{chunk-474DL7UB.js → chunk-WZYHPAG5.js} +3 -3
- package/dist/{chunk-5HYUUFMQ.js → chunk-XCPNH2MG.js} +259 -10
- package/dist/chunk-XCPNH2MG.js.map +1 -0
- package/dist/{chunk-GQQVEH6V.js → chunk-XM46Y66S.js} +2 -2
- package/dist/{chunk-JNSENHV5.js → chunk-YRIFXXMI.js} +3 -3
- package/dist/{chunk-TRLOFIQC.js → chunk-YTK5MVNF.js} +2 -2
- package/dist/{chunk-VMNCZ627.js → chunk-YTZN2UZO.js} +2 -2
- package/dist/chunk-Z4GUX2M6.js +94 -0
- package/dist/chunk-Z4GUX2M6.js.map +1 -0
- package/dist/{chunk-6ZMNTRU3.js → chunk-ZAEPD4C2.js} +2 -2
- package/dist/{chunk-KQW3YGEN.js → chunk-ZRMMXWYI.js} +2 -2
- package/dist/{chunk-P4ZAEYKG.js → chunk-ZX3AYNNV.js} +6 -3
- package/dist/chunk-ZX3AYNNV.js.map +1 -0
- package/dist/{chunk-MCRVQ5YQ.js → chunk-ZZCR2QYL.js} +2 -2
- package/dist/{cli-BNg-TAlz.d.ts → cli-BWri5-am.d.ts} +5 -5
- package/dist/cli.d.ts +18 -16
- package/dist/cli.js +80 -79
- package/dist/coding/export-okf-codegraph.d.ts +1 -1
- package/dist/coding/export-okf-codegraph.js +15 -15
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +16 -16
- 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 +6 -5
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +16 -16
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +16 -16
- 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/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +18 -18
- 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 +18 -18
- package/dist/cross-lingual-recall.d.ts +1 -1
- package/dist/day-summary.d.ts +1 -1
- package/dist/deep-recall-http-glue.d.ts +16 -14
- package/dist/deep-recall-http-glue.js +2 -2
- package/dist/deep-recall-mcp-tools.d.ts +16 -14
- package/dist/deep-recall-policy-llm.d.ts +4 -3
- package/dist/deep-recall-policy-llm.js +3 -3
- package/dist/deep-recall-seeds.d.ts +1 -1
- 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-ueZlKTQB.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 +16 -16
- 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/external-wiki-access.d.ts +16 -14
- package/dist/external-wiki-access.js +40 -40
- 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 +26 -24
- package/dist/fallback-llm-codex-subscription.d.ts +52 -7
- package/dist/fallback-llm-codex-subscription.js +17 -1
- package/dist/fallback-llm.d.ts +25 -28
- package/dist/fallback-llm.js +4 -3
- package/dist/{generic-recall-paths-BcySh_f9.d.ts → generic-recall-paths-CpyVmA88.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 +1 -1
- 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-BvUA4S7M.d.ts} +3 -3
- package/dist/index.d.ts +80 -40
- package/dist/index.js +140 -115
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +7 -7
- 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-BsJGulur.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 +18 -18
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +16 -16
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +16 -16
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +17 -17
- package/dist/{maintenance-CW9wCzMP.d.ts → maintenance-CYubtIRr.d.ts} +9 -3
- 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 +17 -17
- 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 +16 -16
- 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 +19 -19
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +30 -29
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +27 -27
- package/dist/{orchestrator-DocO0_hw.d.ts → orchestrator-BWDRJ_0d.d.ts} +37 -13
- package/dist/orchestrator.d.ts +13 -12
- package/dist/orchestrator.js +110 -106
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-CiYcqqhl.d.ts → pipeline-7JMn2yMH.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-C0FoTiL_.d.ts → public-http-CJWs3mo9.d.ts} +1 -1
- package/dist/{qmd-qXD4vatU.d.ts → qmd-CxCH9G9m.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 +8 -8
- package/dist/recall-state-view-anchors.d.ts +85 -0
- package/dist/recall-state-view-anchors.js +21 -0
- package/dist/recall-state-view-anchors.js.map +1 -0
- 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 +38 -1
- package/dist/recall-state-view.js +11 -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/manifest.d.ts +1 -1
- package/dist/reconcile/plan.d.ts +1 -1
- 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/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +7 -6
- 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-BGAUqhBR.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-CCeRD9pV.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +17 -17
- package/dist/semantic-rule-promotion.js +16 -16
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +16 -16
- package/dist/{service-CLkA7AQB.d.ts → service-BwpzRduk.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/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +19 -19
- package/dist/standup/build.js +16 -16
- package/dist/{storage-wvX01lht.d.ts → storage-BprAGBG0.d.ts} +2 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +15 -15
- package/dist/subject-config.d.ts +1 -1
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +5 -5
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +18 -17
- package/dist/support-passport/index.js +42 -42
- 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/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/export-okf.d.ts +1 -1
- package/dist/transfer/export-okf.js +16 -16
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-Cyr32ABj.d.ts → types-nJV23pa3.d.ts} +1 -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 +16 -16
- package/dist/who-knows-cli.d.ts +16 -14
- package/dist/who-knows-cli.js +17 -17
- package/dist/who-knows.d.ts +16 -14
- package/dist/who-knows.js +16 -16
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/access-category-alias.test.ts +93 -0
- package/src/access-offline-manifest.ts +52 -2
- package/src/access-schema.ts +9 -4
- 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 +82 -2
- package/src/activity/timeline/regenerate.ts +7 -1
- 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/timeline-publish-commands.ts +9 -0
- package/src/config.test.ts +170 -43
- package/src/config.ts +17 -5
- 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 +193 -7
- package/src/fallback-llm-parse-failure.test.ts +156 -0
- package/src/fallback-llm.test.ts +58 -0
- package/src/fallback-llm.ts +187 -186
- 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/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/orchestrator-helpers.test.ts +104 -0
- package/src/orchestration/orchestrator-init.ts +366 -106
- package/src/orchestration/recall-internal.ts +85 -74
- package/src/orchestration/recall-rerank-coordinator.ts +41 -4
- package/src/orchestration/recall-search-pipeline.ts +25 -18
- package/src/orchestration/recall-state-view-pipeline.test.ts +89 -0
- 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/qmd.ts +21 -10
- package/src/recall-rerank-coordinator.test.ts +153 -0
- package/src/recall-state-view-admission.ts +11 -1
- package/src/recall-state-view-anchors.ts +163 -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 +29 -8
- package/src/recall-state-view-zero-diff.test.ts +30 -0
- package/src/recall-state-view.test.ts +161 -0
- package/src/recall-state-view.ts +211 -37
- package/src/reconcile-identity-cache.test.ts +82 -1
- package/src/search/port.ts +1 -1
- 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/trust-score-recall-paths.test.ts +1 -1
- package/src/types.ts +1 -0
- package/dist/chunk-255PC37A.js +0 -120
- package/dist/chunk-255PC37A.js.map +0 -1
- package/dist/chunk-2MT4ADLQ.js.map +0 -1
- package/dist/chunk-3CBI2ZSA.js.map +0 -1
- package/dist/chunk-3OYSIVOO.js.map +0 -1
- package/dist/chunk-5AERZWJD.js.map +0 -1
- package/dist/chunk-5HYUUFMQ.js.map +0 -1
- package/dist/chunk-6H2G7RFT.js.map +0 -1
- package/dist/chunk-7S53BPTU.js.map +0 -1
- package/dist/chunk-ACY4ZPF7.js.map +0 -1
- package/dist/chunk-B36GUU6T.js.map +0 -1
- package/dist/chunk-BJEJUOGM.js.map +0 -1
- package/dist/chunk-BLDBT6HZ.js.map +0 -1
- package/dist/chunk-CWTCMZGE.js.map +0 -1
- package/dist/chunk-IYKZJVL5.js.map +0 -1
- package/dist/chunk-JXN77SGO.js.map +0 -1
- package/dist/chunk-LQNRVPTV.js.map +0 -1
- package/dist/chunk-MVAQ2WM3.js.map +0 -1
- package/dist/chunk-P4ZAEYKG.js.map +0 -1
- package/dist/chunk-QHT7MOUF.js.map +0 -1
- package/dist/chunk-V6G2PSXA.js.map +0 -1
- package/dist/chunk-VELCIWJZ.js.map +0 -1
- package/dist/chunk-WKDFJXW5.js.map +0 -1
- package/dist/chunk-XWLLFKHM.js.map +0 -1
- package/dist/chunk-YFTNZMGR.js.map +0 -1
- /package/dist/{auto-sync-RP4C6ZPF.js.map → auto-sync-D6BAPIJV.js.map} +0 -0
- /package/dist/{chunk-T32B72QX.js.map → chunk-2SKMZUOW.js.map} +0 -0
- /package/dist/{chunk-VHOSM5G4.js.map → chunk-2SNCQHJZ.js.map} +0 -0
- /package/dist/{chunk-VV4ZVUE6.js.map → chunk-3QEVOQF5.js.map} +0 -0
- /package/dist/{chunk-3N3PBBEH.js.map → chunk-3XPN7AVY.js.map} +0 -0
- /package/dist/{chunk-XN6XT6GR.js.map → chunk-46Z3VGWF.js.map} +0 -0
- /package/dist/{chunk-2PTNJTBE.js.map → chunk-4CMXI55L.js.map} +0 -0
- /package/dist/{chunk-A6CKMIPK.js.map → chunk-7D6SER6A.js.map} +0 -0
- /package/dist/{chunk-4B3HBIFX.js.map → chunk-7Z54NXVS.js.map} +0 -0
- /package/dist/{chunk-X2NFFBTO.js.map → chunk-A7GQBJP5.js.map} +0 -0
- /package/dist/{chunk-NWMUSKED.js.map → chunk-BGRTZOJB.js.map} +0 -0
- /package/dist/{chunk-ZEGL7YCC.js.map → chunk-BXIJSPCL.js.map} +0 -0
- /package/dist/{chunk-MLWMR2GE.js.map → chunk-BYQX4IOG.js.map} +0 -0
- /package/dist/{chunk-ULDBGA5W.js.map → chunk-C5R73BON.js.map} +0 -0
- /package/dist/{chunk-BD7JTBYP.js.map → chunk-D7MAYFQP.js.map} +0 -0
- /package/dist/{chunk-BRZWWUCJ.js.map → chunk-DFVSJFHK.js.map} +0 -0
- /package/dist/{chunk-DPMTLJCT.js.map → chunk-ES5BUPYB.js.map} +0 -0
- /package/dist/{chunk-TNSCIPBQ.js.map → chunk-G6NQ3L4T.js.map} +0 -0
- /package/dist/{chunk-5N4MZLEH.js.map → chunk-GO5LOHCD.js.map} +0 -0
- /package/dist/{chunk-AECJY3GJ.js.map → chunk-GSSDHAYH.js.map} +0 -0
- /package/dist/{chunk-JA2QJOAX.js.map → chunk-HJUP3K6L.js.map} +0 -0
- /package/dist/{chunk-ZKZFFWLV.js.map → chunk-ICNJ6J46.js.map} +0 -0
- /package/dist/{chunk-6EHM2AV7.js.map → chunk-IMBQFHRV.js.map} +0 -0
- /package/dist/{chunk-6PRY6CLC.js.map → chunk-IOPIGX7Y.js.map} +0 -0
- /package/dist/{chunk-TRHBQVVO.js.map → chunk-IS2IDFJP.js.map} +0 -0
- /package/dist/{chunk-R4VAUNNC.js.map → chunk-J4WGTN2N.js.map} +0 -0
- /package/dist/{chunk-JPOX2AJB.js.map → chunk-J7FVMLBR.js.map} +0 -0
- /package/dist/{chunk-BYZKLEWG.js.map → chunk-JAJIMTFB.js.map} +0 -0
- /package/dist/{chunk-OKO57IXB.js.map → chunk-JOP7W24J.js.map} +0 -0
- /package/dist/{chunk-YUW66UAH.js.map → chunk-JUDT33RX.js.map} +0 -0
- /package/dist/{chunk-UQNYPK7G.js.map → chunk-K4JKAXMO.js.map} +0 -0
- /package/dist/{chunk-BV4ZKIZH.js.map → chunk-K75A5XWU.js.map} +0 -0
- /package/dist/{chunk-M6HBPLBA.js.map → chunk-KOTG3RXE.js.map} +0 -0
- /package/dist/{chunk-OB3XMWX5.js.map → chunk-KVO2BTA4.js.map} +0 -0
- /package/dist/{chunk-CBFYCDYO.js.map → chunk-KY236SP5.js.map} +0 -0
- /package/dist/{chunk-4BCHFSC7.js.map → chunk-LFVZD5EC.js.map} +0 -0
- /package/dist/{chunk-GGAXFTNH.js.map → chunk-LKFVVN7R.js.map} +0 -0
- /package/dist/{chunk-4RX5O34R.js.map → chunk-MJC7UKH7.js.map} +0 -0
- /package/dist/{chunk-UZZ7SQT3.js.map → chunk-NVVZPBKI.js.map} +0 -0
- /package/dist/{chunk-TTSJ7WUC.js.map → chunk-PKUJNICO.js.map} +0 -0
- /package/dist/{chunk-QMWKENNK.js.map → chunk-Q4AUIFUA.js.map} +0 -0
- /package/dist/{chunk-G43PMSME.js.map → chunk-QE6YVNP5.js.map} +0 -0
- /package/dist/{chunk-GT4ZHOKT.js.map → chunk-QPVNK2VE.js.map} +0 -0
- /package/dist/{chunk-K5DA5TRG.js.map → chunk-QS5Q5RBV.js.map} +0 -0
- /package/dist/{chunk-BX4EOMKT.js.map → chunk-RDLPFM7I.js.map} +0 -0
- /package/dist/{chunk-EY5JAWZC.js.map → chunk-RJQAP333.js.map} +0 -0
- /package/dist/{chunk-2OGTN37H.js.map → chunk-ROEFLU37.js.map} +0 -0
- /package/dist/{chunk-62QIQEUC.js.map → chunk-SFHLQPBF.js.map} +0 -0
- /package/dist/{chunk-HVS7TH2Y.js.map → chunk-SUEOG2S4.js.map} +0 -0
- /package/dist/{chunk-74AHCL56.js.map → chunk-TEMKBSV6.js.map} +0 -0
- /package/dist/{chunk-KDFDXEXZ.js.map → chunk-TO36VPZI.js.map} +0 -0
- /package/dist/{chunk-M3MYMWXG.js.map → chunk-V2ZA4YWE.js.map} +0 -0
- /package/dist/{chunk-UIOIDW3L.js.map → chunk-VHKXRYQN.js.map} +0 -0
- /package/dist/{chunk-GAS7KYC7.js.map → chunk-VKWFNPBH.js.map} +0 -0
- /package/dist/{chunk-XGRXQR6T.js.map → chunk-VQWBUPSJ.js.map} +0 -0
- /package/dist/{chunk-TUKGXQ5T.js.map → chunk-VQYWKCDR.js.map} +0 -0
- /package/dist/{chunk-PPQEP4OH.js.map → chunk-W23JARAQ.js.map} +0 -0
- /package/dist/{chunk-YQNNHLCG.js.map → chunk-WPGR3RW4.js.map} +0 -0
- /package/dist/{chunk-474DL7UB.js.map → chunk-WZYHPAG5.js.map} +0 -0
- /package/dist/{chunk-GQQVEH6V.js.map → chunk-XM46Y66S.js.map} +0 -0
- /package/dist/{chunk-JNSENHV5.js.map → chunk-YRIFXXMI.js.map} +0 -0
- /package/dist/{chunk-TRLOFIQC.js.map → chunk-YTK5MVNF.js.map} +0 -0
- /package/dist/{chunk-VMNCZ627.js.map → chunk-YTZN2UZO.js.map} +0 -0
- /package/dist/{chunk-6ZMNTRU3.js.map → chunk-ZAEPD4C2.js.map} +0 -0
- /package/dist/{chunk-KQW3YGEN.js.map → chunk-ZRMMXWYI.js.map} +0 -0
- /package/dist/{chunk-MCRVQ5YQ.js.map → chunk-ZZCR2QYL.js.map} +0 -0
package/src/orchestrator.ts
CHANGED
|
@@ -213,6 +213,7 @@ export {
|
|
|
213
213
|
type RecallInvocationOptions,
|
|
214
214
|
type RecallModeDecision,
|
|
215
215
|
} from "./orchestration/orchestrator-helpers.js";
|
|
216
|
+
export { qmdStartupCollectionChecksWithTimeout } from "./orchestration/startup-collection-checks.js";
|
|
216
217
|
export { filterRecallCandidates } from "./orchestration/generic-recall-paths.js";
|
|
217
218
|
|
|
218
219
|
export { hasIdentityRecoveryIntent, resolveEffectiveIdentityInjectionMode } from "./orchestration/recall-result-formatter.js";
|
|
@@ -948,6 +949,11 @@ export class Orchestrator {
|
|
|
948
949
|
this.deferredInitAbort = null;
|
|
949
950
|
}
|
|
950
951
|
}
|
|
952
|
+
async disposeSearchBackendIfNeeded(): Promise<void> {
|
|
953
|
+
await this.namespaceSearchRouter.disableSearchBackends();
|
|
954
|
+
await (this.qmd as { dispose?: () => void | Promise<void> }).dispose?.();
|
|
955
|
+
}
|
|
956
|
+
|
|
951
957
|
/** Track a recall-side write so destroy() can wait for it before teardown. @internal */
|
|
952
958
|
trackRecallBackgroundWrite(promise: Promise<void>, label: string): void {
|
|
953
959
|
trackRecallWrite(this, promise, label);
|
|
@@ -958,6 +964,7 @@ export class Orchestrator {
|
|
|
958
964
|
* commands should call it before returning to let Node exit naturally.
|
|
959
965
|
*/
|
|
960
966
|
async destroy(): Promise<void> {
|
|
967
|
+
this._orchestratorInitCoordinator?.retireStartupEpoch();
|
|
961
968
|
this.abortDeferredInit();
|
|
962
969
|
this.extractionQueueCoordinator.stopAccepting();
|
|
963
970
|
if (this.wearablesAutoSyncHandle) {
|
package/src/qmd.ts
CHANGED
|
@@ -1274,8 +1274,10 @@ export class QmdClient implements SearchBackend {
|
|
|
1274
1274
|
return env;
|
|
1275
1275
|
}
|
|
1276
1276
|
|
|
1277
|
-
async probe(): Promise<boolean> {
|
|
1278
|
-
|
|
1277
|
+
async probe(execution?: SearchExecutionOptions): Promise<boolean> {
|
|
1278
|
+
if (execution?.signal?.aborted) return false;
|
|
1279
|
+
const cliOk = await this.probeCli({ signal: execution?.signal });
|
|
1280
|
+
if (execution?.signal?.aborted) return false;
|
|
1279
1281
|
if (this.daemonEnabled) {
|
|
1280
1282
|
await this.probeDaemon();
|
|
1281
1283
|
}
|
|
@@ -1386,14 +1388,15 @@ export class QmdClient implements SearchBackend {
|
|
|
1386
1388
|
qmdPath: string,
|
|
1387
1389
|
source: typeof this.qmdPathSource
|
|
1388
1390
|
): Promise<void> => {
|
|
1391
|
+
if (options.signal?.aborted) return;
|
|
1389
1392
|
this.available = true;
|
|
1390
1393
|
this.qmdPath = qmdPath;
|
|
1391
1394
|
this.qmdPathSource = source;
|
|
1392
1395
|
this.cliVersion = parseQmdVersionOutput(result.stdout, result.stderr);
|
|
1393
1396
|
this.qmdCapabilities = resolveQmdCapabilities(this.cliVersion);
|
|
1394
1397
|
this.lastCliProbeError = null;
|
|
1395
|
-
if (options.allowAutoUpgrade !== false) {
|
|
1396
|
-
await this.maybeAutoUpgradeQmd();
|
|
1398
|
+
if (options.allowAutoUpgrade !== false && !options.signal?.aborted) {
|
|
1399
|
+
await this.maybeAutoUpgradeQmd(options.signal);
|
|
1397
1400
|
}
|
|
1398
1401
|
};
|
|
1399
1402
|
|
|
@@ -1485,8 +1488,8 @@ export class QmdClient implements SearchBackend {
|
|
|
1485
1488
|
}
|
|
1486
1489
|
}
|
|
1487
1490
|
|
|
1488
|
-
private async maybeAutoUpgradeQmd(): Promise<void> {
|
|
1489
|
-
if (!this.qmdAutoUpgradeEnabled) return;
|
|
1491
|
+
private async maybeAutoUpgradeQmd(signal?: AbortSignal): Promise<void> {
|
|
1492
|
+
if (signal?.aborted || !this.qmdAutoUpgradeEnabled) return;
|
|
1490
1493
|
const state = getGlobalQmdState();
|
|
1491
1494
|
const targetKey = this.autoUpgradeTargetKey();
|
|
1492
1495
|
const now = Date.now();
|
|
@@ -1522,13 +1525,16 @@ export class QmdClient implements SearchBackend {
|
|
|
1522
1525
|
return;
|
|
1523
1526
|
}
|
|
1524
1527
|
|
|
1528
|
+
if (signal?.aborted) return;
|
|
1525
1529
|
const packageSpec = `${QMD_PACKAGE_NAME}@${this.qmdSupportedVersion}`;
|
|
1526
1530
|
try {
|
|
1527
1531
|
log.warn(
|
|
1528
1532
|
`QMD auto-upgrade: installed=${qmdVersionToString(installed)} supported=${qmdVersionToString(supported)}; running npm install -g ${packageSpec}`
|
|
1529
1533
|
);
|
|
1530
|
-
await runProcessCommand("npm", ["install", "-g", packageSpec], QMD_AUTO_UPGRADE_TIMEOUT_MS);
|
|
1531
|
-
|
|
1534
|
+
await runProcessCommand("npm", ["install", "-g", packageSpec], QMD_AUTO_UPGRADE_TIMEOUT_MS, signal);
|
|
1535
|
+
if (signal?.aborted) return;
|
|
1536
|
+
const postInstall = await this.probePostInstallQmdVersion(supported, signal);
|
|
1537
|
+
if (signal?.aborted) return;
|
|
1532
1538
|
this.qmdPath = postInstall.qmdPath;
|
|
1533
1539
|
this.qmdPathSource = postInstall.source;
|
|
1534
1540
|
this.cliVersion = postInstall.version;
|
|
@@ -1551,13 +1557,17 @@ export class QmdClient implements SearchBackend {
|
|
|
1551
1557
|
`upgraded: installed=${this.cliVersion ?? "unknown"} target=${this.qmdSupportedVersion}`
|
|
1552
1558
|
);
|
|
1553
1559
|
} catch (err) {
|
|
1560
|
+
if (signal?.aborted) return;
|
|
1554
1561
|
const msg = err instanceof Error ? err.message : String(err);
|
|
1555
1562
|
recordAutoUpgradeStatus(state, targetKey, `failed: ${msg}`);
|
|
1556
1563
|
log.warn(`QMD auto-upgrade failed: ${msg}`);
|
|
1557
1564
|
}
|
|
1558
1565
|
}
|
|
1559
1566
|
|
|
1560
|
-
private async probePostInstallQmdVersion(
|
|
1567
|
+
private async probePostInstallQmdVersion(
|
|
1568
|
+
supported: QmdVersionTuple,
|
|
1569
|
+
signal?: AbortSignal,
|
|
1570
|
+
): Promise<{
|
|
1561
1571
|
qmdPath: string;
|
|
1562
1572
|
source: "auto-path" | "auto-fallback";
|
|
1563
1573
|
version: string | null;
|
|
@@ -1565,12 +1575,13 @@ export class QmdClient implements SearchBackend {
|
|
|
1565
1575
|
let lastErr: unknown;
|
|
1566
1576
|
let lastResult: { qmdPath: string; source: "auto-path" | "auto-fallback"; version: string | null } | null = null;
|
|
1567
1577
|
for (const candidate of getQmdPostInstallProbeTargets(this.qmdPath, this.qmdPathSource)) {
|
|
1578
|
+
if (signal?.aborted) throw new Error("QMD auto-upgrade post-install probe aborted");
|
|
1568
1579
|
try {
|
|
1569
1580
|
const result = await runQmd(
|
|
1570
1581
|
["--version"],
|
|
1571
1582
|
QMD_PROBE_TIMEOUT_MS,
|
|
1572
1583
|
candidate.qmdPath,
|
|
1573
|
-
|
|
1584
|
+
signal,
|
|
1574
1585
|
this.qmdRuntimeEnv
|
|
1575
1586
|
);
|
|
1576
1587
|
const postInstall = {
|
|
@@ -567,3 +567,156 @@ test("trust rerank preserves duplicate paths owned by different namespaces (#202
|
|
|
567
567
|
);
|
|
568
568
|
assert.equal(outcome.trustByPath?.size, 2, "trust metadata must have one entry per namespaced result");
|
|
569
569
|
});
|
|
570
|
+
|
|
571
|
+
test("#2859 state-view cap: pairs reconcile before cap/MMR and count as one evidence packet", () => {
|
|
572
|
+
// MMR off so the ordered pool equals the input order — the packet
|
|
573
|
+
// semantics under test are then fully deterministic.
|
|
574
|
+
const config = parseConfig({ recallMmrEnabled: false });
|
|
575
|
+
const corpus = makeFakes([]);
|
|
576
|
+
const coordinator = new RecallRerankCoordinator({
|
|
577
|
+
getConfig: () => config,
|
|
578
|
+
getStorage: corpus.getStorage,
|
|
579
|
+
readQmdResultMemory: async () => null,
|
|
580
|
+
});
|
|
581
|
+
const sv = (
|
|
582
|
+
id: string,
|
|
583
|
+
score: number,
|
|
584
|
+
chain: Partial<QmdSearchResult> = {},
|
|
585
|
+
): QmdSearchResult => ({ ...result(id, score), id, status: "active", ...chain });
|
|
586
|
+
const rows: QmdSearchResult[] = [
|
|
587
|
+
sv("p1", 0.95, { status: "superseded", supersededBy: "s1" }),
|
|
588
|
+
sv("orphan", 0.9, { status: "superseded", supersededBy: "absent" }),
|
|
589
|
+
sv("s1", 0.85),
|
|
590
|
+
sv("f1", 0.8),
|
|
591
|
+
sv("f2", 0.75),
|
|
592
|
+
];
|
|
593
|
+
const caps = resolveCapabilities(config);
|
|
594
|
+
|
|
595
|
+
// Packet view: [p1+s1], [f1], [f2] — the orphan is reconciled away
|
|
596
|
+
// BEFORE the cap, and the admitted pair consumes a single slot.
|
|
597
|
+
const partition = coordinator.diversifyRecallResultsWithHeadroom(
|
|
598
|
+
"memories",
|
|
599
|
+
rows,
|
|
600
|
+
2,
|
|
601
|
+
undefined,
|
|
602
|
+
caps,
|
|
603
|
+
true,
|
|
604
|
+
);
|
|
605
|
+
assert.deepEqual(
|
|
606
|
+
partition.appliedResults.map((r) => r.id),
|
|
607
|
+
["p1", "s1", "f1"],
|
|
608
|
+
"a complete pair is one packet: pred+succ plus one filler for limit 2",
|
|
609
|
+
);
|
|
610
|
+
assert.deepEqual(
|
|
611
|
+
partition.headroomResults.map((r) => r.id),
|
|
612
|
+
["f2"],
|
|
613
|
+
"headroom is the remainder of the reconciled pool",
|
|
614
|
+
);
|
|
615
|
+
|
|
616
|
+
// The slice never splits a packet at the boundary: even with the
|
|
617
|
+
// successor ranked LAST, the pair is admitted together.
|
|
618
|
+
const splitRisk: QmdSearchResult[] = [
|
|
619
|
+
sv("p1", 0.95, { status: "superseded", supersededBy: "s1" }),
|
|
620
|
+
sv("f1", 0.9),
|
|
621
|
+
sv("f2", 0.85),
|
|
622
|
+
sv("s1", 0.8),
|
|
623
|
+
];
|
|
624
|
+
const applied = coordinator.diversifyAndLimitRecallResults(
|
|
625
|
+
"memories",
|
|
626
|
+
splitRisk,
|
|
627
|
+
2,
|
|
628
|
+
undefined,
|
|
629
|
+
caps,
|
|
630
|
+
true,
|
|
631
|
+
);
|
|
632
|
+
assert.deepEqual(
|
|
633
|
+
applied.map((r) => r.id),
|
|
634
|
+
["p1", "f1", "s1"],
|
|
635
|
+
"no underfill: the boundary keeps the evidence packet complete",
|
|
636
|
+
);
|
|
637
|
+
|
|
638
|
+
// Flag absent → the legacy row slice, byte-identical (zero-diff default).
|
|
639
|
+
const legacy = coordinator.diversifyAndLimitRecallResults(
|
|
640
|
+
"memories",
|
|
641
|
+
rows,
|
|
642
|
+
2,
|
|
643
|
+
undefined,
|
|
644
|
+
caps,
|
|
645
|
+
);
|
|
646
|
+
assert.deepEqual(
|
|
647
|
+
legacy.map((r) => r.id),
|
|
648
|
+
["p1", "orphan"],
|
|
649
|
+
"without the state view the cap stays the plain top-N row slice",
|
|
650
|
+
);
|
|
651
|
+
});
|
|
652
|
+
|
|
653
|
+
test("#2859 packet cap after filter: a quarantined successor does not consume budget", () => {
|
|
654
|
+
const config = parseConfig({ recallMmrEnabled: false });
|
|
655
|
+
const corpus = makeFakes([]);
|
|
656
|
+
const coordinator = new RecallRerankCoordinator({
|
|
657
|
+
getConfig: () => config,
|
|
658
|
+
getStorage: corpus.getStorage,
|
|
659
|
+
readQmdResultMemory: async () => null,
|
|
660
|
+
});
|
|
661
|
+
const sv = (
|
|
662
|
+
id: string,
|
|
663
|
+
score: number,
|
|
664
|
+
chain: Partial<QmdSearchResult> = {},
|
|
665
|
+
): QmdSearchResult => ({ ...result(id, score), id, status: "active", ...chain });
|
|
666
|
+
// Trust already removed s1. Cap-after-filter must drop the orphaned
|
|
667
|
+
// predecessor and promote the next live packet instead of returning empty.
|
|
668
|
+
const afterTrust: QmdSearchResult[] = [
|
|
669
|
+
sv("p1", 0.95, { status: "superseded", supersededBy: "s1" }),
|
|
670
|
+
sv("f1", 0.8),
|
|
671
|
+
sv("f2", 0.75),
|
|
672
|
+
];
|
|
673
|
+
const partition = coordinator.diversifyRecallResultsWithHeadroom(
|
|
674
|
+
"memories",
|
|
675
|
+
afterTrust,
|
|
676
|
+
1,
|
|
677
|
+
undefined,
|
|
678
|
+
resolveCapabilities(config),
|
|
679
|
+
true,
|
|
680
|
+
);
|
|
681
|
+
assert.deepEqual(
|
|
682
|
+
partition.appliedResults.map((row) => row.id),
|
|
683
|
+
["f1"],
|
|
684
|
+
"disallowed pair must not occupy the only packet slot",
|
|
685
|
+
);
|
|
686
|
+
assert.deepEqual(
|
|
687
|
+
partition.headroomResults.map((row) => row.id),
|
|
688
|
+
["f2"],
|
|
689
|
+
);
|
|
690
|
+
});
|
|
691
|
+
|
|
692
|
+
test("#2859 linkless superseded status does not consume a packet slot", () => {
|
|
693
|
+
const config = parseConfig({ recallMmrEnabled: false });
|
|
694
|
+
const corpus = makeFakes([]);
|
|
695
|
+
const coordinator = new RecallRerankCoordinator({
|
|
696
|
+
getConfig: () => config,
|
|
697
|
+
getStorage: corpus.getStorage,
|
|
698
|
+
readQmdResultMemory: async () => null,
|
|
699
|
+
});
|
|
700
|
+
const sv = (
|
|
701
|
+
id: string,
|
|
702
|
+
score: number,
|
|
703
|
+
chain: Partial<QmdSearchResult> = {},
|
|
704
|
+
): QmdSearchResult => ({ ...result(id, score), id, status: "active", ...chain });
|
|
705
|
+
const rows: QmdSearchResult[] = [
|
|
706
|
+
sv("legacy", 0.99, { status: "superseded" }),
|
|
707
|
+
sv("live", 0.5),
|
|
708
|
+
];
|
|
709
|
+
const applied = coordinator.diversifyAndLimitRecallResults(
|
|
710
|
+
"memories",
|
|
711
|
+
rows,
|
|
712
|
+
1,
|
|
713
|
+
undefined,
|
|
714
|
+
resolveCapabilities(config),
|
|
715
|
+
true,
|
|
716
|
+
);
|
|
717
|
+
assert.deepEqual(
|
|
718
|
+
applied.map((row) => row.id),
|
|
719
|
+
["live"],
|
|
720
|
+
"status-only superseded rows are rejected before the packet cap",
|
|
721
|
+
);
|
|
722
|
+
});
|
|
@@ -12,7 +12,17 @@ import { applyRecallStateViews } from "./recall-state-view-wire.js";
|
|
|
12
12
|
import { shouldFilterSupersededFromRecall } from "./temporal-supersession.js";
|
|
13
13
|
import type { MemoryFile } from "./types.js";
|
|
14
14
|
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Config flag OR per-call override, gated on change intent; computed once
|
|
17
|
+
* for all branches.
|
|
18
|
+
*
|
|
19
|
+
* #2893: `query` MUST be the ORIGINAL prompt, not the cron-normalized
|
|
20
|
+
* retrievalQuery — buildRecallQueryPolicy truncates standard prompts at
|
|
21
|
+
* maxChars and strips stop-words ("when", "before", "after") from
|
|
22
|
+
* instruction-heavy ones, either of which can erase the change-intent
|
|
23
|
+
* signal before retrieval. Only the resulting boolean flows downstream;
|
|
24
|
+
* retrieval itself keeps using the normalized query.
|
|
25
|
+
*/
|
|
16
26
|
export function resolveRecallStateViewActive(
|
|
17
27
|
options: { stateView?: boolean },
|
|
18
28
|
config: { recallStateViews?: boolean },
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { isChangeOrientedQuery, stateViewKey } from "./recall-state-view.js";
|
|
2
|
+
/**
|
|
3
|
+
* State-view anchor admission (#2859).
|
|
4
|
+
*
|
|
5
|
+
* Shared namespace-qualified admission tracker for the recall safety
|
|
6
|
+
* filter (QMD/embedding/cold paths) and the recent-scan path. A deferred
|
|
7
|
+
* superseded row is admitted only when an in-set successor anchors it —
|
|
8
|
+
* through the row's own `supersededBy` or through an admitted successor's
|
|
9
|
+
* `supersedes` back-pointer. Identities are `namespace\0id`, so identical
|
|
10
|
+
* ids across namespace fanout never cross-anchor.
|
|
11
|
+
*/
|
|
12
|
+
import { shouldFilterSupersededFromRecall } from "./temporal-supersession.js";
|
|
13
|
+
import type { MemoryFile } from "./types.js";
|
|
14
|
+
|
|
15
|
+
export interface StateViewAnchorFrontmatter {
|
|
16
|
+
id?: string;
|
|
17
|
+
supersedes?: string;
|
|
18
|
+
supersededBy?: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* #2859 — pair reconciliation and packet-counting caps apply only WITHOUT
|
|
23
|
+
* a historical pin: under asOf the validity filter legitimately orphans
|
|
24
|
+
* predecessors (see annotateStateView's asOf mode).
|
|
25
|
+
*/
|
|
26
|
+
export function stateViewPacketActive(stateViewActive: boolean | undefined, asOfMs: number | undefined): boolean {
|
|
27
|
+
return stateViewActive === true && !(typeof asOfMs === "number" && Number.isFinite(asOfMs));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* #1952/#2859 — config flag OR per-call override, gated on change intent.
|
|
32
|
+
* Packet semantics are off under a historical asOf pin (see stateViewPacketActive).
|
|
33
|
+
*/
|
|
34
|
+
export function resolveRecallStateViewFlags(
|
|
35
|
+
optionFlag: boolean | undefined,
|
|
36
|
+
configFlag: boolean | undefined,
|
|
37
|
+
retrievalQuery: string,
|
|
38
|
+
asOfMs: number | undefined,
|
|
39
|
+
): { stateViewActive: boolean; stateViewPacketActive: boolean } {
|
|
40
|
+
const stateViewActive =
|
|
41
|
+
(optionFlag === true || configFlag === true) && isChangeOrientedQuery(retrievalQuery);
|
|
42
|
+
return { stateViewActive, stateViewPacketActive: stateViewPacketActive(stateViewActive, asOfMs) };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export class StateViewAnchorTracker {
|
|
46
|
+
private readonly admitted = new Set<string>();
|
|
47
|
+
private readonly supersedesAnchors = new Set<string>();
|
|
48
|
+
|
|
49
|
+
has(namespace: string | undefined, frontmatter: StateViewAnchorFrontmatter): boolean {
|
|
50
|
+
const id = frontmatter.id;
|
|
51
|
+
return typeof id === "string" && id.length > 0 ? this.admitted.has(stateViewKey(namespace, id)) : false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Register a row as admitted (a survivor of every gate, or a deferred
|
|
56
|
+
* row whose successor anchored it). The row's `supersedes` back-pointer
|
|
57
|
+
* then anchors its own predecessor.
|
|
58
|
+
*/
|
|
59
|
+
admit(namespace: string | undefined, frontmatter: StateViewAnchorFrontmatter): void {
|
|
60
|
+
const id = frontmatter.id;
|
|
61
|
+
if (typeof id !== "string" || id.length === 0) return;
|
|
62
|
+
this.admitted.add(stateViewKey(namespace, id));
|
|
63
|
+
if (frontmatter.supersedes) {
|
|
64
|
+
this.supersedesAnchors.add(stateViewKey(namespace, frontmatter.supersedes));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** True when an admitted successor anchors this superseded row. */
|
|
69
|
+
anchored(namespace: string | undefined, frontmatter: StateViewAnchorFrontmatter): boolean {
|
|
70
|
+
const id = frontmatter.id;
|
|
71
|
+
if (typeof id !== "string" || id.length === 0) return false;
|
|
72
|
+
const successorId = frontmatter.supersededBy;
|
|
73
|
+
return (
|
|
74
|
+
(typeof successorId === "string" && this.admitted.has(stateViewKey(namespace, successorId))) ||
|
|
75
|
+
this.supersedesAnchors.has(stateViewKey(namespace, id))
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface StateViewRecentAdmissionDeps {
|
|
81
|
+
namespaceOf: (path: string) => string;
|
|
82
|
+
isExcluded: (path: string) => boolean;
|
|
83
|
+
supersessionOptions: { enabled: boolean; includeInRecall: boolean };
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* #2859 — recent-scan admission: seed the tracker with every memory that
|
|
88
|
+
* survives the supersession gate, then admit superseded rows anchored by
|
|
89
|
+
* an in-set successor (fixpoint — an admitted link anchors the next).
|
|
90
|
+
*/
|
|
91
|
+
export function admitStateViewRecentMemories(
|
|
92
|
+
memories: readonly MemoryFile[],
|
|
93
|
+
deps: StateViewRecentAdmissionDeps
|
|
94
|
+
): StateViewAnchorTracker {
|
|
95
|
+
const tracker = new StateViewAnchorTracker();
|
|
96
|
+
for (const m of memories) {
|
|
97
|
+
if (deps.isExcluded(m.path)) continue;
|
|
98
|
+
if (m.frontmatter.status === "superseded") continue;
|
|
99
|
+
if (shouldFilterSupersededFromRecall(m.frontmatter, deps.supersessionOptions)) continue;
|
|
100
|
+
tracker.admit(deps.namespaceOf(m.path), m.frontmatter);
|
|
101
|
+
}
|
|
102
|
+
for (let progress = true; progress; ) {
|
|
103
|
+
progress = false;
|
|
104
|
+
for (const m of memories) {
|
|
105
|
+
const namespace = deps.namespaceOf(m.path);
|
|
106
|
+
if (tracker.has(namespace, m.frontmatter)) continue;
|
|
107
|
+
if (deps.isExcluded(m.path)) continue;
|
|
108
|
+
if (m.frontmatter.status !== "superseded") continue;
|
|
109
|
+
if (!shouldFilterSupersededFromRecall(m.frontmatter, deps.supersessionOptions)) continue;
|
|
110
|
+
if (tracker.anchored(namespace, m.frontmatter)) {
|
|
111
|
+
tracker.admit(namespace, m.frontmatter);
|
|
112
|
+
progress = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return tracker;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface RecentScanMemoryFilterDeps extends StateViewRecentAdmissionDeps {
|
|
120
|
+
stateViewActive: boolean;
|
|
121
|
+
asOfMs: number | undefined;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Recent-scan admission for the fallback path.
|
|
126
|
+
*
|
|
127
|
+
* Superseded-status filtering delegates to
|
|
128
|
+
* shouldFilterSupersededFromRecall so recent-scan and the QMD
|
|
129
|
+
* safety filter share semantics (kill switch, audit mode, PR #402).
|
|
130
|
+
* #1952: an active state view admits a superseded memory whose
|
|
131
|
+
* successor ALSO survives this admission filter (fixpoint below).
|
|
132
|
+
* PR #713: when `as_of` is active, pass superseded candidates
|
|
133
|
+
* through here — boostSearchResults's `[valid_at, invalid_at)`
|
|
134
|
+
* evaluation is the authoritative historical gate. Other
|
|
135
|
+
* non-active statuses stay excluded.
|
|
136
|
+
* #2859: namespace-qualified anchors with the supersedes
|
|
137
|
+
* back-pointer — mirrors the safety-filter fixpoint.
|
|
138
|
+
*/
|
|
139
|
+
export function filterRecentScanMemories(
|
|
140
|
+
memories: readonly MemoryFile[],
|
|
141
|
+
deps: RecentScanMemoryFilterDeps,
|
|
142
|
+
): MemoryFile[] {
|
|
143
|
+
const asOfActive = typeof deps.asOfMs === "number" && Number.isFinite(deps.asOfMs);
|
|
144
|
+
const stateViewAnchors =
|
|
145
|
+
deps.stateViewActive && !asOfActive ? admitStateViewRecentMemories(memories, deps) : null;
|
|
146
|
+
return memories.filter((m) => {
|
|
147
|
+
if (deps.isExcluded(m.path)) return false;
|
|
148
|
+
const status = m.frontmatter.status;
|
|
149
|
+
if (!status || status === "active") return true;
|
|
150
|
+
if (status === "superseded") {
|
|
151
|
+
if (asOfActive) return true;
|
|
152
|
+
if (stateViewAnchors?.has(deps.namespaceOf(m.path), m.frontmatter)) {
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// Include superseded memory only if the canonical gate says
|
|
156
|
+
// NOT to filter it (kill switch off or audit mode on).
|
|
157
|
+
return !shouldFilterSupersededFromRecall(m.frontmatter, deps.supersessionOptions);
|
|
158
|
+
}
|
|
159
|
+
// Other non-active statuses (archived, retired, etc.) are
|
|
160
|
+
// excluded from the recent-scan path by default.
|
|
161
|
+
return false;
|
|
162
|
+
});
|
|
163
|
+
}
|