@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,678 +0,0 @@
1
- import { Ut as __exportAll, pt as getChannel, tt as createChannelWebhook } from "./discord-BXpHW-cu.mjs";
2
- import { t as isDiscordThreadChannelType } from "./channel-type-DKnjV1XW.mjs";
3
- import { b as resolveDiscordChannelId, t as canFallbackDiscordWebhookSend } from "./retry-DBfcEgmO.mjs";
4
- import { P as createDiscordRestClient } from "./send.shared-Zwx6BxQ5.mjs";
5
- import { t as sendMessageDiscord } from "./send.outbound-D0hQ7s50.mjs";
6
- import { n as resolveDiscordChannelInfoSafe, t as resolveDiscordChannelIdSafe } from "./channel-access-C12aDZ0p.mjs";
7
- import { c as sendWebhookMessageDiscord, u as createThreadDiscord } from "./send-CKDczUNL.mjs";
8
- import { C as resolveThreadBindingMaxAgeMs$1, E as shouldDefaultPersist, T as setBindingRecord, _ as resolveBindingIdsForSession, a as THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS, b as resolveThreadBindingIdleTimeoutMs$1, c as forgetThreadBindingToken, d as normalizeThreadBindingDurationMs, f as normalizeThreadId, g as removeBindingRecord, h as rememberThreadBindingToken, i as REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL, k as toReusableWebhookKey, l as getThreadBindingToken, m as rememberReusableWebhook, n as MANAGERS_BY_ACCOUNT_ID, o as ensureBindingsLoaded, p as refreshUnboundThreadWebhookIdentity, r as PERSIST_BY_ACCOUNT_ID, s as ensureBindingsLoadedAsync, t as BINDINGS_BY_THREAD_ID, u as normalizeTargetKind, v as resolveBindingRecordKey, w as saveBindingsToDisk, y as resolvePreparedThreadBindingLifecycle } from "./thread-bindings.state-BThFQEga.mjs";
9
- import { parseStrictNonNegativeInteger } from "openclaw/plugin-sdk/number-runtime";
10
- import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
11
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
12
- import { getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
13
- import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
14
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
15
- import { SYSTEM_MARK } from "openclaw/plugin-sdk/text-chunking";
16
- import { formatThreadBindingDurationLabel, registerSessionBindingAdapter, resolveThreadBindingConversationIdFromBindingId, resolveThreadBindingFarewellText, resolveThreadBindingIntroText, resolveThreadBindingThreadName, unregisterSessionBindingAdapter } from "openclaw/plugin-sdk/conversation-runtime";
17
- import { resolveSessionAgentIdStrict } from "openclaw/plugin-sdk/agent-scope-runtime";
18
- //#region extensions/discord/src/monitor/thread-bindings.persona.ts
19
- const THREAD_BINDING_PERSONA_MAX_CHARS = 80;
20
- function normalizePersonaLabel(value) {
21
- if (!value) return;
22
- return value.replace(/\s+/g, " ").trim() || void 0;
23
- }
24
- function resolveThreadBindingPersona(params) {
25
- const base = normalizePersonaLabel(params.label) || normalizePersonaLabel(params.agentId) || "agent";
26
- return truncateUtf16Safe(`${SYSTEM_MARK} ${base}`, THREAD_BINDING_PERSONA_MAX_CHARS);
27
- }
28
- function resolveThreadBindingPersonaFromRecord(record) {
29
- return resolveThreadBindingPersona({
30
- label: record.label,
31
- agentId: record.agentId
32
- });
33
- }
34
- //#endregion
35
- //#region extensions/discord/src/monitor/thread-bindings.types.ts
36
- const THREAD_BINDINGS_SWEEP_INTERVAL_MS = 12e4;
37
- const DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS = 864e5;
38
- //#endregion
39
- //#region extensions/discord/src/monitor/thread-bindings.discord-api.ts
40
- const log = createSubsystemLogger("discord/thread-bindings");
41
- function buildThreadTarget(threadId) {
42
- return /^(channel:|user:)/i.test(threadId) ? threadId : `channel:${threadId}`;
43
- }
44
- function isThreadArchived(raw) {
45
- if (!raw || typeof raw !== "object") return false;
46
- const asRecord = raw;
47
- if (asRecord.archived === true) return true;
48
- if (asRecord.thread_metadata?.archived === true) return true;
49
- if (asRecord.threadMetadata?.archived === true) return true;
50
- return false;
51
- }
52
- function normalizeDiscordBindingChannelId(raw) {
53
- const trimmed = normalizeOptionalString(raw) ?? "";
54
- if (!trimmed) return null;
55
- try {
56
- return resolveDiscordChannelId(trimmed);
57
- } catch {
58
- return null;
59
- }
60
- }
61
- function summarizeDiscordError(err) {
62
- if (err instanceof Error) return err.message;
63
- if (typeof err === "string") return err;
64
- if (typeof err === "number" || typeof err === "boolean" || typeof err === "bigint" || typeof err === "symbol") return String(err);
65
- return "error";
66
- }
67
- function extractNumericDiscordErrorValue(value) {
68
- return parseStrictNonNegativeInteger(value);
69
- }
70
- function extractDiscordErrorStatus(err) {
71
- if (!err || typeof err !== "object") return;
72
- const candidate = err;
73
- return extractNumericDiscordErrorValue(candidate.status) ?? extractNumericDiscordErrorValue(candidate.statusCode) ?? extractNumericDiscordErrorValue(candidate.response?.status);
74
- }
75
- function extractDiscordErrorCode(err) {
76
- if (!err || typeof err !== "object") return;
77
- const candidate = err;
78
- return extractNumericDiscordErrorValue(candidate.code) ?? extractNumericDiscordErrorValue(candidate.rawError?.code) ?? extractNumericDiscordErrorValue(candidate.body?.code) ?? extractNumericDiscordErrorValue(candidate.response?.body?.code) ?? extractNumericDiscordErrorValue(candidate.response?.data?.code);
79
- }
80
- function isDiscordThreadGoneError(err) {
81
- if (extractDiscordErrorCode(err) === 10003) return true;
82
- const status = extractDiscordErrorStatus(err);
83
- return status === 404 || status === 403;
84
- }
85
- async function maybeSendBindingMessage(params) {
86
- const text = params.text.trim();
87
- if (!text) return;
88
- const record = params.record;
89
- if (params.preferWebhook !== false && record.webhookId && record.webhookToken) try {
90
- await sendWebhookMessageDiscord(text, {
91
- cfg: params.cfg,
92
- webhookId: record.webhookId,
93
- webhookToken: record.webhookToken,
94
- accountId: record.accountId,
95
- threadId: record.threadId,
96
- username: resolveThreadBindingPersonaFromRecord(record)
97
- });
98
- return;
99
- } catch (err) {
100
- const fallbackToBot = canFallbackDiscordWebhookSend(err);
101
- log.warn("discord thread binding webhook send failed", {
102
- error: summarizeDiscordError(err),
103
- fallbackToBot
104
- });
105
- if (!fallbackToBot) return;
106
- }
107
- try {
108
- await sendMessageDiscord(buildThreadTarget(record.threadId), text, {
109
- cfg: params.cfg,
110
- accountId: record.accountId
111
- });
112
- } catch (err) {
113
- logVerbose(`discord thread binding fallback send failed: ${summarizeDiscordError(err)}`);
114
- }
115
- }
116
- async function createWebhookForChannel(params) {
117
- try {
118
- const rest = createDiscordRestClient({
119
- cfg: params.cfg,
120
- accountId: params.accountId,
121
- token: params.token
122
- }).rest;
123
- const created = await createChannelWebhook(rest, params.channelId, { body: { name: "OpenClaw Agents" } });
124
- const webhookId = normalizeOptionalString(created?.id) ?? "";
125
- const webhookToken = normalizeOptionalString(created?.token) ?? "";
126
- if (!webhookId || !webhookToken) return {};
127
- return {
128
- webhookId,
129
- webhookToken
130
- };
131
- } catch (err) {
132
- logVerbose(`discord thread binding webhook create failed for ${params.channelId}: ${summarizeDiscordError(err)}`);
133
- return {};
134
- }
135
- }
136
- function findReusableWebhook(params) {
137
- const reusableKey = toReusableWebhookKey({
138
- accountId: params.accountId,
139
- channelId: params.channelId
140
- });
141
- const cached = REUSABLE_WEBHOOKS_BY_ACCOUNT_CHANNEL.get(reusableKey);
142
- if (cached) return {
143
- webhookId: cached.webhookId,
144
- webhookToken: cached.webhookToken
145
- };
146
- for (const record of BINDINGS_BY_THREAD_ID.values()) {
147
- if (record.accountId !== params.accountId) continue;
148
- if (record.channelId !== params.channelId) continue;
149
- if (!record.webhookId || !record.webhookToken) continue;
150
- rememberReusableWebhook(record);
151
- return {
152
- webhookId: record.webhookId,
153
- webhookToken: record.webhookToken
154
- };
155
- }
156
- return {};
157
- }
158
- async function resolveChannelIdForBinding(params) {
159
- const explicit = normalizeDiscordBindingChannelId(params.channelId);
160
- if (explicit) return explicit;
161
- const lookupThreadId = normalizeDiscordBindingChannelId(params.threadId);
162
- if (!lookupThreadId) return null;
163
- try {
164
- const rest = createDiscordRestClient({
165
- cfg: params.cfg,
166
- accountId: params.accountId,
167
- token: params.token
168
- }).rest;
169
- const channel = await getChannel(rest, lookupThreadId);
170
- const channelInfo = resolveDiscordChannelInfoSafe(channel);
171
- const channelId = normalizeOptionalString(resolveDiscordChannelIdSafe(channel)) ?? "";
172
- const type = channelInfo.type;
173
- const parentId = normalizeOptionalString(channelInfo.parentId) ?? "";
174
- if (parentId && isDiscordThreadChannelType(type)) return parentId;
175
- return channelId || null;
176
- } catch (err) {
177
- logVerbose(`discord thread binding channel resolve failed for ${lookupThreadId}: ${summarizeDiscordError(err)}`);
178
- return null;
179
- }
180
- }
181
- async function createThreadForBinding(params) {
182
- try {
183
- const created = await createThreadDiscord(params.channelId, { name: params.threadName }, {
184
- cfg: params.cfg,
185
- accountId: params.accountId,
186
- token: params.token
187
- });
188
- return (normalizeOptionalString(created?.id) ?? "") || null;
189
- } catch (err) {
190
- logVerbose(`discord thread binding auto-thread create failed for ${params.channelId}: ${summarizeDiscordError(err)}`);
191
- return null;
192
- }
193
- }
194
- //#endregion
195
- //#region extensions/discord/src/monitor/thread-bindings.session-adapter.ts
196
- function normalizeChildBindingParentChannelId(raw) {
197
- const trimmed = normalizeOptionalString(raw) ?? "";
198
- if (!trimmed) return;
199
- try {
200
- return resolveDiscordChannelId(trimmed);
201
- } catch {
202
- return;
203
- }
204
- }
205
- function toSessionBindingTargetKind(raw) {
206
- return raw === "subagent" ? "subagent" : "session";
207
- }
208
- function toThreadBindingTargetKind(raw) {
209
- return raw === "subagent" ? "subagent" : "acp";
210
- }
211
- function toSessionBindingRecord(record, defaults) {
212
- const bindingId = resolveBindingRecordKey({
213
- accountId: record.accountId,
214
- threadId: record.threadId
215
- }) ?? `${record.accountId}:${record.threadId}`;
216
- const lifecycle = resolvePreparedThreadBindingLifecycle({
217
- record,
218
- ...defaults
219
- });
220
- return {
221
- bindingId,
222
- targetSessionKey: record.targetSessionKey,
223
- targetKind: toSessionBindingTargetKind(record.targetKind),
224
- conversation: {
225
- channel: "discord",
226
- accountId: record.accountId,
227
- conversationId: record.threadId,
228
- parentConversationId: record.channelId
229
- },
230
- status: "active",
231
- boundAt: record.boundAt,
232
- expiresAt: lifecycle.expiresAt,
233
- metadata: {
234
- agentId: record.agentId,
235
- label: record.label,
236
- webhookId: record.webhookId,
237
- webhookToken: record.webhookToken,
238
- boundBy: record.boundBy,
239
- lastActivityAt: record.lastActivityAt,
240
- idleTimeoutMs: lifecycle.idleTimeoutMs,
241
- maxAgeMs: lifecycle.maxAgeMs,
242
- ...record.metadata
243
- }
244
- };
245
- }
246
- function createThreadBindingSessionAdapter(params) {
247
- const serializeBinding = (entry) => toSessionBindingRecord(entry, params.defaults);
248
- return {
249
- channel: "discord",
250
- accountId: params.accountId,
251
- capabilities: { placements: ["current", "child"] },
252
- bind: async (input) => {
253
- if (input.conversation.channel !== "discord") return null;
254
- const targetSessionKey = input.targetSessionKey.trim();
255
- if (!targetSessionKey) return null;
256
- const conversationId = normalizeOptionalString(input.conversation.conversationId) ?? "";
257
- const placement = input.placement === "child" ? "child" : "current";
258
- const metadata = input.metadata ?? {};
259
- const label = normalizeOptionalString(metadata.label);
260
- const threadName = typeof metadata.threadName === "string" ? normalizeOptionalString(metadata.threadName) : void 0;
261
- const introText = typeof metadata.introText === "string" ? normalizeOptionalString(metadata.introText) : void 0;
262
- const boundBy = typeof metadata.boundBy === "string" ? normalizeOptionalString(metadata.boundBy) : void 0;
263
- const agentId = typeof metadata.agentId === "string" ? normalizeOptionalString(metadata.agentId) : void 0;
264
- let threadId;
265
- let channelId;
266
- let createThread = false;
267
- if (placement === "child") {
268
- createThread = true;
269
- channelId = normalizeChildBindingParentChannelId(input.conversation.parentConversationId);
270
- if (!channelId && conversationId) channelId = await resolveChannelIdForBinding({
271
- cfg: params.resolveCurrentCfg(),
272
- accountId: params.accountId,
273
- token: params.resolveCurrentToken(),
274
- threadId: conversationId
275
- }) ?? void 0;
276
- } else threadId = conversationId || void 0;
277
- const bound = await params.manager.bindTarget({
278
- threadId,
279
- channelId,
280
- createThread,
281
- threadName,
282
- targetKind: toThreadBindingTargetKind(input.targetKind),
283
- targetSessionKey,
284
- agentId,
285
- label,
286
- boundBy,
287
- introText,
288
- metadata
289
- });
290
- return bound ? serializeBinding(bound) : null;
291
- },
292
- listBySession: (targetSessionKey) => params.manager.listBySessionKey(targetSessionKey).map(serializeBinding),
293
- resolveByConversation: (ref) => {
294
- if (ref.channel !== "discord") return null;
295
- const binding = params.manager.getByThreadId(ref.conversationId);
296
- return binding ? serializeBinding(binding) : null;
297
- },
298
- touch: (bindingId, at) => {
299
- const threadId = resolveThreadBindingConversationIdFromBindingId({
300
- accountId: params.accountId,
301
- bindingId
302
- });
303
- if (!threadId) return;
304
- params.manager.touchThread({
305
- threadId,
306
- at,
307
- persist: true
308
- });
309
- },
310
- unbind: async (input) => {
311
- if (input.targetSessionKey?.trim()) return params.manager.unbindBySessionKey({
312
- targetSessionKey: input.targetSessionKey,
313
- reason: input.reason
314
- }).map(serializeBinding);
315
- const threadId = resolveThreadBindingConversationIdFromBindingId({
316
- accountId: params.accountId,
317
- bindingId: input.bindingId
318
- });
319
- if (!threadId) return [];
320
- const removed = params.manager.unbindThread({
321
- threadId,
322
- reason: input.reason
323
- });
324
- return removed ? [serializeBinding(removed)] : [];
325
- }
326
- };
327
- }
328
- //#endregion
329
- //#region extensions/discord/src/monitor/thread-bindings.manager.ts
330
- var thread_bindings_manager_exports = /* @__PURE__ */ __exportAll({
331
- createNoopThreadBindingManager: () => createNoopThreadBindingManager,
332
- createThreadBindingManager: () => createThreadBindingManager,
333
- createThreadBindingManagerAsync: () => createThreadBindingManagerAsync,
334
- getThreadBindingManager: () => getThreadBindingManager
335
- });
336
- function createNoopManager(accountIdRaw) {
337
- return {
338
- accountId: normalizeAccountId(accountIdRaw),
339
- getIdleTimeoutMs: () => DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS,
340
- getMaxAgeMs: () => 0,
341
- getByThreadId: () => void 0,
342
- getBySessionKey: () => void 0,
343
- listBySessionKey: () => [],
344
- listBindings: () => [],
345
- touchThread: () => null,
346
- bindTarget: async () => null,
347
- unbindThread: () => null,
348
- unbindBySessionKey: () => [],
349
- stop: () => {}
350
- };
351
- }
352
- function isDirectConversationBindingId(value) {
353
- const trimmed = normalizeOptionalString(value);
354
- return Boolean(trimmed && /^(user:|channel:)/i.test(trimmed));
355
- }
356
- function createThreadBindingManager(params) {
357
- ensureBindingsLoaded();
358
- const accountId = normalizeAccountId(params.accountId);
359
- const existing = MANAGERS_BY_ACCOUNT_ID.get(accountId);
360
- if (existing) {
361
- rememberThreadBindingToken({
362
- accountId,
363
- token: params.token
364
- });
365
- return existing;
366
- }
367
- rememberThreadBindingToken({
368
- accountId,
369
- token: params.token
370
- });
371
- const persist = params.persist ?? shouldDefaultPersist();
372
- PERSIST_BY_ACCOUNT_ID.set(accountId, persist);
373
- const idleTimeoutMs = normalizeThreadBindingDurationMs(params.idleTimeoutMs, DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS);
374
- const maxAgeMs = normalizeThreadBindingDurationMs(params.maxAgeMs, 0);
375
- const resolveCurrentCfg = () => getRuntimeConfigSnapshot() ?? params.cfg;
376
- const resolveCurrentToken = () => getThreadBindingToken(accountId) ?? params.token;
377
- const getCurrentBinding = (threadId) => MANAGERS_BY_ACCOUNT_ID.get(accountId) === manager ? manager.getByThreadId(threadId) : void 0;
378
- let sweepTimer = null;
379
- const runSweepOnce = async () => {
380
- const bindings = manager.listBindings();
381
- if (bindings.length === 0) return;
382
- let rest = null;
383
- for (const snapshotBinding of bindings) {
384
- const binding = getCurrentBinding(snapshotBinding.threadId);
385
- if (!binding) continue;
386
- const now = Date.now();
387
- const lifecycle = resolvePreparedThreadBindingLifecycle({
388
- record: binding,
389
- idleTimeoutMs,
390
- maxAgeMs
391
- });
392
- const { expiresAt, reason } = lifecycle;
393
- if (expiresAt != null && reason && now >= expiresAt) {
394
- manager.unbindThread({
395
- threadId: binding.threadId,
396
- reason,
397
- sendFarewell: true,
398
- farewellText: resolveThreadBindingFarewellText({
399
- reason,
400
- idleTimeoutMs: lifecycle.idleTimeoutMs,
401
- maxAgeMs: lifecycle.maxAgeMs
402
- })
403
- });
404
- continue;
405
- }
406
- if (isDirectConversationBindingId(binding.threadId)) continue;
407
- if (!rest) try {
408
- const cfg = resolveCurrentCfg();
409
- rest = createDiscordRestClient({
410
- cfg,
411
- accountId,
412
- token: resolveCurrentToken()
413
- }).rest;
414
- } catch {
415
- return;
416
- }
417
- try {
418
- const channel = await getChannel(rest, binding.threadId);
419
- if (getCurrentBinding(binding.threadId) !== binding) continue;
420
- if (!channel || typeof channel !== "object") {
421
- logVerbose(`discord thread binding sweep probe returned invalid payload for ${binding.threadId}`);
422
- continue;
423
- }
424
- if (isThreadArchived(channel)) manager.unbindThread({
425
- threadId: binding.threadId,
426
- reason: "thread-archived",
427
- sendFarewell: true
428
- });
429
- } catch (err) {
430
- if (getCurrentBinding(binding.threadId) !== binding) continue;
431
- if (isDiscordThreadGoneError(err)) {
432
- logVerbose(`discord thread binding sweep removing stale binding ${binding.threadId}: ${summarizeDiscordError(err)}`);
433
- manager.unbindThread({
434
- threadId: binding.threadId,
435
- reason: "thread-delete",
436
- sendFarewell: false
437
- });
438
- continue;
439
- }
440
- logVerbose(`discord thread binding sweep probe failed for ${binding.threadId}: ${summarizeDiscordError(err)}`);
441
- }
442
- }
443
- };
444
- const manager = {
445
- accountId,
446
- getIdleTimeoutMs: () => idleTimeoutMs,
447
- getMaxAgeMs: () => maxAgeMs,
448
- getByThreadId: (threadId) => {
449
- const key = resolveBindingRecordKey({
450
- accountId,
451
- threadId
452
- });
453
- if (!key) return;
454
- const entry = BINDINGS_BY_THREAD_ID.get(key);
455
- if (!entry || entry.accountId !== accountId) return;
456
- return entry;
457
- },
458
- getBySessionKey: (targetSessionKey) => {
459
- return manager.listBySessionKey(targetSessionKey)[0];
460
- },
461
- listBySessionKey: (targetSessionKey) => {
462
- return resolveBindingIdsForSession({
463
- targetSessionKey,
464
- accountId
465
- }).map((bindingKey) => BINDINGS_BY_THREAD_ID.get(bindingKey)).filter((entry) => Boolean(entry));
466
- },
467
- listBindings: () => [...BINDINGS_BY_THREAD_ID.values()].filter((entry) => entry.accountId === accountId),
468
- touchThread: (touchParams) => {
469
- const key = resolveBindingRecordKey({
470
- accountId,
471
- threadId: touchParams.threadId
472
- });
473
- if (!key) return null;
474
- const existingResult = BINDINGS_BY_THREAD_ID.get(key);
475
- if (!existingResult || existingResult.accountId !== accountId) return null;
476
- const now = Date.now();
477
- const at = typeof touchParams.at === "number" && Number.isFinite(touchParams.at) ? Math.max(0, Math.floor(touchParams.at)) : now;
478
- const nextRecord = {
479
- ...existingResult,
480
- lastActivityAt: Math.max(existingResult.lastActivityAt || 0, at)
481
- };
482
- setBindingRecord(nextRecord);
483
- if (touchParams.persist ?? persist) saveBindingsToDisk({ minIntervalMs: THREAD_BINDING_TOUCH_PERSIST_MIN_INTERVAL_MS });
484
- return nextRecord;
485
- },
486
- bindTarget: async (bindParams) => {
487
- const cfg = resolveCurrentCfg();
488
- let threadId = normalizeThreadId(bindParams.threadId);
489
- let channelId = normalizeOptionalString(bindParams.channelId) ?? "";
490
- const directConversationBinding = isDirectConversationBindingId(threadId) || isDirectConversationBindingId(channelId);
491
- if (!threadId && bindParams.createThread) {
492
- if (!channelId) return null;
493
- const threadName = resolveThreadBindingThreadName({
494
- agentId: bindParams.agentId,
495
- label: bindParams.label
496
- });
497
- threadId = await createThreadForBinding({
498
- cfg,
499
- accountId,
500
- token: resolveCurrentToken(),
501
- channelId,
502
- threadName: normalizeOptionalString(bindParams.threadName) ?? threadName
503
- }) ?? void 0;
504
- }
505
- if (!threadId) return null;
506
- if (!channelId && directConversationBinding) channelId = threadId;
507
- if (!channelId) channelId = await resolveChannelIdForBinding({
508
- cfg,
509
- accountId,
510
- token: resolveCurrentToken(),
511
- threadId,
512
- channelId: bindParams.channelId
513
- }) ?? "";
514
- if (!channelId) return null;
515
- const existingValue = manager.getByThreadId(threadId);
516
- const targetSessionKey = normalizeOptionalString(bindParams.targetSessionKey) ?? "";
517
- if (!targetSessionKey) return null;
518
- const targetKind = normalizeTargetKind(bindParams.targetKind, targetSessionKey);
519
- const previous = existingValue?.targetSessionKey === targetSessionKey && existingValue.targetKind === targetKind ? existingValue : void 0;
520
- let webhookId = normalizeOptionalString(bindParams.webhookId) ?? normalizeOptionalString(existingValue?.webhookId) ?? "";
521
- let webhookToken = normalizeOptionalString(bindParams.webhookToken) ?? normalizeOptionalString(existingValue?.webhookToken) ?? "";
522
- if (!directConversationBinding && (!webhookId || !webhookToken)) {
523
- const cachedWebhook = findReusableWebhook({
524
- accountId,
525
- channelId
526
- });
527
- webhookId = cachedWebhook.webhookId ?? "";
528
- webhookToken = cachedWebhook.webhookToken ?? "";
529
- }
530
- if (!directConversationBinding && (!webhookId || !webhookToken)) {
531
- const createdWebhook = await createWebhookForChannel({
532
- cfg,
533
- accountId,
534
- token: resolveCurrentToken(),
535
- channelId
536
- });
537
- webhookId = createdWebhook.webhookId ?? "";
538
- webhookToken = createdWebhook.webhookToken ?? "";
539
- }
540
- const now = Date.now();
541
- const record = {
542
- accountId,
543
- channelId,
544
- threadId,
545
- targetKind,
546
- targetSessionKey,
547
- agentId: normalizeOptionalString(bindParams.agentId) ?? normalizeOptionalString(previous?.agentId) ?? resolveSessionAgentIdStrict({
548
- config: cfg,
549
- sessionKey: targetSessionKey
550
- }),
551
- label: normalizeOptionalString(bindParams.label) ?? normalizeOptionalString(previous?.label),
552
- webhookId: webhookId || void 0,
553
- webhookToken: webhookToken || void 0,
554
- boundBy: normalizeOptionalString(bindParams.boundBy) ?? normalizeOptionalString(previous?.boundBy) ?? "system",
555
- boundAt: now,
556
- lastActivityAt: now,
557
- idleTimeoutMs: typeof existingValue?.idleTimeoutMs === "number" ? existingValue.idleTimeoutMs : idleTimeoutMs,
558
- maxAgeMs: typeof existingValue?.maxAgeMs === "number" ? existingValue.maxAgeMs : maxAgeMs,
559
- metadata: {
560
- ...previous?.metadata,
561
- ...bindParams.metadata
562
- }
563
- };
564
- setBindingRecord(record);
565
- if (persist) saveBindingsToDisk();
566
- const introText = bindParams.introText?.trim();
567
- if (introText && cfg) maybeSendBindingMessage({
568
- cfg,
569
- record,
570
- text: introText
571
- });
572
- return record;
573
- },
574
- unbindThread: (unbindParams) => {
575
- const bindingKey = resolveBindingRecordKey({
576
- accountId,
577
- threadId: unbindParams.threadId
578
- });
579
- if (!bindingKey) return null;
580
- const existingLocal = BINDINGS_BY_THREAD_ID.get(bindingKey);
581
- if (!existingLocal || existingLocal.accountId !== accountId) return null;
582
- const removed = removeBindingRecord(bindingKey);
583
- if (!removed) return null;
584
- refreshUnboundThreadWebhookIdentity(removed);
585
- if (persist) saveBindingsToDisk();
586
- if (unbindParams.sendFarewell !== false) {
587
- const cfg = resolveCurrentCfg();
588
- const farewell = resolveThreadBindingFarewellText({
589
- reason: unbindParams.reason,
590
- farewellText: unbindParams.farewellText,
591
- idleTimeoutMs: resolveThreadBindingIdleTimeoutMs$1({
592
- record: removed,
593
- defaultIdleTimeoutMs: idleTimeoutMs
594
- }),
595
- maxAgeMs: resolveThreadBindingMaxAgeMs$1({
596
- record: removed,
597
- defaultMaxAgeMs: maxAgeMs
598
- })
599
- });
600
- if (cfg) maybeSendBindingMessage({
601
- cfg,
602
- record: removed,
603
- text: farewell,
604
- preferWebhook: false
605
- });
606
- }
607
- return removed;
608
- },
609
- unbindBySessionKey: (unbindParams) => {
610
- const ids = resolveBindingIdsForSession({
611
- targetSessionKey: unbindParams.targetSessionKey,
612
- accountId,
613
- targetKind: unbindParams.targetKind
614
- });
615
- if (ids.length === 0) return [];
616
- const removed = [];
617
- for (const bindingKey of ids) {
618
- const binding = BINDINGS_BY_THREAD_ID.get(bindingKey);
619
- if (!binding) continue;
620
- const entry = manager.unbindThread({
621
- threadId: binding.threadId,
622
- reason: unbindParams.reason,
623
- sendFarewell: unbindParams.sendFarewell,
624
- farewellText: unbindParams.farewellText
625
- });
626
- if (entry) removed.push(entry);
627
- }
628
- return removed;
629
- },
630
- stop: () => {
631
- if (sweepTimer) {
632
- clearInterval(sweepTimer);
633
- sweepTimer = null;
634
- }
635
- if (MANAGERS_BY_ACCOUNT_ID.get(accountId) === manager) {
636
- MANAGERS_BY_ACCOUNT_ID.delete(accountId);
637
- forgetThreadBindingToken(accountId);
638
- }
639
- unregisterSessionBindingAdapter({
640
- channel: "discord",
641
- accountId,
642
- adapter: sessionBindingAdapter
643
- });
644
- }
645
- };
646
- if (params.enableSweeper !== false) {
647
- sweepTimer = setInterval(() => {
648
- runSweepOnce();
649
- }, THREAD_BINDINGS_SWEEP_INTERVAL_MS);
650
- if (!(process.env.VITEST || false)) sweepTimer.unref?.();
651
- }
652
- const sessionBindingAdapter = createThreadBindingSessionAdapter({
653
- accountId,
654
- manager,
655
- defaults: {
656
- idleTimeoutMs,
657
- maxAgeMs
658
- },
659
- resolveCurrentCfg,
660
- resolveCurrentToken
661
- });
662
- registerSessionBindingAdapter(sessionBindingAdapter);
663
- MANAGERS_BY_ACCOUNT_ID.set(accountId, manager);
664
- return manager;
665
- }
666
- async function createThreadBindingManagerAsync(params) {
667
- await ensureBindingsLoadedAsync();
668
- return createThreadBindingManager(params);
669
- }
670
- function createNoopThreadBindingManager(accountId) {
671
- return createNoopManager(accountId);
672
- }
673
- function getThreadBindingManager(accountId) {
674
- const normalized = normalizeAccountId(accountId);
675
- return MANAGERS_BY_ACCOUNT_ID.get(normalized) ?? null;
676
- }
677
- //#endregion
678
- export { thread_bindings_manager_exports as a, resolveThreadBindingPersona as c, resolveThreadBindingIntroText as d, resolveThreadBindingThreadName as f, getThreadBindingManager as i, resolveThreadBindingPersonaFromRecord as l, createThreadBindingManager as n, isThreadArchived as o, createThreadBindingManagerAsync as r, resolveChannelIdForBinding as s, createNoopThreadBindingManager as t, formatThreadBindingDurationLabel as u };