@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
@@ -0,0 +1,33 @@
1
+ import { hasConfiguredAccountValue } from "openclaw/plugin-sdk/account-resolution";
2
+ import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
3
+ //#region extensions/slack/src/account-configured.ts
4
+ function hasSlackAccountCredentials(params) {
5
+ if (!params.identityTokenConfigured) return false;
6
+ const mode = params.config.mode ?? "socket";
7
+ if (mode === "http") return hasConfiguredAccountValue(params.config.signingSecret);
8
+ if (mode === "relay") {
9
+ const relay = params.config.relay;
10
+ return hasConfiguredAccountValue(relay?.url) && hasConfiguredAccountValue(relay?.authToken) && hasConfiguredAccountValue(relay?.gatewayId);
11
+ }
12
+ return params.appTokenConfigured;
13
+ }
14
+ function isSlackPluginAccountConfigured(account) {
15
+ const identityToken = account.identity === "user" ? account.userToken : account.botToken;
16
+ return hasSlackAccountCredentials({
17
+ config: account.config,
18
+ identityTokenConfigured: Boolean(identityToken?.trim()),
19
+ appTokenConfigured: Boolean(account.appToken?.trim())
20
+ });
21
+ }
22
+ function isSlackSetupAccountConfigured(account) {
23
+ if (account.config.mode === "relay") return isSlackPluginAccountConfigured(account);
24
+ const identityToken = account.identity === "user" ? account.userToken : account.botToken;
25
+ const configuredIdentityToken = account.identity === "user" ? account.config.userToken : account.config.botToken;
26
+ return hasSlackAccountCredentials({
27
+ config: account.config,
28
+ identityTokenConfigured: Boolean(identityToken?.trim()) || hasConfiguredSecretInput(configuredIdentityToken),
29
+ appTokenConfigured: Boolean(account.appToken?.trim()) || hasConfiguredSecretInput(account.config.appToken)
30
+ });
31
+ }
32
+ //#endregion
33
+ export { isSlackPluginAccountConfigured as n, isSlackSetupAccountConfigured as r, hasSlackAccountCredentials as t };
@@ -0,0 +1,87 @@
1
+ import { t as hasSlackAccountCredentials } from "./account-configured-sUohAxZr.js";
2
+ import { i as resolveDefaultSlackAccountId, r as mergeSlackAccountConfig } from "./accounts-Dm_H77gH.js";
3
+ import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
4
+ import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
5
+ import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
+ //#region extensions/slack/src/account-inspect.ts
7
+ function inspectSlackToken(value) {
8
+ const token = normalizeSecretInputString(value);
9
+ if (token) return {
10
+ token,
11
+ source: "config",
12
+ status: "available"
13
+ };
14
+ if (hasConfiguredSecretInput(value)) return {
15
+ source: "config",
16
+ status: "configured_unavailable"
17
+ };
18
+ return {
19
+ source: "none",
20
+ status: "missing"
21
+ };
22
+ }
23
+ function resolveInspectedSlackToken(configured, envToken) {
24
+ return configured.status === "missing" && envToken ? {
25
+ token: envToken,
26
+ source: "env",
27
+ status: "available"
28
+ } : configured;
29
+ }
30
+ function inspectSlackAccount(params) {
31
+ const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
32
+ const merged = mergeSlackAccountConfig(params.cfg, accountId);
33
+ const enabled = params.cfg.channels?.slack?.enabled !== false && merged.enabled !== false;
34
+ const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
35
+ const mode = merged.mode ?? "socket";
36
+ const identity = merged.postAs ?? "bot";
37
+ const isHttpMode = mode === "http";
38
+ const isRelayMode = mode === "relay";
39
+ const configBot = inspectSlackToken(merged.botToken);
40
+ const configApp = inspectSlackToken(merged.appToken);
41
+ const configSigningSecret = inspectSlackToken(merged.signingSecret);
42
+ const configUser = inspectSlackToken(merged.userToken);
43
+ const envBot = allowEnv ? normalizeSecretInputString(params.envBotToken ?? process.env.SLACK_BOT_TOKEN) : void 0;
44
+ const envApp = allowEnv && !isRelayMode ? normalizeSecretInputString(params.envAppToken ?? process.env.SLACK_APP_TOKEN) : void 0;
45
+ const envUser = allowEnv ? normalizeSecretInputString(params.envUserToken ?? process.env.SLACK_USER_TOKEN) : void 0;
46
+ const botCredential = resolveInspectedSlackToken(configBot, envBot);
47
+ const appCredential = resolveInspectedSlackToken(configApp, envApp);
48
+ const userCredential = resolveInspectedSlackToken(configUser, envUser);
49
+ return {
50
+ accountId,
51
+ enabled,
52
+ ...identity === "user" ? { identity } : {},
53
+ name: normalizeOptionalString(merged.name),
54
+ mode,
55
+ botToken: botCredential.token,
56
+ appToken: appCredential.token,
57
+ ...isHttpMode ? { signingSecret: configSigningSecret.token } : {},
58
+ userToken: userCredential.token,
59
+ botTokenSource: botCredential.source,
60
+ appTokenSource: appCredential.source,
61
+ ...isHttpMode ? { signingSecretSource: configSigningSecret.source } : {},
62
+ userTokenSource: userCredential.source,
63
+ botTokenStatus: botCredential.status,
64
+ appTokenStatus: appCredential.status,
65
+ ...isHttpMode ? { signingSecretStatus: configSigningSecret.status } : {},
66
+ userTokenStatus: userCredential.status,
67
+ configured: hasSlackAccountCredentials({
68
+ config: merged,
69
+ identityTokenConfigured: (identity === "user" ? userCredential : botCredential).status !== "missing",
70
+ appTokenConfigured: appCredential.status !== "missing"
71
+ }),
72
+ config: merged,
73
+ groupPolicy: merged.groupPolicy,
74
+ textChunkLimit: merged.textChunkLimit,
75
+ mediaMaxMb: merged.mediaMaxMb,
76
+ reactionNotifications: merged.reactionNotifications,
77
+ reactionAllowlist: merged.reactionAllowlist,
78
+ replyToMode: merged.replyToMode,
79
+ replyToModeByChatType: merged.replyToModeByChatType,
80
+ actions: merged.actions,
81
+ slashCommand: merged.slashCommand,
82
+ dm: merged.dm,
83
+ channels: merged.channels
84
+ };
85
+ }
86
+ //#endregion
87
+ export { inspectSlackAccount as t };
@@ -1,4 +1,4 @@
1
- import { t as inspectSlackAccount } from "./account-inspect-YJvFBbCR.js";
1
+ import { t as inspectSlackAccount } from "./account-inspect-CN2hBsim.js";
2
2
  //#region extensions/slack/account-inspect-api.ts
