@openclaw/slack 2026.7.2-beta.4 → 2026.7.2-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1993) hide show
  1. package/README.md +1 -1
  2. package/dist/account-inspect-DEKpg9Ip.js +89 -0
  3. package/dist/account-inspect-api.js +1 -1
  4. package/dist/accounts-CHAeNZOX.js +186 -0
  5. package/dist/accounts.runtime-BHD4Ma2R.js +2 -0
  6. package/dist/action-runtime-DfuYoMjG.js +561 -0
  7. package/dist/action-runtime.runtime-DQErZYpz.js +2 -0
  8. package/dist/actions-D3NuJvva.js +876 -0
  9. package/dist/actions.runtime-BIRU_G4M.js +2 -0
  10. package/dist/api.js +14 -15
  11. package/dist/approval-handler.runtime-BA05P0QT.js +367 -0
  12. package/dist/block-text-DkHaoGem.js +79 -0
  13. package/dist/channel-B9fVdW3s.js +1118 -0
  14. package/dist/channel-config-api.js +1 -1
  15. package/dist/channel-plugin-api.js +1 -1
  16. package/dist/channel-type-DXyos1d2.js +108 -0
  17. package/dist/channel.setup-CLP5oTvh.js +56 -0
  18. package/dist/config-adapter-CxBQH8fq.js +566 -0
  19. package/dist/config-schema-SgZT6nXV.js +373 -0
  20. package/dist/cursor-pages-eX7p8Wwt.js +19 -0
  21. package/dist/directory-config-CnCIAktf.js +54 -0
  22. package/dist/directory-contract-api.js +1 -1
  23. package/dist/directory-live-DKunWh3A.js +131 -0
  24. package/dist/doctor-contract-CsGH1Dfc.js +158 -0
  25. package/dist/doctor-contract-api.js +1 -1
  26. package/dist/group-policy-NQZti9t-.js +2442 -0
  27. package/dist/message-tool-api-DkhFpMoy.js +127 -0
  28. package/dist/message-tool-api.js +1 -1
  29. package/dist/monitor-CmKz0wtI.js +13 -0
  30. package/dist/outbound-adapter-BkuMp2Vs.js +236 -0
  31. package/dist/pipeline.runtime-DgtmuYCP.js +4360 -0
  32. package/dist/policy-PRysPn23.js +65 -0
  33. package/dist/probe-CgDsSops.js +345 -0
  34. package/dist/provider-DmRizMZt.js +5900 -0
  35. package/dist/relay-source-Blxj8xb4.js +272 -0
  36. package/dist/replies-4s_Vq_z9.js +457 -0
  37. package/dist/resolve-channels-yEqmM-3I.js +92 -0
  38. package/dist/resolve-users-BOrt5K-5.js +118 -0
  39. package/dist/rolldown-runtime-8H4AJuhK.js +14 -0
  40. package/dist/runtime-api-QMb-Q5Ko.js +10 -0
  41. package/dist/runtime-api.js +11 -11
  42. package/dist/scopes-BJSrkAp6.js +73 -0
  43. package/dist/security-audit-DR097212.js +41 -0
  44. package/dist/security-contract-api.js +1 -1
  45. package/dist/send-DsLeZpST.js +1269 -0
  46. package/dist/send.runtime-gUdK6V3h.js +2 -0
  47. package/dist/setup-plugin-api.js +1 -1
  48. package/dist/setup-surface-BeNzrMrJ.js +148 -0
  49. package/dist/shared-DgIN3Dcr.js +268 -0
  50. package/dist/slash-dispatch.runtime-zPkyl7dB.js +33 -0
  51. package/node_modules/@slack/bolt/dist/App.d.ts +4 -19
  52. package/node_modules/@slack/bolt/dist/App.d.ts.map +1 -1
  53. package/node_modules/@slack/bolt/dist/App.js +21 -40
  54. package/node_modules/@slack/bolt/dist/App.js.map +1 -1
  55. package/node_modules/@slack/bolt/dist/context/create-respond.d.ts +3 -3
  56. package/node_modules/@slack/bolt/dist/context/create-respond.d.ts.map +1 -1
  57. package/node_modules/@slack/bolt/dist/context/create-respond.js +13 -2
  58. package/node_modules/@slack/bolt/dist/context/create-respond.js.map +1 -1
  59. package/node_modules/@slack/bolt/dist/errors.d.ts +6 -8
  60. package/node_modules/@slack/bolt/dist/errors.d.ts.map +1 -1
  61. package/node_modules/@slack/bolt/dist/errors.js +11 -11
  62. package/node_modules/@slack/bolt/dist/errors.js.map +1 -1
  63. package/node_modules/@slack/bolt/dist/helpers.d.ts.map +1 -1
  64. package/node_modules/@slack/bolt/dist/helpers.js +1 -2
  65. package/node_modules/@slack/bolt/dist/helpers.js.map +1 -1
  66. package/node_modules/@slack/bolt/dist/index.d.ts +0 -1
  67. package/node_modules/@slack/bolt/dist/index.d.ts.map +1 -1
  68. package/node_modules/@slack/bolt/dist/index.js +1 -3
  69. package/node_modules/@slack/bolt/dist/index.js.map +1 -1
  70. package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts +10 -1
  71. package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
  72. package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js +5 -1
  73. package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js.map +1 -1
  74. package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.d.ts.map +1 -1
  75. package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js +10 -14
  76. package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js.map +1 -1
  77. package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.d.ts.map +1 -1
  78. package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js +1 -1
  79. package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js.map +1 -1
  80. package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts +3 -1
  81. package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
  82. package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js +2 -1
  83. package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js.map +1 -1
  84. package/node_modules/@slack/bolt/dist/types/actions/index.d.ts +2 -4
  85. package/node_modules/@slack/bolt/dist/types/actions/index.d.ts.map +1 -1
  86. package/node_modules/@slack/bolt/dist/types/actions/index.js +0 -2
  87. package/node_modules/@slack/bolt/dist/types/actions/index.js.map +1 -1
  88. package/node_modules/@slack/bolt/dist/types/events/index.d.ts +2 -0
  89. package/node_modules/@slack/bolt/dist/types/events/index.d.ts.map +1 -1
  90. package/node_modules/@slack/bolt/dist/types/utilities.d.ts +2 -2
  91. package/node_modules/@slack/bolt/dist/types/utilities.d.ts.map +1 -1
  92. package/node_modules/@slack/bolt/dist/types/view/index.d.ts +1 -31
  93. package/node_modules/@slack/bolt/dist/types/view/index.d.ts.map +1 -1
  94. package/node_modules/@slack/bolt/node_modules/@slack/logger/README.md +66 -0
  95. package/node_modules/@slack/bolt/node_modules/@slack/logger/dist/index.js +98 -0
  96. package/node_modules/@slack/bolt/node_modules/@slack/logger/dist/index.js.map +1 -0
  97. package/node_modules/@slack/bolt/node_modules/@slack/logger/package.json +42 -0
  98. package/node_modules/@slack/bolt/node_modules/@slack/oauth/README.md +379 -0
  99. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/errors.d.ts +50 -0
  100. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/errors.d.ts.map +1 -0
  101. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/errors.js +60 -0
  102. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/errors.js.map +1 -0
  103. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/install-provider.js +705 -0
  104. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/install-provider.js.map +1 -0
  105. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/installation-stores/file-store.js +118 -0
  106. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/installation-stores/file-store.js.map +1 -0
  107. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/installation-stores/memory-store.js +76 -0
  108. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/installation-stores/memory-store.js.map +1 -0
  109. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js +42 -0
  110. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js.map +1 -0
  111. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/state-stores/file-state-store.js +101 -0
  112. package/node_modules/@slack/bolt/node_modules/@slack/oauth/dist/state-stores/file-state-store.js.map +1 -0
  113. package/node_modules/@slack/bolt/node_modules/@slack/oauth/package.json +54 -0
  114. package/node_modules/@slack/bolt/node_modules/media-typer/README.md +94 -0
  115. package/node_modules/@slack/bolt/node_modules/media-typer/index.js +135 -0
  116. package/node_modules/@slack/bolt/node_modules/media-typer/package.json +37 -0
  117. package/node_modules/@slack/bolt/package.json +10 -11
  118. package/node_modules/@slack/socket-mode/README.md +1 -1
  119. package/node_modules/@slack/socket-mode/dist/package.json +21 -13
  120. package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts +14 -8
  121. package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts.map +1 -1
  122. package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js +136 -48
  123. package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js.map +1 -1
  124. package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts +12 -6
  125. package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts.map +1 -1
  126. package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js +87 -38
  127. package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js.map +1 -1
  128. package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts +31 -1
  129. package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts.map +1 -1
  130. package/node_modules/@slack/socket-mode/dist/src/errors.d.ts +31 -37
  131. package/node_modules/@slack/socket-mode/dist/src/errors.d.ts.map +1 -1
  132. package/node_modules/@slack/socket-mode/dist/src/errors.js +43 -47
  133. package/node_modules/@slack/socket-mode/dist/src/errors.js.map +1 -1
  134. package/node_modules/@slack/socket-mode/dist/src/index.d.ts +2 -2
  135. package/node_modules/@slack/socket-mode/dist/src/index.d.ts.map +1 -1
  136. package/node_modules/@slack/socket-mode/dist/src/index.js +7 -1
  137. package/node_modules/@slack/socket-mode/dist/src/index.js.map +1 -1
  138. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/LICENSE +23 -0
  139. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/README.md +66 -0
  140. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/dist/index.d.ts +94 -0
  141. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/dist/index.d.ts.map +1 -0
  142. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/dist/index.js +98 -0
  143. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/dist/index.js.map +1 -0
  144. package/node_modules/@slack/socket-mode/node_modules/@slack/logger/package.json +42 -0
  145. package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +15 -0
  146. package/node_modules/@slack/socket-mode/node_modules/@types/node/assert/strict.d.ts +68 -0
  147. package/node_modules/@slack/socket-mode/node_modules/@types/node/assert.d.ts +1077 -0
  148. package/node_modules/@slack/socket-mode/node_modules/@types/node/async_hooks.d.ts +711 -0
  149. package/node_modules/@slack/socket-mode/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  150. package/node_modules/@slack/socket-mode/node_modules/@types/node/buffer.d.ts +1799 -0
  151. package/node_modules/@slack/socket-mode/node_modules/@types/node/child_process.d.ts +1362 -0
  152. package/node_modules/@slack/socket-mode/node_modules/@types/node/cluster.d.ts +432 -0
  153. package/node_modules/@slack/socket-mode/node_modules/@types/node/console.d.ts +93 -0
  154. package/node_modules/@slack/socket-mode/node_modules/@types/node/constants.d.ts +14 -0
  155. package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +3954 -0
  156. package/node_modules/@slack/socket-mode/node_modules/@types/node/dgram.d.ts +537 -0
  157. package/node_modules/@slack/socket-mode/node_modules/@types/node/diagnostics_channel.d.ts +794 -0
  158. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns/promises.d.ts +497 -0
  159. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns.d.ts +876 -0
  160. package/node_modules/@slack/socket-mode/node_modules/@types/node/domain.d.ts +150 -0
  161. package/node_modules/@slack/socket-mode/node_modules/@types/node/events.d.ts +1008 -0
  162. package/node_modules/@slack/socket-mode/node_modules/@types/node/ffi.d.ts +486 -0
  163. package/node_modules/@slack/socket-mode/node_modules/@types/node/fs/promises.d.ts +1481 -0
  164. package/node_modules/@slack/socket-mode/node_modules/@types/node/fs.d.ts +4786 -0
  165. package/node_modules/@slack/socket-mode/node_modules/@types/node/globals.d.ts +150 -0
  166. package/node_modules/@slack/socket-mode/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  167. package/node_modules/@slack/socket-mode/node_modules/@types/node/http.d.ts +2172 -0
  168. package/node_modules/@slack/socket-mode/node_modules/@types/node/http2.d.ts +2489 -0
  169. package/node_modules/@slack/socket-mode/node_modules/@types/node/https.d.ts +400 -0
  170. package/node_modules/@slack/socket-mode/node_modules/@types/node/index.d.ts +115 -0
  171. package/node_modules/@slack/socket-mode/node_modules/@types/node/inspector/promises.d.ts +35 -0
  172. package/node_modules/@slack/socket-mode/node_modules/@types/node/inspector.d.ts +264 -0
  173. package/node_modules/@slack/socket-mode/node_modules/@types/node/inspector.generated.d.ts +4406 -0
  174. package/node_modules/@slack/socket-mode/node_modules/@types/node/module.d.ts +726 -0
  175. package/node_modules/@slack/socket-mode/node_modules/@types/node/net.d.ts +970 -0
  176. package/node_modules/@slack/socket-mode/node_modules/@types/node/os.d.ts +498 -0
  177. package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +155 -0
  178. package/node_modules/@slack/socket-mode/node_modules/@types/node/path/posix.d.ts +8 -0
  179. package/node_modules/@slack/socket-mode/node_modules/@types/node/path/win32.d.ts +8 -0
  180. package/node_modules/@slack/socket-mode/node_modules/@types/node/path.d.ts +178 -0
  181. package/node_modules/@slack/socket-mode/node_modules/@types/node/perf_hooks.d.ts +604 -0
  182. package/node_modules/@slack/socket-mode/node_modules/@types/node/process.d.ts +2217 -0
  183. package/node_modules/@slack/socket-mode/node_modules/@types/node/punycode.d.ts +89 -0
  184. package/node_modules/@slack/socket-mode/node_modules/@types/node/querystring.d.ts +139 -0
  185. package/node_modules/@slack/socket-mode/node_modules/@types/node/quic.d.ts +978 -0
  186. package/node_modules/@slack/socket-mode/node_modules/@types/node/readline/promises.d.ts +158 -0
  187. package/node_modules/@slack/socket-mode/node_modules/@types/node/readline.d.ts +508 -0
  188. package/node_modules/@slack/socket-mode/node_modules/@types/node/repl.d.ts +420 -0
  189. package/node_modules/@slack/socket-mode/node_modules/@types/node/sea.d.ts +47 -0
  190. package/node_modules/@slack/socket-mode/node_modules/@types/node/sqlite.d.ts +1123 -0
  191. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/consumers.d.ts +114 -0
  192. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/iter.d.ts +451 -0
  193. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/promises.d.ts +211 -0
  194. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/web.d.ts +300 -0
  195. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream.d.ts +1806 -0
  196. package/node_modules/@slack/socket-mode/node_modules/@types/node/string_decoder.d.ts +27 -0
  197. package/node_modules/@slack/socket-mode/node_modules/@types/node/test/reporters.d.ts +59 -0
  198. package/node_modules/@slack/socket-mode/node_modules/@types/node/test.d.ts +2389 -0
  199. package/node_modules/@slack/socket-mode/node_modules/@types/node/timers/promises.d.ts +93 -0
  200. package/node_modules/@slack/socket-mode/node_modules/@types/node/timers.d.ts +149 -0
  201. package/node_modules/@slack/socket-mode/node_modules/@types/node/tls.d.ts +1193 -0
  202. package/node_modules/@slack/socket-mode/node_modules/@types/node/trace_events.d.ts +103 -0
  203. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  204. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  205. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  206. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  207. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  208. package/node_modules/@slack/socket-mode/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  209. package/node_modules/@slack/socket-mode/node_modules/@types/node/tty.d.ts +225 -0
  210. package/node_modules/@slack/socket-mode/node_modules/@types/node/url.d.ts +556 -0
  211. package/node_modules/@slack/socket-mode/node_modules/@types/node/util/types.d.ts +558 -0
  212. package/node_modules/@slack/socket-mode/node_modules/@types/node/util.d.ts +1677 -0
  213. package/node_modules/@slack/socket-mode/node_modules/@types/node/v8.d.ts +1062 -0
  214. package/node_modules/@slack/socket-mode/node_modules/@types/node/vm.d.ts +1136 -0
  215. package/node_modules/@slack/socket-mode/node_modules/@types/node/wasi.d.ts +131 -0
  216. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  217. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  218. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/console.d.ts +9 -0
  219. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  220. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/domexception.d.ts +83 -0
  221. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  222. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/events.d.ts +106 -0
  223. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  224. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  225. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  226. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  227. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  228. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  229. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  230. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  231. package/node_modules/@slack/socket-mode/node_modules/@types/node/web-globals/url.d.ts +24 -0
  232. package/node_modules/@slack/socket-mode/node_modules/@types/node/worker_threads.d.ts +669 -0
  233. package/node_modules/@slack/socket-mode/node_modules/@types/node/zlib/iter.d.ts +131 -0
  234. package/node_modules/@slack/socket-mode/node_modules/@types/node/zlib.d.ts +589 -0
  235. package/node_modules/@slack/socket-mode/node_modules/undici-types/LICENSE +21 -0
  236. package/node_modules/@slack/socket-mode/node_modules/undici-types/README.md +6 -0
  237. package/node_modules/@slack/socket-mode/node_modules/undici-types/agent.d.ts +30 -0
  238. package/node_modules/@slack/socket-mode/node_modules/undici-types/api.d.ts +43 -0
  239. package/node_modules/@slack/socket-mode/node_modules/undici-types/balanced-pool.d.ts +30 -0
  240. package/node_modules/@slack/socket-mode/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  241. package/node_modules/@slack/socket-mode/node_modules/undici-types/cache.d.ts +36 -0
  242. package/node_modules/@slack/socket-mode/node_modules/undici-types/client-stats.d.ts +15 -0
  243. package/node_modules/@slack/socket-mode/node_modules/undici-types/client.d.ts +129 -0
  244. package/node_modules/@slack/socket-mode/node_modules/undici-types/connector.d.ts +36 -0
  245. package/node_modules/@slack/socket-mode/node_modules/undici-types/content-type.d.ts +21 -0
  246. package/node_modules/@slack/socket-mode/node_modules/undici-types/cookies.d.ts +30 -0
  247. package/node_modules/@slack/socket-mode/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  248. package/node_modules/@slack/socket-mode/node_modules/undici-types/dispatcher.d.ts +253 -0
  249. package/node_modules/@slack/socket-mode/node_modules/undici-types/dispatcher1-wrapper.d.ts +7 -0
  250. package/node_modules/@slack/socket-mode/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  251. package/node_modules/@slack/socket-mode/node_modules/undici-types/errors.d.ts +177 -0
  252. package/node_modules/@slack/socket-mode/node_modules/undici-types/eventsource.d.ts +66 -0
  253. package/node_modules/@slack/socket-mode/node_modules/undici-types/fetch.d.ts +231 -0
  254. package/node_modules/@slack/socket-mode/node_modules/undici-types/formdata.d.ts +108 -0
  255. package/node_modules/@slack/socket-mode/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  256. package/node_modules/@slack/socket-mode/node_modules/undici-types/global-origin.d.ts +7 -0
  257. package/node_modules/@slack/socket-mode/node_modules/undici-types/h2c-client.d.ts +73 -0
  258. package/node_modules/@slack/socket-mode/node_modules/undici-types/handlers.d.ts +14 -0
  259. package/node_modules/@slack/socket-mode/node_modules/undici-types/header.d.ts +165 -0
  260. package/node_modules/@slack/socket-mode/node_modules/undici-types/index.d.ts +93 -0
  261. package/node_modules/@slack/socket-mode/node_modules/undici-types/interceptors.d.ts +80 -0
  262. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-agent.d.ts +68 -0
  263. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-call-history.d.ts +111 -0
  264. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-client.d.ts +27 -0
  265. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-errors.d.ts +12 -0
  266. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  267. package/node_modules/@slack/socket-mode/node_modules/undici-types/mock-pool.d.ts +27 -0
  268. package/node_modules/@slack/socket-mode/node_modules/undici-types/package.json +55 -0
  269. package/node_modules/@slack/socket-mode/node_modules/undici-types/patch.d.ts +29 -0
  270. package/node_modules/@slack/socket-mode/node_modules/undici-types/pool-stats.d.ts +19 -0
  271. package/node_modules/@slack/socket-mode/node_modules/undici-types/pool.d.ts +39 -0
  272. package/node_modules/@slack/socket-mode/node_modules/undici-types/proxy-agent.d.ts +29 -0
  273. package/node_modules/@slack/socket-mode/node_modules/undici-types/readable.d.ts +68 -0
  274. package/node_modules/@slack/socket-mode/node_modules/undici-types/retry-agent.d.ts +8 -0
  275. package/node_modules/@slack/socket-mode/node_modules/undici-types/retry-handler.d.ts +125 -0
  276. package/node_modules/@slack/socket-mode/node_modules/undici-types/round-robin-pool.d.ts +39 -0
  277. package/node_modules/@slack/socket-mode/node_modules/undici-types/snapshot-agent.d.ts +113 -0
  278. package/node_modules/@slack/socket-mode/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  279. package/node_modules/@slack/socket-mode/node_modules/undici-types/util.d.ts +18 -0
  280. package/node_modules/@slack/socket-mode/node_modules/undici-types/utility.d.ts +7 -0
  281. package/node_modules/@slack/socket-mode/node_modules/undici-types/webidl.d.ts +346 -0
  282. package/node_modules/@slack/socket-mode/node_modules/undici-types/websocket.d.ts +188 -0
  283. package/node_modules/@slack/socket-mode/package.json +21 -13
  284. package/node_modules/@slack/types/README.md +1 -1
  285. package/node_modules/@slack/types/dist/events/app.d.ts +28 -0
  286. package/node_modules/@slack/types/dist/events/app.d.ts.map +1 -1
  287. package/node_modules/@slack/types/dist/events/index.d.ts +2 -2
  288. package/node_modules/@slack/types/dist/events/index.d.ts.map +1 -1
  289. package/node_modules/@slack/types/dist/events/index.js.map +1 -1
  290. package/node_modules/@slack/types/dist/events/message.d.ts +2 -0
  291. package/node_modules/@slack/types/dist/events/message.d.ts.map +1 -1
  292. package/node_modules/@slack/types/package.json +3 -3
  293. package/node_modules/@slack/web-api/README.md +1 -1
  294. package/node_modules/@slack/web-api/dist/WebClient.d.ts +42 -71
  295. package/node_modules/@slack/web-api/dist/WebClient.d.ts.map +1 -1
  296. package/node_modules/@slack/web-api/dist/WebClient.js +180 -248
  297. package/node_modules/@slack/web-api/dist/WebClient.js.map +1 -1
  298. package/node_modules/@slack/web-api/dist/chat-stream.js +37 -22
  299. package/node_modules/@slack/web-api/dist/chat-stream.js.map +1 -1
  300. package/node_modules/@slack/web-api/dist/errors.d.ts +32 -51
  301. package/node_modules/@slack/web-api/dist/errors.d.ts.map +1 -1
  302. package/node_modules/@slack/web-api/dist/errors.js +64 -55
  303. package/node_modules/@slack/web-api/dist/errors.js.map +1 -1
  304. package/node_modules/@slack/web-api/dist/file-upload.d.ts +0 -9
  305. package/node_modules/@slack/web-api/dist/file-upload.d.ts.map +1 -1
  306. package/node_modules/@slack/web-api/dist/file-upload.js +41 -46
  307. package/node_modules/@slack/web-api/dist/file-upload.js.map +1 -1
  308. package/node_modules/@slack/web-api/dist/index.d.ts +2 -2
  309. package/node_modules/@slack/web-api/dist/index.d.ts.map +1 -1
  310. package/node_modules/@slack/web-api/dist/index.js +8 -1
  311. package/node_modules/@slack/web-api/dist/index.js.map +1 -1
  312. package/node_modules/@slack/web-api/dist/methods.d.ts +2 -38
  313. package/node_modules/@slack/web-api/dist/methods.d.ts.map +1 -1
  314. package/node_modules/@slack/web-api/dist/methods.js +1347 -1384
  315. package/node_modules/@slack/web-api/dist/methods.js.map +1 -1
  316. package/node_modules/@slack/web-api/dist/types/request/files.d.ts +0 -1
  317. package/node_modules/@slack/web-api/dist/types/request/files.d.ts.map +1 -1
  318. package/node_modules/@slack/web-api/dist/types/request/index.d.ts +3 -3
  319. package/node_modules/@slack/web-api/dist/types/request/index.d.ts.map +1 -1
  320. package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts +66 -1
  321. package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts.map +1 -1
  322. package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts +1 -14
  323. package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts.map +1 -1
  324. package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts +0 -29
  325. package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts.map +1 -1
  326. package/node_modules/@slack/web-api/node_modules/@slack/logger/LICENSE +23 -0
  327. package/node_modules/@slack/web-api/node_modules/@slack/logger/README.md +66 -0
  328. package/node_modules/@slack/web-api/node_modules/@slack/logger/dist/index.d.ts +94 -0
  329. package/node_modules/@slack/web-api/node_modules/@slack/logger/dist/index.d.ts.map +1 -0
  330. package/node_modules/@slack/web-api/node_modules/@slack/logger/dist/index.js +98 -0
  331. package/node_modules/@slack/web-api/node_modules/@slack/logger/dist/index.js.map +1 -0
  332. package/node_modules/@slack/web-api/node_modules/@slack/logger/package.json +42 -0
  333. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +15 -0
  334. package/node_modules/@slack/web-api/node_modules/@types/node/assert/strict.d.ts +68 -0
  335. package/node_modules/@slack/web-api/node_modules/@types/node/assert.d.ts +1077 -0
  336. package/node_modules/@slack/web-api/node_modules/@types/node/async_hooks.d.ts +711 -0
  337. package/node_modules/@slack/web-api/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  338. package/node_modules/@slack/web-api/node_modules/@types/node/buffer.d.ts +1799 -0
  339. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1362 -0
  340. package/node_modules/@slack/web-api/node_modules/@types/node/cluster.d.ts +432 -0
  341. package/node_modules/@slack/web-api/node_modules/@types/node/console.d.ts +93 -0
  342. package/node_modules/@slack/web-api/node_modules/@types/node/constants.d.ts +14 -0
  343. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +3954 -0
  344. package/node_modules/@slack/web-api/node_modules/@types/node/dgram.d.ts +537 -0
  345. package/node_modules/@slack/web-api/node_modules/@types/node/diagnostics_channel.d.ts +794 -0
  346. package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +497 -0
  347. package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +876 -0
  348. package/node_modules/@slack/web-api/node_modules/@types/node/domain.d.ts +150 -0
  349. package/node_modules/@slack/web-api/node_modules/@types/node/events.d.ts +1008 -0
  350. package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +486 -0
  351. package/node_modules/@slack/web-api/node_modules/@types/node/fs/promises.d.ts +1481 -0
  352. package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +4786 -0
  353. package/node_modules/@slack/web-api/node_modules/@types/node/globals.d.ts +150 -0
  354. package/node_modules/@slack/web-api/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  355. package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +2172 -0
  356. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +2489 -0
  357. package/node_modules/@slack/web-api/node_modules/@types/node/https.d.ts +400 -0
  358. package/node_modules/@slack/web-api/node_modules/@types/node/index.d.ts +115 -0
  359. package/node_modules/@slack/web-api/node_modules/@types/node/inspector/promises.d.ts +35 -0
  360. package/node_modules/@slack/web-api/node_modules/@types/node/inspector.d.ts +264 -0
  361. package/node_modules/@slack/web-api/node_modules/@types/node/inspector.generated.d.ts +4406 -0
  362. package/node_modules/@slack/web-api/node_modules/@types/node/module.d.ts +726 -0
  363. package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +970 -0
  364. package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +498 -0
  365. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +155 -0
  366. package/node_modules/@slack/web-api/node_modules/@types/node/path/posix.d.ts +8 -0
  367. package/node_modules/@slack/web-api/node_modules/@types/node/path/win32.d.ts +8 -0
  368. package/node_modules/@slack/web-api/node_modules/@types/node/path.d.ts +178 -0
  369. package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +604 -0
  370. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +2217 -0
  371. package/node_modules/@slack/web-api/node_modules/@types/node/punycode.d.ts +89 -0
  372. package/node_modules/@slack/web-api/node_modules/@types/node/querystring.d.ts +139 -0
  373. package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +978 -0
  374. package/node_modules/@slack/web-api/node_modules/@types/node/readline/promises.d.ts +158 -0
  375. package/node_modules/@slack/web-api/node_modules/@types/node/readline.d.ts +508 -0
  376. package/node_modules/@slack/web-api/node_modules/@types/node/repl.d.ts +420 -0
  377. package/node_modules/@slack/web-api/node_modules/@types/node/sea.d.ts +47 -0
  378. package/node_modules/@slack/web-api/node_modules/@types/node/sqlite.d.ts +1123 -0
  379. package/node_modules/@slack/web-api/node_modules/@types/node/stream/consumers.d.ts +114 -0
  380. package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +451 -0
  381. package/node_modules/@slack/web-api/node_modules/@types/node/stream/promises.d.ts +211 -0
  382. package/node_modules/@slack/web-api/node_modules/@types/node/stream/web.d.ts +300 -0
  383. package/node_modules/@slack/web-api/node_modules/@types/node/stream.d.ts +1806 -0
  384. package/node_modules/@slack/web-api/node_modules/@types/node/string_decoder.d.ts +27 -0
  385. package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +59 -0
  386. package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +2389 -0
  387. package/node_modules/@slack/web-api/node_modules/@types/node/timers/promises.d.ts +93 -0
  388. package/node_modules/@slack/web-api/node_modules/@types/node/timers.d.ts +149 -0
  389. package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +1193 -0
  390. package/node_modules/@slack/web-api/node_modules/@types/node/trace_events.d.ts +103 -0
  391. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  392. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  393. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  394. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.6/index.d.ts +117 -0
  395. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  396. package/node_modules/@slack/web-api/node_modules/@types/node/ts5.7/index.d.ts +117 -0
  397. package/node_modules/@slack/web-api/node_modules/@types/node/tty.d.ts +225 -0
  398. package/node_modules/@slack/web-api/node_modules/@types/node/url.d.ts +556 -0
  399. package/node_modules/@slack/web-api/node_modules/@types/node/util/types.d.ts +558 -0
  400. package/node_modules/@slack/web-api/node_modules/@types/node/util.d.ts +1677 -0
  401. package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +1062 -0
  402. package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +1136 -0
  403. package/node_modules/@slack/web-api/node_modules/@types/node/wasi.d.ts +131 -0
  404. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  405. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  406. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/console.d.ts +9 -0
  407. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  408. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/domexception.d.ts +83 -0
  409. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  410. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/events.d.ts +106 -0
  411. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  412. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  413. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  414. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  415. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  416. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  417. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  418. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  419. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/url.d.ts +24 -0
  420. package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +669 -0
  421. package/node_modules/@slack/web-api/node_modules/@types/node/zlib/iter.d.ts +131 -0
  422. package/node_modules/@slack/web-api/node_modules/@types/node/zlib.d.ts +589 -0
  423. package/node_modules/@slack/web-api/node_modules/@types/retry/LICENSE +21 -0
  424. package/node_modules/@slack/web-api/node_modules/@types/retry/README.md +16 -0
  425. package/node_modules/@slack/web-api/node_modules/@types/retry/index.d.ts +151 -0
  426. package/node_modules/@slack/web-api/node_modules/@types/retry/package.json +28 -0
  427. package/node_modules/@slack/web-api/node_modules/eventemitter3/README.md +85 -0
  428. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.esm.js +355 -0
  429. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.esm.min.js +1 -0
  430. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.esm.min.js.map +1 -0
  431. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.umd.js +363 -0
  432. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.umd.min.js +1 -0
  433. package/node_modules/@slack/web-api/node_modules/eventemitter3/dist/eventemitter3.umd.min.js.map +1 -0
  434. package/node_modules/@slack/web-api/node_modules/eventemitter3/index.d.ts +135 -0
  435. package/node_modules/@slack/web-api/node_modules/eventemitter3/index.mjs +4 -0
  436. package/node_modules/@slack/web-api/node_modules/eventemitter3/package.json +62 -0
  437. package/node_modules/@slack/web-api/node_modules/p-queue/node_modules/eventemitter3/LICENSE +21 -0
  438. package/node_modules/@slack/web-api/node_modules/p-queue/node_modules/eventemitter3/index.js +336 -0
  439. package/node_modules/@slack/web-api/node_modules/undici-types/LICENSE +21 -0
  440. package/node_modules/@slack/web-api/node_modules/undici-types/README.md +6 -0
  441. package/node_modules/@slack/web-api/node_modules/undici-types/agent.d.ts +30 -0
  442. package/node_modules/@slack/web-api/node_modules/undici-types/api.d.ts +43 -0
  443. package/node_modules/@slack/web-api/node_modules/undici-types/balanced-pool.d.ts +30 -0
  444. package/node_modules/@slack/web-api/node_modules/undici-types/cache-interceptor.d.ts +179 -0
  445. package/node_modules/@slack/web-api/node_modules/undici-types/cache.d.ts +36 -0
  446. package/node_modules/@slack/web-api/node_modules/undici-types/client-stats.d.ts +15 -0
  447. package/node_modules/@slack/web-api/node_modules/undici-types/client.d.ts +129 -0
  448. package/node_modules/@slack/web-api/node_modules/undici-types/connector.d.ts +36 -0
  449. package/node_modules/@slack/web-api/node_modules/undici-types/content-type.d.ts +21 -0
  450. package/node_modules/@slack/web-api/node_modules/undici-types/cookies.d.ts +30 -0
  451. package/node_modules/@slack/web-api/node_modules/undici-types/diagnostics-channel.d.ts +74 -0
  452. package/node_modules/@slack/web-api/node_modules/undici-types/dispatcher.d.ts +253 -0
  453. package/node_modules/@slack/web-api/node_modules/undici-types/dispatcher1-wrapper.d.ts +7 -0
  454. package/node_modules/@slack/web-api/node_modules/undici-types/env-http-proxy-agent.d.ts +22 -0
  455. package/node_modules/@slack/web-api/node_modules/undici-types/errors.d.ts +177 -0
  456. package/node_modules/@slack/web-api/node_modules/undici-types/eventsource.d.ts +66 -0
  457. package/node_modules/@slack/web-api/node_modules/undici-types/fetch.d.ts +231 -0
  458. package/node_modules/@slack/web-api/node_modules/undici-types/formdata.d.ts +108 -0
  459. package/node_modules/@slack/web-api/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  460. package/node_modules/@slack/web-api/node_modules/undici-types/global-origin.d.ts +7 -0
  461. package/node_modules/@slack/web-api/node_modules/undici-types/h2c-client.d.ts +73 -0
  462. package/node_modules/@slack/web-api/node_modules/undici-types/handlers.d.ts +14 -0
  463. package/node_modules/@slack/web-api/node_modules/undici-types/header.d.ts +165 -0
  464. package/node_modules/@slack/web-api/node_modules/undici-types/index.d.ts +93 -0
  465. package/node_modules/@slack/web-api/node_modules/undici-types/interceptors.d.ts +80 -0
  466. package/node_modules/@slack/web-api/node_modules/undici-types/mock-agent.d.ts +68 -0
  467. package/node_modules/@slack/web-api/node_modules/undici-types/mock-call-history.d.ts +111 -0
  468. package/node_modules/@slack/web-api/node_modules/undici-types/mock-client.d.ts +27 -0
  469. package/node_modules/@slack/web-api/node_modules/undici-types/mock-errors.d.ts +12 -0
  470. package/node_modules/@slack/web-api/node_modules/undici-types/mock-interceptor.d.ts +94 -0
  471. package/node_modules/@slack/web-api/node_modules/undici-types/mock-pool.d.ts +27 -0
  472. package/node_modules/@slack/web-api/node_modules/undici-types/package.json +55 -0
  473. package/node_modules/@slack/web-api/node_modules/undici-types/patch.d.ts +29 -0
  474. package/node_modules/@slack/web-api/node_modules/undici-types/pool-stats.d.ts +19 -0
  475. package/node_modules/@slack/web-api/node_modules/undici-types/pool.d.ts +39 -0
  476. package/node_modules/@slack/web-api/node_modules/undici-types/proxy-agent.d.ts +29 -0
  477. package/node_modules/@slack/web-api/node_modules/undici-types/readable.d.ts +68 -0
  478. package/node_modules/@slack/web-api/node_modules/undici-types/retry-agent.d.ts +8 -0
  479. package/node_modules/@slack/web-api/node_modules/undici-types/retry-handler.d.ts +125 -0
  480. package/node_modules/@slack/web-api/node_modules/undici-types/round-robin-pool.d.ts +39 -0
  481. package/node_modules/@slack/web-api/node_modules/undici-types/snapshot-agent.d.ts +113 -0
  482. package/node_modules/@slack/web-api/node_modules/undici-types/socks5-proxy-agent.d.ts +25 -0
  483. package/node_modules/@slack/web-api/node_modules/undici-types/util.d.ts +18 -0
  484. package/node_modules/@slack/web-api/node_modules/undici-types/utility.d.ts +7 -0
  485. package/node_modules/@slack/web-api/node_modules/undici-types/webidl.d.ts +346 -0
  486. package/node_modules/@slack/web-api/node_modules/undici-types/websocket.d.ts +188 -0
  487. package/node_modules/@slack/web-api/package.json +6 -10
  488. package/node_modules/get-east-asian-width/index.d.ts +60 -0
  489. package/node_modules/get-east-asian-width/index.js +30 -0
  490. package/node_modules/get-east-asian-width/lookup-data.js +21 -0
  491. package/node_modules/get-east-asian-width/lookup.js +138 -0
  492. package/node_modules/get-east-asian-width/package.json +71 -0
  493. package/node_modules/get-east-asian-width/readme.md +65 -0
  494. package/node_modules/get-east-asian-width/utilities.js +24 -0
  495. package/node_modules/p-map/index.js +1 -0
  496. package/node_modules/p-map/package.json +1 -1
  497. package/node_modules/undici/LICENSE +21 -0
  498. package/node_modules/undici/README.md +741 -0
  499. package/node_modules/undici/docs/docs/api/Agent.md +84 -0
  500. package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
  501. package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
  502. package/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
  503. package/node_modules/undici/docs/docs/api/Client.md +288 -0
  504. package/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
  505. package/node_modules/undici/docs/docs/api/Connector.md +115 -0
  506. package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
  507. package/node_modules/undici/docs/docs/api/Cookies.md +128 -0
  508. package/node_modules/undici/docs/docs/api/Debug.md +62 -0
  509. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +315 -0
  510. package/node_modules/undici/docs/docs/api/Dispatcher.md +1392 -0
  511. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
  512. package/node_modules/undici/docs/docs/api/Errors.md +49 -0
  513. package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
  514. package/node_modules/undici/docs/docs/api/Fetch.md +60 -0
  515. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
  516. package/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
  517. package/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
  518. package/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
  519. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
  520. package/node_modules/undici/docs/docs/api/MockClient.md +81 -0
  521. package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
  522. package/node_modules/undici/docs/docs/api/MockPool.md +555 -0
  523. package/node_modules/undici/docs/docs/api/Pool.md +84 -0
  524. package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
  525. package/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
  526. package/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
  527. package/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
  528. package/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
  529. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
  530. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
  531. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
  532. package/node_modules/undici/docs/docs/api/Util.md +25 -0
  533. package/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
  534. package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
  535. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
  536. package/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
  537. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
  538. package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
  539. package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
  540. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
  541. package/node_modules/undici/index-fetch.js +65 -0
  542. package/node_modules/undici/index.d.ts +3 -0
  543. package/node_modules/undici/index.js +234 -0
  544. package/node_modules/undici/lib/api/abort-signal.js +59 -0
  545. package/node_modules/undici/lib/api/api-connect.js +110 -0
  546. package/node_modules/undici/lib/api/api-pipeline.js +252 -0
  547. package/node_modules/undici/lib/api/api-request.js +214 -0
  548. package/node_modules/undici/lib/api/api-stream.js +209 -0
  549. package/node_modules/undici/lib/api/api-upgrade.js +111 -0
  550. package/node_modules/undici/lib/api/index.js +7 -0
  551. package/node_modules/undici/lib/api/readable.js +580 -0
  552. package/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
  553. package/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
  554. package/node_modules/undici/lib/core/connect.js +153 -0
  555. package/node_modules/undici/lib/core/constants.js +143 -0
  556. package/node_modules/undici/lib/core/diagnostics.js +227 -0
  557. package/node_modules/undici/lib/core/errors.js +477 -0
  558. package/node_modules/undici/lib/core/request.js +453 -0
  559. package/node_modules/undici/lib/core/socks5-client.js +422 -0
  560. package/node_modules/undici/lib/core/socks5-utils.js +212 -0
  561. package/node_modules/undici/lib/core/symbols.js +75 -0
  562. package/node_modules/undici/lib/core/tree.js +160 -0
  563. package/node_modules/undici/lib/core/util.js +992 -0
  564. package/node_modules/undici/lib/dispatcher/agent.js +158 -0
  565. package/node_modules/undici/lib/dispatcher/balanced-pool.js +219 -0
  566. package/node_modules/undici/lib/dispatcher/client-h1.js +1722 -0
  567. package/node_modules/undici/lib/dispatcher/client-h2.js +995 -0
  568. package/node_modules/undici/lib/dispatcher/client.js +664 -0
  569. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
  570. package/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
  571. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
  572. package/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
  573. package/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
  574. package/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
  575. package/node_modules/undici/lib/dispatcher/pool.js +118 -0
  576. package/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
  577. package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
  578. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
  579. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +260 -0
  580. package/node_modules/undici/lib/encoding/index.js +33 -0
  581. package/node_modules/undici/lib/global.js +59 -0
  582. package/node_modules/undici/lib/handler/cache-handler.js +578 -0
  583. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
  584. package/node_modules/undici/lib/handler/decorator-handler.js +67 -0
  585. package/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
  586. package/node_modules/undici/lib/handler/redirect-handler.js +238 -0
  587. package/node_modules/undici/lib/handler/retry-handler.js +394 -0
  588. package/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
  589. package/node_modules/undici/lib/handler/wrap-handler.js +105 -0
  590. package/node_modules/undici/lib/interceptor/cache.js +495 -0
  591. package/node_modules/undici/lib/interceptor/decompress.js +259 -0
  592. package/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
  593. package/node_modules/undici/lib/interceptor/dns.js +571 -0
  594. package/node_modules/undici/lib/interceptor/dump.js +112 -0
  595. package/node_modules/undici/lib/interceptor/redirect.js +21 -0
  596. package/node_modules/undici/lib/interceptor/response-error.js +95 -0
  597. package/node_modules/undici/lib/interceptor/retry.js +19 -0
  598. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  599. package/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
  600. package/node_modules/undici/lib/llhttp/constants.js +531 -0
  601. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
  602. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
  603. package/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
  604. package/node_modules/undici/lib/llhttp/utils.js +12 -0
  605. package/node_modules/undici/lib/mock/mock-agent.js +232 -0
  606. package/node_modules/undici/lib/mock/mock-call-history.js +248 -0
  607. package/node_modules/undici/lib/mock/mock-client.js +68 -0
  608. package/node_modules/undici/lib/mock/mock-errors.js +29 -0
  609. package/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
  610. package/node_modules/undici/lib/mock/mock-pool.js +68 -0
  611. package/node_modules/undici/lib/mock/mock-symbols.js +32 -0
  612. package/node_modules/undici/lib/mock/mock-utils.js +486 -0
  613. package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
  614. package/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
  615. package/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
  616. package/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
  617. package/node_modules/undici/lib/util/cache.js +414 -0
  618. package/node_modules/undici/lib/util/date.js +653 -0
  619. package/node_modules/undici/lib/util/promise.js +28 -0
  620. package/node_modules/undici/lib/util/runtime-features.js +124 -0
  621. package/node_modules/undici/lib/util/stats.js +32 -0
  622. package/node_modules/undici/lib/util/timers.js +425 -0
  623. package/node_modules/undici/lib/web/cache/cache.js +864 -0
  624. package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
  625. package/node_modules/undici/lib/web/cache/util.js +45 -0
  626. package/node_modules/undici/lib/web/cookies/constants.js +12 -0
  627. package/node_modules/undici/lib/web/cookies/index.js +199 -0
  628. package/node_modules/undici/lib/web/cookies/parse.js +314 -0
  629. package/node_modules/undici/lib/web/cookies/util.js +282 -0
  630. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
  631. package/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
  632. package/node_modules/undici/lib/web/eventsource/util.js +29 -0
  633. package/node_modules/undici/lib/web/fetch/LICENSE +21 -0
  634. package/node_modules/undici/lib/web/fetch/body.js +509 -0
  635. package/node_modules/undici/lib/web/fetch/constants.js +131 -0
  636. package/node_modules/undici/lib/web/fetch/data-url.js +596 -0
  637. package/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
  638. package/node_modules/undici/lib/web/fetch/formdata.js +259 -0
  639. package/node_modules/undici/lib/web/fetch/global.js +40 -0
  640. package/node_modules/undici/lib/web/fetch/headers.js +719 -0
  641. package/node_modules/undici/lib/web/fetch/index.js +2413 -0
  642. package/node_modules/undici/lib/web/fetch/request.js +1115 -0
  643. package/node_modules/undici/lib/web/fetch/response.js +641 -0
  644. package/node_modules/undici/lib/web/fetch/util.js +1522 -0
  645. package/node_modules/undici/lib/web/infra/index.js +229 -0
  646. package/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
  647. package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
  648. package/node_modules/undici/lib/web/webidl/index.js +1006 -0
  649. package/node_modules/undici/lib/web/websocket/connection.js +329 -0
  650. package/node_modules/undici/lib/web/websocket/constants.js +126 -0
  651. package/node_modules/undici/lib/web/websocket/events.js +331 -0
  652. package/node_modules/undici/lib/web/websocket/frame.js +133 -0
  653. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
  654. package/node_modules/undici/lib/web/websocket/receiver.js +507 -0
  655. package/node_modules/undici/lib/web/websocket/sender.js +109 -0
  656. package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
  657. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +498 -0
  658. package/node_modules/undici/lib/web/websocket/util.js +347 -0
  659. package/node_modules/undici/lib/web/websocket/websocket.js +758 -0
  660. package/node_modules/undici/package.json +152 -0
  661. package/node_modules/undici/scripts/strip-comments.js +10 -0
  662. package/node_modules/undici/types/README.md +6 -0
  663. package/node_modules/undici/types/agent.d.ts +32 -0
  664. package/node_modules/undici/types/api.d.ts +43 -0
  665. package/node_modules/undici/types/balanced-pool.d.ts +30 -0
  666. package/node_modules/undici/types/cache-interceptor.d.ts +179 -0
  667. package/node_modules/undici/types/cache.d.ts +36 -0
  668. package/node_modules/undici/types/client-stats.d.ts +15 -0
  669. package/node_modules/undici/types/client.d.ts +139 -0
  670. package/node_modules/undici/types/connector.d.ts +36 -0
  671. package/node_modules/undici/types/content-type.d.ts +21 -0
  672. package/node_modules/undici/types/cookies.d.ts +30 -0
  673. package/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
  674. package/node_modules/undici/types/dispatcher.d.ts +275 -0
  675. package/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
  676. package/node_modules/undici/types/errors.d.ts +177 -0
  677. package/node_modules/undici/types/eventsource.d.ts +66 -0
  678. package/node_modules/undici/types/fetch.d.ts +231 -0
  679. package/node_modules/undici/types/formdata.d.ts +114 -0
  680. package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
  681. package/node_modules/undici/types/global-origin.d.ts +7 -0
  682. package/node_modules/undici/types/h2c-client.d.ts +73 -0
  683. package/node_modules/undici/types/handlers.d.ts +14 -0
  684. package/node_modules/undici/types/header.d.ts +160 -0
  685. package/node_modules/undici/types/index.d.ts +91 -0
  686. package/node_modules/undici/types/interceptors.d.ts +80 -0
  687. package/node_modules/undici/types/mock-agent.d.ts +68 -0
  688. package/node_modules/undici/types/mock-call-history.d.ts +111 -0
  689. package/node_modules/undici/types/mock-client.d.ts +27 -0
  690. package/node_modules/undici/types/mock-errors.d.ts +12 -0
  691. package/node_modules/undici/types/mock-interceptor.d.ts +94 -0
  692. package/node_modules/undici/types/mock-pool.d.ts +27 -0
  693. package/node_modules/undici/types/patch.d.ts +29 -0
  694. package/node_modules/undici/types/pool-stats.d.ts +19 -0
  695. package/node_modules/undici/types/pool.d.ts +41 -0
  696. package/node_modules/undici/types/proxy-agent.d.ts +29 -0
  697. package/node_modules/undici/types/readable.d.ts +68 -0
  698. package/node_modules/undici/types/retry-agent.d.ts +8 -0
  699. package/node_modules/undici/types/retry-handler.d.ts +125 -0
  700. package/node_modules/undici/types/round-robin-pool.d.ts +41 -0
  701. package/node_modules/undici/types/snapshot-agent.d.ts +109 -0
  702. package/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
  703. package/node_modules/undici/types/util.d.ts +18 -0
  704. package/node_modules/undici/types/utility.d.ts +7 -0
  705. package/node_modules/undici/types/webidl.d.ts +347 -0
  706. package/node_modules/undici/types/websocket.d.ts +188 -0
  707. package/openclaw.plugin.json +72 -102
  708. package/package.json +20 -9
  709. package/dist/account-inspect-jn1xLaVi.js +0 -86
  710. package/dist/accounts-BSr252c_.js +0 -188
  711. package/dist/accounts.runtime-CjULMLTa.js +0 -2
  712. package/dist/action-runtime-CFU52n4W.js +0 -561
  713. package/dist/action-runtime.runtime-9-17zvKH.js +0 -2
  714. package/dist/actions-D51foiwR.js +0 -900
  715. package/dist/actions.runtime-BMJwtf5C.js +0 -2
  716. package/dist/approval-handler.runtime-3b4-wxMl.js +0 -368
  717. package/dist/channel-Ds8NKvfr.js +0 -1130
  718. package/dist/channel-type-DXkUajFP.js +0 -109
  719. package/dist/channel.setup-DOSTEDfA.js +0 -76
  720. package/dist/config-schema-B4j4tCOI.js +0 -428
  721. package/dist/cursor-pages-DSmTg0su.js +0 -13
  722. package/dist/directory-config-B08pm5ZT.js +0 -54
  723. package/dist/directory-live-DpPKzPrn.js +0 -131
  724. package/dist/doctor-contract-U6oVntbM.js +0 -173
  725. package/dist/group-policy-CdnQzQBI.js +0 -2318
  726. package/dist/interactive-replies-C3ffk6oN.js +0 -197
  727. package/dist/interactive-replies-api.js +0 -2
  728. package/dist/message-tool-api-ByVyIVOh.js +0 -128
  729. package/dist/monitor-CnB_WKvF.js +0 -13
  730. package/dist/outbound-adapter-DuPz2HHt.js +0 -272
  731. package/dist/pipeline.runtime-5rRYZuX5.js +0 -4219
  732. package/dist/policy-C31RYSuT.js +0 -65
  733. package/dist/probe-CVRuArHA.js +0 -340
  734. package/dist/provider-htuIJGFD.js +0 -5857
  735. package/dist/relay-source-Df9EaiTF.js +0 -272
  736. package/dist/replies-Cgr2Gli4.js +0 -420
  737. package/dist/resolve-channels-DodP2TFx.js +0 -92
  738. package/dist/resolve-users-M9eF8891.js +0 -118
  739. package/dist/rolldown-runtime-D7D4PA-g.js +0 -13
  740. package/dist/runtime-api-D5XYMMsf.js +0 -10
  741. package/dist/scopes-CJRpHkDC.js +0 -73
  742. package/dist/security-audit-Cz6erklv.js +0 -41
  743. package/dist/send-BZ1tPv7-.js +0 -1283
  744. package/dist/send.runtime-a2pilFor.js +0 -2
  745. package/dist/setup-core-tPxMuFez.js +0 -600
  746. package/dist/setup-surface-wV-S1dE_.js +0 -156
  747. package/dist/shared-BfMskaMx.js +0 -295
  748. package/dist/slash-dispatch.runtime-lfeIsXTX.js +0 -32
  749. package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts +0 -159
  750. package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts.map +0 -1
  751. package/node_modules/@slack/bolt/dist/WorkflowStep.js +0 -217
  752. package/node_modules/@slack/bolt/dist/WorkflowStep.js.map +0 -1
  753. package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts +0 -49
  754. package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts.map +0 -1
  755. package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js +0 -3
  756. package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js.map +0 -1
  757. package/node_modules/@slack/logger/README.md +0 -66
  758. package/node_modules/@slack/logger/dist/index.js +0 -94
  759. package/node_modules/@slack/logger/dist/index.js.map +0 -1
  760. package/node_modules/@slack/logger/package.json +0 -43
  761. package/node_modules/@slack/oauth/README.md +0 -379
  762. package/node_modules/@slack/oauth/dist/errors.d.ts +0 -39
  763. package/node_modules/@slack/oauth/dist/errors.d.ts.map +0 -1
  764. package/node_modules/@slack/oauth/dist/errors.js +0 -69
  765. package/node_modules/@slack/oauth/dist/errors.js.map +0 -1
  766. package/node_modules/@slack/oauth/dist/install-provider.js +0 -663
  767. package/node_modules/@slack/oauth/dist/install-provider.js.map +0 -1
  768. package/node_modules/@slack/oauth/dist/installation-stores/file-store.js +0 -116
  769. package/node_modules/@slack/oauth/dist/installation-stores/file-store.js.map +0 -1
  770. package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js +0 -89
  771. package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js.map +0 -1
  772. package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js +0 -40
  773. package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js.map +0 -1
  774. package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js +0 -98
  775. package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js.map +0 -1
  776. package/node_modules/@slack/oauth/package.json +0 -55
  777. package/node_modules/@types/retry/README.md +0 -15
  778. package/node_modules/@types/retry/index.d.ts +0 -144
  779. package/node_modules/@types/retry/package.json +0 -30
  780. package/node_modules/@types/ws/README.md +0 -15
  781. package/node_modules/@types/ws/index.d.mts +0 -451
  782. package/node_modules/@types/ws/index.d.ts +0 -445
  783. package/node_modules/@types/ws/package.json +0 -72
  784. package/node_modules/agent-base/README.md +0 -145
  785. package/node_modules/agent-base/dist/src/index.d.ts +0 -78
  786. package/node_modules/agent-base/dist/src/index.js +0 -203
  787. package/node_modules/agent-base/dist/src/index.js.map +0 -1
  788. package/node_modules/agent-base/dist/src/promisify.d.ts +0 -4
  789. package/node_modules/agent-base/dist/src/promisify.js +0 -18
  790. package/node_modules/agent-base/dist/src/promisify.js.map +0 -1
  791. package/node_modules/agent-base/package.json +0 -64
  792. package/node_modules/agent-base/src/index.ts +0 -345
  793. package/node_modules/agent-base/src/promisify.ts +0 -33
  794. package/node_modules/asynckit/LICENSE +0 -21
  795. package/node_modules/asynckit/README.md +0 -233
  796. package/node_modules/asynckit/bench.js +0 -76
  797. package/node_modules/asynckit/index.js +0 -6
  798. package/node_modules/asynckit/lib/abort.js +0 -29
  799. package/node_modules/asynckit/lib/async.js +0 -34
  800. package/node_modules/asynckit/lib/defer.js +0 -26
  801. package/node_modules/asynckit/lib/iterate.js +0 -75
  802. package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
  803. package/node_modules/asynckit/lib/readable_parallel.js +0 -25
  804. package/node_modules/asynckit/lib/readable_serial.js +0 -25
  805. package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
  806. package/node_modules/asynckit/lib/state.js +0 -37
  807. package/node_modules/asynckit/lib/streamify.js +0 -141
  808. package/node_modules/asynckit/lib/terminator.js +0 -29
  809. package/node_modules/asynckit/package.json +0 -63
  810. package/node_modules/asynckit/parallel.js +0 -43
  811. package/node_modules/asynckit/serial.js +0 -17
  812. package/node_modules/asynckit/serialOrdered.js +0 -75
  813. package/node_modules/asynckit/stream.js +0 -21
  814. package/node_modules/axios/CHANGELOG.md +0 -1872
  815. package/node_modules/axios/LICENSE +0 -7
  816. package/node_modules/axios/MIGRATION_GUIDE.md +0 -877
  817. package/node_modules/axios/README.md +0 -2559
  818. package/node_modules/axios/dist/axios.js +0 -5249
  819. package/node_modules/axios/dist/axios.min.js +0 -5
  820. package/node_modules/axios/dist/axios.min.js.map +0 -1
  821. package/node_modules/axios/dist/browser/axios.cjs +0 -5146
  822. package/node_modules/axios/dist/esm/axios.js +0 -5167
  823. package/node_modules/axios/dist/esm/axios.min.js +0 -3
  824. package/node_modules/axios/dist/esm/axios.min.js.map +0 -1
  825. package/node_modules/axios/dist/node/axios.cjs +0 -5996
  826. package/node_modules/axios/index.d.cts +0 -738
  827. package/node_modules/axios/index.d.ts +0 -755
  828. package/node_modules/axios/index.js +0 -45
  829. package/node_modules/axios/lib/adapters/README.md +0 -36
  830. package/node_modules/axios/lib/adapters/adapters.js +0 -132
  831. package/node_modules/axios/lib/adapters/fetch.js +0 -643
  832. package/node_modules/axios/lib/adapters/http.js +0 -1417
  833. package/node_modules/axios/lib/adapters/xhr.js +0 -228
  834. package/node_modules/axios/lib/axios.js +0 -89
  835. package/node_modules/axios/lib/cancel/CancelToken.js +0 -135
  836. package/node_modules/axios/lib/cancel/CanceledError.js +0 -22
  837. package/node_modules/axios/lib/cancel/isCancel.js +0 -5
  838. package/node_modules/axios/lib/core/Axios.js +0 -283
  839. package/node_modules/axios/lib/core/AxiosError.js +0 -188
  840. package/node_modules/axios/lib/core/AxiosHeaders.js +0 -351
  841. package/node_modules/axios/lib/core/InterceptorManager.js +0 -72
  842. package/node_modules/axios/lib/core/README.md +0 -8
  843. package/node_modules/axios/lib/core/buildFullPath.js +0 -50
  844. package/node_modules/axios/lib/core/dispatchRequest.js +0 -89
  845. package/node_modules/axios/lib/core/mergeConfig.js +0 -159
  846. package/node_modules/axios/lib/core/settle.js +0 -27
  847. package/node_modules/axios/lib/core/transformData.js +0 -28
  848. package/node_modules/axios/lib/defaults/index.js +0 -177
  849. package/node_modules/axios/lib/defaults/transitional.js +0 -10
  850. package/node_modules/axios/lib/env/README.md +0 -3
  851. package/node_modules/axios/lib/env/classes/FormData.js +0 -2
  852. package/node_modules/axios/lib/env/data.js +0 -1
  853. package/node_modules/axios/lib/helpers/AxiosTransformStream.js +0 -156
  854. package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +0 -59
  855. package/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
  856. package/node_modules/axios/lib/helpers/HttpStatusCode.js +0 -77
  857. package/node_modules/axios/lib/helpers/README.md +0 -7
  858. package/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +0 -29
  859. package/node_modules/axios/lib/helpers/bind.js +0 -14
  860. package/node_modules/axios/lib/helpers/buildURL.js +0 -69
  861. package/node_modules/axios/lib/helpers/callbackify.js +0 -18
  862. package/node_modules/axios/lib/helpers/combineURLs.js +0 -15
  863. package/node_modules/axios/lib/helpers/composeSignals.js +0 -57
  864. package/node_modules/axios/lib/helpers/cookies.js +0 -64
  865. package/node_modules/axios/lib/helpers/deprecatedMethod.js +0 -31
  866. package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +0 -105
  867. package/node_modules/axios/lib/helpers/formDataToJSON.js +0 -119
  868. package/node_modules/axios/lib/helpers/formDataToStream.js +0 -119
  869. package/node_modules/axios/lib/helpers/fromDataURI.js +0 -68
  870. package/node_modules/axios/lib/helpers/isAbsoluteURL.js +0 -19
  871. package/node_modules/axios/lib/helpers/isAxiosError.js +0 -14
  872. package/node_modules/axios/lib/helpers/isURLSameOrigin.js +0 -16
  873. package/node_modules/axios/lib/helpers/null.js +0 -2
  874. package/node_modules/axios/lib/helpers/parseHeaders.js +0 -69
  875. package/node_modules/axios/lib/helpers/parseProtocol.js +0 -6
  876. package/node_modules/axios/lib/helpers/progressEventReducer.js +0 -54
  877. package/node_modules/axios/lib/helpers/readBlob.js +0 -15
  878. package/node_modules/axios/lib/helpers/resolveConfig.js +0 -119
  879. package/node_modules/axios/lib/helpers/sanitizeHeaderValue.js +0 -60
  880. package/node_modules/axios/lib/helpers/shouldBypassProxy.js +0 -210
  881. package/node_modules/axios/lib/helpers/speedometer.js +0 -55
  882. package/node_modules/axios/lib/helpers/spread.js +0 -28
  883. package/node_modules/axios/lib/helpers/throttle.js +0 -44
  884. package/node_modules/axios/lib/helpers/toFormData.js +0 -285
  885. package/node_modules/axios/lib/helpers/toURLEncodedForm.js +0 -19
  886. package/node_modules/axios/lib/helpers/trackStream.js +0 -89
  887. package/node_modules/axios/lib/helpers/validator.js +0 -112
  888. package/node_modules/axios/lib/platform/browser/classes/Blob.js +0 -3
  889. package/node_modules/axios/lib/platform/browser/classes/FormData.js +0 -3
  890. package/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +0 -4
  891. package/node_modules/axios/lib/platform/browser/index.js +0 -13
  892. package/node_modules/axios/lib/platform/common/utils.js +0 -52
  893. package/node_modules/axios/lib/platform/index.js +0 -7
  894. package/node_modules/axios/lib/platform/node/classes/FormData.js +0 -3
  895. package/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +0 -4
  896. package/node_modules/axios/lib/platform/node/index.js +0 -37
  897. package/node_modules/axios/lib/utils.js +0 -1017
  898. package/node_modules/axios/package.json +0 -201
  899. package/node_modules/combined-stream/License +0 -19
  900. package/node_modules/combined-stream/Readme.md +0 -138
  901. package/node_modules/combined-stream/lib/combined_stream.js +0 -208
  902. package/node_modules/combined-stream/package.json +0 -25
  903. package/node_modules/delayed-stream/.npmignore +0 -1
  904. package/node_modules/delayed-stream/License +0 -19
  905. package/node_modules/delayed-stream/Makefile +0 -7
  906. package/node_modules/delayed-stream/Readme.md +0 -141
  907. package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
  908. package/node_modules/delayed-stream/package.json +0 -27
  909. package/node_modules/es-set-tostringtag/.eslintrc +0 -13
  910. package/node_modules/es-set-tostringtag/CHANGELOG.md +0 -67
  911. package/node_modules/es-set-tostringtag/LICENSE +0 -21
  912. package/node_modules/es-set-tostringtag/README.md +0 -53
  913. package/node_modules/es-set-tostringtag/index.d.ts +0 -10
  914. package/node_modules/es-set-tostringtag/index.js +0 -35
  915. package/node_modules/es-set-tostringtag/package.json +0 -78
  916. package/node_modules/es-set-tostringtag/test/index.js +0 -85
  917. package/node_modules/follow-redirects/LICENSE +0 -18
  918. package/node_modules/follow-redirects/README.md +0 -157
  919. package/node_modules/follow-redirects/debug.js +0 -15
  920. package/node_modules/follow-redirects/http.js +0 -1
  921. package/node_modules/follow-redirects/https.js +0 -1
  922. package/node_modules/follow-redirects/index.js +0 -709
  923. package/node_modules/follow-redirects/package.json +0 -58
  924. package/node_modules/form-data/CHANGELOG.md +0 -669
  925. package/node_modules/form-data/License +0 -19
  926. package/node_modules/form-data/README.md +0 -350
  927. package/node_modules/form-data/index.d.ts +0 -51
  928. package/node_modules/form-data/lib/browser.js +0 -4
  929. package/node_modules/form-data/lib/form_data.js +0 -514
  930. package/node_modules/form-data/lib/populate.js +0 -10
  931. package/node_modules/form-data/node_modules/mime-db/HISTORY.md +0 -507
  932. package/node_modules/form-data/node_modules/mime-db/README.md +0 -100
  933. package/node_modules/form-data/node_modules/mime-db/db.json +0 -8519
  934. package/node_modules/form-data/node_modules/mime-db/package.json +0 -60
  935. package/node_modules/form-data/node_modules/mime-types/HISTORY.md +0 -397
  936. package/node_modules/form-data/node_modules/mime-types/README.md +0 -113
  937. package/node_modules/form-data/node_modules/mime-types/index.js +0 -188
  938. package/node_modules/form-data/node_modules/mime-types/package.json +0 -44
  939. package/node_modules/form-data/package.json +0 -83
  940. package/node_modules/has-symbols/.nycrc +0 -9
  941. package/node_modules/has-tostringtag/.eslintrc +0 -5
  942. package/node_modules/has-tostringtag/.github/FUNDING.yml +0 -12
  943. package/node_modules/has-tostringtag/CHANGELOG.md +0 -42
  944. package/node_modules/has-tostringtag/LICENSE +0 -21
  945. package/node_modules/has-tostringtag/README.md +0 -46
  946. package/node_modules/has-tostringtag/index.d.ts +0 -3
  947. package/node_modules/has-tostringtag/index.js +0 -8
  948. package/node_modules/has-tostringtag/package.json +0 -108
  949. package/node_modules/has-tostringtag/shams.d.ts +0 -3
  950. package/node_modules/has-tostringtag/shams.js +0 -8
  951. package/node_modules/has-tostringtag/test/index.js +0 -21
  952. package/node_modules/has-tostringtag/test/shams/core-js.js +0 -31
  953. package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +0 -30
  954. package/node_modules/has-tostringtag/test/tests.js +0 -15
  955. package/node_modules/has-tostringtag/tsconfig.json +0 -49
  956. package/node_modules/https-proxy-agent/README.md +0 -137
  957. package/node_modules/https-proxy-agent/dist/agent.d.ts +0 -30
  958. package/node_modules/https-proxy-agent/dist/agent.js +0 -177
  959. package/node_modules/https-proxy-agent/dist/agent.js.map +0 -1
  960. package/node_modules/https-proxy-agent/dist/index.d.ts +0 -23
  961. package/node_modules/https-proxy-agent/dist/index.js +0 -14
  962. package/node_modules/https-proxy-agent/dist/index.js.map +0 -1
  963. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +0 -7
  964. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -66
  965. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +0 -1
  966. package/node_modules/https-proxy-agent/package.json +0 -56
  967. package/node_modules/is-electron/LICENSE +0 -21
  968. package/node_modules/is-electron/README.md +0 -25
  969. package/node_modules/is-electron/index.d.ts +0 -2
  970. package/node_modules/is-electron/index.js +0 -21
  971. package/node_modules/is-electron/package.json +0 -34
  972. package/node_modules/is-stream/index.d.ts +0 -79
  973. package/node_modules/is-stream/index.js +0 -28
  974. package/node_modules/is-stream/package.json +0 -42
  975. package/node_modules/is-stream/readme.md +0 -60
  976. package/node_modules/media-typer/README.md +0 -93
  977. package/node_modules/media-typer/index.js +0 -143
  978. package/node_modules/media-typer/package.json +0 -33
  979. package/node_modules/mime-db/LICENSE +0 -23
  980. package/node_modules/mime-db/index.js +0 -12
  981. package/node_modules/mime-types/LICENSE +0 -23
  982. package/node_modules/proxy-from-env/LICENSE +0 -20
  983. package/node_modules/proxy-from-env/README.md +0 -163
  984. package/node_modules/proxy-from-env/index.cjs +0 -105
  985. package/node_modules/proxy-from-env/index.js +0 -103
  986. package/node_modules/proxy-from-env/package.json +0 -43
  987. package/node_modules/side-channel/.nycrc +0 -13
  988. package/node_modules/side-channel/tsconfig.json +0 -9
  989. package/npm-shrinkwrap.json +0 -1467
  990. /package/node_modules/@slack/{logger → bolt/node_modules/@slack/logger}/LICENSE +0 -0
  991. /package/node_modules/@slack/{logger → bolt/node_modules/@slack/logger}/dist/index.d.ts +0 -0
  992. /package/node_modules/@slack/{logger → bolt/node_modules/@slack/logger}/dist/index.d.ts.map +0 -0
  993. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/LICENSE +0 -0
  994. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/authorize-result.d.ts +0 -0
  995. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/authorize-result.d.ts.map +0 -0
  996. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/authorize-result.js +0 -0
  997. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/authorize-result.js.map +0 -0
  998. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/callback-options.d.ts +0 -0
  999. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/callback-options.d.ts.map +0 -0
  1000. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/callback-options.js +0 -0
  1001. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/callback-options.js.map +0 -0
  1002. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/default-render-html-for-install-path.d.ts +0 -0
  1003. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/default-render-html-for-install-path.d.ts.map +0 -0
  1004. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/default-render-html-for-install-path.js +0 -0
  1005. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/default-render-html-for-install-path.js.map +0 -0
  1006. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/index.d.ts +0 -0
  1007. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/index.d.ts.map +0 -0
  1008. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/index.js +0 -0
  1009. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/index.js.map +0 -0
  1010. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-path-options.d.ts +0 -0
  1011. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-path-options.d.ts.map +0 -0
  1012. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-path-options.js +0 -0
  1013. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-path-options.js.map +0 -0
  1014. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider-options.d.ts +0 -0
  1015. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider-options.d.ts.map +0 -0
  1016. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider-options.js +0 -0
  1017. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider-options.js.map +0 -0
  1018. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider.d.ts +0 -0
  1019. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-provider.d.ts.map +0 -0
  1020. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-url-options.d.ts +0 -0
  1021. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-url-options.d.ts.map +0 -0
  1022. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-url-options.js +0 -0
  1023. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/install-url-options.js.map +0 -0
  1024. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-query.d.ts +0 -0
  1025. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-query.d.ts.map +0 -0
  1026. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-query.js +0 -0
  1027. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-query.js.map +0 -0
  1028. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/file-store.d.ts +0 -0
  1029. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/file-store.d.ts.map +0 -0
  1030. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/index.d.ts +0 -0
  1031. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/index.d.ts.map +0 -0
  1032. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/index.js +0 -0
  1033. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/index.js.map +0 -0
  1034. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/interface.d.ts +0 -0
  1035. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/interface.d.ts.map +0 -0
  1036. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/interface.js +0 -0
  1037. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/interface.js.map +0 -0
  1038. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/memory-store.d.ts +0 -0
  1039. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation-stores/memory-store.d.ts.map +0 -0
  1040. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation.d.ts +0 -0
  1041. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation.d.ts.map +0 -0
  1042. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation.js +0 -0
  1043. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/installation.js.map +0 -0
  1044. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/logger.d.ts +0 -0
  1045. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/logger.d.ts.map +0 -0
  1046. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/logger.js +0 -0
  1047. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/logger.js.map +0 -0
  1048. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/clear-state-store.d.ts +0 -0
  1049. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/clear-state-store.d.ts.map +0 -0
  1050. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/file-state-store.d.ts +0 -0
  1051. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/file-state-store.d.ts.map +0 -0
  1052. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/index.d.ts +0 -0
  1053. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/index.d.ts.map +0 -0
  1054. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/index.js +0 -0
  1055. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/index.js.map +0 -0
  1056. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/interface.d.ts +0 -0
  1057. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/interface.d.ts.map +0 -0
  1058. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/interface.js +0 -0
  1059. /package/node_modules/@slack/{oauth → bolt/node_modules/@slack/oauth}/dist/state-stores/interface.js.map +0 -0
  1060. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/jsonwebtoken/LICENSE +0 -0
  1061. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/jsonwebtoken/README.md +0 -0
  1062. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/jsonwebtoken/index.d.ts +0 -0
  1063. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/jsonwebtoken/package.json +0 -0
  1064. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/ms/LICENSE +0 -0
  1065. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/ms/README.md +0 -0
  1066. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/ms/index.d.ts +0 -0
  1067. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/ms/package.json +0 -0
  1068. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/LICENSE +0 -0
  1069. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/README.md +0 -0
  1070. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/assert/strict.d.ts +0 -0
  1071. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/assert.d.ts +0 -0
  1072. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/async_hooks.d.ts +0 -0
  1073. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/buffer.buffer.d.ts +0 -0
  1074. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/buffer.d.ts +0 -0
  1075. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/child_process.d.ts +0 -0
  1076. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/cluster.d.ts +0 -0
  1077. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/console.d.ts +0 -0
  1078. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/constants.d.ts +0 -0
  1079. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/crypto.d.ts +0 -0
  1080. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/dgram.d.ts +0 -0
  1081. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/diagnostics_channel.d.ts +0 -0
  1082. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/dns/promises.d.ts +0 -0
  1083. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/dns.d.ts +0 -0
  1084. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/domain.d.ts +0 -0
  1085. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/events.d.ts +0 -0
  1086. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ffi.d.ts +0 -0
  1087. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/fs/promises.d.ts +0 -0
  1088. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/fs.d.ts +0 -0
  1089. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/globals.d.ts +0 -0
  1090. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/globals.typedarray.d.ts +0 -0
  1091. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/http.d.ts +0 -0
  1092. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/http2.d.ts +0 -0
  1093. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/https.d.ts +0 -0
  1094. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/index.d.ts +0 -0
  1095. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/inspector/promises.d.ts +0 -0
  1096. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/inspector.d.ts +0 -0
  1097. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/inspector.generated.d.ts +0 -0
  1098. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/module.d.ts +0 -0
  1099. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/net.d.ts +0 -0
  1100. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/os.d.ts +0 -0
  1101. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/package.json +0 -0
  1102. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/path/posix.d.ts +0 -0
  1103. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/path/win32.d.ts +0 -0
  1104. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/path.d.ts +0 -0
  1105. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/perf_hooks.d.ts +0 -0
  1106. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/process.d.ts +0 -0
  1107. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/punycode.d.ts +0 -0
  1108. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/querystring.d.ts +0 -0
  1109. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/quic.d.ts +0 -0
  1110. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/readline/promises.d.ts +0 -0
  1111. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/readline.d.ts +0 -0
  1112. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/repl.d.ts +0 -0
  1113. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/sea.d.ts +0 -0
  1114. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/sqlite.d.ts +0 -0
  1115. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/stream/consumers.d.ts +0 -0
  1116. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/stream/iter.d.ts +0 -0
  1117. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/stream/promises.d.ts +0 -0
  1118. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/stream/web.d.ts +0 -0
  1119. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/stream.d.ts +0 -0
  1120. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/string_decoder.d.ts +0 -0
  1121. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/test/reporters.d.ts +0 -0
  1122. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/test.d.ts +0 -0
  1123. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/timers/promises.d.ts +0 -0
  1124. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/timers.d.ts +0 -0
  1125. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/tls.d.ts +0 -0
  1126. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/trace_events.d.ts +0 -0
  1127. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.6/buffer.buffer.d.ts +0 -0
  1128. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.6/compatibility/float16array.d.ts +0 -0
  1129. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.6/globals.typedarray.d.ts +0 -0
  1130. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.6/index.d.ts +0 -0
  1131. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.7/compatibility/float16array.d.ts +0 -0
  1132. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/ts5.7/index.d.ts +0 -0
  1133. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/tty.d.ts +0 -0
  1134. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/url.d.ts +0 -0
  1135. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/util/types.d.ts +0 -0
  1136. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/util.d.ts +0 -0
  1137. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/v8.d.ts +0 -0
  1138. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/vm.d.ts +0 -0
  1139. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/wasi.d.ts +0 -0
  1140. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/abortcontroller.d.ts +0 -0
  1141. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/blob.d.ts +0 -0
  1142. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/console.d.ts +0 -0
  1143. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/crypto.d.ts +0 -0
  1144. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/domexception.d.ts +0 -0
  1145. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/encoding.d.ts +0 -0
  1146. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/events.d.ts +0 -0
  1147. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/fetch.d.ts +0 -0
  1148. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/importmeta.d.ts +0 -0
  1149. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/messaging.d.ts +0 -0
  1150. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/navigator.d.ts +0 -0
  1151. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/performance.d.ts +0 -0
  1152. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/storage.d.ts +0 -0
  1153. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/streams.d.ts +0 -0
  1154. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/timers.d.ts +0 -0
  1155. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/web-globals/url.d.ts +0 -0
  1156. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/worker_threads.d.ts +0 -0
  1157. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/zlib/iter.d.ts +0 -0
  1158. /package/node_modules/{@types → @slack/bolt/node_modules/@types}/node/zlib.d.ts +0 -0
  1159. /package/node_modules/{accepts → @slack/bolt/node_modules/accepts}/HISTORY.md +0 -0
  1160. /package/node_modules/{accepts → @slack/bolt/node_modules/accepts}/LICENSE +0 -0
  1161. /package/node_modules/{accepts → @slack/bolt/node_modules/accepts}/README.md +0 -0
  1162. /package/node_modules/{accepts → @slack/bolt/node_modules/accepts}/index.js +0 -0
  1163. /package/node_modules/{accepts → @slack/bolt/node_modules/accepts}/package.json +0 -0
  1164. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/LICENSE +0 -0
  1165. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/README.md +0 -0
  1166. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/index.js +0 -0
  1167. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/read.js +0 -0
  1168. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/types/json.js +0 -0
  1169. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/types/raw.js +0 -0
  1170. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/types/text.js +0 -0
  1171. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/types/urlencoded.js +0 -0
  1172. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/lib/utils.js +0 -0
  1173. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/LICENSE +0 -0
  1174. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/README.md +0 -0
  1175. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/dist/index.d.ts +0 -0
  1176. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/dist/index.js +0 -0
  1177. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/dist/index.js.map +0 -0
  1178. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/node_modules/content-type/package.json +0 -0
  1179. /package/node_modules/{body-parser → @slack/bolt/node_modules/body-parser}/package.json +0 -0
  1180. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/.npmignore +0 -0
  1181. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/.travis.yml +0 -0
  1182. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/LICENSE.txt +0 -0
  1183. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/README.md +0 -0
  1184. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/index.js +0 -0
  1185. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/package.json +0 -0
  1186. /package/node_modules/{buffer-equal-constant-time → @slack/bolt/node_modules/buffer-equal-constant-time}/test.js +0 -0
  1187. /package/node_modules/{bytes → @slack/bolt/node_modules/bytes}/History.md +0 -0
  1188. /package/node_modules/{bytes → @slack/bolt/node_modules/bytes}/LICENSE +0 -0
  1189. /package/node_modules/{bytes → @slack/bolt/node_modules/bytes}/Readme.md +0 -0
  1190. /package/node_modules/{bytes → @slack/bolt/node_modules/bytes}/index.js +0 -0
  1191. /package/node_modules/{bytes → @slack/bolt/node_modules/bytes}/package.json +0 -0
  1192. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/.eslintrc +0 -0
  1193. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/.github/FUNDING.yml +0 -0
  1194. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/.nycrc +0 -0
  1195. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/CHANGELOG.md +0 -0
  1196. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/LICENSE +0 -0
  1197. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/README.md +0 -0
  1198. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/actualApply.d.ts +0 -0
  1199. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/actualApply.js +0 -0
  1200. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/applyBind.d.ts +0 -0
  1201. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/applyBind.js +0 -0
  1202. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/functionApply.d.ts +0 -0
  1203. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/functionApply.js +0 -0
  1204. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/functionCall.d.ts +0 -0
  1205. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/functionCall.js +0 -0
  1206. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/index.d.ts +0 -0
  1207. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/index.js +0 -0
  1208. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/package.json +0 -0
  1209. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/reflectApply.d.ts +0 -0
  1210. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/reflectApply.js +0 -0
  1211. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/test/index.js +0 -0
  1212. /package/node_modules/{call-bind-apply-helpers → @slack/bolt/node_modules/call-bind-apply-helpers}/tsconfig.json +0 -0
  1213. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/.eslintrc +0 -0
  1214. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/.github/FUNDING.yml +0 -0
  1215. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/.nycrc +0 -0
  1216. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/CHANGELOG.md +0 -0
  1217. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/LICENSE +0 -0
  1218. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/README.md +0 -0
  1219. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/index.d.ts +0 -0
  1220. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/index.js +0 -0
  1221. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/package.json +0 -0
  1222. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/test/index.js +0 -0
  1223. /package/node_modules/{call-bound → @slack/bolt/node_modules/call-bound}/tsconfig.json +0 -0
  1224. /package/node_modules/{content-disposition → @slack/bolt/node_modules/content-disposition}/LICENSE +0 -0
  1225. /package/node_modules/{content-disposition → @slack/bolt/node_modules/content-disposition}/README.md +0 -0
  1226. /package/node_modules/{content-disposition → @slack/bolt/node_modules/content-disposition}/index.js +0 -0
  1227. /package/node_modules/{content-disposition → @slack/bolt/node_modules/content-disposition}/package.json +0 -0
  1228. /package/node_modules/{content-type → @slack/bolt/node_modules/content-type}/HISTORY.md +0 -0
  1229. /package/node_modules/{content-type → @slack/bolt/node_modules/content-type}/LICENSE +0 -0
  1230. /package/node_modules/{content-type → @slack/bolt/node_modules/content-type}/README.md +0 -0
  1231. /package/node_modules/{content-type → @slack/bolt/node_modules/content-type}/index.js +0 -0
  1232. /package/node_modules/{content-type → @slack/bolt/node_modules/content-type}/package.json +0 -0
  1233. /package/node_modules/{cookie → @slack/bolt/node_modules/cookie}/LICENSE +0 -0
  1234. /package/node_modules/{cookie → @slack/bolt/node_modules/cookie}/README.md +0 -0
  1235. /package/node_modules/{cookie → @slack/bolt/node_modules/cookie}/SECURITY.md +0 -0
  1236. /package/node_modules/{cookie → @slack/bolt/node_modules/cookie}/index.js +0 -0
  1237. /package/node_modules/{cookie → @slack/bolt/node_modules/cookie}/package.json +0 -0
  1238. /package/node_modules/{cookie-signature → @slack/bolt/node_modules/cookie-signature}/History.md +0 -0
  1239. /package/node_modules/{cookie-signature → @slack/bolt/node_modules/cookie-signature}/LICENSE +0 -0
  1240. /package/node_modules/{cookie-signature → @slack/bolt/node_modules/cookie-signature}/Readme.md +0 -0
  1241. /package/node_modules/{cookie-signature → @slack/bolt/node_modules/cookie-signature}/index.js +0 -0
  1242. /package/node_modules/{cookie-signature → @slack/bolt/node_modules/cookie-signature}/package.json +0 -0
  1243. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/LICENSE +0 -0
  1244. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/README.md +0 -0
  1245. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/package.json +0 -0
  1246. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/src/browser.js +0 -0
  1247. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/src/common.js +0 -0
  1248. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/src/index.js +0 -0
  1249. /package/node_modules/{debug → @slack/bolt/node_modules/debug}/src/node.js +0 -0
  1250. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/History.md +0 -0
  1251. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/LICENSE +0 -0
  1252. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/Readme.md +0 -0
  1253. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/index.js +0 -0
  1254. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/lib/browser/index.js +0 -0
  1255. /package/node_modules/{depd → @slack/bolt/node_modules/depd}/package.json +0 -0
  1256. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/.eslintrc +0 -0
  1257. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/.github/FUNDING.yml +0 -0
  1258. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/.nycrc +0 -0
  1259. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/CHANGELOG.md +0 -0
  1260. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/LICENSE +0 -0
  1261. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/README.md +0 -0
  1262. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/get.d.ts +0 -0
  1263. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/get.js +0 -0
  1264. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/package.json +0 -0
  1265. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/set.d.ts +0 -0
  1266. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/set.js +0 -0
  1267. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/test/get.js +0 -0
  1268. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/test/index.js +0 -0
  1269. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/test/set.js +0 -0
  1270. /package/node_modules/{dunder-proto → @slack/bolt/node_modules/dunder-proto}/tsconfig.json +0 -0
  1271. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/CODEOWNERS +0 -0
  1272. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/LICENSE +0 -0
  1273. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/README.md +0 -0
  1274. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/package.json +0 -0
  1275. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/src/ecdsa-sig-formatter.d.ts +0 -0
  1276. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/src/ecdsa-sig-formatter.js +0 -0
  1277. /package/node_modules/{ecdsa-sig-formatter → @slack/bolt/node_modules/ecdsa-sig-formatter}/src/param-bytes-for-alg.js +0 -0
  1278. /package/node_modules/{ee-first → @slack/bolt/node_modules/ee-first}/LICENSE +0 -0
  1279. /package/node_modules/{ee-first → @slack/bolt/node_modules/ee-first}/README.md +0 -0
  1280. /package/node_modules/{ee-first → @slack/bolt/node_modules/ee-first}/index.js +0 -0
  1281. /package/node_modules/{ee-first → @slack/bolt/node_modules/ee-first}/package.json +0 -0
  1282. /package/node_modules/{encodeurl → @slack/bolt/node_modules/encodeurl}/LICENSE +0 -0
  1283. /package/node_modules/{encodeurl → @slack/bolt/node_modules/encodeurl}/README.md +0 -0
  1284. /package/node_modules/{encodeurl → @slack/bolt/node_modules/encodeurl}/index.js +0 -0
  1285. /package/node_modules/{encodeurl → @slack/bolt/node_modules/encodeurl}/package.json +0 -0
  1286. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/.eslintrc +0 -0
  1287. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/.github/FUNDING.yml +0 -0
  1288. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/.nycrc +0 -0
  1289. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/CHANGELOG.md +0 -0
  1290. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/LICENSE +0 -0
  1291. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/README.md +0 -0
  1292. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/index.d.ts +0 -0
  1293. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/index.js +0 -0
  1294. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/package.json +0 -0
  1295. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/test/index.js +0 -0
  1296. /package/node_modules/{es-define-property → @slack/bolt/node_modules/es-define-property}/tsconfig.json +0 -0
  1297. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/.eslintrc +0 -0
  1298. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/.github/FUNDING.yml +0 -0
  1299. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/CHANGELOG.md +0 -0
  1300. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/LICENSE +0 -0
  1301. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/README.md +0 -0
  1302. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/eval.d.ts +0 -0
  1303. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/eval.js +0 -0
  1304. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/index.d.ts +0 -0
  1305. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/index.js +0 -0
  1306. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/package.json +0 -0
  1307. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/range.d.ts +0 -0
  1308. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/range.js +0 -0
  1309. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/ref.d.ts +0 -0
  1310. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/ref.js +0 -0
  1311. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/syntax.d.ts +0 -0
  1312. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/syntax.js +0 -0
  1313. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/test/index.js +0 -0
  1314. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/tsconfig.json +0 -0
  1315. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/type.d.ts +0 -0
  1316. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/type.js +0 -0
  1317. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/uri.d.ts +0 -0
  1318. /package/node_modules/{es-errors → @slack/bolt/node_modules/es-errors}/uri.js +0 -0
  1319. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/.eslintrc +0 -0
  1320. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/.github/FUNDING.yml +0 -0
  1321. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/CHANGELOG.md +0 -0
  1322. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/LICENSE +0 -0
  1323. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/README.md +0 -0
  1324. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/RequireObjectCoercible.d.ts +0 -0
  1325. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/RequireObjectCoercible.js +0 -0
  1326. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/ToObject.d.ts +0 -0
  1327. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/ToObject.js +0 -0
  1328. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/index.d.ts +0 -0
  1329. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/index.js +0 -0
  1330. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/isObject.d.ts +0 -0
  1331. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/isObject.js +0 -0
  1332. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/package.json +0 -0
  1333. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/test/index.js +0 -0
  1334. /package/node_modules/{es-object-atoms → @slack/bolt/node_modules/es-object-atoms}/tsconfig.json +0 -0
  1335. /package/node_modules/{escape-html → @slack/bolt/node_modules/escape-html}/LICENSE +0 -0
  1336. /package/node_modules/{escape-html → @slack/bolt/node_modules/escape-html}/Readme.md +0 -0
  1337. /package/node_modules/{escape-html → @slack/bolt/node_modules/escape-html}/index.js +0 -0
  1338. /package/node_modules/{escape-html → @slack/bolt/node_modules/escape-html}/package.json +0 -0
  1339. /package/node_modules/{etag → @slack/bolt/node_modules/etag}/HISTORY.md +0 -0
  1340. /package/node_modules/{etag → @slack/bolt/node_modules/etag}/LICENSE +0 -0
  1341. /package/node_modules/{etag → @slack/bolt/node_modules/etag}/README.md +0 -0
  1342. /package/node_modules/{etag → @slack/bolt/node_modules/etag}/index.js +0 -0
  1343. /package/node_modules/{etag → @slack/bolt/node_modules/etag}/package.json +0 -0
  1344. /package/node_modules/{express → @slack/bolt/node_modules/express}/LICENSE +0 -0
  1345. /package/node_modules/{express → @slack/bolt/node_modules/express}/Readme.md +0 -0
  1346. /package/node_modules/{express → @slack/bolt/node_modules/express}/index.js +0 -0
  1347. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/application.js +0 -0
  1348. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/express.js +0 -0
  1349. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/request.js +0 -0
  1350. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/response.js +0 -0
  1351. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/utils.js +0 -0
  1352. /package/node_modules/{express → @slack/bolt/node_modules/express}/lib/view.js +0 -0
  1353. /package/node_modules/{express → @slack/bolt/node_modules/express}/package.json +0 -0
  1354. /package/node_modules/{finalhandler → @slack/bolt/node_modules/finalhandler}/HISTORY.md +0 -0
  1355. /package/node_modules/{finalhandler → @slack/bolt/node_modules/finalhandler}/LICENSE +0 -0
  1356. /package/node_modules/{finalhandler → @slack/bolt/node_modules/finalhandler}/README.md +0 -0
  1357. /package/node_modules/{finalhandler → @slack/bolt/node_modules/finalhandler}/index.js +0 -0
  1358. /package/node_modules/{finalhandler → @slack/bolt/node_modules/finalhandler}/package.json +0 -0
  1359. /package/node_modules/{forwarded → @slack/bolt/node_modules/forwarded}/HISTORY.md +0 -0
  1360. /package/node_modules/{forwarded → @slack/bolt/node_modules/forwarded}/LICENSE +0 -0
  1361. /package/node_modules/{forwarded → @slack/bolt/node_modules/forwarded}/README.md +0 -0
  1362. /package/node_modules/{forwarded → @slack/bolt/node_modules/forwarded}/index.js +0 -0
  1363. /package/node_modules/{forwarded → @slack/bolt/node_modules/forwarded}/package.json +0 -0
  1364. /package/node_modules/{fresh → @slack/bolt/node_modules/fresh}/HISTORY.md +0 -0
  1365. /package/node_modules/{fresh → @slack/bolt/node_modules/fresh}/LICENSE +0 -0
  1366. /package/node_modules/{fresh → @slack/bolt/node_modules/fresh}/README.md +0 -0
  1367. /package/node_modules/{fresh → @slack/bolt/node_modules/fresh}/index.js +0 -0
  1368. /package/node_modules/{fresh → @slack/bolt/node_modules/fresh}/package.json +0 -0
  1369. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/.eslintrc +0 -0
  1370. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/.github/FUNDING.yml +0 -0
  1371. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/.github/SECURITY.md +0 -0
  1372. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/.nycrc +0 -0
  1373. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/CHANGELOG.md +0 -0
  1374. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/LICENSE +0 -0
  1375. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/README.md +0 -0
  1376. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/implementation.js +0 -0
  1377. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/index.js +0 -0
  1378. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/package.json +0 -0
  1379. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/test/.eslintrc +0 -0
  1380. /package/node_modules/{function-bind → @slack/bolt/node_modules/function-bind}/test/index.js +0 -0
  1381. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/.eslintrc +0 -0
  1382. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/.github/FUNDING.yml +0 -0
  1383. /package/node_modules/{es-set-tostringtag → @slack/bolt/node_modules/get-intrinsic}/.nycrc +0 -0
  1384. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/CHANGELOG.md +0 -0
  1385. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/LICENSE +0 -0
  1386. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/README.md +0 -0
  1387. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/index.js +0 -0
  1388. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/package.json +0 -0
  1389. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-intrinsic}/test/GetIntrinsic.js +0 -0
  1390. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/.eslintrc +0 -0
  1391. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/.github/FUNDING.yml +0 -0
  1392. /package/node_modules/{get-intrinsic → @slack/bolt/node_modules/get-proto}/.nycrc +0 -0
  1393. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/CHANGELOG.md +0 -0
  1394. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/LICENSE +0 -0
  1395. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/Object.getPrototypeOf.d.ts +0 -0
  1396. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/Object.getPrototypeOf.js +0 -0
  1397. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/README.md +0 -0
  1398. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/Reflect.getPrototypeOf.d.ts +0 -0
  1399. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/Reflect.getPrototypeOf.js +0 -0
  1400. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/index.d.ts +0 -0
  1401. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/index.js +0 -0
  1402. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/package.json +0 -0
  1403. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/test/index.js +0 -0
  1404. /package/node_modules/{get-proto → @slack/bolt/node_modules/get-proto}/tsconfig.json +0 -0
  1405. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/.eslintrc +0 -0
  1406. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/.github/FUNDING.yml +0 -0
  1407. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/CHANGELOG.md +0 -0
  1408. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/LICENSE +0 -0
  1409. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/README.md +0 -0
  1410. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/gOPD.d.ts +0 -0
  1411. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/gOPD.js +0 -0
  1412. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/index.d.ts +0 -0
  1413. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/index.js +0 -0
  1414. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/package.json +0 -0
  1415. /package/node_modules/{gopd → @slack/bolt/node_modules/gopd}/test/index.js +0 -0
  1416. /package/node_modules/{es-set-tostringtag → @slack/bolt/node_modules/gopd}/tsconfig.json +0 -0
  1417. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/.eslintrc +0 -0
  1418. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/.github/FUNDING.yml +0 -0
  1419. /package/node_modules/{get-proto → @slack/bolt/node_modules/has-symbols}/.nycrc +0 -0
  1420. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/CHANGELOG.md +0 -0
  1421. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/LICENSE +0 -0
  1422. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/README.md +0 -0
  1423. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/index.d.ts +0 -0
  1424. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/index.js +0 -0
  1425. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/package.json +0 -0
  1426. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/shams.d.ts +0 -0
  1427. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/shams.js +0 -0
  1428. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/test/index.js +0 -0
  1429. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/test/shams/core-js.js +0 -0
  1430. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/test/shams/get-own-property-symbols.js +0 -0
  1431. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/test/tests.js +0 -0
  1432. /package/node_modules/{has-symbols → @slack/bolt/node_modules/has-symbols}/tsconfig.json +0 -0
  1433. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/.github/FUNDING.yml +0 -0
  1434. /package/node_modules/{has-tostringtag → @slack/bolt/node_modules/hasown}/.nycrc +0 -0
  1435. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/CHANGELOG.md +0 -0
  1436. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/LICENSE +0 -0
  1437. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/README.md +0 -0
  1438. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/eslint.config.mjs +0 -0
  1439. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/index.d.ts +0 -0
  1440. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/index.js +0 -0
  1441. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/package.json +0 -0
  1442. /package/node_modules/{hasown → @slack/bolt/node_modules/hasown}/tsconfig.json +0 -0
  1443. /package/node_modules/{http-errors → @slack/bolt/node_modules/http-errors}/HISTORY.md +0 -0
  1444. /package/node_modules/{http-errors → @slack/bolt/node_modules/http-errors}/LICENSE +0 -0
  1445. /package/node_modules/{http-errors → @slack/bolt/node_modules/http-errors}/README.md +0 -0
  1446. /package/node_modules/{http-errors → @slack/bolt/node_modules/http-errors}/index.js +0 -0
  1447. /package/node_modules/{http-errors → @slack/bolt/node_modules/http-errors}/package.json +0 -0
  1448. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/LICENSE +0 -0
  1449. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/README.md +0 -0
  1450. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/dbcs-codec.js +0 -0
  1451. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/dbcs-data.js +0 -0
  1452. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/index.js +0 -0
  1453. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/internal.js +0 -0
  1454. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/sbcs-codec.js +0 -0
  1455. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/sbcs-data-generated.js +0 -0
  1456. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/sbcs-data.js +0 -0
  1457. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/big5-added.json +0 -0
  1458. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/cp936.json +0 -0
  1459. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/cp949.json +0 -0
  1460. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/cp950.json +0 -0
  1461. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/eucjp.json +0 -0
  1462. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/gb18030-ranges.json +0 -0
  1463. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/gbk-added.json +0 -0
  1464. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/tables/shiftjis.json +0 -0
  1465. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/utf16.js +0 -0
  1466. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/utf32.js +0 -0
  1467. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/encodings/utf7.js +0 -0
  1468. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/lib/bom-handling.js +0 -0
  1469. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/lib/helpers/merge-exports.js +0 -0
  1470. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/lib/index.d.ts +0 -0
  1471. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/lib/index.js +0 -0
  1472. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/lib/streams.js +0 -0
  1473. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/package.json +0 -0
  1474. /package/node_modules/{iconv-lite → @slack/bolt/node_modules/iconv-lite}/types/encodings.d.ts +0 -0
  1475. /package/node_modules/{inherits → @slack/bolt/node_modules/inherits}/LICENSE +0 -0
  1476. /package/node_modules/{inherits → @slack/bolt/node_modules/inherits}/README.md +0 -0
  1477. /package/node_modules/{inherits → @slack/bolt/node_modules/inherits}/inherits.js +0 -0
  1478. /package/node_modules/{inherits → @slack/bolt/node_modules/inherits}/inherits_browser.js +0 -0
  1479. /package/node_modules/{inherits → @slack/bolt/node_modules/inherits}/package.json +0 -0
  1480. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/LICENSE +0 -0
  1481. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/README.md +0 -0
  1482. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/ipaddr.min.js +0 -0
  1483. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/lib/ipaddr.js +0 -0
  1484. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/lib/ipaddr.js.d.ts +0 -0
  1485. /package/node_modules/{ipaddr.js → @slack/bolt/node_modules/ipaddr.js}/package.json +0 -0
  1486. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/LICENSE +0 -0
  1487. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/index.d.ts +0 -0
  1488. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/index.js +0 -0
  1489. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/index.mjs +0 -0
  1490. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/package.json +0 -0
  1491. /package/node_modules/{is-promise → @slack/bolt/node_modules/is-promise}/readme.md +0 -0
  1492. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/LICENSE +0 -0
  1493. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/README.md +0 -0
  1494. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/decode.js +0 -0
  1495. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/index.js +0 -0
  1496. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/JsonWebTokenError.js +0 -0
  1497. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/NotBeforeError.js +0 -0
  1498. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/TokenExpiredError.js +0 -0
  1499. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/asymmetricKeyDetailsSupported.js +0 -0
  1500. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/psSupported.js +0 -0
  1501. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/rsaPssKeyDetailsSupported.js +0 -0
  1502. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/timespan.js +0 -0
  1503. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/lib/validateAsymmetricKey.js +0 -0
  1504. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/package.json +0 -0
  1505. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/sign.js +0 -0
  1506. /package/node_modules/{jsonwebtoken → @slack/bolt/node_modules/jsonwebtoken}/verify.js +0 -0
  1507. /package/node_modules/{jwa → @slack/bolt/node_modules/jwa}/LICENSE +0 -0
  1508. /package/node_modules/{jwa → @slack/bolt/node_modules/jwa}/README.md +0 -0
  1509. /package/node_modules/{jwa → @slack/bolt/node_modules/jwa}/index.js +0 -0
  1510. /package/node_modules/{jwa → @slack/bolt/node_modules/jwa}/opslevel.yml +0 -0
  1511. /package/node_modules/{jwa → @slack/bolt/node_modules/jwa}/package.json +0 -0
  1512. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/CHANGELOG.md +0 -0
  1513. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/LICENSE +0 -0
  1514. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/index.js +0 -0
  1515. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/lib/data-stream.js +0 -0
  1516. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/lib/sign-stream.js +0 -0
  1517. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/lib/tostring.js +0 -0
  1518. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/lib/verify-stream.js +0 -0
  1519. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/opslevel.yml +0 -0
  1520. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/package.json +0 -0
  1521. /package/node_modules/{jws → @slack/bolt/node_modules/jws}/readme.md +0 -0
  1522. /package/node_modules/{lodash.includes → @slack/bolt/node_modules/lodash.includes}/LICENSE +0 -0
  1523. /package/node_modules/{lodash.includes → @slack/bolt/node_modules/lodash.includes}/README.md +0 -0
  1524. /package/node_modules/{lodash.includes → @slack/bolt/node_modules/lodash.includes}/index.js +0 -0
  1525. /package/node_modules/{lodash.includes → @slack/bolt/node_modules/lodash.includes}/package.json +0 -0
  1526. /package/node_modules/{lodash.isboolean → @slack/bolt/node_modules/lodash.isboolean}/LICENSE +0 -0
  1527. /package/node_modules/{lodash.isboolean → @slack/bolt/node_modules/lodash.isboolean}/README.md +0 -0
  1528. /package/node_modules/{lodash.isboolean → @slack/bolt/node_modules/lodash.isboolean}/index.js +0 -0
  1529. /package/node_modules/{lodash.isboolean → @slack/bolt/node_modules/lodash.isboolean}/package.json +0 -0
  1530. /package/node_modules/{lodash.isinteger → @slack/bolt/node_modules/lodash.isinteger}/LICENSE +0 -0
  1531. /package/node_modules/{lodash.isinteger → @slack/bolt/node_modules/lodash.isinteger}/README.md +0 -0
  1532. /package/node_modules/{lodash.isinteger → @slack/bolt/node_modules/lodash.isinteger}/index.js +0 -0
  1533. /package/node_modules/{lodash.isinteger → @slack/bolt/node_modules/lodash.isinteger}/package.json +0 -0
  1534. /package/node_modules/{lodash.isnumber → @slack/bolt/node_modules/lodash.isnumber}/LICENSE +0 -0
  1535. /package/node_modules/{lodash.isnumber → @slack/bolt/node_modules/lodash.isnumber}/README.md +0 -0
  1536. /package/node_modules/{lodash.isnumber → @slack/bolt/node_modules/lodash.isnumber}/index.js +0 -0
  1537. /package/node_modules/{lodash.isnumber → @slack/bolt/node_modules/lodash.isnumber}/package.json +0 -0
  1538. /package/node_modules/{lodash.isplainobject → @slack/bolt/node_modules/lodash.isplainobject}/LICENSE +0 -0
  1539. /package/node_modules/{lodash.isplainobject → @slack/bolt/node_modules/lodash.isplainobject}/README.md +0 -0
  1540. /package/node_modules/{lodash.isplainobject → @slack/bolt/node_modules/lodash.isplainobject}/index.js +0 -0
  1541. /package/node_modules/{lodash.isplainobject → @slack/bolt/node_modules/lodash.isplainobject}/package.json +0 -0
  1542. /package/node_modules/{lodash.isstring → @slack/bolt/node_modules/lodash.isstring}/LICENSE +0 -0
  1543. /package/node_modules/{lodash.isstring → @slack/bolt/node_modules/lodash.isstring}/README.md +0 -0
  1544. /package/node_modules/{lodash.isstring → @slack/bolt/node_modules/lodash.isstring}/index.js +0 -0
  1545. /package/node_modules/{lodash.isstring → @slack/bolt/node_modules/lodash.isstring}/package.json +0 -0
  1546. /package/node_modules/{lodash.once → @slack/bolt/node_modules/lodash.once}/LICENSE +0 -0
  1547. /package/node_modules/{lodash.once → @slack/bolt/node_modules/lodash.once}/README.md +0 -0
  1548. /package/node_modules/{lodash.once → @slack/bolt/node_modules/lodash.once}/index.js +0 -0
  1549. /package/node_modules/{lodash.once → @slack/bolt/node_modules/lodash.once}/package.json +0 -0
  1550. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/.eslintrc +0 -0
  1551. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/.github/FUNDING.yml +0 -0
  1552. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/CHANGELOG.md +0 -0
  1553. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/LICENSE +0 -0
  1554. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/README.md +0 -0
  1555. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/abs.d.ts +0 -0
  1556. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/abs.js +0 -0
  1557. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxArrayLength.d.ts +0 -0
  1558. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxArrayLength.js +0 -0
  1559. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxSafeInteger.d.ts +0 -0
  1560. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxSafeInteger.js +0 -0
  1561. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxValue.d.ts +0 -0
  1562. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/constants/maxValue.js +0 -0
  1563. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/floor.d.ts +0 -0
  1564. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/floor.js +0 -0
  1565. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isFinite.d.ts +0 -0
  1566. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isFinite.js +0 -0
  1567. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isInteger.d.ts +0 -0
  1568. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isInteger.js +0 -0
  1569. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isNaN.d.ts +0 -0
  1570. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isNaN.js +0 -0
  1571. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isNegativeZero.d.ts +0 -0
  1572. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/isNegativeZero.js +0 -0
  1573. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/max.d.ts +0 -0
  1574. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/max.js +0 -0
  1575. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/min.d.ts +0 -0
  1576. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/min.js +0 -0
  1577. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/mod.d.ts +0 -0
  1578. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/mod.js +0 -0
  1579. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/package.json +0 -0
  1580. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/pow.d.ts +0 -0
  1581. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/pow.js +0 -0
  1582. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/round.d.ts +0 -0
  1583. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/round.js +0 -0
  1584. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/sign.d.ts +0 -0
  1585. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/sign.js +0 -0
  1586. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/test/index.js +0 -0
  1587. /package/node_modules/{math-intrinsics → @slack/bolt/node_modules/math-intrinsics}/tsconfig.json +0 -0
  1588. /package/node_modules/{media-typer → @slack/bolt/node_modules/media-typer}/HISTORY.md +0 -0
  1589. /package/node_modules/{media-typer → @slack/bolt/node_modules/media-typer}/LICENSE +0 -0
  1590. /package/node_modules/{merge-descriptors → @slack/bolt/node_modules/merge-descriptors}/index.d.ts +0 -0
  1591. /package/node_modules/{merge-descriptors → @slack/bolt/node_modules/merge-descriptors}/index.js +0 -0
  1592. /package/node_modules/{merge-descriptors → @slack/bolt/node_modules/merge-descriptors}/license +0 -0
  1593. /package/node_modules/{merge-descriptors → @slack/bolt/node_modules/merge-descriptors}/package.json +0 -0
  1594. /package/node_modules/{merge-descriptors → @slack/bolt/node_modules/merge-descriptors}/readme.md +0 -0
  1595. /package/node_modules/{mime-db → @slack/bolt/node_modules/mime-db}/HISTORY.md +0 -0
  1596. /package/node_modules/{form-data → @slack/bolt}/node_modules/mime-db/LICENSE +0 -0
  1597. /package/node_modules/{mime-db → @slack/bolt/node_modules/mime-db}/README.md +0 -0
  1598. /package/node_modules/{mime-db → @slack/bolt/node_modules/mime-db}/db.json +0 -0
  1599. /package/node_modules/{form-data → @slack/bolt}/node_modules/mime-db/index.js +0 -0
  1600. /package/node_modules/{mime-db → @slack/bolt/node_modules/mime-db}/package.json +0 -0
  1601. /package/node_modules/{mime-types → @slack/bolt/node_modules/mime-types}/HISTORY.md +0 -0
  1602. /package/node_modules/{form-data → @slack/bolt}/node_modules/mime-types/LICENSE +0 -0
  1603. /package/node_modules/{mime-types → @slack/bolt/node_modules/mime-types}/README.md +0 -0
  1604. /package/node_modules/{mime-types → @slack/bolt/node_modules/mime-types}/index.js +0 -0
  1605. /package/node_modules/{mime-types → @slack/bolt/node_modules/mime-types}/mimeScore.js +0 -0
  1606. /package/node_modules/{mime-types → @slack/bolt/node_modules/mime-types}/package.json +0 -0
  1607. /package/node_modules/{ms → @slack/bolt/node_modules/ms}/index.js +0 -0
  1608. /package/node_modules/{ms → @slack/bolt/node_modules/ms}/license.md +0 -0
  1609. /package/node_modules/{ms → @slack/bolt/node_modules/ms}/package.json +0 -0
  1610. /package/node_modules/{ms → @slack/bolt/node_modules/ms}/readme.md +0 -0
  1611. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/HISTORY.md +0 -0
  1612. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/LICENSE +0 -0
  1613. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/README.md +0 -0
  1614. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/index.js +0 -0
  1615. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/lib/charset.js +0 -0
  1616. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/lib/encoding.js +0 -0
  1617. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/lib/language.js +0 -0
  1618. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/lib/mediaType.js +0 -0
  1619. /package/node_modules/{negotiator → @slack/bolt/node_modules/negotiator}/package.json +0 -0
  1620. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/.eslintrc +0 -0
  1621. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/.github/FUNDING.yml +0 -0
  1622. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/.nycrc +0 -0
  1623. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/CHANGELOG.md +0 -0
  1624. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/LICENSE +0 -0
  1625. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/example/all.js +0 -0
  1626. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/example/circular.js +0 -0
  1627. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/example/fn.js +0 -0
  1628. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/example/inspect.js +0 -0
  1629. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/index.js +0 -0
  1630. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/package-support.json +0 -0
  1631. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/package.json +0 -0
  1632. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/readme.markdown +0 -0
  1633. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/bigint.js +0 -0
  1634. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/browser/dom.js +0 -0
  1635. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/circular.js +0 -0
  1636. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/deep.js +0 -0
  1637. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/element.js +0 -0
  1638. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/err.js +0 -0
  1639. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/fakes.js +0 -0
  1640. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/fn.js +0 -0
  1641. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/global.js +0 -0
  1642. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/has.js +0 -0
  1643. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/holes.js +0 -0
  1644. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/indent-option.js +0 -0
  1645. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/inspect.js +0 -0
  1646. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/lowbyte.js +0 -0
  1647. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/number.js +0 -0
  1648. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/quoteStyle.js +0 -0
  1649. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/toStringTag.js +0 -0
  1650. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/undef.js +0 -0
  1651. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test/values.js +0 -0
  1652. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/test-core-js.js +0 -0
  1653. /package/node_modules/{object-inspect → @slack/bolt/node_modules/object-inspect}/util.inspect.js +0 -0
  1654. /package/node_modules/{on-finished → @slack/bolt/node_modules/on-finished}/HISTORY.md +0 -0
  1655. /package/node_modules/{on-finished → @slack/bolt/node_modules/on-finished}/LICENSE +0 -0
  1656. /package/node_modules/{on-finished → @slack/bolt/node_modules/on-finished}/README.md +0 -0
  1657. /package/node_modules/{on-finished → @slack/bolt/node_modules/on-finished}/index.js +0 -0
  1658. /package/node_modules/{on-finished → @slack/bolt/node_modules/on-finished}/package.json +0 -0
  1659. /package/node_modules/{once → @slack/bolt/node_modules/once}/LICENSE +0 -0
  1660. /package/node_modules/{once → @slack/bolt/node_modules/once}/README.md +0 -0
  1661. /package/node_modules/{once → @slack/bolt/node_modules/once}/once.js +0 -0
  1662. /package/node_modules/{once → @slack/bolt/node_modules/once}/package.json +0 -0
  1663. /package/node_modules/{parseurl → @slack/bolt/node_modules/parseurl}/HISTORY.md +0 -0
  1664. /package/node_modules/{parseurl → @slack/bolt/node_modules/parseurl}/LICENSE +0 -0
  1665. /package/node_modules/{parseurl → @slack/bolt/node_modules/parseurl}/README.md +0 -0
  1666. /package/node_modules/{parseurl → @slack/bolt/node_modules/parseurl}/index.js +0 -0
  1667. /package/node_modules/{parseurl → @slack/bolt/node_modules/parseurl}/package.json +0 -0
  1668. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/LICENSE +0 -0
  1669. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/Readme.md +0 -0
  1670. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/dist/index.d.ts +0 -0
  1671. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/dist/index.js +0 -0
  1672. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/dist/index.js.map +0 -0
  1673. /package/node_modules/{path-to-regexp → @slack/bolt/node_modules/path-to-regexp}/package.json +0 -0
  1674. /package/node_modules/{proxy-addr → @slack/bolt/node_modules/proxy-addr}/HISTORY.md +0 -0
  1675. /package/node_modules/{proxy-addr → @slack/bolt/node_modules/proxy-addr}/LICENSE +0 -0
  1676. /package/node_modules/{proxy-addr → @slack/bolt/node_modules/proxy-addr}/README.md +0 -0
  1677. /package/node_modules/{proxy-addr → @slack/bolt/node_modules/proxy-addr}/index.js +0 -0
  1678. /package/node_modules/{proxy-addr → @slack/bolt/node_modules/proxy-addr}/package.json +0 -0
  1679. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/.editorconfig +0 -0
  1680. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/.github/FUNDING.yml +0 -0
  1681. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/.github/SECURITY.md +0 -0
  1682. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/.github/THREAT_MODEL.md +0 -0
  1683. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/.nycrc +0 -0
  1684. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/CHANGELOG.md +0 -0
  1685. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/LICENSE.md +0 -0
  1686. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/README.md +0 -0
  1687. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/dist/qs.js +0 -0
  1688. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/eslint.config.mjs +0 -0
  1689. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/lib/formats.js +0 -0
  1690. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/lib/index.js +0 -0
  1691. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/lib/parse.js +0 -0
  1692. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/lib/stringify.js +0 -0
  1693. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/lib/utils.js +0 -0
  1694. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/package.json +0 -0
  1695. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/test/empty-keys-cases.js +0 -0
  1696. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/test/parse.js +0 -0
  1697. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/test/stringify.js +0 -0
  1698. /package/node_modules/{qs → @slack/bolt/node_modules/qs}/test/utils.js +0 -0
  1699. /package/node_modules/{range-parser → @slack/bolt/node_modules/range-parser}/HISTORY.md +0 -0
  1700. /package/node_modules/{range-parser → @slack/bolt/node_modules/range-parser}/LICENSE +0 -0
  1701. /package/node_modules/{range-parser → @slack/bolt/node_modules/range-parser}/README.md +0 -0
  1702. /package/node_modules/{range-parser → @slack/bolt/node_modules/range-parser}/index.js +0 -0
  1703. /package/node_modules/{range-parser → @slack/bolt/node_modules/range-parser}/package.json +0 -0
  1704. /package/node_modules/{raw-body → @slack/bolt/node_modules/raw-body}/LICENSE +0 -0
  1705. /package/node_modules/{raw-body → @slack/bolt/node_modules/raw-body}/README.md +0 -0
  1706. /package/node_modules/{raw-body → @slack/bolt/node_modules/raw-body}/index.d.ts +0 -0
  1707. /package/node_modules/{raw-body → @slack/bolt/node_modules/raw-body}/index.js +0 -0
  1708. /package/node_modules/{raw-body → @slack/bolt/node_modules/raw-body}/package.json +0 -0
  1709. /package/node_modules/{router → @slack/bolt/node_modules/router}/HISTORY.md +0 -0
  1710. /package/node_modules/{router → @slack/bolt/node_modules/router}/LICENSE +0 -0
  1711. /package/node_modules/{router → @slack/bolt/node_modules/router}/README.md +0 -0
  1712. /package/node_modules/{router → @slack/bolt/node_modules/router}/index.js +0 -0
  1713. /package/node_modules/{router → @slack/bolt/node_modules/router}/lib/layer.js +0 -0
  1714. /package/node_modules/{router → @slack/bolt/node_modules/router}/lib/route.js +0 -0
  1715. /package/node_modules/{router → @slack/bolt/node_modules/router}/package.json +0 -0
  1716. /package/node_modules/{safe-buffer → @slack/bolt/node_modules/safe-buffer}/LICENSE +0 -0
  1717. /package/node_modules/{safe-buffer → @slack/bolt/node_modules/safe-buffer}/README.md +0 -0
  1718. /package/node_modules/{safe-buffer → @slack/bolt/node_modules/safe-buffer}/index.d.ts +0 -0
  1719. /package/node_modules/{safe-buffer → @slack/bolt/node_modules/safe-buffer}/index.js +0 -0
  1720. /package/node_modules/{safe-buffer → @slack/bolt/node_modules/safe-buffer}/package.json +0 -0
  1721. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/LICENSE +0 -0
  1722. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/Porting-Buffer.md +0 -0
  1723. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/Readme.md +0 -0
  1724. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/dangerous.js +0 -0
  1725. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/package.json +0 -0
  1726. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/safer.js +0 -0
  1727. /package/node_modules/{safer-buffer → @slack/bolt/node_modules/safer-buffer}/tests.js +0 -0
  1728. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/LICENSE +0 -0
  1729. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/README.md +0 -0
  1730. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/bin/semver.js +0 -0
  1731. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/classes/comparator.js +0 -0
  1732. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/classes/index.js +0 -0
  1733. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/classes/range.js +0 -0
  1734. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/classes/semver.js +0 -0
  1735. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/clean.js +0 -0
  1736. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/cmp.js +0 -0
  1737. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/coerce.js +0 -0
  1738. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/compare-build.js +0 -0
  1739. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/compare-loose.js +0 -0
  1740. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/compare.js +0 -0
  1741. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/diff.js +0 -0
  1742. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/eq.js +0 -0
  1743. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/gt.js +0 -0
  1744. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/gte.js +0 -0
  1745. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/inc.js +0 -0
  1746. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/lt.js +0 -0
  1747. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/lte.js +0 -0
  1748. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/major.js +0 -0
  1749. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/minor.js +0 -0
  1750. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/neq.js +0 -0
  1751. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/parse.js +0 -0
  1752. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/patch.js +0 -0
  1753. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/prerelease.js +0 -0
  1754. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/rcompare.js +0 -0
  1755. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/rsort.js +0 -0
  1756. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/satisfies.js +0 -0
  1757. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/sort.js +0 -0
  1758. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/truncate.js +0 -0
  1759. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/functions/valid.js +0 -0
  1760. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/index.js +0 -0
  1761. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/constants.js +0 -0
  1762. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/debug.js +0 -0
  1763. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/identifiers.js +0 -0
  1764. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/lrucache.js +0 -0
  1765. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/parse-options.js +0 -0
  1766. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/internal/re.js +0 -0
  1767. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/package.json +0 -0
  1768. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/preload.js +0 -0
  1769. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/range.bnf +0 -0
  1770. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/gtr.js +0 -0
  1771. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/intersects.js +0 -0
  1772. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/ltr.js +0 -0
  1773. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/max-satisfying.js +0 -0
  1774. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/min-satisfying.js +0 -0
  1775. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/min-version.js +0 -0
  1776. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/outside.js +0 -0
  1777. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/simplify.js +0 -0
  1778. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/subset.js +0 -0
  1779. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/to-comparators.js +0 -0
  1780. /package/node_modules/{semver → @slack/bolt/node_modules/semver}/ranges/valid.js +0 -0
  1781. /package/node_modules/{send → @slack/bolt/node_modules/send}/LICENSE +0 -0
  1782. /package/node_modules/{send → @slack/bolt/node_modules/send}/README.md +0 -0
  1783. /package/node_modules/{send → @slack/bolt/node_modules/send}/index.js +0 -0
  1784. /package/node_modules/{send → @slack/bolt/node_modules/send}/package.json +0 -0
  1785. /package/node_modules/{serve-static → @slack/bolt/node_modules/serve-static}/LICENSE +0 -0
  1786. /package/node_modules/{serve-static → @slack/bolt/node_modules/serve-static}/README.md +0 -0
  1787. /package/node_modules/{serve-static → @slack/bolt/node_modules/serve-static}/index.js +0 -0
  1788. /package/node_modules/{serve-static → @slack/bolt/node_modules/serve-static}/package.json +0 -0
  1789. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/LICENSE +0 -0
  1790. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/README.md +0 -0
  1791. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/index.d.ts +0 -0
  1792. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/index.js +0 -0
  1793. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/package.json +0 -0
  1794. /package/node_modules/{setprototypeof → @slack/bolt/node_modules/setprototypeof}/test/index.js +0 -0
  1795. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/.editorconfig +0 -0
  1796. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/.eslintrc +0 -0
  1797. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/.github/FUNDING.yml +0 -0
  1798. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel}/.nycrc +0 -0
  1799. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/CHANGELOG.md +0 -0
  1800. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/LICENSE +0 -0
  1801. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/README.md +0 -0
  1802. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/index.d.ts +0 -0
  1803. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/index.js +0 -0
  1804. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/package.json +0 -0
  1805. /package/node_modules/{side-channel → @slack/bolt/node_modules/side-channel}/test/index.js +0 -0
  1806. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel}/tsconfig.json +0 -0
  1807. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/.editorconfig +0 -0
  1808. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/.eslintrc +0 -0
  1809. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/.github/FUNDING.yml +0 -0
  1810. /package/node_modules/{hasown → @slack/bolt/node_modules/side-channel-list}/.nycrc +0 -0
  1811. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/CHANGELOG.md +0 -0
  1812. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/LICENSE +0 -0
  1813. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/README.md +0 -0
  1814. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/index.d.ts +0 -0
  1815. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/index.js +0 -0
  1816. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/list.d.ts +0 -0
  1817. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/package.json +0 -0
  1818. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-list}/test/index.js +0 -0
  1819. /package/node_modules/{gopd → @slack/bolt/node_modules/side-channel-list}/tsconfig.json +0 -0
  1820. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/.editorconfig +0 -0
  1821. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/.eslintrc +0 -0
  1822. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/.github/FUNDING.yml +0 -0
  1823. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-map}/.nycrc +0 -0
  1824. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/CHANGELOG.md +0 -0
  1825. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/LICENSE +0 -0
  1826. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/README.md +0 -0
  1827. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/index.d.ts +0 -0
  1828. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/index.js +0 -0
  1829. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/package.json +0 -0
  1830. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-map}/test/index.js +0 -0
  1831. /package/node_modules/{side-channel-list → @slack/bolt/node_modules/side-channel-map}/tsconfig.json +0 -0
  1832. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/.editorconfig +0 -0
  1833. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/.eslintrc +0 -0
  1834. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/.github/FUNDING.yml +0 -0
  1835. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-weakmap}/.nycrc +0 -0
  1836. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/CHANGELOG.md +0 -0
  1837. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/LICENSE +0 -0
  1838. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/README.md +0 -0
  1839. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/index.d.ts +0 -0
  1840. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/index.js +0 -0
  1841. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/package.json +0 -0
  1842. /package/node_modules/{side-channel-weakmap → @slack/bolt/node_modules/side-channel-weakmap}/test/index.js +0 -0
  1843. /package/node_modules/{side-channel-map → @slack/bolt/node_modules/side-channel-weakmap}/tsconfig.json +0 -0
  1844. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/HISTORY.md +0 -0
  1845. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/LICENSE +0 -0
  1846. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/README.md +0 -0
  1847. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/codes.json +0 -0
  1848. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/index.js +0 -0
  1849. /package/node_modules/{statuses → @slack/bolt/node_modules/statuses}/package.json +0 -0
  1850. /package/node_modules/{toidentifier → @slack/bolt/node_modules/toidentifier}/HISTORY.md +0 -0
  1851. /package/node_modules/{toidentifier → @slack/bolt/node_modules/toidentifier}/LICENSE +0 -0
  1852. /package/node_modules/{toidentifier → @slack/bolt/node_modules/toidentifier}/README.md +0 -0
  1853. /package/node_modules/{toidentifier → @slack/bolt/node_modules/toidentifier}/index.js +0 -0
  1854. /package/node_modules/{toidentifier → @slack/bolt/node_modules/toidentifier}/package.json +0 -0
  1855. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/.travis.yml +0 -0
  1856. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/LICENSE +0 -0
  1857. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/README.md +0 -0
  1858. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/appveyor.yml +0 -0
  1859. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/lib/index.js +0 -0
  1860. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/package.json +0 -0
  1861. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/test/benchmark/index.js +0 -0
  1862. /package/node_modules/{tsscmp → @slack/bolt/node_modules/tsscmp}/test/unit/index.js +0 -0
  1863. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/HISTORY.md +0 -0
  1864. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/LICENSE +0 -0
  1865. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/README.md +0 -0
  1866. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/index.js +0 -0
  1867. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/LICENSE +0 -0
  1868. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/README.md +0 -0
  1869. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/dist/index.d.ts +0 -0
  1870. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/dist/index.js +0 -0
  1871. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/dist/index.js.map +0 -0
  1872. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/node_modules/content-type/package.json +0 -0
  1873. /package/node_modules/{type-is → @slack/bolt/node_modules/type-is}/package.json +0 -0
  1874. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/LICENSE +0 -0
  1875. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/README.md +0 -0
  1876. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/agent.d.ts +0 -0
  1877. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/api.d.ts +0 -0
  1878. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/balanced-pool.d.ts +0 -0
  1879. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/cache-interceptor.d.ts +0 -0
  1880. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/cache.d.ts +0 -0
  1881. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/client-stats.d.ts +0 -0
  1882. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/client.d.ts +0 -0
  1883. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/connector.d.ts +0 -0
  1884. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/content-type.d.ts +0 -0
  1885. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/cookies.d.ts +0 -0
  1886. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/diagnostics-channel.d.ts +0 -0
  1887. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/dispatcher.d.ts +0 -0
  1888. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/dispatcher1-wrapper.d.ts +0 -0
  1889. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/env-http-proxy-agent.d.ts +0 -0
  1890. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/errors.d.ts +0 -0
  1891. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/eventsource.d.ts +0 -0
  1892. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/fetch.d.ts +0 -0
  1893. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/formdata.d.ts +0 -0
  1894. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/global-dispatcher.d.ts +0 -0
  1895. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/global-origin.d.ts +0 -0
  1896. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/h2c-client.d.ts +0 -0
  1897. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/handlers.d.ts +0 -0
  1898. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/header.d.ts +0 -0
  1899. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/index.d.ts +0 -0
  1900. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/interceptors.d.ts +0 -0
  1901. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-agent.d.ts +0 -0
  1902. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-call-history.d.ts +0 -0
  1903. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-client.d.ts +0 -0
  1904. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-errors.d.ts +0 -0
  1905. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-interceptor.d.ts +0 -0
  1906. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/mock-pool.d.ts +0 -0
  1907. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/package.json +0 -0
  1908. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/patch.d.ts +0 -0
  1909. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/pool-stats.d.ts +0 -0
  1910. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/pool.d.ts +0 -0
  1911. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/proxy-agent.d.ts +0 -0
  1912. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/readable.d.ts +0 -0
  1913. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/retry-agent.d.ts +0 -0
  1914. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/retry-handler.d.ts +0 -0
  1915. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/round-robin-pool.d.ts +0 -0
  1916. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/snapshot-agent.d.ts +0 -0
  1917. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/socks5-proxy-agent.d.ts +0 -0
  1918. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/util.d.ts +0 -0
  1919. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/utility.d.ts +0 -0
  1920. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/webidl.d.ts +0 -0
  1921. /package/node_modules/{undici-types → @slack/bolt/node_modules/undici-types}/websocket.d.ts +0 -0
  1922. /package/node_modules/{unpipe → @slack/bolt/node_modules/unpipe}/HISTORY.md +0 -0
  1923. /package/node_modules/{unpipe → @slack/bolt/node_modules/unpipe}/LICENSE +0 -0
  1924. /package/node_modules/{unpipe → @slack/bolt/node_modules/unpipe}/README.md +0 -0
  1925. /package/node_modules/{unpipe → @slack/bolt/node_modules/unpipe}/index.js +0 -0
  1926. /package/node_modules/{unpipe → @slack/bolt/node_modules/unpipe}/package.json +0 -0
  1927. /package/node_modules/{vary → @slack/bolt/node_modules/vary}/HISTORY.md +0 -0
  1928. /package/node_modules/{vary → @slack/bolt/node_modules/vary}/LICENSE +0 -0
  1929. /package/node_modules/{vary → @slack/bolt/node_modules/vary}/README.md +0 -0
  1930. /package/node_modules/{vary → @slack/bolt/node_modules/vary}/index.js +0 -0
  1931. /package/node_modules/{vary → @slack/bolt/node_modules/vary}/package.json +0 -0
  1932. /package/node_modules/{wrappy → @slack/bolt/node_modules/wrappy}/LICENSE +0 -0
  1933. /package/node_modules/{wrappy → @slack/bolt/node_modules/wrappy}/README.md +0 -0
  1934. /package/node_modules/{wrappy → @slack/bolt/node_modules/wrappy}/package.json +0 -0
  1935. /package/node_modules/{wrappy → @slack/bolt/node_modules/wrappy}/wrappy.js +0 -0
  1936. /package/node_modules/{@types/retry → @slack/socket-mode/node_modules/@types/node}/LICENSE +0 -0
  1937. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/LICENSE +0 -0
  1938. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/README.md +0 -0
  1939. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.esm.js +0 -0
  1940. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js +0 -0
  1941. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js.map +0 -0
  1942. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.umd.js +0 -0
  1943. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js +0 -0
  1944. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js.map +0 -0
  1945. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/index.d.ts +0 -0
  1946. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/index.js +0 -0
  1947. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/index.mjs +0 -0
  1948. /package/node_modules/{eventemitter3 → @slack/socket-mode/node_modules/eventemitter3}/package.json +0 -0
  1949. /package/node_modules/{@types/ws → @slack/web-api/node_modules/@types/node}/LICENSE +0 -0
  1950. /package/node_modules/{p-queue → @slack/web-api}/node_modules/eventemitter3/LICENSE +0 -0
  1951. /package/node_modules/{p-queue → @slack/web-api}/node_modules/eventemitter3/index.js +0 -0
  1952. /package/node_modules/{p-finally → @slack/web-api/node_modules/p-finally}/index.js +0 -0
  1953. /package/node_modules/{p-finally → @slack/web-api/node_modules/p-finally}/license +0 -0
  1954. /package/node_modules/{p-finally → @slack/web-api/node_modules/p-finally}/package.json +0 -0
  1955. /package/node_modules/{p-finally → @slack/web-api/node_modules/p-finally}/readme.md +0 -0
  1956. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/index.d.ts +0 -0
  1957. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/index.js +0 -0
  1958. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/lower-bound.d.ts +0 -0
  1959. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/lower-bound.js +0 -0
  1960. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/options.d.ts +0 -0
  1961. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/options.js +0 -0
  1962. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/priority-queue.d.ts +0 -0
  1963. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/priority-queue.js +0 -0
  1964. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/queue.d.ts +0 -0
  1965. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/dist/queue.js +0 -0
  1966. /package/node_modules/{is-stream → @slack/web-api/node_modules/p-queue}/license +0 -0
  1967. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/README.md +0 -0
  1968. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/index.d.ts +0 -0
  1969. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/package.json +0 -0
  1970. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/umd/eventemitter3.js +0 -0
  1971. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/umd/eventemitter3.min.js +0 -0
  1972. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/node_modules/eventemitter3/umd/eventemitter3.min.js.map +0 -0
  1973. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/package.json +0 -0
  1974. /package/node_modules/{p-queue → @slack/web-api/node_modules/p-queue}/readme.md +0 -0
  1975. /package/node_modules/{p-retry → @slack/web-api/node_modules/p-retry}/index.d.ts +0 -0
  1976. /package/node_modules/{p-retry → @slack/web-api/node_modules/p-retry}/index.js +0 -0
  1977. /package/node_modules/{p-retry → @slack/web-api/node_modules/p-retry}/license +0 -0
  1978. /package/node_modules/{p-retry → @slack/web-api/node_modules/p-retry}/package.json +0 -0
  1979. /package/node_modules/{p-retry → @slack/web-api/node_modules/p-retry}/readme.md +0 -0
  1980. /package/node_modules/{p-timeout → @slack/web-api/node_modules/p-timeout}/index.d.ts +0 -0
  1981. /package/node_modules/{p-timeout → @slack/web-api/node_modules/p-timeout}/index.js +0 -0
  1982. /package/node_modules/{p-timeout → @slack/web-api/node_modules/p-timeout}/license +0 -0
  1983. /package/node_modules/{p-timeout → @slack/web-api/node_modules/p-timeout}/package.json +0 -0
  1984. /package/node_modules/{p-timeout → @slack/web-api/node_modules/p-timeout}/readme.md +0 -0
  1985. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/License +0 -0
  1986. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/README.md +0 -0
  1987. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/example/dns.js +0 -0
  1988. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/example/stop.js +0 -0
  1989. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/index.js +0 -0
  1990. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/lib/retry.js +0 -0
  1991. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/lib/retry_operation.js +0 -0
  1992. /package/node_modules/{retry → @slack/web-api/node_modules/retry}/package.json +0 -0
  1993. /package/node_modules/{p-queue → get-east-asian-width}/license +0 -0
@@ -1,4219 +0,0 @@
1
- import { t as resolveSlackReplyToMode } from "./account-reply-mode-DrUXogvO.js";
2
- import { i as parseSlackTarget } from "./target-parsing-N6lHogYZ.js";
3
- import "./targets-KmjP2E8s.js";
4
- import { C as hasSlackNativeDataBlock, F as SLACK_TEXT_LIMIT, N as SLACK_EDIT_TEXT_LIMIT, O as normalizeSlackOutboundText, Y as escapeSlackMrkdwn, _ as resolveSlackReplyRenderPlan, c as normalizeSlackAllowOwnerEntry, k as buildSlackBlocksFallbackText, s as normalizeAllowListLower, u as resolveSlackAllowListMatch, z as truncateSlackText } from "./group-policy-CdnQzQBI.js";
5
- import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-C3ffk6oN.js";
6
- import { r as formatSlackError } from "./probe-CVRuArHA.js";
7
- import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-3_X-21wW.js";
8
- import { S as buildSlackEditTextPayload, _ as resolveSlackThreadHistory, b as resolveSlackBlocksText, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, v as resolveSlackThreadStarter, x as formatSlackFileReference, y as chooseSlackPrimaryText } from "./actions-D51foiwR.js";
9
- import { c as hasSlackThreadParticipationWithPersistence, l as recordSlackThreadParticipation, r as sendMessageSlack, u as buildSlackNativeDataDeliveryPlan } from "./send-BZ1tPv7-.js";
10
- import { C as stripSlackMentionsForCommandDetection, _ as readSessionUpdatedAt, b as resolveStorePath, d as resolveSlackCommandIngress, f as resolveSlackEffectiveAllowFrom, g as resolveSlackChatType, h as normalizeSlackChannelType, l as resolveConversationLabel$1, m as parseSlackAssistantThreadMetadata, o as authorizeSlackDirectMessage, p as buildSlackAssistantThreadMetadata, r as resolveSlackRoomContextHints, u as authorizeSlackBotRoomMessage, v as resolveChannelContextVisibilityMode, x as updateLastRoute, y as resolveChannelResetConfig } from "./provider-htuIJGFD.js";
11
- import { n as resolveSlackChannelConfig } from "./policy-C31RYSuT.js";
12
- import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, s as emitSlackMessageSentHooks, t as createSlackReplyDeliveryPlan } from "./replies-Cgr2Gli4.js";
13
- import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
14
- import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
15
- import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftCompositor, createChannelProgressReceiptTracker, createDraftStreamLoop, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, formatPlanChecklistLines, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
16
- import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
17
- import { danger, logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
18
- import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
19
- import { createHash } from "node:crypto";
20
- import fs from "node:fs/promises";
21
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
22
- import { asDateTimestampMs, asFiniteNumberInRange, parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
23
- import { buildTtsSupplementMediaPayload, getReplyPayloadTtsSupplement, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
24
- import { filterSupplementalContextItems, resolvePinnedMainDmOwnerFromAllowlist, shouldIncludeSupplementalContext } from "openclaw/plugin-sdk/security-runtime";
25
- import { ensureConfiguredBindingRouteReady, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-runtime";
26
- import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
27
- import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
28
- import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
29
- import { enqueueSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
30
- import { resolveChannelImplicitMentions } from "openclaw/plugin-sdk/channel-ingress-runtime";
31
- import { buildChannelInboundEventContext, buildMentionRegexes, classifyChannelInboundEvent, dispatchChannelInboundTurn, formatInboundEnvelope, hasVisibleInboundReplyDispatch, implicitMentionKindWhen, logInboundDrop, matchesMentionWithExplicit, recordDroppedChannelInboundHistory, resolveEnvelopeFormatOptions, resolveInboundMentionDecision, resolveInboundSupplementalSenderAllowed, resolveUnmentionedGroupInboundPolicy, toInboundMediaFacts } from "openclaw/plugin-sdk/channel-inbound";
32
- import { DEFAULT_TIMING, createStatusReactionController, logAckFailure, logTypingFailure, resolveAckReaction, shouldAckReaction } from "openclaw/plugin-sdk/channel-feedback";
33
- import { hasControlCommand } from "openclaw/plugin-sdk/command-detection";
34
- import { isAbortRequestText } from "openclaw/plugin-sdk/command-primitives-runtime";
35
- import { shouldHandleTextCommands } from "openclaw/plugin-sdk/command-surface";
36
- import { mimeTypeFromFilePath } from "openclaw/plugin-sdk/media-mime";
37
- import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
38
- //#region extensions/slack/src/draft-stream.ts
39
- const DEFAULT_THROTTLE_MS = 1e3;
40
- function createSlackDraftStream(params) {
41
- const maxChars = Math.min(params.maxChars ?? 8e3, SLACK_TEXT_LIMIT);
42
- const throttleMs = Math.max(250, params.throttleMs ?? DEFAULT_THROTTLE_MS);
43
- const send = params.send ?? sendMessageSlack;
44
- const edit = params.edit ?? editSlackMessage;
45
- const remove = params.remove ?? deleteSlackMessage;
46
- let streamMessageId;
47
- let streamChannelId;
48
- let lastSentKey = "";
49
- let pendingUpdate;
50
- let stopped = false;
51
- const normalizeUpdate = (update) => typeof update === "string" ? { text: update } : update;
52
- const sendOrEditStreamMessage = async (text) => {
53
- if (stopped) return;
54
- const trimmed = text.trimEnd();
55
- if (!trimmed) return;
56
- if (trimmed.length > maxChars) {
57
- stopped = true;
58
- params.warn?.(`slack stream preview stopped (text length ${trimmed.length} > ${maxChars})`);
59
- return;
60
- }
61
- const update = normalizeUpdate(pendingUpdate ?? text);
62
- const blocks = update.text === text ? update.blocks : void 0;
63
- const sentKey = `${trimmed}\n${blocks ? JSON.stringify(blocks) : ""}`;
64
- if (sentKey === lastSentKey) return;
65
- lastSentKey = sentKey;
66
- try {
67
- if (streamChannelId && streamMessageId) {
68
- await edit(streamChannelId, streamMessageId, trimmed, {
69
- cfg: params.cfg,
70
- token: params.token,
71
- accountId: params.accountId,
72
- ...params.eventScope ? { client: params.eventScope.client } : {},
73
- ...blocks ? { blocks } : {}
74
- });
75
- return;
76
- }
77
- const sent = await send(params.target, trimmed, {
78
- cfg: params.cfg,
79
- token: params.token,
80
- accountId: params.accountId,
81
- threadTs: params.resolveThreadTs?.(),
82
- identity: params.identity,
83
- ...params.eventScope ? {
84
- client: params.eventScope.client,
85
- enterpriseEventScope: params.eventScope
86
- } : {},
87
- ...params.metadata ? { metadata: params.metadata } : {},
88
- ...blocks ? { blocks } : {}
89
- });
90
- streamChannelId = sent.channelId || streamChannelId;
91
- streamMessageId = sent.messageId || streamMessageId;
92
- if (!streamChannelId || !streamMessageId) {
93
- stopped = true;
94
- params.warn?.("slack stream preview stopped (missing identifiers from sendMessage)");
95
- return;
96
- }
97
- params.onMessageSent?.();
98
- } catch (err) {
99
- stopped = true;
100
- params.warn?.(`slack stream preview failed: ${formatSlackError(err)}`);
101
- }
102
- };
103
- const loop = createDraftStreamLoop({
104
- throttleMs,
105
- isStopped: () => stopped,
106
- sendOrEditStreamMessage
107
- });
108
- const stop = () => {
109
- stopped = true;
110
- loop.stop();
111
- };
112
- const discardPending = async () => {
113
- stop();
114
- await loop.waitForInFlight();
115
- };
116
- const clear = async () => {
117
- await discardPending();
118
- const channelId = streamChannelId;
119
- const messageId = streamMessageId;
120
- streamChannelId = void 0;
121
- streamMessageId = void 0;
122
- lastSentKey = "";
123
- pendingUpdate = void 0;
124
- if (!channelId || !messageId) return;
125
- try {
126
- await remove(channelId, messageId, {
127
- token: params.token,
128
- accountId: params.accountId,
129
- ...params.eventScope ? { client: params.eventScope.client } : {}
130
- });
131
- } catch (err) {
132
- params.warn?.(`slack stream preview cleanup failed: ${formatSlackError(err)}`);
133
- }
134
- };
135
- const forceNewMessage = () => {
136
- streamMessageId = void 0;
137
- streamChannelId = void 0;
138
- lastSentKey = "";
139
- pendingUpdate = void 0;
140
- loop.resetPending();
141
- };
142
- params.log?.(`slack stream preview ready (maxChars=${maxChars}, throttleMs=${throttleMs})`);
143
- return {
144
- update: (update) => {
145
- const normalized = normalizeUpdate(update);
146
- pendingUpdate = update;
147
- loop.update(normalized.text);
148
- },
149
- flush: loop.flush,
150
- clear,
151
- discardPending,
152
- seal: discardPending,
153
- stop,
154
- forceNewMessage,
155
- messageId: () => streamMessageId,
156
- channelId: () => streamChannelId
157
- };
158
- }
159
- //#endregion
160
- //#region extensions/slack/src/progress-blocks.ts
161
- const SLACK_PROGRESS_FIELD_MAX = 1800;
162
- const DEFAULT_SLACK_PROGRESS_DETAIL_MAX_CHARS = 120;
163
- const DEFAULT_SLACK_PROGRESS_TASK_DETAIL_MAX_CHARS = 48;
164
- const SLACK_PROGRESS_CHUNK_TEXT_MAX = 256;
165
- const SLACK_PROGRESS_TASK_TITLE_MAX = 120;
166
- const SLACK_PROGRESS_PLAN_FALLBACK_TITLE = "Thinking";
167
- function field(text) {
168
- return {
169
- type: "mrkdwn",
170
- text: truncateSlackText(text, SLACK_PROGRESS_FIELD_MAX)
171
- };
172
- }
173
- function resolveMaxLineChars(value, fallback) {
174
- return value && value > 0 ? Math.floor(value) : fallback;
175
- }
176
- function compactDetail(value, maxChars) {
177
- const normalized = value.replace(/\s+/g, " ").trim();
178
- const chars = Array.from(normalized);
179
- if (chars.length <= maxChars) return normalized;
180
- if (maxChars <= 1) return "…";
181
- const keepStart = Math.max(1, Math.ceil((maxChars - 1) * .45));
182
- const keepEnd = Math.max(1, maxChars - keepStart - 1);
183
- return `${chars.slice(0, keepStart).join("").trimEnd()}…${chars.slice(-keepEnd).join("").trimStart()}`;
184
- }
185
- function compactTitle(value) {
186
- return truncateSlackText(value.replace(/\s+/g, " ").trim(), SLACK_PROGRESS_TASK_TITLE_MAX);
187
- }
188
- function compactChunkText(value) {
189
- return truncateSlackText(value.replace(/\s+/g, " ").trim(), SLACK_PROGRESS_CHUNK_TEXT_MAX);
190
- }
191
- function lineDetailParts(line) {
192
- return [line.detail, line.status && line.status !== "completed" && !line.detail?.includes(line.status) ? line.status : void 0].map((part) => part?.trim()).filter((part) => Boolean(part));
193
- }
194
- function legacyLineTitle(line) {
195
- return `${line.icon ?? "•"} *${escapeSlackMrkdwn(line.label)}*`;
196
- }
197
- function legacyLineDetail(line, maxChars) {
198
- const detail = lineDetailParts(line).join(" · ");
199
- return detail ? escapeSlackMrkdwn(compactDetail(detail, maxChars)) : "—";
200
- }
201
- function lineTaskTitle(line, maxLineChars) {
202
- const label = line.label.replace(/\s+/g, " ").trim() || line.toolName || line.kind || "Update";
203
- const detail = lineDetailParts(line).join(" · ") || line.status?.trim();
204
- const fallback = line.text.replace(/\s+/g, " ").trim();
205
- if (detail) return compactTitle(`${label} — ${compactDetail(detail, maxLineChars)}`);
206
- if (fallback && fallback !== label) return compactTitle(fallback);
207
- return compactTitle(label);
208
- }
209
- function lineTaskStatus(line) {
210
- const normalized = line.status?.replace(/\s+/g, " ").trim().toLowerCase();
211
- if (!normalized) return "in_progress";
212
- if (normalized === "complete" || normalized === "completed" || normalized === "done" || normalized === "ok" || normalized === "success" || normalized === "succeeded" || normalized === "successful" || normalized === "exit 0") return "complete";
213
- if (normalized === "error" || normalized === "failed" || normalized === "failure" || normalized.startsWith("exit ")) return normalized === "exit 0" ? "complete" : "error";
214
- return "in_progress";
215
- }
216
- function slugTaskIdPart(value) {
217
- return value?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "task";
218
- }
219
- function stableTaskIdPart(value, slugValue = value) {
220
- const suffix = createHash("sha256").update(value).digest("hex").slice(0, 8);
221
- return `${slugTaskIdPart(slugValue).slice(0, 48)}_${suffix}`;
222
- }
223
- function resolveLineTaskIdentity(line) {
224
- if (line.id?.trim()) return {
225
- id: stableTaskIdPart(line.id),
226
- contentDerived: false
227
- };
228
- return {
229
- id: stableTaskIdPart([
230
- line.kind,
231
- line.toolName,
232
- line.label,
233
- line.text
234
- ].join("\0"), line.toolName ?? line.kind ?? line.label),
235
- contentDerived: true
236
- };
237
- }
238
- function buildPlanTasks(params) {
239
- if (params.plan) return params.plan.slice(-50).map((entry, index) => ({
240
- id: `plan_step_${index + 1}`,
241
- title: compactTitle(entry.step),
242
- status: entry.status === "completed" ? "complete" : entry.status
243
- }));
244
- const maxLineChars = resolveMaxLineChars(params.maxLineChars, DEFAULT_SLACK_PROGRESS_TASK_DETAIL_MAX_CHARS);
245
- const lines = params.lines.slice(-50);
246
- const identities = lines.map(resolveLineTaskIdentity);
247
- const contentIdOccurrences = /* @__PURE__ */ new Map();
248
- return lines.map((line, index) => {
249
- const identity = identities[index];
250
- let id = identity.id;
251
- if (identity.contentDerived) {
252
- const occurrence = (contentIdOccurrences.get(id) ?? 0) + 1;
253
- contentIdOccurrences.set(id, occurrence);
254
- id = `${id}_${occurrence}`;
255
- }
256
- return {
257
- id,
258
- title: lineTaskTitle(line, maxLineChars),
259
- status: lineTaskStatus(line)
260
- };
261
- });
262
- }
263
- function resolvePlanTitle(params) {
264
- return compactChunkText(params.title?.trim() || params.label?.trim() || params.tasks.at(-1)?.title || SLACK_PROGRESS_PLAN_FALLBACK_TITLE);
265
- }
266
- function buildSlackProgressStreamChunks(params) {
267
- const tasks = buildPlanTasks({
268
- lines: params.lines,
269
- plan: params.plan,
270
- maxLineChars: params.maxLineChars
271
- });
272
- if (tasks.length === 0) {
273
- const title = params.title?.trim() || params.label?.trim();
274
- return title ? [{
275
- type: "plan_update",
276
- title: compactChunkText(title)
277
- }] : void 0;
278
- }
279
- return [{
280
- type: "plan_update",
281
- title: resolvePlanTitle({
282
- label: params.label,
283
- title: params.title,
284
- tasks
285
- })
286
- }, ...tasks.map((task) => ({
287
- type: "task_update",
288
- id: task.id,
289
- title: task.title,
290
- status: task.status === "in_progress" ? params.finalInProgressStatus ?? (params.completeInProgress ? "complete" : task.status) : task.status
291
- }))];
292
- }
293
- function buildSlackProgressDraftBlocks(params) {
294
- const label = params.label?.trim() || params.title?.trim();
295
- const maxLineChars = resolveMaxLineChars(params.maxLineChars, DEFAULT_SLACK_PROGRESS_DETAIL_MAX_CHARS);
296
- const planLines = formatPlanChecklistLines(params.plan ?? [], {
297
- maxLines: 50,
298
- maxLineChars
299
- });
300
- const narration = params.narration?.replace(/\s+/g, " ").trim();
301
- const headBlocks = [
302
- ...label ? [{
303
- type: "section",
304
- text: field(`*${escapeSlackMrkdwn(label)}*`)
305
- }] : [],
306
- ...narration ? [{
307
- type: "section",
308
- text: field(`_${escapeSlackMrkdwn(narration)}_`)
309
- }] : [],
310
- ...planLines.length > 0 ? [{
311
- type: "section",
312
- text: field(planLines.map((line) => escapeSlackMrkdwn(line)).join("\n"))
313
- }] : []
314
- ].slice(0, 50);
315
- const lineBudget = Math.max(0, 50 - headBlocks.length);
316
- const renderedBlocks = [...headBlocks, ...params.lines.slice(-lineBudget).map((line) => ({
317
- type: "section",
318
- fields: [field(legacyLineTitle(line)), field(legacyLineDetail(line, maxLineChars))]
319
- }))];
320
- return renderedBlocks.length ? renderedBlocks : void 0;
321
- }
322
- /**
323
- * Slack native streams key task rows by persistent id with no removal chunk.
324
- * When the task source switches representation (tool lines <-> typed plan) or
325
- * a snapshot drops ids, previously emitted non-terminal rows must receive a
326
- * final update or they linger in_progress forever.
327
- */
328
- function reconcileSlackNativeTaskChunks(params) {
329
- const nextTasks = /* @__PURE__ */ new Map();
330
- for (const chunk of params.chunks ?? []) if (chunk.type === "task_update") nextTasks.set(chunk.id, {
331
- title: chunk.title,
332
- status: chunk.status
333
- });
334
- const terminalized = [...params.previousTasks].filter(([id, task]) => !nextTasks.has(id) && task.status !== "complete" && task.status !== "error").map(([id, task]) => {
335
- const entry = {
336
- title: task.title,
337
- status: "complete"
338
- };
339
- nextTasks.set(id, entry);
340
- return {
341
- type: "task_update",
342
- id,
343
- title: task.title,
344
- status: "complete"
345
- };
346
- });
347
- for (const [id, task] of params.previousTasks) if (!nextTasks.has(id)) nextTasks.set(id, task);
348
- return {
349
- chunks: params.chunks?.length ? [...params.chunks, ...terminalized] : terminalized.length ? terminalized : params.chunks,
350
- tasks: nextTasks
351
- };
352
- }
353
- function buildSlackProgressStreamStartChunks(params) {
354
- return buildSlackProgressStreamChunks(params);
355
- }
356
- function buildSlackProgressStreamUpdateChunks(params) {
357
- return buildSlackProgressStreamChunks(params);
358
- }
359
- function buildSlackProgressStreamCompletionChunks(params) {
360
- return buildSlackProgressStreamChunks({
361
- ...params,
362
- completeInProgress: true
363
- });
364
- }
365
- //#endregion
366
- //#region extensions/slack/src/stream-mode.ts
367
- function resolveSlackStreamingConfig(params) {
368
- const mode = resolveSlackStreamingMode(params);
369
- return {
370
- mode,
371
- nativeStreaming: resolveSlackNativeStreaming(params),
372
- draftMode: mapStreamingModeToSlackLegacyDraftStreamMode(mode)
373
- };
374
- }
375
- function applyAppendOnlyStreamUpdate(params) {
376
- const incoming = params.incoming.trimEnd();
377
- if (!incoming) return {
378
- rendered: params.rendered,
379
- source: params.source,
380
- changed: false
381
- };
382
- if (!params.rendered) return {
383
- rendered: incoming,
384
- source: incoming,
385
- changed: true
386
- };
387
- if (incoming === params.source) return {
388
- rendered: params.rendered,
389
- source: params.source,
390
- changed: false
391
- };
392
- if (incoming.startsWith(params.source) || incoming.startsWith(params.rendered)) return {
393
- rendered: incoming,
394
- source: incoming,
395
- changed: incoming !== params.rendered
396
- };
397
- if (params.source.startsWith(incoming)) return {
398
- rendered: params.rendered,
399
- source: params.source,
400
- changed: false
401
- };
402
- const separator = params.rendered.endsWith("\n") ? "" : "\n";
403
- return {
404
- rendered: `${params.rendered}${separator}${incoming}`,
405
- source: incoming,
406
- changed: true
407
- };
408
- }
409
- //#endregion
410
- //#region extensions/slack/src/streaming.ts
411
- /**
412
- * Thrown when Slack definitively rejects a stream flush/finalize while text
413
- * remains buffered locally by the Slack SDK. Carries the pending text so the
414
- * caller can deliver it via the normal Slack reply path.
415
- */
416
- var SlackStreamNotDeliveredError = class extends Error {
417
- constructor(pendingText, slackCode) {
418
- super(`slack-stream: finalize failed with ${slackCode} before buffered text reached Slack (${pendingText.length} chars pending)`);
419
- this.name = "SlackStreamNotDeliveredError";
420
- this.pendingText = pendingText;
421
- this.slackCode = slackCode;
422
- }
423
- };
424
- /**
425
- * Start a new Slack text stream.
426
- *
427
- * Returns a {@link SlackStreamSession} that should be passed to
428
- * {@link appendSlackStream} and {@link stopSlackStream}.
429
- *
430
- * The first chunk of text can optionally be included via `text`.
431
- */
432
- async function startSlackStream(params) {
433
- const { client, channel, threadTs, text, chunks, taskDisplayMode, teamId, userId, identity } = params;
434
- const identityPayload = identity?.iconUrl ? {
435
- ...identity.username ? { username: identity.username } : {},
436
- icon_url: identity.iconUrl
437
- } : identity?.iconEmoji ? {
438
- ...identity.username ? { username: identity.username } : {},
439
- icon_emoji: identity.iconEmoji
440
- } : identity?.username ? { username: identity.username } : {};
441
- logVerbose(`slack-stream: starting stream in ${channel} thread=${threadTs}${teamId ? ` team=${teamId}` : ""}${userId ? ` user=${userId}` : ""}`);
442
- const streamer = client.chatStream({
443
- channel,
444
- thread_ts: threadTs,
445
- ...taskDisplayMode ? { task_display_mode: taskDisplayMode } : {},
446
- ...teamId ? { recipient_team_id: teamId } : {},
447
- ...userId ? { recipient_user_id: userId } : {},
448
- ...identityPayload
449
- });
450
- const session = {
451
- streamer,
452
- channel,
453
- threadTs,
454
- stopped: false,
455
- delivered: false,
456
- pendingText: ""
457
- };
458
- if (text || chunks?.length) {
459
- if (text) session.pendingText += text;
460
- try {
461
- const result = await streamer.append({
462
- ...text ? { markdown_text: text } : {},
463
- ...chunks?.length ? { chunks } : {}
464
- });
465
- if (result) {
466
- session.delivered = true;
467
- session.pendingText = "";
468
- }
469
- logVerbose(`slack-stream: appended initial payload (${text?.length ?? 0} chars, ${chunks?.length ?? 0} chunks, ${result ? "flushed" : "buffered"})`);
470
- } catch (err) {
471
- if (isBenignSlackFinalizeError(err) && session.pendingText) throw new SlackStreamNotDeliveredError(session.pendingText, extractSlackErrorCode(err) ?? "unknown");
472
- throw err;
473
- }
474
- }
475
- return session;
476
- }
477
- /**
478
- * Append markdown text to an active Slack stream.
479
- */
480
- async function appendSlackStream(params) {
481
- const { session, text, chunks } = params;
482
- if (session.stopped) {
483
- logVerbose("slack-stream: attempted to append to a stopped stream, ignoring");
484
- return;
485
- }
486
- if (!text && !chunks?.length) return;
487
- if (text) session.pendingText += text;
488
- try {
489
- const result = await session.streamer.append({
490
- ...text ? { markdown_text: text } : {},
491
- ...chunks?.length ? { chunks } : {}
492
- });
493
- if (result) {
494
- session.delivered = true;
495
- session.pendingText = "";
496
- }
497
- logVerbose(`slack-stream: appended ${text?.length ?? 0} chars, ${chunks?.length ?? 0} chunks (${result ? "flushed" : "buffered"})`);
498
- } catch (err) {
499
- if (isBenignSlackFinalizeError(err) && session.pendingText) throw new SlackStreamNotDeliveredError(session.pendingText, extractSlackErrorCode(err) ?? "unknown");
500
- throw err;
501
- }
502
- }
503
- /**
504
- * Stop (finalize) a Slack stream.
505
- *
506
- * After calling this the stream message becomes a normal Slack message.
507
- * Optionally include final text to append before stopping.
508
- *
509
- * If Slack's `chat.stopStream` responds with a definitive recipient/channel
510
- * rejection while text is still buffered locally, this function throws a
511
- * {@link SlackStreamNotDeliveredError} carrying that pending text so the caller
512
- * can deliver it through the normal Slack reply path. Ambiguous failures
513
- * propagate unchanged because Slack may have committed the request.
514
- *
515
- * If Slack responds with a known benign finalize error (see
516
- * {@link BENIGN_SLACK_FINALIZE_ERROR_CODES}) after prior `append` calls already
517
- * landed, the error is swallowed and the session is marked stopped - the
518
- * already-delivered text stays visible.
519
- *
520
- * Errors without buffered text propagate unchanged.
521
- *
522
- * On success, returns the finalized message's Slack `ts` (when reported) so the
523
- * caller can emit the `message_sent` hook with a populated `messageId`.
524
- */
525
- async function stopSlackStream(params) {
526
- const { session, text, chunks, metadata } = params;
527
- if (session.stopped) {
528
- logVerbose("slack-stream: stream already stopped, ignoring duplicate stop");
529
- return {};
530
- }
531
- session.stopped = true;
532
- if (text) session.pendingText += text;
533
- logVerbose(`slack-stream: stopping stream in ${session.channel} thread=${session.threadTs}${text ? ` (final text: ${text.length} chars)` : ""}`);
534
- try {
535
- const stopResponse = await session.streamer.stop(text || chunks?.length || metadata ? {
536
- ...text ? { markdown_text: text } : {},
537
- ...chunks?.length ? { chunks } : {},
538
- ...metadata ? { metadata } : {}
539
- } : void 0);
540
- session.delivered = true;
541
- session.pendingText = "";
542
- logVerbose("slack-stream: stream stopped");
543
- const messageId = stopResponse?.ts ?? stopResponse?.message?.ts;
544
- return messageId ? { messageId } : {};
545
- } catch (err) {
546
- const code = extractSlackErrorCode(err) ?? "unknown";
547
- const benignFinalizeError = isBenignSlackFinalizeError(err);
548
- if (session.pendingText && (benignFinalizeError || code === "missing_scope")) throw new SlackStreamNotDeliveredError(session.pendingText, code);
549
- if (benignFinalizeError) {
550
- if (session.delivered) {
551
- logVerbose(`slack-stream: finalize rejected by Slack (${code}); prior appends delivered, treating stream as stopped`);
552
- return {};
553
- }
554
- }
555
- throw err;
556
- }
557
- }
558
- /**
559
- * Slack API error codes that indicate `chat.stopStream` (or the
560
- * `chat.startStream` call the SDK issues inside `stop()` when the buffer
561
- * never flushed) cannot finalize the stream for the current recipient or
562
- * team. Either the caller falls back to a normal message (see
563
- * {@link SlackStreamNotDeliveredError}) or, if prior appends already
564
- * delivered text, the error is logged verbosely and swallowed.
565
- */
566
- const BENIGN_SLACK_FINALIZE_ERROR_CODES = /* @__PURE__ */ new Set([
567
- "user_not_found",
568
- "team_not_found",
569
- "missing_recipient_user_id",
570
- "method_not_supported_for_channel_type"
571
- ]);
572
- function isBenignSlackFinalizeError(err) {
573
- const code = extractSlackErrorCode(err);
574
- return code !== void 0 && BENIGN_SLACK_FINALIZE_ERROR_CODES.has(code);
575
- }
576
- function extractSlackErrorCode(err) {
577
- if (!err || typeof err !== "object") return;
578
- const record = err;
579
- if (record.data && typeof record.data === "object") {
580
- const inner = record.data.error;
581
- if (typeof inner === "string") return inner;
582
- }
583
- return (typeof record.message === "string" ? record.message : "").match(/An API error occurred:\s*([a-z_][a-z0-9_]*)/i)?.[1];
584
- }
585
- function markSlackStreamFallbackDelivered(session) {
586
- const nativeStreamWasStarted = session.delivered;
587
- session.pendingText = "";
588
- session.streamer.buffer = "";
589
- session.stopped = !nativeStreamWasStarted;
590
- }
591
- //#endregion
592
- //#region extensions/slack/src/threading.ts
593
- function resolveSlackThreadContext(params) {
594
- const incomingThreadTs = params.message.thread_ts;
595
- const eventTs = params.message.event_ts;
596
- const messageTs = params.message.ts ?? eventTs;
597
- const hasThreadTs = typeof incomingThreadTs === "string" && incomingThreadTs.length > 0;
598
- const isThreadReply = hasThreadTs && (incomingThreadTs !== messageTs || Boolean(params.message.parent_user_id));
599
- const replyToId = isThreadReply ? incomingThreadTs : void 0;
600
- const isAssistantDmThreadRoot = hasThreadTs && !isThreadReply && params.isDirectMessage === true;
601
- return {
602
- incomingThreadTs,
603
- messageTs,
604
- isThreadReply,
605
- replyToId,
606
- messageThreadId: isThreadReply || isAssistantDmThreadRoot ? incomingThreadTs : params.replyToMode === "all" ? messageTs : void 0
607
- };
608
- }
609
- /**
610
- * Resolves Slack thread targeting for replies and status indicators.
611
- *
612
- * @returns replyThreadTs - Thread timestamp for reply messages
613
- * @returns statusThreadTs - Thread timestamp for status indicators (typing, etc.)
614
- * @returns isThreadReply - true if this is a genuine user reply in a thread,
615
- * false if thread_ts comes from a bot status message (e.g. typing indicator)
616
- */
617
- function resolveSlackThreadTargets(params) {
618
- const { incomingThreadTs, messageTs, isThreadReply } = resolveSlackThreadContext(params);
619
- const replyThreadTs = isThreadReply ? incomingThreadTs : params.replyToMode === "all" ? messageTs : void 0;
620
- return {
621
- replyThreadTs,
622
- statusThreadTs: replyThreadTs,
623
- isThreadReply
624
- };
625
- }
626
- //#endregion
627
- //#region extensions/slack/src/monitor/message-handler/preview-finalize.ts
628
- function buildExpectedSlackEditText(params) {
629
- const trimmedText = params.text.trim();
630
- if (trimmedText) return normalizeSlackOutboundText(trimmedText);
631
- if (params.blocks?.length) return normalizeSlackOutboundText(buildSlackBlocksFallbackText(params.blocks));
632
- return " ";
633
- }
634
- function buildAcceptedSlackEditTexts(params) {
635
- const expected = buildExpectedSlackEditText(params);
636
- const texts = /* @__PURE__ */ new Set([
637
- expected,
638
- normalizeSlackOutboundText(truncateSlackText(expected, SLACK_EDIT_TEXT_LIMIT)),
639
- normalizeSlackOutboundText(buildSlackEditTextPayload(params.text, params.blocks))
640
- ]);
641
- if (params.blocks?.length && hasSlackNativeDataBlock(params.blocks)) {
642
- const fallbackPlan = buildSlackNativeDataDeliveryPlan({
643
- baseText: params.text,
644
- blocks: params.blocks
645
- });
646
- for (const message of fallbackPlan.fallbackMessages) texts.add(normalizeSlackOutboundText(message.text));
647
- }
648
- return texts;
649
- }
650
- function blocksMatch(expected, actual) {
651
- if (!expected?.length) return !actual?.length;
652
- if (!actual?.length) {
653
- if (!hasSlackNativeDataBlock(expected)) return false;
654
- return buildSlackNativeDataDeliveryPlan({ blocks: expected }).fallbackMessages.every((message) => !message.blocks?.length);
655
- }
656
- if (JSON.stringify(expected) === JSON.stringify(actual)) return true;
657
- if (!hasSlackNativeDataBlock(expected)) return false;
658
- try {
659
- const fallbackPlan = buildSlackNativeDataDeliveryPlan({ blocks: expected });
660
- const fallbackBlocks = fallbackPlan.fallbackMessages.flatMap((message) => message.blocks ?? []);
661
- if (JSON.stringify(fallbackBlocks) === JSON.stringify(actual)) return true;
662
- const fallbackText = fallbackPlan.fallbackMessages.map((message) => message.text).filter(Boolean).join("\n\n");
663
- return normalizeSlackOutboundText(buildSlackBlocksFallbackText(actual)) === normalizeSlackOutboundText(fallbackText);
664
- } catch {
665
- return false;
666
- }
667
- }
668
- async function readSlackMessageAfterEditError(params) {
669
- if (params.threadTs) return ((await params.client.conversations.replies({
670
- token: params.token,
671
- channel: params.channelId,
672
- ts: params.threadTs,
673
- latest: params.messageId,
674
- inclusive: true,
675
- limit: 100
676
- })).messages ?? []).find((message) => message?.ts === params.messageId) ?? null;
677
- const message = (await params.client.conversations.history({
678
- token: params.token,
679
- channel: params.channelId,
680
- latest: params.messageId,
681
- oldest: params.messageId,
682
- inclusive: true,
683
- limit: 1
684
- })).messages?.[0];
685
- if (!message?.ts || message.ts !== params.messageId) return null;
686
- return message;
687
- }
688
- async function didSlackPreviewEditApplyAfterError(params) {
689
- const readback = await readSlackMessageAfterEditError(params);
690
- if (!readback) return false;
691
- const expectedText = buildExpectedSlackEditText({
692
- text: params.text,
693
- blocks: params.blocks
694
- });
695
- const acceptedTexts = buildAcceptedSlackEditTexts({
696
- text: params.text,
697
- blocks: params.blocks
698
- });
699
- const actualText = normalizeSlackOutboundText((readback.text ?? "").trim());
700
- if (params.blocks?.length) return acceptedTexts.has(actualText) && blocksMatch(params.blocks, readback.blocks);
701
- return actualText === expectedText;
702
- }
703
- async function finalizeSlackPreviewEdit(params) {
704
- try {
705
- await editSlackMessage(params.channelId, params.messageId, params.text, {
706
- token: params.token,
707
- accountId: params.accountId,
708
- client: params.client,
709
- ...params.blocks?.length ? { blocks: params.blocks } : {}
710
- });
711
- } catch (err) {
712
- try {
713
- if (await didSlackPreviewEditApplyAfterError({
714
- client: params.client,
715
- token: params.token,
716
- channelId: params.channelId,
717
- messageId: params.messageId,
718
- text: params.text,
719
- blocks: params.blocks,
720
- threadTs: params.threadTs
721
- })) {
722
- logVerbose(`slack: preview final edit response failed but readback matched message ${params.channelId}/${params.messageId}; suppressing duplicate fallback send`);
723
- return;
724
- }
725
- } catch (readbackErr) {
726
- logVerbose(`slack: preview final edit readback failed (${String(readbackErr)})`);
727
- }
728
- throw err;
729
- }
730
- }
731
- //#endregion
732
- //#region extensions/slack/src/monitor/message-handler/timestamp.ts
733
- const SLACK_TIMESTAMP_RE = /^\d+(?:\.\d+)?$/;
734
- const MAX_SAFE_SLACK_TIMESTAMP_SECONDS = Number.MAX_SAFE_INTEGER / 1e3;
735
- function resolveSlackTimestampMs(ts) {
736
- const trimmed = ts?.trim();
737
- if (!trimmed || !SLACK_TIMESTAMP_RE.test(trimmed)) return;
738
- const seconds = asFiniteNumberInRange(parseStrictFiniteNumber(trimmed), {
739
- min: 0,
740
- max: MAX_SAFE_SLACK_TIMESTAMP_SECONDS
741
- });
742
- return seconds === void 0 ? void 0 : Math.round(seconds * 1e3);
743
- }
744
- //#endregion
745
- //#region extensions/slack/src/monitor/message-handler/dispatch.ts
746
- function resolveSlackMessageTimestampMs(message) {
747
- return resolveSlackTimestampMs(message.event_ts ?? message.ts);
748
- }
749
- function resolveSlackBotLoopProtection(prepared) {
750
- const senderBotId = prepared.message.bot_id;
751
- if (!senderBotId) return;
752
- const receiverBotId = prepared.ctx.botId || prepared.ctx.botUserId;
753
- if (!receiverBotId || senderBotId === prepared.ctx.botId || prepared.message.user === prepared.ctx.botUserId) return;
754
- return {
755
- scopeId: prepared.route.accountId,
756
- conversationId: prepared.message.channel,
757
- senderId: senderBotId,
758
- receiverId: receiverBotId,
759
- config: mergePairLoopGuardConfig(prepared.account.config.botLoopProtection, prepared.channelConfig?.botLoopProtection),
760
- defaultsConfig: prepared.ctx.cfg.channels?.defaults?.botLoopProtection,
761
- defaultEnabled: true,
762
- nowMs: resolveSlackMessageTimestampMs(prepared.message)
763
- };
764
- }
765
- function isSlackStreamingEnabled(params) {
766
- if (params.mode === "partial") return params.nativeStreaming;
767
- if (params.mode === "progress") return params.nativeStreaming && params.nativeProgressTaskCards === true;
768
- return false;
769
- }
770
- function shouldEnableSlackPreviewStreaming(params) {
771
- return params.mode !== "off";
772
- }
773
- function shouldInitializeSlackDraftStream(params) {
774
- return params.previewStreamingEnabled && !params.useStreaming;
775
- }
776
- function resolveSlackDisableBlockStreaming(params) {
777
- if (params.useStreaming || params.shouldUseDraftStream) return true;
778
- return typeof params.blockStreamingEnabled === "boolean" ? !params.blockStreamingEnabled : void 0;
779
- }
780
- function resolveExplicitSlackProgressTitle(entry) {
781
- const label = resolveChannelProgressDraftConfig(entry).label;
782
- if (typeof label !== "string") return;
783
- const trimmed = label.trim();
784
- return trimmed && trimmed.toLowerCase() !== "auto" ? trimmed : void 0;
785
- }
786
- function resolveSlackNativeProgressTaskCards(entry) {
787
- const streaming = entry?.streaming;
788
- if (!streaming || typeof streaming !== "object" || Array.isArray(streaming)) return false;
789
- const progressConfig = streaming.progress;
790
- return Boolean(progressConfig) && typeof progressConfig === "object" && !Array.isArray(progressConfig) && progressConfig.nativeTaskCards === true;
791
- }
792
- function resolveSlackStreamingThreadHint(params) {
793
- return resolveSlackThreadTs({
794
- replyToMode: params.replyToMode,
795
- incomingThreadTs: params.incomingThreadTs,
796
- messageTs: params.messageTs,
797
- hasReplied: false,
798
- isThreadReply: params.isThreadReply
799
- });
800
- }
801
- const SLACK_STREAM_RECIPIENT_TEAM_CACHE_MAX = 2e3;
802
- const slackStreamRecipientTeamCaches = /* @__PURE__ */ new WeakMap();
803
- function getSlackStreamRecipientTeamCache(client) {
804
- const existing = slackStreamRecipientTeamCaches.get(client);
805
- if (existing) return existing;
806
- const cache = /* @__PURE__ */ new Map();
807
- slackStreamRecipientTeamCaches.set(client, cache);
808
- return cache;
809
- }
810
- function buildSlackEventDeliveryKey(params) {
811
- const reply = resolveSendableOutboundReplyParts(params.payload, { text: params.textOverride });
812
- const renderPlan = resolveSlackReplyRenderPlan(params.payload, params.textOverride ?? params.payload.text);
813
- const plannedBlocks = renderPlan.mode === "single" ? renderPlan.blocks : renderPlan.blockPart?.blocks;
814
- const slackBlocks = readSlackReplyBlocks(params.payload) ?? plannedBlocks;
815
- const renderedText = renderPlan.mode === "single" ? renderPlan.text : renderPlan.fallbackText;
816
- if (!reply.hasContent && !slackBlocks?.length && !renderedText.trim()) return null;
817
- return JSON.stringify({
818
- kind: params.kind,
819
- threadTs: params.threadTs ?? "",
820
- replyToId: params.payload.replyToId ?? null,
821
- text: renderedText || reply.trimmedText,
822
- mediaUrls: reply.mediaUrls,
823
- blocks: slackBlocks ?? null
824
- });
825
- }
826
- function readSlackStreamRecipientTeamCache(params) {
827
- if (!params.fallbackTeamId || !params.userId) return;
828
- const cacheKey = `${params.fallbackTeamId}:${params.userId}`;
829
- const cache = getSlackStreamRecipientTeamCache(params.client);
830
- const cached = cache.get(cacheKey);
831
- if (!cached) return;
832
- cache.delete(cacheKey);
833
- cache.set(cacheKey, cached);
834
- return cached;
835
- }
836
- function rememberSlackStreamRecipientTeam(params) {
837
- if (!params.fallbackTeamId || !params.userId) return;
838
- const cacheKey = `${params.fallbackTeamId}:${params.userId}`;
839
- const cache = getSlackStreamRecipientTeamCache(params.client);
840
- if (cache.has(cacheKey)) cache.delete(cacheKey);
841
- cache.set(cacheKey, params.teamId);
842
- if (cache.size > SLACK_STREAM_RECIPIENT_TEAM_CACHE_MAX) {
843
- const oldest = cache.keys().next().value;
844
- if (oldest) cache.delete(oldest);
845
- }
846
- }
847
- function createSlackEventDeliveryTracker() {
848
- const deliveredKeys = /* @__PURE__ */ new Set();
849
- return {
850
- hasDelivered(params) {
851
- const key = buildSlackEventDeliveryKey(params);
852
- return key ? deliveredKeys.has(key) : false;
853
- },
854
- markDelivered(params) {
855
- const key = buildSlackEventDeliveryKey(params);
856
- if (key) deliveredKeys.add(key);
857
- }
858
- };
859
- }
860
- function shouldUseStreaming(params) {
861
- if (!params.streamingEnabled) return false;
862
- if (!params.threadTs) {
863
- logVerbose("slack-stream: streaming disabled — no reply thread target available");
864
- return false;
865
- }
866
- return true;
867
- }
868
- async function resolveSlackStreamRecipientTeamId(params) {
869
- const cachedTeamId = readSlackStreamRecipientTeamCache(params);
870
- if (cachedTeamId) return cachedTeamId;
871
- if (params.userId) try {
872
- const info = await params.client.users.info({
873
- token: params.token,
874
- user: params.userId
875
- });
876
- const teamId = info.user?.team_id ?? info.user?.profile?.team;
877
- if (teamId) {
878
- rememberSlackStreamRecipientTeam({
879
- ...params,
880
- teamId
881
- });
882
- return teamId;
883
- }
884
- } catch (err) {
885
- logVerbose(`slack-stream: users.info team lookup failed (${formatErrorMessage(err)})`);
886
- }
887
- return params.fallbackTeamId;
888
- }
889
- async function dispatchPreparedSlackMessage(prepared) {
890
- const { ctx, account, message, route } = prepared;
891
- const slackClient = prepared.eventScope?.client ?? ctx.app.client;
892
- const slackStreamFallbackTeamId = prepared.eventScope?.teamId ?? ctx.teamId;
893
- const cfg = ctx.cfg;
894
- const runtime = ctx.runtime;
895
- const outboundIdentity = resolveAgentOutboundIdentity(cfg, route.agentId);
896
- const slackIdentity = outboundIdentity ? {
897
- username: outboundIdentity.name,
898
- iconUrl: outboundIdentity.avatarUrl,
899
- iconEmoji: outboundIdentity.emoji
900
- } : prepared.relayIdentity;
901
- if (prepared.isDirectMessage) {
902
- const sessionCfg = cfg.session;
903
- const storePath = resolveStorePath(sessionCfg?.store, { agentId: route.agentId });
904
- const pinnedMainDmOwner = resolvePinnedMainDmOwnerFromAllowlist({
905
- dmScope: cfg.session?.dmScope,
906
- allowFrom: ctx.allowFrom,
907
- normalizeEntry: normalizeSlackAllowOwnerEntry
908
- });
909
- const senderRecipient = normalizeOptionalLowercaseString(message.user);
910
- const inboundLastRouteSessionKey = resolveInboundLastRouteSessionKey({
911
- route,
912
- sessionKey: prepared.ctxPayload.SessionKey ?? route.sessionKey
913
- });
914
- if (inboundLastRouteSessionKey === route.mainSessionKey && pinnedMainDmOwner && senderRecipient && normalizeOptionalLowercaseString(pinnedMainDmOwner) !== senderRecipient) logVerbose(`slack: skip main-session last route for ${senderRecipient} (pinned owner ${pinnedMainDmOwner})`);
915
- else await updateLastRoute({
916
- storePath,
917
- sessionKey: inboundLastRouteSessionKey,
918
- deliveryContext: {
919
- channel: "slack",
920
- to: `user:${message.user}`,
921
- accountId: route.accountId,
922
- threadId: prepared.ctxPayload.MessageThreadId ?? prepared.ctxPayload.TransportThreadId
923
- },
924
- ctx: prepared.ctxPayload
925
- });
926
- }
927
- const threadTargets = resolveSlackThreadTargets({
928
- message,
929
- replyToMode: prepared.replyToMode
930
- });
931
- const forcedReplyThreadTs = prepared.forcedReplyThreadTs;
932
- const slackMessageMetadata = prepared.slackMessageMetadata;
933
- const statusThreadTs = forcedReplyThreadTs ?? threadTargets.statusThreadTs;
934
- const isThreadReply = threadTargets.isThreadReply;
935
- const replyDeliveryMode = forcedReplyThreadTs ? "off" : prepared.replyToMode;
936
- const sourceReplyDeliveryMode = resolveChannelMessageSourceReplyDeliveryMode({
937
- cfg,
938
- ctx: prepared.ctxPayload
939
- });
940
- const sourceRepliesAreToolOnly = sourceReplyDeliveryMode === "message_tool_only";
941
- const suppressRoomEventTyping = prepared.ctxPayload.InboundEventKind === "room_event";
942
- const messageSentHookTarget = prepared.ctxPayload.OriginatingTo ?? prepared.ctxPayload.To ?? prepared.replyTarget;
943
- const messageSentHookContext = {
944
- sessionKeyForInternalHooks: prepared.ctxPayload.SessionKey ?? route.sessionKey,
945
- isGroup: prepared.isRoomish,
946
- groupId: prepared.isRoomish ? message.channel : void 0
947
- };
948
- const messageSentDeliveryHookContext = {
949
- ...messageSentHookContext,
950
- messageSentHookTarget
951
- };
952
- const reactionMessageTs = prepared.ackReactionMessageTs;
953
- const messageTs = message.ts ?? message.event_ts;
954
- const incomingThreadTs = message.thread_ts;
955
- let didSetStatus = false;
956
- const statusReactionsEnabled = prepared.ctxPayload.InboundEventKind !== "room_event" && Boolean(prepared.ackReactionPromise) && Boolean(reactionMessageTs) && cfg.messages?.statusReactions?.enabled === true;
957
- const statusReactions = createStatusReactionController({
958
- enabled: statusReactionsEnabled,
959
- adapter: {
960
- setReaction: async (emoji) => {
961
- await reactSlackMessage(message.channel, reactionMessageTs ?? "", emoji, {
962
- token: ctx.botToken,
963
- client: slackClient
964
- }).catch((err) => {
965
- if (formatErrorMessage(err).includes("already_reacted")) return;
966
- throw err;
967
- });
968
- },
969
- removeReaction: async (emoji) => {
970
- await removeSlackReaction(message.channel, reactionMessageTs ?? "", emoji, {
971
- token: ctx.botToken,
972
- client: slackClient
973
- }).catch((err) => {
974
- if (formatErrorMessage(err).includes("no_reaction")) return;
975
- throw err;
976
- });
977
- }
978
- },
979
- initialEmoji: prepared.ackReactionValue || "eyes",
980
- emojis: void 0,
981
- timing: DEFAULT_TIMING,
982
- onError: (err) => {
983
- logAckFailure({
984
- log: logVerbose,
985
- channel: "slack",
986
- target: `${message.channel}/${message.ts}`,
987
- error: err
988
- });
989
- }
990
- });
991
- if (statusReactionsEnabled) statusReactions.setQueued();
992
- const hasRepliedRef = { value: false };
993
- const replyPlan = createSlackReplyDeliveryPlan({
994
- replyToMode: replyDeliveryMode,
995
- incomingThreadTs: forcedReplyThreadTs ?? incomingThreadTs,
996
- messageTs,
997
- hasRepliedRef,
998
- isThreadReply: Boolean(forcedReplyThreadTs) || isThreadReply
999
- });
1000
- const typingTarget = statusThreadTs ? `${message.channel}/${statusThreadTs}` : message.channel;
1001
- const typingReaction = ctx.typingReaction;
1002
- const { onModelSelected, ...replyPipeline } = createChannelMessageReplyPipeline({
1003
- cfg,
1004
- agentId: route.agentId,
1005
- channel: "slack",
1006
- accountId: route.accountId,
1007
- transformReplyPayload: (payload) => {
1008
- if (payload.isReasoning === true) return null;
1009
- return isSlackInteractiveRepliesEnabled({
1010
- cfg,
1011
- accountId: route.accountId
1012
- }) ? compileSlackInteractiveReplies(payload) : payload;
1013
- },
1014
- typing: {
1015
- start: async () => {
1016
- didSetStatus = true;
1017
- await ctx.setSlackThreadStatus({
1018
- channelId: message.channel,
1019
- threadTs: statusThreadTs,
1020
- status: "is typing...",
1021
- eventScope: prepared.eventScope
1022
- });
1023
- if (typingReaction && message.ts) await reactSlackMessage(message.channel, message.ts, typingReaction, {
1024
- token: ctx.botToken,
1025
- client: slackClient
1026
- }).catch((err) => {
1027
- logVerbose(`slack send: typing reaction failed: ${formatSlackError(err)}`);
1028
- });
1029
- },
1030
- stop: async () => {
1031
- if (!didSetStatus) return;
1032
- didSetStatus = false;
1033
- await ctx.setSlackThreadStatus({
1034
- channelId: message.channel,
1035
- threadTs: statusThreadTs,
1036
- status: "",
1037
- eventScope: prepared.eventScope
1038
- });
1039
- if (typingReaction && message.ts) await removeSlackReaction(message.channel, message.ts, typingReaction, {
1040
- token: ctx.botToken,
1041
- client: slackClient
1042
- }).catch((err) => {
1043
- logVerbose(`slack send: typing reaction removal failed: ${formatSlackError(err)}`);
1044
- });
1045
- },
1046
- onStartError: (err) => {
1047
- logTypingFailure({
1048
- log: (messageValue) => runtime.error?.(danger(messageValue)),
1049
- channel: "slack",
1050
- action: "start",
1051
- target: typingTarget,
1052
- error: err
1053
- });
1054
- },
1055
- onStopError: (err) => {
1056
- logTypingFailure({
1057
- log: (messageLocal) => runtime.error?.(danger(messageLocal)),
1058
- channel: "slack",
1059
- action: "stop",
1060
- target: typingTarget,
1061
- error: err
1062
- });
1063
- }
1064
- }
1065
- });
1066
- const slackStreaming = resolveSlackStreamingConfig({
1067
- streaming: account.config.streaming,
1068
- nativeStreaming: resolveChannelStreamingNativeTransport(account.config)
1069
- });
1070
- const streamThreadHint = forcedReplyThreadTs ?? resolveSlackStreamingThreadHint({
1071
- replyToMode: replyDeliveryMode,
1072
- incomingThreadTs,
1073
- messageTs,
1074
- isThreadReply
1075
- });
1076
- const previewStreamingEnabled = !sourceRepliesAreToolOnly && shouldEnableSlackPreviewStreaming({ mode: slackStreaming.mode });
1077
- const hasSlackCustomIdentity = Boolean(slackIdentity?.username || slackIdentity?.iconUrl || slackIdentity?.iconEmoji);
1078
- const useStreaming = shouldUseStreaming({
1079
- streamingEnabled: !sourceRepliesAreToolOnly && isSlackStreamingEnabled({
1080
- mode: slackStreaming.mode,
1081
- nativeStreaming: slackStreaming.nativeStreaming,
1082
- nativeProgressTaskCards: resolveSlackNativeProgressTaskCards(account.config)
1083
- }),
1084
- threadTs: streamThreadHint
1085
- });
1086
- const shouldUseDraftStream = !hasSlackCustomIdentity && shouldInitializeSlackDraftStream({
1087
- previewStreamingEnabled,
1088
- useStreaming
1089
- });
1090
- const blockStreamingEnabled = resolveChannelStreamingBlockEnabled(account.config);
1091
- const disableBlockStreaming = sourceRepliesAreToolOnly ? true : resolveSlackDisableBlockStreaming({
1092
- useStreaming,
1093
- shouldUseDraftStream,
1094
- blockStreamingEnabled
1095
- });
1096
- let streamSession = null;
1097
- let nativeProgressStreamStartPromise = null;
1098
- let nativeProgressStreamThreadTs;
1099
- let streamFailed = false;
1100
- let usedReplyThreadTs;
1101
- let usedBlockReplyThreadTs;
1102
- let observedReplyDelivery = false;
1103
- let observedFinalReplyDelivery = false;
1104
- const streamedDeliveries = [];
1105
- const streamedFailuresOwnedByDispatcher = {
1106
- tool: 0,
1107
- block: 0,
1108
- final: 0
1109
- };
1110
- const refreshStreamedAcknowledgements = (session) => {
1111
- if (session.pendingText.length === 0) for (const delivery of streamedDeliveries) delivery.acknowledged = true;
1112
- };
1113
- const recordStreamedDelivery = (kind, content) => {
1114
- const delivery = {
1115
- kind,
1116
- content,
1117
- acknowledged: false
1118
- };
1119
- streamedDeliveries.push(delivery);
1120
- return delivery;
1121
- };
1122
- const rememberStreamedDelivery = (kind, content, session) => {
1123
- recordStreamedDelivery(kind, content);
1124
- refreshStreamedAcknowledgements(session);
1125
- };
1126
- const emitAcknowledgedStreamedDeliveries = (messageId) => {
1127
- for (const delivery of streamedDeliveries) {
1128
- if (!delivery.acknowledged || delivery.outcome) continue;
1129
- emitSlackMessageSentHooks({
1130
- ...messageSentHookContext,
1131
- to: messageSentHookTarget,
1132
- accountId: account.accountId,
1133
- content: delivery.content,
1134
- success: true,
1135
- ...messageId ? { messageId } : {}
1136
- });
1137
- delivery.outcome = "success";
1138
- }
1139
- };
1140
- const acknowledgeStoppedStreamedDeliveries = (session, messageId) => {
1141
- refreshStreamedAcknowledgements(session);
1142
- for (const delivery of streamedDeliveries) delivery.acknowledged = true;
1143
- emitAcknowledgedStreamedDeliveries(messageId);
1144
- };
1145
- const emitFailedPendingStreamedDeliveries = (error) => {
1146
- for (const delivery of streamedDeliveries) {
1147
- if (delivery.acknowledged || delivery.outcome) continue;
1148
- emitSlackMessageSentHooks({
1149
- ...messageSentHookContext,
1150
- to: messageSentHookTarget,
1151
- accountId: account.accountId,
1152
- content: delivery.content,
1153
- success: false,
1154
- error
1155
- });
1156
- delivery.outcome = "failure";
1157
- }
1158
- };
1159
- const emitSuccessfulPendingStreamedDeliveries = (messageId) => {
1160
- for (const delivery of streamedDeliveries) {
1161
- if (delivery.acknowledged || delivery.outcome) continue;
1162
- emitSlackMessageSentHooks({
1163
- ...messageSentHookContext,
1164
- to: messageSentHookTarget,
1165
- accountId: account.accountId,
1166
- content: delivery.content,
1167
- success: true,
1168
- ...messageId ? { messageId } : {}
1169
- });
1170
- delivery.outcome = "success";
1171
- }
1172
- };
1173
- let deliveryTracker = createSlackEventDeliveryTracker();
1174
- const markPreviewPayloadDelivered = (params) => {
1175
- deliveryTracker.markDelivered(params);
1176
- const nextThreadTs = replyPlan.peekThreadTs();
1177
- if (nextThreadTs !== params.threadTs) deliveryTracker.markDelivered({
1178
- ...params,
1179
- threadTs: nextThreadTs
1180
- });
1181
- };
1182
- const resolveDeliveryThreadTs = (params) => {
1183
- const plannedThreadTs = params.forcedThreadTs ? void 0 : replyPlan.nextThreadTs();
1184
- return params.forcedThreadTs ?? plannedThreadTs ?? (params.kind === "block" ? usedBlockReplyThreadTs : void 0);
1185
- };
1186
- const rememberDeliveredThreadTs = (kind, deliveredThreadTs) => {
1187
- if (!deliveredThreadTs) return;
1188
- usedReplyThreadTs ??= deliveredThreadTs;
1189
- if (kind === "block") usedBlockReplyThreadTs = deliveredThreadTs;
1190
- };
1191
- const deliverPendingStreamFallback = async (session, err) => {
1192
- let fallbackError = err;
1193
- if (!session.stopped) try {
1194
- const stopResult = await stopSlackStream({
1195
- session,
1196
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {}
1197
- });
1198
- acknowledgeStoppedStreamedDeliveries(session, stopResult.messageId);
1199
- observedReplyDelivery = true;
1200
- usedReplyThreadTs ??= session.threadTs;
1201
- return true;
1202
- } catch (stopErr) {
1203
- if (stopErr instanceof SlackStreamNotDeliveredError) fallbackError = stopErr;
1204
- else runtime.error?.(danger(`slack-stream: failed to finalize buffered text before fallback: ${formatSlackError(stopErr)}`));
1205
- }
1206
- emitAcknowledgedStreamedDeliveries();
1207
- const fallbackText = fallbackError.pendingText.trim();
1208
- if (!fallbackText) return false;
1209
- try {
1210
- await deliverReplies({
1211
- cfg: ctx.cfg,
1212
- replies: [{ text: fallbackText }],
1213
- target: prepared.replyTarget,
1214
- token: ctx.botToken,
1215
- accountId: account.accountId,
1216
- runtime,
1217
- textLimit: ctx.textLimit,
1218
- mediaMaxBytes: ctx.mediaMaxBytes,
1219
- replyThreadTs: session.threadTs,
1220
- replyToMode: replyDeliveryMode,
1221
- ...slackIdentity ? { identity: slackIdentity } : {},
1222
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {},
1223
- ...messageSentDeliveryHookContext,
1224
- deferMessageSentHooks: true,
1225
- ...prepared.eventScope ? { eventScope: prepared.eventScope } : {}
1226
- });
1227
- markSlackStreamFallbackDelivered(session);
1228
- if (!session.stopped) try {
1229
- await stopSlackStream({
1230
- session,
1231
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {}
1232
- });
1233
- } catch (finalizeErr) {
1234
- runtime.error?.(danger(`slack-stream: failed to finalize native stream after fallback delivery: ${formatSlackError(finalizeErr)}`));
1235
- }
1236
- emitSuccessfulPendingStreamedDeliveries();
1237
- observedReplyDelivery = true;
1238
- usedReplyThreadTs ??= session.threadTs;
1239
- logVerbose(`slack-stream: streamed delivery failed (${fallbackError.slackCode}); delivered ${fallbackText.length} chars via deliverReplies fallback`);
1240
- return true;
1241
- } catch (postErr) {
1242
- emitFailedPendingStreamedDeliveries(formatErrorMessage(postErr));
1243
- runtime.error?.(danger(`slack-stream: fallback deliverReplies failed after ${fallbackError.slackCode}: ${formatErrorMessage(postErr)}`));
1244
- return false;
1245
- }
1246
- };
1247
- const deliverNormally = async (params) => {
1248
- if (params.payload.isReasoning === true) return;
1249
- const replyThreadTs = resolveDeliveryThreadTs(params);
1250
- const deliveryReplyThreadTs = replyDeliveryMode === "off" && !forcedReplyThreadTs && !isThreadReply ? void 0 : replyThreadTs;
1251
- if (deliveryTracker.hasDelivered({
1252
- kind: params.kind,
1253
- payload: params.payload,
1254
- threadTs: deliveryReplyThreadTs
1255
- })) {
1256
- logVerbose("slack: suppressed duplicate normal delivery within the same turn");
1257
- return deliveryReplyThreadTs;
1258
- }
1259
- await deliverReplies({
1260
- cfg: ctx.cfg,
1261
- replies: [params.payload],
1262
- target: prepared.replyTarget,
1263
- token: ctx.botToken,
1264
- accountId: account.accountId,
1265
- runtime,
1266
- textLimit: ctx.textLimit,
1267
- mediaMaxBytes: ctx.mediaMaxBytes,
1268
- replyThreadTs: deliveryReplyThreadTs,
1269
- replyToMode: replyDeliveryMode,
1270
- ...slackIdentity ? { identity: slackIdentity } : {},
1271
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {},
1272
- ...messageSentDeliveryHookContext,
1273
- ...prepared.eventScope ? { eventScope: prepared.eventScope } : {}
1274
- });
1275
- observedReplyDelivery = true;
1276
- if (params.kind === "final") observedFinalReplyDelivery = true;
1277
- const deliveredThreadTs = resolveDeliveredSlackReplyThreadTs({
1278
- replyToMode: replyDeliveryMode,
1279
- payloadReplyToId: params.payload.replyToId,
1280
- replyThreadTs: deliveryReplyThreadTs
1281
- });
1282
- rememberDeliveredThreadTs(params.kind, deliveredThreadTs);
1283
- replyPlan.markSent();
1284
- deliveryTracker.markDelivered({
1285
- kind: params.kind,
1286
- payload: params.payload,
1287
- threadTs: deliveryReplyThreadTs
1288
- });
1289
- return deliveryReplyThreadTs;
1290
- };
1291
- const deliverBufferedStreamFallback = async (params) => {
1292
- if (!await deliverPendingStreamFallback(params.session, params.err)) {
1293
- streamedFailuresOwnedByDispatcher[params.kind] += 1;
1294
- return false;
1295
- }
1296
- replyPlan.markSent();
1297
- if (params.kind === "final") observedFinalReplyDelivery = true;
1298
- deliveryTracker.markDelivered({
1299
- kind: params.kind,
1300
- payload: params.payload,
1301
- threadTs: params.session.threadTs,
1302
- textOverride: params.textOverride
1303
- });
1304
- rememberDeliveredThreadTs(params.kind, params.session.threadTs);
1305
- return true;
1306
- };
1307
- const appendNativeProgressCompletion = async (isError) => {
1308
- const session = streamSession;
1309
- if (isError) nativeProgressTerminalStatus = "error";
1310
- if (!session || nativeProgressCompletionSent) return;
1311
- const chunks = buildNativeProgressCompletionChunks(isError ? "error" : "complete");
1312
- if (!chunks?.length) return;
1313
- try {
1314
- await appendSlackStream({
1315
- session,
1316
- chunks
1317
- });
1318
- nativeProgressCompletionSent = true;
1319
- observedReplyDelivery ||= session.delivered;
1320
- } catch (err) {
1321
- streamFailed = true;
1322
- runtime.error?.(danger(`slack-stream: native progress completion failed: ${formatSlackError(err)}`));
1323
- }
1324
- };
1325
- const deliverWithStreaming = async (params) => {
1326
- if (params.payload.isReasoning === true) return;
1327
- const reply = resolveSendableOutboundReplyParts(params.payload);
1328
- const renderPlan = resolveSlackReplyRenderPlan(params.payload);
1329
- const plannedBlocks = renderPlan.mode === "single" ? renderPlan.blocks : renderPlan.blockPart?.blocks;
1330
- if (streamFailed || reply.hasMedia || renderPlan.mode === "split" || Boolean(plannedBlocks?.length) || readSlackReplyBlocks(params.payload)?.length || !reply.hasText) {
1331
- await deliverNormally({
1332
- payload: params.payload,
1333
- kind: params.kind,
1334
- forcedThreadTs: streamSession?.threadTs ?? nativeProgressStreamThreadTs
1335
- });
1336
- return;
1337
- }
1338
- const text = reply.trimmedText;
1339
- let plannedThreadTs;
1340
- try {
1341
- if (!streamSession && nativeProgressStreamStartPromise) await nativeProgressStreamStartPromise;
1342
- if (streamFailed) {
1343
- await deliverNormally({
1344
- payload: params.payload,
1345
- kind: params.kind,
1346
- forcedThreadTs: streamSession?.threadTs ?? nativeProgressStreamThreadTs
1347
- });
1348
- return;
1349
- }
1350
- if (!streamSession) {
1351
- const streamThreadTs = replyPlan.nextThreadTs();
1352
- plannedThreadTs = streamThreadTs;
1353
- if (!streamThreadTs) {
1354
- logVerbose("slack-stream: no reply thread target for stream start, falling back to normal delivery");
1355
- streamFailed = true;
1356
- await deliverNormally({
1357
- payload: params.payload,
1358
- kind: params.kind
1359
- });
1360
- return;
1361
- }
1362
- if (deliveryTracker.hasDelivered({
1363
- kind: params.kind,
1364
- payload: params.payload,
1365
- threadTs: streamThreadTs,
1366
- textOverride: text
1367
- })) {
1368
- logVerbose("slack-stream: suppressed duplicate stream start payload");
1369
- return;
1370
- }
1371
- streamSession = await startSlackStream({
1372
- client: slackClient,
1373
- channel: message.channel,
1374
- threadTs: streamThreadTs,
1375
- text,
1376
- ...slackIdentity ? { identity: slackIdentity } : {},
1377
- teamId: await resolveSlackStreamRecipientTeamId({
1378
- client: slackClient,
1379
- token: ctx.botToken,
1380
- userId: message.user,
1381
- fallbackTeamId: slackStreamFallbackTeamId
1382
- }),
1383
- userId: message.user
1384
- });
1385
- refreshStreamedAcknowledgements(streamSession);
1386
- if (streamSession.delivered) {
1387
- observedReplyDelivery = true;
1388
- if (params.kind === "final") observedFinalReplyDelivery = true;
1389
- }
1390
- if (text) rememberStreamedDelivery(params.kind, text, streamSession);
1391
- rememberDeliveredThreadTs(params.kind, streamThreadTs);
1392
- replyPlan.markSent();
1393
- deliveryTracker.markDelivered({
1394
- kind: params.kind,
1395
- payload: params.payload,
1396
- threadTs: streamThreadTs,
1397
- textOverride: text
1398
- });
1399
- return;
1400
- }
1401
- if (deliveryTracker.hasDelivered({
1402
- kind: params.kind,
1403
- payload: params.payload,
1404
- threadTs: streamSession.threadTs,
1405
- textOverride: text
1406
- })) {
1407
- logVerbose("slack-stream: suppressed duplicate append payload");
1408
- return;
1409
- }
1410
- if (text) recordStreamedDelivery(params.kind, text);
1411
- await appendSlackStream({
1412
- session: streamSession,
1413
- text: "\n" + text
1414
- });
1415
- refreshStreamedAcknowledgements(streamSession);
1416
- if (streamSession.delivered) {
1417
- observedReplyDelivery = true;
1418
- if (params.kind === "final") observedFinalReplyDelivery = true;
1419
- }
1420
- deliveryTracker.markDelivered({
1421
- kind: params.kind,
1422
- payload: params.payload,
1423
- threadTs: streamSession.threadTs,
1424
- textOverride: text
1425
- });
1426
- } catch (err) {
1427
- if (err instanceof SlackStreamNotDeliveredError) {
1428
- streamFailed = true;
1429
- if (streamSession) {
1430
- if (await deliverBufferedStreamFallback({
1431
- session: streamSession,
1432
- err,
1433
- payload: params.payload,
1434
- kind: params.kind,
1435
- textOverride: text
1436
- })) return;
1437
- throw err;
1438
- }
1439
- await deliverNormally({
1440
- payload: params.payload,
1441
- kind: params.kind,
1442
- forcedThreadTs: plannedThreadTs
1443
- });
1444
- return;
1445
- }
1446
- runtime.error?.(danger(`slack-stream: streaming API call failed: ${formatSlackError(err)}, falling back`));
1447
- streamFailed = true;
1448
- if (streamSession && streamSession.pendingText) {
1449
- const bufferedFallbackErr = new SlackStreamNotDeliveredError(streamSession.pendingText, "unknown");
1450
- if (await deliverBufferedStreamFallback({
1451
- session: streamSession,
1452
- err: bufferedFallbackErr,
1453
- payload: params.payload,
1454
- kind: params.kind,
1455
- textOverride: text
1456
- })) return;
1457
- throw err;
1458
- }
1459
- await deliverNormally({
1460
- payload: params.payload,
1461
- kind: params.kind,
1462
- forcedThreadTs: streamSession?.threadTs ?? nativeProgressStreamThreadTs ?? plannedThreadTs
1463
- });
1464
- }
1465
- };
1466
- let draftPreviewCommitted = false;
1467
- const deliverSlackPayload = async (payload, info) => {
1468
- if (payload.isReasoning === true) return { visibleReplySent: false };
1469
- if (info.kind === "final" && slackStreaming.mode === "progress" && streamMode === "status_final") {
1470
- const hadProgressDraft = progressDraft.hasStarted;
1471
- progressDraft.markFinalReplyStarted();
1472
- if (useNativeProgressStreaming) {
1473
- await waitForNativeProgressStreamStart();
1474
- const finalThreadTs = streamSession?.threadTs ?? nativeProgressStreamThreadTs;
1475
- await deliverNormally({
1476
- payload,
1477
- kind: info.kind,
1478
- forcedThreadTs: finalThreadTs
1479
- });
1480
- await appendNativeProgressCompletion(payload.isError === true);
1481
- progressDraft.markFinalReplyDelivered();
1482
- if (!payload.isError && hadProgressDraft && streamSession) pendingNativeProgressReceipt = progressReceipt.buildSummaryLine();
1483
- return;
1484
- }
1485
- if (hadProgressDraft) try {
1486
- await draftStream?.flush();
1487
- } catch (err) {
1488
- logVerbose(`slack: progress draft flush before final failed (${formatSlackError(err)})`);
1489
- }
1490
- const receiptChannelId = hadProgressDraft ? draftStream?.channelId() : void 0;
1491
- const receiptMessageId = hadProgressDraft ? draftStream?.messageId() : void 0;
1492
- const draftThreadTs = hadProgressDraft ? usedReplyThreadTs ?? statusThreadTs : void 0;
1493
- await deliverNormally({
1494
- payload,
1495
- kind: info.kind,
1496
- ...draftThreadTs ? { forcedThreadTs: draftThreadTs } : {}
1497
- });
1498
- progressDraft.markFinalReplyDelivered();
1499
- if (!payload.isError && receiptChannelId && receiptMessageId && !progressReceiptCollapsed) await collapseProgressReceipt({
1500
- channelId: receiptChannelId,
1501
- messageId: receiptMessageId,
1502
- text: progressReceipt.buildSummaryLine(),
1503
- threadTs: usedReplyThreadTs ?? statusThreadTs
1504
- });
1505
- return;
1506
- }
1507
- if (useNativeProgressStreaming) {
1508
- await deliverNormally({
1509
- payload,
1510
- kind: info.kind,
1511
- forcedThreadTs: streamSession?.threadTs ?? nativeProgressStreamThreadTs
1512
- });
1513
- return;
1514
- }
1515
- if (useStreaming) {
1516
- await deliverWithStreaming({
1517
- payload,
1518
- kind: info.kind
1519
- });
1520
- return;
1521
- }
1522
- const reply = resolveSendableOutboundReplyParts(payload);
1523
- const ttsSupplement = getReplyPayloadTtsSupplement(payload);
1524
- const replySourceText = payload.text ?? ttsSupplement?.spokenText;
1525
- const replyRenderPlan = resolveSlackReplyRenderPlan(payload, replySourceText);
1526
- const slackBlocks = replyRenderPlan.mode === "single" ? replyRenderPlan.blocks : replyRenderPlan.blockPart?.blocks;
1527
- const requiresSeparateFallbackDelivery = replyRenderPlan.mode === "split";
1528
- const trimmedFinalText = replyRenderPlan.mode === "single" ? replyRenderPlan.text.trim() : replyRenderPlan.fallbackText.trim();
1529
- const previewFinalText = replyRenderPlan.mode === "single" && replyRenderPlan.textIsSlackMrkdwn ? trimmedFinalText : normalizeSlackOutboundText((replySourceText ?? "").trim());
1530
- const shouldRestoreTtsSupplementTextForPreviewFallback = Boolean(ttsSupplement) && ttsSupplement?.visibleTextAlreadyDelivered !== true && Boolean(draftStream) && !draftPreviewCommitted && !observedFinalReplyDelivery && previewStreamingEnabled && !payload.text?.trim();
1531
- if (info.kind === "final" && ttsSupplement && draftStream && !draftPreviewCommitted && !observedFinalReplyDelivery && previewStreamingEnabled && !payload.isError && !requiresSeparateFallbackDelivery && trimmedFinalText.length > 0) {
1532
- const channelId = draftStream.channelId();
1533
- const messageId = draftStream.messageId();
1534
- if (channelId && messageId) {
1535
- const finalThreadTs = usedReplyThreadTs ?? statusThreadTs;
1536
- await draftStream.flush();
1537
- await draftStream.seal();
1538
- try {
1539
- await finalizeSlackPreviewEdit({
1540
- client: slackClient,
1541
- token: ctx.botToken,
1542
- accountId: account.accountId,
1543
- channelId,
1544
- messageId,
1545
- text: previewFinalText,
1546
- ...slackBlocks?.length ? { blocks: slackBlocks } : {},
1547
- threadTs: finalThreadTs
1548
- });
1549
- } catch (err) {
1550
- logVerbose(`slack: preview final edit failed; falling back to standard send (${formatSlackError(err)})`);
1551
- await draftStream.discardPending();
1552
- let delivered = false;
1553
- try {
1554
- await deliverNormally({
1555
- payload: payload.text?.trim() ? payload : {
1556
- ...payload,
1557
- text: ttsSupplement.spokenText
1558
- },
1559
- kind: info.kind,
1560
- forcedThreadTs: finalThreadTs
1561
- });
1562
- delivered = true;
1563
- } finally {
1564
- if (delivered) await draftStream.clear();
1565
- }
1566
- return;
1567
- }
1568
- draftPreviewCommitted = true;
1569
- observedFinalReplyDelivery = true;
1570
- observedReplyDelivery = true;
1571
- replyPlan.markSent();
1572
- await deliverNormally({
1573
- payload: buildTtsSupplementMediaPayload(payload),
1574
- kind: info.kind,
1575
- forcedThreadTs: finalThreadTs
1576
- });
1577
- markPreviewPayloadDelivered({
1578
- kind: info.kind,
1579
- payload,
1580
- threadTs: finalThreadTs
1581
- });
1582
- return;
1583
- }
1584
- }
1585
- await deliverWithFinalizableLivePreviewAdapter({
1586
- kind: info.kind,
1587
- payload,
1588
- adapter: defineFinalizableLivePreviewAdapter({
1589
- draft: draftStream && !draftPreviewCommitted && !observedFinalReplyDelivery ? {
1590
- flush: draftStream.flush,
1591
- clear: draftStream.clear,
1592
- discardPending: draftStream.discardPending,
1593
- seal: draftStream.seal,
1594
- id: () => {
1595
- const channelId = draftStream.channelId();
1596
- const messageId = draftStream.messageId();
1597
- return channelId && messageId ? {
1598
- channelId,
1599
- messageId
1600
- } : void 0;
1601
- }
1602
- } : void 0,
1603
- buildFinalEdit: () => {
1604
- if (!previewStreamingEnabled || reply.hasMedia && !ttsSupplement || payload.isError || requiresSeparateFallbackDelivery || trimmedFinalText.length === 0 && !slackBlocks?.length) return;
1605
- return {
1606
- text: previewFinalText,
1607
- blocks: slackBlocks,
1608
- threadTs: usedReplyThreadTs ?? statusThreadTs
1609
- };
1610
- },
1611
- editFinal: async (preview, edit) => {
1612
- if (deliveryTracker.hasDelivered({
1613
- kind: info.kind,
1614
- payload,
1615
- threadTs: edit.threadTs
1616
- })) return;
1617
- await finalizeSlackPreviewEdit({
1618
- client: slackClient,
1619
- token: ctx.botToken,
1620
- accountId: account.accountId,
1621
- channelId: preview.channelId,
1622
- messageId: preview.messageId,
1623
- text: edit.text,
1624
- ...edit.blocks?.length ? { blocks: edit.blocks } : {},
1625
- threadTs: edit.threadTs
1626
- });
1627
- if (!ttsSupplement) emitSlackMessageSentHooks({
1628
- ...messageSentHookContext,
1629
- to: messageSentHookTarget,
1630
- accountId: account.accountId,
1631
- content: trimmedFinalText,
1632
- success: true,
1633
- messageId: preview.messageId
1634
- });
1635
- draftPreviewCommitted = true;
1636
- observedFinalReplyDelivery = true;
1637
- },
1638
- onPreviewFinalized: (_preview) => {
1639
- draftPreviewCommitted = true;
1640
- observedFinalReplyDelivery = true;
1641
- const finalThreadTs = usedReplyThreadTs ?? statusThreadTs;
1642
- observedReplyDelivery = true;
1643
- replyPlan.markSent();
1644
- if (!ttsSupplement) markPreviewPayloadDelivered({
1645
- kind: info.kind,
1646
- payload,
1647
- threadTs: finalThreadTs
1648
- });
1649
- },
1650
- buildSupplementalPayload: () => ttsSupplement ? buildTtsSupplementMediaPayload(payload) : void 0,
1651
- deliverSupplemental: async (supplementalPayload) => {
1652
- const previewThreadTs = usedReplyThreadTs ?? statusThreadTs;
1653
- const supplementalThreadTs = await deliverNormally({
1654
- payload: supplementalPayload,
1655
- kind: info.kind,
1656
- forcedThreadTs: previewThreadTs
1657
- });
1658
- markPreviewPayloadDelivered({
1659
- kind: info.kind,
1660
- payload,
1661
- threadTs: supplementalThreadTs
1662
- });
1663
- },
1664
- logPreviewEditFailure: (err) => {
1665
- logVerbose(`slack: preview final edit failed; falling back to standard send (${formatSlackError(err)})`);
1666
- }
1667
- }),
1668
- deliverNormally: async () => {
1669
- await deliverNormally({
1670
- payload: shouldRestoreTtsSupplementTextForPreviewFallback ? {
1671
- ...payload,
1672
- text: ttsSupplement?.spokenText
1673
- } : payload,
1674
- kind: info.kind
1675
- });
1676
- }
1677
- });
1678
- };
1679
- const onSlackDeliveryError = (err, info) => {
1680
- runtime.error?.(danger(`slack ${info.kind} reply failed: ${formatSlackError(err)}`));
1681
- replyPipeline.typingCallbacks?.onIdle?.();
1682
- };
1683
- const draftStream = shouldUseDraftStream ? createSlackDraftStream({
1684
- target: prepared.replyTarget,
1685
- cfg,
1686
- token: ctx.botToken,
1687
- accountId: account.accountId,
1688
- ...prepared.eventScope ? { eventScope: prepared.eventScope } : {},
1689
- identity: slackIdentity,
1690
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {},
1691
- maxChars: Math.min(ctx.textLimit, SLACK_TEXT_LIMIT),
1692
- resolveThreadTs: () => {
1693
- const ts = replyPlan.peekThreadTs();
1694
- if (ts) usedReplyThreadTs ??= ts;
1695
- return ts;
1696
- },
1697
- log: logVerbose,
1698
- warn: logVerbose
1699
- }) : void 0;
1700
- let hasStreamedMessage = false;
1701
- const streamMode = slackStreaming.draftMode;
1702
- const useNativeProgressStreaming = useStreaming && slackStreaming.mode === "progress";
1703
- const progressDraftActive = Boolean(draftStream) || useNativeProgressStreaming;
1704
- const previewToolProgressEnabled = progressDraftActive && resolveChannelStreamingPreviewToolProgress(account.config);
1705
- let shouldYieldDraftProgress = () => false;
1706
- const suppressDefaultToolProgressMessages = resolveChannelStreamingSuppressDefaultToolProgressMessages(account.config, {
1707
- draftStreamActive: Boolean(draftStream) || useNativeProgressStreaming,
1708
- previewToolProgressEnabled,
1709
- previewStreamingEnabled
1710
- });
1711
- let previewToolProgressSuppressed = false;
1712
- let legacyPreviewToolProgressLines = [];
1713
- let nativeTaskState = /* @__PURE__ */ new Map();
1714
- let appendRenderedText = "";
1715
- let appendSourceText = "";
1716
- let nativeProgressCompletionSent = false;
1717
- let nativeProgressTerminalStatus = "complete";
1718
- let nativeProgressChunkKey;
1719
- const progressReceipt = createChannelProgressReceiptTracker();
1720
- let progressReceiptCollapsed = false;
1721
- let pendingNativeProgressReceipt;
1722
- const progressSeed = `${account.accountId}:${message.channel}`;
1723
- const useRichProgressDraft = streamMode === "status_final" && resolveChannelProgressDraftRender(account.config) === "rich";
1724
- const explicitProgressTitle = resolveExplicitSlackProgressTitle(account.config);
1725
- const progressDraftMaxLineChars = resolveChannelProgressDraftMaxLineChars(account.config);
1726
- const waitForNativeProgressStreamStart = async () => {
1727
- if (streamSession || !nativeProgressStreamStartPromise) return true;
1728
- try {
1729
- await nativeProgressStreamStartPromise;
1730
- } catch {
1731
- streamFailed = true;
1732
- return false;
1733
- }
1734
- return !streamFailed;
1735
- };
1736
- const resolveStructuredProgressLines = (lines) => lines.map((line) => {
1737
- if (typeof line !== "string") return line;
1738
- const reasoning = line.startsWith("🧠 ");
1739
- const text = line.replace(/^(?:🧠|💬)\s+/u, "").replace(/^_(.*)_$/su, "$1").trim();
1740
- return {
1741
- ...reasoning ? { id: "reasoning" } : {},
1742
- kind: "item",
1743
- text,
1744
- label: reasoning ? "Reasoning" : "Update",
1745
- prefix: false
1746
- };
1747
- });
1748
- const resolveNativeProgressPlan = (snapshot) => snapshot.plan?.length ? snapshot.plan : void 0;
1749
- const resolveNativeProgressLines = (snapshot) => {
1750
- const lines = resolveStructuredProgressLines(snapshot.lines);
1751
- if (snapshot.plan?.length || !snapshot.planExplanation) return lines;
1752
- const explanationLine = buildChannelProgressDraftLine({
1753
- event: "plan",
1754
- phase: "update",
1755
- explanation: snapshot.planExplanation
1756
- });
1757
- return explanationLine ? [...lines, explanationLine] : lines;
1758
- };
1759
- const combineProgressHeadlineAndExplanation = (headline, explanation) => headline && explanation && headline !== explanation ? `${headline} — ${explanation}` : headline ?? explanation;
1760
- const resolveNativeProgressTitle = (snapshot) => combineProgressHeadlineAndExplanation(explicitProgressTitle ?? snapshot.statusHeadline, snapshot.planExplanation);
1761
- const buildNativeProgressChunks = (snapshot) => streamSession ? buildSlackProgressStreamUpdateChunks({
1762
- title: resolveNativeProgressTitle(snapshot),
1763
- lines: resolveNativeProgressLines(snapshot),
1764
- plan: resolveNativeProgressPlan(snapshot),
1765
- maxLineChars: progressDraftMaxLineChars
1766
- }) : buildSlackProgressStreamStartChunks({
1767
- title: resolveNativeProgressTitle(snapshot),
1768
- lines: resolveNativeProgressLines(snapshot),
1769
- plan: resolveNativeProgressPlan(snapshot),
1770
- maxLineChars: progressDraftMaxLineChars
1771
- });
1772
- const markNativeProgressDelivered = (session, threadTs) => {
1773
- if (session.delivered) observedReplyDelivery = true;
1774
- if (threadTs) {
1775
- usedReplyThreadTs ??= threadTs;
1776
- rememberDeliveredThreadTs("block", threadTs);
1777
- }
1778
- };
1779
- const startNativeProgressStream = async (chunks, chunkKey) => {
1780
- const streamThreadTs = replyPlan.nextThreadTs();
1781
- if (!streamThreadTs) {
1782
- logVerbose("slack-stream: no reply thread target for native progress stream start, falling back");
1783
- streamFailed = true;
1784
- return;
1785
- }
1786
- nativeProgressStreamThreadTs = streamThreadTs;
1787
- const startPromise = (async () => {
1788
- const session = await startSlackStream({
1789
- client: slackClient,
1790
- channel: message.channel,
1791
- threadTs: streamThreadTs,
1792
- chunks,
1793
- taskDisplayMode: "plan",
1794
- ...slackIdentity ? { identity: slackIdentity } : {},
1795
- teamId: await resolveSlackStreamRecipientTeamId({
1796
- client: slackClient,
1797
- token: ctx.botToken,
1798
- userId: message.user,
1799
- fallbackTeamId: slackStreamFallbackTeamId
1800
- }),
1801
- userId: message.user
1802
- });
1803
- streamSession = session;
1804
- return session;
1805
- })();
1806
- nativeProgressStreamStartPromise = startPromise;
1807
- let startedSession;
1808
- try {
1809
- startedSession = await startPromise;
1810
- } finally {
1811
- if (nativeProgressStreamStartPromise === startPromise) nativeProgressStreamStartPromise = null;
1812
- }
1813
- if (startedSession) markNativeProgressDelivered(startedSession, streamThreadTs);
1814
- nativeProgressChunkKey = chunkKey;
1815
- replyPlan.markSent();
1816
- };
1817
- const appendNativeProgressStream = async (chunks, chunkKey) => {
1818
- if (!streamSession) return;
1819
- await appendSlackStream({
1820
- session: streamSession,
1821
- chunks
1822
- });
1823
- markNativeProgressDelivered(streamSession);
1824
- nativeProgressChunkKey = chunkKey;
1825
- };
1826
- const updateNativeProgressStream = async () => {
1827
- const snapshot = progressDraft.getSnapshot();
1828
- const progressLines = resolveNativeProgressLines(snapshot);
1829
- const hasRetirableNativeTasks = [...nativeTaskState.values()].some((task) => task.status !== "complete" && task.status !== "error");
1830
- if (!useNativeProgressStreaming || streamFailed || progressLines.length === 0 && !snapshot.plan?.length && !snapshot.statusHeadline && !explicitProgressTitle && !hasRetirableNativeTasks) return;
1831
- if (!await waitForNativeProgressStreamStart()) return;
1832
- const reconciled = reconcileSlackNativeTaskChunks({
1833
- previousTasks: nativeTaskState,
1834
- chunks: buildNativeProgressChunks(snapshot)
1835
- });
1836
- const chunks = reconciled.chunks;
1837
- if (!chunks?.length) return;
1838
- const chunkKey = JSON.stringify(chunks);
1839
- if (chunkKey === nativeProgressChunkKey) return;
1840
- try {
1841
- if (!streamSession) await startNativeProgressStream(chunks, chunkKey);
1842
- else await appendNativeProgressStream(chunks, chunkKey);
1843
- nativeTaskState = reconciled.tasks;
1844
- } catch (err) {
1845
- runtime.error?.(danger(`slack-stream: native progress stream failed: ${formatSlackError(err)}, falling back`));
1846
- streamFailed = true;
1847
- }
1848
- };
1849
- const resetProgressTurnState = () => {
1850
- progressReceipt.reset();
1851
- progressReceiptCollapsed = false;
1852
- pendingNativeProgressReceipt = void 0;
1853
- };
1854
- const collapseProgressReceipt = async (params) => {
1855
- const { botToken: token } = ctx;
1856
- try {
1857
- await finalizeSlackPreviewEdit({
1858
- client: slackClient,
1859
- token,
1860
- accountId: account.accountId,
1861
- ...params
1862
- });
1863
- progressReceiptCollapsed = true;
1864
- } catch (err) {
1865
- logVerbose(`slack: progress receipt edit failed (${formatSlackError(err)})`);
1866
- }
1867
- };
1868
- const progressDraft = createChannelProgressDraftCompositor({
1869
- entry: account.config,
1870
- mode: slackStreaming.mode,
1871
- active: progressDraftActive && streamMode === "status_final",
1872
- seed: progressSeed,
1873
- formatLine: escapeSlackMrkdwn,
1874
- reasoningLinePrefix: "🧠 ",
1875
- commentaryLinePrefix: "💬 ",
1876
- reasoningGate: previewToolProgressEnabled,
1877
- commentaryItalics: false,
1878
- updateOnLineChange: useNativeProgressStreaming || useRichProgressDraft,
1879
- update: async (previewText, options) => {
1880
- if (useNativeProgressStreaming) {
1881
- await updateNativeProgressStream();
1882
- return;
1883
- }
1884
- if (!draftStream) return;
1885
- const snapshot = progressDraft.getSnapshot();
1886
- const structuredLines = resolveStructuredProgressLines(options?.lines ?? snapshot.lines);
1887
- const richNarration = combineProgressHeadlineAndExplanation(snapshot.statusHeadline, snapshot.planExplanation);
1888
- const richProgressBlocks = useRichProgressDraft ? buildSlackProgressDraftBlocks({
1889
- title: explicitProgressTitle,
1890
- lines: structuredLines,
1891
- plan: snapshot.plan,
1892
- narration: richNarration,
1893
- maxLineChars: progressDraftMaxLineChars
1894
- }) : void 0;
1895
- draftStream.update(useRichProgressDraft && richProgressBlocks ? {
1896
- text: previewText,
1897
- blocks: richProgressBlocks
1898
- } : previewText);
1899
- hasStreamedMessage = true;
1900
- if (options?.flush) await draftStream.flush();
1901
- }
1902
- });
1903
- const commentaryProgressEnabled = progressDraft.commentaryProgressEnabled;
1904
- const buildNativeProgressCompletionChunks = (finalInProgressStatus) => {
1905
- const snapshot = progressDraft.getSnapshot();
1906
- const lines = resolveNativeProgressLines(snapshot);
1907
- const hasRetirableNativeTasks = [...nativeTaskState.values()].some((task) => task.status !== "complete" && task.status !== "error");
1908
- if (lines.length === 0 && !snapshot.plan?.length && !hasRetirableNativeTasks) return;
1909
- return reconcileSlackNativeTaskChunks({
1910
- previousTasks: nativeTaskState,
1911
- chunks: buildSlackProgressStreamCompletionChunks({
1912
- title: resolveNativeProgressTitle(snapshot),
1913
- lines,
1914
- plan: resolveNativeProgressPlan(snapshot),
1915
- maxLineChars: progressDraftMaxLineChars,
1916
- finalInProgressStatus
1917
- })
1918
- }).chunks;
1919
- };
1920
- const finishNativeProgressTurn = async (completionChunks) => {
1921
- if (nativeProgressStreamStartPromise) await nativeProgressStreamStartPromise.catch(() => null);
1922
- const session = streamSession;
1923
- if (session && !session.stopped) try {
1924
- if (completionChunks?.length) nativeProgressCompletionSent = true;
1925
- const stopResult = await stopSlackStream({
1926
- session,
1927
- ...completionChunks?.length ? { chunks: completionChunks } : {},
1928
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {}
1929
- });
1930
- acknowledgeStoppedStreamedDeliveries(session, stopResult?.messageId);
1931
- if (pendingNativeProgressReceipt && stopResult?.messageId) await collapseProgressReceipt({
1932
- channelId: session.channel,
1933
- messageId: stopResult.messageId,
1934
- text: pendingNativeProgressReceipt,
1935
- threadTs: session.threadTs
1936
- });
1937
- } catch (err) {
1938
- const error = formatSlackError(err);
1939
- emitAcknowledgedStreamedDeliveries();
1940
- emitFailedPendingStreamedDeliveries(error);
1941
- logVerbose(`slack-stream: failed to rotate native progress stream (${error})`);
1942
- }
1943
- streamSession = null;
1944
- nativeProgressStreamStartPromise = null;
1945
- nativeProgressStreamThreadTs = void 0;
1946
- streamFailed = false;
1947
- };
1948
- const pushPlanProgress = async (steps, explanation) => {
1949
- if (streamMode === "status_final") {
1950
- await progressDraft.pushPlanProgress(steps, { explanation });
1951
- return;
1952
- }
1953
- if (previewToolProgressSuppressed || !draftStream) return;
1954
- const text = formatChannelProgressDraftText({
1955
- entry: account.config,
1956
- lines: legacyPreviewToolProgressLines,
1957
- seed: progressSeed,
1958
- formatLine: escapeSlackMrkdwn,
1959
- narration: explanation,
1960
- plan: steps
1961
- });
1962
- if (text) {
1963
- draftStream.update(text);
1964
- hasStreamedMessage = true;
1965
- }
1966
- };
1967
- const pushPreviewProgress = async (line, options) => {
1968
- if (!draftStream && !useNativeProgressStreaming) return;
1969
- if (options?.toolName !== void 0 && !isChannelProgressDraftWorkToolName(options.toolName)) return;
1970
- const normalized = line?.text.replace(/\s+/g, " ").trim();
1971
- if (streamMode === "status_final") {
1972
- if (!line || !normalized) {
1973
- await progressDraft.noteActivity();
1974
- return;
1975
- }
1976
- await progressDraft.pushToolProgress(line, options);
1977
- return;
1978
- }
1979
- if (!line || !normalized || !draftStream || !previewToolProgressEnabled || previewToolProgressSuppressed) return;
1980
- const nextLines = mergeChannelProgressDraftLine(legacyPreviewToolProgressLines, line, { maxLines: resolveChannelProgressDraftMaxLines(account.config) });
1981
- if (nextLines === legacyPreviewToolProgressLines) return;
1982
- legacyPreviewToolProgressLines = nextLines;
1983
- draftStream.update(formatChannelProgressDraftText({
1984
- entry: account.config,
1985
- lines: legacyPreviewToolProgressLines,
1986
- seed: progressSeed,
1987
- formatLine: escapeSlackMrkdwn
1988
- }));
1989
- hasStreamedMessage = true;
1990
- };
1991
- const updateDraftFromPartial = (text) => {
1992
- const trimmed = text?.trimEnd();
1993
- if (!trimmed) return;
1994
- if (streamMode === "append") {
1995
- previewToolProgressSuppressed = true;
1996
- legacyPreviewToolProgressLines = [];
1997
- const next = applyAppendOnlyStreamUpdate({
1998
- incoming: trimmed,
1999
- rendered: appendRenderedText,
2000
- source: appendSourceText
2001
- });
2002
- appendRenderedText = next.rendered;
2003
- appendSourceText = next.source;
2004
- if (!next.changed) return;
2005
- draftStream?.update(next.rendered);
2006
- hasStreamedMessage = true;
2007
- return;
2008
- }
2009
- if (streamMode === "status_final") return;
2010
- previewToolProgressSuppressed = true;
2011
- legacyPreviewToolProgressLines = [];
2012
- draftStream?.update(trimmed);
2013
- hasStreamedMessage = true;
2014
- };
2015
- const pushReasoningProgress = async (payload) => {
2016
- if (!payload?.text) return;
2017
- if (streamMode !== "status_final") {
2018
- const normalized = progressDraft.mergeReasoningProgress(payload.text, { snapshot: payload.isReasoningSnapshot === true }).replace(/^_(.*)_$/su, "$1").trim();
2019
- if (!normalized) return;
2020
- await pushPreviewProgress({
2021
- id: "reasoning",
2022
- kind: "item",
2023
- text: normalized,
2024
- label: "Reasoning"
2025
- });
2026
- return;
2027
- }
2028
- progressReceipt.noteReasoning();
2029
- await progressDraft.pushReasoningProgress(payload.text, { snapshot: payload.isReasoningSnapshot === true });
2030
- };
2031
- const resetDraftDeliveryState = () => {
2032
- hasStreamedMessage = false;
2033
- appendRenderedText = "";
2034
- appendSourceText = "";
2035
- };
2036
- const resetDraftProgressState = () => {
2037
- progressDraft.resetReasoningProgress();
2038
- previewToolProgressSuppressed = false;
2039
- legacyPreviewToolProgressLines = [];
2040
- };
2041
- const beginNewProgressTurn = async (options) => {
2042
- const completionChunks = useNativeProgressStreaming && !nativeProgressCompletionSent ? buildNativeProgressCompletionChunks(nativeProgressTerminalStatus) : void 0;
2043
- if (!progressDraft.beginNewTurn(options)) return false;
2044
- if (useNativeProgressStreaming) await finishNativeProgressTurn(completionChunks);
2045
- else draftStream?.forceNewMessage();
2046
- resetProgressTurnState();
2047
- nativeTaskState = /* @__PURE__ */ new Map();
2048
- nativeProgressCompletionSent = false;
2049
- nativeProgressTerminalStatus = "complete";
2050
- nativeProgressChunkKey = void 0;
2051
- draftPreviewCommitted = false;
2052
- observedFinalReplyDelivery = false;
2053
- deliveryTracker = createSlackEventDeliveryTracker();
2054
- progressReceiptCollapsed = false;
2055
- return true;
2056
- };
2057
- const onDraftBoundary = !shouldUseDraftStream && !useNativeProgressStreaming ? void 0 : async () => {
2058
- if (streamMode === "status_final") {
2059
- await beginNewProgressTurn();
2060
- return;
2061
- }
2062
- if (hasStreamedMessage) draftStream?.forceNewMessage();
2063
- resetDraftDeliveryState();
2064
- resetDraftProgressState();
2065
- };
2066
- const onQueuedFollowupAdmitted = !shouldUseDraftStream && !useNativeProgressStreaming ? void 0 : async () => {
2067
- await draftStream?.flush();
2068
- draftPreviewCommitted = false;
2069
- observedFinalReplyDelivery = false;
2070
- if (streamMode === "status_final") await beginNewProgressTurn({ force: true });
2071
- else draftStream?.forceNewMessage();
2072
- deliveryTracker = createSlackEventDeliveryTracker();
2073
- resetDraftDeliveryState();
2074
- resetDraftProgressState();
2075
- };
2076
- let dispatchError;
2077
- let queuedFinal = false;
2078
- let counts = {};
2079
- try {
2080
- const turnResult = await dispatchChannelInboundTurn({
2081
- cfg,
2082
- channel: "slack",
2083
- accountId: route.accountId,
2084
- route: {
2085
- agentId: route.agentId,
2086
- sessionKey: route.sessionKey
2087
- },
2088
- ctxPayload: prepared.ctxPayload,
2089
- dispatcherOptions: {
2090
- ...replyPipeline,
2091
- humanDelay: resolveHumanDelayConfig(cfg, route.agentId)
2092
- },
2093
- delivery: {
2094
- deliver: deliverSlackPayload,
2095
- onError: onSlackDeliveryError
2096
- },
2097
- record: prepared.turn.record,
2098
- history: prepared.turn.history,
2099
- botLoopProtection: resolveSlackBotLoopProtection(prepared),
2100
- replyOptions: {
2101
- ...prepared.turnAdoptionLifecycle ? { turnAdoptionLifecycle: prepared.turnAdoptionLifecycle } : {},
2102
- skillFilter: prepared.channelConfig?.skills,
2103
- sourceReplyDeliveryMode,
2104
- suppressTyping: suppressRoomEventTyping ? true : void 0,
2105
- hasRepliedRef,
2106
- disableBlockStreaming,
2107
- onModelSelected,
2108
- suppressDefaultToolProgressMessages: suppressDefaultToolProgressMessages ? true : void 0,
2109
- commentaryProgressEnabled: commentaryProgressEnabled ? true : void 0,
2110
- progressPreambleEnabled: progressDraftActive && slackStreaming.mode === "progress" ? true : void 0,
2111
- commentaryPayloadsEnabled: commentaryProgressEnabled ? true : void 0,
2112
- onVerboseProgressVisibility: commentaryProgressEnabled ? (isActive) => {
2113
- shouldYieldDraftProgress = isActive;
2114
- } : void 0,
2115
- allowProgressCallbacksWhenSourceDeliverySuppressed: sourceReplyDeliveryMode === "message_tool_only" && statusReactionsEnabled ? true : void 0,
2116
- allowToolLifecycleWhenProgressHidden: statusReactionsEnabled ? true : void 0,
2117
- onPartialReply: useStreaming ? void 0 : !previewStreamingEnabled ? void 0 : async (payload) => {
2118
- updateDraftFromPartial(payload.text);
2119
- },
2120
- onAssistantMessageStart: onDraftBoundary,
2121
- onReasoningEnd: async () => {
2122
- progressReceipt.closeReasoning();
2123
- await onDraftBoundary?.();
2124
- },
2125
- onQueuedFollowupAdmitted,
2126
- onReasoningStream: statusReactionsEnabled || previewToolProgressEnabled ? async (payload) => {
2127
- await pushReasoningProgress(payload);
2128
- if (!statusReactionsEnabled) return;
2129
- await statusReactions.setThinking();
2130
- } : void 0,
2131
- onToolStart: async (payload) => {
2132
- if (statusReactionsEnabled) await statusReactions.setTool(payload.name);
2133
- if (payload.phase === "start") progressReceipt.noteToolCall(payload.name);
2134
- await pushPreviewProgress(buildChannelProgressDraftLineForEntry(account.config, {
2135
- event: "tool",
2136
- itemId: payload.itemId,
2137
- toolCallId: payload.toolCallId,
2138
- name: payload.name,
2139
- phase: payload.phase,
2140
- args: payload.args
2141
- }, payload.detailMode ? { detailMode: payload.detailMode } : void 0), { toolName: payload.name });
2142
- },
2143
- onItemEvent: async (payload) => {
2144
- if (streamMode === "status_final" && payload.kind === "preamble") {
2145
- if (shouldYieldDraftProgress()) return;
2146
- await progressDraft.pushPreambleHeadline(payload.progressText, { itemId: payload.itemId });
2147
- if (commentaryProgressEnabled) {
2148
- if (await progressDraft.pushCommentaryProgress(payload.progressText, { itemId: payload.itemId })) progressReceipt.noteCommentary(payload.itemId, payload.progressText);
2149
- }
2150
- return;
2151
- }
2152
- await pushPreviewProgress(buildChannelProgressDraftLineForEntry(account.config, {
2153
- event: "item",
2154
- itemId: payload.itemId,
2155
- toolCallId: payload.toolCallId,
2156
- itemKind: payload.kind,
2157
- title: payload.title,
2158
- name: payload.name,
2159
- phase: payload.phase,
2160
- status: payload.status,
2161
- summary: payload.summary,
2162
- progressText: payload.progressText,
2163
- meta: payload.meta
2164
- }));
2165
- },
2166
- onPlanUpdate: async (payload) => {
2167
- if (payload.phase !== "update") return;
2168
- await pushPlanProgress(payload.steps, payload.explanation);
2169
- },
2170
- onApprovalEvent: async (payload) => {
2171
- if (payload.phase !== "requested") return;
2172
- await pushPreviewProgress(buildChannelProgressDraftLine({
2173
- event: "approval",
2174
- phase: payload.phase,
2175
- title: payload.title,
2176
- command: payload.command,
2177
- reason: payload.reason,
2178
- message: payload.message
2179
- }));
2180
- },
2181
- onCommandOutput: async (payload) => {
2182
- if (payload.phase !== "end") return;
2183
- await pushPreviewProgress(buildChannelProgressDraftLine({
2184
- event: "command-output",
2185
- itemId: payload.itemId,
2186
- toolCallId: payload.toolCallId,
2187
- phase: payload.phase,
2188
- title: payload.title,
2189
- name: payload.name,
2190
- status: payload.status,
2191
- exitCode: payload.exitCode
2192
- }));
2193
- },
2194
- onPatchSummary: async (payload) => {
2195
- if (payload.phase !== "end") return;
2196
- await pushPreviewProgress(buildChannelProgressDraftLine({
2197
- event: "patch",
2198
- itemId: payload.itemId,
2199
- toolCallId: payload.toolCallId,
2200
- phase: payload.phase,
2201
- title: payload.title,
2202
- name: payload.name,
2203
- added: payload.added,
2204
- modified: payload.modified,
2205
- deleted: payload.deleted,
2206
- summary: payload.summary
2207
- }));
2208
- }
2209
- }
2210
- });
2211
- if (turnResult.dispatched) {
2212
- const result = turnResult.dispatchResult;
2213
- queuedFinal = result.queuedFinal;
2214
- counts = result.counts;
2215
- }
2216
- } catch (err) {
2217
- dispatchError = err;
2218
- } finally {
2219
- progressDraft.cancel();
2220
- await draftStream?.discardPending();
2221
- }
2222
- let streamFallbackDelivered = false;
2223
- const finalStream = streamSession;
2224
- if (finalStream && !finalStream.stopped) try {
2225
- const completionChunks = useNativeProgressStreaming && !nativeProgressCompletionSent ? buildNativeProgressCompletionChunks(dispatchError ? "error" : nativeProgressTerminalStatus) : void 0;
2226
- if (completionChunks?.length) nativeProgressCompletionSent = true;
2227
- const stopResult = await stopSlackStream({
2228
- session: finalStream,
2229
- ...completionChunks?.length ? { chunks: completionChunks } : {},
2230
- ...slackMessageMetadata ? { metadata: slackMessageMetadata } : {}
2231
- });
2232
- acknowledgeStoppedStreamedDeliveries(finalStream, stopResult?.messageId);
2233
- if (pendingNativeProgressReceipt && stopResult?.messageId && !progressReceiptCollapsed) await collapseProgressReceipt({
2234
- channelId: finalStream.channel,
2235
- messageId: stopResult.messageId,
2236
- text: pendingNativeProgressReceipt,
2237
- threadTs: finalStream.threadTs
2238
- });
2239
- } catch (err) {
2240
- if (err instanceof SlackStreamNotDeliveredError) {
2241
- streamFallbackDelivered = await deliverPendingStreamFallback(finalStream, err);
2242
- if (!streamFallbackDelivered) dispatchError ??= err;
2243
- } else {
2244
- const error = formatSlackError(err);
2245
- emitAcknowledgedStreamedDeliveries();
2246
- emitFailedPendingStreamedDeliveries(error);
2247
- runtime.error?.(danger(`slack-stream: failed to stop stream: ${error}`));
2248
- if (!finalStream.delivered) dispatchError ??= err;
2249
- }
2250
- }
2251
- for (const kind of [
2252
- "tool",
2253
- "block",
2254
- "final"
2255
- ]) {
2256
- const failedStreamedCount = streamedDeliveries.filter((delivery) => delivery.kind === kind && delivery.outcome === "failure").length;
2257
- const additionalFailedStreamed = Math.max(0, failedStreamedCount - streamedFailuresOwnedByDispatcher[kind]);
2258
- if (additionalFailedStreamed > 0) counts = {
2259
- ...counts,
2260
- [kind]: Math.max(0, (counts[kind] ?? 0) - additionalFailedStreamed)
2261
- };
2262
- }
2263
- queuedFinal = queuedFinal && (counts.final ?? 0) > 0;
2264
- const anyReplyDelivered = hasVisibleInboundReplyDispatch({
2265
- queuedFinal,
2266
- counts
2267
- }, {
2268
- observedReplyDelivery,
2269
- fallbackDelivered: streamFallbackDelivered
2270
- });
2271
- if (statusReactionsEnabled) if (dispatchError) await statusReactions.setError();
2272
- else if (anyReplyDelivered) {
2273
- await statusReactions.setDone();
2274
- statusReactions.restoreInitial();
2275
- } else await statusReactions.restoreInitial();
2276
- const participationThreadTs = usedReplyThreadTs ?? statusThreadTs;
2277
- if (anyReplyDelivered && participationThreadTs) recordSlackThreadParticipation(account.accountId, message.channel, participationThreadTs, {
2278
- agentId: route.agentId,
2279
- ...prepared.eventScope ? { teamId: prepared.eventScope.teamId } : {}
2280
- });
2281
- if (dispatchError) throw toLintErrorObject(dispatchError, "Slack dispatch failed");
2282
- if (!anyReplyDelivered && !draftPreviewCommitted) {
2283
- await draftStream?.clear();
2284
- return;
2285
- }
2286
- if (shouldLogVerbose()) {
2287
- const finalCount = counts.final;
2288
- logVerbose(`slack: delivered ${finalCount} reply${finalCount === 1 ? "" : "ies"} to ${prepared.replyTarget}`);
2289
- }
2290
- }
2291
- function toLintErrorObject(value, fallbackMessage) {
2292
- if (value instanceof Error) return value;
2293
- if (typeof value === "string") return new Error(value);
2294
- const error = new Error(fallbackMessage, { cause: value });
2295
- if (typeof value === "object" && value !== null || typeof value === "function") Object.assign(error, value);
2296
- return error;
2297
- }
2298
- //#endregion
2299
- //#region extensions/slack/src/agent-context.ts
2300
- function asRecord(value) {
2301
- return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
2302
- }
2303
- function trimmedString(value) {
2304
- return typeof value === "string" && value.trim() ? value.trim() : void 0;
2305
- }
2306
- function normalizeEntity(value) {
2307
- const entity = asRecord(value);
2308
- const type = trimmedString(entity?.type);
2309
- if (!entity || !type) return;
2310
- const teamId = trimmedString(entity.team_id);
2311
- if (type === "slack#/types/channel_id" || type === "slack#/types/canvas_id" || type === "slack#/types/list_id") {
2312
- const entityValue = trimmedString(entity.value);
2313
- return entityValue ? {
2314
- type,
2315
- value: entityValue,
2316
- ...teamId ? { team_id: teamId } : {}
2317
- } : void 0;
2318
- }
2319
- if (type !== "slack#/types/message_context") return;
2320
- const message = asRecord(entity.value);
2321
- const channelId = trimmedString(message?.channel_id);
2322
- const messageTs = trimmedString(message?.message_ts);
2323
- return channelId && messageTs ? {
2324
- type,
2325
- value: {
2326
- channel_id: channelId,
2327
- message_ts: messageTs
2328
- },
2329
- ...teamId ? { team_id: teamId } : {}
2330
- } : void 0;
2331
- }
2332
- function isSlackAppContext(value) {
2333
- return Boolean(asRecord(value));
2334
- }
2335
- function normalizeSlackAppContextEntities(value) {
2336
- const context = asRecord(value);
2337
- if (!Array.isArray(context?.entities)) return [];
2338
- return context.entities.flatMap((entity) => {
2339
- const normalized = normalizeEntity(entity);
2340
- return normalized ? [normalized] : [];
2341
- });
2342
- }
2343
- //#endregion
2344
- //#region extensions/slack/src/monitor/message-handler/preflight-audio.ts
2345
- const SLACK_DEFAULT_ECHO_TRANSCRIPT_FORMAT = "📝 \"{transcript}\"";
2346
- const loadSlackPreflightAudioRuntime = createLazyRuntimeModule(() => import("./preflight-audio.runtime-D5Bgags0.js"));
2347
- function isSlackAudioFile(file) {
2348
- if (file.subtype === "slack_audio") return true;
2349
- if ((file.mimetype?.split(";")[0]?.trim().toLowerCase())?.startsWith("audio/")) return true;
2350
- return Boolean(mimeTypeFromFilePath(file.name)?.startsWith("audio/"));
2351
- }
2352
- function findCaptionlessSlackAudioFile(message) {
2353
- if (message.text?.trim()) return;
2354
- return message.files?.slice(0, 8).find(isSlackAudioFile);
2355
- }
2356
- function formatSlackAudioTranscriptForAgent(params) {
2357
- return [`[Audio transcript (machine-generated, untrusted)]: ${JSON.stringify(params.transcript)}`, params.rawBody].filter(Boolean).join("\n");
2358
- }
2359
- function suppressSlackPreflightAudioEcho(cfg) {
2360
- const audio = cfg.tools?.media?.audio;
2361
- if (!audio?.echoTranscript) return cfg;
2362
- return {
2363
- ...cfg,
2364
- tools: {
2365
- ...cfg.tools,
2366
- media: {
2367
- ...cfg.tools?.media,
2368
- audio: {
2369
- ...audio,
2370
- echoTranscript: false
2371
- }
2372
- }
2373
- }
2374
- };
2375
- }
2376
- async function resolveSlackPreflightAudioTranscript(params) {
2377
- const mediaIndex = params.media.findIndex((entry) => entry.contentType?.toLowerCase().startsWith("audio/"));
2378
- if (mediaIndex < 0) return null;
2379
- try {
2380
- const { transcribeFirstAudio } = await loadSlackPreflightAudioRuntime();
2381
- const transcript = await transcribeFirstAudio({
2382
- ctx: {
2383
- media: [...params.media],
2384
- Provider: "slack",
2385
- Surface: "slack",
2386
- OriginatingChannel: "slack",
2387
- OriginatingTo: params.originatingTo,
2388
- AccountId: params.accountId,
2389
- MessageThreadId: params.messageThreadId,
2390
- ChatType: "channel",
2391
- SessionKey: params.sessionKey
2392
- },
2393
- cfg: suppressSlackPreflightAudioEcho(params.cfg)
2394
- });
2395
- return transcript ? {
2396
- transcript,
2397
- mediaIndex
2398
- } : null;
2399
- } catch (err) {
2400
- logVerbose(`slack: audio preflight transcription failed: ${String(err)}`);
2401
- return null;
2402
- }
2403
- }
2404
- function formatSlackAudioTranscriptEcho(transcript, format) {
2405
- return format.replace("{transcript}", () => transcript);
2406
- }
2407
- async function sendSlackPreflightAudioTranscriptEcho(params) {
2408
- const audio = params.cfg.tools?.media?.audio;
2409
- if (!audio?.echoTranscript) return;
2410
- const text = formatSlackAudioTranscriptEcho(params.transcript, audio.echoFormat ?? SLACK_DEFAULT_ECHO_TRANSCRIPT_FORMAT);
2411
- try {
2412
- const { sendDurableMessageBatch } = await loadSlackPreflightAudioRuntime();
2413
- const send = await sendDurableMessageBatch({
2414
- cfg: params.cfg,
2415
- channel: "slack",
2416
- to: params.originatingTo,
2417
- accountId: params.accountId,
2418
- threadId: params.messageThreadId,
2419
- payloads: [{ text }],
2420
- bestEffort: true,
2421
- durability: "best_effort"
2422
- });
2423
- if (send.status === "failed") throw send.error;
2424
- } catch (err) {
2425
- logVerbose(`slack: audio transcript echo failed: ${String(err)}`);
2426
- }
2427
- }
2428
- async function discardSlackPreflightMedia(media) {
2429
- await Promise.allSettled((media ?? []).map((entry) => fs.rm(entry.path, { force: true })));
2430
- }
2431
- //#endregion
2432
- //#region extensions/slack/src/monitor/message-handler/prepare-content.ts
2433
- const SLACK_MENTION_RESOLUTION_CONCURRENCY = 4;
2434
- const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
2435
- const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
2436
- const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-D51foiwR.js").then((n) => n.g));
2437
- function collectUniqueSlackMentionIds$1(texts) {
2438
- const seen = /* @__PURE__ */ new Set();
2439
- const mentionIds = [];
2440
- for (const text of texts) {
2441
- if (!text) continue;
2442
- SLACK_USER_MENTION_RE$1.lastIndex = 0;
2443
- for (const match of text.matchAll(SLACK_USER_MENTION_RE$1)) {
2444
- const userId = match[1];
2445
- if (!userId || seen.has(userId)) continue;
2446
- seen.add(userId);
2447
- mentionIds.push(userId);
2448
- }
2449
- }
2450
- return mentionIds;
2451
- }
2452
- function renderSlackUserMentions(text, renderedMentions) {
2453
- if (!text || renderedMentions.size === 0) return text;
2454
- SLACK_USER_MENTION_RE$1.lastIndex = 0;
2455
- return text.replace(SLACK_USER_MENTION_RE$1, (full, userId) => {
2456
- return renderedMentions.get(userId) ?? full;
2457
- });
2458
- }
2459
- function filterInheritedParentFiles(params) {
2460
- const { files, isThreadReply, threadStarter } = params;
2461
- if (!isThreadReply || !files?.length) return files;
2462
- if (!threadStarter?.files?.length) return files;
2463
- const starterFileIds = new Set(threadStarter.files.map((file) => file.id));
2464
- const filtered = files.filter((file) => !file.id || !starterFileIds.has(file.id));
2465
- if (filtered.length < files.length) logVerbose(`slack: filtered ${files.length - filtered.length} inherited parent file(s) from thread reply`);
2466
- return filtered.length > 0 ? filtered : void 0;
2467
- }
2468
- async function resolveSlackMessageContent(params) {
2469
- const ownFiles = filterInheritedParentFiles({
2470
- files: params.message.files,
2471
- isThreadReply: params.isThreadReply,
2472
- threadStarter: params.threadStarter
2473
- });
2474
- const mediaPromise = ownFiles && ownFiles.length > 0 ? loadSlackMediaModule$1().then(({ resolveSlackMedia }) => resolveSlackMedia({
2475
- files: ownFiles,
2476
- client: params.client,
2477
- token: params.botToken,
2478
- maxBytes: params.mediaMaxBytes,
2479
- readIdleTimeoutMs: params.mediaReadIdleTimeoutMs,
2480
- totalTimeoutMs: params.mediaTotalTimeoutMs,
2481
- abortSignal: params.abortSignal,
2482
- preloadedMedia: params.preloadedMedia
2483
- })) : Promise.resolve(null);
2484
- const attachmentContentPromise = params.message.attachments && params.message.attachments.length > 0 ? loadSlackMediaModule$1().then(({ resolveSlackAttachmentContent }) => resolveSlackAttachmentContent({
2485
- attachments: params.message.attachments,
2486
- client: params.client,
2487
- token: params.botToken,
2488
- maxBytes: params.mediaMaxBytes,
2489
- readIdleTimeoutMs: params.mediaReadIdleTimeoutMs,
2490
- totalTimeoutMs: params.mediaTotalTimeoutMs,
2491
- abortSignal: params.abortSignal
2492
- })) : Promise.resolve(null);
2493
- const [media, attachmentContent] = await Promise.all([mediaPromise, attachmentContentPromise]);
2494
- const mergedMedia = [...media ?? [], ...attachmentContent?.media ?? []];
2495
- const effectiveDirectMedia = mergedMedia.length > 0 ? mergedMedia : null;
2496
- const mediaPlaceholder = effectiveDirectMedia ? effectiveDirectMedia.map((item) => item.placeholder).join(" ") : void 0;
2497
- const fallbackFiles = ownFiles ?? [];
2498
- const fileOnlyFallback = !mediaPlaceholder && fallbackFiles.length > 0 ? fallbackFiles.slice(0, 8).map((file) => formatSlackFileReference(file)).join(", ") : void 0;
2499
- const fileOnlyPlaceholder = fileOnlyFallback ? `[Slack file: ${fileOnlyFallback}]` : void 0;
2500
- let botAttachmentText;
2501
- if (params.isBotMessage && !attachmentContent?.text) {
2502
- const botAttachmentTextParts = [];
2503
- for (const attachment of params.message.attachments ?? []) {
2504
- const text = normalizeOptionalString(attachment.text) ?? normalizeOptionalString(attachment.fallback);
2505
- if (text) botAttachmentTextParts.push(text);
2506
- }
2507
- botAttachmentText = botAttachmentTextParts.length > 0 ? botAttachmentTextParts.join("\n") : void 0;
2508
- }
2509
- const blocksText = resolveSlackBlocksText(params.message.blocks);
2510
- const textParts = [
2511
- chooseSlackPrimaryText({
2512
- messageText: normalizeOptionalString(params.message.text),
2513
- blocksText
2514
- }),
2515
- attachmentContent?.text,
2516
- botAttachmentText
2517
- ];
2518
- const renderedMentions = /* @__PURE__ */ new Map();
2519
- const resolveUserName = params.resolveUserName;
2520
- if (resolveUserName) {
2521
- const mentionIds = collectUniqueSlackMentionIds$1(textParts);
2522
- const lookupIds = mentionIds.slice(0, SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE);
2523
- const skippedLookups = mentionIds.length - lookupIds.length;
2524
- if (skippedLookups > 0) logVerbose(`slack: skipping ${skippedLookups} mention lookup(s) beyond per-message cap (${SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE})`);
2525
- const { results } = await runTasksWithConcurrency({
2526
- tasks: lookupIds.map((userId) => async () => {
2527
- const renderedName = normalizeOptionalString((await resolveUserName(userId))?.name);
2528
- return {
2529
- userId,
2530
- rendered: renderedName ? `<@${userId}> (${renderedName})` : null
2531
- };
2532
- }),
2533
- limit: SLACK_MENTION_RESOLUTION_CONCURRENCY
2534
- });
2535
- for (const result of results) {
2536
- if (!result) continue;
2537
- renderedMentions.set(result.userId, result.rendered);
2538
- }
2539
- }
2540
- const rawBody = [
2541
- renderSlackUserMentions(textParts[0], renderedMentions),
2542
- renderSlackUserMentions(textParts[1], renderedMentions),
2543
- renderSlackUserMentions(textParts[2], renderedMentions),
2544
- mediaPlaceholder,
2545
- fileOnlyPlaceholder
2546
- ].filter(Boolean).join("\n") || "";
2547
- if (!rawBody) return null;
2548
- return {
2549
- rawBody,
2550
- effectiveDirectMedia
2551
- };
2552
- }
2553
- //#endregion
2554
- //#region extensions/slack/src/monitor/message-handler/prepare-dm-history.ts
2555
- function resolveSlackDmHistoryLimit(params) {
2556
- const override = params.userId && params.account.config.dms?.[params.userId]?.historyLimit !== void 0 ? params.account.config.dms[params.userId]?.historyLimit : void 0;
2557
- return Math.max(0, override ?? params.defaultLimit);
2558
- }
2559
- async function resolveSlackDmHistoryContext(params) {
2560
- const maxMessages = Math.max(0, Math.floor(params.limit));
2561
- if (maxMessages <= 0) return {
2562
- body: void 0,
2563
- inboundHistory: void 0
2564
- };
2565
- try {
2566
- const messages = ((await (params.eventScope?.client ?? params.ctx.app.client).conversations.history({
2567
- token: params.ctx.botToken,
2568
- channel: params.channelId,
2569
- ...params.currentMessageTs ? {
2570
- latest: params.currentMessageTs,
2571
- inclusive: true
2572
- } : {},
2573
- limit: maxMessages + 1
2574
- })).messages ?? []).filter((message) => {
2575
- if (params.currentMessageTs && message.ts === params.currentMessageTs) return false;
2576
- return Boolean(normalizeOptionalString(message.text));
2577
- }).slice(0, maxMessages).toReversed();
2578
- if (messages.length === 0) return {
2579
- body: void 0,
2580
- inboundHistory: void 0
2581
- };
2582
- const userNames = /* @__PURE__ */ new Map();
2583
- const resolveUserLabel = async (userId) => {
2584
- const cached = userNames.get(userId);
2585
- if (cached) return cached;
2586
- const label = normalizeOptionalString((await params.ctx.resolveUserName(userId, params.eventScope)).name) ?? userId;
2587
- userNames.set(userId, label);
2588
- return label;
2589
- };
2590
- const entries = [];
2591
- const formatted = [];
2592
- for (const message of messages) {
2593
- const body = normalizeOptionalString(message.text);
2594
- if (!body) continue;
2595
- const isCurrentBot = params.ctx.botUserId && message.user === params.ctx.botUserId || params.ctx.botId && message.bot_id === params.ctx.botId;
2596
- const role = isCurrentBot || message.bot_id ? "assistant" : "user";
2597
- const sender = `${isCurrentBot ? "Assistant" : message.user ? await resolveUserLabel(message.user) : normalizeOptionalString(message.username) ?? (message.bot_id ? "Bot" : "Unknown")} (${role})`;
2598
- const timestamp = resolveSlackTimestampMs(message.ts);
2599
- entries.push({
2600
- sender,
2601
- body,
2602
- timestamp
2603
- });
2604
- formatted.push(formatInboundEnvelope({
2605
- channel: "Slack",
2606
- from: sender,
2607
- timestamp,
2608
- body: `${body}\n[slack message id: ${message.ts ?? "unknown"} channel: ${params.channelId}]`,
2609
- chatType: "direct",
2610
- envelope: params.envelopeOptions
2611
- }));
2612
- }
2613
- return {
2614
- body: formatted.length > 0 ? formatted.join("\n\n") : void 0,
2615
- inboundHistory: entries.length > 0 ? entries : void 0
2616
- };
2617
- } catch (err) {
2618
- logVerbose(`slack: failed to fetch DM history for channel ${params.channelId}: ${formatErrorMessage(err)}`);
2619
- return {
2620
- body: void 0,
2621
- inboundHistory: void 0
2622
- };
2623
- }
2624
- }
2625
- //#endregion
2626
- //#region extensions/slack/src/monitor/message-handler/prepare-routing.ts
2627
- const slackRouteBindingConfigCache = /* @__PURE__ */ new WeakMap();
2628
- function slackTargetDefaultKindForPeer(kind) {
2629
- return kind === "direct" ? "user" : "channel";
2630
- }
2631
- function slackTargetKindMatchesPeer(peerKind, targetKind) {
2632
- if (targetKind === "user") return peerKind === "direct";
2633
- return peerKind === "channel" || peerKind === "group";
2634
- }
2635
- function normalizeSlackRouteBindingPeer(peer) {
2636
- const rawId = peer.id.trim();
2637
- if (!rawId || rawId === "*") return peer;
2638
- const target = (() => {
2639
- try {
2640
- return parseSlackTarget(rawId, { defaultKind: slackTargetDefaultKindForPeer(peer.kind) });
2641
- } catch {
2642
- return;
2643
- }
2644
- })();
2645
- if (!target || !slackTargetKindMatchesPeer(peer.kind, target.kind) || target.id === peer.id) return peer;
2646
- return {
2647
- ...peer,
2648
- id: target.id
2649
- };
2650
- }
2651
- function normalizeSlackRouteBindingConfig(cfg) {
2652
- const bindings = cfg.bindings;
2653
- const cached = slackRouteBindingConfigCache.get(cfg);
2654
- if (cached && cached.bindingsRef === bindings) return cached.normalizedCfg;
2655
- if (!Array.isArray(bindings)) return cfg;
2656
- let changed = false;
2657
- const normalizedBindings = bindings.map((binding) => {
2658
- if (binding.type === "acp" || binding.match.channel.trim().toLowerCase() !== "slack") return binding;
2659
- const peer = binding.match.peer;
2660
- if (!peer) return binding;
2661
- const normalizedPeer = normalizeSlackRouteBindingPeer(peer);
2662
- if (normalizedPeer === peer) return binding;
2663
- changed = true;
2664
- return {
2665
- ...binding,
2666
- match: {
2667
- ...binding.match,
2668
- peer: normalizedPeer
2669
- }
2670
- };
2671
- });
2672
- const normalizedCfg = changed ? {
2673
- ...cfg,
2674
- bindings: normalizedBindings
2675
- } : cfg;
2676
- slackRouteBindingConfigCache.set(cfg, {
2677
- bindingsRef: bindings,
2678
- normalizedCfg
2679
- });
2680
- return normalizedCfg;
2681
- }
2682
- function resolveSlackBaseConversationId(params) {
2683
- const raw = params.isDirectMessage ? `user:${params.message.user ?? "unknown"}` : params.message.channel;
2684
- return params.eventScope ? `team:${encodeURIComponent(params.eventScope.teamId)}:${raw}` : raw;
2685
- }
2686
- function qualifySlackPeerId(params) {
2687
- if (!params.eventScope) return params.id;
2688
- return `team:${encodeURIComponent(params.eventScope.teamId)}:${params.kind}:${encodeURIComponent(params.id)}`;
2689
- }
2690
- function resolveSlackInitialAgentRoute(params) {
2691
- const route = resolveAgentRoute({
2692
- cfg: normalizeSlackRouteBindingConfig(params.ctx.cfg),
2693
- channel: "slack",
2694
- accountId: params.account.accountId,
2695
- teamId: params.eventScope?.teamId || params.ctx.teamId || void 0,
2696
- peer: {
2697
- kind: params.isDirectMessage ? "direct" : params.isRoom ? "channel" : "group",
2698
- id: qualifySlackPeerId({
2699
- id: params.isDirectMessage ? params.message.user ?? "unknown" : params.message.channel,
2700
- kind: params.isDirectMessage ? "user" : "channel",
2701
- eventScope: params.eventScope
2702
- })
2703
- }
2704
- });
2705
- if (!params.eventScope || !params.isDirectMessage || route.dmScope !== "main") return route;
2706
- const partition = `account:${encodeURIComponent(params.account.accountId).toLowerCase()}:team:${encodeURIComponent(params.eventScope.teamId).toLowerCase()}`;
2707
- const sessionKey = `${route.sessionKey}:${partition}`;
2708
- return {
2709
- ...route,
2710
- sessionKey,
2711
- mainSessionKey: sessionKey
2712
- };
2713
- }
2714
- function resolveSlackRoutingContext(params) {
2715
- const { ctx, account, message, isDirectMessage, isGroupDm, isRoom, isRoomish, channelConfig, seedTopLevelRoomThread, assistantThreadTs, agentViewThreadTs, eventScope } = params;
2716
- let route = resolveSlackInitialAgentRoute({
2717
- ctx,
2718
- account,
2719
- message,
2720
- isDirectMessage,
2721
- isRoom,
2722
- eventScope
2723
- });
2724
- const chatType = isDirectMessage ? "direct" : isGroupDm ? "group" : "channel";
2725
- const replyToMode = channelConfig?.replyToMode ?? resolveSlackReplyToMode(account, chatType);
2726
- const threadContext = resolveSlackThreadContext({
2727
- message,
2728
- replyToMode,
2729
- isDirectMessage
2730
- });
2731
- const threadTs = threadContext.incomingThreadTs;
2732
- const isThreadReply = threadContext.isThreadReply;
2733
- const autoThreadId = !isThreadReply && replyToMode === "all" && threadContext.messageTs ? threadContext.messageTs : void 0;
2734
- const seedCandidateThreadId = threadContext.incomingThreadTs ?? threadContext.messageTs;
2735
- const routedThreadId = (isDirectMessage ? assistantThreadTs ?? agentViewThreadTs : isRoomish ? isThreadReply && threadTs ? threadTs : void 0 : isThreadReply ? threadTs : autoThreadId) ?? (isRoomish ? !isThreadReply && isRoom && seedTopLevelRoomThread && replyToMode !== "off" && seedCandidateThreadId ? seedCandidateThreadId : void 0 : void 0);
2736
- const baseConversationId = resolveSlackBaseConversationId({
2737
- message,
2738
- isDirectMessage,
2739
- eventScope
2740
- });
2741
- const runtimeBindingThreadId = routedThreadId ?? (isDirectMessage && isThreadReply ? threadTs : void 0);
2742
- const boundThreadRoute = !eventScope && runtimeBindingThreadId ? resolveRuntimeConversationBindingRoute({
2743
- route,
2744
- conversation: {
2745
- channel: "slack",
2746
- accountId: account.accountId,
2747
- conversationId: runtimeBindingThreadId,
2748
- parentConversationId: baseConversationId
2749
- }
2750
- }) : null;
2751
- const runtimeRoute = eventScope ? {
2752
- route,
2753
- bindingRecord: null,
2754
- boundSessionKey: void 0
2755
- } : boundThreadRoute?.boundSessionKey || boundThreadRoute?.bindingRecord ? boundThreadRoute : resolveRuntimeConversationBindingRoute({
2756
- route,
2757
- conversation: {
2758
- channel: "slack",
2759
- accountId: account.accountId,
2760
- conversationId: baseConversationId
2761
- }
2762
- });
2763
- let configuredBinding = null;
2764
- let configuredBindingSessionKey = "";
2765
- if (runtimeRoute.boundSessionKey || runtimeRoute.bindingRecord) route = runtimeRoute.route;
2766
- else if (!eventScope) {
2767
- const configuredRoute = resolveConfiguredBindingRoute({
2768
- cfg: ctx.cfg,
2769
- route,
2770
- conversation: {
2771
- channel: "slack",
2772
- accountId: account.accountId,
2773
- conversationId: baseConversationId
2774
- }
2775
- });
2776
- configuredBinding = configuredRoute.bindingResolution;
2777
- configuredBindingSessionKey = configuredRoute.boundSessionKey ?? "";
2778
- route = configuredRoute.route;
2779
- }
2780
- const threadKeys = runtimeRoute.boundSessionKey || configuredBindingSessionKey ? {
2781
- sessionKey: route.sessionKey,
2782
- parentSessionKey: void 0
2783
- } : resolveThreadSessionKeys({
2784
- baseSessionKey: route.sessionKey,
2785
- threadId: routedThreadId,
2786
- parentSessionKey: routedThreadId && ctx.threadInheritParent ? route.sessionKey : void 0
2787
- });
2788
- const sessionKey = threadKeys.sessionKey;
2789
- const historyKey = isThreadReply && ctx.threadHistoryScope === "thread" ? sessionKey : eventScope ? `${account.accountId}:${eventScope.teamId}:${message.channel}` : message.channel;
2790
- return {
2791
- route,
2792
- runtimeBinding: runtimeRoute.bindingRecord,
2793
- runtimeBoundSessionKey: runtimeRoute.boundSessionKey,
2794
- configuredBinding,
2795
- configuredBindingSessionKey,
2796
- chatType,
2797
- replyToMode,
2798
- threadContext,
2799
- threadTs,
2800
- isThreadReply,
2801
- threadKeys,
2802
- sessionKey,
2803
- historyKey
2804
- };
2805
- }
2806
- //#endregion
2807
- //#region extensions/slack/src/monitor/message-handler/prepare-thread-context-root.ts
2808
- function isSlackThreadAuthorCurrentBot(params) {
2809
- const { identity, author } = params;
2810
- if (identity.botUserId && author.userId && author.userId === identity.botUserId) return true;
2811
- if (identity.botId && author.botId && author.botId === identity.botId) return true;
2812
- return false;
2813
- }
2814
- function resolveSlackThreadHistoryFilterPolicy(params) {
2815
- if (!params.includeBotStarterAsRootContext || !params.starterTs) return {};
2816
- return { retainCurrentBotRootTs: params.starterTs };
2817
- }
2818
- function applySlackThreadHistoryFilterPolicy(params) {
2819
- const kept = [];
2820
- let omittedCurrentBot = 0;
2821
- for (const entry of params.history) {
2822
- if (!isSlackThreadAuthorCurrentBot({
2823
- identity: params.identity,
2824
- author: entry
2825
- })) {
2826
- kept.push(entry);
2827
- continue;
2828
- }
2829
- if (params.policy.retainCurrentBotRootTs && entry.ts === params.policy.retainCurrentBotRootTs) kept.push(entry);
2830
- else omittedCurrentBot += 1;
2831
- }
2832
- return {
2833
- kept,
2834
- omittedCurrentBot
2835
- };
2836
- }
2837
- function shouldIncludeBotThreadStarterContext(params) {
2838
- if (!params.hasStarterText) return false;
2839
- return params.starterIsCurrentBot && params.isNewThreadSession;
2840
- }
2841
- function ensureSlackThreadHistoryHasBotRoot(params) {
2842
- if (!params.includeBotStarterAsRootContext || !params.threadStarter?.text) return params.history;
2843
- if (params.history.some((entry) => entry.ts === params.threadStarter?.ts)) return params.history;
2844
- return [params.threadStarter, ...params.history];
2845
- }
2846
- function formatSlackBotStarterThreadLabel(params) {
2847
- const base = `Slack thread ${params.roomLabel}`;
2848
- if (!params.starterText) return base;
2849
- const snippet = formatSlackThreadLabelSnippet(params.starterText).trim();
2850
- if (!snippet) return base;
2851
- return `${base} (assistant root): ${snippet}`;
2852
- }
2853
- function formatSlackThreadLabelSnippet(text) {
2854
- return truncateUtf16Safe(text.replace(/\s+/g, " "), 80);
2855
- }
2856
- //#endregion
2857
- //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
2858
- const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-D51foiwR.js").then((n) => n.g));
2859
- const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
2860
- function resolveSlackThreadSessionFreshness(params) {
2861
- return params.ctx.channelRuntime?.session?.resolveEntryResetFreshness?.({
2862
- storePath: params.storePath,
2863
- sessionKey: params.sessionKey,
2864
- sessionCfg: params.ctx.cfg.session,
2865
- resetType: "thread",
2866
- resetOverride: resolveChannelResetConfig({
2867
- sessionCfg: params.ctx.cfg.session,
2868
- channel: "slack"
2869
- })
2870
- });
2871
- }
2872
- function isSlackThreadContextSenderAllowed(params) {
2873
- return resolveInboundSupplementalSenderAllowed({
2874
- isGroup: true,
2875
- groupPolicy: params.allowFromLower.length === 0 ? "open" : "allowlist",
2876
- allowFrom: params.allowFromLower,
2877
- isSenderAllowed: (allowFrom) => {
2878
- if (params.botId) return true;
2879
- if (!params.userId) return false;
2880
- return resolveSlackAllowListMatch({
2881
- allowList: allowFrom,
2882
- id: params.userId,
2883
- name: params.userName,
2884
- allowNameMatching: params.allowNameMatching
2885
- }).allowed;
2886
- }
2887
- });
2888
- }
2889
- async function resolveSlackThreadUserMap(params) {
2890
- const uniqueUserIds = [];
2891
- const seen = /* @__PURE__ */ new Set();
2892
- for (const item of params.messages) {
2893
- if (!item.userId || seen.has(item.userId)) continue;
2894
- seen.add(item.userId);
2895
- uniqueUserIds.push(item.userId);
2896
- }
2897
- const userMap = /* @__PURE__ */ new Map();
2898
- if (uniqueUserIds.length === 0) return userMap;
2899
- const { results } = await runTasksWithConcurrency({
2900
- tasks: uniqueUserIds.map((id) => async () => {
2901
- const user = await params.ctx.resolveUserName(id, params.eventScope);
2902
- return user ? {
2903
- id,
2904
- user
2905
- } : null;
2906
- }),
2907
- limit: SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY
2908
- });
2909
- for (const result of results) if (result) userMap.set(result.id, result.user);
2910
- return userMap;
2911
- }
2912
- async function resolveSlackThreadContextData(params) {
2913
- const botIdentity = {
2914
- botUserId: params.ctx.botUserId,
2915
- botId: params.ctx.botId
2916
- };
2917
- const isCurrentBotAuthor = (author) => isSlackThreadAuthorCurrentBot({
2918
- identity: botIdentity,
2919
- author
2920
- });
2921
- let threadStarterBody;
2922
- let threadHistoryBody;
2923
- let threadLabel;
2924
- let threadStarterMedia = null;
2925
- const threadSessionFreshness = params.isThreadReply && params.threadTs ? resolveSlackThreadSessionFreshness({
2926
- ctx: params.ctx,
2927
- storePath: params.storePath,
2928
- sessionKey: params.sessionKey
2929
- }) : void 0;
2930
- const threadSessionPreviousTimestamp = params.isThreadReply && params.threadTs && !threadSessionFreshness ? readSessionUpdatedAt({
2931
- storePath: params.storePath,
2932
- sessionKey: params.sessionKey
2933
- }) : void 0;
2934
- const shouldSeedInitialThreadContext = Boolean(params.isThreadReply && params.threadTs && (threadSessionFreshness ? threadSessionFreshness.state !== "fresh" : threadSessionPreviousTimestamp === void 0));
2935
- const shouldLoadInitialThreadHistory = shouldSeedInitialThreadContext || params.forceInitialHistory === true;
2936
- if (!params.isThreadReply || !params.threadTs) return {
2937
- threadStarterBody,
2938
- threadHistoryBody,
2939
- shouldSeedInitialThreadContext,
2940
- threadLabel,
2941
- threadStarterMedia
2942
- };
2943
- const starter = params.threadStarter;
2944
- const starterSenderName = params.allowNameMatching && params.allowFromLower.length > 0 && starter?.userId ? (await params.ctx.resolveUserName(starter.userId, params.eventScope))?.name : void 0;
2945
- const starterIsCurrentBot = Boolean(starter && isCurrentBotAuthor({
2946
- userId: starter.userId,
2947
- botId: starter.botId
2948
- }));
2949
- const starterAllowed = !starter || !starterIsCurrentBot && isSlackThreadContextSenderAllowed({
2950
- allowFromLower: params.allowFromLower,
2951
- allowNameMatching: params.allowNameMatching,
2952
- userId: starter.userId,
2953
- userName: starterSenderName,
2954
- botId: starter.botId
2955
- });
2956
- const includeStarterContext = !starter || !starterIsCurrentBot && shouldIncludeSupplementalContext({
2957
- mode: params.contextVisibilityMode,
2958
- kind: "thread",
2959
- senderAllowed: starterAllowed
2960
- });
2961
- if (starter?.text && includeStarterContext) {
2962
- threadStarterBody = starter.text;
2963
- const snippet = formatSlackThreadLabelSnippet(starter.text);
2964
- threadLabel = `Slack thread ${params.roomLabel}${snippet ? `: ${snippet}` : ""}`;
2965
- if (shouldSeedInitialThreadContext && !params.effectiveDirectMedia && starter.files && starter.files.length > 0) {
2966
- const { resolveSlackMedia } = await loadSlackMediaModule();
2967
- threadStarterMedia = await resolveSlackMedia({
2968
- files: starter.files,
2969
- client: params.eventScope?.client ?? params.ctx.app.client,
2970
- token: params.ctx.botToken,
2971
- maxBytes: params.ctx.mediaMaxBytes
2972
- });
2973
- if (threadStarterMedia) logVerbose(`slack: hydrated thread starter file ${threadStarterMedia.map((item) => item.placeholder).join(", ")} from root message`);
2974
- }
2975
- } else threadLabel = `Slack thread ${params.roomLabel}`;
2976
- const includeBotStarterAsRootContext = shouldIncludeBotThreadStarterContext({
2977
- starterIsCurrentBot,
2978
- isNewThreadSession: shouldSeedInitialThreadContext,
2979
- hasStarterText: Boolean(starter?.text)
2980
- });
2981
- if (starter?.text && starterIsCurrentBot && !includeBotStarterAsRootContext) logVerbose("slack: omitted current-bot thread starter from context");
2982
- else if (starter?.text && !includeStarterContext && !starterIsCurrentBot) logVerbose(`slack: omitted thread starter from context (mode=${params.contextVisibilityMode}, sender_allowed=${starterAllowed ? "yes" : "no"})`);
2983
- else if (includeBotStarterAsRootContext) {
2984
- threadLabel = formatSlackBotStarterThreadLabel({
2985
- roomLabel: params.roomLabel,
2986
- starterText: starter?.text
2987
- });
2988
- logVerbose("slack: retained current-bot thread starter as assistant root context");
2989
- }
2990
- const threadInitialHistoryLimit = params.account.config?.thread?.initialHistoryLimit ?? 20;
2991
- if (threadInitialHistoryLimit > 0 && shouldLoadInitialThreadHistory) {
2992
- const currentBotRootTs = starter?.ts ?? params.threadTs;
2993
- const threadHistoryWithBotRoot = ensureSlackThreadHistoryHasBotRoot({
2994
- history: await resolveSlackThreadHistory({
2995
- channelId: params.message.channel,
2996
- threadTs: params.threadTs,
2997
- client: params.eventScope?.client ?? params.ctx.app.client,
2998
- currentMessageTs: params.message.ts,
2999
- limit: threadInitialHistoryLimit
3000
- }),
3001
- includeBotStarterAsRootContext,
3002
- threadStarter: starter ? {
3003
- ...starter,
3004
- ts: currentBotRootTs
3005
- } : null
3006
- });
3007
- if (threadHistoryWithBotRoot.length > 0) {
3008
- const { kept: threadHistoryWithoutCurrentBot, omittedCurrentBot: omittedCurrentBotHistoryCount } = applySlackThreadHistoryFilterPolicy({
3009
- history: threadHistoryWithBotRoot,
3010
- policy: resolveSlackThreadHistoryFilterPolicy({
3011
- includeBotStarterAsRootContext,
3012
- starterTs: currentBotRootTs
3013
- }),
3014
- identity: botIdentity
3015
- });
3016
- const userMapForFilter = params.contextVisibilityMode !== "all" && params.allowNameMatching && params.allowFromLower.length > 0 ? await resolveSlackThreadUserMap({
3017
- ctx: params.ctx,
3018
- messages: threadHistoryWithoutCurrentBot,
3019
- eventScope: params.eventScope
3020
- }) : /* @__PURE__ */ new Map();
3021
- const { items: filteredThreadHistory, omitted: omittedHistoryCount } = params.contextVisibilityMode === "all" ? {
3022
- items: threadHistoryWithoutCurrentBot,
3023
- omitted: 0
3024
- } : filterSupplementalContextItems({
3025
- items: threadHistoryWithoutCurrentBot,
3026
- mode: params.contextVisibilityMode,
3027
- kind: "thread",
3028
- isSenderAllowed: (historyMsg) => {
3029
- if (isCurrentBotAuthor({
3030
- userId: historyMsg.userId,
3031
- botId: historyMsg.botId
3032
- })) return true;
3033
- const msgUser = historyMsg.userId ? userMapForFilter.get(historyMsg.userId) : null;
3034
- return isSlackThreadContextSenderAllowed({
3035
- allowFromLower: params.allowFromLower,
3036
- allowNameMatching: params.allowNameMatching,
3037
- userId: historyMsg.userId,
3038
- userName: msgUser?.name,
3039
- botId: historyMsg.botId
3040
- });
3041
- }
3042
- });
3043
- const userMap = await resolveSlackThreadUserMap({
3044
- ctx: params.ctx,
3045
- messages: filteredThreadHistory
3046
- });
3047
- if (omittedHistoryCount > 0 || omittedCurrentBotHistoryCount > 0) logVerbose(`slack: omitted ${omittedHistoryCount + omittedCurrentBotHistoryCount} thread message(s) from context (mode=${params.contextVisibilityMode})`);
3048
- const historyParts = [];
3049
- for (const historyMsg of filteredThreadHistory) {
3050
- const msgUser = historyMsg.userId ? userMap.get(historyMsg.userId) : null;
3051
- const isOtherBot = Boolean(historyMsg.botId) && historyMsg.botId !== params.ctx.botId;
3052
- const isCurrentBot = isCurrentBotAuthor({
3053
- userId: historyMsg.userId,
3054
- botId: historyMsg.botId
3055
- });
3056
- const role = isCurrentBot || isOtherBot || Boolean(historyMsg.botId) ? "assistant" : "user";
3057
- const msgSenderName = isCurrentBot ? "Bot (this assistant)" : msgUser?.name ?? (historyMsg.botId ? `Bot (${historyMsg.botId})` : "Unknown");
3058
- const msgWithId = `${historyMsg.text}\n[slack message id: ${historyMsg.ts ?? "unknown"} channel: ${params.message.channel}]`;
3059
- historyParts.push(formatInboundEnvelope({
3060
- channel: "Slack",
3061
- from: `${msgSenderName} (${role})`,
3062
- timestamp: resolveSlackTimestampMs(historyMsg.ts),
3063
- body: msgWithId,
3064
- chatType: "channel",
3065
- envelope: params.envelopeOptions
3066
- }));
3067
- }
3068
- if (historyParts.length > 0) {
3069
- threadHistoryBody = historyParts.join("\n\n");
3070
- logVerbose(`slack: populated thread history with ${filteredThreadHistory.length} messages for new session`);
3071
- }
3072
- }
3073
- }
3074
- return {
3075
- threadStarterBody,
3076
- threadHistoryBody,
3077
- shouldSeedInitialThreadContext,
3078
- threadLabel,
3079
- threadStarterMedia
3080
- };
3081
- }
3082
- //#endregion
3083
- //#region extensions/slack/src/monitor/message-handler/subteam-mentions.ts
3084
- const SUBTEAM_MENTION_RE = /<!subteam\^([A-Z0-9]+)(?:\|[^>]*)?>/gi;
3085
- const SUBTEAM_MEMBER_CACHE_TTL_MS = 300 * 1e3;
3086
- const subteamMemberCache = /* @__PURE__ */ new WeakMap();
3087
- function normalizeSlackId(value) {
3088
- return typeof value === "string" && value.trim() ? value.trim().toUpperCase() : void 0;
3089
- }
3090
- function extractSlackSubteamMentionIds(text) {
3091
- if (!text) return [];
3092
- const ids = /* @__PURE__ */ new Set();
3093
- for (const match of text.matchAll(SUBTEAM_MENTION_RE)) {
3094
- const id = normalizeSlackId(match[1]);
3095
- if (id) ids.add(id);
3096
- }
3097
- return [...ids];
3098
- }
3099
- async function readSlackSubteamUsers(params) {
3100
- let bySubteam = subteamMemberCache.get(params.client);
3101
- if (!bySubteam) {
3102
- bySubteam = /* @__PURE__ */ new Map();
3103
- subteamMemberCache.set(params.client, bySubteam);
3104
- }
3105
- const cacheKey = `${normalizeSlackId(params.teamId) ?? ""}:${params.subteamId}`;
3106
- const cached = bySubteam.get(cacheKey);
3107
- const now = asDateTimestampMs(params.now);
3108
- if (cached) {
3109
- if (now !== void 0 && asDateTimestampMs(cached.expiresAt) !== void 0 && cached.expiresAt > now) return cached.users;
3110
- bySubteam.delete(cacheKey);
3111
- }
3112
- try {
3113
- const response = await params.client.usergroups.users.list({
3114
- usergroup: params.subteamId,
3115
- ...params.teamId ? { team_id: params.teamId } : {}
3116
- });
3117
- if (!response.ok) {
3118
- params.log?.(`slack: failed to resolve user-group mention ${params.subteamId}: ${response.error ?? "unknown_error"}`);
3119
- return /* @__PURE__ */ new Set();
3120
- }
3121
- const users = new Set((response.users ?? []).map((userId) => normalizeSlackId(userId)).filter(Boolean));
3122
- const expiresAt = resolveExpiresAtMsFromDurationMs(SUBTEAM_MEMBER_CACHE_TTL_MS, { nowMs: params.now });
3123
- if (expiresAt !== void 0) bySubteam.set(cacheKey, {
3124
- expiresAt,
3125
- users
3126
- });
3127
- return users;
3128
- } catch (err) {
3129
- params.log?.(`slack: failed to resolve user-group mention ${params.subteamId}: ${formatErrorMessage(err)}`);
3130
- return /* @__PURE__ */ new Set();
3131
- }
3132
- }
3133
- async function isSlackSubteamMentionForBot(params) {
3134
- const botUserId = normalizeSlackId(params.botUserId);
3135
- if (!botUserId) return false;
3136
- const subteamIds = extractSlackSubteamMentionIds(params.text);
3137
- if (subteamIds.length === 0) return false;
3138
- const now = params.now ?? Date.now();
3139
- for (const subteamId of subteamIds) if ((await readSlackSubteamUsers({
3140
- client: params.client,
3141
- subteamId,
3142
- teamId: normalizeOptionalString(params.teamId),
3143
- now,
3144
- log: params.log
3145
- })).has(botUserId)) return true;
3146
- return false;
3147
- }
3148
- //#endregion
3149
- //#region extensions/slack/src/monitor/message-handler/prepare.ts
3150
- const mentionRegexCache = /* @__PURE__ */ new WeakMap();
3151
- const SLACK_ANY_MENTION_RE = /<@[^>]+>|<!subteam\^[^>]+>/;
3152
- const SLACK_USER_MENTION_RE = /<@([^>|]+)(?:\|[^>]+)?>/g;
3153
- const SLACK_SUBTEAM_MENTION_RE = /<!subteam\^([^>|]+)(?:\|[^>]+)?>/g;
3154
- const SLACK_SUBTEAM_MENTION_MARKER = "<!subteam^";
3155
- const SLACK_HISTORY_MEDIA_MAX_ATTACHMENTS = 4;
3156
- const SLACK_HISTORY_MEDIA_MAX_BYTES = 10 * 1024 * 1024;
3157
- const SLACK_HISTORY_MEDIA_IDLE_TIMEOUT_MS = 1e3;
3158
- const SLACK_HISTORY_MEDIA_TOTAL_TIMEOUT_MS = 3e3;
3159
- function recordString(record, key) {
3160
- return normalizeOptionalString(record?.[key]);
3161
- }
3162
- function recordNullableString(record, key) {
3163
- if (!record || !(key in record)) return;
3164
- if (record[key] === null) return null;
3165
- return normalizeOptionalString(record[key]);
3166
- }
3167
- function mergeSlackAssistantThreadContext(primary, fallback) {
3168
- if (!primary) return fallback;
3169
- if (!fallback) return primary;
3170
- return {
3171
- assistantChannelId: primary.assistantChannelId || fallback.assistantChannelId,
3172
- threadTs: primary.threadTs || fallback.threadTs,
3173
- userId: primary.userId ?? fallback.userId,
3174
- channelId: primary.channelId ?? fallback.channelId,
3175
- teamId: primary.teamId ?? fallback.teamId,
3176
- enterpriseId: primary.enterpriseId !== void 0 ? primary.enterpriseId : fallback.enterpriseId
3177
- };
3178
- }
3179
- function hasSlackAssistantThreadMetadata(context) {
3180
- return Boolean(context?.channelId || context?.teamId || context?.enterpriseId !== void 0);
3181
- }
3182
- function resolveSlackMessageAssistantThreadContext(message) {
3183
- const thread = asOptionalRecord(message.assistant_thread);
3184
- if (!thread) return;
3185
- const context = asOptionalRecord(thread.context);
3186
- const assistantChannelId = recordString(thread, "channel_id") ?? message.channel;
3187
- const threadTs = recordString(thread, "thread_ts") ?? message.thread_ts ?? message.ts;
3188
- if (!assistantChannelId || !threadTs) return;
3189
- return {
3190
- assistantChannelId,
3191
- threadTs,
3192
- userId: recordString(thread, "user_id") ?? message.user,
3193
- channelId: recordString(context, "channel_id"),
3194
- teamId: recordString(context, "team_id"),
3195
- enterpriseId: recordNullableString(context, "enterprise_id")
3196
- };
3197
- }
3198
- async function restoreSlackAssistantThreadContextFromMetadata(params) {
3199
- const threadTs = params.message.thread_ts;
3200
- const parentUserId = params.message.parent_user_id?.trim();
3201
- if (!params.message.channel || !threadTs || !parentUserId || parentUserId !== params.ctx.botUserId && parentUserId !== params.ctx.botId) return;
3202
- try {
3203
- const response = await (params.eventScope?.client ?? params.ctx.app.client).conversations.replies({
3204
- channel: params.message.channel,
3205
- ts: threadTs,
3206
- oldest: threadTs,
3207
- include_all_metadata: true,
3208
- limit: 4
3209
- });
3210
- for (const message of response.messages ?? []) {
3211
- const context = parseSlackAssistantThreadMetadata(message.metadata);
3212
- if (!context) continue;
3213
- return {
3214
- assistantChannelId: params.message.channel,
3215
- threadTs,
3216
- userId: params.message.user,
3217
- channelId: context.channelId,
3218
- teamId: context.teamId,
3219
- enterpriseId: context.enterpriseId
3220
- };
3221
- }
3222
- } catch (err) {
3223
- logVerbose(`slack assistant context restore failed channel=${params.message.channel} ts=${threadTs}: ${formatErrorMessage(err)}`);
3224
- }
3225
- }
3226
- function resolveCachedMentionRegexes(ctx, agentId, options) {
3227
- const key = [
3228
- normalizeOptionalString(agentId) ?? "__default__",
3229
- normalizeOptionalString(options?.provider),
3230
- normalizeOptionalString(options?.conversationId ?? void 0),
3231
- options?.providerPolicy ? JSON.stringify(options.providerPolicy) : ""
3232
- ].join("");
3233
- let byAgent = mentionRegexCache.get(ctx);
3234
- if (!byAgent) {
3235
- byAgent = /* @__PURE__ */ new Map();
3236
- mentionRegexCache.set(ctx, byAgent);
3237
- }
3238
- const cached = byAgent.get(key);
3239
- if (cached) return cached;
3240
- const built = buildMentionRegexes(ctx.cfg, agentId, options);
3241
- byAgent.set(key, built);
3242
- return built;
3243
- }
3244
- function isSlackImageFileCandidate(file) {
3245
- if ((file.mimetype?.split(";")[0]?.trim().toLowerCase())?.startsWith("image/")) return true;
3246
- return Boolean(mimeTypeFromFilePath(file.name)?.startsWith("image/"));
3247
- }
3248
- function sliceSlackImageFileCandidates(files, limit) {
3249
- if (limit <= 0 || !files?.length) return [];
3250
- return files.filter(isSlackImageFileCandidate).slice(0, limit);
3251
- }
3252
- function sliceSlackHistoryAttachmentCandidates(attachments, limit) {
3253
- if (limit <= 0 || !attachments?.length) return [];
3254
- const out = [];
3255
- let remaining = limit;
3256
- for (const attachment of attachments) {
3257
- if (attachment.is_share !== true) continue;
3258
- const hasImageUrl = Boolean(normalizeOptionalString(attachment.image_url));
3259
- const files = sliceSlackImageFileCandidates(attachment.files, remaining - (hasImageUrl ? 1 : 0));
3260
- if (!hasImageUrl && files.length === 0) continue;
3261
- out.push({
3262
- ...attachment,
3263
- files
3264
- });
3265
- remaining -= (hasImageUrl ? 1 : 0) + files.length;
3266
- if (remaining <= 0) break;
3267
- }
3268
- return out;
3269
- }
3270
- function buildSlackHistoryMediaCandidateMessage(message) {
3271
- const files = sliceSlackImageFileCandidates(message.files, SLACK_HISTORY_MEDIA_MAX_ATTACHMENTS);
3272
- const attachments = sliceSlackHistoryAttachmentCandidates(message.attachments, Math.max(0, SLACK_HISTORY_MEDIA_MAX_ATTACHMENTS - files.length));
3273
- if (files.length === 0 && attachments.length === 0) return null;
3274
- return {
3275
- ...message,
3276
- files,
3277
- attachments
3278
- };
3279
- }
3280
- async function resolveSlackHistoryMediaForPendingRecord(params) {
3281
- const mediaMessage = buildSlackHistoryMediaCandidateMessage(params.message);
3282
- if (!mediaMessage) return [];
3283
- return toInboundMediaFacts((await resolveSlackMessageContent({
3284
- message: mediaMessage,
3285
- isThreadReply: params.isThreadReply,
3286
- threadStarter: params.threadStarter,
3287
- isBotMessage: params.isBotMessage,
3288
- client: params.eventScope?.client ?? params.ctx.app.client,
3289
- botToken: params.ctx.botToken,
3290
- mediaMaxBytes: Math.min(params.ctx.mediaMaxBytes, SLACK_HISTORY_MEDIA_MAX_BYTES),
3291
- mediaReadIdleTimeoutMs: SLACK_HISTORY_MEDIA_IDLE_TIMEOUT_MS,
3292
- mediaTotalTimeoutMs: SLACK_HISTORY_MEDIA_TOTAL_TIMEOUT_MS
3293
- }))?.effectiveDirectMedia, {
3294
- kind: "image",
3295
- messageId: params.message.ts
3296
- });
3297
- }
3298
- function collectUniqueSlackMentionIds(text, regex) {
3299
- const ids = [];
3300
- regex.lastIndex = 0;
3301
- for (const match of text.matchAll(regex)) {
3302
- const id = normalizeSlackId(match[1]);
3303
- if (id && !ids.includes(id)) ids.push(id);
3304
- }
3305
- return ids;
3306
- }
3307
- function collectSlackMentionMetadata(text) {
3308
- return {
3309
- mentionedUserIds: collectUniqueSlackMentionIds(text, SLACK_USER_MENTION_RE),
3310
- mentionedSubteamIds: collectUniqueSlackMentionIds(text, SLACK_SUBTEAM_MENTION_RE),
3311
- hasAnyMention: SLACK_ANY_MENTION_RE.test(text),
3312
- hasSubteamMention: text.includes(SLACK_SUBTEAM_MENTION_MARKER)
3313
- };
3314
- }
3315
- async function resolveSlackExplicitMentionState(params) {
3316
- const normalizedBotUserId = normalizeSlackId(params.ctx.botUserId);
3317
- const explicitlyMentionedBotUser = Boolean(normalizedBotUserId && params.mentionedUserIds.includes(normalizedBotUserId));
3318
- const explicitlyMentionedBotSubteam = Boolean(params.ctx.botUserId && params.hasSubteamMention) && await isSlackSubteamMentionForBot({
3319
- client: params.eventScope?.client ?? params.ctx.app.client,
3320
- text: params.messageText,
3321
- botUserId: params.ctx.botUserId,
3322
- teamId: params.eventScope?.teamId ?? params.ctx.teamId,
3323
- log: logVerbose
3324
- });
3325
- return {
3326
- explicitlyMentionedBotUser,
3327
- explicitlyMentionedBotSubteam,
3328
- explicitlyMentioned: explicitlyMentionedBotUser || explicitlyMentionedBotSubteam || params.source === "app_mention"
3329
- };
3330
- }
3331
- function resolveSlackMentionSource(params) {
3332
- if (params.explicitBotMention) return "explicit_bot";
3333
- if (params.explicitSubteamMention) return "subteam";
3334
- if (params.shouldBypassMention) return "command_bypass";
3335
- if (params.wasMentioned) return "mention_pattern";
3336
- if (params.matchedImplicitMentionKinds.length > 0) return "implicit_thread";
3337
- return "none";
3338
- }
3339
- function buildSlackMentionContextPayload(params) {
3340
- if (!params.isRoomish) return {};
3341
- return {
3342
- WasMentioned: params.effectiveWasMentioned,
3343
- ExplicitlyMentionedBot: params.explicitlyMentioned,
3344
- MentionedUserIds: params.mentionedUserIds.length > 0 ? [...params.mentionedUserIds] : void 0,
3345
- MentionedSubteamIds: params.mentionedSubteamIds.length > 0 ? [...params.mentionedSubteamIds] : void 0,
3346
- ImplicitMentionKinds: params.matchedImplicitMentionKinds.length > 0 ? [...params.matchedImplicitMentionKinds] : void 0,
3347
- MentionSource: params.mentionSource
3348
- };
3349
- }
3350
- async function resolveSlackConversationContext(params) {
3351
- const { ctx, account, message } = params;
3352
- const cfg = ctx.cfg;
3353
- let channelInfo = {};
3354
- let resolvedChannelType = normalizeSlackChannelType(message.channel_type, message.channel);
3355
- if (resolvedChannelType !== "im" && (!message.channel_type || message.channel_type !== "im")) {
3356
- channelInfo = await ctx.resolveChannelName(message.channel, params.eventScope);
3357
- resolvedChannelType = normalizeSlackChannelType(message.channel_type ?? channelInfo.type ?? ctx.recallSlackChannelType(message.channel, params.eventScope), message.channel);
3358
- }
3359
- const channelName = channelInfo?.name;
3360
- const isDirectMessage = resolvedChannelType === "im";
3361
- const isGroupDm = resolvedChannelType === "mpim";
3362
- const isRoom = resolvedChannelType === "channel" || resolvedChannelType === "group";
3363
- const isRoomish = isRoom || isGroupDm;
3364
- const channelConfig = isRoom ? resolveSlackChannelConfig({
3365
- channelId: message.channel,
3366
- channelName,
3367
- channels: ctx.channelsConfig,
3368
- channelKeys: ctx.channelsConfigKeys,
3369
- defaultRequireMention: ctx.defaultRequireMention,
3370
- allowNameMatching: ctx.allowNameMatching
3371
- }) : null;
3372
- const allowBotsSetting = channelConfig?.allowBots ?? account.config?.allowBots ?? cfg.channels?.slack?.allowBots ?? false;
3373
- return {
3374
- channelInfo,
3375
- channelName,
3376
- resolvedChannelType,
3377
- isDirectMessage,
3378
- isGroupDm,
3379
- isRoom,
3380
- isRoomish,
3381
- channelConfig,
3382
- allowBotsMode: allowBotsSetting === "mentions" ? "mentions" : allowBotsSetting ? "all" : "off",
3383
- isBotMessage: Boolean(message.bot_id)
3384
- };
3385
- }
3386
- async function authorizeSlackInboundMessage(params) {
3387
- const { ctx, account, message, conversation } = params;
3388
- const { isDirectMessage, channelName, resolvedChannelType, isBotMessage, allowBotsMode } = conversation;
3389
- if (isBotMessage) {
3390
- if (message.user && ctx.botUserId && message.user === ctx.botUserId) return null;
3391
- if (allowBotsMode === "off") {
3392
- logVerbose(`slack: drop bot message ${message.bot_id ?? "unknown"} (allowBots=false)`);
3393
- return null;
3394
- }
3395
- }
3396
- if (isDirectMessage && !message.user) {
3397
- logVerbose("slack: drop dm message (missing user id)");
3398
- return null;
3399
- }
3400
- const senderId = message.user ?? (isBotMessage ? message.bot_id : void 0);
3401
- if (!senderId) {
3402
- logVerbose("slack: drop message (missing sender id)");
3403
- return null;
3404
- }
3405
- if (!ctx.isChannelAllowed({
3406
- channelId: message.channel,
3407
- channelName,
3408
- channelType: resolvedChannelType
3409
- })) {
3410
- logVerbose("slack: drop message (channel not allowed)");
3411
- return null;
3412
- }
3413
- const allowFromLower = await resolveSlackEffectiveAllowFrom(ctx, { includePairingStore: isDirectMessage });
3414
- if (isDirectMessage) {
3415
- const directUserId = message.user;
3416
- if (!directUserId) {
3417
- logVerbose("slack: drop dm message (missing user id)");
3418
- return null;
3419
- }
3420
- if (!await authorizeSlackDirectMessage({
3421
- ctx,
3422
- accountId: account.accountId,
3423
- senderId: directUserId,
3424
- allowFromLower,
3425
- resolveSenderName: (userId) => ctx.resolveUserName(userId, params.eventScope),
3426
- sendPairingReply: async (text) => {
3427
- await sendMessageSlack(message.channel, text, {
3428
- cfg: ctx.cfg,
3429
- token: ctx.botToken,
3430
- client: params.eventScope?.client ?? ctx.app.client,
3431
- accountId: account.accountId
3432
- });
3433
- },
3434
- onDisabled: () => {
3435
- logVerbose("slack: drop dm (dms disabled)");
3436
- },
3437
- onUnauthorized: ({ allowMatchMeta }) => {
3438
- logVerbose(`Blocked unauthorized slack sender ${message.user} (dmPolicy=${ctx.dmPolicy}, ${allowMatchMeta})`);
3439
- },
3440
- log: logVerbose
3441
- })) return null;
3442
- }
3443
- return {
3444
- senderId,
3445
- allowFromLower
3446
- };
3447
- }
3448
- async function prepareSlackMessage(params) {
3449
- const { ctx, account, message, opts } = params;
3450
- const slackClient = opts.eventScope?.client ?? ctx.app.client;
3451
- const threadStarterWorkspaceScope = opts.eventScope ? {
3452
- accountId: account.accountId,
3453
- teamId: opts.eventScope.teamId
3454
- } : void 0;
3455
- const cfg = ctx.cfg;
3456
- const conversation = await resolveSlackConversationContext({
3457
- ctx,
3458
- account,
3459
- message,
3460
- eventScope: opts.eventScope
3461
- });
3462
- const { channelInfo, channelName, isDirectMessage, isGroupDm, isRoom, isRoomish, channelConfig, allowBotsMode, isBotMessage } = conversation;
3463
- const authorization = await authorizeSlackInboundMessage({
3464
- ctx,
3465
- account,
3466
- message,
3467
- conversation,
3468
- eventScope: opts.eventScope
3469
- });
3470
- if (!authorization) return null;
3471
- const { senderId, allowFromLower } = authorization;
3472
- const messageText = message.text ?? "";
3473
- let resolvedSenderName = normalizeOptionalString(message.username);
3474
- const resolveSenderName = async () => {
3475
- if (resolvedSenderName) return resolvedSenderName;
3476
- if (message.user) {
3477
- const normalized = normalizeOptionalString((await ctx.resolveUserName(message.user, opts.eventScope))?.name);
3478
- if (normalized) {
3479
- resolvedSenderName = normalized;
3480
- return resolvedSenderName;
3481
- }
3482
- }
3483
- resolvedSenderName = message.user ?? message.bot_id ?? "unknown";
3484
- return resolvedSenderName;
3485
- };
3486
- const mentionMetadata = collectSlackMentionMetadata(messageText);
3487
- const { mentionedUserIds, mentionedSubteamIds, hasAnyMention } = mentionMetadata;
3488
- const messageAssistantThreadContext = resolveSlackMessageAssistantThreadContext(message);
3489
- const assistantContextLookupChannelId = messageAssistantThreadContext?.assistantChannelId ?? message.channel;
3490
- const assistantContextLookupThreadTs = messageAssistantThreadContext?.threadTs ?? message.thread_ts ?? message.ts;
3491
- const cachedAssistantThreadContext = isDirectMessage ? ctx.getSlackAssistantThreadContext(assistantContextLookupChannelId, assistantContextLookupThreadTs, opts.eventScope) : void 0;
3492
- const restoredAssistantThreadContextPromise = isDirectMessage && !cachedAssistantThreadContext && !hasSlackAssistantThreadMetadata(messageAssistantThreadContext) ? restoreSlackAssistantThreadContextFromMetadata({
3493
- ctx,
3494
- message,
3495
- eventScope: opts.eventScope
3496
- }) : Promise.resolve(void 0);
3497
- const { explicitlyMentionedBotUser, explicitlyMentionedBotSubteam, explicitlyMentioned } = await resolveSlackExplicitMentionState({
3498
- ctx,
3499
- messageText,
3500
- mentionedUserIds,
3501
- hasSubteamMention: mentionMetadata.hasSubteamMention,
3502
- source: opts.source,
3503
- eventScope: opts.eventScope
3504
- });
3505
- const channelRequireMention = channelConfig?.requireMention ?? ctx.defaultRequireMention ?? true;
3506
- const channelChatType = isDirectMessage ? "direct" : isGroupDm ? "group" : "channel";
3507
- const restoredAssistantThreadContext = await restoredAssistantThreadContextPromise;
3508
- const assistantThreadContext = mergeSlackAssistantThreadContext(messageAssistantThreadContext, cachedAssistantThreadContext ?? restoredAssistantThreadContext);
3509
- const assistantThreadContextToCache = messageAssistantThreadContext || restoredAssistantThreadContext ? assistantThreadContext : void 0;
3510
- if (assistantThreadContextToCache) ctx.saveSlackAssistantThreadContext(assistantThreadContextToCache, opts.eventScope);
3511
- const hasAgentViewMessageSignal = isDirectMessage && !opts.eventScope && !assistantThreadContext && isSlackAppContext(message.app_context);
3512
- if (hasAgentViewMessageSignal) await ctx.recordSlackAgentView();
3513
- const managedViewThreadTs = message.thread_ts;
3514
- const isManagedViewRoot = isDirectMessage && !opts.eventScope && !assistantThreadContext && !message.parent_user_id && Boolean(managedViewThreadTs && message.ts && managedViewThreadTs === message.ts);
3515
- if (isManagedViewRoot && managedViewThreadTs) await ctx.recordSlackManagedViewThread(message.channel, managedViewThreadTs);
3516
- const hasManagedViewThread = isDirectMessage && !opts.eventScope && !assistantThreadContext && Boolean(managedViewThreadTs && await ctx.isSlackManagedViewThread(message.channel, managedViewThreadTs));
3517
- const isAgentViewMessage = isDirectMessage && !opts.eventScope && !assistantThreadContext && (hasAgentViewMessageSignal || isManagedViewRoot || hasManagedViewThread || await ctx.isSlackAgentView());
3518
- const agentViewThreadTs = isAgentViewMessage ? message.thread_ts ?? message.ts : void 0;
3519
- const channelReplyToMode = channelConfig?.replyToMode ?? resolveSlackReplyToMode(account, channelChatType);
3520
- const willImplicitlyThreadReply = isRoom && !channelRequireMention && channelReplyToMode !== "off";
3521
- const seedTopLevelRoomThreadBySource = opts.source === "app_mention" || opts.wasMentioned === true || explicitlyMentioned || willImplicitlyThreadReply;
3522
- let routing = resolveSlackRoutingContext({
3523
- ctx,
3524
- account,
3525
- message,
3526
- isDirectMessage,
3527
- isGroupDm,
3528
- isRoom,
3529
- isRoomish,
3530
- channelConfig,
3531
- seedTopLevelRoomThread: seedTopLevelRoomThreadBySource,
3532
- assistantThreadTs: assistantThreadContext?.threadTs,
3533
- agentViewThreadTs,
3534
- eventScope: opts.eventScope
3535
- });
3536
- let mentionCheckTranscript;
3537
- const resolveWasMentioned = (mentionRegexes) => opts.wasMentioned ?? (!isDirectMessage && matchesMentionWithExplicit({
3538
- text: messageText,
3539
- mentionRegexes,
3540
- explicit: {
3541
- hasAnyMention,
3542
- isExplicitlyMentioned: explicitlyMentioned,
3543
- canResolveExplicit: Boolean(ctx.botUserId)
3544
- },
3545
- transcript: mentionCheckTranscript
3546
- }));
3547
- const buildPolicyMentionRegexes = (agentId) => resolveCachedMentionRegexes(ctx, agentId, {
3548
- provider: "slack",
3549
- conversationId: message.channel,
3550
- providerPolicy: account.config.mentionPatterns
3551
- });
3552
- let mentionRegexes = buildPolicyMentionRegexes(routing.route.agentId);
3553
- let wasMentioned = resolveWasMentioned(mentionRegexes);
3554
- const hasBoundSession = Boolean(routing.runtimeBoundSessionKey || routing.configuredBindingSessionKey);
3555
- let { route, runtimeBinding, replyToMode, threadContext, threadTs, isThreadReply, threadKeys, sessionKey, historyKey } = routing;
3556
- const { configuredBinding, configuredBindingSessionKey } = routing;
3557
- const isAssistantThreadMessage = Boolean(isDirectMessage && messageAssistantThreadContext);
3558
- const forcedAssistantReplyThreadTs = Boolean(assistantThreadContext?.threadTs && (isThreadReply || isAssistantThreadMessage || replyToMode !== "off")) ? assistantThreadContext?.threadTs : void 0;
3559
- const forcedReplyThreadTs = agentViewThreadTs ?? forcedAssistantReplyThreadTs;
3560
- if (runtimeBinding && shouldLogVerbose()) logVerbose(`slack: routed via bound conversation ${runtimeBinding.conversation.conversationId} -> ${runtimeBinding.targetSessionKey}`);
3561
- if (configuredBinding) {
3562
- const ensured = await ensureConfiguredBindingRouteReady({
3563
- cfg,
3564
- bindingResolution: configuredBinding
3565
- });
3566
- if (ensured.ok) {
3567
- if (shouldLogVerbose()) logVerbose(`slack: using configured ACP binding for ${configuredBinding.record.conversation.conversationId} -> ${configuredBindingSessionKey}`);
3568
- } else {
3569
- if (shouldLogVerbose()) logVerbose(`slack: configured ACP binding unavailable for ${configuredBinding.record.conversation.conversationId}: ${ensured.error}`);
3570
- logInboundDrop({
3571
- log: logVerbose,
3572
- channel: "slack",
3573
- reason: "configured ACP binding unavailable",
3574
- target: configuredBinding.record.conversation.conversationId
3575
- });
3576
- return null;
3577
- }
3578
- }
3579
- const senderNameForAuthPromise = ctx.allowNameMatching ? resolveSenderName().then((name) => ({
3580
- ok: true,
3581
- name
3582
- }), (error) => ({
3583
- ok: false,
3584
- error
3585
- })) : Promise.resolve({
3586
- ok: true,
3587
- name: void 0
3588
- });
3589
- let implicitMentionKinds = [];
3590
- if (!isDirectMessage && ctx.botUserId && message.thread_ts && !wasMentioned) {
3591
- const replyToBotKinds = implicitMentionKindWhen("reply_to_bot", message.parent_user_id === ctx.botUserId);
3592
- implicitMentionKinds = replyToBotKinds.length > 0 ? replyToBotKinds : implicitMentionKindWhen("bot_thread_participant", await hasSlackThreadParticipationWithPersistence({
3593
- accountId: account.accountId,
3594
- channelId: message.channel,
3595
- threadTs: message.thread_ts,
3596
- ...opts.eventScope ? { teamId: opts.eventScope.teamId } : {}
3597
- }));
3598
- }
3599
- const recordDroppedHistory = async (reason) => {
3600
- const pendingText = (message.text ?? "").trim();
3601
- const historyMediaCandidate = buildSlackHistoryMediaCandidateMessage(message);
3602
- const fallbackFile = message.files?.length ? `[Slack file: ${formatSlackFileReference(message.files[0])}]` : "";
3603
- const pendingBody = pendingText || fallbackFile || (!fallbackFile && historyMediaCandidate ? "[Slack media attachment]" : "");
3604
- const skippedThreadStarter = historyMediaCandidate && isThreadReply && threadTs ? await resolveSlackThreadStarter({
3605
- channelId: message.channel,
3606
- threadTs,
3607
- client: slackClient,
3608
- workspaceScope: threadStarterWorkspaceScope
3609
- }) : null;
3610
- const senderName = pendingBody ? await resolveSenderName() : void 0;
3611
- await recordDroppedChannelInboundHistory({
3612
- input: {
3613
- id: message.ts ?? `${message.channel}:${Date.now()}`,
3614
- timestamp: resolveSlackTimestampMs(message.ts),
3615
- rawText: pendingBody,
3616
- textForAgent: pendingBody,
3617
- raw: message
3618
- },
3619
- admission: {
3620
- kind: "drop",
3621
- reason,
3622
- recordHistory: true
3623
- },
3624
- preflight: {
3625
- message: pendingBody ? {
3626
- rawBody: pendingBody,
3627
- body: pendingBody,
3628
- bodyForAgent: pendingBody,
3629
- senderLabel: senderName,
3630
- envelopeFrom: senderName
3631
- } : void 0,
3632
- history: {
3633
- key: historyKey,
3634
- historyMap: ctx.channelHistories,
3635
- limit: ctx.historyLimit,
3636
- recordOnDrop: true,
3637
- mediaLimit: SLACK_HISTORY_MEDIA_MAX_ATTACHMENTS,
3638
- shouldRecord: opts.shouldRecordDroppedHistory
3639
- },
3640
- media: () => resolveSlackHistoryMediaForPendingRecord({
3641
- ctx,
3642
- message,
3643
- isThreadReply,
3644
- threadStarter: skippedThreadStarter,
3645
- isBotMessage,
3646
- eventScope: opts.eventScope
3647
- })
3648
- }
3649
- });
3650
- };
3651
- let threadStarterPromise;
3652
- const getThreadStarter = () => {
3653
- threadStarterPromise ??= isThreadReply && threadTs ? resolveSlackThreadStarter({
3654
- channelId: message.channel,
3655
- threadTs,
3656
- client: slackClient,
3657
- workspaceScope: threadStarterWorkspaceScope
3658
- }) : Promise.resolve(null);
3659
- return threadStarterPromise;
3660
- };
3661
- const resolveMessageContent = (contentMessage, preloadedMedia) => getThreadStarter().then((threadStarter) => resolveSlackMessageContent({
3662
- message: contentMessage,
3663
- isThreadReply,
3664
- threadStarter,
3665
- isBotMessage,
3666
- botToken: ctx.botToken,
3667
- client: slackClient,
3668
- mediaMaxBytes: ctx.mediaMaxBytes,
3669
- resolveUserName: (userId) => ctx.resolveUserName(userId, opts.eventScope),
3670
- preloadedMedia
3671
- }));
3672
- let preloadedDirectMedia;
3673
- let messageContentPromise;
3674
- const getMessageContent = () => {
3675
- messageContentPromise ??= resolveMessageContent(message, preloadedDirectMedia);
3676
- return messageContentPromise;
3677
- };
3678
- const senderNameForAuthResult = await senderNameForAuthPromise;
3679
- if (!senderNameForAuthResult.ok) throw senderNameForAuthResult.error;
3680
- const senderNameForAuth = senderNameForAuthResult.name;
3681
- const allowTextCommands = shouldHandleTextCommands({
3682
- cfg,
3683
- surface: "slack"
3684
- });
3685
- const shouldRequireMention = isRoom ? channelConfig?.requireMention ?? ctx.defaultRequireMention : false;
3686
- const implicitMentions = resolveChannelImplicitMentions({
3687
- cfg,
3688
- channel: "slack",
3689
- accountId: account.accountId
3690
- });
3691
- if (message["_ambiguousThreadReply"]) {
3692
- ctx.logger.info({
3693
- channel: message.channel,
3694
- ts: message.ts,
3695
- parentUserId: message.parent_user_id
3696
- }, "skipping ambiguous slack thread reply");
3697
- return null;
3698
- }
3699
- let canDetectMention = Boolean(ctx.botUserId) || mentionRegexes.length > 0;
3700
- const textForCommandDetection = stripSlackMentionsForCommandDetection(message.text ?? "");
3701
- const hasControlCommandInMessage = hasControlCommand(textForCommandDetection, cfg);
3702
- const hasAbortRequest = isAbortRequestText(textForCommandDetection);
3703
- const channelUsersAllowlistConfigured = isRoom && Array.isArray(channelConfig?.users) && channelConfig.users.length > 0;
3704
- const messageIngress = await resolveSlackCommandIngress({
3705
- ctx,
3706
- senderId,
3707
- senderName: senderNameForAuth,
3708
- channelType: conversation.resolvedChannelType ?? "channel",
3709
- channelId: message.channel,
3710
- ownerAllowFromLower: allowFromLower,
3711
- channelUsers: isRoom ? channelConfig?.users : void 0,
3712
- allowTextCommands,
3713
- hasControlCommand: hasControlCommandInMessage,
3714
- mentionFacts: {
3715
- canDetectMention,
3716
- wasMentioned,
3717
- hasAnyMention,
3718
- implicitMentionKinds
3719
- },
3720
- activation: {
3721
- requireMention: shouldRequireMention,
3722
- allowTextCommands,
3723
- implicitMentions
3724
- }
3725
- });
3726
- const senderGate = messageIngress.senderAccess.gate;
3727
- if (isRoomish && senderGate?.allowed === false) {
3728
- logVerbose(`Blocked unauthorized slack sender ${senderId} (not in sender allowlist)`);
3729
- return null;
3730
- }
3731
- if (isRoom && isBotMessage && allowBotsMode !== "off" && !await authorizeSlackBotRoomMessage({
3732
- ctx,
3733
- channelId: message.channel,
3734
- senderId,
3735
- senderName: senderNameForAuth,
3736
- channelUsers: channelConfig?.users,
3737
- allowFromLower,
3738
- eventScope: opts.eventScope
3739
- })) return null;
3740
- const threadContextAllowFromLower = isRoom ? channelUsersAllowlistConfigured ? normalizeAllowListLower(channelConfig?.users) : [] : isDirectMessage ? allowFromLower : [];
3741
- const contextVisibilityMode = resolveChannelContextVisibilityMode({
3742
- cfg: ctx.cfg,
3743
- channel: "slack",
3744
- accountId: account.accountId
3745
- });
3746
- const commandAuthorized = messageIngress.commandAccess.authorized;
3747
- if (isRoomish && messageIngress.commandAccess.shouldBlockControlCommand) {
3748
- logInboundDrop({
3749
- log: logVerbose,
3750
- channel: "slack",
3751
- reason: "control command (unauthorized)",
3752
- target: senderId
3753
- });
3754
- return null;
3755
- }
3756
- const canSeedMentionedRoomThread = !seedTopLevelRoomThreadBySource && isRoom && !routing.isThreadReply && !hasBoundSession;
3757
- let seededMentionRouting;
3758
- const getSeededMentionRouting = () => {
3759
- seededMentionRouting ??= resolveSlackRoutingContext({
3760
- ctx,
3761
- account,
3762
- message,
3763
- isDirectMessage,
3764
- isGroupDm,
3765
- isRoom,
3766
- isRoomish,
3767
- channelConfig,
3768
- seedTopLevelRoomThread: true,
3769
- assistantThreadTs: assistantThreadContext?.threadTs,
3770
- agentViewThreadTs,
3771
- eventScope: opts.eventScope
3772
- });
3773
- return seededMentionRouting;
3774
- };
3775
- let preflightAudioTranscript;
3776
- let preflightAudioMedia;
3777
- const preflightAudioFile = findCaptionlessSlackAudioFile(message);
3778
- if (isRoom && !isBotMessage && shouldRequireMention && cfg.tools?.media?.audio?.enabled !== false && messageIngress.activationAccess.shouldSkip && mentionRegexes.length > 0 && Boolean(preflightAudioFile) && preflightAudioFile) {
3779
- const preflightRouting = canSeedMentionedRoomThread ? getSeededMentionRouting() : routing;
3780
- const preflightMedia = (await resolveMessageContent({
3781
- ...message,
3782
- files: [preflightAudioFile],
3783
- attachments: void 0,
3784
- blocks: void 0
3785
- }))?.effectiveDirectMedia;
3786
- const downloadedAudioMedia = preflightMedia?.[0];
3787
- if (downloadedAudioMedia) preloadedDirectMedia = /* @__PURE__ */ new Map([[preflightAudioFile, downloadedAudioMedia]]);
3788
- const preflightResult = preflightMedia ? await resolveSlackPreflightAudioTranscript({
3789
- media: preflightMedia,
3790
- cfg,
3791
- accountId: account.accountId,
3792
- originatingTo: `channel:${message.channel}`,
3793
- sessionKey: preflightRouting.sessionKey,
3794
- messageThreadId: preflightRouting.threadContext.messageThreadId
3795
- }) : null;
3796
- if (preflightResult) {
3797
- mentionCheckTranscript = preflightResult.transcript;
3798
- wasMentioned = resolveWasMentioned(mentionRegexes);
3799
- if (wasMentioned) {
3800
- preflightAudioTranscript = preflightResult.transcript;
3801
- preflightAudioMedia = preflightMedia?.[preflightResult.mediaIndex];
3802
- }
3803
- }
3804
- if (!preflightAudioTranscript) {
3805
- await discardSlackPreflightMedia(preflightMedia);
3806
- preloadedDirectMedia = void 0;
3807
- }
3808
- }
3809
- if (canSeedMentionedRoomThread && wasMentioned) {
3810
- routing = getSeededMentionRouting();
3811
- mentionRegexes = buildPolicyMentionRegexes(routing.route.agentId);
3812
- wasMentioned = resolveWasMentioned(mentionRegexes);
3813
- ({route, runtimeBinding, replyToMode, threadContext, threadTs, isThreadReply, threadKeys, sessionKey, historyKey} = routing);
3814
- canDetectMention = Boolean(ctx.botUserId) || mentionRegexes.length > 0;
3815
- }
3816
- if (preflightAudioTranscript && !wasMentioned) {
3817
- await discardSlackPreflightMedia(preloadedDirectMedia ? [...preloadedDirectMedia.values()] : void 0);
3818
- preloadedDirectMedia = void 0;
3819
- preflightAudioTranscript = void 0;
3820
- preflightAudioMedia = void 0;
3821
- }
3822
- const directThreadRoutedToDmSession = !assistantThreadContext && !agentViewThreadTs && isDirectMessage && isThreadReply && threadTs && runtimeBinding?.conversation.conversationId !== threadTs;
3823
- const mentionDecision = resolveInboundMentionDecision({
3824
- facts: {
3825
- canDetectMention,
3826
- wasMentioned,
3827
- hasAnyMention,
3828
- implicitMentionKinds
3829
- },
3830
- policy: {
3831
- isGroup: isRoom,
3832
- requireMention: shouldRequireMention,
3833
- allowTextCommands,
3834
- hasControlCommand: hasControlCommandInMessage,
3835
- commandAuthorized,
3836
- implicitMentions
3837
- }
3838
- });
3839
- const effectiveWasMentioned = mentionDecision.effectiveWasMentioned;
3840
- const shouldBypassMention = mentionDecision.shouldBypassMention;
3841
- const matchedImplicitMentionKinds = mentionDecision.matchedImplicitMentionKinds;
3842
- const mentionSource = resolveSlackMentionSource({
3843
- explicitBotMention: explicitlyMentionedBotUser || opts.source === "app_mention",
3844
- explicitSubteamMention: explicitlyMentionedBotSubteam,
3845
- matchedImplicitMentionKinds,
3846
- shouldBypassMention,
3847
- wasMentioned
3848
- });
3849
- if (isBotMessage && allowBotsMode === "mentions") {
3850
- if (!(isDirectMessage || effectiveWasMentioned || shouldBypassMention)) {
3851
- logVerbose("slack: drop bot message (allowBots=mentions, missing mention)");
3852
- return null;
3853
- }
3854
- }
3855
- if (isRoom && shouldRequireMention && !canDetectMention && !effectiveWasMentioned) {
3856
- ctx.logger.info({
3857
- channel: message.channel,
3858
- reason: "mention-detection-unavailable"
3859
- }, "skipping channel message");
3860
- await recordDroppedHistory("slack-mention-detection-unavailable");
3861
- return null;
3862
- }
3863
- const ignoreOtherMentions = channelConfig?.ignoreOtherMentions ?? false;
3864
- if (isRoom && ignoreOtherMentions && Boolean(ctx.botUserId) && hasAnyMention && !wasMentioned) {
3865
- logInboundDrop({
3866
- log: logVerbose,
3867
- channel: "slack",
3868
- reason: "other-mention",
3869
- target: senderId
3870
- });
3871
- await recordDroppedHistory("slack-other-mention");
3872
- return null;
3873
- }
3874
- if (isRoom && shouldRequireMention && mentionDecision.shouldSkip) {
3875
- ctx.logger.info({
3876
- channel: message.channel,
3877
- reason: "no-mention"
3878
- }, "skipping channel message");
3879
- await recordDroppedHistory("slack-no-mention");
3880
- return null;
3881
- }
3882
- const chatType = resolveSlackChatType(conversation.resolvedChannelType);
3883
- const inboundEventKind = classifyChannelInboundEvent({
3884
- conversation: { kind: chatType },
3885
- unmentionedGroupPolicy: resolveUnmentionedGroupInboundPolicy({
3886
- cfg,
3887
- agentId: route.agentId
3888
- }),
3889
- wasMentioned: effectiveWasMentioned,
3890
- hasControlCommand: hasControlCommandInMessage,
3891
- hasAbortRequest
3892
- });
3893
- const threadStarter = await getThreadStarter();
3894
- const resolvedMessageContent = await getMessageContent();
3895
- if (!resolvedMessageContent) return null;
3896
- const { rawBody, effectiveDirectMedia } = resolvedMessageContent;
3897
- const bodyForAgent = preflightAudioTranscript ? formatSlackAudioTranscriptForAgent({
3898
- transcript: preflightAudioTranscript,
3899
- rawBody
3900
- }) : rawBody;
3901
- const ackReaction = resolveAckReaction(cfg, route.agentId, {
3902
- channel: "slack",
3903
- accountId: account.accountId
3904
- });
3905
- const ackReactionValue = ackReaction ?? "";
3906
- const sourceRepliesAreToolOnly = resolveChannelMessageSourceReplyDeliveryMode({
3907
- cfg,
3908
- ctx: {
3909
- ChatType: chatType,
3910
- InboundEventKind: inboundEventKind
3911
- }
3912
- }) === "message_tool_only";
3913
- const statusReactionsExplicitlyEnabled = cfg.messages?.statusReactions?.enabled === true;
3914
- const isRoomEvent = inboundEventKind === "room_event";
3915
- const shouldAckReaction$1 = () => Boolean(ackReaction && shouldAckReaction({
3916
- scope: ctx.ackReactionScope,
3917
- inboundEventKind,
3918
- isDirect: isDirectMessage,
3919
- isGroup: isRoomish,
3920
- isMentionableGroup: isRoom,
3921
- requireMention: shouldRequireMention,
3922
- canDetectMention,
3923
- effectiveWasMentioned,
3924
- shouldBypassMention
3925
- }));
3926
- const ackReactionMessageTs = message.ts;
3927
- const allowToolOnlyStatusReaction = statusReactionsExplicitlyEnabled && (effectiveWasMentioned || shouldBypassMention);
3928
- const shouldSendAckReaction = shouldAckReaction$1() && (!sourceRepliesAreToolOnly || allowToolOnlyStatusReaction || isRoomEvent);
3929
- const statusReactionsWillHandle = Boolean(ackReactionMessageTs) && !isRoomEvent && statusReactionsExplicitlyEnabled && shouldSendAckReaction;
3930
- const ackReactionPromise = !statusReactionsWillHandle && shouldSendAckReaction && ackReactionMessageTs && ackReactionValue ? reactSlackMessage(message.channel, ackReactionMessageTs, ackReactionValue, {
3931
- token: ctx.botToken,
3932
- client: slackClient
3933
- }).then(() => true, (err) => {
3934
- logVerbose(`slack react failed for channel ${message.channel}: ${formatSlackError(err)}`);
3935
- return false;
3936
- }) : statusReactionsWillHandle ? Promise.resolve(true) : null;
3937
- const roomLabel = channelName ? `#${channelName}` : `#${message.channel}`;
3938
- const senderName = await resolveSenderName();
3939
- const preview = truncateUtf16Safe(bodyForAgent.replace(/\s+/g, " "), 160);
3940
- const inboundLabel = isDirectMessage ? `Slack DM from ${senderName}` : `Slack message in ${roomLabel} from ${senderName}`;
3941
- const slackFrom = isDirectMessage ? `slack:${message.user}` : isRoom ? `slack:channel:${message.channel}` : `slack:group:${message.channel}`;
3942
- enqueueSystemEvent(inboundLabel, {
3943
- sessionKey,
3944
- contextKey: `slack:message:${message.channel}:${message.ts ?? "unknown"}`
3945
- });
3946
- const envelopeFrom = resolveConversationLabel$1({
3947
- ChatType: chatType,
3948
- SenderName: senderName,
3949
- GroupSubject: isRoomish ? roomLabel : void 0,
3950
- From: slackFrom
3951
- }) ?? (isDirectMessage ? senderName : roomLabel);
3952
- const threadInfo = isThreadReply && threadTs ? ` thread_ts: ${threadTs}${message.parent_user_id ? ` parent_user_id: ${message.parent_user_id}` : ""}` : "";
3953
- const textWithId = `${bodyForAgent}\n[slack message id: ${message.ts} channel: ${message.channel}${threadInfo}]`;
3954
- const storePath = resolveStorePath(ctx.cfg.session?.store, { agentId: route.agentId });
3955
- const envelopeOptions = resolveEnvelopeFormatOptions(ctx.cfg);
3956
- const previousTimestamp = readSessionUpdatedAt({
3957
- storePath,
3958
- sessionKey
3959
- });
3960
- if (opts.source === "app_mention" && !ctx.botUserId && message.ts) {
3961
- const pendingHistory = ctx.channelHistories.get(historyKey);
3962
- if (pendingHistory) ctx.channelHistories.set(historyKey, pendingHistory.filter((entry) => entry.messageId !== message.ts));
3963
- }
3964
- const channelHistory = createChannelHistoryWindow({ historyMap: ctx.channelHistories });
3965
- const dmHistoryLimit = isDirectMessage ? resolveSlackDmHistoryLimit({
3966
- account,
3967
- userId: message.user,
3968
- defaultLimit: ctx.dmHistoryLimit
3969
- }) : 0;
3970
- let combinedBody = formatInboundEnvelope({
3971
- channel: "Slack",
3972
- from: envelopeFrom,
3973
- timestamp: resolveSlackTimestampMs(message.ts),
3974
- body: textWithId,
3975
- chatType,
3976
- sender: {
3977
- name: senderName,
3978
- id: senderId
3979
- },
3980
- previousTimestamp,
3981
- envelope: envelopeOptions
3982
- });
3983
- const dmHistoryContext = isDirectMessage && !assistantThreadContext && !agentViewThreadTs && !isThreadReply && dmHistoryLimit > 0 && !previousTimestamp ? await resolveSlackDmHistoryContext({
3984
- ctx,
3985
- channelId: message.channel,
3986
- currentMessageTs: message.ts,
3987
- limit: dmHistoryLimit,
3988
- envelopeOptions,
3989
- eventScope: opts.eventScope
3990
- }) : {
3991
- body: void 0,
3992
- inboundHistory: void 0
3993
- };
3994
- if (dmHistoryContext.body) combinedBody = `${dmHistoryContext.body}\n\n${combinedBody}`;
3995
- if (isRoomish && ctx.historyLimit > 0) combinedBody = channelHistory.buildPendingContext({
3996
- historyKey,
3997
- limit: ctx.historyLimit,
3998
- currentMessage: combinedBody,
3999
- formatEntry: (entry) => formatInboundEnvelope({
4000
- channel: "Slack",
4001
- from: roomLabel,
4002
- timestamp: entry.timestamp,
4003
- body: `${entry.body}${entry.messageId ? ` [id:${entry.messageId} channel:${message.channel}]` : ""}`,
4004
- chatType: "channel",
4005
- senderLabel: entry.sender,
4006
- envelope: envelopeOptions
4007
- })
4008
- });
4009
- const slackTo = isDirectMessage ? `user:${message.user}` : `channel:${message.channel}`;
4010
- const { untrustedChannelMetadata, groupSystemPrompt } = resolveSlackRoomContextHints({
4011
- isRoomish,
4012
- channelInfo,
4013
- channelConfig
4014
- });
4015
- const { threadStarterBody, threadHistoryBody, shouldSeedInitialThreadContext, threadLabel, threadStarterMedia } = await resolveSlackThreadContextData({
4016
- ctx,
4017
- account,
4018
- message,
4019
- isThreadReply,
4020
- threadTs,
4021
- threadStarter,
4022
- roomLabel,
4023
- storePath,
4024
- sessionKey,
4025
- forceInitialHistory: Boolean(directThreadRoutedToDmSession),
4026
- allowFromLower: threadContextAllowFromLower,
4027
- allowNameMatching: ctx.allowNameMatching,
4028
- contextVisibilityMode,
4029
- envelopeOptions,
4030
- effectiveDirectMedia,
4031
- eventScope: opts.eventScope
4032
- });
4033
- const effectiveMedia = effectiveDirectMedia ?? threadStarterMedia;
4034
- const inboundMedia = toInboundMediaFacts(effectiveMedia, { transcribed: (entry) => effectiveMedia === effectiveDirectMedia && entry === preflightAudioMedia });
4035
- const inboundHistory = isRoomish && ctx.historyLimit > 0 ? channelHistory.buildInboundHistory({
4036
- historyKey,
4037
- limit: ctx.historyLimit
4038
- }) : dmHistoryContext.inboundHistory;
4039
- const commandBody = textForCommandDetection.trim();
4040
- const supplementalThreadHistoryBody = directThreadRoutedToDmSession && !threadHistoryBody ? threadStarterBody : threadHistoryBody;
4041
- const effectiveMessageThreadId = assistantThreadContext?.threadTs ?? agentViewThreadTs ?? threadContext.messageThreadId;
4042
- const agentContextEntities = isAgentViewMessage ? normalizeSlackAppContextEntities(message.app_context) : [];
4043
- const ctxPayload = buildChannelInboundEventContext({
4044
- channel: "slack",
4045
- accountId: route.accountId,
4046
- messageId: threadContext.messageTs,
4047
- timestamp: resolveSlackTimestampMs(message.ts),
4048
- from: slackFrom,
4049
- sender: {
4050
- id: senderId,
4051
- name: senderName,
4052
- displayLabel: senderName,
4053
- isBot: isBotMessage || void 0
4054
- },
4055
- conversation: {
4056
- kind: chatType,
4057
- id: message.channel,
4058
- label: envelopeFrom,
4059
- spaceId: opts.eventScope?.teamId || ctx.teamId || void 0,
4060
- threadId: directThreadRoutedToDmSession ? void 0 : effectiveMessageThreadId,
4061
- nativeChannelId: message.channel
4062
- },
4063
- route: {
4064
- agentId: route.agentId,
4065
- dmScope: route.dmScope,
4066
- accountId: route.accountId,
4067
- routeSessionKey: sessionKey,
4068
- parentSessionKey: threadKeys.parentSessionKey
4069
- },
4070
- reply: {
4071
- to: slackTo,
4072
- replyToId: threadContext.replyToId,
4073
- messageThreadId: directThreadRoutedToDmSession ? void 0 : effectiveMessageThreadId,
4074
- nativeChannelId: message.channel
4075
- },
4076
- message: {
4077
- inboundEventKind,
4078
- body: combinedBody,
4079
- bodyForAgent,
4080
- rawBody,
4081
- commandBody,
4082
- inboundHistory
4083
- },
4084
- sessionTranscript: { historyLimit: isRoomish ? ctx.historyLimit : dmHistoryLimit },
4085
- access: {
4086
- mentions: {
4087
- canDetectMention: isRoomish,
4088
- wasMentioned: effectiveWasMentioned,
4089
- hasAnyMention: explicitlyMentioned || mentionedSubteamIds.length > 0,
4090
- implicitMentionKinds: matchedImplicitMentionKinds,
4091
- requireMention: shouldRequireMention,
4092
- effectiveWasMentioned
4093
- },
4094
- commands: { authorized: commandAuthorized }
4095
- },
4096
- media: inboundMedia,
4097
- supplemental: {
4098
- thread: {
4099
- starterBody: !directThreadRoutedToDmSession && shouldSeedInitialThreadContext ? threadStarterBody : void 0,
4100
- historyBody: supplementalThreadHistoryBody,
4101
- label: directThreadRoutedToDmSession ? void 0 : threadLabel
4102
- },
4103
- groupSystemPrompt
4104
- },
4105
- extra: {
4106
- GroupSubject: isRoomish ? roomLabel : void 0,
4107
- UntrustedContext: untrustedChannelMetadata ? [untrustedChannelMetadata] : void 0,
4108
- UntrustedStructuredContext: agentContextEntities.length > 0 ? [{
4109
- label: "Slack active context",
4110
- source: "slack",
4111
- type: "active_view",
4112
- payload: { entities: agentContextEntities }
4113
- }] : void 0,
4114
- TransportThreadId: directThreadRoutedToDmSession ? threadContext.messageThreadId : void 0,
4115
- SlackAssistantThread: assistantThreadContext ? true : void 0,
4116
- SlackAgentThread: agentViewThreadTs ? true : void 0,
4117
- SlackAssistantThreadContextChannelId: assistantThreadContext?.channelId,
4118
- SlackAssistantThreadContextTeamId: assistantThreadContext?.teamId,
4119
- SlackAssistantThreadContextEnterpriseId: assistantThreadContext?.enterpriseId ?? void 0,
4120
- Transcript: preflightAudioTranscript,
4121
- IsFirstThreadTurn: isThreadReply && threadTs && !directThreadRoutedToDmSession && shouldSeedInitialThreadContext ? true : void 0,
4122
- ...buildSlackMentionContextPayload({
4123
- isRoomish,
4124
- effectiveWasMentioned,
4125
- explicitlyMentioned,
4126
- mentionedUserIds,
4127
- mentionedSubteamIds,
4128
- matchedImplicitMentionKinds,
4129
- mentionSource
4130
- })
4131
- }
4132
- });
4133
- ctxPayload.ReplyToMode = replyToMode;
4134
- if (isRoomish && !shouldRequireMention) channelHistory.record({
4135
- historyKey,
4136
- limit: ctx.historyLimit,
4137
- entry: {
4138
- sender: senderName,
4139
- body: rawBody,
4140
- timestamp: resolveSlackTimestampMs(message.ts),
4141
- messageId: message.ts
4142
- }
4143
- });
4144
- const pinnedMainDmOwner = isDirectMessage ? resolvePinnedMainDmOwnerFromAllowlist({
4145
- dmScope: cfg.session?.dmScope,
4146
- allowFrom: ctx.allowFrom,
4147
- normalizeEntry: normalizeSlackAllowOwnerEntry
4148
- }) : null;
4149
- const replyTarget = isDirectMessage ? `channel:${message.channel}` : ctxPayload.To ?? void 0;
4150
- if (!replyTarget) return null;
4151
- if (preflightAudioTranscript) await sendSlackPreflightAudioTranscriptEcho({
4152
- transcript: preflightAudioTranscript,
4153
- cfg,
4154
- accountId: account.accountId,
4155
- originatingTo: `channel:${message.channel}`,
4156
- messageThreadId: threadContext.messageThreadId
4157
- });
4158
- if (shouldLogVerbose()) logVerbose(`slack inbound: account=${route.accountId} agent=${route.agentId} channel=${message.channel} message_ts=${message.ts ?? "unknown"} thread_ts=${effectiveMessageThreadId ?? "none"} from=${slackFrom} chat=${chatType} chars=${rawBody.length}`);
4159
- const updateLastRouteSessionKey = resolveInboundLastRouteSessionKey({
4160
- route,
4161
- sessionKey
4162
- });
4163
- return {
4164
- ctx,
4165
- account,
4166
- message,
4167
- ...opts.relayIdentity ? { relayIdentity: opts.relayIdentity } : {},
4168
- ...opts.eventScope ? { eventScope: opts.eventScope } : {},
4169
- route,
4170
- channelConfig,
4171
- replyTarget,
4172
- ctxPayload,
4173
- turn: {
4174
- storePath,
4175
- record: {
4176
- updateLastRoute: isDirectMessage ? {
4177
- sessionKey: updateLastRouteSessionKey,
4178
- channel: "slack",
4179
- to: `user:${message.user}`,
4180
- accountId: route.accountId,
4181
- threadId: effectiveMessageThreadId,
4182
- mainDmOwnerPin: updateLastRouteSessionKey === route.mainSessionKey && pinnedMainDmOwner && message.user ? {
4183
- ownerRecipient: pinnedMainDmOwner,
4184
- senderRecipient: normalizeLowercaseStringOrEmpty(message.user),
4185
- onSkip: ({ ownerRecipient, senderRecipient }) => {
4186
- logVerbose(`slack: skip main-session last route for ${senderRecipient} (pinned owner ${ownerRecipient})`);
4187
- }
4188
- } : void 0
4189
- } : void 0,
4190
- onRecordError: (err) => {
4191
- ctx.logger.warn({
4192
- error: formatErrorMessage(err),
4193
- storePath,
4194
- sessionKey
4195
- }, "failed updating session meta");
4196
- }
4197
- },
4198
- history: isRoomish && shouldRequireMention ? {
4199
- isGroup: true,
4200
- historyKey,
4201
- historyMap: ctx.channelHistories,
4202
- limit: ctx.historyLimit
4203
- } : void 0
4204
- },
4205
- replyToMode,
4206
- ...forcedReplyThreadTs ? { forcedReplyThreadTs } : {},
4207
- ...assistantThreadContext ? { slackMessageMetadata: buildSlackAssistantThreadMetadata(assistantThreadContext) } : {},
4208
- requireMention: shouldRequireMention,
4209
- isDirectMessage,
4210
- isRoomish,
4211
- historyKey,
4212
- preview,
4213
- ackReactionMessageTs,
4214
- ackReactionValue,
4215
- ackReactionPromise
4216
- };
4217
- }
4218
- //#endregion
4219
- export { dispatchPreparedSlackMessage, prepareSlackMessage };