@openclaw/slack 2026.8.1-beta.3 → 2026.8.1

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 (237) hide show
  1. package/dist/account-configured-sUohAxZr.js +33 -0
  2. package/dist/account-inspect-CN2hBsim.js +87 -0
  3. package/dist/account-inspect-api.js +1 -1
  4. package/dist/{accounts-BlzxuYle.js → accounts-Dm_H77gH.js} +7 -10
  5. package/dist/{accounts.runtime-CbabBL8x.js → accounts.runtime-DRuEK6mL.js} +1 -1
  6. package/dist/{action-runtime-D6jg2CQd.js → action-runtime-044ldvNL.js} +53 -48
  7. package/dist/action-runtime.runtime-BL3KzX13.js +2 -0
  8. package/dist/{actions-DFk0ANVB.js → actions-BI7JkfVm.js} +266 -96
  9. package/dist/api.js +12 -12
  10. package/dist/{approval-handler.runtime-BNvAoKdK.js → approval-handler.runtime-DYv0UIZS.js} +53 -176
  11. package/dist/{channel-CA5w7qDF.js → channel-1vIJOzPx.js} +77 -142
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/{channel-type-CZWv55Wu.js → channel-type-DlFSKeIZ.js} +3 -3
  15. package/dist/{channel.setup-CpyYsEXH.js → channel.setup-ofDi3_Pu.js} +34 -49
  16. package/dist/{config-schema-CN3XZRX5.js → config-schema-BVIMyiDN.js} +19 -12
  17. package/dist/configured-state.js +34 -0
  18. package/dist/{directory-config-BGYyuzWh.js → directory-config-DqfQ42OV.js} +1 -1
  19. package/dist/directory-contract-api.js +1 -1
  20. package/dist/{directory-live-DjUJQLbq.js → directory-live-BPaNHjmP.js} +2 -2
  21. package/dist/{group-policy-DyfB_ZIE.js → group-policy-BdwszjYn.js} +581 -743
  22. package/dist/{message-tool-api-CqMr5Rmc.js → message-tool-api-CJ0kjcg5.js} +23 -5
  23. package/dist/message-tool-api.js +1 -1
  24. package/dist/{monitor-Chrecrb9.js → monitor-Dq5Cmrvp.js} +3 -3
  25. package/dist/{outbound-adapter-DuRqAQXK.js → outbound-adapter-DYaI8ThX.js} +93 -68
  26. package/dist/{pipeline.runtime-Bbfd5VFW.js → pipeline.runtime-Bd22U0ga.js} +128 -160
  27. package/dist/{policy-BKXSxrIS.js → policy-CtQVbde1.js} +2 -1
  28. package/dist/{probe-BVA65leh.js → probe-0usmAb0i.js} +209 -22
  29. package/dist/{provider-CUUiwsg2.js → provider-CN_8hFv2.js} +243 -146
  30. package/dist/{relay-source-mhpMMRG-.js → relay-source-BNGpsdwV.js} +1 -1
  31. package/dist/{replies-SnWyXcsL.js → replies-BSiRQOJ1.js} +15 -5
  32. package/dist/{resolve-channels-BSpqC8jU.js → resolve-channels-Czheznc8.js} +1 -1
  33. package/dist/{resolve-users-Dvz9pDe0.js → resolve-users-BAOlNimr.js} +1 -1
  34. package/dist/runtime-api.js +11 -11
  35. package/dist/{scopes-BSk4GZvZ.js → scopes-COSlmhnH.js} +1 -1
  36. package/dist/{send-CtnOxKCc.js → send-DS9ICrBI.js} +39 -31
  37. package/dist/send-results-eeOu_HYm.js +23 -0
  38. package/dist/{send.runtime-kYctMHSd.js → send.runtime-D_Bb6IuH.js} +1 -1
  39. package/dist/setup-plugin-api.js +1 -1
  40. package/dist/{setup-surface-BPFfp6So.js → setup-surface-BGnd2pSe.js} +6 -6
  41. package/dist/{shared-DJBaslN7.js → shared-D5B-5hBg.js} +26 -6
  42. package/dist/{slash-dispatch.runtime-Cf2FTrnf.js → slash-dispatch.runtime-CilDmI0c.js} +3 -3
  43. package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
  44. package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +0 -1
  45. package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +6 -6
  46. package/node_modules/@slack/bolt/node_modules/@types/node/dns/promises.d.ts +5 -5
  47. package/node_modules/@slack/bolt/node_modules/@types/node/dns.d.ts +5 -5
  48. package/node_modules/@slack/bolt/node_modules/@types/node/fs.d.ts +7 -0
  49. package/node_modules/@slack/bolt/node_modules/@types/node/http.d.ts +30 -0
  50. package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +4 -4
  51. package/node_modules/@slack/bolt/node_modules/@types/node/os.d.ts +30 -30
  52. package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
  53. package/node_modules/@slack/bolt/node_modules/@types/node/perf_hooks.d.ts +2 -1
  54. package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +42 -43
  55. package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +1049 -84
  56. package/node_modules/@slack/bolt/node_modules/@types/node/sqlite.d.ts +14 -1
  57. package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +3 -2
  58. package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +61 -0
  59. package/node_modules/@slack/bolt/node_modules/@types/node/v8.d.ts +20 -23
  60. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/README.md +2 -0
  61. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +20 -0
  62. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js +20 -14
  63. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -1
  64. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/package.json +1 -1
  65. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/README.md +2 -0
  66. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.d.ts +20 -0
  67. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js +20 -14
  68. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -1
  69. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/package.json +1 -1
  70. package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +1 -1
  71. package/node_modules/@slack/socket-mode/node_modules/@types/node/child_process.d.ts +0 -1
  72. package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +6 -6
  73. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns/promises.d.ts +5 -5
  74. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns.d.ts +5 -5
  75. package/node_modules/@slack/socket-mode/node_modules/@types/node/fs.d.ts +7 -0
  76. package/node_modules/@slack/socket-mode/node_modules/@types/node/http.d.ts +30 -0
  77. package/node_modules/@slack/socket-mode/node_modules/@types/node/http2.d.ts +4 -4
  78. package/node_modules/@slack/socket-mode/node_modules/@types/node/os.d.ts +30 -30
  79. package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +2 -2
  80. package/node_modules/@slack/socket-mode/node_modules/@types/node/perf_hooks.d.ts +2 -1
  81. package/node_modules/@slack/socket-mode/node_modules/@types/node/process.d.ts +42 -43
  82. package/node_modules/@slack/socket-mode/node_modules/@types/node/quic.d.ts +1049 -84
  83. package/node_modules/@slack/socket-mode/node_modules/@types/node/sqlite.d.ts +14 -1
  84. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/iter.d.ts +3 -2
  85. package/node_modules/@slack/socket-mode/node_modules/@types/node/test.d.ts +61 -0
  86. package/node_modules/@slack/socket-mode/node_modules/@types/node/v8.d.ts +20 -23
  87. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  88. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +0 -1
  89. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +6 -6
  90. package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +5 -5
  91. package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +5 -5
  92. package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +7 -0
  93. package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +30 -0
  94. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +4 -4
  95. package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +30 -30
  96. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
  97. package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +2 -1
  98. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +42 -43
  99. package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +1049 -84
  100. package/node_modules/@slack/web-api/node_modules/@types/node/sqlite.d.ts +14 -1
  101. package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +3 -2
  102. package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +61 -0
  103. package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +20 -23
  104. package/node_modules/typebox/build/format/date.d.mts +1 -1
  105. package/node_modules/typebox/build/format/date.mjs +1 -1
  106. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  107. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  108. package/node_modules/typebox/build/format/email.d.mts +1 -1
  109. package/node_modules/typebox/build/format/email.mjs +2 -2
  110. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  111. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  112. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  113. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  114. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  115. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  116. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  117. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  118. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  119. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  120. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  121. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  122. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
  123. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  124. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  125. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  126. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  127. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  128. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  129. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  130. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  131. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  132. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  133. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  134. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  135. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  136. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  137. package/node_modules/typebox/build/format/iri.mjs +26 -8
  138. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  139. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  140. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  141. package/node_modules/typebox/build/format/regex.mjs +2 -6
  142. package/node_modules/typebox/build/format/time.d.mts +2 -2
  143. package/node_modules/typebox/build/format/time.mjs +19 -14
  144. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  145. package/node_modules/typebox/build/format/uri.mjs +3 -130
  146. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  147. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  148. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  149. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  150. package/node_modules/typebox/build/format/url.d.mts +3 -3
  151. package/node_modules/typebox/build/format/url.mjs +4 -5
  152. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  153. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  154. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  155. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  156. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  157. package/node_modules/typebox/build/guard/string.mjs +7 -7
  158. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  159. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  160. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  161. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  162. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  163. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  164. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  165. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  166. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  167. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  168. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  169. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  170. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  171. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  172. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  173. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  174. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  175. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  176. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  177. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  178. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  179. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  180. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  181. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  182. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  183. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  184. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  185. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  186. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  187. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  188. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  189. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  190. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  191. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  192. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  193. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  194. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  195. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  196. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  197. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  198. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  199. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  200. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  201. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  202. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  203. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  204. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  205. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  206. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  207. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  208. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  209. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  210. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  211. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  212. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  213. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  214. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  215. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  216. package/node_modules/typebox/package.json +27 -27
  217. package/node_modules/typebox/readme.md +79 -82
  218. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  219. package/node_modules/ws/package.json +1 -1
  220. package/openclaw.plugin.json +14 -6
  221. package/package.json +9 -7
  222. package/dist/account-configured-BwfXBo_F.js +0 -14
  223. package/dist/account-inspect-YJvFBbCR.js +0 -89
  224. package/dist/action-runtime.runtime-JtoOK9l5.js +0 -2
  225. package/dist/actions.runtime-CYLsYRai.js +0 -2
  226. package/dist/runtime-api-DBi7xc_g.js +0 -10
  227. package/dist/slack-client-kind-BXyOOICI.js +0 -94
  228. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  229. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  230. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  231. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  232. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  233. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  234. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  235. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  236. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  237. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
