@remnic/core 9.30.1 → 9.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.d.ts +10 -10
- package/dist/access-admin-ops-surface.js +55 -44
- package/dist/access-authorization-probe.d.ts +10 -10
- package/dist/access-authorization-probe.js +56 -45
- package/dist/access-boundary.d.ts +13 -11
- package/dist/access-boundary.js +55 -44
- package/dist/access-cli.js +170 -126
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.d.ts +119 -0
- package/dist/access-extraction-force-flush.js +171 -0
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-lcm-compaction.d.ts +47 -13
- package/dist/access-http-lcm-compaction.js +7 -3
- package/dist/access-http-lifecycle-flush.d.ts +132 -0
- package/dist/access-http-lifecycle-flush.js +9 -0
- package/dist/access-http-lifecycle-flush.js.map +1 -0
- package/dist/access-http.d.ts +11 -10
- package/dist/access-http.js +71 -59
- package/dist/access-identity-continuity-surface.d.ts +8 -8
- package/dist/access-identity-continuity-surface.js +55 -44
- package/dist/access-lcm-surface.d.ts +10 -10
- package/dist/access-lcm-surface.js +55 -44
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +16 -10
- package/dist/access-mcp.js +63 -52
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-VfXssvoI.d.ts → access-namespace-preflight-COhbXBqS.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +55 -44
- package/dist/access-observe-helpers.d.ts +22 -0
- package/dist/access-observe-helpers.js +10 -0
- package/dist/access-observe-helpers.js.map +1 -0
- package/dist/access-observe-write-surface.d.ts +51 -47
- package/dist/access-observe-write-surface.js +55 -44
- package/dist/access-operations-batch.js +58 -47
- package/dist/access-operations.d.ts +11 -11
- package/dist/access-operations.js +60 -49
- package/dist/access-recall-concurrency.d.ts +10 -10
- package/dist/access-recall-concurrency.js +55 -44
- package/dist/access-recall-response.d.ts +10 -10
- package/dist/access-recall-response.js +55 -44
- package/dist/access-recall-surface.d.ts +10 -10
- package/dist/access-recall-surface.js +55 -44
- package/dist/access-schema.d.ts +37 -7
- package/dist/access-schema.js +5 -3
- package/dist/{access-service-B5RwVsTV.d.ts → access-service-BmBTtEKO.d.ts} +44 -20
- package/dist/access-service-helpers.d.ts +113 -0
- package/dist/access-service-helpers.js +8 -0
- package/dist/access-service-helpers.js.map +1 -0
- package/dist/access-service.d.ts +10 -10
- package/dist/access-service.js +55 -44
- package/dist/access-surface-catalog.d.ts +10 -10
- package/dist/access-surface-catalog.js +2 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +3 -3
- 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 +2 -2
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +8 -8
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +14 -14
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +5 -0
- package/dist/buffer-turn-helpers.js +24 -0
- package/dist/buffer-turn-helpers.js.map +1 -0
- package/dist/buffer.d.ts +17 -4
- package/dist/buffer.js +21 -1
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/capsule-crypto-7FJQINUR.js.map +1 -0
- package/dist/{capsule-merge-5KKJQBWQ.js → capsule-merge-2H2IUTBT.js} +4 -4
- package/dist/{catalog-V7inUQdp.d.ts → catalog-Dm-DvNBY.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +21 -22
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
- package/dist/{chunk-I5NLEENJ.js → chunk-27HHNYSQ.js} +3 -3
- package/dist/{chunk-2SA56WMI.js → chunk-2LTDWSR6.js} +4 -4
- package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-SPJXKAVF.js → chunk-2NTGBZLZ.js} +14 -13
- package/dist/chunk-2NTGBZLZ.js.map +1 -0
- package/dist/{chunk-P5PXWTW7.js → chunk-2Q4JJ3FZ.js} +3 -3
- package/dist/{chunk-G5R3D5UP.js → chunk-2QIMTVEJ.js} +6 -5
- package/dist/chunk-2QIMTVEJ.js.map +1 -0
- package/dist/{chunk-H5CPS5JP.js → chunk-35IVNNRK.js} +3 -3
- package/dist/{chunk-LBOD4U5B.js → chunk-3EQ2XB3W.js} +6 -6
- package/dist/{chunk-YTSNAUXN.js → chunk-3F2LKUMU.js} +22 -8
- package/dist/chunk-3F2LKUMU.js.map +1 -0
- package/dist/chunk-3QL24R5Y.js +9 -0
- package/dist/chunk-3QL24R5Y.js.map +1 -0
- package/dist/chunk-4RNZMRAV.js +60 -0
- package/dist/chunk-4RNZMRAV.js.map +1 -0
- package/dist/chunk-5IVLTFOV.js +65 -0
- package/dist/chunk-5IVLTFOV.js.map +1 -0
- package/dist/{chunk-2EUVEDF5.js → chunk-5WZVQRHV.js} +2 -2
- package/dist/{chunk-ALSGMEJR.js → chunk-65ZPVYTA.js} +7 -7
- package/dist/{chunk-GIBMDSJ2.js → chunk-6P7MTSU5.js} +2 -2
- package/dist/{chunk-5VQJBH2G.js → chunk-6TAUHL33.js} +2 -2
- package/dist/{chunk-WVO4G37W.js → chunk-7TEZUUGM.js} +3 -3
- package/dist/{chunk-MJCGLM25.js → chunk-7VUAG236.js} +5 -5
- package/dist/{chunk-CZRYLSSW.js → chunk-AJL6NNX6.js} +2 -2
- package/dist/{chunk-LGHKJABJ.js → chunk-AQEJE3WO.js} +40 -18
- package/dist/chunk-AQEJE3WO.js.map +1 -0
- package/dist/{chunk-66772WBP.js → chunk-AQWVJURR.js} +5 -5
- package/dist/{chunk-RKNJBZ55.js → chunk-AU7Q3LSC.js} +7 -7
- package/dist/{chunk-IYZ5K7MU.js → chunk-BUE5E2HL.js} +4 -187
- package/dist/chunk-BUE5E2HL.js.map +1 -0
- package/dist/{chunk-NHWB6HG2.js → chunk-CE5355TT.js} +21 -5
- package/dist/chunk-CE5355TT.js.map +1 -0
- package/dist/{chunk-M3C2V3PV.js → chunk-CJDNT45S.js} +12 -12
- package/dist/{chunk-D2ANTDGO.js → chunk-E6BMSH7U.js} +2 -2
- package/dist/{chunk-CKMO4RDY.js → chunk-EMDLM3LW.js} +4 -4
- package/dist/chunk-ER7W6H4T.js +112 -0
- package/dist/chunk-ER7W6H4T.js.map +1 -0
- package/dist/{chunk-RGIWINDN.js → chunk-FHBITMRY.js} +30 -30
- package/dist/{chunk-6FUPCJUL.js → chunk-FMFLGS5Z.js} +54 -54
- package/dist/chunk-FMFLGS5Z.js.map +1 -0
- package/dist/{chunk-FDAMS4PK.js → chunk-G2YQ57YO.js} +4 -4
- package/dist/{chunk-6U7F52DE.js → chunk-HFQQWAMS.js} +62 -62
- package/dist/{chunk-5W4ZLBEZ.js → chunk-HKPJPOW7.js} +2 -2
- package/dist/{chunk-JCBWCYEJ.js → chunk-IGWFKW4B.js} +2 -2
- package/dist/{chunk-AITCS2RC.js → chunk-IJ7HK452.js} +4 -4
- package/dist/{chunk-4WKA6I65.js → chunk-J3ZGPYXB.js} +1135 -311
- package/dist/chunk-J3ZGPYXB.js.map +1 -0
- package/dist/{chunk-D3LMYTBV.js → chunk-J7WZUL2K.js} +9 -9
- package/dist/{chunk-5W7CTZ2E.js → chunk-KQAFEZQX.js} +4 -4
- package/dist/{chunk-YNQBRLC5.js → chunk-LUQ443JP.js} +520 -2011
- package/dist/chunk-LUQ443JP.js.map +1 -0
- package/dist/{chunk-Z54EM5YZ.js → chunk-MAXVH44E.js} +7 -7
- package/dist/{chunk-WZFAPHIK.js → chunk-MU7ZHSZE.js} +2 -2
- package/dist/chunk-N5Z4EVOR.js +123 -0
- package/dist/chunk-N5Z4EVOR.js.map +1 -0
- package/dist/{chunk-AZ5BTEKX.js → chunk-NQUF7XKR.js} +2 -2
- package/dist/{chunk-W4FBGYGK.js → chunk-NRV4Y3PM.js} +1 -1
- package/dist/{chunk-62U4J2GN.js → chunk-ODGOP7P2.js} +2 -2
- package/dist/{chunk-QJAQNXWI.js → chunk-ONHRRJZM.js} +6 -6
- package/dist/{chunk-ACXPX4AG.js → chunk-OPBTPRGY.js} +2 -2
- package/dist/{chunk-XOZ4ALGB.js → chunk-QDTZ2HF7.js} +3 -3
- package/dist/{chunk-GBJ4RDFR.js → chunk-QIHIHZYC.js} +66 -91
- package/dist/chunk-QIHIHZYC.js.map +1 -0
- package/dist/{chunk-ZPSVBSOF.js → chunk-QMWFQBIL.js} +3 -3
- package/dist/{chunk-W5EG6LE3.js → chunk-THCPRMRF.js} +3 -3
- package/dist/{chunk-4A6YGWQN.js → chunk-TL4TO3EA.js} +115 -120
- package/dist/chunk-TL4TO3EA.js.map +1 -0
- package/dist/{chunk-VI2JQPNQ.js → chunk-U7QYBSQJ.js} +2 -2
- package/dist/chunk-ULARSG5Z.js +203 -0
- package/dist/chunk-ULARSG5Z.js.map +1 -0
- package/dist/{chunk-TH2LSRMG.js → chunk-UORKJ34C.js} +2 -2
- package/dist/{chunk-4Z4XNEWZ.js → chunk-VCD4PSK2.js} +56 -12
- package/dist/chunk-VCD4PSK2.js.map +1 -0
- package/dist/{chunk-K5GB36ME.js → chunk-VMZ56EE3.js} +2 -2
- package/dist/{chunk-HUHX2OCX.js → chunk-VVDPPDDF.js} +1 -1
- package/dist/chunk-VVDPPDDF.js.map +1 -0
- package/dist/{chunk-RMMVQQA6.js → chunk-WDISJRMG.js} +2 -2
- package/dist/{chunk-B6JDYXL7.js → chunk-WWUVONGW.js} +7 -1
- package/dist/chunk-WWUVONGW.js.map +1 -0
- package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-CVILPI77.js → chunk-XOQSEF7X.js} +6 -6
- package/dist/{chunk-RPW2NOU6.js → chunk-YIAA2X3D.js} +41 -1
- package/dist/chunk-YIAA2X3D.js.map +1 -0
- package/dist/chunk-YPC7W6GA.js +1604 -0
- package/dist/chunk-YPC7W6GA.js.map +1 -0
- package/dist/{chunk-YTQNQ4KB.js → chunk-YX5LN6JR.js} +3 -3
- package/dist/{chunk-IC6CBHCA.js → chunk-Z7XKUWYS.js} +2 -2
- package/dist/{chunk-PHWUFPCO.js → chunk-ZCPP5OW6.js} +61 -53
- package/dist/chunk-ZCPP5OW6.js.map +1 -0
- package/dist/{cli-C4GbETPC.d.ts → cli-DRJLv1Xt.d.ts} +5 -5
- package/dist/cli.d.ts +12 -12
- package/dist/cli.js +96 -86
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +14 -14
- 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 +2 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +14 -15
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +3 -2
- package/dist/connectors/index.js +24 -23
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-provenance-check.js +5 -5
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/consolidation-undo.js +3 -3
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/contradiction/index.js +4 -4
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/backend.js +2 -2
- 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 +26 -26
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.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-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +14 -14
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +8 -8
- package/dist/extraction-error-classification.d.ts +1 -1
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction-liveness.d.ts +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +15 -2
- package/dist/extraction-source-grounding.js +10 -1
- package/dist/extraction.d.ts +2 -15
- package/dist/extraction.js +5 -4
- package/dist/fallback-llm.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-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/index.d.ts +19 -19
- package/dist/index.js +253 -246
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +6 -6
- 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-helpers.d.ts +7 -0
- package/dist/local-llm-helpers.js +16 -0
- package/dist/local-llm-helpers.js.map +1 -0
- package/dist/local-llm.d.ts +3 -6
- package/dist/local-llm.js +2 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +14 -14
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +14 -14
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +15 -15
- package/dist/{maintenance-CL30NWtc.d.ts → maintenance-C6Pffz30.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +10 -10
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-corpus-version.js +2 -2
- 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-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +24 -24
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +9 -9
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +14 -14
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/offline-sync-impression-drain.js +6 -5
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +29 -29
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-doctor-replica.js +3 -3
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +39 -38
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +22 -21
- package/dist/{orchestrator-CKTCRwWV.d.ts → orchestrator-eQlmasno.d.ts} +72 -34
- package/dist/orchestrator.d.ts +8 -8
- package/dist/orchestrator.js +169 -162
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-B7wj4rRZ.d.ts → pipeline-CZGmAMQ2.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/{qmd-q9tg4dHp.d.ts → qmd-DBj4MF8T.d.ts} +1 -1
- 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 +4 -4
- 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-planner-llm.d.ts +1 -1
- 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/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-divergence.js +2 -2
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +2 -2
- 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-CWDyglPM.d.ts → scope-profiles-S85lrsUn.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/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-BUE3deLn.d.ts → semantic-consolidation-DVzDcV6x.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +17 -18
- package/dist/semantic-rule-promotion.js +14 -14
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +14 -14
- package/dist/{service-CXgM0bQG.d.ts → service-C2M-wD4W.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/{storage-DysJq-XH.d.ts → storage-dyBC3Q84.d.ts} +1 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +13 -13
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +3 -2
- package/dist/summary-snapshot.d.ts +1 -1
- 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/tokens.js +2 -2
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +5 -5
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-aPPzhnjT.d.ts → types-D63ZI--P.d.ts} +23 -2
- 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 +14 -14
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/access-boundary.ts +3 -0
- package/src/access-cli.test.ts +93 -0
- package/src/access-cli.ts +56 -2
- package/src/access-extraction-force-flush.ts +177 -0
- package/src/access-http-extraction-force-flush.test.ts +132 -0
- package/src/access-http-lcm-compaction.ts +99 -22
- package/src/access-http-lifecycle-flush.ts +81 -0
- package/src/access-http.test.ts +227 -0
- package/src/access-http.ts +33 -40
- package/src/access-mcp-output-schemas.ts +6 -0
- package/src/access-mcp.test.ts +40 -0
- package/src/access-mcp.ts +32 -1
- package/src/access-observe-helpers.ts +180 -0
- package/src/access-observe-write-surface.ts +78 -19
- package/src/access-operations-batch.ts +2 -1
- package/src/access-schema-pi.test.ts +17 -0
- package/src/access-schema.ts +28 -11
- package/src/access-service-helpers.ts +46 -0
- package/src/access-service-observe-lcm-parity.test.ts +781 -31
- package/src/access-service-observe-scope.test.ts +88 -0
- package/src/access-service.ts +46 -128
- package/src/access-surface-catalog.test.ts +32 -0
- package/src/access-surface-catalog.ts +2 -0
- package/src/buffer-session.test.ts +148 -0
- package/src/buffer-turn-helpers.ts +152 -0
- package/src/buffer.ts +126 -201
- package/src/connectors/index.ts +1 -1
- package/src/connectors/label.ts +18 -0
- package/src/correction/correction-access-wiring.ts +79 -27
- package/src/correction/correction-executor.test.ts +542 -1
- package/src/correction/correction-executor.ts +309 -89
- package/src/correction/correction-planner.test.ts +35 -1
- package/src/correction/correction-planner.ts +50 -3
- package/src/correction/correction-service.ts +12 -7
- package/src/correction/correction-storage-integration.test.ts +172 -1
- package/src/correction/passive-capture.test.ts +35 -0
- package/src/correction/passive-capture.ts +17 -3
- package/src/extraction-source-grounding.ts +55 -1
- package/src/extraction-timeout.test.ts +51 -0
- package/src/extraction.ts +64 -90
- package/src/local-llm-headers-timeout.test.ts +48 -0
- package/src/local-llm-helpers.ts +58 -0
- package/src/local-llm.ts +62 -58
- package/src/orchestration/extraction-run-helpers.ts +309 -0
- package/src/orchestration/extraction-run.test.ts +350 -7
- package/src/orchestration/extraction-run.ts +327 -250
- package/src/orchestration/recall-result-formatter.ts +21 -2
- package/src/orchestration/recall-search-pipeline.test.ts +34 -0
- package/src/orchestration/recall-search-pipeline.ts +9 -1
- package/src/orchestration/session-context.ts +193 -18
- package/src/orchestration/turn-ingestion.ts +61 -11
- package/src/orchestrator-flush.test.ts +511 -5
- package/src/orchestrator.ts +8 -6
- package/src/recall-source-connector-label.test.ts +300 -0
- package/src/types.ts +3 -3
- package/dist/chunk-3UXOZBHV.js +0 -20
- package/dist/chunk-3UXOZBHV.js.map +0 -1
- package/dist/chunk-4A6YGWQN.js.map +0 -1
- package/dist/chunk-4WKA6I65.js.map +0 -1
- package/dist/chunk-4Z4XNEWZ.js.map +0 -1
- package/dist/chunk-6FUPCJUL.js.map +0 -1
- package/dist/chunk-B6JDYXL7.js.map +0 -1
- package/dist/chunk-G5R3D5UP.js.map +0 -1
- package/dist/chunk-GBJ4RDFR.js.map +0 -1
- package/dist/chunk-HUHX2OCX.js.map +0 -1
- package/dist/chunk-IYZ5K7MU.js.map +0 -1
- package/dist/chunk-LGHKJABJ.js.map +0 -1
- package/dist/chunk-NHWB6HG2.js.map +0 -1
- package/dist/chunk-PHWUFPCO.js.map +0 -1
- package/dist/chunk-RPW2NOU6.js.map +0 -1
- package/dist/chunk-SPJXKAVF.js.map +0 -1
- package/dist/chunk-YNQBRLC5.js.map +0 -1
- package/dist/chunk-YTSNAUXN.js.map +0 -1
- /package/dist/{capsule-crypto-GWVG7LGC.js.map → access-extraction-force-flush.js.map} +0 -0
- /package/dist/{capsule-merge-5KKJQBWQ.js.map → capsule-merge-2H2IUTBT.js.map} +0 -0
- /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
- /package/dist/{chunk-I5NLEENJ.js.map → chunk-27HHNYSQ.js.map} +0 -0
- /package/dist/{chunk-2SA56WMI.js.map → chunk-2LTDWSR6.js.map} +0 -0
- /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-P5PXWTW7.js.map → chunk-2Q4JJ3FZ.js.map} +0 -0
- /package/dist/{chunk-H5CPS5JP.js.map → chunk-35IVNNRK.js.map} +0 -0
- /package/dist/{chunk-LBOD4U5B.js.map → chunk-3EQ2XB3W.js.map} +0 -0
- /package/dist/{chunk-2EUVEDF5.js.map → chunk-5WZVQRHV.js.map} +0 -0
- /package/dist/{chunk-ALSGMEJR.js.map → chunk-65ZPVYTA.js.map} +0 -0
- /package/dist/{chunk-GIBMDSJ2.js.map → chunk-6P7MTSU5.js.map} +0 -0
- /package/dist/{chunk-5VQJBH2G.js.map → chunk-6TAUHL33.js.map} +0 -0
- /package/dist/{chunk-WVO4G37W.js.map → chunk-7TEZUUGM.js.map} +0 -0
- /package/dist/{chunk-MJCGLM25.js.map → chunk-7VUAG236.js.map} +0 -0
- /package/dist/{chunk-CZRYLSSW.js.map → chunk-AJL6NNX6.js.map} +0 -0
- /package/dist/{chunk-66772WBP.js.map → chunk-AQWVJURR.js.map} +0 -0
- /package/dist/{chunk-RKNJBZ55.js.map → chunk-AU7Q3LSC.js.map} +0 -0
- /package/dist/{chunk-M3C2V3PV.js.map → chunk-CJDNT45S.js.map} +0 -0
- /package/dist/{chunk-D2ANTDGO.js.map → chunk-E6BMSH7U.js.map} +0 -0
- /package/dist/{chunk-CKMO4RDY.js.map → chunk-EMDLM3LW.js.map} +0 -0
- /package/dist/{chunk-RGIWINDN.js.map → chunk-FHBITMRY.js.map} +0 -0
- /package/dist/{chunk-FDAMS4PK.js.map → chunk-G2YQ57YO.js.map} +0 -0
- /package/dist/{chunk-6U7F52DE.js.map → chunk-HFQQWAMS.js.map} +0 -0
- /package/dist/{chunk-5W4ZLBEZ.js.map → chunk-HKPJPOW7.js.map} +0 -0
- /package/dist/{chunk-JCBWCYEJ.js.map → chunk-IGWFKW4B.js.map} +0 -0
- /package/dist/{chunk-AITCS2RC.js.map → chunk-IJ7HK452.js.map} +0 -0
- /package/dist/{chunk-D3LMYTBV.js.map → chunk-J7WZUL2K.js.map} +0 -0
- /package/dist/{chunk-5W7CTZ2E.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-Z54EM5YZ.js.map → chunk-MAXVH44E.js.map} +0 -0
- /package/dist/{chunk-WZFAPHIK.js.map → chunk-MU7ZHSZE.js.map} +0 -0
- /package/dist/{chunk-AZ5BTEKX.js.map → chunk-NQUF7XKR.js.map} +0 -0
- /package/dist/{chunk-W4FBGYGK.js.map → chunk-NRV4Y3PM.js.map} +0 -0
- /package/dist/{chunk-62U4J2GN.js.map → chunk-ODGOP7P2.js.map} +0 -0
- /package/dist/{chunk-QJAQNXWI.js.map → chunk-ONHRRJZM.js.map} +0 -0
- /package/dist/{chunk-ACXPX4AG.js.map → chunk-OPBTPRGY.js.map} +0 -0
- /package/dist/{chunk-XOZ4ALGB.js.map → chunk-QDTZ2HF7.js.map} +0 -0
- /package/dist/{chunk-ZPSVBSOF.js.map → chunk-QMWFQBIL.js.map} +0 -0
- /package/dist/{chunk-W5EG6LE3.js.map → chunk-THCPRMRF.js.map} +0 -0
- /package/dist/{chunk-VI2JQPNQ.js.map → chunk-U7QYBSQJ.js.map} +0 -0
- /package/dist/{chunk-TH2LSRMG.js.map → chunk-UORKJ34C.js.map} +0 -0
- /package/dist/{chunk-K5GB36ME.js.map → chunk-VMZ56EE3.js.map} +0 -0
- /package/dist/{chunk-RMMVQQA6.js.map → chunk-WDISJRMG.js.map} +0 -0
- /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-CVILPI77.js.map → chunk-XOQSEF7X.js.map} +0 -0
- /package/dist/{chunk-YTQNQ4KB.js.map → chunk-YX5LN6JR.js.map} +0 -0
- /package/dist/{chunk-IC6CBHCA.js.map → chunk-Z7XKUWYS.js.map} +0 -0
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
import path from "node:path";
|
|
24
|
+
import { throwIfAborted } from "../abort-error.js";
|
|
24
25
|
import { composeMemoryEnvelope, isMemoryCategory } from "../write-envelope.js";
|
|
25
26
|
import { log } from "../logger.js";
|
|
26
27
|
import { createHash } from "node:crypto";
|
|
@@ -352,23 +353,24 @@ function makeExecutorDeps(
|
|
|
352
353
|
opts: { biTemporalEnabled: boolean },
|
|
353
354
|
): ExecutorDeps {
|
|
354
355
|
return {
|
|
355
|
-
getMemory: async (namespace, memoryId) =>
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
356
|
+
getMemory: async (namespace, memoryId, abortSignal) =>
|
|
357
|
+
getExecutorMemory(wiring, namespace, memoryId, abortSignal),
|
|
358
|
+
writeReplacement: async (namespace, draft, abortSignal) =>
|
|
359
|
+
writeReplacementMemory(wiring, namespace, draft, abortSignal),
|
|
360
|
+
applyEdit: async (namespace, memoryId, patch, abortSignal) =>
|
|
361
|
+
applyEditMemory(wiring, namespace, memoryId, patch, abortSignal),
|
|
362
|
+
retireMemory: async (namespace, memoryId, retireOpts, abortSignal) =>
|
|
363
|
+
retireMemoryFn(wiring, namespace, memoryId, retireOpts, abortSignal),
|
|
364
|
+
rescopeMemory: async (namespace, memoryId, toNamespace, abortSignal) =>
|
|
365
|
+
rescopeMemoryFn(wiring, namespace, memoryId, toNamespace, abortSignal),
|
|
366
|
+
appendTombstone: async (namespace, input, abortSignal) =>
|
|
367
|
+
appendTombstoneFn(wiring, namespace, input, abortSignal),
|
|
368
|
+
registerRedactionRule: async (namespace, pattern, abortSignal) =>
|
|
369
|
+
registerRedactionRuleFn(wiring, namespace, pattern, abortSignal),
|
|
370
|
+
appendAuditRecord: async (namespace, record, abortSignal) =>
|
|
371
|
+
appendAuditRecordFn(wiring, namespace, record, abortSignal),
|
|
372
|
+
propagate: async (namespace, touchedMemoryIds, abortSignal) =>
|
|
373
|
+
propagateFn(wiring, namespace, touchedMemoryIds, abortSignal),
|
|
372
374
|
biTemporalEnabled: opts.biTemporalEnabled,
|
|
373
375
|
now: () => new Date(),
|
|
374
376
|
};
|
|
@@ -378,9 +380,13 @@ async function getExecutorMemory(
|
|
|
378
380
|
wiring: CorrectionAccessWiring,
|
|
379
381
|
namespace: string,
|
|
380
382
|
memoryId: string,
|
|
383
|
+
abortSignal?: AbortSignal,
|
|
381
384
|
): Promise<ExecutorMemory | null> {
|
|
385
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
382
386
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
387
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
383
388
|
const m = await storage.getMemoryById(memoryId);
|
|
389
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
384
390
|
if (!m) return null;
|
|
385
391
|
return toExecutorMemory(m);
|
|
386
392
|
}
|
|
@@ -399,8 +405,11 @@ async function writeReplacementMemory(
|
|
|
399
405
|
structuredAttributes?: Record<string, string>;
|
|
400
406
|
supersedes?: string;
|
|
401
407
|
},
|
|
408
|
+
abortSignal?: AbortSignal,
|
|
402
409
|
): Promise<string> {
|
|
410
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
403
411
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
412
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
404
413
|
// writeMemory is the single storage chokepoint — catalog/dedup/reindex fire
|
|
405
414
|
// here (rule 43). Tombstone blocking also fires here (#1579), so a
|
|
406
415
|
// resurrected fact lands as pending_review rather than silently overwriting.
|
|
@@ -433,6 +442,7 @@ async function writeReplacementMemory(
|
|
|
433
442
|
if (draftEnvelope.salvageNotes.length > 0) {
|
|
434
443
|
log.warn(`correction write salvaged invalid fields: ${draftEnvelope.salvageNotes.join("; ")}`);
|
|
435
444
|
}
|
|
445
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
436
446
|
const { id, tombstoneBlocked } = await storage.writeSealedMemory(draftEnvelope, {
|
|
437
447
|
...(draft.observedAt ? { observedAt: draft.observedAt } : {}),
|
|
438
448
|
...(draft.supersedes ? { supersedes: draft.supersedes } : {}),
|
|
@@ -455,9 +465,13 @@ async function applyEditMemory(
|
|
|
455
465
|
namespace: string,
|
|
456
466
|
memoryId: string,
|
|
457
467
|
patch: string,
|
|
468
|
+
abortSignal?: AbortSignal,
|
|
458
469
|
): Promise<string> {
|
|
470
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
459
471
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
472
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
460
473
|
const existing = await storage.getMemoryById(memoryId);
|
|
474
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
461
475
|
if (!existing) throw new CorrectionContractError(`memory not found for edit: ${memoryId}`);
|
|
462
476
|
// Apply the patch by overwriting content through the storage chokepoint.
|
|
463
477
|
// The StorageManager's writeMemoryFrontmatter snapshots the prior version
|
|
@@ -473,6 +487,7 @@ async function applyEditMemory(
|
|
|
473
487
|
existing.frontmatter.category === "fact"
|
|
474
488
|
? computeContentHash(sanitizeMemoryContent(patch).text)
|
|
475
489
|
: undefined;
|
|
490
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
476
491
|
await storage.writeMemoryFrontmatter(
|
|
477
492
|
{ ...existing, content: patch },
|
|
478
493
|
{
|
|
@@ -488,23 +503,20 @@ async function retireMemoryFn(
|
|
|
488
503
|
namespace: string,
|
|
489
504
|
memoryId: string,
|
|
490
505
|
opts: { status: "superseded" | "retracted"; supersededBy?: string; validUntil?: string },
|
|
506
|
+
abortSignal?: AbortSignal,
|
|
491
507
|
): Promise<void> {
|
|
508
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
492
509
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
510
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
493
511
|
const memory = await storage.getMemoryById(memoryId);
|
|
512
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
494
513
|
if (!memory) throw new CorrectionContractError(`memory not found for retire: ${memoryId}`);
|
|
495
|
-
// Map the correction-domain status to the storage-domain MemoryStatus.
|
|
496
|
-
// `retracted` (a correction concept) becomes `forgotten` — the soft-delete
|
|
497
|
-
// status that excludes the memory from recall/browse/attribution while
|
|
498
|
-
// keeping a page-version snapshot for reversibility (#686). `superseded`
|
|
499
|
-
// maps to itself.
|
|
500
514
|
const storageStatus: MemoryStatus = opts.status === "retracted" ? "forgotten" : "superseded";
|
|
501
|
-
|
|
502
|
-
// link the superseder. writeMemoryFrontmatter is the chokepoint.
|
|
515
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
503
516
|
await storage.writeMemoryFrontmatter(memory, {
|
|
504
517
|
status: storageStatus,
|
|
505
518
|
...(opts.supersededBy ? { supersededBy: opts.supersededBy } : {}),
|
|
506
519
|
...(opts.status === "superseded" ? { supersededAt: new Date().toISOString() } : {}),
|
|
507
|
-
// validUntil is the bi-temporal end; absent when the gate is off.
|
|
508
520
|
...(opts.validUntil ? { invalid_at: opts.validUntil } : {}),
|
|
509
521
|
});
|
|
510
522
|
}
|
|
@@ -514,11 +526,15 @@ async function rescopeMemoryFn(
|
|
|
514
526
|
namespace: string,
|
|
515
527
|
memoryId: string,
|
|
516
528
|
toNamespace: string,
|
|
529
|
+
abortSignal?: AbortSignal,
|
|
517
530
|
): Promise<string> {
|
|
518
531
|
// The destination namespace is re-authorized by the service before the
|
|
519
532
|
// executor runs; here we perform the move atomically (write-then-unlink).
|
|
533
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
520
534
|
const sourceStorage = await wiring.orchestrator.getStorage(namespace);
|
|
535
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
521
536
|
const memory = await sourceStorage.getMemoryById(memoryId);
|
|
537
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
522
538
|
if (!memory) throw new CorrectionContractError(`memory not found for rescope: ${memoryId}`);
|
|
523
539
|
if (memory.frontmatter.status && memory.frontmatter.status !== "active") {
|
|
524
540
|
// Don't copy a stale source: rescoping a superseded/retracted/archived
|
|
@@ -527,7 +543,9 @@ async function rescopeMemoryFn(
|
|
|
527
543
|
`cannot rescope memory ${memoryId}: source is ${memory.frontmatter.status}, not active`,
|
|
528
544
|
);
|
|
529
545
|
}
|
|
546
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
530
547
|
const destStorage = await wiring.orchestrator.getStorage(toNamespace);
|
|
548
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
531
549
|
const fm = memory.frontmatter;
|
|
532
550
|
// Strip the `[Attributes: …]` suffix writeMemory appended to the source body
|
|
533
551
|
// (review thread Of0p6): we forward `structuredAttributes` separately, so
|
|
@@ -557,6 +575,7 @@ async function rescopeMemoryFn(
|
|
|
557
575
|
if (rescopeEnvelope.salvageNotes.length > 0) {
|
|
558
576
|
log.warn(`rescope write salvaged invalid fields: ${rescopeEnvelope.salvageNotes.join("; ")}`);
|
|
559
577
|
}
|
|
578
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
560
579
|
const { id: destId, tombstoneBlocked: destBlocked } = await destStorage.writeSealedMemory(rescopeEnvelope, {
|
|
561
580
|
...(fm.observedAt ? { observedAt: fm.observedAt } : {}),
|
|
562
581
|
...(fm.memoryKind ? { memoryKind: fm.memoryKind } : {}),
|
|
@@ -575,6 +594,8 @@ async function rescopeMemoryFn(
|
|
|
575
594
|
// fails AFTER the destination write succeeded, compensate by archiving the
|
|
576
595
|
// destination too so no duplicate ACTIVE fact remains, then re-throw so the
|
|
577
596
|
// executor records the action as failed (review: rescope-duplicates-on-fail).
|
|
597
|
+
// Once the destination write resolves, cancellation cannot interrupt the
|
|
598
|
+
// source retirement or leave both memories active.
|
|
578
599
|
try {
|
|
579
600
|
await sourceStorage.writeMemoryFrontmatter(memory, {
|
|
580
601
|
status: "archived",
|
|
@@ -609,8 +630,11 @@ async function appendTombstoneFn(
|
|
|
609
630
|
supersessionKeys?: string[];
|
|
610
631
|
contentHash?: string;
|
|
611
632
|
},
|
|
633
|
+
abortSignal?: AbortSignal,
|
|
612
634
|
): Promise<string | null> {
|
|
635
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
613
636
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
637
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
614
638
|
// storage.appendTombstone returns null for TWO reasons: tombstones disabled
|
|
615
639
|
// (off = pre-feature behavior) OR a swallowed store error (it catches I/O
|
|
616
640
|
// failures and returns null — review thread OgIqp). The executor writes the
|
|
@@ -637,7 +661,13 @@ async function appendTombstoneFn(
|
|
|
637
661
|
: [undefined];
|
|
638
662
|
const writtenIds: string[] = [];
|
|
639
663
|
let firstId: string | null = null;
|
|
664
|
+
let committed = false;
|
|
640
665
|
for (const key of keys) {
|
|
666
|
+
// Once one tombstone is durable, finish the complete tombstone set even
|
|
667
|
+
// if the caller aborts. The executor must retire the source after the
|
|
668
|
+
// tombstone commit or compensate it; returning an abort here would leave
|
|
669
|
+
// an active source behind a committed resurrection block.
|
|
670
|
+
if (!committed) throwIfAborted(abortSignal, "correction apply aborted");
|
|
641
671
|
const result = await storage.appendTombstone({
|
|
642
672
|
reason: input.reason,
|
|
643
673
|
createdBy: "user_correction",
|
|
@@ -660,7 +690,10 @@ async function appendTombstoneFn(
|
|
|
660
690
|
);
|
|
661
691
|
}
|
|
662
692
|
if (firstId === null) firstId = result;
|
|
663
|
-
if (result)
|
|
693
|
+
if (result) {
|
|
694
|
+
writtenIds.push(result);
|
|
695
|
+
committed = true;
|
|
696
|
+
}
|
|
664
697
|
}
|
|
665
698
|
return firstId;
|
|
666
699
|
}
|
|
@@ -669,12 +702,16 @@ async function registerRedactionRuleFn(
|
|
|
669
702
|
wiring: CorrectionAccessWiring,
|
|
670
703
|
namespace: string,
|
|
671
704
|
pattern: string,
|
|
705
|
+
abortSignal?: AbortSignal,
|
|
672
706
|
): Promise<void> {
|
|
673
707
|
// Persist the redaction rule under state/ so extraction consults it the
|
|
674
708
|
// same way tombstones are consulted (route through the same chokepoint).
|
|
709
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
675
710
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
711
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
676
712
|
const dir = path.join(storage.dir, "state", "corrections", "redaction-rules");
|
|
677
713
|
await mkdir(dir, { recursive: true });
|
|
714
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
678
715
|
// Idempotent: filename is a slug + short hash of the full pattern so
|
|
679
716
|
// re-registering the same pattern overwrites rather than duplicates, while
|
|
680
717
|
// distinct patterns that slug identically (e.g. "abc+def" vs "abc.def" →
|
|
@@ -683,11 +720,13 @@ async function registerRedactionRuleFn(
|
|
|
683
720
|
const slugBase = pattern.replace(/[^a-zA-Z0-9]+/g, "-").slice(0, 48) || "rule";
|
|
684
721
|
const patternHash = createHash("sha256").update(pattern).digest("hex").slice(0, 16);
|
|
685
722
|
const slug = `${slugBase}-${patternHash}`;
|
|
723
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
686
724
|
await writeFile(
|
|
687
725
|
path.join(dir, `${slug}.json`),
|
|
688
726
|
`${JSON.stringify({ pattern, namespace, createdAt: new Date().toISOString() })}\n`,
|
|
689
727
|
"utf-8",
|
|
690
728
|
);
|
|
729
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
691
730
|
}
|
|
692
731
|
|
|
693
732
|
async function appendAuditRecordFn(
|
|
@@ -699,13 +738,17 @@ async function appendAuditRecordFn(
|
|
|
699
738
|
outcome: CorrectionOutcome;
|
|
700
739
|
requestText: string;
|
|
701
740
|
},
|
|
741
|
+
abortSignal?: AbortSignal,
|
|
702
742
|
): Promise<string> {
|
|
743
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
703
744
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
745
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
704
746
|
// Corrections are themselves memories, searchable and namespaced (issue
|
|
705
747
|
// #1580 design §4). Write a correction-category memory capturing the
|
|
706
748
|
// plan + outcome as the audit trail.
|
|
707
749
|
// Sealed-envelope write (issue #1989 PR4): system-built audit body —
|
|
708
750
|
// strict compose; an invalid audit record is a code bug.
|
|
751
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
709
752
|
const { id: id } = await storage.writeSealedMemory(
|
|
710
753
|
composeMemoryEnvelope(
|
|
711
754
|
{
|
|
@@ -718,6 +761,7 @@ async function appendAuditRecordFn(
|
|
|
718
761
|
),
|
|
719
762
|
{},
|
|
720
763
|
);
|
|
764
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
721
765
|
return id;
|
|
722
766
|
}
|
|
723
767
|
|
|
@@ -760,22 +804,27 @@ async function propagateFn(
|
|
|
760
804
|
wiring: CorrectionAccessWiring,
|
|
761
805
|
namespace: string,
|
|
762
806
|
touchedMemoryIds: readonly string[],
|
|
807
|
+
abortSignal?: AbortSignal,
|
|
763
808
|
): Promise<void> {
|
|
764
809
|
// Best-effort post-write propagation. The orchestrator's indexPersistedMemory
|
|
765
810
|
// fires the QMD reindex for a touched file (checklist §31). A failure here
|
|
766
811
|
// is non-fatal — the executor records it as a warning, never a failed action.
|
|
767
812
|
for (const id of touchedMemoryIds) {
|
|
813
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
768
814
|
try {
|
|
769
815
|
// indexPersistedMemory is keyed by the namespace's storage, NOT the
|
|
770
816
|
// default namespace (review thread: propagation-hardcodes-default-ns).
|
|
771
817
|
const storage = await wiring.orchestrator.getStorage(namespace);
|
|
818
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
772
819
|
const orchestrator = wiring.orchestrator as unknown as {
|
|
773
820
|
indexPersistedMemory?(storage: unknown, memoryId: string): Promise<void>;
|
|
774
821
|
};
|
|
775
822
|
if (typeof orchestrator.indexPersistedMemory === "function") {
|
|
776
823
|
await orchestrator.indexPersistedMemory(storage, id);
|
|
824
|
+
throwIfAborted(abortSignal, "correction apply aborted");
|
|
777
825
|
}
|
|
778
|
-
} catch {
|
|
826
|
+
} catch (err) {
|
|
827
|
+
if (abortSignal?.aborted) throw err;
|
|
779
828
|
// Swallow — propagation is best-effort.
|
|
780
829
|
}
|
|
781
830
|
}
|
|
@@ -1032,4 +1081,7 @@ export {
|
|
|
1032
1081
|
isEligibleCorrectionCandidate,
|
|
1033
1082
|
applyEditMemory,
|
|
1034
1083
|
appendTombstoneFn,
|
|
1084
|
+
retireMemoryFn,
|
|
1085
|
+
rescopeMemoryFn,
|
|
1086
|
+
writeReplacementMemory,
|
|
1035
1087
|
};
|