@openclaw/matrix 2026.7.2-beta.7 → 2026.7.34
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/README.md +1 -1
- package/dist/{account-selection-kqquRzCf.js → .setup/account-selection-BOQeTqax.mjs} +18 -17
- package/dist/{approval-handler.runtime-DSeaIsGa.js → .setup/approval-handler.runtime-CEXm9_-p.mjs} +18 -28
- package/dist/{approval-ids-BdJGPAJT.js → .setup/approval-ids-DdFnDB3h.mjs} +1 -1
- package/dist/{approval-reaction-auth-BjOpELxu.js → .setup/approval-reaction-auth-CREvd7S7.mjs} +2 -2
- package/dist/.setup/approval-reactions-Cltyp8nL.mjs +113 -0
- package/dist/.setup/async-lock-BcLS4KOc.mjs +19 -0
- package/dist/{channel-vj788dNZ.js → .setup/channel-an4umty1.mjs} +186 -144
- package/dist/{channel.runtime-CLoF2S9T.js → .setup/channel.runtime-GHcIBJ7H.mjs} +51 -45
- package/dist/{cli-DMqfDE-q.js → .setup/cli-B3WYmv5U.mjs} +882 -901
- package/dist/{cli-metadata-C7D53SND.js → .setup/cli-metadata-RUKCn0wJ.mjs} +1 -1
- package/dist/{client-6eRENr7k.js → .setup/client-Ct0bUHCo.mjs} +5 -5
- package/dist/{shared-CUMWxcMz.js → .setup/client-DFBQtzCe.mjs} +422 -179
- package/dist/.setup/client-bootstrap-Be8jvNle.mjs +74 -0
- package/dist/{config-schema-Djxw3C6b.js → .setup/config-schema-D9J_vUF6.mjs} +89 -70
- package/dist/.setup/credentials-BhZlA0kL.mjs +56 -0
- package/dist/.setup/credentials-read-CRHg6XPm.mjs +114 -0
- package/dist/{credentials-write.runtime-Be9zNSUw.js → .setup/credentials-write.runtime-dWuLafsk.mjs} +1 -1
- package/dist/{crypto-runtime-D9_6J5tZ.js → .setup/crypto-runtime-D-cZa8P0.mjs} +81 -35
- package/dist/.setup/crypto-state-store-B43k3z3W.mjs +352 -0
- package/dist/{deps-CcVJfvRM.js → .setup/deps-Dy6yreL4.mjs} +92 -25
- package/dist/{device-health-B4-YXtJR.js → .setup/device-health-D4LBxuPq.mjs} +1 -6
- package/dist/{directory-live-C8dVBiCc.js → .setup/directory-live-BTEYxMwy.mjs} +10 -9
- package/dist/.setup/doctor-BGnvMzOR.mjs +169 -0
- package/dist/.setup/doctor-contract-DNJw0fdq.mjs +246 -0
- package/dist/{draft-stream-CtvOXq0Z.js → .setup/draft-stream-C-_OhpE8.mjs} +1 -6
- package/dist/{encryption-guidance-CbEFe38F.js → .setup/encryption-guidance-CpuuwmjL.mjs} +4 -3
- package/dist/{env-auth-CQsYbz-p.js → .setup/env-auth-CYJL1jNl.mjs} +2 -2
- package/dist/{env-vars-B0NxQnPk.js → .setup/env-vars-KzaYveuy.mjs} +1 -3
- package/dist/{exec-approval-resolver-BCgqRtZS.js → .setup/exec-approval-resolver-f9j6staN.mjs} +1 -2
- package/dist/{file-sync-store-DiiFsayX.js → .setup/file-sync-store-DU0cnYAz.mjs} +30 -25
- package/dist/{http-client-CycYxU9-.js → .setup/http-client-C954In2D.mjs} +45 -25
- package/dist/{idb-persistence-B6x7dMsF.js → .setup/idb-persistence-_HKTXkVC.mjs} +76 -78
- package/dist/{idb-persistence-lock-DAJ49nZX.js → .setup/idb-persistence-lock-B3fZXyF_.mjs} +1 -1
- package/dist/.setup/legacy-crypto-inspector-Byp8LCys.mjs +42 -0
- package/dist/.setup/legacy-crypto-restore-YQVoK1B2.mjs +93 -0
- package/dist/{logger-D0GCSDQq.js → .setup/logger-DpoogOgz.mjs} +1 -1
- package/dist/{logging-DV-p52N0.js → .setup/logging-CgxQOJJP.mjs} +2 -9
- package/dist/.setup/matrix-migration.runtime-BDH5c3fN.mjs +530 -0
- package/dist/{media-text-BTwzADS_.js → .setup/media-text-Cib-dxkn.mjs} +1 -1
- package/dist/{messages-DxQJkhxs.js → .setup/messages-D4DYGHYX.mjs} +15 -67
- package/dist/.setup/migration-snapshot-backup-CpgYhiUp.mjs +70 -0
- package/dist/.setup/migration-snapshot.runtime-O8qkMVaC.mjs +2 -0
- package/dist/{monitor-VyWlSLwo.js → .setup/monitor-DNcW_oAN.mjs} +2525 -2361
- package/dist/.setup/probe.runtime-CMPh0mFk.mjs +2 -0
- package/dist/{profile-update-CffmyW_4.js → .setup/profile-update-DzOL3Wiw.mjs} +5 -4
- package/dist/{reaction-events-B00WSi98.js → .setup/reaction-events-BcvgXxHb.mjs} +14 -64
- package/dist/{resolve-targets-nm2L48sh.js → .setup/resolve-targets-Bq80X9Sn.mjs} +3 -3
- package/dist/{resolver.runtime-DS6uPaEe.js → .setup/resolver.runtime-CeBHR9-T.mjs} +1 -1
- package/dist/{runtime-api-D1xI_cvh.js → .setup/runtime-api-CEsWNdil.mjs} +4 -4
- package/dist/.setup/runtime-setter-api-DGMubGUq.mjs +3 -0
- package/dist/{sdk-bUytQHx7.js → .setup/sdk-He1quVAq.mjs} +592 -261
- package/dist/.setup/secret-contract-api-CiTJ7pd5.mjs +3 -0
- package/dist/{secret-contract-M3hRmGO-.js → .setup/secret-contract-phPvlNfV.mjs} +53 -28
- package/dist/{send-BldGYG8g.js → .setup/send-CGgl0uTn.mjs} +133 -660
- package/dist/{setup-bootstrap-Deleiibz.js → .setup/setup-bootstrap-DUXBC8X2.mjs} +4 -4
- package/dist/{setup-core-BVfBv2ai.js → .setup/setup-core-bhdcEo7v.mjs} +239 -189
- package/dist/.setup/setup-plugin-api-CAwZ_Bi7.mjs +43 -0
- package/dist/.setup/setup-plugin-api-DIFVsOs3.mjs +2 -0
- package/dist/{setup-surface-BBq3WeqX.js → .setup/setup-surface-05_G-MnT.mjs} +149 -92
- package/dist/{startup-verification-wm3_i88s.js → .setup/startup-verification-BTwIGu1J.mjs} +7 -6
- package/dist/.setup/storage-NGZq5zet.mjs +432 -0
- package/dist/{storage-paths-gUmSydsW.js → .setup/storage-paths-BWo_ZEMC.mjs} +13 -2
- package/dist/{subagent-hooks-dkPAF6Et.js → .setup/subagent-hooks-BSWPJEmo.mjs} +2 -2
- package/dist/{thread-binding-api-DRbBZlhS.js → .setup/thread-binding-api-B7UaOoKv.mjs} +1 -1
- package/dist/{thread-bindings-DGbl3vDW.js → .setup/thread-bindings-DqmjG2on.mjs} +8 -8
- package/dist/{tool-actions.runtime-uu9blSqO.js → .setup/tool-actions.runtime-CXDLk2jg.mjs} +196 -332
- package/dist/{verification-DYMQ1QpI.js → .setup/verification-DeWOtZJr.mjs} +4 -3
- package/dist/api.js +9 -9
- package/dist/auth-presence.js +21 -13
- package/dist/channel-plugin-api.js +1 -1
- package/dist/cli-metadata.js +1 -1
- package/dist/contract-api.js +2 -2
- package/dist/doctor-contract-api.js +99 -524
- package/dist/helper-api.js +4 -4
- package/dist/index.js +1 -1
- package/dist/plugin-entry.handlers.runtime.js +2 -2
- package/dist/runtime-api.js +8 -8
- package/dist/runtime-heavy-api.js +3 -0
- package/dist/runtime-setter-api.js +1 -1
- package/dist/secret-contract-api.js +1 -1
- package/dist/session-binding-contract-api.js +3 -3
- package/dist/setup-entry.js +4 -3
- package/dist/setup-plugin-api.js +1 -44
- package/dist/subagent-hooks-api.js +1 -1
- package/dist/thread-binding-api.js +1 -1
- package/dist/thread-bindings-runtime.js +1 -1
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/package.json +1 -1
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm.d.ts +2 -14
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.cjs +384 -409
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.js +224 -246
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm +0 -0
- package/node_modules/@matrix-org/matrix-sdk-crypto-wasm/pkg/matrix_sdk_crypto_wasm_bg.wasm.d.ts +58 -59
- package/node_modules/markdown-it/README.md +18 -294
- package/node_modules/markdown-it/bin/markdown-it.mjs +2 -2
- package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs +3013 -0
- package/node_modules/markdown-it/dist/browser/markdown-it.esm.min.mjs.map +1 -0
- package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js +14 -0
- package/node_modules/markdown-it/dist/browser/markdown-it.umd.min.js.map +1 -0
- package/node_modules/markdown-it/dist/markdown-it.cjs.js +4420 -0
- package/node_modules/markdown-it/dist/markdown-it.cjs.js.map +1 -0
- package/node_modules/markdown-it/dist/markdown-it.d.cts +19 -0
- package/node_modules/markdown-it/dist/markdown-it.d.mts +950 -0
- package/node_modules/markdown-it/dist/{index.cjs.js → markdown-it.mjs} +1504 -1525
- package/node_modules/markdown-it/dist/markdown-it.mjs.map +1 -0
- package/node_modules/markdown-it/node_modules/argparse/LICENSE +1 -208
- package/node_modules/markdown-it/node_modules/argparse/README.md +46 -41
- package/node_modules/markdown-it/node_modules/argparse/lib/_colorize.js +72 -0
- package/node_modules/markdown-it/node_modules/argparse/lib/argparse.d.ts +292 -0
- package/node_modules/markdown-it/node_modules/argparse/{argparse.js → lib/argparse.js} +1142 -1029
- package/node_modules/markdown-it/node_modules/argparse/lib/difflib.js +190 -0
- package/node_modules/markdown-it/node_modules/argparse/lib/sub.js +4 -4
- package/node_modules/markdown-it/node_modules/argparse/lib/textwrap.js +28 -28
- package/node_modules/markdown-it/node_modules/argparse/package.json +18 -11
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts +8 -0
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js +46 -0
- package/node_modules/markdown-it/node_modules/entities/dist/decode-codepoint.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/{lib → dist}/decode.d.ts +28 -45
- package/node_modules/markdown-it/node_modules/entities/dist/decode.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/decode.js +189 -141
- package/node_modules/markdown-it/node_modules/entities/dist/decode.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/encode.d.ts +4 -2
- package/node_modules/markdown-it/node_modules/entities/dist/encode.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/encode.js +90 -0
- package/node_modules/markdown-it/node_modules/entities/dist/encode.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/{lib → dist}/escape.d.ts +15 -10
- package/node_modules/markdown-it/node_modules/entities/dist/escape.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/escape.js +132 -0
- package/node_modules/markdown-it/node_modules/entities/dist/escape.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts +3 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js +5 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-html.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts +3 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js +5 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/decode-data-xml.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts +5 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js +12 -0
- package/node_modules/markdown-it/node_modules/entities/dist/generated/encode-html.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/{lib/esm → dist}/index.d.ts +14 -21
- package/node_modules/markdown-it/node_modules/entities/dist/index.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/index.js +91 -0
- package/node_modules/markdown-it/node_modules/entities/dist/index.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts +17 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js +18 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/bin-trie-flags.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts +7 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js +17 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/decode-shared.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts +33 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.d.ts.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js +93 -0
- package/node_modules/markdown-it/node_modules/entities/dist/internal/encode-shared.js.map +1 -0
- package/node_modules/markdown-it/node_modules/entities/package.json +63 -70
- package/node_modules/markdown-it/node_modules/entities/readme.md +54 -45
- package/node_modules/markdown-it/node_modules/entities/src/decode-codepoint.ts +50 -0
- package/node_modules/markdown-it/node_modules/entities/src/decode.ts +671 -0
- package/node_modules/markdown-it/node_modules/entities/src/encode.ts +95 -0
- package/node_modules/markdown-it/node_modules/entities/src/escape.ts +160 -0
- package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-html.ts +7 -0
- package/node_modules/markdown-it/node_modules/entities/src/generated/decode-data-xml.ts +7 -0
- package/node_modules/markdown-it/node_modules/entities/src/generated/encode-html.ts +18 -0
- package/node_modules/markdown-it/node_modules/entities/src/index.ts +162 -0
- package/node_modules/markdown-it/node_modules/entities/src/internal/bin-trie-flags.ts +16 -0
- package/node_modules/markdown-it/node_modules/entities/src/internal/decode-shared.ts +18 -0
- package/node_modules/markdown-it/node_modules/entities/src/internal/encode-shared.ts +123 -0
- package/node_modules/markdown-it/node_modules/linkify-it/README.md +49 -86
- package/node_modules/markdown-it/node_modules/linkify-it/build/index.cjs.js +636 -825
- package/node_modules/markdown-it/node_modules/linkify-it/build/index.cjs.js.map +1 -0
- package/node_modules/markdown-it/node_modules/linkify-it/build/index.d.ts +236 -0
- package/node_modules/markdown-it/node_modules/linkify-it/build/index.mjs +538 -0
- package/node_modules/markdown-it/node_modules/linkify-it/build/index.mjs.map +1 -0
- package/node_modules/markdown-it/node_modules/linkify-it/package.json +23 -20
- package/node_modules/markdown-it/node_modules/uc.micro/README.md +18 -1
- package/node_modules/markdown-it/node_modules/uc.micro/build/index.cjs.js +13 -18
- package/node_modules/markdown-it/node_modules/uc.micro/build/index.d.ts +6 -0
- package/node_modules/markdown-it/node_modules/uc.micro/build/index.mjs +8 -0
- package/node_modules/markdown-it/node_modules/uc.micro/package.json +12 -17
- package/node_modules/markdown-it/package.json +47 -30
- package/node_modules/matrix-js-sdk/CHANGELOG.md +0 -11
- package/node_modules/matrix-js-sdk/package.json +1 -1
- package/node_modules/music-metadata/lib/common/Util.d.ts +1 -1
- package/node_modules/music-metadata/lib/common/Util.js +1 -7
- package/node_modules/music-metadata/lib/id3v2/FrameHeader.js +3 -23
- package/node_modules/music-metadata/lib/id3v2/FrameParser.js +2 -2
- package/node_modules/music-metadata/lib/id3v2/ID3v2Token.js +1 -1
- package/node_modules/music-metadata/lib/mp4/AtomToken.js +13 -38
- package/node_modules/music-metadata/lib/mpeg/MpegParser.js +1 -1
- package/node_modules/music-metadata/package.json +6 -6
- package/node_modules/typebox/build/compile/validator.d.mts +4 -1
- package/node_modules/typebox/build/guard/guard.d.mts +1 -1
- package/node_modules/typebox/build/guard/guard.mjs +2 -5
- package/node_modules/typebox/build/guard/string.mjs +4 -16
- package/node_modules/typebox/build/schema/engine/_functions.mjs +15 -34
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +0 -5
- package/node_modules/typebox/build/type/action/readonly_object.mjs +0 -8
- package/node_modules/typebox/build/typebox.d.mts +1 -1
- package/node_modules/typebox/build/typebox.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +32 -29
- package/openclaw.plugin.json +146 -152
- package/package.json +31 -114
- package/dist/accounts-DfngqebB.js +0 -130
- package/dist/active-client-DXvz2gCo.js +0 -20
- package/dist/approval-reactions-D-BxBK_L.js +0 -202
- package/dist/client-Dbso3-0V.js +0 -30
- package/dist/client-bootstrap-XsIkHNt0.js +0 -110
- package/dist/create-client-BmSU-q-D.js +0 -61
- package/dist/credentials-W2EmwRhu.js +0 -65
- package/dist/credentials-read-DVmFCm7X.js +0 -77
- package/dist/doctor-CM8ijNpW.js +0 -64
- package/dist/doctor-contract-BMSJkkAE.js +0 -167
- package/dist/inbound-dedupe-CaBLblef.js +0 -48
- package/dist/probe.runtime-BuieqmS3.js +0 -3
- package/dist/record-shared-CWWx6fvI.js +0 -2
- package/dist/recovery-key-store-BNnHvXdk.js +0 -275
- package/dist/room-info-CAFZ3Z9J.js +0 -87
- package/dist/route-DY6at4qJ.js +0 -161
- package/dist/storage-BvAkgzvT.js +0 -685
- package/node_modules/markdown-it/dist/index.cjs.js.map +0 -1
- package/node_modules/markdown-it/dist/markdown-it.js +0 -3975
- package/node_modules/markdown-it/dist/markdown-it.js.map +0 -1
- package/node_modules/markdown-it/dist/markdown-it.min.js +0 -3
- package/node_modules/markdown-it/dist/markdown-it.min.js.map +0 -1
- package/node_modules/markdown-it/index.mjs +0 -1
- package/node_modules/markdown-it/lib/common/html_blocks.mjs +0 -67
- package/node_modules/markdown-it/lib/common/html_re.mjs +0 -25
- package/node_modules/markdown-it/lib/common/utils.mjs +0 -324
- package/node_modules/markdown-it/lib/helpers/index.mjs +0 -11
- package/node_modules/markdown-it/lib/helpers/parse_link_destination.mjs +0 -77
- package/node_modules/markdown-it/lib/helpers/parse_link_label.mjs +0 -49
- package/node_modules/markdown-it/lib/helpers/parse_link_title.mjs +0 -66
- package/node_modules/markdown-it/lib/index.mjs +0 -565
- package/node_modules/markdown-it/lib/parser_block.mjs +0 -134
- package/node_modules/markdown-it/lib/parser_core.mjs +0 -62
- package/node_modules/markdown-it/lib/parser_inline.mjs +0 -197
- package/node_modules/markdown-it/lib/presets/commonmark.mjs +0 -88
- package/node_modules/markdown-it/lib/presets/default.mjs +0 -47
- package/node_modules/markdown-it/lib/presets/zero.mjs +0 -70
- package/node_modules/markdown-it/lib/renderer.mjs +0 -322
- package/node_modules/markdown-it/lib/ruler.mjs +0 -340
- package/node_modules/markdown-it/lib/rules_block/blockquote.mjs +0 -209
- package/node_modules/markdown-it/lib/rules_block/code.mjs +0 -30
- package/node_modules/markdown-it/lib/rules_block/fence.mjs +0 -94
- package/node_modules/markdown-it/lib/rules_block/heading.mjs +0 -51
- package/node_modules/markdown-it/lib/rules_block/hr.mjs +0 -40
- package/node_modules/markdown-it/lib/rules_block/html_block.mjs +0 -80
- package/node_modules/markdown-it/lib/rules_block/lheading.mjs +0 -85
- package/node_modules/markdown-it/lib/rules_block/list.mjs +0 -331
- package/node_modules/markdown-it/lib/rules_block/paragraph.mjs +0 -48
- package/node_modules/markdown-it/lib/rules_block/reference.mjs +0 -212
- package/node_modules/markdown-it/lib/rules_block/state_block.mjs +0 -220
- package/node_modules/markdown-it/lib/rules_block/table.mjs +0 -228
- package/node_modules/markdown-it/lib/rules_core/block.mjs +0 -13
- package/node_modules/markdown-it/lib/rules_core/inline.mjs +0 -11
- package/node_modules/markdown-it/lib/rules_core/linkify.mjs +0 -134
- package/node_modules/markdown-it/lib/rules_core/normalize.mjs +0 -17
- package/node_modules/markdown-it/lib/rules_core/replacements.mjs +0 -101
- package/node_modules/markdown-it/lib/rules_core/smartquotes.mjs +0 -209
- package/node_modules/markdown-it/lib/rules_core/state_core.mjs +0 -17
- package/node_modules/markdown-it/lib/rules_core/text_join.mjs +0 -43
- package/node_modules/markdown-it/lib/rules_inline/autolink.mjs +0 -72
- package/node_modules/markdown-it/lib/rules_inline/backticks.mjs +0 -60
- package/node_modules/markdown-it/lib/rules_inline/balance_pairs.mjs +0 -124
- package/node_modules/markdown-it/lib/rules_inline/emphasis.mjs +0 -123
- package/node_modules/markdown-it/lib/rules_inline/entity.mjs +0 -51
- package/node_modules/markdown-it/lib/rules_inline/escape.mjs +0 -83
- package/node_modules/markdown-it/lib/rules_inline/fragments_join.mjs +0 -38
- package/node_modules/markdown-it/lib/rules_inline/html_inline.mjs +0 -50
- package/node_modules/markdown-it/lib/rules_inline/image.mjs +0 -138
- package/node_modules/markdown-it/lib/rules_inline/link.mjs +0 -139
- package/node_modules/markdown-it/lib/rules_inline/linkify.mjs +0 -63
- package/node_modules/markdown-it/lib/rules_inline/newline.mjs +0 -42
- package/node_modules/markdown-it/lib/rules_inline/state_inline.mjs +0 -154
- package/node_modules/markdown-it/lib/rules_inline/strikethrough.mjs +0 -127
- package/node_modules/markdown-it/lib/rules_inline/text.mjs +0 -86
- package/node_modules/markdown-it/lib/token.mjs +0 -191
- package/node_modules/markdown-it/node_modules/argparse/CHANGELOG.md +0 -216
- package/node_modules/markdown-it/node_modules/entities/lib/decode.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/decode.js +0 -536
- package/node_modules/markdown-it/node_modules/entities/lib/decode.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.d.ts +0 -19
- package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.js +0 -76
- package/node_modules/markdown-it/node_modules/entities/lib/decode_codepoint.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/encode.d.ts +0 -22
- package/node_modules/markdown-it/node_modules/entities/lib/encode.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/encode.js +0 -77
- package/node_modules/markdown-it/node_modules/entities/lib/encode.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/escape.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/escape.js +0 -122
- package/node_modules/markdown-it/node_modules/entities/lib/escape.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.d.ts +0 -211
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.d.ts +0 -19
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.js +0 -71
- package/node_modules/markdown-it/node_modules/entities/lib/esm/decode_codepoint.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.js +0 -69
- package/node_modules/markdown-it/node_modules/entities/lib/esm/encode.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.d.ts +0 -43
- package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.js +0 -116
- package/node_modules/markdown-it/node_modules/entities/lib/esm/escape.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.d.ts +0 -3
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.js +0 -7
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-html.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts +0 -3
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.js +0 -7
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.d.ts +0 -8
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.js +0 -10
- package/node_modules/markdown-it/node_modules/entities/lib/esm/generated/encode-html.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/index.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/index.js +0 -99
- package/node_modules/markdown-it/node_modules/entities/lib/esm/index.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/esm/package.json +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.d.ts +0 -3
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.js +0 -9
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-html.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.d.ts +0 -3
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.js +0 -9
- package/node_modules/markdown-it/node_modules/entities/lib/generated/decode-data-xml.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.d.ts +0 -8
- package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.js +0 -12
- package/node_modules/markdown-it/node_modules/entities/lib/generated/encode-html.js.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/index.d.ts +0 -96
- package/node_modules/markdown-it/node_modules/entities/lib/index.d.ts.map +0 -1
- package/node_modules/markdown-it/node_modules/entities/lib/index.js +0 -126
- package/node_modules/markdown-it/node_modules/entities/lib/index.js.map +0 -1
- package/node_modules/markdown-it/node_modules/linkify-it/index.mjs +0 -646
- package/node_modules/markdown-it/node_modules/linkify-it/lib/re.mjs +0 -193
- package/node_modules/markdown-it/node_modules/uc.micro/categories/Cc/regex.mjs +0 -1
- package/node_modules/markdown-it/node_modules/uc.micro/categories/Cf/regex.mjs +0 -1
- package/node_modules/markdown-it/node_modules/uc.micro/categories/P/regex.mjs +0 -1
- package/node_modules/markdown-it/node_modules/uc.micro/categories/S/regex.mjs +0 -1
- package/node_modules/markdown-it/node_modules/uc.micro/categories/Z/regex.mjs +0 -1
- package/node_modules/markdown-it/node_modules/uc.micro/index.mjs +0 -8
- package/node_modules/markdown-it/node_modules/uc.micro/properties/Any/regex.mjs +0 -1
- /package/dist/{account-config-BZWN9tGS.js → .setup/account-config-BZWN9tGS.mjs} +0 -0
- /package/dist/{backup-health-Dm_YMVFT.js → .setup/backup-health-Dm_YMVFT.mjs} +0 -0
- /package/dist/{config-paths-CnREYb1Y.js → .setup/config-paths-CnREYb1Y.mjs} +0 -0
- /package/dist/{config-secret-input.runtime-CwsP3--c.js → .setup/config-secret-input.runtime-CwsP3--c.mjs} +0 -0
- /package/dist/{crypto-node.runtime-6Aj_ltHQ.js → .setup/crypto-node.runtime-6Aj_ltHQ.mjs} +0 -0
- /package/dist/{errors-C47hvAF8.js → .setup/errors-C47hvAF8.mjs} +0 -0
- /package/dist/{preflight-audio.runtime-BZxxQsxY.js → .setup/preflight-audio.runtime-BZxxQsxY.mjs} +0 -0
- /package/dist/{reaction-common-DkrQdBSZ.js → .setup/reaction-common-DkrQdBSZ.mjs} +0 -0
- /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
- /package/dist/{runtime-6S3DNFNv.js → .setup/runtime-6S3DNFNv.mjs} +0 -0
- /package/dist/{runtime-BefyhPWv.js → .setup/runtime-BefyhPWv.mjs} +0 -0
- /package/dist/{sync-state-CWbp0QSY.js → .setup/sync-state-CWbp0QSY.mjs} +0 -0
- /package/dist/{target-ids-B-5aQxwn.js → .setup/target-ids-B-5aQxwn.mjs} +0 -0
- /package/dist/{thread-bindings-shared-CKnY4LSd.js → .setup/thread-bindings-shared-CKnY4LSd.mjs} +0 -0
- /package/dist/{timeout-abort-signal-DMrgRFIy.js → .setup/timeout-abort-signal-DMrgRFIy.mjs} +0 -0
- /package/dist/{url-validation-GRHde6lq.js → .setup/url-validation-GRHde6lq.mjs} +0 -0
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { n as getOptionalMatrixRuntime } from "./runtime-6S3DNFNv.js";
|
|
3
|
-
import "./storage-paths-gUmSydsW.js";
|
|
4
|
-
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
5
|
-
import { createPluginStateSyncKeyedStore } from "openclaw/plugin-sdk/runtime-doctor";
|
|
6
|
-
//#region extensions/matrix/src/matrix/credentials-read.ts
|
|
7
|
-
var credentials_read_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
-
MATRIX_CREDENTIALS_MAX_ENTRIES: () => 256,
|
|
9
|
-
MATRIX_CREDENTIALS_NAMESPACE: () => MATRIX_CREDENTIALS_NAMESPACE,
|
|
10
|
-
clearMatrixCredentials: () => clearMatrixCredentials,
|
|
11
|
-
credentialsMatchConfig: () => credentialsMatchConfig,
|
|
12
|
-
isMatrixCredentialRevocation: () => isMatrixCredentialRevocation,
|
|
13
|
-
loadMatrixCredentials: () => loadMatrixCredentials,
|
|
14
|
-
matrixCredentialsStoreKey: () => matrixCredentialsStoreKey,
|
|
15
|
-
normalizeMatrixStoredCredentials: () => normalizeMatrixStoredCredentials,
|
|
16
|
-
openMatrixCredentialsStore: () => openMatrixCredentialsStore
|
|
17
|
-
});
|
|
18
|
-
const MATRIX_CREDENTIALS_NAMESPACE = "credentials";
|
|
19
|
-
function matrixCredentialsStoreKey(accountId) {
|
|
20
|
-
return `account:${normalizeAccountId(accountId)}`;
|
|
21
|
-
}
|
|
22
|
-
function normalizeMatrixStoredCredentials(value, accountId) {
|
|
23
|
-
if (!value || typeof value !== "object") return null;
|
|
24
|
-
const parsed = value;
|
|
25
|
-
if (typeof parsed.homeserver !== "string" || !parsed.homeserver || typeof parsed.userId !== "string" || !parsed.userId || typeof parsed.accessToken !== "string" || !parsed.accessToken || typeof parsed.createdAt !== "string" || !parsed.createdAt) return null;
|
|
26
|
-
return {
|
|
27
|
-
accountId: normalizeAccountId(accountId ?? parsed.accountId),
|
|
28
|
-
homeserver: parsed.homeserver,
|
|
29
|
-
userId: parsed.userId,
|
|
30
|
-
accessToken: parsed.accessToken,
|
|
31
|
-
...typeof parsed.deviceId === "string" ? { deviceId: parsed.deviceId } : {},
|
|
32
|
-
createdAt: parsed.createdAt,
|
|
33
|
-
...typeof parsed.lastUsedAt === "string" ? { lastUsedAt: parsed.lastUsedAt } : {}
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
function isMatrixCredentialRevocation(value, accountId) {
|
|
37
|
-
if (!value || typeof value !== "object") return false;
|
|
38
|
-
const parsed = value;
|
|
39
|
-
return parsed.kind === "revoked" && typeof parsed.revokedAt === "string" && parsed.revokedAt.length > 0 && normalizeAccountId(parsed.accountId) === normalizeAccountId(accountId ?? parsed.accountId);
|
|
40
|
-
}
|
|
41
|
-
function openMatrixCredentialsStore(env = process.env) {
|
|
42
|
-
const runtime = getOptionalMatrixRuntime();
|
|
43
|
-
const resolvedEnv = env.OPENCLAW_STATE_DIR?.trim() || !runtime ? env : {
|
|
44
|
-
...env,
|
|
45
|
-
OPENCLAW_STATE_DIR: runtime.state.resolveStateDir(env)
|
|
46
|
-
};
|
|
47
|
-
return createPluginStateSyncKeyedStore("matrix", {
|
|
48
|
-
namespace: MATRIX_CREDENTIALS_NAMESPACE,
|
|
49
|
-
maxEntries: 256,
|
|
50
|
-
overflowPolicy: "reject-new",
|
|
51
|
-
env: resolvedEnv
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
function loadMatrixCredentials(env = process.env, accountId) {
|
|
55
|
-
const normalizedAccountId = normalizeAccountId(accountId);
|
|
56
|
-
const parsed = normalizeMatrixStoredCredentials(openMatrixCredentialsStore(env).lookup(matrixCredentialsStoreKey(accountId)), normalizedAccountId);
|
|
57
|
-
if (!parsed || parsed.accountId !== normalizedAccountId) return null;
|
|
58
|
-
const { accountId: _accountId, ...credentials } = parsed;
|
|
59
|
-
return credentials;
|
|
60
|
-
}
|
|
61
|
-
function clearMatrixCredentials(env = process.env, accountId) {
|
|
62
|
-
const normalizedAccountId = normalizeAccountId(accountId);
|
|
63
|
-
openMatrixCredentialsStore(env).register(matrixCredentialsStoreKey(normalizedAccountId), {
|
|
64
|
-
accountId: normalizedAccountId,
|
|
65
|
-
kind: "revoked",
|
|
66
|
-
revokedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
function credentialsMatchConfig(stored, config) {
|
|
70
|
-
if (!config.userId) {
|
|
71
|
-
if (!config.accessToken) return false;
|
|
72
|
-
return stored.homeserver === config.homeserver && stored.accessToken === config.accessToken;
|
|
73
|
-
}
|
|
74
|
-
return stored.homeserver === config.homeserver && stored.userId === config.userId;
|
|
75
|
-
}
|
|
76
|
-
//#endregion
|
|
77
|
-
export { isMatrixCredentialRevocation as a, normalizeMatrixStoredCredentials as c, credentials_read_exports as i, openMatrixCredentialsStore as l, clearMatrixCredentials as n, loadMatrixCredentials as o, credentialsMatchConfig as r, matrixCredentialsStoreKey as s, MATRIX_CREDENTIALS_NAMESPACE as t };
|
package/dist/doctor-CM8ijNpW.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-BMSJkkAE.js";
|
|
2
|
-
import { detectPluginInstallPathIssue, formatPluginInstallPathIssue, removePluginFromConfig } from "openclaw/plugin-sdk/runtime-doctor";
|
|
3
|
-
//#region extensions/matrix/src/doctor.ts
|
|
4
|
-
async function collectMatrixInstallPathWarnings(cfg) {
|
|
5
|
-
const issue = await detectPluginInstallPathIssue({
|
|
6
|
-
pluginId: "matrix",
|
|
7
|
-
install: cfg.plugins?.installs?.matrix
|
|
8
|
-
});
|
|
9
|
-
if (!issue) return [];
|
|
10
|
-
return formatPluginInstallPathIssue({
|
|
11
|
-
issue,
|
|
12
|
-
pluginLabel: "Matrix",
|
|
13
|
-
defaultInstallCommand: "openclaw plugins install @openclaw/matrix"
|
|
14
|
-
}).map((entry) => `- ${entry}`);
|
|
15
|
-
}
|
|
16
|
-
async function cleanStaleMatrixPluginConfig(cfg) {
|
|
17
|
-
const issue = await detectPluginInstallPathIssue({
|
|
18
|
-
pluginId: "matrix",
|
|
19
|
-
install: cfg.plugins?.installs?.matrix
|
|
20
|
-
});
|
|
21
|
-
if (!issue || issue.kind !== "missing-path") return {
|
|
22
|
-
config: cfg,
|
|
23
|
-
changes: []
|
|
24
|
-
};
|
|
25
|
-
const { config, actions } = removePluginFromConfig(cfg, "matrix");
|
|
26
|
-
const removed = [];
|
|
27
|
-
if (actions.install) removed.push("install record");
|
|
28
|
-
if (actions.loadPath) removed.push("load path");
|
|
29
|
-
if (actions.entry) removed.push("plugin entry");
|
|
30
|
-
if (actions.allowlist) removed.push("allowlist entry");
|
|
31
|
-
if (removed.length === 0) return {
|
|
32
|
-
config: cfg,
|
|
33
|
-
changes: []
|
|
34
|
-
};
|
|
35
|
-
return {
|
|
36
|
-
config,
|
|
37
|
-
changes: [`Removed stale Matrix plugin references (${removed.join(", ")}). The previous install path no longer exists: ${issue.path}`]
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
async function runMatrixDoctorSequence(params) {
|
|
41
|
-
const warningNotes = [];
|
|
42
|
-
const installWarnings = await collectMatrixInstallPathWarnings(params.cfg);
|
|
43
|
-
if (installWarnings.length > 0) warningNotes.push(installWarnings.join("\n"));
|
|
44
|
-
return {
|
|
45
|
-
changeNotes: [],
|
|
46
|
-
warningNotes
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
const matrixDoctor = {
|
|
50
|
-
dmAllowFromMode: "nestedOnly",
|
|
51
|
-
groupModel: "sender",
|
|
52
|
-
groupAllowFromFallbackToAllowFrom: false,
|
|
53
|
-
warnOnEmptyGroupSenderAllowlist: true,
|
|
54
|
-
legacyConfigRules,
|
|
55
|
-
normalizeCompatibilityConfig,
|
|
56
|
-
runConfigSequence: async ({ cfg, env, shouldRepair }) => await runMatrixDoctorSequence({
|
|
57
|
-
cfg,
|
|
58
|
-
env,
|
|
59
|
-
shouldRepair
|
|
60
|
-
}),
|
|
61
|
-
cleanStaleConfig: async ({ cfg }) => await cleanStaleMatrixPluginConfig(cfg)
|
|
62
|
-
};
|
|
63
|
-
//#endregion
|
|
64
|
-
export { cleanStaleMatrixPluginConfig, collectMatrixInstallPathWarnings, matrixDoctor, runMatrixDoctorSequence };
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { t as isRecord } from "./record-shared-CWWx6fvI.js";
|
|
2
|
-
import { defineChannelAliasMigration, defineKeyMoveMigration, hasLegacyAccountStreamingAliases, normalizeChannelConfigEntries, stripRetiredChannelKeys } from "openclaw/plugin-sdk/runtime-doctor";
|
|
3
|
-
import { hasLegacyFlatAllowPrivateNetworkAlias, migrateLegacyFlatAllowPrivateNetworkAlias } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
4
|
-
//#region extensions/matrix/src/doctor-contract.ts
|
|
5
|
-
function parseMatrixStreamingMode(value) {
|
|
6
|
-
if (typeof value !== "string") return null;
|
|
7
|
-
const normalized = value.trim().toLowerCase();
|
|
8
|
-
return normalized === "partial" || normalized === "quiet" || normalized === "progress" || normalized === "off" ? normalized : null;
|
|
9
|
-
}
|
|
10
|
-
const streamingAliasMigration = defineChannelAliasMigration({
|
|
11
|
-
channelId: "matrix",
|
|
12
|
-
streaming: {
|
|
13
|
-
defaultMode: "off",
|
|
14
|
-
resolveMode: (entry) => {
|
|
15
|
-
const streaming = isRecord(entry.streaming) ? entry.streaming : null;
|
|
16
|
-
const parsed = parseMatrixStreamingMode(streaming ? streaming.mode : entry.streaming);
|
|
17
|
-
if (parsed) return parsed;
|
|
18
|
-
return entry.streaming === true ? "partial" : "off";
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
accountStreamingReplacesRoot: true
|
|
22
|
-
});
|
|
23
|
-
const roomAllowMigration = defineKeyMoveMigration({
|
|
24
|
-
scope: ["*"],
|
|
25
|
-
from: ["allow"],
|
|
26
|
-
to: ["enabled"],
|
|
27
|
-
sourceOwn: false,
|
|
28
|
-
match: (value) => typeof value === "boolean",
|
|
29
|
-
targetIsSet: (value) => typeof value === "boolean",
|
|
30
|
-
movedMessage: ({ sourcePath, targetPath, mappedValue }) => `Moved ${sourcePath} → ${targetPath} (${String(mappedValue)}).`,
|
|
31
|
-
existingMessage: ({ sourcePath, targetPath, targetValue }) => `Moved ${sourcePath} → ${targetPath} (${String(targetValue)}).`
|
|
32
|
-
});
|
|
33
|
-
function hasLegacyTrustedDmPolicy(value) {
|
|
34
|
-
const root = isRecord(value) ? value : null;
|
|
35
|
-
if (!root) return false;
|
|
36
|
-
return (isRecord(root.dm) ? root.dm : null)?.policy === "trusted";
|
|
37
|
-
}
|
|
38
|
-
function migrateLegacyTrustedDmPolicy(params) {
|
|
39
|
-
const dm = isRecord(params.entry.dm) ? params.entry.dm : null;
|
|
40
|
-
if (!dm || dm.policy !== "trusted") return {
|
|
41
|
-
entry: params.entry,
|
|
42
|
-
changed: false
|
|
43
|
-
};
|
|
44
|
-
const allowFromRaw = dm.allowFrom;
|
|
45
|
-
const allowFromEntries = Array.isArray(allowFromRaw) ? allowFromRaw.filter((entry) => typeof entry === "string" && entry.trim().length > 0).length : 0;
|
|
46
|
-
const nextPolicy = allowFromEntries > 0 ? "allowlist" : "pairing";
|
|
47
|
-
const nextDm = {
|
|
48
|
-
...dm,
|
|
49
|
-
policy: nextPolicy
|
|
50
|
-
};
|
|
51
|
-
params.changes.push(`Migrated ${params.pathPrefix}.dm.policy "trusted" → "${nextPolicy}" (legacy alias removed; ${allowFromEntries > 0 ? `preserved ${allowFromEntries} ${params.pathPrefix}.dm.allowFrom ${allowFromEntries === 1 ? "entry" : "entries"}` : "no allowFrom entries present, defaulting to pairing for safety"}).`);
|
|
52
|
-
return {
|
|
53
|
-
entry: {
|
|
54
|
-
...params.entry,
|
|
55
|
-
dm: nextDm
|
|
56
|
-
},
|
|
57
|
-
changed: true
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
const legacyConfigRules = [
|
|
61
|
-
...streamingAliasMigration.legacyConfigRules,
|
|
62
|
-
{
|
|
63
|
-
path: ["channels", "matrix"],
|
|
64
|
-
message: "channels.matrix.allowPrivateNetwork is legacy; use channels.matrix.network.dangerouslyAllowPrivateNetwork instead. Run \"openclaw doctor --fix\".",
|
|
65
|
-
match: (value) => hasLegacyFlatAllowPrivateNetworkAlias(isRecord(value) ? value : {})
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
path: [
|
|
69
|
-
"channels",
|
|
70
|
-
"matrix",
|
|
71
|
-
"accounts"
|
|
72
|
-
],
|
|
73
|
-
message: "channels.matrix.accounts.<id>.allowPrivateNetwork is legacy; use channels.matrix.accounts.<id>.network.dangerouslyAllowPrivateNetwork instead. Run \"openclaw doctor --fix\".",
|
|
74
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, (account) => hasLegacyFlatAllowPrivateNetworkAlias(isRecord(account) ? account : {}))
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
path: [
|
|
78
|
-
"channels",
|
|
79
|
-
"matrix",
|
|
80
|
-
"groups"
|
|
81
|
-
],
|
|
82
|
-
message: "channels.matrix.groups.<room>.allow is legacy; use channels.matrix.groups.<room>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
83
|
-
match: roomAllowMigration.hasLegacy
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
path: [
|
|
87
|
-
"channels",
|
|
88
|
-
"matrix",
|
|
89
|
-
"rooms"
|
|
90
|
-
],
|
|
91
|
-
message: "channels.matrix.rooms.<room>.allow is legacy; use channels.matrix.rooms.<room>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
92
|
-
match: roomAllowMigration.hasLegacy
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
path: [
|
|
96
|
-
"channels",
|
|
97
|
-
"matrix",
|
|
98
|
-
"accounts"
|
|
99
|
-
],
|
|
100
|
-
message: "channels.matrix.accounts.<id>.{groups,rooms}.<room>.allow is legacy; use channels.matrix.accounts.<id>.{groups,rooms}.<room>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
101
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, (account) => {
|
|
102
|
-
if (!isRecord(account)) return false;
|
|
103
|
-
return roomAllowMigration.hasLegacy(account.groups) || roomAllowMigration.hasLegacy(account.rooms);
|
|
104
|
-
})
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
path: ["channels", "matrix"],
|
|
108
|
-
message: "channels.matrix.dm.policy \"trusted\" is legacy; use \"allowlist\" (with allowFrom entries) or \"pairing\" instead. Run \"openclaw doctor --fix\".",
|
|
109
|
-
match: hasLegacyTrustedDmPolicy
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
path: [
|
|
113
|
-
"channels",
|
|
114
|
-
"matrix",
|
|
115
|
-
"accounts"
|
|
116
|
-
],
|
|
117
|
-
message: "channels.matrix.accounts.<id>.dm.policy \"trusted\" is legacy; use \"allowlist\" (with allowFrom entries) or \"pairing\" instead. Run \"openclaw doctor --fix\".",
|
|
118
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, hasLegacyTrustedDmPolicy)
|
|
119
|
-
}
|
|
120
|
-
];
|
|
121
|
-
function normalizeMatrixEntry(params) {
|
|
122
|
-
const network = migrateLegacyFlatAllowPrivateNetworkAlias(params);
|
|
123
|
-
const dmPolicy = migrateLegacyTrustedDmPolicy({
|
|
124
|
-
...params,
|
|
125
|
-
entry: network.entry
|
|
126
|
-
});
|
|
127
|
-
let entry = dmPolicy.entry;
|
|
128
|
-
let changed = network.changed || dmPolicy.changed;
|
|
129
|
-
for (const section of ["groups", "rooms"]) {
|
|
130
|
-
const roomMap = isRecord(entry[section]) ? entry[section] : null;
|
|
131
|
-
if (!roomMap) continue;
|
|
132
|
-
const normalized = roomAllowMigration.normalize({
|
|
133
|
-
entry: roomMap,
|
|
134
|
-
pathPrefix: `${params.pathPrefix}.${section}`,
|
|
135
|
-
changes: params.changes
|
|
136
|
-
});
|
|
137
|
-
if (normalized.changed) {
|
|
138
|
-
entry = Object.assign({}, entry, { [section]: normalized.entry });
|
|
139
|
-
changed = true;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
return {
|
|
143
|
-
entry,
|
|
144
|
-
changed
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function normalizeCompatibilityConfig({ cfg }) {
|
|
148
|
-
const changes = [];
|
|
149
|
-
const withoutJunkStreamMode = stripRetiredChannelKeys({
|
|
150
|
-
cfg,
|
|
151
|
-
channelId: "matrix",
|
|
152
|
-
keys: /* @__PURE__ */ new Set(["streamMode"]),
|
|
153
|
-
scope: "root-and-accounts",
|
|
154
|
-
onRemove: ({ key, pathPrefix }) => changes.push(`Removed ${pathPrefix}.${key} (never read by the Matrix runtime).`)
|
|
155
|
-
}).config;
|
|
156
|
-
return normalizeChannelConfigEntries({
|
|
157
|
-
cfg: streamingAliasMigration.normalizeChannelConfig({
|
|
158
|
-
cfg: withoutJunkStreamMode,
|
|
159
|
-
changes
|
|
160
|
-
}).config,
|
|
161
|
-
channelId: "matrix",
|
|
162
|
-
changes,
|
|
163
|
-
normalizeEntry: normalizeMatrixEntry
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
//#endregion
|
|
167
|
-
export { normalizeCompatibilityConfig as n, legacyConfigRules as t };
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { n as LogService } from "./logger-D0GCSDQq.js";
|
|
2
|
-
import { createChannelReplayGuard, resolvePersistentDedupePluginStateNamespace } from "openclaw/plugin-sdk/persistent-dedupe";
|
|
3
|
-
//#region extensions/matrix/src/matrix/monitor/inbound-dedupe.ts
|
|
4
|
-
const MATRIX_INBOUND_DEDUPE_PLUGIN_ID = "matrix";
|
|
5
|
-
const MATRIX_INBOUND_DEDUPE_NAMESPACE_PREFIX = "matrix.inbound-dedupe";
|
|
6
|
-
const MATRIX_INBOUND_DEDUPE_NAMESPACE = "global";
|
|
7
|
-
const MATRIX_INBOUND_DEDUPE_TTL_MS = 720 * 60 * 60 * 1e3;
|
|
8
|
-
const MATRIX_INBOUND_DEDUPE_MEMORY_MAX = 5e3;
|
|
9
|
-
const MATRIX_INBOUND_DEDUPE_STATE_MAX_ENTRIES = 2e4;
|
|
10
|
-
function resolveMatrixInboundDedupeAccountId(accountId) {
|
|
11
|
-
return accountId.trim() || "default";
|
|
12
|
-
}
|
|
13
|
-
function buildMatrixInboundDedupeEventKey(params) {
|
|
14
|
-
const roomId = params.roomId.trim();
|
|
15
|
-
const eventId = params.eventId.trim();
|
|
16
|
-
if (!roomId || !eventId) return null;
|
|
17
|
-
return `${resolveMatrixInboundDedupeAccountId(params.accountId)}\0${roomId}\0${eventId}`;
|
|
18
|
-
}
|
|
19
|
-
/** Persisted plugin-state namespace holding the inbound dedupe rows. */
|
|
20
|
-
function resolveMatrixInboundDedupeStateNamespace() {
|
|
21
|
-
return resolvePersistentDedupePluginStateNamespace({
|
|
22
|
-
namespace: MATRIX_INBOUND_DEDUPE_NAMESPACE,
|
|
23
|
-
namespacePrefix: MATRIX_INBOUND_DEDUPE_NAMESPACE_PREFIX
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function createMatrixInboundEventDeduper(params) {
|
|
27
|
-
const accountId = params.auth.accountId;
|
|
28
|
-
return createChannelReplayGuard({
|
|
29
|
-
dedupe: {
|
|
30
|
-
pluginId: MATRIX_INBOUND_DEDUPE_PLUGIN_ID,
|
|
31
|
-
namespacePrefix: MATRIX_INBOUND_DEDUPE_NAMESPACE_PREFIX,
|
|
32
|
-
ttlMs: MATRIX_INBOUND_DEDUPE_TTL_MS,
|
|
33
|
-
memoryMaxSize: MATRIX_INBOUND_DEDUPE_MEMORY_MAX,
|
|
34
|
-
stateMaxEntries: MATRIX_INBOUND_DEDUPE_STATE_MAX_ENTRIES,
|
|
35
|
-
...params.env ? { env: params.env } : {},
|
|
36
|
-
onDiskError: (err) => {
|
|
37
|
-
LogService.warn("MatrixInboundDedupe", "Matrix inbound dedupe persistence failed:", err);
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
buildReplayKey: (event) => buildMatrixInboundDedupeEventKey({
|
|
41
|
-
accountId,
|
|
42
|
-
...event
|
|
43
|
-
}),
|
|
44
|
-
namespace: () => MATRIX_INBOUND_DEDUPE_NAMESPACE
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { resolveMatrixInboundDedupeStateNamespace as a, createMatrixInboundEventDeduper as i, MATRIX_INBOUND_DEDUPE_TTL_MS as n, buildMatrixInboundDedupeEventKey as r, MATRIX_INBOUND_DEDUPE_STATE_MAX_ENTRIES as t };
|
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
import { n as formatMatrixErrorReason, t as formatMatrixErrorMessage } from "./errors-C47hvAF8.js";
|
|
2
|
-
import { A as writeMatrixRecoveryKeyStateForPath, E as readMatrixRecoveryKeyStateForPath, S as readLegacyMatrixRecoveryKeyFile, _ as migrateLegacyMatrixRecoveryKeyFilePathToStore } from "./storage-BvAkgzvT.js";
|
|
3
|
-
import { n as LogService } from "./logger-D0GCSDQq.js";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { decodeRecoveryKey } from "matrix-js-sdk/lib/crypto-api/recovery-key.js";
|
|
6
|
-
//#region extensions/matrix/src/matrix/sdk/recovery-key-store.ts
|
|
7
|
-
function isRepairableSecretStorageAccessError(err) {
|
|
8
|
-
const message = formatMatrixErrorReason(err);
|
|
9
|
-
if (!message) return false;
|
|
10
|
-
if (message.includes("getsecretstoragekey callback returned falsey")) return true;
|
|
11
|
-
if (message.includes("decrypting secret") && message.includes("bad mac")) return true;
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
var MatrixRecoveryKeyStore = class {
|
|
15
|
-
constructor(recoveryKeyPath) {
|
|
16
|
-
this.secretStorageKeyCache = /* @__PURE__ */ new Map();
|
|
17
|
-
this.stagedRecoveryKey = null;
|
|
18
|
-
this.stagedRecoveryKeyUsed = false;
|
|
19
|
-
this.stagedCacheKeyIds = /* @__PURE__ */ new Set();
|
|
20
|
-
this.recoveryKeyPath = recoveryKeyPath;
|
|
21
|
-
this.storageRootDir = recoveryKeyPath ? path.dirname(recoveryKeyPath) : void 0;
|
|
22
|
-
if (this.recoveryKeyPath) try {
|
|
23
|
-
migrateLegacyMatrixRecoveryKeyFilePathToStore(this.recoveryKeyPath);
|
|
24
|
-
} catch (err) {
|
|
25
|
-
this.legacyRecoveryKeyPathOnMigrationFailure = this.recoveryKeyPath;
|
|
26
|
-
LogService.warn("MatrixClientLite", "Failed to migrate Matrix recovery key state:", err);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
buildCryptoCallbacks() {
|
|
30
|
-
return {
|
|
31
|
-
getSecretStorageKey: async ({ keys }) => {
|
|
32
|
-
const requestedKeyIds = Object.keys(keys ?? {});
|
|
33
|
-
if (requestedKeyIds.length === 0) return null;
|
|
34
|
-
const staged = this.resolveStagedSecretStorageKey(requestedKeyIds);
|
|
35
|
-
if (staged) return staged;
|
|
36
|
-
for (const keyId of requestedKeyIds) {
|
|
37
|
-
const cached = this.secretStorageKeyCache.get(keyId);
|
|
38
|
-
if (cached) return [keyId, new Uint8Array(cached.key)];
|
|
39
|
-
}
|
|
40
|
-
const stored = this.loadStoredRecoveryKey();
|
|
41
|
-
if (!stored?.privateKeyBase64) return null;
|
|
42
|
-
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
43
|
-
if (privateKey.length === 0) return null;
|
|
44
|
-
if (stored.keyId && requestedKeyIds.includes(stored.keyId)) {
|
|
45
|
-
this.rememberSecretStorageKey(stored.keyId, privateKey, stored.keyInfo);
|
|
46
|
-
return [stored.keyId, privateKey];
|
|
47
|
-
}
|
|
48
|
-
const firstRequestedKeyId = requestedKeyIds[0];
|
|
49
|
-
if (!firstRequestedKeyId) return null;
|
|
50
|
-
this.rememberSecretStorageKey(firstRequestedKeyId, privateKey, stored.keyInfo);
|
|
51
|
-
return [firstRequestedKeyId, privateKey];
|
|
52
|
-
},
|
|
53
|
-
cacheSecretStorageKey: (keyId, keyInfo, key) => {
|
|
54
|
-
const privateKey = new Uint8Array(key);
|
|
55
|
-
const normalizedKeyInfo = {
|
|
56
|
-
passphrase: keyInfo?.passphrase,
|
|
57
|
-
name: typeof keyInfo?.name === "string" ? keyInfo.name : void 0
|
|
58
|
-
};
|
|
59
|
-
this.rememberSecretStorageKey(keyId, privateKey, normalizedKeyInfo);
|
|
60
|
-
const stored = this.loadStoredRecoveryKey();
|
|
61
|
-
this.saveRecoveryKeyToDisk({
|
|
62
|
-
keyId,
|
|
63
|
-
keyInfo: normalizedKeyInfo,
|
|
64
|
-
privateKey,
|
|
65
|
-
encodedPrivateKey: stored?.encodedPrivateKey
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
getRecoveryKeySummary() {
|
|
71
|
-
const stored = this.loadStoredRecoveryKey();
|
|
72
|
-
if (!stored) return null;
|
|
73
|
-
return {
|
|
74
|
-
encodedPrivateKey: stored.encodedPrivateKey,
|
|
75
|
-
keyId: stored.keyId,
|
|
76
|
-
createdAt: stored.createdAt
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
getSecretStorageKeyCandidate(keyId) {
|
|
80
|
-
const normalizedKeyId = keyId.trim();
|
|
81
|
-
if (!normalizedKeyId) return null;
|
|
82
|
-
const staged = this.resolveStagedSecretStorageKey([normalizedKeyId]);
|
|
83
|
-
if (staged) return staged[1];
|
|
84
|
-
const stored = this.loadStoredRecoveryKey();
|
|
85
|
-
if (!stored?.privateKeyBase64) return null;
|
|
86
|
-
const privateKey = new Uint8Array(Buffer.from(stored.privateKeyBase64, "base64"));
|
|
87
|
-
if (privateKey.length === 0) return null;
|
|
88
|
-
this.rememberSecretStorageKey(normalizedKeyId, privateKey, stored.keyInfo);
|
|
89
|
-
return privateKey;
|
|
90
|
-
}
|
|
91
|
-
resolveEncodedRecoveryKeyInput(params) {
|
|
92
|
-
const encodedPrivateKey = params.encodedPrivateKey.trim();
|
|
93
|
-
if (!encodedPrivateKey) throw new Error("Matrix recovery key is required");
|
|
94
|
-
let privateKey;
|
|
95
|
-
try {
|
|
96
|
-
privateKey = decodeRecoveryKey(encodedPrivateKey);
|
|
97
|
-
} catch (err) {
|
|
98
|
-
throw new Error(`Invalid Matrix recovery key: ${formatMatrixErrorMessage(err)}`, { cause: err });
|
|
99
|
-
}
|
|
100
|
-
const keyId = typeof params.keyId === "string" && params.keyId.trim() ? params.keyId.trim() : null;
|
|
101
|
-
return {
|
|
102
|
-
encodedPrivateKey,
|
|
103
|
-
privateKey,
|
|
104
|
-
keyId,
|
|
105
|
-
keyInfo: params.keyInfo ?? this.loadStoredRecoveryKey()?.keyInfo
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
storeEncodedRecoveryKey(params) {
|
|
109
|
-
const prepared = this.resolveEncodedRecoveryKeyInput(params);
|
|
110
|
-
this.saveRecoveryKeyToDisk({
|
|
111
|
-
keyId: prepared.keyId,
|
|
112
|
-
keyInfo: prepared.keyInfo,
|
|
113
|
-
privateKey: prepared.privateKey,
|
|
114
|
-
encodedPrivateKey: prepared.encodedPrivateKey
|
|
115
|
-
});
|
|
116
|
-
if (prepared.keyId) this.rememberSecretStorageKey(prepared.keyId, prepared.privateKey, prepared.keyInfo);
|
|
117
|
-
return this.getRecoveryKeySummary() ?? {};
|
|
118
|
-
}
|
|
119
|
-
stageEncodedRecoveryKey(params) {
|
|
120
|
-
const prepared = this.resolveEncodedRecoveryKeyInput(params);
|
|
121
|
-
this.discardStagedRecoveryKey();
|
|
122
|
-
this.stagedRecoveryKey = {
|
|
123
|
-
version: 1,
|
|
124
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
125
|
-
keyId: prepared.keyId,
|
|
126
|
-
encodedPrivateKey: prepared.encodedPrivateKey,
|
|
127
|
-
privateKeyBase64: Buffer.from(prepared.privateKey).toString("base64"),
|
|
128
|
-
keyInfo: prepared.keyInfo
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
hasStagedRecoveryKeyBeenUsed() {
|
|
132
|
-
return this.stagedRecoveryKeyUsed;
|
|
133
|
-
}
|
|
134
|
-
commitStagedRecoveryKey(params) {
|
|
135
|
-
if (!this.stagedRecoveryKey) return this.getRecoveryKeySummary();
|
|
136
|
-
const staged = this.stagedRecoveryKey;
|
|
137
|
-
const privateKey = new Uint8Array(Buffer.from(staged.privateKeyBase64, "base64"));
|
|
138
|
-
const keyId = typeof params?.keyId === "string" && params.keyId.trim() ? params.keyId.trim() : staged.keyId;
|
|
139
|
-
this.saveRecoveryKeyToDisk({
|
|
140
|
-
keyId,
|
|
141
|
-
keyInfo: params?.keyInfo ?? staged.keyInfo,
|
|
142
|
-
privateKey,
|
|
143
|
-
encodedPrivateKey: staged.encodedPrivateKey
|
|
144
|
-
});
|
|
145
|
-
this.clearStagedRecoveryKeyTracking();
|
|
146
|
-
return this.getRecoveryKeySummary();
|
|
147
|
-
}
|
|
148
|
-
discardStagedRecoveryKey() {
|
|
149
|
-
for (const keyId of this.stagedCacheKeyIds) this.secretStorageKeyCache.delete(keyId);
|
|
150
|
-
this.clearStagedRecoveryKeyTracking();
|
|
151
|
-
}
|
|
152
|
-
async bootstrapSecretStorageWithRecoveryKey(crypto, options = {}) {
|
|
153
|
-
let status = null;
|
|
154
|
-
const getSecretStorageStatus = crypto.getSecretStorageStatus;
|
|
155
|
-
if (typeof getSecretStorageStatus === "function") try {
|
|
156
|
-
status = await getSecretStorageStatus.call(crypto);
|
|
157
|
-
} catch (err) {
|
|
158
|
-
LogService.warn("MatrixClientLite", "Failed to read secret storage status:", err);
|
|
159
|
-
}
|
|
160
|
-
const hasDefaultSecretStorageKey = Boolean(status?.defaultKeyId);
|
|
161
|
-
const hasKnownInvalidSecrets = Object.values(status?.secretStorageKeyValidityMap ?? {}).some((valid) => !valid);
|
|
162
|
-
let generatedRecoveryKey = false;
|
|
163
|
-
const storedRecovery = this.loadStoredRecoveryKey();
|
|
164
|
-
const stagedRecovery = this.stagedRecoveryKey;
|
|
165
|
-
const sourceRecovery = options.forceNewRecoveryKey === true ? null : stagedRecovery ?? storedRecovery;
|
|
166
|
-
let recoveryKey = sourceRecovery ? {
|
|
167
|
-
keyInfo: sourceRecovery.keyInfo,
|
|
168
|
-
privateKey: new Uint8Array(Buffer.from(sourceRecovery.privateKeyBase64, "base64")),
|
|
169
|
-
encodedPrivateKey: sourceRecovery.encodedPrivateKey
|
|
170
|
-
} : null;
|
|
171
|
-
if (recoveryKey && status?.defaultKeyId) {
|
|
172
|
-
const defaultKeyId = status.defaultKeyId;
|
|
173
|
-
if (!stagedRecovery) {
|
|
174
|
-
this.rememberSecretStorageKey(defaultKeyId, recoveryKey.privateKey, recoveryKey.keyInfo);
|
|
175
|
-
if (storedRecovery && storedRecovery.keyId !== defaultKeyId) this.saveRecoveryKeyToDisk({
|
|
176
|
-
keyId: defaultKeyId,
|
|
177
|
-
keyInfo: recoveryKey.keyInfo,
|
|
178
|
-
privateKey: recoveryKey.privateKey,
|
|
179
|
-
encodedPrivateKey: recoveryKey.encodedPrivateKey
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
const ensureRecoveryKey = async () => {
|
|
184
|
-
if (recoveryKey) {
|
|
185
|
-
if (stagedRecovery) this.stagedRecoveryKeyUsed = true;
|
|
186
|
-
return recoveryKey;
|
|
187
|
-
}
|
|
188
|
-
if (typeof crypto.createRecoveryKeyFromPassphrase !== "function") throw new Error("Matrix crypto backend does not support recovery key generation (createRecoveryKeyFromPassphrase missing)");
|
|
189
|
-
recoveryKey = await crypto.createRecoveryKeyFromPassphrase();
|
|
190
|
-
this.saveRecoveryKeyToDisk(recoveryKey);
|
|
191
|
-
generatedRecoveryKey = true;
|
|
192
|
-
return recoveryKey;
|
|
193
|
-
};
|
|
194
|
-
const shouldRecreateSecretStorage = options.forceNewSecretStorage === true || !hasDefaultSecretStorageKey || !recoveryKey && status?.ready === false || hasKnownInvalidSecrets;
|
|
195
|
-
if (hasKnownInvalidSecrets) recoveryKey = null;
|
|
196
|
-
const secretStorageOptions = { setupNewKeyBackup: options.setupNewKeyBackup === true };
|
|
197
|
-
if (shouldRecreateSecretStorage) {
|
|
198
|
-
secretStorageOptions.setupNewSecretStorage = true;
|
|
199
|
-
secretStorageOptions.createSecretStorageKey = ensureRecoveryKey;
|
|
200
|
-
}
|
|
201
|
-
try {
|
|
202
|
-
await crypto.bootstrapSecretStorage(secretStorageOptions);
|
|
203
|
-
} catch (err) {
|
|
204
|
-
if (!(options.allowSecretStorageRecreateWithoutRecoveryKey === true && hasDefaultSecretStorageKey && isRepairableSecretStorageAccessError(err))) throw err;
|
|
205
|
-
recoveryKey = null;
|
|
206
|
-
LogService.warn("MatrixClientLite", "Secret storage exists on the server but local recovery material cannot unlock it; recreating secret storage during explicit bootstrap.");
|
|
207
|
-
await crypto.bootstrapSecretStorage({
|
|
208
|
-
setupNewSecretStorage: true,
|
|
209
|
-
setupNewKeyBackup: options.setupNewKeyBackup === true,
|
|
210
|
-
createSecretStorageKey: ensureRecoveryKey
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
if (generatedRecoveryKey && this.storageRootDir) LogService.warn("MatrixClientLite", "Generated Matrix recovery key and saved it to Matrix SQLite state. Keep the displayed recovery key secure.");
|
|
214
|
-
}
|
|
215
|
-
clearStagedRecoveryKeyTracking() {
|
|
216
|
-
this.stagedRecoveryKey = null;
|
|
217
|
-
this.stagedRecoveryKeyUsed = false;
|
|
218
|
-
this.stagedCacheKeyIds.clear();
|
|
219
|
-
}
|
|
220
|
-
resolveStagedSecretStorageKey(requestedKeyIds) {
|
|
221
|
-
const staged = this.stagedRecoveryKey;
|
|
222
|
-
if (!staged?.privateKeyBase64) return null;
|
|
223
|
-
const privateKey = new Uint8Array(Buffer.from(staged.privateKeyBase64, "base64"));
|
|
224
|
-
if (privateKey.length === 0) return null;
|
|
225
|
-
const keyId = staged.keyId && requestedKeyIds.includes(staged.keyId) ? staged.keyId : requestedKeyIds[0];
|
|
226
|
-
if (!keyId) return null;
|
|
227
|
-
this.rememberStagedSecretStorageKey(keyId, privateKey, staged.keyInfo);
|
|
228
|
-
this.stagedCacheKeyIds.add(keyId);
|
|
229
|
-
return [keyId, privateKey];
|
|
230
|
-
}
|
|
231
|
-
rememberStagedSecretStorageKey(keyId, key, keyInfo) {
|
|
232
|
-
this.stagedRecoveryKeyUsed = true;
|
|
233
|
-
this.rememberSecretStorageKey(keyId, key, keyInfo);
|
|
234
|
-
}
|
|
235
|
-
rememberSecretStorageKey(keyId, key, keyInfo) {
|
|
236
|
-
if (!keyId.trim()) return;
|
|
237
|
-
this.secretStorageKeyCache.set(keyId, {
|
|
238
|
-
key: new Uint8Array(key),
|
|
239
|
-
keyInfo
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
loadStoredRecoveryKey() {
|
|
243
|
-
if (!this.recoveryKeyPath) return null;
|
|
244
|
-
try {
|
|
245
|
-
const stored = readMatrixRecoveryKeyStateForPath(this.recoveryKeyPath);
|
|
246
|
-
if (stored) return stored;
|
|
247
|
-
} catch {}
|
|
248
|
-
if (this.legacyRecoveryKeyPathOnMigrationFailure) return readLegacyMatrixRecoveryKeyFile(this.legacyRecoveryKeyPathOnMigrationFailure);
|
|
249
|
-
return null;
|
|
250
|
-
}
|
|
251
|
-
saveRecoveryKeyToDisk(params) {
|
|
252
|
-
if (!this.recoveryKeyPath) return;
|
|
253
|
-
try {
|
|
254
|
-
const payload = {
|
|
255
|
-
version: 1,
|
|
256
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
257
|
-
keyId: typeof params.keyId === "string" ? params.keyId : null,
|
|
258
|
-
encodedPrivateKey: params.encodedPrivateKey,
|
|
259
|
-
privateKeyBase64: Buffer.from(params.privateKey).toString("base64"),
|
|
260
|
-
keyInfo: params.keyInfo ? {
|
|
261
|
-
passphrase: params.keyInfo.passphrase,
|
|
262
|
-
name: params.keyInfo.name
|
|
263
|
-
} : void 0
|
|
264
|
-
};
|
|
265
|
-
writeMatrixRecoveryKeyStateForPath({
|
|
266
|
-
recoveryKeyPath: this.recoveryKeyPath,
|
|
267
|
-
payload
|
|
268
|
-
});
|
|
269
|
-
} catch (err) {
|
|
270
|
-
LogService.warn("MatrixClientLite", "Failed to persist recovery key:", err);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
//#endregion
|
|
275
|
-
export { isRepairableSecretStorageAccessError as n, MatrixRecoveryKeyStore as t };
|