@@ -1,23 +1,23 @@
1
- import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resolveSlackOperationToken, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom } from "./accounts-BlzxuYle.js";
1
+ import { n as isSlackPluginAccountConfigured } from "./account-configured-sUohAxZr.js";
2
+ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resolveSlackOperationToken, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom } from "./accounts-Dm_H77gH.js";
2
3
  import { n as resolveSlackConversationBindingRoute, r as resolveSlackReplyToMode, t as normalizeSlackRouteBindingConfig } from "./conversation-binding-route-DFVLUdYF.js";
3
4
  import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, n as formatSlackTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId, t as canonicalizeSlackApiTargetId } from "./target-parsing-BnMD2ZqZ.js";
4
5
  import { t as slackContextTargetsMatch } from "./targets-Cx5W_n3W.js";
5
- import { At as isSlackApprovalAuthorizedSender, B as SLACK_EDIT_TEXT_MAX_BYTES, Ct as shouldHandleSlackNativeApprovalRequest, Dt as isSlackWorkspaceInstallation, Et as getSlackInstallationKind, Ft as resolveSlackExecApprovalTarget, G as buildSlackPresentationBlocks, It as shouldSuppressLocalSlackExecApprovalPrompt, K as canRenderSlackPresentation, Mt as isSlackExecApprovalAuthorizedSender, Nt as isSlackExecApprovalClientEnabled, Rt as resolveSlackAutoThreadId, St as resolveTurnSourceSlackOriginTarget, Tt as slackTargetsMatch, U as SLACK_TEXT_LIMIT, _t as normalizeSlackForwardTarget, a as qualifySlackConversationId, b as resolveSlackReplyBlocks, bt as resolveSessionSlackOriginTarget, dt as SLACK_PRESENTATION_CAPABILITIES, g as assertSlackDetachedTargetAllowed, gt as isSlackAnyNativeApprovalClientEnabled, ht as hasSlackPluginApprovers, i as resolveSlackGroupToolPolicy, jt as getSlackExecApprovalApprovers, kt as getSlackApprovalApprovers, o as qualifySlackRoutePeerId, q as countSlackTextUtf8Bytes, r as resolveSlackGroupRequireMention, st as renderSlackMessagePresentationFallbackText, vt as normalizeSlackOriginTarget, wt as shouldHandleSlackPluginViaForwardingSession, x as resolveSlackReplyDeliveryMessages, xt as resolveSlackFallbackOriginTarget, y as resolveSlackReplyBlockResolution, yt as resolveEnterpriseApprovalTeamId } from "./group-policy-DyfB_ZIE.js";
6
- import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
6
+ import { $ as renderSlackMessagePresentationFallbackText, Ct as isSlackApprovalAuthorizedSender, Et as isSlackExecApprovalClientEnabled, F as canRenderSlackPresentation, I as countSlackTextUtf8Bytes, M as SLACK_TEXT_LIMIT, Ot as resolveSlackExecApprovalTarget, P as buildSlackPresentationBlocks, Q as normalizeSlackOutboundText, St as getSlackApprovalApprovers, Tt as isSlackExecApprovalAuthorizedSender, _t as shouldHandleSlackPluginViaForwardingSession, a as qualifySlackConversationId, bt as isSlackWorkspaceInstallation, c as assertSlackDetachedTargetAllowed, ct as hasSlackPluginApprovers, d as resolveSlackReplyBlockResolution, dt as normalizeSlackOriginTarget, f as resolveSlackReplyBlocks, ft as resolveEnterpriseApprovalTeamId, gt as shouldHandleSlackNativeApprovalRequest, ht as resolveTurnSourceSlackOriginTarget, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, k as SLACK_EDIT_TEXT_MAX_BYTES, kt as shouldSuppressLocalSlackExecApprovalPrompt, lt as isSlackAnyNativeApprovalClientEnabled, mt as resolveSlackFallbackOriginTarget, o as qualifySlackRoutePeerId, p as resolveSlackReplyDeliveryMessages, pt as resolveSessionSlackOriginTarget, r as resolveSlackGroupRequireMention, rt as SLACK_PRESENTATION_CAPABILITIES, ut as normalizeSlackForwardTarget, vt as slackTargetsMatch, wt as getSlackExecApprovalApprovers, yt as getSlackInstallationKind } from "./group-policy-BdwszjYn.js";
7
7
  import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
