@openclaw/slack 2026.7.2-beta.7 → 2026.8.1-beta.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 (78) hide show
  1. package/dist/{account-inspect-DEKpg9Ip.js → account-inspect-Drw2gAiN.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-CHAeNZOX.js → accounts-CK4AVI2_.js} +2 -2
  4. package/dist/{accounts.runtime-BHD4Ma2R.js → accounts.runtime-Cb7QwWBz.js} +1 -1
  5. package/dist/{action-runtime-DfuYoMjG.js → action-runtime-BkGe7ny_.js} +148 -76
  6. package/dist/action-runtime.runtime-D9I6uc0Q.js +2 -0
  7. package/dist/{actions-D3NuJvva.js → actions-BTDXwwE3.js} +85 -44
  8. package/dist/actions.runtime-DLFyUkvg.js +2 -0
  9. package/dist/api.js +15 -15
  10. package/dist/{approval-handler.runtime-BA05P0QT.js → approval-handler.runtime-CJaNzAq2.js} +51 -14
  11. package/dist/{block-text-DkHaoGem.js → block-text-YtiNkqmx.js} +1 -1
  12. package/dist/{channel-B9fVdW3s.js → channel-D_tovcUL.js} +151 -91
  13. package/dist/channel-config-api.js +1 -1
  14. package/dist/channel-plugin-api.js +1 -1
  15. package/dist/{channel-type-DXyos1d2.js → channel-type-B9MSdoGN.js} +9 -8
  16. package/dist/{config-adapter-CxBQH8fq.js → channel.setup-Bch9dYmA.js} +83 -25
  17. package/dist/{config-schema-SgZT6nXV.js → config-schema-xto5jFIx.js} +5 -11
  18. package/dist/{directory-config-CnCIAktf.js → directory-config-CNBz8lJa.js} +3 -3
  19. package/dist/directory-contract-api.js +1 -1
  20. package/dist/{directory-live-DKunWh3A.js → directory-live-CFKUtW9E.js} +13 -22
  21. package/dist/{doctor-contract-CsGH1Dfc.js → doctor-contract-BAy7-EUQ.js} +30 -3
  22. package/dist/doctor-contract-api.js +1 -1
  23. package/dist/{group-policy-NQZti9t-.js → group-policy-c4RP9bjc.js} +248 -163
  24. package/dist/index.js +4 -1
  25. package/dist/{message-tool-api-DkhFpMoy.js → message-tool-api-BykQB4AU.js} +14 -3
  26. package/dist/message-tool-api.js +1 -1
  27. package/dist/{monitor-CmKz0wtI.js → monitor-1nF1NtqT.js} +3 -3
  28. package/dist/{outbound-adapter-BkuMp2Vs.js → outbound-adapter-S81tsswN.js} +19 -17
  29. package/dist/{pipeline.runtime-DgtmuYCP.js → pipeline.runtime-BvYsM5JO.js} +1087 -682
  30. package/dist/{policy-PRysPn23.js → policy-TapwbeaT.js} +18 -14
  31. package/dist/{probe-CgDsSops.js → probe-HoEg_WxB.js} +38 -18
  32. package/dist/{provider-DmRizMZt.js → provider-CDNvBXUi.js} +3422 -2590
  33. package/dist/{relay-source-Blxj8xb4.js → relay-source-C9leF11u.js} +11 -21
  34. package/dist/{replies-4s_Vq_z9.js → replies-CeOfv82I.js} +52 -6
  35. package/dist/{resolve-channels-yEqmM-3I.js → resolve-channels-CNPrxaXY.js} +39 -12
  36. package/dist/{resolve-users-BOrt5K-5.js → resolve-users-Dzomuwnr.js} +28 -5
  37. package/dist/{runtime-api-QMb-Q5Ko.js → runtime-api-Cj9nxBNv.js} +3 -3
  38. package/dist/runtime-api.js +11 -11
  39. package/dist/{scopes-BJSrkAp6.js → scopes-cYXKkrRD.js} +1 -1
  40. package/dist/{send-DsLeZpST.js → send-Nor0iBwY.js} +211 -105
  41. package/dist/{send.runtime-gUdK6V3h.js → send.runtime-BmgNe6S9.js} +1 -1
  42. package/dist/setup-entry.js +1 -4
  43. package/dist/setup-plugin-api.js +1 -1
  44. package/dist/{setup-surface-BeNzrMrJ.js → setup-surface-CbX1-Knh.js} +6 -6
  45. package/dist/{shared-DgIN3Dcr.js → shared-zdT5AMp-.js} +36 -42
  46. package/dist/{slash-dispatch.runtime-zPkyl7dB.js → slash-dispatch.runtime-Bnr9GR1S.js} +1 -1
  47. package/dist/{streaming-compat-3_X-21wW.js → streaming-compat-B-e0mqM0.js} +3 -8
  48. package/dist/{target-parsing-N6lHogYZ.js → target-parsing-BnMD2ZqZ.js} +40 -2
  49. package/dist/{targets-KmjP2E8s.js → targets-Cx5W_n3W.js} +1 -1
  50. package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
  51. package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +1 -1
  52. package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
  53. package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +1 -1
  54. package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +1 -1
  55. package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +2 -2
  56. package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
  57. package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +1 -1
  58. package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
  59. package/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
  60. package/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
  61. package/node_modules/undici/lib/core/request.js +12 -1
  62. package/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
  63. package/node_modules/undici/lib/handler/cache-handler.js +246 -64
  64. package/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
  65. package/node_modules/undici/lib/handler/retry-handler.js +24 -0
  66. package/node_modules/undici/lib/interceptor/cache.js +159 -52
  67. package/node_modules/undici/lib/util/cache.js +324 -62
  68. package/node_modules/undici/lib/util/date.js +23 -6
  69. package/node_modules/undici/lib/web/cookies/util.js +79 -9
  70. package/node_modules/undici/package.json +1 -1
  71. package/openclaw.plugin.json +239 -34
  72. package/package.json +9 -9
  73. package/skills/slack/SKILL.md +10 -68
  74. package/dist/action-runtime.runtime-DQErZYpz.js +0 -2
  75. package/dist/actions.runtime-BIRU_G4M.js +0 -2
  76. package/dist/channel.setup-CLP5oTvh.js +0 -56
  77. package/dist/preflight-audio.runtime-D5Bgags0.js +0 -3
  78. package/dist/slash-plugin-commands.runtime-Dosfcx3X.js +0 -2
