@remnic/core 9.45.3 → 9.45.5
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 -75
- package/dist/access-audit.js +2 -2
- package/dist/access-authorization-probe.d.ts +14 -10
- package/dist/access-authorization-probe.js +85 -76
- package/dist/access-boundary.d.ts +15 -11
- package/dist/access-boundary.js +84 -75
- package/dist/access-citation-namespace.js +2 -2
- package/dist/access-cli.js +191 -177
- 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 -75
- 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 -75
- package/dist/access-http.d.ts +15 -11
- package/dist/access-http.js +104 -90
- package/dist/access-identity-continuity-surface.d.ts +9 -8
- package/dist/access-identity-continuity-surface.js +84 -75
- package/dist/access-lcm-surface.d.ts +14 -10
- package/dist/access-lcm-surface.js +84 -75
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +14 -10
- package/dist/access-mcp.js +95 -82
- 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 -75
- 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 -75
- 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 -77
- package/dist/access-operations.d.ts +18 -14
- package/dist/access-operations.js +91 -79
- package/dist/access-recall-concurrency.d.ts +16 -26
- package/dist/access-recall-concurrency.js +86 -76
- package/dist/access-recall-response.d.ts +18 -14
- package/dist/access-recall-response.js +84 -75
- package/dist/access-recall-surface.d.ts +29 -24
- package/dist/access-recall-surface.js +84 -75
- package/dist/access-schema.d.ts +84 -84
- package/dist/access-schema.js +3 -3
- package/dist/{access-service-CiJRsgAB.d.ts → access-service-CNN89xyn.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 -75
- 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 +4 -4
- package/dist/adapters/registry.js +2 -2
- 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 +24 -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 +28 -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-E5UK4VPE.js → chunk-2FSTB6BJ.js} +5 -5
- package/dist/{chunk-5ZE7QHTK.js → chunk-2X2T2UVE.js} +5 -5
- package/dist/{chunk-P4DRWEYC.js → chunk-3COYXTGM.js} +2 -2
- package/dist/{chunk-5IVLTFOV.js → chunk-44N6ESJ4.js} +2 -2
- package/dist/{chunk-DL7ZD3JH.js → chunk-4FBVAGV3.js} +14 -9
- package/dist/chunk-4FBVAGV3.js.map +1 -0
- 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-AAIUERNB.js → chunk-5QJQHBLE.js} +6 -6
- package/dist/{chunk-6CZPDBJS.js → chunk-5U7ID3EZ.js} +3 -3
- package/dist/{chunk-RN7DY3FC.js → chunk-6ISC4AVB.js} +31 -12
- package/dist/chunk-6ISC4AVB.js.map +1 -0
- package/dist/chunk-773TRRGT.js +36 -0
- package/dist/chunk-773TRRGT.js.map +1 -0
- package/dist/chunk-7T4TOGMS.js +242 -0
- package/dist/chunk-7T4TOGMS.js.map +1 -0
- package/dist/{chunk-DLVPUX7U.js → chunk-7YKVM5H3.js} +8 -6
- package/dist/chunk-7YKVM5H3.js.map +1 -0
- package/dist/chunk-7YQ6ESEA.js +322 -0
- package/dist/chunk-7YQ6ESEA.js.map +1 -0
- package/dist/{chunk-DNWXFTLD.js → chunk-A4IJCD2Z.js} +2 -2
- 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-PKNLM44P.js → chunk-AC5OWJLV.js} +9 -9
- package/dist/{chunk-LZ4LDKHZ.js → chunk-AMAUBUKY.js} +6 -6
- package/dist/{chunk-CUM2BBPN.js → chunk-AUMWZSE7.js} +19 -10
- package/dist/chunk-AUMWZSE7.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-CK5KOVHW.js +69 -0
- package/dist/chunk-CK5KOVHW.js.map +1 -0
- package/dist/{chunk-Q6IP2ARR.js → chunk-CSOYVTRX.js} +2 -2
- package/dist/{chunk-XOQSEF7X.js → chunk-CVILPI77.js} +6 -6
- package/dist/{chunk-VWAXN2BN.js → chunk-CX4ZUMC6.js} +91 -83
- package/dist/chunk-CX4ZUMC6.js.map +1 -0
- package/dist/{chunk-NVRYW264.js → chunk-DAJPRXBR.js} +16 -13
- package/dist/chunk-DAJPRXBR.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-4LMA77JH.js → chunk-E5XQIWAL.js} +3 -3
- package/dist/{chunk-WUNIWKY4.js → chunk-ELIL2A37.js} +6 -6
- package/dist/{chunk-OQ5PRDDS.js → chunk-ERZ2R42X.js} +6 -6
- package/dist/{chunk-U7GW7NE7.js → chunk-FIK3CQNA.js} +10 -10
- package/dist/{chunk-D3J5SLQK.js → chunk-FR27HBBA.js} +81 -20
- package/dist/chunk-FR27HBBA.js.map +1 -0
- package/dist/{chunk-E6PNLPGJ.js → chunk-FUCYDRE5.js} +838 -480
- package/dist/chunk-FUCYDRE5.js.map +1 -0
- package/dist/{chunk-HZFHQ4AQ.js → chunk-G7A5HLUS.js} +23 -17
- package/dist/chunk-G7A5HLUS.js.map +1 -0
- package/dist/{chunk-33PLLLL7.js → chunk-GFCVUY6G.js} +6 -6
- package/dist/{chunk-HREE4JHI.js → chunk-GODSPTOT.js} +477 -278
- package/dist/chunk-GODSPTOT.js.map +1 -0
- package/dist/{chunk-S2NCTZGJ.js → chunk-GRUYA45P.js} +15 -15
- package/dist/chunk-GRUYA45P.js.map +1 -0
- package/dist/{chunk-VUPTKTDV.js → chunk-GUAL4PQH.js} +3 -3
- 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-PDLBLTOK.js → chunk-HC3PBX23.js} +9 -9
- 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-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-HLPD7B7P.js → chunk-JZH4LWHB.js} +2 -2
- package/dist/{chunk-AV5ZEH4M.js → chunk-KVJRXN2E.js} +2 -2
- package/dist/{chunk-WFTIGIIS.js → chunk-L6CQ7WIW.js} +5 -5
- package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
- 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-QN25OCUF.js → chunk-LPYDOLSM.js} +5 -5
- package/dist/{chunk-AS7YMSL6.js → chunk-M23RF3LJ.js} +4 -4
- package/dist/{chunk-OAEQLRCY.js → chunk-MO4HSXHZ.js} +5 -5
- package/dist/{chunk-ECK75GDJ.js → chunk-N3LL5NEU.js} +43 -24
- package/dist/chunk-N3LL5NEU.js.map +1 -0
- package/dist/chunk-NEF7LR5J.js +29 -0
- package/dist/chunk-NEF7LR5J.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-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-7TWUCYER.js → chunk-PNRA7FAD.js} +7 -7
- package/dist/{chunk-5I4M26Q7.js → chunk-QBSFOKY6.js} +4 -4
- package/dist/{chunk-E53DSZEN.js → chunk-QR6G5KF4.js} +3 -3
- package/dist/{chunk-CJ2ZR7UA.js → chunk-QUENPGWZ.js} +261 -211
- package/dist/chunk-QUENPGWZ.js.map +1 -0
- package/dist/{chunk-4UH4BTGK.js → chunk-QVJPH7SH.js} +84 -84
- package/dist/{chunk-UYLMNVY6.js → chunk-R3KHKU7M.js} +16 -9
- package/dist/chunk-R3KHKU7M.js.map +1 -0
- package/dist/{chunk-JBPKEARU.js → chunk-RKNJBZ55.js} +4 -4
- package/dist/{chunk-WDISJRMG.js → chunk-RMMVQQA6.js} +2 -2
- package/dist/{chunk-JVLCVFQ4.js → chunk-RNHVVMFN.js} +3 -3
- package/dist/{chunk-QJAQNXWI.js → chunk-RVO6TCTU.js} +81 -84
- package/dist/chunk-RVO6TCTU.js.map +1 -0
- package/dist/chunk-S2HLHAZ4.js +16 -0
- package/dist/chunk-S2HLHAZ4.js.map +1 -0
- 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-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-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-BJKPPZ6Z.js → chunk-UW66OZTD.js} +2 -2
- package/dist/{chunk-XYTOI63Z.js → chunk-V2TNYF6Q.js} +19 -11
- package/dist/chunk-V2TNYF6Q.js.map +1 -0
- 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-VL35ZFSZ.js +102 -0
- package/dist/chunk-VL35ZFSZ.js.map +1 -0
- package/dist/{chunk-3Y224NYC.js → chunk-VYISFWVX.js} +2 -2
- package/dist/{chunk-JE7EK33X.js → chunk-W2V7UESE.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-A5OJCXZL.js → chunk-WZ3TOIDW.js} +15 -4
- package/dist/chunk-WZ3TOIDW.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-UVIKWC7M.js → chunk-XAGYS7X6.js} +17 -17
- 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-E6EE5B67.js → chunk-YK6BDDHP.js} +4 -4
- package/dist/{chunk-ES36HTSC.js → chunk-YLHM5BQQ.js} +3 -3
- 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-VOUOLGIP.js → chunk-YRFAYOFQ.js} +11 -13
- package/dist/chunk-YRFAYOFQ.js.map +1 -0
- package/dist/{chunk-IKKWIPYN.js → chunk-YYQAKIDJ.js} +37 -1
- package/dist/chunk-YYQAKIDJ.js.map +1 -0
- package/dist/{chunk-GF22HWS2.js → chunk-Z54EM5YZ.js} +4 -4
- package/dist/{chunk-64UDOIMI.js → chunk-ZLQ37WJX.js} +2 -2
- package/dist/{cli-BUGN3d6_.d.ts → cli-BHBswmUa.d.ts} +5 -5
- package/dist/cli.d.ts +16 -12
- package/dist/cli.js +138 -123
- package/dist/compounding/engine.d.ts +3 -2
- package/dist/compounding/engine.js +25 -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 +24 -22
- package/dist/connectors/codex-materialize.d.ts +2 -1
- package/dist/connectors/index.d.ts +2 -1
- package/dist/connectors/index.js +27 -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 +28 -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 +43 -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 +25 -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 +187 -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 +10 -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 +39 -0
- package/dist/external-wiki.js +14 -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 +46 -43
- package/dist/fallback-llm.d.ts +2 -1
- package/dist/{first-start-migration-F2QJD66E.js → first-start-migration-ZSHEFEI3.js} +10 -12
- package/dist/{first-start-migration-F2QJD66E.js.map → first-start-migration-ZSHEFEI3.js.map} +1 -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 +443 -430
- package/dist/index.js +304 -269
- package/dist/intent.d.ts +2 -1
- package/dist/lcm/engine.d.ts +2 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.d.ts +2 -1
- package/dist/lcm/index.js +7 -7
- 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 +25 -23
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -23
- package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
- package/dist/maintenance/rebuild-memory-projection.js +27 -25
- package/dist/{maintenance-LbuS2rUA.d.ts → maintenance-CoRikzIt.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-snapshot.d.ts +10 -0
- package/dist/memory-snapshot.js +8 -0
- package/dist/memory-snapshot.js.map +1 -0
- 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 +41 -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 +24 -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 +46 -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 +60 -55
- package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
- package/dist/orchestration/maintenance.d.ts +5 -4
- package/dist/orchestration/maintenance.js +37 -33
- package/dist/{orchestrator-rHiWt32X.d.ts → orchestrator-BJeq7Pw1.d.ts} +14 -7
- package/dist/orchestrator.d.ts +9 -8
- package/dist/orchestrator.js +200 -186
- 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 +8 -8
- 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 +4 -1
- 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 +54 -54
- 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 +20 -20
- 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 +26 -24
- package/dist/semantic-rule-promotion.js +24 -22
- package/dist/semantic-rule-verifier.d.ts +2 -1
- package/dist/semantic-rule-verifier.js +25 -23
- package/dist/{service-DJG3KCQ4.d.ts → service-DWC4tq7p.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 +43 -40
- package/dist/{storage-F9FVh-w9.d.ts → storage-DPGjB-8e.d.ts} +28 -13
- package/dist/storage.d.ts +3 -2
- package/dist/storage.js +26 -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-migration.js +1 -1
- 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 +25 -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 +80 -0
- package/src/access-http.test.ts +310 -3
- package/src/access-http.ts +84 -77
- 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 +183 -23
- 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 +88 -62
- 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/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 +100 -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 +367 -0
- package/src/external-wiki-search.ts +362 -0
- package/src/external-wiki.test.ts +240 -0
- package/src/external-wiki.ts +427 -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 +9 -5
- package/src/maintenance/first-start-migration.ts +11 -11
- package/src/mcp-read-only-tools.ts +1 -0
- package/src/memory-snapshot.ts +15 -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 +28 -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-contract/cache-coherence.test.ts +99 -0
- package/src/storage-deletion-revisions.test.ts +91 -0
- package/src/storage-fact-hash-index-defer.test.ts +460 -170
- package/src/storage.ts +572 -284
- package/src/testing/subjects/first-start-tier-migration.test.ts +75 -0
- package/src/tier-migration.ts +10 -12
- 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-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-HZFHQ4AQ.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-VOUOLGIP.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-E5UK4VPE.js.map → chunk-2FSTB6BJ.js.map} +0 -0
- /package/dist/{chunk-5ZE7QHTK.js.map → chunk-2X2T2UVE.js.map} +0 -0
- /package/dist/{chunk-P4DRWEYC.js.map → chunk-3COYXTGM.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-AAIUERNB.js.map → chunk-5QJQHBLE.js.map} +0 -0
- /package/dist/{chunk-6CZPDBJS.js.map → chunk-5U7ID3EZ.js.map} +0 -0
- /package/dist/{chunk-DNWXFTLD.js.map → chunk-A4IJCD2Z.js.map} +0 -0
- /package/dist/{chunk-PKNLM44P.js.map → chunk-AC5OWJLV.js.map} +0 -0
- /package/dist/{chunk-LZ4LDKHZ.js.map → chunk-AMAUBUKY.js.map} +0 -0
- /package/dist/{chunk-S5SLVSVY.js.map → chunk-BQIFZ2MP.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-4LMA77JH.js.map → chunk-E5XQIWAL.js.map} +0 -0
- /package/dist/{chunk-WUNIWKY4.js.map → chunk-ELIL2A37.js.map} +0 -0
- /package/dist/{chunk-OQ5PRDDS.js.map → chunk-ERZ2R42X.js.map} +0 -0
- /package/dist/{chunk-U7GW7NE7.js.map → chunk-FIK3CQNA.js.map} +0 -0
- /package/dist/{chunk-33PLLLL7.js.map → chunk-GFCVUY6G.js.map} +0 -0
- /package/dist/{chunk-VUPTKTDV.js.map → chunk-GUAL4PQH.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-PDLBLTOK.js.map → chunk-HC3PBX23.js.map} +0 -0
- /package/dist/{chunk-KXB4VXHY.js.map → chunk-JIYDRBVZ.js.map} +0 -0
- /package/dist/{chunk-HLPD7B7P.js.map → chunk-JZH4LWHB.js.map} +0 -0
- /package/dist/{chunk-AV5ZEH4M.js.map → chunk-KVJRXN2E.js.map} +0 -0
- /package/dist/{chunk-WFTIGIIS.js.map → chunk-L6CQ7WIW.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
- /package/dist/{chunk-EJUEXZHX.js.map → chunk-LLJMAULE.js.map} +0 -0
- /package/dist/{chunk-QN25OCUF.js.map → chunk-LPYDOLSM.js.map} +0 -0
- /package/dist/{chunk-AS7YMSL6.js.map → chunk-M23RF3LJ.js.map} +0 -0
- /package/dist/{chunk-OAEQLRCY.js.map → chunk-MO4HSXHZ.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-7TWUCYER.js.map → chunk-PNRA7FAD.js.map} +0 -0
- /package/dist/{chunk-5I4M26Q7.js.map → chunk-QBSFOKY6.js.map} +0 -0
- /package/dist/{chunk-E53DSZEN.js.map → chunk-QR6G5KF4.js.map} +0 -0
- /package/dist/{chunk-4UH4BTGK.js.map → chunk-QVJPH7SH.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-RKNJBZ55.js.map} +0 -0
- /package/dist/{chunk-WDISJRMG.js.map → chunk-RMMVQQA6.js.map} +0 -0
- /package/dist/{chunk-JVLCVFQ4.js.map → chunk-RNHVVMFN.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-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
- /package/dist/{chunk-4B77XSG5.js.map → chunk-UV72DEZD.js.map} +0 -0
- /package/dist/{chunk-BJKPPZ6Z.js.map → chunk-UW66OZTD.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-JE7EK33X.js.map → chunk-W2V7UESE.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-UVIKWC7M.js.map → chunk-XAGYS7X6.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-E6EE5B67.js.map → chunk-YK6BDDHP.js.map} +0 -0
- /package/dist/{chunk-ES36HTSC.js.map → chunk-YLHM5BQQ.js.map} +0 -0
- /package/dist/{chunk-GF22HWS2.js.map → chunk-Z54EM5YZ.js.map} +0 -0
- /package/dist/{chunk-64UDOIMI.js.map → chunk-ZLQ37WJX.js.map} +0 -0
package/src/access-service.ts
CHANGED
|
@@ -39,6 +39,10 @@ import {
|
|
|
39
39
|
resolveCodingNamespaceOverlay,
|
|
40
40
|
type CodingNamespaceOverlay,
|
|
41
41
|
} from "./coding/coding-namespace.js";
|
|
42
|
+
import {
|
|
43
|
+
resolveCodingContextFromOptions,
|
|
44
|
+
type InterruptibleCodingScopeInput,
|
|
45
|
+
} from "./access-coding-context-resolution.js";
|
|
42
46
|
import {
|
|
43
47
|
handleCodingDecision,
|
|
44
48
|
type DecisionSurfaceRequest,
|
|
@@ -72,7 +76,7 @@ import {
|
|
|
72
76
|
type DeltaSurfaceResponse,
|
|
73
77
|
type DeltaSurfaceStorage,
|
|
74
78
|
} from "./coding/session-delta-surfaces.js";
|
|
75
|
-
import {
|
|
79
|
+
import { defaultGitInvokerSync } from "./coding/git-context.js";
|
|
76
80
|
import {
|
|
77
81
|
createCorrectionService,
|
|
78
82
|
isCorrectionFeatureEnabled,
|
|
@@ -180,7 +184,7 @@ import type {
|
|
|
180
184
|
Orchestrator,
|
|
181
185
|
RecallInvocationOptions,
|
|
182
186
|
} from "./orchestrator.js";
|
|
183
|
-
import { parseEntityFile, StorageManager } from "./storage.js";
|
|
187
|
+
import { parseEntityFile, parseFrontmatter, StorageManager } from "./storage.js";
|
|
184
188
|
import {
|
|
185
189
|
buildGraphSnapshot,
|
|
186
190
|
type GraphSnapshotRequest,
|
|
@@ -283,6 +287,7 @@ import {
|
|
|
283
287
|
buildOfflineSyncSnapshotFromBase,
|
|
284
288
|
buildOfflineSyncSnapshotForPaths,
|
|
285
289
|
iterateOfflineSyncSnapshotFileRecords,
|
|
290
|
+
filterOfflineSyncDeletionRevisions,
|
|
286
291
|
OFFLINE_SYNC_SNAPSHOT_FORMAT,
|
|
287
292
|
readOfflineSyncFileContentChunk,
|
|
288
293
|
type OfflineSyncApplyFileContentChunkResult,
|
|
@@ -293,6 +298,10 @@ import {
|
|
|
293
298
|
type OfflineSyncSnapshot,
|
|
294
299
|
} from "./offline-sync.js";
|
|
295
300
|
import { offlineSyncStorageForSnapshot } from "./offline-sync-impression-drain.js";
|
|
301
|
+
import {
|
|
302
|
+
createOfflineSyncManifestStream,
|
|
303
|
+
type OfflineSyncManifestStreamResponse,
|
|
304
|
+
} from "./access-offline-manifest.js";
|
|
296
305
|
import {
|
|
297
306
|
evaluateActionConfidence,
|
|
298
307
|
type ActionConfidenceInput,
|
|
@@ -372,6 +381,8 @@ export interface EngramAccessRecallRequest {
|
|
|
372
381
|
sessionKey?: string;
|
|
373
382
|
namespace?: string;
|
|
374
383
|
authenticatedPrincipal?: string;
|
|
384
|
+
/** Trusted connector identity resolved at the transport boundary. */
|
|
385
|
+
sourceConnector?: string;
|
|
375
386
|
idempotencyKey?: string;
|
|
376
387
|
topK?: number;
|
|
377
388
|
mode?: RecallPlanMode | "auto";
|
|
@@ -781,6 +792,12 @@ export interface EngramAccessOfflineSyncSnapshotRequest {
|
|
|
781
792
|
baseFiles?: OfflineSyncFileState[];
|
|
782
793
|
}
|
|
783
794
|
|
|
795
|
+
export interface EngramAccessOfflineSyncManifestRequest {
|
|
796
|
+
namespace?: string;
|
|
797
|
+
principal?: string;
|
|
798
|
+
includeTranscripts?: boolean;
|
|
799
|
+
}
|
|
800
|
+
|
|
784
801
|
export interface EngramAccessOfflineSyncFilesRequest {
|
|
785
802
|
namespace?: string;
|
|
786
803
|
principal?: string;
|
|
@@ -924,6 +941,7 @@ export interface CodingScopedWriteInput {
|
|
|
924
941
|
cwd?: string;
|
|
925
942
|
projectTag?: string;
|
|
926
943
|
}
|
|
944
|
+
|
|
927
945
|
export type { EngramAccessNamespaceWritableRequest } from "./access-namespace-preflight.js";
|
|
928
946
|
/**
|
|
929
947
|
* Internal, single-resolution plan describing the effective memory scope for a
|
|
@@ -1463,38 +1481,6 @@ export class EngramAccessService {
|
|
|
1463
1481
|
return result.namespace;
|
|
1464
1482
|
}
|
|
1465
1483
|
|
|
1466
|
-
/**
|
|
1467
|
-
* Resolve a coding context from `cwd`/`projectTag` WITHOUT persisting it to
|
|
1468
|
-
* any session — the read-only half of `maybeAttachCodingContext`. Returns
|
|
1469
|
-
* null when project scoping is off or nothing resolves. `projectTag` takes
|
|
1470
|
-
* priority over `cwd` (matching `maybeAttachCodingContext`).
|
|
1471
|
-
*/
|
|
1472
|
-
private async resolveCodingContextFromOptions(
|
|
1473
|
-
options: CodingScopedWriteInput,
|
|
1474
|
-
): Promise<CodingContext | null> {
|
|
1475
|
-
if (!this.orchestrator.config.codingMode?.projectScope) return null;
|
|
1476
|
-
if (typeof options.projectTag === "string" && options.projectTag.trim().length > 0) {
|
|
1477
|
-
const projectId = projectTagProjectId(options.projectTag);
|
|
1478
|
-
return { projectId, branch: null, rootPath: projectId, defaultBranch: null };
|
|
1479
|
-
}
|
|
1480
|
-
if (typeof options.cwd === "string" && options.cwd.trim().length > 0) {
|
|
1481
|
-
try {
|
|
1482
|
-
const gitCtx = await resolveGitContext(options.cwd);
|
|
1483
|
-
if (gitCtx) {
|
|
1484
|
-
return {
|
|
1485
|
-
projectId: gitCtx.projectId,
|
|
1486
|
-
branch: gitCtx.branch,
|
|
1487
|
-
rootPath: gitCtx.rootPath,
|
|
1488
|
-
defaultBranch: gitCtx.defaultBranch,
|
|
1489
|
-
};
|
|
1490
|
-
}
|
|
1491
|
-
} catch {
|
|
1492
|
-
// resolveGitContext never throws, but stay defensive — not being in a
|
|
1493
|
-
// repo is normal and must not break the write.
|
|
1494
|
-
}
|
|
1495
|
-
}
|
|
1496
|
-
return null;
|
|
1497
|
-
}
|
|
1498
1484
|
|
|
1499
1485
|
/** Shared coding-scope derivation for the read/write resolvers below —
|
|
1500
1486
|
* coding context, overlay, principal, scope-profile plan for an IMPLICIT
|
|
@@ -1503,7 +1489,7 @@ export class EngramAccessService {
|
|
|
1503
1489
|
* of truth for the namespacesEnabled/projectScope gates (rule 22; keeps the
|
|
1504
1490
|
* scattered-config-read ratchet flat). READ-ONLY: never mutates session. */
|
|
1505
1491
|
private async resolveCodingScopeInputs(
|
|
1506
|
-
request:
|
|
1492
|
+
request: InterruptibleCodingScopeInput & {
|
|
1507
1493
|
namespace?: string;
|
|
1508
1494
|
sessionKey?: string;
|
|
1509
1495
|
authenticatedPrincipal?: string;
|
|
@@ -1526,7 +1512,7 @@ export class EngramAccessService {
|
|
|
1526
1512
|
resolveNamespaceCapabilities(this.orchestrator.config).namespaces &&
|
|
1527
1513
|
this.orchestrator.config.codingMode?.projectScope
|
|
1528
1514
|
? this.orchestrator.getCodingContextForSession(request.sessionKey) ??
|
|
1529
|
-
(await
|
|
1515
|
+
(await resolveCodingContextFromOptions(request))
|
|
1530
1516
|
: null;
|
|
1531
1517
|
const overlay =
|
|
1532
1518
|
hasSession &&
|
|
@@ -1702,7 +1688,7 @@ export class EngramAccessService {
|
|
|
1702
1688
|
* precedence), falling back to the per-call `cwd`/`projectTag`.
|
|
1703
1689
|
*/
|
|
1704
1690
|
private async resolveMemoryScopePlan(
|
|
1705
|
-
request:
|
|
1691
|
+
request: InterruptibleCodingScopeInput & {
|
|
1706
1692
|
namespace?: string;
|
|
1707
1693
|
sessionKey?: string;
|
|
1708
1694
|
authenticatedPrincipal?: string;
|
|
@@ -2393,15 +2379,24 @@ export class EngramAccessService {
|
|
|
2393
2379
|
extractionWatermark,
|
|
2394
2380
|
caps?.namespaces !== undefined ? undefined : this.extractionLivenessWarn,
|
|
2395
2381
|
);
|
|
2382
|
+
let scopedDegradedReason: string | null = null;
|
|
2383
|
+
if (extraction.degraded) {
|
|
2384
|
+
if (extraction.degradedReason?.includes("watermark unreadable")) {
|
|
2385
|
+
scopedDegradedReason = "daemon extraction pipeline degraded; extraction watermark unreadable";
|
|
2386
|
+
} else if (extraction.degradedReason?.includes("buffer unreadable")) {
|
|
2387
|
+
scopedDegradedReason = "daemon extraction pipeline degraded; extraction buffer unreadable";
|
|
2388
|
+
} else {
|
|
2389
|
+
scopedDegradedReason =
|
|
2390
|
+
`${extraction.bufferedSessionCount} buffered session(s), ` +
|
|
2391
|
+
`${extraction.pendingTurnCount} turn(s) pending extraction`;
|
|
2392
|
+
}
|
|
2393
|
+
}
|
|
2396
2394
|
const visibleExtraction =
|
|
2397
2395
|
caps?.namespaces !== undefined
|
|
2398
2396
|
? {
|
|
2399
2397
|
...extraction,
|
|
2400
2398
|
lastExtractionAt: null,
|
|
2401
|
-
|
|
2402
|
-
pendingTurnCount: 0,
|
|
2403
|
-
oldestBufferedTurnAgeMs: null,
|
|
2404
|
-
degradedReason: extraction.degraded ? "daemon extraction pipeline degraded" : null,
|
|
2399
|
+
degradedReason: scopedDegradedReason,
|
|
2405
2400
|
}
|
|
2406
2401
|
: extraction;
|
|
2407
2402
|
// ONE call: the corpus array and the flag describing it must not come from
|
|
@@ -2844,6 +2839,7 @@ export class EngramAccessService {
|
|
|
2844
2839
|
namespace?: string;
|
|
2845
2840
|
budget?: number;
|
|
2846
2841
|
authenticatedPrincipal?: string;
|
|
2842
|
+
sourceConnector?: string;
|
|
2847
2843
|
/**
|
|
2848
2844
|
* Disclosure depth used to shape per-result payload (issue #677
|
|
2849
2845
|
* PR 3/4). When set, each X-ray result is decorated with the
|
|
@@ -3229,12 +3225,9 @@ export class EngramAccessService {
|
|
|
3229
3225
|
} satisfies DeltaSurfaceStorage;
|
|
3230
3226
|
},
|
|
3231
3227
|
gitInvoker: (cwd, args) => {
|
|
3232
|
-
//
|
|
3233
|
-
//
|
|
3234
|
-
|
|
3235
|
-
// exits without a try/catch.
|
|
3236
|
-
const invoker = defaultGitInvoker();
|
|
3237
|
-
return invoker(cwd, args);
|
|
3228
|
+
// Session-delta remains a synchronous pure calculation; use the
|
|
3229
|
+
// bounded synchronous invoker rather than the abortable scope resolver.
|
|
3230
|
+
return defaultGitInvokerSync()(cwd, args);
|
|
3238
3231
|
},
|
|
3239
3232
|
throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
|
|
3240
3233
|
});
|
|
@@ -3318,23 +3311,28 @@ export class EngramAccessService {
|
|
|
3318
3311
|
}
|
|
3319
3312
|
}
|
|
3320
3313
|
|
|
3321
|
-
async correctionPlan(
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
// misses or collides is an explicit input error, never silent (rule 34/51).
|
|
3314
|
+
async correctionPlan(
|
|
3315
|
+
request: CorrectionRequest,
|
|
3316
|
+
opts?: { abortSignal?: AbortSignal },
|
|
3317
|
+
): Promise<CorrectionPlan> {
|
|
3326
3318
|
if (request.targetIds?.some((id) => isHandleToken(id))) {
|
|
3327
3319
|
const targetIds = request.targetIds.map((id) =>
|
|
3328
3320
|
this.resolveMemoryIdOrHandleInput(id, request.sessionKey),
|
|
3329
3321
|
);
|
|
3330
|
-
return this.correctionService().plan({ ...request, targetIds });
|
|
3322
|
+
return this.correctionService().plan({ ...request, targetIds }, opts);
|
|
3331
3323
|
}
|
|
3332
|
-
return this.correctionService().plan(request);
|
|
3324
|
+
return this.correctionService().plan(request, opts);
|
|
3333
3325
|
}
|
|
3334
3326
|
|
|
3335
3327
|
async correctionApply(
|
|
3336
3328
|
planId: string,
|
|
3337
|
-
opts: {
|
|
3329
|
+
opts: {
|
|
3330
|
+
confirm?: boolean;
|
|
3331
|
+
namespace?: string;
|
|
3332
|
+
sessionKey?: string;
|
|
3333
|
+
principal?: string;
|
|
3334
|
+
abortSignal?: AbortSignal;
|
|
3335
|
+
},
|
|
3338
3336
|
): Promise<CorrectionOutcome> {
|
|
3339
3337
|
return this.correctionService().apply(planId, opts);
|
|
3340
3338
|
}
|
|
@@ -4019,12 +4017,9 @@ export class EngramAccessService {
|
|
|
4019
4017
|
// Explicit namespace pins the scope (resolveMemoryScopePlan returns early),
|
|
4020
4018
|
// so the coding context is irrelevant — skip it to avoid false conflicts
|
|
4021
4019
|
// when the session context changes under a namespace-pinned observe.
|
|
4022
|
-
//
|
|
4023
|
-
//
|
|
4024
|
-
effectiveCodingContext =
|
|
4025
|
-
(typeof this.orchestrator.getCodingContextForSession === "function"
|
|
4026
|
-
? this.orchestrator.getCodingContextForSession(request.sessionKey)
|
|
4027
|
-
: null) ?? (await this.resolveCodingContextFromOptions(request));
|
|
4020
|
+
// Reuse the write resolver's namespace/projectScope gates so context
|
|
4021
|
+
// ignored by runObserve cannot change the retry fingerprint.
|
|
4022
|
+
effectiveCodingContext = (await this.resolveCodingScopeInputs(request)).codingContext;
|
|
4028
4023
|
}
|
|
4029
4024
|
return this.handleIdempotentWrite<EngramAccessObserveResponse>({
|
|
4030
4025
|
operation: "observe",
|
|
@@ -4330,6 +4325,10 @@ export class EngramAccessService {
|
|
|
4330
4325
|
async extractionForceFlush(request: EngramAccessExtractionForceFlushRequest): Promise<EngramAccessExtractionForceFlushResponse> {
|
|
4331
4326
|
return delegateExtractionForceFlush(this.accessObserveWriteSurface, request);
|
|
4332
4327
|
}
|
|
4328
|
+
cancelPendingObservePreparations(sessionKey: string, scopeHint?: string): void {
|
|
4329
|
+
this.accessObserveWriteSurface.cancelPendingObservePreparations(sessionKey, scopeHint);
|
|
4330
|
+
}
|
|
4331
|
+
|
|
4333
4332
|
cancelPendingObserveExtractions(
|
|
4334
4333
|
sessionKey: string,
|
|
4335
4334
|
principal?: string,
|
|
@@ -5469,6 +5468,8 @@ export class EngramAccessService {
|
|
|
5469
5468
|
const resolvedNamespace = this.resolveReadableNamespace(options.namespace, options.principal);
|
|
5470
5469
|
const storage = await offlineSyncStorageForSnapshot(this.orchestrator, resolvedNamespace);
|
|
5471
5470
|
const storageHash = createHash("sha256").update(storage.dir).digest("hex").slice(0, 16);
|
|
5471
|
+
const deletions = [...await storage.readDeletionRevisions()]
|
|
5472
|
+
.map(([path, mtimeMs]) => ({ path, mtimeMs }));
|
|
5472
5473
|
const snapshotBuilder = options.includeContent === false && options.baseFiles && options.baseFiles.length > 0
|
|
5473
5474
|
? buildOfflineSyncSnapshotFromBase
|
|
5474
5475
|
: buildOfflineSyncSnapshot;
|
|
@@ -5482,6 +5483,7 @@ export class EngramAccessService {
|
|
|
5482
5483
|
readFileDigest: async ({ filePath }) => storage.digestOfflineSyncFile(filePath),
|
|
5483
5484
|
signal: options.signal,
|
|
5484
5485
|
userExcludeRegexps: this.offlineSyncUserExcludes,
|
|
5486
|
+
deletions,
|
|
5485
5487
|
});
|
|
5486
5488
|
return {
|
|
5487
5489
|
namespace: resolvedNamespace,
|
|
@@ -5495,6 +5497,13 @@ export class EngramAccessService {
|
|
|
5495
5497
|
const resolvedNamespace = this.resolveReadableNamespace(options.namespace, options.principal);
|
|
5496
5498
|
const storage = await offlineSyncStorageForSnapshot(this.orchestrator, resolvedNamespace);
|
|
5497
5499
|
const storageHash = createHash("sha256").update(storage.dir).digest("hex").slice(0, 16);
|
|
5500
|
+
const deletions = await filterOfflineSyncDeletionRevisions({
|
|
5501
|
+
root: storage.dir,
|
|
5502
|
+
deletions: [...await storage.readDeletionRevisions()]
|
|
5503
|
+
.map(([path, mtimeMs]) => ({ path, mtimeMs })),
|
|
5504
|
+
includeTranscripts: options.includeTranscripts !== false,
|
|
5505
|
+
userExcludeRegexps: this.offlineSyncUserExcludes,
|
|
5506
|
+
});
|
|
5498
5507
|
return {
|
|
5499
5508
|
namespace: resolvedNamespace,
|
|
5500
5509
|
format: OFFLINE_SYNC_SNAPSHOT_FORMAT,
|
|
@@ -5502,6 +5511,7 @@ export class EngramAccessService {
|
|
|
5502
5511
|
createdAt: new Date().toISOString(),
|
|
5503
5512
|
sourceId: `remnic:${resolvedNamespace}:${storageHash}`,
|
|
5504
5513
|
includeTranscripts: options.includeTranscripts !== false,
|
|
5514
|
+
deletions,
|
|
5505
5515
|
files: iterateOfflineSyncSnapshotFileRecords({
|
|
5506
5516
|
root: storage.dir,
|
|
5507
5517
|
includeContent: options.includeContent === true,
|
|
@@ -5513,6 +5523,19 @@ export class EngramAccessService {
|
|
|
5513
5523
|
}),
|
|
5514
5524
|
};
|
|
5515
5525
|
}
|
|
5526
|
+
async offlineSyncManifestStream(
|
|
5527
|
+
options: EngramAccessOfflineSyncManifestRequest & { signal?: AbortSignal } = {},
|
|
5528
|
+
): Promise<OfflineSyncManifestStreamResponse> {
|
|
5529
|
+
const namespace = this.resolveReadableNamespace(options.namespace, options.principal);
|
|
5530
|
+
return createOfflineSyncManifestStream(
|
|
5531
|
+
this.orchestrator,
|
|
5532
|
+
namespace,
|
|
5533
|
+
this.offlineSyncUserExcludes,
|
|
5534
|
+
options,
|
|
5535
|
+
parseFrontmatter,
|
|
5536
|
+
);
|
|
5537
|
+
}
|
|
5538
|
+
|
|
5516
5539
|
|
|
5517
5540
|
async offlineSyncFiles(
|
|
5518
5541
|
options: EngramAccessOfflineSyncFilesRequest,
|
|
@@ -5672,7 +5695,10 @@ export class EngramAccessService {
|
|
|
5672
5695
|
readFile: async ({ filePath }) => storage.readOfflineSyncFile(filePath),
|
|
5673
5696
|
readFileDigest: async ({ filePath }) => storage.digestOfflineSyncFile(filePath),
|
|
5674
5697
|
writeFile: async ({ filePath, content }) => storage.writeOfflineSyncFile(filePath, content),
|
|
5675
|
-
deleteFile: async ({ filePath }) =>
|
|
5698
|
+
deleteFile: async ({ filePath, mtimeMs }) =>
|
|
5699
|
+
storage.deleteOfflineSyncFile(filePath, mtimeMs ?? null),
|
|
5700
|
+
recordDeletionRevision: async ({ filePath, mtimeMs }) =>
|
|
5701
|
+
storage.recordReplicatedDeletionRevision(filePath, mtimeMs),
|
|
5676
5702
|
});
|
|
5677
5703
|
return {
|
|
5678
5704
|
namespace: resolvedNamespace,
|
|
@@ -130,6 +130,7 @@ export const MCP_TOOLS: readonly McpToolEntry[] = [
|
|
|
130
130
|
{ tool: "compression_guidelines_optimize", operation: "compression_guidelines_optimize" },
|
|
131
131
|
{ tool: "compression_guidelines_activate", operation: "compression_guidelines_activate" },
|
|
132
132
|
{ tool: "memory_search", operation: "memory_search" },
|
|
133
|
+
{ tool: "external_wiki_search", operation: "external_wiki_search" },
|
|
133
134
|
{ tool: "memory_profile", operation: "memory_profile" },
|
|
134
135
|
{ tool: "memory_entities_list", operation: "memory_entities_list" },
|
|
135
136
|
{ tool: "memory_questions", operation: "memory_questions" },
|
|
@@ -175,10 +176,12 @@ export const MCP_TOOLS: readonly McpToolEntry[] = [
|
|
|
175
176
|
export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
|
|
176
177
|
{ method: "GET", pathname: "/engram/v1/adapters", operation: "adapters_status" },
|
|
177
178
|
{ method: "POST", pathname: "/engram/v1/recall", operation: "recall" },
|
|
179
|
+
{ method: "POST", pathname: "/engram/v1/external-wikis/search", operation: "external_wiki_search" },
|
|
178
180
|
{ method: "POST", pathname: "/engram/v1/coding-context", operation: "set_coding_context" },
|
|
179
181
|
{ method: "POST", pathname: "/engram/v1/capsules/export", operation: "capsule_export" },
|
|
180
182
|
{ method: "POST", pathname: "/engram/v1/capsules/import", operation: "capsule_import" },
|
|
181
183
|
{ method: "GET", pathname: "/engram/v1/offline-sync/snapshot", operation: "offline_sync_snapshot" },
|
|
184
|
+
{ method: "GET", pathname: "/engram/v1/offline-sync/capabilities", operation: "offline_sync_snapshot" },
|
|
182
185
|
{ method: "POST", pathname: "/engram/v1/offline-sync/snapshot", operation: "offline_sync_snapshot" },
|
|
183
186
|
{ method: "POST", pathname: "/engram/v1/offline-sync/files", operation: "offline_sync_files" },
|
|
184
187
|
{ method: "POST", pathname: "/engram/v1/offline-sync/file-content", operation: "offline_sync_file_content" },
|
|
@@ -252,6 +255,7 @@ export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
|
|
|
252
255
|
// The operation registration makes them visible to the boundary; the
|
|
253
256
|
// streaming lifecycle is owned by the HTTP transport (handleGraphEventsSSE).
|
|
254
257
|
{ method: "GET", pathname: "/engram/v1/offline-sync/snapshot-stream", operation: "offline_sync_snapshot_stream" },
|
|
258
|
+
{ method: "GET", pathname: "/engram/v1/offline-sync/manifest-stream", operation: "offline_sync_snapshot_stream" },
|
|
255
259
|
{ method: "GET", pathname: "/engram/v1/graph/events", operation: "graph_events" },
|
|
256
260
|
{ method: "POST", pathname: "/engram/v1/chat/message", operation: "chat_message" },
|
|
257
261
|
{ method: "GET", pathname: "/engram/v1/chat/events/:id", operation: "chat_events" },
|
|
@@ -783,6 +783,7 @@ export interface PromotionStorageProvider {
|
|
|
783
783
|
*/
|
|
784
784
|
lineage: string[];
|
|
785
785
|
sourceConnector?: string;
|
|
786
|
+
toolScoped?: true;
|
|
786
787
|
}
|
|
787
788
|
): Promise<string>;
|
|
788
789
|
}
|
|
@@ -920,6 +921,7 @@ export async function promoteMemory(options: PromoteMemoryOptions): Promise<Memo
|
|
|
920
921
|
validAt: sourceMemory.frontmatter.valid_at,
|
|
921
922
|
lineage: [options.sourceMemoryId],
|
|
922
923
|
...(sourceMemory.frontmatter.sourceConnector ? { sourceConnector: sourceMemory.frontmatter.sourceConnector } : {}),
|
|
924
|
+
...(sourceMemory.frontmatter.toolScoped ? { toolScoped: true as const } : {}),
|
|
923
925
|
});
|
|
924
926
|
target.promoted = true;
|
|
925
927
|
target.promotedMemoryId = promotedId;
|
|
@@ -7,8 +7,9 @@ import test from "node:test";
|
|
|
7
7
|
|
|
8
8
|
import { runBinaryLifecyclePipeline } from "./pipeline.js";
|
|
9
9
|
import { manifestPath, writeManifest } from "./manifest.js";
|
|
10
|
-
import type { BinaryLifecycleConfig } from "./types.js";
|
|
10
|
+
import type { BinaryLifecycleConfig, PipelineResult } from "./types.js";
|
|
11
11
|
import type { BinaryStorageBackend } from "./backend.js";
|
|
12
|
+
import { withEntityCanonicalMutationLock } from "../storage/entity-canonical-id-lock.js";
|
|
12
13
|
|
|
13
14
|
const baseConfig: BinaryLifecycleConfig = {
|
|
14
15
|
enabled: true,
|
|
@@ -666,6 +667,110 @@ test("binary lifecycle fails closed without overwriting an invalid manifest", as
|
|
|
666
667
|
}
|
|
667
668
|
});
|
|
668
669
|
|
|
670
|
+
test("binary lifecycle entity redirects wait for the canonical mutation lock", async () => {
|
|
671
|
+
const targetDir = await mkdtemp(path.join(os.tmpdir(), "remnic-binary-entity-lock-"));
|
|
672
|
+
const controlDir = await mkdtemp(path.join(os.tmpdir(), "remnic-binary-control-"));
|
|
673
|
+
const entityPath = path.join(targetDir, "entities", "binary-lock-target.md");
|
|
674
|
+
const originalEntity = "entity before redirect\n\n\n";
|
|
675
|
+
const redirectedEntity = "entity before redirect\n\n\n";
|
|
676
|
+
let targetPromise: Promise<PipelineResult> | undefined;
|
|
677
|
+
|
|
678
|
+
try {
|
|
679
|
+
await Promise.all([
|
|
680
|
+
mkdir(path.dirname(entityPath), { recursive: true }),
|
|
681
|
+
mkdir(path.join(targetDir, "state"), { recursive: true }),
|
|
682
|
+
]);
|
|
683
|
+
await Promise.all([
|
|
684
|
+
writeFile(path.join(targetDir, "image.png"), "image", "utf8"),
|
|
685
|
+
writeFile(entityPath, originalEntity, "utf8"),
|
|
686
|
+
writeFile(path.join(controlDir, "image.png"), "image", "utf8"),
|
|
687
|
+
writeFile(path.join(controlDir, "note.md"), "\n", "utf8"),
|
|
688
|
+
]);
|
|
689
|
+
const manifest = {
|
|
690
|
+
version: 1 as const,
|
|
691
|
+
assets: [
|
|
692
|
+
{
|
|
693
|
+
originalPath: "image.png",
|
|
694
|
+
mirroredPath: "remote/image.png",
|
|
695
|
+
contentHash: sha256("image"),
|
|
696
|
+
sizeBytes: "image".length,
|
|
697
|
+
mimeType: "image/png",
|
|
698
|
+
mirroredAt: "2026-01-01T00:00:00.000Z",
|
|
699
|
+
status: "mirrored" as const,
|
|
700
|
+
},
|
|
701
|
+
],
|
|
702
|
+
};
|
|
703
|
+
await Promise.all([
|
|
704
|
+
writeManifest(targetDir, manifest),
|
|
705
|
+
writeManifest(controlDir, manifest),
|
|
706
|
+
]);
|
|
707
|
+
|
|
708
|
+
const redirectPrepared = Promise.withResolvers<void>();
|
|
709
|
+
const continueRedirect = Promise.withResolvers<void>();
|
|
710
|
+
let targetFinished = false;
|
|
711
|
+
|
|
712
|
+
await withEntityCanonicalMutationLock(path.join(targetDir, "state"), async () => {
|
|
713
|
+
targetPromise = runBinaryLifecyclePipeline(
|
|
714
|
+
targetDir,
|
|
715
|
+
baseConfig,
|
|
716
|
+
nestedRemoteBackend,
|
|
717
|
+
noopLogger,
|
|
718
|
+
{
|
|
719
|
+
readMarkdownFile: async (filePath) => {
|
|
720
|
+
const content = await readFile(filePath, "utf8");
|
|
721
|
+
if (filePath === entityPath) {
|
|
722
|
+
redirectPrepared.resolve();
|
|
723
|
+
await continueRedirect.promise;
|
|
724
|
+
}
|
|
725
|
+
return content;
|
|
726
|
+
},
|
|
727
|
+
},
|
|
728
|
+
);
|
|
729
|
+
void targetPromise.then(
|
|
730
|
+
() => {
|
|
731
|
+
targetFinished = true;
|
|
732
|
+
},
|
|
733
|
+
() => undefined,
|
|
734
|
+
);
|
|
735
|
+
|
|
736
|
+
await redirectPrepared.promise;
|
|
737
|
+
continueRedirect.resolve();
|
|
738
|
+
const controlResult = await runBinaryLifecyclePipeline(
|
|
739
|
+
controlDir,
|
|
740
|
+
baseConfig,
|
|
741
|
+
nestedRemoteBackend,
|
|
742
|
+
noopLogger,
|
|
743
|
+
);
|
|
744
|
+
assert.equal(controlResult.redirected, 1);
|
|
745
|
+
assert.equal(
|
|
746
|
+
await readFile(path.join(controlDir, "note.md"), "utf8"),
|
|
747
|
+
"\n",
|
|
748
|
+
);
|
|
749
|
+
assert.equal(
|
|
750
|
+
targetFinished,
|
|
751
|
+
false,
|
|
752
|
+
"the target redirect must not finish while its entity mutation lock is held",
|
|
753
|
+
);
|
|
754
|
+
assert.equal(
|
|
755
|
+
await readFile(entityPath, "utf8"),
|
|
756
|
+
originalEntity,
|
|
757
|
+
"the entity redirect write must not enter while the canonical mutation lock is held",
|
|
758
|
+
);
|
|
759
|
+
});
|
|
760
|
+
|
|
761
|
+
assert.ok(targetPromise);
|
|
762
|
+
const targetResult = await targetPromise;
|
|
763
|
+
assert.equal(targetResult.redirected, 1);
|
|
764
|
+
assert.equal(await readFile(entityPath, "utf8"), redirectedEntity);
|
|
765
|
+
} finally {
|
|
766
|
+
await targetPromise?.catch(() => undefined);
|
|
767
|
+
await Promise.all([
|
|
768
|
+
rm(targetDir, { recursive: true, force: true }),
|
|
769
|
+
rm(controlDir, { recursive: true, force: true }),
|
|
770
|
+
]);
|
|
771
|
+
}
|
|
772
|
+
});
|
|
773
|
+
|
|
669
774
|
const noopLogger = {
|
|
670
775
|
info: () => {},
|
|
671
776
|
warn: () => {},
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
repairContentAfterJournalMove,
|
|
28
28
|
requestEntityCanonicalIdReconcile,
|
|
29
29
|
} from "../storage/entity-canonical-id-references.js";
|
|
30
|
+
import { withRawEntityPageMutation } from "../storage/entity-canonical-id-lock.js";
|
|
30
31
|
|
|
31
32
|
// Write-boundary journal cache for redirect rewrites (issue #2213).
|
|
32
33
|
const historicalIdCache = new HistoricalEntityCanonicalIdCache();
|
|
@@ -338,6 +339,7 @@ async function stageRedirect(
|
|
|
338
339
|
// keep their bytes (plus the redirect) untouched, and entities/ pages
|
|
339
340
|
// get the bounded reconcile marker instead — their migrated surface
|
|
340
341
|
// is relationship targets, not an entityRef frontmatter field.
|
|
342
|
+
await withRawEntityPageMutation(memoryDir, update.mdPath, async () => {
|
|
341
343
|
const stateDir = path.join(memoryDir, "state");
|
|
342
344
|
const kind = classifyEntityRefWritePath(memoryDir, update.mdPath);
|
|
343
345
|
if (kind === "memory") {
|
|
@@ -371,6 +373,7 @@ async function stageRedirect(
|
|
|
371
373
|
await requestEntityCanonicalIdReconcile(stateDir);
|
|
372
374
|
}
|
|
373
375
|
}
|
|
376
|
+
});
|
|
374
377
|
// The redirect rewrote an on-disk memory file out-of-band (not through a
|
|
375
378
|
// StorageManager mutation). Bump the corpus sentinel per write so a warm
|
|
376
379
|
// hot-memories cache rescans — mid-batch too, never serving pre-redirect
|
|
@@ -331,6 +331,53 @@ test("resolveGitContext: custom invoker throwing on a later call → returns nul
|
|
|
331
331
|
assert.equal(ctx, null);
|
|
332
332
|
});
|
|
333
333
|
|
|
334
|
+
test("#2206 resolveGitContext forwards caller cancellation to an active git probe", async () => {
|
|
335
|
+
const abortController = new AbortController();
|
|
336
|
+
let forwardedSignal: AbortSignal | undefined;
|
|
337
|
+
const pendingProbe = Promise.withResolvers<{ stdout: string; exitCode: number }>();
|
|
338
|
+
const invoker: GitInvoker = (_cwd, _args, options) => {
|
|
339
|
+
forwardedSignal = options?.abortSignal;
|
|
340
|
+
options?.abortSignal?.addEventListener(
|
|
341
|
+
"abort",
|
|
342
|
+
() => pendingProbe.reject(options.abortSignal?.reason),
|
|
343
|
+
{ once: true },
|
|
344
|
+
);
|
|
345
|
+
return pendingProbe.promise;
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const resolving = resolveGitContext("/work/repo", {
|
|
349
|
+
invoker,
|
|
350
|
+
abortSignal: abortController.signal,
|
|
351
|
+
});
|
|
352
|
+
await Promise.resolve();
|
|
353
|
+
abortController.abort(new Error("caller cancelled"));
|
|
354
|
+
|
|
355
|
+
await assert.rejects(resolving, /caller cancelled/);
|
|
356
|
+
assert.equal(forwardedSignal, abortController.signal);
|
|
357
|
+
});
|
|
358
|
+
|
|
359
|
+
test("#2206 resolveGitContext gives each probe only the remaining deadline budget", async () => {
|
|
360
|
+
const timeouts: number[] = [];
|
|
361
|
+
let now = 1_000;
|
|
362
|
+
const invoker: GitInvoker = (cwd, args, options) => {
|
|
363
|
+
timeouts.push(options?.timeoutMs ?? -1);
|
|
364
|
+
now += 100;
|
|
365
|
+
const command = args.join(" ");
|
|
366
|
+
if (command === "rev-parse --show-toplevel") return { stdout: cwd, exitCode: 0 };
|
|
367
|
+
if (command === "rev-parse --abbrev-ref HEAD") return { stdout: "main", exitCode: 0 };
|
|
368
|
+
return { stdout: "", exitCode: 1 };
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
const context = await resolveGitContext("/work/repo", {
|
|
372
|
+
invoker,
|
|
373
|
+
deadlineMs: 1_400,
|
|
374
|
+
now: () => now,
|
|
375
|
+
});
|
|
376
|
+
|
|
377
|
+
assert.ok(context);
|
|
378
|
+
assert.deepEqual(timeouts, [400, 300, 200, 100]);
|
|
379
|
+
});
|
|
380
|
+
|
|
334
381
|
// ──────────────────────────────────────────────────────────────────────────
|
|
335
382
|
// resolveGitContext — happy path (origin, branch, default branch)
|
|
336
383
|
// ──────────────────────────────────────────────────────────────────────────
|