8
- import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-CqMr5Rmc.js";
9
- import { S as resolveConfiguredFromRequiredCredentialStatuses, d as getSlackWriteClient, r as formatSlackError, v as DEFAULT_ACCOUNT_ID$1, x as projectCredentialSnapshotFields, y as PAIRING_APPROVED_MESSAGE } from "./probe-BVA65leh.js";
10
- import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-CZWv55Wu.js";
8
+ import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-CJ0kjcg5.js";
9
+ import { a as PAIRING_APPROVED_MESSAGE, i as DEFAULT_ACCOUNT_ID$1, n as slackConfigAdapter, o as projectCredentialSnapshotFields, r as slackSecurityAdapter, s as resolveConfiguredFromRequiredCredentialStatuses, t as createSlackPluginBase } from "./shared-D5B-5hBg.js";
10
+ import { S as getSlackWriteClient, o as formatSlackError } from "./probe-0usmAb0i.js";
11
+ import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-DlFSKeIZ.js";
11
12
  import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.js";
12
- import { n as slackConfigAdapter, r as slackSecurityAdapter, t as createSlackPluginBase } from "./shared-DJBaslN7.js";
13
- import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-CpyYsEXH.js";
13
+ import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-ofDi3_Pu.js";
14
14
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
15
15
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
16
16
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
17
17
  import { buildOutboundBaseSessionKey, normalizeMessageChannel, resolveAgentRoute } from "openclaw/plugin-sdk/routing";
18
18
  import { buildLegacyDmAccountAllowlistAdapter, createAccountScopedAllowlistNameResolver, createFlatAllowlistOverrideResolver } from "openclaw/plugin-sdk/allowlist-config-edit";
