@openclaw/slack 2026.9.6 → 2026.9.8

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
@@ -1,136 +1,23 @@
1
- import { B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as markdownToSlackMrkdwnChunks, L as SLACK_QUESTION_BUTTON_ACTION_ID, N as SLACK_APPROVAL_BUTTON_ACTION_ID, P as SLACK_APPROVAL_SELECT_ACTION_ID, Q as hasSlackDataVisualizationBlock, T as renderSlackBlockFallbackText, V as SLACK_REPLY_SELECT_ACTION_ID, X as buildSlackDataVisualizationBlock, Z as canRenderSlackDataVisualization, ct as parseSlackBlocksInput, et as buildSlackDataTableBlock, g as buildSlackNativeDataAccessibilityText, it as renderSlackMessagePresentationChartFallbackText, j as truncateSlackText, m as appendSlackNativeDataFallbackText, nt as countSlackDataTableCellCharacters, q as chunkSlackMrkdwnText, rt as resolveSlackDataTableCellCharacterCount, tt as countSlackDataTableBlocksCellCharacters, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, z as SLACK_REPLY_BUTTON_ACTION_ID } from "./session-status-Cf7AvWOt.mjs";
1
+ import { $ as buildSlackDataVisualizationBlock, B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as encodeSlackQuestionAction, L as SLACK_QUESTION_BUTTON_ACTION_ID, N as SLACK_APPROVAL_BUTTON_ACTION_ID, P as SLACK_APPROVAL_SELECT_ACTION_ID, T as renderSlackBlockFallbackText, V as SLACK_REPLY_SELECT_ACTION_ID, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _t as parseSlackBlocksInput, at as countSlackDataTableCellCharacters, et as canRenderSlackDataVisualization, ft as encodeSlackApprovalAction, g as buildSlackNativeDataAccessibilityText, ht as SLACK_SECTION_TEXT_MAX, it as countSlackDataTableBlocksCellCharacters, j as truncateSlackText, m as appendSlackNativeDataFallbackText, ot as resolveSlackDataTableCellCharacterCount, rt as buildSlackDataTableBlock, st as renderSlackMessagePresentationChartFallbackText, tt as hasSlackDataVisualizationBlock, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, z as SLACK_REPLY_BUTTON_ACTION_ID } from "./session-status-DscajIsd.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
4
4
  import { legacyInteractiveReplyToPresentation, normalizeMessagePresentation, renderMessagePresentationFallbackText, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
5
5
  import { parseExecApprovalCommandText } from "openclaw/plugin-sdk/approval-reply-runtime";
6
6
  import { resolveAskUserQuestionOptionIndex, resolveAskUserQuestionOptionIndices, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
7
- import { buildApprovalResolutionRef } from "openclaw/plugin-sdk/approval-reference-runtime";
8
- import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
9
- const SLACK_BUTTON_VALUE_MAX = 2e3;
10
- const SLACK_SECTION_TEXT_MAX = 3e3;
11
- const SLACK_PRESENTATION_CAPABILITIES = {
12
- supported: true,
13
- buttons: true,
14
- selects: true,
15
- context: true,
16
- divider: true,
17
- charts: true,
18
- tables: true,
19
- limits: {
20
- actions: {
21
- maxActionsPerRow: 25,
22
- maxValueBytes: SLACK_BUTTON_VALUE_MAX,
23
- supportsStyles: true
24
- },
25
- selects: {
26
- maxOptions: 100,
27
- maxValueBytes: 150
28
- },
29
- text: {
30
- encoding: "characters",
31
- markdownDialect: "slack-mrkdwn",
32
- supportsEdit: true
33
- }
34
- }
35
- };
36
- //#endregion
37
- //#region extensions/slack/src/approval-actions.ts
38
- const SLACK_APPROVAL_VALUE_PREFIX = "openclaw:approval:v1:";
39
- const SLACK_APPROVAL_HEADER_BLOCK_ID = "openclaw_approval_header";
40
- function isApprovalDecision(value) {
41
- return value === "allow-once" || value === "allow-always" || value === "deny";
42
- }
43
- /** Encode portable approval facts without exposing a slash command to Slack callbacks. */
44
- function encodeSlackApprovalAction(action) {
45
- const encode = (approvalId) => `${SLACK_APPROVAL_VALUE_PREFIX}${JSON.stringify({
46
- approvalId,
47
- approvalKind: action.approvalKind,
48
- decision: action.decision
49
- })}`;
50
- const exact = encode(action.approvalId);
51
- return exact.length <= 2e3 ? exact : encode(buildApprovalResolutionRef({
52
- approvalId: action.approvalId,
53
- approvalKind: action.approvalKind
54
- }));
55
- }
56
- /** Decode only the exact Slack-owned approval envelope. Malformed callbacks fail closed. */
57
- function decodeSlackApprovalAction(value) {
58
- if (typeof value !== "string" || !value.startsWith(SLACK_APPROVAL_VALUE_PREFIX)) return null;
59
- try {
60
- const decoded = JSON.parse(value.slice(21));
61
- if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) return null;
62
- const record = decoded;
63
- if (Object.keys(record).length !== 3 || typeof record.approvalId !== "string" || record.approvalId.length === 0 || record.approvalKind !== "exec" && record.approvalKind !== "plugin" && record.approvalKind !== "system-agent" || !isApprovalDecision(record.decision)) return null;
64
- return {
65
- type: "approval",
66
- approvalId: record.approvalId,
67
- approvalKind: record.approvalKind,
68
- decision: record.decision
69
- };
70
- } catch {
71
- return null;
72
- }
73
- }
74
- //#endregion
75
- //#region extensions/slack/src/question-actions.ts
76
- const SLACK_QUESTION_VALUE_PREFIX = "slq1:";
77
- const QUESTION_RECORD_ID_PATTERN = /^ask_[a-f0-9]{32}$/u;
78
- function encodeSlackQuestionAction(action) {
79
- if (!QUESTION_RECORD_ID_PATTERN.test(action.questionId) || !Number.isInteger(action.optionIndex) || action.optionIndex < 0 || action.optionIndex > 3) return;
80
- const value = `${SLACK_QUESTION_VALUE_PREFIX}${action.questionId}:${action.optionIndex}`;
81
- return value.length <= 2e3 ? value : void 0;
82
- }
83
- function decodeSlackQuestionAction(value) {
84
- if (typeof value !== "string" || value.length > 2e3) return null;
85
- const match = /^slq1:(ask_[a-f0-9]{32}):([0-3])$/u.exec(value);
86
- return match?.[1] && match[2] ? {
87
- questionId: match[1],
88
- optionIndex: Number(match[2])
89
- } : null;
90
- }
91
- async function resolveSlackQuestionAction(params) {
92
- let result;
93
- try {
94
- result = await (params.resolveQuestion ?? questionGatewayRuntime.resolveOption)({
95
- cfg: params.cfg,
96
- questionId: params.action.questionId,
97
- optionIndex: params.action.optionIndex,
98
- senderId: params.userId,
99
- clientDisplayName: `Slack question (${params.accountId})`
100
- });
101
- } catch {
102
- await params.respond("Could not submit this answer.").catch(() => {});
103
- return;
104
- }
105
- await params.respond(result.status === "answered" ? "Answer submitted." : "This question was already answered.").catch(() => {});
106
- }
107
- //#endregion
108
7
  //#region extensions/slack/src/blocks-render.ts
109
8
  const SLACK_BUTTON_URL_MAX = 3e3;
110
- function buildSlackReplyButtonActionId(buttonIndex, choiceIndex) {
111
- return `${SLACK_REPLY_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
112
- }
113
- function buildSlackReplyLinkActionId(buttonIndex, choiceIndex) {
114
- return `${SLACK_REPLY_LINK_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
115
- }
116
- function buildSlackReplySelectActionId(selectIndex) {
117
- return `${SLACK_REPLY_SELECT_ACTION_ID}:${String(selectIndex)}`;
118
- }
119
- function buildSlackApprovalButtonActionId(buttonIndex, choiceIndex) {
120
- return `${SLACK_APPROVAL_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
121
- }
122
- function buildSlackApprovalSelectActionId(selectIndex) {
123
- return `${SLACK_APPROVAL_SELECT_ACTION_ID}:${String(selectIndex)}`;
124
- }
125
- function buildSlackCallbackButtonActionId(buttonIndex, choiceIndex) {
126
- return `${SLACK_CALLBACK_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
127
- }
128
- function buildSlackCallbackSelectActionId(selectIndex) {
129
- return `${SLACK_CALLBACK_SELECT_ACTION_ID}:${String(selectIndex)}`;
130
- }
131
- function buildSlackQuestionButtonActionId(buttonIndex, choiceIndex) {
132
- return `${SLACK_QUESTION_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
133
- }
9
+ const SLACK_BUTTON_ACTION_IDS = {
10
+ approval: SLACK_APPROVAL_BUTTON_ACTION_ID,
11
+ callback: SLACK_CALLBACK_BUTTON_ACTION_ID,
12
+ link: SLACK_REPLY_LINK_ACTION_ID,
13
+ question: SLACK_QUESTION_BUTTON_ACTION_ID,
14
+ reply: SLACK_REPLY_BUTTON_ACTION_ID
15
+ };
16
+ const SLACK_SELECT_ACTION_IDS = {
17
+ approval: SLACK_APPROVAL_SELECT_ACTION_ID,
18
+ callback: SLACK_CALLBACK_SELECT_ACTION_ID,
19
+ reply: SLACK_REPLY_SELECT_ACTION_ID
20
+ };
134
21
  function resolveSlackButtonStyle(style) {
135
22
  if (style === "primary" || style === "danger") return style;
136
23
  if (style === "success") return "primary";
@@ -183,7 +70,7 @@ function resolveSlackButtonTarget(button, questionOptionIndices) {
183
70
  return action ? resolveSlackActionTarget(action, questionOptionIndices) : void 0;
184
71
  }
185
72
  const legacyUrl = normalizeOptionalString(button.url ?? button.webApp?.url ?? button.web_app?.url);
186
- if (legacyUrl && isWithinSlackLimit(legacyUrl, SLACK_BUTTON_URL_MAX)) return {
73
+ if (legacyUrl && legacyUrl.length <= SLACK_BUTTON_URL_MAX) return {
187
74
  kind: "link",
188
75
  url: legacyUrl
189
76
  };
@@ -213,12 +100,6 @@ function resolveSlackOptionTarget(option) {
213
100
  value
214
101
  } : void 0;
215
102
  }
216
- function isWithinSlackLimit(value, maxLength) {
217
- return value.length <= maxLength;
218
- }
219
- function isRenderableSlackOption(option) {
220
- return isWithinSlackLimit(option.value, 150);
221
- }
222
103
  function readSlackBlockId(block) {
223
104
  const value = block.block_id;
224
105
  return typeof value === "string" ? value : void 0;
@@ -304,7 +185,7 @@ function buildSlackPresentationBlocks(presentation, options = {}) {
304
185
  continue;
305
186
  }
306
187
  if (block.type === "chart") {
307
- const rendered = dataVisualizationCount < 2 ? buildSlackPresentationChartBlock(block) : void 0;
188
+ const rendered = dataVisualizationCount < 2 ? buildSlackDataVisualizationBlock(block) : void 0;
308
189
  if (rendered) {
309
190
  dataVisualizationCount += 1;
310
191
  blocks.push(rendered);
@@ -340,17 +221,14 @@ function buildSlackPresentationBlocks(presentation, options = {}) {
340
221
  }
341
222
  return blocks;
342
223
  }
343
- function buildSlackPresentationChartBlock(block) {
344
- return buildSlackDataVisualizationBlock(block);
345
- }
346
224
  function buildSlackPresentationButtonBlock(block, buttonIndex, questionOptionIndices) {
347
225
  const elements = block.buttons.flatMap((button, choiceIndex) => {
348
226
  const target = resolveSlackButtonTarget(button, questionOptionIndices);
349
- if (!target || (target.kind === "link" ? !isWithinSlackLimit(target.url, SLACK_BUTTON_URL_MAX) : !isWithinSlackLimit(target.value, 2e3))) return [];
227
+ if (!target || (target.kind === "link" ? target.url.length > SLACK_BUTTON_URL_MAX : target.value.length > 2e3)) return [];
350
228
  const style = resolveSlackButtonStyle(button.style);
351
229
  return [{
352
230
  type: "button",
353
- action_id: target.kind === "link" ? buildSlackReplyLinkActionId(buttonIndex, choiceIndex) : target.kind === "approval" ? buildSlackApprovalButtonActionId(buttonIndex, choiceIndex) : target.kind === "callback" ? buildSlackCallbackButtonActionId(buttonIndex, choiceIndex) : target.kind === "question" ? buildSlackQuestionButtonActionId(buttonIndex, choiceIndex) : buildSlackReplyButtonActionId(buttonIndex, choiceIndex),
231
+ action_id: `${SLACK_BUTTON_ACTION_IDS[target.kind]}:${buttonIndex}:${choiceIndex + 1}`,
354
232
  text: {
355
233
  type: "plain_text",
356
234
  text: truncateSlackText(button.label, 75),
@@ -379,7 +257,7 @@ function canRenderSlackPresentationTables(presentation, options = {}) {
379
257
  }
380
258
  /** True when native Slack rendering preserves every portable control. */
381
259
  function canRenderSlackPresentation(presentation, options = {}) {
382
- if (presentation.title && !isWithinSlackLimit(presentation.title.trim(), 150)) return false;
260
+ if (presentation.title && presentation.title.trim().length > 150) return false;
383
261
  if (!canRenderSlackPresentationTables(presentation, options)) return false;
384
262
  let dataVisualizationCount = options.dataVisualizationCountOffset ?? 0;
385
263
  for (const block of presentation.blocks) {
@@ -389,20 +267,17 @@ function canRenderSlackPresentation(presentation, options = {}) {
389
267
  if (!(block.buttons.every((button) => {
390
268
  if (isSlackTextFallbackButton(button)) return true;
391
269
  nativeButtonCount += 1;
392
- if (!isWithinSlackLimit(button.label, 75)) return false;
270
+ if (button.label.length > 75) return false;
393
271
  const target = resolveSlackButtonTarget(button, options.questionOptionIndices);
394
- return target ? target.kind === "link" ? isWithinSlackLimit(target.url, SLACK_BUTTON_URL_MAX) : isWithinSlackLimit(target.value, 2e3) : false;
272
+ return target ? target.kind === "link" ? target.url.length <= SLACK_BUTTON_URL_MAX : target.value.length <= 2e3 : false;
395
273
  }) && nativeButtonCount <= 25)) return false;
396
274
  continue;
397
275
  }
398
276
  if (block.type === "select") {
399
- if (!(isWithinSlackLimit(normalizeOptionalString(block.placeholder) ?? "Choose an option", 75) && block.options.length <= 100 && (!block.placeholder || isWithinSlackLimit(block.placeholder, 75)) && block.options.every((option) => {
400
- if (!isWithinSlackLimit(option.label, 75)) return false;
277
+ if (!((normalizeOptionalString(block.placeholder) ?? "Choose an option").length <= 75 && block.options.length <= 100 && (!block.placeholder || block.placeholder.length <= 75) && block.options.every((option) => {
278
+ if (option.label.length > 75) return false;
401
279
  const target = resolveSlackOptionTarget(option);
402
- return target ? isRenderableSlackOption({
403
- label: option.label,
404
- ...target
405
- }) : false;
280
+ return target ? target.value.length <= 150 : false;
406
281
  }) && new Set(block.options.map((option) => resolveSlackOptionTarget(option)?.kind)).size === 1)) return false;
407
282
  continue;
408
283
  }
@@ -422,14 +297,14 @@ function buildSlackPresentationSelectBlock(block, selectIndex) {
422
297
  label: option.label,
423
298
  ...target
424
299
  }] : [];
425
- }).filter(isRenderableSlackOption).slice(0, 100);
300
+ }).filter((option) => option.value.length <= 150).slice(0, 100);
426
301
  const optionKinds = new Set(options.map((option) => option.kind));
427
302
  return options.length > 0 && optionKinds.size === 1 ? {
428
303
  type: "actions",
429
304
  block_id: `openclaw_reply_select_${selectIndex}`,
430
305
  elements: [{
431
306
  type: "static_select",
432
- action_id: options[0]?.kind === "approval" ? buildSlackApprovalSelectActionId(selectIndex) : options[0]?.kind === "callback" ? buildSlackCallbackSelectActionId(selectIndex) : buildSlackReplySelectActionId(selectIndex),
307
+ action_id: `${SLACK_SELECT_ACTION_IDS[options[0].kind]}:${selectIndex}`,
433
308
  placeholder: {
434
309
  type: "plain_text",
435
310
  text: truncateSlackText(normalizeOptionalString(block.placeholder) ?? "Choose an option", 75),
@@ -628,9 +503,7 @@ function projectSlackReplyRenderPlan(text, resolution, resolveAuthoredTextChunks
628
503
  };
629
504
  }
630
505
  function readSlackChannelBlocks(payload) {
631
- const slackData = payload.channelData?.slack;
632
- if (!slackData || typeof slackData !== "object" || Array.isArray(slackData)) return [];
633
- return parseSlackBlocksInput(slackData.blocks) ?? [];
506
+ return parseSlackBlocksInput(asOptionalRecord(payload.channelData?.slack)?.blocks) ?? [];
634
507
  }
635
508
  function hasSlackReplyStructuredContent(payload) {
636
509
  return Boolean(readSlackChannelBlocks(payload).length || normalizeMessagePresentation(payload.presentation) || payload.interactive?.blocks.length);
@@ -851,4 +724,4 @@ function resolveSlackReplyBlocks(payload) {
851
724
  return segments.length === 1 && segments[0]?.kind === "blocks" ? segments[0].blocks : void 0;
852
725
  }
853
726
  //#endregion
854
- export { decodeSlackApprovalAction as _, prepareSlackReply as a, resolveSlackReplyDeliveryMessages as c, buildSlackInteractiveBlocks as d, buildSlackPresentationBlocks as f, SLACK_APPROVAL_HEADER_BLOCK_ID as g, resolveSlackQuestionAction as h, parseSlackReplyBlockSegments as i, resolveSlackReplyRenderPlan as l, decodeSlackQuestionAction as m, iterateSlackReplyDeliveryMessages as n, resolveSlackReplyBlockResolution as o, canRenderSlackPresentation as p, normalizeSlackReplyPayload as r, resolveSlackReplyBlocks as s, hasSlackReplyStructuredContent as t, resolveSlackAuthoredTextPlacement as u, SLACK_PRESENTATION_CAPABILITIES as v, SLACK_SECTION_TEXT_MAX as y };
727
+ export { prepareSlackReply as a, resolveSlackReplyDeliveryMessages as c, buildSlackInteractiveBlocks as d, buildSlackPresentationBlocks as f, parseSlackReplyBlockSegments as i, resolveSlackReplyRenderPlan as l, iterateSlackReplyDeliveryMessages as n, resolveSlackReplyBlockResolution as o, canRenderSlackPresentation as p, normalizeSlackReplyPayload as r, resolveSlackReplyBlocks as s, hasSlackReplyStructuredContent as t, resolveSlackAuthoredTextPlacement as u };
@@ -1,6 +1,6 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-DEsPjngB.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 resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-FFE26kOV.mjs";
3
+ import { c as collectSlackCursorPages, l as fetchSlackChannelListPage, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
6
6
  //#region extensions/slack/src/resolve-channels.ts
@@ -31,14 +31,13 @@ async function listSlackChannels(client) {
31
31
  archived: Boolean(channel.is_archived),
32
32
  isPrivate: Boolean(channel.is_private)
33
33
  };
34
- }).filter(Boolean)
34
+ }).filter((channel) => channel !== null)
35
35
  });
36
36
  }
37
37
  function resolveByName(name, channels) {
38
38
  const target = normalizeLowercaseStringOrEmpty(name);
39
39
  if (!target) return;
40
40
  const matches = channels.filter((channel) => normalizeLowercaseStringOrEmpty(channel.name) === target);
41
- if (matches.length === 0) return;
42
41
  return matches.find((channel) => !channel.archived) ?? matches[0];
43
42
  }
44
43
  async function resolveSlackChannelAllowlist(params) {
@@ -1,6 +1,6 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-DEsPjngB.mjs";
3
- import { l as createSlackLookupClient, s as collectSlackCursorPages } from "./probe-DiYIMPJo.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-FFE26kOV.mjs";
3
+ import { c as collectSlackCursorPages, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
6
6
  //#region extensions/slack/src/resolve-users.ts
@@ -37,7 +37,18 @@ async function listSlackUsers(client) {
37
37
  isBot: Boolean(member.is_bot),
38
38
  isAppUser: Boolean(member.is_app_user)
39
39
  };
40
- }).filter(Boolean)
40
+ }).filter((user) => user !== null)
41
+ });
42
+ }
43
+ function matchesSlackUserName(user, name) {
44
+ const target = normalizeLowercaseStringOrEmpty(name);
45
+ return [
46
+ user.name,
47
+ user.displayName,
48
+ user.realName
49
+ ].some((value) => {
50
+ const candidate = normalizeLowercaseStringOrEmpty(value);
51
+ return Boolean(candidate) && candidate === target;
41
52
  });
42
53
  }
43
54
  function scoreSlackUser(user, match) {
@@ -45,21 +56,14 @@ function scoreSlackUser(user, match) {
45
56
  if (!user.deleted) score += 3;
46
57
  if (!user.isBot && !user.isAppUser) score += 2;
47
58
  if (match.email && user.email === match.email) score += 5;
48
- if (match.name) {
49
- const target = normalizeLowercaseStringOrEmpty(match.name);
50
- if ([
51
- user.name,
52
- user.displayName,
53
- user.realName
54
- ].map((value) => normalizeLowercaseStringOrEmpty(value)).filter(Boolean).some((value) => value === target)) score += 2;
55
- }
59
+ if (match.name && matchesSlackUserName(user, match.name)) score += 2;
56
60
  return score;
57
61
  }
58
62
  function resolveSlackUserFromMatches(input, matches, parsed) {
59
63
  const best = matches.map((user) => ({
60
64
  user,
61
65
  score: scoreSlackUser(user, parsed)
62
- })).toSorted((a, b) => b.score - a.score)[0]?.user ?? matches[0];
66
+ })).toSorted((a, b) => b.score - a.score)[0]?.user;
63
67
  if (!best) return {
64
68
  input,
65
69
  resolved: false
@@ -99,15 +103,9 @@ async function resolveSlackUserAllowlist(params) {
99
103
  const matches = lookup.filter((user) => user.email === parsed.email);
100
104
  if (matches.length > 0) return resolveSlackUserFromMatches(input, matches, parsed);
101
105
  }
102
- if (parsed.name) {
103
- const target = normalizeLowercaseStringOrEmpty(parsed.name);
104
- const matches = lookup.filter((user) => {
105
- return [
106
- user.name,
107
- user.displayName,
108
- user.realName
109
- ].map((value) => normalizeLowercaseStringOrEmpty(value)).filter(Boolean).includes(target);
110
- });
106
+ const name = parsed.name;
107
+ if (name) {
108
+ const matches = lookup.filter((user) => matchesSlackUserName(user, name));
111
109
  if (matches.length > 0) return resolveSlackUserFromMatches(input, matches, parsed);
112
110
  }
113
111
  },
@@ -1,25 +1,14 @@
1
- import { o as formatSlackError, u as createSlackReadClient } from "./probe-DiYIMPJo.mjs";
2
- import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { d as createSlackReadClient, o as formatSlackError } from "./probe-B2Y9qc_z.mjs";
2
+ import { isRecord, normalizeOptionalString, normalizeTrimmedStringList, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/slack/src/scopes.ts
4
4
  function collectScopes(value, into) {
5
- if (!value) return;
6
- if (Array.isArray(value)) {
7
- for (const entry of value) if (typeof entry === "string" && entry.trim()) into.push(entry.trim());
8
- return;
9
- }
10
- if (typeof value === "string") {
11
- const raw = value.trim();
12
- if (!raw) return;
13
- const parts = raw.split(/[,\s]+/).map((part) => part.trim());
14
- for (const part of parts) if (part) into.push(part);
5
+ if (Array.isArray(value) || typeof value === "string") {
6
+ for (const scope of normalizeTrimmedStringList(typeof value === "string" ? value.split(/[,\s]+/) : value)) into.push(scope);
15
7
  return;
16
8
  }
17
9
  if (!isRecord(value)) return;
18
10
  for (const entry of Object.values(value)) if (Array.isArray(entry) || typeof entry === "string") collectScopes(entry, into);
19
11
  }
20
- function normalizeScopes(scopes) {
21
- return sortUniqueStrings(normalizeStringEntries(scopes));
22
- }
23
12
  function extractScopes(payload) {
24
13
  if (!isRecord(payload)) return [];
25
14
  const scopes = [];
@@ -32,7 +21,7 @@ function extractScopes(payload) {
32
21
  collectScopes(payload.info.user_scopes, scopes);
33
22
  collectScopes(payload.info.bot_scopes, scopes);
34
23
  }
35
- return normalizeScopes(scopes);
24
+ return sortUniqueStrings(scopes);
36
25
  }
37
26
  async function callSlack(client, method) {
38
27
  try {
@@ -61,7 +50,7 @@ async function fetchSlackScopes(token, timeoutMs) {
61
50
  scopes,
62
51
  source: method
63
52
  };
64
- const error = isRecord(result) ? normalizeOptionalString(result.error) : void 0;
53
+ const error = normalizeOptionalString(result?.error);
65
54
  if (error) errors.push(`${method}: ${error}`);
66
55
  }
67
56
  return {
@@ -38,31 +38,26 @@ function collectRuntimeConfigAssignments(params) {
38
38
  const relay = account.relay;
39
39
  return relay !== null && typeof relay === "object" && !Array.isArray(relay) && hasOwnProperty(relay, "authToken");
40
40
  };
41
- collectConditionalChannelFieldAssignments({
42
- channelKey: "slack",
43
- field: "appToken",
44
- channel: slack,
45
- surface,
46
- defaults: params.defaults,
47
- context: params.context,
48
- topLevelActiveWithoutAccounts: baseMode === "socket",
49
- topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !hasOwnProperty(account, "appToken") && resolveAccountMode(account) === "socket",
50
- accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) === "socket",
51
- topInactiveReason: "no enabled Slack socket-mode surface inherits this top-level appToken.",
52
- accountInactiveReason: "Slack account is disabled or not running in socket mode."
53
- });
54
- collectConditionalChannelFieldAssignments({
41
+ for (const [field, mode, label] of [[
42
+ "appToken",
43
+ "socket",
44
+ "socket"
45
+ ], [
46
+ "signingSecret",
47
+ "http",
48
+ "HTTP"
49
+ ]]) collectConditionalChannelFieldAssignments({
55
50
  channelKey: "slack",
56
- field: "signingSecret",
51
+ field,
57
52
  channel: slack,
58
53
  surface,
59
54
  defaults: params.defaults,
60
55
  context: params.context,
61
- topLevelActiveWithoutAccounts: baseMode === "http",
62
- topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !hasOwnProperty(account, "signingSecret") && resolveAccountMode(account) === "http",
63
- accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) === "http",
64
- topInactiveReason: "no enabled Slack HTTP-mode surface inherits this top-level signingSecret.",
65
- accountInactiveReason: "Slack account is disabled or not running in HTTP mode."
56
+ topLevelActiveWithoutAccounts: baseMode === mode,
57
+ topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !hasOwnProperty(account, field) && resolveAccountMode(account) === mode,
58
+ accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) === mode,
59
+ topInactiveReason: `no enabled Slack ${label}-mode surface inherits this top-level ${field}.`,
60
+ accountInactiveReason: `Slack account is disabled or not running in ${label} mode.`
66
61
  });
67
62
  collectNestedChannelFieldAssignments({
68
63
  channelKey: "slack",
@@ -1,3 +1,3 @@
1
- import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-DxmvbxBF.mjs";
1
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-BaZcu6P_.mjs";
2
2
  import "../secret-contract-api.js";
3
3
  export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
3
3
  import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
4
4
  import { resolveNativeCommandsEnabled, resolveNativeSkillsEnabled } from "openclaw/plugin-sdk/native-command-config-runtime";