@openclaw/slack 2026.8.1-beta.3 → 2026.8.2

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 (255) hide show
  1. package/dist/account-configured-sUohAxZr.js +33 -0
  2. package/dist/account-inspect-C3sePHWa.js +87 -0
  3. package/dist/account-inspect-api.js +1 -1
  4. package/dist/{accounts-BlzxuYle.js → accounts-Dm_H77gH.js} +7 -10
  5. package/dist/{accounts.runtime-CbabBL8x.js → accounts.runtime-DRuEK6mL.js} +1 -1
  6. package/dist/{action-runtime-D6jg2CQd.js → action-runtime-B0kRJ69h.js} +90 -75
  7. package/dist/action-runtime.runtime-IuA14rev.js +2 -0
  8. package/dist/{actions-DFk0ANVB.js → actions-BOxiu2Vy.js} +278 -102
  9. package/dist/api.js +15 -15
  10. package/dist/{approval-handler.runtime-BNvAoKdK.js → approval-handler.runtime-l5_2JLqi.js} +58 -180
  11. package/dist/{channel-CA5w7qDF.js → channel-BguxhhNG.js} +97 -154
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/{channel-type-CZWv55Wu.js → channel-type-ChkODKBW.js} +3 -3
  15. package/dist/{channel.setup-CpyYsEXH.js → channel.setup-BJohRJha.js} +54 -68
  16. package/dist/{config-schema-CN3XZRX5.js → config-schema-B9GwoRlE.js} +24 -15
  17. package/dist/configured-state.js +34 -0
  18. package/dist/{conversation-binding-route-DFVLUdYF.js → conversation-binding-route-Vee8Dgbf.js} +2 -2
  19. package/dist/{directory-config-BGYyuzWh.js → directory-config-Bmw4ykSy.js} +5 -4
  20. package/dist/directory-contract-api.js +1 -1
  21. package/dist/{directory-live-DjUJQLbq.js → directory-live-BOILcXPo.js} +2 -2
  22. package/dist/{doctor-contract-BAy7-EUQ.js → doctor-contract-BNjw9bxb.js} +5 -4
  23. package/dist/doctor-contract-api.js +1 -1
  24. package/dist/{group-policy-DyfB_ZIE.js → group-policy-BYH74y50.js} +643 -774
  25. package/dist/{message-tool-api-CqMr5Rmc.js → message-tool-api-BsZbsulu.js} +23 -5
  26. package/dist/message-tool-api.js +1 -1
  27. package/dist/{monitor-Chrecrb9.js → monitor-B72wWXWg.js} +3 -3
  28. package/dist/{outbound-adapter-DuRqAQXK.js → outbound-adapter-CPgYQ-BM.js} +94 -69
  29. package/dist/{pipeline.runtime-Bbfd5VFW.js → pipeline.runtime-CcdujV99.js} +357 -544
  30. package/dist/{policy-BKXSxrIS.js → policy-CUpBeOt9.js} +7 -4
  31. package/dist/{probe-BVA65leh.js → probe-gj5yQgN2.js} +209 -21
  32. package/dist/{provider-CUUiwsg2.js → provider-DW9YC_no.js} +301 -179
  33. package/dist/{relay-source-mhpMMRG-.js → relay-source-BLMdBrAw.js} +6 -4
  34. package/dist/{replies-SnWyXcsL.js → replies-DLjQ8RYU.js} +25 -10
  35. package/dist/{resolve-channels-BSpqC8jU.js → resolve-channels-Bv6IiGZ4.js} +4 -3
  36. package/dist/{resolve-users-Dvz9pDe0.js → resolve-users-BXw2pA7y.js} +4 -3
  37. package/dist/runtime-api.js +11 -11
  38. package/dist/{scopes-BSk4GZvZ.js → scopes-B9HRguDe.js} +1 -1
  39. package/dist/{send-CtnOxKCc.js → send-GUz4_v2E.js} +58 -42
  40. package/dist/send-results-eeOu_HYm.js +23 -0
  41. package/dist/{send.runtime-kYctMHSd.js → send.runtime-rScD-UJi.js} +1 -1
  42. package/dist/setup-plugin-api.js +1 -1
  43. package/dist/{setup-surface-BPFfp6So.js → setup-surface-Cc3P-z35.js} +6 -6
  44. package/dist/{shared-DJBaslN7.js → shared-CQGVZ_8a.js} +28 -8
  45. package/dist/{slash-dispatch.runtime-Cf2FTrnf.js → slash-dispatch.runtime-C2015r6s.js} +3 -3
  46. package/dist/{target-parsing-BnMD2ZqZ.js → target-parsing-PbxGDbr9.js} +11 -6
  47. package/dist/{targets-Cx5W_n3W.js → targets-7FexXJ62.js} +1 -1
  48. package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
  49. package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +0 -1
  50. package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +6 -6
  51. package/node_modules/@slack/bolt/node_modules/@types/node/dns/promises.d.ts +5 -5
  52. package/node_modules/@slack/bolt/node_modules/@types/node/dns.d.ts +5 -5
  53. package/node_modules/@slack/bolt/node_modules/@types/node/fs.d.ts +7 -0
  54. package/node_modules/@slack/bolt/node_modules/@types/node/http.d.ts +30 -0
  55. package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +4 -4
  56. package/node_modules/@slack/bolt/node_modules/@types/node/os.d.ts +30 -30
  57. package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
  58. package/node_modules/@slack/bolt/node_modules/@types/node/perf_hooks.d.ts +2 -1
  59. package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +42 -43
  60. package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +1049 -84
  61. package/node_modules/@slack/bolt/node_modules/@types/node/sqlite.d.ts +14 -1
  62. package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +3 -2
  63. package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +61 -0
  64. package/node_modules/@slack/bolt/node_modules/@types/node/v8.d.ts +20 -23
  65. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/README.md +2 -0
  66. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +20 -0
  67. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js +20 -14
  68. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -1
  69. package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/package.json +1 -1
  70. package/node_modules/@slack/bolt/node_modules/negotiator/lib/accept.js +54 -0
  71. package/node_modules/@slack/bolt/node_modules/negotiator/lib/charset.js +10 -34
  72. package/node_modules/@slack/bolt/node_modules/negotiator/lib/encoding.js +9 -30
  73. package/node_modules/@slack/bolt/node_modules/negotiator/lib/language.js +15 -36
  74. package/node_modules/@slack/bolt/node_modules/negotiator/lib/mediaType.js +16 -134
  75. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/LICENSE +22 -0
  76. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/README.md +71 -0
  77. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +46 -0
  78. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.js +176 -0
  79. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.js.map +1 -0
  80. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/package.json +52 -0
  81. package/node_modules/@slack/bolt/node_modules/negotiator/package.json +16 -10
  82. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/README.md +2 -0
  83. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.d.ts +20 -0
  84. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js +20 -14
  85. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -1
  86. package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/package.json +1 -1
  87. package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +1 -1
  88. package/node_modules/@slack/socket-mode/node_modules/@types/node/child_process.d.ts +0 -1
  89. package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +6 -6
  90. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns/promises.d.ts +5 -5
  91. package/node_modules/@slack/socket-mode/node_modules/@types/node/dns.d.ts +5 -5
  92. package/node_modules/@slack/socket-mode/node_modules/@types/node/fs.d.ts +7 -0
  93. package/node_modules/@slack/socket-mode/node_modules/@types/node/http.d.ts +30 -0
  94. package/node_modules/@slack/socket-mode/node_modules/@types/node/http2.d.ts +4 -4
  95. package/node_modules/@slack/socket-mode/node_modules/@types/node/os.d.ts +30 -30
  96. package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +2 -2
  97. package/node_modules/@slack/socket-mode/node_modules/@types/node/perf_hooks.d.ts +2 -1
  98. package/node_modules/@slack/socket-mode/node_modules/@types/node/process.d.ts +42 -43
  99. package/node_modules/@slack/socket-mode/node_modules/@types/node/quic.d.ts +1049 -84
  100. package/node_modules/@slack/socket-mode/node_modules/@types/node/sqlite.d.ts +14 -1
  101. package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/iter.d.ts +3 -2
  102. package/node_modules/@slack/socket-mode/node_modules/@types/node/test.d.ts +61 -0
  103. package/node_modules/@slack/socket-mode/node_modules/@types/node/v8.d.ts +20 -23
  104. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  105. package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +0 -1
  106. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +6 -6
  107. package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +5 -5
  108. package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +5 -5
  109. package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +7 -0
  110. package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +30 -0
  111. package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +4 -4
  112. package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +30 -30
  113. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
  114. package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +2 -1
  115. package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +42 -43
  116. package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +1049 -84
  117. package/node_modules/@slack/web-api/node_modules/@types/node/sqlite.d.ts +14 -1
  118. package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +3 -2
  119. package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +61 -0
  120. package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +20 -23
  121. package/node_modules/typebox/build/format/date.d.mts +1 -1
  122. package/node_modules/typebox/build/format/date.mjs +1 -1
  123. package/node_modules/typebox/build/format/date_time.d.mts +2 -2
  124. package/node_modules/typebox/build/format/date_time.mjs +3 -3
  125. package/node_modules/typebox/build/format/email.d.mts +1 -1
  126. package/node_modules/typebox/build/format/email.mjs +2 -2
  127. package/node_modules/typebox/build/format/hostname.mjs +2 -10
  128. package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
  129. package/node_modules/typebox/build/format/idn_email.mjs +3 -3
  130. package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
  131. package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
  132. package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
  133. package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
  134. package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
  135. package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
  136. package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
  137. package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
  138. package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
  139. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +41 -0
  140. package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
  141. package/node_modules/typebox/build/format/idna/index.mjs +2 -0
  142. package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
  143. package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
  144. package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
  145. package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
  146. package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
  147. package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
  148. package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
  149. package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
  150. package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
  151. package/node_modules/typebox/build/format/ipv4.mjs +2 -32
  152. package/node_modules/typebox/build/format/ipv6.mjs +2 -61
  153. package/node_modules/typebox/build/format/iri.d.mts +2 -2
  154. package/node_modules/typebox/build/format/iri.mjs +26 -8
  155. package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
  156. package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
  157. package/node_modules/typebox/build/format/regex.d.mts +1 -2
  158. package/node_modules/typebox/build/format/regex.mjs +2 -6
  159. package/node_modules/typebox/build/format/time.d.mts +2 -2
  160. package/node_modules/typebox/build/format/time.mjs +19 -14
  161. package/node_modules/typebox/build/format/uri.d.mts +1 -1
  162. package/node_modules/typebox/build/format/uri.mjs +3 -130
  163. package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
  164. package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
  165. package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
  166. package/node_modules/typebox/build/format/uri_template.mjs +4 -5
  167. package/node_modules/typebox/build/format/url.d.mts +3 -3
  168. package/node_modules/typebox/build/format/url.mjs +4 -5
  169. package/node_modules/typebox/build/guard/emit.d.mts +3 -1
  170. package/node_modules/typebox/build/guard/emit.mjs +12 -5
  171. package/node_modules/typebox/build/guard/guard.d.mts +8 -2
  172. package/node_modules/typebox/build/guard/guard.mjs +25 -4
  173. package/node_modules/typebox/build/guard/string.d.mts +2 -2
  174. package/node_modules/typebox/build/guard/string.mjs +7 -7
  175. package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
  176. package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
  177. package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
  178. package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
  179. package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
  180. package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
  181. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
  182. package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
  183. package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
  184. package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
  185. package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
  186. package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
  187. package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
  188. package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
  189. package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
  190. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
  191. package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
  192. package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
  193. package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
  194. package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
  195. package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
  196. package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
  197. package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
  198. package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
  199. package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
  200. package/node_modules/typebox/build/schema/types/index.mjs +0 -2
  201. package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
  202. package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
  203. package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
  204. package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
  205. package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
  206. package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
  207. package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
  208. package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
  209. package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
  210. package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
  211. package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
  212. package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
  213. package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
  214. package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
  215. package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
  216. package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
  217. package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
  218. package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
  219. package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
  220. package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
  221. package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
  222. package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
  223. package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
  224. package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
  225. package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
  226. package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
  227. package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
  228. package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
  229. package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
  230. package/node_modules/typebox/build/type/script/parser.mjs +27 -23
  231. package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
  232. package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
  233. package/node_modules/typebox/package.json +27 -27
  234. package/node_modules/typebox/readme.md +79 -82
  235. package/node_modules/ws/lib/permessage-deflate.js +3 -1
  236. package/node_modules/ws/package.json +1 -1
  237. package/openclaw.plugin.json +14 -6
  238. package/package.json +9 -7
  239. package/dist/account-configured-BwfXBo_F.js +0 -14
  240. package/dist/account-inspect-YJvFBbCR.js +0 -89
  241. package/dist/action-runtime.runtime-JtoOK9l5.js +0 -2
  242. package/dist/actions.runtime-CYLsYRai.js +0 -2
  243. package/dist/runtime-api-DBi7xc_g.js +0 -10
  244. package/dist/slack-client-kind-BXyOOICI.js +0 -94
  245. package/node_modules/@slack/bolt/node_modules/negotiator/HISTORY.md +0 -114
  246. package/node_modules/typebox/build/format/_idna.d.mts +0 -2
  247. package/node_modules/typebox/build/format/_idna.mjs +0 -246
  248. package/node_modules/typebox/build/format/_puny.d.mts +0 -1
  249. package/node_modules/typebox/build/format/_puny.mjs +0 -77
  250. package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
  251. package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
  252. package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
  253. package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
  254. package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
  255. package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