19
19
  import { buildThreadAwareOutboundSessionRoute, createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
20
- import { createChannelMessageAdapterFromOutbound, createRuntimeOutboundDelegates, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
20
+ import { createChannelMessageAdapterFromOutbound, createRuntimeOutboundDelegates } from "openclaw/plugin-sdk/channel-outbound";
21
21
  import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
22
22
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
23
23
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
@@ -30,7 +30,8 @@ import { createChannelNativeOriginTargetResolver, createNativeApprovalForwarding
30
30
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
31
31
  import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
32
32
  import { normalizeLegacyInteractiveReply, normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
33
- import { readPositiveIntegerParam, readStringParam } from "openclaw/plugin-sdk/param-readers";
33
+ import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
34
+ import { readPositiveIntegerParam as readPositiveIntegerParam$1, readStringParam as readStringParam$1 } from "openclaw/plugin-sdk/param-readers";
34
35
  //#region extensions/slack/src/approval-native.ts
35
36
  function resolveSlackNativeSuppressionAccountId({ target, request }) {
36
37
  return normalizeOptionalString(target.accountId) ?? normalizeOptionalString(request.request.turnSourceAccountId);
@@ -88,7 +89,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
88
89
  channelLabel: "Slack",
89
90
  describeExecApprovalSetup: ({ accountId }) => {
90
91
  const prefix = accountId && accountId !== "default" ? `channels.slack.accounts.${accountId}` : "channels.slack";
91
- return `Approve it from the Web UI or terminal UI for now. Slack supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`; leave \`${prefix}.execApprovals.enabled\` unset/\`auto\` or set it to \`true\`.`;
92
+ return `Approve it from the Web UI or terminal UI for now. Slack supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`; set \`${prefix}.execApprovals.enabled\` to \`auto\` or \`true\`. Unset or \`false\` disables native exec approval delivery.`;
92
93
  },
93
94
  listAccountIds: listSlackAccountIds,
94
95
  hasApprovers: ({ cfg, accountId }) => getSlackExecApprovalApprovers({
@@ -130,7 +131,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
130
131
  approvalKind,
131
132
  request
132
133
  }),
133
- load: async () => (await import("./approval-handler.runtime-BNvAoKdK.js")).slackApprovalNativeRuntime
134
+ load: async () => (await import("./approval-handler.runtime-DYv0UIZS.js")).slackApprovalNativeRuntime
134
135
  })
135
136
  });
136
137
  const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
@@ -192,7 +193,7 @@ function resolveSlackPresentationText(content, presentation) {
192
193
  }
193
194
  function renderSlackActionPresentation(presentation) {
194
195
  if (!presentation) return { usesPresentationTextFallback: false };
195
- const renderedBlocks = canRenderSlackPresentation(presentation) ? buildSlackPresentationBlocks(presentation) : void 0;
196
+ const renderedBlocks = !presentation.blocks.some((block) => (block.type === "text" || block.type === "context") && block.text.trim().length > 3e3) && canRenderSlackPresentation(presentation) ? buildSlackPresentationBlocks(presentation) : void 0;
196
197
  const usesPresentationTextFallback = !renderedBlocks || renderedBlocks.length > 50;
197
198
  const blocks = usesPresentationTextFallback ? void 0 : renderedBlocks;
198
199
  return {
@@ -206,16 +207,22 @@ async function handleSlackMessageAction(params) {
206
207
  const { action, cfg, params: actionParams } = ctx;
207
208
  const accountId = ctx.accountId ?? void 0;
208
209
  const resolveChannelId = () => {
209
- const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to", { required: true });
210
+ const channelId = readStringParam$1(actionParams, "channelId") ?? readStringParam$1(actionParams, "to", { required: true });
210
211
  return normalizeChannelId ? normalizeChannelId(channelId) : channelId;
211
212
  };
213
+ if (action === "conversation-open") return await invoke({
214
+ action: "openConversation",
215
+ userIds: actionParams.userIds,
216
+ teamId: readStringParam$1(actionParams, "teamId"),
217
+ accountId
218
+ }, cfg, ctx.toolContext);
212
219
  if (action === "send") {
213
- const to = readStringParam(actionParams, "to", { required: true });
214
- const content = readStringParam(actionParams, "message", {
220
+ const to = readStringParam$1(actionParams, "to", { required: true });
221
+ const content = readStringParam$1(actionParams, "message", {
215
222
  required: false,
216
223
  allowEmpty: true
217
224
  });
218
- const mediaUrl = readStringParam(actionParams, "media", { trim: false });
225
+ const mediaUrl = readStringParam$1(actionParams, "media", { trim: false });
219
226
  const presentation = normalizeMessagePresentation(actionParams.presentation);
220
227
  const interactive = normalizeLegacyInteractiveReply(actionParams.interactive);
221
228
  const hasStructuredContent = Boolean(presentation || interactive?.blocks.length);
@@ -232,8 +239,8 @@ async function handleSlackMessageAction(params) {
232
239
  if (!content && preparedMessages.length === 0 && !mediaUrl) throw new Error("Slack send requires message, blocks, or media.");
233
240
  const replyBroadcast = readBooleanParam(actionParams, "replyBroadcast");
234
241
  if (replyBroadcast && mediaUrl) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
235
- const threadId = readStringParam(actionParams, "threadId");
236
- const replyTo = readStringParam(actionParams, "replyTo");
242
+ const threadId = readStringParam$1(actionParams, "threadId");
243
+ const replyTo = readStringParam$1(actionParams, "replyTo");
237
244
  const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
238
245
  const toolContext = preparedMessages.length > 0 ? {
239
246
  ...ctx.toolContext,
@@ -246,7 +253,10 @@ async function handleSlackMessageAction(params) {
246
253
  mediaUrl: mediaUrl ?? void 0,
247
254
  ...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
248
255
  accountId,
249
- threadTs: threadId ?? replyTo ?? void 0,
256
+ threadTs: resolveSlackThreadTsValue({
257
+ replyToId: replyTo,
258
+ threadId
259
+ }),
250
260
  ...topLevel ? { topLevel: true } : {},
251
261
  ...replyBroadcast ? { replyBroadcast } : {}
252
262
  }, cfg, toolContext);
@@ -258,7 +268,7 @@ async function handleSlackMessageAction(params) {
258
268
  });
259
269
  if (messageIdRaw == null) throw new Error("messageId required. Provide messageId explicitly or react to the current inbound message.");
260
270
  const messageId = String(messageIdRaw);
261
- const emoji = readStringParam(actionParams, "emoji", { allowEmpty: true });
271
+ const emoji = readStringParam$1(actionParams, "emoji", { allowEmpty: true });
262
272
  const remove = typeof actionParams.remove === "boolean" ? actionParams.remove : void 0;
263
273
  return await invoke({
264
274
  action: "react",
@@ -270,7 +280,7 @@ async function handleSlackMessageAction(params) {
270
280
  }, cfg, ctx.toolContext);
271
281
  }
272
282
  if (action === "reactions") {
273
- const messageId = readStringParam(actionParams, "messageId", { required: true });
283
+ const messageId = readStringParam$1(actionParams, "messageId", { required: true });
274
284
  return await invoke({
275
285
  action: "reactions",
276
286
  channelId: resolveChannelId(),
@@ -284,17 +294,17 @@ async function handleSlackMessageAction(params) {
284
294
  action: "readMessages",
285
295
  channelId: resolveChannelId(),
286
296
  limit: actionParams.limit,
287
- before: readStringParam(actionParams, "before"),
288
- after: readStringParam(actionParams, "after"),
289
- messageId: readStringParam(actionParams, "messageId"),
297
+ before: readStringParam$1(actionParams, "before"),
298
+ after: readStringParam$1(actionParams, "after"),
299
+ messageId: readStringParam$1(actionParams, "messageId"),
290
300
  accountId
291
301
  };
292
- if (includeReadThreadId) readAction.threadId = readStringParam(actionParams, "threadId");
302
+ if (includeReadThreadId) readAction.threadId = readStringParam$1(actionParams, "threadId");
293
303
  return await invoke(readAction, cfg, ctx.toolContext);
294
304
  }
295
305
  if (action === "edit") {
296
- const messageId = readStringParam(actionParams, "messageId", { required: true });
297
- const content = readStringParam(actionParams, "message", { allowEmpty: true });
306
+ const messageId = readStringParam$1(actionParams, "messageId", { required: true });
307
+ const content = readStringParam$1(actionParams, "message", { allowEmpty: true });
298
308
  const presentation = normalizeMessagePresentation(actionParams.presentation);
299
309
  const renderedPresentation = renderSlackActionPresentation(presentation);
300
310
  const blocks = renderedPresentation.usesPresentationTextFallback ? void 0 : renderedPresentation.blocks;
@@ -302,7 +312,15 @@ async function handleSlackMessageAction(params) {
302
312
  text: content,
303
313
  presentation
304
314
  }) : resolveSlackPresentationText(content, presentation);
305
- if (renderedPresentation.usesPresentationTextFallback && countSlackTextUtf8Bytes(accessibleContent) > 4e3) throw new Error(`Slack presentation fallback exceeds the ${String(SLACK_EDIT_TEXT_MAX_BYTES)}-byte edit limit. Send a new message instead.`);
315
+ const tableMode = resolveMarkdownTableMode({
316
+ cfg,
317
+ channel: "slack",
318
+ accountId: accountId ?? resolveDefaultSlackAccountId(cfg)
319
+ });
320
+ if (!blocks && countSlackTextUtf8Bytes(normalizeSlackOutboundText(accessibleContent, { tableMode })) > 4e3) {
321
+ const editSubject = renderedPresentation.usesPresentationTextFallback ? "Slack presentation fallback" : "Slack edit";
322
+ throw new Error(`${editSubject} exceeds the ${String(SLACK_EDIT_TEXT_MAX_BYTES)}-byte edit limit. Send a new message instead.`);
323
+ }
306
324
  if (!accessibleContent && !blocks) throw new Error("Slack edit requires message or blocks.");
307
325
  return await invoke({
308
326
  action: "editMessage",
@@ -314,7 +332,7 @@ async function handleSlackMessageAction(params) {
314
332
  }, cfg, ctx.toolContext);
315
333
  }
316
334
  if (action === "delete") {
317
- const messageId = readStringParam(actionParams, "messageId", { required: true });
335
+ const messageId = readStringParam$1(actionParams, "messageId", { required: true });
318
336
  return await invoke({
319
337
  action: "deleteMessage",
320
338
  channelId: resolveChannelId(),
@@ -323,7 +341,7 @@ async function handleSlackMessageAction(params) {
323
341
  }, cfg, ctx.toolContext);
324
342
  }
325
343
  if (action === "pin" || action === "unpin" || action === "list-pins") {
326
- const messageId = action === "list-pins" ? void 0 : readStringParam(actionParams, "messageId", { required: true });
344
+ const messageId = action === "list-pins" ? void 0 : readStringParam$1(actionParams, "messageId", { required: true });
327
345
  return await invoke({
328
346
  action: action === "pin" ? "pinMessage" : action === "unpin" ? "unpinMessage" : "listPins",
329
347
  channelId: resolveChannelId(),
@@ -335,7 +353,7 @@ async function handleSlackMessageAction(params) {
335
353
  const requesterAccountId = ctx.requesterAccountId ? normalizeAccountId(ctx.requesterAccountId) : void 0;
336
354
  const targetAccountId = normalizeAccountId(accountId ?? resolveDefaultSlackAccountId(cfg));
337
355
  const requesterUserId = normalizeOptionalLowercaseString(ctx.toolContext?.currentChannelProvider) === "slack" && requesterAccountId !== void 0 && requesterAccountId === targetAccountId ? normalizeOptionalString(ctx.requesterSenderId) : void 0;
338
- const userId = readStringParam(actionParams, "userId") ?? requesterUserId;
356
+ const userId = readStringParam$1(actionParams, "userId") ?? requesterUserId;
339
357
  if (!userId) throw new Error("member-info requires a userId outside a current Slack conversation.");
340
358
  return await invoke({
341
359
  action: "memberInfo",
@@ -345,16 +363,16 @@ async function handleSlackMessageAction(params) {
345
363
  }
346
364
  if (action === "emoji-list") return await invoke({
347
365
  action: "emojiList",
348
- limit: readPositiveIntegerParam(actionParams, "limit", { message: "limit must be a positive integer." }),
366
+ limit: readPositiveIntegerParam$1(actionParams, "limit", { message: "limit must be a positive integer." }),
349
367
  accountId
350
368
  }, cfg, ctx.toolContext);
351
369
  if (action === "download-file") {
352
- const fileIdParam = readStringParam(actionParams, "fileId");
353
- const messageIdParam = readStringParam(actionParams, "messageId") ?? readStringParam(actionParams, "message_id");
370
+ const fileIdParam = readStringParam$1(actionParams, "fileId");
371
+ const messageIdParam = readStringParam$1(actionParams, "messageId") ?? readStringParam$1(actionParams, "message_id");
354
372
  if (!fileIdParam && messageIdParam) throw new Error("download-file requires fileId (the Slack file id, for example F0B0LTT8M36 from event.files[].id), not messageId. Did you mean to pass fileId? messageId is the Slack message timestamp and is used by react / reactions / edit / delete / pin / unpin actions, not download-file.");
355
- const fileId = readStringParam(actionParams, "fileId", { required: true });
356
- const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to");
357
- const threadId = readStringParam(actionParams, "threadId") ?? readStringParam(actionParams, "replyTo");
373
+ const fileId = readStringParam$1(actionParams, "fileId", { required: true });
374
+ const channelId = readStringParam$1(actionParams, "channelId") ?? readStringParam$1(actionParams, "to");
375
+ const threadId = readStringParam$1(actionParams, "threadId") ?? readStringParam$1(actionParams, "replyTo");
358
376
  return await invoke({
359
377
  action: "downloadFile",
360
378
  fileId,
@@ -365,18 +383,18 @@ async function handleSlackMessageAction(params) {
365
383
  }
366
384
  if (action === "upload-file") {
367
385
  if (readBooleanParam(actionParams, "replyBroadcast")) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
368
- const to = readStringParam(actionParams, "to") ?? resolveChannelId();
369
- const filePath = readStringParam(actionParams, "filePath", { trim: false }) ?? readStringParam(actionParams, "path", { trim: false }) ?? readStringParam(actionParams, "media", { trim: false });
386
+ const to = readStringParam$1(actionParams, "to") ?? resolveChannelId();
387
+ const filePath = readStringParam$1(actionParams, "filePath", { trim: false }) ?? readStringParam$1(actionParams, "path", { trim: false }) ?? readStringParam$1(actionParams, "media", { trim: false });
370
388
  if (!filePath) throw new Error("upload-file requires filePath, path, or media");
371
- const threadId = readStringParam(actionParams, "threadId") ?? readStringParam(actionParams, "replyTo");
389
+ const threadId = readStringParam$1(actionParams, "threadId") ?? readStringParam$1(actionParams, "replyTo");
372
390
  const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
373
391
  return await invoke({
374
392
  action: "uploadFile",
375
393
  to,
376
394
  filePath,
377
- initialComment: readStringParam(actionParams, "initialComment", { allowEmpty: true }) ?? readStringParam(actionParams, "message", { allowEmpty: true }) ?? readStringParam(actionParams, "caption", { allowEmpty: true }) ?? "",
378
- filename: readStringParam(actionParams, "filename"),
379
- title: readStringParam(actionParams, "title"),
395
+ initialComment: readStringParam$1(actionParams, "initialComment", { allowEmpty: true }) ?? readStringParam$1(actionParams, "message", { allowEmpty: true }) ?? readStringParam$1(actionParams, "caption", { allowEmpty: true }) ?? "",
396
+ filename: readStringParam$1(actionParams, "filename"),
397
+ title: readStringParam$1(actionParams, "title"),
380
398
  threadTs: threadId ?? void 0,
381
399
  ...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
382
400
  ...topLevel ? { topLevel: true } : {},
@@ -396,7 +414,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = /* @__PURE__ */ new Set([
396
414
  "unpinMessage",
397
415
  "uploadFile"
398
416
  ]);
399
- const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-JtoOK9l5.js"));
417
+ const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-BL3KzX13.js"));
400
418
  function resolveSlackActionContext(ctx, toolContext) {
401
419
  if (!toolContext && !ctx.mediaAccess && !ctx.mediaLocalRoots && !ctx.mediaReadFile && !ctx.conversationReadOrigin && !ctx.requesterAccountId && !ctx.requesterSenderId) return;
402
420
  return {
@@ -538,41 +556,23 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
538
556
  const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
539
557
  const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
540
558
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
541
- const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BPFfp6So.js"));
542
- const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-BSk4GZvZ.js"));
543
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-DuRqAQXK.js"));
559
+ const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BGnd2pSe.js"));
560
+ const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-COSlmhnH.js"));
561
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-DYaI8ThX.js"));
544
562
  async function resolveSlackHandleAction() {
545
563
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
546
564
  }
547
565
  function shouldTreatSlackDeliveredTextAsVisible(params) {
548
566
  return params.kind === "block" && typeof params.text === "string" && params.text.trim().length > 0;
549
567
  }
550
- const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BGYyuzWh.js").then((n) => n.t));
551
- const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-BSpqC8jU.js").then((n) => n.n));
552
- const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-Dvz9pDe0.js").then((n) => n.n));
553
- const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-JtoOK9l5.js"));
554
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-kYctMHSd.js"));
555
- const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-BVA65leh.js").then((n) => n.n));
556
- const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-Chrecrb9.js").then((n) => n.t));
557
- const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DjUJQLbq.js").then((n) => n.t));
558
- async function resolveSlackSendContext(params) {
559
- const account = resolveSlackAccount({
560
- cfg: params.cfg,
561
- accountId: params.accountId
562
- });
563
- const target = parseSlackTarget(params.to, { defaultKind: "channel" });
564
- assertSlackDetachedTargetAllowed(account.accountId, target?.teamId);
565
- const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
566
- const token = resolveSlackOperationToken(account, "write");
567
- const botToken = account.botToken?.trim();
568
- const tokenOverride = token && token !== botToken ? token : void 0;
569
- return {
570
- send,
571
- threadTsValue: resolveSlackThreadTsValue(params),
572
- tokenOverride,
573
- to: params.to
574
- };
575
- }
568
+ const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-DqfQ42OV.js").then((n) => n.t));
569
+ const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-Czheznc8.js").then((n) => n.n));
570
+ const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-BAOlNimr.js").then((n) => n.n));
571
+ const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-BL3KzX13.js"));
572
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-D_Bb6IuH.js"));
573
+ const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-0usmAb0i.js").then((n) => n.n));
574
+ const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-Dq5Cmrvp.js").then((n) => n.t));
575
+ const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-BPaNHjmP.js").then((n) => n.t));
576
576
  async function setSlackHeartbeatThreadStatus(params) {
577
577
  const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
578
578
  const target = parseSlackTarget(params.to, { defaultKind: "channel" });
@@ -603,15 +603,6 @@ async function setSlackHeartbeatThreadStatus(params) {
603
603
  logVerbose(`slack heartbeat status update failed: ${formatSlackError(error)}`);
604
604
  }
605
605
  }
606
- function withSlackSendOverride(params) {
607
- return {
608
- ...params.deps,
609
- slack: async (to, text, opts) => await params.send(to, text, {
610
- ...opts,
611
- ...params.tokenOverride ? { token: params.tokenOverride } : {}
612
- })
613
- };
614
- }
615
606
  function resolveSlackRouteTarget(raw) {
616
607
  const target = parseSlackTarget(raw, { defaultKind: "channel" });
617
608
  if (!target) return null;
@@ -773,72 +764,16 @@ const slackChannelOutbound = {
773
764
  }
774
765
  }),
775
766
  sendPayload: async (ctx) => {
776
- const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
777
- cfg: ctx.cfg,
778
- accountId: ctx.accountId ?? void 0,
779
- to: ctx.to,
780
- deps: ctx.deps,
781
- replyToId: ctx.replyToId,
782
- threadId: ctx.threadId
783
- });
784
767
  const { slackOutbound } = await loadSlackOutboundAdapterModule();
785
- return await slackOutbound.sendPayload({
786
- ...ctx,
787
- to,
788
- replyToId: threadTsValue,
789
- threadId: null,
790
- deliveryQueueId: void 0,
791
- deps: withSlackSendOverride({
792
- deps: ctx.deps,
793
- send,
794
- tokenOverride
795
- })
796
- });
768
+ return await slackOutbound.sendPayload(ctx);
797
769
  },
798
770
  sendText: async (ctx) => {
799
- const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
800
- cfg: ctx.cfg,
801
- accountId: ctx.accountId ?? void 0,
802
- to: ctx.to,
803
- deps: ctx.deps,
804
- replyToId: ctx.replyToId,
805
- threadId: ctx.threadId
806
- });
807
771
  const { slackOutbound } = await loadSlackOutboundAdapterModule();
808
- return await slackOutbound.sendText({
809
- ...ctx,
810
- to,
811
- replyToId: threadTsValue,
812
- threadId: null,
813
- deps: withSlackSendOverride({
814
- deps: ctx.deps,
815
- send,
816
- tokenOverride
817
- })
818
- });
772
+ return await slackOutbound.sendText(ctx);
819
773
  },
820
774
  sendMedia: async (ctx) => {
821
- const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
822
- cfg: ctx.cfg,
823
- accountId: ctx.accountId ?? void 0,
824
- to: ctx.to,
825
- deps: ctx.deps,
826
- replyToId: ctx.replyToId,
827
- threadId: ctx.threadId
828
- });
829
775
  const { slackOutbound } = await loadSlackOutboundAdapterModule();
830
- return await slackOutbound.sendMedia({
831
- ...ctx,
832
- to,
833
- replyToId: threadTsValue,
834
- threadId: null,
835
- deliveryQueueId: void 0,
836
- deps: withSlackSendOverride({
837
- deps: ctx.deps,
838
- send,
839
- tokenOverride
840
- })
841
- });
776
+ return await slackOutbound.sendMedia(ctx);
842
777
  }
843
778
  };
844
779
  const slackMessageAdapterBase = createChannelMessageAdapterFromOutbound({
@@ -1,2 +1,2 @@
1
- import { t as SlackChannelConfigSchema } from "./config-schema-CN3XZRX5.js";
1
+ import { t as SlackChannelConfigSchema } from "./config-schema-BVIMyiDN.js";
2
2
  export { SlackChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as slackPlugin } from "./channel-CA5w7qDF.js";
1
+ import { t as slackPlugin } from "./channel-1vIJOzPx.js";
2
2
  export { slackPlugin };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-BlzxuYle.js";
3
- import { g as assertSlackDetachedTargetAllowed, u as normalizeAllowListLower } from "./group-policy-DyfB_ZIE.js";
4
- import { a as createSlackReadClient, c as createSlackWebClient } from "./probe-BVA65leh.js";
2
+ import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
3
+ import { c as assertSlackDetachedTargetAllowed } from "./group-policy-BdwszjYn.js";
4
+ import { g as createSlackReadClient, l as normalizeAllowListLower, y as createSlackWebClient } from "./probe-0usmAb0i.js";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createHash } from "node:crypto";
7
7
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
@@ -1,8 +1,8 @@
1
- import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-BlzxuYle.js";
2
- import { t as inspectSlackAccount } from "./account-inspect-YJvFBbCR.js";
3
- import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
4
- import { t as SlackChannelConfigSchema } from "./config-schema-CN3XZRX5.js";
5
- import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
1
+ import { r as isSlackSetupAccountConfigured } from "./account-configured-sUohAxZr.js";
2
+ import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-Dm_H77gH.js";
3
+ import { t as inspectSlackAccount } from "./account-inspect-CN2hBsim.js";
4
+ import { t as SlackChannelConfigSchema } from "./config-schema-BVIMyiDN.js";
5
+ import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
8
8
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
@@ -102,13 +102,13 @@ function buildSlackManifest(botName = "OpenClaw") {
102
102
  }
103
103
  function buildSlackSetupLines() {
104
104
  return [
105
- "1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)",
106
- "2) Add Socket Mode + enable it to get the app-level token (xapp-...)",
107
- "3) Install App to workspace to get the xoxb- bot token",
108
- "4) Enable Event Subscriptions (socket) for message, App Home, and Agent View events",
109
- "5) App Home -> enable the Home tab, Messages tab for DMs, and Agent View",
110
- "Manifest JSON follows as plain text for copy/paste.",
111
- "Tip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
105
+ "1) Slack API -> Create App -> From scratch or a transport-specific manifest",
106
+ "2) Install App to workspace to get the xoxb- bot token",
107
+ "3) Socket Mode: enable it and create an app-level token (xapp-...)",
108
+ "4) HTTP: configure a public HTTPS Request URL and copy the app Signing Secret",
109
+ "5) Enable Event Subscriptions for message, App Home, and Agent View events",
110
+ "6) App Home -> enable the Home tab, Messages tab for DMs, and Agent View",
111
+ "Tip: Socket Mode can use SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
112
112
  `Docs: ${formatDocsLink("/slack", "slack")}`
113
113
  ];
114
114
  }
@@ -121,17 +121,6 @@ function setSlackChannelAllowlist(cfg, accountId, channelKeys) {
121
121
  patch: { channels }
122
122
  });
123
123
  }
124
- function isSlackSetupAccountConfigured(account) {
125
- if (account.config.mode === "relay") return isSlackPluginAccountConfigured(account);
126
- const hasConfiguredUserToken = Boolean(account.userToken?.trim()) || hasConfiguredSecretInput(account.config.userToken);
127
- const hasConfiguredBotToken = Boolean(account.botToken?.trim()) || hasConfiguredSecretInput(account.config.botToken);
128
- const hasConfiguredAppToken = Boolean(account.appToken?.trim()) || hasConfiguredSecretInput(account.config.appToken);
129
- if (account.identity === "user") {
130
- const hasTransportCredential = account.config.mode === "http" ? hasConfiguredSecretInput(account.config.signingSecret) : hasConfiguredAppToken;
131
- return hasConfiguredUserToken && hasTransportCredential;
132
- }
133
- return hasConfiguredBotToken && hasConfiguredAppToken;
134
- }
135
124
  function describeSlackSetupAccount(account) {
136
125
  return describeAccountSnapshot({
137
126
  account,
@@ -229,12 +218,9 @@ function createSlackTokenCredential(params) {
229
218
  });
230
219
  }
231
220
  function hasSlackSetupCredentials(params) {
232
- if (params.identity !== "user") {
233
- const { input } = params;
234
- return Boolean(input.botToken && input.appToken);
235
- }
236
- if (params.mode === "http") return Boolean(params.input.userToken && params.input.signingSecret);
237
- return params.mode === "socket" && Boolean(params.input.userToken && params.input.appToken);
221
+ const identityToken = params.identity === "user" ? params.input.userToken : params.input.botToken;
222
+ const transportCredential = params.mode === "http" ? params.input.signingSecret : params.input.appToken;
223
+ return Boolean(identityToken && transportCredential);
238
224
  }
239
225
  const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
240
226
  channelKey: SLACK_CHANNEL,
@@ -260,13 +246,13 @@ const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
260
246
  mode
261
247
  })) return null;
262
248
  if (identity === "user") return mode === "http" ? "Slack user identity requires --user-token and --signing-secret." : "Slack user identity requires --user-token and --app-token.";
263
- return "Slack requires --bot-token and --app-token (or --use-env).";
249
+ return mode === "http" ? "Slack HTTP mode requires --bot-token and --signing-secret (or --use-env)." : "Slack requires --bot-token and --app-token (or --use-env).";
264
250
  },
265
251
  buildPatch: (input) => {
266
252
  const setupInput = input;
267
253
  return {
268
254
  ...setupInput.identity ? { postAs: setupInput.identity } : {},
269
- ...setupInput.identity === "user" && setupInput.mode ? { mode: setupInput.mode } : {},
255
+ ...setupInput.mode ? { mode: setupInput.mode } : {},
270
256
  ...setupInput.botToken ? { botToken: setupInput.botToken } : {},
271
257
  ...setupInput.appToken ? { appToken: setupInput.appToken } : {},
272
258
  ...setupInput.userToken ? { userToken: setupInput.userToken } : {},
@@ -421,23 +407,24 @@ function createSlackSetupWizardBase(handlers) {
421
407
  `Docs: ${formatDocsLink("/channels/slack#user-identity-post-as-a-real-person", "channels/slack")}`
422
408
  ].join("\n"), "Slack user identity");
423
409
  } else {
424
- await prompter.note(buildSlackSetupLines().join("\n"), t("wizard.slack.socketModeTokensTitle"));
425
- const manifest = buildSlackManifest();
426
- if (prompter.plain) await prompter.plain(manifest);
427
- else await prompter.note(manifest, "Slack manifest JSON");
410
+ await prompter.note(buildSlackSetupLines().join("\n"), t("wizard.channels.setupTitle"));
411
+ if (currentAccount.config.mode !== "http") {
412
+ const manifest = buildSlackManifest();
413
+ await (prompter.plain ? prompter.plain(manifest) : prompter.note(manifest, "Slack manifest JSON"));
414
+ }
428
415
  }
429
416
  return { cfg: next };
430
417
  },
431
418
  envShortcut: {
432
419
  prompt: t("wizard.slack.envPrompt"),
433
420
  preferredEnvVar: "SLACK_BOT_TOKEN",
434
- isAvailable: ({ cfg, accountId }) => accountId === DEFAULT_ACCOUNT_ID && (inspectSlackAccount({
435
- cfg,
436
- accountId
437
- }).config.postAs ?? "bot") === "bot" && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !inspectSlackAccount({
438
- cfg,
439
- accountId
440
- }).configured,
421
+ isAvailable: ({ cfg, accountId }) => {
422
+ const account = inspectSlackAccount({
423
+ cfg,
424
+ accountId
425
+ });
426
+ return accountId === DEFAULT_ACCOUNT_ID && (account.config.postAs ?? "bot") === "bot" && (account.config.mode ?? "socket") === "socket" && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !account.configured;
427
+ },
441
428
  apply: ({ cfg, accountId }) => enableSlackAccount(cfg, accountId)
442
429
  },
443
430
  credentials: [
@@ -473,11 +460,10 @@ function createSlackSetupWizardBase(handlers) {
473
460
  keepPrompt: t("wizard.slack.appTokenKeep"),
474
461
  inputPrompt: t("wizard.slack.appTokenInput"),
475
462
  shouldPrompt: ({ cfg, accountId }) => {
476
- const account = inspectSlackAccount({
463
+ return (inspectSlackAccount({
477
464
  cfg,
478
465
  accountId
479
- });
480
- return (account.config.postAs ?? "bot") === "bot" || (account.config.mode ?? "socket") === "socket";
466
+ }).config.mode ?? "socket") === "socket";
481
467
  }
482
468
  }),
483
469
  createSlackTokenCredential({
@@ -487,11 +473,10 @@ function createSlackSetupWizardBase(handlers) {
487
473
  keepPrompt: "Slack signing secret already configured. Keep it?",
488
474
  inputPrompt: "Enter Slack signing secret",
489
475
  shouldPrompt: ({ cfg, accountId }) => {
490
- const account = inspectSlackAccount({
476
+ return inspectSlackAccount({
491
477
  cfg,
492
478
  accountId
493
- });
494
- return account.config.postAs === "user" && account.config.mode === "http";
479
+ }).config.mode === "http";
495
480
  }
496
481
  })
497
482
  ],
@@ -570,7 +555,7 @@ const slackBaseConfigAdapter = createScopedChannelConfigAdapter({
570
555
  });
571
556
  //#endregion
572
557
  //#region extensions/slack/src/channel.setup.ts
573
- const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-BPFfp6So.js")).slackSetupWizard }));
558
+ const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-BGnd2pSe.js")).slackSetupWizard }));
574
559
  const slackSetupPlugin = {
575
560
  id: SLACK_CHANNEL,
576
561
  meta: {