@@ -105,7 +105,7 @@ function validateCookiePath (path) {
105
105
 
106
106
  if (
107
107
  code < 0x20 || // exclude CTLs (0-31)
108
- code === 0x7F || // DEL
108
+ code > 0x7E || // exclude DEL and non-ascii
109
109
  code === 0x3B // ;
110
110
  ) {
111
111
  throw new Error('Invalid cookie path')
@@ -114,16 +114,80 @@ function validateCookiePath (path) {
114
114
  }
115
115
 
116
116
  /**
117
- * I have no idea why these values aren't allowed to be honest,
118
- * but Deno tests these. - Khafra
117
+ * <let-dig> ::= <letter> | <digit>
118
+ *
119
+ * <letter> ::= any one of the 52 alphabetic characters A through Z in
120
+ * upper case and a through z in lower case
121
+ *
122
+ * <digit> ::= any one of the ten digits 0 through 9r
123
+ *
124
+ * @see https://www.rfc-editor.org/rfc/rfc1034#section-3.5
125
+ * @param {number} code
126
+ */
127
+ function isLetterOrDigit (code) {
128
+ return (
129
+ (code >= 0x30 && code <= 0x39) || // 0-9
130
+ (code >= 0x41 && code <= 0x5A) || // A-Z
131
+ (code >= 0x61 && code <= 0x7A) // a-z
132
+ )
133
+ }
134
+
135
+ /**
136
+ * Validates a cookie domain against the "preferred name syntax".
137
+ *
138
+ * <domain> ::= <subdomain> | " "
139
+ * <subdomain> ::= <label> | <subdomain> "." <label>
140
+ * <label> ::= <let-dig> [ [ <ldh-str> ] <let-dig> ]
141
+ * <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
142
+ * <let-dig-hyp> ::= <let-dig> | "-"
143
+ *
144
+ * @see https://www.rfc-editor.org/rfc/rfc1034#section-3.5
145
+ * @see https://www.rfc-editor.org/rfc/rfc1123#section-2.1
146
+ * @see https://www.rfc-editor.org/rfc/rfc1035#section-2.3.4
119
147
  * @param {string} domain
120
148
  */
121
149
  function validateCookieDomain (domain) {
122
- if (
123
- domain.startsWith('-') ||
124
- domain.endsWith('.') ||
125
- domain.endsWith('-')
126
- ) {
150
+ // <domain> ::= <subdomain> | " "
151
+ if (domain === ' ') {
152
+ return
153
+ }
154
+
155
+ if (domain.length > 255) {
156
+ throw new Error('Invalid cookie domain')
157
+ }
158
+
159
+ let labelLength = 0
160
+
161
+ for (let i = 0; i < domain.length; ++i) {
162
+ const code = domain.charCodeAt(i)
163
+
164
+ if (code === 0x2E) {
165
+ if (labelLength === 0) {
166
+ throw new Error('Invalid cookie domain')
167
+ }
168
+
169
+ if (domain.charCodeAt(i - 1) === 0x2D) { // "-"
170
+ throw new Error('Invalid cookie domain')
171
+ }
172
+
173
+ labelLength = 0
174
+ continue
175
+ }
176
+
177
+ if (labelLength === 0 && !isLetterOrDigit(code)) {
178
+ throw new Error('Invalid cookie domain')
179
+ }
180
+
181
+ if (!isLetterOrDigit(code) && code !== 0x2D) { // "-"
182
+ throw new Error('Invalid cookie domain')
183
+ }
184
+
185
+ if (++labelLength > 63) {
186
+ throw new Error('Invalid cookie domain')
187
+ }
188
+ }
189
+
190
+ if (labelLength === 0 || domain.charCodeAt(domain.length - 1) === 0x2D) { // "-"
127
191
  throw new Error('Invalid cookie domain')
128
192
  }
129
193
  }
@@ -266,7 +330,13 @@ function stringify (cookie) {
266
330
 
267
331
  const [key, ...value] = part.split('=')
268
332
 
269
- out.push(`${key.trim()}=${value.join('=')}`)
333
+ const trimmedKey = key.trim()
334
+ const joinedValue = value.join('=')
335
+
336
+ validateCookieName(trimmedKey)
337
+ validateCookieValue(joinedValue)
338
+
339
+ out.push(`${trimmedKey}=${joinedValue}`)
270
340
  }
271
341
 
272
342
  return out.join('; ')
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "undici",
3
- "version": "7.28.0",
3
+ "version": "7.29.0",
4
4
  "description": "An HTTP/1.1 client, written from scratch for Node.js",
5
5
  "homepage": "https://undici.nodejs.org",
6
6
  "bugs": {
@@ -1,5 +1,8 @@
1
1
  {
2
2
  "id": "slack",
3
+ "doctorContract": {
4
+ "configRepair": true
5
+ },
3
6
  "name": "Slack",
4
7
  "description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
5
8
  "skills": [
@@ -248,13 +251,6 @@
248
251
  "exclusiveMinimum": 0,
249
252
  "maximum": 9007199254740991
250
253
  },
251
- "render": {
252
- "type": "string",
253
- "enum": [
254
- "text",
255
- "rich"
256
- ]
257
- },
258
254
  "toolProgress": {
259
255
  "type": "boolean"
260
256
  },
@@ -381,9 +377,6 @@
381
377
  "relay"
382
378
  ]
383
379
  },
384
- "enterpriseOrgInstall": {
385
- "type": "boolean"
386
- },
387
380
  "relay": {
388
381
  "type": "object",
389
382
  "properties": {
@@ -420,6 +413,29 @@
420
413
  ],
421
414
  "additionalProperties": false
422
415
  },
416
+ {
417
+ "type": "object",
418
+ "properties": {
419
+ "source": {
420
+ "type": "string",
421
+ "const": "store"
422
+ },
423
+ "provider": {
424
+ "type": "string",
425
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
426
+ },
427
+ "id": {
428
+ "type": "string",
429
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
430
+ }
431
+ },
432
+ "required": [
433
+ "source",
434
+ "provider",
435
+ "id"
436
+ ],
437
+ "additionalProperties": false
438
+ },
423
439
  {
424
440
  "type": "object",
425
441
  "properties": {
@@ -504,6 +520,29 @@
504
520
  ],
505
521
  "additionalProperties": false
506
522
  },
523
+ {
524
+ "type": "object",
525
+ "properties": {
526
+ "source": {
527
+ "type": "string",
528
+ "const": "store"
529
+ },
530
+ "provider": {
531
+ "type": "string",
532
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
533
+ },
534
+ "id": {
535
+ "type": "string",
536
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
537
+ }
538
+ },
539
+ "required": [
540
+ "source",
541
+ "provider",
542
+ "id"
543
+ ],
544
+ "additionalProperties": false
545
+ },
507
546
  {
508
547
  "type": "object",
509
548
  "properties": {
@@ -664,6 +703,29 @@
664
703
  ],
665
704
  "additionalProperties": false
666
705
  },
706
+ {
707
+ "type": "object",
708
+ "properties": {
709
+ "source": {
710
+ "type": "string",
711
+ "const": "store"
712
+ },
713
+ "provider": {
714
+ "type": "string",
715
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
716
+ },
717
+ "id": {
718
+ "type": "string",
719
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
720
+ }
721
+ },
722
+ "required": [
723
+ "source",
724
+ "provider",
725
+ "id"
726
+ ],
727
+ "additionalProperties": false
728
+ },
667
729
  {
668
730
  "type": "object",
669
731
  "properties": {
@@ -742,6 +804,29 @@
742
804
  ],
743
805
  "additionalProperties": false
744
806
  },
807
+ {
808
+ "type": "object",
809
+ "properties": {
810
+ "source": {
811
+ "type": "string",
812
+ "const": "store"
813
+ },
814
+ "provider": {
815
+ "type": "string",
816
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
817
+ },
818
+ "id": {
819
+ "type": "string",
820
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
821
+ }
822
+ },
823
+ "required": [
824
+ "source",
825
+ "provider",
826
+ "id"
827
+ ],
828
+ "additionalProperties": false
829
+ },
745
830
  {
746
831
  "type": "object",
747
832
  "properties": {
@@ -820,6 +905,29 @@
820
905
  ],
821
906
  "additionalProperties": false
822
907
  },
908
+ {
909
+ "type": "object",
910
+ "properties": {
911
+ "source": {
912
+ "type": "string",
913
+ "const": "store"
914
+ },
915
+ "provider": {
916
+ "type": "string",
917
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
918
+ },
919
+ "id": {
920
+ "type": "string",
921
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
922
+ }
923
+ },
924
+ "required": [
925
+ "source",
926
+ "provider",
927
+ "id"
928
+ ],
929
+ "additionalProperties": false
930
+ },
823
931
  {
824
932
  "type": "object",
825
933
  "properties": {
@@ -1540,13 +1648,6 @@
1540
1648
  "exclusiveMinimum": 0,
1541
1649
  "maximum": 9007199254740991
1542
1650
  },
1543
- "render": {
1544
- "type": "string",
1545
- "enum": [
1546
- "text",
1547
- "rich"
1548
- ]
1549
- },
1550
1651
  "toolProgress": {
1551
1652
  "type": "boolean"
1552
1653
  },
@@ -1671,9 +1772,6 @@
1671
1772
  "relay"
1672
1773
  ]
1673
1774
  },
1674
- "enterpriseOrgInstall": {
1675
- "type": "boolean"
1676
- },
1677
1775
  "relay": {
1678
1776
  "type": "object",
1679
1777
  "properties": {
@@ -1710,6 +1808,29 @@
1710
1808
  ],
1711
1809
  "additionalProperties": false
1712
1810
  },
1811
+ {
1812
+ "type": "object",
1813
+ "properties": {
1814
+ "source": {
1815
+ "type": "string",
1816
+ "const": "store"
1817
+ },
1818
+ "provider": {
1819
+ "type": "string",
1820
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1821
+ },
1822
+ "id": {
1823
+ "type": "string",
1824
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1825
+ }
1826
+ },
1827
+ "required": [
1828
+ "source",
1829
+ "provider",
1830
+ "id"
1831
+ ],
1832
+ "additionalProperties": false
1833
+ },
1713
1834
  {
1714
1835
  "type": "object",
1715
1836
  "properties": {
@@ -1794,6 +1915,29 @@
1794
1915
  ],
1795
1916
  "additionalProperties": false
1796
1917
  },
1918
+ {
1919
+ "type": "object",
1920
+ "properties": {
1921
+ "source": {
1922
+ "type": "string",
1923
+ "const": "store"
1924
+ },
1925
+ "provider": {
1926
+ "type": "string",
1927
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
1928
+ },
1929
+ "id": {
1930
+ "type": "string",
1931
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
1932
+ }
1933
+ },
1934
+ "required": [
1935
+ "source",
1936
+ "provider",
1937
+ "id"
1938
+ ],
1939
+ "additionalProperties": false
1940
+ },
1797
1941
  {
1798
1942
  "type": "object",
1799
1943
  "properties": {
@@ -1953,6 +2097,29 @@
1953
2097
  ],
1954
2098
  "additionalProperties": false
1955
2099
  },
2100
+ {
2101
+ "type": "object",
2102
+ "properties": {
2103
+ "source": {
2104
+ "type": "string",
2105
+ "const": "store"
2106
+ },
2107
+ "provider": {
2108
+ "type": "string",
2109
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
2110
+ },
2111
+ "id": {
2112
+ "type": "string",
2113
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
2114
+ }
2115
+ },
2116
+ "required": [
2117
+ "source",
2118
+ "provider",
2119
+ "id"
2120
+ ],
2121
+ "additionalProperties": false
2122
+ },
1956
2123
  {
1957
2124
  "type": "object",
1958
2125
  "properties": {
@@ -2031,6 +2198,29 @@
2031
2198
  ],
2032
2199
  "additionalProperties": false
2033
2200
  },
2201
+ {
2202
+ "type": "object",
2203
+ "properties": {
2204
+ "source": {
2205
+ "type": "string",
2206
+ "const": "store"
2207
+ },
2208
+ "provider": {
2209
+ "type": "string",
2210
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
2211
+ },
2212
+ "id": {
2213
+ "type": "string",
2214
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
2215
+ }
2216
+ },
2217
+ "required": [
2218
+ "source",
2219
+ "provider",
2220
+ "id"
2221
+ ],
2222
+ "additionalProperties": false
2223
+ },
2034
2224
  {
2035
2225
  "type": "object",
2036
2226
  "properties": {
@@ -2109,6 +2299,29 @@
2109
2299
  ],
2110
2300
  "additionalProperties": false
2111
2301
  },
2302
+ {
2303
+ "type": "object",
2304
+ "properties": {
2305
+ "source": {
2306
+ "type": "string",
2307
+ "const": "store"
2308
+ },
2309
+ "provider": {
2310
+ "type": "string",
2311
+ "pattern": "^[a-z][a-z0-9_-]{0,63}$"
2312
+ },
2313
+ "id": {
2314
+ "type": "string",
2315
+ "pattern": "^[A-Z][A-Z0-9_]{0,127}$"
2316
+ }
2317
+ },
2318
+ "required": [
2319
+ "source",
2320
+ "provider",
2321
+ "id"
2322
+ ],
2323
+ "additionalProperties": false
2324
+ },
2112
2325
  {
2113
2326
  "type": "object",
2114
2327
  "properties": {
@@ -2618,10 +2831,6 @@
2618
2831
  "label": "Slack",
2619
2832
  "help": "Slack channel provider configuration for bot/app tokens, streaming behavior, and DM policy controls. Keep token handling and thread behavior explicit to avoid noisy workspace interactions."
2620
2833
  },
2621
- "enterpriseOrgInstall": {
2622
- "label": "Slack Enterprise Grid Org Install",
2623
- "help": "Enable only for an Enterprise Grid org-wide bot installation. OpenClaw verifies the token with Slack auth.test at startup; DMs must be disabled or use dmPolicy=\"open\" with allowFrom=[\"*\"]."
2624
- },
2625
2834
  "postAs": {
2626
2835
  "label": "Slack Identity",
2627
2836
  "help": "Select \"bot\" (default) for the classic Slack app/bot identity or \"user\" to post as the authorizing human through a user token while the app carries event transport."
@@ -2676,11 +2885,11 @@
2676
2885
  },
2677
2886
  "streaming": {
2678
2887
  "label": "Slack Streaming Mode",
2679
- "help": "Unified Slack stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\". Legacy boolean/streamMode keys are auto-mapped."
2888
+ "help": "Unified Slack stream preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default). Legacy boolean/streamMode keys are auto-mapped."
2680
2889
  },
2681
2890
  "streaming.mode": {
2682
2891
  "label": "Slack Streaming Mode",
2683
- "help": "Canonical Slack preview mode: \"off\" | \"partial\" | \"block\" | \"progress\"."
2892
+ "help": "Canonical Slack preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default)."
2684
2893
  },
2685
2894
  "streaming.chunkMode": {
2686
2895
  "label": "Slack Chunk Mode",
@@ -2704,15 +2913,11 @@
2704
2913
  },
2705
2914
  "streaming.preview.commandText": {
2706
2915
  "label": "Slack Draft Command Text",
2707
- "help": "Command/exec detail in preview tool-progress lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
2708
- },
2709
- "streaming.progress.render": {
2710
- "label": "Slack Progress Renderer",
2711
- "help": "Progress draft renderer: \"text\" uses one portable text body; \"rich\" renders structured Slack Block Kit fields with the same text fallback."
2916
+ "help": "Command/exec detail in preview tool-progress lines: \"status\" is the safe default; \"raw\" opts into command text."
2712
2917
  },
2713
2918
  "streaming.progress.nativeTaskCards": {
2714
2919
  "label": "Slack Native Progress Task Cards",
2715
- "help": "Opt in to Slack native task-card progress updates when channels.slack.streaming.mode=\"progress\" and streaming.nativeTransport is enabled. Default: false."
2920
+ "help": "Slack native task-card progress updates when channels.slack.streaming.mode=\"progress\" and streaming.nativeTransport is enabled. Set false to fall back to the Block Kit progress card. Default: true."
2716
2921
  },
2717
2922
  "streaming.progress.label": {
2718
2923
  "label": "Slack Progress Label",
@@ -2736,7 +2941,7 @@
2736
2941
  },
2737
2942
  "streaming.progress.commandText": {
2738
2943
  "label": "Slack Progress Command Text",
2739
- "help": "Command/exec detail in progress draft lines: \"raw\" preserves released behavior; \"status\" shows only the tool label."
2944
+ "help": "Command/exec detail in progress draft lines: \"status\" is the safe default; \"raw\" opts into command text."
2740
2945
  },
2741
2946
  "allowBots": {
2742
2947
  "label": "Slack Allow Bot Messages",
@@ -2796,7 +3001,7 @@
2796
3001
  },
2797
3002
  "execApprovals": {
2798
3003
  "label": "Slack Exec Approvals",
2799
- "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 workspace account."
3004
+ "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."
2800
3005
  },
2801
3006
  "presenceEvents": {
2802
3007
  "label": "Slack Presence Events",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/slack",
3
- "version": "2026.7.2-beta.7",
3
+ "version": "2026.8.1-beta.2",
4
4
  "description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,12 +15,12 @@
15
15
  "get-east-asian-width": "1.6.0",
16
16
  "p-map": "7.0.6",
17
17
  "typebox": "1.3.6",
18
- "undici": "7.28.0",
18
+ "undici": "7.29.0",
19
19
  "ws": "8.21.1",
20
20
  "zod": "4.4.3"
21
21
  },
22
22
  "peerDependencies": {
23
- "openclaw": ">=2026.7.2-beta.7"
23
+ "openclaw": ">=2026.8.1-beta.2"
24
24
  },
25
25
  "peerDependenciesMeta": {
26
26
  "openclaw": {
@@ -135,7 +135,10 @@
135
135
  "cli": {
136
136
  "flags": "--use-env",
137
137
  "description": "Use Slack environment credentials"
138
- }
138
+ },
139
+ "envVars": [
140
+ "SLACK_BOT_TOKEN"
141
+ ]
139
142
  }
140
143
  ]
141
144
  }
@@ -147,13 +150,10 @@
147
150
  "allowInvalidConfigRecovery": true
148
151
  },
