@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,25 +1,23 @@
1
- import { D as Message, mt as getChannelMessage, t as discord_exports } from "./discord-BXpHW-cu.mjs";
2
- import { C as resolveTimestampMs, S as resolveDiscordSystemLocation, _ as resolveDiscordShouldRequireMention, a as normalizeDiscordDisplaySlug, f as resolveDiscordGuildEntry, l as resolveDiscordChannelConfigWithFallback, o as normalizeDiscordSlug, p as resolveDiscordMemberAccessState, t as isDiscordThreadChannelType, x as formatDiscordUserTag } from "./channel-type-DKnjV1XW.mjs";
3
- import { s as resolveDefaultDiscordAccountId } from "./accounts-CwJQoLjM.mjs";
1
+ import { D as Message, ht as getChannelMessage, t as discord_exports } from "./discord-0xJYfdDD.mjs";
2
+ import { C as resolveDiscordSystemLocation, S as formatDiscordUserTag, a as normalizeDiscordDisplaySlug, f as resolveDiscordGuildEntry, h as resolveDiscordMentionPolicy, l as resolveDiscordChannelConfigWithFallback, o as normalizeDiscordSlug, p as resolveDiscordMemberAccessState, w as resolveTimestampMs } from "./channel-type-DRCrEMss.mjs";
3
+ import { s as resolveDefaultDiscordAccountId } from "./accounts-ChaMcixG.mjs";
4
4
  import { n as resolveDiscordChannelInfoSafe, r as resolveDiscordChannelNameSafe } from "./channel-access-C12aDZ0p.mjs";
5
- import { A as resolveDiscordChannelInfo, C as resolveMediaList, D as resolveDiscordMessageStickers, O as resolveDiscordReferencedReplyMessage, S as resolveForwardedMediaList, _ as resolveDiscordMessageBatch, b as resolveDiscordMessageText, j as resolveDiscordMessageChannelId, v as resolveDiscordMessageHistoryText, y as resolveDiscordMessageMentionDocuments } from "./transcripts-source-CuWYgayu.mjs";
5
+ import { A as resolveDiscordMessageChannelId, D as resolveDiscordReferencedReplyMessage, E as resolveDiscordMessageStickers, S as resolveMediaList, _ as resolveDiscordMessageHistoryText, g as resolveDiscordMessageBatch, k as resolveDiscordChannelInfo, v as resolveDiscordMessageMentionDocuments, x as resolveForwardedMediaList, y as resolveDiscordMessageText } from "./transcripts-source-p8EV179h.mjs";
6
6
  import { n as DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS, t as DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS } from "./timeouts-D86uWLt_.mjs";
7
- import { _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, h as resolveDiscordConversationIdentity, p as resolveDiscordEffectiveRoute, u as buildDiscordRoutePeer } from "./outbound-session-route-CqWbuMOm.mjs";
8
- import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-_rz33QHO.mjs";
9
- import { S as resolveDiscordTextCommandAccess, _ as handleDiscordDmCommandDecision, n as resolveDiscordPreflightChannelAccess, x as resolveDiscordDmCommandAccess } from "./provider-72zIvN-i.mjs";
10
- import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-0Ymgvmaj.mjs";
11
- import { t as createDiscordHistorySenderProvenance } from "./message-handler.history-CJOsN9w5.mjs";
7
+ import { _ as resolveDiscordRuntimeBindingConversationId, f as resolveDiscordConversationRoute, h as resolveDiscordConversationIdentity, p as resolveDiscordEffectiveRoute, u as buildDiscordRoutePeer } from "./outbound-session-route-zVGxxceg.mjs";
8
+ import { t as resolveDiscordConversationBindingRoute } from "./conversation-binding-route-Caz_XuFH.mjs";
9
+ import { A as resolveDiscordDmCommandAccess, E as handleDiscordDmCommandDecision, j as resolveDiscordTextCommandAccess, n as resolveDiscordPreflightChannelAccess } from "./provider-B_G5hASF.mjs";
10
+ import { n as resolveDiscordWebhookId, t as resolveDiscordSenderIdentity } from "./sender-identity-B9X5Vb9R.mjs";
11
+ import { a as createDiscordHistorySenderProvenance, c as hasRawDiscordUserMention, d as matchesActiveDiscordMentionPatterns, f as resolveDiscordMentionState, h as shouldIgnoreBoundThreadWebhookMessage, i as loadSystemEventsRuntime, l as isBoundThreadBotSystemMessage, m as resolvePreflightMentionRequirement, n as loadDiscordThreadingRuntime, p as resolveInjectedBoundThreadLookupRecord, r as loadPreflightAudioRuntime, s as resolveDiscordHistoryMediaIds, t as resolveDiscordPreflightPluralKitInfo, u as isDiscordThreadChannelMessage } from "./message-handler.preflight-pluralkit-CWLUBVcx.mjs";
12
12
  import { logDebug } from "openclaw/plugin-sdk/logging-core";
13
13
  import { MessageReferenceType, MessageType } from "discord-api-types/v10";
