@openclaw/slack 2026.9.5 → 2026.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-B86OaUEt.mjs → account-inspect-DWBXpER6.mjs} +1 -1
  3. package/dist/.setup/{accounts-C1FspRF-.mjs → accounts-D_N9IqNA.mjs} +33 -10
  4. package/dist/.setup/{action-runtime-Aa-h24Fq.mjs → action-runtime-DfWvuiZd.mjs} +46 -65
  5. package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
  6. package/dist/.setup/{actions-BvGUGk3w.mjs → actions-Df0CzcDl.mjs} +148 -204
  7. package/dist/.setup/{approval-handler.runtime-BcZNF-VP.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
  8. package/dist/.setup/{approval-message-updates-Cy1cxfBn.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
  9. package/dist/.setup/{channel-DrBm0NFw.mjs → channel-C7bgPSTE.mjs} +192 -280
  10. package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
  11. package/dist/.setup/{channel-type-osC0XOES.mjs → channel-type-ClOttrZ5.mjs} +13 -21
  12. package/dist/.setup/{channel.setup-BSY5hzVz.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
  13. package/dist/.setup/{config-schema-DrY3S7Ee.mjs → config-schema-BZCxmHKG.mjs} +32 -21
  14. package/dist/.setup/{directory-config-CTs7YyuU.mjs → directory-config-BOUWH3hR.mjs} +7 -10
  15. package/dist/.setup/{directory-live-Btq0063Q.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
  16. package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
  17. package/dist/.setup/{message-tool-api-DRnDCVdY.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
  18. package/dist/.setup/{provider-w36VTgZ3.mjs → monitor-BPVfkumU.mjs} +2191 -2704
  19. package/dist/.setup/{outbound-adapter-K3Ek1iSR.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
  20. package/dist/.setup/{pipeline.runtime-BZqGcbfi.mjs → pipeline.runtime-B1H63Frf.mjs} +901 -892
  21. package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
  22. package/dist/.setup/{policy-Db_QWCZZ.mjs → policy-D-jfM174.mjs} +5 -5
  23. package/dist/.setup/{probe-64C6k3_Q.mjs → probe-B2Y9qc_z.mjs} +101 -39
  24. package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
  25. package/dist/.setup/{relay-source-CDqY76Vp.mjs → relay-source-BpKdjsll.mjs} +10 -12
  26. package/dist/.setup/{replies-CWFhjS9S.mjs → replies-BAnUtr2f.mjs} +16 -76
  27. package/dist/.setup/{reply-blocks-9uCeAJts.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
  28. package/dist/.setup/{resolve-channels-x8fX1SEt.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
  29. package/dist/.setup/{resolve-users-B8BpBnH2.mjs → resolve-users-DW0ngD03.mjs} +20 -22
  30. package/dist/.setup/{scopes-CJ-6l4v4.mjs → scopes-CasuDvaa.mjs} +6 -17
  31. package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
  32. package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
  33. package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
  34. package/dist/.setup/{send-6GCb3lBP.mjs → send-BOVLQi3n.mjs} +102 -199
  35. package/dist/.setup/{session-status-BhG6pdiH.mjs → session-status-DscajIsd.mjs} +323 -250
  36. package/dist/.setup/{setup-plugin-api-DtCEByQB.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
  37. package/dist/.setup/{setup-surface-DsE0hsYY.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
  38. package/dist/.setup/{shared-BNmqCPgQ.mjs → shared-qau-uDGl.mjs} +30 -56
  39. package/dist/.setup/{slash-dispatch.runtime-Io4ASZsY.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
  40. package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
  41. package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
  42. package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
  43. package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
  44. package/dist/account-inspect-api.js +1 -1
  45. package/dist/api.js +18 -17
  46. package/dist/channel-config-api.js +1 -1
  47. package/dist/channel-plugin-api.js +1 -1
  48. package/dist/directory-contract-api.js +1 -1
  49. package/dist/doctor-contract-api.js +1 -1
  50. package/dist/http-routes-api.js +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/message-tool-api.js +1 -1
  53. package/dist/runtime-api.js +11 -12
  54. package/dist/secret-contract-api.js +1 -1
  55. package/dist/security-contract-api.js +1 -1
  56. package/dist/setup-entry.js +2 -2
  57. package/dist/setup-plugin-api.js +1 -1
  58. package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
  59. package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
  60. package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
  61. package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
  62. package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
  63. package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
  64. package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
  65. package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
  66. package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
  67. package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
  68. package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
  69. package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
  70. package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
  71. package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
  72. package/node_modules/@slack/bolt/node_modules/@types/node/web-globals/streams.d.ts +4 -0
  73. package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
  74. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  75. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
  76. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
  77. package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
  78. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
  79. package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
  80. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
  81. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
  82. package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
  83. package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
  84. package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
  85. package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
  86. package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
  87. package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
  88. package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/streams.d.ts +4 -0
  89. package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
  90. package/node_modules/get-east-asian-width/index.js +8 -3
  91. package/node_modules/get-east-asian-width/lookup-data.js +1 -1
  92. package/node_modules/get-east-asian-width/lookup.js +4 -4
  93. package/node_modules/get-east-asian-width/package.json +1 -1
  94. package/node_modules/typebox/build/compile/code.mjs +1 -2
  95. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  96. package/node_modules/typebox/build/format/iri.mjs +16 -9
  97. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  98. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  99. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  100. package/node_modules/typebox/build/guard/index.mjs +6 -0
  101. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  102. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  103. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  104. package/node_modules/typebox/build/schema/build.mjs +2 -3
  105. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  106. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  107. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  108. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  109. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  110. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  111. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  112. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  113. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  114. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  115. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  116. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  117. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  118. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  119. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  120. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  121. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  122. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  123. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  124. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  125. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  126. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  127. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  128. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  129. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  130. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  131. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  132. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  133. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  134. package/node_modules/typebox/package.json +1 -1
  135. package/node_modules/typebox/readme.md +3 -1
  136. package/node_modules/undici/README.md +81 -25
  137. package/node_modules/undici/docs/docs/api/Agent.md +249 -42
  138. package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
  139. package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
  140. package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
  141. package/node_modules/undici/docs/docs/api/Client.md +407 -162
  142. package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
  143. package/node_modules/undici/docs/docs/api/Connector.md +118 -35
  144. package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
  145. package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
  146. package/node_modules/undici/docs/docs/api/Debug.md +34 -18
  147. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
  148. package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
  149. package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
  150. package/node_modules/undici/docs/docs/api/Errors.md +503 -28
  151. package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
  152. package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
  153. package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
  154. package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
  155. package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
  156. package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
  157. package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
  158. package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
  159. package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
  160. package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
  161. package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
  162. package/node_modules/undici/docs/docs/api/Pool.md +236 -41
  163. package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
  164. package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
  165. package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
  166. package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
  167. package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
  168. package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
  169. package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
  170. package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
  171. package/node_modules/undici/docs/docs/api/Util.md +68 -11
  172. package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
  173. package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
  174. package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
  175. package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
  176. package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
  177. package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
  178. package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
  179. package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
  180. package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
  181. package/node_modules/undici/docs/docs/getting-started.md +281 -0
  182. package/node_modules/undici/docs/docs/index.md +784 -0
  183. package/node_modules/undici/docs/docs/site.json +125 -0
  184. package/node_modules/undici/docs/docs/type-map.json +79 -0
  185. package/node_modules/undici/index.js +4 -2
  186. package/node_modules/undici/lib/api/api-connect.js +13 -11
  187. package/node_modules/undici/lib/api/api-pipeline.js +26 -13
  188. package/node_modules/undici/lib/api/api-request.js +51 -21
  189. package/node_modules/undici/lib/api/api-stream.js +81 -20
  190. package/node_modules/undici/lib/api/api-upgrade.js +21 -11
  191. package/node_modules/undici/lib/api/readable.js +45 -9
  192. package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
  193. package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
  194. package/node_modules/undici/lib/core/connect.js +46 -7
  195. package/node_modules/undici/lib/core/constants.js +1 -24
  196. package/node_modules/undici/lib/core/errors.js +22 -2
  197. package/node_modules/undici/lib/core/request.js +100 -18
  198. package/node_modules/undici/lib/core/symbols.js +4 -0
  199. package/node_modules/undici/lib/core/util.js +105 -48
  200. package/node_modules/undici/lib/dispatcher/agent.js +51 -32
  201. package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
  202. package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
  203. package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
  204. package/node_modules/undici/lib/dispatcher/client.js +109 -36
  205. package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
  206. package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
  207. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
  208. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
  209. package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
  210. package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
  211. package/node_modules/undici/lib/dispatcher/pool.js +30 -5
  212. package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
  213. package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
  214. package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
  215. package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
  216. package/node_modules/undici/lib/global.js +37 -14
  217. package/node_modules/undici/lib/handler/cache-handler.js +49 -7
  218. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
  219. package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
  220. package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
  221. package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
  222. package/node_modules/undici/lib/handler/retry-handler.js +191 -50
  223. package/node_modules/undici/lib/interceptor/cache.js +75 -25
  224. package/node_modules/undici/lib/interceptor/decompress.js +5 -2
  225. package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
  226. package/node_modules/undici/lib/interceptor/dns.js +12 -1
  227. package/node_modules/undici/lib/interceptor/redirect.js +3 -3
  228. package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
  229. package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
  230. package/node_modules/undici/lib/mock/mock-agent.js +21 -9
  231. package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
  232. package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
  233. package/node_modules/undici/lib/mock/mock-utils.js +281 -47
  234. package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
  235. package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
  236. package/node_modules/undici/lib/util/cache.js +92 -10
  237. package/node_modules/undici/lib/util/runtime-features.js +3 -34
  238. package/node_modules/undici/lib/web/cache/cache.js +6 -8
  239. package/node_modules/undici/lib/web/cookies/parse.js +150 -146
  240. package/node_modules/undici/lib/web/cookies/util.js +1 -1
  241. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
  242. package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
  243. package/node_modules/undici/lib/web/eventsource/util.js +32 -1
  244. package/node_modules/undici/lib/web/fetch/body.js +48 -10
  245. package/node_modules/undici/lib/web/fetch/constants.js +1 -1
  246. package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
  247. package/node_modules/undici/lib/web/fetch/index.js +242 -223
  248. package/node_modules/undici/lib/web/fetch/request.js +35 -6
  249. package/node_modules/undici/lib/web/fetch/response.js +1 -3
  250. package/node_modules/undici/lib/web/fetch/util.js +10 -2
  251. package/node_modules/undici/lib/web/webidl/index.js +5 -7
  252. package/node_modules/undici/lib/web/websocket/frame.js +1 -7
  253. package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
  254. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
  255. package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
  256. package/node_modules/undici/package.json +10 -10
  257. package/node_modules/undici/types/agent.d.ts +0 -2
  258. package/node_modules/undici/types/client.d.ts +69 -24
  259. package/node_modules/undici/types/connector.d.ts +1 -0
  260. package/node_modules/undici/types/cookies.d.ts +1 -1
  261. package/node_modules/undici/types/dispatcher.d.ts +8 -30
  262. package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
  263. package/node_modules/undici/types/errors.d.ts +10 -0
  264. package/node_modules/undici/types/fetch.d.ts +5 -1
  265. package/node_modules/undici/types/formdata.d.ts +0 -6
  266. package/node_modules/undici/types/h2c-client.d.ts +6 -6
  267. package/node_modules/undici/types/handlers.d.ts +2 -0
  268. package/node_modules/undici/types/header.d.ts +5 -0
  269. package/node_modules/undici/types/index.d.ts +3 -1
  270. package/node_modules/undici/types/interceptors.d.ts +1 -1
  271. package/node_modules/undici/types/mock-agent.d.ts +11 -10
  272. package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
  273. package/node_modules/undici/types/pool.d.ts +0 -2
  274. package/node_modules/undici/types/proxy-agent.d.ts +9 -2
  275. package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
  276. package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
  277. package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
  278. package/node_modules/undici/types/webidl.d.ts +0 -1
  279. package/node_modules/zod/README.md +2 -2
  280. package/node_modules/zod/compile.cjs +19 -0
  281. package/node_modules/zod/index.cjs +19 -0
  282. package/node_modules/zod/locales/index.cjs +19 -0
  283. package/node_modules/zod/mini/index.cjs +19 -0
  284. package/node_modules/zod/package.json +8 -7
  285. package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
  286. package/node_modules/zod/src/v4/classic/external.ts +2 -0
  287. package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
  288. package/node_modules/zod/src/v4/classic/schemas.ts +243 -168
  289. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -9
  290. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
  291. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
  292. package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +265 -0
  293. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
  294. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
  295. package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
  296. package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
  297. package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
  298. package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +40 -2
  299. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
  300. package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
  301. package/node_modules/zod/src/v4/classic/tests/number.test.ts +39 -0
  302. package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
  303. package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
  304. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
  305. package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
  306. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
  307. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
  308. package/node_modules/zod/src/v4/classic/tests/string.test.ts +95 -1
  309. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
  310. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +234 -38
  311. package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
  312. package/node_modules/zod/src/v4/core/api.ts +44 -28
  313. package/node_modules/zod/src/v4/core/checks.ts +62 -102
  314. package/node_modules/zod/src/v4/core/compile.ts +218 -93
  315. package/node_modules/zod/src/v4/core/core.ts +1 -3
  316. package/node_modules/zod/src/v4/core/doc.ts +6 -2
  317. package/node_modules/zod/src/v4/core/errors.ts +3 -6
  318. package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
  319. package/node_modules/zod/src/v4/core/json-schema-processors.ts +185 -81
  320. package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
  321. package/node_modules/zod/src/v4/core/parse.ts +37 -16
  322. package/node_modules/zod/src/v4/core/regexes.ts +14 -4
  323. package/node_modules/zod/src/v4/core/schemas.ts +296 -132
  324. package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
  325. package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +35 -0
  326. package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
  327. package/node_modules/zod/src/v4/core/tests/compile.test.ts +399 -2
  328. package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
  329. package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
  330. package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
  331. package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +118 -16
  332. package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
  333. package/node_modules/zod/src/v4/core/util.ts +218 -147
  334. package/node_modules/zod/src/v4/core/versions.ts +2 -2
  335. package/node_modules/zod/src/v4/locales/ar.ts +2 -0
  336. package/node_modules/zod/src/v4/locales/az.ts +2 -0
  337. package/node_modules/zod/src/v4/locales/be.ts +2 -0
  338. package/node_modules/zod/src/v4/locales/bg.ts +2 -0
  339. package/node_modules/zod/src/v4/locales/bn.ts +2 -0
  340. package/node_modules/zod/src/v4/locales/ca.ts +2 -0
  341. package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
  342. package/node_modules/zod/src/v4/locales/cs.ts +2 -0
  343. package/node_modules/zod/src/v4/locales/da.ts +2 -0
  344. package/node_modules/zod/src/v4/locales/de.ts +2 -0
  345. package/node_modules/zod/src/v4/locales/el.ts +2 -0
  346. package/node_modules/zod/src/v4/locales/en.ts +2 -0
  347. package/node_modules/zod/src/v4/locales/eo.ts +2 -0
  348. package/node_modules/zod/src/v4/locales/es.ts +2 -0
  349. package/node_modules/zod/src/v4/locales/fa.ts +2 -0
  350. package/node_modules/zod/src/v4/locales/fi.ts +2 -0
  351. package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
  352. package/node_modules/zod/src/v4/locales/fr.ts +2 -0
  353. package/node_modules/zod/src/v4/locales/gu.ts +2 -0
  354. package/node_modules/zod/src/v4/locales/he.ts +2 -0
  355. package/node_modules/zod/src/v4/locales/hi.ts +2 -0
  356. package/node_modules/zod/src/v4/locales/hr.ts +2 -0
  357. package/node_modules/zod/src/v4/locales/hu.ts +2 -0
  358. package/node_modules/zod/src/v4/locales/hy.ts +2 -0
  359. package/node_modules/zod/src/v4/locales/id.ts +2 -0
  360. package/node_modules/zod/src/v4/locales/index.ts +1 -0
  361. package/node_modules/zod/src/v4/locales/is.ts +2 -0
  362. package/node_modules/zod/src/v4/locales/it.ts +2 -0
  363. package/node_modules/zod/src/v4/locales/ja.ts +2 -0
  364. package/node_modules/zod/src/v4/locales/ka.ts +2 -0
  365. package/node_modules/zod/src/v4/locales/km.ts +2 -0
  366. package/node_modules/zod/src/v4/locales/kn.ts +2 -0
  367. package/node_modules/zod/src/v4/locales/ko.ts +2 -0
  368. package/node_modules/zod/src/v4/locales/lt.ts +2 -0
  369. package/node_modules/zod/src/v4/locales/mk.ts +2 -0
  370. package/node_modules/zod/src/v4/locales/ms.ts +2 -0
  371. package/node_modules/zod/src/v4/locales/ne.ts +2 -0
  372. package/node_modules/zod/src/v4/locales/nl.ts +2 -0
  373. package/node_modules/zod/src/v4/locales/nn.ts +2 -0
  374. package/node_modules/zod/src/v4/locales/no.ts +2 -0
  375. package/node_modules/zod/src/v4/locales/ota.ts +2 -0
  376. package/node_modules/zod/src/v4/locales/pl.ts +2 -0
  377. package/node_modules/zod/src/v4/locales/ps.ts +2 -0
  378. package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
  379. package/node_modules/zod/src/v4/locales/pt.ts +2 -0
  380. package/node_modules/zod/src/v4/locales/ro.ts +2 -0
  381. package/node_modules/zod/src/v4/locales/ru.ts +2 -0
  382. package/node_modules/zod/src/v4/locales/sk.ts +2 -0
  383. package/node_modules/zod/src/v4/locales/sl.ts +2 -0
  384. package/node_modules/zod/src/v4/locales/sv.ts +2 -0
  385. package/node_modules/zod/src/v4/locales/ta.ts +2 -0
  386. package/node_modules/zod/src/v4/locales/tg.ts +135 -0
  387. package/node_modules/zod/src/v4/locales/th.ts +2 -0
  388. package/node_modules/zod/src/v4/locales/tk.ts +2 -0
  389. package/node_modules/zod/src/v4/locales/tr.ts +2 -0
  390. package/node_modules/zod/src/v4/locales/uk.ts +2 -0
  391. package/node_modules/zod/src/v4/locales/ur.ts +2 -0
  392. package/node_modules/zod/src/v4/locales/uz.ts +2 -0
  393. package/node_modules/zod/src/v4/locales/vi.ts +2 -0
  394. package/node_modules/zod/src/v4/locales/yo.ts +2 -0
  395. package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
  396. package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
  397. package/node_modules/zod/src/v4/mini/external.ts +2 -0
  398. package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
  399. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
  400. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
  401. package/node_modules/zod/src/v4/mini/tests/index.test.ts +86 -0
  402. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
  403. package/node_modules/zod/src/v4/mini/tests/string.test.ts +23 -0
  404. package/node_modules/zod/v3/ZodError.cjs +19 -0
  405. package/node_modules/zod/v3/errors.cjs +19 -0
  406. package/node_modules/zod/v3/external.cjs +19 -0
  407. package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
  408. package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
  409. package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
  410. package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
  411. package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
  412. package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
  413. package/node_modules/zod/v3/helpers/util.cjs +19 -0
  414. package/node_modules/zod/v3/index.cjs +19 -0
  415. package/node_modules/zod/v3/standard-schema.cjs +19 -0
  416. package/node_modules/zod/v3/types.cjs +19 -0
  417. package/node_modules/zod/v4/classic/checks.cjs +19 -0
  418. package/node_modules/zod/v4/classic/coerce.cjs +19 -0
  419. package/node_modules/zod/v4/classic/compat.cjs +19 -0
  420. package/node_modules/zod/v4/classic/deep-partial.cjs +19 -0
  421. package/node_modules/zod/v4/classic/errors.cjs +19 -0
  422. package/node_modules/zod/v4/classic/external.cjs +22 -1
  423. package/node_modules/zod/v4/classic/external.d.cts +1 -1
  424. package/node_modules/zod/v4/classic/external.d.ts +1 -1
  425. package/node_modules/zod/v4/classic/external.js +1 -1
  426. package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
  427. package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
  428. package/node_modules/zod/v4/classic/in-out.cjs +19 -0
  429. package/node_modules/zod/v4/classic/index.cjs +19 -0
  430. package/node_modules/zod/v4/classic/iso.cjs +19 -0
  431. package/node_modules/zod/v4/classic/parse.cjs +19 -0
  432. package/node_modules/zod/v4/classic/schemas.cjs +100 -35
  433. package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
  434. package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
  435. package/node_modules/zod/v4/classic/schemas.js +77 -33
  436. package/node_modules/zod/v4/core/api.cjs +45 -22
  437. package/node_modules/zod/v4/core/api.d.cts +12 -6
  438. package/node_modules/zod/v4/core/api.d.ts +12 -6
  439. package/node_modules/zod/v4/core/api.js +25 -22
  440. package/node_modules/zod/v4/core/checks.cjs +51 -97
  441. package/node_modules/zod/v4/core/checks.d.cts +17 -1
  442. package/node_modules/zod/v4/core/checks.d.ts +17 -1
  443. package/node_modules/zod/v4/core/checks.js +31 -96
  444. package/node_modules/zod/v4/core/compile.cjs +173 -78
  445. package/node_modules/zod/v4/core/compile.d.cts +18 -4
  446. package/node_modules/zod/v4/core/compile.d.ts +18 -4
  447. package/node_modules/zod/v4/core/compile.js +154 -79
  448. package/node_modules/zod/v4/core/core.cjs +20 -1
  449. package/node_modules/zod/v4/core/core.js +1 -1
  450. package/node_modules/zod/v4/core/doc.cjs +26 -2
  451. package/node_modules/zod/v4/core/doc.js +7 -2
  452. package/node_modules/zod/v4/core/errors.cjs +21 -5
  453. package/node_modules/zod/v4/core/errors.js +2 -5
  454. package/node_modules/zod/v4/core/index.cjs +19 -0
  455. package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
  456. package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
  457. package/node_modules/zod/v4/core/json-schema-processors.cjs +188 -72
  458. package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
  459. package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
  460. package/node_modules/zod/v4/core/json-schema-processors.js +170 -74
  461. package/node_modules/zod/v4/core/json-schema.cjs +19 -0
  462. package/node_modules/zod/v4/core/memoizer.cjs +111 -23
  463. package/node_modules/zod/v4/core/memoizer.js +69 -23
  464. package/node_modules/zod/v4/core/parse.cjs +56 -16
  465. package/node_modules/zod/v4/core/parse.js +37 -16
  466. package/node_modules/zod/v4/core/regexes.cjs +31 -6
  467. package/node_modules/zod/v4/core/regexes.d.cts +3 -0
  468. package/node_modules/zod/v4/core/regexes.d.ts +3 -0
  469. package/node_modules/zod/v4/core/regexes.js +10 -4
  470. package/node_modules/zod/v4/core/registries.cjs +19 -0
  471. package/node_modules/zod/v4/core/schemas.cjs +302 -114
  472. package/node_modules/zod/v4/core/schemas.d.cts +28 -8
  473. package/node_modules/zod/v4/core/schemas.d.ts +28 -8
  474. package/node_modules/zod/v4/core/schemas.js +279 -113
  475. package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
  476. package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
  477. package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
  478. package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
  479. package/node_modules/zod/v4/core/to-json-schema.js +7 -6
  480. package/node_modules/zod/v4/core/util.cjs +177 -143
  481. package/node_modules/zod/v4/core/util.d.cts +25 -4
  482. package/node_modules/zod/v4/core/util.d.ts +25 -4
  483. package/node_modules/zod/v4/core/util.js +156 -143
  484. package/node_modules/zod/v4/core/versions.cjs +21 -2
  485. package/node_modules/zod/v4/core/versions.d.cts +1 -1
  486. package/node_modules/zod/v4/core/versions.d.ts +1 -1
  487. package/node_modules/zod/v4/core/versions.js +2 -2
  488. package/node_modules/zod/v4/core/visit.cjs +19 -0
  489. package/node_modules/zod/v4/index.cjs +19 -0
  490. package/node_modules/zod/v4/locales/ar.cjs +2 -0
  491. package/node_modules/zod/v4/locales/ar.js +2 -0
  492. package/node_modules/zod/v4/locales/az.cjs +2 -0
  493. package/node_modules/zod/v4/locales/az.js +2 -0
  494. package/node_modules/zod/v4/locales/be.cjs +2 -0
  495. package/node_modules/zod/v4/locales/be.js +2 -0
  496. package/node_modules/zod/v4/locales/bg.cjs +2 -0
  497. package/node_modules/zod/v4/locales/bg.js +2 -0
  498. package/node_modules/zod/v4/locales/bn.cjs +2 -0
  499. package/node_modules/zod/v4/locales/bn.js +2 -0
  500. package/node_modules/zod/v4/locales/ca.cjs +2 -0
  501. package/node_modules/zod/v4/locales/ca.js +2 -0
  502. package/node_modules/zod/v4/locales/ckb.cjs +2 -0
  503. package/node_modules/zod/v4/locales/ckb.js +2 -0
  504. package/node_modules/zod/v4/locales/cs.cjs +2 -0
  505. package/node_modules/zod/v4/locales/cs.js +2 -0
  506. package/node_modules/zod/v4/locales/da.cjs +2 -0
  507. package/node_modules/zod/v4/locales/da.js +2 -0
  508. package/node_modules/zod/v4/locales/de.cjs +2 -0
  509. package/node_modules/zod/v4/locales/de.js +2 -0
  510. package/node_modules/zod/v4/locales/el.cjs +2 -0
  511. package/node_modules/zod/v4/locales/el.js +2 -0
  512. package/node_modules/zod/v4/locales/en.cjs +2 -0
  513. package/node_modules/zod/v4/locales/en.js +2 -0
  514. package/node_modules/zod/v4/locales/eo.cjs +2 -0
  515. package/node_modules/zod/v4/locales/eo.js +2 -0
  516. package/node_modules/zod/v4/locales/es.cjs +2 -0
  517. package/node_modules/zod/v4/locales/es.js +2 -0
  518. package/node_modules/zod/v4/locales/fa.cjs +2 -0
  519. package/node_modules/zod/v4/locales/fa.js +2 -0
  520. package/node_modules/zod/v4/locales/fi.cjs +2 -0
  521. package/node_modules/zod/v4/locales/fi.js +2 -0
  522. package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
  523. package/node_modules/zod/v4/locales/fr-CA.js +2 -0
  524. package/node_modules/zod/v4/locales/fr.cjs +2 -0
  525. package/node_modules/zod/v4/locales/fr.js +2 -0
  526. package/node_modules/zod/v4/locales/gu.cjs +2 -0
  527. package/node_modules/zod/v4/locales/gu.js +2 -0
  528. package/node_modules/zod/v4/locales/he.cjs +2 -0
  529. package/node_modules/zod/v4/locales/he.js +2 -0
  530. package/node_modules/zod/v4/locales/hi.cjs +2 -0
  531. package/node_modules/zod/v4/locales/hi.js +2 -0
  532. package/node_modules/zod/v4/locales/hr.cjs +2 -0
  533. package/node_modules/zod/v4/locales/hr.js +2 -0
  534. package/node_modules/zod/v4/locales/hu.cjs +2 -0
  535. package/node_modules/zod/v4/locales/hu.js +2 -0
  536. package/node_modules/zod/v4/locales/hy.cjs +2 -0
  537. package/node_modules/zod/v4/locales/hy.js +2 -0
  538. package/node_modules/zod/v4/locales/id.cjs +2 -0
  539. package/node_modules/zod/v4/locales/id.js +2 -0
  540. package/node_modules/zod/v4/locales/index.cjs +22 -1
  541. package/node_modules/zod/v4/locales/index.d.cts +1 -0
  542. package/node_modules/zod/v4/locales/index.d.ts +1 -0
  543. package/node_modules/zod/v4/locales/index.js +1 -0
  544. package/node_modules/zod/v4/locales/is.cjs +2 -0
  545. package/node_modules/zod/v4/locales/is.js +2 -0
  546. package/node_modules/zod/v4/locales/it.cjs +2 -0
  547. package/node_modules/zod/v4/locales/it.js +2 -0
  548. package/node_modules/zod/v4/locales/ja.cjs +2 -0
  549. package/node_modules/zod/v4/locales/ja.js +2 -0
  550. package/node_modules/zod/v4/locales/ka.cjs +2 -0
  551. package/node_modules/zod/v4/locales/ka.js +2 -0
  552. package/node_modules/zod/v4/locales/km.cjs +2 -0
  553. package/node_modules/zod/v4/locales/km.js +2 -0
  554. package/node_modules/zod/v4/locales/kn.cjs +2 -0
  555. package/node_modules/zod/v4/locales/kn.js +2 -0
  556. package/node_modules/zod/v4/locales/ko.cjs +2 -0
  557. package/node_modules/zod/v4/locales/ko.js +2 -0
  558. package/node_modules/zod/v4/locales/lt.cjs +2 -0
  559. package/node_modules/zod/v4/locales/lt.js +2 -0
  560. package/node_modules/zod/v4/locales/mk.cjs +2 -0
  561. package/node_modules/zod/v4/locales/mk.js +2 -0
  562. package/node_modules/zod/v4/locales/ms.cjs +2 -0
  563. package/node_modules/zod/v4/locales/ms.js +2 -0
  564. package/node_modules/zod/v4/locales/ne.cjs +2 -0
  565. package/node_modules/zod/v4/locales/ne.js +2 -0
  566. package/node_modules/zod/v4/locales/nl.cjs +2 -0
  567. package/node_modules/zod/v4/locales/nl.js +2 -0
  568. package/node_modules/zod/v4/locales/nn.cjs +2 -0
  569. package/node_modules/zod/v4/locales/nn.js +2 -0
  570. package/node_modules/zod/v4/locales/no.cjs +2 -0
  571. package/node_modules/zod/v4/locales/no.js +2 -0
  572. package/node_modules/zod/v4/locales/ota.cjs +2 -0
  573. package/node_modules/zod/v4/locales/ota.js +2 -0
  574. package/node_modules/zod/v4/locales/pl.cjs +2 -0
  575. package/node_modules/zod/v4/locales/pl.js +2 -0
  576. package/node_modules/zod/v4/locales/ps.cjs +2 -0
  577. package/node_modules/zod/v4/locales/ps.js +2 -0
  578. package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
  579. package/node_modules/zod/v4/locales/pt-BR.js +2 -0
  580. package/node_modules/zod/v4/locales/pt.cjs +2 -0
  581. package/node_modules/zod/v4/locales/pt.js +2 -0
  582. package/node_modules/zod/v4/locales/ro.cjs +2 -0
  583. package/node_modules/zod/v4/locales/ro.js +2 -0
  584. package/node_modules/zod/v4/locales/ru.cjs +2 -0
  585. package/node_modules/zod/v4/locales/ru.js +2 -0
  586. package/node_modules/zod/v4/locales/sk.cjs +2 -0
  587. package/node_modules/zod/v4/locales/sk.js +2 -0
  588. package/node_modules/zod/v4/locales/sl.cjs +2 -0
  589. package/node_modules/zod/v4/locales/sl.js +2 -0
  590. package/node_modules/zod/v4/locales/sv.cjs +2 -0
  591. package/node_modules/zod/v4/locales/sv.js +2 -0
  592. package/node_modules/zod/v4/locales/ta.cjs +2 -0
  593. package/node_modules/zod/v4/locales/ta.js +2 -0
  594. package/node_modules/zod/v4/locales/tg.cjs +144 -0
  595. package/node_modules/zod/v4/locales/tg.d.cts +5 -0
  596. package/node_modules/zod/v4/locales/tg.d.ts +4 -0
  597. package/node_modules/zod/v4/locales/tg.js +117 -0
  598. package/node_modules/zod/v4/locales/th.cjs +2 -0
  599. package/node_modules/zod/v4/locales/th.js +2 -0
  600. package/node_modules/zod/v4/locales/tk.cjs +2 -0
  601. package/node_modules/zod/v4/locales/tk.js +2 -0
  602. package/node_modules/zod/v4/locales/tr.cjs +2 -0
  603. package/node_modules/zod/v4/locales/tr.js +2 -0
  604. package/node_modules/zod/v4/locales/uk.cjs +2 -0
  605. package/node_modules/zod/v4/locales/uk.js +2 -0
  606. package/node_modules/zod/v4/locales/ur.cjs +2 -0
  607. package/node_modules/zod/v4/locales/ur.js +2 -0
  608. package/node_modules/zod/v4/locales/uz.cjs +2 -0
  609. package/node_modules/zod/v4/locales/uz.js +2 -0
  610. package/node_modules/zod/v4/locales/vi.cjs +2 -0
  611. package/node_modules/zod/v4/locales/vi.js +2 -0
  612. package/node_modules/zod/v4/locales/yo.cjs +2 -0
  613. package/node_modules/zod/v4/locales/yo.js +2 -0
  614. package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
  615. package/node_modules/zod/v4/locales/zh-CN.js +2 -0
  616. package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
  617. package/node_modules/zod/v4/locales/zh-TW.js +2 -0
  618. package/node_modules/zod/v4/mini/checks.cjs +19 -0
  619. package/node_modules/zod/v4/mini/coerce.cjs +19 -0
  620. package/node_modules/zod/v4/mini/deep-partial.cjs +19 -0
  621. package/node_modules/zod/v4/mini/external.cjs +22 -1
  622. package/node_modules/zod/v4/mini/external.d.cts +1 -1
  623. package/node_modules/zod/v4/mini/external.d.ts +1 -1
  624. package/node_modules/zod/v4/mini/external.js +1 -1
  625. package/node_modules/zod/v4/mini/in-out.cjs +19 -0
  626. package/node_modules/zod/v4/mini/index.cjs +19 -0
  627. package/node_modules/zod/v4/mini/iso.cjs +19 -0
  628. package/node_modules/zod/v4/mini/parse.cjs +19 -0
  629. package/node_modules/zod/v4/mini/schemas.cjs +44 -8
  630. package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
  631. package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
  632. package/node_modules/zod/v4/mini/schemas.js +21 -6
  633. package/node_modules/zod/v4-mini/index.cjs +19 -0
  634. package/openclaw.plugin.json +49 -3
  635. package/package.json +8 -8
  636. package/dist/.setup/accounts.runtime-BpWv-6-2.mjs +0 -2
  637. package/dist/.setup/action-runtime.runtime-DwH3NdpT.mjs +0 -2
  638. package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
  639. package/dist/.setup/monitor-Dw5uuKWM.mjs +0 -13
  640. package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
  641. package/dist/.setup/send.runtime-BmqRP-WG.mjs +0 -2
  642. package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
  643. package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
  644. package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
  645. package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
  646. package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
  647. package/node_modules/undici/lib/util/promise.js +0 -28
  648. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -1,12 +1,12 @@
1
- import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
2
- import { a as resolveSlackAccount, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId } from "./accounts-C1FspRF-.mjs";
3
- import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, Mt as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, Y as normalizeSlackOutboundText, f as assertSlackDetachedTargetAllowed, h as appendSlackNativeDataPlainTextFallback, lt as validateSlackBlocksArray, m as appendSlackNativeDataFallbackText, ot as escapeSlackMrkdwn, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-BhG6pdiH.mjs";
4
- import { n as formatSlackTarget } from "./target-parsing-DEsPjngB.mjs";
5
- import { g as getSlackWriteClient, l as createSlackLookupClient, m as createSlackWriteClient } from "./probe-64C6k3_Q.mjs";
6
- import { m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-6GCb3lBP.mjs";
1
+ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
+ import { h as resolveSlackBotToken, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
+ import { n as formatSlackTarget } from "./target-parsing-FFE26kOV.mjs";
4
+ import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, f as assertSlackDetachedTargetAllowed, h as appendSlackNativeDataPlainTextFallback, lt as escapeSlackMrkdwn, m as appendSlackNativeDataFallbackText, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-DscajIsd.mjs";
5
+ import { _ as getSlackWriteClient, h as createSlackWriteClient, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
6
+ import { p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
7
7
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
8
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
- import { createSubsystemLogger, logVerbose, logVerbose as logVerbose$1 } from "openclaw/plugin-sdk/runtime-env";
8
+ import { asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
+ import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
10
10
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
11
11
  import { captureChannelReadAuthority as captureChannelReadAuthority$1 } from "openclaw/plugin-sdk/fetch-runtime";
12
12
  import { fetchWithRuntimeDispatcher as fetchWithRuntimeDispatcher$1 } from "openclaw/plugin-sdk/runtime-fetch";
@@ -15,7 +15,7 @@ import { z } from "zod";
15
15
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
16
16
  import fs from "node:fs/promises";
17
17
  import { runTasksWithConcurrency } from "openclaw/plugin-sdk/concurrency-runtime";
18
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
18
+ import { formatErrorMessage, toErrorObject } from "openclaw/plugin-sdk/error-runtime";
19
19
  import { normalizeHostname } from "openclaw/plugin-sdk/host-runtime";
20
20
  import { resolveRequestUrl } from "openclaw/plugin-sdk/request-url";
21
21
  import { saveRemoteMedia, unlinkIfExists } from "openclaw/plugin-sdk/media-runtime";
@@ -57,11 +57,8 @@ function buildSlackEditTextPayload(content, blocks) {
57
57
  }
58
58
  //#endregion
59
59
  //#region extensions/slack/src/monitor/block-text.ts
60
- function readSlackBlockType(block) {
61
- return block && typeof block === "object" && !Array.isArray(block) ? block.type : void 0;
62
- }
63
60
  function hasSlackTableBlock(blocks) {
64
- return blocks?.some((block) => readSlackBlockType(block) === "table") ?? false;
61
+ return blocks?.some((block) => asOptionalRecord(block)?.type === "table") ?? false;
65
62
  }
66
63
  function hasSlackMessageTableBlock(message) {
67
64
  return hasSlackTableBlock(message.blocks) || message.attachments?.some((attachment) => !isSlackUnfurlAttachment(attachment) && hasSlackTableBlock(attachment.blocks)) === true;
@@ -75,7 +72,7 @@ function resolveSlackBlocksText(blocks) {
75
72
  let hasRichText = false;
76
73
  let hasNativeData = false;
77
74
  for (const block of blocks) {
78
- const blockType = readSlackBlockType(block);
75
+ const blockType = asOptionalRecord(block)?.type;
79
76
  hasRichText ||= blockType === "rich_text";
80
77
  hasNativeData ||= blockType === "data_visualization" || blockType === "data_table" || blockType === "table";
81
78
  const text = renderSlackBlockFallbackText(block, {
@@ -103,7 +100,7 @@ function resolveSlackAttachmentTableTexts(attachments) {
103
100
  for (const attachment of attachments ?? []) {
104
101
  if (isSlackUnfurlAttachment(attachment)) continue;
105
102
  for (const block of attachment.blocks ?? []) {
106
- if (readSlackBlockType(block) !== "table") continue;
103
+ if (asOptionalRecord(block)?.type !== "table") continue;
107
104
  const text = renderSlackBlockFallbackText(block, { nativeDataFormat: "plain" });
108
105
  if (!text || seen.has(text)) continue;
109
106
  seen.add(text);
@@ -115,7 +112,7 @@ function resolveSlackAttachmentTableTexts(attachments) {
115
112
  /** Resolve agent-visible Slack text while admitting only native tables from attachments. */
116
113
  function resolveSlackMessageText(message, options = {}) {
117
114
  let resolved = chooseSlackPrimaryText({
118
- messageText: options.preserveMessageTextWhitespace ? typeof message.text === "string" && message.text.trim().length > 0 ? message.text : void 0 : normalizeOptionalString(message.text),
115
+ messageText: options.preserveMessageTextWhitespace ? readNonBlankString(message.text) : normalizeOptionalString(message.text),
119
116
  blocksText: resolveSlackBlocksText(message.blocks)
120
117
  });
121
118
  for (const tableText of resolveSlackAttachmentTableTexts(message.attachments)) resolved = appendDistinctSlackText(resolved, tableText);
@@ -195,13 +192,14 @@ function assertSlackFileUrl(rawUrl, govSlack) {
195
192
  if (!isSlackHostname(parsed.hostname, govSlack)) throw new Error(`Refusing to send Slack token to non-Slack host "${parsed.hostname}" (url: ${rawUrl})`);
196
193
  return parsed;
197
194
  }
198
- function createSlackAuthHeaders(token) {
199
- return { Authorization: `Bearer ${token}` };
200
- }
201
- function createSlackMediaRequest(url, token, govSlack) {
202
- return {
203
- url: assertSlackFileUrl(url, govSlack).href,
204
- requestInit: { headers: createSlackAuthHeaders(token) }
195
+ function captureSlackMediaReadGuard(params) {
196
+ const inherited = captureChannelReadAuthority$1();
197
+ const { assertCurrent, abortSignal } = params;
198
+ if (!assertCurrent && !abortSignal) return inherited;
199
+ return () => {
200
+ inherited?.();
201
+ abortSignal?.throwIfAborted();
202
+ assertCurrent?.();
205
203
  };
206
204
  }
207
205
  function createSlackMediaFetch(govSlack, assertReadAuthority = captureChannelReadAuthority$1()) {
@@ -237,34 +235,41 @@ const SLACK_GOV_MEDIA_SSRF_POLICY = {
237
235
  const SLACK_MEDIA_READ_IDLE_TIMEOUT_MS = 6e4;
238
236
  const SLACK_MEDIA_TOTAL_TIMEOUT_MS = 12e4;
239
237
  async function saveSlackMedia(params) {
240
- const timeoutAbortController = params.totalTimeoutMs ? new AbortController() : void 0;
241
- const abortSignals = [
242
- params.abortSignal,
243
- params.options.requestInit?.signal ?? void 0,
244
- timeoutAbortController?.signal
245
- ].filter((signal) => Boolean(signal));
238
+ const url = assertSlackFileUrl(params.url, params.govSlack).href;
239
+ const totalTimeoutMs = params.totalTimeoutMs ?? SLACK_MEDIA_TOTAL_TIMEOUT_MS;
240
+ const timeoutAbortController = totalTimeoutMs ? new AbortController() : void 0;
241
+ const abortSignals = [params.abortSignal, timeoutAbortController?.signal].filter((signal) => Boolean(signal));
246
242
  const signal = abortSignals.length > 1 ? AbortSignal.any(abortSignals) : abortSignals[0];
247
243
  let timedOut = false;
248
244
  let timeoutHandle = null;
249
245
  const savePromise = saveRemoteMedia({
250
- ...params.options,
251
- readIdleTimeoutMs: params.readIdleTimeoutMs ?? 6e4,
252
- ...signal ? { requestInit: {
253
- ...params.options.requestInit,
254
- signal
255
- } } : {}
246
+ url,
247
+ fetchImpl: createSlackMediaFetch(params.govSlack, params.assertReadAuthority),
248
+ beforeRequest: params.assertReadAuthority,
249
+ assertCurrent: params.assertCurrent,
250
+ requestInit: {
251
+ headers: { Authorization: `Bearer ${params.token}` },
252
+ ...signal ? { signal } : {}
253
+ },
254
+ ...params.file ? {
255
+ filePathHint: params.file.name,
256
+ fallbackContentType: resolveSlackMediaMimetype(params.file)
257
+ } : {},
258
+ maxBytes: params.maxBytes,
259
+ ssrfPolicy: params.govSlack ? SLACK_GOV_MEDIA_SSRF_POLICY : SLACK_MEDIA_SSRF_POLICY,
260
+ readIdleTimeoutMs: params.readIdleTimeoutMs ?? 6e4
256
261
  }).catch((error) => {
257
262
  if (timedOut) return new Promise(() => {});
258
263
  throw error;
259
264
  });
260
265
  try {
261
- if (!params.totalTimeoutMs) return await savePromise;
266
+ if (!totalTimeoutMs) return await savePromise;
262
267
  const timeoutPromise = new Promise((_, reject) => {
263
268
  timeoutHandle = setTimeout(() => {
264
269
  timedOut = true;
265
270
  timeoutAbortController?.abort();
266
- reject(/* @__PURE__ */ new Error(`slack media download timed out after ${params.totalTimeoutMs}ms`));
267
- }, params.totalTimeoutMs);
271
+ reject(/* @__PURE__ */ new Error(`slack media download timed out after ${totalTimeoutMs}ms`));
272
+ }, totalTimeoutMs);
268
273
  timeoutHandle.unref?.();
269
274
  });
270
275
  return await Promise.race([savePromise, timeoutPromise]);
@@ -306,42 +311,35 @@ function formatSlackMediaFailure(error) {
306
311
  }
307
312
  async function fetchFreshSlackFileUrl(params) {
308
313
  if (!params.file.id || !params.client) return null;
314
+ const assertCurrent = captureSlackMediaReadGuard(params);
309
315
  try {
310
- const freshFile = (await params.client.files.info({ file: params.file.id })).file;
316
+ assertCurrent?.();
317
+ const info = await params.client.files.info({ file: params.file.id });
318
+ assertCurrent?.();
319
+ const freshFile = info.file;
311
320
  if (freshFile && params.isRefreshedFileAllowed?.(freshFile) === false) {
312
- logVerbose$1(`slack: refreshed file metadata rejected for file id=${params.file.id}`);
321
+ logVerbose(`slack: refreshed file metadata rejected for file id=${params.file.id}`);
313
322
  return null;
314
323
  }
315
324
  const freshUrl = freshFile?.url_private_download ?? freshFile?.url_private;
316
325
  if (freshUrl) {
317
- logVerbose$1(`slack: refreshed file URL via files.info for file id=${params.file.id}`);
326
+ logVerbose(`slack: refreshed file URL via files.info for file id=${params.file.id}`);
318
327
  return freshUrl;
319
328
  }
320
- logVerbose$1(`slack: files.info returned no private URL for file id=${params.file.id}`);
329
+ logVerbose(`slack: files.info returned no private URL for file id=${params.file.id}`);
321
330
  return null;
322
331
  } catch (error) {
323
- logVerbose$1(`slack: files.info failed for file id=${params.file.id}: ${formatErrorMessage(error)}`);
332
+ assertCurrent?.();
333
+ logVerbose(`slack: files.info failed for file id=${params.file.id}: ${formatErrorMessage(error)}`);
324
334
  return null;
325
335
  }
326
336
  }
327
337
  async function downloadSlackMediaFile(params) {
328
- const assertReadAuthority = captureChannelReadAuthority$1();
338
+ const assertReadAuthority = captureSlackMediaReadGuard(params);
329
339
  assertReadAuthority?.();
330
- const { url: slackUrl, requestInit } = createSlackMediaRequest(params.url, params.token, params.govSlack);
331
340
  const saved = await saveSlackMedia({
332
- options: {
333
- url: slackUrl,
334
- fetchImpl: createSlackMediaFetch(params.govSlack, assertReadAuthority),
335
- beforeRequest: assertReadAuthority,
336
- requestInit,
337
- filePathHint: params.file.name,
338
- fallbackContentType: resolveSlackMediaMimetype(params.file, params.file.mimetype),
339
- maxBytes: params.maxBytes,
340
- ssrfPolicy: params.govSlack ? SLACK_GOV_MEDIA_SSRF_POLICY : SLACK_MEDIA_SSRF_POLICY
341
- },
342
- readIdleTimeoutMs: params.readIdleTimeoutMs,
343
- totalTimeoutMs: params.totalTimeoutMs ?? SLACK_MEDIA_TOTAL_TIMEOUT_MS,
344
- abortSignal: params.abortSignal
341
+ ...params,
342
+ assertReadAuthority
345
343
  });
346
344
  const fileMime = normalizeOptionalLowercaseString(params.file.mimetype);
347
345
  const fileName = normalizeLowercaseStringOrEmpty(params.file.name);
@@ -351,9 +349,8 @@ async function downloadSlackMediaFile(params) {
351
349
  throw new Error("blocked: unexpected HTML content");
352
350
  }
353
351
  }
354
- const effectiveMime = resolveSlackMediaMimetype(params.file, saved.contentType);
352
+ const contentType = resolveSlackMediaMimetype(params.file, saved.contentType);
355
353
  const label = saved.fileName ?? params.file.name;
356
- const contentType = effectiveMime ?? saved.contentType;
357
354
  return {
358
355
  path: saved.path,
359
356
  ...contentType ? { contentType } : {},
@@ -364,16 +361,11 @@ async function downloadSlackMediaFile(params) {
364
361
  })}]`
365
362
  };
366
363
  }
367
- function isForwardedSlackAttachment(attachment) {
368
- return attachment.is_share === true;
369
- }
370
364
  function resolveForwardedAttachmentImageUrl(attachment, govSlack) {
371
365
  const rawUrl = attachment.image_url?.trim();
372
366
  if (!rawUrl) return null;
373
367
  try {
374
- const parsed = new URL(rawUrl);
375
- if (parsed.protocol !== "https:" || !isSlackHostname(parsed.hostname, govSlack)) return null;
376
- return parsed.toString();
368
+ return assertSlackFileUrl(rawUrl, govSlack).href;
377
369
  } catch {
378
370
  return null;
379
371
  }
@@ -383,6 +375,7 @@ function resolveForwardedAttachmentImageUrl(attachment, govSlack) {
383
375
  * Returns `null` when no files could be downloaded.
384
376
  */
385
377
  async function resolveSlackMedia(params) {
378
+ const assertCurrent = captureSlackMediaReadGuard(params);
386
379
  const govSlack = isGovSlackClient(params.client);
387
380
  const files = params.files ?? [];
388
381
  const limitedFiles = files.length > 8 ? files.slice(0, 8) : files;
@@ -390,10 +383,13 @@ async function resolveSlackMedia(params) {
390
383
  const refreshFileUrl = (file) => fetchFreshSlackFileUrl({
391
384
  file,
392
385
  client: params.client,
393
- isRefreshedFileAllowed: params.isRefreshedFileAllowed
386
+ isRefreshedFileAllowed: params.isRefreshedFileAllowed,
387
+ assertCurrent: params.assertCurrent,
388
+ abortSignal: params.abortSignal
394
389
  });
395
- const { results } = await runTasksWithConcurrency({
390
+ const { results, hasError, firstError } = await runTasksWithConcurrency({
396
391
  tasks: limitedFiles.map((file) => async () => {
392
+ assertCurrent?.();
397
393
  const preloaded = params.preloadedMedia?.get(file);
398
394
  if (preloaded) return preloaded;
399
395
  const eventUrl = file.url_private_download ?? file.url_private;
@@ -410,6 +406,7 @@ async function resolveSlackMedia(params) {
410
406
  } catch (error) {
411
407
  reason = formatSlackMediaFailure(error);
412
408
  }
409
+ assertCurrent?.();
413
410
  url = attempt === 0 && eventUrl ? await refreshFileUrl(file) : null;
414
411
  }
415
412
  params.unavailableFiles?.set(file, reason);
@@ -417,15 +414,15 @@ async function resolveSlackMedia(params) {
417
414
  return null;
418
415
  }),
419
416
  limit: MAX_SLACK_MEDIA_CONCURRENCY,
420
- errorMode: "stop",
421
- throwOnError: true
417
+ errorMode: "stop"
422
418
  });
419
+ if (hasError) throw toErrorObject(firstError, "Slack media read failed");
423
420
  const resolved = results.filter((result) => result !== null);
424
421
  return resolved.length > 0 ? resolved : null;
425
422
  }
426
423
  /** Extracts text and media from forwarded-message attachments. Returns null when empty. */
427
424
  async function resolveSlackAttachmentContent(params) {
428
- const forwardedAttachments = (params.attachments ?? []).filter((attachment) => isForwardedSlackAttachment(attachment)).slice(0, MAX_SLACK_FORWARDED_ATTACHMENTS);
425
+ const forwardedAttachments = (params.attachments ?? []).filter((attachment) => attachment.is_share === true).slice(0, MAX_SLACK_FORWARDED_ATTACHMENTS);
429
426
  const candidates = [...params.files ?? [], ...forwardedAttachments.flatMap((attachment) => attachment.files ?? [])];
430
427
  if (forwardedAttachments.length === 0 && candidates.length === 0) return null;
431
428
  const fileIds = /* @__PURE__ */ new Set();
@@ -456,47 +453,48 @@ async function resolveSlackAttachmentContent(params) {
456
453
  return selected ? [selected] : [];
457
454
  })
458
455
  });
459
- const directMediaPromise = resolveFiles(params.files);
460
456
  const textBlocks = [];
461
- const attachmentMedia = [];
462
457
  let unavailableMediaCount = 0;
463
458
  const govSlack = isGovSlackClient(params.client);
464
- for (const att of forwardedAttachments) {
465
- const text = att.text?.trim() || att.fallback?.trim();
466
- if (text) {
467
- const author = att.author_name;
468
- const heading = author ? `[Forwarded message from ${author}]` : "[Forwarded message]";
469
- textBlocks.push(`${heading}\n${text}`);
470
- }
471
- const imageUrl = resolveForwardedAttachmentImageUrl(att, govSlack);
472
- if (imageUrl) try {
473
- const { url: slackUrl, requestInit } = createSlackMediaRequest(imageUrl, params.token, govSlack);
474
- const saved = await saveSlackMedia({
475
- options: {
476
- url: slackUrl,
477
- fetchImpl: createSlackMediaFetch(govSlack),
478
- requestInit,
479
- maxBytes: params.maxBytes,
480
- ssrfPolicy: govSlack ? SLACK_GOV_MEDIA_SSRF_POLICY : SLACK_MEDIA_SSRF_POLICY
481
- },
482
- readIdleTimeoutMs: params.readIdleTimeoutMs,
483
- totalTimeoutMs: params.totalTimeoutMs ?? SLACK_MEDIA_TOTAL_TIMEOUT_MS,
484
- abortSignal: params.abortSignal
485
- });
486
- const label = saved.fileName ?? "forwarded image";
487
- attachmentMedia.push({
488
- path: saved.path,
489
- contentType: saved.contentType,
490
- ...saved.fileName ? { fileName: saved.fileName } : {},
491
- placeholder: `[Forwarded image: ${label}]`
492
- });
493
- } catch (error) {
494
- unavailableMediaCount += 1;
495
- slackMediaLog.warn(`slack: forwarded image unavailable (${formatSlackMediaFailure(error)})`);
496
- }
497
- attachmentMedia.push(...await resolveFiles(att.files) ?? []);
498
- }
499
- const allMedia = [...await directMediaPromise ?? [], ...attachmentMedia];
459
+ const { results, hasError, firstError } = await runTasksWithConcurrency({
460
+ tasks: [() => resolveFiles(params.files), async () => {
461
+ const attachmentMedia = [];
462
+ for (const att of forwardedAttachments) {
463
+ const text = att.text?.trim() || att.fallback?.trim();
464
+ if (text) {
465
+ const author = att.author_name;
466
+ const heading = author ? `[Forwarded message from ${author}]` : "[Forwarded message]";
467
+ textBlocks.push(`${heading}\n${text}`);
468
+ }
469
+ const imageUrl = resolveForwardedAttachmentImageUrl(att, govSlack);
470
+ if (imageUrl) try {
471
+ const assertReadAuthority = captureSlackMediaReadGuard(params);
472
+ const saved = await saveSlackMedia({
473
+ ...params,
474
+ url: imageUrl,
475
+ govSlack,
476
+ assertReadAuthority
477
+ });
478
+ const label = saved.fileName ?? "forwarded image";
479
+ attachmentMedia.push({
480
+ path: saved.path,
481
+ contentType: saved.contentType,
482
+ ...saved.fileName ? { fileName: saved.fileName } : {},
483
+ placeholder: `[Forwarded image: ${label}]`
484
+ });
485
+ } catch (error) {
486
+ unavailableMediaCount += 1;
487
+ slackMediaLog.warn(`slack: forwarded image unavailable (${formatSlackMediaFailure(error)})`);
488
+ }
489
+ attachmentMedia.push(...await resolveFiles(att.files) ?? []);
490
+ }
491
+ return attachmentMedia;
492
+ }],
493
+ limit: 2,
494
+ errorMode: "stop"
495
+ });
496
+ if (hasError) throw toErrorObject(firstError, "Slack attachment read failed");
497
+ const allMedia = results.flatMap((media) => media ?? []);
500
498
  const unavailableFiles = allFiles.flatMap((file, index) => {
501
499
  const reason = index >= 8 ? SLACK_MEDIA_LIMIT_REASON : unavailableFileReasons.get(file);
502
500
  return reason ? [{
@@ -648,39 +646,29 @@ async function getClient(opts = {}, mode = "read") {
648
646
  if (opts.assertDirectAdapterHandoff) return createSlackWriteClient(token, { teamId: opts.teamId }, opts.assertDirectAdapterHandoff);
649
647
  return getSlackWriteClient(token, { teamId: opts.teamId });
650
648
  }
651
- return opts.assertDirectAdapterHandoff ? createSlackLookupClient(token, { teamId: opts.teamId }, opts.assertDirectAdapterHandoff) : createSlackLookupClient(token, { teamId: opts.teamId });
649
+ return createSlackLookupClient(token, { teamId: opts.teamId }, opts.assertDirectAdapterHandoff);
652
650
  }
653
651
  async function resolveBotUserId(client) {
654
652
  const auth = await client.auth.test();
655
653
  if (!auth?.user_id) throw new Error("Failed to resolve Slack bot user id");
656
654
  return auth.user_id;
657
655
  }
658
- async function reactSlackMessage(channelId, messageId, emoji, opts = {}) {
659
- const client = await getClient(opts, "write");
660
- try {
661
- await client.reactions.add({
662
- channel: channelId,
663
- timestamp: messageId,
664
- name: normalizeSlackEmojiName(emoji)
665
- });
666
- } catch (err) {
667
- if (hasSlackPlatformError(err, "already_reacted")) return;
668
- throw err;
669
- }
670
- }
671
- async function removeSlackReaction(channelId, messageId, emoji, opts = {}) {
672
- const client = await getClient(opts, "write");
673
- try {
674
- await client.reactions.remove({
675
- channel: channelId,
676
- timestamp: messageId,
677
- name: normalizeSlackEmojiName(emoji)
678
- });
679
- } catch (err) {
680
- if (hasSlackPlatformError(err, "no_reaction")) return;
681
- throw err;
682
- }
656
+ function createSlackReactionUpdater(method, unchangedError) {
657
+ return async (channelId, messageId, emoji, opts = {}) => {
658
+ const client = await getClient(opts, "write");
659
+ try {
660
+ await client.reactions[method]({
661
+ channel: channelId,
662
+ timestamp: messageId,
663
+ name: normalizeSlackEmojiName(emoji)
664
+ });
665
+ } catch (err) {
666
+ if (!hasSlackPlatformError(err, unchangedError)) throw err;
667
+ }
668
+ };
683
669
  }
670
+ const reactSlackMessage = createSlackReactionUpdater("add", "already_reacted");
671
+ const removeSlackReaction = createSlackReactionUpdater("remove", "no_reaction");
684
672
  async function removeOwnSlackReactions(channelId, messageId, opts = {}) {
685
673
  const client = await getClient(opts, "write");
686
674
  const userId = await resolveBotUserId(client);
@@ -752,7 +740,7 @@ async function editSlackRenderedMessage(channelId, messageId, content, opts = {}
752
740
  try {
753
741
  await client.chat.update(update);
754
742
  } catch (error) {
755
- if (!hasSlackNativeDataBlock(blocks) || !isSlackInvalidBlocksError(error)) throw error;
743
+ if (!hasNativeData || !isSlackInvalidBlocksError(error)) throw error;
756
744
  logVerbose("slack edit: native data block rejected, retrying with text fallback");
757
745
  const survivorBlocks = stripSlackNativeDataBlocks(blocks);
758
746
  const survivorText = buildSlackBlocksFallbackText(survivorBlocks) ?? "";
@@ -803,30 +791,18 @@ async function readSlackMessages(channelId, opts = {}) {
803
791
  oldest: normalizeSlackReadTimestamp(opts.after, "after")
804
792
  };
805
793
  const client = await getClient(opts);
806
- if (opts.threadId) {
807
- const oldest = exactMessageId ? exactMessageId : exactBounds.oldest && Number(exactBounds.oldest) > Number(opts.threadId) ? exactBounds.oldest : opts.threadId;
808
- const result = await client.conversations.replies({
809
- channel: channelId,
810
- ts: opts.threadId,
811
- limit: readLimit,
812
- ...exactBounds,
813
- oldest
814
- });
815
- return {
816
- messages: (result.messages ?? []).filter((message) => {
817
- if (exactMessageId) return message.ts === exactMessageId;
818
- return message.ts !== opts.threadId;
819
- }).map(renderSlackReadMessageText),
820
- hasMore: exactMessageId ? false : Boolean(result.has_more)
821
- };
822
- }
823
- const result = await client.conversations.history({
794
+ const query = {
824
795
  channel: channelId,
825
796
  limit: readLimit,
826
797
  ...exactBounds
827
- });
798
+ };
799
+ const result = opts.threadId ? await client.conversations.replies({
800
+ ...query,
801
+ ts: opts.threadId,
802
+ oldest: exactMessageId ? exactMessageId : exactBounds.oldest && Number(exactBounds.oldest) > Number(opts.threadId) ? exactBounds.oldest : opts.threadId
803
+ }) : await client.conversations.history(query);
828
804
  return {
829
- messages: (result.messages ?? []).filter((message) => !exactMessageId || message.ts === exactMessageId).map(renderSlackReadMessageText),
805
+ messages: (result.messages ?? []).filter((message) => exactMessageId ? message.ts === exactMessageId : !opts.threadId || message.ts !== opts.threadId).map(renderSlackReadMessageText),
830
806
  hasMore: exactMessageId ? false : Boolean(result.has_more)
831
807
  };
832
808
  }
@@ -851,55 +827,23 @@ async function unpinSlackMessage(channelId, messageId, opts = {}) {
851
827
  async function listSlackPins(channelId, opts = {}) {
852
828
  return (await (await getClient(opts)).pins.list({ channel: channelId })).items ?? [];
853
829
  }
854
- function collectSlackDirectShareChannelIds(file) {
855
- const ids = /* @__PURE__ */ new Set();
856
- for (const group of [
830
+ function hasSlackScopeProof(params) {
831
+ const channelId = normalizeOptionalString(params.channelId);
832
+ if (!channelId) return false;
833
+ const threadId = normalizeOptionalString(params.threadId);
834
+ const { file } = params;
835
+ if (!threadId && [
857
836
  file.channels,
858
837
  file.groups,
859
838
  file.ims
860
- ]) {
861
- if (!Array.isArray(group)) continue;
862
- for (const entry of group) {
863
- if (typeof entry !== "string") continue;
864
- const normalized = normalizeOptionalString(entry);
865
- if (normalized) ids.add(normalized);
866
- }
867
- }
868
- return ids;
869
- }
870
- function collectSlackShareMaps(file) {
871
- if (!file.shares || typeof file.shares !== "object" || Array.isArray(file.shares)) return [];
872
- const shares = file.shares;
873
- return [shares.public, shares.private].filter((value) => Boolean(value) && typeof value === "object" && !Array.isArray(value));
874
- }
875
- function collectSlackShares(file) {
876
- const shares = [];
877
- for (const shareMap of collectSlackShareMaps(file)) for (const [rawChannelId, rawEntries] of Object.entries(shareMap)) {
878
- const channelId = normalizeOptionalString(rawChannelId);
879
- if (!channelId || !Array.isArray(rawEntries)) continue;
880
- for (const rawEntry of rawEntries) {
881
- if (!rawEntry || typeof rawEntry !== "object" || Array.isArray(rawEntry)) continue;
882
- const entry = rawEntry;
883
- const ts = typeof entry.ts === "string" ? normalizeOptionalString(entry.ts) : void 0;
884
- const threadTs = typeof entry.thread_ts === "string" ? normalizeOptionalString(entry.thread_ts) : void 0;
885
- if (ts || threadTs) shares.push({
886
- channelId,
887
- ts,
888
- threadTs
889
- });
890
- }
891
- }
892
- return shares;
893
- }
894
- function lacksSlackScopeProof(params) {
895
- const channelId = normalizeOptionalString(params.channelId);
896
- if (!channelId) return true;
897
- const threadId = normalizeOptionalString(params.threadId);
898
- const directIds = collectSlackDirectShareChannelIds(params.file);
899
- const shares = collectSlackShares(params.file);
900
- if (!(directIds.has(channelId) || shares.some((entry) => entry.channelId === channelId))) return true;
901
- if (!threadId) return false;
902
- return !shares.some((entry) => entry.channelId === channelId && (entry.threadTs === threadId || entry.ts === threadId));
839
+ ].some((group) => Array.isArray(group) && group.some((entry) => normalizeOptionalString(entry) === channelId))) return true;
840
+ if (!isRecord(file.shares)) return false;
841
+ return [file.shares.public, file.shares.private].some((shareMap) => isRecord(shareMap) && Object.entries(shareMap).some(([sharedChannelId, entries]) => normalizeOptionalString(sharedChannelId) === channelId && Array.isArray(entries) && entries.some((entry) => {
842
+ if (!isRecord(entry)) return false;
843
+ const ts = normalizeOptionalString(entry.ts);
844
+ const threadTs = normalizeOptionalString(entry.thread_ts);
845
+ return threadId ? ts === threadId || threadTs === threadId : Boolean(ts || threadTs);
846
+ })));
903
847
  }
904
848
  /**
905
849
  * Downloads a Slack file by ID and saves it to the local media store.
@@ -909,7 +853,7 @@ function lacksSlackScopeProof(params) {
909
853
  async function downloadSlackFile(fileId, opts) {
910
854
  const token = resolveToken(opts.token, opts.accountId, opts.cfg);
911
855
  const client = await getClient(opts);
912
- const isFileAllowed = (file) => !lacksSlackScopeProof({
856
+ const isFileAllowed = (file) => hasSlackScopeProof({
913
857
  file,
914
858
  channelId: opts.channelId,
915
859
  threadId: opts.threadId
@@ -932,4 +876,4 @@ async function downloadSlackFile(fileId, opts) {
932
876
  }))?.[0] ?? null;
933
877
  }
934
878
  //#endregion
935
- export { hasSlackMessageTableBlock as C, resolveSlackMessageText as D, resolveSlackBlocksText as E, buildSlackEditTextPayload as O, formatSlackFileReferenceList as S, isSlackUnfurlAttachment as T, media_exports as _, editSlackRenderedMessage as a, saveRemoteMedia as b, listSlackPins as c, reactSlackMessage as d, readSlackMessages as f, unpinSlackMessage as g, sendSlackMessage as h, editSlackMessage as i, listSlackReactions as l, removeSlackReaction as m, deleteSlackMessage as n, getSlackMemberInfo as o, removeOwnSlackReactions as p, downloadSlackFile as r, listSlackEmojis as s, actions_exports as t, pinSlackMessage as u, logVerbose$1 as v, hasSlackTableBlock as w, formatSlackFileReference as x, isGovSlackClient as y };
879
+ export { hasSlackTableBlock as C, buildSlackEditTextPayload as D, resolveSlackMessageText as E, hasSlackMessageTableBlock as S, resolveSlackBlocksText as T, media_exports as _, editSlackRenderedMessage as a, formatSlackFileReference as b, listSlackPins as c, reactSlackMessage as d, readSlackMessages as f, unpinSlackMessage as g, sendSlackMessage as h, editSlackMessage as i, listSlackReactions as l, removeSlackReaction as m, deleteSlackMessage as n, getSlackMemberInfo as o, removeOwnSlackReactions as p, downloadSlackFile as r, listSlackEmojis as s, actions_exports as t, pinSlackMessage as u, isGovSlackClient as v, isSlackUnfurlAttachment as w, formatSlackFileReferenceList as x, saveRemoteMedia as y };