@openclaw/matrix 2026.9.5 → 2026.9.6
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/.setup/{account-selection-5koohRSQ.mjs → account-selection-BHkfU1eC.mjs} +10 -1
- package/dist/.setup/{accounts-BF5hyc-1.mjs → accounts-iThMol10.mjs} +38 -37
- package/dist/.setup/{approval-handler.runtime-CoZCYGUH.mjs → approval-handler.runtime-9W7R2ZMq.mjs} +6 -6
- package/dist/.setup/{approval-ids-CZOcdJ-5.mjs → approval-ids-j08q8LEG.mjs} +1 -1
- package/dist/.setup/{approval-reaction-auth-B51E4ZDa.mjs → approval-reaction-auth-DMVE7VSp.mjs} +7 -3
- package/dist/.setup/{channel-q6TBKEiG.mjs → channel-ConuJfxT.mjs} +43 -30
- package/dist/.setup/{channel.runtime-DcDBdxe6.mjs → channel.runtime-CnxR2JUK.mjs} +6 -6
- package/dist/.setup/{channel.setup-DZQ5rf9k.mjs → channel.setup-C6KvBV8l.mjs} +3 -3
- package/dist/.setup/{cli-Cx_cNaXN.mjs → cli-O196sg8g.mjs} +11 -11
- package/dist/.setup/{cli-metadata-DHU1H-Vr.mjs → cli-metadata-DFHQj5XR.mjs} +1 -1
- package/dist/.setup/{client-By2B3Wz4.mjs → client-C2yVkVdw.mjs} +2 -2
- package/dist/.setup/{client-DsJUnWlV.mjs → client-ChrXpxos.mjs} +84 -25
- package/dist/.setup/{client-bootstrap-DGX0f-4x.mjs → client-bootstrap-BSnUAoz1.mjs} +1 -1
- package/dist/.setup/{create-client-DQXAZjTw.mjs → create-client-CHxcron_.mjs} +13 -7
- package/dist/.setup/{credentials-CeRipapZ.mjs → credentials-BGKfiaJW.mjs} +1 -1
- package/dist/.setup/{credentials-read-Dp7BoEdm.mjs → credentials-read-Q5sHkkHv.mjs} +9 -1
- package/dist/.setup/{credentials-write.runtime-M_bUf3rL.mjs → credentials-write.runtime-DxbXh-pK.mjs} +1 -1
- package/dist/.setup/{crypto-runtime-9oxuU30y.mjs → crypto-runtime-D9qn_Pbj.mjs} +3 -3
- package/dist/.setup/{crypto-snapshot-doctor.runtime-DXpLbQ7y.mjs → crypto-snapshot-doctor.runtime-CMWa1d9Y.mjs} +2 -2
- package/dist/.setup/{directory-live-CatwztQc.mjs → directory-live-CxqkcYbT.mjs} +2 -2
- package/dist/.setup/{draft-stream-DIFZDNrb.mjs → draft-stream-y0Vq5f38.mjs} +21 -5
- package/dist/.setup/{encryption-guidance-DYEbeYj-.mjs → encryption-guidance-CMWXiBzJ.mjs} +1 -1
- package/dist/.setup/file-sync-store-CsalA4yI.mjs +213 -0
- package/dist/.setup/{http-client-BJjo-iw5.mjs → http-client-Bi6uKmzh.mjs} +17 -2
- package/dist/.setup/{idb-persistence-CIfFUjP3.mjs → idb-persistence-c8uxcofH.mjs} +1 -1
- package/dist/.setup/{messages-SW0NPYnR.mjs → messages-COuAcrz-.mjs} +10 -3
- package/dist/.setup/{monitor-DQfYX5rA.mjs → monitor-CzE3myC_.mjs} +127 -233
- package/dist/.setup/{outbound-DRWtSUe-.mjs → outbound-B508VPBM.mjs} +1 -1
- package/dist/.setup/probe.runtime-C-NMeYk2.mjs +2 -0
- package/dist/.setup/{profile-update-DPttQz3-.mjs → profile-update-DrblJttE.mjs} +1 -1
- package/dist/.setup/{reaction-events-CdAk_rh_.mjs → reaction-events-BvZmhjLC.mjs} +4 -3
- package/dist/.setup/{resolve-targets-drjgAdIe.mjs → resolve-targets-BLz748lX.mjs} +1 -1
- package/dist/.setup/{resolver.runtime-Ci6ddcPh.mjs → resolver.runtime-CuLQ2uHe.mjs} +1 -1
- package/dist/.setup/{room-info-DHd1j3qM.mjs → room-info-DTyP1k5g.mjs} +3 -3
- package/dist/.setup/{sdk-BkKE4ANj.mjs → sdk-rqFjgltR.mjs} +6 -225
- package/dist/.setup/{send-h0gZ_-qk.mjs → send-aVdC5NJO.mjs} +23 -26
- package/dist/.setup/{setup-bootstrap-BYgBD504.mjs → setup-bootstrap-A_WGFq1Y.mjs} +2 -2
- package/dist/.setup/{setup-core-BUcDAM7q.mjs → setup-core-D2hMbIi3.mjs} +3 -3
- package/dist/.setup/{setup-plugin-api-DoTm4v2q.mjs → setup-plugin-api-JiRgm8s6.mjs} +1 -1
- package/dist/.setup/{setup-surface-V_Q-enq-.mjs → setup-surface-BL3ha1l-.mjs} +6 -6
- package/dist/.setup/{startup-verification-Bq5qeEGn.mjs → startup-verification-Cp1Gf7pM.mjs} +7 -7
- package/dist/.setup/{storage-DJ-oUgmX.mjs → storage-BXaFc0S4.mjs} +75 -86
- package/dist/.setup/{storage-metadata-BQJjHC_i.mjs → storage-metadata-fHN6Df2m.mjs} +29 -45
- package/dist/.setup/{sync-cache-state-CFiZIPhA.mjs → sync-cache-state-BMtGMxU1.mjs} +30 -43
- package/dist/.setup/{thread-bindings-Hy96ujd3.mjs → thread-bindings-JlnLDfPM.mjs} +5 -5
- package/dist/.setup/{tool-actions.runtime-Dckttu43.mjs → tool-actions.runtime-REzYTNxm.mjs} +16 -8
- package/dist/.setup/{verification-CKqBZ9mI.mjs → verification-0o8MOW9T.mjs} +2 -2
- package/dist/api.js +5 -5
- 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 +6 -6
- package/dist/helper-api.js +2 -2
- package/dist/index.js +1 -1
- package/dist/plugin-entry.handlers.runtime.js +1 -1
- package/dist/runtime-api.js +1 -1
- package/dist/session-binding-contract-api.js +1 -1
- package/dist/setup-entry.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/markdown-it/node_modules/argparse/lib/argparse.js +18 -2
- package/node_modules/markdown-it/node_modules/argparse/package.json +1 -1
- package/node_modules/matrix-js-sdk/node_modules/@babel/runtime/package.json +1 -1
- package/node_modules/music-metadata/node_modules/file-type/package.json +3 -2
- package/node_modules/music-metadata/node_modules/file-type/readme.md +3 -0
- package/node_modules/music-metadata/node_modules/file-type/source/index.js +28 -1
- package/node_modules/music-metadata/node_modules/file-type/source/supported.js +2 -0
- package/node_modules/zod/README.md +2 -2
- package/node_modules/zod/compile.cjs +19 -0
- package/node_modules/zod/index.cjs +19 -0
- package/node_modules/zod/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +8 -7
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
- package/node_modules/zod/src/v4/classic/external.ts +2 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
- package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
- package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
- package/node_modules/zod/src/v4/core/api.ts +44 -28
- package/node_modules/zod/src/v4/core/checks.ts +62 -102
- package/node_modules/zod/src/v4/core/compile.ts +218 -93
- package/node_modules/zod/src/v4/core/core.ts +1 -3
- package/node_modules/zod/src/v4/core/doc.ts +6 -2
- package/node_modules/zod/src/v4/core/errors.ts +3 -6
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
- package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
- package/node_modules/zod/src/v4/core/parse.ts +37 -16
- package/node_modules/zod/src/v4/core/regexes.ts +14 -4
- package/node_modules/zod/src/v4/core/schemas.ts +296 -132
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
- package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
- package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
- package/node_modules/zod/src/v4/core/util.ts +218 -147
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/locales/ar.ts +2 -0
- package/node_modules/zod/src/v4/locales/az.ts +2 -0
- package/node_modules/zod/src/v4/locales/be.ts +2 -0
- package/node_modules/zod/src/v4/locales/bg.ts +2 -0
- package/node_modules/zod/src/v4/locales/bn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ca.ts +2 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
- package/node_modules/zod/src/v4/locales/cs.ts +2 -0
- package/node_modules/zod/src/v4/locales/da.ts +2 -0
- package/node_modules/zod/src/v4/locales/de.ts +2 -0
- package/node_modules/zod/src/v4/locales/el.ts +2 -0
- package/node_modules/zod/src/v4/locales/en.ts +2 -0
- package/node_modules/zod/src/v4/locales/eo.ts +2 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +2 -0
- package/node_modules/zod/src/v4/locales/fi.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr.ts +2 -0
- package/node_modules/zod/src/v4/locales/gu.ts +2 -0
- package/node_modules/zod/src/v4/locales/he.ts +2 -0
- package/node_modules/zod/src/v4/locales/hi.ts +2 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +2 -0
- package/node_modules/zod/src/v4/locales/hy.ts +2 -0
- package/node_modules/zod/src/v4/locales/id.ts +2 -0
- package/node_modules/zod/src/v4/locales/index.ts +1 -0
- package/node_modules/zod/src/v4/locales/is.ts +2 -0
- package/node_modules/zod/src/v4/locales/it.ts +2 -0
- package/node_modules/zod/src/v4/locales/ja.ts +2 -0
- package/node_modules/zod/src/v4/locales/ka.ts +2 -0
- package/node_modules/zod/src/v4/locales/km.ts +2 -0
- package/node_modules/zod/src/v4/locales/kn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ko.ts +2 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ms.ts +2 -0
- package/node_modules/zod/src/v4/locales/ne.ts +2 -0
- package/node_modules/zod/src/v4/locales/nl.ts +2 -0
- package/node_modules/zod/src/v4/locales/nn.ts +2 -0
- package/node_modules/zod/src/v4/locales/no.ts +2 -0
- package/node_modules/zod/src/v4/locales/ota.ts +2 -0
- package/node_modules/zod/src/v4/locales/pl.ts +2 -0
- package/node_modules/zod/src/v4/locales/ps.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt.ts +2 -0
- package/node_modules/zod/src/v4/locales/ro.ts +2 -0
- package/node_modules/zod/src/v4/locales/ru.ts +2 -0
- package/node_modules/zod/src/v4/locales/sk.ts +2 -0
- package/node_modules/zod/src/v4/locales/sl.ts +2 -0
- package/node_modules/zod/src/v4/locales/sv.ts +2 -0
- package/node_modules/zod/src/v4/locales/ta.ts +2 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +2 -0
- package/node_modules/zod/src/v4/locales/tk.ts +2 -0
- package/node_modules/zod/src/v4/locales/tr.ts +2 -0
- package/node_modules/zod/src/v4/locales/uk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ur.ts +2 -0
- package/node_modules/zod/src/v4/locales/uz.ts +2 -0
- package/node_modules/zod/src/v4/locales/vi.ts +2 -0
- package/node_modules/zod/src/v4/locales/yo.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
- package/node_modules/zod/src/v4/mini/external.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
- package/node_modules/zod/v3/ZodError.cjs +19 -0
- package/node_modules/zod/v3/errors.cjs +19 -0
- package/node_modules/zod/v3/external.cjs +19 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
- package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
- package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
- package/node_modules/zod/v3/helpers/util.cjs +19 -0
- package/node_modules/zod/v3/index.cjs +19 -0
- package/node_modules/zod/v3/standard-schema.cjs +19 -0
- package/node_modules/zod/v3/types.cjs +19 -0
- package/node_modules/zod/v4/classic/checks.cjs +19 -0
- package/node_modules/zod/v4/classic/coerce.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.cjs +19 -0
- package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/classic/errors.cjs +19 -0
- package/node_modules/zod/v4/classic/external.cjs +22 -1
- package/node_modules/zod/v4/classic/external.d.cts +1 -1
- package/node_modules/zod/v4/classic/external.d.ts +1 -1
- package/node_modules/zod/v4/classic/external.js +1 -1
- package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
- package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
- package/node_modules/zod/v4/classic/in-out.cjs +19 -0
- package/node_modules/zod/v4/classic/index.cjs +19 -0
- package/node_modules/zod/v4/classic/iso.cjs +19 -0
- package/node_modules/zod/v4/classic/parse.cjs +19 -0
- package/node_modules/zod/v4/classic/schemas.cjs +100 -35
- package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
- package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
- package/node_modules/zod/v4/classic/schemas.js +77 -33
- package/node_modules/zod/v4/core/api.cjs +45 -22
- package/node_modules/zod/v4/core/api.d.cts +12 -6
- package/node_modules/zod/v4/core/api.d.ts +12 -6
- package/node_modules/zod/v4/core/api.js +25 -22
- package/node_modules/zod/v4/core/checks.cjs +51 -97
- package/node_modules/zod/v4/core/checks.d.cts +17 -1
- package/node_modules/zod/v4/core/checks.d.ts +17 -1
- package/node_modules/zod/v4/core/checks.js +31 -96
- package/node_modules/zod/v4/core/compile.cjs +173 -78
- package/node_modules/zod/v4/core/compile.d.cts +18 -4
- package/node_modules/zod/v4/core/compile.d.ts +18 -4
- package/node_modules/zod/v4/core/compile.js +154 -79
- package/node_modules/zod/v4/core/core.cjs +20 -1
- package/node_modules/zod/v4/core/core.js +1 -1
- package/node_modules/zod/v4/core/doc.cjs +26 -2
- package/node_modules/zod/v4/core/doc.js +7 -2
- package/node_modules/zod/v4/core/errors.cjs +21 -5
- package/node_modules/zod/v4/core/errors.js +2 -5
- package/node_modules/zod/v4/core/index.cjs +19 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
- package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/memoizer.cjs +111 -23
- package/node_modules/zod/v4/core/memoizer.js +69 -23
- package/node_modules/zod/v4/core/parse.cjs +56 -16
- package/node_modules/zod/v4/core/parse.js +37 -16
- package/node_modules/zod/v4/core/regexes.cjs +31 -6
- package/node_modules/zod/v4/core/regexes.d.cts +3 -0
- package/node_modules/zod/v4/core/regexes.d.ts +3 -0
- package/node_modules/zod/v4/core/regexes.js +10 -4
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/schemas.cjs +302 -114
- package/node_modules/zod/v4/core/schemas.d.cts +28 -8
- package/node_modules/zod/v4/core/schemas.d.ts +28 -8
- package/node_modules/zod/v4/core/schemas.js +279 -113
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
- package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.js +7 -6
- package/node_modules/zod/v4/core/util.cjs +177 -143
- package/node_modules/zod/v4/core/util.d.cts +25 -4
- package/node_modules/zod/v4/core/util.d.ts +25 -4
- package/node_modules/zod/v4/core/util.js +156 -143
- package/node_modules/zod/v4/core/versions.cjs +21 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +19 -0
- package/node_modules/zod/v4/index.cjs +19 -0
- package/node_modules/zod/v4/locales/ar.cjs +2 -0
- package/node_modules/zod/v4/locales/ar.js +2 -0
- package/node_modules/zod/v4/locales/az.cjs +2 -0
- package/node_modules/zod/v4/locales/az.js +2 -0
- package/node_modules/zod/v4/locales/be.cjs +2 -0
- package/node_modules/zod/v4/locales/be.js +2 -0
- package/node_modules/zod/v4/locales/bg.cjs +2 -0
- package/node_modules/zod/v4/locales/bg.js +2 -0
- package/node_modules/zod/v4/locales/bn.cjs +2 -0
- package/node_modules/zod/v4/locales/bn.js +2 -0
- package/node_modules/zod/v4/locales/ca.cjs +2 -0
- package/node_modules/zod/v4/locales/ca.js +2 -0
- package/node_modules/zod/v4/locales/ckb.cjs +2 -0
- package/node_modules/zod/v4/locales/ckb.js +2 -0
- package/node_modules/zod/v4/locales/cs.cjs +2 -0
- package/node_modules/zod/v4/locales/cs.js +2 -0
- package/node_modules/zod/v4/locales/da.cjs +2 -0
- package/node_modules/zod/v4/locales/da.js +2 -0
- package/node_modules/zod/v4/locales/de.cjs +2 -0
- package/node_modules/zod/v4/locales/de.js +2 -0
- package/node_modules/zod/v4/locales/el.cjs +2 -0
- package/node_modules/zod/v4/locales/el.js +2 -0
- package/node_modules/zod/v4/locales/en.cjs +2 -0
- package/node_modules/zod/v4/locales/en.js +2 -0
- package/node_modules/zod/v4/locales/eo.cjs +2 -0
- package/node_modules/zod/v4/locales/eo.js +2 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +2 -0
- package/node_modules/zod/v4/locales/fa.js +2 -0
- package/node_modules/zod/v4/locales/fi.cjs +2 -0
- package/node_modules/zod/v4/locales/fi.js +2 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
- package/node_modules/zod/v4/locales/fr-CA.js +2 -0
- package/node_modules/zod/v4/locales/fr.cjs +2 -0
- package/node_modules/zod/v4/locales/fr.js +2 -0
- package/node_modules/zod/v4/locales/gu.cjs +2 -0
- package/node_modules/zod/v4/locales/gu.js +2 -0
- package/node_modules/zod/v4/locales/he.cjs +2 -0
- package/node_modules/zod/v4/locales/he.js +2 -0
- package/node_modules/zod/v4/locales/hi.cjs +2 -0
- package/node_modules/zod/v4/locales/hi.js +2 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +2 -0
- package/node_modules/zod/v4/locales/hu.js +2 -0
- package/node_modules/zod/v4/locales/hy.cjs +2 -0
- package/node_modules/zod/v4/locales/hy.js +2 -0
- package/node_modules/zod/v4/locales/id.cjs +2 -0
- package/node_modules/zod/v4/locales/id.js +2 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -1
- package/node_modules/zod/v4/locales/index.d.cts +1 -0
- package/node_modules/zod/v4/locales/index.d.ts +1 -0
- package/node_modules/zod/v4/locales/index.js +1 -0
- package/node_modules/zod/v4/locales/is.cjs +2 -0
- package/node_modules/zod/v4/locales/is.js +2 -0
- package/node_modules/zod/v4/locales/it.cjs +2 -0
- package/node_modules/zod/v4/locales/it.js +2 -0
- package/node_modules/zod/v4/locales/ja.cjs +2 -0
- package/node_modules/zod/v4/locales/ja.js +2 -0
- package/node_modules/zod/v4/locales/ka.cjs +2 -0
- package/node_modules/zod/v4/locales/ka.js +2 -0
- package/node_modules/zod/v4/locales/km.cjs +2 -0
- package/node_modules/zod/v4/locales/km.js +2 -0
- package/node_modules/zod/v4/locales/kn.cjs +2 -0
- package/node_modules/zod/v4/locales/kn.js +2 -0
- package/node_modules/zod/v4/locales/ko.cjs +2 -0
- package/node_modules/zod/v4/locales/ko.js +2 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +2 -0
- package/node_modules/zod/v4/locales/mk.js +2 -0
- package/node_modules/zod/v4/locales/ms.cjs +2 -0
- package/node_modules/zod/v4/locales/ms.js +2 -0
- package/node_modules/zod/v4/locales/ne.cjs +2 -0
- package/node_modules/zod/v4/locales/ne.js +2 -0
- package/node_modules/zod/v4/locales/nl.cjs +2 -0
- package/node_modules/zod/v4/locales/nl.js +2 -0
- package/node_modules/zod/v4/locales/nn.cjs +2 -0
- package/node_modules/zod/v4/locales/nn.js +2 -0
- package/node_modules/zod/v4/locales/no.cjs +2 -0
- package/node_modules/zod/v4/locales/no.js +2 -0
- package/node_modules/zod/v4/locales/ota.cjs +2 -0
- package/node_modules/zod/v4/locales/ota.js +2 -0
- package/node_modules/zod/v4/locales/pl.cjs +2 -0
- package/node_modules/zod/v4/locales/pl.js +2 -0
- package/node_modules/zod/v4/locales/ps.cjs +2 -0
- package/node_modules/zod/v4/locales/ps.js +2 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
- package/node_modules/zod/v4/locales/pt-BR.js +2 -0
- package/node_modules/zod/v4/locales/pt.cjs +2 -0
- package/node_modules/zod/v4/locales/pt.js +2 -0
- package/node_modules/zod/v4/locales/ro.cjs +2 -0
- package/node_modules/zod/v4/locales/ro.js +2 -0
- package/node_modules/zod/v4/locales/ru.cjs +2 -0
- package/node_modules/zod/v4/locales/ru.js +2 -0
- package/node_modules/zod/v4/locales/sk.cjs +2 -0
- package/node_modules/zod/v4/locales/sk.js +2 -0
- package/node_modules/zod/v4/locales/sl.cjs +2 -0
- package/node_modules/zod/v4/locales/sl.js +2 -0
- package/node_modules/zod/v4/locales/sv.cjs +2 -0
- package/node_modules/zod/v4/locales/sv.js +2 -0
- package/node_modules/zod/v4/locales/ta.cjs +2 -0
- package/node_modules/zod/v4/locales/ta.js +2 -0
- package/node_modules/zod/v4/locales/tg.cjs +144 -0
- package/node_modules/zod/v4/locales/tg.d.cts +5 -0
- package/node_modules/zod/v4/locales/tg.d.ts +4 -0
- package/node_modules/zod/v4/locales/tg.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +2 -0
- package/node_modules/zod/v4/locales/th.js +2 -0
- package/node_modules/zod/v4/locales/tk.cjs +2 -0
- package/node_modules/zod/v4/locales/tk.js +2 -0
- package/node_modules/zod/v4/locales/tr.cjs +2 -0
- package/node_modules/zod/v4/locales/tr.js +2 -0
- package/node_modules/zod/v4/locales/uk.cjs +2 -0
- package/node_modules/zod/v4/locales/uk.js +2 -0
- package/node_modules/zod/v4/locales/ur.cjs +2 -0
- package/node_modules/zod/v4/locales/ur.js +2 -0
- package/node_modules/zod/v4/locales/uz.cjs +2 -0
- package/node_modules/zod/v4/locales/uz.js +2 -0
- package/node_modules/zod/v4/locales/vi.cjs +2 -0
- package/node_modules/zod/v4/locales/vi.js +2 -0
- package/node_modules/zod/v4/locales/yo.cjs +2 -0
- package/node_modules/zod/v4/locales/yo.js +2 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-CN.js +2 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-TW.js +2 -0
- package/node_modules/zod/v4/mini/checks.cjs +19 -0
- package/node_modules/zod/v4/mini/coerce.cjs +19 -0
- package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/mini/external.cjs +22 -1
- package/node_modules/zod/v4/mini/external.d.cts +1 -1
- package/node_modules/zod/v4/mini/external.d.ts +1 -1
- package/node_modules/zod/v4/mini/external.js +1 -1
- package/node_modules/zod/v4/mini/in-out.cjs +19 -0
- package/node_modules/zod/v4/mini/index.cjs +19 -0
- package/node_modules/zod/v4/mini/iso.cjs +19 -0
- package/node_modules/zod/v4/mini/parse.cjs +19 -0
- package/node_modules/zod/v4/mini/schemas.cjs +44 -8
- package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
- package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
- package/node_modules/zod/v4/mini/schemas.js +21 -6
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/package.json +7 -6
- package/dist/.setup/probe.runtime-qPRZE3Yf.mjs +0 -2
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
|
|
2
2
|
import { n as getMatrixRuntimeLifecycle } from "./runtime-1kn1P6io.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { c as resolveGlobalMatrixEnvConfig, d as resolveMatrixAccountStringValues, i as requiresExplicitMatrixDefaultAccount, s as resolveMatrixDefaultOrOnlyAccountId, u as resolveScopedMatrixEnvConfig } from "./account-selection-BHkfU1eC.mjs";
|
|
4
4
|
import { t as getMatrixScopedEnvVarNames } from "./env-vars-dGqak9dN.mjs";
|
|
5
5
|
import { o as resolveMatrixBaseConfig, r as listNormalizedMatrixAccountIds, t as findMatrixAccountConfig } from "./account-config-CRsKoMqJ.mjs";
|
|
6
6
|
import { t as resolveMatrixConfigFieldPath } from "./config-paths-CnREYb1Y.mjs";
|
|
7
7
|
import { t as resolveValidatedMatrixHomeserverUrl } from "./url-validation-GRHde6lq.mjs";
|
|
8
|
-
import { i as repairCurrentTokenStorageMetaDeviceId } from "./storage-
|
|
8
|
+
import { i as repairCurrentTokenStorageMetaDeviceId } from "./storage-BXaFc0S4.mjs";
|
|
9
9
|
import { createLazyRuntimeMethod, createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
10
|
+
import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
10
11
|
import { DEFAULT_ACCOUNT_ID, normalizeAccountId, normalizeOptionalAccountId } from "openclaw/plugin-sdk/account-id";
|
|
11
12
|
import { coerceSecretRef, isBuiltInDefaultSecretProviderRef, normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
12
13
|
import { formatErrorMessage, toErrorObject, toStringifiedError } from "openclaw/plugin-sdk/error-runtime";
|
|
@@ -17,25 +18,15 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
17
18
|
import { retryAsync } from "openclaw/plugin-sdk/retry-runtime";
|
|
18
19
|
import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
|
|
19
20
|
import { createDeferred } from "openclaw/plugin-sdk/extension-shared";
|
|
20
|
-
//#region extensions/matrix/src/matrix/client/
|
|
21
|
-
const loadMatrixAuthClientDeps = createLazyRuntimeModule(() => Promise.all([import("./sdk-
|
|
21
|
+
//#region extensions/matrix/src/matrix/client/auth-request.ts
|
|
22
|
+
const loadMatrixAuthClientDeps = createLazyRuntimeModule(() => Promise.all([import("./sdk-rqFjgltR.mjs").then((n) => n.t), import("./logging-rgm8ep9H.mjs").then((n) => n.n)]).then(([sdkModule, loggingModule]) => ({
|
|
22
23
|
MatrixClient: sdkModule.MatrixClient,
|
|
23
24
|
ensureMatrixSdkLoggingConfigured: loggingModule.ensureMatrixSdkLoggingConfigured
|
|
24
25
|
})));
|
|
25
26
|
const MATRIX_AUTH_REQUEST_RETRY_RE = /\b(fetch failed|econnreset|econnrefused|enotfound|etimedout|ehostunreach|enetunreach|eai_again|und_err_|socket hang up|network|headers timeout|body timeout|connect timeout)\b/i;
|
|
26
|
-
const loadMatrixCredentialsReadDeps = createLazyRuntimeModule(() => import("./credentials-read-Dp7BoEdm.mjs").then((n) => n.r));
|
|
27
|
-
const loadMatrixCredentialsWriteRuntime = createLazyRuntimeModule(() => import("./credentials-write.runtime-M_bUf3rL.mjs"));
|
|
28
|
-
const loadMatrixSecretInputDeps = createLazyRuntimeModule(() => import("./config-secret-input.runtime-CwsP3--c.mjs"));
|
|
29
27
|
function shouldRetryMatrixAuthRequest(err) {
|
|
30
28
|
return MATRIX_AUTH_REQUEST_RETRY_RE.test(formatErrorMessage(err));
|
|
31
29
|
}
|
|
32
|
-
function isAbortSignalTriggered(signal) {
|
|
33
|
-
return signal?.aborted === true;
|
|
34
|
-
}
|
|
35
|
-
function credentialsMatchBackfillAuthLineage(params) {
|
|
36
|
-
if (!params.stored) return true;
|
|
37
|
-
return params.stored.homeserver === params.auth.homeserver && params.stored.userId === params.auth.userId && params.stored.accessToken === params.auth.accessToken;
|
|
38
|
-
}
|
|
39
30
|
async function retryMatrixAuthRequest(label, run, signal) {
|
|
40
31
|
return await retryAsync(run, {
|
|
41
32
|
attempts: 3,
|
|
@@ -47,15 +38,68 @@ async function retryMatrixAuthRequest(label, run, signal) {
|
|
|
47
38
|
sleep: (ms) => sleepWithAbort(ms, signal)
|
|
48
39
|
});
|
|
49
40
|
}
|
|
41
|
+
var MatrixWhoamiCleanupError = class extends AggregateError {};
|
|
50
42
|
async function fetchMatrixWhoamiIdentity(params) {
|
|
51
43
|
const { MatrixClient, ensureMatrixSdkLoggingConfigured } = await loadMatrixAuthClientDeps();
|
|
44
|
+
params.signal?.throwIfAborted();
|
|
52
45
|
ensureMatrixSdkLoggingConfigured();
|
|
53
46
|
const tempClient = new MatrixClient(params.homeserver, params.accessToken, {
|
|
54
47
|
userId: params.userId,
|
|
55
48
|
ssrfPolicy: params.ssrfPolicy,
|
|
56
49
|
dispatcherPolicy: params.dispatcherPolicy
|
|
57
50
|
});
|
|
58
|
-
|
|
51
|
+
let stopping;
|
|
52
|
+
const stop = () => stopping ??= tempClient.stopWithoutPersist();
|
|
53
|
+
const onAbort = () => {
|
|
54
|
+
stop().catch(() => {});
|
|
55
|
+
};
|
|
56
|
+
params.signal?.addEventListener("abort", onAbort, { once: true });
|
|
57
|
+
let outcome;
|
|
58
|
+
let cleanupFailure;
|
|
59
|
+
try {
|
|
60
|
+
params.signal?.throwIfAborted();
|
|
61
|
+
outcome = {
|
|
62
|
+
ok: true,
|
|
63
|
+
value: await retryMatrixAuthRequest("matrix auth whoami", async () => {
|
|
64
|
+
const identity = await tempClient.doRequest("GET", "/_matrix/client/v3/account/whoami");
|
|
65
|
+
if (!isRecord(identity)) throw new Error("Matrix whoami returned an invalid identity");
|
|
66
|
+
const userId = identity.user_id ?? void 0;
|
|
67
|
+
const deviceId = identity.device_id ?? void 0;
|
|
68
|
+
if (userId !== void 0 && typeof userId !== "string" || deviceId !== void 0 && typeof deviceId !== "string") throw new Error("Matrix whoami returned an invalid identity");
|
|
69
|
+
return {
|
|
70
|
+
user_id: userId,
|
|
71
|
+
device_id: deviceId
|
|
72
|
+
};
|
|
73
|
+
}, params.signal)
|
|
74
|
+
};
|
|
75
|
+
} catch (error) {
|
|
76
|
+
outcome = {
|
|
77
|
+
ok: false,
|
|
78
|
+
error
|
|
79
|
+
};
|
|
80
|
+
} finally {
|
|
81
|
+
params.signal?.removeEventListener("abort", onAbort);
|
|
82
|
+
try {
|
|
83
|
+
await stop();
|
|
84
|
+
} catch (error) {
|
|
85
|
+
cleanupFailure = { error };
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (cleanupFailure) throw new MatrixWhoamiCleanupError(outcome.ok ? [cleanupFailure.error] : [outcome.error, cleanupFailure.error], "Matrix identity request cleanup failed", { cause: outcome.ok ? cleanupFailure.error : outcome.error });
|
|
89
|
+
if (!outcome.ok) throw outcome.error;
|
|
90
|
+
return outcome.value;
|
|
91
|
+
}
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region extensions/matrix/src/matrix/client/config.ts
|
|
94
|
+
const loadMatrixCredentialsReadDeps = createLazyRuntimeModule(() => import("./credentials-read-Q5sHkkHv.mjs").then((n) => n.i));
|
|
95
|
+
const loadMatrixCredentialsWriteRuntime = createLazyRuntimeModule(() => import("./credentials-write.runtime-DxbXh-pK.mjs"));
|
|
96
|
+
const loadMatrixSecretInputDeps = createLazyRuntimeModule(() => import("./config-secret-input.runtime-CwsP3--c.mjs"));
|
|
97
|
+
function isAbortSignalTriggered(signal) {
|
|
98
|
+
return signal?.aborted === true;
|
|
99
|
+
}
|
|
100
|
+
function credentialsMatchBackfillAuthLineage(params) {
|
|
101
|
+
if (!params.stored) return true;
|
|
102
|
+
return params.stored.homeserver === params.auth.homeserver && params.stored.userId === params.auth.userId && params.stored.accessToken === params.auth.accessToken;
|
|
59
103
|
}
|
|
60
104
|
const MATRIX_CONFIG_STRING_FIELDS = [
|
|
61
105
|
"homeserver",
|
|
@@ -383,7 +427,7 @@ async function backfillMatrixAuthDeviceIdAfterStartup(params) {
|
|
|
383
427
|
signal: params.abortSignal
|
|
384
428
|
});
|
|
385
429
|
} catch (err) {
|
|
386
|
-
if (isAbortSignalTriggered(params.abortSignal)) return;
|
|
430
|
+
if (isAbortSignalTriggered(params.abortSignal) && !(err instanceof MatrixWhoamiCleanupError)) return;
|
|
387
431
|
throw err;
|
|
388
432
|
}
|
|
389
433
|
const deviceId = whoami.device_id?.trim();
|
|
@@ -396,7 +440,7 @@ async function backfillMatrixAuthDeviceIdAfterStartup(params) {
|
|
|
396
440
|
auth: params.auth
|
|
397
441
|
})) return;
|
|
398
442
|
if (isAbortSignalTriggered(params.abortSignal)) return;
|
|
399
|
-
if (!repairCurrentTokenStorageMetaDeviceId({
|
|
443
|
+
if (!await repairCurrentTokenStorageMetaDeviceId({
|
|
400
444
|
homeserver: params.auth.homeserver,
|
|
401
445
|
userId: params.auth.userId,
|
|
402
446
|
accessToken: params.auth.accessToken,
|
|
@@ -405,7 +449,13 @@ async function backfillMatrixAuthDeviceIdAfterStartup(params) {
|
|
|
405
449
|
env: params.env
|
|
406
450
|
})) throw new Error("Matrix deviceId backfill failed to repair current-token storage metadata");
|
|
407
451
|
if (isAbortSignalTriggered(params.abortSignal)) return;
|
|
408
|
-
|
|
452
|
+
const credentialsWriter = await loadMatrixCredentialsWriteRuntime();
|
|
453
|
+
const currentCredentials = await loadMatrixCredentialsAsync(env, params.auth.accountId);
|
|
454
|
+
if (isAbortSignalTriggered(params.abortSignal) || !credentialsMatchBackfillAuthLineage({
|
|
455
|
+
stored: currentCredentials,
|
|
456
|
+
auth: params.auth
|
|
457
|
+
})) return;
|
|
458
|
+
return await credentialsWriter.saveBackfilledMatrixDeviceId({
|
|
409
459
|
homeserver: params.auth.homeserver,
|
|
410
460
|
userId: params.auth.userId,
|
|
411
461
|
accessToken: params.auth.accessToken,
|
|
@@ -414,17 +464,25 @@ async function backfillMatrixAuthDeviceIdAfterStartup(params) {
|
|
|
414
464
|
}
|
|
415
465
|
//#endregion
|
|
416
466
|
//#region extensions/matrix/src/matrix/monitor/task-runner.ts
|
|
417
|
-
const
|
|
467
|
+
const monitorTaskContext = new AsyncLocalStorage();
|
|
418
468
|
function getMatrixMonitorTaskSignal() {
|
|
419
|
-
|
|
469
|
+
const context = monitorTaskContext.getStore();
|
|
470
|
+
return context?.settled ? context.runner.shutdownSignal : context?.signal;
|
|
420
471
|
}
|
|
421
472
|
function createMatrixMonitorTaskRunner(params) {
|
|
422
473
|
const inFlight = /* @__PURE__ */ new Map();
|
|
474
|
+
const shutdownController = new AbortController();
|
|
475
|
+
const runner = { shutdownSignal: shutdownController.signal };
|
|
423
476
|
let closed = false;
|
|
424
477
|
const runDetachedTask = (label, task) => {
|
|
425
478
|
if (closed) return Promise.resolve();
|
|
426
479
|
const controller = new AbortController();
|
|
427
|
-
const
|
|
480
|
+
const context = {
|
|
481
|
+
runner,
|
|
482
|
+
settled: false,
|
|
483
|
+
signal: AbortSignal.any([controller.signal, runner.shutdownSignal])
|
|
484
|
+
};
|
|
485
|
+
const trackedTask = monitorTaskContext.run(context, () => Promise.resolve().then(task)).catch((error) => {
|
|
428
486
|
const message = String(error);
|
|
429
487
|
params.logVerboseMessage(`matrix: ${label} failed (${message})`);
|
|
430
488
|
params.logger.warn("matrix background task failed", {
|
|
@@ -432,7 +490,7 @@ function createMatrixMonitorTaskRunner(params) {
|
|
|
432
490
|
error: message
|
|
433
491
|
});
|
|
434
492
|
}).finally(() => {
|
|
435
|
-
|
|
493
|
+
context.settled = true;
|
|
436
494
|
inFlight.delete(trackedTask);
|
|
437
495
|
});
|
|
438
496
|
inFlight.set(trackedTask, controller);
|
|
@@ -444,6 +502,7 @@ function createMatrixMonitorTaskRunner(params) {
|
|
|
444
502
|
return {
|
|
445
503
|
close: () => {
|
|
446
504
|
closed = true;
|
|
505
|
+
shutdownController.abort();
|
|
447
506
|
for (const controller of inFlight.values()) controller.abort();
|
|
448
507
|
},
|
|
449
508
|
runDetachedTask,
|
|
@@ -483,7 +542,7 @@ async function awaitMatrixStartupWithAbort(promise, abortSignal) {
|
|
|
483
542
|
}
|
|
484
543
|
//#endregion
|
|
485
544
|
//#region extensions/matrix/src/matrix/client/shared.ts
|
|
486
|
-
const loadMatrixCreateClientDeps = createLazyRuntimeModule(() => import("./create-client-
|
|
545
|
+
const loadMatrixCreateClientDeps = createLazyRuntimeModule(() => import("./create-client-CHxcron_.mjs").then((runtime) => ({ createMatrixClient: runtime.createMatrixClient })));
|
|
487
546
|
const MATRIX_RETIREMENT_DRAIN_TIMEOUT_MS = 5e3;
|
|
488
547
|
const sharedClientStates = /* @__PURE__ */ new Map();
|
|
489
548
|
const sharedClientPromises = /* @__PURE__ */ new Map();
|
|
@@ -857,7 +916,7 @@ var client_exports = /* @__PURE__ */ __exportAll({
|
|
|
857
916
|
createMatrixClient: () => createMatrixClient,
|
|
858
917
|
resolveMatrixAuthContext: () => resolveMatrixAuthContext
|
|
859
918
|
});
|
|
860
|
-
const loadMatrixClientRuntime = createLazyRuntimeModule(() => import("./create-client-
|
|
919
|
+
const loadMatrixClientRuntime = createLazyRuntimeModule(() => import("./create-client-CHxcron_.mjs"));
|
|
861
920
|
const createMatrixClient = createLazyRuntimeMethod(loadMatrixClientRuntime, (runtime) => runtime.createMatrixClient);
|
|
862
921
|
//#endregion
|
|
863
|
-
export { createMatrixStartupAbortError as a, createMatrixMonitorTaskRunner as c,
|
|
922
|
+
export { createMatrixStartupAbortError as a, createMatrixMonitorTaskRunner as c, resolveMatrixAuth as d, resolveMatrixAuthContext as f, awaitMatrixStartupWithAbort as i, getMatrixMonitorTaskSignal as l, createMatrixClient as n, isMatrixStartupAbortError as o, acquireSharedMatrixClient as r, throwIfMatrixStartupAborted as s, client_exports as t, backfillMatrixAuthDeviceIdAfterStartup as u };
|
|
@@ -2,7 +2,7 @@ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
|
2
2
|
import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
|
|
3
3
|
import { captureChannelReadAuthority } from "openclaw/plugin-sdk/fetch-runtime";
|
|
4
4
|
//#region extensions/matrix/src/matrix/client-bootstrap.ts
|
|
5
|
-
const loadMatrixSharedClientRuntimeDeps = createLazyRuntimeModule(() => import("./client-
|
|
5
|
+
const loadMatrixSharedClientRuntimeDeps = createLazyRuntimeModule(() => import("./client-ChrXpxos.mjs").then((n) => n.t).then((clientModule) => ({
|
|
6
6
|
acquireSharedMatrixClient: clientModule.acquireSharedMatrixClient,
|
|
7
7
|
resolveMatrixAuthContext: clientModule.resolveMatrixAuthContext
|
|
8
8
|
})));
|
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
|
|
2
2
|
import { t as resolveValidatedMatrixHomeserverUrl } from "./url-validation-GRHde6lq.mjs";
|
|
3
|
-
import { n as maybeMigrateLegacyStorage, o as resolveMatrixStoragePaths, s as writeStorageMeta } from "./storage-
|
|
4
|
-
import "./client-
|
|
3
|
+
import { n as maybeMigrateLegacyStorage, o as resolveMatrixStoragePaths, s as writeStorageMeta } from "./storage-BXaFc0S4.mjs";
|
|
4
|
+
import "./client-ChrXpxos.mjs";
|
|
5
5
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
6
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { ssrfPolicyFromDangerouslyAllowPrivateNetwork } from "openclaw/plugin-sdk/ssrf-runtime";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
//#region extensions/matrix/src/matrix/client/create-client.ts
|
|
10
|
-
const loadMatrixCreateClientRuntimeDeps = createLazyRuntimeModule(() => Promise.all([
|
|
10
|
+
const loadMatrixCreateClientRuntimeDeps = createLazyRuntimeModule(() => Promise.all([
|
|
11
|
+
import("./sdk-rqFjgltR.mjs").then((n) => n.t),
|
|
12
|
+
import("./logging-rgm8ep9H.mjs").then((n) => n.n),
|
|
13
|
+
import("./file-sync-store-CsalA4yI.mjs")
|
|
14
|
+
]).then(([sdkModule, loggingModule, syncStoreModule]) => ({
|
|
11
15
|
MatrixClient: sdkModule.MatrixClient,
|
|
16
|
+
SqliteBackedMatrixSyncStore: syncStoreModule.SqliteBackedMatrixSyncStore,
|
|
12
17
|
ensureMatrixSdkLoggingConfigured: loggingModule.ensureMatrixSdkLoggingConfigured
|
|
13
18
|
})));
|
|
14
19
|
async function createMatrixClient(params) {
|
|
15
|
-
const { MatrixClient, ensureMatrixSdkLoggingConfigured } = await loadMatrixCreateClientRuntimeDeps();
|
|
20
|
+
const { MatrixClient, SqliteBackedMatrixSyncStore, ensureMatrixSdkLoggingConfigured } = await loadMatrixCreateClientRuntimeDeps();
|
|
16
21
|
ensureMatrixSdkLoggingConfigured();
|
|
17
22
|
const homeserver = await resolveValidatedMatrixHomeserverUrl(params.homeserver, { dangerouslyAllowPrivateNetwork: params.allowPrivateNetwork });
|
|
18
23
|
const matrixClientUserId = normalizeOptionalString(params.userId);
|
|
19
24
|
const userId = matrixClientUserId ?? "unknown";
|
|
20
|
-
const storagePaths = params.persistStorage !== false ? resolveMatrixStoragePaths({
|
|
25
|
+
const storagePaths = params.persistStorage !== false ? await resolveMatrixStoragePaths({
|
|
21
26
|
homeserver,
|
|
22
27
|
userId,
|
|
23
28
|
accessToken: params.accessToken,
|
|
@@ -31,7 +36,7 @@ async function createMatrixClient(params) {
|
|
|
31
36
|
env: process.env
|
|
32
37
|
});
|
|
33
38
|
fs.mkdirSync(storagePaths.rootDir, { recursive: true });
|
|
34
|
-
writeStorageMeta({
|
|
39
|
+
await writeStorageMeta({
|
|
35
40
|
storagePaths,
|
|
36
41
|
homeserver,
|
|
37
42
|
userId,
|
|
@@ -40,6 +45,7 @@ async function createMatrixClient(params) {
|
|
|
40
45
|
});
|
|
41
46
|
}
|
|
42
47
|
const cryptoDatabasePrefix = storagePaths ? `openclaw-matrix-${storagePaths.accountKey}-${storagePaths.tokenHash}` : void 0;
|
|
48
|
+
const syncStore = storagePaths ? await SqliteBackedMatrixSyncStore.create(storagePaths.rootDir) : void 0;
|
|
43
49
|
return new MatrixClient(homeserver, params.accessToken, {
|
|
44
50
|
userId: matrixClientUserId,
|
|
45
51
|
password: params.password,
|
|
@@ -47,7 +53,7 @@ async function createMatrixClient(params) {
|
|
|
47
53
|
encryption: params.encryption,
|
|
48
54
|
localTimeoutMs: params.localTimeoutMs,
|
|
49
55
|
initialSyncLimit: params.initialSyncLimit,
|
|
50
|
-
|
|
56
|
+
syncStore,
|
|
51
57
|
recoveryKeyPath: storagePaths?.recoveryKeyPath,
|
|
52
58
|
idbSnapshotPath: storagePaths?.idbSnapshotPath,
|
|
53
59
|
cryptoDatabasePrefix,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { i as normalizeMatrixStoredCredentials, n as isMatrixCredentialRevocation, r as matrixCredentialsStoreKey } from "./credentials-state-B3cuUFwZ.mjs";
|
|
2
2
|
import { i as resolveMatrixCredentialsDir, o as resolveMatrixCredentialsPath } from "./storage-paths-DVCANXTc.mjs";
|
|
3
|
-
import { a as
|
|
3
|
+
import { a as loadMatrixCredentials, c as openMatrixCredentialsStore, n as clearMatrixCredentials, r as credentialsMatchConfig, s as openMatrixCredentialsAsyncStore } from "./credentials-read-Q5sHkkHv.mjs";
|
|
4
4
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
5
5
|
//#region extensions/matrix/src/matrix/credentials.ts
|
|
6
6
|
async function saveMatrixCredentials(credentials, env = process.env, accountId) {
|
|
@@ -6,6 +6,7 @@ import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
|
|
6
6
|
import { createPluginStateSyncKeyedStore } from "openclaw/plugin-sdk/plugin-state-store-runtime";
|
|
7
7
|
//#region extensions/matrix/src/matrix/credentials-read.ts
|
|
8
8
|
var credentials_read_exports = /* @__PURE__ */ __exportAll({
|
|
9
|
+
captureMatrixCredentialsEnv: () => captureMatrixCredentialsEnv,
|
|
9
10
|
clearMatrixCredentials: () => clearMatrixCredentials,
|
|
10
11
|
credentialsMatchConfig: () => credentialsMatchConfig,
|
|
11
12
|
loadMatrixCredentials: () => loadMatrixCredentials,
|
|
@@ -34,6 +35,13 @@ function openMatrixCredentialsStore(env = process.env) {
|
|
|
34
35
|
function openMatrixCredentialsAsyncStore(env = process.env) {
|
|
35
36
|
return getMatrixRuntime().state.openKeyedStore(matrixCredentialsStoreOptions(env));
|
|
36
37
|
}
|
|
38
|
+
function captureMatrixCredentialsEnv(env) {
|
|
39
|
+
return {
|
|
40
|
+
...env,
|
|
41
|
+
OPENCLAW_STATE_DIR: getMatrixRuntime().state.resolveStateDir(env),
|
|
42
|
+
OPENCLAW_SUPERVISOR_MODE: env.OPENCLAW_SUPERVISOR_MODE
|
|
43
|
+
};
|
|
44
|
+
}
|
|
37
45
|
async function loadMatrixCredentialsAsync(env = process.env, accountId) {
|
|
38
46
|
return decodeMatrixCredentials(await openMatrixCredentialsAsyncStore(env).lookup(matrixCredentialsStoreKey(accountId)), accountId);
|
|
39
47
|
}
|
|
@@ -63,4 +71,4 @@ function credentialsMatchConfig(stored, config) {
|
|
|
63
71
|
return stored.homeserver === config.homeserver && stored.userId === config.userId;
|
|
64
72
|
}
|
|
65
73
|
//#endregion
|
|
66
|
-
export {
|
|
74
|
+
export { loadMatrixCredentials as a, openMatrixCredentialsStore as c, credentials_read_exports as i, clearMatrixCredentials as n, loadMatrixCredentialsAsync as o, credentialsMatchConfig as r, openMatrixCredentialsAsyncStore as s, captureMatrixCredentialsEnv as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
2
2
|
//#region extensions/matrix/src/matrix/credentials-write.runtime.ts
|
|
3
|
-
const loadMatrixCredentialsRuntime = createLazyRuntimeModule(() => import("./credentials-
|
|
3
|
+
const loadMatrixCredentialsRuntime = createLazyRuntimeModule(() => import("./credentials-BGKfiaJW.mjs"));
|
|
4
4
|
async function saveMatrixCredentials(...args) {
|
|
5
5
|
return (await loadMatrixCredentialsRuntime()).saveMatrixCredentials(...args);
|
|
6
6
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as ensureMatrixCryptoRuntime } from "./deps-mtxF2mHI.mjs";
|
|
2
2
|
import { n as LogService, r as noop } from "./logger-xBjiRIp1.mjs";
|
|
3
|
-
import { i as restoreIdbFromDisk, n as persistIdbToDisk } from "./idb-persistence-
|
|
4
|
-
import { n as isRepairableSecretStorageAccessError } from "./sdk-
|
|
3
|
+
import { i as restoreIdbFromDisk, n as persistIdbToDisk } from "./idb-persistence-c8uxcofH.mjs";
|
|
4
|
+
import { n as isRepairableSecretStorageAccessError } from "./sdk-rqFjgltR.mjs";
|
|
5
5
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
6
6
|
import { formatErrorMessage, toStringifiedError } from "openclaw/plugin-sdk/error-runtime";
|
|
7
7
|
import { resolveDateTimestampMs, resolveTimestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
|
|
8
8
|
import { setTimeout as setTimeout$1 } from "node:timers/promises";
|
|
9
|
-
import { IDBDatabase } from "fake-indexeddb";
|
|
10
9
|
import { MatrixEventEvent } from "matrix-js-sdk/lib/matrix.js";
|
|
10
|
+
import { IDBDatabase } from "fake-indexeddb";
|
|
11
11
|
import { VerificationMethod } from "matrix-js-sdk/lib/types.js";
|
|
12
12
|
import "fake-indexeddb/auto";
|
|
13
13
|
import { CryptoEvent } from "matrix-js-sdk/lib/crypto-api/CryptoEvent.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { b as readMatrixIdbSnapshotJsonFromStore, o as MATRIX_IDB_SNAPSHOT_FILENAME, p as openMatrixIdbSnapshotStoreOptions, w as writeMatrixIdbSnapshotJsonToStore } from "./storage-metadata-fHN6Df2m.mjs";
|
|
2
2
|
import { n as MATRIX_IDB_SNAPSHOT_LOCK_OPTIONS } from "./idb-persistence-lock-B3fZXyF_.mjs";
|
|
3
|
-
import { r as readLegacyMatrixIdbSnapshotStateUnlocked, t as isValidMatrixIdbSnapshotJson } from "./idb-persistence-
|
|
3
|
+
import { r as readLegacyMatrixIdbSnapshotStateUnlocked, t as isValidMatrixIdbSnapshotJson } from "./idb-persistence-c8uxcofH.mjs";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import fs from "node:fs";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
|
|
2
2
|
import { r as normalizeMatrixMessagingTarget, t as isMatrixQualifiedUserId } from "./target-ids-Nwx7cMVE.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { t as MatrixAuthedHttpClient } from "./http-client-
|
|
3
|
+
import { d as resolveMatrixAuth } from "./client-ChrXpxos.mjs";
|
|
4
|
+
import { t as MatrixAuthedHttpClient } from "./http-client-Bi6uKmzh.mjs";
|
|
5
5
|
import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
//#region extensions/matrix/src/directory-live.ts
|
|
7
7
|
var directory_live_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { _ as MsgType } from "./direct-management-B2Bno2xL.mjs";
|
|
2
|
-
import { a as sendSingleTextMessageMatrix, m as prepareMatrixSingleText, t as editMessageMatrix } from "./send-
|
|
3
|
-
import {
|
|
2
|
+
import { a as sendSingleTextMessageMatrix, m as prepareMatrixSingleText, t as editMessageMatrix } from "./send-aVdC5NJO.mjs";
|
|
3
|
+
import { createFinalizableDraftLifecycle } from "openclaw/plugin-sdk/channel-outbound";
|
|
4
4
|
//#region extensions/matrix/src/matrix/draft-stream.ts
|
|
5
5
|
const DEFAULT_THROTTLE_MS = 1e3;
|
|
6
6
|
function resolveDraftPreviewOptions(mode) {
|
|
@@ -82,10 +82,22 @@ function createMatrixDraftStream(params) {
|
|
|
82
82
|
return false;
|
|
83
83
|
}
|
|
84
84
|
};
|
|
85
|
-
const { loop, update, stop: stopDraft, discardPending } =
|
|
85
|
+
const { loop, update, stop: stopDraft, discardPending, seal, clear, retire, cleanupPending } = createFinalizableDraftLifecycle({
|
|
86
86
|
throttleMs: DEFAULT_THROTTLE_MS,
|
|
87
87
|
state: streamState,
|
|
88
|
-
sendOrEditStreamMessage: sendOrEdit
|
|
88
|
+
sendOrEditStreamMessage: sendOrEdit,
|
|
89
|
+
readMessageId: () => currentEventId,
|
|
90
|
+
clearMessageId: () => {
|
|
91
|
+
currentEventId = void 0;
|
|
92
|
+
lastSentText = "";
|
|
93
|
+
lastSentContent = "";
|
|
94
|
+
},
|
|
95
|
+
isValidMessageId: (id) => typeof id === "string" && id.length > 0,
|
|
96
|
+
deleteMessage: async (id) => {
|
|
97
|
+
await client.redactEvent(roomId, id);
|
|
98
|
+
},
|
|
99
|
+
warn: log,
|
|
100
|
+
warnPrefix: "matrix draft preview cleanup failed"
|
|
89
101
|
});
|
|
90
102
|
log?.(`draft-stream: ready (throttleMs=${DEFAULT_THROTTLE_MS})`);
|
|
91
103
|
const finalizeLive = async () => {
|
|
@@ -134,14 +146,18 @@ function createMatrixDraftStream(params) {
|
|
|
134
146
|
const deleteCurrentMessage = async () => {
|
|
135
147
|
loop.resetPending();
|
|
136
148
|
await loop.waitForInFlight();
|
|
137
|
-
|
|
149
|
+
const retiredEventId = currentEventId;
|
|
138
150
|
resetCurrentMessage();
|
|
151
|
+
if (retiredEventId) await retire(retiredEventId);
|
|
139
152
|
};
|
|
140
153
|
return {
|
|
141
154
|
update,
|
|
142
155
|
flush: loop.flush,
|
|
143
156
|
stop,
|
|
144
157
|
discardPending,
|
|
158
|
+
seal,
|
|
159
|
+
clear,
|
|
160
|
+
cleanupPending,
|
|
145
161
|
deleteCurrentMessage,
|
|
146
162
|
finalizeLive,
|
|
147
163
|
reset,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { s as resolveMatrixDefaultOrOnlyAccountId } from "./account-selection-BHkfU1eC.mjs";
|
|
2
2
|
import { t as resolveMatrixConfigFieldPath } from "./config-paths-CnREYb1Y.mjs";
|
|
3
3
|
import { normalizeOptionalAccountId } from "openclaw/plugin-sdk/account-id";
|
|
4
4
|
//#region extensions/matrix/src/matrix/encryption-guidance.ts
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { t as getMatrixRuntime } from "./runtime-1kn1P6io.mjs";
|
|
2
|
+
import { t as claimCurrentTokenStorageState } from "./storage-BXaFc0S4.mjs";
|
|
3
|
+
import { c as writeMatrixSyncCacheStateToStore, i as openMatrixSyncCacheStoreOptions, n as deleteMatrixSyncCacheStateFromStore, o as readPersistedStoreFromStore } from "./sync-cache-state-BMtGMxU1.mjs";
|
|
4
|
+
import { n as LogService } from "./logger-xBjiRIp1.mjs";
|
|
5
|
+
import { MemoryStore, SyncAccumulator } from "matrix-js-sdk/lib/matrix.js";
|
|
6
|
+
//#region extensions/matrix/src/matrix/async-lock.ts
|
|
7
|
+
function createAsyncLock() {
|
|
8
|
+
let lock = Promise.resolve();
|
|
9
|
+
return async function withLock(fn) {
|
|
10
|
+
const previous = lock;
|
|
11
|
+
let release;
|
|
12
|
+
lock = new Promise((resolve) => {
|
|
13
|
+
release = resolve;
|
|
14
|
+
});
|
|
15
|
+
await previous;
|
|
16
|
+
try {
|
|
17
|
+
return await fn();
|
|
18
|
+
} finally {
|
|
19
|
+
release?.();
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region extensions/matrix/src/matrix/client/file-sync-store.ts
|
|
25
|
+
const PERSIST_DEBOUNCE_MS = 250;
|
|
26
|
+
function cloneJson(value) {
|
|
27
|
+
return structuredClone(value);
|
|
28
|
+
}
|
|
29
|
+
function syncDataToSyncResponse(syncData) {
|
|
30
|
+
return {
|
|
31
|
+
next_batch: syncData.nextBatch,
|
|
32
|
+
rooms: syncData.roomsData,
|
|
33
|
+
account_data: { events: syncData.accountData }
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
var SqliteBackedMatrixSyncStore = class SqliteBackedMatrixSyncStore extends MemoryStore {
|
|
37
|
+
static async create(storageRootDir) {
|
|
38
|
+
let store;
|
|
39
|
+
let persisted = null;
|
|
40
|
+
let unavailableError;
|
|
41
|
+
try {
|
|
42
|
+
store = getMatrixRuntime().state.openKeyedStore(openMatrixSyncCacheStoreOptions(storageRootDir));
|
|
43
|
+
persisted = await readPersistedStoreFromStore({
|
|
44
|
+
storageRootDir,
|
|
45
|
+
store
|
|
46
|
+
});
|
|
47
|
+
} catch (error) {
|
|
48
|
+
unavailableError = error;
|
|
49
|
+
LogService.warn("MatrixSyncCacheStore", "Failed to load Matrix sync cache:", error);
|
|
50
|
+
}
|
|
51
|
+
return new SqliteBackedMatrixSyncStore(storageRootDir, store, persisted, unavailableError);
|
|
52
|
+
}
|
|
53
|
+
constructor(storageRootDir, store, persisted, storeUnavailableError) {
|
|
54
|
+
super();
|
|
55
|
+
this.storageRootDir = storageRootDir;
|
|
56
|
+
this.store = store;
|
|
57
|
+
this.storeUnavailableError = storeUnavailableError;
|
|
58
|
+
this.persistLock = createAsyncLock();
|
|
59
|
+
this.accumulator = new SyncAccumulator();
|
|
60
|
+
this.savedSync = null;
|
|
61
|
+
this.cleanShutdown = false;
|
|
62
|
+
this.dirty = false;
|
|
63
|
+
this.frozen = false;
|
|
64
|
+
this.persistTimer = null;
|
|
65
|
+
this.persistPromise = null;
|
|
66
|
+
const restoredSavedSync = persisted?.savedSync ?? null;
|
|
67
|
+
const restoredClientOptions = persisted?.clientOptions;
|
|
68
|
+
const restoredCleanShutdown = persisted?.cleanShutdown === true;
|
|
69
|
+
this.savedSync = restoredSavedSync;
|
|
70
|
+
this.savedClientOptions = restoredClientOptions;
|
|
71
|
+
this.hadSavedSyncOnLoad = restoredSavedSync !== null;
|
|
72
|
+
this.hadCleanShutdownOnLoad = this.hadSavedSyncOnLoad && restoredCleanShutdown;
|
|
73
|
+
this.cleanShutdown = this.hadCleanShutdownOnLoad;
|
|
74
|
+
if (this.savedSync) {
|
|
75
|
+
this.accumulator.accumulate(syncDataToSyncResponse(this.savedSync), true);
|
|
76
|
+
super.setSyncToken(this.savedSync.nextBatch);
|
|
77
|
+
}
|
|
78
|
+
if (this.savedClientOptions) super.storeClientOptions(this.savedClientOptions);
|
|
79
|
+
}
|
|
80
|
+
hasSavedSync() {
|
|
81
|
+
return this.hadSavedSyncOnLoad;
|
|
82
|
+
}
|
|
83
|
+
hasSavedSyncFromCleanShutdown() {
|
|
84
|
+
return this.hadCleanShutdownOnLoad;
|
|
85
|
+
}
|
|
86
|
+
getSavedSync() {
|
|
87
|
+
return Promise.resolve(this.savedSync ? cloneJson(this.savedSync) : null);
|
|
88
|
+
}
|
|
89
|
+
getSavedSyncToken() {
|
|
90
|
+
return Promise.resolve(this.savedSync?.nextBatch ?? null);
|
|
91
|
+
}
|
|
92
|
+
setSyncData(syncData) {
|
|
93
|
+
if (this.frozen) return Promise.resolve();
|
|
94
|
+
this.accumulator.accumulate(syncData);
|
|
95
|
+
this.savedSync = this.accumulator.getJSON();
|
|
96
|
+
this.markDirtyAndSchedulePersist();
|
|
97
|
+
return Promise.resolve();
|
|
98
|
+
}
|
|
99
|
+
getClientOptions() {
|
|
100
|
+
return Promise.resolve(this.savedClientOptions ? cloneJson(this.savedClientOptions) : void 0);
|
|
101
|
+
}
|
|
102
|
+
storeClientOptions(options) {
|
|
103
|
+
if (this.frozen) return Promise.resolve();
|
|
104
|
+
this.savedClientOptions = cloneJson(options);
|
|
105
|
+
super.storeClientOptions(options);
|
|
106
|
+
this.markDirtyAndSchedulePersist();
|
|
107
|
+
return Promise.resolve();
|
|
108
|
+
}
|
|
109
|
+
save(force = false) {
|
|
110
|
+
if (force) return this.flush();
|
|
111
|
+
return Promise.resolve();
|
|
112
|
+
}
|
|
113
|
+
wantsSave() {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
async deleteAllData() {
|
|
117
|
+
const store = this.requireStore();
|
|
118
|
+
if (this.persistTimer) {
|
|
119
|
+
clearTimeout(this.persistTimer);
|
|
120
|
+
this.persistTimer = null;
|
|
121
|
+
}
|
|
122
|
+
this.dirty = false;
|
|
123
|
+
await this.enqueuePersistence(async () => {
|
|
124
|
+
await super.deleteAllData();
|
|
125
|
+
this.savedSync = null;
|
|
126
|
+
this.savedClientOptions = void 0;
|
|
127
|
+
this.cleanShutdown = false;
|
|
128
|
+
this.dirty = false;
|
|
129
|
+
await deleteMatrixSyncCacheStateFromStore({
|
|
130
|
+
storageRootDir: this.storageRootDir,
|
|
131
|
+
store
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
markCleanShutdown() {
|
|
136
|
+
this.cleanShutdown = true;
|
|
137
|
+
this.dirty = true;
|
|
138
|
+
}
|
|
139
|
+
async freezeSyncCursorPersistence() {
|
|
140
|
+
this.frozen = true;
|
|
141
|
+
if (this.persistTimer) {
|
|
142
|
+
clearTimeout(this.persistTimer);
|
|
143
|
+
this.persistTimer = null;
|
|
144
|
+
}
|
|
145
|
+
while (this.persistPromise) await this.persistPromise;
|
|
146
|
+
}
|
|
147
|
+
discardPendingSyncCursorPersistence() {
|
|
148
|
+
this.frozen = true;
|
|
149
|
+
if (this.persistTimer) {
|
|
150
|
+
clearTimeout(this.persistTimer);
|
|
151
|
+
this.persistTimer = null;
|
|
152
|
+
}
|
|
153
|
+
this.cleanShutdown = false;
|
|
154
|
+
this.dirty = false;
|
|
155
|
+
}
|
|
156
|
+
async flush() {
|
|
157
|
+
if (this.persistTimer) {
|
|
158
|
+
clearTimeout(this.persistTimer);
|
|
159
|
+
this.persistTimer = null;
|
|
160
|
+
}
|
|
161
|
+
while (this.dirty || this.persistPromise) {
|
|
162
|
+
if (this.dirty && !this.persistPromise) this.enqueuePersistence(() => this.persist());
|
|
163
|
+
await this.persistPromise;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
markDirtyAndSchedulePersist() {
|
|
167
|
+
if (this.frozen) return;
|
|
168
|
+
this.cleanShutdown = false;
|
|
169
|
+
this.dirty = true;
|
|
170
|
+
if (this.persistTimer) return;
|
|
171
|
+
this.persistTimer = setTimeout(() => {
|
|
172
|
+
this.persistTimer = null;
|
|
173
|
+
this.flush().catch((err) => {
|
|
174
|
+
LogService.warn("MatrixSyncCacheStore", "Failed to persist Matrix sync store:", err);
|
|
175
|
+
});
|
|
176
|
+
}, PERSIST_DEBOUNCE_MS);
|
|
177
|
+
this.persistTimer.unref?.();
|
|
178
|
+
}
|
|
179
|
+
async persist() {
|
|
180
|
+
const store = this.requireStore();
|
|
181
|
+
this.dirty = false;
|
|
182
|
+
const payload = {
|
|
183
|
+
version: 1,
|
|
184
|
+
savedSync: this.savedSync ? cloneJson(this.savedSync) : null,
|
|
185
|
+
cleanShutdown: this.cleanShutdown,
|
|
186
|
+
...this.savedClientOptions ? { clientOptions: cloneJson(this.savedClientOptions) } : {}
|
|
187
|
+
};
|
|
188
|
+
try {
|
|
189
|
+
await writeMatrixSyncCacheStateToStore({
|
|
190
|
+
storageRootDir: this.storageRootDir,
|
|
191
|
+
payload,
|
|
192
|
+
store
|
|
193
|
+
});
|
|
194
|
+
await claimCurrentTokenStorageState({ rootDir: this.storageRootDir });
|
|
195
|
+
} catch (err) {
|
|
196
|
+
this.dirty = true;
|
|
197
|
+
throw err;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
enqueuePersistence(operation) {
|
|
201
|
+
const pending = this.persistLock(operation).finally(() => {
|
|
202
|
+
if (this.persistPromise === pending) this.persistPromise = null;
|
|
203
|
+
});
|
|
204
|
+
this.persistPromise = pending;
|
|
205
|
+
return pending;
|
|
206
|
+
}
|
|
207
|
+
requireStore() {
|
|
208
|
+
if (this.store && this.storeUnavailableError == null) return this.store;
|
|
209
|
+
throw new Error("Matrix sync cache SQLite store is unavailable; cannot persist sync state", { cause: this.storeUnavailableError });
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
//#endregion
|
|
213
|
+
export { SqliteBackedMatrixSyncStore };
|