@remnic/core 9.45.2 → 9.45.4
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/abort-error.d.ts +2 -1
- package/dist/abort-error.js +3 -1
- package/dist/access-admin-ops-surface.d.ts +14 -10
- package/dist/access-admin-ops-surface.js +84 -76
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +14 -10
- package/dist/access-authorization-probe.js +85 -77
- package/dist/access-boundary.d.ts +15 -11
- package/dist/access-boundary.js +84 -76
- package/dist/access-citation-namespace.js +2 -2
- package/dist/access-cli.js +193 -181
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +16 -0
- package/dist/access-coding-context-resolution.js +13 -0
- package/dist/access-coding-context-resolution.js.map +1 -0
- package/dist/access-extraction-force-flush.d.ts +14 -10
- package/dist/access-extraction-force-flush.js +84 -76
- package/dist/access-health-types.d.ts +2 -1
- package/dist/access-http-lcm-compaction.d.ts +16 -12
- package/dist/access-http-lcm-compaction.js +3 -3
- package/dist/access-http-lifecycle-flush.d.ts +14 -10
- package/dist/access-http-lifecycle-flush.js +2 -2
- package/dist/access-http-offline-stream.d.ts +123 -0
- package/dist/access-http-offline-stream.js +10 -0
- package/dist/access-http-offline-stream.js.map +1 -0
- package/dist/access-http-query.js +84 -76
- package/dist/access-http.d.ts +15 -10
- package/dist/access-http.js +105 -92
- package/dist/access-identity-continuity-surface.d.ts +9 -8
- package/dist/access-identity-continuity-surface.js +84 -76
- package/dist/access-lcm-surface.d.ts +14 -10
- package/dist/access-lcm-surface.js +84 -76
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +14 -10
- package/dist/access-mcp.js +95 -83
- package/dist/access-memory-search-fanout.d.ts +3 -2
- package/dist/{access-namespace-preflight-5yZ4g6F8.d.ts → access-namespace-preflight-CWUDwB4M.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +4 -3
- package/dist/access-namespace-preflight.js +84 -76
- package/dist/access-observe-helpers.d.ts +1 -0
- package/dist/access-observe-helpers.js +1 -1
- package/dist/access-observe-write-surface.d.ts +16 -10
- package/dist/access-observe-write-surface.js +84 -76
- package/dist/access-offline-manifest.d.ts +104 -0
- package/dist/access-offline-manifest.js +45 -0
- package/dist/access-offline-manifest.js.map +1 -0
- package/dist/access-operations-batch.js +86 -78
- package/dist/access-operations.d.ts +18 -14
- package/dist/access-operations.js +91 -80
- package/dist/access-recall-concurrency.d.ts +16 -26
- package/dist/access-recall-concurrency.js +86 -77
- package/dist/access-recall-response.d.ts +18 -14
- package/dist/access-recall-response.js +84 -76
- package/dist/access-recall-surface.d.ts +29 -24
- package/dist/access-recall-surface.js +84 -76
- package/dist/access-schema.d.ts +84 -84
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-CiJRsgAB.d.ts → access-service-CsU-ljFD.d.ts} +25 -16
- package/dist/access-service-helpers.d.ts +14 -10
- package/dist/access-service.d.ts +14 -10
- package/dist/access-service.js +84 -76
- package/dist/access-surface-catalog.d.ts +14 -10
- package/dist/access-surface-catalog.js +4 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +4 -3
- package/dist/action-confidence.d.ts +2 -1
- package/dist/active-memory-bridge.d.ts +2 -1
- package/dist/active-recall.d.ts +2 -1
- package/dist/active-recall.js +10 -8
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/{auto-sync-5OE5QOZB.js → auto-sync-UPTUVE4X.js} +6 -6
- package/dist/behavior-learner.d.ts +2 -1
- package/dist/behavior-learner.js +1 -1
- package/dist/behavior-signals.d.ts +2 -1
- package/dist/bootstrap.d.ts +9 -8
- package/dist/briefing.d.ts +3 -2
- package/dist/briefing.js +23 -22
- package/dist/buffer-surprise-report.d.ts +2 -1
- package/dist/buffer-turn-helpers.d.ts +2 -1
- package/dist/buffer.d.ts +3 -2
- package/dist/buffer.js +12 -11
- package/dist/bulk-import/index.d.ts +4 -3
- package/dist/calibration.d.ts +2 -1
- package/dist/capabilities.d.ts +2 -1
- package/dist/{capsule-merge-IDWJPCWK.js → capsule-merge-Q6AR3XL7.js} +67 -54
- package/dist/capsule-merge-Q6AR3XL7.js.map +1 -0
- package/dist/{catalog-scBmy0sO.d.ts → catalog-bctMURhN.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +2 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +2 -1
- package/dist/causal-consolidation.js +27 -26
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.d.ts +2 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-VUPTKTDV.js → chunk-2MRHJNWL.js} +3 -3
- package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
- package/dist/{chunk-5IVLTFOV.js → chunk-44N6ESJ4.js} +2 -2
- package/dist/{chunk-WOCNN776.js → chunk-4POAMKV6.js} +100 -41
- package/dist/chunk-4POAMKV6.js.map +1 -0
- package/dist/{chunk-HO3QBJEY.js → chunk-5546W5SI.js} +2 -2
- package/dist/{chunk-U7GW7NE7.js → chunk-5CEECY6P.js} +10 -10
- package/dist/{chunk-4UH4BTGK.js → chunk-5SNZSWWR.js} +82 -82
- package/dist/{chunk-6CZPDBJS.js → chunk-5U7ID3EZ.js} +3 -3
- package/dist/{chunk-GF22HWS2.js → chunk-6NNNURLK.js} +7 -7
- package/dist/chunk-773TRRGT.js +36 -0
- package/dist/chunk-773TRRGT.js.map +1 -0
- package/dist/chunk-7CITSYSH.js +242 -0
- package/dist/chunk-7CITSYSH.js.map +1 -0
- package/dist/{chunk-227UFSEQ.js → chunk-7RZJWZ46.js} +5 -5
- package/dist/{chunk-E5UK4VPE.js → chunk-7SHJHPTY.js} +5 -5
- package/dist/{chunk-UVIKWC7M.js → chunk-7YERSTN7.js} +17 -17
- package/dist/{chunk-DLVPUX7U.js → chunk-7YKVM5H3.js} +8 -6
- package/dist/chunk-7YKVM5H3.js.map +1 -0
- package/dist/{chunk-3CE77VAP.js → chunk-A4JMGKCD.js} +87 -74
- package/dist/chunk-A4JMGKCD.js.map +1 -0
- package/dist/chunk-A5KNZSNA.js +26 -0
- package/dist/chunk-A5KNZSNA.js.map +1 -0
- package/dist/{chunk-S2NCTZGJ.js → chunk-AJQ57VV3.js} +15 -15
- package/dist/chunk-AJQ57VV3.js.map +1 -0
- package/dist/{chunk-CUM2BBPN.js → chunk-AUMWZSE7.js} +19 -10
- package/dist/chunk-AUMWZSE7.js.map +1 -0
- package/dist/{chunk-XYTOI63Z.js → chunk-BGHFOD5A.js} +19 -11
- package/dist/chunk-BGHFOD5A.js.map +1 -0
- package/dist/{chunk-BUE5E2HL.js → chunk-BGLY7EEM.js} +5 -314
- package/dist/chunk-BGLY7EEM.js.map +1 -0
- package/dist/chunk-BIPBQQFI.js +44 -0
- package/dist/chunk-BIPBQQFI.js.map +1 -0
- package/dist/{chunk-S5SLVSVY.js → chunk-BQIFZ2MP.js} +5 -5
- package/dist/chunk-BTTPKDIL.js +34 -0
- package/dist/{chunk-PVGDJXVK.js.map → chunk-BTTPKDIL.js.map} +1 -1
- package/dist/{chunk-E53DSZEN.js → chunk-C26TE27X.js} +3 -3
- package/dist/{chunk-LZ4LDKHZ.js → chunk-CLB32OHM.js} +6 -6
- package/dist/{chunk-Q6IP2ARR.js → chunk-CSOYVTRX.js} +2 -2
- package/dist/{chunk-XOQSEF7X.js → chunk-CVILPI77.js} +6 -6
- package/dist/chunk-D3I2MCN7.js +29 -0
- package/dist/chunk-D3I2MCN7.js.map +1 -0
- package/dist/{chunk-A5OJCXZL.js → chunk-DSUAAZZX.js} +15 -4
- package/dist/chunk-DSUAAZZX.js.map +1 -0
- package/dist/{chunk-HREE4JHI.js → chunk-DYVMXPCF.js} +486 -287
- package/dist/chunk-DYVMXPCF.js.map +1 -0
- package/dist/{chunk-J7VGGECD.js → chunk-DZPFMQZ7.js} +1 -1
- package/dist/chunk-DZPFMQZ7.js.map +1 -0
- package/dist/{chunk-PDLBLTOK.js → chunk-EITZHSX6.js} +9 -9
- package/dist/{chunk-D3J5SLQK.js → chunk-EJHEWCGQ.js} +81 -20
- package/dist/chunk-EJHEWCGQ.js.map +1 -0
- package/dist/{chunk-WUNIWKY4.js → chunk-ELIL2A37.js} +6 -6
- package/dist/{chunk-E6PNLPGJ.js → chunk-FZP32336.js} +806 -470
- package/dist/chunk-FZP32336.js.map +1 -0
- package/dist/{chunk-4L6HUREQ.js → chunk-G7A5HLUS.js} +23 -17
- package/dist/chunk-G7A5HLUS.js.map +1 -0
- package/dist/{chunk-CINZGPSJ.js → chunk-GUMZC2BO.js} +2 -2
- package/dist/{chunk-H24WNPA2.js → chunk-GWFSVJ4P.js} +3 -3
- package/dist/{chunk-7XC2HX75.js → chunk-GYPQL6XN.js} +157 -16
- package/dist/chunk-GYPQL6XN.js.map +1 -0
- package/dist/{chunk-TSH56VPU.js → chunk-HAYSYUAB.js} +2 -2
- package/dist/{chunk-TDHTVMPG.js → chunk-HFPASSFV.js} +7 -2
- package/dist/chunk-HFPASSFV.js.map +1 -0
- package/dist/chunk-J2WC5LF4.js +395 -0
- package/dist/chunk-J2WC5LF4.js.map +1 -0
- package/dist/{chunk-PKNLM44P.js → chunk-JH6BPLOP.js} +9 -9
- package/dist/{chunk-KXB4VXHY.js → chunk-JIYDRBVZ.js} +2 -2
- package/dist/chunk-JV3C2MNQ.js +74 -0
- package/dist/chunk-JV3C2MNQ.js.map +1 -0
- package/dist/{chunk-AV5ZEH4M.js → chunk-KVJRXN2E.js} +2 -2
- package/dist/{chunk-JVLCVFQ4.js → chunk-KXEFRMCF.js} +3 -3
- package/dist/{chunk-WFTIGIIS.js → chunk-L6CQ7WIW.js} +5 -5
- package/dist/{chunk-EJUEXZHX.js → chunk-LLJMAULE.js} +2 -2
- package/dist/{chunk-N5Z4EVOR.js → chunk-LNEWDF2A.js} +36 -11
- package/dist/chunk-LNEWDF2A.js.map +1 -0
- package/dist/{chunk-AS7YMSL6.js → chunk-M23RF3LJ.js} +4 -4
- package/dist/{chunk-UYLMNVY6.js → chunk-MDISBSYA.js} +16 -9
- package/dist/chunk-MDISBSYA.js.map +1 -0
- package/dist/{chunk-3F2LKUMU.js → chunk-NIS256NW.js} +2 -2
- package/dist/{chunk-YIAA2X3D.js → chunk-NK5RGJ65.js} +3 -3
- package/dist/chunk-NLDVVWCL.js +84 -0
- package/dist/chunk-NLDVVWCL.js.map +1 -0
- package/dist/{chunk-OQ5PRDDS.js → chunk-NTOIP2E6.js} +6 -6
- package/dist/{chunk-HLPD7B7P.js → chunk-NUEQKLNB.js} +2 -2
- package/dist/{chunk-4J7G5SY4.js → chunk-NZBZ7IS2.js} +72 -24
- package/dist/chunk-NZBZ7IS2.js.map +1 -0
- package/dist/{chunk-3TBLDMJA.js → chunk-O4KMGRXE.js} +5 -2
- package/dist/chunk-O4KMGRXE.js.map +1 -0
- package/dist/{chunk-33PLLLL7.js → chunk-P7NGM24P.js} +6 -6
- package/dist/{chunk-7TWUCYER.js → chunk-PNRA7FAD.js} +7 -7
- package/dist/{chunk-5I4M26Q7.js → chunk-QBSFOKY6.js} +4 -4
- package/dist/{chunk-QJAQNXWI.js → chunk-QCECHYZL.js} +76 -79
- package/dist/chunk-QCECHYZL.js.map +1 -0
- package/dist/{chunk-P4DRWEYC.js → chunk-QVSBTCVP.js} +2 -2
- package/dist/{chunk-AAIUERNB.js → chunk-R5RFK3CB.js} +6 -6
- package/dist/{chunk-WDISJRMG.js → chunk-RMMVQQA6.js} +2 -2
- package/dist/{chunk-KWMXR7XS.js → chunk-S2V7RUCL.js} +8 -1
- package/dist/{chunk-KWMXR7XS.js.map → chunk-S2V7RUCL.js.map} +1 -1
- package/dist/{chunk-5SM35XZR.js → chunk-S5NZBKKQ.js} +2 -2
- package/dist/{chunk-VNA7W7QF.js → chunk-SVH57F5Z.js} +12 -4
- package/dist/chunk-SVH57F5Z.js.map +1 -0
- package/dist/{chunk-WIPEXG6R.js → chunk-SXIMQLGV.js} +2 -2
- package/dist/{chunk-RVLJEII5.js → chunk-SYUBB3WM.js} +256 -187
- package/dist/chunk-SYUBB3WM.js.map +1 -0
- package/dist/{chunk-OAEQLRCY.js → chunk-TN76AKO3.js} +5 -5
- package/dist/{chunk-QN25OCUF.js → chunk-TQ4GD737.js} +5 -5
- package/dist/{chunk-VCD4PSK2.js → chunk-TQZ4DVBC.js} +7 -4
- package/dist/chunk-TQZ4DVBC.js.map +1 -0
- package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
- package/dist/{chunk-DNWXFTLD.js → chunk-TYISDI6B.js} +2 -2
- package/dist/{chunk-4LMA77JH.js → chunk-U2VLVBBH.js} +3 -3
- package/dist/{chunk-5ZE7QHTK.js → chunk-ULVR5KG7.js} +5 -5
- package/dist/{chunk-NVRYW264.js → chunk-UQWIKLQK.js} +18 -15
- package/dist/chunk-UQWIKLQK.js.map +1 -0
- package/dist/{chunk-YV32N67O.js → chunk-URS5GSM7.js} +1 -1
- package/dist/chunk-URS5GSM7.js.map +1 -0
- package/dist/{chunk-4B77XSG5.js → chunk-UV72DEZD.js} +5 -5
- package/dist/{chunk-S2BBISHU.js → chunk-VANZKHTN.js} +3 -3
- package/dist/chunk-VHFXP27N.js +250 -0
- package/dist/chunk-VHFXP27N.js.map +1 -0
- package/dist/{chunk-3Y224NYC.js → chunk-VYISFWVX.js} +2 -2
- package/dist/{chunk-TIHMZFIV.js → chunk-W3IC7QOY.js} +3 -3
- package/dist/{chunk-NRV4Y3PM.js → chunk-W4FBGYGK.js} +1 -1
- package/dist/{chunk-P2BM76KT.js → chunk-WAS4HV46.js} +174 -43
- package/dist/chunk-WAS4HV46.js.map +1 -0
- package/dist/{chunk-57QKLRBV.js → chunk-WB7JSQCP.js} +2 -1
- package/dist/chunk-WB7JSQCP.js.map +1 -0
- package/dist/chunk-WGP57SR3.js +68 -0
- package/dist/chunk-WGP57SR3.js.map +1 -0
- package/dist/{chunk-ECK75GDJ.js → chunk-WQIHRA5F.js} +43 -24
- package/dist/chunk-WQIHRA5F.js.map +1 -0
- package/dist/{chunk-MU7ZHSZE.js → chunk-WZFAPHIK.js} +2 -2
- package/dist/{chunk-T2TTP3KU.js → chunk-X4IDNPOS.js} +2 -2
- package/dist/{chunk-BLAKS3CP.js → chunk-XL3TATMJ.js} +3 -3
- package/dist/{chunk-W4XJFLAL.js → chunk-XPRJSHNI.js} +2 -2
- package/dist/{chunk-5TFP4CUL.js → chunk-XQ3HXAQH.js} +14 -11
- package/dist/chunk-XQ3HXAQH.js.map +1 -0
- package/dist/{chunk-VWAXN2BN.js → chunk-XSFHWBQO.js} +93 -31
- package/dist/chunk-XSFHWBQO.js.map +1 -0
- package/dist/{chunk-DL7ZD3JH.js → chunk-XTAUXTDO.js} +14 -9
- package/dist/chunk-XTAUXTDO.js.map +1 -0
- package/dist/{chunk-JE7EK33X.js → chunk-Y7HRYCNW.js} +2 -2
- package/dist/{chunk-E6EE5B67.js → chunk-YK6BDDHP.js} +4 -4
- package/dist/{chunk-ES36HTSC.js → chunk-YLHM5BQQ.js} +3 -3
- package/dist/{chunk-RN7DY3FC.js → chunk-YMAQDHQM.js} +31 -12
- package/dist/chunk-YMAQDHQM.js.map +1 -0
- package/dist/{chunk-ULARSG5Z.js → chunk-YN6ASZUG.js} +10 -8
- package/dist/{chunk-ULARSG5Z.js.map → chunk-YN6ASZUG.js.map} +1 -1
- package/dist/{chunk-IKKWIPYN.js → chunk-YYQAKIDJ.js} +37 -1
- package/dist/chunk-YYQAKIDJ.js.map +1 -0
- package/dist/{chunk-BJKPPZ6Z.js → chunk-ZFGZ6PZ2.js} +2 -2
- package/dist/{chunk-CJ2ZR7UA.js → chunk-ZI32MKDW.js} +267 -214
- package/dist/chunk-ZI32MKDW.js.map +1 -0
- package/dist/{chunk-64UDOIMI.js → chunk-ZLQ37WJX.js} +2 -2
- package/dist/chunk-ZMAYKGPN.js +351 -0
- package/dist/chunk-ZMAYKGPN.js.map +1 -0
- package/dist/{cli-BUGN3d6_.d.ts → cli-BBHDtG36.d.ts} +5 -5
- package/dist/cli.d.ts +16 -12
- package/dist/cli.js +138 -124
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +24 -23
- package/dist/compounding/preference-consolidator.d.ts +2 -1
- package/dist/compression-optimizer.d.ts +2 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.js +10 -8
- package/dist/connectors/codex-materialize-runner.d.ts +2 -1
- package/dist/connectors/codex-materialize-runner.js +23 -22
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +26 -25
- package/dist/consolidation-provenance-check.d.ts +3 -2
- package/dist/consolidation-provenance-check.js +4 -4
- package/dist/consolidation-undo.d.ts +3 -2
- package/dist/consolidation-undo.js +10 -7
- package/dist/consolidation-undo.js.map +1 -1
- package/dist/contradiction/index.d.ts +3 -2
- package/dist/converge-config.d.ts +2 -1
- package/dist/convergence-refresh.d.ts +4 -3
- package/dist/convergence-refresh.js +27 -26
- package/dist/conversation-index/backend.d.ts +2 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +2 -1
- package/dist/conversation-index/faiss-adapter.d.ts +2 -1
- package/dist/conversation-index/indexer.d.ts +2 -1
- package/dist/conversation-index/search.d.ts +2 -1
- package/dist/corpus-watermark.d.ts +2 -1
- package/dist/corpus-watermark.js +42 -41
- package/dist/day-summary.d.ts +2 -1
- package/dist/delinearize.d.ts +2 -1
- package/dist/direct-answer-wiring.d.ts +2 -1
- package/dist/direct-answer-wiring.js +2 -2
- package/dist/direct-answer.d.ts +2 -1
- package/dist/embedding-fallback.d.ts +2 -1
- package/dist/embedding-fallback.js +2 -2
- package/dist/enrichment/index.d.ts +2 -1
- package/dist/entity-retrieval-boundaries.js +1 -1
- package/dist/entity-retrieval.d.ts +3 -2
- package/dist/entity-retrieval.js +24 -23
- package/dist/entity-schema.d.ts +2 -1
- package/dist/explicit-capture.d.ts +9 -8
- package/dist/explicit-capture.js +11 -9
- package/dist/external-wiki-access.d.ts +127 -0
- package/dist/external-wiki-access.js +186 -0
- package/dist/external-wiki-access.js.map +1 -0
- package/dist/external-wiki-cli.d.ts +13 -0
- package/dist/external-wiki-cli.js +96 -0
- package/dist/external-wiki-cli.js.map +1 -0
- package/dist/external-wiki-collection-registration.d.ts +39 -0
- package/dist/external-wiki-collection-registration.js +79 -0
- package/dist/external-wiki-collection-registration.js.map +1 -0
- package/dist/external-wiki-collection.d.ts +50 -0
- package/dist/external-wiki-collection.js +387 -0
- package/dist/external-wiki-collection.js.map +1 -0
- package/dist/external-wiki-config.d.ts +13 -0
- package/dist/external-wiki-config.js +13 -0
- package/dist/external-wiki-config.js.map +1 -0
- package/dist/external-wiki-guard.d.ts +11 -0
- package/dist/external-wiki-guard.js +18 -0
- package/dist/external-wiki-guard.js.map +1 -0
- package/dist/external-wiki-mcp-tools.d.ts +123 -0
- package/dist/external-wiki-mcp-tools.js +8 -0
- package/dist/external-wiki-mcp-tools.js.map +1 -0
- package/dist/external-wiki-search.d.ts +42 -0
- package/dist/external-wiki-search.js +11 -0
- package/dist/external-wiki-search.js.map +1 -0
- package/dist/external-wiki.d.ts +43 -0
- package/dist/external-wiki.js +16 -0
- package/dist/external-wiki.js.map +1 -0
- package/dist/extraction-error-classification.d.ts +2 -1
- package/dist/extraction-faithfulness.d.ts +2 -1
- package/dist/extraction-judge-telemetry.d.ts +2 -1
- package/dist/extraction-judge-training.d.ts +2 -1
- package/dist/extraction-judge.d.ts +2 -1
- package/dist/extraction-liveness.d.ts +2 -1
- package/dist/extraction-source-grounding-helpers.d.ts +5 -3
- package/dist/extraction-source-grounding-helpers.js +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +2 -1
- package/dist/extraction-source-grounding-rules.js +2 -2
- package/dist/extraction-source-grounding.d.ts +2 -1
- package/dist/extraction-source-grounding.js +5 -5
- package/dist/extraction.d.ts +2 -1
- package/dist/extraction.js +45 -43
- package/dist/fallback-llm.d.ts +2 -1
- package/dist/graph-dashboard-diff.d.ts +2 -1
- package/dist/graph-dashboard-key.d.ts +2 -1
- package/dist/graph-dashboard-parser.d.ts +2 -1
- package/dist/graph-edge-reinforcement.d.ts +2 -1
- package/dist/graph-snapshot.d.ts +2 -1
- package/dist/graph.d.ts +2 -1
- package/dist/harmonic-retrieval.js +2 -2
- package/dist/importance.d.ts +2 -1
- package/dist/importers/index.d.ts +2 -1
- package/dist/in-flight-reads.d.ts +2 -1
- package/dist/index.d.ts +732 -720
- package/dist/index.js +291 -259
- package/dist/intent.d.ts +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/index.js +8 -8
- package/dist/lcm/tools.d.ts +2 -1
- package/dist/lifecycle.d.ts +2 -1
- package/dist/live-connectors-runner.d.ts +2 -1
- package/dist/local-llm.d.ts +2 -1
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +2 -1
- package/dist/maintenance/memory-governance.d.ts +2 -1
- package/dist/maintenance/memory-governance.js +24 -23
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +24 -23
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +26 -25
- package/dist/{maintenance-LbuS2rUA.d.ts → maintenance-D2mveyCd.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +14 -10
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +2 -1
- package/dist/memory-cache.d.ts +2 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
- package/dist/memory-projection-store.d.ts +2 -1
- package/dist/memory-provenance.d.ts +2 -1
- package/dist/memory-worth-outcomes.d.ts +3 -2
- package/dist/models-json.d.ts +2 -1
- package/dist/namespaces/migrate.d.ts +4 -3
- package/dist/namespaces/migrate.js +40 -39
- package/dist/namespaces/principal.d.ts +2 -1
- package/dist/namespaces/search.d.ts +2 -1
- package/dist/namespaces/search.js +18 -18
- package/dist/namespaces/storage.d.ts +4 -3
- package/dist/namespaces/storage.js +23 -22
- package/dist/native-knowledge.d.ts +2 -1
- package/dist/offline-sync-impression-drain.d.ts +2 -1
- package/dist/offline-sync-impression-drain.js +11 -9
- package/dist/offline-sync.d.ts +29 -3
- package/dist/offline-sync.js +6 -2
- package/dist/operator-doctor-corpus.d.ts +2 -1
- package/dist/operator-doctor-corpus.js +45 -44
- package/dist/operator-doctor-replica.d.ts +2 -1
- package/dist/operator-doctor-replica.js +3 -3
- package/dist/operator-toolkit.d.ts +4 -3
- package/dist/operator-toolkit.js +59 -55
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +36 -33
- package/dist/{orchestrator-rHiWt32X.d.ts → orchestrator-DJYlwiUv.d.ts} +14 -7
- package/dist/orchestrator.d.ts +9 -8
- package/dist/orchestrator.js +201 -189
- package/dist/page-versioning.js +3 -3
- package/dist/patterns-cli.d.ts +2 -1
- package/dist/{pipeline-W_97O8BV.d.ts → pipeline-CNjY4wk3.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +2 -1
- package/dist/policy-runtime.js +1 -1
- package/dist/proactive-contention.d.ts +2 -1
- package/dist/provenance.d.ts +2 -1
- package/dist/provenance.js +2 -2
- package/dist/{qmd-LWtMofAf.d.ts → qmd-C0UDZidt.d.ts} +9 -7
- package/dist/qmd-preflight.d.ts +5 -4
- package/dist/qmd-preflight.js +2 -2
- package/dist/qmd-recall-cache.d.ts +2 -1
- package/dist/qmd.d.ts +4 -3
- package/dist/qmd.js +5 -5
- package/dist/recall-concurrency-config.d.ts +2 -1
- package/dist/recall-disclosure-escalation.d.ts +2 -1
- package/dist/recall-explain-renderer.d.ts +2 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +2 -1
- package/dist/recall-planner-llm.d.ts +2 -1
- package/dist/recall-state.d.ts +2 -1
- package/dist/recall-tag-filter.d.ts +2 -1
- package/dist/recall-timings.d.ts +2 -1
- package/dist/recall-xray-cli.d.ts +2 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +2 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +8 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +12 -2
- package/dist/reconcile/cursor.js +46 -7
- package/dist/reconcile/cursor.js.map +1 -1
- package/dist/reconcile/manifest.d.ts +9 -2
- package/dist/reconcile/manifest.js +15 -268
- package/dist/reconcile/manifest.js.map +1 -1
- package/dist/reconcile/plan.d.ts +6 -2
- package/dist/reconcile/plan.js +4 -4
- package/dist/replay/normalizers/chatgpt.d.ts +2 -1
- package/dist/replay/normalizers/claude.d.ts +2 -1
- package/dist/replay/normalizers/openclaw.d.ts +2 -1
- package/dist/replay/normalizers/shared.d.ts +2 -1
- package/dist/replay/runner.d.ts +2 -1
- package/dist/replay/types.d.ts +2 -1
- package/dist/replica-divergence.d.ts +2 -1
- package/dist/replica-divergence.js +2 -2
- package/dist/replica-peers-config.d.ts +2 -1
- package/dist/resolve-auth-token.d.ts +2 -1
- package/dist/resume-bundles.js +12 -10
- package/dist/retrieval-agents.d.ts +4 -3
- package/dist/retrieval-agents.js +2 -2
- package/dist/retrieval-tiers.d.ts +2 -1
- package/dist/routing/engine.d.ts +2 -1
- package/dist/routing/store.d.ts +2 -1
- package/dist/salvage-envelope.d.ts +2 -1
- package/dist/schemas.d.ts +76 -76
- package/dist/{scope-profiles-BiQKOE-p.d.ts → scope-profiles-BJzp2F5A.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +2 -1
- package/dist/search/embed-helper.js +3 -3
- package/dist/search/factory.d.ts +4 -2
- package/dist/search/factory.js +20 -18
- package/dist/search/index.d.ts +2 -1
- package/dist/search/index.js +22 -22
- package/dist/search/lancedb-backend.d.ts +2 -1
- package/dist/search/lancedb-backend.js +4 -4
- package/dist/search/meilisearch-backend.d.ts +2 -1
- package/dist/search/meilisearch-backend.js +4 -4
- package/dist/search/noop-backend.d.ts +2 -1
- package/dist/search/orama-backend.d.ts +2 -1
- package/dist/search/orama-backend.js +4 -4
- package/dist/search/port.d.ts +18 -1
- package/dist/search/port.js +1 -1
- package/dist/search/remote-backend.d.ts +2 -1
- package/dist/search/remote-backend.js +2 -2
- package/dist/secure-store/index.js +2 -2
- package/dist/{semantic-consolidation-dHYCyqgh.d.ts → semantic-consolidation-D4KAZO2G.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +3 -2
- package/dist/semantic-consolidation.js +25 -24
- package/dist/semantic-rule-promotion.js +23 -22
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +24 -23
- package/dist/{service-DJG3KCQ4.d.ts → service-BeDxSqE-.d.ts} +2 -2
- package/dist/session-observer-bands.d.ts +2 -1
- package/dist/session-observer-state.d.ts +2 -1
- package/dist/shared-context/manager.d.ts +10 -9
- package/dist/shared-context/manager.js +2 -2
- package/dist/signal.d.ts +2 -1
- package/dist/source-agent-qualifier.d.ts +2 -1
- package/dist/source-agent-qualifier.js +42 -40
- package/dist/{storage-F9FVh-w9.d.ts → storage-DfjxusTE.d.ts} +24 -12
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +25 -24
- package/dist/summarizer.d.ts +2 -1
- package/dist/summarizer.js +5 -5
- package/dist/summary-snapshot.d.ts +2 -1
- package/dist/temporal-supersession.d.ts +3 -2
- package/dist/temporal-timeline-recall.d.ts +2 -1
- package/dist/temporal-validity.d.ts +2 -1
- package/dist/threading.d.ts +2 -1
- package/dist/tier-migration.d.ts +3 -2
- package/dist/tier-routing.d.ts +2 -1
- package/dist/tool-scoped-memory.d.ts +5 -1
- package/dist/tool-scoped-memory.js +3 -1
- package/dist/topics.d.ts +2 -1
- package/dist/transcript.d.ts +2 -1
- package/dist/transfer/capsule-import.js +4 -4
- package/dist/transfer/types.d.ts +66 -66
- package/dist/trust-score-stage.d.ts +2 -1
- package/dist/trust-score.d.ts +2 -1
- package/dist/{types-rEwubvim.d.ts → types-yX_FwERf.d.ts} +8 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -1
- package/dist/verified-recall.js +24 -23
- package/dist/write-envelope.d.ts +2 -1
- package/package.json +2 -2
- package/src/abort-error.ts +17 -0
- package/src/access-admin-ops-surface.ts +1 -0
- package/src/access-boundary.ts +1 -0
- package/src/access-coding-context-resolution.ts +42 -0
- package/src/access-extraction-force-flush.ts +38 -2
- package/src/access-http-lcm-compaction.ts +5 -2
- package/src/access-http-offline-stream.ts +79 -0
- package/src/access-http.test.ts +310 -3
- package/src/access-http.ts +85 -21
- package/src/access-mcp-output-schemas.ts +36 -0
- package/src/access-mcp.test.ts +95 -1
- package/src/access-mcp.ts +7 -9
- package/src/access-observe-helpers.ts +64 -22
- package/src/access-observe-write-surface.ts +8 -0
- package/src/access-offline-manifest.ts +54 -0
- package/src/access-operations-batch.ts +3 -3
- package/src/access-operations.ts +13 -7
- package/src/access-recall-concurrency.ts +3 -27
- package/src/access-recall-surface.ts +3 -0
- package/src/access-service-health.test.ts +32 -7
- package/src/access-service-namespace.test.ts +55 -0
- package/src/access-service-observe-idempotency.test.ts +34 -2
- package/src/access-service-observe-lcm-parity.test.ts +138 -3
- package/src/access-service-observe-scope.test.ts +160 -1
- package/src/access-service-offline-file-content.test.ts +345 -1
- package/src/access-service.ts +86 -59
- package/src/access-surface-catalog.ts +4 -0
- package/src/admin/admin-surfaces.ts +2 -0
- package/src/binary-lifecycle/pipeline.test.ts +106 -1
- package/src/binary-lifecycle/pipeline.ts +3 -0
- package/src/coding/git-context.test.ts +47 -0
- package/src/coding/git-context.ts +129 -27
- package/src/config.test.ts +24 -0
- package/src/config.ts +9 -12
- package/src/connector-provenance.test.ts +101 -0
- package/src/consolidation-undo.ts +3 -0
- package/src/converge-conflict-policy-type.test.ts +15 -0
- package/src/convergence-refresh.ts +14 -2
- package/src/correction/correction-access-wiring.ts +9 -7
- package/src/correction/correction-executor.test.ts +206 -2
- package/src/correction/correction-executor.ts +29 -20
- package/src/correction/correction-planner.test.ts +36 -0
- package/src/correction/correction-planner.ts +9 -15
- package/src/correction/correction-service.ts +3 -1
- package/src/correction/correction-storage-integration.test.ts +77 -0
- package/src/correction/correction-surfaces.test.ts +41 -28
- package/src/correction/passive-capture.test.ts +59 -0
- package/src/correction/passive-capture.ts +4 -1
- package/src/entity-retrieval-boundaries.ts +17 -4
- package/src/entity-retrieval.ts +27 -6
- package/src/external-wiki-access.test.ts +65 -0
- package/src/external-wiki-access.ts +31 -0
- package/src/external-wiki-cli.ts +92 -0
- package/src/external-wiki-collection-registration.test.ts +163 -0
- package/src/external-wiki-collection-registration.ts +101 -0
- package/src/external-wiki-collection.test.ts +502 -0
- package/src/external-wiki-collection.ts +503 -0
- package/src/external-wiki-config.test.ts +135 -0
- package/src/external-wiki-config.ts +100 -0
- package/src/external-wiki-guard.ts +83 -0
- package/src/external-wiki-mcp-tools.ts +23 -0
- package/src/external-wiki-search.test.ts +301 -0
- package/src/external-wiki-search.ts +362 -0
- package/src/external-wiki.test.ts +240 -0
- package/src/external-wiki.ts +453 -0
- package/src/extraction-scope-source-agent.test.ts +21 -0
- package/src/extraction-source-grounding-helpers.ts +243 -53
- package/src/extraction-source-grounding-rules.ts +133 -39
- package/src/extraction-source-grounding.test.ts +363 -33
- package/src/extraction-timeout.test.ts +1 -0
- package/src/extraction-watermark.test.ts +150 -7
- package/src/extraction.ts +8 -1
- package/src/index.ts +8 -0
- package/src/mcp-read-only-tools.ts +1 -0
- package/src/offline-sync.test.ts +194 -0
- package/src/offline-sync.ts +217 -13
- package/src/orchestration/external-wiki-recall-guard.test.ts +94 -0
- package/src/orchestration/extraction-persist.ts +19 -2
- package/src/orchestration/extraction-run-helpers.ts +37 -19
- package/src/orchestration/extraction-run.test.ts +171 -2
- package/src/orchestration/extraction-run.ts +11 -13
- package/src/orchestration/extraction-watermark.ts +106 -17
- package/src/orchestration/generic-recall-paths.ts +14 -0
- package/src/orchestration/orchestrator-helpers.ts +2 -0
- package/src/orchestration/orchestrator-init.ts +9 -0
- package/src/orchestration/recall-internal-deps.ts +6 -0
- package/src/orchestration/recall-internal.ts +154 -33
- package/src/orchestration/recall-rerank-coordinator.ts +60 -25
- package/src/orchestration/recall-search-pipeline.test.ts +75 -1
- package/src/orchestration/recall-search-pipeline.ts +50 -10
- package/src/orchestrator-convergence-refresh.test.ts +36 -2
- package/src/orchestrator.ts +13 -3
- package/src/page-versioning.ts +5 -19
- package/src/procedural/procedure-recall.ts +5 -1
- package/src/provenance-surfaces.test.ts +3 -0
- package/src/qmd-client.test.ts +78 -17
- package/src/qmd.test.ts +24 -0
- package/src/qmd.ts +224 -315
- package/src/recall-explain-renderer.ts +3 -0
- package/src/recall-rerank-coordinator.test.ts +61 -0
- package/src/recall-xray-renderer.test.ts +6 -0
- package/src/recall-xray.test.ts +88 -1
- package/src/recall-xray.ts +15 -0
- package/src/reconcile/cursor.test.ts +48 -0
- package/src/reconcile/cursor.ts +58 -11
- package/src/reconcile/manifest.test.ts +4 -0
- package/src/reconcile/manifest.ts +41 -51
- package/src/reconcile/plan.test.ts +4 -0
- package/src/reconcile/plan.ts +29 -16
- package/src/search/factory.ts +6 -6
- package/src/search/port.ts +25 -9
- package/src/secure-store/secure-fs.ts +20 -12
- package/src/secure-store/secure-store.test.ts +41 -2
- package/src/spaces/index.test.ts +61 -2
- package/src/spaces/index.ts +44 -18
- package/src/storage/entity-alias-config.ts +97 -0
- package/src/storage/entity-canonical-id-lock.ts +53 -23
- package/src/storage/entity-canonical-id-migration.ts +53 -22
- package/src/storage/entity-canonical-id-references.ts +3 -0
- package/src/storage/entity-id-safety.ts +7 -0
- package/src/storage/entity-store.ts +6 -2
- package/src/storage/memory-frontmatter-metadata.ts +4 -9
- package/src/storage/memory-migration-serialization.ts +10 -15
- package/src/storage/tombstone-blocked-capture-mutation.ts +52 -64
- package/src/storage/tombstone-blocked-capture-sync.ts +244 -199
- package/src/storage-deletion-revisions.test.ts +91 -0
- package/src/storage-fact-hash-index-defer.test.ts +446 -163
- package/src/storage.ts +534 -245
- package/src/tool-scoped-memory.ts +10 -0
- package/src/transfer/capsule-import.ts +13 -0
- package/src/transfer/capsule-merge.ts +13 -0
- package/src/trust-score-recall-paths.test.ts +75 -1
- package/src/types.ts +7 -3
- package/dist/capsule-merge-IDWJPCWK.js.map +0 -1
- package/dist/chunk-3CE77VAP.js.map +0 -1
- package/dist/chunk-3TBLDMJA.js.map +0 -1
- package/dist/chunk-4J7G5SY4.js.map +0 -1
- package/dist/chunk-4L6HUREQ.js.map +0 -1
- package/dist/chunk-57QKLRBV.js.map +0 -1
- package/dist/chunk-5TFP4CUL.js.map +0 -1
- package/dist/chunk-7XC2HX75.js.map +0 -1
- package/dist/chunk-A5OJCXZL.js.map +0 -1
- package/dist/chunk-BUE5E2HL.js.map +0 -1
- package/dist/chunk-CJ2ZR7UA.js.map +0 -1
- package/dist/chunk-CUM2BBPN.js.map +0 -1
- package/dist/chunk-D3J5SLQK.js.map +0 -1
- package/dist/chunk-DL7ZD3JH.js.map +0 -1
- package/dist/chunk-DLVPUX7U.js.map +0 -1
- package/dist/chunk-E6PNLPGJ.js.map +0 -1
- package/dist/chunk-ECK75GDJ.js.map +0 -1
- package/dist/chunk-HREE4JHI.js.map +0 -1
- package/dist/chunk-IKKWIPYN.js.map +0 -1
- package/dist/chunk-J7VGGECD.js.map +0 -1
- package/dist/chunk-N5Z4EVOR.js.map +0 -1
- package/dist/chunk-NVRYW264.js.map +0 -1
- package/dist/chunk-P2BM76KT.js.map +0 -1
- package/dist/chunk-PVGDJXVK.js +0 -21
- package/dist/chunk-QJAQNXWI.js.map +0 -1
- package/dist/chunk-RN7DY3FC.js.map +0 -1
- package/dist/chunk-RVLJEII5.js.map +0 -1
- package/dist/chunk-S2NCTZGJ.js.map +0 -1
- package/dist/chunk-TDHTVMPG.js.map +0 -1
- package/dist/chunk-UYLMNVY6.js.map +0 -1
- package/dist/chunk-VCD4PSK2.js.map +0 -1
- package/dist/chunk-VNA7W7QF.js.map +0 -1
- package/dist/chunk-VWAXN2BN.js.map +0 -1
- package/dist/chunk-WOCNN776.js.map +0 -1
- package/dist/chunk-XYTOI63Z.js.map +0 -1
- package/dist/chunk-YV32N67O.js.map +0 -1
- /package/dist/{auto-sync-5OE5QOZB.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
- /package/dist/{chunk-VUPTKTDV.js.map → chunk-2MRHJNWL.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-5IVLTFOV.js.map → chunk-44N6ESJ4.js.map} +0 -0
- /package/dist/{chunk-HO3QBJEY.js.map → chunk-5546W5SI.js.map} +0 -0
- /package/dist/{chunk-U7GW7NE7.js.map → chunk-5CEECY6P.js.map} +0 -0
- /package/dist/{chunk-4UH4BTGK.js.map → chunk-5SNZSWWR.js.map} +0 -0
- /package/dist/{chunk-6CZPDBJS.js.map → chunk-5U7ID3EZ.js.map} +0 -0
- /package/dist/{chunk-GF22HWS2.js.map → chunk-6NNNURLK.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-7RZJWZ46.js.map} +0 -0
- /package/dist/{chunk-E5UK4VPE.js.map → chunk-7SHJHPTY.js.map} +0 -0
- /package/dist/{chunk-UVIKWC7M.js.map → chunk-7YERSTN7.js.map} +0 -0
- /package/dist/{chunk-S5SLVSVY.js.map → chunk-BQIFZ2MP.js.map} +0 -0
- /package/dist/{chunk-E53DSZEN.js.map → chunk-C26TE27X.js.map} +0 -0
- /package/dist/{chunk-LZ4LDKHZ.js.map → chunk-CLB32OHM.js.map} +0 -0
- /package/dist/{chunk-Q6IP2ARR.js.map → chunk-CSOYVTRX.js.map} +0 -0
- /package/dist/{chunk-XOQSEF7X.js.map → chunk-CVILPI77.js.map} +0 -0
- /package/dist/{chunk-PDLBLTOK.js.map → chunk-EITZHSX6.js.map} +0 -0
- /package/dist/{chunk-WUNIWKY4.js.map → chunk-ELIL2A37.js.map} +0 -0
- /package/dist/{chunk-CINZGPSJ.js.map → chunk-GUMZC2BO.js.map} +0 -0
- /package/dist/{chunk-H24WNPA2.js.map → chunk-GWFSVJ4P.js.map} +0 -0
- /package/dist/{chunk-TSH56VPU.js.map → chunk-HAYSYUAB.js.map} +0 -0
- /package/dist/{chunk-PKNLM44P.js.map → chunk-JH6BPLOP.js.map} +0 -0
- /package/dist/{chunk-KXB4VXHY.js.map → chunk-JIYDRBVZ.js.map} +0 -0
- /package/dist/{chunk-AV5ZEH4M.js.map → chunk-KVJRXN2E.js.map} +0 -0
- /package/dist/{chunk-JVLCVFQ4.js.map → chunk-KXEFRMCF.js.map} +0 -0
- /package/dist/{chunk-WFTIGIIS.js.map → chunk-L6CQ7WIW.js.map} +0 -0
- /package/dist/{chunk-EJUEXZHX.js.map → chunk-LLJMAULE.js.map} +0 -0
- /package/dist/{chunk-AS7YMSL6.js.map → chunk-M23RF3LJ.js.map} +0 -0
- /package/dist/{chunk-3F2LKUMU.js.map → chunk-NIS256NW.js.map} +0 -0
- /package/dist/{chunk-YIAA2X3D.js.map → chunk-NK5RGJ65.js.map} +0 -0
- /package/dist/{chunk-OQ5PRDDS.js.map → chunk-NTOIP2E6.js.map} +0 -0
- /package/dist/{chunk-HLPD7B7P.js.map → chunk-NUEQKLNB.js.map} +0 -0
- /package/dist/{chunk-33PLLLL7.js.map → chunk-P7NGM24P.js.map} +0 -0
- /package/dist/{chunk-7TWUCYER.js.map → chunk-PNRA7FAD.js.map} +0 -0
- /package/dist/{chunk-5I4M26Q7.js.map → chunk-QBSFOKY6.js.map} +0 -0
- /package/dist/{chunk-P4DRWEYC.js.map → chunk-QVSBTCVP.js.map} +0 -0
- /package/dist/{chunk-AAIUERNB.js.map → chunk-R5RFK3CB.js.map} +0 -0
- /package/dist/{chunk-WDISJRMG.js.map → chunk-RMMVQQA6.js.map} +0 -0
- /package/dist/{chunk-5SM35XZR.js.map → chunk-S5NZBKKQ.js.map} +0 -0
- /package/dist/{chunk-WIPEXG6R.js.map → chunk-SXIMQLGV.js.map} +0 -0
- /package/dist/{chunk-OAEQLRCY.js.map → chunk-TN76AKO3.js.map} +0 -0
- /package/dist/{chunk-QN25OCUF.js.map → chunk-TQ4GD737.js.map} +0 -0
- /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-DNWXFTLD.js.map → chunk-TYISDI6B.js.map} +0 -0
- /package/dist/{chunk-4LMA77JH.js.map → chunk-U2VLVBBH.js.map} +0 -0
- /package/dist/{chunk-5ZE7QHTK.js.map → chunk-ULVR5KG7.js.map} +0 -0
- /package/dist/{chunk-4B77XSG5.js.map → chunk-UV72DEZD.js.map} +0 -0
- /package/dist/{chunk-S2BBISHU.js.map → chunk-VANZKHTN.js.map} +0 -0
- /package/dist/{chunk-3Y224NYC.js.map → chunk-VYISFWVX.js.map} +0 -0
- /package/dist/{chunk-TIHMZFIV.js.map → chunk-W3IC7QOY.js.map} +0 -0
- /package/dist/{chunk-NRV4Y3PM.js.map → chunk-W4FBGYGK.js.map} +0 -0
- /package/dist/{chunk-MU7ZHSZE.js.map → chunk-WZFAPHIK.js.map} +0 -0
- /package/dist/{chunk-T2TTP3KU.js.map → chunk-X4IDNPOS.js.map} +0 -0
- /package/dist/{chunk-BLAKS3CP.js.map → chunk-XL3TATMJ.js.map} +0 -0
- /package/dist/{chunk-W4XJFLAL.js.map → chunk-XPRJSHNI.js.map} +0 -0
- /package/dist/{chunk-JE7EK33X.js.map → chunk-Y7HRYCNW.js.map} +0 -0
- /package/dist/{chunk-E6EE5B67.js.map → chunk-YK6BDDHP.js.map} +0 -0
- /package/dist/{chunk-ES36HTSC.js.map → chunk-YLHM5BQQ.js.map} +0 -0
- /package/dist/{chunk-BJKPPZ6Z.js.map → chunk-ZFGZ6PZ2.js.map} +0 -0
- /package/dist/{chunk-64UDOIMI.js.map → chunk-ZLQ37WJX.js.map} +0 -0
|
@@ -1265,6 +1265,52 @@ test("offlineSyncFiles reports symlink requested paths as input errors", async (
|
|
|
1265
1265
|
}
|
|
1266
1266
|
});
|
|
1267
1267
|
|
|
1268
|
+
test("offlineSyncSnapshot and stream expose durable namespace deletion revisions", async () => {
|
|
1269
|
+
const root = await mkdtemp(path.join(os.tmpdir(), "remnic-offline-snapshot-deletions-"));
|
|
1270
|
+
try {
|
|
1271
|
+
const relPath = "facts/deleted.md";
|
|
1272
|
+
const filePath = path.join(root, relPath);
|
|
1273
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
1274
|
+
await writeFile(filePath, "deleted content");
|
|
1275
|
+
const storage = new StorageManager(root);
|
|
1276
|
+
await storage.deleteOfflineSyncFile(filePath);
|
|
1277
|
+
const mtimeMs = (await storage.readDeletionRevisions()).get(relPath);
|
|
1278
|
+
assert.ok(mtimeMs !== undefined);
|
|
1279
|
+
|
|
1280
|
+
const { service } = makeService();
|
|
1281
|
+
(service as unknown as {
|
|
1282
|
+
orchestrator: {
|
|
1283
|
+
config: PluginConfig;
|
|
1284
|
+
getStorage(namespace: string): Promise<StorageManager>;
|
|
1285
|
+
};
|
|
1286
|
+
}).orchestrator.getStorage = async () => storage;
|
|
1287
|
+
|
|
1288
|
+
const snapshot = await service.offlineSyncSnapshot({
|
|
1289
|
+
namespace: "team",
|
|
1290
|
+
principal: "reader",
|
|
1291
|
+
includeContent: false,
|
|
1292
|
+
});
|
|
1293
|
+
const stream = await service.offlineSyncSnapshotStream({
|
|
1294
|
+
namespace: "team",
|
|
1295
|
+
principal: "reader",
|
|
1296
|
+
includeContent: false,
|
|
1297
|
+
});
|
|
1298
|
+
|
|
1299
|
+
assert.deepEqual(snapshot.deletions, [{ path: relPath, mtimeMs }]);
|
|
1300
|
+
assert.deepEqual(stream.deletions, snapshot.deletions);
|
|
1301
|
+
|
|
1302
|
+
await writeFile(filePath, "recreated content");
|
|
1303
|
+
const recreatedStream = await service.offlineSyncSnapshotStream({
|
|
1304
|
+
namespace: "team",
|
|
1305
|
+
principal: "reader",
|
|
1306
|
+
includeContent: false,
|
|
1307
|
+
});
|
|
1308
|
+
assert.deepEqual(recreatedStream.deletions, []);
|
|
1309
|
+
} finally {
|
|
1310
|
+
await rm(root, { recursive: true, force: true });
|
|
1311
|
+
}
|
|
1312
|
+
});
|
|
1313
|
+
|
|
1268
1314
|
test("offlineSyncSnapshot does not trust client base capture time for server fast-base scans", async () => {
|
|
1269
1315
|
const root = await mkdtemp(path.join(os.tmpdir(), "remnic-offline-snapshot-client-clock-"));
|
|
1270
1316
|
try {
|
|
@@ -1294,6 +1340,9 @@ test("offlineSyncSnapshot does not trust client base capture time for server fas
|
|
|
1294
1340
|
async drainPendingMemoryLifecycleEventsForSync() {
|
|
1295
1341
|
return { folded: false, pendingDeferred: false };
|
|
1296
1342
|
},
|
|
1343
|
+
async readDeletionRevisions() {
|
|
1344
|
+
return new Map<string, number>();
|
|
1345
|
+
},
|
|
1297
1346
|
async readOfflineSyncFile(targetPath: string) {
|
|
1298
1347
|
return readFile(targetPath);
|
|
1299
1348
|
},
|
|
@@ -1358,6 +1407,9 @@ test("offlineSyncSnapshot drains pending recall-impression spills so a recorded
|
|
|
1358
1407
|
async drainPendingMemoryLifecycleEventsForSync() {
|
|
1359
1408
|
return { folded: false, pendingDeferred: false };
|
|
1360
1409
|
},
|
|
1410
|
+
async readDeletionRevisions() {
|
|
1411
|
+
return new Map<string, number>();
|
|
1412
|
+
},
|
|
1361
1413
|
async readOfflineSyncFile(targetPath: string) {
|
|
1362
1414
|
return readFile(targetPath);
|
|
1363
1415
|
},
|
|
@@ -1441,6 +1493,9 @@ test("offlineSyncSnapshot does NOT drain the global impression queue during a na
|
|
|
1441
1493
|
lifecycleDrainCalls += 1;
|
|
1442
1494
|
return { folded: false, pendingDeferred: false };
|
|
1443
1495
|
},
|
|
1496
|
+
async readDeletionRevisions() {
|
|
1497
|
+
return new Map<string, number>();
|
|
1498
|
+
},
|
|
1444
1499
|
async readOfflineSyncFile(targetPath: string) {
|
|
1445
1500
|
return readFile(targetPath);
|
|
1446
1501
|
},
|
|
@@ -35,7 +35,7 @@ interface ObserveProbe {
|
|
|
35
35
|
}>;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
function makeObserveProbe(memoryDir: string): ObserveProbe {
|
|
38
|
+
function makeObserveProbe(memoryDir: string, projectScope = true): ObserveProbe {
|
|
39
39
|
const contexts = new Map<string, CodingContext>();
|
|
40
40
|
const lcmCalls: ObserveProbe["lcmCalls"] = [];
|
|
41
41
|
const extractionCalls: ObserveProbe["extractionCalls"] = [];
|
|
@@ -47,7 +47,7 @@ function makeObserveProbe(memoryDir: string): ObserveProbe {
|
|
|
47
47
|
namespacePolicies: [
|
|
48
48
|
{ name: "pi-geek", readPrincipals: ["pi-geek"], writePrincipals: ["pi-geek"] },
|
|
49
49
|
],
|
|
50
|
-
codingMode: { projectScope
|
|
50
|
+
codingMode: { projectScope },
|
|
51
51
|
memoryDir,
|
|
52
52
|
// Disable objective-state snapshots so the probe doesn't need a writable
|
|
53
53
|
// storage backend — the idempotency contract under test is LCM + extraction.
|
|
@@ -274,6 +274,38 @@ test("#1649 review fix: rebinding the session's ambient coding context makes the
|
|
|
274
274
|
}
|
|
275
275
|
});
|
|
276
276
|
|
|
277
|
+
test("#2206 project-scope-off ignores ambient coding context in observe idempotency", async () => {
|
|
278
|
+
const memoryDir = mkdtempSync(join(tmpdir(), "remnic-observe-unscoped-replay-"));
|
|
279
|
+
try {
|
|
280
|
+
const probe = makeObserveProbe(memoryDir, false);
|
|
281
|
+
const service = new EngramAccessService(probe.orch);
|
|
282
|
+
const key = "observe-batch-unscoped-replay-#6";
|
|
283
|
+
const req = observeRequest({
|
|
284
|
+
idempotencyKey: key,
|
|
285
|
+
projectTag: "Acme/Webshop",
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
const first = await service.observe(req);
|
|
289
|
+
assert.equal(first.effectiveNamespace, "default");
|
|
290
|
+
assert.equal(first.scopeDebug?.codingOverlayApplied, false);
|
|
291
|
+
assert.equal(probe.contexts.size, 0, "disabled project scoping must not attach projectTag context");
|
|
292
|
+
probe.contexts.set(req.sessionKey, {
|
|
293
|
+
projectId: "tag:ignored-while-unscoped",
|
|
294
|
+
branch: "changed-branch",
|
|
295
|
+
rootPath: "/projects/ignored",
|
|
296
|
+
defaultBranch: "main",
|
|
297
|
+
});
|
|
298
|
+
assert.ok(probe.contexts.has(req.sessionKey), "the ambient context change must be injected");
|
|
299
|
+
|
|
300
|
+
const replay = await service.observe(req);
|
|
301
|
+
assert.equal(replay.idempotencyReplay, true);
|
|
302
|
+
assert.equal(probe.extractionCalls.length, 1);
|
|
303
|
+
assert.equal(probe.lcmCalls.length, 1);
|
|
304
|
+
} finally {
|
|
305
|
+
rmSync(memoryDir, { recursive: true, force: true });
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
|
|
277
309
|
test("#1649 review fix: projectTag observe replays correctly despite scope resolution side effects", async () => {
|
|
278
310
|
// The fingerprint folds in the RESOLVED writeNamespace (not the raw ambient
|
|
279
311
|
// context). resolveMemoryScopePlan seeds the session context from projectTag
|
|
@@ -34,7 +34,7 @@ import { EngramAccessForbiddenError } from "./access-errors.js";
|
|
|
34
34
|
import { Orchestrator } from "./orchestrator.js";
|
|
35
35
|
import { ExtractionDeadlineError } from "./orchestration/extraction-run.js";
|
|
36
36
|
import { SessionOwnershipError } from "./orchestration/session-context.js";
|
|
37
|
-
import type { EngramAccessObserveRequest } from "./access-service.js";
|
|
37
|
+
import type { EngramAccessObserveRequest, MemoryScopePlan } from "./access-service.js";
|
|
38
38
|
import {
|
|
39
39
|
combineNamespaces,
|
|
40
40
|
lcmSessionKeyForNamespace,
|
|
@@ -957,6 +957,141 @@ test("#2128: post-flush retained cleanup stops on abort or deadline", async () =
|
|
|
957
957
|
/replay extraction deadline exceeded \(retained_turn_cleanup\)/,
|
|
958
958
|
);
|
|
959
959
|
});
|
|
960
|
+
test("#2206: an expired force-flush deadline stops before scope resolution", async () => {
|
|
961
|
+
const probe = makeParityProbe({ namespacesEnabled: false } as Partial<PluginConfig>);
|
|
962
|
+
const service = new EngramAccessService(probe.orch);
|
|
963
|
+
let scopeResolutionStarted = false;
|
|
964
|
+
const internals = service as unknown as {
|
|
965
|
+
resolveMemoryScopePlan: (request: unknown) => Promise<never>;
|
|
966
|
+
};
|
|
967
|
+
internals.resolveMemoryScopePlan = async () => {
|
|
968
|
+
scopeResolutionStarted = true;
|
|
969
|
+
throw new Error("scope resolution must not start");
|
|
970
|
+
};
|
|
971
|
+
|
|
972
|
+
await assert.rejects(
|
|
973
|
+
service.extractionForceFlush({
|
|
974
|
+
sessionKey: "expired-scope-resolution",
|
|
975
|
+
deadlineMs: 1,
|
|
976
|
+
}),
|
|
977
|
+
/scope_resolution/,
|
|
978
|
+
);
|
|
979
|
+
assert.equal(scopeResolutionStarted, false);
|
|
980
|
+
});
|
|
981
|
+
|
|
982
|
+
test("#2206: abort during scope resolution cancels pre-resolution observe preparations", async () => {
|
|
983
|
+
const probe = makeParityProbe(withSelfPolicyPrefix("pi-geek"));
|
|
984
|
+
const service = new EngramAccessService(probe.orch);
|
|
985
|
+
const abortController = new AbortController();
|
|
986
|
+
let releaseObserveScope!: () => void;
|
|
987
|
+
let signalObserveScopeStarted!: () => void;
|
|
988
|
+
let signalFlushScopeStarted!: () => void;
|
|
989
|
+
const observeScopeGate = new Promise<void>((resolve) => {
|
|
990
|
+
releaseObserveScope = resolve;
|
|
991
|
+
});
|
|
992
|
+
const observeScopeStarted = new Promise<void>((resolve) => {
|
|
993
|
+
signalObserveScopeStarted = resolve;
|
|
994
|
+
});
|
|
995
|
+
const flushScopeStarted = new Promise<void>((resolve) => {
|
|
996
|
+
signalFlushScopeStarted = resolve;
|
|
997
|
+
});
|
|
998
|
+
const internals = service as unknown as {
|
|
999
|
+
resolveMemoryScopePlan: (
|
|
1000
|
+
request: EngramAccessObserveRequest & { messages?: unknown },
|
|
1001
|
+
) => Promise<MemoryScopePlan>;
|
|
1002
|
+
};
|
|
1003
|
+
const resolveMemoryScopePlan = internals.resolveMemoryScopePlan.bind(service);
|
|
1004
|
+
internals.resolveMemoryScopePlan = async (request) => {
|
|
1005
|
+
if (request.messages !== undefined) {
|
|
1006
|
+
signalObserveScopeStarted();
|
|
1007
|
+
await observeScopeGate;
|
|
1008
|
+
return resolveMemoryScopePlan(request);
|
|
1009
|
+
}
|
|
1010
|
+
signalFlushScopeStarted();
|
|
1011
|
+
return new Promise<never>(() => {});
|
|
1012
|
+
};
|
|
1013
|
+
|
|
1014
|
+
const observe = service.observe(observeRequest({
|
|
1015
|
+
sessionKey: "pi-geek:abort-scope-resolution",
|
|
1016
|
+
namespace: "pi-geek",
|
|
1017
|
+
authenticatedPrincipal: "pi-geek",
|
|
1018
|
+
skipExtraction: false,
|
|
1019
|
+
}));
|
|
1020
|
+
await observeScopeStarted;
|
|
1021
|
+
const flush = service.extractionForceFlush({
|
|
1022
|
+
sessionKey: "pi-geek:abort-scope-resolution",
|
|
1023
|
+
namespace: "pi-geek",
|
|
1024
|
+
authenticatedPrincipal: "pi-geek",
|
|
1025
|
+
abortSignal: abortController.signal,
|
|
1026
|
+
});
|
|
1027
|
+
await flushScopeStarted;
|
|
1028
|
+
abortController.abort();
|
|
1029
|
+
|
|
1030
|
+
await assert.rejects(flush, /extraction force-flush aborted/);
|
|
1031
|
+
releaseObserveScope();
|
|
1032
|
+
const response = await observe;
|
|
1033
|
+
assert.equal(response.extractionQueued, false);
|
|
1034
|
+
assert.equal(probe.extractionCalls.length, 0);
|
|
1035
|
+
});
|
|
1036
|
+
|
|
1037
|
+
test("#2206: scope-resolution deadline cancels preparations by raw projectTag and cwd hints", async () => {
|
|
1038
|
+
const rawHintCases = [
|
|
1039
|
+
{ projectTag: "Acme/Webshop" },
|
|
1040
|
+
{ cwd: "/workspace/acme/webshop" },
|
|
1041
|
+
];
|
|
1042
|
+
|
|
1043
|
+
for (const rawHintCase of rawHintCases) {
|
|
1044
|
+
const probe = makeParityProbe(withSelfPolicyPrefix("pi-geek"));
|
|
1045
|
+
const service = new EngramAccessService(probe.orch);
|
|
1046
|
+
let releaseObserveScope!: () => void;
|
|
1047
|
+
let signalObserveScopeStarted!: () => void;
|
|
1048
|
+
let flushScopeStarted = false;
|
|
1049
|
+
const observeScopeGate = new Promise<void>((resolve) => {
|
|
1050
|
+
releaseObserveScope = resolve;
|
|
1051
|
+
});
|
|
1052
|
+
const observeScopeStarted = new Promise<void>((resolve) => {
|
|
1053
|
+
signalObserveScopeStarted = resolve;
|
|
1054
|
+
});
|
|
1055
|
+
const internals = service as unknown as {
|
|
1056
|
+
resolveMemoryScopePlan: (
|
|
1057
|
+
request: EngramAccessObserveRequest & { messages?: unknown },
|
|
1058
|
+
) => Promise<MemoryScopePlan>;
|
|
1059
|
+
};
|
|
1060
|
+
const resolveMemoryScopePlan = internals.resolveMemoryScopePlan.bind(service);
|
|
1061
|
+
internals.resolveMemoryScopePlan = async (request) => {
|
|
1062
|
+
if (request.messages !== undefined) {
|
|
1063
|
+
signalObserveScopeStarted();
|
|
1064
|
+
await observeScopeGate;
|
|
1065
|
+
return resolveMemoryScopePlan(request);
|
|
1066
|
+
}
|
|
1067
|
+
flushScopeStarted = true;
|
|
1068
|
+
throw new Error("scope resolution must not start");
|
|
1069
|
+
};
|
|
1070
|
+
|
|
1071
|
+
const observe = service.observe(observeRequest({
|
|
1072
|
+
sessionKey: "pi-geek:raw-hint-deadline",
|
|
1073
|
+
authenticatedPrincipal: "pi-geek",
|
|
1074
|
+
skipExtraction: false,
|
|
1075
|
+
...rawHintCase,
|
|
1076
|
+
}));
|
|
1077
|
+
await observeScopeStarted;
|
|
1078
|
+
await assert.rejects(
|
|
1079
|
+
service.extractionForceFlush({
|
|
1080
|
+
sessionKey: "pi-geek:raw-hint-deadline",
|
|
1081
|
+
authenticatedPrincipal: "pi-geek",
|
|
1082
|
+
deadlineMs: Date.now() - 1,
|
|
1083
|
+
...rawHintCase,
|
|
1084
|
+
}),
|
|
1085
|
+
/scope_resolution/,
|
|
1086
|
+
);
|
|
1087
|
+
assert.equal(flushScopeStarted, false);
|
|
1088
|
+
releaseObserveScope();
|
|
1089
|
+
const response = await observe;
|
|
1090
|
+
assert.equal(response.extractionQueued, false);
|
|
1091
|
+
assert.equal(probe.extractionCalls.length, 0);
|
|
1092
|
+
}
|
|
1093
|
+
});
|
|
1094
|
+
|
|
960
1095
|
test("#2128: aborted or expired extraction force-flush never touches a buffer", async () => {
|
|
961
1096
|
const probe = makeParityProbe(withSelfPolicyPrefix("pi-geek"));
|
|
962
1097
|
const service = new EngramAccessService(probe.orch);
|
|
@@ -981,7 +1116,7 @@ test("#2128: aborted or expired extraction force-flush never touches a buffer",
|
|
|
981
1116
|
}),
|
|
982
1117
|
(error: unknown) =>
|
|
983
1118
|
error instanceof EngramAccessInputError &&
|
|
984
|
-
error.message === "extraction
|
|
1119
|
+
error.message === "replay extraction deadline exceeded (scope_resolution)",
|
|
985
1120
|
);
|
|
986
1121
|
assert.equal(probe.extractionForceFlushCalls.length, 0);
|
|
987
1122
|
});
|
|
@@ -1017,7 +1152,7 @@ test("#2128: self-deps wires force-flush cancellation into the observe tracker",
|
|
|
1017
1152
|
}),
|
|
1018
1153
|
(error: unknown) =>
|
|
1019
1154
|
error instanceof EngramAccessInputError &&
|
|
1020
|
-
error.message === "extraction
|
|
1155
|
+
error.message === "replay extraction deadline exceeded (scope_resolution)",
|
|
1021
1156
|
);
|
|
1022
1157
|
assert.deepEqual(cancellations, [{
|
|
1023
1158
|
sessionKey: "pi-geek:cancel-hook",
|
|
@@ -243,6 +243,166 @@ test("#2128 pending observe preparation is a force-flush barrier", async () => {
|
|
|
243
243
|
assert.equal(waited, true);
|
|
244
244
|
});
|
|
245
245
|
|
|
246
|
+
test("#2206 scoped wait ignores unresolved preparations with a different hint", async () => {
|
|
247
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
248
|
+
const target = tracker.reserve("opaque-session", "projectTag:project-a");
|
|
249
|
+
const unrelated = tracker.reserve("opaque-session", "projectTag:project-b");
|
|
250
|
+
let settled = false;
|
|
251
|
+
const waitPromise = tracker
|
|
252
|
+
.wait(
|
|
253
|
+
"opaque-session",
|
|
254
|
+
"alice",
|
|
255
|
+
"alice-project-a",
|
|
256
|
+
undefined,
|
|
257
|
+
undefined,
|
|
258
|
+
"projectTag:project-a",
|
|
259
|
+
)
|
|
260
|
+
.then(() => {
|
|
261
|
+
settled = true;
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
target.release();
|
|
265
|
+
await new Promise<void>((resolve) => setImmediate(resolve));
|
|
266
|
+
const settledBeforeUnrelatedRelease = settled;
|
|
267
|
+
unrelated.release();
|
|
268
|
+
await waitPromise;
|
|
269
|
+
|
|
270
|
+
assert.equal(settledBeforeUnrelatedRelease, true);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
test("#2206 scoped wait fences a reservation that later resolves into the flushed scope", async () => {
|
|
274
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
275
|
+
const reservation = tracker.reserve("opaque-session", "cwd:/workspace/project/nested");
|
|
276
|
+
const unrelated = tracker.reserve("opaque-session", "cwd:/workspace/other/nested");
|
|
277
|
+
|
|
278
|
+
await tracker.wait(
|
|
279
|
+
"opaque-session",
|
|
280
|
+
"alice",
|
|
281
|
+
"alice-project",
|
|
282
|
+
undefined,
|
|
283
|
+
undefined,
|
|
284
|
+
"projectTag:Acme/Webshop",
|
|
285
|
+
);
|
|
286
|
+
assert.equal(reservation.isCancelled(), false, "the raw hint mismatch initially excludes the reservation");
|
|
287
|
+
|
|
288
|
+
reservation.setScope("alice", "alice-project");
|
|
289
|
+
unrelated.setScope("alice", "alice-other-project");
|
|
290
|
+
|
|
291
|
+
assert.equal(
|
|
292
|
+
reservation.isCancelled(),
|
|
293
|
+
true,
|
|
294
|
+
"a reservation existing at the wait boundary cannot enter the flushed scope later",
|
|
295
|
+
);
|
|
296
|
+
assert.equal(unrelated.isCancelled(), false, "the fence must not cancel a different resolved scope");
|
|
297
|
+
unrelated.release();
|
|
298
|
+
reservation.release();
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
test("#2206 resolved scope overrides a mismatched preparation hint", async () => {
|
|
302
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
303
|
+
const preparation = tracker.reserve("opaque-session", "cwd:/workspace/project/src");
|
|
304
|
+
preparation.setScope("alice", "alice-project");
|
|
305
|
+
let settled = false;
|
|
306
|
+
const waitPromise = tracker
|
|
307
|
+
.wait(
|
|
308
|
+
"opaque-session",
|
|
309
|
+
"alice",
|
|
310
|
+
"alice-project",
|
|
311
|
+
undefined,
|
|
312
|
+
undefined,
|
|
313
|
+
"projectTag:Acme/Webshop",
|
|
314
|
+
)
|
|
315
|
+
.then(() => {
|
|
316
|
+
settled = true;
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
await Promise.resolve();
|
|
320
|
+
assert.equal(settled, false);
|
|
321
|
+
preparation.release();
|
|
322
|
+
await waitPromise;
|
|
323
|
+
assert.equal(settled, true);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
test("#2206 resolved scope mismatch overrides an identical preparation hint", async () => {
|
|
327
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
328
|
+
const unrelated = tracker.reserve("opaque-session", "projectTag:project-a");
|
|
329
|
+
unrelated.setScope("alice", "alice-project-b");
|
|
330
|
+
let settled = false;
|
|
331
|
+
const waitPromise = tracker
|
|
332
|
+
.wait(
|
|
333
|
+
"opaque-session",
|
|
334
|
+
"alice",
|
|
335
|
+
"alice-project-a",
|
|
336
|
+
undefined,
|
|
337
|
+
undefined,
|
|
338
|
+
"projectTag:project-a",
|
|
339
|
+
)
|
|
340
|
+
.then(() => {
|
|
341
|
+
settled = true;
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
await new Promise<void>((resolve) => setImmediate(resolve));
|
|
345
|
+
const settledBeforeUnrelatedRelease = settled;
|
|
346
|
+
unrelated.release();
|
|
347
|
+
await waitPromise;
|
|
348
|
+
|
|
349
|
+
assert.equal(settledBeforeUnrelatedRelease, true);
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
test("#2206 unresolved preparation without a hint remains a conservative barrier", async () => {
|
|
353
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
354
|
+
const preparation = tracker.reserve("opaque-session");
|
|
355
|
+
let settled = false;
|
|
356
|
+
const waitPromise = tracker
|
|
357
|
+
.wait(
|
|
358
|
+
"opaque-session",
|
|
359
|
+
"alice",
|
|
360
|
+
"alice-project",
|
|
361
|
+
undefined,
|
|
362
|
+
undefined,
|
|
363
|
+
"projectTag:project-a",
|
|
364
|
+
)
|
|
365
|
+
.then(() => {
|
|
366
|
+
settled = true;
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
await Promise.resolve();
|
|
370
|
+
assert.equal(settled, false);
|
|
371
|
+
preparation.release();
|
|
372
|
+
await waitPromise;
|
|
373
|
+
assert.equal(settled, true);
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
test("#2206 raw-hint cancellation only cancels matching preparations", async () => {
|
|
377
|
+
const tracker = new PendingObserveExtractionTracker();
|
|
378
|
+
const unresolved = tracker.reserve("opaque-session", "projectTag:project-a");
|
|
379
|
+
const resolved = tracker.reserve("opaque-session", "projectTag:project-a");
|
|
380
|
+
const unrelated = tracker.reserve("opaque-session", "projectTag:project-b");
|
|
381
|
+
resolved.setScope("alice", "alice-project-a");
|
|
382
|
+
let releaseExtraction!: () => void;
|
|
383
|
+
const extraction = new Promise<void>((resolve) => {
|
|
384
|
+
releaseExtraction = resolve;
|
|
385
|
+
});
|
|
386
|
+
const unrelatedController = new AbortController();
|
|
387
|
+
tracker.track(
|
|
388
|
+
tracker.key("opaque-session", "alice", "alice-project-b"),
|
|
389
|
+
extraction,
|
|
390
|
+
unrelatedController,
|
|
391
|
+
);
|
|
392
|
+
|
|
393
|
+
tracker.cancelPreparations("opaque-session", "projectTag:project-a");
|
|
394
|
+
|
|
395
|
+
assert.equal(unresolved.isCancelled(), true);
|
|
396
|
+
assert.equal(resolved.isCancelled(), true);
|
|
397
|
+
assert.equal(unrelated.isCancelled(), false);
|
|
398
|
+
assert.equal(unrelatedController.signal.aborted, false);
|
|
399
|
+
unresolved.release();
|
|
400
|
+
resolved.release();
|
|
401
|
+
unrelated.release();
|
|
402
|
+
releaseExtraction();
|
|
403
|
+
await extraction;
|
|
404
|
+
});
|
|
405
|
+
|
|
246
406
|
test("#2128 scoped observe preparation cancellation preserves another project", () => {
|
|
247
407
|
const tracker = new PendingObserveExtractionTracker();
|
|
248
408
|
const projectA = tracker.reserve("opaque-session", "projectTag:project-a");
|
|
@@ -256,7 +416,6 @@ test("#2128 scoped observe preparation cancellation preserves another project",
|
|
|
256
416
|
projectB.release();
|
|
257
417
|
});
|
|
258
418
|
|
|
259
|
-
|
|
260
419
|
test("#2128 cancellation matches resolved scope despite a different request hint", () => {
|
|
261
420
|
const tracker = new PendingObserveExtractionTracker();
|
|
262
421
|
const preparation = tracker.reserve("session-z", "cwd:/workspace/project/src");
|