@remnic/core 9.48.1 → 9.49.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/abstraction-nodes.d.ts +12 -1
- package/dist/abstraction-nodes.js +9 -2
- package/dist/access-admin-ops-surface.d.ts +11 -10
- package/dist/access-admin-ops-surface.js +46 -45
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +11 -10
- package/dist/access-authorization-probe.js +47 -46
- package/dist/access-boundary.d.ts +11 -10
- package/dist/access-boundary.js +46 -45
- package/dist/access-cli.js +127 -121
- 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 +11 -10
- package/dist/access-extraction-force-flush.js +46 -45
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-lcm-compaction.d.ts +11 -10
- package/dist/access-http-lifecycle-flush.d.ts +11 -10
- package/dist/access-http-offline-stream.d.ts +11 -10
- package/dist/access-http-query.js +46 -45
- package/dist/access-http.d.ts +11 -10
- package/dist/access-http.js +57 -56
- package/dist/access-identity-continuity-surface.d.ts +9 -8
- package/dist/access-identity-continuity-surface.js +46 -45
- package/dist/access-lcm-surface.d.ts +11 -10
- package/dist/access-lcm-surface.js +46 -45
- package/dist/access-mcp.d.ts +11 -10
- package/dist/access-mcp.js +52 -51
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight--H6HwN85.d.ts → access-namespace-preflight-DuDU301-.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +46 -45
- package/dist/access-observe-write-surface.d.ts +11 -10
- package/dist/access-observe-write-surface.js +46 -45
- package/dist/access-offline-manifest.d.ts +9 -8
- package/dist/access-offline-manifest.js +3 -3
- package/dist/access-operations-batch.js +48 -47
- package/dist/access-operations.d.ts +14 -13
- package/dist/access-operations.js +51 -50
- package/dist/access-recall-concurrency.d.ts +11 -10
- package/dist/access-recall-concurrency.js +46 -45
- package/dist/access-recall-response.d.ts +11 -10
- package/dist/access-recall-response.js +46 -45
- package/dist/access-recall-surface.d.ts +11 -10
- package/dist/access-recall-surface.js +46 -45
- package/dist/access-schema.d.ts +105 -105
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-andNjwfD.d.ts → access-service--_3T_v23.d.ts} +7 -7
- package/dist/access-service-helpers.d.ts +11 -10
- package/dist/access-service.d.ts +11 -10
- package/dist/access-service.js +46 -45
- package/dist/access-surface-catalog.d.ts +11 -10
- package/dist/access-wearables-meetings-surface.d.ts +4 -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 +3 -2
- 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 +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-7O6RP2RT.js → auto-sync-QFQGOEO2.js} +4 -4
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +9 -8
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +15 -14
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +1 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/buffer.js +4 -4
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{capsule-merge-Q6AR3XL7.js → capsule-merge-KXTRZ23Z.js} +6 -6
- package/dist/{catalog-Iwbk9h5E.d.ts → catalog-DjUmUIal.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +3 -3
- package/dist/causal-chain.js +3 -3
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +19 -18
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/causal-trajectory.d.ts +51 -2
- package/dist/causal-trajectory.js +8 -2
- package/dist/{chunk-PLCZD3LG.js → chunk-24BKGKGO.js} +91 -45
- package/dist/chunk-24BKGKGO.js.map +1 -0
- package/dist/{chunk-ICP53SKG.js → chunk-2HIJHXB3.js} +2 -2
- package/dist/{chunk-LZGCJSQR.js → chunk-3LD4N2TF.js} +151 -37
- package/dist/chunk-3LD4N2TF.js.map +1 -0
- package/dist/{chunk-FJ2ND6CZ.js → chunk-47J4EDGR.js} +2 -2
- package/dist/{chunk-S55OAS5P.js → chunk-4EABKPZS.js} +4 -4
- package/dist/{chunk-GD7UPIBG.js → chunk-4JWJMRPJ.js} +2 -2
- package/dist/{chunk-3NDN5P55.js → chunk-4S3ECH3U.js} +2 -2
- package/dist/chunk-5GINB5LC.js +13 -0
- package/dist/chunk-5GINB5LC.js.map +1 -0
- package/dist/{chunk-CGASUJVP.js → chunk-5V6IXHPI.js} +4 -4
- package/dist/{chunk-A4JMGKCD.js → chunk-5XCN4XBU.js} +4 -4
- package/dist/{chunk-2RPJ4NEE.js → chunk-64BHFFKZ.js} +2 -2
- package/dist/{chunk-FQC3DHH2.js → chunk-66SE3BNH.js} +2 -2
- package/dist/{chunk-TERNBNJB.js → chunk-6FC3IZ26.js} +2 -2
- package/dist/{chunk-53AJILXF.js → chunk-6XGEBQ3R.js} +4 -4
- package/dist/{chunk-IP3DHDU2.js → chunk-7BLWBSRL.js} +3 -3
- package/dist/{chunk-A2TFK5PG.js → chunk-7NDM2PNK.js} +3 -3
- package/dist/{chunk-HRMEYQRO.js → chunk-7VWZ4LRW.js} +2 -2
- package/dist/{chunk-RN53QBM4.js → chunk-A4QMKFFO.js} +5 -1
- package/dist/chunk-A4QMKFFO.js.map +1 -0
- package/dist/chunk-ACPCA4NO.js +321 -0
- package/dist/chunk-ACPCA4NO.js.map +1 -0
- package/dist/chunk-AMTEYNYK.js +72 -0
- package/dist/chunk-AMTEYNYK.js.map +1 -0
- package/dist/{chunk-R6YJI3HE.js → chunk-AW4QUFQF.js} +1 -1
- package/dist/{chunk-P65YJEEL.js → chunk-AXFWMRKI.js} +2 -2
- package/dist/{chunk-WG5HSQ4P.js → chunk-BAKXNQ3C.js} +2 -2
- package/dist/{chunk-NM2WP3B7.js → chunk-BJYET5TX.js} +2 -2
- package/dist/{chunk-HLKPRWF4.js → chunk-DATDLJAO.js} +6 -6
- package/dist/chunk-DJUKBGAD.js +260 -0
- package/dist/chunk-DJUKBGAD.js.map +1 -0
- package/dist/{chunk-DX3XRGLH.js → chunk-DQTCGVFK.js} +2 -2
- package/dist/{chunk-HIDEBEAN.js → chunk-E633OXMH.js} +11 -11
- package/dist/{chunk-J7T4MX7P.js → chunk-EEAMSNSG.js} +12 -1
- package/dist/chunk-EEAMSNSG.js.map +1 -0
- package/dist/{chunk-EZNXW27Q.js → chunk-ELQCS47S.js} +4 -4
- package/dist/{chunk-HAYSYUAB.js → chunk-EURCX6PS.js} +2 -2
- package/dist/{chunk-RSPSHRZA.js → chunk-FV7YQTN3.js} +2 -2
- package/dist/chunk-G73MCJKL.js +20 -0
- package/dist/chunk-G73MCJKL.js.map +1 -0
- package/dist/{chunk-GWHPQOUC.js → chunk-GGBSF2X7.js} +2 -2
- package/dist/{chunk-SYUBB3WM.js → chunk-GKEYXXKX.js} +2 -2
- package/dist/{chunk-PELT6ADC.js → chunk-GSEPRIZC.js} +3 -3
- package/dist/{chunk-UTVZKHJK.js → chunk-GUKBW4HL.js} +2 -2
- package/dist/chunk-GXSOUIA4.js +293 -0
- package/dist/chunk-GXSOUIA4.js.map +1 -0
- package/dist/{chunk-2F6NP3NT.js → chunk-HDQUQBPW.js} +2 -2
- package/dist/{chunk-6HMYUWXR.js → chunk-HTP6XRUI.js} +2 -2
- package/dist/{chunk-UYUYZ4WY.js → chunk-IARXXZU4.js} +2 -2
- package/dist/{chunk-MNB5RMAY.js → chunk-IIFFC3RL.js} +2 -2
- package/dist/{chunk-KQAFEZQX.js → chunk-IPLYGWQF.js} +5 -5
- package/dist/{chunk-NZBZ7IS2.js → chunk-JDCQK3C5.js} +2 -2
- package/dist/{chunk-ANCC3JJH.js → chunk-JI62YGPI.js} +2 -2
- package/dist/{chunk-LULR4IUW.js → chunk-KATEWTQJ.js} +2 -2
- package/dist/{chunk-IJ7HK452.js → chunk-KMAP7SNQ.js} +2 -2
- package/dist/{chunk-PRVJH7CY.js → chunk-KMWYZTIE.js} +2 -2
- package/dist/{chunk-JGSKJHF7.js → chunk-KQS72GCR.js} +2 -2
- package/dist/{chunk-3S63QIFQ.js → chunk-LAQ33B5D.js} +1 -1
- package/dist/chunk-LAQ33B5D.js.map +1 -0
- package/dist/chunk-LNTUXKBT.js +224 -0
- package/dist/chunk-LNTUXKBT.js.map +1 -0
- package/dist/{chunk-FMCHFSZF.js → chunk-LQKXVQZR.js} +12 -12
- package/dist/{chunk-M4DMO67I.js → chunk-LTOAJXZB.js} +4 -4
- package/dist/{chunk-NIS256NW.js → chunk-LYMNZZIM.js} +2 -2
- package/dist/{chunk-W4FBGYGK.js → chunk-M4MP34AQ.js} +189 -5
- package/dist/chunk-M4MP34AQ.js.map +1 -0
- package/dist/{chunk-3PY7VHV7.js → chunk-MCA2X4WH.js} +2 -2
- package/dist/{chunk-S5NZBKKQ.js → chunk-N3CXAYPJ.js} +3 -3
- package/dist/{chunk-WQIHRA5F.js → chunk-N3LL5NEU.js} +2 -2
- package/dist/{chunk-G2RBWVFQ.js → chunk-NKL25FCF.js} +2 -2
- package/dist/{chunk-LMDRGRJ2.js → chunk-NOB2T2FC.js} +2 -2
- package/dist/{chunk-P2OTGMTR.js → chunk-NSGU76YO.js} +2 -2
- package/dist/{chunk-D5NGH2EW.js → chunk-O76MWTVS.js} +2 -2
- package/dist/{chunk-WZFAPHIK.js → chunk-OIOZ6MOP.js} +3 -3
- package/dist/{chunk-DNHVPZOD.js → chunk-P26YHAQH.js} +201 -1
- package/dist/chunk-P26YHAQH.js.map +1 -0
- package/dist/{chunk-UMOO7IY7.js → chunk-P2KBDJJ6.js} +2 -2
- package/dist/{chunk-KVJRXN2E.js → chunk-P4QOYG52.js} +125 -13
- package/dist/chunk-P4QOYG52.js.map +1 -0
- package/dist/chunk-P77QX3ID.js +332 -0
- package/dist/chunk-P77QX3ID.js.map +1 -0
- package/dist/{chunk-SXWHN7GC.js → chunk-PDEKQWDV.js} +2 -2
- package/dist/{chunk-2EJNXE53.js → chunk-PLCHU56K.js} +3 -3
- package/dist/{chunk-45OTV7FZ.js → chunk-PWIMF7LP.js} +38 -38
- package/dist/{chunk-7YKVM5H3.js → chunk-PWLB4TRK.js} +3 -3
- package/dist/{chunk-RVYVMQK4.js → chunk-QSYL5CXK.js} +3 -3
- package/dist/{chunk-NXUJRXSF.js → chunk-QWLW3VQH.js} +2 -2
- package/dist/chunk-RBOJCG4T.js +77 -0
- package/dist/chunk-RBOJCG4T.js.map +1 -0
- package/dist/{chunk-2P3GQVM2.js → chunk-RBPH3GZV.js} +418 -105
- package/dist/chunk-RBPH3GZV.js.map +1 -0
- package/dist/{chunk-JBPKEARU.js → chunk-RKNJBZ55.js} +4 -4
- package/dist/{chunk-QCECHYZL.js → chunk-RVO6TCTU.js} +6 -6
- package/dist/{chunk-5L7PTX2Q.js → chunk-S2SJEOTM.js} +2 -2
- package/dist/{chunk-52I3YZZ6.js → chunk-S75UQ3T3.js} +3 -3
- package/dist/{chunk-LXOM6IQU.js → chunk-SEF4IOFE.js} +2 -2
- package/dist/{chunk-DUEEQCTT.js → chunk-SHYIMIX5.js} +2 -2
- package/dist/{chunk-KSGEGHYA.js → chunk-T35UJI5R.js} +78 -74
- package/dist/chunk-T35UJI5R.js.map +1 -0
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-3JUYWPFJ.js → chunk-VFS3MK5F.js} +2 -2
- package/dist/chunk-VUDMT5CP.js +86 -0
- package/dist/chunk-VUDMT5CP.js.map +1 -0
- package/dist/{chunk-CMQZNEIF.js → chunk-WFLBP5GC.js} +8 -1
- package/dist/chunk-WFLBP5GC.js.map +1 -0
- package/dist/{chunk-WOEVJKKQ.js → chunk-WPZX7MEA.js} +4 -4
- package/dist/{chunk-ZRWB5D4H.js → chunk-WT6UL3UA.js} +2 -2
- package/dist/{chunk-MC6XO7T4.js → chunk-YLBE6PLR.js} +2 -2
- package/dist/{chunk-GF22HWS2.js → chunk-Z54EM5YZ.js} +4 -4
- package/dist/{chunk-GVX3NAUU.js → chunk-ZDAYWJV6.js} +2 -2
- package/dist/{chunk-4WBGZYZZ.js → chunk-ZJIFYUJI.js} +7 -7
- package/dist/chunk-ZJIFYUJI.js.map +1 -0
- package/dist/{chunk-JYPO7L3G.js → chunk-ZN4EYMKJ.js} +2 -2
- package/dist/{cli-p_WmVo2h.d.ts → cli-BLNmNEMT.d.ts} +16 -14
- package/dist/cli.d.ts +14 -13
- package/dist/cli.js +90 -87
- package/dist/coding/pre-action-gate.d.ts +66 -0
- package/dist/coding/pre-action-gate.js +22 -0
- package/dist/commitment-ledger.js +2 -2
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +16 -15
- 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 +3 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +15 -14
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +15 -14
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-provenance-check.js +6 -6
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/consolidation-undo.js +5 -5
- package/dist/contradiction/index.d.ts +3 -2
- package/dist/contradiction/index.js +3 -3
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +3 -2
- package/dist/convergence-refresh.js +18 -17
- 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-read-cancellation.d.ts +38 -0
- package/dist/corpus-read-cancellation.js +9 -0
- package/dist/corpus-read-cancellation.js.map +1 -0
- package/dist/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +21 -20
- package/dist/cue-anchors.d.ts +19 -1
- package/dist/cue-anchors.js +10 -2
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +10 -0
- package/dist/dependency-propagation-config.js +10 -0
- package/dist/dependency-propagation-config.js.map +1 -0
- package/dist/deterministic-order.d.ts +4 -0
- package/dist/deterministic-order.js +10 -0
- package/dist/deterministic-order.js.map +1 -0
- 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 +3 -2
- package/dist/entity-retrieval.js +15 -14
- package/dist/entity-schema.d.ts +1 -1
- package/dist/evals.js +2 -2
- package/dist/explicit-capture.d.ts +9 -8
- package/dist/explicit-capture.js +6 -6
- package/dist/external-wiki-access.d.ts +11 -10
- package/dist/external-wiki-access.js +47 -46
- 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 +11 -10
- 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-normalization.d.ts +14 -0
- package/dist/extraction-normalization.js +22 -0
- package/dist/extraction-normalization.js.map +1 -0
- package/dist/extraction-prompt.d.ts +4 -3
- package/dist/extraction-prompt.js +3 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction.d.ts +18 -1
- package/dist/extraction.js +24 -21
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/{first-start-migration-ZSHEFEI3.js → first-start-migration-626C5554.js} +5 -5
- package/dist/{forget-DNAJ66ZD.js → forget-GJ42LCBW.js} +2 -2
- 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/harmonic-construction.d.ts +43 -0
- package/dist/harmonic-construction.js +26 -0
- package/dist/harmonic-construction.js.map +1 -0
- package/dist/harmonic-retrieval.d.ts +1 -0
- package/dist/harmonic-retrieval.js +10 -4
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +47 -3
- package/dist/in-flight-reads.js +5 -3
- package/dist/index.d.ts +699 -696
- package/dist/index.js +197 -150
- package/dist/intent.d.ts +1 -1
- package/dist/json-store.d.ts +15 -1
- package/dist/json-store.js +11 -3
- 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.d.ts +1 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/archive-observations.js +2 -2
- package/dist/maintenance/atomic-file.d.ts +5 -0
- package/dist/maintenance/atomic-file.js +12 -0
- package/dist/maintenance/atomic-file.js.map +1 -0
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +15 -14
- package/dist/maintenance/migrate-observations.js +3 -3
- package/dist/maintenance/observation-ledger-utils.d.ts +1 -1
- package/dist/maintenance/observation-ledger-utils.js +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +16 -15
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +17 -16
- package/dist/maintenance/rebuild-observations.js +3 -3
- package/dist/{maintenance-BfcuwfJS.d.ts → maintenance-DKbKZi3u.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +11 -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-snapshot.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +4 -3
- package/dist/namespaces/migrate.js +20 -19
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +4 -4
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +15 -14
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/objective-state-writers.js +3 -3
- package/dist/objective-state.js +2 -2
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/offline-sync-impression-drain.js +2 -2
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +22 -21
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +4 -3
- package/dist/operator-toolkit.js +31 -29
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +21 -20
- package/dist/{orchestrator-B7nLo4z1.d.ts → orchestrator-BRwD7ceU.d.ts} +7 -7
- package/dist/orchestrator.d.ts +9 -8
- package/dist/orchestrator.js +127 -121
- package/dist/page-versioning.js +5 -5
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-1h2GpiHP.d.ts → pipeline-DC-1C9T8.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-UdwoF71D.d.ts → qmd-DdeCEZdb.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-state.js +2 -2
- 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/relevance.js +2 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/replica-divergence.d.ts +1 -1
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/{resolution-3K27T4VO.js → resolution-MDPNOEG6.js} +4 -4
- package/dist/resolution-MDPNOEG6.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +8 -7
- 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/salvage-envelope.js +3 -3
- package/dist/schemas.d.ts +213 -116
- package/dist/schemas.js +1 -1
- package/dist/{scope-profiles-APjhSe-w.d.ts → scope-profiles-BXVq4Jv0.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 +3 -3
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +3 -3
- 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-CrySDbk3.d.ts → semantic-consolidation-CGYxfa8F.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +16 -15
- package/dist/semantic-rule-promotion.js +15 -14
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +15 -14
- package/dist/{service-B5W5IYCx.d.ts → service-CBDBQFCN.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 +11 -11
- package/dist/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +19 -18
- package/dist/{storage-COL907QF.d.ts → storage-V--MQi7w.d.ts} +5 -4
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +14 -13
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.d.ts +14 -2
- package/dist/temporal-supersession.js +1 -1
- 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 +3 -2
- package/dist/tier-routing.d.ts +1 -1
- package/dist/{tier-stats-OPTSBNRH.js → tier-stats-2JCZYEF7.js} +5 -5
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -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/capsule-import.js +6 -6
- package/dist/transfer/types.d.ts +66 -66
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/trust-zones.js +2 -2
- package/dist/{types-D_Au9qJO.d.ts → types-D_a6Sqjz.d.ts} +25 -8
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-learner.js +3 -3
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/utility-runtime.js +4 -4
- package/dist/utility-telemetry.js +2 -2
- package/dist/verified-recall.js +15 -14
- package/dist/work-product-ledger.js +2 -2
- package/dist/write-envelope.d.ts +1 -1
- package/dist/write-envelope.js +2 -2
- package/package.json +32 -2
- package/src/abstraction-nodes.ts +182 -4
- package/src/causal-trajectory.ts +258 -3
- package/src/cli/harmonic-search.ts +23 -0
- package/src/cli/research-status-commands.ts +2 -1
- package/src/cli.ts +1 -24
- package/src/coding/pre-action-gate.test.ts +516 -0
- package/src/coding/pre-action-gate.ts +320 -0
- package/src/config.test.ts +85 -0
- package/src/config.ts +2 -0
- package/src/corpus-read-cancellation.ts +42 -0
- package/src/cue-anchors.test.ts +90 -0
- package/src/cue-anchors.ts +264 -11
- package/src/dependency-frontmatter.test.ts +83 -0
- package/src/dependency-propagation-config.ts +94 -0
- package/src/deterministic-order.ts +14 -0
- package/src/entity-retrieval.ts +4 -4
- package/src/extraction-normalization.ts +71 -0
- package/src/extraction-prompt.ts +45 -11
- package/src/extraction.ts +48 -32
- package/src/faithfulness-graph-guard.test.ts +27 -0
- package/src/harmonic-construction.test.ts +1799 -0
- package/src/harmonic-construction.ts +367 -0
- package/src/harmonic-retrieval.ts +166 -25
- package/src/in-flight-reads.ts +119 -6
- package/src/index.ts +4 -5
- package/src/json-store.ts +354 -12
- package/src/orchestration/consolidation-run.ts +192 -0
- package/src/orchestration/contradiction-linking-coordinator.ts +35 -1
- package/src/orchestration/dependency-propagation-triggers.test.ts +286 -0
- package/src/orchestration/dependency-propagation.test.ts +487 -0
- package/src/orchestration/dependency-propagation.ts +263 -0
- package/src/orchestration/dependency-revalidation.ts +173 -0
- package/src/orchestration/extraction-persist-deps.ts +93 -0
- package/src/orchestration/extraction-persist.ts +101 -94
- package/src/orchestration/harmonic-construction-persist.ts +86 -0
- package/src/orchestration/namespace-read-fanout.ts +13 -2
- package/src/orchestration/recall-internal-deps.ts +2 -0
- package/src/orchestration/recall-internal.ts +5 -1
- package/src/orchestration/recall-search-pipeline.ts +2 -0
- package/src/orchestration/recall-search-prefilter.ts +5 -1
- package/src/orchestrator.ts +7 -6
- package/src/schemas.ts +15 -0
- package/src/storage/entity-store.ts +9 -2
- package/src/storage/memory-read-store.ts +33 -4
- package/src/storage-contract/corpus-read-cancellation.test.ts +408 -0
- package/src/storage.ts +75 -19
- package/src/temporal-supersession.ts +29 -1
- package/src/testing/orchestrator-lite.ts +27 -8
- package/src/testing/subjects/extraction-lifecycle.test.ts +91 -50
- package/src/types.ts +22 -7
- package/dist/chunk-2P3GQVM2.js.map +0 -1
- package/dist/chunk-3S63QIFQ.js.map +0 -1
- package/dist/chunk-4WBGZYZZ.js.map +0 -1
- package/dist/chunk-CMQZNEIF.js.map +0 -1
- package/dist/chunk-DNHVPZOD.js.map +0 -1
- package/dist/chunk-FZZ2QTJI.js +0 -111
- package/dist/chunk-FZZ2QTJI.js.map +0 -1
- package/dist/chunk-J7T4MX7P.js.map +0 -1
- package/dist/chunk-KSGEGHYA.js.map +0 -1
- package/dist/chunk-KVJRXN2E.js.map +0 -1
- package/dist/chunk-LPSF4OQH.js +0 -47
- package/dist/chunk-LPSF4OQH.js.map +0 -1
- package/dist/chunk-LZGCJSQR.js.map +0 -1
- package/dist/chunk-OADWQ5CR.js +0 -115
- package/dist/chunk-OADWQ5CR.js.map +0 -1
- package/dist/chunk-PDJTHRAW.js +0 -36
- package/dist/chunk-PDJTHRAW.js.map +0 -1
- package/dist/chunk-PLCZD3LG.js.map +0 -1
- package/dist/chunk-RN53QBM4.js.map +0 -1
- package/dist/chunk-W4FBGYGK.js.map +0 -1
- /package/dist/{auto-sync-7O6RP2RT.js.map → auto-sync-QFQGOEO2.js.map} +0 -0
- /package/dist/{capsule-merge-Q6AR3XL7.js.map → capsule-merge-KXTRZ23Z.js.map} +0 -0
- /package/dist/{chunk-ICP53SKG.js.map → chunk-2HIJHXB3.js.map} +0 -0
- /package/dist/{chunk-FJ2ND6CZ.js.map → chunk-47J4EDGR.js.map} +0 -0
- /package/dist/{chunk-S55OAS5P.js.map → chunk-4EABKPZS.js.map} +0 -0
- /package/dist/{chunk-GD7UPIBG.js.map → chunk-4JWJMRPJ.js.map} +0 -0
- /package/dist/{chunk-3NDN5P55.js.map → chunk-4S3ECH3U.js.map} +0 -0
- /package/dist/{chunk-CGASUJVP.js.map → chunk-5V6IXHPI.js.map} +0 -0
- /package/dist/{chunk-A4JMGKCD.js.map → chunk-5XCN4XBU.js.map} +0 -0
- /package/dist/{chunk-2RPJ4NEE.js.map → chunk-64BHFFKZ.js.map} +0 -0
- /package/dist/{chunk-FQC3DHH2.js.map → chunk-66SE3BNH.js.map} +0 -0
- /package/dist/{chunk-TERNBNJB.js.map → chunk-6FC3IZ26.js.map} +0 -0
- /package/dist/{chunk-53AJILXF.js.map → chunk-6XGEBQ3R.js.map} +0 -0
- /package/dist/{chunk-IP3DHDU2.js.map → chunk-7BLWBSRL.js.map} +0 -0
- /package/dist/{chunk-A2TFK5PG.js.map → chunk-7NDM2PNK.js.map} +0 -0
- /package/dist/{chunk-HRMEYQRO.js.map → chunk-7VWZ4LRW.js.map} +0 -0
- /package/dist/{chunk-R6YJI3HE.js.map → chunk-AW4QUFQF.js.map} +0 -0
- /package/dist/{chunk-P65YJEEL.js.map → chunk-AXFWMRKI.js.map} +0 -0
- /package/dist/{chunk-WG5HSQ4P.js.map → chunk-BAKXNQ3C.js.map} +0 -0
- /package/dist/{chunk-NM2WP3B7.js.map → chunk-BJYET5TX.js.map} +0 -0
- /package/dist/{chunk-HLKPRWF4.js.map → chunk-DATDLJAO.js.map} +0 -0
- /package/dist/{chunk-DX3XRGLH.js.map → chunk-DQTCGVFK.js.map} +0 -0
- /package/dist/{chunk-HIDEBEAN.js.map → chunk-E633OXMH.js.map} +0 -0
- /package/dist/{chunk-EZNXW27Q.js.map → chunk-ELQCS47S.js.map} +0 -0
- /package/dist/{chunk-HAYSYUAB.js.map → chunk-EURCX6PS.js.map} +0 -0
- /package/dist/{chunk-RSPSHRZA.js.map → chunk-FV7YQTN3.js.map} +0 -0
- /package/dist/{chunk-GWHPQOUC.js.map → chunk-GGBSF2X7.js.map} +0 -0
- /package/dist/{chunk-SYUBB3WM.js.map → chunk-GKEYXXKX.js.map} +0 -0
- /package/dist/{chunk-PELT6ADC.js.map → chunk-GSEPRIZC.js.map} +0 -0
- /package/dist/{chunk-UTVZKHJK.js.map → chunk-GUKBW4HL.js.map} +0 -0
- /package/dist/{chunk-2F6NP3NT.js.map → chunk-HDQUQBPW.js.map} +0 -0
- /package/dist/{chunk-6HMYUWXR.js.map → chunk-HTP6XRUI.js.map} +0 -0
- /package/dist/{chunk-UYUYZ4WY.js.map → chunk-IARXXZU4.js.map} +0 -0
- /package/dist/{chunk-MNB5RMAY.js.map → chunk-IIFFC3RL.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-IPLYGWQF.js.map} +0 -0
- /package/dist/{chunk-NZBZ7IS2.js.map → chunk-JDCQK3C5.js.map} +0 -0
- /package/dist/{chunk-ANCC3JJH.js.map → chunk-JI62YGPI.js.map} +0 -0
- /package/dist/{chunk-LULR4IUW.js.map → chunk-KATEWTQJ.js.map} +0 -0
- /package/dist/{chunk-IJ7HK452.js.map → chunk-KMAP7SNQ.js.map} +0 -0
- /package/dist/{chunk-PRVJH7CY.js.map → chunk-KMWYZTIE.js.map} +0 -0
- /package/dist/{chunk-JGSKJHF7.js.map → chunk-KQS72GCR.js.map} +0 -0
- /package/dist/{chunk-FMCHFSZF.js.map → chunk-LQKXVQZR.js.map} +0 -0
- /package/dist/{chunk-M4DMO67I.js.map → chunk-LTOAJXZB.js.map} +0 -0
- /package/dist/{chunk-NIS256NW.js.map → chunk-LYMNZZIM.js.map} +0 -0
- /package/dist/{chunk-3PY7VHV7.js.map → chunk-MCA2X4WH.js.map} +0 -0
- /package/dist/{chunk-S5NZBKKQ.js.map → chunk-N3CXAYPJ.js.map} +0 -0
- /package/dist/{chunk-WQIHRA5F.js.map → chunk-N3LL5NEU.js.map} +0 -0
- /package/dist/{chunk-G2RBWVFQ.js.map → chunk-NKL25FCF.js.map} +0 -0
- /package/dist/{chunk-LMDRGRJ2.js.map → chunk-NOB2T2FC.js.map} +0 -0
- /package/dist/{chunk-P2OTGMTR.js.map → chunk-NSGU76YO.js.map} +0 -0
- /package/dist/{chunk-D5NGH2EW.js.map → chunk-O76MWTVS.js.map} +0 -0
- /package/dist/{chunk-WZFAPHIK.js.map → chunk-OIOZ6MOP.js.map} +0 -0
- /package/dist/{chunk-UMOO7IY7.js.map → chunk-P2KBDJJ6.js.map} +0 -0
- /package/dist/{chunk-SXWHN7GC.js.map → chunk-PDEKQWDV.js.map} +0 -0
- /package/dist/{chunk-2EJNXE53.js.map → chunk-PLCHU56K.js.map} +0 -0
- /package/dist/{chunk-45OTV7FZ.js.map → chunk-PWIMF7LP.js.map} +0 -0
- /package/dist/{chunk-7YKVM5H3.js.map → chunk-PWLB4TRK.js.map} +0 -0
- /package/dist/{chunk-RVYVMQK4.js.map → chunk-QSYL5CXK.js.map} +0 -0
- /package/dist/{chunk-NXUJRXSF.js.map → chunk-QWLW3VQH.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-RKNJBZ55.js.map} +0 -0
- /package/dist/{chunk-QCECHYZL.js.map → chunk-RVO6TCTU.js.map} +0 -0
- /package/dist/{chunk-5L7PTX2Q.js.map → chunk-S2SJEOTM.js.map} +0 -0
- /package/dist/{chunk-52I3YZZ6.js.map → chunk-S75UQ3T3.js.map} +0 -0
- /package/dist/{chunk-LXOM6IQU.js.map → chunk-SEF4IOFE.js.map} +0 -0
- /package/dist/{chunk-DUEEQCTT.js.map → chunk-SHYIMIX5.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-3JUYWPFJ.js.map → chunk-VFS3MK5F.js.map} +0 -0
- /package/dist/{chunk-WOEVJKKQ.js.map → chunk-WPZX7MEA.js.map} +0 -0
- /package/dist/{chunk-ZRWB5D4H.js.map → chunk-WT6UL3UA.js.map} +0 -0
- /package/dist/{chunk-MC6XO7T4.js.map → chunk-YLBE6PLR.js.map} +0 -0
- /package/dist/{chunk-GF22HWS2.js.map → chunk-Z54EM5YZ.js.map} +0 -0
- /package/dist/{chunk-GVX3NAUU.js.map → chunk-ZDAYWJV6.js.map} +0 -0
- /package/dist/{chunk-JYPO7L3G.js.map → chunk-ZN4EYMKJ.js.map} +0 -0
- /package/dist/{resolution-3K27T4VO.js.map → coding/pre-action-gate.js.map} +0 -0
- /package/dist/{first-start-migration-ZSHEFEI3.js.map → first-start-migration-626C5554.js.map} +0 -0
- /package/dist/{forget-DNAJ66ZD.js.map → forget-GJ42LCBW.js.map} +0 -0
- /package/dist/{tier-stats-OPTSBNRH.js.map → tier-stats-2JCZYEF7.js.map} +0 -0
package/src/storage.ts
CHANGED
|
@@ -16,6 +16,8 @@ import {
|
|
|
16
16
|
import { appendFileSync, createReadStream, mkdirSync, readFileSync, statSync, type Dirent } from "node:fs";
|
|
17
17
|
import { createHash, randomUUID } from "node:crypto";
|
|
18
18
|
import { normalizeContent, computeContentHash } from "./content-hash.js";
|
|
19
|
+
import { raceAbort } from "./abort-error.js";
|
|
20
|
+
import { checkCorpusReadAbort, type CorpusReadOptions } from "./corpus-read-cancellation.js";
|
|
19
21
|
import { selectArtifactMatches, type ArtifactSearchOptions } from "./artifact-search.js";
|
|
20
22
|
import path from "node:path";
|
|
21
23
|
import { log } from "./logger.js";
|
|
@@ -71,8 +73,8 @@ import {
|
|
|
71
73
|
updateCacheOnWrite,
|
|
72
74
|
} from "./memory-cache.js";
|
|
73
75
|
import {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
attachInFlightReader,
|
|
77
|
+
beginCoalescedScan,
|
|
76
78
|
deleteInFlightRead,
|
|
77
79
|
deleteInFlightReadsForDir,
|
|
78
80
|
clearInFlightReads,
|
|
@@ -363,6 +365,15 @@ function serializeFrontmatter(fm: MemoryFrontmatter): string {
|
|
|
363
365
|
if (fm.tombstoneBlockTier) lines.push(`tombstoneBlockTier: ${fm.tombstoneBlockTier}`);
|
|
364
366
|
if (fm.supersededBy) lines.push(`supersededBy: ${fm.supersededBy}`);
|
|
365
367
|
if (fm.supersededAt) lines.push(`supersededAt: ${fm.supersededAt}`);
|
|
368
|
+
if (fm.supersessionCause) {
|
|
369
|
+
if (fm.supersessionCause !== "direct" && fm.supersessionCause !== "dependency") {
|
|
370
|
+
throw new Error(
|
|
371
|
+
`serializeFrontmatter: invalid supersessionCause ${JSON.stringify(fm.supersessionCause)} — expected "direct" | "dependency"`,
|
|
372
|
+
);
|
|
373
|
+
}
|
|
374
|
+
lines.push(`supersessionCause: ${fm.supersessionCause}`);
|
|
375
|
+
}
|
|
376
|
+
if (fm.invalidatedBy) lines.push(`invalidatedBy: ${fm.invalidatedBy}`);
|
|
366
377
|
if (fm.archivedAt) lines.push(`archivedAt: ${fm.archivedAt}`);
|
|
367
378
|
// Issue #680 — explicit fact lifecycle. Emit only when present so legacy
|
|
368
379
|
// memories round-trip unchanged; readers default `valid_at` to `created`.
|
|
@@ -891,6 +902,11 @@ export function parseFrontmatter(raw: string): { frontmatter: MemoryFrontmatter;
|
|
|
891
902
|
supersededBy: fm.supersededBy || undefined,
|
|
892
903
|
supersededAt: fm.supersededAt || undefined,
|
|
893
904
|
archivedAt: fm.archivedAt || undefined,
|
|
905
|
+
supersessionCause:
|
|
906
|
+
fm.supersessionCause === "direct" || fm.supersessionCause === "dependency"
|
|
907
|
+
? fm.supersessionCause
|
|
908
|
+
: undefined,
|
|
909
|
+
invalidatedBy: fm.invalidatedBy || undefined,
|
|
894
910
|
// Issue #680 — explicit fact lifecycle round-trip.
|
|
895
911
|
valid_at: fm.validAt || undefined,
|
|
896
912
|
invalid_at: fm.invalidAt || undefined,
|
|
@@ -4347,8 +4363,8 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4347
4363
|
return id;
|
|
4348
4364
|
}
|
|
4349
4365
|
|
|
4350
|
-
private async readAllArtifactsCached(): Promise<MemoryFile[]> {
|
|
4351
|
-
return this.memoryReadStore.readAllArtifactsCached();
|
|
4366
|
+
private async readAllArtifactsCached(options?: CorpusReadOptions): Promise<MemoryFile[]> {
|
|
4367
|
+
return this.memoryReadStore.readAllArtifactsCached(options);
|
|
4352
4368
|
}
|
|
4353
4369
|
|
|
4354
4370
|
async searchArtifacts(
|
|
@@ -4357,7 +4373,7 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4357
4373
|
options: ArtifactSearchOptions = {},
|
|
4358
4374
|
): Promise<MemoryFile[]> {
|
|
4359
4375
|
return selectArtifactMatches(
|
|
4360
|
-
() => this.readAllArtifactsCached(),
|
|
4376
|
+
() => this.readAllArtifactsCached({ abortSignal: options.abortSignal }),
|
|
4361
4377
|
query,
|
|
4362
4378
|
maxResults,
|
|
4363
4379
|
options,
|
|
@@ -4474,7 +4490,8 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4474
4490
|
return memories;
|
|
4475
4491
|
}
|
|
4476
4492
|
|
|
4477
|
-
async readAllMemories(): Promise<MemoryFile[]> {
|
|
4493
|
+
async readAllMemories(options?: CorpusReadOptions): Promise<MemoryFile[]> {
|
|
4494
|
+
checkCorpusReadAbort(options);
|
|
4478
4495
|
if (this.hotMemoriesCacheEnabled) {
|
|
4479
4496
|
const cached = getCachedMemories(
|
|
4480
4497
|
this.baseDir,
|
|
@@ -4492,25 +4509,51 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4492
4509
|
// The in-flight slot get/set/delete also key on this snapshot so a mid-scan
|
|
4493
4510
|
// key change can't orphan the slot registered under the old identity.
|
|
4494
4511
|
const keyId = this.hotCacheKeyId();
|
|
4495
|
-
const inFlight =
|
|
4496
|
-
if (inFlight)
|
|
4512
|
+
const inFlight = attachInFlightReader(this.baseDir, keyId, options?.abortSignal);
|
|
4513
|
+
if (inFlight) {
|
|
4514
|
+
// A joiner never cancels the shared scan on its own, but it does stop waiting
|
|
4515
|
+
// on it, and its departure counts: if it was the last waiter the scan is
|
|
4516
|
+
// cancelled (issue #2307 review).
|
|
4517
|
+
try {
|
|
4518
|
+
return this.rememberMemorySnapshots(
|
|
4519
|
+
await raceAbort(inFlight.read, options?.abortSignal, "corpus read aborted"),
|
|
4520
|
+
);
|
|
4521
|
+
} finally {
|
|
4522
|
+
inFlight.waiter.leave();
|
|
4523
|
+
}
|
|
4524
|
+
}
|
|
4497
4525
|
|
|
4526
|
+
// Sole-waiter cancellation lives with the registry that decides whether this
|
|
4527
|
+
// scan is still cancellable at all — see `beginCoalescedScan` (issue #2307).
|
|
4528
|
+
const scan = beginCoalescedScan(this.baseDir, keyId, options?.abortSignal);
|
|
4498
4529
|
const readPromise = (async (): Promise<MemoryFile[]> => {
|
|
4499
4530
|
const version = this.getMemoryCorpusVersion();
|
|
4500
|
-
const memories = await this._readAllMemoriesFromDisk();
|
|
4531
|
+
const memories = await this._readAllMemoriesFromDisk({ abortSignal: scan.scanSignal });
|
|
4501
4532
|
// Publish only if neither the corpus version NOR the key identity changed
|
|
4502
4533
|
// during the scan. The version guard prevents clobbering a newer patched +
|
|
4503
4534
|
// re-keyed entry; the keyId guard prevents publishing this key's decrypted
|
|
4504
|
-
// corpus under a since-changed identity (Codex Medium, #1902).
|
|
4535
|
+
// corpus under a since-changed identity (Codex Medium, #1902). A cancelled
|
|
4536
|
+
// scan never arrives here — the checkpoints throw — so a partial corpus is
|
|
4537
|
+
// never published.
|
|
4505
4538
|
if (this.hotMemoriesCacheEnabled && this.getMemoryCorpusVersion() === version && this.hotCacheKeyId() === keyId) {
|
|
4506
4539
|
setCachedMemories(this.baseDir, memories, version, keyId, this.hotCacheTtlMs());
|
|
4507
4540
|
}
|
|
4508
4541
|
return memories;
|
|
4509
4542
|
})();
|
|
4510
|
-
|
|
4543
|
+
scan.arm(readPromise);
|
|
4511
4544
|
try {
|
|
4512
|
-
|
|
4545
|
+
// The starter races its own signal too. Refcounting means a sole waiter's
|
|
4546
|
+
// abort rejects the scan itself, but while another reader keeps the scan
|
|
4547
|
+
// alive the starter would otherwise sit here and be handed the full corpus
|
|
4548
|
+
// after cancelling — the joiner path's contract, applied symmetrically
|
|
4549
|
+
// (issue #2307 review). The scan is NOT aborted here: it belongs to the
|
|
4550
|
+
// readers still waiting, and a completed scan is still worth caching for
|
|
4551
|
+
// them.
|
|
4552
|
+
return this.rememberMemorySnapshots(
|
|
4553
|
+
await raceAbort(readPromise, options?.abortSignal, "corpus read aborted"),
|
|
4554
|
+
);
|
|
4513
4555
|
} finally {
|
|
4556
|
+
scan.leave();
|
|
4514
4557
|
deleteInFlightRead(this.baseDir, keyId, readPromise);
|
|
4515
4558
|
}
|
|
4516
4559
|
}
|
|
@@ -4769,7 +4812,9 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4769
4812
|
* active memory file paths without parsing frontmatter — safe on a 100k+
|
|
4770
4813
|
* corpus, unlike readAllMemories().
|
|
4771
4814
|
*/
|
|
4772
|
-
async collectActiveMemoryPaths(
|
|
4815
|
+
async collectActiveMemoryPaths(
|
|
4816
|
+
options?: { propagateReadErrors?: boolean } & CorpusReadOptions,
|
|
4817
|
+
): Promise<string[]> {
|
|
4773
4818
|
return this.memoryReadStore.collectActiveMemoryPaths(options);
|
|
4774
4819
|
}
|
|
4775
4820
|
|
|
@@ -4793,12 +4838,19 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4793
4838
|
return `${this.getMemoryCorpusVersion()}:${this.readColdWriteVersion()}`;
|
|
4794
4839
|
}
|
|
4795
4840
|
|
|
4796
|
-
private async readParsedMemoriesFromPaths(
|
|
4841
|
+
private async readParsedMemoriesFromPaths(
|
|
4842
|
+
filePaths: string[],
|
|
4843
|
+
batchSize?: number,
|
|
4844
|
+
options?: CorpusReadOptions,
|
|
4845
|
+
): Promise<MemoryFile[]> {
|
|
4797
4846
|
if (filePaths.length === 0) return [];
|
|
4798
4847
|
|
|
4799
4848
|
const normalizedBatchSize = this.normalizeMemoryReadBatchSize(batchSize);
|
|
4800
4849
|
const memories: MemoryFile[] = [];
|
|
4801
4850
|
for (let i = 0; i < filePaths.length; i += normalizedBatchSize) {
|
|
4851
|
+
// Per batch: the parse phase is as long as the walk on a large corpus, and
|
|
4852
|
+
// an abandoned caller must not keep paying for it (issue #2307).
|
|
4853
|
+
checkCorpusReadAbort(options);
|
|
4802
4854
|
const batch = filePaths.slice(i, i + normalizedBatchSize);
|
|
4803
4855
|
const results = await Promise.all(
|
|
4804
4856
|
batch.map(async (fullPath) => {
|
|
@@ -4831,6 +4883,10 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4831
4883
|
if (memory !== null) memories.push(memory);
|
|
4832
4884
|
}
|
|
4833
4885
|
}
|
|
4886
|
+
// Once more after the loop: a signal that fired during the LAST batch's await
|
|
4887
|
+
// would otherwise let this return successfully, publishing to the cache and
|
|
4888
|
+
// handing results to a caller that had already given up (issue #2307 review).
|
|
4889
|
+
checkCorpusReadAbort(options);
|
|
4834
4890
|
return memories;
|
|
4835
4891
|
}
|
|
4836
4892
|
|
|
@@ -4939,9 +4995,9 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
4939
4995
|
return this.memoryReadStore.readMemoriesWindow(options);
|
|
4940
4996
|
}
|
|
4941
4997
|
|
|
4942
|
-
private async _readAllMemoriesFromDisk(): Promise<MemoryFile[]> {
|
|
4943
|
-
const filePaths = await this.collectActiveMemoryPaths();
|
|
4944
|
-
return this.readParsedMemoriesFromPaths(filePaths, 50);
|
|
4998
|
+
private async _readAllMemoriesFromDisk(options?: CorpusReadOptions): Promise<MemoryFile[]> {
|
|
4999
|
+
const filePaths = await this.collectActiveMemoryPaths(options);
|
|
5000
|
+
return this.readParsedMemoriesFromPaths(filePaths, 50, options);
|
|
4945
5001
|
}
|
|
4946
5002
|
|
|
4947
5003
|
async readAllColdMemories(): Promise<MemoryFile[]> {
|
|
@@ -6430,8 +6486,8 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
6430
6486
|
// Scoring + Knowledge Index (Knowledge Graph v7.0)
|
|
6431
6487
|
// ---------------------------------------------------------------------------
|
|
6432
6488
|
|
|
6433
|
-
async readAllEntityFiles(): Promise<EntityFile[]> {
|
|
6434
|
-
return this.entityStore.readAllEntityFiles();
|
|
6489
|
+
async readAllEntityFiles(options?: CorpusReadOptions): Promise<EntityFile[]> {
|
|
6490
|
+
return this.entityStore.readAllEntityFiles(options);
|
|
6435
6491
|
}
|
|
6436
6492
|
|
|
6437
6493
|
/**
|
|
@@ -12,10 +12,12 @@
|
|
|
12
12
|
* cached `readAllMemories()` path so cost is amortized with the rest of the
|
|
13
13
|
* write pipeline.
|
|
14
14
|
*/
|
|
15
|
-
import type { MemoryFile, MemoryFrontmatter } from "./types.js";
|
|
15
|
+
import type { MemoryFile, MemoryFrontmatter, PluginConfig } from "./types.js";
|
|
16
|
+
import type { ExtractionEngine } from "./extraction.js";
|
|
16
17
|
import type { StorageManager } from "./storage.js";
|
|
17
18
|
import { log } from "./logger.js";
|
|
18
19
|
import { effectiveValidAt } from "./temporal-validity.js";
|
|
20
|
+
import { propagateInvalidation } from "./orchestration/dependency-propagation.js";
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* Shared normalization for supersession key components.
|
|
@@ -244,6 +246,10 @@ export async function applyTemporalSupersession(args: {
|
|
|
244
246
|
* stale relative to the incoming promotion event (PR #402 Finding Uyui).
|
|
245
247
|
*/
|
|
246
248
|
useCallerTimestamp?: boolean;
|
|
249
|
+
/** Optional orchestration dependencies for one-hop propagation. */
|
|
250
|
+
extraction?: ExtractionEngine;
|
|
251
|
+
config?: PluginConfig;
|
|
252
|
+
namespaceScope?: string;
|
|
247
253
|
}): Promise<TemporalSupersessionResult> {
|
|
248
254
|
const empty: TemporalSupersessionResult = { supersededIds: [], matchedKeys: [] };
|
|
249
255
|
if (!args.enabled) return empty;
|
|
@@ -509,6 +515,28 @@ export async function applyTemporalSupersession(args: {
|
|
|
509
515
|
);
|
|
510
516
|
}
|
|
511
517
|
}
|
|
518
|
+
if (args.extraction && args.config && args.namespaceScope) {
|
|
519
|
+
try {
|
|
520
|
+
await propagateInvalidation(
|
|
521
|
+
{
|
|
522
|
+
storage: args.storage,
|
|
523
|
+
extraction: args.extraction,
|
|
524
|
+
config: args.config,
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
oldMemory: fresh,
|
|
528
|
+
replacementId: args.newMemoryId,
|
|
529
|
+
replacementContent: newMemoryFile?.content ?? null,
|
|
530
|
+
cause: "temporal_supersession",
|
|
531
|
+
namespaceScope: args.namespaceScope,
|
|
532
|
+
},
|
|
533
|
+
);
|
|
534
|
+
} catch (propagationErr) {
|
|
535
|
+
log.warn(
|
|
536
|
+
`temporal-supersession: dependency propagation failed for ${fresh.frontmatter.id}: ${propagationErr}`,
|
|
537
|
+
);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
512
540
|
}
|
|
513
541
|
} catch (err) {
|
|
514
542
|
log.warn(
|
|
@@ -14,6 +14,7 @@ import os from "node:os";
|
|
|
14
14
|
import path from "node:path";
|
|
15
15
|
|
|
16
16
|
import { parseConfig } from "../config.js";
|
|
17
|
+
import { getAbstractionNodeStoreStatus, type AbstractionNodeStoreStatus } from "../abstraction-nodes.js";
|
|
17
18
|
import type { Orchestrator } from "../orchestrator.js";
|
|
18
19
|
import type { ExtractionRunCoordinatorDeps } from "../orchestration/extraction-run.js";
|
|
19
20
|
import type { BufferTurn, ExtractionResult, PluginConfig } from "../types.js";
|
|
@@ -25,10 +26,7 @@ import type { BufferTurn, ExtractionResult, PluginConfig } from "../types.js";
|
|
|
25
26
|
* init gate floored so a recall() that never ran initialize() does not block.
|
|
26
27
|
* Mirrors tests/orchestrator-characterization.test.ts:makeConfig.
|
|
27
28
|
*/
|
|
28
|
-
export function makeLifecycleConfig(
|
|
29
|
-
memoryDir: string,
|
|
30
|
-
overrides: Record<string, unknown> = {},
|
|
31
|
-
): PluginConfig {
|
|
29
|
+
export function makeLifecycleConfig(memoryDir: string, overrides: Record<string, unknown> = {}): PluginConfig {
|
|
32
30
|
return parseConfig({
|
|
33
31
|
openaiApiKey: "sk-test",
|
|
34
32
|
memoryDir,
|
|
@@ -47,6 +45,27 @@ export function makeLifecycleConfig(
|
|
|
47
45
|
});
|
|
48
46
|
}
|
|
49
47
|
|
|
48
|
+
/** Enable the production harmonic-construction persistence path for a lifecycle row. */
|
|
49
|
+
export function makeHarmonicLifecycleConfig(memoryDir: string, overrides: Record<string, unknown> = {}): PluginConfig {
|
|
50
|
+
return makeLifecycleConfig(memoryDir, {
|
|
51
|
+
harmonicRetrievalEnabled: true,
|
|
52
|
+
...overrides,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Read and validate abstraction nodes written by the production store path. */
|
|
57
|
+
export function harmonicNodeStoreStatus(
|
|
58
|
+
memoryDir: string,
|
|
59
|
+
abstractionNodeStoreDir?: string
|
|
60
|
+
): Promise<AbstractionNodeStoreStatus> {
|
|
61
|
+
return getAbstractionNodeStoreStatus({
|
|
62
|
+
memoryDir,
|
|
63
|
+
abstractionNodeStoreDir,
|
|
64
|
+
enabled: true,
|
|
65
|
+
anchorsEnabled: false,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
50
69
|
/** Create a fresh temp memory dir with a stable `remnic-lifecycle-<label>-` prefix. */
|
|
51
70
|
export function mkTempMemoryDir(label: string): Promise<string> {
|
|
52
71
|
return mkdtemp(path.join(os.tmpdir(), `remnic-lifecycle-${label}-`));
|
|
@@ -95,7 +114,7 @@ interface ExtractionClientSeam {
|
|
|
95
114
|
*/
|
|
96
115
|
export function stubExtraction(
|
|
97
116
|
orchestrator: Orchestrator,
|
|
98
|
-
factory: (turns: BufferTurn[], call: number) => ExtractionResult | Promise<ExtractionResult
|
|
117
|
+
factory: (turns: BufferTurn[], call: number) => ExtractionResult | Promise<ExtractionResult>
|
|
99
118
|
): BufferTurn[][] {
|
|
100
119
|
const calls: BufferTurn[][] = [];
|
|
101
120
|
// The `extraction` field is private and structurally unexpressible from
|
|
@@ -143,7 +162,7 @@ interface PersistExtractionSeam {
|
|
|
143
162
|
*/
|
|
144
163
|
export function stubPersistExtraction(
|
|
145
164
|
orchestrator: Orchestrator,
|
|
146
|
-
factory?: (args: PersistExtractionArgs, call: number) => string[] | Promise<string[]
|
|
165
|
+
factory?: (args: PersistExtractionArgs, call: number) => string[] | Promise<string[]>
|
|
147
166
|
): PersistExtractionArgs[] {
|
|
148
167
|
const calls: PersistExtractionArgs[] = [];
|
|
149
168
|
// `persistExtraction` is replaced in place; the named cast keeps the
|
|
@@ -191,7 +210,7 @@ export async function seedFactFile(memoryDir: string, id: string, content: strin
|
|
|
191
210
|
content,
|
|
192
211
|
"",
|
|
193
212
|
].join("\n"),
|
|
194
|
-
"utf-8"
|
|
213
|
+
"utf-8"
|
|
195
214
|
);
|
|
196
215
|
return file;
|
|
197
216
|
}
|
|
@@ -222,7 +241,7 @@ export async function memoryFilesContaining(root: string, needle: string): Promi
|
|
|
222
241
|
export async function eventually<T>(
|
|
223
242
|
probe: () => Promise<T | null | undefined | false>,
|
|
224
243
|
label: string,
|
|
225
|
-
timeoutMs = 5000
|
|
244
|
+
timeoutMs = 5000
|
|
226
245
|
): Promise<T> {
|
|
227
246
|
const startedAt = Date.now();
|
|
228
247
|
for (;;) {
|