3
3
  function inspectSlackReadOnlyAccount(cfg, accountId) {
4
4
  return inspectSlackAccount({
@@ -1,3 +1,4 @@
1
+ import { t as hasSlackAccountCredentials } from "./account-configured-sUohAxZr.js";
1
2
  import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, hasConfiguredAccountValue, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
2
3
  import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
3
4
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -46,16 +47,12 @@ const { listAccountIds, resolveDefaultAccountId, resolveAccountConfig: resolveMe
46
47
  ],
47
48
  hasImplicitDefaultAccount: (cfg) => {
48
49
  const slack = cfg.channels?.slack;
49
- if (slack?.postAs === "user") {
50
- if (!(hasConfiguredAccountValue(slack.userToken) || hasConfiguredAccountValue(process.env.SLACK_USER_TOKEN))) return false;
51
- if (slack.mode === "http") return hasConfiguredAccountValue(slack.signingSecret);
52
- if (slack.mode === "relay") return hasConfiguredAccountValue(slack.relay?.url) && hasConfiguredAccountValue(slack.relay?.authToken) && hasConfiguredAccountValue(slack.relay?.gatewayId);
53
- return hasConfiguredAccountValue(slack.appToken) || hasConfiguredAccountValue(process.env.SLACK_APP_TOKEN);
54
- }
55
- if (!(hasConfiguredAccountValue(slack?.botToken) || hasConfiguredAccountValue(process.env.SLACK_BOT_TOKEN))) return false;
56
- if (slack?.mode === "http") return hasConfiguredAccountValue(slack.signingSecret);
57
- if (slack?.mode === "relay") return hasConfiguredAccountValue(slack.relay?.url) && hasConfiguredAccountValue(slack.relay?.authToken) && hasConfiguredAccountValue(slack.relay?.gatewayId);
58
- return hasConfiguredAccountValue(slack?.appToken) || hasConfiguredAccountValue(process.env.SLACK_APP_TOKEN);
50
+ const userIdentity = slack?.postAs === "user";
51
+ return hasSlackAccountCredentials({
52
+ config: slack ?? {},
53
+ identityTokenConfigured: hasConfiguredAccountValue(userIdentity ? slack?.userToken : slack?.botToken) || hasConfiguredAccountValue(userIdentity ? process.env.SLACK_USER_TOKEN : process.env.SLACK_BOT_TOKEN),
54
+ appTokenConfigured: hasConfiguredAccountValue(slack?.appToken) || hasConfiguredAccountValue(process.env.SLACK_APP_TOKEN)
55
+ });
59
56
  }
60
57
  });
61
58
  const listSlackAccountIds = listAccountIds;
@@ -1,2 +1,2 @@
1
- import { a as resolveSlackAccount, l as resolveSlackOperationToken, o as resolveSlackAccountAllowFrom } from "./accounts-BlzxuYle.js";
1
+ import { a as resolveSlackAccount, l as resolveSlackOperationToken, o as resolveSlackAccountAllowFrom } from "./accounts-Dm_H77gH.js";
2
2
  export { resolveSlackAccount, resolveSlackAccountAllowFrom, resolveSlackOperationToken };
@@ -1,16 +1,18 @@
1
1
  import { a as parseSlackTarget, n as formatSlackTarget, o as resolveSlackChannelId } from "./target-parsing-BnMD2ZqZ.js";
2
2
  import { t as slackContextTargetsMatch } from "./targets-Cx5W_n3W.js";
3
- import { Et as getSlackInstallationKind, Lt as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, O as hasSlackNativeDataBlock, Rt as resolveSlackAutoThreadId, g as assertSlackDetachedTargetAllowed, pt as parseSlackBlocksInput, t as buildSlackChannelIdCandidates } from "./group-policy-DyfB_ZIE.js";
4
- import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-DBi7xc_g.js";
5
- import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-BKXSxrIS.js";
3
+ import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, t as buildSlackChannelIdCandidates, yt as getSlackInstallationKind } from "./group-policy-BdwszjYn.js";
4
+ import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-CtQVbde1.js";
5
+ import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.js";
6
6
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
7
7
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
9
9
  import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
