@remnic/core 10.0.63 → 10.0.65
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.js +46 -46
- package/dist/access-authorization-probe.js +47 -47
- package/dist/access-boundary.js +46 -46
- package/dist/access-cli.js +96 -96
- package/dist/access-extraction-force-flush.js +46 -46
- package/dist/access-http-briefing.js +47 -47
- package/dist/access-http-query.js +48 -48
- package/dist/access-http.js +66 -66
- package/dist/access-identity-continuity-surface.js +46 -46
- package/dist/access-lcm-surface.js +46 -46
- package/dist/access-mcp.js +58 -58
- package/dist/access-namespace-preflight.js +46 -46
- package/dist/access-observe-write-category.js +11 -11
- package/dist/access-observe-write-surface.js +46 -46
- package/dist/access-offline-manifest.js +10 -10
- package/dist/access-operations-batch.js +50 -50
- package/dist/access-operations.js +57 -57
- package/dist/access-recall-concurrency.js +46 -46
- package/dist/access-recall-response.js +46 -46
- package/dist/access-recall-surface.js +46 -46
- package/dist/access-schema.js +6 -6
- package/dist/access-service.js +46 -46
- package/dist/access-surface-catalog.js +48 -48
- package/dist/active-recall.js +21 -21
- package/dist/{auto-sync-UQQ6YJSB.js → auto-sync-ANOJDQD4.js} +7 -7
- package/dist/briefing.js +14 -14
- package/dist/buffer.js +7 -7
- package/dist/{capsule-merge-D4BTIJGK.js → capsule-merge-XVTQJJ6R.js} +4 -4
- package/dist/capture-write-lock.js +2 -2
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +17 -17
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.js +3 -3
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-S4OZKPBS.js → chunk-2D7BTSDW.js} +2 -2
- package/dist/{chunk-WB3OFPM2.js → chunk-2DNFRLLL.js} +3 -3
- package/dist/{chunk-EKPRLTAE.js → chunk-2RUTN7PR.js} +2 -2
- package/dist/{chunk-EAALT5NB.js → chunk-2ZSRACNK.js} +42 -42
- package/dist/{chunk-X4PAATLA.js → chunk-3LBDEGQA.js} +4 -4
- package/dist/{chunk-2U7ZDC2E.js → chunk-3LSTL6EY.js} +2 -2
- package/dist/{chunk-QCAJMIAE.js → chunk-434E4BTO.js} +3 -3
- package/dist/{chunk-TPKB7T6Z.js → chunk-4XINO77L.js} +2 -2
- package/dist/{chunk-EADUOZWH.js → chunk-5JABRT5G.js} +5 -5
- package/dist/{chunk-6I6DFULH.js → chunk-5KDDAQ6K.js} +2 -2
- package/dist/{chunk-YDIOMDBW.js → chunk-5QV6CE6K.js} +3 -3
- package/dist/{chunk-QI7LLSWX.js → chunk-5UEGL5BF.js} +3 -3
- package/dist/{chunk-TMWSCE2L.js → chunk-5ZHFPUBC.js} +11 -11
- package/dist/{chunk-TUCEP2LS.js → chunk-63A2BU2B.js} +2 -2
- package/dist/{chunk-264B57GV.js → chunk-6D3IWYNY.js} +71 -88
- package/dist/chunk-6D3IWYNY.js.map +1 -0
- package/dist/{chunk-HJ3UTGIW.js → chunk-6P7U3HWG.js} +4 -4
- package/dist/{chunk-UEDC2VGP.js → chunk-7JYK7NNY.js} +2 -2
- package/dist/{chunk-IWAB7JVH.js → chunk-7ZTGMEXF.js} +2 -2
- package/dist/{chunk-QYAXMXOB.js → chunk-A7BM2JTH.js} +2 -2
- package/dist/{chunk-HSHLDSPX.js → chunk-AUFPPBC3.js} +3 -3
- package/dist/{chunk-QJ6IR35B.js → chunk-B7VD36TI.js} +4 -4
- package/dist/{chunk-ECT5ME6X.js → chunk-BBHKN2CN.js} +2 -2
- package/dist/{chunk-WA6XRNWE.js → chunk-BH7NVSEC.js} +4 -4
- package/dist/{chunk-QIMGULGN.js → chunk-BNZAR6PO.js} +2 -2
- package/dist/{chunk-C5OW2FFB.js → chunk-BOZQAUAJ.js} +2 -2
- package/dist/{chunk-WJCXUE2J.js → chunk-BV2BRHD4.js} +5 -5
- package/dist/{chunk-Z2T5BPOZ.js → chunk-CIEEYVUB.js} +2 -2
- package/dist/{chunk-PA6ZNFB7.js → chunk-CLSKGTAT.js} +2 -2
- package/dist/{chunk-YRL4PGPP.js → chunk-DRTSPRWL.js} +2 -2
- package/dist/{chunk-ZRSXXWIX.js → chunk-E4QIX2OB.js} +3 -3
- package/dist/{chunk-EBRG7ZIK.js → chunk-EBV6VXKF.js} +24 -2
- package/dist/{chunk-EBRG7ZIK.js.map → chunk-EBV6VXKF.js.map} +1 -1
- package/dist/{chunk-X2ZLHUEO.js → chunk-ECF627KC.js} +2 -2
- package/dist/{chunk-XICJL56Z.js → chunk-EI6M5NVK.js} +2 -2
- package/dist/{chunk-564YP3DW.js → chunk-ER7XANP3.js} +3 -3
- package/dist/{chunk-ILMB3X4X.js → chunk-FKGLJJVS.js} +3 -3
- package/dist/{chunk-L74VVEJA.js → chunk-FR7PK7ED.js} +3 -3
- package/dist/{chunk-UXRCORZX.js → chunk-FUDKGJDN.js} +2 -2
- package/dist/{chunk-GNEB3WXR.js → chunk-G6L3REL3.js} +2 -2
- package/dist/{chunk-4P4VLPGB.js → chunk-GKL6QYZO.js} +1 -1
- package/dist/{chunk-IMNJJKHW.js → chunk-GRAUQXQB.js} +28 -28
- package/dist/{chunk-JVFYP2LD.js → chunk-GROHOWR5.js} +2 -2
- package/dist/{chunk-LIUI46BX.js → chunk-H6VJSITJ.js} +2 -2
- package/dist/{chunk-YGM47S7M.js → chunk-HFEGRMFG.js} +8 -8
- package/dist/{chunk-A6JV3WHI.js → chunk-HG3CG557.js} +2 -2
- package/dist/{chunk-7JFXXA57.js → chunk-HHL4MX3W.js} +2 -2
- package/dist/{chunk-53OWLEAD.js → chunk-HNOSWPKG.js} +2 -2
- package/dist/{chunk-IJKBIOWL.js → chunk-HOR4RMUM.js} +25 -25
- package/dist/{chunk-WZEDFDJ6.js → chunk-HRRAOTOQ.js} +15 -15
- package/dist/{chunk-A5L5KGDI.js → chunk-IAYUTGF2.js} +2 -2
- package/dist/{chunk-WVEEVYMH.js → chunk-IGOW4TJE.js} +3 -3
- package/dist/{chunk-MKE5DP3S.js → chunk-IHCXMYSE.js} +2 -2
- package/dist/{chunk-SDXBR5QO.js → chunk-IZJQNDGI.js} +2 -2
- package/dist/{chunk-BQOOUKEN.js → chunk-JL5HXL25.js} +6 -6
- package/dist/{chunk-ZFU2B2GM.js → chunk-JPY3RMG2.js} +5 -5
- package/dist/{chunk-TWRPWJJT.js → chunk-JRVMCZE3.js} +2 -2
- package/dist/{chunk-FYPKSR6Z.js → chunk-KISOMGY2.js} +2 -2
- package/dist/{chunk-J62O2UW5.js → chunk-KNMSD2MQ.js} +2 -2
- package/dist/{chunk-MTVC5S5N.js → chunk-KO224R36.js} +2 -2
- package/dist/{chunk-UFQB5VQ5.js → chunk-KQJUEQ2E.js} +7 -7
- package/dist/{chunk-QNIYL5SK.js → chunk-KQLBXUUQ.js} +2 -2
- package/dist/{chunk-W5EO4USJ.js → chunk-KQUSP6LB.js} +2 -2
- package/dist/{chunk-BDNPW3KM.js → chunk-KYSSUY66.js} +4 -4
- package/dist/{chunk-R25JMO5O.js → chunk-LDHR465K.js} +2 -2
- package/dist/{chunk-CYEEVWQ6.js → chunk-LIGZO7XN.js} +2 -2
- package/dist/{chunk-QKXPOLQD.js → chunk-M4IEZGCK.js} +2 -2
- package/dist/{chunk-Q3DAWUAV.js → chunk-MRF5V5CD.js} +2 -2
- package/dist/{chunk-HTTZ3GJ6.js → chunk-MUHGYV2V.js} +2 -2
- package/dist/{chunk-HNZH57JK.js → chunk-N4T5FW6U.js} +2 -2
- package/dist/{chunk-YLB7TW2B.js → chunk-NM2II57L.js} +4 -4
- package/dist/{chunk-3VNRDRBM.js → chunk-OVL5AD3N.js} +2 -2
- package/dist/{chunk-3HLWLYRD.js → chunk-P2EM5LKH.js} +2 -2
- package/dist/{chunk-XL2EE5W3.js → chunk-PLCYKAWH.js} +2 -2
- package/dist/{chunk-JIYJIH5N.js → chunk-QDZWQBLU.js} +3 -3
- package/dist/{chunk-YXW4KXCV.js → chunk-QGJSBU4R.js} +2 -2
- package/dist/{chunk-DM5QZ3YU.js → chunk-QGVCFVX6.js} +2 -2
- package/dist/{chunk-VSHWPOUB.js → chunk-RJWL3RHB.js} +2 -2
- package/dist/{chunk-WU5WTCH5.js → chunk-RZH5RVJC.js} +3 -3
- package/dist/{chunk-76LKZ42K.js → chunk-SHHZWSSE.js} +2 -2
- package/dist/{chunk-N7CATBYH.js → chunk-SNS3DWG6.js} +2 -2
- package/dist/{chunk-IVJI5FDA.js → chunk-T22FBDG3.js} +2 -2
- package/dist/{chunk-YH7HJNWV.js → chunk-TGQW3AMK.js} +4 -4
- package/dist/{chunk-KQXRVELF.js → chunk-TIGYOZBU.js} +2 -2
- package/dist/{chunk-Z45353ML.js → chunk-UH6ROXFJ.js} +2 -2
- package/dist/{chunk-C2AYUXEF.js → chunk-UYUFDTIX.js} +2 -2
- package/dist/{chunk-2AKIVSHP.js → chunk-W26D2USW.js} +2 -2
- package/dist/{chunk-FZVZYU5C.js → chunk-W7K5BP3M.js} +3 -3
- package/dist/{chunk-ZARHK7PT.js → chunk-WWH7GJ42.js} +2 -2
- package/dist/{chunk-4NLHEE2Z.js → chunk-XLCEFUAU.js} +2 -2
- package/dist/{chunk-PWEIZCPS.js → chunk-XOFIJGB2.js} +2 -2
- package/dist/{chunk-6VBKU3FY.js → chunk-XVQVF2TK.js} +18 -12
- package/dist/chunk-XVQVF2TK.js.map +1 -0
- package/dist/{chunk-TRSKATZQ.js → chunk-XZ66U5M3.js} +2 -2
- package/dist/{chunk-UUZ7KZAO.js → chunk-Y33KJ556.js} +2 -2
- package/dist/{chunk-BU4W2ISH.js → chunk-YJQJRXUI.js} +2 -2
- package/dist/{chunk-QBK3IM6W.js → chunk-YSATDEBY.js} +2 -2
- package/dist/{chunk-WR5POHQ3.js → chunk-YUTT4ZTI.js} +2 -2
- package/dist/{chunk-JCL7RO2G.js → chunk-ZOBYTRBU.js} +2 -2
- package/dist/{chunk-FMOUUWQN.js → chunk-ZPLQ27MY.js} +3 -3
- package/dist/cli.js +81 -81
- package/dist/coding/export-okf-codegraph.js +14 -14
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.js +16 -16
- package/dist/config.js +21 -21
- package/dist/connectors/codex-materialize-runner.js +14 -14
- package/dist/connectors/index.js +14 -14
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.js +3 -3
- package/dist/contradiction/index.js +5 -5
- package/dist/convergence-refresh.js +16 -16
- package/dist/corpus-watermark.js +16 -16
- package/dist/deep-recall-http-glue.js +7 -7
- package/dist/embedding-fallback.js +3 -3
- package/dist/embedding-generation-lock.js +2 -2
- package/dist/{entity-canonical-id-migration-CUDCKWPF.js → entity-canonical-id-migration-JJSTZF73.js} +4 -4
- package/dist/entity-retrieval.js +14 -14
- package/dist/explicit-capture.js +8 -8
- package/dist/external-wiki-access.js +47 -47
- package/dist/extraction.js +18 -18
- package/dist/{forget-E6ZTUKEC.js → forget-DE56ICCL.js} +3 -3
- package/dist/{graph-edge-decay-2BZTY2IM.js → graph-edge-decay-OEX5OGMI.js} +6 -6
- package/dist/graph-jsonl.js +4 -4
- package/dist/graph-snapshot.js +4 -4
- package/dist/graph-write-lock.js +2 -2
- package/dist/graph.js +3 -3
- package/dist/harmonic-retrieval.js +14 -14
- package/dist/index.js +96 -96
- package/dist/location/index.js +17 -17
- package/dist/maintenance/memory-governance.js +14 -14
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +14 -14
- package/dist/maintenance/rebuild-memory-projection-runner.js +16 -16
- package/dist/maintenance/rebuild-memory-projection.js +15 -15
- package/dist/memory-browse-operations.js +47 -47
- package/dist/memory-subject.js +3 -3
- package/dist/namespaces/migrate.js +15 -15
- package/dist/namespaces/storage.js +14 -14
- package/dist/offline-sync-changeset-generations.js +4 -4
- package/dist/offline-sync-embedding-generation.js +3 -3
- package/dist/offline-sync-impression-drain.js +3 -3
- package/dist/offline-sync-snapshot-stream.js +6 -6
- package/dist/offline-sync.js +5 -5
- package/dist/operator-doctor-corpus.js +17 -17
- package/dist/operator-toolkit.js +33 -33
- package/dist/orchestration/buffer-drain-runner.js +96 -96
- package/dist/orchestration/extraction-run-helpers.d.ts +0 -3
- package/dist/orchestration/extraction-run-helpers.d.ts.map +1 -1
- package/dist/orchestration/extraction-run.d.ts +4 -2
- package/dist/orchestration/extraction-run.d.ts.map +1 -1
- package/dist/orchestration/maintenance.js +26 -26
- package/dist/orchestrator.js +96 -96
- package/dist/page-versioning.js +3 -3
- package/dist/recall-navigation-operations.js +47 -47
- package/dist/recall-navigation.js +46 -46
- package/dist/recall-state.js +2 -2
- package/dist/reconcile/manifest.js +3 -3
- package/dist/{resolution-NNYG37YB.js → resolution-BNWE5Y25.js} +6 -6
- package/dist/resume-bundles.js +22 -22
- package/dist/salvage-envelope.js +5 -5
- package/dist/semantic-consolidation.js +15 -15
- package/dist/semantic-rule-promotion.js +14 -14
- package/dist/semantic-rule-verifier.js +14 -14
- package/dist/source-agent-qualifier.js +17 -17
- package/dist/standup/build.js +14 -14
- package/dist/storage/buffer-drain-claims.js +2 -2
- package/dist/storage/buffer-session-files.js +2 -2
- package/dist/storage.d.ts +1 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +13 -13
- package/dist/subject-config.js +4 -4
- package/dist/summarizer.js +3 -3
- package/dist/summary-snapshot.js +2 -2
- package/dist/support-passport/index.js +49 -49
- package/dist/transfer/capsule-import.js +4 -4
- package/dist/transfer/export-okf.js +14 -14
- package/dist/utils/serialize-mutations.d.ts +13 -0
- package/dist/utils/serialize-mutations.d.ts.map +1 -1
- package/dist/utils/serialize-mutations.js +3 -1
- package/dist/verified-recall.js +14 -14
- package/dist/who-knows-cli.js +15 -15
- package/dist/who-knows.js +14 -14
- package/dist/write-envelope.js +4 -4
- package/package.json +2 -2
- package/src/orchestration/extraction-run-helpers.ts +33 -52
- package/src/orchestration/extraction-run.ts +54 -54
- package/src/orchestrator-flush.test.ts +103 -79
- package/src/storage-update-meta.test.ts +114 -0
- package/src/storage.ts +7 -6
- package/src/utils/serialize-mutations.ts +53 -0
- package/dist/chunk-264B57GV.js.map +0 -1
- package/dist/chunk-6VBKU3FY.js.map +0 -1
- /package/dist/{auto-sync-UQQ6YJSB.js.map → auto-sync-ANOJDQD4.js.map} +0 -0
- /package/dist/{capsule-merge-D4BTIJGK.js.map → capsule-merge-XVTQJJ6R.js.map} +0 -0
- /package/dist/{chunk-S4OZKPBS.js.map → chunk-2D7BTSDW.js.map} +0 -0
- /package/dist/{chunk-WB3OFPM2.js.map → chunk-2DNFRLLL.js.map} +0 -0
- /package/dist/{chunk-EKPRLTAE.js.map → chunk-2RUTN7PR.js.map} +0 -0
- /package/dist/{chunk-EAALT5NB.js.map → chunk-2ZSRACNK.js.map} +0 -0
- /package/dist/{chunk-X4PAATLA.js.map → chunk-3LBDEGQA.js.map} +0 -0
- /package/dist/{chunk-2U7ZDC2E.js.map → chunk-3LSTL6EY.js.map} +0 -0
- /package/dist/{chunk-QCAJMIAE.js.map → chunk-434E4BTO.js.map} +0 -0
- /package/dist/{chunk-TPKB7T6Z.js.map → chunk-4XINO77L.js.map} +0 -0
- /package/dist/{chunk-EADUOZWH.js.map → chunk-5JABRT5G.js.map} +0 -0
- /package/dist/{chunk-6I6DFULH.js.map → chunk-5KDDAQ6K.js.map} +0 -0
- /package/dist/{chunk-YDIOMDBW.js.map → chunk-5QV6CE6K.js.map} +0 -0
- /package/dist/{chunk-QI7LLSWX.js.map → chunk-5UEGL5BF.js.map} +0 -0
- /package/dist/{chunk-TMWSCE2L.js.map → chunk-5ZHFPUBC.js.map} +0 -0
- /package/dist/{chunk-TUCEP2LS.js.map → chunk-63A2BU2B.js.map} +0 -0
- /package/dist/{chunk-HJ3UTGIW.js.map → chunk-6P7U3HWG.js.map} +0 -0
- /package/dist/{chunk-UEDC2VGP.js.map → chunk-7JYK7NNY.js.map} +0 -0
- /package/dist/{chunk-IWAB7JVH.js.map → chunk-7ZTGMEXF.js.map} +0 -0
- /package/dist/{chunk-QYAXMXOB.js.map → chunk-A7BM2JTH.js.map} +0 -0
- /package/dist/{chunk-HSHLDSPX.js.map → chunk-AUFPPBC3.js.map} +0 -0
- /package/dist/{chunk-QJ6IR35B.js.map → chunk-B7VD36TI.js.map} +0 -0
- /package/dist/{chunk-ECT5ME6X.js.map → chunk-BBHKN2CN.js.map} +0 -0
- /package/dist/{chunk-WA6XRNWE.js.map → chunk-BH7NVSEC.js.map} +0 -0
- /package/dist/{chunk-QIMGULGN.js.map → chunk-BNZAR6PO.js.map} +0 -0
- /package/dist/{chunk-C5OW2FFB.js.map → chunk-BOZQAUAJ.js.map} +0 -0
- /package/dist/{chunk-WJCXUE2J.js.map → chunk-BV2BRHD4.js.map} +0 -0
- /package/dist/{chunk-Z2T5BPOZ.js.map → chunk-CIEEYVUB.js.map} +0 -0
- /package/dist/{chunk-PA6ZNFB7.js.map → chunk-CLSKGTAT.js.map} +0 -0
- /package/dist/{chunk-YRL4PGPP.js.map → chunk-DRTSPRWL.js.map} +0 -0
- /package/dist/{chunk-ZRSXXWIX.js.map → chunk-E4QIX2OB.js.map} +0 -0
- /package/dist/{chunk-X2ZLHUEO.js.map → chunk-ECF627KC.js.map} +0 -0
- /package/dist/{chunk-XICJL56Z.js.map → chunk-EI6M5NVK.js.map} +0 -0
- /package/dist/{chunk-564YP3DW.js.map → chunk-ER7XANP3.js.map} +0 -0
- /package/dist/{chunk-ILMB3X4X.js.map → chunk-FKGLJJVS.js.map} +0 -0
- /package/dist/{chunk-L74VVEJA.js.map → chunk-FR7PK7ED.js.map} +0 -0
- /package/dist/{chunk-UXRCORZX.js.map → chunk-FUDKGJDN.js.map} +0 -0
- /package/dist/{chunk-GNEB3WXR.js.map → chunk-G6L3REL3.js.map} +0 -0
- /package/dist/{chunk-4P4VLPGB.js.map → chunk-GKL6QYZO.js.map} +0 -0
- /package/dist/{chunk-IMNJJKHW.js.map → chunk-GRAUQXQB.js.map} +0 -0
- /package/dist/{chunk-JVFYP2LD.js.map → chunk-GROHOWR5.js.map} +0 -0
- /package/dist/{chunk-LIUI46BX.js.map → chunk-H6VJSITJ.js.map} +0 -0
- /package/dist/{chunk-YGM47S7M.js.map → chunk-HFEGRMFG.js.map} +0 -0
- /package/dist/{chunk-A6JV3WHI.js.map → chunk-HG3CG557.js.map} +0 -0
- /package/dist/{chunk-7JFXXA57.js.map → chunk-HHL4MX3W.js.map} +0 -0
- /package/dist/{chunk-53OWLEAD.js.map → chunk-HNOSWPKG.js.map} +0 -0
- /package/dist/{chunk-IJKBIOWL.js.map → chunk-HOR4RMUM.js.map} +0 -0
- /package/dist/{chunk-WZEDFDJ6.js.map → chunk-HRRAOTOQ.js.map} +0 -0
- /package/dist/{chunk-A5L5KGDI.js.map → chunk-IAYUTGF2.js.map} +0 -0
- /package/dist/{chunk-WVEEVYMH.js.map → chunk-IGOW4TJE.js.map} +0 -0
- /package/dist/{chunk-MKE5DP3S.js.map → chunk-IHCXMYSE.js.map} +0 -0
- /package/dist/{chunk-SDXBR5QO.js.map → chunk-IZJQNDGI.js.map} +0 -0
- /package/dist/{chunk-BQOOUKEN.js.map → chunk-JL5HXL25.js.map} +0 -0
- /package/dist/{chunk-ZFU2B2GM.js.map → chunk-JPY3RMG2.js.map} +0 -0
- /package/dist/{chunk-TWRPWJJT.js.map → chunk-JRVMCZE3.js.map} +0 -0
- /package/dist/{chunk-FYPKSR6Z.js.map → chunk-KISOMGY2.js.map} +0 -0
- /package/dist/{chunk-J62O2UW5.js.map → chunk-KNMSD2MQ.js.map} +0 -0
- /package/dist/{chunk-MTVC5S5N.js.map → chunk-KO224R36.js.map} +0 -0
- /package/dist/{chunk-UFQB5VQ5.js.map → chunk-KQJUEQ2E.js.map} +0 -0
- /package/dist/{chunk-QNIYL5SK.js.map → chunk-KQLBXUUQ.js.map} +0 -0
- /package/dist/{chunk-W5EO4USJ.js.map → chunk-KQUSP6LB.js.map} +0 -0
- /package/dist/{chunk-BDNPW3KM.js.map → chunk-KYSSUY66.js.map} +0 -0
- /package/dist/{chunk-R25JMO5O.js.map → chunk-LDHR465K.js.map} +0 -0
- /package/dist/{chunk-CYEEVWQ6.js.map → chunk-LIGZO7XN.js.map} +0 -0
- /package/dist/{chunk-QKXPOLQD.js.map → chunk-M4IEZGCK.js.map} +0 -0
- /package/dist/{chunk-Q3DAWUAV.js.map → chunk-MRF5V5CD.js.map} +0 -0
- /package/dist/{chunk-HTTZ3GJ6.js.map → chunk-MUHGYV2V.js.map} +0 -0
- /package/dist/{chunk-HNZH57JK.js.map → chunk-N4T5FW6U.js.map} +0 -0
- /package/dist/{chunk-YLB7TW2B.js.map → chunk-NM2II57L.js.map} +0 -0
- /package/dist/{chunk-3VNRDRBM.js.map → chunk-OVL5AD3N.js.map} +0 -0
- /package/dist/{chunk-3HLWLYRD.js.map → chunk-P2EM5LKH.js.map} +0 -0
- /package/dist/{chunk-XL2EE5W3.js.map → chunk-PLCYKAWH.js.map} +0 -0
- /package/dist/{chunk-JIYJIH5N.js.map → chunk-QDZWQBLU.js.map} +0 -0
- /package/dist/{chunk-YXW4KXCV.js.map → chunk-QGJSBU4R.js.map} +0 -0
- /package/dist/{chunk-DM5QZ3YU.js.map → chunk-QGVCFVX6.js.map} +0 -0
- /package/dist/{chunk-VSHWPOUB.js.map → chunk-RJWL3RHB.js.map} +0 -0
- /package/dist/{chunk-WU5WTCH5.js.map → chunk-RZH5RVJC.js.map} +0 -0
- /package/dist/{chunk-76LKZ42K.js.map → chunk-SHHZWSSE.js.map} +0 -0
- /package/dist/{chunk-N7CATBYH.js.map → chunk-SNS3DWG6.js.map} +0 -0
- /package/dist/{chunk-IVJI5FDA.js.map → chunk-T22FBDG3.js.map} +0 -0
- /package/dist/{chunk-YH7HJNWV.js.map → chunk-TGQW3AMK.js.map} +0 -0
- /package/dist/{chunk-KQXRVELF.js.map → chunk-TIGYOZBU.js.map} +0 -0
- /package/dist/{chunk-Z45353ML.js.map → chunk-UH6ROXFJ.js.map} +0 -0
- /package/dist/{chunk-C2AYUXEF.js.map → chunk-UYUFDTIX.js.map} +0 -0
- /package/dist/{chunk-2AKIVSHP.js.map → chunk-W26D2USW.js.map} +0 -0
- /package/dist/{chunk-FZVZYU5C.js.map → chunk-W7K5BP3M.js.map} +0 -0
- /package/dist/{chunk-ZARHK7PT.js.map → chunk-WWH7GJ42.js.map} +0 -0
- /package/dist/{chunk-4NLHEE2Z.js.map → chunk-XLCEFUAU.js.map} +0 -0
- /package/dist/{chunk-PWEIZCPS.js.map → chunk-XOFIJGB2.js.map} +0 -0
- /package/dist/{chunk-TRSKATZQ.js.map → chunk-XZ66U5M3.js.map} +0 -0
- /package/dist/{chunk-UUZ7KZAO.js.map → chunk-Y33KJ556.js.map} +0 -0
- /package/dist/{chunk-BU4W2ISH.js.map → chunk-YJQJRXUI.js.map} +0 -0
- /package/dist/{chunk-QBK3IM6W.js.map → chunk-YSATDEBY.js.map} +0 -0
- /package/dist/{chunk-WR5POHQ3.js.map → chunk-YUTT4ZTI.js.map} +0 -0
- /package/dist/{chunk-JCL7RO2G.js.map → chunk-ZOBYTRBU.js.map} +0 -0
- /package/dist/{chunk-FMOUUWQN.js.map → chunk-ZPLQ27MY.js.map} +0 -0
- /package/dist/{entity-canonical-id-migration-CUDCKWPF.js.map → entity-canonical-id-migration-JJSTZF73.js.map} +0 -0
- /package/dist/{forget-E6ZTUKEC.js.map → forget-DE56ICCL.js.map} +0 -0
- /package/dist/{graph-edge-decay-2BZTY2IM.js.map → graph-edge-decay-OEX5OGMI.js.map} +0 -0
- /package/dist/{resolution-NNYG37YB.js.map → resolution-BNWE5Y25.js.map} +0 -0
package/dist/who-knows-cli.js
CHANGED
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
renderWhoKnows,
|
|
5
5
|
renderWhoKnowsJson,
|
|
6
6
|
renderWhoKnowsText
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-HG3CG557.js";
|
|
8
|
+
import "./chunk-LDHR465K.js";
|
|
9
|
+
import "./chunk-XVQVF2TK.js";
|
|
10
10
|
import "./chunk-UHVXE24Y.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-QGVCFVX6.js";
|
|
12
|
+
import "./chunk-IGOW4TJE.js";
|
|
13
|
+
import "./chunk-ZOBYTRBU.js";
|
|
14
14
|
import "./chunk-G6OFEGUR.js";
|
|
15
15
|
import "./chunk-OH55F76C.js";
|
|
16
16
|
import "./chunk-L334PSLW.js";
|
|
@@ -36,7 +36,7 @@ import "./chunk-LDXUBPMO.js";
|
|
|
36
36
|
import "./chunk-FF6N7BXC.js";
|
|
37
37
|
import "./chunk-WXPBDEMW.js";
|
|
38
38
|
import "./chunk-AAD2ZS6P.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-BV2BRHD4.js";
|
|
40
40
|
import "./chunk-ZIKENA2C.js";
|
|
41
41
|
import "./chunk-YXZG5TVN.js";
|
|
42
42
|
import "./chunk-3OUGSOJP.js";
|
|
@@ -46,16 +46,16 @@ import "./chunk-3WU7XOFN.js";
|
|
|
46
46
|
import "./chunk-P4GUQSK3.js";
|
|
47
47
|
import "./chunk-4LZ7SVKM.js";
|
|
48
48
|
import "./chunk-YHTG64XV.js";
|
|
49
|
-
import "./chunk-
|
|
49
|
+
import "./chunk-ER7XANP3.js";
|
|
50
50
|
import "./chunk-M5GVCJSJ.js";
|
|
51
51
|
import "./chunk-RBOJCG4T.js";
|
|
52
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-IAYUTGF2.js";
|
|
53
53
|
import "./chunk-5WITETWU.js";
|
|
54
54
|
import "./chunk-6CIAGZ6X.js";
|
|
55
55
|
import "./chunk-7CT3AI52.js";
|
|
56
56
|
import "./chunk-G7D6GZ5J.js";
|
|
57
57
|
import "./chunk-7VLBZKNB.js";
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-Y33KJ556.js";
|
|
59
59
|
import "./chunk-ELHJK7LM.js";
|
|
60
60
|
import "./chunk-IUM3VSHI.js";
|
|
61
61
|
import "./chunk-NWA6IXR3.js";
|
|
@@ -80,27 +80,27 @@ import "./chunk-PJKTFXE2.js";
|
|
|
80
80
|
import "./chunk-W5BIQOAJ.js";
|
|
81
81
|
import "./chunk-SEA56G6S.js";
|
|
82
82
|
import "./chunk-YBA52OKG.js";
|
|
83
|
-
import "./chunk-
|
|
83
|
+
import "./chunk-JRVMCZE3.js";
|
|
84
84
|
import "./chunk-BT7NVCML.js";
|
|
85
|
-
import "./chunk-
|
|
85
|
+
import "./chunk-IZJQNDGI.js";
|
|
86
86
|
import "./chunk-BJMBJZ2Y.js";
|
|
87
87
|
import "./chunk-UKJAGEXH.js";
|
|
88
88
|
import "./chunk-FP2373TW.js";
|
|
89
89
|
import "./chunk-L272A5QW.js";
|
|
90
|
-
import "./chunk-
|
|
90
|
+
import "./chunk-BNZAR6PO.js";
|
|
91
91
|
import "./chunk-ZA53AZND.js";
|
|
92
92
|
import "./chunk-7RJUVTVF.js";
|
|
93
93
|
import "./chunk-AL3UYZ5N.js";
|
|
94
94
|
import "./chunk-RL6NEVXT.js";
|
|
95
95
|
import "./chunk-YET735EZ.js";
|
|
96
96
|
import "./chunk-PWPIERBM.js";
|
|
97
|
-
import "./chunk-
|
|
97
|
+
import "./chunk-KQUSP6LB.js";
|
|
98
98
|
import "./chunk-5FVVY2EB.js";
|
|
99
99
|
import "./chunk-BTNNL7ZW.js";
|
|
100
100
|
import "./chunk-JDSVLVCG.js";
|
|
101
101
|
import "./chunk-5GKPFL3S.js";
|
|
102
102
|
import "./chunk-JAKIDQB2.js";
|
|
103
|
-
import "./chunk-
|
|
103
|
+
import "./chunk-EBV6VXKF.js";
|
|
104
104
|
import "./chunk-P7FMDTKL.js";
|
|
105
105
|
import "./chunk-VUFL7X3H.js";
|
|
106
106
|
import "./chunk-C5LWPYS3.js";
|
package/dist/who-knows.js
CHANGED
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
loadWhoKnowsEntities,
|
|
10
10
|
tokenizeTopic,
|
|
11
11
|
validateWhoKnowsInput
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-LDHR465K.js";
|
|
13
|
+
import "./chunk-XVQVF2TK.js";
|
|
14
14
|
import "./chunk-UHVXE24Y.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-QGVCFVX6.js";
|
|
16
|
+
import "./chunk-IGOW4TJE.js";
|
|
17
|
+
import "./chunk-ZOBYTRBU.js";
|
|
18
18
|
import "./chunk-G6OFEGUR.js";
|
|
19
19
|
import "./chunk-OH55F76C.js";
|
|
20
20
|
import "./chunk-L334PSLW.js";
|
|
@@ -40,7 +40,7 @@ import "./chunk-LDXUBPMO.js";
|
|
|
40
40
|
import "./chunk-FF6N7BXC.js";
|
|
41
41
|
import "./chunk-WXPBDEMW.js";
|
|
42
42
|
import "./chunk-AAD2ZS6P.js";
|
|
43
|
-
import "./chunk-
|
|
43
|
+
import "./chunk-BV2BRHD4.js";
|
|
44
44
|
import "./chunk-ZIKENA2C.js";
|
|
45
45
|
import "./chunk-YXZG5TVN.js";
|
|
46
46
|
import "./chunk-3OUGSOJP.js";
|
|
@@ -50,16 +50,16 @@ import "./chunk-3WU7XOFN.js";
|
|
|
50
50
|
import "./chunk-P4GUQSK3.js";
|
|
51
51
|
import "./chunk-4LZ7SVKM.js";
|
|
52
52
|
import "./chunk-YHTG64XV.js";
|
|
53
|
-
import "./chunk-
|
|
53
|
+
import "./chunk-ER7XANP3.js";
|
|
54
54
|
import "./chunk-M5GVCJSJ.js";
|
|
55
55
|
import "./chunk-RBOJCG4T.js";
|
|
56
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-IAYUTGF2.js";
|
|
57
57
|
import "./chunk-5WITETWU.js";
|
|
58
58
|
import "./chunk-6CIAGZ6X.js";
|
|
59
59
|
import "./chunk-7CT3AI52.js";
|
|
60
60
|
import "./chunk-G7D6GZ5J.js";
|
|
61
61
|
import "./chunk-7VLBZKNB.js";
|
|
62
|
-
import "./chunk-
|
|
62
|
+
import "./chunk-Y33KJ556.js";
|
|
63
63
|
import "./chunk-ELHJK7LM.js";
|
|
64
64
|
import "./chunk-IUM3VSHI.js";
|
|
65
65
|
import "./chunk-NWA6IXR3.js";
|
|
@@ -84,27 +84,27 @@ import "./chunk-PJKTFXE2.js";
|
|
|
84
84
|
import "./chunk-W5BIQOAJ.js";
|
|
85
85
|
import "./chunk-SEA56G6S.js";
|
|
86
86
|
import "./chunk-YBA52OKG.js";
|
|
87
|
-
import "./chunk-
|
|
87
|
+
import "./chunk-JRVMCZE3.js";
|
|
88
88
|
import "./chunk-BT7NVCML.js";
|
|
89
|
-
import "./chunk-
|
|
89
|
+
import "./chunk-IZJQNDGI.js";
|
|
90
90
|
import "./chunk-BJMBJZ2Y.js";
|
|
91
91
|
import "./chunk-UKJAGEXH.js";
|
|
92
92
|
import "./chunk-FP2373TW.js";
|
|
93
93
|
import "./chunk-L272A5QW.js";
|
|
94
|
-
import "./chunk-
|
|
94
|
+
import "./chunk-BNZAR6PO.js";
|
|
95
95
|
import "./chunk-ZA53AZND.js";
|
|
96
96
|
import "./chunk-7RJUVTVF.js";
|
|
97
97
|
import "./chunk-AL3UYZ5N.js";
|
|
98
98
|
import "./chunk-RL6NEVXT.js";
|
|
99
99
|
import "./chunk-YET735EZ.js";
|
|
100
100
|
import "./chunk-PWPIERBM.js";
|
|
101
|
-
import "./chunk-
|
|
101
|
+
import "./chunk-KQUSP6LB.js";
|
|
102
102
|
import "./chunk-5FVVY2EB.js";
|
|
103
103
|
import "./chunk-BTNNL7ZW.js";
|
|
104
104
|
import "./chunk-JDSVLVCG.js";
|
|
105
105
|
import "./chunk-5GKPFL3S.js";
|
|
106
106
|
import "./chunk-JAKIDQB2.js";
|
|
107
|
-
import "./chunk-
|
|
107
|
+
import "./chunk-EBV6VXKF.js";
|
|
108
108
|
import "./chunk-P7FMDTKL.js";
|
|
109
109
|
import "./chunk-VUFL7X3H.js";
|
|
110
110
|
import "./chunk-C5LWPYS3.js";
|
package/dist/write-envelope.js
CHANGED
|
@@ -12,15 +12,15 @@ import {
|
|
|
12
12
|
isMemoryCategory,
|
|
13
13
|
isSealedMemoryEnvelope,
|
|
14
14
|
sealedWriteToLegacyArgs
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JRVMCZE3.js";
|
|
16
16
|
import "./chunk-BT7NVCML.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-IZJQNDGI.js";
|
|
18
|
+
import "./chunk-KQUSP6LB.js";
|
|
19
19
|
import "./chunk-5FVVY2EB.js";
|
|
20
20
|
import "./chunk-JDSVLVCG.js";
|
|
21
21
|
import "./chunk-5GKPFL3S.js";
|
|
22
22
|
import "./chunk-JAKIDQB2.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-EBV6VXKF.js";
|
|
24
24
|
import "./chunk-P7FMDTKL.js";
|
|
25
25
|
import "./chunk-X4OZMANG.js";
|
|
26
26
|
import "./chunk-R2MBW2S4.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.65",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3376,7 +3376,7 @@
|
|
|
3376
3376
|
"core"
|
|
3377
3377
|
],
|
|
3378
3378
|
"peerDependencies": {
|
|
3379
|
-
"@remnic/coding-graph": "^10.0.
|
|
3379
|
+
"@remnic/coding-graph": "^10.0.65"
|
|
3380
3380
|
},
|
|
3381
3381
|
"peerDependenciesMeta": {
|
|
3382
3382
|
"@remnic/coding-graph": {
|
|
@@ -206,7 +206,6 @@ export async function runExtractionDeferRetention(
|
|
|
206
206
|
export interface ExtractionPostPersistOptions {
|
|
207
207
|
result: ExtractionResult;
|
|
208
208
|
storage: StorageManager;
|
|
209
|
-
meta?: MetaState;
|
|
210
209
|
extractionFingerprint?: string;
|
|
211
210
|
shouldPersistProcessedFingerprint: boolean;
|
|
212
211
|
recordProcessedExtractionFingerprint: (
|
|
@@ -239,7 +238,6 @@ export interface ExtractionPostPersistOptions {
|
|
|
239
238
|
}
|
|
240
239
|
|
|
241
240
|
export interface ExtractionPostPersistResult {
|
|
242
|
-
meta?: MetaState;
|
|
243
241
|
metadataFailed: boolean;
|
|
244
242
|
}
|
|
245
243
|
|
|
@@ -255,41 +253,31 @@ export async function runExtractionPostPersist(
|
|
|
255
253
|
}
|
|
256
254
|
log.warn(`runExtraction: ${stage} failed after durable persistence; continuing with buffer clear`, error);
|
|
257
255
|
};
|
|
258
|
-
|
|
256
|
+
// Applied under the storage's per-dir meta lock (storage.updateMeta): the
|
|
257
|
+
// fingerprint record and the counters land on a FRESHLY loaded meta, so a
|
|
258
|
+
// concurrent extraction's updates are not reverted by this save.
|
|
259
|
+
const applyPostPersistMetadata = async (fresh: MetaState): Promise<void> => {
|
|
260
|
+
if (options.extractionFingerprint && options.shouldPersistProcessedFingerprint) {
|
|
261
|
+
try {
|
|
262
|
+
await options.recordProcessedExtractionFingerprint(options.storage, options.extractionFingerprint, fresh);
|
|
263
|
+
} catch (error) {
|
|
264
|
+
metadataFailed = true;
|
|
265
|
+
log.warn("runExtraction: processed fingerprint failed after durable persistence; continuing with buffer clear", error);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
fresh.extractionCount += 1;
|
|
269
|
+
fresh.lastExtractionAt = new Date().toISOString();
|
|
270
|
+
fresh.totalMemories += Array.isArray(options.result.facts) ? options.result.facts.length : 0;
|
|
271
|
+
fresh.totalEntities += Array.isArray(options.result.entities) ? options.result.entities.length : 0;
|
|
272
|
+
};
|
|
259
273
|
try {
|
|
260
|
-
|
|
261
|
-
() => options.storage.
|
|
262
|
-
"
|
|
274
|
+
await options.runDeadlineAware(
|
|
275
|
+
() => options.storage.updateMeta(applyPostPersistMetadata),
|
|
276
|
+
"during_post_persist_meta_save",
|
|
263
277
|
false,
|
|
264
|
-
)
|
|
278
|
+
);
|
|
265
279
|
} catch (error) {
|
|
266
|
-
recordFailure("metadata
|
|
267
|
-
}
|
|
268
|
-
if (meta && options.extractionFingerprint && options.shouldPersistProcessedFingerprint) {
|
|
269
|
-
try {
|
|
270
|
-
await options.runDeadlineAware(
|
|
271
|
-
() => options.recordProcessedExtractionFingerprint(options.storage, options.extractionFingerprint!, meta!),
|
|
272
|
-
"during_post_persist_fingerprint",
|
|
273
|
-
false,
|
|
274
|
-
);
|
|
275
|
-
} catch (error) {
|
|
276
|
-
recordFailure("processed fingerprint", error);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
if (meta) {
|
|
280
|
-
meta.extractionCount += 1;
|
|
281
|
-
meta.lastExtractionAt = new Date().toISOString();
|
|
282
|
-
meta.totalMemories += Array.isArray(options.result.facts) ? options.result.facts.length : 0;
|
|
283
|
-
meta.totalEntities += Array.isArray(options.result.entities) ? options.result.entities.length : 0;
|
|
284
|
-
try {
|
|
285
|
-
await options.runDeadlineAware(
|
|
286
|
-
() => options.storage.saveMeta(meta!),
|
|
287
|
-
"during_post_persist_meta_save",
|
|
288
|
-
false,
|
|
289
|
-
);
|
|
290
|
-
} catch (error) {
|
|
291
|
-
recordFailure("metadata save", error);
|
|
292
|
-
}
|
|
280
|
+
recordFailure("metadata save", error);
|
|
293
281
|
}
|
|
294
282
|
const runBestEffort = options.runPostPersistBestEffort;
|
|
295
283
|
await runExtractionDeferRetention(runBestEffort, {
|
|
@@ -313,7 +301,7 @@ export async function runExtractionPostPersist(
|
|
|
313
301
|
throw options.createDeadlineError("during_buffer_clear");
|
|
314
302
|
}
|
|
315
303
|
if (deadlineError) throw deadlineError;
|
|
316
|
-
return {
|
|
304
|
+
return { metadataFailed };
|
|
317
305
|
}
|
|
318
306
|
|
|
319
307
|
/**
|
|
@@ -325,7 +313,6 @@ export async function runExtractionPostPersist(
|
|
|
325
313
|
*/
|
|
326
314
|
export async function commitEmptySuccessExtraction(args: {
|
|
327
315
|
storage: StorageManager;
|
|
328
|
-
meta: MetaState | null;
|
|
329
316
|
extractionFingerprint: string | null;
|
|
330
317
|
shouldPersistProcessedFingerprint: boolean;
|
|
331
318
|
hasExtractionFailure: boolean;
|
|
@@ -336,7 +323,6 @@ export async function commitEmptySuccessExtraction(args: {
|
|
|
336
323
|
}): Promise<void> {
|
|
337
324
|
const {
|
|
338
325
|
storage,
|
|
339
|
-
meta: existingMeta,
|
|
340
326
|
extractionFingerprint,
|
|
341
327
|
shouldPersistProcessedFingerprint,
|
|
342
328
|
hasExtractionFailure,
|
|
@@ -355,22 +341,17 @@ export async function commitEmptySuccessExtraction(args: {
|
|
|
355
341
|
|
|
356
342
|
const metadataFailureIsFatal = shouldRecordFingerprint;
|
|
357
343
|
try {
|
|
358
|
-
const meta =
|
|
359
|
-
existingMeta ??
|
|
360
|
-
await runDeadlineAware(
|
|
361
|
-
() => storage.loadMeta(),
|
|
362
|
-
"during_empty_success_liveness_load",
|
|
363
|
-
false,
|
|
364
|
-
);
|
|
365
|
-
if (shouldRecordFingerprint) {
|
|
366
|
-
await recordProcessedExtractionFingerprint(storage, extractionFingerprint, meta);
|
|
367
|
-
}
|
|
368
|
-
if (shouldStampLiveness) {
|
|
369
|
-
meta.extractionCount += 1;
|
|
370
|
-
meta.lastExtractionAt = new Date().toISOString();
|
|
371
|
-
}
|
|
372
344
|
await runDeadlineAware(
|
|
373
|
-
() =>
|
|
345
|
+
() =>
|
|
346
|
+
storage.updateMeta(async (meta) => {
|
|
347
|
+
if (shouldRecordFingerprint) {
|
|
348
|
+
await recordProcessedExtractionFingerprint(storage, extractionFingerprint!, meta);
|
|
349
|
+
}
|
|
350
|
+
if (shouldStampLiveness) {
|
|
351
|
+
meta.extractionCount += 1;
|
|
352
|
+
meta.lastExtractionAt = new Date().toISOString();
|
|
353
|
+
}
|
|
354
|
+
}),
|
|
374
355
|
"during_empty_success_liveness_save",
|
|
375
356
|
false,
|
|
376
357
|
);
|
|
@@ -363,10 +363,8 @@ export class ExtractionRunCoordinator {
|
|
|
363
363
|
}
|
|
364
364
|
}
|
|
365
365
|
}
|
|
366
|
-
/** Record an extraction failure into per-fingerprint backoff state + breaker,
|
|
367
|
-
* persisting to namespace meta. Fail-open: never throws upward. */
|
|
366
|
+
/** Record an extraction failure into per-fingerprint backoff state + breaker, persisting to namespace meta. Fail-open. */
|
|
368
367
|
private async recordExtractionFailure(
|
|
369
|
-
storage: StorageManager,
|
|
370
368
|
namespace: string,
|
|
371
369
|
fingerprint: string,
|
|
372
370
|
cls: ExtractionFailureClass,
|
|
@@ -375,35 +373,45 @@ export class ExtractionRunCoordinator {
|
|
|
375
373
|
): Promise<void> {
|
|
376
374
|
try {
|
|
377
375
|
this.hydrateRetryStateFromMeta(namespace, meta);
|
|
378
|
-
|
|
379
|
-
const prev = nsMap.get(fingerprint);
|
|
380
|
-
const attempts = (prev?.attempts ?? 0) + 1;
|
|
381
|
-
const firstFailedAtMs = prev?.firstFailedAtMs ?? now;
|
|
382
|
-
let nextEligibleAtMs: number;
|
|
383
|
-
if (cls === "parse_empty" && attempts > this.config.extractionParseEmptyMaxAttempts) {
|
|
384
|
-
// parse_empty exhausted its attempt budget → long-park (still never
|
|
385
|
-
// marked processed). A dead gateway also yields unparseable output.
|
|
386
|
-
nextEligibleAtMs = now + Math.max(0, this.config.extractionRetryMaxBackoffMs);
|
|
387
|
-
} else {
|
|
388
|
-
nextEligibleAtMs = computeExtractionRetryNextEligibleMs(
|
|
389
|
-
attempts,
|
|
390
|
-
this.config.extractionRetryScheduleMs,
|
|
391
|
-
this.config.extractionRetryMaxBackoffMs,
|
|
392
|
-
this.config.extractionRetryJitterRatio,
|
|
393
|
-
now,
|
|
394
|
-
);
|
|
395
|
-
}
|
|
396
|
-
nsMap.set(fingerprint, { attempts, nextEligibleAtMs, firstFailedAtMs, lastFailureClass: cls });
|
|
397
|
-
this.extractionRetryState.set(namespace, nsMap);
|
|
398
|
-
this.onProviderFailure(cls, now);
|
|
376
|
+
this.applyExtractionFailureToMemory(namespace, fingerprint, cls, now);
|
|
399
377
|
this.persistRetryStateToMeta(namespace, meta);
|
|
400
|
-
|
|
378
|
+
// The caller's storage.updateMeta persists this — saving here would write the same file twice.
|
|
401
379
|
} catch (err) {
|
|
402
380
|
// Fail-open: recording failure state must never crash observe/recall.
|
|
403
381
|
log.warn("runExtraction: failed to record extraction retry state (non-fatal)", err);
|
|
404
382
|
}
|
|
405
383
|
}
|
|
406
384
|
|
|
385
|
+
/** Failure backoff into the in-memory mirror + breaker WITHOUT touching meta — the fallback
|
|
386
|
+
* when the locked meta write cannot run: the retry gate reads this mirror, so it stays shut. */
|
|
387
|
+
private applyExtractionFailureToMemory(
|
|
388
|
+
namespace: string,
|
|
389
|
+
fingerprint: string,
|
|
390
|
+
cls: ExtractionFailureClass,
|
|
391
|
+
now: number,
|
|
392
|
+
): void {
|
|
393
|
+
const nsMap = this.extractionRetryState.get(namespace) ?? new Map<string, ExtractionRetryStateEntry>();
|
|
394
|
+
const prev = nsMap.get(fingerprint);
|
|
395
|
+
const attempts = (prev?.attempts ?? 0) + 1;
|
|
396
|
+
const firstFailedAtMs = prev?.firstFailedAtMs ?? now;
|
|
397
|
+
let nextEligibleAtMs: number;
|
|
398
|
+
if (cls === "parse_empty" && attempts > this.config.extractionParseEmptyMaxAttempts) {
|
|
399
|
+
// parse_empty budget exhausted → long-park (still never marked processed).
|
|
400
|
+
nextEligibleAtMs = now + Math.max(0, this.config.extractionRetryMaxBackoffMs);
|
|
401
|
+
} else {
|
|
402
|
+
nextEligibleAtMs = computeExtractionRetryNextEligibleMs(
|
|
403
|
+
attempts,
|
|
404
|
+
this.config.extractionRetryScheduleMs,
|
|
405
|
+
this.config.extractionRetryMaxBackoffMs,
|
|
406
|
+
this.config.extractionRetryJitterRatio,
|
|
407
|
+
now,
|
|
408
|
+
);
|
|
409
|
+
}
|
|
410
|
+
nsMap.set(fingerprint, { attempts, nextEligibleAtMs, firstFailedAtMs, lastFailureClass: cls });
|
|
411
|
+
this.extractionRetryState.set(namespace, nsMap);
|
|
412
|
+
this.onProviderFailure(cls, now);
|
|
413
|
+
}
|
|
414
|
+
|
|
407
415
|
/** Delete a fingerprint's retry entry from the mirror + meta. Returns whether
|
|
408
416
|
* meta changed (so the caller can decide to persist). Does not touch the
|
|
409
417
|
* breaker — callers pair this with `resetProviderBreakerOnSuccess`. */
|
|
@@ -952,48 +960,43 @@ export class ExtractionRunCoordinator {
|
|
|
952
960
|
// extractionRetryEnabled so a disabled feature restores prior behavior.
|
|
953
961
|
if (extractionFingerprint && extractionRetryEnabled) {
|
|
954
962
|
if (extractionFailure) {
|
|
963
|
+
const failureClass = result.extractionFailureClass ?? "provider_retryable";
|
|
955
964
|
try {
|
|
956
|
-
meta ??= await runDeadlineAware(() => storage.loadMeta(), "during_retry_bookkeeping_load", false);
|
|
957
965
|
await runDeadlineAware(
|
|
958
966
|
() =>
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
selfNamespace,
|
|
962
|
-
extractionFingerprint,
|
|
963
|
-
result.extractionFailureClass ?? "provider_retryable",
|
|
964
|
-
meta!,
|
|
965
|
-
Date.now(),
|
|
967
|
+
storage.updateMeta((freshMeta) =>
|
|
968
|
+
this.recordExtractionFailure(selfNamespace, extractionFingerprint, failureClass, freshMeta, Date.now()),
|
|
966
969
|
),
|
|
967
970
|
"during_retry_bookkeeping_save",
|
|
968
971
|
false,
|
|
969
972
|
);
|
|
970
|
-
// The buffer is retained below so the backoff gate can re-attempt
|
|
971
|
-
// these turns after nextEligibleAt — clearing would orphan the
|
|
972
|
-
// retry state.
|
|
973
973
|
recordedRetryFailure = true;
|
|
974
974
|
} catch (err) {
|
|
975
975
|
if (err instanceof ExtractionDeadlineError) throw err;
|
|
976
|
-
// Fail-open (
|
|
977
|
-
//
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
976
|
+
// Fail-open, but retain the turns (a cleared buffer with no retry state drops them). Only a
|
|
977
|
+
// LOCK skip reaches here without the mutator having run — a later save must not double-count.
|
|
978
|
+
if (err instanceof Error && err.message.includes("meta.json.lock not acquired"))
|
|
979
|
+
this.applyExtractionFailureToMemory(selfNamespace, extractionFingerprint, failureClass, Date.now());
|
|
980
|
+
recordedRetryFailure = true;
|
|
981
|
+
log.warn("runExtraction: retry state kept in memory; meta persist will catch up", err);
|
|
981
982
|
}
|
|
982
983
|
} else if (result.extractionSkippedReason === undefined) {
|
|
983
984
|
// Provider responded without failure → breaker heals; clear any
|
|
984
985
|
// parked backoff for this fingerprint so it proceeds normally.
|
|
985
986
|
this.resetProviderBreakerOnSuccess();
|
|
986
987
|
try {
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
988
|
+
await runDeadlineAware(
|
|
989
|
+
() =>
|
|
990
|
+
storage.updateMeta((freshMeta) => {
|
|
991
|
+
// Hydrate the mirror from persisted meta before clearing: a forced flush
|
|
992
|
+
// bypassed the retry gate, and a stale persisted entry would keep blocking.
|
|
993
|
+
this.hydrateRetryStateFromMeta(selfNamespace, freshMeta);
|
|
994
|
+
// `false` skips the save when nothing was parked for this fingerprint.
|
|
995
|
+
return this.clearExtractionRetryEntry(selfNamespace, extractionFingerprint, freshMeta);
|
|
996
|
+
}),
|
|
997
|
+
"during_retry_bookkeeping_save",
|
|
998
|
+
false,
|
|
999
|
+
);
|
|
997
1000
|
} catch (err) {
|
|
998
1001
|
if (err instanceof ExtractionDeadlineError) throw err;
|
|
999
1002
|
log.warn("runExtraction: failed to persist cleared retry state (non-fatal)", err);
|
|
@@ -1018,7 +1021,6 @@ export class ExtractionRunCoordinator {
|
|
|
1018
1021
|
}
|
|
1019
1022
|
const emptySuccessCommit = {
|
|
1020
1023
|
storage,
|
|
1021
|
-
meta,
|
|
1022
1024
|
extractionFingerprint,
|
|
1023
1025
|
shouldPersistProcessedFingerprint,
|
|
1024
1026
|
hasExtractionFailure: Boolean(extractionFailure),
|
|
@@ -1094,7 +1096,6 @@ export class ExtractionRunCoordinator {
|
|
|
1094
1096
|
const postPersist = await runExtractionPostPersist({
|
|
1095
1097
|
result,
|
|
1096
1098
|
storage,
|
|
1097
|
-
meta: meta ?? undefined,
|
|
1098
1099
|
extractionFingerprint: extractionFingerprint ?? undefined,
|
|
1099
1100
|
shouldPersistProcessedFingerprint,
|
|
1100
1101
|
recordProcessedExtractionFingerprint: this.deps.recordProcessedExtractionFingerprint,
|
|
@@ -1113,7 +1114,6 @@ export class ExtractionRunCoordinator {
|
|
|
1113
1114
|
clearBuffer,
|
|
1114
1115
|
failOnExtractionFailure: options.failOnExtractionFailure === true,
|
|
1115
1116
|
});
|
|
1116
|
-
meta = postPersist.meta ?? null;
|
|
1117
1117
|
const postPersistMetadataFailed = postPersist.metadataFailed;
|
|
1118
1118
|
|
|
1119
1119
|
// Passive correction capture (issue #1581) — detect corrections expressed
|