149
152
  "compat": {
150
- "pluginApi": ">=2026.7.2-beta.7"
151
- },
152
- "startup": {
153
- "deferConfiguredChannelFullLoadUntilAfterListen": true
153
+ "pluginApi": ">=2026.8.1-beta.2"
154
154
  },
155
155
  "build": {
156
- "openclawVersion": "2026.7.2-beta.7",
156
+ "openclawVersion": "2026.8.1-beta.2",
157
157
  "bundledDist": false
158
158
  },
159
159
  "release": {
@@ -1,78 +1,20 @@
1
1
  ---
2
2
  name: slack
3
- description: "Slack tool actions: send/read/edit/delete messages, react, pin/unpin, list pins/reactions/emoji, member info."
3
+ description: "Slack messaging workflows through OpenClaw's message tool."
4
4
  metadata: { "openclaw": { "emoji": "💬", "requires": { "config": ["channels.slack"] } } }
5
+ allowed-tools: ["message"]
5
6
  ---
6
7
 
7
8
  # Slack
8
9
 
9
- Use the `slack` tool. Reuse `channelId` and Slack timestamp message IDs from context when present.
10
+ Use the `message` tool with `channel: "slack"`. The tool schema lists the actions enabled for the current Slack account; do not assume an action that is not present.
10
11
 
11
- ## Inputs
12
+ ## Workflow
12
13
 
13
- - `channelId`: Slack channel ID.
14
- - `messageId`: Slack timestamp, e.g. `1712023032.1234`.
15
- - `to`: `channel:<id>` or `user:<id>` for sends.
16
- - `emoji`: Unicode or `:name:` for reactions.
14
+ - Prefer stable Slack IDs from context. Sends outside the current conversation use `channel:<id>` or `user:<id>` targets.
15
+ - Keep replies in the current thread unless the user asks for a top-level post. For another thread, pass its Slack timestamp as `threadId`; use the same timestamp as `messageId` for message-specific actions.
16
+ - Before editing, deleting, pinning, or reacting to an ambiguous message, read the conversation and resolve its exact ID.
17
+ - When multiple Slack accounts are configured, pass `accountId` rather than guessing.
18
+ - Confirm destructive deletes when the target or intent is unclear.
17
19
 
18
- ## Actions
19
-
20
- ```json
21
- { "action": "sendMessage", "to": "channel:C123", "content": "Hello" }
22
- ```
23
-
24
- ```json
25
- { "action": "readMessages", "channelId": "C123", "limit": 20 }
26
- ```
27
-
28
- ```json
29
- {
30
- "action": "react",
31
- "channelId": "C123",
32
- "messageId": "1712023032.1234",
33
- "emoji": ":white_check_mark:"
34
- }
35
- ```
36
-
37
- ```json
38
- { "action": "reactions", "channelId": "C123", "messageId": "1712023032.1234" }
39
- ```
40
-
41
- ```json
42
- {
43
- "action": "editMessage",
44
- "channelId": "C123",
45
- "messageId": "1712023032.1234",
46
- "content": "Updated text"
47
- }
48
- ```
49
-
50
- ```json
51
- { "action": "deleteMessage", "channelId": "C123", "messageId": "1712023032.1234" }
52
- ```
53
-
54
- ```json
55
- { "action": "pinMessage", "channelId": "C123", "messageId": "1712023032.1234" }
56
- ```
57
-
58
- ```json
59
- { "action": "unpinMessage", "channelId": "C123", "messageId": "1712023032.1234" }
60
- ```
61
-
62
- ```json
63
- { "action": "listPins", "channelId": "C123" }
64
- ```
65
-
66
- ```json
67
- { "action": "memberInfo", "userId": "U123" }
68
- ```
69
-
70
- ```json
71
- { "action": "emojiList" }
72
- ```
73
-
74
- ## Safety
75
-
76
- - Confirm destructive deletes when context is unclear.
77
- - Keep outbound messages short; avoid Markdown tables.
78
- - Prefer thread/message IDs over fuzzy channel names.
20
+ Slack formatting, mentions, tables, charts, and interactive controls are described automatically by the current `message` tool hints. Follow those hints instead of maintaining a second action or formatting catalog here.
@@ -1,2 +0,0 @@
1
- import { t as handleSlackAction } from "./action-runtime-DfuYoMjG.js";
2
- export { handleSlackAction };
@@ -1,2 +0,0 @@
1
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, h as unpinSlackMessage, i as getSlackMemberInfo, l as reactSlackMessage, m as sendSlackMessage, n as downloadSlackFile, o as listSlackPins, p as resolveSlackConversationName, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-D3NuJvva.js";
2
- export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, resolveSlackConversationName, sendSlackMessage, unpinSlackMessage };