@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,17 +1,20 @@
1
- import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId } from "./accounts-CwJQoLjM.mjs";
1
+ import { C as withDiscordRequestAuthority } from "./discord-0xJYfdDD.mjs";
2
+ import { c as resolveDiscordAccount, i as listDiscordStartupAccountIds, l as resolveDiscordAccountAllowFrom, r as listDiscordAccountIds, s as resolveDefaultDiscordAccountId, u as resolveDiscordAccountConfig } from "./accounts-ChaMcixG.mjs";
2
3
  import { t as getDiscordRuntime } from "./runtime-DgnVQ7zW.mjs";
3
- import { _ as normalizeDiscordMessagingTarget, g as matchesDiscordToolContextTarget, h as looksLikeDiscordTargetId, y as parseDiscordTarget } from "./retry-DBfcEgmO.mjs";
4
+ import { _ as matchesDiscordToolContextTarget, b as parseDiscordTarget, g as looksLikeDiscordTargetId, v as normalizeDiscordMessagingTarget } from "./retry-pz_cSha2.mjs";
4
5
  import { u as withAbortTimeout } from "./timeouts-D86uWLt_.mjs";
5
- import { A as createChannelApproverDmTargetResolver, D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, M as isChannelExecApprovalClientEnabledFromConfig, N as matchesApprovalRequestFilters, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers, _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, g as resolveDiscordCurrentConversationIdentity, j as createChannelNativeOriginTargetResolver, k as createApproverRestrictedNativeApprovalCapability, t as resolveDiscordOutboundSessionRoute, v as discordMessageActions, w as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-CqWbuMOm.mjs";
6
- import { a as discordSecurityAdapter, c as buildTokenChannelStatusSummary, i as discordSetupContract, l as projectCredentialSnapshotFields, n as discordConfigAdapter, o as DEFAULT_ACCOUNT_ID, s as PAIRING_APPROVED_MESSAGE, t as createDiscordPluginBase, u as resolveConfiguredFromCredentialStatuses } from "./shared-CaA3Vv4n.mjs";
6
+ import { D as isDiscordExecApprovalClientEnabled, E as isDiscordExecApprovalApprover, O as shouldSuppressLocalDiscordExecApprovalPrompt, T as getDiscordExecApprovalApprovers, _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, t as resolveDiscordOutboundSessionRoute, v as discordMessageActions, w as resolveRequiredDiscordChannelPermissions } from "./outbound-session-route-zVGxxceg.mjs";
7
+ import { a as normalizeDiscordAcpConversationId, c as resolveDiscordInboundConversation, i as matchDiscordAcpConversation, n as discordOutbound, o as resolveDiscordAttachedOutboundTarget, r as buildDiscordCrossContextPresentation, s as resolveDiscordCommandConversation } from "./outbound-adapter-BobT-kse.mjs";
7
8
  import { r as openDiscordCommandDeployHashStore } from "./command-deploy-store-DFkBTViB.mjs";
8
- import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-_rz33QHO.mjs";
9
- import { n as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-DCQq1WZ5.mjs";
10
- import { n as discordOutbound } from "./outbound-adapter-C8v79z9Z.mjs";
9
+ import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-Caz_XuFH.mjs";
10
+ import { a as discordSecurityAdapter, i as discordSetupContract, n as discordConfigAdapter, t as createDiscordPluginBase } from "./shared-B3wZ4hN-.mjs";
11
11
  import { t as normalizeExplicitDiscordSessionKey } from "./session-key-normalization-wJgsKPNF.mjs";
12
+ import { i as setThreadBindingMaxAgeBySessionKeyAsync, n as setThreadBindingIdleTimeoutBySessionKeyAsync, r as setThreadBindingMaxAgeBySessionKey, t as setThreadBindingIdleTimeoutBySessionKey } from "./thread-bindings.session-updates-CshfKghV.mjs";
12
13
  import { t as defaultTopLevelPlacement } from "./thread-binding-api-BDZJD4na.mjs";
13
14
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
14
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeOptionalStringifiedId } from "openclaw/plugin-sdk/string-coerce-runtime";
15
+ import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
16
+ import { PAIRING_APPROVED_MESSAGE, buildTokenChannelStatusSummary, projectCredentialSnapshotFields, resolveConfiguredFromCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
17
+ import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
15
18
  import { createRuntimeConfigReader } from "openclaw/plugin-sdk/runtime-config-snapshot";
16
19
  import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
17
20
  import { createChannelMessageAdapterFromOutbound } from "openclaw/plugin-sdk/channel-outbound";
@@ -23,8 +26,10 @@ import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing
23
26
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
24
27
  import { appendMatchMetadata, createComputedAccountStatusAdapter, createDefaultChannelRuntimeState, isRecord as isRecord$1, readAccountStatusSnapshot, resolveEnabledConfiguredAccountId } from "openclaw/plugin-sdk/status-helpers";
25
28
  import { resolveTargetsWithOptionalToken } from "openclaw/plugin-sdk/target-resolver-runtime";
29
+ import { createApproverRestrictedNativeApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
26
30
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
27
- import { doesApprovalRequestSelectChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
31
+ import { createChannelApproverDmTargetResolver, createChannelNativeOriginTargetResolver, doesApprovalRequestSelectChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
32
+ import { isChannelExecApprovalClientEnabledFromConfig, matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
28
33
  import { resolveThreadBindingSpawnPolicy } from "openclaw/plugin-sdk/conversation-runtime";
29
34
  import { resolveScopeRequireMention, resolveScopeToolsPolicy, scopeKey } from "openclaw/plugin-sdk/channel-policy";
30
35
  import { normalizeAtHashSlug } from "openclaw/plugin-sdk/string-normalization-runtime";
@@ -78,14 +83,13 @@ function normalizeDiscordThreadId(value) {
78
83
  const normalized = value.trim();
79
84
  return /^\d+$/.test(normalized) ? normalized : void 0;
80
85
  }
81
- function createDiscordOriginTargetResolver(configOverride) {
86
+ function createDiscordOriginTargetResolver() {
82
87
  return createChannelNativeOriginTargetResolver({
83
88
  channel: "discord",
84
89
  shouldHandleRequest: ({ cfg, accountId, request }) => shouldHandleDiscordApprovalRequest({
85
90
  cfg,
86
91
  accountId,
87
- request,
88
- configOverride
92
+ request
89
93
  }),
90
94
  resolveTurnSourceTarget: (request) => {
91
95
  const sessionConversation = resolveApprovalRequestSessionConversation({
@@ -97,7 +101,7 @@ function createDiscordOriginTargetResolver(configOverride) {
97
101
  const turnSourceChannel = normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel);
98
102
  const rawTurnSourceTo = normalizeOptionalString(request.request.turnSourceTo) ?? "";
99
103
  const turnSourceTo = normalizeDiscordOriginChannelId(rawTurnSourceTo);
100
- const threadId = normalizeDiscordThreadId(request.request.turnSourceThreadId) ?? normalizeDiscordThreadId(sessionConversation?.threadId) ?? void 0;
104
+ const threadId = normalizeDiscordThreadId(request.request.turnSourceThreadId) ?? normalizeDiscordThreadId(sessionConversation?.threadId);
101
105
  const hasExplicitOriginTarget = /^(?:channel|group):/i.test(rawTurnSourceTo);
102
106
  if (turnSourceChannel !== "discord" || !turnSourceTo || sessionKind === "dm") return null;
103
107
  return hasExplicitOriginTarget || sessionKind === "channel" || sessionKind === "group" ? {
@@ -115,7 +119,7 @@ function createDiscordOriginTargetResolver(configOverride) {
115
119
  const targetTo = normalizeDiscordOriginChannelId(sessionTarget.to);
116
120
  return targetTo ? {
117
121
  to: targetTo,
118
- threadId: normalizeDiscordThreadId(sessionTarget.threadId) ?? normalizeDiscordThreadId(sessionConversation?.threadId) ?? void 0
122
+ threadId: normalizeDiscordThreadId(sessionTarget.threadId) ?? normalizeDiscordThreadId(sessionConversation?.threadId)
119
123
  } : null;
120
124
  },
121
125
  resolveFallbackTarget: (request) => {
@@ -128,58 +132,53 @@ function createDiscordOriginTargetResolver(configOverride) {
128
132
  const fallbackChannelId = normalizeDiscordOriginChannelId(sessionConversation?.id);
129
133
  return fallbackChannelId ? {
130
134
  to: fallbackChannelId,
131
- threadId: normalizeDiscordThreadId(sessionConversation?.threadId) ?? void 0
135
+ threadId: normalizeDiscordThreadId(sessionConversation?.threadId)
132
136
  } : null;
133
137
  }
134
138
  });
135
139
  }
136
- function createDiscordApproverDmTargetResolver(configOverride) {
140
+ function createDiscordApproverDmTargetResolver() {
137
141
  return createChannelApproverDmTargetResolver({
138
142
  shouldHandleRequest: ({ cfg, accountId, request }) => shouldHandleDiscordApprovalRequest({
139
143
  cfg,
140
144
  accountId,
141
- request,
142
- configOverride
145
+ request
143
146
  }),
144
147
  resolveApprovers: ({ cfg, accountId }) => getDiscordExecApprovalApprovers({
145
148
  cfg,
146
- accountId,
147
- configOverride
149
+ accountId
148
150
  }),
149
151
  mapApprover: (approver) => ({ to: approver })
150
152
  });
151
153
  }
152
- function createDiscordApprovalCapability(configOverride) {
154
+ function createDiscordApprovalCapability() {
153
155
  return createApproverRestrictedNativeApprovalCapability({
154
156
  channel: "discord",
155
157
  channelLabel: "Discord",
156
158
  describeExecApprovalSetup: ({ accountId }) => {
157
159
  const prefix = accountId && accountId !== "default" ? `channels.discord.accounts.${accountId}` : "channels.discord";
158
- return `Approve it from the Web UI or terminal UI for now. Discord supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`; set \`${prefix}.execApprovals.enabled\` to \`auto\` or \`true\`.`;
160
+ return `Approve it from the Web UI for now. Discord supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`; set \`${prefix}.execApprovals.enabled\` to \`auto\` or \`true\`.`;
159
161
  },
160
162
  listAccountIds: listDiscordAccountIds,
161
163
  hasApprovers: ({ cfg, accountId }) => getDiscordExecApprovalApprovers({
162
164
  cfg,
163
- accountId,
164
- configOverride
165
+ accountId
165
166
  }).length > 0,
166
167
  isExecAuthorizedSender: ({ cfg, accountId, senderId }) => isDiscordExecApprovalApprover({
167
168
  cfg,
168
169
  accountId,
169
- senderId,
170
- configOverride
170
+ senderId
171
171
  }),
172
172
  isNativeDeliveryEnabled: ({ cfg, accountId }) => isDiscordExecApprovalClientEnabled({
173
173
  cfg,
174
- accountId,
175
- configOverride
174
+ accountId
176
175
  }),
177
- resolveNativeDeliveryMode: ({ cfg, accountId }) => configOverride?.target ?? resolveDiscordAccount({
176
+ resolveNativeDeliveryMode: ({ cfg, accountId }) => resolveDiscordAccount({
178
177
  cfg,
179
178
  accountId
180
179
  }).config.execApprovals?.target ?? "dm",
181
- resolveOriginTarget: createDiscordOriginTargetResolver(configOverride),
182
- resolveApproverDmTargets: createDiscordApproverDmTargetResolver(configOverride),
180
+ resolveOriginTarget: createDiscordOriginTargetResolver(),
181
+ resolveApproverDmTargets: createDiscordApproverDmTargetResolver(),
183
182
  notifyOriginWhenDmOnly: true,
184
183
  nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({
185
184
  capabilityBoundary: true,
@@ -190,16 +189,14 @@ function createDiscordApprovalCapability(configOverride) {
190
189
  ],
191
190
  isConfigured: ({ cfg, accountId }) => isDiscordExecApprovalClientEnabled({
192
191
  cfg,
193
- accountId,
194
- configOverride
192
+ accountId
195
193
  }),
196
194
  shouldHandle: ({ cfg, accountId, request }) => shouldHandleDiscordApprovalRequest({
197
195
  cfg,
198
196
  accountId,
199
- request,
200
- configOverride
197
+ request
201
198
  }),
202
- load: async () => (await import("./approval-handler.runtime-Du3n5ypX.mjs")).discordApprovalNativeRuntime
199
+ load: async () => (await import("./approval-handler.runtime-DxCK2Rux.mjs")).discordApprovalNativeRuntime
203
200
  })
204
201
  });
205
202
  }
@@ -209,122 +206,28 @@ function getDiscordApprovalCapability() {
209
206
  return cachedDiscordApprovalCapability;
210
207
  }
211
208
  //#endregion
212
- //#region extensions/discord/src/channel.conversation.ts
213
- function resolveDiscordAttachedOutboundTarget(params) {
214
- if (params.threadId == null) return params.to;
215
- const threadId = normalizeOptionalStringifiedId(params.threadId) ?? "";
216
- return threadId ? `channel:${threadId}` : params.to;
217
- }
218
- function buildDiscordCrossContextPresentation(params) {
219
- return {
220
- tone: "neutral",
221
- blocks: [...params.message.trim() ? [{
222
- type: "text",
223
- text: params.message
224
- }, { type: "divider" }] : [], {
225
- type: "context",
226
- text: `From ${params.originLabel}`
227
- }]
228
- };
229
- }
230
- function normalizeDiscordAcpConversationId(conversationId) {
231
- const normalized = conversationId.trim();
232
- return normalized ? { conversationId: normalized } : null;
233
- }
234
- function matchDiscordAcpConversation(params) {
235
- if (params.bindingConversationId === params.conversationId) return {
236
- conversationId: params.conversationId,
237
- matchPriority: 2
238
- };
239
- if (params.parentConversationId && params.parentConversationId !== params.conversationId && params.bindingConversationId === params.parentConversationId) return {
240
- conversationId: params.parentConversationId,
241
- matchPriority: 1
242
- };
243
- return null;
244
- }
245
- function resolveDiscordConversationIdFromTargets(targets) {
246
- for (const raw of targets) {
247
- const trimmed = raw?.trim();
248
- if (!trimmed) continue;
249
- try {
250
- const target = parseDiscordTarget(trimmed, { defaultKind: "channel" });
251
- if (target?.normalized) return target.normalized;
252
- } catch {
253
- const mentionMatch = trimmed.match(/^<#(\d+)>$/);
254
- if (mentionMatch?.[1]) return `channel:${mentionMatch[1]}`;
255
- if (/^\d{6,}$/.test(trimmed)) return normalizeDiscordMessagingTarget(trimmed);
256
- }
257
- }
258
- }
259
- function parseDiscordParentChannelFromSessionKey(raw) {
260
- const sessionKey = normalizeLowercaseStringOrEmpty(raw);
261
- if (!sessionKey) return;
262
- const match = sessionKey.match(/(?:^|:)channel:([^:]+)$/);
263
- return match?.[1] ? `channel:${match[1]}` : void 0;
264
- }
265
- function resolveDiscordCommandConversation(params) {
266
- const threadConversation = resolveDiscordThreadConversationRef(params);
267
- if (threadConversation) return threadConversation;
268
- const conversationId = resolveDiscordCurrentConversationIdentity({
269
- from: params.from,
270
- chatType: params.chatType,
271
- originatingTo: params.originatingTo,
272
- commandTo: params.commandTo,
273
- fallbackTo: params.fallbackTo
274
- });
275
- return conversationId ? { conversationId } : null;
276
- }
277
- function resolveDiscordThreadConversationRef(params) {
278
- const threadId = normalizeOptionalStringifiedId(params.threadId);
279
- if (!threadId) return null;
280
- const targets = [
281
- params.originatingTo ?? params.to,
282
- params.commandTo,
283
- params.fallbackTo ?? params.conversationId
284
- ];
285
- const parentConversationId = normalizeDiscordMessagingTarget(normalizeOptionalStringifiedId(params.threadParentId) ?? "") || parseDiscordParentChannelFromSessionKey(params.parentSessionKey) || resolveDiscordConversationIdFromTargets(targets);
286
- return {
287
- conversationId: threadId,
288
- ...parentConversationId && parentConversationId !== threadId ? { parentConversationId } : {}
289
- };
290
- }
291
- function resolveDiscordInboundConversation(params) {
292
- const threadConversation = resolveDiscordThreadConversationRef({
293
- to: params.to,
294
- conversationId: params.conversationId,
295
- threadId: params.threadId,
296
- threadParentId: params.threadParentId
297
- });
298
- if (threadConversation) return threadConversation;
299
- const conversationId = resolveDiscordCurrentConversationIdentity({
300
- from: params.from,
301
- chatType: params.isGroup ? "group" : "direct",
302
- originatingTo: params.to,
303
- fallbackTo: params.conversationId
304
- });
305
- return conversationId ? { conversationId } : null;
306
- }
307
- //#endregion
308
209
  //#region extensions/discord/src/channel.loaders.ts
309
- const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BytTftz-.mjs").then((n) => n.t));
310
- const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-BbvsLQOZ.mjs").then((n) => n.n));
311
- const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-ByFlR7LQ.mjs").then((n) => n.n));
312
- const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-eexkKyrG.mjs").then((n) => n.a));
313
- const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-B6MrxbYv.mjs").then((n) => n.r));
314
- const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-DuhmKdDU.mjs"));
315
- const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe.runtime-DBQ_AGPe.mjs"));
210
+ const loadDiscordDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-esqNn0Eo.mjs").then((n) => n.t));
211
+ const loadDiscordResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-BFPNRmVv.mjs").then((n) => n.n));
212
+ const loadDiscordResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-0-aBuCy3.mjs").then((n) => n.n));
213
+ const loadDiscordThreadBindingsManagerModule = createLazyRuntimeModule(() => import("./thread-bindings.manager-DN-NissX.mjs").then((n) => n.r));
214
+ const loadDiscordTargetResolverModule = createLazyRuntimeModule(() => import("./target-resolver-BuLapkhy.mjs").then((n) => n.r));
215
+ const loadDiscordProviderRuntime = createLazyRuntimeModule(() => import("./provider.runtime-CUE3UxER.mjs"));
216
+ const loadDiscordProbeRuntime = createLazyRuntimeModule(() => import("./probe-LYrIHlBF.mjs").then((n) => n.o));
316
217
  async function probeDiscordStatusAccount(params) {
317
218
  const startedAtMs = Date.now();
318
219
  const runtime = await loadDiscordProbeRuntime();
319
220
  const remainingMs = Math.max(1, params.timeoutMs - Math.max(0, Date.now() - startedAtMs));
320
221
  return await runtime.probeDiscord(params.token, remainingMs, { includeApplication: true });
321
222
  }
322
- const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-C8uaKoa9.mjs").then((n) => n.n));
323
- const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-CKDczUNL.mjs").then((n) => n.t));
324
- const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live--EGTH0DC.mjs").then((n) => n.t));
223
+ const loadDiscordAuditModule = createLazyRuntimeModule(() => import("./audit-CLg9I71N.mjs").then((n) => n.n));
224
+ const loadDiscordSendModule = createLazyRuntimeModule(() => import("./send-CrfEI6Bs.mjs").then((n) => n.t));
225
+ const loadDiscordDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DtKRHuGV.mjs").then((n) => n.t));
325
226
  //#endregion
326
227
  //#region extensions/discord/src/conversation-route-owner.ts
327
228
  function inspectDiscordConversationRouteOwner(params) {
229
+ const accountId = normalizeAccountId(params.accountId);
230
+ if (params.cfg.channels?.discord?.enabled === false || !listDiscordAccountIds(params.cfg).some((id) => normalizeAccountId(id) === accountId) || resolveDiscordAccountConfig(params.cfg, accountId)?.enabled === false) return null;
328
231
  const direct = params.conversation.kind === "direct";
329
232
  const nativeConversationId = params.conversation.nativeChannelId ?? params.conversation.peerId;
330
233
  const threadConversationId = direct ? void 0 : params.conversation.threadId;
@@ -334,9 +237,10 @@ function inspectDiscordConversationRouteOwner(params) {
334
237
  userId: direct ? params.conversation.peerId : void 0,
335
238
  channelId: nativeConversationId
336
239
  });
337
- const route = resolveDiscordConversationRoute({
240
+ const route = ({ boundAgentId }) => resolveDiscordConversationRoute({
338
241
  cfg: params.cfg,
339
- accountId: params.accountId,
242
+ defaultAgentId: boundAgentId,
243
+ accountId,
340
244
  guildId: params.conversation.context?.guildId,
341
245
  memberRoleIds: params.conversation.context?.memberRoleIds,
342
246
  peer: {
@@ -347,8 +251,8 @@ function inspectDiscordConversationRouteOwner(params) {
347
251
  });
348
252
  const { runtimeRoute, configuredRoute } = resolveDiscordConversationBindingRoute({
349
253
  cfg: params.cfg,
350
- route,
351
- accountId: params.accountId,
254
+ resolveRoute: route,
255
+ accountId,
352
256
  runtimeConversationId,
353
257
  configuredConversationId: threadConversationId ?? nativeConversationId,
354
258
  parentConversationId: params.conversation.context?.parentPeerId,
@@ -357,34 +261,31 @@ function inspectDiscordConversationRouteOwner(params) {
357
261
  if (!runtimeRoute.bindingOwnerAvailable && resolveThreadBindingSpawnPolicy({
358
262
  cfg: params.cfg,
359
263
  channel: "discord",
360
- accountId: params.accountId,
264
+ accountId,
361
265
  kind: "subagent"
362
266
  }).enabled) return { kind: "unavailable" };
363
267
  if (runtimeRoute.pluginId) return {
364
268
  kind: "plugin",
365
269
  pluginId: runtimeRoute.pluginId,
366
- fallbackAgentId: route.agentId
270
+ fallbackAgentId: runtimeRoute.route.agentId
367
271
  };
368
272
  return {
369
273
  kind: "agent",
370
- agentId: runtimeRoute.boundAgentId ?? configuredRoute?.boundAgentId ?? route.agentId
274
+ agentId: runtimeRoute.boundAgentId ?? configuredRoute?.boundAgentId ?? runtimeRoute.route.agentId
371
275
  };
372
276
  }
373
277
  //#endregion
374
278
  //#region extensions/discord/src/group-policy.ts
375
- function normalizeDiscordSlug(value) {
376
- return normalizeAtHashSlug(value);
377
- }
378
279
  const guildScopeKey = (guildKey) => scopeKey(["guild", guildKey]);
379
280
  const channelScopeKey = (guildKey, channelKey) => scopeKey(["guild", guildKey], ["channel", channelKey]);
380
281
  function resolveDiscordGuildKey(guilds, groupSpace) {
381
282
  if (!guilds || Object.keys(guilds).length === 0) return;
382
283
  const space = normalizeOptionalString(groupSpace) ?? "";
383
284
  if (space && guilds[space]) return space;
384
- const normalized = normalizeDiscordSlug(space);
285
+ const normalized = normalizeAtHashSlug(space);
385
286
  if (normalized && guilds[normalized]) return normalized;
386
287
  if (normalized) {
387
- const match = Object.entries(guilds).find(([, entry]) => normalizeDiscordSlug(entry?.slug ?? void 0) === normalized);
288
+ const match = Object.entries(guilds).find(([, entry]) => normalizeAtHashSlug(entry?.slug ?? void 0) === normalized);
388
289
  if (match) return match[0];
389
290
  }
390
291
  return guilds["*"] ? "*" : void 0;
@@ -392,11 +293,11 @@ function resolveDiscordGuildKey(guilds, groupSpace) {
392
293
  function resolveDiscordChannelKey(channelEntries, params) {
393
294
  if (!channelEntries || Object.keys(channelEntries).length === 0) return;
394
295
  const groupChannel = params.groupChannel;
395
- const channelSlug = normalizeDiscordSlug(groupChannel);
296
+ const channelSlug = normalizeAtHashSlug(groupChannel);
396
297
  if (params.groupId && channelEntries[params.groupId]) return params.groupId;
397
298
  if (channelSlug && channelEntries[channelSlug]) return channelSlug;
398
299
  if (channelSlug && channelEntries[`#${channelSlug}`]) return `#${channelSlug}`;
399
- const normalizedGroupChannel = groupChannel ? normalizeDiscordSlug(groupChannel) : void 0;
300
+ const normalizedGroupChannel = groupChannel ? normalizeAtHashSlug(groupChannel) : void 0;
400
301
  return normalizedGroupChannel !== void 0 && channelEntries[normalizedGroupChannel] ? normalizedGroupChannel : void 0;
401
302
  }
402
303
  function buildDiscordPolicyTree(guilds) {
@@ -445,11 +346,8 @@ function resolveDiscordGroupToolPolicy(params) {
445
346
  }
446
347
  //#endregion
447
348
  //#region extensions/discord/src/status-issues.ts
448
- function readDiscordApplicationSummary(value) {
449
- if (!isRecord$1(value)) return {};
450
- const intentsRaw = value.intents;
451
- if (!isRecord$1(intentsRaw)) return {};
452
- return { intents: { messageContent: intentsRaw.messageContent === "enabled" || intentsRaw.messageContent === "limited" || intentsRaw.messageContent === "disabled" ? intentsRaw.messageContent : void 0 } };
349
+ function isDiscordMessageContentIntentDisabled(value) {
350
+ return isRecord$1(value) && isRecord$1(value.intents) && value.intents.messageContent === "disabled";
453
351
  }
454
352
  function readDiscordPermissionsAuditSummary(value) {
455
353
  if (!isRecord$1(value)) return {};
@@ -489,7 +387,6 @@ function collectDiscordStatusIssues(accounts) {
489
387
  if (!account) continue;
490
388
  const accountId = resolveEnabledConfiguredAccountId(account);
491
389
  if (!accountId) continue;
492
- const app = readDiscordApplicationSummary(account.application);
493
390
  if (account.groupPolicy === "allowlist" && account.guildsConfigured === 0) {
494
391
  const guildGuidance = accountId === "default" ? "Add your server under channels.discord.guilds. If channels.discord.accounts.default.guilds is set, add it there instead." : `Add your server under channels.discord.accounts.${accountId}.guilds.`;
495
392
  issues.push({
@@ -500,7 +397,7 @@ function collectDiscordStatusIssues(accounts) {
500
397
  fix: `${guildGuidance} Refresh channel status after the configuration reload applies.`
501
398
  });
502
399
  }
503
- if (app.intents?.messageContent === "disabled") issues.push({
400
+ if (isDiscordMessageContentIntentDisabled(account.application)) issues.push({
504
401
  channel: "discord",
505
402
  accountId,
506
403
  kind: "intent",
@@ -535,6 +432,47 @@ function collectDiscordStatusIssues(accounts) {
535
432
  return issues;
536
433
  }
537
434
  //#endregion
435
+ //#region extensions/discord/src/thread-bindings-channel.ts
436
+ function toConversationLifecycleBinding(binding) {
437
+ return {
438
+ boundAt: binding.boundAt,
439
+ lastActivityAt: typeof binding.lastActivityAt === "number" ? binding.lastActivityAt : binding.boundAt,
440
+ idleTimeoutMs: typeof binding.idleTimeoutMs === "number" ? binding.idleTimeoutMs : void 0,
441
+ maxAgeMs: typeof binding.maxAgeMs === "number" ? binding.maxAgeMs : void 0
442
+ };
443
+ }
444
+ const discordConversationBindings = {
445
+ supportsCurrentConversationBinding: true,
446
+ bindingStore: "adapter",
447
+ defaultTopLevelPlacement,
448
+ createManager: async ({ cfg, accountId }) => (await loadDiscordThreadBindingsManagerModule()).createThreadBindingManager({
449
+ cfg,
450
+ accountId: accountId ?? void 0,
451
+ persist: false,
452
+ enableSweeper: false
453
+ }),
454
+ setIdleTimeoutBySessionKey: ({ targetSessionKey, accountId, idleTimeoutMs }) => setThreadBindingIdleTimeoutBySessionKey({
455
+ targetSessionKey,
456
+ accountId: accountId ?? void 0,
457
+ idleTimeoutMs
458
+ }).map(toConversationLifecycleBinding),
459
+ setMaxAgeBySessionKey: ({ targetSessionKey, accountId, maxAgeMs }) => setThreadBindingMaxAgeBySessionKey({
460
+ targetSessionKey,
461
+ accountId: accountId ?? void 0,
462
+ maxAgeMs
463
+ }).map(toConversationLifecycleBinding),
464
+ setIdleTimeoutBySessionKeyAsync: async ({ targetSessionKey, accountId, idleTimeoutMs }) => (await setThreadBindingIdleTimeoutBySessionKeyAsync({
465
+ targetSessionKey,
466
+ accountId: accountId ?? void 0,
467
+ idleTimeoutMs
468
+ })).map(toConversationLifecycleBinding),
469
+ setMaxAgeBySessionKeyAsync: async ({ targetSessionKey, accountId, maxAgeMs }) => (await setThreadBindingMaxAgeBySessionKeyAsync({
470
+ targetSessionKey,
471
+ accountId: accountId ?? void 0,
472
+ maxAgeMs
473
+ })).map(toConversationLifecycleBinding)
474
+ };
475
+ //#endregion
538
476
  //#region extensions/discord/src/channel.ts
539
477
  const DISCORD_ACCOUNT_STARTUP_STAGGER_MS = 1e4;
540
478
  const discordMessageAdapter = createChannelMessageAdapterFromOutbound({
@@ -553,6 +491,22 @@ const discordMessageAdapter = createChannelMessageAdapterFromOutbound({
553
491
  } }
554
492
  }
555
493
  });
494
+ async function sendDiscordHeartbeatTyping(params) {
495
+ const resolvedTo = resolveDiscordAttachedOutboundTarget(params);
496
+ const target = parseDiscordTarget(resolvedTo, { defaultKind: "channel" });
497
+ if (!target || target.kind !== "channel") return;
498
+ const { sendTypingDiscord } = await loadDiscordSendModule();
499
+ const assertCurrent = () => {
500
+ params.signal?.throwIfAborted();
501
+ params.assertPlatformSendAuthorized?.();
502
+ };
503
+ assertCurrent();
504
+ await withDiscordRequestAuthority(assertCurrent, () => sendTypingDiscord(target.id, {
505
+ cfg: params.cfg,
506
+ accountId: params.accountId ?? void 0,
507
+ signal: params.signal
508
+ }));
509
+ }
556
510
  function startDiscordStartupProbe(params) {
557
511
  (async () => {
558
512
  try {
@@ -611,14 +565,6 @@ const resolveDiscordAllowlistNames = createAccountScopedAllowlistNameResolver({
611
565
  entries
612
566
  })
613
567
  });
614
- function toConversationLifecycleBinding(binding) {
615
- return {
616
- boundAt: binding.boundAt,
617
- lastActivityAt: typeof binding.lastActivityAt === "number" ? binding.lastActivityAt : binding.boundAt,
618
- idleTimeoutMs: typeof binding.idleTimeoutMs === "number" ? binding.idleTimeoutMs : void 0,
619
- maxAgeMs: typeof binding.maxAgeMs === "number" ? binding.maxAgeMs : void 0
620
- };
621
- }
622
568
  const discordPlugin = createChatChannelPlugin({
623
569
  base: {
624
570
  ...createDiscordPluginBase({ setupContract: discordSetupContract }),
@@ -656,14 +602,7 @@ const discordPlugin = createChatChannelPlugin({
656
602
  directTargetStyle: "user-prefixed",
657
603
  targetIdComparison: "lowercase",
658
604
  normalizeTarget: normalizeDiscordMessagingTarget,
659
- resolveInboundConversation: ({ from, to, conversationId, threadId, threadParentId, isGroup }) => resolveDiscordInboundConversation({
660
- from,
661
- to,
662
- conversationId,
663
- threadId,
664
- threadParentId,
665
- isGroup
666
- }),
605
+ resolveInboundConversation: resolveDiscordInboundConversation,
667
606
  normalizeExplicitSessionKey: ({ sessionKey, ctx }) => normalizeExplicitDiscordSessionKey(sessionKey, ctx),
668
607
  resolveSessionTarget: ({ id }) => normalizeDiscordMessagingTarget(`channel:${id}`),
669
608
  inferTargetChatType: ({ to }) => {
@@ -676,7 +615,7 @@ const discordPlugin = createChatChannelPlugin({
676
615
  }
677
616
  },
678
617
  buildCrossContextPresentation: buildDiscordCrossContextPresentation,
679
- resolveOutboundSessionRoute: (params) => resolveDiscordOutboundSessionRoute(params),
618
+ resolveOutboundSessionRoute: resolveDiscordOutboundSessionRoute,
680
619
  targetResolver: {
681
620
  looksLikeId: looksLikeDiscordTargetId,
682
621
  hint: "<channelId|user:ID|channel:ID>",
@@ -755,50 +694,13 @@ const discordPlugin = createChatChannelPlugin({
755
694
  conversationId,
756
695
  parentConversationId
757
696
  }),
758
- resolveCommandConversation: ({ threadId, threadParentId, parentSessionKey, from, chatType, originatingTo, commandTo, fallbackTo }) => resolveDiscordCommandConversation({
759
- threadId,
760
- threadParentId,
761
- parentSessionKey,
762
- from,
763
- chatType,
764
- originatingTo,
765
- commandTo,
766
- fallbackTo
767
- })
697
+ resolveCommandConversation: resolveDiscordCommandConversation
768
698
  },
769
- conversationBindings: {
770
- supportsCurrentConversationBinding: true,
771
- bindingStore: "adapter",
772
- defaultTopLevelPlacement,
773
- createManager: async ({ cfg, accountId }) => (await loadDiscordThreadBindingsManagerModule()).createThreadBindingManagerAsync({
774
- cfg,
775
- accountId: accountId ?? void 0,
776
- persist: false,
777
- enableSweeper: false
778
- }),
779
- setIdleTimeoutBySessionKey: ({ targetSessionKey, accountId, idleTimeoutMs }) => setThreadBindingIdleTimeoutBySessionKey({
780
- targetSessionKey,
781
- accountId: accountId ?? void 0,
782
- idleTimeoutMs
783
- }).map(toConversationLifecycleBinding),
784
- setMaxAgeBySessionKey: ({ targetSessionKey, accountId, maxAgeMs }) => setThreadBindingMaxAgeBySessionKey({
785
- targetSessionKey,
786
- accountId: accountId ?? void 0,
787
- maxAgeMs
788
- }).map(toConversationLifecycleBinding)
699
+ conversationBindings: discordConversationBindings,
700
+ heartbeat: {
701
+ sendTyping: sendDiscordHeartbeatTyping,
702
+ sendTypingGuarded: sendDiscordHeartbeatTyping
789
703
  },
790
- heartbeat: { sendTyping: async ({ cfg, to, accountId, threadId }) => {
791
- const resolvedTo = resolveDiscordAttachedOutboundTarget({
792
- to,
793
- threadId
794
- });
795
- const target = parseDiscordTarget(resolvedTo, { defaultKind: "channel" });
796
- if (!target || target.kind !== "channel") return;
797
- await (await loadDiscordSendModule()).sendTypingDiscord(target.id, {
798
- cfg,
799
- accountId: accountId ?? void 0
800
- });
801
- } },
802
704
  status: createComputedAccountStatusAdapter({
803
705
  defaultRuntime: createDefaultChannelRuntimeState(DEFAULT_ACCOUNT_ID, {
804
706
  connected: false,
@@ -1040,12 +942,7 @@ const discordPlugin = createChatChannelPlugin({
1040
942
  ...discordOutbound,
1041
943
  preferFinalAssistantVisibleText: true,
1042
944
  shouldTreatDeliveredTextAsVisible: shouldTreatDiscordDeliveredTextAsVisible,
1043
- shouldSuppressLocalPayloadPrompt: ({ cfg, accountId, payload, hint }) => shouldSuppressLocalDiscordExecApprovalPrompt({
1044
- cfg,
1045
- accountId,
1046
- payload,
1047
- hint
1048
- })
945
+ shouldSuppressLocalPayloadPrompt: shouldSuppressLocalDiscordExecApprovalPrompt
1049
946
  }
1050
947
  });
1051
948
  //#endregion