@@ -91,7 +91,7 @@ const User = Type.Object({ // const User = {
91
91
  // type: 'string',
92
92
  // format: 'email'
93
93
  // }
94
- // }
94
+ // },
95
95
  // required: [
96
96
  // 'id',
97
97
  // 'name',
@@ -111,24 +111,28 @@ type User = Type.Static<typeof User> // type User = {
111
111
 
112
112
  ## Script
113
113
 
114
- [Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example 1](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkIATAVwBtVKBjCAOwDO8BgEMYACzgBeREQB0AZW5RgYGAAoABpThxCaOADVU3GNABM0uAG84ZAFxw+rEMVRQANHCSPnr93AAvjp6REYmZlAAzFa2Dk4ubp7evonuXgBeqf5QQSH66Mam0AAssXbZSV4+CTmZlelwAO4NucGaAJTUdHAAIqhofMyofMIsHFy8gvC2DKgCkoFWyGiKyqoaohJemrr5YcawqGSxIbqQAsAwwPyORZElHmdO0CAi7HcR0FFPurqsADdPsUoOYQsFdAU4ABxVA4VAwKBIU5-OAA9zXbjzT5HMgAbQAur8-sAhsAsQJWoTwfsDFt3MB3ii-iJXMARjBgQ9ibpmMAMBhWAJUFzSjy4AI0NwOCIoKKoCUaZCwnMFszdABzOEgBFIxyw+GIpDit4wBnvRz0lTvGmdbr0ABKrFGoHQDtQGE4phufEoqvEcjA2DQsHZAjkWsNSMDwYxYbk6NDFLkV1QIHDQYgIeu80DEEu134MazcdzZD98wDmez8cjOqNxZrucTmNzqfTjdL4b4r3endDZYrC37OfDdd1SBH8Zb5LbZo71a7ckBU8H-tX4dN5vYG7kfIFQtQu-L68XA83Ym3u9ZxHZo2PQ6rsfPci31p3Z9HcklJhlUAftD0AoMBiOScAAJJ8Bg7gjFilCCnw3r8HAUAjMMUDqDqCyOCsR7AaB3AADwFBAGCMJWAB8HQ2CEWEBuODYzhSeIAAwEnmBY+nI5a6HREbahOCZxsxbFyD2UBvDuPFwHxDHRkx8ysexK7SXxb6Mju+6CsK3G0ZWr6Xu+cg3neMC6bx+nqX2P7Suwsq6YEQA) | [Example 2](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkIATAVwBtVKA7AQxFQBnMLwDG6BrxgALOAG9KcOKjKRYcURG6D4ANVSiY0AExwAvIiIA6APLEAVgZgAKOXDIAuS2isA5ViDEqFDOAJQANHBIXsg+-oHBYXAAvqGKyqrQ8Jraek7QAMzm3qi2Dk6u7jHW8UEhEVHVcQF1YZEAXk2ltYmhKWlKKmrZWjpw+obQACzFsaV2joaVniV+Lb2R0as99R1dawm7cADu+ztJqZTJ1HRwACKoaNzMqNzwTGyclDlj+rAqs2sCwqCiUkEEwBgwC0XkkMisEyMUCm4XS3GgIF47FhUmkCPyUAKqKUrAAbjj4YiTFc0j94ABxVA4VAwKBIQE+YFLUFwUnBKHiQT7ACCUCgvCQzj+MBUEXSwGewEFIrFEuccwOrVCaUudMYUmCwCxHPm5W56X4xGArxgFLxVORxLgzGAGAwrEEqDt+MmjvSwgMHF4UG9DqmNO+o3eQlkFg1XJcPIA5kyBKytozmemnZiZVAjdj9XmCxHaPQAEqsN6gdDl1AYTiGaHcSgMGNWMDYNCwa2CKwprNsjtd-m9qx8nuCqyQ1AgPudiDdqFCDsQCFQrTDxejldkVvthdLscDtNDw87vsTgUrmdzrdHlfoqCY9j3i9WPdtwR4889lcnlkzxHP9L1HKdb3nYDlz7Mk3xAj992-ODoKsXNDSxZCxxdN0PVKX8UM-A8oLHND8ww-Cx0ta03kw3dEJ-YiV1IgtaL7ANRCDKBWIQss4AAZRgKQlTgABJbgMGCV5xEod1uCbLQ4CgV4XhCARv32AShNEAAeQg0AgDBGBjAA+PoeTUvEAPTccwKEABtAAGABdVd12bBClAs-tU0ApAbMneznKsJ8Xw8uAvKsocryVQKXNgvdPPbZiMOw91PTCrzktfKibQypKDTI192M4hDkiAA) | [Challenge](test/typescript/readme.md)
114
+ [Documentation](https://sinclairzx81.github.io/typebox/#/docs/script/overview) | [Example 1](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkBDGAC0YgBMBXAG1WoBjCADsAzvGZs4AXkREAdAGVBUYGBgAKAAaU4cQmjgA1VIJjQALLLgBvOGQBccEdxDFUUADRwkz1+6ePgBe-m4e3nAA7mGBUHAAvnoGRCZmFlAAzDb2Ti7hQb6xESHFnonJhuim5tAATDkOZZF++XEV2gCU1HRwAOJQTGCswIJiHDz8QqIS-YPDo+NyyGjKqupaUqw+uvpVabCoZDnJ+pBiwDDAos41GZZepy7QIEy8t+nQmY-6+twAbh9alA6skkntUn1UDhUDAoEgTr84P9PFdBKgxB9DmQANoAXR+v2AIk4owxzXxYMqqSknmAb0RvyY7mAqBEMCB90J+lJGAw3DEqE5Vm5cDEaEEfCYUGFUEsVIhRgYGPYclsTwA5tCQLD4c4oTC4UhRa8YHS3s5aWo3lSutR9sqxKr5KslDAWKMADxVCAYOZDEZjHF4R2sPB4gB8+l6DpVjKRCcTSeTKZTvX0WsNerscAUecSotTReLJfTcFN5veObzCgqJfrDeTvQSQA) | [Example 2](https://www.typescriptlang.org/play/?target=99&module=7#code/JYWwDg9gTgLgBAFQJ5gKZwGZQiOByGFVAIwgA88AoSgehrgFkBDGAC0YgBMBXAG1WoBjCADsAzvABqqQTGgAWOAF5ERAHQB5YgCsZMABQBvOGQBcqtGoBy3EMVRR9ASgA0cJOeSWbdh87cAXp7qPvaOrnAA7sHetmHOcAC+TpTC4lJ60ADMyhaomjp6RiYx+aF+ER551nEVgaU1vuFJKWkScNKy0ABMuV75WrqyxWbV5eFuVf2N8U4t1HRwAOJQTGCswIJiHDz8QqLt0rCoZH3qg0WGlHBwkGLAMMCi5p1yUPIu13Ai0CBMvC9MlAsp8btwAG6ArpQbqUZKpA7wJaoHCoGBQJBnSwXYZXG7ghyPQSoMQNACCUFWSH0RxgJ1cX2AIk4mxJ5MpTGp03GzhS8La8GYdKgwH+WIGhVxXyYdmAqBEMChbw+XxZGAw3DEqCVClBcDEaEEfCYUB170+-MRjBJ7BU0xxBjxcAA5iiQGiMeZkaj0Ug9X9haKAYwWA4g3CUpRCGhrWJbdUAMowFibAA80ZRGFjrAAfDd8wXC4sM9nck7CxXK1XqzX84sbq6fZ64MY1G2knra13u1363AA2H-uZW+3El8exPJ3X6IkgA)
115
115
 
116
- TypeBox includes a runtime scripting engine that can transform TypeScript definitions into JSON Schema. The engine is implemented symmetrically at runtime and inside TypeScript's type system. It supports many programmable type-level constructs such as Conditional, Mapped, Indexed, Generic, Distributive Conditional, and more. The engine is designed for TypeScript 7 but is supported in TypeScript 5 and above.
116
+ TypeBox includes a micro TypeScript engine that can transform TypeScript definitions to JSON Schema. The engine is fully type-safe and supports many programmable constructs including Conditional, Mapped, Indexed, Generics, Distributive Generics, and more.
117
117
 
118
118
  ### Example
119
119
 
120
- Syntax highlighting is available via the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sinclairzx81.typebox-script)
120
+ Syntax highlighting is available via the [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=sinclairzx81.typebox-script).
121
121
 
122
122
  ```typescript
123
- // Module
123
+ import Type from 'typebox'
124
+
125
+ // Math Module
126
+
124
127
  const Math = Type.Script(`
125
- type Vector2 = { x: number, y: number }
126
- type Vector3 = { x: number, y: number, z: number }
127
128
  type Vector4 = { x: number, y: number, z: number, w: number }
129
+ type Vector3 = { x: number, y: number, z: number }
130
+ type Vector2 = { x: number, y: number }
128
131
  `)
129
132
 
130
- // Dependent Module
131
- const { Mesh } = Type.Script(Math, `
133
+ // Graphics Module
134
+
135
+ const Graphics = Type.Script(Math, `
132
136
  type Vertex = {
133
137
  position: Vector4,
134
138
  normal: Vector3,
@@ -149,23 +153,10 @@ const { Mesh } = Type.Script(Math, `
149
153
  }
150
154
  `)
151
155
 
152
- // Runtime Reflection
153
- Mesh.properties.geometry.properties.vertices.items.properties.position.properties.x
154
- Mesh.properties.geometry.properties.vertices.items.properties.normal.properties.x
155
- Mesh.properties.geometry.properties.vertices.items.properties.uv.properties.x
156
- Mesh.properties.material.properties.diffuse.properties.x
157
- Mesh.properties.material.properties.ambient.properties.x
158
- Mesh.properties.material.properties.specular.properties.x
159
-
160
- // Static Inference
161
- function render(mesh: Type.Static<typeof Mesh>) {
162
- mesh.geometry.vertices[0].position.x
163
- mesh.geometry.vertices[0].normal.x
164
- mesh.geometry.vertices[0].uv.x
165
- mesh.material.diffuse.x
166
- mesh.material.ambient.x
167
- mesh.material.specular.x
168
- }
156
+ type Mesh = Type.Static<typeof Graphics['Mesh']> // type Mesh = {
157
+ // geometry: { ... },
158
+ // material: { ... }
159
+ // }
169
160
  ```
170
161
 
171
162
  <a name="Schema"></a>
@@ -184,18 +175,21 @@ import Schema from 'typebox/schema'
184
175
 
185
176
  ### Compile
186
177
 
187
- The compiler accepts JSON Schema and returns Validator instances.
178
+ The compiler accepts either TypeBox types or native JSON Schema.
188
179
 
189
180
  ```typescript
190
- const Vector = Schema.Compile(Type.Object({ // const Vector: Validator<TObject<{
181
+
182
+ // Type
183
+
184
+ const VectorA = Schema.Compile(Type.Object({ // const VectorA: Validator<TObject<{
191
185
  x: Type.Number(), // x: TNumber
192
186
  y: Type.Number(), // y: TNumber
193
187
  z: Type.Number() // z: TNumber
194
188
  })) // }>>
195
- ```
196
- With JSON Schema
197
- ```typescript
198
- const Vector = Schema.Compile({ // const Vector: Validator<{
189
+
190
+ // Schema
191
+
192
+ const VectorB = Schema.Compile({ // const VectorB: Validator<{
199
193
  type: 'object', // type: "object";
200
194
  required: ['x', 'y', 'z'], // required: ["x", "y", "z"];
201
195
  properties: { // properties: { ... };
@@ -208,35 +202,36 @@ const Vector = Schema.Compile({ // const Vector: Validator<{
208
202
 
209
203
  ### Validate
210
204
 
211
- Validator instances provide functions to Check and Parse values.
205
+ Compiled validator instances provide functions to Check and Parse values.
212
206
 
213
207
  ```typescript
208
+
209
+ // Compile
210
+
214
211
  const Vector = Schema.Compile(Type.Script(`{
215
212
  x: number
216
213
  y: number
217
214
  z: number
218
215
  }`))
219
216
 
220
- const valid = Vector.Check({ // const valid: boolean
221
- x: 1,
222
- y: 0,
223
- z: 0
224
- })
225
-
226
- const value = Vector.Parse({ // const value: {
227
- x: 1, // x: number
228
- y: 0, // y: number
229
- z: 0 // z: number
230
- }) // }
231
- ```
217
+ // Check
218
+
219
+ const valid = Vector.Check({ x: 1, y: 0, z: 0 }) // const valid: boolean
232
220
 
221
+ // Parse
233
222
 
223
+ const result = Vector.Parse({ x: 1, y: 0, z: 0 }) // const result: {
224
+ // x: number
225
+ // y: number
226
+ // z: number
227
+ // }
228
+ ```
234
229
 
235
230
  ### Coverage
236
231
 
237
- The following table shows specification coverage implemented by TypeBox.
232
+ [JSON Schema Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite) | [JSON Schema Compliance Suite](https://github.com/sinclairzx81/json-schema-compliance-suite)
238
233
 
239
- Ref: [JSON Schema Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite)
234
+ TypeBox supports all major JSON Schema draft versions and tracks compliance against the official JSON Schema Test Suite. It also maintains a separate JavaScript compliance suite to track ecosystem adoption as JSON Schema moves toward the V1 candidate. The following table shows TypeBox specification coverage.
240
235
 
241
236
  | Spec | 3 | 4 | 6 | 7 | 2019-09 | 2020-12 | v1 |
242
237
  |:-----|:--|:--|:--|:--|:--|:--|:--|
@@ -253,7 +248,7 @@ Ref: [JSON Schema Test Suite](https://github.com/json-schema-org/JSON-Schema-Tes
253
248
  | dependencies | 17/18 | ✅ | ✅ | ✅ | - | - | - |
254
249
  | dependentRequired | - | - | - | - | ✅ | ✅ | ✅ |
255
250
  | dependentSchemas | - | - | - | - | ✅ | ✅ | ✅ |
256
- | dynamicRef | - | - | - | - | - | 38/44 | 19/27 |
251
+ | dynamicRef | - | - | - | - | - | 40/44 | 21/27 |
257
252
  | enum | 14/16 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
258
253
  | exclusiveMaximum | - | - | ✅ | ✅ | ✅ | ✅ | ✅ |
259
254
  | exclusiveMinimum | - | - | ✅ | ✅ | ✅ | ✅ | ✅ |
@@ -279,50 +274,52 @@ Ref: [JSON Schema Test Suite](https://github.com/json-schema-org/JSON-Schema-Tes
279
274
  | properties | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
280
275
  | propertyNames | - | - | ✅ | ✅ | ✅ | ✅ | ✅ |
281
276
  | recursiveRef | - | - | - | - | ✅ | - | - |
282
- | ref | 23/27 | 37/45 | 67/70 | 75/78 | 79/81 | 77/79 | 77/79 |
277
+ | ref | 22/27 | 37/45 | 67/70 | 75/78 | 79/81 | 77/79 | 78/79 |
283
278
  | required | 3/4 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
284
279
  | type | 73/80 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
285
- | unevaluatedItems | - | - | - | - | ✅ | 65/71 | 64/71 |
286
- | unevaluatedProperties | - | - | - | - | ✅ | ✅ | 124/125 |
280
+ | unevaluatedItems | - | - | - | - | ✅ | | 70/71 |
281
+ | unevaluatedProperties | - | - | - | - | ✅ | ✅ | 128/129 |
287
282
  | uniqueItems | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
288
283
 
289
-
290
284
  ### Performance
291
285
 
292
- The following table shows compile performance for various JSON Schema structures using AJV8 as a basis for comparison.
286
+ TypeBox tracks comparative performance against AJV8 as the de facto performance standard. For broader comparative benchmarks, refer to the community maintained projects below.
287
+
288
+ [Runtime Benchmarks](https://moltar.github.io/typescript-runtime-type-benchmarks/) | [Schema Benchmarks](https://schemabenchmarks.dev/)
289
+
290
+ The following table shows compilation performance for various JSON Schema structures. These benchmarks measure the time required to JIT compile schematics, with faster compilation resulting in faster application startup.
293
291
 
294
292
  ```python
295
- ┌──────────────────────┬─────────────┬─────────────┐
296
- │ Compile │ TB1X │ AJV8
297
- ├──────────────────────┼─────────────┼─────────────┤
298
- │ Boolean │ 39.7K ops/s │ 6.8K ops/s │
299
- │ Number │ 86.2K ops/s │ 7.5K ops/s │
300
- │ String │ 82.6K ops/s │ 8.2K ops/s │
301
- │ Null │ 62K ops/s │ 7.3K ops/s │
302
- │ Literal_String │ 72.1K ops/s │ 5.7K ops/s │
303
- │ Literal_Number │ 72.7K ops/s │ 6.9K ops/s │
304
- │ Literal_Boolean │ 80.9K ops/s │ 7K ops/s │
305
- │ Pattern │ 38.7K ops/s │ 5.7K ops/s │
306
- │ Object_Open │ 16.3K ops/s │ 1.3K ops/s │
307
- │ Object_Close │ 15.7K ops/s │ 952 ops/s │
308
- │ Object_Vector3 │ 40.2K ops/s │ 3.2K ops/s │
309
- │ Object_Basis3 │ 16.1K ops/s │ 834 ops/s │
310
- │ Intersect_And │ 45.7K ops/s │ 3.5K ops/s │
311
- │ Intersect_Structural │ 21K ops/s │ 1.6K ops/s │
312
- │ Union_Or │ 45.1K ops/s │ 3.4K ops/s │
313
- │ Union_Structural │ 27.6K ops/s │ 2K ops/s │
314
- │ Tuple_Values │ 14.7K ops/s │ 2K ops/s │
315
- │ Tuple_Objects │ 3.7K ops/s │ 380 ops/s │
316
- │ Array_Numbers_4 │ 73.6K ops/s │ 4.3K ops/s │
317
- │ Array_Numbers_8 │ 50.9K ops/s │ 3.8K ops/s │
318
- │ Array_Numbers_16 │ 85K ops/s │ 3.9K ops/s │
319
- │ Array_Objects_Open │ 18.9K ops/s │ 789 ops/s │
320
- │ Array_Objects_Close │ 17.9K ops/s │ 909 ops/s │
321
- └──────────────────────┴─────────────┴─────────────┘
293
+ ┌──────────────────────┬──────────────┬──────────────┐
294
+ │ Compile │ TB1X │ AJV8
295
+ ├──────────────────────┼──────────────┼──────────────┤
296
+ │ Boolean │ 50.4K ops/s │ 7.1K ops/s │
297
+ │ Number │ 129.9K ops/s │ 7.9K ops/s │
298
+ │ String │ 128.9K ops/s │ 9.1K ops/s │
299
+ │ Null │ 91.3K ops/s │ 8.4K ops/s │
300
+ │ Literal_String │ 63.1K ops/s │ 7.4K ops/s │
301
+ │ Literal_Number │ 74.5K ops/s │ 7.6K ops/s │
302
+ │ Literal_Boolean │ 143.3K ops/s │ 7.7K ops/s │
303
+ │ Pattern │ 94.2K ops/s │ 6.4K ops/s │
304
+ │ Object_Open │ 19.4K ops/s │ 1.3K ops/s │
305
+ │ Object_Close │ 17.6K ops/s │ 991 ops/s │
306
+ │ Object_Vector3 │ 46.1K ops/s │ 3.3K ops/s │
307
+ │ Object_Basis3 │ 16K ops/s │ 848 ops/s │
308
+ │ Intersect_And │ 41.3K ops/s │ 4.2K ops/s │
309
+ │ Intersect_Structural │ 25.3K ops/s │ 1.5K ops/s │
310
+ │ Union_Or │ 58.6K ops/s │ 2.4K ops/s │
311
+ │ Union_Structural │ 31.5K ops/s │ 1.8K ops/s │
312
+ │ Tuple_Values │ 18.2K ops/s │ 1.9K ops/s │
313
+ │ Tuple_Objects │ 3.9K ops/s │ 437 ops/s │
314
+ │ Array_Numbers_4 │ 114.5K ops/s │ 4.2K ops/s │
315
+ │ Array_Numbers_8 │ 128.3K ops/s │ 3.9K ops/s │
316
+ │ Array_Numbers_16 │ 128.4K ops/s │ 4K ops/s │
317
+ │ Array_Objects_Open │ 22K ops/s │ 780 ops/s │
318
+ │ Array_Objects_Close │ 22K ops/s │ 1K ops/s │
319
+ └──────────────────────┴──────────────┴──────────────┘
322
320
  ```
323
321
 
324
-
325
- The following tables shows validation performance for various JSON Schema structures using AJV8 as a basis for comparison.
322
+ The following tables shows validation performance for various JSON Schema structures. These benchmarks measure overall validation throughput for JIT compiled schematics.
326
323
 
327
324
  ```python
328
325
  ┌──────────────────────┬──────────────┬──────────────┐
@@ -167,7 +167,9 @@ class PerMessageDeflate {
167
167
  (typeof opts.serverMaxWindowBits === 'number' &&
168
168
  opts.serverMaxWindowBits > params.server_max_window_bits))) ||
169
169
  (typeof opts.clientMaxWindowBits === 'number' &&
170
- !params.client_max_window_bits)
170
+ (typeof params.client_max_window_bits === 'number'
171
+ ? opts.clientMaxWindowBits > params.client_max_window_bits
172
+ : !params.client_max_window_bits))
171
173
  ) {
172
174
  return false;
173
175
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ws",
3
- "version": "8.21.1",
3
+ "version": "8.21.3",
4
4
  "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
5
  "keywords": [
6
6
  "HyBi",
@@ -51,6 +51,7 @@
51
51
  "type": "boolean"
52
52
  },
53
53
  "dmPolicy": {
54
+ "default": "pairing",
54
55
  "type": "string",
55
56
  "enum": [
56
57
  "pairing",
@@ -367,6 +368,9 @@
367
368
  }
368
369
  ]
369
370
  },
371
+ "joinIntro": {
372
+ "type": "boolean"
373
+ },
370
374
  "postAs": {
371
375
  "default": "bot",
372
376
  "type": "string",
@@ -1779,6 +1783,9 @@
1779
1783
  }
1780
1784
  ]
1781
1785
  },
1786
+ "joinIntro": {
1787
+ "type": "boolean"
1788
+ },
1782
1789
  "postAs": {
1783
1790
  "type": "string",
1784
1791
  "enum": [
@@ -2393,7 +2400,6 @@
2393
2400
  ]
2394
2401
  },
2395
2402
  "userTokenReadOnly": {
2396
- "default": true,
2397
2403
  "type": "boolean"
2398
2404
  },
2399
2405
  "allowBots": {
@@ -2835,9 +2841,6 @@
2835
2841
  "type": "string"
2836
2842
  }
2837
2843
  },
2838
- "required": [
2839
- "userTokenReadOnly"
2840
- ],
2841
2844
  "additionalProperties": false
2842
2845
  }
2843
2846
  },
@@ -2846,6 +2849,7 @@
2846
2849
  }
2847
2850
  },
2848
2851
  "required": [
2852
+ "dmPolicy",
2849
2853
  "groupPolicy",
2850
2854
  "postAs",
2851
2855
  "mode",
@@ -2977,6 +2981,10 @@
2977
2981
  "label": "Slack Progress Command Text",
2978
2982
  "help": "Command/exec detail in progress draft lines: \"status\" is the safe default; \"raw\" opts into command text."
2979
2983
  },
2984
+ "joinIntro": {
2985
+ "label": "Slack Channel Join Introduction",
2986
+ "help": "Post one brief, room-specific introduction when the bot joins an allowed Slack channel (default: true). Account settings override the channel-wide setting."
2987
+ },
2980
2988
  "allowBots": {
2981
2989
  "label": "Slack Allow Bot Messages",
2982
2990
  "help": "Allow bot-authored messages to trigger Slack replies (default: false)."
@@ -3035,7 +3043,7 @@
3035
3043
  },
3036
3044
  "execApprovals": {
3037
3045
  "label": "Slack Exec Approvals",
3038
- "help": "Slack-native exec approval routing and approver authorization. When unset, OpenClaw auto-enables DM-first native approvals if approvers can be resolved for this Slack account."
3046
+ "help": "Slack-native exec approval routing and approver authorization. Set enabled to \"auto\" or true to enable DM-first native approvals when approvers can be resolved for this Slack account; unset or false disables them."
3039
3047
  },
3040
3048
  "presenceEvents": {
3041
3049
  "label": "Slack Presence Events",
@@ -3059,7 +3067,7 @@
3059
3067
  },
3060
3068
  "execApprovals.enabled": {
3061
3069
  "label": "Slack Exec Approvals Enabled",
3062
- "help": "Controls Slack native exec approvals for this account: unset or \"auto\" enables DM-first native approvals when approvers can be resolved, true forces native approvals on, and false disables them."
3070
+ "help": "Controls Slack native exec approvals for this account: \"auto\" or true enables DM-first native approvals when approvers can be resolved; unset or false disables them."
3063
3071
  },
3064
3072
  "execApprovals.approvers": {
3065
3073
  "label": "Slack Exec Approval Approvers",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/slack",
3
- "version": "2026.8.1-beta.3",
3
+ "version": "2026.8.2",
4
4
  "description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,13 +13,13 @@
13
13
  "@slack/types": "3.0.0",
14
14
  "@slack/web-api": "8.0.0",
15
15
  "get-east-asian-width": "1.6.0",
16
- "typebox": "1.3.6",
16
+ "typebox": "1.3.17",
17
17
  "undici": "7.29.0",
18
- "ws": "8.21.1",
18
+ "ws": "8.21.3",
19
19
  "zod": "4.4.3"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.8.1-beta.3"
22
+ "openclaw": ">=2026.8.2"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -43,7 +43,9 @@
43
43
  "SLACK_APP_TOKEN",
44
44
  "SLACK_USER_TOKEN"
45
45
  ]
46
- }
46
+ },
47
+ "specifier": "./dist/configured-state.js",
48
+ "exportName": "hasConfiguredSlackChannelState"
47
49
  },
48
50
  "approvalFlags": [
49
51
  "native"
@@ -149,10 +151,10 @@
149
151
  "allowInvalidConfigRecovery": true
150
152
  },
151
153
  "compat": {
152
- "pluginApi": ">=2026.8.1-beta.3"
154
+ "pluginApi": ">=2026.8.2"
153
155
  },
154
156
  "build": {
155
- "openclawVersion": "2026.8.1-beta.3",
157
+ "openclawVersion": "2026.8.2",
156
158
  "bundledDist": false
157
159
  },
158
160
  "release": {
@@ -1,14 +0,0 @@
1
- import { hasConfiguredAccountValue } from "openclaw/plugin-sdk/account-resolution";
2
- //#region extensions/slack/src/account-configured.ts
3
- function isSlackPluginAccountConfigured(account) {
4
- const mode = account.config.mode ?? "socket";
5
- if (!(account.identity === "user" ? Boolean(account.userToken?.trim()) : Boolean(account.botToken?.trim()))) return false;
6
- if (mode === "http") return hasConfiguredAccountValue(account.config.signingSecret);
7
- if (mode === "relay") {
8
- const relay = account.config.relay;
9
- return hasConfiguredAccountValue(relay?.url) && hasConfiguredAccountValue(relay?.authToken) && hasConfiguredAccountValue(relay?.gatewayId);
10
- }
11
- return Boolean(account.appToken?.trim());
12
- }
13
- //#endregion
14
- export { isSlackPluginAccountConfigured as t };
@@ -1,89 +0,0 @@
1
- import { i as resolveDefaultSlackAccountId, r as mergeSlackAccountConfig } from "./accounts-BlzxuYle.js";
2
- import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
3
- import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
4
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
- //#region extensions/slack/src/account-inspect.ts
6
- function inspectSlackToken(value) {
7
- const token = normalizeSecretInputString(value);
8
- if (token) return {
9
- token,
10
- source: "config",
11
- status: "available"
12
- };
13
- if (hasConfiguredSecretInput(value)) return {
14
- source: "config",
15
- status: "configured_unavailable"
16
- };
17
- return {
18
- source: "none",
19
- status: "missing"
20
- };
21
- }
22
- function selectInspectedSlackToken(configured, envToken) {
23
- return configured.status === "missing" ? envToken : configured.token;
24
- }
25
- function inspectSlackAccount(params) {
26
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
27
- const merged = mergeSlackAccountConfig(params.cfg, accountId);
28
- const enabled = params.cfg.channels?.slack?.enabled !== false && merged.enabled !== false;
29
- const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
30
- const mode = merged.mode ?? "socket";
31
- const identity = merged.postAs ?? "bot";
32
- const isHttpMode = mode === "http";
33
- const isRelayMode = mode === "relay";
34
- const configBot = inspectSlackToken(merged.botToken);
35
- const configApp = inspectSlackToken(merged.appToken);
36
- const configSigningSecret = inspectSlackToken(merged.signingSecret);
37
- const configUser = inspectSlackToken(merged.userToken);
38
- const envBot = allowEnv ? normalizeSecretInputString(params.envBotToken ?? process.env.SLACK_BOT_TOKEN) : void 0;
39
- const envApp = allowEnv && !isRelayMode ? normalizeSecretInputString(params.envAppToken ?? process.env.SLACK_APP_TOKEN) : void 0;
40
- const envUser = allowEnv ? normalizeSecretInputString(params.envUserToken ?? process.env.SLACK_USER_TOKEN) : void 0;
41
- const botToken = selectInspectedSlackToken(configBot, envBot);
42
- const appToken = selectInspectedSlackToken(configApp, envApp);
43
- const signingSecret = configSigningSecret.token;
44
- const userToken = selectInspectedSlackToken(configUser, envUser);
45
- const relayConfigured = isRelayMode && Boolean(normalizeOptionalString(merged.relay?.url)) && hasConfiguredSecretInput(merged.relay?.authToken) && Boolean(normalizeOptionalString(merged.relay?.gatewayId));
46
- const botTokenSource = configBot.token ? "config" : configBot.status === "configured_unavailable" ? "config" : envBot ? "env" : "none";
47
- const appTokenSource = configApp.token ? "config" : configApp.status === "configured_unavailable" ? "config" : envApp ? "env" : "none";
48
- const signingSecretSource = configSigningSecret.token ? "config" : configSigningSecret.status === "configured_unavailable" ? "config" : "none";
49
- const userTokenSource = configUser.token ? "config" : configUser.status === "configured_unavailable" ? "config" : envUser ? "env" : "none";
50
- return {
51
- accountId,
52
- enabled,
53
- ...identity === "user" ? { identity } : {},
54
- name: normalizeOptionalString(merged.name),
55
- mode,
56
- botToken,
57
- appToken,
58
- ...isHttpMode ? { signingSecret } : {},
59
- userToken,
60
- botTokenSource,
61
- appTokenSource,
62
- ...isHttpMode ? { signingSecretSource } : {},
63
- userTokenSource,
64
- botTokenStatus: configBot.token ? "available" : configBot.status === "configured_unavailable" ? "configured_unavailable" : envBot ? "available" : "missing",
65
- appTokenStatus: configApp.token ? "available" : configApp.status === "configured_unavailable" ? "configured_unavailable" : envApp ? "available" : "missing",
66
- ...isHttpMode ? { signingSecretStatus: configSigningSecret.token ? "available" : configSigningSecret.status === "configured_unavailable" ? "configured_unavailable" : "missing" } : {},
67
- userTokenStatus: configUser.token ? "available" : configUser.status === "configured_unavailable" ? "configured_unavailable" : envUser ? "available" : "missing",
68
- configured: (() => {
69
- const identityTokenConfigured = identity === "user" ? configUser.status !== "missing" || Boolean(envUser) : configBot.status !== "missing" || Boolean(envBot);
70
- if (isHttpMode) return identityTokenConfigured && configSigningSecret.status !== "missing";
71
- if (isRelayMode) return identityTokenConfigured && relayConfigured;
72
- return identityTokenConfigured && (configApp.status !== "missing" || Boolean(envApp));
73
- })(),
74
- config: merged,
75
- groupPolicy: merged.groupPolicy,
76
- textChunkLimit: merged.textChunkLimit,
77
- mediaMaxMb: merged.mediaMaxMb,
78
- reactionNotifications: merged.reactionNotifications,
79
- reactionAllowlist: merged.reactionAllowlist,
80
- replyToMode: merged.replyToMode,
81
- replyToModeByChatType: merged.replyToModeByChatType,
82
- actions: merged.actions,
83
- slashCommand: merged.slashCommand,
84
- dm: merged.dm,
85
- channels: merged.channels
86
- };
87
- }
88
- //#endregion
89
- export { inspectSlackAccount as t };
@@ -1,2 +0,0 @@
1
- import { t as handleSlackAction } from "./action-runtime-D6jg2CQd.js";
2
- export { handleSlackAction };
@@ -1,2 +0,0 @@
1
- import { a as getSlackMemberInfo, c as listSlackReactions, d as readSlackMessages, f as removeOwnSlackReactions, g as unpinSlackMessage, h as sendSlackMessage, l as pinSlackMessage, m as resolveSlackConversationName, n as downloadSlackFile, o as listSlackEmojis, p as removeSlackReaction, r as editSlackMessage, s as listSlackPins, t as deleteSlackMessage, u as reactSlackMessage } from "./actions-DFk0ANVB.js";
2
- export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, resolveSlackConversationName, sendSlackMessage, unpinSlackMessage };
@@ -1,10 +0,0 @@
1
- import "./target-parsing-BnMD2ZqZ.js";
2
- import "./probe-BVA65leh.js";
3
- import "./config-schema-CN3XZRX5.js";
4
- import "openclaw/plugin-sdk/account-id";
5
- import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
6
- import "openclaw/plugin-sdk/channel-status";
7
- import "openclaw/plugin-sdk/channel-config-schema";
8
- import "openclaw/plugin-sdk/channel-plugin-common";
9
- import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
10
- export { readPositiveIntegerParam as a, withNormalizedTimestamp as c, loadOutboundMediaFromUrl as i, imageResultFromFile as n, readReactionParams as o, jsonResult as r, readStringParam as s, createActionGate$1 as t };
@@ -1,94 +0,0 @@
1
- import { R as renderSlackBlockFallbackText } from "./group-policy-DyfB_ZIE.js";
2
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
- import { normalizeHostname } from "openclaw/plugin-sdk/host-runtime";
4
- import { fetchWithRuntimeDispatcher } from "openclaw/plugin-sdk/runtime-fetch";
5
- import { saveRemoteMedia } from "openclaw/plugin-sdk/media-runtime";
6
- //#region extensions/slack/src/monitor/block-text.ts
7
- function readSlackBlockType(block) {
8
- return block && typeof block === "object" && !Array.isArray(block) ? block.type : void 0;
9
- }
10
- function hasSlackTableBlock(blocks) {
11
- return blocks?.some((block) => readSlackBlockType(block) === "table") ?? false;
12
- }
13
- function hasSlackMessageTableBlock(message) {
14
- return hasSlackTableBlock(message.blocks) || message.attachments?.some((attachment) => !isSlackUnfurlAttachment(attachment) && hasSlackTableBlock(attachment.blocks)) === true;
15
- }
16
- function isSlackUnfurlAttachment(attachment) {
17
- return attachment.is_msg_unfurl === true || attachment.is_app_unfurl === true || typeof attachment.app_unfurl_url === "string" && attachment.app_unfurl_url.trim().length > 0;
18
- }
19
- function resolveSlackBlocksText(blocks) {
20
- if (!blocks?.length) return;
21
- const parts = [];
22
- let hasRichText = false;
23
- let hasNativeData = false;
24
- for (const block of blocks) {
25
- const blockType = readSlackBlockType(block);
26
- hasRichText ||= blockType === "rich_text";
27
- hasNativeData ||= blockType === "data_visualization" || blockType === "data_table" || blockType === "table";
28
- const text = renderSlackBlockFallbackText(block, { nativeDataFormat: "plain" });
29
- if (text) parts.push(text);
30
- }
31
- return parts.length > 0 ? {
32
- text: parts.join("\n"),
33
- hasRichText,
34
- hasNativeData
35
- } : void 0;
36
- }
37
- function appendDistinctSlackText(base, addition) {
38
- if (!base) return addition;
39
- const comparableBase = `\n${base.replace(/\r\n?/g, "\n")}\n`;
40
- const comparableAddition = `\n${addition.replace(/\r\n?/g, "\n")}\n`;
41
- if (comparableBase.includes(comparableAddition)) return base;
42
- return `${base}\n${addition}`;
43
- }
44
- function resolveSlackAttachmentTableTexts(attachments) {
45
- const seen = /* @__PURE__ */ new Set();
46
- const texts = [];
47
- for (const attachment of attachments ?? []) {
48
- if (isSlackUnfurlAttachment(attachment)) continue;
49
- for (const block of attachment.blocks ?? []) {
50
- if (readSlackBlockType(block) !== "table") continue;
51
- const text = renderSlackBlockFallbackText(block, { nativeDataFormat: "plain" });
52
- if (!text || seen.has(text)) continue;
53
- seen.add(text);
54
- texts.push(text);
55
- }
56
- }
57
- return texts;
58
- }
59
- /** Resolve agent-visible Slack text while admitting only native tables from attachments. */
60
- function resolveSlackMessageText(message, options = {}) {
61
- let resolved = chooseSlackPrimaryText({
62
- messageText: options.preserveMessageTextWhitespace ? typeof message.text === "string" && message.text.trim().length > 0 ? message.text : void 0 : normalizeOptionalString(message.text),
63
- blocksText: resolveSlackBlocksText(message.blocks)
64
- });
65
- for (const tableText of resolveSlackAttachmentTableTexts(message.attachments)) resolved = appendDistinctSlackText(resolved, tableText);
66
- return resolved;
67
- }
68
- function chooseSlackPrimaryText(params) {
69
- const { messageText, blocksText } = params;
70
- if (!blocksText) return messageText;
71
- if (!messageText) return blocksText.text;
72
- if (blocksText.hasNativeData) {
73
- const comparableMessageText = messageText.replace(/\s+/g, " ").trim();
74
- const comparableBlocksText = blocksText.text.replace(/\s+/g, " ").trim();
75
- if (comparableMessageText.includes(comparableBlocksText)) return messageText;
76
- return comparableBlocksText.startsWith(comparableMessageText) ? blocksText.text : `${messageText}\n${blocksText.text}`;
77
- }
78
- if (blocksText.hasRichText && blocksText.text.length > messageText.length) return blocksText.text;
79
- return blocksText.text.length > messageText.length && blocksText.text.startsWith(messageText) ? blocksText.text : messageText;
80
- }
81
- //#endregion
82
- //#region extensions/slack/src/monitor/slack-client-kind.ts
83
- /** Detects the isolated GovSlack API plane without consulting mutable config. */
84
- function isGovSlackClient(client) {
85
- if (!client?.slackApiUrl) return false;
86
- try {
87
- const apiUrl = new URL(client.slackApiUrl);
88
- return apiUrl.protocol === "https:" && !apiUrl.port && normalizeHostname(apiUrl.hostname) === "slack-gov.com";
89
- } catch {
90
- return false;
91
- }
92
- }
93
- //#endregion
94
- export { hasSlackTableBlock as a, resolveSlackMessageText as c, hasSlackMessageTableBlock as i, fetchWithRuntimeDispatcher as n, isSlackUnfurlAttachment as o, saveRemoteMedia as r, resolveSlackBlocksText as s, isGovSlackClient as t };