@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/recall-state-view.ts
CHANGED
|
@@ -8,6 +8,13 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Change-intent morphology lives here (do not grow intent.ts). A superseded
|
|
10
10
|
* memory is admitted only when its successor is also in the candidate set.
|
|
11
|
+
*
|
|
12
|
+
* #2859 — chain identities are namespace-qualified (`namespace\0id`): the
|
|
13
|
+
* same id in two namespaces never cross-anchors. The reverse chain derives
|
|
14
|
+
* from the successor's `supersedes` back-pointer when a predecessor lacks
|
|
15
|
+
* `supersededBy`, and asOf snapshot labels use the temporal validity
|
|
16
|
+
* boundary (predecessor `invalidAt` / successor `validAt`), not the
|
|
17
|
+
* `supersededAt` write time.
|
|
11
18
|
*/
|
|
12
19
|
import { coerceBooleanLike } from "./connectors/coerce.js";
|
|
13
20
|
|
|
@@ -17,14 +24,24 @@ export interface StateViewChain {
|
|
|
17
24
|
predecessorId: string;
|
|
18
25
|
successorId: string;
|
|
19
26
|
supersededAt?: string;
|
|
27
|
+
/** #2859 — namespace scope; a chain link never crosses namespaces. */
|
|
28
|
+
namespace?: string;
|
|
20
29
|
}
|
|
21
30
|
|
|
22
31
|
export interface StateViewResult {
|
|
23
32
|
id?: string;
|
|
24
33
|
docid?: string;
|
|
25
34
|
status?: string;
|
|
35
|
+
/** #2859 — namespace that owns this row; qualifies every chain identity. */
|
|
36
|
+
namespace?: string;
|
|
37
|
+
/** #2859 — back-pointer: id of the row this one replaced. */
|
|
38
|
+
supersedes?: string;
|
|
26
39
|
supersededBy?: string;
|
|
27
40
|
supersededAt?: string;
|
|
41
|
+
/** #2859 — fact validity start (frontmatter `valid_at`). */
|
|
42
|
+
validAt?: string;
|
|
43
|
+
/** #2859 — fact validity end (frontmatter `invalid_at`). */
|
|
44
|
+
invalidAt?: string;
|
|
28
45
|
stateLabel?: StateLabel;
|
|
29
46
|
}
|
|
30
47
|
|
|
@@ -66,32 +83,94 @@ export function resultStateViewId(result: StateViewResult): string {
|
|
|
66
83
|
return result.id ?? result.docid ?? "";
|
|
67
84
|
}
|
|
68
85
|
|
|
69
|
-
|
|
86
|
+
/**
|
|
87
|
+
* #2859 — namespace-qualified chain identity. Namespace fanout can surface
|
|
88
|
+
* the same id from two namespaces; every successor/admission match runs on
|
|
89
|
+
* `namespace\0id` keys so a row in one namespace can never anchor (or be
|
|
90
|
+
* anchored by) an identically-named row in another.
|
|
91
|
+
*/
|
|
92
|
+
export function stateViewKey(namespace: string | undefined, id: string): string {
|
|
93
|
+
return `${typeof namespace === "string" ? namespace : ""}\u0000${id}`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function resultStateViewKey(result: StateViewResult): string {
|
|
97
|
+
const id = resultStateViewId(result);
|
|
98
|
+
return id ? stateViewKey(result.namespace, id) : "";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** Inverse of {@link stateViewKey}: the id after the namespace separator. */
|
|
102
|
+
function stateViewIdFromKey(key: string): string {
|
|
103
|
+
const sep = key.indexOf("\u0000");
|
|
104
|
+
return sep === -1 ? key : key.slice(sep + 1);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* predecessorKey → successorKey, namespace-qualified. Precedence: explicit
|
|
109
|
+
* chains, then successor rows' `supersedes` back-pointers (#2859 — derives
|
|
110
|
+
* the reverse chain when the predecessor lacks `supersededBy`), then the
|
|
111
|
+
* predecessor's own `supersededBy` (authoritative when present).
|
|
112
|
+
*/
|
|
113
|
+
function buildSuccessorMap(
|
|
114
|
+
results: readonly StateViewResult[],
|
|
115
|
+
chains: readonly StateViewChain[],
|
|
116
|
+
): Map<string, string> {
|
|
70
117
|
const byPred = new Map<string, string>();
|
|
118
|
+
const link = (predKey: string, succKey: string, overwrite: boolean): void => {
|
|
119
|
+
if (!predKey || !succKey) return;
|
|
120
|
+
if (overwrite || !byPred.has(predKey)) byPred.set(predKey, succKey);
|
|
121
|
+
};
|
|
71
122
|
for (const chain of chains) {
|
|
72
123
|
if (chain.predecessorId && chain.successorId) {
|
|
73
|
-
|
|
124
|
+
link(
|
|
125
|
+
stateViewKey(chain.namespace, chain.predecessorId),
|
|
126
|
+
stateViewKey(chain.namespace, chain.successorId),
|
|
127
|
+
false,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const result of results) {
|
|
132
|
+
const key = resultStateViewKey(result);
|
|
133
|
+
if (key && result.supersedes) {
|
|
134
|
+
link(stateViewKey(result.namespace, result.supersedes), key, false);
|
|
74
135
|
}
|
|
75
136
|
}
|
|
76
137
|
for (const result of results) {
|
|
77
|
-
const
|
|
78
|
-
if (
|
|
138
|
+
const key = resultStateViewKey(result);
|
|
139
|
+
if (key && result.supersededBy) {
|
|
140
|
+
link(key, stateViewKey(result.namespace, result.supersededBy), true);
|
|
141
|
+
}
|
|
79
142
|
}
|
|
80
143
|
return byPred;
|
|
81
144
|
}
|
|
82
145
|
|
|
146
|
+
function successorLinkOf(
|
|
147
|
+
result: StateViewResult,
|
|
148
|
+
byPred: ReadonlyMap<string, string>,
|
|
149
|
+
): { superseded: boolean; successorKey: string | undefined } {
|
|
150
|
+
const key = resultStateViewKey(result);
|
|
151
|
+
return {
|
|
152
|
+
superseded:
|
|
153
|
+
result.status === "superseded" ||
|
|
154
|
+
Boolean(result.supersededBy) ||
|
|
155
|
+
byPred.has(key),
|
|
156
|
+
successorKey: result.supersededBy
|
|
157
|
+
? stateViewKey(result.namespace, result.supersededBy)
|
|
158
|
+
: byPred.get(key),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
83
162
|
function labelFor(
|
|
84
|
-
|
|
163
|
+
key: string,
|
|
85
164
|
result: StateViewResult,
|
|
86
165
|
byPred: Map<string, string>,
|
|
87
166
|
admittedIds: ReadonlySet<string>,
|
|
88
167
|
asOfMs: number | null,
|
|
89
168
|
): StateLabel {
|
|
90
|
-
const
|
|
91
|
-
const isPred = shouldWidenSuperseded(
|
|
169
|
+
const { successorKey } = successorLinkOf(result, byPred);
|
|
170
|
+
const isPred = shouldWidenSuperseded(successorKey, admittedIds);
|
|
92
171
|
let isSucc = false;
|
|
93
172
|
for (const [predId, succId] of byPred) {
|
|
94
|
-
if (succId ===
|
|
173
|
+
if (succId === key && admittedIds.has(predId)) {
|
|
95
174
|
isSucc = true;
|
|
96
175
|
break;
|
|
97
176
|
}
|
|
@@ -101,29 +180,38 @@ function labelFor(
|
|
|
101
180
|
if (isSucc) return "current";
|
|
102
181
|
if (result.status === "superseded") {
|
|
103
182
|
// #1952 asOf mode: the successor is legitimately absent under the
|
|
104
|
-
// historical pin
|
|
105
|
-
//
|
|
106
|
-
//
|
|
183
|
+
// historical pin (a linked successor takes the pair branches above).
|
|
184
|
+
// The row was the live fact at the snapshot when the temporal
|
|
185
|
+
// validity boundary postdates the pin ("current" relative to the
|
|
186
|
+
// snapshot); already replaced at the pin is "historical". #2859: the
|
|
187
|
+
// boundary is the fact's validity flip — `invalidAt` (the supersession
|
|
188
|
+
// pipeline sets it to the successor's valid_at) — not the
|
|
189
|
+
// `supersededAt` write time; legacy rows without a window fall back
|
|
190
|
+
// to supersededAt.
|
|
107
191
|
return asOfMs === null ? "historical" : snapshotStateLabel(result, asOfMs);
|
|
108
192
|
}
|
|
109
193
|
return "current";
|
|
110
194
|
}
|
|
111
195
|
|
|
112
196
|
function snapshotStateLabel(result: StateViewResult, asOfMs: number): StateLabel {
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
?
|
|
116
|
-
: "
|
|
197
|
+
const invalidAtMs = Date.parse(result.invalidAt ?? "");
|
|
198
|
+
const boundaryMs = Number.isFinite(invalidAtMs)
|
|
199
|
+
? invalidAtMs
|
|
200
|
+
: Date.parse(result.supersededAt ?? "");
|
|
201
|
+
return Number.isFinite(boundaryMs) && boundaryMs <= asOfMs ? "historical" : "current";
|
|
117
202
|
}
|
|
118
203
|
|
|
119
204
|
export function annotateStateView<T extends StateViewResult>(
|
|
120
205
|
results: T[],
|
|
121
206
|
query: string,
|
|
122
207
|
chains: readonly StateViewChain[],
|
|
123
|
-
options: { enabled?: boolean; asOfMs?: number } = {},
|
|
208
|
+
options: { enabled?: boolean; asOfMs?: number; changeIntent?: boolean } = {},
|
|
124
209
|
): T[] {
|
|
125
210
|
const enabled = options.enabled === true;
|
|
126
|
-
|
|
211
|
+
// #2893 — changeIntent:true marks intent as already classified from the
|
|
212
|
+
// ORIGINAL prompt; `query` may be cron-normalized (intent signal
|
|
213
|
+
// truncated or stop-worded away) and must not be re-checked then.
|
|
214
|
+
if (!enabled || (options.changeIntent !== true && !isChangeOrientedQuery(query))) return results;
|
|
127
215
|
// #1952 asOf mode: under a historical pin the pipeline's isValidAsOf
|
|
128
216
|
// gate already decided validity at the pinned instant, so a predecessor
|
|
129
217
|
// must not be discarded merely because its successor is absent under
|
|
@@ -136,26 +224,17 @@ export function annotateStateView<T extends StateViewResult>(
|
|
|
136
224
|
const byPred = buildSuccessorMap(results, chains);
|
|
137
225
|
const candidateIds = new Set<string>();
|
|
138
226
|
for (const result of results) {
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
227
|
+
const key = resultStateViewKey(result);
|
|
228
|
+
if (key) candidateIds.add(key);
|
|
141
229
|
}
|
|
142
|
-
|
|
143
|
-
const isSupersededRow = (result: T): { superseded: boolean; successorId: string | undefined } => {
|
|
144
|
-
const id = resultStateViewId(result);
|
|
145
|
-
return {
|
|
146
|
-
superseded: result.status === "superseded" || Boolean(result.supersededBy) || byPred.has(id),
|
|
147
|
-
successorId: result.supersededBy ?? byPred.get(id),
|
|
148
|
-
};
|
|
149
|
-
};
|
|
150
|
-
|
|
151
230
|
let admitted: T[];
|
|
152
231
|
if (asOfMs !== null) {
|
|
153
232
|
admitted = results.slice();
|
|
154
233
|
} else {
|
|
155
234
|
admitted = [];
|
|
156
235
|
for (const result of results) {
|
|
157
|
-
const { superseded,
|
|
158
|
-
if (!superseded || shouldWidenSuperseded(
|
|
236
|
+
const { superseded, successorKey } = successorLinkOf(result, byPred);
|
|
237
|
+
if (!superseded || shouldWidenSuperseded(successorKey, candidateIds)) {
|
|
159
238
|
admitted.push(result);
|
|
160
239
|
}
|
|
161
240
|
}
|
|
@@ -163,24 +242,119 @@ export function annotateStateView<T extends StateViewResult>(
|
|
|
163
242
|
// #1952 contract: superseded never appears without its successor. A
|
|
164
243
|
// successor can itself be dropped (filtered elsewhere, or transitively
|
|
165
244
|
// orphaned), so reconcile to a fixpoint instead of trusting the first pass.
|
|
166
|
-
let admittedIds = new Set(admitted.map(
|
|
245
|
+
let admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));
|
|
167
246
|
for (let changed = true; changed; ) {
|
|
168
247
|
changed = false;
|
|
169
248
|
for (let i = admitted.length - 1; i >= 0; i -= 1) {
|
|
170
249
|
const row = admitted[i]!;
|
|
171
|
-
const { superseded,
|
|
172
|
-
if (superseded && !shouldWidenSuperseded(
|
|
250
|
+
const { superseded, successorKey } = successorLinkOf(row, byPred);
|
|
251
|
+
if (superseded && !shouldWidenSuperseded(successorKey, admittedIds)) {
|
|
173
252
|
admitted.splice(i, 1);
|
|
174
253
|
changed = true;
|
|
175
254
|
}
|
|
176
255
|
}
|
|
177
|
-
if (changed) admittedIds = new Set(admitted.map(
|
|
256
|
+
if (changed) admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));
|
|
178
257
|
}
|
|
179
258
|
}
|
|
180
259
|
|
|
181
|
-
const admittedIds = new Set(admitted.map(
|
|
260
|
+
const admittedIds = new Set(admitted.map(resultStateViewKey).filter(Boolean));
|
|
182
261
|
return admitted.map((result) => {
|
|
183
|
-
const
|
|
184
|
-
|
|
262
|
+
const key = resultStateViewKey(result);
|
|
263
|
+
const { successorKey } = successorLinkOf(result, byPred);
|
|
264
|
+
const stateLabel = labelFor(key, result, byPred, admittedIds, asOfMs);
|
|
265
|
+
if (result.supersededBy || !successorKey) return { ...result, stateLabel };
|
|
266
|
+
return { ...result, stateLabel, supersededBy: stateViewIdFromKey(successorKey) };
|
|
185
267
|
});
|
|
186
268
|
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* #2859 — drop superseded rows whose successor is not in the pool BEFORE
|
|
272
|
+
* the user cap/MMR runs, so post-cap orphan removal can never underfill
|
|
273
|
+
* the result set. Reconciles to a fixpoint (a dropped successor orphans
|
|
274
|
+
* its own predecessors). Rows with no successor links pass through in
|
|
275
|
+
* order. ponytail: repeated full-pool passes are O(n²) on one long chain;
|
|
276
|
+
* recall pools stay small, memoize per-key if pools ever grow.
|
|
277
|
+
*/
|
|
278
|
+
export function reconcileStateViewPairs<T extends StateViewResult>(results: readonly T[]): T[] {
|
|
279
|
+
const byPred = buildSuccessorMap(results, []);
|
|
280
|
+
let kept = results.slice();
|
|
281
|
+
for (let changed = true; changed; ) {
|
|
282
|
+
changed = false;
|
|
283
|
+
const keptKeys = new Set(kept.map(resultStateViewKey).filter(Boolean));
|
|
284
|
+
const next: T[] = [];
|
|
285
|
+
for (const row of kept) {
|
|
286
|
+
const { superseded, successorKey } = successorLinkOf(row, byPred);
|
|
287
|
+
if (superseded && !shouldWidenSuperseded(successorKey, keptKeys)) {
|
|
288
|
+
changed = true;
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
next.push(row);
|
|
292
|
+
}
|
|
293
|
+
if (changed) kept = next;
|
|
294
|
+
}
|
|
295
|
+
return kept;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* #2859 — packet-counting cap. A predecessor/successor chain admitted
|
|
300
|
+
* together is ONE complete evidence packet: it consumes a single slot of
|
|
301
|
+
* the user cap, and the slice never splits a packet at the boundary (no
|
|
302
|
+
* underfill from post-cap orphan removal). Rows keep their incoming
|
|
303
|
+
* (MMR) order; packets are ordered by first appearance. Call
|
|
304
|
+
* reconcileStateViewPairs first so orphans never consume a slot.
|
|
305
|
+
*/
|
|
306
|
+
export function capStateViewPackets<T extends StateViewResult>(
|
|
307
|
+
ordered: readonly T[],
|
|
308
|
+
limit: number,
|
|
309
|
+
): T[] {
|
|
310
|
+
const safeLimit =
|
|
311
|
+
typeof limit === "number" && Number.isFinite(limit) ? Math.max(0, Math.floor(limit)) : 0;
|
|
312
|
+
if (safeLimit === 0) return [];
|
|
313
|
+
if (ordered.length === 0) return [];
|
|
314
|
+
|
|
315
|
+
const byPred = buildSuccessorMap(ordered, []);
|
|
316
|
+
// Union-find over row keys; blank-key rows become per-index singletons.
|
|
317
|
+
const parent = new Map<string, string>();
|
|
318
|
+
const root = (key: string): string => {
|
|
319
|
+
let current = key;
|
|
320
|
+
for (;;) {
|
|
321
|
+
const up = parent.get(current);
|
|
322
|
+
if (up === undefined || up === current) {
|
|
323
|
+
parent.set(current, current);
|
|
324
|
+
return current;
|
|
325
|
+
}
|
|
326
|
+
current = up;
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
const union = (a: string, b: string): void => {
|
|
330
|
+
const ra = root(a);
|
|
331
|
+
const rb = root(b);
|
|
332
|
+
if (ra !== rb) parent.set(ra, rb);
|
|
333
|
+
};
|
|
334
|
+
const keys: string[] = [];
|
|
335
|
+
const keyToIndex = new Map<string, number>();
|
|
336
|
+
for (let i = 0; i < ordered.length; i += 1) {
|
|
337
|
+
// ponytail: blank-key rows must stay distinct singletons; index-keyed.
|
|
338
|
+
const key = resultStateViewKey(ordered[i]!) || `#idx${i}`;
|
|
339
|
+
keys.push(key);
|
|
340
|
+
if (!parent.has(key)) parent.set(key, key);
|
|
341
|
+
const first = keyToIndex.get(key);
|
|
342
|
+
if (first !== undefined) union(keys[first]!, key);
|
|
343
|
+
else keyToIndex.set(key, i);
|
|
344
|
+
}
|
|
345
|
+
for (const [predKey, succKey] of byPred) {
|
|
346
|
+
const predIdx = keyToIndex.get(predKey);
|
|
347
|
+
const succIdx = keyToIndex.get(succKey);
|
|
348
|
+
if (predIdx !== undefined && succIdx !== undefined) union(keys[predIdx]!, keys[succIdx]!);
|
|
349
|
+
}
|
|
350
|
+
// Packets ordered by first appearance; admit whole packets until the cap.
|
|
351
|
+
const selectedRoots = new Set<string>();
|
|
352
|
+
for (let i = 0; i < ordered.length && selectedRoots.size < safeLimit; i += 1) {
|
|
353
|
+
selectedRoots.add(root(keys[i]!));
|
|
354
|
+
}
|
|
355
|
+
const selected: T[] = [];
|
|
356
|
+
for (let i = 0; i < ordered.length; i += 1) {
|
|
357
|
+
if (selectedRoots.has(root(keys[i]!))) selected.push(ordered[i]!);
|
|
358
|
+
}
|
|
359
|
+
return selected;
|
|
360
|
+
}
|
|
@@ -3,9 +3,15 @@ import * as fs from "node:fs";
|
|
|
3
3
|
import * as os from "node:os";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import test from "node:test";
|
|
6
|
+
import * as fsp from "node:fs/promises";
|
|
6
7
|
|
|
7
8
|
import { createHash } from "node:crypto";
|
|
8
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
type ServerIdentityCacheEntry,
|
|
11
|
+
mergeServerIdentityCacheEntries,
|
|
12
|
+
planServerIdentityCacheWrite,
|
|
13
|
+
retainExcludedClassifications,
|
|
14
|
+
} from "./access-offline-manifest.js";
|
|
9
15
|
import { isInternalRemnicStatePath } from "./offline-sync.js";
|
|
10
16
|
import { convergeIdentityCachePath } from "./reconcile/cursor.js";
|
|
11
17
|
import {
|
|
@@ -375,4 +381,79 @@ test("a thrown memory-file read is not cached as a reusable negative", async ()
|
|
|
375
381
|
assert.equal(reads, 1, "a failed read must not become a warm negative hit");
|
|
376
382
|
});
|
|
377
383
|
|
|
384
|
+
test("the write plan retains never-yielded excluded paths on a completed walk", () => {
|
|
385
|
+
const persisted = new Map<string, ServerIdentityCacheEntry>([
|
|
386
|
+
["facts/gone.md", { path: "facts/gone.md", sha256: "aa" }],
|
|
387
|
+
["facts/private.md", { path: "facts/private.md", sha256: "", statIdentity: "s", excluded: true }],
|
|
388
|
+
]);
|
|
389
|
+
const plan = planServerIdentityCacheWrite({
|
|
390
|
+
persisted,
|
|
391
|
+
yieldedPaths: new Set([]),
|
|
392
|
+
retainedPaths: new Set(["facts/private.md"]),
|
|
393
|
+
streamCompleted: true,
|
|
394
|
+
cacheDirty: false,
|
|
395
|
+
});
|
|
396
|
+
assert.ok(plan.shouldWrite, "the vanished path still forces a write");
|
|
397
|
+
assert.deepEqual(
|
|
398
|
+
plan.entries.map((entry) => entry.path),
|
|
399
|
+
["facts/private.md"],
|
|
400
|
+
"an excluded file's entry survives the deleted-path prune; a vanished path's does not"
|
|
401
|
+
);
|
|
402
|
+
});
|
|
403
|
+
|
|
404
|
+
test("excluded classifications persist for never-yielded paths without retaining unseen ones", () => {
|
|
405
|
+
const persisted = new Map<string, ServerIdentityCacheEntry>([
|
|
406
|
+
["facts/deleted.md", { path: "facts/deleted.md", sha256: "aa" }],
|
|
407
|
+
]);
|
|
408
|
+
const classifications = new Map([
|
|
409
|
+
["facts/private.md", { statIdentity: "1:1:1:1:1", excluded: true }],
|
|
410
|
+
["facts/yielded.md", { statIdentity: "2:2:2:2:2", excluded: false }],
|
|
411
|
+
]);
|
|
412
|
+
const { retained, changed } = retainExcludedClassifications({
|
|
413
|
+
persisted,
|
|
414
|
+
classifications,
|
|
415
|
+
yieldedPaths: new Set(["facts/yielded.md"]),
|
|
416
|
+
});
|
|
417
|
+
assert.deepEqual([...retained], ["facts/private.md"]);
|
|
418
|
+
assert.equal(changed, true);
|
|
419
|
+
assert.equal(persisted.get("facts/private.md")?.excluded, true);
|
|
420
|
+
assert.equal(typeof persisted.get("facts/private.md")?.statIdentity, "string");
|
|
421
|
+
assert.ok(!retained.has("facts/deleted.md"), "a path the walk never saw must not be retained");
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
test("a concurrent server merge preserves the other writer's classification", async () => {
|
|
425
|
+
const dir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "server-identity-merge-"));
|
|
426
|
+
try {
|
|
427
|
+
const cachePath = path.join(dir, "identity.json");
|
|
428
|
+
await fs.promises.writeFile(
|
|
429
|
+
cachePath,
|
|
430
|
+
JSON.stringify({
|
|
431
|
+
citationTemplate: citationTemplateFingerprint(undefined),
|
|
432
|
+
files: [
|
|
433
|
+
{ path: "facts/a.md", sha256: "aa", statIdentity: "1:2:3:4:5", excluded: false },
|
|
434
|
+
{ path: "facts/dropped.md", sha256: "dd", statIdentity: "9:9:9:9:9", excluded: true },
|
|
435
|
+
],
|
|
436
|
+
})
|
|
437
|
+
);
|
|
438
|
+
const merged = await mergeServerIdentityCacheEntries(
|
|
439
|
+
fsp,
|
|
440
|
+
cachePath,
|
|
441
|
+
[{ path: "facts/b.md", sha256: "bb" }],
|
|
442
|
+
undefined,
|
|
443
|
+
new Set(["facts/dropped.md"])
|
|
444
|
+
);
|
|
445
|
+
const byPath = new Map(merged.map((entry) => [entry.path, entry]));
|
|
446
|
+
assert.equal(
|
|
447
|
+
byPath.get("facts/a.md")?.statIdentity,
|
|
448
|
+
"1:2:3:4:5",
|
|
449
|
+
"the other writer's classification survives the merge"
|
|
450
|
+
);
|
|
451
|
+
assert.equal(byPath.get("facts/a.md")?.excluded, false);
|
|
452
|
+
assert.ok(byPath.has("facts/b.md"), "this writer's entry survives too");
|
|
453
|
+
assert.equal(byPath.has("facts/dropped.md"), false, "a dropped path is still not resurrected");
|
|
454
|
+
} finally {
|
|
455
|
+
await fs.promises.rm(dir, { recursive: true, force: true });
|
|
456
|
+
}
|
|
457
|
+
});
|
|
458
|
+
|
|
378
459
|
|
package/src/search/port.ts
CHANGED
|
@@ -91,7 +91,7 @@ export interface SearchBackendStatus {
|
|
|
91
91
|
*/
|
|
92
92
|
export interface SearchBackend {
|
|
93
93
|
// ── Lifecycle ──
|
|
94
|
-
probe(): Promise<boolean>;
|
|
94
|
+
probe(execution?: SearchExecutionOptions): Promise<boolean>;
|
|
95
95
|
/**
|
|
96
96
|
* Optional non-mutating availability probe for health/readiness checks.
|
|
97
97
|
* Implementations must avoid auto-upgrades, collection creation, daemon
|
|
@@ -226,6 +226,7 @@ test("an evidenced gated recovery defers a reserve-only marker to the path-locke
|
|
|
226
226
|
status: "present",
|
|
227
227
|
revision: b.pendingRevision,
|
|
228
228
|
committedDigest: store.digestContent("landed bytes"),
|
|
229
|
+
committedSemanticFingerprint: store.digestContent("landed bytes"),
|
|
229
230
|
});
|
|
230
231
|
});
|
|
231
232
|
});
|
|
@@ -258,6 +259,7 @@ test("recoverPendingRevision publishes a crashed reservation whose write landed
|
|
|
258
259
|
status: "present",
|
|
259
260
|
revision: b.pendingRevision,
|
|
260
261
|
committedDigest: store.digestContent("new durable bytes"),
|
|
262
|
+
committedSemanticFingerprint: store.digestContent("new durable bytes"),
|
|
261
263
|
});
|
|
262
264
|
assert.equal(await store.recoverPendingRevision(target), "committed", "idempotent");
|
|
263
265
|
});
|
|
@@ -361,6 +363,7 @@ test("beginRevisionTransaction with expectedContent persists expectedDigest in p
|
|
|
361
363
|
status: "present",
|
|
362
364
|
revision: txn2.pendingRevision,
|
|
363
365
|
committedDigest: store.digestContent(expectedContent),
|
|
366
|
+
committedSemanticFingerprint: store.digestContent(expectedContent),
|
|
364
367
|
});
|
|
365
368
|
});
|
|
366
369
|
});
|
|
@@ -425,6 +428,7 @@ test("legacy pending shards without writeLanded treat expectedDigest as already
|
|
|
425
428
|
status: "present",
|
|
426
429
|
revision: "2026-08-01T00:00:00.000Z",
|
|
427
430
|
committedDigest: expectedDigest,
|
|
431
|
+
committedSemanticFingerprint: expectedDigest,
|
|
428
432
|
});
|
|
429
433
|
});
|
|
430
434
|
});
|