@openclaw/discord 2026.9.5 → 2026.9.7

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.
Files changed (517) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
  3. package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
  4. package/dist/.setup/{activities-api-DBwRt5ES.mjs → activities-api-tvbsU2e3.mjs} +38 -66
  5. package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
  6. package/dist/.setup/{approval-handler.runtime-Du3n5ypX.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
  7. package/dist/.setup/{approval-message-updates-BN7JtScm.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
  8. package/dist/.setup/{audit-C8uaKoa9.mjs → audit-CLg9I71N.mjs} +5 -5
  9. package/dist/.setup/{channel-ChKdlBgH.mjs → channel-DxlUVU9t.mjs} +125 -228
  10. package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
  11. package/dist/.setup/{channel.setup-BlC3-Kzz.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
  12. package/dist/.setup/{components-MqMWUWnE.mjs → components-Cq1PvIpN.mjs} +42 -71
  13. package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
  14. package/dist/.setup/{conversation-binding-route-_rz33QHO.mjs → conversation-binding-route-Caz_XuFH.mjs} +14 -6
  15. package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
  16. package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
  17. package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
  18. package/dist/.setup/{doctor-DxcdkXzz.mjs → doctor-BCl1H5tl.mjs} +21 -36
  19. package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
  20. package/dist/.setup/{channel-actions.runtime-CJmiFfps.mjs → handle-action-CUvQWnE7.mjs} +74 -105
  21. package/dist/.setup/{handle-action.guild-admin-DAFyh_yV.mjs → handle-action.guild-admin-Df-8gVle.mjs} +63 -121
  22. package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
  23. package/dist/.setup/{message-handler-DnUrDpaU.mjs → message-handler-B-Jk4oDk.mjs} +18 -93
  24. package/dist/.setup/message-handler.preflight-pluralkit-CWLUBVcx.mjs +141 -0
  25. package/dist/.setup/{message-handler.preflight-CtqaF_fb.mjs → message-handler.preflight-v-__NSDq.mjs} +73 -287
  26. package/dist/.setup/{message-handler.process-Dz1xvuQU.mjs → message-handler.process-BNFFuChn.mjs} +423 -374
  27. package/dist/.setup/{outbound-adapter-C8v79z9Z.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
  28. package/dist/.setup/{outbound-session-route-CqWbuMOm.mjs → outbound-session-route-zVGxxceg.mjs} +142 -109
  29. package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
  30. package/dist/.setup/{preflight-audio-DrnqFA8U.mjs → preflight-audio-DHGIHEpv.mjs} +2 -1
  31. package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
  32. package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
  33. package/dist/.setup/{provider-72zIvN-i.mjs → provider-B_G5hASF.mjs} +1112 -1668
  34. package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
  35. package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
  36. package/dist/.setup/{realtime-session.runtime-DTccTgTM.mjs → realtime-session.runtime-oUd9DOcz.mjs} +372 -345
  37. package/dist/.setup/receive-recovery-CHPOsnLc.mjs +514 -0
  38. package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
  39. package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
  40. package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
  41. package/dist/.setup/{retry-DBfcEgmO.mjs → retry-pz_cSha2.mjs} +81 -16
  42. package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
  43. package/dist/.setup/{runtime-SchNfUsQ.mjs → runtime-FN000lxA.mjs} +83 -166
  44. package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
  45. package/dist/.setup/{runtime-BVoa7hhx.mjs → runtime-sUksZ--Q.mjs} +2 -5
  46. package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
  47. package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
  48. package/dist/.setup/{send-CKDczUNL.mjs → send-CrfEI6Bs.mjs} +73 -114
  49. package/dist/.setup/{send.components-DWQjXhPV.mjs → send.components-DxQAMfES.mjs} +62 -107
  50. package/dist/.setup/{send.outbound-D0hQ7s50.mjs → send.outbound-BISKnb-a.mjs} +79 -154
  51. package/dist/.setup/{send.shared-Zwx6BxQ5.mjs → send.shared-DGFkbkQR.mjs} +10 -25
  52. package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
  53. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
  54. package/dist/.setup/{shared-CaA3Vv4n.mjs → shared-B3wZ4hN-.mjs} +25 -32
  55. package/dist/.setup/{subagent-hooks-Bired9q6.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
  56. package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
  57. package/dist/.setup/{target-resolver-B6MrxbYv.mjs → target-resolver-BuLapkhy.mjs} +9 -12
  58. package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
  59. package/dist/.setup/{thread-bindings-CK5272V3.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
  60. package/dist/.setup/thread-bindings.manager-DN-NissX.mjs +819 -0
  61. package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
  62. package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
  63. package/dist/.setup/{transcripts-source-CuWYgayu.mjs → transcripts-source-p8EV179h.mjs} +133 -238
  64. package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
  65. package/dist/.setup/{voice-runtime-DHVQ2mFz.mjs → voice-runtime-B46rcwrG.mjs} +633 -1085
  66. package/dist/account-inspect-api.js +1 -1
  67. package/dist/action-runtime-api.js +1 -1
  68. package/dist/activities-api.js +1 -1
  69. package/dist/api.js +18 -18
  70. package/dist/channel-config-api.js +1 -1
  71. package/dist/channel-plugin-api.js +1 -1
  72. package/dist/directory-contract-api.js +1 -1
  73. package/dist/doctor-contract-api.js +4 -4
  74. package/dist/index.js +1 -1
  75. package/dist/runtime-api.js +20 -20
  76. package/dist/secret-contract-api.js +1 -1
  77. package/dist/security-audit-contract-api.js +1 -1
  78. package/dist/setup-entry.js +1 -1
  79. package/dist/setup-plugin-api.js +1 -1
  80. package/dist/src/voice/audio-worker.runtime.js +1056 -0
  81. package/dist/subagent-hooks-api.js +3 -4
  82. package/dist/transcripts-source-api.js +1 -1
  83. package/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.cjs +8 -4
  84. package/node_modules/@napi-rs/wasm-runtime/dist/emnapi-plugins.js +8 -4
  85. package/node_modules/@napi-rs/wasm-runtime/dist/fs-proxy.cjs +1 -1
  86. package/node_modules/@napi-rs/wasm-runtime/dist/fs.js +770 -695
  87. package/node_modules/@napi-rs/wasm-runtime/fs-proxy.js +3 -2
  88. package/node_modules/@napi-rs/wasm-runtime/package.json +1 -1
  89. package/node_modules/@tybys/wasm-util/LICENSE +21 -0
  90. package/node_modules/@tybys/wasm-util/package.json +1 -1
  91. package/node_modules/@types/node/README.md +2 -2
  92. package/node_modules/@types/node/child_process.d.ts +1 -1
  93. package/node_modules/@types/node/crypto.d.ts +20 -8
  94. package/node_modules/@types/node/ffi.d.ts +14 -0
  95. package/node_modules/@types/node/http2.d.ts +3 -2
  96. package/node_modules/@types/node/net.d.ts +16 -4
  97. package/node_modules/@types/node/package.json +2 -17
  98. package/node_modules/@types/node/process.d.ts +1 -0
  99. package/node_modules/@types/node/quic.d.ts +39 -1
  100. package/node_modules/@types/node/stream/iter.d.ts +9 -12
  101. package/node_modules/@types/node/test/reporters.d.ts +1 -0
  102. package/node_modules/@types/node/test.d.ts +72 -0
  103. package/node_modules/@types/node/tls.d.ts +14 -10
  104. package/node_modules/@types/node/vm.d.ts +2 -1
  105. package/node_modules/@types/node/web-globals/streams.d.ts +4 -0
  106. package/node_modules/@types/node/worker_threads.d.ts +4 -1
  107. package/node_modules/typebox/build/compile/code.mjs +1 -2
  108. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  109. package/node_modules/typebox/build/format/iri.mjs +16 -9
  110. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  111. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  112. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  113. package/node_modules/typebox/build/guard/index.mjs +6 -0
  114. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  115. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  116. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  117. package/node_modules/typebox/build/schema/build.mjs +2 -3
  118. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  119. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  120. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  121. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  122. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  123. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  124. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  125. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  126. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  127. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  128. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  129. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  130. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  131. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  132. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  133. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  134. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  135. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  136. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  137. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  138. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  139. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  140. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  141. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  142. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  143. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  144. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  145. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  146. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  147. package/node_modules/typebox/package.json +1 -1
  148. package/node_modules/typebox/readme.md +3 -1
  149. package/node_modules/zod/README.md +2 -2
  150. package/node_modules/zod/compile.cjs +19 -0
  151. package/node_modules/zod/index.cjs +19 -0
  152. package/node_modules/zod/locales/index.cjs +19 -0
  153. package/node_modules/zod/mini/index.cjs +19 -0
  154. package/node_modules/zod/package.json +8 -7
  155. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  156. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  157. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  158. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  159. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  160. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  161. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  162. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  163. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  164. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  165. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  166. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  167. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  168. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  169. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  170. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  171. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  172. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  173. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  174. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  175. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  176. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  177. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  178. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  179. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  180. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  181. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  182. package/node_modules/zod/src/v4/core/api.ts +44 -28
  183. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  184. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  185. package/node_modules/zod/src/v4/core/core.ts +1 -3
  186. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  187. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  188. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  189. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  190. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  191. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  192. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  193. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  194. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  195. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  196. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  197. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  198. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  199. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  200. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  201. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  202. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  203. package/node_modules/zod/src/v4/core/util.ts +218 -147
  204. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  205. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  206. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  207. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  208. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  209. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  210. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  211. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  212. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  213. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  214. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  215. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  216. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  217. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  218. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  219. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  220. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  221. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  222. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  223. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  224. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  225. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  226. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  227. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  228. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  229. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  230. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  231. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  232. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  233. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  234. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  235. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  236. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  237. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  238. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  239. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  240. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  241. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  242. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  243. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  244. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  245. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  246. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  247. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  248. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  249. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  250. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  251. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  252. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  253. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  254. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  255. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  256. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  257. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  258. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  259. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  260. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  261. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  262. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  263. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  264. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  265. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  266. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  267. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  268. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  269. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  270. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  271. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  272. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  273. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  274. package/node_modules/zod/v3/ZodError.cjs +19 -0
  275. package/node_modules/zod/v3/errors.cjs +19 -0
  276. package/node_modules/zod/v3/external.cjs +19 -0
  277. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  278. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  279. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  280. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  281. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  282. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  283. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  284. package/node_modules/zod/v3/index.cjs +19 -0
  285. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  286. package/node_modules/zod/v3/types.cjs +19 -0
  287. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  288. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  289. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  290. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  291. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  292. package/node_modules/zod/v4/classic/external.cjs +22 -1
  293. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  294. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  295. package/node_modules/zod/v4/classic/external.js +1 -1
  296. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  297. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  298. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  299. package/node_modules/zod/v4/classic/index.cjs +19 -0
  300. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  301. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  302. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  303. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  304. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  305. package/node_modules/zod/v4/classic/schemas.js +77 -33
  306. package/node_modules/zod/v4/core/api.cjs +45 -22
  307. package/node_modules/zod/v4/core/api.d.cts +12 -6
  308. package/node_modules/zod/v4/core/api.d.ts +12 -6
  309. package/node_modules/zod/v4/core/api.js +25 -22
  310. package/node_modules/zod/v4/core/checks.cjs +51 -97
  311. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  312. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  313. package/node_modules/zod/v4/core/checks.js +31 -96
  314. package/node_modules/zod/v4/core/compile.cjs +173 -78
  315. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  316. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  317. package/node_modules/zod/v4/core/compile.js +154 -79
  318. package/node_modules/zod/v4/core/core.cjs +20 -1
  319. package/node_modules/zod/v4/core/core.js +1 -1
  320. package/node_modules/zod/v4/core/doc.cjs +26 -2
  321. package/node_modules/zod/v4/core/doc.js +7 -2
  322. package/node_modules/zod/v4/core/errors.cjs +21 -5
  323. package/node_modules/zod/v4/core/errors.js +2 -5
  324. package/node_modules/zod/v4/core/index.cjs +19 -0
  325. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  326. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  327. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  328. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  329. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  330. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  331. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  332. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  333. package/node_modules/zod/v4/core/memoizer.js +69 -23
  334. package/node_modules/zod/v4/core/parse.cjs +56 -16
  335. package/node_modules/zod/v4/core/parse.js +37 -16
  336. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  337. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  338. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  339. package/node_modules/zod/v4/core/regexes.js +10 -4
  340. package/node_modules/zod/v4/core/registries.cjs +19 -0
  341. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  342. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  343. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  344. package/node_modules/zod/v4/core/schemas.js +279 -113
  345. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  346. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  347. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  348. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  349. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  350. package/node_modules/zod/v4/core/util.cjs +177 -143
  351. package/node_modules/zod/v4/core/util.d.cts +25 -4
  352. package/node_modules/zod/v4/core/util.d.ts +25 -4
  353. package/node_modules/zod/v4/core/util.js +156 -143
  354. package/node_modules/zod/v4/core/versions.cjs +21 -2
  355. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  356. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  357. package/node_modules/zod/v4/core/versions.js +2 -2
  358. package/node_modules/zod/v4/core/visit.cjs +19 -0
  359. package/node_modules/zod/v4/index.cjs +19 -0
  360. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  361. package/node_modules/zod/v4/locales/ar.js +2 -0
  362. package/node_modules/zod/v4/locales/az.cjs +2 -0
  363. package/node_modules/zod/v4/locales/az.js +2 -0
  364. package/node_modules/zod/v4/locales/be.cjs +2 -0
  365. package/node_modules/zod/v4/locales/be.js +2 -0
  366. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  367. package/node_modules/zod/v4/locales/bg.js +2 -0
  368. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  369. package/node_modules/zod/v4/locales/bn.js +2 -0
  370. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  371. package/node_modules/zod/v4/locales/ca.js +2 -0
  372. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  373. package/node_modules/zod/v4/locales/ckb.js +2 -0
  374. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  375. package/node_modules/zod/v4/locales/cs.js +2 -0
  376. package/node_modules/zod/v4/locales/da.cjs +2 -0
  377. package/node_modules/zod/v4/locales/da.js +2 -0
  378. package/node_modules/zod/v4/locales/de.cjs +2 -0
  379. package/node_modules/zod/v4/locales/de.js +2 -0
  380. package/node_modules/zod/v4/locales/el.cjs +2 -0
  381. package/node_modules/zod/v4/locales/el.js +2 -0
  382. package/node_modules/zod/v4/locales/en.cjs +2 -0
  383. package/node_modules/zod/v4/locales/en.js +2 -0
  384. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  385. package/node_modules/zod/v4/locales/eo.js +2 -0
  386. package/node_modules/zod/v4/locales/es.cjs +2 -0
  387. package/node_modules/zod/v4/locales/es.js +2 -0
  388. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  389. package/node_modules/zod/v4/locales/fa.js +2 -0
  390. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  391. package/node_modules/zod/v4/locales/fi.js +2 -0
  392. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  393. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  394. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  395. package/node_modules/zod/v4/locales/fr.js +2 -0
  396. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  397. package/node_modules/zod/v4/locales/gu.js +2 -0
  398. package/node_modules/zod/v4/locales/he.cjs +2 -0
  399. package/node_modules/zod/v4/locales/he.js +2 -0
  400. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  401. package/node_modules/zod/v4/locales/hi.js +2 -0
  402. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  403. package/node_modules/zod/v4/locales/hr.js +2 -0
  404. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  405. package/node_modules/zod/v4/locales/hu.js +2 -0
  406. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  407. package/node_modules/zod/v4/locales/hy.js +2 -0
  408. package/node_modules/zod/v4/locales/id.cjs +2 -0
  409. package/node_modules/zod/v4/locales/id.js +2 -0
  410. package/node_modules/zod/v4/locales/index.cjs +22 -1
  411. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  412. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  413. package/node_modules/zod/v4/locales/index.js +1 -0
  414. package/node_modules/zod/v4/locales/is.cjs +2 -0
  415. package/node_modules/zod/v4/locales/is.js +2 -0
  416. package/node_modules/zod/v4/locales/it.cjs +2 -0
  417. package/node_modules/zod/v4/locales/it.js +2 -0
  418. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  419. package/node_modules/zod/v4/locales/ja.js +2 -0
  420. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  421. package/node_modules/zod/v4/locales/ka.js +2 -0
  422. package/node_modules/zod/v4/locales/km.cjs +2 -0
  423. package/node_modules/zod/v4/locales/km.js +2 -0
  424. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  425. package/node_modules/zod/v4/locales/kn.js +2 -0
  426. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  427. package/node_modules/zod/v4/locales/ko.js +2 -0
  428. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  429. package/node_modules/zod/v4/locales/lt.js +2 -0
  430. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  431. package/node_modules/zod/v4/locales/mk.js +2 -0
  432. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  433. package/node_modules/zod/v4/locales/ms.js +2 -0
  434. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  435. package/node_modules/zod/v4/locales/ne.js +2 -0
  436. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  437. package/node_modules/zod/v4/locales/nl.js +2 -0
  438. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  439. package/node_modules/zod/v4/locales/nn.js +2 -0
  440. package/node_modules/zod/v4/locales/no.cjs +2 -0
  441. package/node_modules/zod/v4/locales/no.js +2 -0
  442. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  443. package/node_modules/zod/v4/locales/ota.js +2 -0
  444. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  445. package/node_modules/zod/v4/locales/pl.js +2 -0
  446. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  447. package/node_modules/zod/v4/locales/ps.js +2 -0
  448. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  449. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  450. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  451. package/node_modules/zod/v4/locales/pt.js +2 -0
  452. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  453. package/node_modules/zod/v4/locales/ro.js +2 -0
  454. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  455. package/node_modules/zod/v4/locales/ru.js +2 -0
  456. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  457. package/node_modules/zod/v4/locales/sk.js +2 -0
  458. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  459. package/node_modules/zod/v4/locales/sl.js +2 -0
  460. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  461. package/node_modules/zod/v4/locales/sv.js +2 -0
  462. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  463. package/node_modules/zod/v4/locales/ta.js +2 -0
  464. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  465. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  466. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  467. package/node_modules/zod/v4/locales/tg.js +117 -0
  468. package/node_modules/zod/v4/locales/th.cjs +2 -0
  469. package/node_modules/zod/v4/locales/th.js +2 -0
  470. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  471. package/node_modules/zod/v4/locales/tk.js +2 -0
  472. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  473. package/node_modules/zod/v4/locales/tr.js +2 -0
  474. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  475. package/node_modules/zod/v4/locales/uk.js +2 -0
  476. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  477. package/node_modules/zod/v4/locales/ur.js +2 -0
  478. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  479. package/node_modules/zod/v4/locales/uz.js +2 -0
  480. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  481. package/node_modules/zod/v4/locales/vi.js +2 -0
  482. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  483. package/node_modules/zod/v4/locales/yo.js +2 -0
  484. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  485. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  486. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  487. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  488. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  489. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  490. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  491. package/node_modules/zod/v4/mini/external.cjs +22 -1
  492. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  493. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  494. package/node_modules/zod/v4/mini/external.js +1 -1
  495. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  496. package/node_modules/zod/v4/mini/index.cjs +19 -0
  497. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  498. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  499. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  500. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  501. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  502. package/node_modules/zod/v4/mini/schemas.js +21 -6
  503. package/node_modules/zod/v4-mini/index.cjs +19 -0
  504. package/openclaw.plugin.json +21 -1
  505. package/package.json +9 -6
  506. package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
  507. package/dist/.setup/message-handler.history-CJOsN9w5.mjs +0 -28
  508. package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
  509. package/dist/.setup/provider-session.runtime-BW7QrF5C.mjs +0 -6
  510. package/dist/.setup/provider.runtime-DuhmKdDU.mjs +0 -2
  511. package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
  512. package/dist/.setup/setup-plugin-api-CINIEBLa.mjs +0 -3
  513. package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
  514. package/dist/.setup/targets-D1mAB5yO.mjs +0 -3
  515. package/dist/.setup/thread-bindings.manager-eexkKyrG.mjs +0 -678
  516. package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
  517. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -1,8 +1,8 @@
1
- import { A as serializePayload, At as getGuild, g as RequestClient, ht as getThreadMember, j as Embed, jt as getGuildMember, k as hasDiscordV2Components, nt as createUserDmChannel, pt as getChannel, rt as getCurrentUser, st as createChannelMessage } from "./discord-BXpHW-cu.mjs";
2
- import { t as isDiscordThreadChannelType } from "./channel-type-DKnjV1XW.mjs";
3
- import { c as resolveDiscordAccount, m as normalizeDiscordToken, o as mergeDiscordAccountConfig } from "./accounts-CwJQoLjM.mjs";
4
- import { f as resolveDiscordReplyMessageId, o as chunkDiscordTextWithMode, r as createDiscordRetryRunner } from "./retry-DBfcEgmO.mjs";
5
- import { t as parseAndResolveDiscordTarget } from "./target-resolver-B6MrxbYv.mjs";
1
+ import { A as serializePayload, Mt as getGuildMember, ct as createChannelMessage, g as RequestClient, gt as getThreadMember, it as getCurrentUser, j as Embed, jt as getGuild, k as hasDiscordV2Components, mt as getChannel, rt as createUserDmChannel } from "./discord-0xJYfdDD.mjs";
2
+ import { t as isDiscordThreadChannelType } from "./channel-type-DRCrEMss.mjs";
3
+ import { c as resolveDiscordAccount, m as normalizeDiscordToken, o as mergeDiscordAccountConfig } from "./accounts-ChaMcixG.mjs";
4
+ import { o as chunkDiscordTextWithMode, p as resolveDiscordReplyMessageId, r as createDiscordRetryRunner } from "./retry-pz_cSha2.mjs";
5
+ import { t as parseAndResolveDiscordTarget } from "./target-resolver-BuLapkhy.mjs";
6
6
  import { ChannelType, MessageFlags, PermissionFlagsBits } from "discord-api-types/v10";
7
7
  import { randomBytes } from "node:crypto";
8
8
  import { makeProxyFetch } from "openclaw/plugin-sdk/fetch-runtime";
@@ -55,19 +55,15 @@ const DEFAULT_ACCOUNT_KEY = "\0__default__";
55
55
  function resolveAccountKey(accountId) {
56
56
  return accountId ?? DEFAULT_ACCOUNT_KEY;
57
57
  }
58
- /** Register a GatewayPlugin instance for an account. */
59
58
  function registerGateway(accountId, gateway) {
60
59
  gatewayRegistry.set(resolveAccountKey(accountId), gateway);
61
60
  }
62
- /** Unregister a GatewayPlugin instance for an account. */
63
61
  function unregisterGateway(accountId) {
64
62
  gatewayRegistry.delete(resolveAccountKey(accountId));
65
63
  }
66
- /** Get the GatewayPlugin for an account. Returns undefined if not registered. */
67
64
  function getGateway(accountId) {
68
65
  return gatewayRegistry.get(resolveAccountKey(accountId));
69
66
  }
70
- /** Clear all registered gateways (for testing). */
71
67
  function clearGateways() {
72
68
  gatewayRegistry.clear();
73
69
  }
@@ -78,11 +74,8 @@ function resolveDiscordProxyUrl(account, cfg) {
78
74
  if (accountProxy) return accountProxy;
79
75
  return normalizeOptionalString(cfg?.channels?.discord?.proxy);
80
76
  }
81
- function resolveDiscordProxyFetchByUrl(proxyUrl, runtime) {
82
- return withValidatedDiscordProxy(proxyUrl, runtime, (proxy) => makeProxyFetch(proxy));
83
- }
84
77
  function resolveDiscordProxyFetchForAccount(account, cfg, runtime) {
85
- return resolveDiscordProxyFetchByUrl(resolveDiscordProxyUrl(account, cfg), runtime);
78
+ return withValidatedDiscordProxy(resolveDiscordProxyUrl(account, cfg), runtime, makeProxyFetch);
86
79
  }
87
80
  function withValidatedDiscordProxy(proxyUrl, runtime, createValue) {
88
81
  const proxy = proxyUrl?.trim();
@@ -112,7 +105,6 @@ const DISCORD_REST_TIMEOUT_MS = 15e3;
112
105
  function createDiscordRequestClient(token, options) {
113
106
  if (!options?.fetch) return new RequestClient(token, options);
114
107
  return new RequestClient(token, {
115
- runtimeProfile: "persistent",
116
108
  maxQueueSize: 1e3,
117
109
  timeout: DISCORD_REST_TIMEOUT_MS,
118
110
  ...options,
@@ -224,13 +216,9 @@ function resolveDiscordSendComponents(params) {
224
216
  if (!params.components || !params.isFirst) return;
225
217
  return typeof params.components === "function" ? params.components(params.text) : params.components;
226
218
  }
227
- function normalizeDiscordEmbeds(embeds) {
228
- if (!embeds?.length) return;
229
- return embeds.map((embed) => embed instanceof Embed ? embed : new Embed(embed));
230
- }
231
219
  function resolveDiscordSendEmbeds(params) {
232
- if (!params.embeds || !params.isFirst) return;
233
- return normalizeDiscordEmbeds(params.embeds);
220
+ if (!params.embeds?.length || !params.isFirst) return;
221
+ return params.embeds.map((embed) => embed instanceof Embed ? embed : new Embed(embed));
234
222
  }
235
223
  function buildDiscordMessagePayload(params) {
236
224
  const payload = {};
@@ -294,7 +282,7 @@ async function fetchBotUserId(rest) {
294
282
  return me.id;
295
283
  }
296
284
  function resolveMemberGuildPermissionBits(params) {
297
- const rolesByIdLocal = new Map((params.guild.roles ?? []).map((role) => [role.id, role]));
285
+ const rolesByIdLocal = rolesById(params.guild);
298
286
  const everyoneRole = rolesByIdLocal.get(params.guild.id);
299
287
  let permissions = 0n;
300
288
  if (everyoneRole?.permissions) permissions = addPermissionBits(permissions, everyoneRole.permissions);
@@ -736,8 +724,5 @@ function buildReactionIdentifier(emoji) {
736
724
  if (emoji.id && emoji.name) return `${emoji.name}:${emoji.id}`;
737
725
  return emoji.name ?? "";
738
726
  }
739
- function formatReactionEmoji(emoji) {
740
- return buildReactionIdentifier(emoji);
741
- }
742
727
  //#endregion
743
- export { resolveDiscordSendComponents as A, validateDiscordProxyUrl as B, hasAllGuildPermissionsDiscord as C, buildDiscordMessageRequest as D, SUPPRESS_NOTIFICATIONS_FLAG as E, createDiscordRuntimeAccountContext as F, unregisterGateway as G, clearGateways as H, resolveDiscordClientAccountContext as I, parseAndResolveChannelRecipient as K, resolveDiscordRest as L, resolveDiscordSuppressEmbeds as M, createDiscordClient as N, createDiscordMessageNonce as O, createDiscordRestClient as P, DISCORD_REST_TIMEOUT_MS as R, fetchMemberGuildPermissionsDiscord as S, hasAnyGuildPermissionDiscord as T, getGateway as U, withValidatedDiscordProxy as V, registerGateway as W, DiscordSendError as _, normalizeDiscordPollInput as a, canViewDiscordGuildChannel as b, normalizeStickerIds as c, resolveDiscordTargetChannelId as d, sendDiscordMedia as f, DISCORD_MAX_STICKER_BYTES as g, DISCORD_MAX_EVENT_COVER_BYTES as h, formatReactionEmoji as i, resolveDiscordSendEmbeds as j, resolveDiscordMessageFlags as k, resolveChannelId as l, DISCORD_MAX_EMOJI_BYTES as m, buildDiscordTextChunks as n, normalizeEmojiName as o, sendDiscordText as p, buildReactionIdentifier as r, normalizeReactionEmoji as s, buildDiscordSendError as t, resolveDiscordChannel as u, canManageGuildMemberRoleDiscord as v, hasAnyChannelPermissionDiscord as w, fetchChannelPermissionsDiscord as x, canManageGuildRoleDiscord as y, resolveDiscordProxyFetchForAccount as z };
728
+ export { resolveDiscordSendEmbeds as A, withValidatedDiscordProxy as B, hasAnyChannelPermissionDiscord as C, createDiscordMessageNonce as D, buildDiscordMessageRequest as E, resolveDiscordClientAccountContext as F, parseAndResolveChannelRecipient as G, getGateway as H, resolveDiscordRest as I, DISCORD_REST_TIMEOUT_MS as L, createDiscordClient as M, createDiscordRestClient as N, resolveDiscordMessageFlags as O, createDiscordRuntimeAccountContext as P, resolveDiscordProxyFetchForAccount as R, hasAllGuildPermissionsDiscord as S, SUPPRESS_NOTIFICATIONS_FLAG as T, registerGateway as U, clearGateways as V, unregisterGateway as W, canManageGuildMemberRoleDiscord as _, normalizeEmojiName as a, fetchChannelPermissionsDiscord as b, resolveChannelId as c, sendDiscordMedia as d, sendDiscordText as f, DiscordSendError as g, DISCORD_MAX_STICKER_BYTES as h, normalizeDiscordPollInput as i, resolveDiscordSuppressEmbeds as j, resolveDiscordSendComponents as k, resolveDiscordChannel as l, DISCORD_MAX_EVENT_COVER_BYTES as m, buildDiscordTextChunks as n, normalizeReactionEmoji as o, DISCORD_MAX_EMOJI_BYTES as p, buildReactionIdentifier as r, normalizeStickerIds as s, buildDiscordSendError as t, resolveDiscordTargetChannelId as u, canManageGuildRoleDiscord as v, hasAnyGuildPermissionDiscord as w, fetchMemberGuildPermissionsDiscord as x, canViewDiscordGuildChannel as y, validateDiscordProxyUrl as z };
@@ -1,9 +1,8 @@
1
- import { x as formatDiscordUserTag } from "./channel-type-DKnjV1XW.mjs";
1
+ import { S as formatDiscordUserTag } from "./channel-type-DRCrEMss.mjs";
2
2
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/discord/src/monitor/sender-identity.ts
4
4
  function resolveDiscordWebhookId(message) {
5
- const candidate = message.webhookId ?? message.webhook_id;
6
- return typeof candidate === "string" && candidate.trim() ? candidate.trim() : null;
5
+ return normalizeOptionalString(message.webhookId ?? message.webhook_id) ?? null;
7
6
  }
8
7
  function resolveDiscordSenderIdentity(params) {
9
8
  const pkInfo = params.pluralkitInfo ?? null;
@@ -0,0 +1,3 @@
1
+ import { t as discordSetupPlugin } from "./channel.setup-CRo1GjV7.mjs";
2
+ import "../setup-plugin-api.js";
3
+ export { discordSetupPlugin };
@@ -1,39 +1,21 @@
1
- import { c as resolveDiscordAccount, d as resolveDiscordAccountDisabledReason, f as resolveDiscordAccountDmPolicy, l as resolveDiscordAccountAllowFrom, n as isDiscordAccountEnabledForRuntime, o as mergeDiscordAccountConfig, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-CwJQoLjM.mjs";
2
- import { t as inspectDiscordAccount } from "./account-inspect-BwQj24ht.mjs";
3
- import { n as discordIngressIdentity, t as selectDiscordLivePolicyConfig } from "./live-policy-config-eKQ-PLdy.mjs";
4
- import { t as DiscordChannelConfigSchema } from "./config-schema-CiZz-mtA.mjs";
5
- import { n as normalizeCompatibilityConfig } from "./doctor-contract-Co5vRCZ6.mjs";
6
- import { r as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-DFu9hfU8.mjs";
1
+ import { c as resolveDiscordAccount, d as resolveDiscordAccountDisabledReason, f as resolveDiscordAccountDmPolicy, l as resolveDiscordAccountAllowFrom, n as isDiscordAccountEnabledForRuntime, o as mergeDiscordAccountConfig, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
2
+ import { t as inspectDiscordAccount } from "./account-inspect-De8hOUxG.mjs";
3
+ import { n as discordIngressIdentity, t as selectDiscordLivePolicyConfig } from "./live-policy-config-8Pv20CHc.mjs";
4
+ import { t as DiscordChannelConfigSchema } from "./config-schema-oxELUSDx.mjs";
5
+ import { n as normalizeCompatibilityConfig } from "./doctor-contract-CvvgwrrG.mjs";
6
+ import { r as secretTargetRegistryEntries, t as collectRuntimeConfigAssignments } from "./secret-config-contract-uOE2J7yM.mjs";
7
7
  import { n as unsupportedSecretRefSurfacePatterns, t as collectUnsupportedSecretRefConfigCandidates } from "./security-contract-DSHk7I2w.mjs";
8
8
  import { t as deriveLegacySessionChatType } from "./session-contract-BO5tlIdl.mjs";
9
9
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
10
- import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
10
+ import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
11
11
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
12
- import { PAIRING_APPROVED_MESSAGE, buildTokenChannelStatusSummary, projectCredentialSnapshotFields, resolveConfiguredFromCredentialStatuses as resolveConfiguredFromCredentialStatuses$1 } from "openclaw/plugin-sdk/channel-status";
12
+ import { resolveConfiguredFromCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
13
13
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
14
14
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
15
15
  import { createConditionalWarningCollector, createOpenProviderConfiguredRouteWarningCollector } from "openclaw/plugin-sdk/channel-policy";
16
16
  import { identityEntryAuthenticationClassifier } from "openclaw/plugin-sdk/channel-ingress-runtime";
17
17
  import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
18
18
  import { createEnvPatchedAccountSetupAdapter } from "openclaw/plugin-sdk/setup-runtime";
19
- //#region extensions/discord/src/channel-api.ts
20
- const DISCORD_CHANNEL_META = {
21
- id: "discord",
22
- label: "Discord",
23
- selectionLabel: "Discord (Bot API)",
24
- detailLabel: "Discord Bot",
25
- docsPath: "/channels/discord",
26
- docsLabel: "discord",
27
- blurb: "very well supported right now.",
28
- systemImage: "bubble.left.and.bubble.right",
29
- markdownCapable: true,
30
- preferSessionLookupForAnnounceTarget: true
31
- };
32
- function getChatChannelMeta(id) {
33
- if (id !== DISCORD_CHANNEL_META.id) throw new Error(`Unsupported Discord channel meta lookup: ${id}`);
34
- return DISCORD_CHANNEL_META;
35
- }
36
- //#endregion
37
19
  //#region extensions/discord/src/security.ts
38
20
  const resolveDiscordDmPolicy = createScopedDmSecurityResolver({
39
21
  channelKey: "discord",
@@ -75,7 +57,7 @@ const collectDiscordSecurityFindings = createConditionalWarningCollector.finding
75
57
  severity: "warn",
76
58
  title: "Discord security warning"
77
59
  });
78
- const loadDiscordSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit.runtime-DHtYenx9.mjs"));
60
+ const loadDiscordSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-Cdaegq7C.mjs").then((n) => n.n));
79
61
  const discordSecurityAdapter = {
80
62
  resolveDmPolicy: resolveDiscordDmPolicy,
81
63
  collectWarnings: collectDiscordSecurityFindings,
@@ -119,7 +101,7 @@ const DISCORD_LEGACY_CONFIG_RULES = [];
119
101
  //#region extensions/discord/src/shared.ts
120
102
  const DISCORD_CHANNEL = "discord";
121
103
  const livePolicyConfigPrefixes = Object.keys(selectDiscordLivePolicyConfig({})).flatMap((key) => [`channels.discord.${key}`, `channels.discord.accounts.*.${key}`]);
122
- const loadDiscordDoctorModule = createLazyRuntimeModule(() => import("./doctor-DxcdkXzz.mjs"));
104
+ const loadDiscordDoctorModule = createLazyRuntimeModule(() => import("./doctor-BCl1H5tl.mjs"));
123
105
  const discordDoctor = {
124
106
  dmAllowFromMode: "topOnly",
125
107
  groupModel: "route",
@@ -165,7 +147,18 @@ function createDiscordPluginBase(params) {
165
147
  id: DISCORD_CHANNEL,
166
148
  setupContract: params.setupContract,
167
149
  ...params.setupWizard ? { setupWizard: params.setupWizard } : {},
168
- meta: { ...getChatChannelMeta(DISCORD_CHANNEL) },
150
+ meta: {
151
+ id: "discord",
152
+ label: "Discord",
153
+ selectionLabel: "Discord (Bot API)",
154
+ detailLabel: "Discord Bot",
155
+ docsPath: "/channels/discord",
156
+ docsLabel: "discord",
157
+ blurb: "very well supported right now.",
158
+ systemImage: "bubble.left.and.bubble.right",
159
+ markdownCapable: true,
160
+ preferSessionLookupForAnnounceTarget: true
161
+ },
169
162
  capabilities: {
170
163
  chatTypes: [
171
164
  "direct",
@@ -203,10 +196,10 @@ function createDiscordPluginBase(params) {
203
196
  hasConfiguredState: ({ env }) => typeof env?.DISCORD_BOT_TOKEN === "string" && env.DISCORD_BOT_TOKEN.trim().length > 0,
204
197
  isEnabled: (account, cfg) => isDiscordAccountEnabledForRuntime(account, cfg),
205
198
  disabledReason: (account, cfg) => resolveDiscordAccountDisabledReason(account, cfg),
206
- isConfigured: (account) => resolveConfiguredFromCredentialStatuses$1(account) ?? Boolean(account.token?.trim()),
199
+ isConfigured: (account) => resolveConfiguredFromCredentialStatuses(account) ?? Boolean(account.token?.trim()),
207
200
  describeAccount: (account) => describeAccountSnapshot({
208
201
  account,
209
- configured: resolveConfiguredFromCredentialStatuses$1(account) ?? Boolean(account.token?.trim()),
202
+ configured: resolveConfiguredFromCredentialStatuses(account) ?? Boolean(account.token?.trim()),
210
203
  extra: {
211
204
  tokenSource: account.tokenSource,
212
205
  tokenStatus: account.tokenStatus
@@ -224,4 +217,4 @@ function createDiscordPluginBase(params) {
224
217
  };
225
218
  }
226
219
  //#endregion
227
- export { discordSecurityAdapter as a, buildTokenChannelStatusSummary as c, discordSetupContract as i, projectCredentialSnapshotFields as l, discordConfigAdapter as n, DEFAULT_ACCOUNT_ID$1 as o, DISCORD_LEGACY_CONFIG_RULES as r, PAIRING_APPROVED_MESSAGE as s, createDiscordPluginBase as t, resolveConfiguredFromCredentialStatuses$1 as u };
220
+ export { discordSecurityAdapter as a, discordSetupContract as i, discordConfigAdapter as n, DISCORD_LEGACY_CONFIG_RULES as r, createDiscordPluginBase as t };
@@ -1,10 +1,9 @@
1
- import { Ut as __exportAll } from "./discord-BXpHW-cu.mjs";
2
- import { s as ensureBindingsLoadedAsync } from "./thread-bindings.state-BThFQEga.mjs";
3
- import { o as unbindThreadBindingsBySessionKey, r as listThreadBindingsBySessionKey } from "./thread-bindings-CK5272V3.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
+ import { u as ensureBindingsLoadedAsync } from "./thread-bindings.state-g6v9zAym.mjs";
3
+ import { o as listThreadBindingsBySessionKey, u as unbindThreadBindingsBySessionKeyAsync } from "./thread-bindings-D7TfgjR_.mjs";
4
4
  import { normalizeOptionalLowercaseString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/discord/src/subagent-hooks.ts
6
6
  var subagent_hooks_exports = /* @__PURE__ */ __exportAll({
7
- ensureBindingsLoadedAsync: () => ensureBindingsLoadedAsync,
8
7
  handleDiscordSubagentDeliveryTarget: () => handleDiscordSubagentDeliveryTarget,
9
8
  handleDiscordSubagentDeliveryTargetAsync: () => handleDiscordSubagentDeliveryTargetAsync,
10
9
  handleDiscordSubagentEnded: () => handleDiscordSubagentEnded
@@ -13,8 +12,8 @@ function normalizeThreadBindingTargetKind(raw) {
13
12
  const normalized = normalizeOptionalLowercaseString(raw);
14
13
  if (normalized === "subagent" || normalized === "acp") return normalized;
15
14
  }
16
- function handleDiscordSubagentEnded(event) {
17
- unbindThreadBindingsBySessionKey({
15
+ async function handleDiscordSubagentEnded(event) {
16
+ await unbindThreadBindingsBySessionKeyAsync({
18
17
  targetSessionKey: event.targetSessionKey,
19
18
  accountId: event.accountId,
20
19
  targetKind: normalizeThreadBindingTargetKind(event.targetKind),
@@ -0,0 +1,33 @@
1
+ import { t as discord_exports } from "./discord-0xJYfdDD.mjs";
2
+ import { S as formatDiscordUserTag } from "./channel-type-DRCrEMss.mjs";
3
+ //#region extensions/discord/src/monitor/system-events.ts
4
+ const SYSTEM_EVENT_ACTIONS = /* @__PURE__ */ new Map([
5
+ [discord_exports.MessageType.ChannelPinnedMessage, "pinned a message"],
6
+ [discord_exports.MessageType.RecipientAdd, "added a recipient"],
7
+ [discord_exports.MessageType.RecipientRemove, "removed a recipient"],
8
+ [discord_exports.MessageType.UserJoin, "user joined"],
9
+ [discord_exports.MessageType.GuildBoost, "boosted the server"],
10
+ [discord_exports.MessageType.GuildBoostTier1, "boosted the server (Tier 1 reached)"],
11
+ [discord_exports.MessageType.GuildBoostTier2, "boosted the server (Tier 2 reached)"],
12
+ [discord_exports.MessageType.GuildBoostTier3, "boosted the server (Tier 3 reached)"],
13
+ [discord_exports.MessageType.ThreadCreated, "created a thread"],
14
+ [discord_exports.MessageType.AutoModerationAction, "auto moderation action"],
15
+ [discord_exports.MessageType.GuildIncidentAlertModeEnabled, "raid protection enabled"],
16
+ [discord_exports.MessageType.GuildIncidentAlertModeDisabled, "raid protection disabled"],
17
+ [discord_exports.MessageType.GuildIncidentReportRaid, "raid reported"],
18
+ [discord_exports.MessageType.GuildIncidentReportFalseAlarm, "raid report marked false alarm"],
19
+ [discord_exports.MessageType.StageStart, "stage started"],
20
+ [discord_exports.MessageType.StageEnd, "stage ended"],
21
+ [discord_exports.MessageType.StageSpeaker, "stage speaker updated"],
22
+ [discord_exports.MessageType.StageTopic, "stage topic updated"],
23
+ [discord_exports.MessageType.PollResult, "poll results posted"],
24
+ [discord_exports.MessageType.PurchaseNotification, "purchase notification"]
25
+ ]);
26
+ function resolveDiscordSystemEvent(message, location) {
27
+ const action = message.type === void 0 ? void 0 : SYSTEM_EVENT_ACTIONS.get(message.type);
28
+ if (!action) return null;
29
+ const authorLabel = message.author ? formatDiscordUserTag(message.author) : "";
30
+ return `Discord system: ${authorLabel ? `${authorLabel} ` : ""}${action} in ${location}`;
31
+ }
32
+ //#endregion
33
+ export { resolveDiscordSystemEvent };
@@ -1,11 +1,8 @@
1
- import { Ut as __exportAll } from "./discord-BXpHW-cu.mjs";
2
- import { c as resolveDiscordAccount, l as resolveDiscordAccountAllowFrom } from "./accounts-CwJQoLjM.mjs";
3
- import { a as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live--EGTH0DC.mjs";
4
- import { m as allowFromContainsDiscordUserId, y as parseDiscordTarget } from "./retry-DBfcEgmO.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
+ import { c as resolveDiscordAccount, l as resolveDiscordAccountAllowFrom } from "./accounts-ChaMcixG.mjs";
3
+ import { a as rememberDiscordDirectoryUser, r as listDiscordDirectoryPeersLive } from "./directory-live-DtKRHuGV.mjs";
4
+ import { b as parseDiscordTarget, h as allowFromContainsDiscordUserId } from "./retry-pz_cSha2.mjs";
5
5
  import { buildMessagingTarget } from "openclaw/plugin-sdk/channel-targets";
6
- //#region extensions/discord/src/send-target-parsing.ts
7
- const parseDiscordSendTarget = (raw, options = {}) => parseDiscordTarget(raw, options);
8
- //#endregion
9
6
  //#region extensions/discord/src/target-resolver.ts
10
7
  var target_resolver_exports = /* @__PURE__ */ __exportAll({
11
8
  parseAndResolveDiscordTarget: () => parseAndResolveDiscordTarget,
@@ -23,7 +20,7 @@ async function resolveDiscordTarget(raw, options, parseOptions = {}) {
23
20
  if (/^\d+$/.test(trimmed) && parseOptions.defaultKind !== "user" && isConfiguredAllowedDiscordDmUser(trimmed, options)) return buildMessagingTarget("user", trimmed, trimmed);
24
21
  const directParse = safeParseDiscordTarget(trimmed, parseOptions);
25
22
  if (directParse && directParse.kind !== "channel" && !likelyUsername) return directParse;
26
- if (!shouldLookup) return directParse ?? parseDiscordSendTarget(trimmed, parseOptions);
23
+ if (!shouldLookup) return directParse ?? parseDiscordTarget(trimmed, parseOptions);
27
24
  try {
28
25
  const match = (await listDiscordDirectoryPeersLive({
29
26
  ...options,
@@ -48,16 +45,16 @@ async function resolveDiscordTarget(raw, options, parseOptions = {}) {
48
45
  return buildMessagingTarget("user", userId, trimmed);
49
46
  }
50
47
  } catch {}
51
- return parseDiscordSendTarget(trimmed, parseOptions);
48
+ return parseDiscordTarget(trimmed, parseOptions);
52
49
  }
53
50
  async function parseAndResolveDiscordTarget(raw, options, parseOptions = {}) {
54
- const resolved = await resolveDiscordTarget(raw, options, parseOptions) ?? parseDiscordSendTarget(raw, parseOptions);
51
+ const resolved = await resolveDiscordTarget(raw, options, parseOptions);
55
52
  if (!resolved) throw new Error("Recipient is required for Discord sends");
56
53
  return resolved;
57
54
  }
58
55
  function safeParseDiscordTarget(input, options) {
59
56
  try {
60
- return parseDiscordSendTarget(input, options);
57
+ return parseDiscordTarget(input, options);
61
58
  } catch {
62
59
  return;
63
60
  }
@@ -81,4 +78,4 @@ function isLikelyUsername(input) {
81
78
  return true;
82
79
  }
83
80
  //#endregion
84
- export { parseDiscordSendTarget as i, resolveDiscordTarget as n, target_resolver_exports as r, parseAndResolveDiscordTarget as t };
81
+ export { resolveDiscordTarget as n, target_resolver_exports as r, parseAndResolveDiscordTarget as t };
@@ -0,0 +1,3 @@
1
+ import "./retry-pz_cSha2.mjs";
2
+ import "./target-resolver-BuLapkhy.mjs";
3
+ export {};
@@ -1,12 +1,12 @@
1
- import { Ut as __exportAll } from "./discord-BXpHW-cu.mjs";
2
- import { y as parseDiscordTarget } from "./retry-DBfcEgmO.mjs";
3
- import "./targets-D1mAB5yO.mjs";
4
- import { C as resolveThreadBindingMaxAgeMs$1, D as shouldPersistBindingMutations, S as resolveThreadBindingMaxAgeExpiresAt, b as resolveThreadBindingIdleTimeoutMs$1, f as normalizeThreadId, g as removeBindingRecord, l as getThreadBindingToken, n as MANAGERS_BY_ACCOUNT_ID, p as refreshUnboundThreadWebhookIdentity, t as BINDINGS_BY_THREAD_ID, w as saveBindingsToDisk, x as resolveThreadBindingInactivityExpiresAt } from "./thread-bindings.state-BThFQEga.mjs";
5
- import { n as setThreadBindingMaxAgeBySessionKey, r as resolveBindingIdsForTargetSession, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-DCQq1WZ5.mjs";
6
- import { c as resolveThreadBindingPersona, d as resolveThreadBindingIntroText, f as resolveThreadBindingThreadName, i as getThreadBindingManager, l as resolveThreadBindingPersonaFromRecord, n as createThreadBindingManager, s as resolveChannelIdForBinding, t as createNoopThreadBindingManager, u as formatThreadBindingDurationLabel } from "./thread-bindings.manager-eexkKyrG.mjs";
1
+ import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
+ import { b as parseDiscordTarget } from "./retry-pz_cSha2.mjs";
3
+ import "./targets-0KUcEIYx.mjs";
4
+ import { D as resolveThreadBindingMaxAgeMs$1, E as resolveThreadBindingMaxAgeExpiresAt, T as resolveThreadBindingInactivityExpiresAt, _ as refreshUnboundThreadWebhookIdentity, f as getThreadBindingToken, n as MANAGERS_BY_ACCOUNT_ID, t as BINDINGS_BY_THREAD_ID, w as resolveThreadBindingIdleTimeoutMs$1 } from "./thread-bindings.state-g6v9zAym.mjs";
5
+ import { a as mutateBindingsForTargetSession, i as setThreadBindingMaxAgeBySessionKeyAsync, n as setThreadBindingIdleTimeoutBySessionKeyAsync, o as resolveBindingIdsForTargetSession, r as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey, u as removeBindingRecordSync } from "./thread-bindings.session-updates-CshfKghV.mjs";
6
+ import { c as resolveThreadBindingPersonaFromRecord, i as createNoopThreadBindingManager, n as getThreadBindingManager, o as resolveChannelIdForBinding, s as resolveThreadBindingPersona, t as createThreadBindingManager } from "./thread-bindings.manager-DN-NissX.mjs";
7
7
  import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
8
- import { normalizeOptionalLowercaseString, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
9
- import { resolveThreadBindingIdleTimeoutMs, resolveThreadBindingMaxAgeMs, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
8
+ import { normalizeOptionalLowercaseString, normalizeOptionalString, normalizeOptionalStringifiedId, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { formatThreadBindingDurationLabel as formatThreadBindingDurationLabel$1, resolveThreadBindingIdleTimeoutMs, resolveThreadBindingIntroText, resolveThreadBindingIntroText as resolveThreadBindingIntroText$1, resolveThreadBindingMaxAgeMs, resolveThreadBindingThreadName, resolveThreadBindingThreadName as resolveThreadBindingThreadName$1, resolveThreadBindingsEnabled } from "openclaw/plugin-sdk/conversation-runtime";
10
10
  import { readAcpSessionEntry } from "openclaw/plugin-sdk/acp-runtime";
11
11
  import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
12
12
  //#region extensions/discord/src/monitor/thread-bindings.config.ts
@@ -32,9 +32,7 @@ function resolveDiscordThreadBindingMaxAgeMs(params) {
32
32
  //#region extensions/discord/src/monitor/thread-bindings.lifecycle.ts
33
33
  const ACP_STARTUP_HEALTH_PROBE_CONCURRENCY_LIMIT = 8;
34
34
  function listThreadBindingsForAccount(accountId) {
35
- const manager = getThreadBindingManager(accountId);
36
- if (!manager) return [];
37
- return manager.listBindings();
35
+ return getThreadBindingManager(accountId)?.listBindings() ?? [];
38
36
  }
39
37
  function listThreadBindingsBySessionKey(params) {
40
38
  return resolveBindingIdsForTargetSession(params).map((bindingKey) => BINDINGS_BY_THREAD_ID.get(bindingKey)).filter((entry) => Boolean(entry));
@@ -44,7 +42,7 @@ async function autoBindSpawnedDiscordSubagent(params) {
44
42
  const manager = getThreadBindingManager(params.accountId);
45
43
  if (!manager) return null;
46
44
  const managerToken = getThreadBindingToken(manager.accountId);
47
- const requesterThreadId = normalizeThreadId(params.threadId);
45
+ const requesterThreadId = normalizeOptionalStringifiedId(params.threadId);
48
46
  let channelId = "";
49
47
  if (requesterThreadId) {
50
48
  const existing = manager.getByThreadId(requesterThreadId);
@@ -93,6 +91,7 @@ async function autoBindSpawnedDiscordSubagent(params) {
93
91
  })
94
92
  });
95
93
  }
94
+ /** @deprecated Public SDK compatibility; bundled callers use the awaited variant. */
96
95
  function unbindThreadBindingsBySessionKey(params) {
97
96
  const ids = resolveBindingIdsForTargetSession(params);
98
97
  if (ids.length === 0) return [];
@@ -101,28 +100,22 @@ function unbindThreadBindingsBySessionKey(params) {
101
100
  const record = BINDINGS_BY_THREAD_ID.get(bindingKey);
102
101
  if (!record) continue;
103
102
  const manager = MANAGERS_BY_ACCOUNT_ID.get(record.accountId);
104
- if (manager) {
105
- const unbound = manager.unbindThread({
106
- threadId: record.threadId,
107
- reason: params.reason,
108
- sendFarewell: params.sendFarewell,
109
- farewellText: params.farewellText
110
- });
111
- if (unbound) removed.push(unbound);
112
- continue;
113
- }
114
- const unbound = removeBindingRecord(bindingKey);
103
+ if (manager?.isStopping()) throw new Error("Discord thread binding manager is stopping");
104
+ const unbound = removeBindingRecordSync(bindingKey);
115
105
  if (unbound) {
116
- refreshUnboundThreadWebhookIdentity(unbound);
106
+ if (manager) manager.notifyUnbound(unbound, params);
107
+ else refreshUnboundThreadWebhookIdentity(unbound);
117
108
  removed.push(unbound);
118
109
  }
119
110
  }
120
- if (removed.length > 0 && shouldPersistBindingMutations()) saveBindingsToDisk({ force: true });
121
111
  return removed;
122
112
  }
123
- function resolveStoredAcpBindingHealth(params) {
124
- if (!params.session.acp) return "stale";
125
- return "healthy";
113
+ async function unbindThreadBindingsBySessionKeyAsync(input) {
114
+ const params = { ...input };
115
+ return mutateBindingsForTargetSession(params, () => null, (record, manager) => {
116
+ if (manager) manager.notifyUnbound(record, params);
117
+ else refreshUnboundThreadWebhookIdentity(record);
118
+ });
126
119
  }
127
120
  async function reconcileAcpThreadBindingsOnStartup(params) {
128
121
  const manager = getThreadBindingManager(params.accountId);
@@ -150,7 +143,7 @@ async function reconcileAcpThreadBindingsOnStartup(params) {
150
143
  continue;
151
144
  }
152
145
  if (session.storeReadFailed) continue;
153
- if (resolveStoredAcpBindingHealth({ session }) === "stale") {
146
+ if (!session.acp) {
154
147
  staleBindings.push(binding);
155
148
  continue;
156
149
  }
@@ -197,8 +190,10 @@ async function reconcileAcpThreadBindingsOnStartup(params) {
197
190
  let removed = 0;
198
191
  for (const binding of staleBindings) {
199
192
  staleSessionKeys.push(binding.targetSessionKey);
200
- if (manager.unbindThread({
193
+ if (getThreadBindingManager(manager.accountId) !== manager || manager.getByThreadId(binding.threadId) !== binding) continue;
194
+ if (await manager.unbindThread({
201
195
  threadId: binding.threadId,
196
+ expected: binding,
202
197
  reason: "stale-session",
203
198
  sendFarewell: params.sendFarewell ?? false
204
199
  })) removed += 1;
@@ -215,7 +210,7 @@ var thread_bindings_exports = /* @__PURE__ */ __exportAll({
215
210
  autoBindSpawnedDiscordSubagent: () => autoBindSpawnedDiscordSubagent,
216
211
  createNoopThreadBindingManager: () => createNoopThreadBindingManager,
217
212
  createThreadBindingManager: () => createThreadBindingManager,
218
- formatThreadBindingDurationLabel: () => formatThreadBindingDurationLabel,
213
+ formatThreadBindingDurationLabel: () => formatThreadBindingDurationLabel$1,
219
214
  getThreadBindingManager: () => getThreadBindingManager,
220
215
  listThreadBindingsBySessionKey: () => listThreadBindingsBySessionKey,
221
216
  listThreadBindingsForAccount: () => listThreadBindingsForAccount,
@@ -224,16 +219,19 @@ var thread_bindings_exports = /* @__PURE__ */ __exportAll({
224
219
  resolveDiscordThreadBindingMaxAgeMs: () => resolveDiscordThreadBindingMaxAgeMs,
225
220
  resolveThreadBindingIdleTimeoutMs: () => resolveThreadBindingIdleTimeoutMs$1,
226
221
  resolveThreadBindingInactivityExpiresAt: () => resolveThreadBindingInactivityExpiresAt,
227
- resolveThreadBindingIntroText: () => resolveThreadBindingIntroText,
222
+ resolveThreadBindingIntroText: () => resolveThreadBindingIntroText$1,
228
223
  resolveThreadBindingMaxAgeExpiresAt: () => resolveThreadBindingMaxAgeExpiresAt,
229
224
  resolveThreadBindingMaxAgeMs: () => resolveThreadBindingMaxAgeMs$1,
230
225
  resolveThreadBindingPersona: () => resolveThreadBindingPersona,
231
226
  resolveThreadBindingPersonaFromRecord: () => resolveThreadBindingPersonaFromRecord,
232
- resolveThreadBindingThreadName: () => resolveThreadBindingThreadName,
227
+ resolveThreadBindingThreadName: () => resolveThreadBindingThreadName$1,
233
228
  resolveThreadBindingsEnabled: () => resolveThreadBindingsEnabled,
234
229
  setThreadBindingIdleTimeoutBySessionKey: () => setThreadBindingIdleTimeoutBySessionKey,
230
+ setThreadBindingIdleTimeoutBySessionKeyAsync: () => setThreadBindingIdleTimeoutBySessionKeyAsync,
235
231
  setThreadBindingMaxAgeBySessionKey: () => setThreadBindingMaxAgeBySessionKey,
236
- unbindThreadBindingsBySessionKey: () => unbindThreadBindingsBySessionKey
232
+ setThreadBindingMaxAgeBySessionKeyAsync: () => setThreadBindingMaxAgeBySessionKeyAsync,
233
+ unbindThreadBindingsBySessionKey: () => unbindThreadBindingsBySessionKey,
234
+ unbindThreadBindingsBySessionKeyAsync: () => unbindThreadBindingsBySessionKeyAsync
237
235
  });
238
236
  //#endregion
239
- export { reconcileAcpThreadBindingsOnStartup as a, resolveDiscordThreadBindingMaxAgeMs as c, listThreadBindingsForAccount as i, resolveThreadBindingsEnabled as l, autoBindSpawnedDiscordSubagent as n, unbindThreadBindingsBySessionKey as o, listThreadBindingsBySessionKey as r, resolveDiscordThreadBindingIdleTimeoutMs as s, thread_bindings_exports as t };
237
+ export { autoBindSpawnedDiscordSubagent as a, reconcileAcpThreadBindingsOnStartup as c, resolveDiscordThreadBindingIdleTimeoutMs as d, resolveDiscordThreadBindingMaxAgeMs as f, thread_bindings_exports as i, unbindThreadBindingsBySessionKey as l, resolveThreadBindingIntroText$1 as n, listThreadBindingsBySessionKey as o, resolveThreadBindingsEnabled as p, resolveThreadBindingThreadName$1 as r, listThreadBindingsForAccount as s, formatThreadBindingDurationLabel$1 as t, unbindThreadBindingsBySessionKeyAsync as u };