10
10
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
11
+ import { createActionGate, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
11
12
  import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
12
13
  //#region extensions/slack/src/action-runtime.ts
13
14
  const messagingActions = /* @__PURE__ */ new Set([
15
+ "openConversation",
14
16
  "sendMessage",
15
17
  "uploadFile",
16
18
  "editMessage",
@@ -24,10 +26,10 @@ const pinActions = /* @__PURE__ */ new Set([
24
26
  "unpinMessage",
25
27
  "listPins"
26
28
  ]);
27
- const SLACK_REACTION_USER_LIMIT = 100;
28
- const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions.runtime-CYLsYRai.js"));
29
- const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-CbabBL8x.js"));
30
- const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-CZWv55Wu.js").then((n) => n.t));
29
+ const SLACK_REACTION_RESULT_LIMIT = 100;
30
+ const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-BI7JkfVm.js").then((n) => n.t));
31
+ const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-DRuEK6mL.js"));
32
+ const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-DlFSKeIZ.js").then((n) => n.t));
31
33
  function createLazySlackAction(key) {
32
34
  return (async (...args) => {
33
35
  const action = (await loadSlackActionsRuntime())[key];
@@ -42,6 +44,7 @@ const slackActionRuntime = {
42
44
  listSlackEmojis: createLazySlackAction("listSlackEmojis"),
43
45
  listSlackPins: createLazySlackAction("listSlackPins"),
44
46
  listSlackReactions: createLazySlackAction("listSlackReactions"),
47
+ openSlackConversation: createLazySlackAction("openSlackConversation"),
45
48
  parseSlackBlocksInput,
46
49
  pinSlackMessage: createLazySlackAction("pinSlackMessage"),
47
50
  reactSlackMessage: createLazySlackAction("reactSlackMessage"),
@@ -329,7 +332,7 @@ async function handleSlackAction(params, cfg, context) {
329
332
  });
330
333
  }
331
334
  await assertReadTargetAllowed(target);
332
- const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ?? SLACK_REACTION_USER_LIMIT, SLACK_REACTION_USER_LIMIT);
335
+ const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ?? SLACK_REACTION_RESULT_LIMIT, SLACK_REACTION_RESULT_LIMIT);
333
336
  return jsonResult({
334
337
  ok: true,
335
338
  reactions: (await slackActionRuntime.listSlackReactions(channelId, messageId, readOpts))?.map((reaction) => reaction.users ? Object.assign({}, reaction, { users: reaction.users.slice(0, limit) }) : reaction)
@@ -337,6 +340,7 @@ async function handleSlackAction(params, cfg, context) {
337
340
  }
338
341
  if (messagingActions.has(action)) {
339
342
  if (!isActionEnabled("messages")) throw new Error("Slack messages are disabled.");
343
+ const sentResults = [];
340
344
  const sendSlackMessage = async (target, content, options) => {
341
345
  const replyReference = context?.hasRepliedRef && slackContextTargetsMatch(target, context) ? context.hasRepliedRef : void 0;
342
346
  const result = await slackActionRuntime.sendSlackMessage(target, content, {
@@ -346,9 +350,21 @@ async function handleSlackAction(params, cfg, context) {
346
350
  } } : {}
347
351
  });
348
352
  if (replyReference) replyReference.value = true;
353
+ sentResults.push(result);
349
354
  return result;
350
355
  };
351
356
  switch (action) {
357
+ case "openConversation": {
358
+ const teamId = readStringParam(params, "teamId") ?? resolveTrustedCurrentSlackTeamId({
359
+ account,
360
+ context
361
+ });
362
+ assertSlackDetachedTargetAllowed(account.accountId, teamId);
363
+ return jsonResult({
364
+ ok: true,
365
+ ...await slackActionRuntime.openSlackConversation(params.userIds, buildActionOpts("write", teamId))
366
+ });
367
+ }
352
368
  case "sendMessage": {
353
369
  const destination = resolveSlackActionTarget(account, readStringParam(params, "to", { required: true }), context).routingTarget;
354
370
  const content = readStringParam(params, "content", { allowEmpty: true });
@@ -396,35 +412,27 @@ async function handleSlackAction(params, cfg, context) {
396
412
  blocks
397
413
  });
398
414
  };
415
+ if (mediaUrl && (preparedMessages?.length || blocks)) await sendSlackMessage(destination, "", {
416
+ ...preparedMessages?.length ? baseSendOpts : sendOpts,
417
+ mediaUrl
418
+ });
419
+ if (preparedMessages?.length) for (const [index, message] of preparedMessages.entries()) await sendSlackMessage(destination, message.text, {
420
+ ...baseSendOpts,
421
+ ...index === 0 && replyBroadcast ? { replyBroadcast: true } : {},
422
+ ...message.blocks ? { blocks: message.blocks } : {},
423
+ ...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
424
+ ...Object.hasOwn(message, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
425
+ ...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {}
426
+ });
427
+ else if (blocks) await sendContentAndBlocks();
428
+ else await sendSlackMessage(destination, content ?? "", {
429
+ ...sendOpts,
430
+ mediaUrl: mediaUrl ?? void 0,
431
+ blocks
432
+ });
399
433
  return jsonResult({
400
434
  ok: true,
401
- result: preparedMessages?.length ? await (async () => {
402
- let lastResult;
403
- if (mediaUrl) lastResult = await sendSlackMessage(destination, "", {
404
- ...baseSendOpts,
405
- mediaUrl
406
- });
407
- for (const [index, message] of preparedMessages.entries()) lastResult = await sendSlackMessage(destination, message.text, {
408
- ...baseSendOpts,
409
- ...index === 0 && replyBroadcast ? { replyBroadcast: true } : {},
410
- ...message.blocks ? { blocks: message.blocks } : {},
411
- ...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
412
- ...Object.hasOwn(message, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
413
- ...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {}
414
- });
415
- if (!lastResult) throw new Error("Slack prepared message plan produced no delivery.");
416
- return lastResult;
417
- })() : blocks ? await (async () => {
418
- if (mediaUrl) await sendSlackMessage(destination, "", {
419
- ...sendOpts,
420
- mediaUrl
421
- });
422
- return await sendContentAndBlocks();
423
- })() : await sendSlackMessage(destination, content ?? "", {
424
- ...sendOpts,
425
- mediaUrl: mediaUrl ?? void 0,
426
- blocks
427
- })
435
+ result: mergeSlackSendResults(sentResults)
428
436
  });
429
437
  }
430
438
  case "uploadFile": {
@@ -525,7 +533,7 @@ async function handleSlackAction(params, cfg, context) {
525
533
  });
526
534
  if (!downloaded) return jsonResult({
527
535
  ok: false,
528
- error: "File could not be downloaded (not found, too large, or inaccessible)."
536
+ error: "File could not be downloaded. Confirm the fileId came from the requested Slack channel or explicit thread and that the file is accessible and within the size limit."
529
537
  });
530
538
  if (!isImageContentType(downloaded.contentType)) return jsonResult({
531
539
  ok: true,
@@ -601,26 +609,23 @@ async function handleSlackAction(params, cfg, context) {
601
609
  }
602
610
  if (action === "emojiList") {
603
611
  if (!isActionEnabled("emojiList")) throw new Error("Slack emoji list is disabled.");
604
- const limit = readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." });
612
+ const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ?? SLACK_REACTION_RESULT_LIMIT, SLACK_REACTION_RESULT_LIMIT);
605
613
  const teamId = resolveTrustedCurrentSlackTeamId({
606
614
  account,
607
615
  context
608
616
  });
609
617
  assertSlackDetachedTargetAllowed(account.accountId, teamId);
610
618
  const result = await slackActionRuntime.listSlackEmojis(buildActionOpts("read", teamId));
611
- if (limit != null && limit > 0 && result.emoji != null) {
612
- const entries = Object.entries(result.emoji).toSorted(([a], [b]) => a.localeCompare(b));
613
- if (entries.length > limit) return jsonResult({
614
- ok: true,
615
- emojis: {
616
- ...result,
617
- emoji: Object.fromEntries(entries.slice(0, limit))
618
- }
619
- });
620
- }
621
619
  return jsonResult({
622
620
  ok: true,
623
- emojis: result
621
+ emojis: Object.entries(result.emoji ?? {}).toSorted(([left], [right]) => left.localeCompare(right)).slice(0, limit).map(([name, value]) => value.startsWith("alias:") ? {
622
+ name,
623
+ identifier: name,
624
+ aliasOf: value.slice(6)
625
+ } : {
626
+ name,
627
+ identifier: name
628
+ })
624
629
  });
625
630
  }
626
631
  throw new Error(`Unknown action: ${action}`);
@@ -0,0 +1,2 @@
1
+ import { t as handleSlackAction } from "./action-runtime-044ldvNL.js";
2
+ export { handleSlackAction };