14
- import { normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
15
14
  import { recordChannelActivity } from "openclaw/plugin-sdk/channel-activity-runtime";
16
15
  import { mimeTypeFromFilePath } from "openclaw/plugin-sdk/media-mime";
17
16
  import { getChildLogger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
18
17
  import { formatAllowlistMatchMeta } from "openclaw/plugin-sdk/allow-from";
19
- import { findCodeRegions, isInsideCode } from "openclaw/plugin-sdk/text-chunking";
20
18
  import { isRecentOutboundMessageIdentity } from "openclaw/plugin-sdk/channel-outbound";
21
19
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
22
- import { buildMentionRegexes, classifyChannelInboundEvent, implicitMentionKindWhen, logInboundDrop, matchesMentionWithExplicit, normalizeMentionText, recordChannelBotPairLoopAndCheckSuppression, resolveGroupThreadMentionFacts, resolveInboundMentionDecision, resolveUnmentionedGroupInboundPolicy, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
20
+ import { buildMentionRegexes, classifyChannelInboundEvent, logInboundDrop, recordChannelBotPairLoopAndCheckSuppression, resolveGroupThreadMentionFacts, resolveInboundMentionDecision, resolveUnmentionedGroupInboundPolicy, toHistoryMediaEntries, toInboundMediaFactsWithMetadata } from "openclaw/plugin-sdk/channel-inbound";
23
21
  import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-name-runtime";
24
22
  import { enqueueRoutedSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
25
23
  import { hasControlCommand } from "openclaw/plugin-sdk/command-detection";
@@ -28,10 +26,7 @@ import { shouldHandleTextCommands } from "openclaw/plugin-sdk/command-surface";
28
26
  import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
29
27
  //#region extensions/discord/src/monitor/message-handler.dm-preflight.ts
30
28
  const loadConversationRuntime$1 = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/conversation-binding-runtime"));
31
- const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-CKDczUNL.mjs").then((n) => n.t));
32
- function resolveDiscordDmPairingSenderId(sender) {
33
- return sender.isPluralKit ? `pk:${sender.id}` : sender.id;
34
- }
29
+ const loadDiscordSendRuntime = createLazyRuntimeModule(() => import("./send-CrfEI6Bs.mjs").then((n) => n.t));
35
30
  async function resolveDiscordDmPreflightAccess(params) {
36
31
  if (params.dmPolicy === "disabled") {
37
32
  logVerbose("discord: drop dm (dmPolicy: disabled)");
@@ -71,14 +66,12 @@ async function resolveDiscordDmPreflightAccess(params) {
71
66
  const commandAuthorized = dmAccess.senderAccess.allowed && dmAccess.commandAccess.authorized || directBindingRecord != null;
72
67
  if (dmAccess.senderAccess.decision === "allow") return {
73
68
  commandAuthorized,
74
- channelIngress: dmAccess,
75
69
  resolveChannelIngress
76
70
  };
77
71
  if (directBindingRecord) {
78
72
  logVerbose(`discord: allow bound DM conversation ${directBindingConversationId} despite dmPolicy=${params.dmPolicy}`);
79
73
  return {
80
74
  commandAuthorized,
81
- channelIngress: dmAccess,
82
75
  resolveChannelIngress
83
76
  };
84
77
  }
@@ -86,7 +79,7 @@ async function resolveDiscordDmPreflightAccess(params) {
86
79
  senderAccess: dmAccess.senderAccess,
87
80
  accountId: params.resolvedAccountId,
88
81
  sender: {
89
- id: resolveDiscordDmPairingSenderId(params.sender),
82
+ id: params.sender.isPluralKit ? `pk:${params.sender.id}` : params.sender.id,
90
83
  tag: params.sender.tag ?? formatDiscordUserTag(params.author),
91
84
  name: params.sender.name ?? params.author.username ?? void 0
92
85
  },
@@ -117,100 +110,15 @@ async function resolveDiscordDmPreflightAccess(params) {
117
110
  }
118
111
  //#endregion
119
112
  //#region extensions/discord/src/monitor/message-handler.hydration.ts
120
- function mergeFetchedDiscordMessage(base, fetched) {
121
- const baseRawData = readMessageRawData(base);
122
- const baseFallback = readMessageFallback(base);
123
- const rawData = {
124
- ...baseRawData,
125
- ...fetched,
126
- id: fetched.id ?? baseRawData.id ?? baseFallback.id,
127
- channel_id: fetched.channel_id ?? baseRawData.channel_id ?? baseFallback.channel_id,
128
- content: fetched.content ?? baseRawData.content ?? baseFallback.content,
129
- author: fetched.author ?? baseRawData.author ?? baseFallback.author,
130
- attachments: fetched.attachments ?? baseRawData.attachments ?? baseFallback.attachments,
131
- embeds: fetched.embeds ?? baseRawData.embeds ?? baseFallback.embeds,
132
- mentions: fetched.mentions ?? baseRawData.mentions ?? baseFallback.mentions,
133
- mention_roles: fetched.mention_roles ?? baseRawData.mention_roles ?? baseFallback.mention_roles,
134
- mention_everyone: fetched.mention_everyone ?? baseRawData.mention_everyone ?? baseFallback.mention_everyone,
135
- timestamp: fetched.timestamp ?? baseRawData.timestamp ?? baseFallback.timestamp,
136
- tts: fetched.tts ?? baseRawData.tts ?? false,
137
- pinned: fetched.pinned ?? baseRawData.pinned ?? false,
138
- type: fetched.type ?? baseRawData.type ?? 0,
139
- message_snapshots: fetched.message_snapshots ?? baseRawData.message_snapshots ?? baseFallback.message_snapshots,
140
- sticker_items: fetched.sticker_items ?? baseRawData.sticker_items ?? baseFallback.sticker_items
141
- };
142
- const hydrated = new Message(readMessageClient(base), rawData);
143
- copyRuntimeMessageFields(base, hydrated);
144
- return hydrated;
145
- }
146
- function readMessageClient(message) {
147
- return message.client;
148
- }
149
- function readMessageRawData(message) {
150
- try {
151
- const rawData = message.rawData;
152
- return rawData && typeof rawData === "object" ? rawData : {};
153
- } catch {
154
- return {};
155
- }
156
- }
157
- function readMessageFallback(message) {
158
- const value = message;
159
- return {
160
- id: typeof value.id === "string" ? value.id : "",
161
- channel_id: readStringValue(value.channel_id) ?? readStringValue(value.channelId) ?? "",
162
- content: typeof value.content === "string" ? value.content : "",
163
- author: normalizeApiUser(value.author),
164
- attachments: Array.isArray(value.attachments) ? value.attachments : [],
165
- embeds: Array.isArray(value.embeds) ? value.embeds : [],
166
- mentions: normalizeApiUsers(value.mentionedUsers),
167
- mention_roles: normalizeStringArray(value.mentionedRoles),
168
- mention_everyone: value.mentionedEveryone === true,
169
- timestamp: readStringValue(value.timestamp) ?? "1970-01-01T00:00:00.000Z",
170
- sticker_items: Array.isArray(value.sticker_items) ? value.sticker_items : Array.isArray(value.stickers) ? value.stickers : void 0,
171
- message_snapshots: Array.isArray(value.message_snapshots) ? value.message_snapshots : void 0
172
- };
173
- }
174
- function normalizeStringArray(value) {
175
- return Array.isArray(value) ? value.flatMap((entry) => typeof entry === "string" ? [entry] : []) : [];
176
- }
177
- function normalizeApiUsers(value) {
178
- return Array.isArray(value) ? value.flatMap((entry) => {
179
- const user = normalizeApiUser(entry);
180
- return user.id ? [user] : [];
181
- }) : [];
182
- }
183
- function normalizeApiUser(value) {
184
- if (!value || typeof value !== "object") return {
185
- id: "",
186
- username: "",
187
- discriminator: "0",
188
- global_name: null,
189
- avatar: null
190
- };
191
- const input = value;
192
- return {
193
- id: readStringValue(input.id) ?? "",
194
- username: readStringValue(input.username) ?? "",
195
- discriminator: readStringValue(input.discriminator) ?? "0",
196
- global_name: readStringValue(input.global_name) ?? readStringValue(input.globalName) ?? null,
197
- avatar: input.avatar === null ? null : readStringValue(input.avatar) ?? null,
198
- ...typeof input.bot === "boolean" ? { bot: input.bot } : {}
199
- };
200
- }
201
- function copyRuntimeMessageFields(source, target) {
202
- const channelDescriptor = Object.getOwnPropertyDescriptor(source, "channel");
203
- if (channelDescriptor) Object.defineProperty(target, "channel", channelDescriptor);
204
- }
205
- function shouldHydrateDiscordMessagePayload(params) {
113
+ function shouldHydrateDiscordMessagePayload(message) {
206
114
  let currentText;
207
115
  try {
208
- currentText = resolveDiscordMessageText(params.message, { includeForwarded: true });
116
+ currentText = resolveDiscordMessageText(message, { includeForwarded: true });
209
117
  } catch {
210
118
  return true;
211
119
  }
212
120
  if (!currentText) return true;
213
- if ((params.message.mentionedUsers?.length ?? 0) > 0 || (params.message.mentionedRoles?.length ?? 0) > 0 || params.message.mentionedEveryone) return false;
121
+ if ((message.mentionedUsers?.length ?? 0) > 0 || (message.mentionedRoles?.length ?? 0) > 0 || message.mentionedEveryone) return false;
214
122
  return /<@!?\d+>|<@&\d+>|@everyone|@here/u.test(currentText);
215
123
  }
216
124
  function resolveReferencedMessagePayloadState(message) {
@@ -218,11 +126,13 @@ function resolveReferencedMessagePayloadState(message) {
218
126
  if (!reference?.message_id) return "complete";
219
127
  if (reference.type != null && reference.type !== MessageReferenceType.Default) return "complete";
220
128
  if (message.type != null && message.type !== MessageType.Reply) return "complete";
221
- const rawData = readMessageRawData(message);
129
+ const rawData = message.rawData;
222
130
  if (!Object.hasOwn(rawData, "referenced_message")) return "missing";
223
131
  const referenced = rawData.referenced_message;
224
132
  if (referenced == null) return "complete";
225
- return typeof referenced === "object" && typeof referenced.id === "string" && referenced.id === reference.message_id ? "complete" : "invalid";
133
+ if (typeof referenced !== "object" || referenced.id !== reference.message_id) return "invalid";
134
+ const reply = message.referencedMessage;
135
+ return reply?.author && (resolveDiscordMessageText(reply, { includeForwarded: true }) || reply.attachments.length > 0 || resolveDiscordMessageStickers(reply).length > 0) ? "complete" : "missing";
226
136
  }
227
137
  async function hydrateDiscordReplyReference(params) {
228
138
  const payloadState = resolveReferencedMessagePayloadState(params.message);
@@ -233,26 +143,28 @@ async function hydrateDiscordReplyReference(params) {
233
143
  const referencedChannelId = reference.channel_id ?? params.messageChannelId;
234
144
  try {
235
145
  const referenced = await getChannelMessage(params.client.rest, referencedChannelId, referencedMessageId);
236
- return mergeFetchedDiscordMessage(params.message, {
237
- ...readMessageRawData(params.message),
146
+ return new Message(params.client, {
147
+ ...params.message.rawData,
238
148
  referenced_message: referenced
239
149
  });
240
150
  } catch (err) {
241
151
  logVerbose(`discord: failed to hydrate referenced message ${referencedMessageId}: ${String(err)}`);
242
- if (payloadState === "invalid") return mergeFetchedDiscordMessage(params.message, {
243
- ...readMessageRawData(params.message),
152
+ if (payloadState === "invalid") return new Message(params.client, {
153
+ ...params.message.rawData,
244
154
  referenced_message: null
245
155
  });
246
156
  return params.message;
247
157
  }
248
158
  }
249
159
  async function hydrateDiscordMessageIfNeeded(params) {
250
- params.channelInfo;
251
160
  let hydrated = params.message;
252
- if (shouldHydrateDiscordMessagePayload({ message: params.message })) try {
161
+ if (shouldHydrateDiscordMessagePayload(params.message)) try {
253
162
  const fetched = await getChannelMessage(params.client.rest, params.messageChannelId, params.message.id);
254
163
  logVerbose(`discord: hydrated inbound payload via REST for ${params.message.id}`);
255
- hydrated = mergeFetchedDiscordMessage(params.message, fetched);
164
+ hydrated = new Message(params.client, {
165
+ ...params.message.partial ? {} : params.message.rawData,
166
+ ...fetched
167
+ });
256
168
  } catch (err) {
257
169
  logVerbose(`discord: failed to hydrate message ${params.message.id}: ${String(err)}`);
258
170
  return {
@@ -302,113 +214,6 @@ function resolveDiscordPreflightChannelContext(params) {
302
214
  };
303
215
  }
304
216
  //#endregion
305
- //#region extensions/discord/src/monitor/message-handler.preflight-context.ts
306
- function buildDiscordMessagePreflightContext({ preflightParams, ...fields }) {
307
- return {
308
- cfg: preflightParams.cfg,
309
- discordConfig: preflightParams.discordConfig,
310
- accountId: preflightParams.accountId,
311
- token: preflightParams.token,
312
- runtime: preflightParams.runtime,
313
- buildContext: preflightParams.buildContext,
314
- botUserId: preflightParams.botUserId,
315
- abortSignal: preflightParams.abortSignal,
316
- guildHistories: preflightParams.guildHistories,
317
- historyLimit: preflightParams.historyLimit,
318
- mediaMaxBytes: preflightParams.mediaMaxBytes,
319
- textLimit: preflightParams.textLimit,
320
- replyToMode: preflightParams.replyToMode,
321
- ackReactionScope: preflightParams.ackReactionScope,
322
- groupPolicy: preflightParams.groupPolicy,
323
- turnAdoptionLifecycle: preflightParams.turnAdoptionLifecycle,
324
- ...fields,
325
- threadBindings: preflightParams.threadBindings,
326
- discordRestFetch: preflightParams.discordRestFetch
327
- };
328
- }
329
- //#endregion
330
- //#region extensions/discord/src/monitor/message-handler.preflight-helpers.ts
331
- const DISCORD_BOUND_THREAD_SYSTEM_PREFIXES = [
332
- "⚙️",
333
- "🤖",
334
- "🧰"
335
- ];
336
- function isBoundThreadBotSystemMessage(params) {
337
- if (!params.isBoundThreadSession || !params.isBotAuthor) return false;
338
- const text = params.text?.trim();
339
- if (!text) return false;
340
- return DISCORD_BOUND_THREAD_SYSTEM_PREFIXES.some((prefix) => text.startsWith(prefix));
341
- }
342
- function isDiscordThreadChannelMessage(params) {
343
- if (!params.isGuildMessage) return false;
344
- const channel = "channel" in params.message ? params.message.channel : void 0;
345
- return Boolean(channel && typeof channel === "object" && "isThread" in channel && typeof channel.isThread === "function" && channel.isThread() || isDiscordThreadChannelType(params.channelInfo?.type));
346
- }
347
- function resolveInjectedBoundThreadLookupRecord(params) {
348
- const getByThreadId = params.threadBindings.getByThreadId;
349
- if (typeof getByThreadId !== "function") return;
350
- const binding = getByThreadId(params.threadId);
351
- return binding && typeof binding === "object" ? binding : void 0;
352
- }
353
- function resolveDiscordMentionState(params) {
354
- if (params.isDirectMessage) return {
355
- implicitMentionKinds: [],
356
- wasMentioned: false
357
- };
358
- const wasMentioned = params.mentionedEveryone && (!params.authorIsBot || params.senderIsPluralKit) || matchesMentionWithExplicit({
359
- text: params.mentionText,
360
- mentionRegexes: params.mentionRegexes,
361
- explicit: {
362
- hasAnyMention: params.hasAnyMention,
363
- isExplicitlyMentioned: params.isExplicitlyMentioned,
364
- canResolveExplicit: Boolean(params.botId)
365
- },
366
- transcript: params.transcript
367
- });
368
- return {
369
- implicitMentionKinds: implicitMentionKindWhen("reply_to_bot", Boolean(params.botId) && Boolean(params.referencedAuthorId) && params.referencedAuthorId === params.botId),
370
- wasMentioned
371
- };
372
- }
373
- function hasRawDiscordUserMention(text, userId) {
374
- if (!userId) return false;
375
- const codeRegions = findCodeRegions(text);
376
- for (const mention of [`<@${userId}>`, `<@!${userId}>`]) {
377
- let index = text.indexOf(mention);
378
- while (index >= 0) {
379
- let precedingBackslashes = 0;
380
- for (let offset = index - 1; offset >= 0 && text[offset] === "\\"; offset -= 1) precedingBackslashes += 1;
381
- if (precedingBackslashes % 2 === 0 && !isInsideCode(index, codeRegions)) return true;
382
- index = text.indexOf(mention, index + mention.length);
383
- }
384
- }
385
- return false;
386
- }
387
- function matchesActiveDiscordMentionPatterns(text, mentionRegexes) {
388
- if (mentionRegexes.length === 0) return false;
389
- const cleaned = normalizeMentionText(text);
390
- const normalizedOffset = (offset) => Math.min(cleaned.length, normalizeMentionText(`${text.slice(0, offset)}\0`).length - 1);
391
- const codeRegions = findCodeRegions(text).map(({ start, end }) => ({
392
- start: normalizedOffset(start),
393
- end: normalizedOffset(end)
394
- }));
395
- for (const regex of mentionRegexes) for (const match of cleaned.matchAll(new RegExp(regex.source, `${regex.flags}g`))) if (!codeRegions.some(({ start, end }) => match.index < end && (match.index >= start || match.index + match[0].length > start))) return true;
396
- return false;
397
- }
398
- function resolvePreflightMentionRequirement(params) {
399
- if (!params.shouldRequireMention) return false;
400
- return !params.bypassMentionRequirement;
401
- }
402
- function shouldIgnoreBoundThreadWebhookMessage(params) {
403
- const webhookId = normalizeOptionalString(params.webhookId) ?? "";
404
- if (!webhookId) return false;
405
- const boundWebhookId = normalizeOptionalString(params.threadBinding?.webhookId) ?? normalizeOptionalString(params.threadBinding?.metadata?.webhookId) ?? "";
406
- if (boundWebhookId && webhookId === boundWebhookId) return true;
407
- if (!(normalizeOptionalString(params.threadId) ?? "")) return false;
408
- if (params.threadBinding) return true;
409
- return false;
410
- }
411
- //#endregion
412
217
  //#region extensions/discord/src/monitor/message-handler.preflight-history.ts
413
218
  function buildDiscordPreflightHistoryEntry(params) {
414
219
  const textForHistory = resolveDiscordMessageHistoryText(params.message, { includeForwarded: true });
@@ -417,6 +222,7 @@ function buildDiscordPreflightHistoryEntry(params) {
417
222
  body: textForHistory,
418
223
  timestamp: resolveTimestampMs(params.message.timestamp),
419
224
  messageId: params.message.id,
225
+ mediaIds: resolveDiscordHistoryMediaIds(params.message),
420
226
  senderProvenance: createDiscordHistorySenderProvenance({
421
227
  sender: params.sender,
422
228
  memberRoleIds: params.memberRoleIds
@@ -435,29 +241,6 @@ function logDiscordPreflightInboundSummary(params) {
435
241
  logVerbose(`discord: inbound id=${params.messageId} guild=${params.guildId ?? "dm"} channel=${params.channelId} mention=${params.wasMentioned ? "yes" : "no"} type=${params.isDirectMessage ? "dm" : params.isGroupDm ? "group-dm" : "guild"} content=${params.hasContent ? "yes" : "no"}`);
436
242
  }
437
243
  //#endregion
438
- //#region extensions/discord/src/monitor/message-handler.preflight-runtime.ts
439
- const loadPluralKitRuntime = createLazyRuntimeModule(() => import("./pluralkit-CdAt1G0P.mjs").then((n) => n.n));
440
- const loadPreflightAudioRuntime = createLazyRuntimeModule(() => import("./preflight-audio-DrnqFA8U.mjs"));
441
- const loadSystemEventsRuntime = createLazyRuntimeModule(() => import("./system-events-B2YEEMbS.mjs"));
442
- const loadDiscordThreadingRuntime = createLazyRuntimeModule(() => import("./transcripts-source-CuWYgayu.mjs").then((n) => n.f));
443
- //#endregion
444
- //#region extensions/discord/src/monitor/message-handler.preflight-pluralkit.ts
445
- async function resolveDiscordPreflightPluralKitInfo(params) {
446
- if (!params.config?.enabled || !params.webhookId) return null;
447
- try {
448
- const { fetchPluralKitMessageInfo } = await loadPluralKitRuntime();
449
- const info = await fetchPluralKitMessageInfo({
450
- messageId: params.message.id,
451
- config: params.config,
452
- signal: params.abortSignal
453
- });
454
- return params.abortSignal?.aborted ? null : info;
455
- } catch (err) {
456
- logVerbose(`discord: pluralkit lookup failed for ${params.message.id}: ${String(err)}`);
457
- return null;
458
- }
459
- }
460
- //#endregion
461
244
  //#region extensions/discord/src/monitor/message-handler.preflight-thread.ts
462
245
  async function resolveDiscordPreflightThreadContext(params) {
463
246
  const { resolveDiscordThreadChannel, resolveDiscordThreadParentInfo } = await loadDiscordThreadingRuntime();
@@ -486,8 +269,9 @@ async function resolveDiscordPreflightThreadContext(params) {
486
269
  const loadConversationRuntime = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/conversation-binding-runtime"));
487
270
  async function resolveDiscordPreflightRoute(params) {
488
271
  const conversationRuntime = await loadConversationRuntime();
489
- const route = resolveDiscordConversationRoute({
272
+ const route = ({ boundAgentId }) => resolveDiscordConversationRoute({
490
273
  cfg: params.preflight.cfg,
274
+ defaultAgentId: boundAgentId,
491
275
  accountId: params.preflight.accountId,
492
276
  guildId: params.preflight.data.guild_id ?? void 0,
493
277
  memberRoleIds: params.memberRoleIds,
@@ -507,7 +291,7 @@ async function resolveDiscordPreflightRoute(params) {
507
291
  });
508
292
  const { runtimeRoute, configuredRoute } = resolveDiscordConversationBindingRoute({
509
293
  cfg: params.preflight.cfg,
510
- route,
294
+ resolveRoute: route,
511
295
  accountId: params.preflight.accountId,
512
296
  runtimeConversationId: bindingConversationId,
513
297
  configuredConversationId: params.messageChannelId,
@@ -518,7 +302,7 @@ async function resolveDiscordPreflightRoute(params) {
518
302
  if (!threadBinding && configuredBinding) threadBinding = configuredBinding.record;
519
303
  const boundSessionKey = conversationRuntime.isPluginOwnedSessionBindingRecord(threadBinding) ? "" : runtimeRoute.boundSessionKey ?? threadBinding?.targetSessionKey?.trim();
520
304
  const effectiveRoute = runtimeRoute.boundSessionKey ? runtimeRoute.route : resolveDiscordEffectiveRoute({
521
- route,
305
+ route: configuredRoute?.route ?? runtimeRoute.route,
522
306
  boundSessionKey,
523
307
  configuredRoute,
524
308
  matchedBy: "binding.channel"
@@ -621,8 +405,8 @@ async function preflightDiscordMessage(params) {
621
405
  logVerbose(`discord: drop message ${message.id} (missing channel id)`);
622
406
  return null;
623
407
  }
624
- const allowBotsSetting = params.discordConfig?.allowBots;
625
- const allowBotsMode = allowBotsSetting === "mentions" ? "mentions" : allowBotsSetting === true ? "all" : "off";
408
+ const allowBotsSetting = params.discordConfig?.allowBots ?? true;
409
+ const allowBotsMode = allowBotsSetting === "mentions" ? "mentions" : allowBotsSetting ? "all" : "off";
626
410
  if (params.botUserId && author.id === params.botUserId) return null;
627
411
  const hydratedSources = [];
628
412
  for (const source of [...params.precedingMessages ?? [], message]) {
@@ -713,7 +497,6 @@ async function preflightDiscordMessage(params) {
713
497
  const resolvedAccountId = params.accountId ?? resolveDefaultDiscordAccountId(params.cfg);
714
498
  const allowNameMatching = isDangerousNameMatchingEnabled(params.discordConfig);
715
499
  let commandAuthorized = true;
716
- let channelIngress;
717
500
  let resolveChannelIngress;
718
501
  if (isDirectMessage) {
719
502
  const access = await resolveDiscordDmPreflightAccess({
@@ -728,7 +511,6 @@ async function preflightDiscordMessage(params) {
728
511
  if (params.abortSignal?.aborted || params.isPolicyCurrent?.() === false) return null;
729
512
  if (!access) return null;
730
513
  commandAuthorized = access.commandAuthorized;
731
- channelIngress = access.channelIngress;
732
514
  resolveChannelIngress = access.resolveChannelIngress;
733
515
  }
734
516
  const botId = params.botUserId;
@@ -748,7 +530,7 @@ async function preflightDiscordMessage(params) {
748
530
  abortSignal: params.abortSignal
749
531
  });
750
532
  if (!threadContext || params.isPolicyCurrent?.() === false) return null;
751
- const { earlyThreadChannel, earlyThreadParentId, earlyThreadParentName, earlyThreadParentType } = threadContext;
533
+ const { earlyThreadChannel: threadChannel, earlyThreadParentId: threadParentId, earlyThreadParentName: threadParentName, earlyThreadParentType: threadParentType } = threadContext;
752
534
  const memberRoleIds = Array.isArray(params.data.rawMember?.roles) ? params.data.rawMember.roles : [];
753
535
  const routeState = await resolveDiscordPreflightRoute({
754
536
  preflight: params,
@@ -757,7 +539,7 @@ async function preflightDiscordMessage(params) {
757
539
  isGroupDm,
758
540
  messageChannelId,
759
541
  memberRoleIds,
760
- earlyThreadParentId
542
+ earlyThreadParentId: threadParentId
761
543
  });
762
544
  if (params.isPolicyCurrent?.() === false) return null;
763
545
  const { conversationRuntime, threadBinding, configuredBinding, boundSessionKey, effectiveRoute, boundAgentId, baseSessionKey } = routeState;
@@ -769,7 +551,7 @@ async function preflightDiscordMessage(params) {
769
551
  logVerbose(`discord: drop bound-thread webhook echo message ${message.id}`);
770
552
  return null;
771
553
  }
772
- const isBoundThreadSession = Boolean(threadBinding && earlyThreadChannel);
554
+ const isBoundThreadSession = Boolean(threadBinding && threadChannel);
773
555
  const bypassMentionRequirement = isBoundThreadSession;
774
556
  if (isBoundThreadBotSystemMessage({
775
557
  isBoundThreadSession,
@@ -813,11 +595,7 @@ async function preflightDiscordMessage(params) {
813
595
  logVerbose(`Blocked discord guild ${params.data.guild_id ?? "unknown"} (not in discord.guilds)`);
814
596
  return null;
815
597
  }
816
- const threadChannel = earlyThreadChannel;
817
- const threadParentId = earlyThreadParentId;
818
- const threadParentName = earlyThreadParentName;
819
- const threadParentType = earlyThreadParentType;
820
- const { threadName, configChannelName, configChannelSlug, displayChannelName, displayChannelSlug, guildSlug, channelConfig } = resolveDiscordPreflightChannelContext({
598
+ const { threadName, displayChannelName, displayChannelSlug, guildSlug, channelConfig } = resolveDiscordPreflightChannelContext({
821
599
  isGuildMessage,
822
600
  messageChannelId,
823
601
  channelName,
@@ -833,7 +611,7 @@ async function preflightDiscordMessage(params) {
833
611
  channelMatchMeta,
834
612
  channelId: messageChannelId
835
613
  });
836
- const channelAccess = resolveDiscordPreflightChannelAccess({
614
+ if (!resolveDiscordPreflightChannelAccess({
837
615
  isGuildMessage,
838
616
  isGroupDm,
839
617
  groupPolicy: params.groupPolicy,
@@ -844,9 +622,7 @@ async function preflightDiscordMessage(params) {
844
622
  guildInfo,
845
623
  channelConfig,
846
624
  channelMatchMeta
847
- });
848
- if (!channelAccess.allowed) return null;
849
- const { channelAllowlistConfigured, channelAllowed } = channelAccess;
625
+ })) return null;
850
626
  const historyEntry = buildDiscordPreflightHistoryEntry({
851
627
  isGuildMessage,
852
628
  historyLimit: params.historyLimit,
@@ -855,15 +631,15 @@ async function preflightDiscordMessage(params) {
855
631
  sender,
856
632
  memberRoleIds
857
633
  });
858
- const threadOwnerId = threadChannel ? resolveDiscordChannelInfoSafe(threadChannel).ownerId ?? channelInfo?.ownerId : void 0;
859
- const shouldRequireMentionByConfig = resolveDiscordShouldRequireMention({
634
+ const mentionPolicy = resolveDiscordMentionPolicy({
860
635
  isGuildMessage,
861
636
  isThread: Boolean(threadChannel),
862
637
  botId,
863
- threadOwnerId,
638
+ threadOwnerId: threadChannel ? resolveDiscordChannelInfoSafe(threadChannel).ownerId ?? channelInfo?.ownerId : void 0,
864
639
  channelConfig,
865
640
  guildInfo
866
641
  });
642
+ const shouldRequireMentionByConfig = mentionPolicy.requireMention;
867
643
  const shouldRequireMention = resolvePreflightMentionRequirement({
868
644
  shouldRequireMention: shouldRequireMentionByConfig,
869
645
  bypassMentionRequirement
@@ -891,15 +667,14 @@ async function preflightDiscordMessage(params) {
891
667
  abortSignal: params.abortSignal
892
668
  });
893
669
  if (params.abortSignal?.aborted || params.isPolicyCurrent?.() === false) return null;
894
- const mentionText = hasTypedText ? baseText : "";
895
670
  const { implicitMentionKinds, wasMentioned: wasNormallyMentioned } = resolveDiscordMentionState({
896
- authorIsBot: Boolean(author.bot),
897
671
  botId,
672
+ authorIsBot: Boolean(author.bot),
898
673
  hasAnyMention,
899
674
  isDirectMessage,
900
675
  isExplicitlyMentioned: explicitlyMentioned,
901
676
  mentionRegexes,
902
- mentionText,
677
+ mentionText: hasTypedText ? baseText : "",
903
678
  mentionedEveryone: message.mentionedEveryone,
904
679
  referencedAuthorId: message.referencedMessage?.author?.id,
905
680
  senderIsPluralKit: sender.isPluralKit,
@@ -915,7 +690,7 @@ async function preflightDiscordMessage(params) {
915
690
  directUserId: author.id,
916
691
  conversationId: messageChannelId
917
692
  }).id : params.cfg.broadcast?.[`discord:${messageChannelId}`] !== void 0 ? messageChannelId : threadParentId ?? messageChannelId,
918
- text: mentionText || preflightTranscript || "",
693
+ text: (hasTypedText ? baseText : "") || preflightTranscript || "",
919
694
  sessionKey: boundSessionKey || effectiveRoute.sessionKey,
920
695
  acpBinding: Boolean(configuredBinding)
921
696
  });
@@ -960,7 +735,6 @@ async function preflightDiscordMessage(params) {
960
735
  const commandAccess = await resolveCommandIngress();
961
736
  if (params.isPolicyCurrent?.() === false) return null;
962
737
  commandAuthorized = commandAccess.commandAccess.authorized;
963
- channelIngress = commandAccess;
964
738
  resolveChannelIngress = resolveCommandIngress;
965
739
  if (commandAccess.commandAccess.shouldBlockControlCommand) {
966
740
  logInboundDrop({
@@ -983,6 +757,7 @@ async function preflightDiscordMessage(params) {
983
757
  policy: {
984
758
  isGroup: isGuildMessage,
985
759
  requireMention: shouldRequireMention,
760
+ allowedImplicitMentionKinds: mentionPolicy.allowedImplicitMentionKinds,
986
761
  allowTextCommands,
987
762
  hasControlCommand: hasControlCommandInMessage,
988
763
  commandAuthorized
@@ -1108,12 +883,31 @@ async function preflightDiscordMessage(params) {
1108
883
  if (params.abortSignal?.aborted) return null;
1109
884
  preparedMedia.push(...forwardedMedia);
1110
885
  logDebug(`[discord-preflight] success: route=${effectiveRoute.agentId} sessionKey=${effectiveRoute.sessionKey}`);
1111
- return buildDiscordMessagePreflightContext({
1112
- preflightParams: params,
886
+ return {
887
+ cfg: params.cfg,
888
+ client: params.client,
889
+ discordConfig: params.discordConfig,
890
+ accountId: params.accountId,
891
+ token: params.token,
892
+ runtime: params.runtime,
893
+ buildContext: params.buildContext,
894
+ botUserId: params.botUserId,
895
+ abortSignal: params.abortSignal,
896
+ isPolicyCurrent: params.isPolicyCurrent,
897
+ guildHistories: params.guildHistories,
898
+ historyLimit: params.historyLimit,
899
+ mediaMaxBytes: params.mediaMaxBytes,
900
+ textLimit: params.textLimit,
901
+ replyToMode: params.replyToMode,
902
+ ackReactionScope: params.ackReactionScope,
903
+ groupPolicy: params.groupPolicy,
904
+ turnAdoptionLifecycle: params.turnAdoptionLifecycle,
905
+ threadBindings: params.threadBindings,
906
+ discordRestFetch: params.discordRestFetch,
1113
907
  groupThread,
1114
908
  data,
1115
- client: params.client,
1116
909
  message,
910
+ sourceMessageIds: hydratedSources.map((source) => source.message.id),
1117
911
  messageChannelId,
1118
912
  author,
1119
913
  sender,
@@ -1125,7 +919,6 @@ async function preflightDiscordMessage(params) {
1125
919
  isDirectMessage,
1126
920
  isGroupDm,
1127
921
  commandAuthorized,
1128
- channelIngress,
1129
922
  resolveChannelIngress,
1130
923
  baseText,
1131
924
  messageText,
@@ -1144,25 +937,18 @@ async function preflightDiscordMessage(params) {
1144
937
  threadParentName,
1145
938
  threadParentType,
1146
939
  threadName,
1147
- configChannelName,
1148
- configChannelSlug,
1149
- displayChannelName,
1150
940
  displayChannelSlug,
1151
941
  baseSessionKey,
1152
942
  channelConfig,
1153
- channelAllowlistConfigured,
1154
- channelAllowed,
1155
943
  shouldRequireMention,
1156
944
  groupRequireMention: shouldRequireMentionByConfig,
1157
945
  hasAnyMention,
1158
946
  hasControlCommand: hasControlCommandInMessage,
1159
- allowTextCommands,
1160
947
  shouldBypassMention: mentionDecision.shouldBypassMention,
1161
948
  effectiveWasMentioned,
1162
949
  inboundEventKind,
1163
- canDetectMention,
1164
- historyEntry
1165
- });
950
+ canDetectMention
951
+ };
1166
952
  }
1167
953
  //#endregion
1168
- export { preflightDiscordMessage, resolvePreflightMentionRequirement, shouldIgnoreBoundThreadWebhookMessage };
954
+ export { preflightDiscordMessage, shouldIgnoreBoundThreadWebhookMessage };