@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,4 +1,4 @@
1
- import { r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-bbjH7IHX.mjs";
1
+ import { r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-CIbMfuf8.mjs";
2
2
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
3
3
  //#region extensions/slack/src/http/plugin-routes.ts
4
4
  function resolveSlackWebhookPaths(config) {
@@ -1,11 +1,9 @@
1
- import { i as buildSlackChannelPolicyScope, r as buildSlackChannelIdCandidates } from "./session-status-Cf7AvWOt.mjs";
2
- import { D as normalizeSlackSlug, k as resolveSlackUserAllowListForTeam } from "./probe-DiYIMPJo.mjs";
1
+ import { i as buildSlackChannelPolicyScope, r as buildSlackChannelIdCandidates } from "./session-status-DscajIsd.mjs";
2
+ import { A as resolveSlackUserAllowListForTeam, O as normalizeSlackSlug } from "./probe-B2Y9qc_z.mjs";
3
3
  import { applyChannelMatchMeta, buildChannelKeyCandidates } from "openclaw/plugin-sdk/channel-targets";
4
+ import { firstDefined } from "openclaw/plugin-sdk/allow-from";
4
5
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
5
6
  //#region extensions/slack/src/monitor/channel-config.ts
6
- function firstDefined(...values) {
7
- for (const value of values) if (value !== void 0) return value;
8
- }
9
7
  function resolveSlackChannelLabel(params) {
10
8
  const channelName = params.channelName?.trim();
11
9
  if (channelName) return `#${normalizeSlackSlug(channelName) || channelName}`;
@@ -36,6 +34,7 @@ function resolveSlackChannelConfig(params) {
36
34
  const resolved = matched ?? fallback ?? {};
37
35
  const allowed = firstDefined(resolved.enabled, fallback?.enabled, true) ?? true;
38
36
  const requireMention = firstDefined(resolved.requireMention, fallback?.requireMention, requireMentionDefault) ?? requireMentionDefault;
37
+ const requireMentionInBotThreads = firstDefined(resolved.requireMentionInBotThreads, fallback?.requireMentionInBotThreads);
39
38
  const ignoreOtherMentions = firstDefined(resolved.ignoreOtherMentions, fallback?.ignoreOtherMentions);
40
39
  const allowBots = firstDefined(resolved.allowBots, fallback?.allowBots);
41
40
  const replyToMode = firstDefined(resolved.replyToMode, fallback?.replyToMode);
@@ -51,6 +50,7 @@ function resolveSlackChannelConfig(params) {
51
50
  const result = {
52
51
  allowed,
53
52
  requireMention,
53
+ requireMentionInBotThreads,
54
54
  ignoreOtherMentions,
55
55
  replyToMode,
56
56
  allowBots,
@@ -1,14 +1,16 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { d as formatSlackBotTokenIdentityWarning } from "./accounts-BBHvg0pY.mjs";
3
- import { a as parseSlackTarget } from "./target-parsing-DEsPjngB.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { p as formatSlackBotTokenIdentityWarning } from "./accounts-D_N9IqNA.mjs";
3
+ import { a as parseSlackTarget } from "./target-parsing-FFE26kOV.mjs";
4
+ import { createRequire } from "node:module";
4
5
  import { isRecord, normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
6
  import { sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
6
7
  import { runChannelProbe } from "openclaw/plugin-sdk/text-utility-runtime";
8
+ import { normalizeHyphenSlug, normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
7
9
  import { compileAllowlist, resolveCompiledAllowlistMatch } from "openclaw/plugin-sdk/allow-from";
8
- import { normalizeHyphenSlug, normalizeStringEntries as normalizeStringEntries$1, normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
10
+ import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
9
11
  import { hash } from "node:crypto";
10
12
  import { WebAPIRateLimitedError, WebClient } from "@slack/web-api";
11
- import { captureChannelReadAuthority, createHttp1EnvHttpProxyAgent, resolveEnvHttpProxyAgentOptions, resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
13
+ import { addActiveManagedProxyTlsOptions, captureChannelReadAuthority, createHttp1EnvHttpProxyAgent, resolveEnvHttpProxyAgentOptions, resolveFetch } from "openclaw/plugin-sdk/fetch-runtime";
12
14
  import { isDebugProxyGlobalFetchPatchInstalled } from "openclaw/plugin-sdk/proxy-capture";
13
15
  import { parseRetryAfterHeaderSeconds, retryAsync } from "openclaw/plugin-sdk/retry-runtime";
14
16
  import { fetchWithRuntimeDispatcher } from "openclaw/plugin-sdk/runtime-fetch";
@@ -24,18 +26,9 @@ function normalizeSlackSlug(raw) {
24
26
  if (cached !== void 0) return cached;
25
27
  const normalized = normalizeHyphenSlug(raw);
26
28
  slackSlugCache.set(key, normalized);
27
- if (slackSlugCache.size > SLACK_SLUG_CACHE_MAX) {
28
- const oldest = slackSlugCache.keys().next();
29
- if (!oldest.done) slackSlugCache.delete(oldest.value);
30
- }
29
+ pruneMapToMaxSize(slackSlugCache, SLACK_SLUG_CACHE_MAX);
31
30
  return normalized;
32
31
  }
33
- function normalizeAllowList(list) {
34
- return normalizeStringEntries$1(list);
35
- }
36
- function normalizeAllowListLower(list) {
37
- return normalizeStringEntriesLower(list);
38
- }
39
32
  function normalizeSlackAllowOwnerEntry(entry) {
40
33
  const trimmed = normalizeOptionalLowercaseString(entry);
41
34
  if (!trimmed || trimmed === "*") return;
@@ -95,7 +88,7 @@ function allowListMatches(params) {
95
88
  return resolveSlackAllowListMatch(params).allowed;
96
89
  }
97
90
  function resolveSlackUserAllowed(params) {
98
- const allowList = normalizeAllowListLower(params.allowList);
91
+ const allowList = normalizeStringEntriesLower(params.allowList);
99
92
  if (allowList.length === 0) return true;
100
93
  return allowListMatches({
101
94
  allowList,
@@ -106,7 +99,7 @@ function resolveSlackUserAllowed(params) {
106
99
  });
107
100
  }
108
101
  function resolveSlackUserAllowListForTeam(params) {
109
- const allowList = normalizeAllowListLower(params.allowList);
102
+ const allowList = normalizeStringEntriesLower(params.allowList);
110
103
  const teamId = normalizeOptionalLowercaseString(params.teamId);
111
104
  return allowList.flatMap((entry) => {
112
105
  if (entry === "*") return [entry];
@@ -137,7 +130,7 @@ function normalizeSlackFetchInit(init) {
137
130
  const { body: _body, ...rest } = init;
138
131
  return rest;
139
132
  }
140
- /** Build the dispatcher shared by Slack Web API fetches and Socket Mode. */
133
+ /** Build the dispatcher for Slack Web API fetches (paired with the runtime fetch). */
141
134
  function resolveSlackProxyDispatcher() {
142
135
  const options = resolveEnvHttpProxyAgentOptions();
143
136
  if (!options) return;
@@ -147,6 +140,58 @@ function resolveSlackProxyDispatcher() {
147
140
  return;
148
141
  }
149
142
  }
143
+ let slackSocketModeUndici;
144
+ /**
145
+ * Load the undici copy that @slack/socket-mode opens its WebSocket with.
146
+ *
147
+ * Socket Mode 3 calls `new undici.WebSocket(url, { dispatcher })` with its own
148
+ * undici. A dispatcher from another undici copy fails the handshake, so we must
149
+ * identify whether Socket Mode can share the runtime dispatcher. The explicit
150
+ * `undici/index.js` subpath keeps Bun's bare-`undici` placeholder out of the
151
+ * dispatcher (the same reason the runtime loads undici this way); under Bun,
152
+ * Socket Mode's bare import gets Bun's WebSocket, which does not consult a
153
+ * dispatcher at all.
154
+ */
155
+ function loadSlackSocketModeUndici() {
156
+ if (slackSocketModeUndici) return slackSocketModeUndici;
157
+ const requireFromPlugin = createRequire(import.meta.url);
158
+ const requireFromBolt = createRequire(requireFromPlugin.resolve("@slack/bolt/package.json"));
159
+ slackSocketModeUndici = createRequire(requireFromBolt.resolve("@slack/socket-mode/package.json"))("undici/index.js");
160
+ return slackSocketModeUndici;
161
+ }
162
+ /**
163
+ * Build the env-proxy dispatcher for Socket Mode's WebSocket.
164
+ *
165
+ * Reuse the Web API dispatcher when both transports load the same undici copy;
166
+ * its custom proxy routing supports Socket Mode's CONNECT handshake. Otherwise
167
+ * build one from Socket Mode's copy. Without a proxy env, preserve the default
168
+ * direct connection.
169
+ */
170
+ function resolveSlackSocketModeDispatcher(webApi) {
171
+ const options = resolveEnvHttpProxyAgentOptions();
172
+ if (!options) return;
173
+ const { EnvHttpProxyAgent } = loadSlackSocketModeUndici();
174
+ if (webApi instanceof EnvHttpProxyAgent) return webApi;
175
+ const agentOptions = addActiveManagedProxyTlsOptions(options);
176
+ try {
177
+ return new EnvHttpProxyAgent(agentOptions);
178
+ } catch {
179
+ return;
180
+ }
181
+ }
182
+ /** Pair each Slack monitor transport with the dispatcher from the undici copy it uses. */
183
+ function resolveSlackMonitorDispatchers(mode) {
184
+ const webApi = resolveSlackProxyDispatcher();
185
+ const socketMode = mode === "socket" ? resolveSlackSocketModeDispatcher(webApi) : void 0;
186
+ return {
187
+ webApi,
188
+ socketMode,
189
+ close: async () => {
190
+ await webApi?.close();
191
+ if (socketMode !== webApi) await socketMode?.close();
192
+ }
193
+ };
194
+ }
150
195
  const DIRECT_SLACK_DISPATCHER_OPTIONS = {
151
196
  httpProxy: "",
152
197
  httpsProxy: "",
@@ -252,6 +297,22 @@ function resolveSlackLookupClientOptions(options = {}, dispatcher = resolveSlack
252
297
  return resolved;
253
298
  }
254
299
  //#endregion
300
+ //#region extensions/slack/src/monitor/lru-map-cache.ts
301
+ /** LRU-touch read: move hit to newest so pruneMapToMaxSize keeps active keys. */
302
+ function readLruMapEntry(cache, cacheKey) {
303
+ const cached = cache.get(cacheKey);
304
+ if (cached) {
305
+ cache.delete(cacheKey);
306
+ cache.set(cacheKey, cached);
307
+ }
308
+ return cached;
309
+ }
310
+ function writeLruMapEntry(cache, cacheKey, entry, maxEntries) {
311
+ cache.delete(cacheKey);
312
+ cache.set(cacheKey, entry);
313
+ pruneMapToMaxSize(cache, maxEntries);
314
+ }
315
+ //#endregion
255
316
  //#region extensions/slack/src/client.ts
256
317
  const SLACK_WRITE_CLIENT_CACHE_MAX = 32;
257
318
  const SLACK_STARTUP_AUTH_TIMEOUT_MS = 1e4;
@@ -307,18 +368,11 @@ function slackWriteClientCacheKey(token, options) {
307
368
  function getSlackWriteClient(token, options = {}) {
308
369
  const resolvedOptions = resolveSlackWriteClientOptions(options);
309
370
  const tokenKey = slackWriteClientCacheKey(token, resolvedOptions);
310
- const cached = slackWriteClientCache.get(tokenKey);
311
- if (cached) {
312
- slackWriteClientCache.delete(tokenKey);
313
- slackWriteClientCache.set(tokenKey, cached);
314
- return cached;
315
- }
371
+ const cached = readLruMapEntry(slackWriteClientCache, tokenKey);
372
+ if (cached) return cached;
316
373
  const client = new WebClient(token, resolvedOptions);
317
- if (slackWriteClientCache.size >= SLACK_WRITE_CLIENT_CACHE_MAX) {
318
- const oldestTokenKey = slackWriteClientCache.keys().next().value;
319
- if (oldestTokenKey) slackWriteClientCache.delete(oldestTokenKey);
320
- }
321
374
  slackWriteClientCache.set(tokenKey, client);
375
+ pruneMapToMaxSize(slackWriteClientCache, SLACK_WRITE_CLIENT_CACHE_MAX);
322
376
  return client;
323
377
  }
324
378
  function getSlackListenerWriteClient(params) {
@@ -370,12 +424,14 @@ async function collectSlackCursorPages(params) {
370
424
  //#region extensions/slack/src/errors.ts
371
425
  const NO_ERROR_DETAIL = "no error detail";
372
426
  const MAX_ERROR_CAUSE_DEPTH = 32;
373
- function redact(value) {
374
- return redactSensitiveText(value);
427
+ function getSlackWebApiErrorData(error) {
428
+ if (!(error instanceof Error)) return;
429
+ const data = error.data;
430
+ return data && typeof data === "object" ? data : void 0;
375
431
  }
376
432
  function addStringDetail(details, label, value) {
377
433
  if (typeof value !== "string") return;
378
- const trimmed = redact(value.trim());
434
+ const trimmed = redactSensitiveText(value.trim());
379
435
  if (trimmed) details.push(label ? `${label}: ${trimmed}` : trimmed);
380
436
  }
381
437
  function addScalarDetail(details, label, value) {
@@ -389,7 +445,7 @@ function addStringListDetail(details, label, value) {
389
445
  if (!Array.isArray(value)) return;
390
446
  const entries = value.flatMap((entry) => {
391
447
  if (typeof entry !== "string") return [];
392
- const trimmed = redact(entry.trim());
448
+ const trimmed = redactSensitiveText(entry.trim());
393
449
  return trimmed ? [trimmed] : [];
394
450
  });
395
451
  if (entries.length) details.push(`${label}: ${entries.join(", ")}`);
@@ -403,7 +459,7 @@ function safeStringify(value) {
403
459
  seen.add(nested);
404
460
  return nested;
405
461
  });
406
- return result ? redact(result) : void 0;
462
+ return result ? redactSensitiveText(result) : void 0;
407
463
  } catch {
408
464
  return;
409
465
  }
@@ -412,10 +468,10 @@ function addSlackResponseMetadata(details, value) {
412
468
  if (!isRecord(value)) return;
413
469
  addStringListDetail(details, "scopes", value.scopes);
414
470
  addStringListDetail(details, "accepted", value.acceptedScopes);
415
- const messages = value.messages;
416
- if (Array.isArray(messages)) for (const message of messages) addStringDetail(details, "slack message", message);
417
- const warnings = value.warnings;
418
- if (Array.isArray(warnings)) for (const warning of warnings) addStringDetail(details, "slack warning", warning);
471
+ for (const [key, label] of [["messages", "slack message"], ["warnings", "slack warning"]]) {
472
+ const entries = value[key];
473
+ if (Array.isArray(entries)) for (const entry of entries) addStringDetail(details, label, entry);
474
+ }
419
475
  }
420
476
  function addSlackDataDetails(details, value) {
421
477
  if (!isRecord(value)) return;
@@ -566,7 +622,13 @@ function createSlackIngressSubject(params) {
566
622
  const senderName = params.senderName?.trim().toLowerCase();
567
623
  const senderNameSlug = senderName ? normalizeSlackSlug(senderName) : void 0;
568
624
  return {
569
- stableId: senderId,
625
+ stableId: params.senderId,
626
+ authentication: {
627
+ senderId: params.senderAuthentication ?? "asserted",
628
+ workspaceSenderId: params.senderAuthentication ?? "asserted",
629
+ senderName: "mutable",
630
+ senderNameSlug: "mutable"
631
+ },
570
632
  aliases: {
571
633
  workspaceSenderId: teamId && senderId ? `team:${teamId}:user:${senderId}` : void 0,
572
634
  senderName,
@@ -645,4 +707,4 @@ async function probeSlack(token, timeoutMs = 2500, opts) {
645
707
  }
646
708
  }
647
709
  //#endregion
648
- export { resolveSlackUserAllowed as A, allowListMatches as C, normalizeSlackSlug as D, normalizeSlackAllowOwnerEntry as E, resolveSlackAllowListMatch as O, resolveSlackWriteClientOptions as S, normalizeAllowListLower as T, SLACK_DEFAULT_RETRY_OPTIONS as _, slackIngressIdentity as a, resolveSlackProxyDispatcher as b, fetchSlackChannelListPage as c, createSlackStartupAuthClient as d, createSlackTokenCacheKey as f, getSlackWriteClient as g, getSlackListenerWriteClient as h, createSlackIngressSubject as i, resolveSlackUserAllowListForTeam as k, createSlackLookupClient as l, createSlackWriteClient as m, probe_exports as n, formatSlackError as o, createSlackWebClient as p, SLACK_USER_NAME_KIND as r, collectSlackCursorPages as s, probeSlack as t, createSlackReadClient as u, SLACK_WRITE_RETRY_OPTIONS as v, normalizeAllowList as w, resolveSlackWebClientOptions as x, resolveSlackLookupClientOptions as y };
710
+ export { resolveSlackUserAllowListForTeam as A, resolveSlackMonitorDispatchers as C, normalizeSlackAllowOwnerEntry as D, allowListMatches as E, normalizeSlackSlug as O, resolveSlackLookupClientOptions as S, resolveSlackWriteClientOptions as T, getSlackWriteClient as _, slackIngressIdentity as a, SLACK_DEFAULT_RETRY_OPTIONS as b, collectSlackCursorPages as c, createSlackReadClient as d, createSlackStartupAuthClient as f, getSlackListenerWriteClient as g, createSlackWriteClient as h, createSlackIngressSubject as i, resolveSlackUserAllowed as j, resolveSlackAllowListMatch as k, fetchSlackChannelListPage as l, createSlackWebClient as m, probe_exports as n, formatSlackError as o, createSlackTokenCacheKey as p, SLACK_USER_NAME_KIND as r, getSlackWebApiErrorData as s, probeSlack as t, createSlackLookupClient as u, readLruMapEntry as v, resolveSlackWebClientOptions as w, SLACK_WRITE_RETRY_OPTIONS as x, writeLruMapEntry as y };
@@ -23,9 +23,13 @@ function registerSlackHttpHandler(params) {
23
23
  params.log?.(`slack: webhook path ${normalizedPath} already registered${suffix}`);
24
24
  return () => {};
25
25
  }
26
- routes.set(normalizedPath, params.handler);
26
+ const handler = params.handler;
27
+ routes.set(normalizedPath, handler);
28
+ let registered = true;
27
29
  return () => {
28
- getSlackHttpRoutes().delete(normalizedPath);
30
+ if (!registered) return;
31
+ registered = false;
32
+ if (routes.get(normalizedPath) === handler) routes.delete(normalizedPath);
29
33
  };
30
34
  }
31
35
  async function handleSlackHttpRequest(req, res) {
@@ -1,5 +1,6 @@
1
- import { C as formatUnknownError, S as SLACK_SOCKET_RECONNECT_POLICY, a as requireSlackMessageEvent, i as parseSlackMessageEvent } from "./provider-C-jPaGt2.mjs";
2
- import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
1
+ import { o as formatSlackError } from "./probe-B2Y9qc_z.mjs";
2
+ import { d as parseSlackMessageEvent, f as requireSlackMessageEvent, x as SLACK_SOCKET_RECONNECT_POLICY } from "./monitor-BPVfkumU.mjs";
3
+ import { asOptionalRecord, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
3
4
  import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
4
5
  import { createNodeProxyAgent } from "openclaw/plugin-sdk/fetch-runtime";
5
6
  import { isIP } from "node:net";
@@ -42,11 +43,11 @@ async function monitorSlackRelaySource(params) {
42
43
  lifecycle: "recovering",
43
44
  lastDisconnect: {
44
45
  at: Date.now(),
45
- error: formatUnknownError(err)
46
+ error: formatSlackError(err)
46
47
  },
47
- lastError: formatUnknownError(err)
48
+ lastError: formatSlackError(err)
48
49
  });
49
- params.runtime.log?.(warn(`slack relay mode disconnected; reconnecting in ${Math.round(delayMs / 1e3)}s (attempt ${reconnectAttempts}) reason="${formatUnknownError(err)}"`));
50
+ params.runtime.log?.(warn(`slack relay mode disconnected; reconnecting in ${Math.round(delayMs / 1e3)}s (attempt ${reconnectAttempts}) reason="${formatSlackError(err)}"`));
50
51
  await sleepWithAbort(delayMs, params.abortSignal);
51
52
  } finally {
52
53
  closeRelayWebSocket(connection);
@@ -114,7 +115,7 @@ function runRelayWebSocket(params) {
114
115
  setStatus: params.setStatus,
115
116
  setIdentity: params.setIdentity
116
117
  })).catch((err) => {
117
- params.runtime.error?.(`slack relay frame failed: ${formatUnknownError(err)}`);
118
+ params.runtime.error?.(`slack relay frame failed: ${formatSlackError(err)}`);
118
119
  });
119
120
  };
120
121
  const onError = (error) => {
@@ -213,10 +214,10 @@ function parseRelayFrame(data) {
213
214
  function extractRelaySlackMessageEvent(frame) {
214
215
  const record = asOptionalRecord(frame);
215
216
  if (!record || record.type !== "slack_event") return;
216
- const deliveryId = stringValue(record.delivery_id);
217
+ const deliveryId = readStringValue(record.delivery_id);
217
218
  const routeRecord = asOptionalRecord(record.route);
218
- const routeKind = stringValue(routeRecord?.kind);
219
- const routeKey = stringValue(routeRecord?.key);
219
+ const routeKind = readStringValue(routeRecord?.kind);
220
+ const routeKey = readStringValue(routeRecord?.key);
220
221
  const payload = asOptionalRecord(record.payload);
221
222
  const event = parseSlackMessageEvent(payload?.event);
222
223
  if (!event) return;
@@ -263,8 +264,5 @@ function formatRelayClose(code, reason) {
263
264
  const text = reason.toString("utf8");
264
265
  return text ? `Slack relay websocket closed (${code} ${text})` : `Slack relay websocket closed (${code})`;
265
266
  }
266
- function stringValue(value) {
267
- return typeof value === "string" ? value : void 0;
268
- }
269
267
  //#endregion
270
268
  export { SLACK_RELAY_MAX_PAYLOAD_BYTES, SlackRelayMalformedFrameError, buildRelayWebSocketOptions, buildRelayWebSocketUrl, monitorSlackRelaySource, parseRelayFrame, requireSlackMessageEvent };
@@ -1,8 +1,8 @@
1
- import { C as buildSlackBlocksFallbackText, J as markdownToSlackMrkdwnChunks, b as isSlackInvalidBlocksResponse, g as buildSlackNativeDataAccessibilityText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, x as isSlackNativeResponseUrlRejection } from "./session-status-Cf7AvWOt.mjs";
2
- import { n as iterateSlackReplyDeliveryMessages, o as resolveSlackReplyBlockResolution, s as resolveSlackReplyBlocks, t as hasSlackReplyStructuredContent } from "./reply-blocks-Bm8kf6mK.mjs";
3
- import { n as resolveSlackReplyThreadTs } from "./thread-ts-CukseRVL.mjs";
4
- import { h as chunkSlackTextAtHardLimit, m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-Cp6omkOg.mjs";
5
- import { c as createSlackResponseUrlBudget, s as SlackResponseAlreadyReportedError } from "./provider-C-jPaGt2.mjs";
1
+ import { C as buildSlackBlocksFallbackText, Z as markdownToSlackMrkdwnChunks, b as isSlackInvalidBlocksResponse, g as buildSlackNativeDataAccessibilityText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, x as isSlackNativeResponseUrlRejection } from "./session-status-DscajIsd.mjs";
2
+ import { n as iterateSlackReplyDeliveryMessages, o as resolveSlackReplyBlockResolution, t as hasSlackReplyStructuredContent } from "./reply-blocks-SE1kTE3I.mjs";
3
+ import { n as resolveSlackReplyThreadTs } from "./thread-ts-Cvt7WD6B.mjs";
4
+ import { m as chunkSlackTextAtHardLimit, p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
5
+ import { a as SlackResponseAlreadyReportedError, o as createSlackResponseUrlBudget } from "./monitor-BPVfkumU.mjs";
6
6
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
7
7
  import { sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
8
8
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
@@ -14,18 +14,11 @@ import { getGlobalHookRunner } from "openclaw/plugin-sdk/plugin-runtime";
14
14
  import { createChannelPartialDeliveryError, getGroupThreadDeliverySession } from "openclaw/plugin-sdk/channel-inbound";
15
15
  import { buildCanonicalSentMessageHookContext, createInternalHookEvent, fireAndForgetHook, toInternalMessageSentContext, toPluginMessageContext, toPluginMessageSentEvent, triggerInternalHook } from "openclaw/plugin-sdk/hook-runtime";
16
16
  //#region extensions/slack/src/message-sent-hook.ts
17
- /**
18
- * Slack-side emission of the `message_sent` plugin hook.
19
- *
20
- * Mirrors the Telegram pattern in `extensions/telegram/src/bot/delivery.replies.ts`
21
- * (`buildTelegramSentHookContext`, `emitMessageSentHooks`, `emitTelegramMessageSentHooks`).
22
- *
23
- * Without this, plugins observing `message_sent` see Telegram outbound but not
24
- * Slack outbound — even though `docs/plugins/hooks.md` documents the hook as
25
- * firing for all successful outbound deliveries.
26
- */
27
- function buildSlackSentHookContext(params) {
28
- return buildCanonicalSentMessageHookContext({
17
+ function emitSlackMessageSentHooks(params) {
18
+ const hookRunner = getGlobalHookRunner();
19
+ const enabled = hookRunner?.hasHooks("message_sent") ?? false;
20
+ if (!enabled && !params.sessionKeyForInternalHooks) return;
21
+ const canonical = buildCanonicalSentMessageHookContext({
29
22
  to: params.to,
30
23
  content: params.content,
31
24
  success: params.success,
@@ -38,34 +31,8 @@ function buildSlackSentHookContext(params) {
38
31
  isGroup: params.isGroup,
39
32
  groupId: params.groupId
40
33
  });
41
- }
42
- function emitInternalSlackMessageSentHook(params) {
43
- if (!params.sessionKeyForInternalHooks) return;
44
- const canonical = buildSlackSentHookContext(params);
45
- fireAndForgetHook(triggerInternalHook(createInternalHookEvent("message", "sent", params.sessionKeyForInternalHooks, toInternalMessageSentContext(canonical))), "slack: message:sent internal hook failed");
46
- }
47
- function emitMessageSentHooks(params) {
48
- if (!params.enabled && !params.sessionKeyForInternalHooks) return;
49
- const canonical = buildSlackSentHookContext(params);
50
- if (params.enabled) fireAndForgetHook(Promise.resolve(params.hookRunner.runMessageSent(toPluginMessageSentEvent(canonical), toPluginMessageContext(canonical))), "slack: message_sent plugin hook failed");
51
- emitInternalSlackMessageSentHook(params);
52
- }
53
- /**
54
- * Fire both the plugin `message_sent` hook and (if a session key is supplied)
55
- * the internal `message:sent` hook for a successful or failed Slack outbound
56
- * delivery.
57
- *
58
- * Safe to call after every `chat.postMessage` — the function self-gates on
59
- * `hookRunner.hasHooks("message_sent")` so plugins not observing the hook
60
- * incur no cost.
61
- */
62
- function emitSlackMessageSentHooks(params) {
63
- const hookRunner = getGlobalHookRunner();
64
- emitMessageSentHooks({
65
- ...params,
66
- hookRunner,
67
- enabled: hookRunner?.hasHooks("message_sent") ?? false
68
- });
34
+ if (enabled) fireAndForgetHook(Promise.resolve(hookRunner.runMessageSent(toPluginMessageSentEvent(canonical), toPluginMessageContext(canonical))), "slack: message_sent plugin hook failed");
35
+ if (params.sessionKeyForInternalHooks) fireAndForgetHook(triggerInternalHook(createInternalHookEvent("message", "sent", params.sessionKeyForInternalHooks, toInternalMessageSentContext(canonical))), "slack: message:sent internal hook failed");
69
36
  }
70
37
  //#endregion
71
38
  //#region extensions/slack/src/monitor/replies.ts
@@ -115,9 +82,6 @@ function compactSlackResponseUrlFallback(messages) {
115
82
  flush();
116
83
  return compacted;
117
84
  }
118
- function readSlackReplyBlocks(payload) {
119
- return resolveSlackReplyBlocks(payload);
120
- }
121
85
  function sanitizeSlackMonitorReplyPayload(payload) {
122
86
  if (payload.isReasoning === true || typeof payload.text !== "string") return payload.isReasoning === true ? null : payload;
123
87
  const text = sanitizeAssistantVisibleText(payload.text);
@@ -267,37 +231,13 @@ async function deliverReplies(params) {
267
231
  }
268
232
  return latestResult;
269
233
  }
270
- /**
271
- * Compute effective threadTs for a Slack reply based on replyToMode.
272
- * - "off": stay in thread if already in one, otherwise main channel
273
- * - "first": first reply goes to thread, subsequent replies to main channel
274
- * - "all": all replies go to thread
275
- */
276
- function resolveSlackThreadTs(params) {
277
- return createSlackReplyReferencePlanner({
278
- replyToMode: params.replyToMode,
279
- incomingThreadTs: params.incomingThreadTs,
280
- messageTs: params.messageTs,
281
- hasReplied: params.hasReplied,
282
- isThreadReply: params.isThreadReply
283
- }).use();
284
- }
285
- function createSlackReplyReferencePlanner(params) {
234
+ function createSlackReplyDeliveryPlan(params) {
286
235
  const effectiveMode = params.isThreadReply ?? Boolean(params.incomingThreadTs && params.incomingThreadTs !== params.messageTs) ? "all" : params.replyToMode;
287
- return createReplyReferencePlanner({
236
+ const replyReference = createReplyReferencePlanner({
288
237
  replyToMode: effectiveMode,
289
238
  existingId: params.incomingThreadTs,
290
239
  startId: params.messageTs,
291
- hasReplied: params.hasReplied
292
- });
293
- }
294
- function createSlackReplyDeliveryPlan(params) {
295
- const replyReference = createSlackReplyReferencePlanner({
296
- replyToMode: params.replyToMode,
297
- incomingThreadTs: params.incomingThreadTs,
298
- messageTs: params.messageTs,
299
- hasReplied: params.hasRepliedRef.value,
300
- isThreadReply: params.isThreadReply
240
+ hasReplied: params.hasRepliedRef.value
301
241
  });
302
242
  return {
303
243
  peekThreadTs: () => replyReference.peek(),
@@ -507,4 +447,4 @@ async function deliverSlackSlashReplies(params) {
507
447
  }
508
448
  }
509
449
  //#endregion
510
- export { resolveSlackThreadTs as a, readSlackReplyBlocks as i, deliverReplies as n, sanitizeSlackMonitorReplyPayload as o, deliverSlackSlashReplies as r, emitSlackMessageSentHooks as s, createSlackReplyDeliveryPlan as t };
450
+ export { emitSlackMessageSentHooks as a, sanitizeSlackMonitorReplyPayload as i, deliverReplies as n, deliverSlackSlashReplies as r, createSlackReplyDeliveryPlan as t };