@openclaw/slack 2026.9.6 → 2026.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-DP1Bcwj4.mjs → account-inspect-DWBXpER6.mjs} +1 -1
  3. package/dist/.setup/{accounts-BBHvg0pY.mjs → accounts-D_N9IqNA.mjs} +23 -1
  4. package/dist/.setup/{action-runtime-B01d85zt.mjs → action-runtime-DfWvuiZd.mjs} +26 -41
  5. package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
  6. package/dist/.setup/{actions-DKCtBgCI.mjs → actions-Df0CzcDl.mjs} +88 -175
  7. package/dist/.setup/{approval-handler.runtime-DMszKn_7.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
  8. package/dist/.setup/{approval-message-updates-Tb_qRokK.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
  9. package/dist/.setup/{channel-CErYZ5zw.mjs → channel-C7bgPSTE.mjs} +181 -273
  10. package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
  11. package/dist/.setup/{channel-type-Dxk8VJUb.mjs → channel-type-ClOttrZ5.mjs} +13 -21
  12. package/dist/.setup/{channel.setup-BVoUtdPn.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
  13. package/dist/.setup/{config-schema-CyL279e7.mjs → config-schema-BZCxmHKG.mjs} +24 -21
  14. package/dist/.setup/{directory-config-CQTSH45W.mjs → directory-config-BOUWH3hR.mjs} +7 -10
  15. package/dist/.setup/{directory-live-BCcj89QV.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
  16. package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
  17. package/dist/.setup/{message-tool-api-C0PTFaNV.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
  18. package/dist/.setup/{provider-C-jPaGt2.mjs → monitor-BPVfkumU.mjs} +2181 -2693
  19. package/dist/.setup/{outbound-adapter-A7Wdn8ZT.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
  20. package/dist/.setup/{pipeline.runtime-BlPOexmJ.mjs → pipeline.runtime-B1H63Frf.mjs} +311 -457
  21. package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
  22. package/dist/.setup/{policy-BApW53pI.mjs → policy-D-jfM174.mjs} +5 -5
  23. package/dist/.setup/{probe-DiYIMPJo.mjs → probe-B2Y9qc_z.mjs} +101 -39
  24. package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
  25. package/dist/.setup/{relay-source-DfOnjJTE.mjs → relay-source-BpKdjsll.mjs} +10 -12
  26. package/dist/.setup/{replies-BBAJxUOQ.mjs → replies-BAnUtr2f.mjs} +16 -76
  27. package/dist/.setup/{reply-blocks-Bm8kf6mK.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
  28. package/dist/.setup/{resolve-channels-BXbMBbJD.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
  29. package/dist/.setup/{resolve-users-65WqvIqD.mjs → resolve-users-DW0ngD03.mjs} +20 -22
  30. package/dist/.setup/{scopes-h3YB-mMs.mjs → scopes-CasuDvaa.mjs} +6 -17
  31. package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
  32. package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
  33. package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
  34. package/dist/.setup/{send-Cp6omkOg.mjs → send-BOVLQi3n.mjs} +84 -171
  35. package/dist/.setup/{session-status-Cf7AvWOt.mjs → session-status-DscajIsd.mjs} +315 -238
  36. package/dist/.setup/{setup-plugin-api-dLPkL06L.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
  37. package/dist/.setup/{setup-surface-D3DLcCxu.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
  38. package/dist/.setup/{shared-CJ3arAFL.mjs → shared-qau-uDGl.mjs} +30 -56
  39. package/dist/.setup/{slash-dispatch.runtime-HFy_XvyO.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
  40. package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
  41. package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
  42. package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
  43. package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
  44. package/dist/account-inspect-api.js +1 -1
  45. package/dist/api.js +18 -17
  46. package/dist/channel-config-api.js +1 -1
  47. package/dist/channel-plugin-api.js +1 -1
  48. package/dist/directory-contract-api.js +1 -1
  49. package/dist/doctor-contract-api.js +1 -1
  50. package/dist/http-routes-api.js +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/message-tool-api.js +1 -1
  53. package/dist/runtime-api.js +11 -12
  54. package/dist/secret-contract-api.js +1 -1
  55. package/dist/security-contract-api.js +1 -1
  56. package/dist/setup-entry.js +2 -2
  57. package/dist/setup-plugin-api.js +1 -1
  58. package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
  59. package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
  60. package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
  61. package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
  62. package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
  63. package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
  64. package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
  65. package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
  66. package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
  67. package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
  68. package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
  69. package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
  70. package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
  71. package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
  72. package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
  73. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  74. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
  75. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
  76. package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
  77. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
  78. package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
  79. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
  80. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
  81. package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
  82. package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
  83. package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
  84. package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
  85. package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
  86. package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
  87. package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
  88. package/node_modules/get-east-asian-width/index.js +8 -3
  89. package/node_modules/get-east-asian-width/lookup-data.js +1 -1
  90. package/node_modules/get-east-asian-width/lookup.js +4 -4
  91. package/node_modules/get-east-asian-width/package.json +1 -1
  92. package/node_modules/typebox/build/compile/code.mjs +1 -2
  93. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  94. package/node_modules/typebox/build/format/iri.mjs +16 -9
  95. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  96. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  97. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  98. package/node_modules/typebox/build/guard/index.mjs +6 -0
  99. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  100. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  101. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  102. package/node_modules/typebox/build/schema/build.mjs +2 -3
  103. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  104. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  105. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  106. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  107. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  108. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  109. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  110. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  111. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  112. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  113. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  114. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  115. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  116. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  117. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  118. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  119. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  120. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  121. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  122. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  123. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  124. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  125. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  126. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  127. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  128. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  129. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  130. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  131. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  132. package/node_modules/typebox/package.json +1 -1
  133. package/node_modules/typebox/readme.md +3 -1
  134. package/node_modules/undici/README.md +81 -25
  135. package/node_modules/undici/docs/docs/api/Agent.md +249 -42
  136. package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
  137. package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
  138. package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
  139. package/node_modules/undici/docs/docs/api/Client.md +407 -162
  140. package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
  141. package/node_modules/undici/docs/docs/api/Connector.md +118 -35
  142. package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
  143. package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
  144. package/node_modules/undici/docs/docs/api/Debug.md +34 -18
  145. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
  146. package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
  147. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
  148. package/node_modules/undici/docs/docs/api/Errors.md +503 -28
  149. package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
  150. package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
  151. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
  152. package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
  153. package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
  154. package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
  155. package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
  156. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
  157. package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
  158. package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
  159. package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
  160. package/node_modules/undici/docs/docs/api/Pool.md +236 -41
  161. package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
  162. package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
  163. package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
  164. package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
  165. package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
  166. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
  167. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
  168. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
  169. package/node_modules/undici/docs/docs/api/Util.md +68 -11
  170. package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
  171. package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
  172. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
  173. package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
  174. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
  175. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
  176. package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
  177. package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
  178. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
  179. package/node_modules/undici/docs/docs/getting-started.md +281 -0
  180. package/node_modules/undici/docs/docs/index.md +784 -0
  181. package/node_modules/undici/docs/docs/site.json +125 -0
  182. package/node_modules/undici/docs/docs/type-map.json +79 -0
  183. package/node_modules/undici/index.js +4 -2
  184. package/node_modules/undici/lib/api/api-connect.js +13 -11
  185. package/node_modules/undici/lib/api/api-pipeline.js +26 -13
  186. package/node_modules/undici/lib/api/api-request.js +51 -21
  187. package/node_modules/undici/lib/api/api-stream.js +81 -20
  188. package/node_modules/undici/lib/api/api-upgrade.js +21 -11
  189. package/node_modules/undici/lib/api/readable.js +45 -9
  190. package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
  191. package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
  192. package/node_modules/undici/lib/core/connect.js +46 -7
  193. package/node_modules/undici/lib/core/constants.js +1 -24
  194. package/node_modules/undici/lib/core/errors.js +22 -2
  195. package/node_modules/undici/lib/core/request.js +100 -18
  196. package/node_modules/undici/lib/core/symbols.js +4 -0
  197. package/node_modules/undici/lib/core/util.js +105 -48
  198. package/node_modules/undici/lib/dispatcher/agent.js +51 -32
  199. package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
  200. package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
  201. package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
  202. package/node_modules/undici/lib/dispatcher/client.js +109 -36
  203. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
  204. package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
  205. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
  206. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
  207. package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
  208. package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
  209. package/node_modules/undici/lib/dispatcher/pool.js +30 -5
  210. package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
  211. package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
  212. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
  213. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
  214. package/node_modules/undici/lib/global.js +37 -14
  215. package/node_modules/undici/lib/handler/cache-handler.js +49 -7
  216. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  217. package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
  218. package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
  219. package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
  220. package/node_modules/undici/lib/handler/retry-handler.js +191 -50
  221. package/node_modules/undici/lib/interceptor/cache.js +75 -25
  222. package/node_modules/undici/lib/interceptor/decompress.js +5 -2
  223. package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
  224. package/node_modules/undici/lib/interceptor/dns.js +12 -1
  225. package/node_modules/undici/lib/interceptor/redirect.js +3 -3
  226. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
  227. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
  228. package/node_modules/undici/lib/mock/mock-agent.js +21 -9
  229. package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
  230. package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  231. package/node_modules/undici/lib/mock/mock-utils.js +281 -47
  232. package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
  233. package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
  234. package/node_modules/undici/lib/util/cache.js +92 -10
  235. package/node_modules/undici/lib/util/runtime-features.js +3 -34
  236. package/node_modules/undici/lib/web/cache/cache.js +6 -8
  237. package/node_modules/undici/lib/web/cookies/parse.js +150 -146
  238. package/node_modules/undici/lib/web/cookies/util.js +1 -1
  239. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
  240. package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
  241. package/node_modules/undici/lib/web/eventsource/util.js +32 -1
  242. package/node_modules/undici/lib/web/fetch/body.js +48 -10
  243. package/node_modules/undici/lib/web/fetch/constants.js +1 -1
  244. package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
  245. package/node_modules/undici/lib/web/fetch/index.js +242 -223
  246. package/node_modules/undici/lib/web/fetch/request.js +35 -6
  247. package/node_modules/undici/lib/web/fetch/response.js +1 -3
  248. package/node_modules/undici/lib/web/fetch/util.js +10 -2
  249. package/node_modules/undici/lib/web/webidl/index.js +5 -7
  250. package/node_modules/undici/lib/web/websocket/frame.js +1 -7
  251. package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
  252. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
  253. package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
  254. package/node_modules/undici/package.json +10 -10
  255. package/node_modules/undici/types/agent.d.ts +0 -2
  256. package/node_modules/undici/types/client.d.ts +69 -24
  257. package/node_modules/undici/types/connector.d.ts +1 -0
  258. package/node_modules/undici/types/cookies.d.ts +1 -1
  259. package/node_modules/undici/types/dispatcher.d.ts +8 -30
  260. package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
  261. package/node_modules/undici/types/errors.d.ts +10 -0
  262. package/node_modules/undici/types/fetch.d.ts +5 -1
  263. package/node_modules/undici/types/formdata.d.ts +0 -6
  264. package/node_modules/undici/types/h2c-client.d.ts +6 -6
  265. package/node_modules/undici/types/handlers.d.ts +2 -0
  266. package/node_modules/undici/types/header.d.ts +5 -0
  267. package/node_modules/undici/types/index.d.ts +3 -1
  268. package/node_modules/undici/types/interceptors.d.ts +1 -1
  269. package/node_modules/undici/types/mock-agent.d.ts +11 -10
  270. package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  271. package/node_modules/undici/types/pool.d.ts +0 -2
  272. package/node_modules/undici/types/proxy-agent.d.ts +9 -2
  273. package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
  274. package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
  275. package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
  276. package/node_modules/undici/types/webidl.d.ts +0 -1
  277. package/openclaw.plugin.json +31 -3
  278. package/package.json +7 -7
  279. package/dist/.setup/accounts.runtime-DN-PPocC.mjs +0 -2
  280. package/dist/.setup/action-runtime.runtime-C8R8CUan.mjs +0 -2
  281. package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
  282. package/dist/.setup/monitor-_Sht7Dqy.mjs +0 -13
  283. package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
  284. package/dist/.setup/send.runtime-B4caZU6T.mjs +0 -2
  285. package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
  286. package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
  287. package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
  288. package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
  289. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  290. package/node_modules/undici/lib/util/promise.js +0 -28
  291. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -0,0 +1,27 @@
1
+ //#region extensions/slack/src/channel-meta.ts
2
+ const SLACK_CHANNEL_META = {
3
+ id: "slack",
4
+ label: "Slack",
5
+ selectionLabel: "Slack",
6
+ docsPath: "/channels/slack",
7
+ docsLabel: "slack",
8
+ blurb: "supports bot + app tokens, channels, threads, and interactive replies.",
9
+ systemImage: "number.square",
10
+ markdownCapable: true
11
+ };
12
+ const DEFAULT_SLACK_SUGGESTED_PROMPTS = [
13
+ {
14
+ title: "What can you do?",
15
+ message: "What can you help me with?"
16
+ },
17
+ {
18
+ title: "Summarize this channel",
19
+ message: "Summarize the recent activity in this channel."
20
+ },
21
+ {
22
+ title: "Draft a reply",
23
+ message: "Help me draft a reply."
24
+ }
25
+ ];
26
+ //#endregion
27
+ export { SLACK_CHANNEL_META as n, DEFAULT_SLACK_SUGGESTED_PROMPTS as t };
@@ -1,10 +1,11 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { o as resolveSlackAccount, u as resolveSlackOperationToken } from "./accounts-BBHvg0pY.mjs";
3
- import { f as assertSlackDetachedTargetAllowed } from "./session-status-Cf7AvWOt.mjs";
4
- import { T as normalizeAllowListLower, p as createSlackWebClient, u as createSlackReadClient } from "./probe-DiYIMPJo.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { d as resolveSlackOperationToken, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
+ import { f as assertSlackDetachedTargetAllowed } from "./session-status-DscajIsd.mjs";
4
+ import { d as createSlackReadClient, m as createSlackWebClient, v as readLruMapEntry } from "./probe-B2Y9qc_z.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
- import { createHash } from "node:crypto";
6
+ import { normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
7
7
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
8
+ import { createHash } from "node:crypto";
8
9
  //#region extensions/slack/src/channel-type.ts
9
10
  var channel_type_exports = /* @__PURE__ */ __exportAll({
10
11
  resolveSlackChannelType: () => resolveSlackChannelType,
@@ -12,14 +13,6 @@ var channel_type_exports = /* @__PURE__ */ __exportAll({
12
13
  });
13
14
  const SLACK_CONVERSATION_INFO_CACHE_MAX_ENTRIES = 1024;
14
15
  const SLACK_CONVERSATION_INFO_CACHE = /* @__PURE__ */ new Map();
15
- function getCachedSlackConversationInfo(cacheKey) {
16
- const cached = SLACK_CONVERSATION_INFO_CACHE.get(cacheKey);
17
- if (cached) {
18
- SLACK_CONVERSATION_INFO_CACHE.delete(cacheKey);
19
- SLACK_CONVERSATION_INFO_CACHE.set(cacheKey, cached);
20
- }
21
- return cached;
22
- }
23
16
  function setCachedSlackConversationInfo(cacheKey, conversationInfo) {
24
17
  SLACK_CONVERSATION_INFO_CACHE.delete(cacheKey);
25
18
  SLACK_CONVERSATION_INFO_CACHE.set(cacheKey, conversationInfo);
@@ -31,7 +24,7 @@ function fingerprintSlackCredential(token) {
31
24
  function resolveConfiguredSlackConversationInfo(params) {
32
25
  if (/^D/i.test(params.channelId)) return { type: "dm" };
33
26
  const channelIdLower = normalizeLowercaseStringOrEmpty(params.channelId);
34
- const groupChannels = normalizeAllowListLower(params.account.dm?.groupChannels);
27
+ const groupChannels = normalizeStringEntriesLower(params.account.dm?.groupChannels);
35
28
  if (groupChannels.includes(channelIdLower) || groupChannels.includes(`slack:${channelIdLower}`) || groupChannels.includes(`channel:${channelIdLower}`) || groupChannels.includes(`group:${channelIdLower}`) || groupChannels.includes(`mpim:${channelIdLower}`)) return { type: "group" };
36
29
  return { type: Object.keys(params.account.channels ?? {}).some((key) => {
37
30
  const normalized = normalizeLowercaseStringOrEmpty(key);
@@ -54,7 +47,7 @@ async function resolveSlackConversationInfo(params) {
54
47
  const teamId = normalizeLowercaseStringOrEmpty(params.teamId) || "no-team-id";
55
48
  const cacheKey = `${account.accountId}:${teamId}:${operation}:${credentialRole}:${credentialFingerprint}:${channelId}`;
56
49
  if (!params.requireFreshName) {
57
- const cached = getCachedSlackConversationInfo(cacheKey);
50
+ const cached = readLruMapEntry(SLACK_CONVERSATION_INFO_CACHE, cacheKey);
58
51
  if (cached) return cached;
59
52
  }
60
53
  const isNativeImChannel = /^D/i.test(channelId);
@@ -64,12 +57,12 @@ async function resolveSlackConversationInfo(params) {
64
57
  });
65
58
  if (token) try {
66
59
  if (isNativeImChannel && operation === "write") {
67
- const opened = await (params.assertDirectAdapterHandoff ? createSlackWebClient(token, { teamId: params.teamId }, params.assertDirectAdapterHandoff) : createSlackWebClient(token, { teamId: params.teamId })).conversations.open({
60
+ const opened = await createSlackWebClient(token, { teamId: params.teamId }, params.assertDirectAdapterHandoff).conversations.open({
68
61
  channel: channelId,
69
62
  prevent_creation: true,
70
63
  return_im: true
71
64
  });
72
- const user = typeof opened.channel?.user === "string" && opened.channel.user.trim() ? opened.channel.user.trim() : void 0;
65
+ const user = normalizeOptionalString(opened.channel?.user);
73
66
  const result = user ? {
74
67
  type: "dm",
75
68
  user
@@ -77,7 +70,7 @@ async function resolveSlackConversationInfo(params) {
77
70
  if (user) setCachedSlackConversationInfo(cacheKey, result);
78
71
  return result;
79
72
  }
80
- const channel = (await (params.assertDirectAdapterHandoff ? createSlackReadClient(token, { teamId: params.teamId }, void 0, params.assertDirectAdapterHandoff) : createSlackReadClient(token, { teamId: params.teamId })).conversations.info({ channel: channelId })).channel;
73
+ const channel = (await createSlackReadClient(token, { teamId: params.teamId }, void 0, params.assertDirectAdapterHandoff).conversations.info({ channel: channelId })).channel;
81
74
  const type = channel?.is_im ? "dm" : channel?.is_mpim ? "group" : "channel";
82
75
  const name = normalizeOptionalString(channel?.name);
83
76
  const user = normalizeOptionalString(channel?.user);
@@ -95,9 +88,8 @@ async function resolveSlackConversationInfo(params) {
95
88
  params.assertDirectAdapterHandoff?.();
96
89
  return { type: isNativeImChannel ? "dm" : "unknown" };
97
90
  }
98
- const result = configuredInfo;
99
- if (!isNativeImChannel) setCachedSlackConversationInfo(cacheKey, result);
100
- return result;
91
+ if (!isNativeImChannel) setCachedSlackConversationInfo(cacheKey, configuredInfo);
92
+ return configuredInfo;
101
93
  }
102
94
  async function resolveSlackChannelType(params) {
103
95
  return (await resolveSlackConversationInfo(params)).type;
@@ -1,7 +1,8 @@
1
1
  import { r as isSlackSetupAccountConfigured } from "./account-configured-sUohAxZr.mjs";
2
- import { a as resolveDefaultSlackAccountId, l as resolveSlackConfigAccessorAccount, o as resolveSlackAccount, r as listSlackAccountIds } from "./accounts-BBHvg0pY.mjs";
3
- import { t as inspectSlackAccount } from "./account-inspect-DP1Bcwj4.mjs";
4
- import { t as SlackChannelConfigSchema } from "./config-schema-CyL279e7.mjs";
2
+ import { i as listSlackAccountIds, o as resolveDefaultSlackAccountId, s as resolveSlackAccount, u as resolveSlackConfigAccessorAccount } from "./accounts-D_N9IqNA.mjs";
3
+ import { t as inspectSlackAccount } from "./account-inspect-DWBXpER6.mjs";
4
+ import { t as DEFAULT_SLACK_SUGGESTED_PROMPTS } from "./channel-meta-C443t-lI.mjs";
5
+ import { t as SlackChannelConfigSchema } from "./config-schema-BZCxmHKG.mjs";
5
6
  import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
6
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
8
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -14,6 +15,30 @@ import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
14
15
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
15
16
  //#region extensions/slack/src/setup-shared.ts
16
17
  const SLACK_CHANNEL = "slack";
18
+ function buildSlackAllowFromPrompt() {
19
+ const t = createSetupTranslator();
20
+ return {
21
+ helpTitle: t("wizard.slack.allowlistTitle"),
22
+ helpLines: [
23
+ t("wizard.slack.allowlistIntro"),
24
+ t("wizard.slack.examples"),
25
+ "- U12345678",
26
+ "- @alice",
27
+ t("wizard.slack.multipleEntries"),
28
+ t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
29
+ ],
30
+ message: t("wizard.slack.allowFromPrompt"),
31
+ placeholder: "@alice, U12345678",
32
+ invalidWithoutCredentialNote: t("wizard.slack.allowFromInvalidWithoutToken"),
33
+ parseId: (value) => parseMentionOrPrefixedId({
34
+ value,
35
+ mentionPattern: /^<@([A-Z0-9]+)>$/i,
36
+ prefixPattern: /^(slack:|user:)/i,
37
+ idPattern: /^[A-Z][A-Z0-9]+$/i,
38
+ normalizeId: (id) => id.toUpperCase()
39
+ })
40
+ };
41
+ }
17
42
  function buildSlackManifest(botName = "OpenClaw") {
18
43
  const safeName = botName.trim() || "OpenClaw";
19
44
  const manifest = {
@@ -33,20 +58,7 @@ function buildSlackManifest(botName = "OpenClaw") {
33
58
  },
34
59
  agent_view: {
35
60
  agent_description: `${safeName} connects Slack Agent View conversations to OpenClaw agents.`,
36
- suggested_prompts: [
37
- {
38
- title: "What can you do?",
39
- message: "What can you help me with?"
40
- },
41
- {
42
- title: "Summarize this channel",
43
- message: "Summarize the recent activity in this channel."
44
- },
45
- {
46
- title: "Draft a reply",
47
- message: "Help me draft a reply."
48
- }
49
- ]
61
+ suggested_prompts: DEFAULT_SLACK_SUGGESTED_PROMPTS
50
62
  },
51
63
  slash_commands: [{
52
64
  command: "/openclaw",
@@ -477,25 +489,7 @@ function createSlackSetupWizardBase(handlers) {
477
489
  dmPolicy: slackDmPolicy,
478
490
  allowFrom: createAccountScopedAllowFromSection({
479
491
  channel: SLACK_CHANNEL,
480
- helpTitle: t("wizard.slack.allowlistTitle"),
481
- helpLines: [
482
- t("wizard.slack.allowlistIntro"),
483
- t("wizard.slack.examples"),
484
- "- U12345678",
485
- "- @alice",
486
- t("wizard.slack.multipleEntries"),
487
- t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
488
- ],
489
- message: t("wizard.slack.allowFromPrompt"),
490
- placeholder: "@alice, U12345678",
491
- invalidWithoutCredentialNote: t("wizard.slack.allowFromInvalidWithoutToken"),
492
- parseId: (value) => parseMentionOrPrefixedId({
493
- value,
494
- mentionPattern: /^<@([A-Z0-9]+)>$/i,
495
- prefixPattern: /^(slack:|user:)/i,
496
- idPattern: /^[A-Z][A-Z0-9]+$/i,
497
- normalizeId: (id) => id.toUpperCase()
498
- }),
492
+ ...buildSlackAllowFromPrompt(),
499
493
  resolveEntries: handlers.resolveAllowFromEntries
500
494
  }),
501
495
  groupAccess: createAccountScopedGroupAccessSection({
@@ -549,7 +543,6 @@ const slackBaseConfigAdapter = createScopedChannelConfigAdapter({
549
543
  });
550
544
  //#endregion
551
545
  //#region extensions/slack/src/channel.setup.ts
552
- const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-D3DLcCxu.mjs")).slackSetupWizard }));
553
546
  const slackSetupPlugin = {
554
547
  id: SLACK_CHANNEL,
555
548
  meta: {
@@ -564,7 +557,7 @@ const slackSetupPlugin = {
564
557
  markdownCapable: true,
565
558
  preferSessionLookupForAnnounceTarget: true
566
559
  },
567
- setupWizard: slackSetupWizard,
560
+ setupWizard: createSlackSetupWizardProxy(() => import("./setup-surface-Dn7QgWRE.mjs")),
568
561
  capabilities: {
569
562
  chatTypes: [
570
563
  "direct",
@@ -586,7 +579,7 @@ const slackSetupPlugin = {
586
579
  idleMs: 1e3
587
580
  } },
588
581
  reload: {
589
- configPrefixes: ["channels.slack"],
582
+ configPrefixes: ["channels.slack", "approvals.plugin.slack"],
590
583
  noopPrefixes: [
591
584
  "messages.inbound",
592
585
  "messages.ackReactionScope",
@@ -637,10 +630,10 @@ const slackSetupPlugin = {
637
630
  "SLACK_BOT_TOKEN",
638
631
  "SLACK_USER_TOKEN"
639
632
  ].some((key) => typeof env?.[key] === "string" && env[key]?.trim().length > 0),
640
- isConfigured: (account) => isSlackSetupAccountConfigured(account),
641
- describeAccount: (account) => describeSlackSetupAccount(account)
633
+ isConfigured: isSlackSetupAccountConfigured,
634
+ describeAccount: describeSlackSetupAccount
642
635
  },
643
636
  setupContract: slackSetupContract
644
637
  };
645
638
  //#endregion
646
- export { slackSetupContract as a, createSlackSetupWizardProxy as i, slackBaseConfigAdapter as n, SLACK_CHANNEL as o, createSlackSetupWizardBase as r, slackSetupPlugin as t };
639
+ export { slackSetupContract as a, createSlackSetupWizardProxy as i, slackBaseConfigAdapter as n, SLACK_CHANNEL as o, createSlackSetupWizardBase as r, buildSlackAllowFromPrompt as s, slackSetupPlugin as t };
@@ -5,6 +5,10 @@ import { z } from "zod";
5
5
  //#region extensions/slack/src/config-ui-hints.ts
6
6
  const observedGroupHistoryHint = { help: "Automatic observed-message context uses a default of 50 and a maximum of 200 messages; 0 disables automatic injection. The JSON integer maximum selects the 50-message default. Session transcript trimming separately counts user turns, where 0 means no trimming. The observed-message cap does not rewrite saved values." };
7
7
  const observedDmHistoryHint = { help: "Automatic observed-DM context uses a default of 0 and a maximum of 200 messages; 0 disables that extra context. The JSON integer maximum selects the 0-message default. Session transcript trimming separately counts user turns, where 0 means no trimming. The observed-message cap does not rewrite saved values." };
8
+ const botThreadMentionHint = {
9
+ label: "Require Mention in Bot Threads",
10
+ help: "Override mention gating in threads whose root message was sent by this bot. False allows unmentioned replies; true requires a mention even when implicit reply or participation signals are enabled. Omit to preserve the existing mention policy. Channel settings override account settings; access restrictions still apply."
11
+ };
8
12
  const slackChannelConfigUiHints = {
9
13
  historyLimit: observedGroupHistoryHint,
10
14
  "accounts.*.historyLimit": observedGroupHistoryHint,
@@ -12,6 +16,10 @@ const slackChannelConfigUiHints = {
12
16
  "accounts.*.dmHistoryLimit": observedDmHistoryHint,
13
17
  "dms.*.historyLimit": observedDmHistoryHint,
14
18
  "accounts.*.dms.*.historyLimit": observedDmHistoryHint,
19
+ requireMentionInBotThreads: botThreadMentionHint,
20
+ "accounts.*.requireMentionInBotThreads": botThreadMentionHint,
21
+ "channels.*.requireMentionInBotThreads": botThreadMentionHint,
22
+ "accounts.*.channels.*.requireMentionInBotThreads": botThreadMentionHint,
15
23
  "": {
16
24
  label: "Slack",
17
25
  help: "Slack channel provider configuration for bot/app tokens, streaming behavior, and DM policy controls. Keep token handling and thread behavior explicit to avoid noisy workspace interactions."
@@ -33,14 +41,14 @@ const slackChannelConfigUiHints = {
33
41
  implicitMentions: true,
34
42
  streaming: {
35
43
  "": "Unified Slack stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default). Legacy boolean/streamMode keys are auto-mapped.",
36
- mode: "Canonical Slack preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default).",
44
+ mode: "Canonical Slack preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default). Default progress outside reply threads uses only a temporary typing reaction. Any explicit streaming.progress setting opts top-level turns into a preview, except nativeTaskCards: true, which only affects threads.",
37
45
  chunkMode: "Chunking mode for outbound Slack text delivery: \"length\" (default) or \"newline\".",
38
46
  "block.enabled": "Enable chunked block-style Slack preview delivery when channels.slack.streaming.mode=\"block\".",
39
47
  "block.coalesce": "Merge streamed Slack block replies before final delivery.",
40
48
  nativeTransport: "Enable native Slack text streaming (chat.startStream/chat.appendStream/chat.stopStream) when channels.slack.streaming.mode is partial (default: true). Native streaming and Slack session status require a reply thread target; top-level DMs can still use draft post-and-edit preview streaming.",
41
49
  "preview.toolProgress": "Show tool/progress activity in the live draft preview message (default: true). Set false to hide interim tool updates while the draft preview stays active.",
42
50
  "preview.commandText": "Command/exec detail in preview tool-progress lines: \"status\" is the safe default; \"raw\" opts into command text.",
43
- "progress.style": "Slack progress presentation: \"card\" uses structured task/session cards; \"compact\" keeps a temporary editable text draft. The final response is posted as a new message, then the draft is deleted after confirmed delivery. Defaults to \"compact\" when progress.toolProgress is explicitly false, otherwise \"card\".",
51
+ "progress.style": "Slack progress presentation: \"card\" uses structured task/session cards; \"compact\" keeps a temporary editable text draft. The final response is posted as a new message, then the draft is deleted after confirmed delivery. Outside reply threads, unset progress presentation is quiet. Any explicit streaming.progress setting in the merged root and account config opts top-level turns into a preview, except nativeTaskCards: true, which only affects threads. This includes commentary or label alone. The style defaults to \"compact\" when toolProgress is explicitly false, otherwise \"card\".",
44
52
  "progress.nativeTaskCards": "Slack native task-card progress updates when channels.slack.streaming.mode=\"progress\", progress.style=\"card\", and streaming.nativeTransport is enabled. Set false to fall back to the Block Kit progress card. Default: true."
45
53
  },
46
54
  progress: { labels: "openclaw" }
@@ -51,7 +59,7 @@ const slackChannelConfigUiHints = {
51
59
  },
52
60
  allowBots: {
53
61
  label: "Slack Allow Bot Messages",
54
- help: "Allow bot-authored messages to trigger Slack replies (default: false)."
62
+ help: "Allow bot-authored messages to trigger Slack replies (default: true). Set false to disable bot-triggered turns, or \"mentions\" to require a mention. Channel access, mention, owner-presence, and loop-protection rules still apply; accessible bot-authored context remains available independently."
55
63
  },
56
64
  botLoopProtection: {
57
65
  label: "Slack Bot Loop Protection",
@@ -188,6 +196,7 @@ const SlackPresenceEventsSchema = z.object({
188
196
  prompt: z.string().max(SLACK_PRESENCE_EVENT_PROMPT_MAX_CHARS).optional()
189
197
  }).strict();
190
198
  const SlackChannelSchema = buildGroupEntrySchema({
199
+ requireMentionInBotThreads: z.boolean().optional(),
191
200
  ignoreOtherMentions: z.boolean().optional(),
192
201
  replyToMode: ReplyToModeSchema.optional(),
193
202
  allowBots: buildChannelAllowBotsSchema({ allowMentions: true }),
@@ -237,6 +246,7 @@ const SlackAccountSchema = z.object({
237
246
  botLoopProtection: ChannelBotLoopProtectionSchema.optional(),
238
247
  dangerouslyAllowNameMatching: ChannelDangerouslyAllowNameMatchingSchema,
239
248
  requireMention: z.boolean().optional(),
249
+ requireMentionInBotThreads: z.boolean().optional(),
240
250
  implicitMentions: ChannelImplicitMentionsSchema.optional(),
241
251
  unfurlLinks: z.boolean().optional(),
242
252
  unfurlMedia: z.boolean().optional(),
@@ -274,8 +284,7 @@ const SlackAccountSchema = z.object({
274
284
  typingReaction: z.string().optional()
275
285
  }).strict();
276
286
  function validateSlackSigningSecretRequirements(value, ctx) {
277
- const resolveMode = (mode) => mode === "http" || mode === "socket" || mode === "relay" ? mode : void 0;
278
- const baseMode = resolveMode(value.mode) ?? "socket";
287
+ const baseMode = value.mode ?? "socket";
279
288
  const hasImplicitRootAccount = Object.keys(value.accounts ?? {}).length === 0;
280
289
  if (baseMode === "http" && hasImplicitRootAccount && !hasConfiguredSecretInput(value.signingSecret)) ctx.addIssue({
281
290
  code: z.ZodIssueCode.custom,
@@ -284,7 +293,7 @@ function validateSlackSigningSecretRequirements(value, ctx) {
284
293
  });
285
294
  for (const [accountId, account] of Object.entries(value.accounts ?? {})) {
286
295
  if (!account || account.enabled === false) continue;
287
- if ((resolveMode(account.mode) ?? baseMode) !== "http") continue;
296
+ if ((account.mode ?? baseMode) !== "http") continue;
288
297
  const accountSecret = account.signingSecret ?? value.signingSecret;
289
298
  if (!hasConfiguredSecretInput(accountSecret)) ctx.addIssue({
290
299
  code: z.ZodIssueCode.custom,
@@ -335,34 +344,28 @@ const SlackConfigSchema = SlackAccountSchema.safeExtend({
335
344
  });
336
345
  };
337
346
  const baseMode = value.mode ?? "socket";
338
- const accountIds = value.accounts ? Object.keys(value.accounts) : [];
339
347
  if (!value.accounts) {
340
348
  if (baseMode === "relay") requireRelayConfig(value.relay, ["relay"]);
341
349
  validateSlackSigningSecretRequirements(value, ctx);
342
350
  return;
343
351
  }
344
- for (const accountId of accountIds) {
345
- const account = value.accounts[accountId];
352
+ for (const [accountId, account] of Object.entries(value.accounts)) {
346
353
  if (!account || account.enabled === false) continue;
347
354
  const accountMode = account.mode ?? baseMode;
348
- const effectiveRelay = {
349
- ...value.relay,
350
- ...account.relay
351
- };
352
355
  refineChannelDmPolicy({
353
356
  channelId: "slack",
354
357
  value,
355
358
  accountId,
356
359
  ctx
357
360
  });
358
- if (accountMode !== "http") {
359
- if (accountMode === "relay") requireRelayConfig(effectiveRelay, [
360
- "accounts",
361
- accountId,
362
- "relay"
363
- ]);
364
- continue;
365
- }
361
+ if (accountMode === "relay") requireRelayConfig({
362
+ ...value.relay,
363
+ ...account.relay
364
+ }, [
365
+ "accounts",
366
+ accountId,
367
+ "relay"
368
+ ]);
366
369
  }
367
370
  validateSlackSigningSecretRequirements(value, ctx);
368
371
  });
@@ -1,7 +1,7 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { a as resolveDefaultSlackAccountId, i as mergeSlackAccountConfig, s as resolveSlackAccountAllowFrom } from "./accounts-BBHvg0pY.mjs";
3
- import { a as parseSlackTarget } from "./target-parsing-DEsPjngB.mjs";
4
- import "./targets-Cku2KCvg.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, o as resolveDefaultSlackAccountId } from "./accounts-D_N9IqNA.mjs";
3
+ import { a as parseSlackTarget } from "./target-parsing-FFE26kOV.mjs";
4
+ import "./targets-C6LZQL1Q.mjs";
5
5
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
6
6
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { createResolvedDirectoryEntriesLister } from "openclaw/plugin-sdk/directory-config-runtime";
@@ -12,11 +12,8 @@ var directory_config_exports = /* @__PURE__ */ __exportAll({
12
12
  });
13
13
  function resolveSlackDirectoryConfigAccount(cfg, accountId) {
14
14
  const resolvedAccountId = normalizeAccountId(accountId ?? resolveDefaultSlackAccountId(cfg));
15
- const config = mergeSlackAccountConfig(cfg, resolvedAccountId);
16
15
  return {
17
- accountId: resolvedAccountId,
18
- config,
19
- dm: config.dm,
16
+ config: mergeSlackAccountConfig(cfg, resolvedAccountId),
20
17
  allowFrom: resolveSlackAccountAllowFrom({
21
18
  cfg,
22
19
  accountId: resolvedAccountId
@@ -25,7 +22,7 @@ function resolveSlackDirectoryConfigAccount(cfg, accountId) {
25
22
  }
26
23
  const listSlackDirectoryPeersFromConfig = createResolvedDirectoryEntriesLister({
27
24
  kind: "user",
28
- resolveAccount: (cfg, accountId) => resolveSlackDirectoryConfigAccount(cfg, accountId),
25
+ resolveAccount: resolveSlackDirectoryConfigAccount,
29
26
  resolveSources: (account) => {
30
27
  const channelUsers = Object.values(account.config.channels ?? {}).flatMap((channel) => channel.users ?? []);
31
28
  return [
@@ -44,7 +41,7 @@ const listSlackDirectoryPeersFromConfig = createResolvedDirectoryEntriesLister({
44
41
  });
45
42
  const listSlackDirectoryGroupsFromConfig = createResolvedDirectoryEntriesLister({
46
43
  kind: "group",
47
- resolveAccount: (cfg, accountId) => resolveSlackDirectoryConfigAccount(cfg, accountId),
44
+ resolveAccount: resolveSlackDirectoryConfigAccount,
48
45
  resolveSources: (account) => [Object.keys(account.config.channels ?? {})],
49
46
  normalizeId: (raw) => {
50
47
  const normalized = parseSlackTarget(raw, { defaultKind: "channel" });
@@ -1,6 +1,6 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { o as resolveSlackAccount } from "./accounts-BBHvg0pY.mjs";
3
- import { c as fetchSlackChannelListPage, l as createSlackLookupClient, s as collectSlackCursorPages } from "./probe-DiYIMPJo.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
+ import { c as collectSlackCursorPages, l as fetchSlackChannelListPage, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/slack/src/directory-live.ts
6
6
  var directory_live_exports = /* @__PURE__ */ __exportAll({
@@ -16,17 +16,8 @@ function createSlackDirectoryClient(params) {
16
16
  const token = account.userToken ?? account.botToken?.trim();
17
17
  return token ? createSlackLookupClient(token) : null;
18
18
  }
19
- function normalizeQuery(value) {
20
- return normalizeLowercaseStringOrEmpty(value);
21
- }
22
19
  function buildUserRank(user) {
23
- let rank = 0;
24
- if (!user.deleted) rank += 2;
25
- if (!user.is_bot && !user.is_app_user) rank += 1;
26
- return rank;
27
- }
28
- function buildChannelRank(channel) {
29
- return channel.is_archived ? 0 : 1;
20
+ return (user.deleted ? 0 : 2) + (user.is_bot || user.is_app_user ? 0 : 1);
30
21
  }
31
22
  function slackUserToDirectoryEntry(user, fallback) {
32
23
  const id = normalizeOptionalString(user.id) ?? normalizeOptionalString(fallback?.id);
@@ -57,16 +48,13 @@ async function getSlackDirectorySelfLive(params) {
57
48
  return slackUserToDirectoryEntry({
58
49
  id: userId,
59
50
  name: auth.user
60
- }, {
61
- id: userId,
62
- name: auth.user
63
51
  });
64
52
  }
65
53
  }
66
54
  async function listSlackDirectoryPeersLive(params) {
67
55
  const client = createSlackDirectoryClient(params);
68
56
  if (!client) return [];
69
- const query = normalizeQuery(params.query);
57
+ const query = normalizeLowercaseStringOrEmpty(params.query);
70
58
  const rows = (await collectSlackCursorPages({
71
59
  fetchPage: (cursor) => client.users.list({
72
60
  limit: 200,
@@ -81,14 +69,14 @@ async function listSlackDirectoryPeersLive(params) {
81
69
  ].map((item) => normalizeOptionalLowercaseString(item)).filter(Boolean);
82
70
  if (!query) return true;
83
71
  return candidates.some((candidate) => candidate?.includes(query));
84
- }).map((member) => slackUserToDirectoryEntry(member)).filter(Boolean);
72
+ }).map((member) => slackUserToDirectoryEntry(member)).filter((entry) => entry !== null);
85
73
  if (typeof params.limit === "number" && params.limit > 0) return rows.slice(0, params.limit);
86
74
  return rows;
87
75
  }
88
76
  async function listSlackDirectoryGroupsLive(params) {
89
77
  const client = createSlackDirectoryClient(params);
90
78
  if (!client) return [];
91
- const query = normalizeQuery(params.query);
79
+ const query = normalizeLowercaseStringOrEmpty(params.query);
92
80
  const rows = (await collectSlackCursorPages({
93
81
  fetchPage: (cursor) => fetchSlackChannelListPage(client, cursor),
94
82
  collectPageItems: (res) => Array.isArray(res.channels) ? res.channels : []
@@ -105,10 +93,10 @@ async function listSlackDirectoryGroupsLive(params) {
105
93
  id: `channel:${id}`,
106
94
  name,
107
95
  handle: `#${name}`,
108
- rank: buildChannelRank(channel),
96
+ rank: channel.is_archived ? 0 : 1,
109
97
  raw: channel
110
98
  };
111
- }).filter(Boolean);
99
+ }).filter((entry) => entry !== null);
112
100
  if (typeof params.limit === "number" && params.limit > 0) return rows.slice(0, params.limit);
113
101
  return rows;
114
102
  }