@remnic/core 10.0.60 → 10.0.62
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 +25 -24
- package/dist/access-authorization-probe.js +26 -25
- package/dist/access-boundary.js +25 -24
- package/dist/access-cli.js +73 -72
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +25 -24
- package/dist/access-http-briefing.js +26 -25
- package/dist/access-http-query.js +27 -26
- package/dist/access-http.js +44 -43
- package/dist/access-identity-continuity-surface.js +25 -24
- package/dist/access-lcm-surface.js +25 -24
- package/dist/access-mcp.js +36 -35
- package/dist/access-namespace-preflight.js +25 -24
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.js +25 -24
- package/dist/access-operations-batch.js +27 -26
- package/dist/access-operations.js +34 -33
- package/dist/access-recall-concurrency.js +25 -24
- package/dist/access-recall-diagnostics.js +2 -2
- package/dist/access-recall-response.js +25 -24
- package/dist/access-recall-surface.js +25 -24
- package/dist/access-schema.js +3 -3
- package/dist/access-service.js +25 -24
- package/dist/access-surface-catalog.js +27 -26
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +8 -6
- package/dist/active-recall.js.map +1 -1
- package/dist/briefing.js +8 -6
- package/dist/buffer-persistence.d.ts +14 -3
- package/dist/buffer-persistence.d.ts.map +1 -1
- package/dist/buffer-persistence.js +1 -1
- package/dist/buffer-turn-helpers.d.ts +7 -0
- package/dist/buffer-turn-helpers.d.ts.map +1 -1
- package/dist/buffer-turn-helpers.js +5 -3
- package/dist/buffer.d.ts +5 -1
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +3 -3
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-GWVG7LGC.js} +2 -2
- package/dist/causal-consolidation.js +9 -7
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-VHBGJAYC.js → chunk-25QK3LR2.js} +2 -2
- package/dist/{chunk-X2TZWVCC.js → chunk-3HLWLYRD.js} +2 -2
- package/dist/{chunk-TIS6T6UP.js → chunk-3VNRDRBM.js} +2 -2
- package/dist/{chunk-4O4VAEWH.js → chunk-4NLHEE2Z.js} +2 -2
- package/dist/{chunk-3DG2YAAX.js → chunk-6EZPYZT3.js} +62 -35
- package/dist/chunk-6EZPYZT3.js.map +1 -0
- package/dist/{chunk-I6UTOUBK.js → chunk-6VBKU3FY.js} +150 -345
- package/dist/chunk-6VBKU3FY.js.map +1 -0
- package/dist/{chunk-66CC6L6R.js → chunk-76LKZ42K.js} +2 -2
- package/dist/{chunk-LR7RW4T6.js → chunk-7ETWIBTO.js} +3 -3
- package/dist/{chunk-JM2WJBP7.js → chunk-7JFXXA57.js} +2 -2
- package/dist/{chunk-PIVSUPF2.js → chunk-A6JV3WHI.js} +2 -2
- package/dist/{chunk-MOB4JHG6.js → chunk-BDNPW3KM.js} +2 -2
- package/dist/{chunk-IJFX4JRI.js → chunk-BQOOUKEN.js} +7 -7
- package/dist/{chunk-PRSF7DWT.js → chunk-BU4W2ISH.js} +2 -2
- package/dist/{chunk-KQAFEZQX.js → chunk-BUKK5SWA.js} +2 -2
- package/dist/{chunk-JRY55I6Z.js → chunk-C2AYUXEF.js} +2 -2
- package/dist/{chunk-DF4SYU4Z.js → chunk-C5OW2FFB.js} +2 -2
- package/dist/{chunk-74Z2BYEK.js → chunk-CYEEVWQ6.js} +2 -2
- package/dist/{chunk-M7KAJBO2.js → chunk-EADUOZWH.js} +3 -3
- package/dist/{chunk-N5H22V75.js → chunk-ECT5ME6X.js} +2 -2
- package/dist/{chunk-M3GOWG2P.js → chunk-FMOUUWQN.js} +2 -2
- package/dist/{chunk-2EJAPJ5G.js → chunk-FYPKSR6Z.js} +2 -2
- package/dist/{chunk-L5RMURVI.js → chunk-GDCKOER4.js} +41 -13
- package/dist/chunk-GDCKOER4.js.map +1 -0
- package/dist/{chunk-LGLLCWA2.js → chunk-GNEB3WXR.js} +2 -2
- package/dist/{chunk-Z4EH5TSO.js → chunk-HNZH57JK.js} +2 -2
- package/dist/{chunk-PTJWUN4H.js → chunk-IJKBIOWL.js} +30 -30
- package/dist/{chunk-C5GTIRIO.js → chunk-IMNJJKHW.js} +22 -22
- package/dist/{chunk-ADK5TMQL.js → chunk-IVJI5FDA.js} +2 -2
- package/dist/{chunk-F3GX76LV.js → chunk-IWAB7JVH.js} +2 -2
- package/dist/{chunk-JFRO5HJY.js → chunk-J62O2UW5.js} +2 -2
- package/dist/chunk-JCL7RO2G.js +674 -0
- package/dist/chunk-JCL7RO2G.js.map +1 -0
- package/dist/{chunk-A3UFV4K3.js → chunk-JIYJIH5N.js} +2 -2
- package/dist/{chunk-UIX4JLVV.js → chunk-JVFYP2LD.js} +2 -2
- package/dist/{chunk-KJ3MDX4V.js → chunk-KXY4HW2Y.js} +2 -2
- package/dist/{chunk-VQ6H4DL6.js → chunk-L334PSLW.js} +4 -4
- package/dist/{chunk-IA3XZG4V.js → chunk-L74VVEJA.js} +2 -2
- package/dist/{chunk-UY67YP6Q.js → chunk-LIUI46BX.js} +2 -2
- package/dist/{chunk-4OFXLQJD.js → chunk-MPDLLLOG.js} +8 -3
- package/dist/chunk-MPDLLLOG.js.map +1 -0
- package/dist/{chunk-UP2Q7U4G.js → chunk-MTVC5S5N.js} +2 -2
- package/dist/{chunk-QWURVT5Z.js → chunk-N7CATBYH.js} +2 -2
- package/dist/{chunk-JEDS2QYV.js → chunk-OH55F76C.js} +2 -2
- package/dist/{chunk-2NLLXCJG.js → chunk-OWHERGF2.js} +2 -2
- package/dist/{chunk-G6GMZJQ4.js → chunk-PA6ZNFB7.js} +2 -2
- package/dist/{chunk-6BKSUA6P.js → chunk-PWEIZCPS.js} +2 -2
- package/dist/{chunk-T4SMMTGY.js → chunk-Q3DAWUAV.js} +2 -2
- package/dist/{chunk-AWKADEMO.js → chunk-QCAJMIAE.js} +3 -3
- package/dist/{chunk-ZRDEOC4X.js → chunk-QI7LLSWX.js} +2 -2
- package/dist/{chunk-7DHNBABU.js → chunk-QJ6IR35B.js} +3 -3
- package/dist/{chunk-J53IBVMF.js → chunk-R25JMO5O.js} +2 -2
- package/dist/{chunk-PARM6OYL.js → chunk-SEA56G6S.js} +1 -1
- package/dist/chunk-SEA56G6S.js.map +1 -0
- package/dist/{chunk-HL643H2F.js → chunk-TMWSCE2L.js} +8 -8
- package/dist/{chunk-FLDXEJFX.js → chunk-TPCRDPUY.js} +2 -2
- package/dist/{chunk-KZMRMKC7.js → chunk-U7MIMS2Y.js} +11 -1
- package/dist/chunk-U7MIMS2Y.js.map +1 -0
- package/dist/{chunk-WJC5KGYC.js → chunk-UFQB5VQ5.js} +6 -6
- package/dist/{chunk-64WHWIPL.js → chunk-UVHXLVFJ.js} +2 -2
- package/dist/{chunk-X7Y7WX73.js → chunk-UVYI6VIX.js} +1 -1
- package/dist/{chunk-5XY46Z2W.js → chunk-UXRCORZX.js} +3 -3
- package/dist/{chunk-WUL6LDJ4.js → chunk-VPEA63FC.js} +2 -2
- package/dist/{chunk-MHSUEA32.js → chunk-WA6XRNWE.js} +3 -3
- package/dist/{chunk-GGHX4YHM.js → chunk-WB3OFPM2.js} +2 -2
- package/dist/{chunk-RSYFSCKL.js → chunk-WZEDFDJ6.js} +14 -14
- package/dist/{chunk-2HVCTFKG.js → chunk-X2ZLHUEO.js} +2 -2
- package/dist/{chunk-PJLJN23N.js → chunk-XICJL56Z.js} +2 -2
- package/dist/{chunk-ZXEPLZUQ.js → chunk-YGM47S7M.js} +7 -7
- package/dist/{chunk-XWXBXBOX.js → chunk-YLB7TW2B.js} +2 -1
- package/dist/chunk-YLB7TW2B.js.map +1 -0
- package/dist/{chunk-KXDUSGPM.js → chunk-YRL4PGPP.js} +2 -2
- package/dist/{chunk-GJF337YM.js → chunk-Z45353ML.js} +2 -2
- package/dist/{chunk-NJZY5LOC.js → chunk-ZARHK7PT.js} +2 -2
- package/dist/{chunk-NF5EHQTJ.js → chunk-ZFU2B2GM.js} +5 -5
- package/dist/{chunk-W37MS6SX.js → chunk-ZRSXXWIX.js} +2 -2
- package/dist/cli.js +60 -59
- package/dist/coding/export-okf-codegraph.js +7 -5
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +9 -7
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -6
- package/dist/connectors/codex-materialize-runner.js +8 -6
- package/dist/connectors/index.js +8 -6
- package/dist/convergence-refresh.js +10 -8
- package/dist/corpus-watermark.js +10 -8
- package/dist/deep-recall-http-glue.js +4 -4
- package/dist/entity-retrieval.js +8 -6
- package/dist/external-wiki-access.js +26 -25
- package/dist/extraction.js +8 -6
- package/dist/harmonic-retrieval.js +8 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -72
- package/dist/location/index.js +10 -8
- package/dist/maintenance/memory-governance.js +8 -6
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +8 -6
- package/dist/maintenance/rebuild-memory-projection-runner.js +10 -8
- package/dist/maintenance/rebuild-memory-projection.js +9 -7
- package/dist/memory-browse-operations.js +26 -25
- package/dist/namespaces/migrate.js +9 -7
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.js +8 -6
- package/dist/operator-doctor-corpus.js +11 -9
- package/dist/operator-toolkit.js +17 -15
- package/dist/orchestration/buffer-drain-gate.d.ts +21 -0
- package/dist/orchestration/buffer-drain-gate.d.ts.map +1 -0
- package/dist/orchestration/buffer-drain-runner.d.ts +79 -0
- package/dist/orchestration/buffer-drain-runner.d.ts.map +1 -0
- package/dist/orchestration/buffer-drain-runner.js +780 -0
- package/dist/orchestration/buffer-drain-runner.js.map +1 -0
- package/dist/orchestration/buffer-swap.d.ts +12 -0
- package/dist/orchestration/buffer-swap.d.ts.map +1 -0
- package/dist/orchestration/maintenance.js +18 -16
- package/dist/orchestration/turn-ingestion.d.ts.map +1 -1
- package/dist/orchestrator.d.ts +4 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +73 -72
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-navigate-access.js +2 -2
- package/dist/recall-navigate-disclosure.js +2 -2
- package/dist/recall-navigate.js +2 -2
- package/dist/recall-navigation-operations.js +26 -25
- package/dist/recall-navigation.js +25 -24
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.js +2 -2
- package/dist/resume-bundles.js +9 -7
- package/dist/search/factory.js +2 -2
- package/dist/search/index.js +4 -4
- package/dist/semantic-consolidation.js +9 -7
- package/dist/semantic-rule-promotion.js +8 -6
- package/dist/semantic-rule-verifier.js +8 -6
- package/dist/source-agent-qualifier.js +8 -6
- package/dist/standup/build.js +8 -6
- package/dist/storage/buffer-drain-claims.d.ts +159 -0
- package/dist/storage/buffer-drain-claims.d.ts.map +1 -0
- package/dist/storage/buffer-drain-claims.js +18 -0
- package/dist/storage/buffer-drain-claims.js.map +1 -0
- package/dist/storage/buffer-session-files.d.ts +14 -2
- package/dist/storage/buffer-session-files.d.ts.map +1 -1
- package/dist/storage/buffer-session-files.js +22 -0
- package/dist/storage/buffer-session-files.js.map +1 -0
- package/dist/storage.d.ts +6 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +7 -5
- package/dist/support-passport/index.js +28 -27
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +8 -6
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/verified-recall.js +8 -6
- package/dist/who-knows-cli.js +9 -7
- package/dist/who-knows.js +8 -6
- package/package.json +32 -2
- package/src/access-observe-replay-durability.test.ts +1 -0
- package/src/buffer-drain-handover.test.ts +307 -0
- package/src/buffer-incremental-persistence.test.ts +19 -1
- package/src/buffer-persistence.ts +27 -5
- package/src/buffer-session.test.ts +3 -3
- package/src/buffer-turn-helpers.ts +16 -0
- package/src/buffer.ts +50 -10
- package/src/config.ts +1 -0
- package/src/index.ts +1 -1
- package/src/orchestration/buffer-drain-gate.test.ts +40 -0
- package/src/orchestration/buffer-drain-gate.ts +38 -0
- package/src/orchestration/buffer-drain-runner.ts +312 -0
- package/src/orchestration/buffer-swap.ts +27 -0
- package/src/orchestration/turn-ingestion.ts +2 -0
- package/src/orchestrator.ts +9 -6
- package/src/storage/buffer-drain-claims.test.ts +448 -0
- package/src/storage/buffer-drain-claims.ts +593 -0
- package/src/storage/buffer-session-files.ts +50 -3
- package/src/storage.ts +8 -11
- package/src/testing/subjects/extraction-lifecycle.test.ts +34 -0
- package/src/types.ts +2 -0
- package/dist/chunk-3DG2YAAX.js.map +0 -1
- package/dist/chunk-4OFXLQJD.js.map +0 -1
- package/dist/chunk-I6UTOUBK.js.map +0 -1
- package/dist/chunk-KZMRMKC7.js.map +0 -1
- package/dist/chunk-L5RMURVI.js.map +0 -1
- package/dist/chunk-PARM6OYL.js.map +0 -1
- package/dist/chunk-XWXBXBOX.js.map +0 -1
- /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-GWVG7LGC.js.map} +0 -0
- /package/dist/{chunk-VHBGJAYC.js.map → chunk-25QK3LR2.js.map} +0 -0
- /package/dist/{chunk-X2TZWVCC.js.map → chunk-3HLWLYRD.js.map} +0 -0
- /package/dist/{chunk-TIS6T6UP.js.map → chunk-3VNRDRBM.js.map} +0 -0
- /package/dist/{chunk-4O4VAEWH.js.map → chunk-4NLHEE2Z.js.map} +0 -0
- /package/dist/{chunk-66CC6L6R.js.map → chunk-76LKZ42K.js.map} +0 -0
- /package/dist/{chunk-LR7RW4T6.js.map → chunk-7ETWIBTO.js.map} +0 -0
- /package/dist/{chunk-JM2WJBP7.js.map → chunk-7JFXXA57.js.map} +0 -0
- /package/dist/{chunk-PIVSUPF2.js.map → chunk-A6JV3WHI.js.map} +0 -0
- /package/dist/{chunk-MOB4JHG6.js.map → chunk-BDNPW3KM.js.map} +0 -0
- /package/dist/{chunk-IJFX4JRI.js.map → chunk-BQOOUKEN.js.map} +0 -0
- /package/dist/{chunk-PRSF7DWT.js.map → chunk-BU4W2ISH.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-BUKK5SWA.js.map} +0 -0
- /package/dist/{chunk-JRY55I6Z.js.map → chunk-C2AYUXEF.js.map} +0 -0
- /package/dist/{chunk-DF4SYU4Z.js.map → chunk-C5OW2FFB.js.map} +0 -0
- /package/dist/{chunk-74Z2BYEK.js.map → chunk-CYEEVWQ6.js.map} +0 -0
- /package/dist/{chunk-M7KAJBO2.js.map → chunk-EADUOZWH.js.map} +0 -0
- /package/dist/{chunk-N5H22V75.js.map → chunk-ECT5ME6X.js.map} +0 -0
- /package/dist/{chunk-M3GOWG2P.js.map → chunk-FMOUUWQN.js.map} +0 -0
- /package/dist/{chunk-2EJAPJ5G.js.map → chunk-FYPKSR6Z.js.map} +0 -0
- /package/dist/{chunk-LGLLCWA2.js.map → chunk-GNEB3WXR.js.map} +0 -0
- /package/dist/{chunk-Z4EH5TSO.js.map → chunk-HNZH57JK.js.map} +0 -0
- /package/dist/{chunk-PTJWUN4H.js.map → chunk-IJKBIOWL.js.map} +0 -0
- /package/dist/{chunk-C5GTIRIO.js.map → chunk-IMNJJKHW.js.map} +0 -0
- /package/dist/{chunk-ADK5TMQL.js.map → chunk-IVJI5FDA.js.map} +0 -0
- /package/dist/{chunk-F3GX76LV.js.map → chunk-IWAB7JVH.js.map} +0 -0
- /package/dist/{chunk-JFRO5HJY.js.map → chunk-J62O2UW5.js.map} +0 -0
- /package/dist/{chunk-A3UFV4K3.js.map → chunk-JIYJIH5N.js.map} +0 -0
- /package/dist/{chunk-UIX4JLVV.js.map → chunk-JVFYP2LD.js.map} +0 -0
- /package/dist/{chunk-KJ3MDX4V.js.map → chunk-KXY4HW2Y.js.map} +0 -0
- /package/dist/{chunk-VQ6H4DL6.js.map → chunk-L334PSLW.js.map} +0 -0
- /package/dist/{chunk-IA3XZG4V.js.map → chunk-L74VVEJA.js.map} +0 -0
- /package/dist/{chunk-UY67YP6Q.js.map → chunk-LIUI46BX.js.map} +0 -0
- /package/dist/{chunk-UP2Q7U4G.js.map → chunk-MTVC5S5N.js.map} +0 -0
- /package/dist/{chunk-QWURVT5Z.js.map → chunk-N7CATBYH.js.map} +0 -0
- /package/dist/{chunk-JEDS2QYV.js.map → chunk-OH55F76C.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-OWHERGF2.js.map} +0 -0
- /package/dist/{chunk-G6GMZJQ4.js.map → chunk-PA6ZNFB7.js.map} +0 -0
- /package/dist/{chunk-6BKSUA6P.js.map → chunk-PWEIZCPS.js.map} +0 -0
- /package/dist/{chunk-T4SMMTGY.js.map → chunk-Q3DAWUAV.js.map} +0 -0
- /package/dist/{chunk-AWKADEMO.js.map → chunk-QCAJMIAE.js.map} +0 -0
- /package/dist/{chunk-ZRDEOC4X.js.map → chunk-QI7LLSWX.js.map} +0 -0
- /package/dist/{chunk-7DHNBABU.js.map → chunk-QJ6IR35B.js.map} +0 -0
- /package/dist/{chunk-J53IBVMF.js.map → chunk-R25JMO5O.js.map} +0 -0
- /package/dist/{chunk-HL643H2F.js.map → chunk-TMWSCE2L.js.map} +0 -0
- /package/dist/{chunk-FLDXEJFX.js.map → chunk-TPCRDPUY.js.map} +0 -0
- /package/dist/{chunk-WJC5KGYC.js.map → chunk-UFQB5VQ5.js.map} +0 -0
- /package/dist/{chunk-64WHWIPL.js.map → chunk-UVHXLVFJ.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-UVYI6VIX.js.map} +0 -0
- /package/dist/{chunk-5XY46Z2W.js.map → chunk-UXRCORZX.js.map} +0 -0
- /package/dist/{chunk-WUL6LDJ4.js.map → chunk-VPEA63FC.js.map} +0 -0
- /package/dist/{chunk-MHSUEA32.js.map → chunk-WA6XRNWE.js.map} +0 -0
- /package/dist/{chunk-GGHX4YHM.js.map → chunk-WB3OFPM2.js.map} +0 -0
- /package/dist/{chunk-RSYFSCKL.js.map → chunk-WZEDFDJ6.js.map} +0 -0
- /package/dist/{chunk-2HVCTFKG.js.map → chunk-X2ZLHUEO.js.map} +0 -0
- /package/dist/{chunk-PJLJN23N.js.map → chunk-XICJL56Z.js.map} +0 -0
- /package/dist/{chunk-ZXEPLZUQ.js.map → chunk-YGM47S7M.js.map} +0 -0
- /package/dist/{chunk-KXDUSGPM.js.map → chunk-YRL4PGPP.js.map} +0 -0
- /package/dist/{chunk-GJF337YM.js.map → chunk-Z45353ML.js.map} +0 -0
- /package/dist/{chunk-NJZY5LOC.js.map → chunk-ZARHK7PT.js.map} +0 -0
- /package/dist/{chunk-NF5EHQTJ.js.map → chunk-ZFU2B2GM.js.map} +0 -0
- /package/dist/{chunk-W37MS6SX.js.map → chunk-ZRSXXWIX.js.map} +0 -0
package/src/storage.ts
CHANGED
|
@@ -144,6 +144,7 @@ import {
|
|
|
144
144
|
} from "./lifecycle/tombstones.js";
|
|
145
145
|
import { supersessionKeysForFact } from "./temporal-supersession.js";
|
|
146
146
|
import { BufferSessionFiles } from "./storage/buffer-session-files.js";
|
|
147
|
+
import { BufferDrainClaims, type BufferSessionSaveOutcome } from "./storage/buffer-drain-claims.js";
|
|
147
148
|
import { runSupersessionSideEffects, type SupersessionAuditOptions } from "./storage/supersession-side-effects.js";
|
|
148
149
|
import { saveDroppedExtractionChunk as saveDroppedChunk } from "./storage/dropped-extraction-chunk.js";
|
|
149
150
|
import type {
|
|
@@ -5144,18 +5145,10 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
5144
5145
|
);
|
|
5145
5146
|
} catch (err) {
|
|
5146
5147
|
if (priorDest === null) {
|
|
5147
|
-
await recordArchiveDelete(this.baseDir, destPath, () =>
|
|
5148
|
-
unlink(destPath).then(
|
|
5149
|
-
() => true,
|
|
5150
|
-
() => false
|
|
5151
|
-
)
|
|
5152
|
-
);
|
|
5148
|
+
await recordArchiveDelete(this.baseDir, destPath, () => unlink(destPath).then(() => true, () => false));
|
|
5153
5149
|
} else {
|
|
5154
5150
|
await recordArchiveDelete(this.baseDir, destPath, () =>
|
|
5155
|
-
this.writeStorageSecureFile(destPath, priorDest).then(
|
|
5156
|
-
() => true,
|
|
5157
|
-
() => false
|
|
5158
|
-
)
|
|
5151
|
+
this.writeStorageSecureFile(destPath, priorDest).then(() => true, () => false)
|
|
5159
5152
|
);
|
|
5160
5153
|
}
|
|
5161
5154
|
throw err;
|
|
@@ -5524,8 +5517,12 @@ export class StorageManager extends TombstoneBlockedCaptureIndexHost {
|
|
|
5524
5517
|
}
|
|
5525
5518
|
async loadBuffer(): Promise<BufferState> { return this.bufferSessionFiles().load(); }
|
|
5526
5519
|
async saveBuffer(state: BufferState): Promise<void> { await this.bufferSessionFiles().reconcile(state); }
|
|
5527
|
-
async saveBufferSession(key: string, entry: BufferEntryState): Promise<
|
|
5520
|
+
async saveBufferSession(key: string, entry: BufferEntryState): Promise<BufferSessionSaveOutcome> { return await this.bufferSessionFiles().save(key, entry); }
|
|
5528
5521
|
async deleteBufferSession(key: string): Promise<void> { await this.bufferSessionFiles().remove(key); }
|
|
5522
|
+
/** Sync gate check for the extraction queue: is this session claimed by a buffer drain? */
|
|
5523
|
+
isBufferSessionClaimed(key: string): boolean { return this.bufferSessionFiles().isClaimed(key); }
|
|
5524
|
+
/** The drain-claim store for this memory root (CLI drain + worker). */
|
|
5525
|
+
bufferDrainClaims(): BufferDrainClaims { return this.bufferSessionFiles().claims; }
|
|
5529
5526
|
saveDroppedExtractionChunk(bufferKey: string, reason: string, turns: readonly import("./types.js").BufferTurn[]): Promise<string> { // storage/dropped-extraction-chunk.ts
|
|
5530
5527
|
return saveDroppedChunk(this.stateDir, (file, content) => this.writeStorageSecureFile(file, content), bufferKey, reason, turns);
|
|
5531
5528
|
}
|
|
@@ -17,6 +17,7 @@ import assert from "node:assert/strict";
|
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
|
|
19
19
|
import { Orchestrator } from "../../orchestrator.js";
|
|
20
|
+
import { BufferDrainRunner } from "../../orchestration/buffer-drain-runner.js";
|
|
20
21
|
import { resolveNamespaceStorageRoot } from "../../namespaces/storage.js";
|
|
21
22
|
import type { BufferTurn, PluginConfig } from "../../types.js";
|
|
22
23
|
import {
|
|
@@ -135,6 +136,37 @@ async function assertHarmonicEpisode(memoryDir: string, sessionKey?: string): Pr
|
|
|
135
136
|
if (sessionKey) assert.equal(status.latestNode?.sessionKey, sessionKey);
|
|
136
137
|
}
|
|
137
138
|
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The out-of-process drain path: a buffered session is claimed into a drain
|
|
142
|
+
* claim, the drain extracts it through the same pipeline, and the claim ends
|
|
143
|
+
* empty. The live buffer keeps its in-memory copy; the drain tombstone makes
|
|
144
|
+
* the owner subtract the drained turn instead of writing it back.
|
|
145
|
+
*/
|
|
146
|
+
async function exerciseBufferDrain(state: ExtractionLifecycleState): Promise<void> {
|
|
147
|
+
// Its own memory root and orchestrator: the drain must not perturb the
|
|
148
|
+
// row's own extraction calls or fact counts.
|
|
149
|
+
const memoryDir = await mkTempMemoryDir("extraction-drain-row");
|
|
150
|
+
const cfg = makeHarmonicLifecycleConfig(memoryDir, { extraction: { spanMode: "on" } });
|
|
151
|
+
const orchestrator = new Orchestrator(cfg);
|
|
152
|
+
state.orchestrators.push(orchestrator);
|
|
153
|
+
stubExtraction(orchestrator, (turns) => spanBearingResult(turns));
|
|
154
|
+
const sessionKey = "drain-row-session";
|
|
155
|
+
const content = "The drain row retains the canary gate detail for the teal dashboard.";
|
|
156
|
+
await orchestrator.buffer.addTurn(sessionKey, {
|
|
157
|
+
role: "user",
|
|
158
|
+
content,
|
|
159
|
+
timestamp: new Date().toISOString(),
|
|
160
|
+
sessionKey,
|
|
161
|
+
});
|
|
162
|
+
await orchestrator.buffer.save();
|
|
163
|
+
const runner = new BufferDrainRunner(orchestrator);
|
|
164
|
+
assert.equal(await runner.claim(sessionKey, "subject-drain"), true, "the drain claims the buffered session");
|
|
165
|
+
const outcome = await runner.drainSession(sessionKey, { ownerId: "subject-drain" });
|
|
166
|
+
assert.equal(outcome.status, "drained", "the drain empties the claimed session");
|
|
167
|
+
assert.equal(outcome.turnsRemaining, 0, "no turn is left claimed");
|
|
168
|
+
}
|
|
169
|
+
|
|
138
170
|
const subject: LifecycleSubject<ExtractionLifecycleState> = {
|
|
139
171
|
async setup(row: MatrixRow): Promise<ExtractionLifecycleState> {
|
|
140
172
|
const memoryDir = await mkTempMemoryDir(`extraction-${row.id}`);
|
|
@@ -254,6 +286,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
|
|
|
254
286
|
return;
|
|
255
287
|
}
|
|
256
288
|
case "before-reset": {
|
|
289
|
+
await exerciseBufferDrain(state);
|
|
257
290
|
// Buffer a low-signal turn, then fire a before_reset flush whose abort
|
|
258
291
|
// trips mid-extraction. The abort wiring (the signal threaded from
|
|
259
292
|
// flushSession into runExtraction, guarding `before_persist` and
|
|
@@ -419,6 +452,7 @@ const subject: LifecycleSubject<ExtractionLifecycleState> = {
|
|
|
419
452
|
return;
|
|
420
453
|
}
|
|
421
454
|
case "before-reset": {
|
|
455
|
+
await exerciseBufferDrain(state);
|
|
422
456
|
assert.equal(
|
|
423
457
|
state.abortFlushRejected,
|
|
424
458
|
true,
|
package/src/types.ts
CHANGED
|
@@ -719,6 +719,8 @@ export interface PluginConfig
|
|
|
719
719
|
reasoningEffort: ReasoningEffort;
|
|
720
720
|
triggerMode: TriggerMode;
|
|
721
721
|
bufferMaxTurns: number;
|
|
722
|
+
/** Distinct sessions the extraction buffer admits before backpressure (#3303). */
|
|
723
|
+
bufferMaxSessions: number;
|
|
722
724
|
bufferMaxMinutes: number;
|
|
723
725
|
/**
|
|
724
726
|
* Debounce window (ms) for persisting the smart buffer to `state/buffer.json`
|