@remnic/core 9.69.33 → 9.69.35
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 +14 -11
- package/dist/access-admin-ops-surface.js +65 -60
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +14 -11
- package/dist/access-authorization-probe.js +66 -61
- package/dist/access-boundary.d.ts +14 -11
- package/dist/access-boundary.js +65 -60
- package/dist/access-cli.js +137 -133
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +3 -1
- package/dist/access-coding-context-resolution.js +3 -3
- package/dist/access-extraction-force-flush.d.ts +14 -11
- package/dist/access-extraction-force-flush.js +65 -60
- package/dist/access-health-types.d.ts +3 -1
- package/dist/access-http-briefing.d.ts +14 -11
- package/dist/access-http-briefing.js +66 -61
- package/dist/access-http-lcm-compaction.d.ts +14 -11
- package/dist/access-http-lifecycle-flush.d.ts +14 -11
- package/dist/access-http-offline-stream.d.ts +14 -11
- package/dist/access-http-query.d.ts +4 -2
- package/dist/access-http-query.js +67 -62
- package/dist/access-http.d.ts +15 -12
- package/dist/access-http.js +86 -82
- package/dist/access-identity-continuity-surface.d.ts +12 -9
- package/dist/access-identity-continuity-surface.js +65 -60
- package/dist/access-lcm-surface.d.ts +14 -11
- package/dist/access-lcm-surface.js +65 -60
- package/dist/access-mcp.d.ts +14 -11
- package/dist/access-mcp.js +74 -70
- package/dist/access-memory-search-fanout.d.ts +4 -2
- package/dist/{access-namespace-preflight-DMR-jOMS.d.ts → access-namespace-preflight-D8qri11P.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +5 -3
- package/dist/access-namespace-preflight.js +65 -60
- package/dist/access-observe-transcript.d.ts +12 -9
- package/dist/access-observe-transcript.js +3 -3
- package/dist/access-observe-write-surface.d.ts +16 -13
- package/dist/access-observe-write-surface.js +65 -60
- package/dist/access-offline-manifest.d.ts +48 -11
- package/dist/access-offline-manifest.js +18 -16
- package/dist/access-operations-batch.js +68 -64
- package/dist/access-operations.d.ts +15 -12
- package/dist/access-operations.js +73 -69
- package/dist/access-recall-concurrency.d.ts +14 -11
- package/dist/access-recall-concurrency.js +65 -60
- package/dist/access-recall-response.d.ts +14 -11
- package/dist/access-recall-response.js +65 -60
- package/dist/access-recall-surface.d.ts +14 -11
- package/dist/access-recall-surface.js +65 -60
- package/dist/access-schema.d.ts +56 -13
- package/dist/access-schema.js +15 -1
- package/dist/{access-service-CJQoQvRa.d.ts → access-service-CKu5ixg9.d.ts} +52 -50
- package/dist/access-service-helpers.d.ts +14 -11
- package/dist/access-service.d.ts +14 -11
- package/dist/access-service.js +65 -60
- package/dist/access-surface-catalog.d.ts +14 -11
- package/dist/access-surface-catalog.js +67 -62
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +5 -3
- package/dist/action-confidence.d.ts +3 -1
- package/dist/active-memory-bridge.d.ts +3 -1
- package/dist/active-memory-bridge.js +2 -2
- package/dist/active-recall.d.ts +3 -1
- package/dist/active-recall.js +12 -10
- package/dist/active-recall.js.map +1 -1
- package/dist/activity/digest.d.ts +3 -1
- package/dist/adapters/index.d.ts +46 -1
- package/dist/adapters/index.js +10 -6
- package/dist/adapters/registry.js +2 -2
- package/dist/ambient-provenance.d.ts +3 -1
- package/dist/artifact-search.d.ts +3 -1
- package/dist/{auto-sync-NSHLUAQI.js → auto-sync-4YFATLFQ.js} +10 -9
- package/dist/{auto-sync-NSHLUAQI.js.map → auto-sync-4YFATLFQ.js.map} +1 -1
- package/dist/behavior-learner.d.ts +3 -1
- package/dist/behavior-signals.d.ts +3 -1
- package/dist/bootstrap.d.ts +12 -9
- package/dist/briefing-window.d.ts +4 -2
- package/dist/briefing.d.ts +4 -2
- package/dist/briefing.js +26 -25
- package/dist/buffer-surprise-report.d.ts +3 -1
- package/dist/buffer-turn-helpers.d.ts +3 -1
- package/dist/buffer.d.ts +4 -2
- package/dist/buffer.js +11 -10
- package/dist/bulk-import/index.d.ts +5 -3
- package/dist/calibration.d.ts +3 -1
- package/dist/calibration.js +3 -2
- package/dist/calibration.js.map +1 -1
- package/dist/capabilities.d.ts +3 -1
- package/dist/{capsule-merge-IPG4IOFP.js → capsule-merge-ZCXUPLNJ.js} +2 -2
- package/dist/{catalog-8O9KY9eA.d.ts → catalog-Bq1AxZwF.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +3 -1
- package/dist/causal-consolidation.d.ts +3 -1
- package/dist/causal-consolidation.js +27 -26
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-trajectory-graph.d.ts +3 -1
- package/dist/{chunk-CDKHKZL5.js → chunk-2524MOWK.js} +2 -2
- package/dist/{chunk-HVAEXYPL.js → chunk-255PC37A.js} +47 -25
- package/dist/chunk-255PC37A.js.map +1 -0
- package/dist/{chunk-2C3S7J2S.js → chunk-2BQ4ZIWC.js} +741 -28
- package/dist/chunk-2BQ4ZIWC.js.map +1 -0
- package/dist/{chunk-RKBLRTNT.js → chunk-2YLMUME2.js} +2 -2
- package/dist/{chunk-QOIOACIE.js → chunk-326KUXIR.js} +15 -648
- package/dist/chunk-326KUXIR.js.map +1 -0
- package/dist/{chunk-DBQWVT2H.js → chunk-3CBI2ZSA.js} +2 -2
- package/dist/{chunk-MWFGUESQ.js → chunk-3FJKJ5UZ.js} +2 -2
- package/dist/{chunk-NZXEK3UF.js → chunk-3Q3N35W7.js} +2 -2
- package/dist/{chunk-YYGZJPOK.js → chunk-42DJ235G.js} +2 -2
- package/dist/{chunk-SO7SV523.js → chunk-4MDKNUV4.js} +1 -1
- package/dist/chunk-4MDKNUV4.js.map +1 -0
- package/dist/chunk-5HYUUFMQ.js +1280 -0
- package/dist/chunk-5HYUUFMQ.js.map +1 -0
- package/dist/{chunk-2JVJ7UHC.js → chunk-5JG5EBVL.js} +4 -2
- package/dist/chunk-5JG5EBVL.js.map +1 -0
- package/dist/{chunk-HV7OY4DM.js → chunk-5VAF4ID4.js} +643 -202
- package/dist/chunk-5VAF4ID4.js.map +1 -0
- package/dist/{chunk-N7RWREIQ.js → chunk-65RENJGB.js} +6 -1
- package/dist/chunk-65RENJGB.js.map +1 -0
- package/dist/{chunk-JTH2SE6B.js → chunk-6J6K3STG.js} +8 -8
- package/dist/{chunk-H4VH5VIB.js → chunk-776GVKL7.js} +2 -2
- package/dist/{chunk-BUTCAMJM.js → chunk-A2YQL2FF.js} +5 -5
- package/dist/chunk-A5UQ52YQ.js +211 -0
- package/dist/chunk-A5UQ52YQ.js.map +1 -0
- package/dist/{chunk-X2NFFBTO.js → chunk-A7GQBJP5.js} +4 -4
- package/dist/{chunk-CGC5UQCF.js → chunk-AKE4GGQ3.js} +2 -2
- package/dist/{chunk-B325AGLK.js → chunk-AZSKROVQ.js} +2 -2
- package/dist/{chunk-I5DZ3WGR.js → chunk-BJETIR53.js} +3 -3
- package/dist/{chunk-JT3EB7ZL.js → chunk-BNGHPYZU.js} +5 -5
- package/dist/chunk-BRZWWUCJ.js +13 -0
- package/dist/{chunk-FYDW33ZB.js.map → chunk-BRZWWUCJ.js.map} +1 -1
- package/dist/{chunk-3JVLGJCY.js → chunk-C6KRO3SU.js} +2 -2
- package/dist/{chunk-5NANRSCD.js → chunk-CNV2A557.js} +5 -5
- package/dist/{chunk-PBGVVDLY.js → chunk-DK4X5B6I.js} +2 -2
- package/dist/{chunk-MFDTVQJX.js → chunk-DVOBLPSQ.js} +22 -7
- package/dist/chunk-DVOBLPSQ.js.map +1 -0
- package/dist/{chunk-N2ZNPHA3.js → chunk-ECKG5WSI.js} +2 -2
- package/dist/{chunk-PYLL63BF.js → chunk-EEBQFG5E.js} +9 -9
- package/dist/{chunk-ET356KSB.js → chunk-F4TWWUMP.js} +2 -2
- package/dist/{chunk-RHQMKJFG.js → chunk-F6IVBYFS.js} +55 -51
- package/dist/{chunk-RHQMKJFG.js.map → chunk-F6IVBYFS.js.map} +1 -1
- package/dist/{chunk-CLLPJ6QT.js → chunk-FQXJAC3T.js} +2 -2
- package/dist/{chunk-JGHXXQ2G.js → chunk-FVJ4D6L7.js} +2 -2
- package/dist/{chunk-DD5JFCWM.js → chunk-GCBIXUPT.js} +2 -2
- package/dist/{chunk-MN3LK3KN.js → chunk-GLZH5VEN.js} +2 -2
- package/dist/{chunk-S7T2TY65.js → chunk-HC4GFLMQ.js} +3 -3
- package/dist/{chunk-EQHDH4C2.js → chunk-HUT2JR6I.js} +3 -3
- package/dist/{chunk-UUQG7HAD.js → chunk-HXSAWV3A.js} +4 -4
- package/dist/{chunk-XXIHX75O.js → chunk-J7PB5UQ4.js} +3 -3
- package/dist/{chunk-UGPUYIET.js → chunk-JHZCXUQI.js} +221 -400
- package/dist/chunk-JHZCXUQI.js.map +1 -0
- package/dist/{chunk-LTIZHLV7.js → chunk-JR6H5CYS.js} +2 -2
- package/dist/{chunk-FCSZ4K2X.js → chunk-JR6PP7UM.js} +3 -3
- package/dist/{chunk-TCUKRAMK.js → chunk-JRWW7GM6.js} +10 -10
- package/dist/{chunk-Q726HSJO.js → chunk-JSRVXI6E.js} +16 -15
- package/dist/chunk-JSRVXI6E.js.map +1 -0
- package/dist/{chunk-DB5TGMLZ.js → chunk-JZ2CHRLB.js} +6 -4
- package/dist/{chunk-DB5TGMLZ.js.map → chunk-JZ2CHRLB.js.map} +1 -1
- package/dist/{chunk-JEIXTYVG.js → chunk-L2QLDZJC.js} +46 -17
- package/dist/chunk-L2QLDZJC.js.map +1 -0
- package/dist/{chunk-PL7FYKHT.js → chunk-L2WQVSKP.js} +2 -2
- package/dist/{chunk-JSN44KIB.js → chunk-LEMD7WZJ.js} +9 -9
- package/dist/{chunk-VZWXFXLX.js → chunk-LMCD5W5B.js} +2 -2
- package/dist/{chunk-7BMXZCOT.js → chunk-LNDLXMH6.js} +3 -3
- package/dist/{chunk-3QQTXYZ6.js → chunk-LSLCFCCQ.js} +2 -1
- package/dist/chunk-LSLCFCCQ.js.map +1 -0
- package/dist/{chunk-EONF76DT.js → chunk-LYDJRF45.js} +2 -2
- package/dist/{chunk-MKD3OMPS.js → chunk-M3MYMWXG.js} +2 -2
- package/dist/{chunk-VGXM5B4H.js → chunk-MNIPH6LD.js} +2 -2
- package/dist/{chunk-A7XEPMQ6.js → chunk-MVAQ2WM3.js} +6 -6
- package/dist/chunk-MVAQ2WM3.js.map +1 -0
- package/dist/{chunk-6N3TQFZU.js → chunk-NN4JEFON.js} +3 -3
- package/dist/chunk-NPNSKE76.js +220 -0
- package/dist/chunk-NPNSKE76.js.map +1 -0
- package/dist/{chunk-MOZXTRC2.js → chunk-OQ7SSRXP.js} +19 -19
- package/dist/{chunk-XU6OEECT.js → chunk-OQQXGYMX.js} +3 -3
- package/dist/{chunk-4MHYKEOM.js → chunk-OS2AT2JU.js} +10 -10
- package/dist/{chunk-N57A4KPV.js → chunk-P3ONDDIJ.js} +2 -2
- package/dist/chunk-PCEYGOSL.js +66 -0
- package/dist/chunk-PCEYGOSL.js.map +1 -0
- package/dist/{chunk-R3HKWWUB.js → chunk-PHP3MUGF.js} +2 -2
- package/dist/{chunk-EEOUMG3J.js → chunk-PWPIERBM.js} +38 -6
- package/dist/chunk-PWPIERBM.js.map +1 -0
- package/dist/chunk-Q4AUIFUA.js +111 -0
- package/dist/chunk-Q4AUIFUA.js.map +1 -0
- package/dist/{chunk-P3SB5BNT.js → chunk-QATYVTP7.js} +2 -2
- package/dist/{chunk-LSYDG6MJ.js → chunk-QBLDCI6E.js} +2 -2
- package/dist/{chunk-KCB7F4J7.js → chunk-QURNMKME.js} +2 -2
- package/dist/{chunk-XOVKXJEP.js → chunk-R3TLVTWW.js} +3 -3
- package/dist/{chunk-XXE5P6HJ.js → chunk-RRZKTSFG.js} +2 -2
- package/dist/{chunk-44T3Y7SZ.js → chunk-RUXPVSML.js} +5 -5
- package/dist/{chunk-DCJ3YFIC.js → chunk-S2ULTQZR.js} +2 -2
- package/dist/{chunk-H272ZPQ3.js → chunk-SHEHQBCG.js} +124 -23
- package/dist/chunk-SHEHQBCG.js.map +1 -0
- package/dist/{chunk-EEC4PCG5.js → chunk-SZDLX763.js} +2 -2
- package/dist/{chunk-E2ZHGBAK.js → chunk-T2JSUEH6.js} +2 -2
- package/dist/{chunk-227UFSEQ.js → chunk-TFA6HPOA.js} +2 -2
- package/dist/{chunk-BA6WOZOT.js → chunk-TK4FHQRN.js} +4 -4
- package/dist/{chunk-W27OW7AB.js → chunk-TKFSXDOB.js} +2 -2
- package/dist/chunk-TLHNF6GA.js +647 -0
- package/dist/chunk-TLHNF6GA.js.map +1 -0
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-FDLDOEO6.js → chunk-UBG4GAEP.js} +51 -6
- package/dist/chunk-UBG4GAEP.js.map +1 -0
- package/dist/{chunk-CETXNLEX.js → chunk-UDZYNIDJ.js} +2 -2
- package/dist/{chunk-H5AFCNGA.js → chunk-UJX4I26O.js} +2 -2
- package/dist/{chunk-E6TDQRF6.js → chunk-UYUCCQ46.js} +2 -2
- package/dist/{chunk-BLUYQFRH.js → chunk-VELCIWJZ.js} +15 -11
- package/dist/chunk-VELCIWJZ.js.map +1 -0
- package/dist/{chunk-OQDPBRQ6.js → chunk-VYXDUPYE.js} +2 -2
- package/dist/{chunk-ZG74PWRW.js → chunk-VZAKYDMJ.js} +2 -2
- package/dist/chunk-W6IJMWTZ.js +72 -0
- package/dist/chunk-W6IJMWTZ.js.map +1 -0
- package/dist/{chunk-NB5BCFUY.js → chunk-WHHEPAO3.js} +4 -4
- package/dist/{chunk-H3TKENU4.js → chunk-WIKO4SCR.js} +5 -5
- package/dist/{chunk-TX2UTLXC.js → chunk-WPDKBUWX.js} +2 -2
- package/dist/{chunk-YFLLGRXO.js → chunk-X2QPKLPL.js} +2 -2
- package/dist/{chunk-PFFZWDPE.js → chunk-XCOV45MO.js} +3 -3
- package/dist/{chunk-5BCNEBEN.js → chunk-XPJNT6PI.js} +4 -4
- package/dist/chunk-XW2T4QAW.js +1 -0
- package/dist/{chunk-J7HFPA6O.js → chunk-Y63ZFP4X.js} +2 -2
- package/dist/{chunk-D223ZDQV.js → chunk-YEDVOYL2.js} +2 -2
- package/dist/{chunk-TLPZ6MKZ.js → chunk-YEN4TREG.js} +541 -5
- package/dist/chunk-YEN4TREG.js.map +1 -0
- package/dist/{chunk-22FVR2KE.js → chunk-YJ6VCDMZ.js} +6 -2
- package/dist/chunk-YJ6VCDMZ.js.map +1 -0
- package/dist/{chunk-RC5DXXWC.js → chunk-YM7YN37H.js} +2 -2
- package/dist/{chunk-BPJNF7J2.js → chunk-YNN26CIZ.js} +2 -2
- package/dist/{chunk-VLXBE57O.js → chunk-YVGXH72Y.js} +2 -2
- package/dist/{chunk-YQAXP5AC.js → chunk-YXLUTALO.js} +5 -5
- package/dist/{chunk-DGGB65KC.js → chunk-Z7ACR6MJ.js} +3 -3
- package/dist/{chunk-X35W4S3L.js → chunk-ZBEGS7OB.js} +4 -4
- package/dist/{chunk-O75CRYGF.js → chunk-ZEFVK7XC.js} +1 -1
- package/dist/chunk-ZEFVK7XC.js.map +1 -0
- package/dist/{chunk-XUE46UYW.js → chunk-ZLN7AROH.js} +6 -6
- package/dist/{chunk-E6JA6XWY.js → chunk-ZTG4P7NZ.js} +1013 -1317
- package/dist/chunk-ZTG4P7NZ.js.map +1 -0
- package/dist/{chunk-HK32G473.js → chunk-ZWEZXVYH.js} +2 -2
- package/dist/{cli-D57e2Mqt.d.ts → cli-Bk7Ctql4.d.ts} +5 -5
- package/dist/cli-fallback.d.ts +11 -4
- package/dist/cli-fallback.js +5 -1
- package/dist/cli.d.ts +16 -13
- package/dist/cli.js +107 -103
- package/dist/coding/export-okf-codegraph.d.ts +3 -1
- package/dist/coding/export-okf-codegraph.js +32 -30
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/coding/pre-action-gate.d.ts +3 -1
- package/dist/compat/checks.js +2 -2
- package/dist/compat/codex-cli-fallback.d.ts +1 -1
- package/dist/compat/codex-cli-fallback.js +5 -1
- package/dist/compat/codex-cli-fallback.js.map +1 -1
- package/dist/compounding/engine.d.ts +4 -2
- package/dist/compounding/engine.js +27 -26
- package/dist/compounding/preference-consolidator.d.ts +3 -1
- package/dist/compression-optimizer.d.ts +3 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +12 -10
- package/dist/connectors/codex-materialize-runner.d.ts +3 -1
- package/dist/connectors/codex-materialize-runner.js +26 -25
- package/dist/connectors/codex-materialize.d.ts +3 -1
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.js +28 -27
- package/dist/consolidation-provenance-check.d.ts +4 -2
- package/dist/consolidation-undo.d.ts +4 -2
- package/dist/contradiction/index.d.ts +5 -3
- package/dist/contradiction/index.js +5 -5
- package/dist/{contradiction-scan-NOYMFG66.js → contradiction-scan-GVD4JJ7B.js} +3 -3
- package/dist/converge-config.d.ts +3 -1
- package/dist/convergence-refresh.d.ts +4 -2
- package/dist/convergence-refresh.js +28 -27
- package/dist/conversation-index/backend.d.ts +3 -1
- package/dist/conversation-index/backend.js +3 -3
- package/dist/conversation-index/chunker.d.ts +3 -1
- package/dist/conversation-index/faiss-adapter.d.ts +3 -1
- package/dist/conversation-index/faiss-adapter.js +2 -2
- package/dist/conversation-index/indexer.d.ts +3 -1
- package/dist/conversation-index/search.d.ts +3 -1
- package/dist/corpus-watermark.d.ts +3 -1
- package/dist/corpus-watermark.js +29 -28
- package/dist/cross-lingual-recall.d.ts +3 -1
- package/dist/day-summary.d.ts +3 -1
- package/dist/deep-recall-http-glue.d.ts +14 -11
- package/dist/deep-recall-http-glue.js +12 -2
- package/dist/deep-recall-mcp-tools.d.ts +14 -11
- package/dist/deep-recall-policy-llm.d.ts +3 -1
- package/dist/deep-recall-policy-llm.js +4 -3
- package/dist/deep-recall-seeds.d.ts +3 -1
- package/dist/delinearize.d.ts +3 -1
- package/dist/dependency-propagation-config.d.ts +3 -1
- package/dist/{dependency-propagation-delivery-CmniEsUK.d.ts → dependency-propagation-delivery-DLiAtj25.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +3 -1
- package/dist/direct-answer.d.ts +3 -1
- package/dist/embedding-fallback.d.ts +3 -1
- package/dist/enrichment/index.d.ts +3 -1
- package/dist/entity-origin-fields.d.ts +3 -1
- package/dist/entity-retrieval.d.ts +4 -2
- package/dist/entity-retrieval.js +26 -25
- package/dist/entity-schema.d.ts +3 -1
- package/dist/episodic-context.d.ts +3 -1
- package/dist/eval-trajectory-contracts.d.ts +3 -1
- package/dist/eval-trajectory-store.d.ts +3 -1
- package/dist/eval-trajectory.d.ts +3 -1
- package/dist/explicit-capture.d.ts +12 -9
- package/dist/explicit-capture.js +6 -6
- package/dist/external-wiki-access.d.ts +14 -11
- package/dist/external-wiki-access.js +66 -61
- package/dist/external-wiki-collection-registration.d.ts +3 -1
- package/dist/external-wiki-collection.d.ts +3 -1
- package/dist/external-wiki-mcp-tools.d.ts +14 -11
- package/dist/extraction-error-classification.d.ts +3 -1
- package/dist/extraction-faithfulness.d.ts +3 -1
- package/dist/extraction-faithfulness.js +4 -3
- package/dist/extraction-judge-telemetry.d.ts +3 -1
- package/dist/extraction-judge-training.d.ts +3 -1
- package/dist/extraction-judge.d.ts +3 -1
- package/dist/extraction-judge.js +5 -4
- package/dist/extraction-liveness.d.ts +3 -1
- package/dist/extraction-normalization.d.ts +3 -1
- package/dist/extraction-prompt.d.ts +3 -1
- package/dist/extraction-source-grounding-rules.d.ts +3 -1
- package/dist/extraction-source-grounding.d.ts +3 -1
- package/dist/extraction.d.ts +3 -1
- package/dist/extraction.js +38 -36
- package/dist/fallback-llm.d.ts +3 -1
- package/dist/fallback-llm.js +3 -2
- package/dist/{first-start-migration-RC345GPL.js → first-start-migration-L3UFX5CU.js} +3 -3
- package/dist/generic-recall-paths-DbitKJI5.d.ts +23 -0
- package/dist/graph-append-error.d.ts +3 -1
- package/dist/graph-dashboard-diff.d.ts +3 -1
- package/dist/graph-dashboard-key.d.ts +3 -1
- package/dist/graph-dashboard-parser.d.ts +3 -1
- package/dist/graph-edge-reinforcement.d.ts +3 -1
- package/dist/graph-jsonl.d.ts +3 -1
- package/dist/graph-path-reconstruction.d.ts +3 -1
- package/dist/graph-path-scoring.d.ts +3 -1
- package/dist/graph-snapshot.d.ts +3 -1
- package/dist/graph.d.ts +3 -1
- package/dist/harmonic-retrieval.js +2 -2
- package/dist/importance.d.ts +3 -1
- package/dist/importers/index.d.ts +3 -1
- package/dist/importers/test-utils.d.ts +3 -1
- package/dist/in-flight-reads.d.ts +3 -1
- package/dist/{index-BTAsSkPG.d.ts → index-BINUgPFo.d.ts} +2 -2
- package/dist/index.d.ts +303 -245
- package/dist/index.js +316 -214
- package/dist/intent.d.ts +3 -1
- package/dist/lcm/engine.d.ts +3 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +3 -1
- package/dist/lcm/index.js +7 -7
- package/dist/lcm/tools.d.ts +3 -1
- package/dist/lifecycle.d.ts +3 -1
- package/dist/live-connectors-runner.d.ts +3 -1
- package/dist/local-llm-config.d.ts +26 -0
- package/dist/local-llm-config.js +1 -0
- package/dist/local-llm.d.ts +5 -1
- package/dist/local-llm.js +3 -3
- package/dist/local-model-endpoint.d.ts +3 -1
- package/dist/location/index.d.ts +5 -3
- package/dist/location/index.js +29 -28
- package/dist/maintenance/memory-governance.d.ts +3 -1
- package/dist/maintenance/memory-governance.js +26 -25
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +4 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +26 -25
- package/dist/maintenance/rebuild-memory-projection.d.ts +4 -2
- package/dist/maintenance/rebuild-memory-projection.js +27 -26
- package/dist/{maintenance-DCvQGTzL.d.ts → maintenance-ag1gYztC.d.ts} +378 -4
- package/dist/mcp-memory-inspector-app.d.ts +14 -11
- package/dist/memory-action-policy.d.ts +3 -1
- package/dist/memory-cache.d.ts +3 -1
- package/dist/memory-controller.d.ts +3 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +3 -1
- package/dist/memory-projection-store.d.ts +3 -1
- package/dist/memory-provenance.d.ts +3 -1
- package/dist/memory-snapshot.d.ts +3 -1
- package/dist/memory-subject-cli.d.ts +14 -11
- package/dist/memory-subject.d.ts +14 -11
- package/dist/memory-worth-outcomes.d.ts +4 -2
- package/dist/migrate/from-engram.js +2 -2
- package/dist/models-json.d.ts +3 -1
- package/dist/namespaces/migrate.d.ts +5 -3
- package/dist/namespaces/migrate.js +27 -26
- package/dist/namespaces/principal.d.ts +3 -1
- package/dist/namespaces/search.d.ts +3 -1
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.d.ts +5 -3
- package/dist/namespaces/storage.js +26 -25
- package/dist/native-knowledge.d.ts +3 -1
- package/dist/network/tailscale.js +2 -2
- package/dist/offline-sync-impression-drain.d.ts +3 -1
- package/dist/offline-sync-impression-drain.js +6 -6
- package/dist/operator-doctor-corpus.d.ts +3 -1
- package/dist/operator-doctor-corpus.js +30 -29
- package/dist/operator-doctor-replica.d.ts +3 -1
- package/dist/operator-toolkit.d.ts +5 -3
- package/dist/operator-toolkit.js +44 -42
- package/dist/orchestration/compression-guideline-coordinator.d.ts +4 -2
- package/dist/orchestration/maintenance.d.ts +6 -4
- package/dist/orchestration/maintenance.js +44 -39
- package/dist/{orchestrator-CvCsp1tz.d.ts → orchestrator-Cf3G-3Ed.d.ts} +17 -29
- package/dist/orchestrator.d.ts +12 -9
- package/dist/orchestrator.js +141 -135
- package/dist/patterns-cli.d.ts +3 -1
- package/dist/{pipeline-JAdwKBS7.d.ts → pipeline-AwB03fw_.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +3 -1
- package/dist/proactive-contention.d.ts +3 -1
- package/dist/provenance.d.ts +3 -1
- package/dist/{public-http-h-yWu9rj.d.ts → public-http-BetSQn7q.d.ts} +1 -1
- package/dist/{qmd-Cvw9RWKr.d.ts → qmd-Bfaydrfm.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +4 -2
- package/dist/qmd-recall-cache.d.ts +3 -1
- package/dist/qmd.d.ts +4 -2
- package/dist/qmd.js +2 -2
- package/dist/recall-concurrency-config.d.ts +3 -1
- package/dist/recall-disclosure-escalation.d.ts +3 -1
- package/dist/recall-explain-renderer.d.ts +3 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +3 -1
- package/dist/recall-navigate-access.d.ts +3 -1
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.d.ts +3 -1
- package/dist/recall-navigate-disclosure.js +1 -1
- package/dist/recall-navigate.d.ts +3 -1
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-planner-llm.d.ts +3 -1
- package/dist/recall-planner-llm.js +3 -2
- package/dist/recall-planner-llm.js.map +1 -1
- package/dist/recall-state-view-admission.d.ts +57 -0
- package/dist/recall-state-view-admission.js +39 -0
- package/dist/recall-state-view-admission.js.map +1 -0
- package/dist/recall-state-view-inject.js +2 -2
- package/dist/recall-state-view-render.js +2 -2
- package/dist/recall-state-view-widen.d.ts +18 -1
- package/dist/recall-state-view-widen.js +2 -2
- package/dist/recall-state-view-wire.d.ts +1 -1
- package/dist/recall-state-view-wire.js +3 -3
- package/dist/recall-state-view.d.ts +1 -0
- package/dist/recall-state-view.js +1 -1
- package/dist/recall-state.d.ts +3 -1
- package/dist/recall-tag-filter.d.ts +3 -1
- package/dist/recall-timings.d.ts +3 -1
- package/dist/recall-xray-cli.d.ts +3 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +3 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +10 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +12 -2
- package/dist/reconcile/cursor.js +6 -4
- package/dist/reconcile/cursor.js.map +1 -1
- package/dist/reconcile/manifest.d.ts +38 -2
- package/dist/reconcile/manifest.js +15 -5
- package/dist/reconcile/plan.d.ts +3 -1
- package/dist/replay/normalizers/chatgpt.d.ts +3 -1
- package/dist/replay/normalizers/claude.d.ts +3 -1
- package/dist/replay/normalizers/openclaw.d.ts +3 -1
- package/dist/replay/normalizers/shared.d.ts +3 -1
- package/dist/replay/runner.d.ts +3 -1
- package/dist/replay/types.d.ts +3 -1
- package/dist/replica-divergence.d.ts +3 -1
- package/dist/replica-peers-config.d.ts +3 -1
- package/dist/{resolution-VKATP2HT.js → resolution-OHJZG45O.js} +6 -6
- package/dist/resolution-OHJZG45O.js.map +1 -0
- package/dist/resolve-auth-token.d.ts +3 -1
- package/dist/resume-bundles.js +13 -11
- package/dist/retrieval-agents.d.ts +4 -2
- package/dist/retrieval-tiers.d.ts +3 -1
- package/dist/routing/engine.d.ts +3 -1
- package/dist/routing/store.d.ts +3 -1
- package/dist/runtime/child-process.d.ts +1 -1
- package/dist/runtime/child-process.js +1 -1
- package/dist/salvage-envelope.d.ts +3 -1
- package/dist/salvage-envelope.js +2 -2
- package/dist/{scope-profiles-BShpTPeV.d.ts → scope-profiles-nxTKvjE-.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +3 -1
- package/dist/search/factory.d.ts +3 -1
- package/dist/search/factory.js +7 -7
- package/dist/search/index.d.ts +3 -1
- package/dist/search/index.js +11 -11
- package/dist/search/lancedb-backend.d.ts +3 -1
- package/dist/search/meilisearch-backend.d.ts +3 -1
- package/dist/search/noop-backend.d.ts +3 -1
- package/dist/search/orama-backend.d.ts +3 -1
- package/dist/search/port.d.ts +3 -1
- package/dist/search/remote-backend.d.ts +3 -1
- package/dist/{semantic-consolidation-CusOpe9F.d.ts → semantic-consolidation-C83DVakV.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +4 -2
- package/dist/semantic-consolidation.js +27 -26
- package/dist/semantic-rule-promotion.js +26 -25
- package/dist/semantic-rule-verifier.d.ts +3 -1
- package/dist/semantic-rule-verifier.js +26 -25
- package/dist/{service-BbuVh1eS.d.ts → service-q-xtOoAr.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +3 -1
- package/dist/session-observer-state.d.ts +3 -1
- package/dist/shared-context/manager.d.ts +3 -1
- package/dist/signal.d.ts +3 -1
- package/dist/source-agent-qualifier.d.ts +3 -1
- package/dist/source-agent-qualifier.js +35 -33
- package/dist/standup/build.js +26 -25
- package/dist/{storage-BBLLuVTF.d.ts → storage-Ca0MbTfm.d.ts} +67 -6
- package/dist/storage.d.ts +5 -3
- package/dist/storage.js +25 -24
- package/dist/subject-config.d.ts +3 -1
- package/dist/subject-config.js +2 -2
- package/dist/summarizer.d.ts +3 -1
- package/dist/summarizer.js +6 -6
- package/dist/summary-snapshot.d.ts +3 -1
- package/dist/support-passport/index.d.ts +50 -15
- package/dist/support-passport/index.js +73 -64
- package/dist/temporal-supersession.d.ts +4 -2
- package/dist/temporal-timeline-recall.d.ts +3 -1
- package/dist/temporal-validity.d.ts +3 -1
- package/dist/threading.d.ts +3 -1
- package/dist/tier-migration.d.ts +4 -2
- package/dist/tier-routing.d.ts +3 -1
- package/dist/tier-routing.js +2 -2
- package/dist/{tier-stats-KA6OZX2C.js → tier-stats-VK5PCO2L.js} +3 -3
- package/dist/topics.d.ts +3 -1
- package/dist/transcript.d.ts +3 -1
- package/dist/transfer/capsule-import.js +1 -1
- package/dist/transfer/export-okf.d.ts +3 -1
- package/dist/transfer/export-okf.js +27 -26
- package/dist/transfer/types.d.ts +24 -24
- package/dist/trust-score-stage.d.ts +3 -1
- package/dist/trust-score.d.ts +3 -1
- package/dist/{types-igV4-sbB.d.ts → types-yDgWDkrJ.d.ts} +60 -34
- package/dist/types.d.ts +3 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +3 -1
- package/dist/verified-recall.js +26 -25
- package/dist/who-knows-cli.d.ts +14 -11
- package/dist/who-knows-cli.js +27 -26
- package/dist/who-knows.d.ts +14 -11
- package/dist/who-knows.js +26 -25
- package/dist/write-envelope.d.ts +5 -2
- package/dist/write-envelope.js +3 -1
- package/package.json +2 -2
- package/src/access-category-alias.test.ts +216 -0
- package/src/access-mcp.test.ts +73 -0
- package/src/access-mcp.ts +6 -6
- package/src/access-observe-write-surface.ts +19 -4
- package/src/access-offline-manifest.ts +297 -16
- package/src/access-recall-surface.ts +5 -5
- package/src/access-schema.ts +76 -7
- package/src/access-service.ts +11 -2
- package/src/activity/config.test.ts +124 -1
- package/src/activity/config.ts +150 -18
- package/src/activity/index.ts +3 -0
- package/src/activity/journal-extract-storage.test.ts +129 -0
- package/src/activity/journal-extract.test.ts +314 -0
- package/src/activity/journal-extract.ts +247 -0
- package/src/activity/journal-heading.test.ts +24 -1
- package/src/activity/journal-heading.ts +36 -0
- package/src/activity/journal-read.test.ts +242 -0
- package/src/activity/journal-read.ts +183 -0
- package/src/activity/journal-source.test.ts +15 -15
- package/src/activity/journal-source.ts +21 -14
- package/src/activity/journal-state.lock-worker.ts +30 -0
- package/src/activity/journal-state.test.ts +144 -0
- package/src/activity/journal-state.ts +107 -0
- package/src/activity/journal-strip.test.ts +106 -52
- package/src/activity/journal-strip.ts +35 -10
- package/src/activity/journal-vault-integration.test.ts +230 -0
- package/src/activity/journal-vault-provenance.test.ts +9 -7
- package/src/activity/journal-vault-provenance.ts +4 -10
- package/src/activity/journal-vault-read.test.ts +3 -2
- package/src/activity/journal-vault-read.ts +9 -139
- package/src/activity/journal.test.ts +74 -23
- package/src/activity/runner.test.ts +116 -1
- package/src/activity/runner.ts +25 -0
- package/src/activity/scheduler.ts +4 -0
- package/src/activity/store.test.ts +18 -0
- package/src/activity/store.ts +14 -0
- package/src/activity/sync-registration.ts +4 -0
- package/src/activity/timeline/analysis-metadata.ts +2 -0
- package/src/activity/timeline/analysis-provider.ts +140 -0
- package/src/activity/timeline/analysis-run.test.ts +419 -0
- package/src/activity/timeline/analysis-run.ts +106 -0
- package/src/activity/timeline/analysis.ts +66 -37
- package/src/activity/timeline/corrections.ts +9 -0
- package/src/activity/timeline/index.ts +3 -0
- package/src/activity/timeline/query.test.ts +71 -0
- package/src/activity/timeline/query.ts +57 -8
- package/src/activity/timeline/regenerate.test.ts +505 -0
- package/src/activity/timeline/regenerate.ts +373 -0
- package/src/activity/types.ts +40 -5
- package/src/adapters/grok-opencode.test.ts +146 -0
- package/src/adapters/grok.ts +53 -0
- package/src/adapters/index.ts +2 -0
- package/src/adapters/opencode.ts +52 -0
- package/src/adapters/registry.ts +4 -0
- package/src/cli-fallback.ts +13 -4
- package/src/config.test.ts +27 -1
- package/src/config.ts +17 -1
- package/src/dedup/merge.test.ts +732 -25
- package/src/fallback-llm.test.ts +53 -0
- package/src/fallback-llm.ts +12 -0
- package/src/index.ts +2 -0
- package/src/local-llm-config.ts +25 -0
- package/src/local-llm.ts +3 -1
- package/src/orchestration/dependency-propagation-recovery-replay.ts +1 -1
- package/src/orchestration/extraction-persist-deps.ts +9 -0
- package/src/orchestration/extraction-persist-promotion.test.ts +265 -6
- package/src/orchestration/extraction-persist-promotion.ts +42 -3
- package/src/orchestration/extraction-persist.ts +3 -3
- package/src/orchestration/harmonic-construction-persist.test.ts +115 -4
- package/src/orchestration/harmonic-construction-persist.ts +34 -6
- package/src/orchestration/maintenance.ts +1 -0
- package/src/orchestration/orchestrator-helpers.ts +6 -0
- package/src/orchestration/recall-entry.ts +16 -0
- package/src/orchestration/recall-internal-deps.ts +14 -0
- package/src/orchestration/recall-internal.ts +41 -58
- package/src/orchestration/recall-result-formatter.ts +11 -1
- package/src/orchestration/recall-search-pipeline.ts +121 -11
- package/src/orchestration/recall-state-view-pipeline.test.ts +211 -0
- package/src/orchestration/semantic-merge-commit-effects.ts +76 -17
- package/src/orchestration/semantic-merge-persist.ts +121 -16
- package/src/orchestration/semantic-merge-promotion-payload.ts +133 -54
- package/src/orchestrator.ts +7 -35
- package/src/providers/codex-subscription.test.ts +666 -0
- package/src/providers/codex-subscription.ts +743 -0
- package/src/recall-disclosure.test.ts +20 -0
- package/src/recall-state-view-admission.ts +114 -0
- package/src/recall-state-view-asof.test.ts +176 -0
- package/src/recall-state-view-call.test.ts +175 -0
- package/src/recall-state-view-config.test.ts +16 -0
- package/src/recall-state-view-widen.test.ts +70 -0
- package/src/recall-state-view-widen.ts +28 -7
- package/src/recall-state-view-wire.ts +3 -1
- package/src/recall-state-view-zero-diff.test.ts +20 -11
- package/src/recall-state-view.test.ts +142 -0
- package/src/recall-state-view.ts +72 -24
- package/src/recall-xray-renderer.test.ts +27 -0
- package/src/recall-xray-renderer.ts +4 -0
- package/src/recall-xray.ts +13 -0
- package/src/reconcile/cursor.ts +23 -33
- package/src/reconcile/manifest.ts +96 -11
- package/src/reconcile-identity-cache.test.ts +378 -0
- package/src/runtime/child-process.ts +1 -1
- package/src/storage/cas-revision-host.ts +75 -0
- package/src/storage/cas-revision-store.test.ts +459 -0
- package/src/storage/cas-revision-store.ts +661 -0
- package/src/storage/deletion-revision-store.ts +80 -6
- package/src/storage/tombstone-blocked-capture-index.ts +15 -0
- package/src/storage/tombstone-blocked-capture-mutation.ts +67 -7
- package/src/storage/tombstone-blocked-capture-sync.ts +55 -20
- package/src/storage-contract/failure-semantics.test.ts +1 -1
- package/src/storage-frontmatter-cas.test.ts +698 -1
- package/src/storage-replay.test.ts +166 -3
- package/src/storage.ts +41 -41
- package/src/support-passport/card-projection.ts +82 -33
- package/src/temporal-supersession.test.ts +10 -10
- package/src/types.ts +10 -29
- package/src/write-envelope.ts +1 -1
- package/dist/chunk-22FVR2KE.js.map +0 -1
- package/dist/chunk-2C3S7J2S.js.map +0 -1
- package/dist/chunk-2JVJ7UHC.js.map +0 -1
- package/dist/chunk-2QSZNTDO.js +0 -56
- package/dist/chunk-2QSZNTDO.js.map +0 -1
- package/dist/chunk-3QQTXYZ6.js.map +0 -1
- package/dist/chunk-5VCDKQWQ.js +0 -560
- package/dist/chunk-5VCDKQWQ.js.map +0 -1
- package/dist/chunk-A7XEPMQ6.js.map +0 -1
- package/dist/chunk-BLUYQFRH.js.map +0 -1
- package/dist/chunk-E6JA6XWY.js.map +0 -1
- package/dist/chunk-EEOUMG3J.js.map +0 -1
- package/dist/chunk-FDLDOEO6.js.map +0 -1
- package/dist/chunk-FYDW33ZB.js +0 -13
- package/dist/chunk-H272ZPQ3.js.map +0 -1
- package/dist/chunk-HV7OY4DM.js.map +0 -1
- package/dist/chunk-HVAEXYPL.js.map +0 -1
- package/dist/chunk-JEIXTYVG.js.map +0 -1
- package/dist/chunk-LRICZIGN.js +0 -52
- package/dist/chunk-LRICZIGN.js.map +0 -1
- package/dist/chunk-MFDTVQJX.js.map +0 -1
- package/dist/chunk-N7RWREIQ.js.map +0 -1
- package/dist/chunk-O75CRYGF.js.map +0 -1
- package/dist/chunk-Q726HSJO.js.map +0 -1
- package/dist/chunk-QOIOACIE.js.map +0 -1
- package/dist/chunk-SEDEKFYQ.js +0 -1
- package/dist/chunk-SO7SV523.js.map +0 -1
- package/dist/chunk-TLPZ6MKZ.js.map +0 -1
- package/dist/chunk-UGPUYIET.js.map +0 -1
- package/src/activity/journal-mode.test.ts +0 -32
- package/src/activity/journal-mode.ts +0 -20
- /package/dist/{capsule-merge-IPG4IOFP.js.map → capsule-merge-ZCXUPLNJ.js.map} +0 -0
- /package/dist/{chunk-CDKHKZL5.js.map → chunk-2524MOWK.js.map} +0 -0
- /package/dist/{chunk-RKBLRTNT.js.map → chunk-2YLMUME2.js.map} +0 -0
- /package/dist/{chunk-DBQWVT2H.js.map → chunk-3CBI2ZSA.js.map} +0 -0
- /package/dist/{chunk-MWFGUESQ.js.map → chunk-3FJKJ5UZ.js.map} +0 -0
- /package/dist/{chunk-NZXEK3UF.js.map → chunk-3Q3N35W7.js.map} +0 -0
- /package/dist/{chunk-YYGZJPOK.js.map → chunk-42DJ235G.js.map} +0 -0
- /package/dist/{chunk-JTH2SE6B.js.map → chunk-6J6K3STG.js.map} +0 -0
- /package/dist/{chunk-H4VH5VIB.js.map → chunk-776GVKL7.js.map} +0 -0
- /package/dist/{chunk-BUTCAMJM.js.map → chunk-A2YQL2FF.js.map} +0 -0
- /package/dist/{chunk-X2NFFBTO.js.map → chunk-A7GQBJP5.js.map} +0 -0
- /package/dist/{chunk-CGC5UQCF.js.map → chunk-AKE4GGQ3.js.map} +0 -0
- /package/dist/{chunk-B325AGLK.js.map → chunk-AZSKROVQ.js.map} +0 -0
- /package/dist/{chunk-I5DZ3WGR.js.map → chunk-BJETIR53.js.map} +0 -0
- /package/dist/{chunk-JT3EB7ZL.js.map → chunk-BNGHPYZU.js.map} +0 -0
- /package/dist/{chunk-3JVLGJCY.js.map → chunk-C6KRO3SU.js.map} +0 -0
- /package/dist/{chunk-5NANRSCD.js.map → chunk-CNV2A557.js.map} +0 -0
- /package/dist/{chunk-PBGVVDLY.js.map → chunk-DK4X5B6I.js.map} +0 -0
- /package/dist/{chunk-N2ZNPHA3.js.map → chunk-ECKG5WSI.js.map} +0 -0
- /package/dist/{chunk-PYLL63BF.js.map → chunk-EEBQFG5E.js.map} +0 -0
- /package/dist/{chunk-ET356KSB.js.map → chunk-F4TWWUMP.js.map} +0 -0
- /package/dist/{chunk-CLLPJ6QT.js.map → chunk-FQXJAC3T.js.map} +0 -0
- /package/dist/{chunk-JGHXXQ2G.js.map → chunk-FVJ4D6L7.js.map} +0 -0
- /package/dist/{chunk-DD5JFCWM.js.map → chunk-GCBIXUPT.js.map} +0 -0
- /package/dist/{chunk-MN3LK3KN.js.map → chunk-GLZH5VEN.js.map} +0 -0
- /package/dist/{chunk-S7T2TY65.js.map → chunk-HC4GFLMQ.js.map} +0 -0
- /package/dist/{chunk-EQHDH4C2.js.map → chunk-HUT2JR6I.js.map} +0 -0
- /package/dist/{chunk-UUQG7HAD.js.map → chunk-HXSAWV3A.js.map} +0 -0
- /package/dist/{chunk-XXIHX75O.js.map → chunk-J7PB5UQ4.js.map} +0 -0
- /package/dist/{chunk-LTIZHLV7.js.map → chunk-JR6H5CYS.js.map} +0 -0
- /package/dist/{chunk-FCSZ4K2X.js.map → chunk-JR6PP7UM.js.map} +0 -0
- /package/dist/{chunk-TCUKRAMK.js.map → chunk-JRWW7GM6.js.map} +0 -0
- /package/dist/{chunk-PL7FYKHT.js.map → chunk-L2WQVSKP.js.map} +0 -0
- /package/dist/{chunk-JSN44KIB.js.map → chunk-LEMD7WZJ.js.map} +0 -0
- /package/dist/{chunk-VZWXFXLX.js.map → chunk-LMCD5W5B.js.map} +0 -0
- /package/dist/{chunk-7BMXZCOT.js.map → chunk-LNDLXMH6.js.map} +0 -0
- /package/dist/{chunk-EONF76DT.js.map → chunk-LYDJRF45.js.map} +0 -0
- /package/dist/{chunk-MKD3OMPS.js.map → chunk-M3MYMWXG.js.map} +0 -0
- /package/dist/{chunk-VGXM5B4H.js.map → chunk-MNIPH6LD.js.map} +0 -0
- /package/dist/{chunk-6N3TQFZU.js.map → chunk-NN4JEFON.js.map} +0 -0
- /package/dist/{chunk-MOZXTRC2.js.map → chunk-OQ7SSRXP.js.map} +0 -0
- /package/dist/{chunk-XU6OEECT.js.map → chunk-OQQXGYMX.js.map} +0 -0
- /package/dist/{chunk-4MHYKEOM.js.map → chunk-OS2AT2JU.js.map} +0 -0
- /package/dist/{chunk-N57A4KPV.js.map → chunk-P3ONDDIJ.js.map} +0 -0
- /package/dist/{chunk-R3HKWWUB.js.map → chunk-PHP3MUGF.js.map} +0 -0
- /package/dist/{chunk-P3SB5BNT.js.map → chunk-QATYVTP7.js.map} +0 -0
- /package/dist/{chunk-LSYDG6MJ.js.map → chunk-QBLDCI6E.js.map} +0 -0
- /package/dist/{chunk-KCB7F4J7.js.map → chunk-QURNMKME.js.map} +0 -0
- /package/dist/{chunk-XOVKXJEP.js.map → chunk-R3TLVTWW.js.map} +0 -0
- /package/dist/{chunk-XXE5P6HJ.js.map → chunk-RRZKTSFG.js.map} +0 -0
- /package/dist/{chunk-44T3Y7SZ.js.map → chunk-RUXPVSML.js.map} +0 -0
- /package/dist/{chunk-DCJ3YFIC.js.map → chunk-S2ULTQZR.js.map} +0 -0
- /package/dist/{chunk-EEC4PCG5.js.map → chunk-SZDLX763.js.map} +0 -0
- /package/dist/{chunk-E2ZHGBAK.js.map → chunk-T2JSUEH6.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-TFA6HPOA.js.map} +0 -0
- /package/dist/{chunk-BA6WOZOT.js.map → chunk-TK4FHQRN.js.map} +0 -0
- /package/dist/{chunk-W27OW7AB.js.map → chunk-TKFSXDOB.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-CETXNLEX.js.map → chunk-UDZYNIDJ.js.map} +0 -0
- /package/dist/{chunk-H5AFCNGA.js.map → chunk-UJX4I26O.js.map} +0 -0
- /package/dist/{chunk-E6TDQRF6.js.map → chunk-UYUCCQ46.js.map} +0 -0
- /package/dist/{chunk-OQDPBRQ6.js.map → chunk-VYXDUPYE.js.map} +0 -0
- /package/dist/{chunk-ZG74PWRW.js.map → chunk-VZAKYDMJ.js.map} +0 -0
- /package/dist/{chunk-NB5BCFUY.js.map → chunk-WHHEPAO3.js.map} +0 -0
- /package/dist/{chunk-H3TKENU4.js.map → chunk-WIKO4SCR.js.map} +0 -0
- /package/dist/{chunk-TX2UTLXC.js.map → chunk-WPDKBUWX.js.map} +0 -0
- /package/dist/{chunk-YFLLGRXO.js.map → chunk-X2QPKLPL.js.map} +0 -0
- /package/dist/{chunk-PFFZWDPE.js.map → chunk-XCOV45MO.js.map} +0 -0
- /package/dist/{chunk-5BCNEBEN.js.map → chunk-XPJNT6PI.js.map} +0 -0
- /package/dist/{chunk-SEDEKFYQ.js.map → chunk-XW2T4QAW.js.map} +0 -0
- /package/dist/{chunk-J7HFPA6O.js.map → chunk-Y63ZFP4X.js.map} +0 -0
- /package/dist/{chunk-D223ZDQV.js.map → chunk-YEDVOYL2.js.map} +0 -0
- /package/dist/{chunk-RC5DXXWC.js.map → chunk-YM7YN37H.js.map} +0 -0
- /package/dist/{chunk-BPJNF7J2.js.map → chunk-YNN26CIZ.js.map} +0 -0
- /package/dist/{chunk-VLXBE57O.js.map → chunk-YVGXH72Y.js.map} +0 -0
- /package/dist/{chunk-YQAXP5AC.js.map → chunk-YXLUTALO.js.map} +0 -0
- /package/dist/{chunk-DGGB65KC.js.map → chunk-Z7ACR6MJ.js.map} +0 -0
- /package/dist/{chunk-X35W4S3L.js.map → chunk-ZBEGS7OB.js.map} +0 -0
- /package/dist/{chunk-XUE46UYW.js.map → chunk-ZLN7AROH.js.map} +0 -0
- /package/dist/{chunk-HK32G473.js.map → chunk-ZWEZXVYH.js.map} +0 -0
- /package/dist/{contradiction-scan-NOYMFG66.js.map → contradiction-scan-GVD4JJ7B.js.map} +0 -0
- /package/dist/{first-start-migration-RC345GPL.js.map → first-start-migration-L3UFX5CU.js.map} +0 -0
- /package/dist/{resolution-VKATP2HT.js.map → local-llm-config.js.map} +0 -0
- /package/dist/{tier-stats-KA6OZX2C.js.map → tier-stats-VK5PCO2L.js.map} +0 -0
|
@@ -81,6 +81,7 @@ import type {
|
|
|
81
81
|
} from "../types.js";
|
|
82
82
|
import { normalizeConnectorScope } from "../dedup/connector-scope.js";
|
|
83
83
|
import type { StorageManager } from "../index.js";
|
|
84
|
+
import { casCommittedRevisionOf } from "../storage/deletion-revision-store.js";
|
|
84
85
|
import type { ExtractionPersistDeps } from "./extraction-persist-deps.js";
|
|
85
86
|
|
|
86
87
|
export type SemanticMergeCreateReason =
|
|
@@ -714,9 +715,7 @@ export async function applySemanticMergeAtPersist(
|
|
|
714
715
|
// win rather than be overwritten from a stale body. The active-target check
|
|
715
716
|
// above makes a tombstone block structurally impossible here.
|
|
716
717
|
const nowIso = (options.now ? options.now() : new Date()).toISOString();
|
|
717
|
-
let
|
|
718
|
-
// Captured so the success return can describe the COMMITTED frontmatter
|
|
719
|
-
// (the patch's appended sources) without widening the try's scope.
|
|
718
|
+
let casRevision: string | undefined; // #2813 (P1): OUR content CAS's receipt — feeds the patch stamp below and the catch's rollback comparison
|
|
720
719
|
let mergePatch: MergeFrontmatterUpdate | undefined;
|
|
721
720
|
try {
|
|
722
721
|
mergePatch = buildMergeFrontmatterUpdate({
|
|
@@ -742,7 +741,7 @@ export async function applySemanticMergeAtPersist(
|
|
|
742
741
|
);
|
|
743
742
|
return { action: "created", reason: "target_changed" };
|
|
744
743
|
}
|
|
745
|
-
|
|
744
|
+
casRevision = updated; // fix A: a successful CAS returns the revision it landed; a later rollback compares against it
|
|
746
745
|
// The provenance patch must land on OUR merged body. An id-keyed patch
|
|
747
746
|
// re-reads and stamps whatever the latest row holds, so a writer landing
|
|
748
747
|
// after the content commit would receive this merge's provenance while
|
|
@@ -790,6 +789,8 @@ export async function applySemanticMergeAtPersist(
|
|
|
790
789
|
const patched = await options.storage.writeMemoryFrontmatterIfUnchanged(
|
|
791
790
|
merged,
|
|
792
791
|
{
|
|
792
|
+
// #2807: business/event time, exactly what an ordinary write would
|
|
793
|
+
// stamp — receipt identity is the sidecar token storage mints.
|
|
793
794
|
updated: mergePatch.updated,
|
|
794
795
|
derived_via: mergePatch.derived_via,
|
|
795
796
|
reinforcement_count: mergePatch.reinforcement_count,
|
|
@@ -831,10 +832,100 @@ export async function applySemanticMergeAtPersist(
|
|
|
831
832
|
// leave those claims without the incoming provenance, so `created` is
|
|
832
833
|
// reachable only once storage has been re-read and confirms the target no
|
|
833
834
|
// longer holds this merge's unprovenanced body.
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
835
|
+
//
|
|
836
|
+
// #2807 (finding 2): the flag alone cannot distinguish a CAS that threw
|
|
837
|
+
// BEFORE changing the target (lock acquisition, transient I/O) from one
|
|
838
|
+
// that threw AFTER the write committed — and both left the staged
|
|
839
|
+
// snapshot `pending` forever, which pruneExcessVersions deliberately
|
|
840
|
+
// excludes, so repeated contention grew history past
|
|
841
|
+
// maxVersionsPerPage with snapshots of bodies storage never (or no
|
|
842
|
+
// longer) holds. Reread the target instead of trusting the flag.
|
|
843
|
+
// #2813 (P1): ownership comes from the CAS's own commit identity —
|
|
844
|
+
// storage stamps the thrown error with the revision its write landed
|
|
845
|
+
// (markCasCommittedRevision) — NEVER from body equality: a concurrent
|
|
846
|
+
// writer's identical deterministic merge is byte-for-byte this writer's
|
|
847
|
+
// merged body, so content comparison would misattribute their commit,
|
|
848
|
+
// and the revert below would CAS-replace their valid merge with the
|
|
849
|
+
// pre-merge body while their patched provenance stood.
|
|
850
|
+
// - receipt present → OUR write landed (throw after commit) → revert,
|
|
851
|
+
// else degraded success — and the rollback verifies the standing
|
|
852
|
+
// record still carries the receipt's revision (#2813 P1, round 2);
|
|
853
|
+
// clean up OUR staged duplicate, leave theirs untouched, report the
|
|
854
|
+
// degraded merged outcome (never `created`: storage already holds
|
|
855
|
+
// these claims);
|
|
856
|
+
// - no receipt, pre-merge body → the write never landed → the snapshot
|
|
857
|
+
// is a duplicate and goes, `created` is honest;
|
|
858
|
+
// - no receipt, replaced by another writer or unreadable →
|
|
859
|
+
// unverifiable → keep-side, the snapshot stays.
|
|
860
|
+
const committedRevision = casCommittedRevisionOf(err) ?? casRevision; // fix A: patch-path failures carry no error receipt — fall back to the success receipt
|
|
861
|
+
const landed = committedRevision !== undefined;
|
|
862
|
+
if (!landed) {
|
|
863
|
+
let observed: MemoryFile | null = null;
|
|
864
|
+
try {
|
|
865
|
+
observed = await readTargetSnapshot(options.storage, target);
|
|
866
|
+
} catch {
|
|
867
|
+
/* unreadable → keep-side below */
|
|
868
|
+
}
|
|
869
|
+
if (observed?.content === committedContent) {
|
|
870
|
+
await discardMergedTargetSnapshot(
|
|
871
|
+
target.path,
|
|
872
|
+
versioning,
|
|
873
|
+
options.storage.dir,
|
|
874
|
+
decision.targetId,
|
|
875
|
+
versionId,
|
|
876
|
+
);
|
|
877
|
+
await repairIndexes(committedMergedFactHash(deps, options.category, committedContent));
|
|
878
|
+
log.warn(
|
|
879
|
+
`semantic-merge: update failed for ${decision.targetId} (the compare-and-swap threw before this writer's mutation; the standing merged body is another writer's identical commit — snapshot ${versionId} discarded, the concurrent commit left untouched): ${detail}`,
|
|
880
|
+
);
|
|
881
|
+
return {
|
|
882
|
+
action: "merged",
|
|
883
|
+
targetId: decision.targetId,
|
|
884
|
+
mergedContent: committedContent,
|
|
885
|
+
provenancePatched: false,
|
|
886
|
+
};
|
|
887
|
+
} else if (observed?.content === target.content) {
|
|
888
|
+
await discardMergedTargetSnapshot(
|
|
889
|
+
target.path,
|
|
890
|
+
versioning,
|
|
891
|
+
options.storage.dir,
|
|
892
|
+
decision.targetId,
|
|
893
|
+
versionId,
|
|
894
|
+
);
|
|
895
|
+
log.warn(
|
|
896
|
+
`semantic-merge: update failed for ${decision.targetId} (the compare-and-swap threw before changing the target; snapshot ${versionId} discarded — the reread holds the pre-merge body): ${detail}`,
|
|
897
|
+
);
|
|
898
|
+
return { action: "created", reason: "update_failed" };
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
// #2813 (P1, round 2): the receipt was used only as a boolean — never
|
|
902
|
+
// compared with the standing record — so writer B's identical commit
|
|
903
|
+
// after our lock released was reverted as ours. Equal revision → ours,
|
|
904
|
+
// safe to roll back; advanced → B's — the same handling as the no-receipt
|
|
905
|
+
// other-writer branch above; never revert theirs.
|
|
906
|
+
const revert = landed
|
|
907
|
+
? await revertMergedContent(options.storage, target, committedContent, committedRevision)
|
|
908
|
+
: undefined;
|
|
909
|
+
if (revert === "superseded") {
|
|
910
|
+
await discardMergedTargetSnapshot(
|
|
911
|
+
target.path,
|
|
912
|
+
versioning,
|
|
913
|
+
options.storage.dir,
|
|
914
|
+
decision.targetId,
|
|
915
|
+
versionId,
|
|
916
|
+
);
|
|
917
|
+
await repairIndexes(committedMergedFactHash(deps, options.category, committedContent));
|
|
918
|
+
log.warn(
|
|
919
|
+
`semantic-merge: update failed for ${decision.targetId} (the standing merged body advanced past this writer's commit receipt — another writer's identical commit stands; snapshot ${versionId} discarded, the concurrent commit left untouched): ${detail}`,
|
|
920
|
+
);
|
|
921
|
+
return {
|
|
922
|
+
action: "merged",
|
|
923
|
+
targetId: decision.targetId,
|
|
924
|
+
mergedContent: committedContent,
|
|
925
|
+
provenancePatched: false,
|
|
926
|
+
};
|
|
927
|
+
}
|
|
928
|
+
if (landed && revert !== "reverted") {
|
|
838
929
|
log.error(
|
|
839
930
|
`semantic-merge: ${decision.targetId} holds merged content without provenance metadata and the rollback failed (${detail}); snapshot ${versionId} holds the pre-merge state — recover with revertToVersion. Not creating a duplicate fact.`,
|
|
840
931
|
);
|
|
@@ -861,10 +952,9 @@ export async function applySemanticMergeAtPersist(
|
|
|
861
952
|
// Round N+13 (B): with the content committed and the revert above
|
|
862
953
|
// confirmed, storage holds the pre-merge body, so the staged snapshot of
|
|
863
954
|
// that same body is a duplicate and goes. (The degraded-success branch
|
|
864
|
-
// above keeps it as the recovery point.
|
|
865
|
-
//
|
|
866
|
-
|
|
867
|
-
if (contentCommitted) {
|
|
955
|
+
// above keeps it as the recovery point. An unverifiable throw — target
|
|
956
|
+
// replaced or unreadable — is keep-side, the snapshot stays.)
|
|
957
|
+
if (landed) {
|
|
868
958
|
await discardMergedTargetSnapshot(
|
|
869
959
|
target.path,
|
|
870
960
|
versioning,
|
|
@@ -874,7 +964,7 @@ export async function applySemanticMergeAtPersist(
|
|
|
874
964
|
);
|
|
875
965
|
}
|
|
876
966
|
log.warn(
|
|
877
|
-
`semantic-merge: update failed for ${decision.targetId}${
|
|
967
|
+
`semantic-merge: update failed for ${decision.targetId}${landed ? ` (content rolled back; snapshot ${versionId} rolled back out of history)` : ` (snapshot ${versionId} staged)`}: ${detail}`,
|
|
878
968
|
);
|
|
879
969
|
return { action: "created", reason: "update_failed" };
|
|
880
970
|
}
|
|
@@ -1024,6 +1114,10 @@ export async function runMergedTargetPostEffects(
|
|
|
1024
1114
|
episodes.push(merge.targetId);
|
|
1025
1115
|
}
|
|
1026
1116
|
if (!input.graphCaps.multiGraphMemory) return signals;
|
|
1117
|
+
// #2807 (finding 4): whether the remove-and-rebuild below finalized. A
|
|
1118
|
+
// false or thrown exit means a ROLLBACK ran (or nothing mutated), and the
|
|
1119
|
+
// owning index's edge cache must be invalidated after the catch.
|
|
1120
|
+
let rewriteInstalled = false;
|
|
1027
1121
|
try {
|
|
1028
1122
|
const committed = await storage.getMemoryByIdIncludingArchived(merge.targetId);
|
|
1029
1123
|
if (!committed || committed.content !== merge.mergedContent) return signals;
|
|
@@ -1066,11 +1160,12 @@ export async function runMergedTargetPostEffects(
|
|
|
1066
1160
|
// Round N+12 (C): the remove-and-rebuild is revision-guarded end to end
|
|
1067
1161
|
// (see rewriteMergedTargetGraphEdges) — a writer committing a newer body
|
|
1068
1162
|
// mid-rebuild aborts this install instead of clobbering its edges.
|
|
1069
|
-
|
|
1163
|
+
rewriteInstalled = await rewriteMergedTargetGraphEdges(storage, {
|
|
1070
1164
|
targetId: merge.targetId,
|
|
1071
1165
|
memoryRelPath,
|
|
1072
1166
|
mergedContent: merge.mergedContent,
|
|
1073
|
-
|
|
1167
|
+
// #2807: the dedicated CAS revision token, not public `updated`.
|
|
1168
|
+
revisionChecked: await storage.readCasRevision(committed.path),
|
|
1074
1169
|
rewriteTypes,
|
|
1075
1170
|
build: () =>
|
|
1076
1171
|
deps.buildGraphEdge(
|
|
@@ -1087,9 +1182,19 @@ export async function runMergedTargetPostEffects(
|
|
|
1087
1182
|
input.graphCaps,
|
|
1088
1183
|
),
|
|
1089
1184
|
});
|
|
1090
|
-
if (
|
|
1185
|
+
if (rewriteInstalled) input.graphContext.previousPersistedRelPath = memoryRelPath;
|
|
1091
1186
|
} catch {
|
|
1092
1187
|
/* fail-open: the committed merge stands; the create path's graph block fails open too */
|
|
1093
1188
|
}
|
|
1189
|
+
if (!rewriteInstalled) {
|
|
1190
|
+
// #2807 (finding 4): the rewrite rolled back — superseded revision, a
|
|
1191
|
+
// failed build, or a pre-rewrite read error — after the build's
|
|
1192
|
+
// onMemoryWritten had already pushed this writer's appended rows into
|
|
1193
|
+
// the owning GraphIndex's warm edge cache. The rollback repaired only
|
|
1194
|
+
// the JSONL files; without invalidating the cache, spreadingActivation
|
|
1195
|
+
// kept serving the rolled-back edges for the full five-minute TTL.
|
|
1196
|
+
// Invalidation is idempotent and cheap when nothing was cached.
|
|
1197
|
+
deps.invalidateGraphEdgeCache?.(storage);
|
|
1198
|
+
}
|
|
1094
1199
|
return signals;
|
|
1095
1200
|
}
|
|
@@ -65,37 +65,60 @@ export interface MergedTargetPromotionPayload {
|
|
|
65
65
|
toolScoped?: true;
|
|
66
66
|
sourceConnector?: string;
|
|
67
67
|
/**
|
|
68
|
-
* The committed record's
|
|
69
|
-
* N+15 A)
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
68
|
+
* The committed record's CAS revision token at payload-build time (round
|
|
69
|
+
* N+15 A, #2807) — the dedicated sidecar identity, never public
|
|
70
|
+
* `frontmatter.updated`. The payload is a CACHE: before promoting it, the
|
|
71
|
+
* caller re-reads the record and confirms the token AND body still match —
|
|
72
|
+
* a writer that merged the same target again in between makes this
|
|
73
|
+
* payload stale, and a stale body must never be promoted or become the
|
|
74
|
+
* reconciliation canon.
|
|
73
75
|
*/
|
|
74
76
|
committedRevision?: string;
|
|
77
|
+
/** #2813 (P1 B): sha256 hex digest of the durable memory file when committed. */
|
|
78
|
+
committedDigest?: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* #2807 (finding 1): the builder's null has two meanings the caller must
|
|
83
|
+
* not conflate. A REFUSED payload (degraded merge, target replaced
|
|
84
|
+
* mid-flight, retired record) means "no promotion is warranted" — the
|
|
85
|
+
* caller's destructive reconciliation may proceed on that conclusion. A
|
|
86
|
+
* payload that is UNKNOWN because the post-commit reread itself failed
|
|
87
|
+
* means no such conclusion was reached, so `readFailed` preserves the
|
|
88
|
+
* failure reason across the call boundary.
|
|
89
|
+
*/
|
|
90
|
+
export interface MergedTargetPromotionResult {
|
|
91
|
+
payload: MergedTargetPromotionPayload | null;
|
|
92
|
+
/** True when `payload` is null because the reread threw OR the CAS receipt
|
|
93
|
+
* sidecar was unreadable (#2813 P1 A) — the payload is unknown, not refused. */
|
|
94
|
+
readFailed: boolean;
|
|
75
95
|
}
|
|
76
96
|
|
|
77
97
|
/**
|
|
78
98
|
* Re-read the committed merge target (cold-aware id lookup — the same
|
|
79
99
|
* resolver the merge itself used) and derive the promotion payload solely
|
|
80
|
-
* from that record. Returns null when the record can no longer
|
|
81
|
-
* promotion (deleted, its body was replaced after the merge
|
|
82
|
-
* concurrent lifecycle operation archived/superseded it
|
|
83
|
-
* commit and this reread — promoting from a retired
|
|
84
|
-
* content that operation retired, final round B),
|
|
85
|
-
* merge whose provenance patch never landed (round
|
|
86
|
-
* trust-elevating consumer routes through; callers
|
|
87
|
-
* fail-open — the merge itself stands. Round N+18
|
|
88
|
-
* isolated fail-open — a locked secure store or
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
100
|
+
* from that record. Returns a null payload when the record can no longer
|
|
101
|
+
* ground the promotion (deleted, its body was replaced after the merge
|
|
102
|
+
* committed, or a concurrent lifecycle operation archived/superseded it
|
|
103
|
+
* between the merge commit and this reread — promoting from a retired
|
|
104
|
+
* record would resurrect content that operation retired, final round B),
|
|
105
|
+
* and null for a degraded merge whose provenance patch never landed (round
|
|
106
|
+
* N+7 A) — the gate every trust-elevating consumer routes through; callers
|
|
107
|
+
* then skip the promotion fail-open — the merge itself stands. Round N+18
|
|
108
|
+
* (B): the reread itself is isolated fail-open — a locked secure store or
|
|
109
|
+
* a corpus read I/O error resolves to a null payload with `readFailed:
|
|
110
|
+
* true` and a logged warn rather than a rejection, because the merge has
|
|
111
|
+
* already committed and the hash-index repair makes any retry dedupe
|
|
112
|
+
* against the committed body; an uncaught throw here would strand every
|
|
113
|
+
* remaining durable effect (thread episode, temporal/tag refresh, harmonic
|
|
114
|
+
* construction, graph rebuild, behavior signals, artifact write). #2807:
|
|
115
|
+
* the failure reason rides out on the result so reconciliation can tell an
|
|
116
|
+
* unknown payload from a refused one.
|
|
94
117
|
*/
|
|
95
118
|
export async function buildMergedTargetPromotionPayload(
|
|
96
119
|
storage: StorageManager,
|
|
97
120
|
merge: { targetId: string; mergedContent: string; provenancePatched: boolean },
|
|
98
|
-
): Promise<
|
|
121
|
+
): Promise<MergedTargetPromotionResult> {
|
|
99
122
|
// Round N+7 (A): a degraded merge's record still holds its pre-merge
|
|
100
123
|
// confidence, provenance, sources, and hash — a copy built off it would
|
|
101
124
|
// publish incoming claims under that stronger metadata. No promotion may
|
|
@@ -104,7 +127,7 @@ export async function buildMergedTargetPromotionPayload(
|
|
|
104
127
|
log.warn(
|
|
105
128
|
`semantic-merge: skipping merged-target promotion for ${merge.targetId} — provenance patch did not land; the record still holds pre-merge trust metadata`,
|
|
106
129
|
);
|
|
107
|
-
return null;
|
|
130
|
+
return { payload: null, readFailed: false };
|
|
108
131
|
}
|
|
109
132
|
let committed: MemoryFile | null;
|
|
110
133
|
try {
|
|
@@ -114,48 +137,104 @@ export async function buildMergedTargetPromotionPayload(
|
|
|
114
137
|
log.warn(
|
|
115
138
|
`semantic-merge: merged-target promotion reread failed for ${merge.targetId} (non-fatal; promotion skipped, the committed merge stands): ${err instanceof Error ? err.message : String(err)}`,
|
|
116
139
|
);
|
|
117
|
-
return null;
|
|
140
|
+
return { payload: null, readFailed: true };
|
|
141
|
+
}
|
|
142
|
+
if (!committed || committed.content !== merge.mergedContent) {
|
|
143
|
+
return { payload: null, readFailed: false };
|
|
118
144
|
}
|
|
119
|
-
if (!committed || committed.content !== merge.mergedContent) return null;
|
|
120
145
|
// Final round (B): the including-archived lookup still returns a retired
|
|
121
146
|
// record, and body equality alone cannot tell a concurrent archive or
|
|
122
147
|
// supersede apart from a live target. Recompute the status from the
|
|
123
148
|
// committed record itself and refuse to promote unless it is still
|
|
124
149
|
// active.
|
|
125
150
|
if (inferMemoryStatus(committed.frontmatter, committed.path) !== "active") {
|
|
126
|
-
return null;
|
|
151
|
+
return { payload: null, readFailed: false };
|
|
127
152
|
}
|
|
128
153
|
const fm = committed.frontmatter;
|
|
154
|
+
// #2813 (P1 B): promotion reads record metadata and digest, then receipt.
|
|
155
|
+
// Compare record snapshot digest to receipt's committed digest to catch
|
|
156
|
+
// interleaving metadata writers with same body/new metadata.
|
|
157
|
+
const snapshotDigest =
|
|
158
|
+
typeof storage.readDurableFileDigest === "function"
|
|
159
|
+
? await storage.readDurableFileDigest(committed.path).catch(() => null)
|
|
160
|
+
: null;
|
|
161
|
+
const receipt = await readPromotionReceiptStatus(storage, committed.path);
|
|
162
|
+
if (!receipt.available) {
|
|
163
|
+
log.warn(
|
|
164
|
+
`semantic-merge: merged-target promotion refused for ${merge.targetId} — the CAS revision receipt for ${committed.path} is unavailable (${receipt.reason}); promotion and reconciliation retry on the next merge`,
|
|
165
|
+
);
|
|
166
|
+
return { payload: null, readFailed: true };
|
|
167
|
+
}
|
|
168
|
+
if (receipt.committedDigest !== undefined && snapshotDigest !== receipt.committedDigest) {
|
|
169
|
+
log.warn(
|
|
170
|
+
snapshotDigest == null
|
|
171
|
+
? `semantic-merge: merged-target promotion refused for ${merge.targetId} — the record snapshot digest is unavailable while the CAS receipt carries committed digest ${receipt.committedDigest}; promotion and reconciliation retry on the next merge`
|
|
172
|
+
: `semantic-merge: merged-target promotion refused for ${merge.targetId} — record snapshot digest (${snapshotDigest}) does not match committed receipt digest (${receipt.committedDigest}); record metadata was mutated concurrently`,
|
|
173
|
+
);
|
|
174
|
+
return { payload: null, readFailed: true };
|
|
175
|
+
}
|
|
129
176
|
return {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
177
|
+
payload: {
|
|
178
|
+
category: fm.category,
|
|
179
|
+
content: committed.content,
|
|
180
|
+
confidence: fm.confidence,
|
|
181
|
+
tags: fm.tags ?? [],
|
|
182
|
+
sourceMemoryId: fm.id,
|
|
183
|
+
origin: parseOriginClass(fm.origin),
|
|
184
|
+
source: fm.source,
|
|
185
|
+
...(fm.entityRef !== undefined ? { entityRef: fm.entityRef } : {}),
|
|
186
|
+
...(fm.structuredAttributes !== undefined
|
|
187
|
+
? { structuredAttributes: { ...fm.structuredAttributes } }
|
|
188
|
+
: {}),
|
|
189
|
+
...(fm.importance !== undefined ? { importance: fm.importance } : {}),
|
|
190
|
+
...(fm.intentGoal !== undefined ? { intentGoal: fm.intentGoal } : {}),
|
|
191
|
+
...(fm.intentActionType !== undefined ? { intentActionType: fm.intentActionType } : {}),
|
|
192
|
+
...(fm.intentEntityTypes !== undefined
|
|
193
|
+
? { intentEntityTypes: [...fm.intentEntityTypes] }
|
|
194
|
+
: {}),
|
|
195
|
+
...(fm.memoryKind !== undefined ? { memoryKind: fm.memoryKind } : {}),
|
|
196
|
+
...(fm.valid_at !== undefined ? { validAt: fm.valid_at } : {}),
|
|
197
|
+
...(fm.invalid_at !== undefined ? { invalidAt: fm.invalid_at } : {}),
|
|
198
|
+
...(fm.observedAt !== undefined ? { observedAt: fm.observedAt } : {}),
|
|
199
|
+
...(fm.eventTimeSource !== undefined ? { eventTimeSource: fm.eventTimeSource } : {}),
|
|
200
|
+
...(fm.sources && fm.sources.length > 0
|
|
201
|
+
? { sources: fm.sources.map((source) => ({ ...source })) }
|
|
202
|
+
: {}),
|
|
203
|
+
...(fm.provenance !== undefined ? { provenance: fm.provenance } : {}),
|
|
204
|
+
...(fm.subject !== undefined ? { subject: fm.subject } : {}),
|
|
205
|
+
...(fm.toolScoped === true ? { toolScoped: true as const } : {}),
|
|
206
|
+
...(fm.sourceConnector !== undefined ? { sourceConnector: fm.sourceConnector } : {}),
|
|
207
|
+
...(receipt.revision !== undefined ? { committedRevision: receipt.revision } : {}),
|
|
208
|
+
...(receipt.committedDigest !== undefined
|
|
209
|
+
? { committedDigest: receipt.committedDigest }
|
|
210
|
+
: snapshotDigest !== null
|
|
211
|
+
? { committedDigest: snapshotDigest }
|
|
212
|
+
: {}),
|
|
213
|
+
},
|
|
214
|
+
readFailed: false,
|
|
160
215
|
};
|
|
161
216
|
}
|
|
217
|
+
|
|
218
|
+
/** #2813 (P1 A): read the standing receipt as a three-way truth for the
|
|
219
|
+
* promotion path. Present and absent are usable identities (absent = the
|
|
220
|
+
* target predates the sidecar); unavailable is not. A storage whose status
|
|
221
|
+
* probe itself throws reads as unavailable — never as absence. */
|
|
222
|
+
export async function readPromotionReceiptStatus(
|
|
223
|
+
storage: Pick<StorageManager, "readCasRevisionStatus">,
|
|
224
|
+
filePath: string,
|
|
225
|
+
): Promise<
|
|
226
|
+
| { available: true; revision: string | undefined; committedDigest?: string }
|
|
227
|
+
| { available: false; reason: string }
|
|
228
|
+
> {
|
|
229
|
+
try {
|
|
230
|
+
const status = await storage.readCasRevisionStatus(filePath);
|
|
231
|
+
if (status.status === "unavailable") return { available: false, reason: status.reason };
|
|
232
|
+
return {
|
|
233
|
+
available: true,
|
|
234
|
+
revision: status.status === "present" ? status.revision : undefined,
|
|
235
|
+
committedDigest: status.status === "present" ? status.committedDigest : undefined,
|
|
236
|
+
};
|
|
237
|
+
} catch (err) {
|
|
238
|
+
return { available: false, reason: err instanceof Error ? err.message : String(err) };
|
|
239
|
+
}
|
|
240
|
+
}
|
package/src/orchestrator.ts
CHANGED
|
@@ -857,6 +857,7 @@ export class Orchestrator {
|
|
|
857
857
|
indexPersistedMemory: (storage, memoryId) => this.indexPersistedMemory(storage, memoryId),
|
|
858
858
|
buildGraphEdge: (storage, memoryRelPath, entityRef, memoryId, factContent, allMemsForGraph, memoryPathById, threadIdForEdge, threadEpisodeIdsForGraph, fallbackCausalPredecessor, graphCaps) =>
|
|
859
859
|
this.buildGraphEdge(storage, memoryRelPath, entityRef, memoryId, factContent, allMemsForGraph, memoryPathById, threadIdForEdge, threadEpisodeIdsForGraph, fallbackCausalPredecessor, graphCaps),
|
|
860
|
+
invalidateGraphEdgeCache: (storage) => this.graphIndexFor(storage).invalidateEdgeCache(),
|
|
860
861
|
updateTemporalTagIndexes: (storage, persistedIds) =>
|
|
861
862
|
this.updateTemporalTagIndexes(storage, persistedIds),
|
|
862
863
|
});
|
|
@@ -3227,32 +3228,21 @@ export class Orchestrator {
|
|
|
3227
3228
|
);
|
|
3228
3229
|
}
|
|
3229
3230
|
|
|
3231
|
+
/** Delegation wrapper so the persist wiring and root-test stubs route through `this` (#2813 CI-0). */
|
|
3230
3232
|
private async buildGraphEdge(
|
|
3231
3233
|
storage: StorageManager,
|
|
3232
3234
|
memoryRelPath: string,
|
|
3233
3235
|
entityRef: string | undefined,
|
|
3234
3236
|
memoryId: string,
|
|
3235
3237
|
factContent: string,
|
|
3236
|
-
allMemsForGraph:
|
|
3238
|
+
allMemsForGraph: MemoryFile[] | null | undefined,
|
|
3237
3239
|
memoryPathById: Map<string, string>,
|
|
3238
3240
|
threadIdForEdge: string | undefined,
|
|
3239
3241
|
threadEpisodeIdsForGraph: string[] | undefined,
|
|
3240
3242
|
fallbackCausalPredecessor: string | undefined,
|
|
3241
3243
|
graphCaps: GraphConstructionCapabilitySet = resolveGraphConstructionCapabilities(this.config),
|
|
3242
3244
|
): Promise<GraphEdge[]> {
|
|
3243
|
-
return this.persistenceIndexCoordinator.buildGraphEdge(
|
|
3244
|
-
storage,
|
|
3245
|
-
memoryRelPath,
|
|
3246
|
-
entityRef,
|
|
3247
|
-
memoryId,
|
|
3248
|
-
factContent,
|
|
3249
|
-
allMemsForGraph,
|
|
3250
|
-
memoryPathById,
|
|
3251
|
-
threadIdForEdge,
|
|
3252
|
-
threadEpisodeIdsForGraph,
|
|
3253
|
-
fallbackCausalPredecessor,
|
|
3254
|
-
graphCaps,
|
|
3255
|
-
);
|
|
3245
|
+
return this.persistenceIndexCoordinator.buildGraphEdge(storage, memoryRelPath, entityRef, memoryId, factContent, allMemsForGraph, memoryPathById, threadIdForEdge, threadEpisodeIdsForGraph, fallbackCausalPredecessor, graphCaps);
|
|
3256
3246
|
}
|
|
3257
3247
|
|
|
3258
3248
|
private graphIndexFor(storage: StorageManager): GraphIndex {
|
|
@@ -3423,27 +3413,9 @@ export class Orchestrator {
|
|
|
3423
3413
|
);
|
|
3424
3414
|
}
|
|
3425
3415
|
|
|
3426
|
-
private publishRecallResults(
|
|
3427
|
-
|
|
3428
|
-
|
|
3429
|
-
sectionBuckets: RecallSectionBuckets;
|
|
3430
|
-
retrievalQuery: string;
|
|
3431
|
-
sessionKey: string | undefined;
|
|
3432
|
-
identityInjection?: {
|
|
3433
|
-
mode: IdentityInjectionMode | "none";
|
|
3434
|
-
injectedChars: number;
|
|
3435
|
-
truncated: boolean;
|
|
3436
|
-
};
|
|
3437
|
-
/**
|
|
3438
|
-
* Issue #1577 — per-recall trust map. When present, quarantined items
|
|
3439
|
-
* are filtered from injection on EVERY recall path (hot QMD, embedding
|
|
3440
|
-
* fallback, cold archive, recent) so a faithfulness-contradicted memory
|
|
3441
|
-
* cannot sneak in via a branch that bypasses trust scoring (review:
|
|
3442
|
-
* fallback paths bypass trust). The map is also threaded to
|
|
3443
|
-
* formatQmdResults for the epistemic hedge.
|
|
3444
|
-
*/
|
|
3445
|
-
trustByPath?: Map<string, TrustStageResultItem> | null;
|
|
3446
|
-
}): void {
|
|
3416
|
+
private publishRecallResults(
|
|
3417
|
+
options: Parameters<RecallEntryCoordinator["publishRecallResults"]>[0],
|
|
3418
|
+
): void {
|
|
3447
3419
|
return (this.recallEntryCoordinator ?? new RecallEntryCoordinator(
|
|
3448
3420
|
selfDeps<ConstructorParameters<typeof RecallEntryCoordinator>[0]>(this),
|
|
3449
3421
|
)).publishRecallResults(
|