@remnic/core 9.50.3 → 9.51.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.d.ts +13 -11
- package/dist/access-admin-ops-surface.js +41 -39
- package/dist/access-authorization-probe.d.ts +13 -11
- package/dist/access-authorization-probe.js +42 -40
- package/dist/access-boundary.d.ts +13 -11
- package/dist/access-boundary.js +41 -39
- package/dist/access-cli.js +109 -104
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +3 -1
- package/dist/access-extraction-force-flush.d.ts +13 -11
- package/dist/access-extraction-force-flush.js +41 -39
- package/dist/access-health-types.d.ts +3 -1
- package/dist/access-http-lcm-compaction.d.ts +13 -11
- package/dist/access-http-lifecycle-flush.d.ts +13 -11
- package/dist/access-http-offline-stream.d.ts +13 -11
- package/dist/access-http-query.js +41 -39
- package/dist/access-http.d.ts +13 -11
- package/dist/access-http.js +52 -50
- package/dist/access-identity-continuity-surface.d.ts +11 -9
- package/dist/access-identity-continuity-surface.js +41 -39
- package/dist/access-lcm-surface.d.ts +13 -11
- package/dist/access-lcm-surface.js +41 -39
- package/dist/access-mcp.d.ts +13 -11
- package/dist/access-mcp.js +47 -45
- package/dist/access-memory-search-fanout.d.ts +4 -2
- package/dist/{access-namespace-preflight-Dj2QolFE.d.ts → access-namespace-preflight-Ds6CGlCP.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +5 -3
- package/dist/access-namespace-preflight.js +41 -39
- package/dist/access-observe-write-surface.d.ts +13 -11
- package/dist/access-observe-write-surface.js +41 -39
- package/dist/access-offline-manifest.d.ts +11 -9
- package/dist/access-operations-batch.js +43 -41
- package/dist/access-operations.d.ts +16 -14
- package/dist/access-operations.js +46 -44
- package/dist/access-recall-concurrency.d.ts +13 -11
- package/dist/access-recall-concurrency.js +41 -39
- package/dist/access-recall-response.d.ts +13 -11
- package/dist/access-recall-response.js +41 -39
- package/dist/access-recall-surface.d.ts +13 -11
- package/dist/access-recall-surface.js +41 -39
- package/dist/access-schema.d.ts +88 -88
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-DesbnTSa.d.ts → access-service-BY0KJ44c.d.ts} +7 -7
- package/dist/access-service-helpers.d.ts +13 -11
- package/dist/access-service.d.ts +13 -11
- package/dist/access-service.js +41 -39
- package/dist/access-surface-catalog.d.ts +13 -11
- package/dist/access-wearables-meetings-surface.d.ts +5 -3
- package/dist/action-confidence.d.ts +3 -1
- package/dist/active-memory-bridge.d.ts +3 -1
- package/dist/active-recall.d.ts +3 -1
- package/dist/active-recall.js +5 -3
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +3 -1
- package/dist/archive-mutation-version.d.ts +9 -0
- package/dist/archive-mutation-version.js +20 -0
- package/dist/artifact-search.d.ts +3 -1
- package/dist/behavior-learner.d.ts +3 -1
- package/dist/behavior-signals.d.ts +3 -1
- package/dist/bootstrap.d.ts +11 -9
- package/dist/briefing.d.ts +4 -2
- package/dist/briefing.js +10 -9
- package/dist/buffer-surprise-report.d.ts +3 -1
- package/dist/buffer-turn-helpers.d.ts +3 -1
- package/dist/buffer.d.ts +4 -2
- package/dist/buffer.js +5 -5
- package/dist/bulk-import/index.d.ts +5 -3
- package/dist/calibration.d.ts +3 -1
- package/dist/capabilities.d.ts +3 -1
- package/dist/{catalog-D-G7RgXR.d.ts → catalog-D3B4RDy1.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +3 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +3 -1
- package/dist/causal-consolidation.js +13 -12
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +4 -2
- package/dist/causal-trajectory-graph.js +2 -1
- package/dist/causal-trajectory-graph.js.map +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-KDG2KTWW.js → chunk-33SV3E43.js} +4 -4
- package/dist/{chunk-2HGUDBRJ.js → chunk-37ZO6LLJ.js} +2 -2
- package/dist/{chunk-QW3WFHKU.js → chunk-45BRYON6.js} +2 -2
- package/dist/{chunk-GZICBRWK.js → chunk-4F6X3RXW.js} +2 -2
- package/dist/{chunk-7BAYBYY5.js → chunk-4PC4PRJE.js} +2 -2
- package/dist/{chunk-VJXY5ZCT.js → chunk-52UKFTUK.js} +2 -2
- package/dist/{chunk-ESG7Z255.js → chunk-5UDMFE3Q.js} +2 -2
- package/dist/{chunk-JPHEOE6Z.js → chunk-6MTSFX7A.js} +15 -15
- package/dist/chunk-6ZN34ISG.js +44 -0
- package/dist/chunk-6ZN34ISG.js.map +1 -0
- package/dist/{chunk-M4MP34AQ.js → chunk-AHZOMHWN.js} +1 -1
- package/dist/{chunk-Z3RHPGSY.js → chunk-AIUBBHSF.js} +3 -3
- package/dist/{chunk-S3AYIQCU.js → chunk-AXIDQG5A.js} +12 -12
- package/dist/{chunk-QN7NTKRC.js → chunk-AZ2QBGYB.js} +1 -1
- package/dist/{chunk-47J4EDGR.js → chunk-AZM4CCAC.js} +8 -8
- package/dist/{chunk-IXXABW5A.js → chunk-BHXYAVUM.js} +11 -5
- package/dist/chunk-BHXYAVUM.js.map +1 -0
- package/dist/{chunk-L2DPF4DF.js → chunk-BIJAWZYW.js} +54 -12
- package/dist/chunk-BIJAWZYW.js.map +1 -0
- package/dist/{chunk-LEJPSMKM.js → chunk-C5QLI33R.js} +3 -3
- package/dist/{chunk-SV3PSA7Y.js → chunk-CV6BBVYV.js} +5 -5
- package/dist/{chunk-V7X767RT.js → chunk-DCZBSE4F.js} +52 -52
- package/dist/chunk-FC67T4E6.js +70 -0
- package/dist/chunk-FC67T4E6.js.map +1 -0
- package/dist/{chunk-7PKFPLLZ.js → chunk-FXTYIA46.js} +2 -2
- package/dist/{chunk-64BHFFKZ.js → chunk-HLYR2TQL.js} +5 -5
- package/dist/{chunk-5C2HNJMO.js → chunk-J5LLX6IL.js} +32 -32
- package/dist/{chunk-RKNJBZ55.js → chunk-JBPKEARU.js} +4 -4
- package/dist/{chunk-PLKFO2HJ.js → chunk-JL43BVDE.js} +2 -2
- package/dist/{chunk-2S72LWKX.js → chunk-JYL3BVVZ.js} +2 -2
- package/dist/{chunk-IPLYGWQF.js → chunk-KQAFEZQX.js} +5 -5
- package/dist/chunk-LXY5VVGM.js +61 -0
- package/dist/chunk-LXY5VVGM.js.map +1 -0
- package/dist/{chunk-PYKKWQZ2.js → chunk-M7BXDKPR.js} +6 -6
- package/dist/{chunk-Z54EM5YZ.js → chunk-MAXVH44E.js} +7 -7
- package/dist/{chunk-LYMNZZIM.js → chunk-NIS256NW.js} +2 -2
- package/dist/{chunk-67QG75MJ.js → chunk-NLK2VZYZ.js} +2 -2
- package/dist/{chunk-A4QMKFFO.js → chunk-O5FFBO2M.js} +14 -28
- package/dist/chunk-O5FFBO2M.js.map +1 -0
- package/dist/{chunk-JYIFGGEM.js → chunk-OUKBMQ2O.js} +2 -2
- package/dist/{chunk-75XOWNRS.js → chunk-OYESWJ43.js} +4 -4
- package/dist/{chunk-TS4AJ2GI.js → chunk-PA45XCUD.js} +3 -3
- package/dist/{chunk-BJYET5TX.js → chunk-PRDJMOST.js} +7 -1
- package/dist/chunk-PRDJMOST.js.map +1 -0
- package/dist/{chunk-4MBPIL4V.js → chunk-PUSLMZBQ.js} +2 -2
- package/dist/{chunk-RVO6TCTU.js → chunk-QCECHYZL.js} +6 -6
- package/dist/{chunk-GFIKG4FR.js → chunk-QGR6OVGT.js} +2 -2
- package/dist/{chunk-NSGU76YO.js → chunk-QHFV6VNU.js} +6 -2
- package/dist/chunk-QHFV6VNU.js.map +1 -0
- package/dist/{chunk-PDEKQWDV.js → chunk-QT2FRYI4.js} +18 -2
- package/dist/chunk-QT2FRYI4.js.map +1 -0
- package/dist/{chunk-HNZKVLAN.js → chunk-S354QO4R.js} +2 -2
- package/dist/{chunk-NO37MR45.js → chunk-SOEN6KCF.js} +2 -2
- package/dist/{chunk-FXX6RQYC.js → chunk-TPTECFWR.js} +2 -2
- package/dist/{chunk-GDDGZVFI.js → chunk-UEVLYVNW.js} +2 -2
- package/dist/{chunk-YQ4IQ2GA.js → chunk-UT5BV5OG.js} +2 -2
- package/dist/{chunk-LAQ33B5D.js → chunk-UU3G6GUP.js} +1 -1
- package/dist/chunk-UU3G6GUP.js.map +1 -0
- package/dist/{chunk-LNTUXKBT.js → chunk-UYYW2KPU.js} +2 -2
- package/dist/{chunk-BOFVT6P3.js → chunk-VBHPOWBJ.js} +175 -98
- package/dist/chunk-VBHPOWBJ.js.map +1 -0
- package/dist/{chunk-QSYL5CXK.js → chunk-VKXWK44Q.js} +3 -3
- package/dist/{chunk-KMWYZTIE.js → chunk-VMMQDEN5.js} +2 -2
- package/dist/{chunk-JB6D7EFB.js → chunk-VVG2BOKA.js} +2 -2
- package/dist/chunk-W5BIQOAJ.js +69 -0
- package/dist/chunk-W5BIQOAJ.js.map +1 -0
- package/dist/{chunk-V5H6OJCR.js → chunk-W5XVQFLM.js} +2 -2
- package/dist/{chunk-OIOZ6MOP.js → chunk-W6FNX2LP.js} +2 -2
- package/dist/{chunk-6QPHF6RR.js → chunk-WQM326GS.js} +2 -2
- package/dist/{chunk-TQFHQPWD.js → chunk-XADV5IZ3.js} +8 -8
- package/dist/{chunk-DATDLJAO.js → chunk-XAPMEU3K.js} +2 -2
- package/dist/chunk-XXSOVESA.js +42 -0
- package/dist/chunk-XXSOVESA.js.map +1 -0
- package/dist/{chunk-IK6X5QPO.js → chunk-ZHY5TMJG.js} +1193 -443
- package/dist/chunk-ZHY5TMJG.js.map +1 -0
- package/dist/{chunk-N3LL5NEU.js → chunk-ZMYDYNI4.js} +2 -2
- package/dist/{cli-D4vvtxjY.d.ts → cli-CnOkH9hA.d.ts} +6 -6
- package/dist/cli.d.ts +15 -13
- package/dist/cli.js +74 -70
- package/dist/coding/pre-action-gate.d.ts +3 -1
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.d.ts +4 -2
- package/dist/compounding/engine.js +10 -9
- package/dist/compounding/preference-consolidator.d.ts +3 -1
- package/dist/compression-optimizer.d.ts +3 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +5 -3
- package/dist/connectors/codex-materialize-runner.d.ts +3 -1
- package/dist/connectors/codex-materialize-runner.js +10 -9
- package/dist/connectors/codex-materialize.d.ts +3 -1
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.js +10 -9
- package/dist/consolidation-provenance-check.d.ts +4 -2
- package/dist/consolidation-undo.d.ts +4 -2
- package/dist/contradiction/index.d.ts +4 -2
- package/dist/contradiction-config.d.ts +29 -0
- package/dist/contradiction-config.js +12 -0
- package/dist/contradiction-config.js.map +1 -0
- package/dist/converge-config.d.ts +3 -1
- package/dist/convergence-refresh.d.ts +4 -2
- package/dist/convergence-refresh.js +12 -11
- package/dist/conversation-index/backend.d.ts +3 -1
- package/dist/conversation-index/chunker.d.ts +3 -1
- package/dist/conversation-index/faiss-adapter.d.ts +3 -1
- package/dist/conversation-index/indexer.d.ts +3 -1
- package/dist/conversation-index/search.d.ts +3 -1
- package/dist/corpus-watermark.d.ts +3 -1
- package/dist/corpus-watermark.js +21 -20
- package/dist/day-summary.d.ts +3 -1
- package/dist/delinearize.d.ts +3 -1
- package/dist/dependency-propagation-config.d.ts +3 -1
- package/dist/direct-answer-wiring.d.ts +3 -1
- package/dist/direct-answer.d.ts +3 -1
- package/dist/embedding-fallback.d.ts +3 -1
- package/dist/enrichment/index.d.ts +3 -1
- package/dist/entity-retrieval.d.ts +4 -2
- package/dist/entity-retrieval.js +10 -9
- package/dist/entity-schema.d.ts +3 -1
- package/dist/explicit-capture.d.ts +11 -9
- package/dist/explicit-capture.js +3 -2
- package/dist/external-wiki-access.d.ts +13 -11
- package/dist/external-wiki-access.js +42 -40
- package/dist/external-wiki-collection-registration.d.ts +3 -1
- package/dist/external-wiki-collection.d.ts +3 -1
- package/dist/external-wiki-mcp-tools.d.ts +13 -11
- package/dist/extraction-error-classification.d.ts +3 -1
- package/dist/extraction-faithfulness.d.ts +3 -1
- package/dist/extraction-judge-telemetry.d.ts +3 -1
- package/dist/extraction-judge-training.d.ts +3 -1
- package/dist/extraction-judge.d.ts +3 -1
- package/dist/extraction-liveness.d.ts +3 -1
- package/dist/extraction-normalization.d.ts +3 -1
- package/dist/extraction-prompt.d.ts +3 -1
- package/dist/extraction-source-grounding-rules.d.ts +3 -1
- package/dist/extraction-source-grounding.d.ts +3 -1
- package/dist/extraction.d.ts +3 -1
- package/dist/extraction.js +22 -21
- package/dist/fallback-llm.d.ts +3 -1
- package/dist/graph-444E-DrF.d.ts +349 -0
- package/dist/graph-dashboard-diff.d.ts +4 -2
- package/dist/graph-dashboard-key.d.ts +4 -2
- package/dist/graph-dashboard-parser.d.ts +4 -2
- package/dist/{graph-edge-decay-Z6ENALU2.js → graph-edge-decay-65KMOJWY.js} +4 -3
- package/dist/graph-edge-decay-65KMOJWY.js.map +1 -0
- package/dist/graph-edge-reinforcement.d.ts +4 -2
- package/dist/graph-path-reconstruction.d.ts +10 -0
- package/dist/graph-path-reconstruction.js +12 -0
- package/dist/graph-path-reconstruction.js.map +1 -0
- package/dist/graph-path-scoring-config.d.ts +8 -0
- package/dist/graph-path-scoring-config.js +10 -0
- package/dist/graph-path-scoring-config.js.map +1 -0
- package/dist/graph-path-scoring.d.ts +36 -0
- package/dist/graph-path-scoring.js +11 -0
- package/dist/graph-path-scoring.js.map +1 -0
- package/dist/graph-snapshot.d.ts +4 -2
- package/dist/graph-snapshot.js +3 -2
- package/dist/graph.d.ts +5 -318
- package/dist/graph.js +5 -1
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/importance.d.ts +3 -1
- package/dist/importers/index.d.ts +3 -1
- package/dist/in-flight-reads.d.ts +3 -1
- package/dist/index.d.ts +696 -694
- package/dist/index.js +149 -144
- package/dist/intent.d.ts +3 -1
- package/dist/lcm/engine.d.ts +3 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +3 -1
- package/dist/lcm/index.js +6 -6
- package/dist/lcm/tools.d.ts +3 -1
- package/dist/lifecycle.d.ts +3 -1
- package/dist/live-connectors-runner.d.ts +3 -1
- package/dist/local-llm.d.ts +3 -1
- package/dist/local-model-endpoint.d.ts +3 -1
- package/dist/maintenance/memory-governance.d.ts +3 -1
- package/dist/maintenance/memory-governance.js +10 -9
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +4 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -9
- package/dist/maintenance/rebuild-memory-projection.d.ts +4 -2
- package/dist/maintenance/rebuild-memory-projection.js +11 -10
- package/dist/{maintenance-ClmUVpGI.d.ts → maintenance-CKwxpdRx.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +13 -11
- package/dist/memory-action-policy.d.ts +3 -1
- package/dist/memory-cache.d.ts +3 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +3 -1
- package/dist/memory-projection-store.d.ts +3 -1
- package/dist/memory-provenance.d.ts +3 -1
- package/dist/memory-snapshot.d.ts +3 -1
- package/dist/memory-worth-outcomes.d.ts +4 -2
- package/dist/models-json.d.ts +3 -1
- package/dist/namespaces/migrate.d.ts +5 -3
- package/dist/namespaces/migrate.js +20 -19
- package/dist/namespaces/principal.d.ts +3 -1
- package/dist/namespaces/search.d.ts +3 -1
- package/dist/namespaces/search.js +7 -7
- package/dist/namespaces/storage.d.ts +5 -3
- package/dist/namespaces/storage.js +10 -9
- package/dist/native-knowledge.d.ts +3 -1
- package/dist/offline-sync-impression-drain.d.ts +3 -1
- package/dist/operator-doctor-corpus.d.ts +3 -1
- package/dist/operator-doctor-corpus.js +22 -21
- package/dist/operator-doctor-replica.d.ts +3 -1
- package/dist/operator-toolkit.d.ts +6 -4
- package/dist/operator-toolkit.js +33 -29
- package/dist/orchestration/compression-guideline-coordinator.d.ts +4 -2
- package/dist/orchestration/maintenance.d.ts +6 -4
- package/dist/orchestration/maintenance.js +15 -14
- package/dist/{orchestrator-qJ07zI8H.d.ts → orchestrator-BshGam-o.d.ts} +45 -19
- package/dist/orchestrator.d.ts +11 -9
- package/dist/orchestrator.js +109 -104
- package/dist/patterns-cli.d.ts +3 -1
- package/dist/{pipeline-WFCxhHOn.d.ts → pipeline-D21Rs6gW.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +3 -1
- package/dist/proactive-contention.d.ts +3 -1
- package/dist/provenance.d.ts +3 -1
- package/dist/{qmd-5tzkQ44y.d.ts → qmd-Dhle1P4X.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +4 -2
- package/dist/qmd-recall-cache.d.ts +3 -1
- package/dist/qmd.d.ts +4 -2
- package/dist/qmd.js +4 -4
- package/dist/recall-concurrency-config.d.ts +3 -1
- package/dist/recall-disclosure-escalation.d.ts +3 -1
- package/dist/recall-explain-renderer.d.ts +3 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +3 -1
- package/dist/recall-planner-llm.d.ts +3 -1
- package/dist/recall-planner-llm.js +3 -3
- package/dist/recall-state.d.ts +7 -1
- package/dist/recall-state.js +1 -1
- package/dist/recall-tag-filter.d.ts +3 -1
- package/dist/recall-timings.d.ts +3 -1
- package/dist/recall-xray-cli.d.ts +3 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +3 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +7 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +3 -1
- package/dist/reconcile/manifest.d.ts +3 -1
- package/dist/reconcile/plan.d.ts +3 -1
- package/dist/replay/normalizers/chatgpt.d.ts +3 -1
- package/dist/replay/normalizers/claude.d.ts +3 -1
- package/dist/replay/normalizers/openclaw.d.ts +3 -1
- package/dist/replay/normalizers/shared.d.ts +3 -1
- package/dist/replay/runner.d.ts +3 -1
- package/dist/replay/types.d.ts +3 -1
- package/dist/replica-divergence.d.ts +3 -1
- package/dist/replica-peers-config.d.ts +3 -1
- package/dist/resolve-auth-token.d.ts +3 -1
- package/dist/resume-bundles.js +6 -4
- package/dist/retrieval-agents.d.ts +4 -2
- package/dist/retrieval-tiers.d.ts +3 -1
- package/dist/routing/engine.d.ts +3 -1
- package/dist/routing/store.d.ts +3 -1
- package/dist/salvage-envelope.d.ts +3 -1
- package/dist/schemas.d.ts +116 -116
- package/dist/{scope-profiles--vfXPl3X.d.ts → scope-profiles-NzGPDXLn.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +3 -1
- package/dist/search/factory.d.ts +3 -1
- package/dist/search/factory.js +6 -6
- package/dist/search/index.d.ts +3 -1
- package/dist/search/index.js +12 -12
- package/dist/search/lancedb-backend.d.ts +3 -1
- package/dist/search/meilisearch-backend.d.ts +3 -1
- package/dist/search/noop-backend.d.ts +3 -1
- package/dist/search/orama-backend.d.ts +3 -1
- package/dist/search/port.d.ts +3 -1
- package/dist/search/remote-backend.d.ts +3 -1
- package/dist/{semantic-consolidation-BBDuP9nJ.d.ts → semantic-consolidation-DLDKvyy5.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +4 -2
- package/dist/semantic-consolidation.js +11 -10
- package/dist/semantic-rule-promotion.js +10 -9
- package/dist/semantic-rule-verifier.d.ts +3 -1
- package/dist/semantic-rule-verifier.js +10 -9
- package/dist/{service-B8DtbpCM.d.ts → service-BIgVM7fL.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +3 -1
- package/dist/session-observer-state.d.ts +3 -1
- package/dist/shared-context/manager.d.ts +11 -9
- package/dist/signal.d.ts +3 -1
- package/dist/source-agent-qualifier.d.ts +3 -1
- package/dist/source-agent-qualifier.js +18 -17
- package/dist/{storage-BkYN1RIy.d.ts → storage-CVfGWqCI.d.ts} +7 -6
- package/dist/storage.d.ts +4 -2
- package/dist/storage.js +9 -8
- package/dist/summarizer.d.ts +3 -1
- package/dist/summary-snapshot.d.ts +3 -1
- package/dist/temporal-supersession.d.ts +4 -2
- package/dist/temporal-timeline-recall.d.ts +3 -1
- package/dist/temporal-validity.d.ts +3 -1
- package/dist/threading.d.ts +3 -1
- package/dist/tier-migration.d.ts +4 -2
- package/dist/tier-routing.d.ts +3 -1
- package/dist/topics.d.ts +3 -1
- package/dist/transcript.d.ts +3 -1
- package/dist/transfer/autodetect.js +1 -1
- package/dist/transfer/backup.js +1 -1
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/types.d.ts +66 -66
- package/dist/trust-score-stage.d.ts +3 -1
- package/dist/trust-score.d.ts +3 -1
- package/dist/{types-u2s9j1uD.d.ts → types-CkiDUorT.d.ts} +10 -16
- package/dist/types.d.ts +3 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +3 -1
- package/dist/verified-recall.js +10 -9
- package/dist/write-envelope.d.ts +3 -1
- package/package.json +2 -2
- package/src/archive-mutation-version.ts +59 -0
- package/src/config.test.ts +45 -0
- package/src/config.ts +10 -30
- package/src/contradiction/contradiction.test.ts +86 -1
- package/src/contradiction-config.ts +92 -0
- package/src/graph-path-reconstruction.ts +91 -0
- package/src/graph-path-scoring-config.ts +55 -0
- package/src/graph-path-scoring.test.ts +238 -0
- package/src/graph-path-scoring.ts +77 -0
- package/src/graph.test.ts +225 -5
- package/src/graph.ts +72 -5
- package/src/orchestration/contradiction-linking-coordinator.ts +246 -76
- package/src/orchestration/contradiction-localization.integration.test.ts +1953 -0
- package/src/orchestration/extraction-anchor-snapshot.ts +83 -0
- package/src/orchestration/extraction-persist-deps.ts +8 -2
- package/src/orchestration/extraction-persist.ts +43 -34
- package/src/orchestration/graph-path-state-loader.test.ts +801 -0
- package/src/orchestration/graph-path-state-loader.ts +318 -0
- package/src/orchestration/graph-recall-coordinator.integration.test.ts +1163 -0
- package/src/orchestration/graph-recall-coordinator.ts +206 -29
- package/src/orchestration/graph-recall-seam.ts +19 -0
- package/src/orchestration/recall-internal-deps.ts +7 -13
- package/src/orchestration/recall-internal.ts +5 -0
- package/src/orchestration/recall-introspection.ts +9 -1
- package/src/orchestration/recall-search-pipeline.ts +8 -13
- package/src/orchestration/update-localization.test.ts +784 -0
- package/src/orchestration/update-localization.ts +173 -0
- package/src/orchestrator.ts +19 -18
- package/src/recall-state.test.ts +29 -1
- package/src/recall-state.ts +13 -0
- package/src/recall-xray-renderer.test.ts +45 -0
- package/src/recall-xray-renderer.ts +16 -0
- package/src/recall-xray.ts +13 -0
- package/src/storage/supersession-side-effects.ts +97 -0
- package/src/storage/tombstone-blocked-capture-sync.ts +13 -5
- package/src/storage-contract/cache-coherence.test.ts +299 -0
- package/src/storage.ts +86 -88
- package/src/types.ts +12 -15
- package/dist/chunk-A4QMKFFO.js.map +0 -1
- package/dist/chunk-BJYET5TX.js.map +0 -1
- package/dist/chunk-BOFVT6P3.js.map +0 -1
- package/dist/chunk-IK6X5QPO.js.map +0 -1
- package/dist/chunk-IXXABW5A.js.map +0 -1
- package/dist/chunk-L2DPF4DF.js.map +0 -1
- package/dist/chunk-LAQ33B5D.js.map +0 -1
- package/dist/chunk-NSGU76YO.js.map +0 -1
- package/dist/chunk-PDEKQWDV.js.map +0 -1
- /package/dist/{graph-edge-decay-Z6ENALU2.js.map → archive-mutation-version.js.map} +0 -0
- /package/dist/{chunk-KDG2KTWW.js.map → chunk-33SV3E43.js.map} +0 -0
- /package/dist/{chunk-2HGUDBRJ.js.map → chunk-37ZO6LLJ.js.map} +0 -0
- /package/dist/{chunk-QW3WFHKU.js.map → chunk-45BRYON6.js.map} +0 -0
- /package/dist/{chunk-GZICBRWK.js.map → chunk-4F6X3RXW.js.map} +0 -0
- /package/dist/{chunk-7BAYBYY5.js.map → chunk-4PC4PRJE.js.map} +0 -0
- /package/dist/{chunk-VJXY5ZCT.js.map → chunk-52UKFTUK.js.map} +0 -0
- /package/dist/{chunk-ESG7Z255.js.map → chunk-5UDMFE3Q.js.map} +0 -0
- /package/dist/{chunk-JPHEOE6Z.js.map → chunk-6MTSFX7A.js.map} +0 -0
- /package/dist/{chunk-M4MP34AQ.js.map → chunk-AHZOMHWN.js.map} +0 -0
- /package/dist/{chunk-Z3RHPGSY.js.map → chunk-AIUBBHSF.js.map} +0 -0
- /package/dist/{chunk-S3AYIQCU.js.map → chunk-AXIDQG5A.js.map} +0 -0
- /package/dist/{chunk-QN7NTKRC.js.map → chunk-AZ2QBGYB.js.map} +0 -0
- /package/dist/{chunk-47J4EDGR.js.map → chunk-AZM4CCAC.js.map} +0 -0
- /package/dist/{chunk-LEJPSMKM.js.map → chunk-C5QLI33R.js.map} +0 -0
- /package/dist/{chunk-SV3PSA7Y.js.map → chunk-CV6BBVYV.js.map} +0 -0
- /package/dist/{chunk-V7X767RT.js.map → chunk-DCZBSE4F.js.map} +0 -0
- /package/dist/{chunk-7PKFPLLZ.js.map → chunk-FXTYIA46.js.map} +0 -0
- /package/dist/{chunk-64BHFFKZ.js.map → chunk-HLYR2TQL.js.map} +0 -0
- /package/dist/{chunk-5C2HNJMO.js.map → chunk-J5LLX6IL.js.map} +0 -0
- /package/dist/{chunk-RKNJBZ55.js.map → chunk-JBPKEARU.js.map} +0 -0
- /package/dist/{chunk-PLKFO2HJ.js.map → chunk-JL43BVDE.js.map} +0 -0
- /package/dist/{chunk-2S72LWKX.js.map → chunk-JYL3BVVZ.js.map} +0 -0
- /package/dist/{chunk-IPLYGWQF.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-PYKKWQZ2.js.map → chunk-M7BXDKPR.js.map} +0 -0
- /package/dist/{chunk-Z54EM5YZ.js.map → chunk-MAXVH44E.js.map} +0 -0
- /package/dist/{chunk-LYMNZZIM.js.map → chunk-NIS256NW.js.map} +0 -0
- /package/dist/{chunk-67QG75MJ.js.map → chunk-NLK2VZYZ.js.map} +0 -0
- /package/dist/{chunk-JYIFGGEM.js.map → chunk-OUKBMQ2O.js.map} +0 -0
- /package/dist/{chunk-75XOWNRS.js.map → chunk-OYESWJ43.js.map} +0 -0
- /package/dist/{chunk-TS4AJ2GI.js.map → chunk-PA45XCUD.js.map} +0 -0
- /package/dist/{chunk-4MBPIL4V.js.map → chunk-PUSLMZBQ.js.map} +0 -0
- /package/dist/{chunk-RVO6TCTU.js.map → chunk-QCECHYZL.js.map} +0 -0
- /package/dist/{chunk-GFIKG4FR.js.map → chunk-QGR6OVGT.js.map} +0 -0
- /package/dist/{chunk-HNZKVLAN.js.map → chunk-S354QO4R.js.map} +0 -0
- /package/dist/{chunk-NO37MR45.js.map → chunk-SOEN6KCF.js.map} +0 -0
- /package/dist/{chunk-FXX6RQYC.js.map → chunk-TPTECFWR.js.map} +0 -0
- /package/dist/{chunk-GDDGZVFI.js.map → chunk-UEVLYVNW.js.map} +0 -0
- /package/dist/{chunk-YQ4IQ2GA.js.map → chunk-UT5BV5OG.js.map} +0 -0
- /package/dist/{chunk-LNTUXKBT.js.map → chunk-UYYW2KPU.js.map} +0 -0
- /package/dist/{chunk-QSYL5CXK.js.map → chunk-VKXWK44Q.js.map} +0 -0
- /package/dist/{chunk-KMWYZTIE.js.map → chunk-VMMQDEN5.js.map} +0 -0
- /package/dist/{chunk-JB6D7EFB.js.map → chunk-VVG2BOKA.js.map} +0 -0
- /package/dist/{chunk-V5H6OJCR.js.map → chunk-W5XVQFLM.js.map} +0 -0
- /package/dist/{chunk-OIOZ6MOP.js.map → chunk-W6FNX2LP.js.map} +0 -0
- /package/dist/{chunk-6QPHF6RR.js.map → chunk-WQM326GS.js.map} +0 -0
- /package/dist/{chunk-TQFHQPWD.js.map → chunk-XADV5IZ3.js.map} +0 -0
- /package/dist/{chunk-DATDLJAO.js.map → chunk-XAPMEU3K.js.map} +0 -0
- /package/dist/{chunk-N3LL5NEU.js.map → chunk-ZMYDYNI4.js.map} +0 -0
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
|
|
3
|
+
import type { StorageManager } from "../index.js";
|
|
4
|
+
import type { MemoryCategory, MemoryFile } from "../types.js";
|
|
5
|
+
import { resolvePersistedMemoryRelativePath } from "../orchestrator.js";
|
|
6
|
+
import { mergeMemorySnapshots } from "./update-localization.js";
|
|
7
|
+
|
|
8
|
+
type AnchorSnapshotOptions = {
|
|
9
|
+
enabled?: boolean;
|
|
10
|
+
candidateLimit?: number;
|
|
11
|
+
onRefreshError?: (error: unknown) => void;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/** Maintains one hot+cold anchor snapshot per storage during a persistence pass. */
|
|
15
|
+
export class ExtractionAnchorSnapshot {
|
|
16
|
+
private readonly snapshots = new WeakMap<StorageManager, Promise<MemoryFile[]>>();
|
|
17
|
+
private readonly refreshFailed = new WeakSet<StorageManager>();
|
|
18
|
+
private failOpenRead(
|
|
19
|
+
storage: StorageManager,
|
|
20
|
+
snapshot: Promise<MemoryFile[]>,
|
|
21
|
+
): Promise<MemoryFile[] | undefined> {
|
|
22
|
+
return snapshot.catch((error) => {
|
|
23
|
+
this.refreshFailed.add(storage);
|
|
24
|
+
if (this.snapshots.get(storage) === snapshot) this.snapshots.delete(storage);
|
|
25
|
+
this.options.onRefreshError?.(error);
|
|
26
|
+
return [];
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
constructor(private readonly options: AnchorSnapshotOptions = {}) {}
|
|
30
|
+
|
|
31
|
+
get(storage: StorageManager, entityRef: unknown): Promise<MemoryFile[] | undefined> {
|
|
32
|
+
const candidateLimit = this.options.candidateLimit ?? 5;
|
|
33
|
+
if (
|
|
34
|
+
this.options.enabled === false ||
|
|
35
|
+
!Number.isInteger(candidateLimit) ||
|
|
36
|
+
candidateLimit <= 0 ||
|
|
37
|
+
typeof entityRef !== "string" ||
|
|
38
|
+
entityRef.trim().length === 0
|
|
39
|
+
) {
|
|
40
|
+
return Promise.resolve(undefined);
|
|
41
|
+
}
|
|
42
|
+
if (this.refreshFailed.has(storage)) return Promise.resolve([]);
|
|
43
|
+
const cached = this.snapshots.get(storage);
|
|
44
|
+
if (cached) return this.failOpenRead(storage, cached);
|
|
45
|
+
const snapshot = Promise.all([
|
|
46
|
+
storage.readAllMemories(),
|
|
47
|
+
storage.readAllColdMemories(),
|
|
48
|
+
]).then(([hot, cold]) => mergeMemorySnapshots(hot, cold, storage.dir));
|
|
49
|
+
this.snapshots.set(storage, snapshot);
|
|
50
|
+
return this.failOpenRead(storage, snapshot);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async replace(
|
|
54
|
+
storage: StorageManager,
|
|
55
|
+
memoryId: string,
|
|
56
|
+
category: MemoryCategory,
|
|
57
|
+
pathById: Map<string, string>,
|
|
58
|
+
): Promise<void> {
|
|
59
|
+
if (this.refreshFailed.has(storage)) return;
|
|
60
|
+
try {
|
|
61
|
+
const cached = this.snapshots.get(storage);
|
|
62
|
+
if (!cached) return;
|
|
63
|
+
const snapshot = await cached;
|
|
64
|
+
const relativePath = resolvePersistedMemoryRelativePath({ memoryId, pathById, category });
|
|
65
|
+
const memory = await storage.readMemoryByPath(path.join(storage.dir, relativePath));
|
|
66
|
+
if (!memory) return;
|
|
67
|
+
const existingIndex = snapshot.findIndex((entry) => entry.frontmatter.id === memoryId);
|
|
68
|
+
if (existingIndex >= 0) snapshot.splice(existingIndex, 1);
|
|
69
|
+
snapshot.push(memory);
|
|
70
|
+
} catch (error) {
|
|
71
|
+
this.refreshFailed.add(storage);
|
|
72
|
+
this.options.onRefreshError?.(error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async remove(storage: StorageManager, memoryId: string): Promise<void> {
|
|
77
|
+
const cached = this.snapshots.get(storage);
|
|
78
|
+
if (!cached) return;
|
|
79
|
+
const snapshot = await cached;
|
|
80
|
+
const index = snapshot.findIndex((entry) => entry.frontmatter.id === memoryId);
|
|
81
|
+
if (index >= 0) snapshot.splice(index, 1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ContradictionResolveOutcome } from "./contradiction-linking-coordinator.js";
|
|
1
2
|
import type { GraphConstructionCapabilitySet } from "../capabilities.js";
|
|
2
3
|
import type { SemanticDedupHit } from "../dedup/semantic.js";
|
|
3
4
|
import type { EmbeddingFallback } from "../embedding-fallback.js";
|
|
@@ -49,7 +50,12 @@ export interface ExtractionPersistDeps {
|
|
|
49
50
|
checkForContradiction: (
|
|
50
51
|
content: string,
|
|
51
52
|
category: string,
|
|
52
|
-
namespaceScope: string
|
|
53
|
+
namespaceScope: string,
|
|
54
|
+
anchor?: {
|
|
55
|
+
entityRef?: string;
|
|
56
|
+
structuredAttributes?: Record<string, string>;
|
|
57
|
+
storageSnapshot?: MemoryFile[];
|
|
58
|
+
}
|
|
53
59
|
) => Promise<{
|
|
54
60
|
supersededId: string;
|
|
55
61
|
confidence: number;
|
|
@@ -72,7 +78,7 @@ export interface ExtractionPersistDeps {
|
|
|
72
78
|
storage: StorageManager,
|
|
73
79
|
newMemoryId: string,
|
|
74
80
|
postWriteGuard: boolean
|
|
75
|
-
) => Promise<
|
|
81
|
+
) => Promise<ContradictionResolveOutcome>;
|
|
76
82
|
suggestLinksForMemory: (content: string, category: string, namespaceScope: string) => Promise<MemoryLink[]>;
|
|
77
83
|
storageDirNamespace: (storageDir: string) => string;
|
|
78
84
|
indexPersistedMemory: (storage: StorageManager, memoryId: string) => Promise<void>;
|
|
@@ -1,22 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Extraction
|
|
3
|
-
* (issue #1526, seam 16).
|
|
2
|
+
* Extraction persistence coordinator (issue #1526, seam 16).
|
|
4
3
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - pre-judge multi-namespace redaction gate
|
|
8
|
-
* - extraction-judge gating
|
|
9
|
-
* - scope routing
|
|
10
|
-
* - tombstone postWriteGuard
|
|
11
|
-
* - dedup + bitemporal backfill (3 paths)
|
|
12
|
-
* - contradiction auto-resolve deferral
|
|
13
|
-
* - promotion paths
|
|
14
|
-
* - post-persist content-hash indexing
|
|
15
|
-
* - catalog write-recording
|
|
16
|
-
*
|
|
17
|
-
* Behavior-preserving move from orchestrator.ts. No logic changes — the
|
|
18
|
-
* orchestrator keeps a thin delegating method so existing call sites and
|
|
19
|
-
* tests continue to work.
|
|
4
|
+
* It owns the extraction-to-memory write pipeline, including redaction,
|
|
5
|
+
* judging, scope routing, deduplication, lifecycle updates, and indexing.
|
|
20
6
|
*/
|
|
21
7
|
|
|
22
8
|
import { isMemoryCategory } from "../write-envelope.js";
|
|
@@ -25,12 +11,7 @@ import {
|
|
|
25
11
|
probeSalvageSurvivingFields,
|
|
26
12
|
withReservedMarkerTag,
|
|
27
13
|
} from "./extraction-envelope.js";
|
|
28
|
-
import
|
|
29
|
-
import {
|
|
30
|
-
StorageManager,
|
|
31
|
-
ContentHashIndex,
|
|
32
|
-
normalizeAttributePairs,
|
|
33
|
-
} from "../index.js";
|
|
14
|
+
import { ContentHashIndex, normalizeAttributePairs, type StorageManager } from "../index.js";
|
|
34
15
|
import { log } from "../logger.js";
|
|
35
16
|
import { chunkContent, type ChunkingConfig } from "../chunking.js";
|
|
36
17
|
import { semanticChunkContent, type SemanticChunkResult } from "../semantic-chunking.js";
|
|
@@ -50,6 +31,7 @@ import {
|
|
|
50
31
|
type GraphConstructionCapabilitySet,
|
|
51
32
|
type MemoryLifecycleCapabilitySet,
|
|
52
33
|
} from "../capabilities.js";
|
|
34
|
+
import { coerceBool } from "../connectors/coerce.js";
|
|
53
35
|
import {
|
|
54
36
|
applyTemporalSupersession,
|
|
55
37
|
normalizeSupersessionKey,
|
|
@@ -129,6 +111,8 @@ import {
|
|
|
129
111
|
} from "../orchestrator.js";
|
|
130
112
|
import type { HarmonicConstructionInput } from "../harmonic-construction.js";
|
|
131
113
|
import { persistConstructedHarmonicRecords } from "./harmonic-construction-persist.js";
|
|
114
|
+
import { ExtractionAnchorSnapshot } from "./extraction-anchor-snapshot.js";
|
|
115
|
+
|
|
132
116
|
|
|
133
117
|
|
|
134
118
|
|
|
@@ -219,6 +203,11 @@ export class ExtractionPersistCoordinator {
|
|
|
219
203
|
};
|
|
220
204
|
const persistedIds: string[] = [];
|
|
221
205
|
const memoryPathById = new Map<string, string>();
|
|
206
|
+
const anchorSnapshots = new ExtractionAnchorSnapshot({
|
|
207
|
+
enabled: coerceBool(this.deps.config.contradictionLocalization?.anchorEnabled) ?? true,
|
|
208
|
+
candidateLimit: this.deps.config.contradictionLocalization?.anchorCandidates,
|
|
209
|
+
onRefreshError: (error) => log.warn(`anchor snapshot update failed; using empty snapshot: ${error}`),
|
|
210
|
+
});
|
|
222
211
|
const supersessionOrderingAt = (validAt?: string): string =>
|
|
223
212
|
validAt && validAt.length > 0 ? validAt : new Date().toISOString();
|
|
224
213
|
// #1635: pending_review persisted ids, excluded from the thread episode set below.
|
|
@@ -2045,14 +2034,20 @@ export class ExtractionPersistCoordinator {
|
|
|
2045
2034
|
// must not trigger auto-resolve and retire an existing active memory.
|
|
2046
2035
|
if (
|
|
2047
2036
|
resolveRecallEnhancementCapabilities(this.deps.config).contradictionDetection &&
|
|
2048
|
-
this.deps.getQmd().isAvailable() &&
|
|
2049
2037
|
faithfulnessEnforceStatus !== "pending_review"
|
|
2050
2038
|
) {
|
|
2051
2039
|
const targetNamespace = this.deps.storageDirNamespace(targetStorage.dir);
|
|
2040
|
+
const candidateEntityRef: unknown = fact.entityRef;
|
|
2041
|
+
const factEntityRef = typeof candidateEntityRef === "string" ? candidateEntityRef : undefined;
|
|
2052
2042
|
contradiction = await this.deps.checkForContradiction(
|
|
2053
2043
|
fact.content,
|
|
2054
2044
|
writeCategory,
|
|
2055
2045
|
targetNamespace,
|
|
2046
|
+
{
|
|
2047
|
+
entityRef: factEntityRef,
|
|
2048
|
+
structuredAttributes: fact.structuredAttributes,
|
|
2049
|
+
storageSnapshot: await anchorSnapshots.get(targetStorage, factEntityRef),
|
|
2050
|
+
},
|
|
2056
2051
|
);
|
|
2057
2052
|
if (contradiction) {
|
|
2058
2053
|
contradictionDetected = true;
|
|
@@ -2225,18 +2220,20 @@ export class ExtractionPersistCoordinator {
|
|
|
2225
2220
|
});
|
|
2226
2221
|
const parentId = parentWrite.id;
|
|
2227
2222
|
// #1645: surface the tombstone block and gate active post-write paths
|
|
2228
|
-
// (chunks, supersession, shared promotion, graph/artifact) like #1576.
|
|
2229
2223
|
const tombstoneBlocked = parentWrite.tombstoneBlocked;
|
|
2230
2224
|
const postWriteGuard =
|
|
2231
2225
|
faithfulnessEnforceStatus === "pending_review" || tombstoneBlocked;
|
|
2232
2226
|
// #1645: defer contradiction auto-resolve until tombstone status is
|
|
2233
2227
|
// known (see applyDeferredContradictionResolve).
|
|
2234
|
-
await this.deps.applyDeferredContradictionResolve(
|
|
2228
|
+
const contradictionOutcome = await this.deps.applyDeferredContradictionResolve(
|
|
2235
2229
|
contradiction,
|
|
2236
2230
|
targetStorage,
|
|
2237
2231
|
parentId,
|
|
2238
2232
|
postWriteGuard,
|
|
2239
2233
|
);
|
|
2234
|
+
if (contradictionOutcome === "resolved" || contradictionOutcome === "lost_race") {
|
|
2235
|
+
await anchorSnapshots.remove(targetStorage, contradiction!.supersededId);
|
|
2236
|
+
}
|
|
2240
2237
|
try {
|
|
2241
2238
|
// #2014 round 3: chunks inherit the PARENT ENVELOPE's surviving
|
|
2242
2239
|
// tags (minus the parent-only "chunked" marker) and entityRef —
|
|
@@ -2330,6 +2327,7 @@ export class ExtractionPersistCoordinator {
|
|
|
2330
2327
|
category: writeCategory,
|
|
2331
2328
|
harmonicFact,
|
|
2332
2329
|
});
|
|
2330
|
+
await anchorSnapshots.replace(targetStorage, parentId, writeCategory, memoryPathById);
|
|
2333
2331
|
// #1576 (cursor Medium): keep pending_review ids out of threadEpisodeIdsForGraph — else later active facts build thread-predecessor edges to an unfaithful memory.
|
|
2334
2332
|
if (
|
|
2335
2333
|
!postWriteGuard &&
|
|
@@ -2353,7 +2351,7 @@ export class ExtractionPersistCoordinator {
|
|
|
2353
2351
|
try {
|
|
2354
2352
|
// #2014 round 2: same envelope-surviving key rule as the
|
|
2355
2353
|
// non-chunked path.
|
|
2356
|
-
await applyTemporalSupersession({
|
|
2354
|
+
const temporalSupersession = await applyTemporalSupersession({
|
|
2357
2355
|
storage: targetStorage,
|
|
2358
2356
|
newMemoryId: parentId,
|
|
2359
2357
|
entityRef: parentWriteEnvelope.entityRef,
|
|
@@ -2370,6 +2368,9 @@ export class ExtractionPersistCoordinator {
|
|
|
2370
2368
|
config: this.config,
|
|
2371
2369
|
namespaceScope: this.deps.storageDirNamespace(targetStorage.dir),
|
|
2372
2370
|
});
|
|
2371
|
+
for (const supersededId of temporalSupersession.supersededIds) {
|
|
2372
|
+
await anchorSnapshots.remove(targetStorage, supersededId);
|
|
2373
|
+
}
|
|
2373
2374
|
} catch (err) {
|
|
2374
2375
|
log.warn(`temporal-supersession (chunked): unexpected error: ${err}`);
|
|
2375
2376
|
}
|
|
@@ -2606,12 +2607,19 @@ export class ExtractionPersistCoordinator {
|
|
|
2606
2607
|
// #1645: surface the tombstone block; gate active post-write paths like #1576
|
|
2607
2608
|
// so a blocked fact creates no active shared copy / supersession / graph entry.
|
|
2608
2609
|
const tombstoneBlocked = factWrite.tombstoneBlocked;
|
|
2609
|
-
const postWriteGuard =
|
|
2610
|
-
faithfulnessEnforceStatus === "pending_review" || tombstoneBlocked;
|
|
2610
|
+
const postWriteGuard = faithfulnessEnforceStatus === "pending_review" || tombstoneBlocked;
|
|
2611
2611
|
// #1645: defer contradiction auto-resolve until tombstone status is
|
|
2612
2612
|
// known (see applyDeferredContradictionResolve).
|
|
2613
2613
|
try {
|
|
2614
|
-
await this.deps.applyDeferredContradictionResolve(
|
|
2614
|
+
const contradictionOutcome = await this.deps.applyDeferredContradictionResolve(
|
|
2615
|
+
contradiction,
|
|
2616
|
+
targetStorage,
|
|
2617
|
+
memoryId,
|
|
2618
|
+
postWriteGuard,
|
|
2619
|
+
);
|
|
2620
|
+
if (contradictionOutcome === "resolved" || contradictionOutcome === "lost_race") {
|
|
2621
|
+
await anchorSnapshots.remove(targetStorage, contradiction!.supersededId);
|
|
2622
|
+
}
|
|
2615
2623
|
} catch (err) {
|
|
2616
2624
|
await flushDeferredFactHashOnFailure(() => this.deps.saveContentHashIndexes(), factDedupEnabled);
|
|
2617
2625
|
throw err;
|
|
@@ -2628,10 +2636,7 @@ export class ExtractionPersistCoordinator {
|
|
|
2628
2636
|
// the review queue must NOT retire older active memories.
|
|
2629
2637
|
if (!postWriteGuard) {
|
|
2630
2638
|
try {
|
|
2631
|
-
|
|
2632
|
-
// fields — salvage may have dropped attributes that must not
|
|
2633
|
-
// retire older facts the persisted copy does not actually contest.
|
|
2634
|
-
await applyTemporalSupersession({
|
|
2639
|
+
const temporalSupersession = await applyTemporalSupersession({
|
|
2635
2640
|
storage: targetStorage,
|
|
2636
2641
|
newMemoryId: memoryId,
|
|
2637
2642
|
entityRef: factWriteEnvelope.entityRef,
|
|
@@ -2645,6 +2650,9 @@ export class ExtractionPersistCoordinator {
|
|
|
2645
2650
|
config: this.config,
|
|
2646
2651
|
namespaceScope: this.deps.storageDirNamespace(targetStorage.dir),
|
|
2647
2652
|
});
|
|
2653
|
+
for (const supersededId of temporalSupersession.supersededIds) {
|
|
2654
|
+
await anchorSnapshots.remove(targetStorage, supersededId);
|
|
2655
|
+
}
|
|
2648
2656
|
} catch (err) {
|
|
2649
2657
|
log.warn(`temporal-supersession: unexpected error: ${err}`);
|
|
2650
2658
|
}
|
|
@@ -2666,6 +2674,7 @@ export class ExtractionPersistCoordinator {
|
|
|
2666
2674
|
category: writeCategory,
|
|
2667
2675
|
harmonicFact,
|
|
2668
2676
|
});
|
|
2677
|
+
await anchorSnapshots.replace(targetStorage, memoryId, writeCategory, memoryPathById);
|
|
2669
2678
|
if (
|
|
2670
2679
|
!postWriteGuard &&
|
|
2671
2680
|
threadEpisodeIdsForGraph &&
|