@openclaw/slack 2026.7.2-beta.3 → 2026.7.2-beta.5
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.
- package/README.md +1 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/{account-inspect-Bvbtu3iH.js → account-inspect-jn1xLaVi.js} +2 -2
- package/dist/account-reply-mode-DrUXogvO.js +14 -0
- package/dist/{accounts-DQEbYKh9.js → accounts-BSr252c_.js} +6 -27
- package/dist/{accounts.runtime-BIKmJdtJ.js → accounts.runtime-CjULMLTa.js} +1 -1
- package/dist/{action-runtime-DqkRwO3Z.js → action-runtime-BO3HK_50.js} +7 -7
- package/dist/action-runtime.runtime-DbEcqEXC.js +2 -0
- package/dist/{actions-CF0tUY5q.js → actions-BkOaiDSX.js} +6 -6
- package/dist/{actions.runtime-hCbx4RXg.js → actions.runtime-Do-iOL51.js} +1 -1
- package/dist/api.js +15 -15
- package/dist/{approval-handler.runtime-Em8I1-8-.js → approval-handler.runtime-BAnGN7w0.js} +2 -2
- package/dist/{channel-4-TRi1D6.js → channel-Cnrlie9S.js} +26 -36
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-Cu1yjNg2.js → channel-type-CPDX8EV-.js} +4 -4
- package/dist/{channel.setup-CgkADtZg.js → channel.setup-DyZdLwUB.js} +6 -25
- package/dist/{setup-core-CeiAVwQ3.js → config-adapter-Bb8hn2tM.js} +141 -72
- package/dist/{config-schema-XjJGfwQC.js → config-schema-BajbuJGL.js} +229 -30
- package/dist/{directory-config-Bv0lcUlH.js → directory-config-CeixfVuC.js} +2 -2
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-CzUIB7th.js → directory-live-CUwGPX2d.js} +3 -3
- package/dist/doctor-contract-CsGH1Dfc.js +158 -0
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{group-policy-Bw-65m3V.js → group-policy-CthIXE2T.js} +48 -7
- package/dist/{message-tool-api-C2pcf5du.js → message-tool-api-CvKoWYYQ.js} +1 -6
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-CNFeF30h.js → monitor-Cb5ZsOTY.js} +4 -4
- package/dist/{outbound-adapter-CVi2uok0.js → outbound-adapter-sGrozuRg.js} +11 -68
- package/dist/{pipeline.runtime-CTvokbty.js → pipeline.runtime-mFCCSllA.js} +2173 -1999
- package/dist/{policy-b_dOPDCq.js → policy-DVg6FyMP.js} +1 -1
- package/dist/{probe-Borhn9PQ.js → probe-BhQTDVBQ.js} +51 -58
- package/dist/{provider-B-HVL5ZE.js → provider-PSppCU_K.js} +435 -252
- package/dist/{relay-source-Ea_P9VcO.js → relay-source-D0mb_JBk.js} +1 -1
- package/dist/{replies-B4bOdrYb.js → replies-BkPPM2Ri.js} +50 -13
- package/dist/{resolve-channels-KTc568SU.js → resolve-channels-B3RlJKyV.js} +2 -2
- package/dist/{resolve-users-DeGJf1yp.js → resolve-users-DTm7PEMa.js} +2 -2
- package/dist/{rolldown-runtime-D7D4PA-g.js → rolldown-runtime-8H4AJuhK.js} +1 -0
- package/dist/{runtime-api-BFfNpzDe.js → runtime-api-jpn3vQ7e.js} +3 -2
- package/dist/runtime-api.js +11 -11
- package/dist/{scopes-lx08L56K.js → scopes-B2SqZ--4.js} +1 -1
- package/dist/{security-audit-CikQhBUY.js → security-audit-DR097212.js} +1 -11
- package/dist/security-contract-api.js +1 -1
- package/dist/{send-KuTDky7i.js → send-2IoDXPeB.js} +8 -22
- package/dist/{send.runtime-CXyxws1D.js → send.runtime-BKd_PAEw.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-DLA0vHXp.js → setup-surface-Dyam58nO.js} +47 -39
- package/dist/{shared-C4yVB0Q-.js → shared-g55DV75U.js} +16 -37
- package/dist/{slash-dispatch.runtime-BT-mMm-f.js → slash-dispatch.runtime-BRQbvn2e.js} +10 -9
- package/node_modules/@slack/bolt/dist/App.d.ts +4 -19
- package/node_modules/@slack/bolt/dist/App.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/App.js +21 -40
- package/node_modules/@slack/bolt/dist/App.js.map +1 -1
- package/node_modules/@slack/bolt/dist/context/create-respond.d.ts +3 -3
- package/node_modules/@slack/bolt/dist/context/create-respond.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/context/create-respond.js +13 -2
- package/node_modules/@slack/bolt/dist/context/create-respond.js.map +1 -1
- package/node_modules/@slack/bolt/dist/errors.d.ts +6 -8
- package/node_modules/@slack/bolt/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/errors.js +11 -11
- package/node_modules/@slack/bolt/dist/errors.js.map +1 -1
- package/node_modules/@slack/bolt/dist/helpers.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/helpers.js +1 -2
- package/node_modules/@slack/bolt/dist/helpers.js.map +1 -1
- package/node_modules/@slack/bolt/dist/index.d.ts +0 -1
- package/node_modules/@slack/bolt/dist/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/index.js +1 -3
- package/node_modules/@slack/bolt/dist/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts +10 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js +5 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js +10 -14
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts +3 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js +2 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts +2 -4
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.js +0 -2
- package/node_modules/@slack/bolt/dist/types/actions/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/events/index.d.ts +2 -0
- package/node_modules/@slack/bolt/dist/types/events/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/utilities.d.ts +2 -2
- package/node_modules/@slack/bolt/dist/types/utilities.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/view/index.d.ts +1 -31
- package/node_modules/@slack/bolt/dist/types/view/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/package.json +10 -11
- package/node_modules/@slack/logger/README.md +1 -1
- package/node_modules/@slack/logger/dist/index.js +17 -13
- package/node_modules/@slack/logger/dist/index.js.map +1 -1
- package/node_modules/@slack/logger/package.json +6 -7
- package/node_modules/@slack/oauth/README.md +1 -1
- package/node_modules/@slack/oauth/dist/errors.d.ts +25 -14
- package/node_modules/@slack/oauth/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/oauth/dist/errors.js +24 -33
- package/node_modules/@slack/oauth/dist/errors.js.map +1 -1
- package/node_modules/@slack/oauth/dist/install-provider.js +58 -16
- package/node_modules/@slack/oauth/dist/install-provider.js.map +1 -1
- package/node_modules/@slack/oauth/dist/installation-stores/file-store.js +4 -2
- package/node_modules/@slack/oauth/dist/installation-stores/file-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js +3 -16
- package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js +2 -0
- package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js +3 -0
- package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js.map +1 -1
- package/node_modules/@slack/oauth/package.json +8 -9
- package/node_modules/@slack/socket-mode/README.md +1 -1
- package/node_modules/@slack/socket-mode/dist/package.json +21 -13
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts +14 -8
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js +136 -48
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts +12 -6
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js +87 -38
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts +31 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/errors.d.ts +31 -37
- package/node_modules/@slack/socket-mode/dist/src/errors.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/errors.js +43 -47
- package/node_modules/@slack/socket-mode/dist/src/errors.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/index.d.ts +2 -2
- package/node_modules/@slack/socket-mode/dist/src/index.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/index.js +7 -1
- package/node_modules/@slack/socket-mode/dist/src/index.js.map +1 -1
- package/node_modules/@slack/socket-mode/package.json +21 -13
- package/node_modules/@slack/types/README.md +1 -1
- package/node_modules/@slack/types/dist/events/app.d.ts +28 -0
- package/node_modules/@slack/types/dist/events/app.d.ts.map +1 -1
- package/node_modules/@slack/types/dist/events/index.d.ts +2 -2
- package/node_modules/@slack/types/dist/events/index.d.ts.map +1 -1
- package/node_modules/@slack/types/dist/events/index.js.map +1 -1
- package/node_modules/@slack/types/dist/events/message.d.ts +2 -0
- package/node_modules/@slack/types/dist/events/message.d.ts.map +1 -1
- package/node_modules/@slack/types/package.json +3 -3
- package/node_modules/@slack/web-api/README.md +1 -1
- package/node_modules/@slack/web-api/dist/WebClient.d.ts +42 -71
- package/node_modules/@slack/web-api/dist/WebClient.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/WebClient.js +180 -248
- package/node_modules/@slack/web-api/dist/WebClient.js.map +1 -1
- package/node_modules/@slack/web-api/dist/chat-stream.js +37 -22
- package/node_modules/@slack/web-api/dist/chat-stream.js.map +1 -1
- package/node_modules/@slack/web-api/dist/errors.d.ts +32 -51
- package/node_modules/@slack/web-api/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/errors.js +64 -55
- package/node_modules/@slack/web-api/dist/errors.js.map +1 -1
- package/node_modules/@slack/web-api/dist/file-upload.d.ts +0 -9
- package/node_modules/@slack/web-api/dist/file-upload.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/file-upload.js +41 -46
- package/node_modules/@slack/web-api/dist/file-upload.js.map +1 -1
- package/node_modules/@slack/web-api/dist/index.d.ts +2 -2
- package/node_modules/@slack/web-api/dist/index.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/index.js +8 -1
- package/node_modules/@slack/web-api/dist/index.js.map +1 -1
- package/node_modules/@slack/web-api/dist/methods.d.ts +2 -38
- package/node_modules/@slack/web-api/dist/methods.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/methods.js +1347 -1384
- package/node_modules/@slack/web-api/dist/methods.js.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/files.d.ts +0 -1
- package/node_modules/@slack/web-api/dist/types/request/files.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/index.d.ts +3 -3
- package/node_modules/@slack/web-api/dist/types/request/index.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts +66 -1
- package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts +1 -14
- package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts +0 -29
- package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts.map +1 -1
- package/node_modules/@slack/web-api/package.json +6 -10
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/fs/promises.d.ts +16 -6
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/retry/LICENSE +21 -21
- package/node_modules/@types/retry/README.md +5 -4
- package/node_modules/@types/retry/index.d.ts +20 -13
- package/node_modules/@types/retry/package.json +9 -11
- package/node_modules/iconv-lite/encodings/sbcs-data.js +2 -0
- package/node_modules/iconv-lite/encodings/utf32.js +10 -3
- package/node_modules/iconv-lite/package.json +2 -2
- package/node_modules/iconv-lite/types/encodings.d.ts +2 -0
- package/node_modules/path-to-regexp/Readme.md +3 -3
- package/node_modules/path-to-regexp/dist/index.js +135 -158
- package/node_modules/path-to-regexp/dist/index.js.map +1 -1
- package/node_modules/path-to-regexp/package.json +2 -2
- package/node_modules/qs/CHANGELOG.md +11 -0
- package/node_modules/qs/dist/qs.js +17 -17
- package/node_modules/qs/lib/parse.js +19 -8
- package/node_modules/qs/lib/utils.js +47 -8
- package/node_modules/qs/package.json +6 -5
- package/node_modules/qs/test/parse.js +230 -0
- package/node_modules/qs/test/utils.js +194 -0
- package/node_modules/typebox/build/compile/validator.d.mts +1 -4
- package/node_modules/typebox/build/guard/guard.d.mts +1 -1
- package/node_modules/typebox/build/guard/guard.mjs +5 -2
- package/node_modules/typebox/build/guard/string.mjs +16 -4
- package/node_modules/typebox/build/schema/engine/_functions.mjs +34 -15
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +5 -0
- package/node_modules/typebox/build/type/action/readonly_object.mjs +8 -0
- package/node_modules/typebox/build/typebox.d.mts +1 -1
- package/node_modules/typebox/build/typebox.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +29 -32
- package/node_modules/{es-set-tostringtag → undici}/LICENSE +1 -1
- package/node_modules/undici/README.md +741 -0
- package/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +315 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1392 -0
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/undici/index.d.ts +3 -0
- package/node_modules/undici/index.js +234 -0
- package/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
- package/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/undici/lib/core/request.js +453 -0
- package/node_modules/undici/lib/core/socks5-client.js +422 -0
- package/node_modules/undici/lib/core/socks5-utils.js +212 -0
- package/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +219 -0
- package/node_modules/undici/lib/dispatcher/client-h1.js +1722 -0
- package/node_modules/undici/lib/dispatcher/client-h2.js +995 -0
- package/node_modules/undici/lib/dispatcher/client.js +664 -0
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
- package/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +260 -0
- package/node_modules/undici/lib/encoding/index.js +33 -0
- package/node_modules/undici/lib/global.js +59 -0
- package/node_modules/undici/lib/handler/cache-handler.js +578 -0
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
- package/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/undici/lib/handler/retry-handler.js +394 -0
- package/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/undici/lib/interceptor/cache.js +495 -0
- package/node_modules/undici/lib/interceptor/decompress.js +259 -0
- package/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
- package/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/undici/lib/interceptor/dump.js +112 -0
- package/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
- package/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
- package/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/undici/lib/mock/mock-call-history.js +248 -0
- package/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
- package/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
- package/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
- package/node_modules/undici/lib/util/cache.js +414 -0
- package/node_modules/undici/lib/util/date.js +653 -0
- package/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/undici/lib/util/runtime-features.js +124 -0
- package/node_modules/undici/lib/util/stats.js +32 -0
- package/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/undici/lib/web/cookies/util.js +282 -0
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
- package/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/{has-tostringtag → undici/lib/web/fetch}/LICENSE +1 -1
- package/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/undici/lib/web/infra/index.js +229 -0
- package/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
- package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
- package/node_modules/undici/lib/web/webidl/index.js +1006 -0
- package/node_modules/undici/lib/web/websocket/connection.js +329 -0
- package/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
- package/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +498 -0
- package/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/undici/package.json +152 -0
- package/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/undici/types/README.md +6 -0
- package/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/undici/types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/undici/types/client-stats.d.ts +15 -0
- package/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/undici/types/h2c-client.d.ts +73 -0
- package/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/undici/types/interceptors.d.ts +80 -0
- package/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/undici/types/mock-call-history.d.ts +111 -0
- package/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/undici/types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici/types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/undici/types/utility.d.ts +7 -0
- package/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/undici/types/websocket.d.ts +188 -0
- package/node_modules/ws/lib/receiver.js +15 -32
- package/node_modules/ws/lib/websocket-server.js +4 -4
- package/node_modules/ws/lib/websocket.js +4 -4
- package/node_modules/ws/package.json +5 -1
- package/openclaw.plugin.json +1064 -1243
- package/package.json +99 -18
- package/dist/action-runtime.runtime-DEWOcFM4.js +0 -2
- package/dist/config-api-Df9a1B8C.js +0 -3
- package/dist/doctor-contract-DKpe5VBr.js +0 -202
- package/dist/interactive-replies-Dm_t2R9S.js +0 -197
- package/dist/interactive-replies-api.js +0 -2
- package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts +0 -159
- package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts.map +0 -1
- package/node_modules/@slack/bolt/dist/WorkflowStep.js +0 -217
- package/node_modules/@slack/bolt/dist/WorkflowStep.js.map +0 -1
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts +0 -49
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts.map +0 -1
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js +0 -3
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js.map +0 -1
- package/node_modules/@types/ws/LICENSE +0 -21
- package/node_modules/@types/ws/README.md +0 -15
- package/node_modules/@types/ws/index.d.mts +0 -451
- package/node_modules/@types/ws/index.d.ts +0 -445
- package/node_modules/@types/ws/package.json +0 -72
- package/node_modules/asynckit/LICENSE +0 -21
- package/node_modules/asynckit/README.md +0 -233
- package/node_modules/asynckit/bench.js +0 -76
- package/node_modules/asynckit/index.js +0 -6
- package/node_modules/asynckit/lib/abort.js +0 -29
- package/node_modules/asynckit/lib/async.js +0 -34
- package/node_modules/asynckit/lib/defer.js +0 -26
- package/node_modules/asynckit/lib/iterate.js +0 -75
- package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
- package/node_modules/asynckit/lib/readable_parallel.js +0 -25
- package/node_modules/asynckit/lib/readable_serial.js +0 -25
- package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
- package/node_modules/asynckit/lib/state.js +0 -37
- package/node_modules/asynckit/lib/streamify.js +0 -141
- package/node_modules/asynckit/lib/terminator.js +0 -29
- package/node_modules/asynckit/package.json +0 -63
- package/node_modules/asynckit/parallel.js +0 -43
- package/node_modules/asynckit/serial.js +0 -17
- package/node_modules/asynckit/serialOrdered.js +0 -75
- package/node_modules/asynckit/stream.js +0 -21
- package/node_modules/axios/CHANGELOG.md +0 -1676
- package/node_modules/axios/LICENSE +0 -7
- package/node_modules/axios/MIGRATION_GUIDE.md +0 -877
- package/node_modules/axios/README.md +0 -2391
- package/node_modules/axios/dist/axios.js +0 -4864
- package/node_modules/axios/dist/axios.js.map +0 -1
- package/node_modules/axios/dist/axios.min.js +0 -5
- package/node_modules/axios/dist/axios.min.js.map +0 -1
- package/node_modules/axios/dist/browser/axios.cjs +0 -4701
- package/node_modules/axios/dist/browser/axios.cjs.map +0 -1
- package/node_modules/axios/dist/esm/axios.js +0 -4722
- package/node_modules/axios/dist/esm/axios.js.map +0 -1
- package/node_modules/axios/dist/esm/axios.min.js +0 -3
- package/node_modules/axios/dist/esm/axios.min.js.map +0 -1
- package/node_modules/axios/dist/node/axios.cjs +0 -5348
- package/node_modules/axios/dist/node/axios.cjs.map +0 -1
- package/node_modules/axios/index.d.cts +0 -715
- package/node_modules/axios/index.d.ts +0 -734
- package/node_modules/axios/index.js +0 -45
- package/node_modules/axios/lib/adapters/README.md +0 -36
- package/node_modules/axios/lib/adapters/adapters.js +0 -132
- package/node_modules/axios/lib/adapters/fetch.js +0 -469
- package/node_modules/axios/lib/adapters/http.js +0 -1202
- package/node_modules/axios/lib/adapters/xhr.js +0 -226
- package/node_modules/axios/lib/axios.js +0 -89
- package/node_modules/axios/lib/cancel/CancelToken.js +0 -135
- package/node_modules/axios/lib/cancel/CanceledError.js +0 -22
- package/node_modules/axios/lib/cancel/isCancel.js +0 -5
- package/node_modules/axios/lib/core/Axios.js +0 -281
- package/node_modules/axios/lib/core/AxiosError.js +0 -176
- package/node_modules/axios/lib/core/AxiosHeaders.js +0 -380
- package/node_modules/axios/lib/core/InterceptorManager.js +0 -72
- package/node_modules/axios/lib/core/README.md +0 -8
- package/node_modules/axios/lib/core/buildFullPath.js +0 -22
- package/node_modules/axios/lib/core/dispatchRequest.js +0 -89
- package/node_modules/axios/lib/core/mergeConfig.js +0 -124
- package/node_modules/axios/lib/core/settle.js +0 -27
- package/node_modules/axios/lib/core/transformData.js +0 -28
- package/node_modules/axios/lib/defaults/index.js +0 -177
- package/node_modules/axios/lib/defaults/transitional.js +0 -8
- package/node_modules/axios/lib/env/README.md +0 -3
- package/node_modules/axios/lib/env/classes/FormData.js +0 -2
- package/node_modules/axios/lib/env/data.js +0 -1
- package/node_modules/axios/lib/helpers/AxiosTransformStream.js +0 -156
- package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +0 -61
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +0 -77
- package/node_modules/axios/lib/helpers/README.md +0 -7
- package/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +0 -29
- package/node_modules/axios/lib/helpers/bind.js +0 -14
- package/node_modules/axios/lib/helpers/buildURL.js +0 -66
- package/node_modules/axios/lib/helpers/callbackify.js +0 -18
- package/node_modules/axios/lib/helpers/combineURLs.js +0 -15
- package/node_modules/axios/lib/helpers/composeSignals.js +0 -56
- package/node_modules/axios/lib/helpers/cookies.js +0 -60
- package/node_modules/axios/lib/helpers/deprecatedMethod.js +0 -31
- package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +0 -100
- package/node_modules/axios/lib/helpers/formDataToJSON.js +0 -97
- package/node_modules/axios/lib/helpers/formDataToStream.js +0 -119
- package/node_modules/axios/lib/helpers/fromDataURI.js +0 -53
- package/node_modules/axios/lib/helpers/isAbsoluteURL.js +0 -19
- package/node_modules/axios/lib/helpers/isAxiosError.js +0 -14
- package/node_modules/axios/lib/helpers/isURLSameOrigin.js +0 -16
- package/node_modules/axios/lib/helpers/null.js +0 -2
- package/node_modules/axios/lib/helpers/parseHeaders.js +0 -69
- package/node_modules/axios/lib/helpers/parseProtocol.js +0 -6
- package/node_modules/axios/lib/helpers/progressEventReducer.js +0 -51
- package/node_modules/axios/lib/helpers/readBlob.js +0 -15
- package/node_modules/axios/lib/helpers/resolveConfig.js +0 -106
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +0 -178
- package/node_modules/axios/lib/helpers/speedometer.js +0 -55
- package/node_modules/axios/lib/helpers/spread.js +0 -28
- package/node_modules/axios/lib/helpers/throttle.js +0 -44
- package/node_modules/axios/lib/helpers/toFormData.js +0 -249
- package/node_modules/axios/lib/helpers/toURLEncodedForm.js +0 -19
- package/node_modules/axios/lib/helpers/trackStream.js +0 -89
- package/node_modules/axios/lib/helpers/validator.js +0 -112
- package/node_modules/axios/lib/platform/browser/classes/Blob.js +0 -3
- package/node_modules/axios/lib/platform/browser/classes/FormData.js +0 -3
- package/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +0 -4
- package/node_modules/axios/lib/platform/browser/index.js +0 -13
- package/node_modules/axios/lib/platform/common/utils.js +0 -52
- package/node_modules/axios/lib/platform/index.js +0 -7
- package/node_modules/axios/lib/platform/node/classes/FormData.js +0 -3
- package/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +0 -4
- package/node_modules/axios/lib/platform/node/index.js +0 -37
- package/node_modules/axios/lib/utils.js +0 -931
- package/node_modules/axios/package.json +0 -183
- package/node_modules/combined-stream/License +0 -19
- package/node_modules/combined-stream/Readme.md +0 -138
- package/node_modules/combined-stream/lib/combined_stream.js +0 -208
- package/node_modules/combined-stream/package.json +0 -25
- package/node_modules/delayed-stream/.npmignore +0 -1
- package/node_modules/delayed-stream/License +0 -19
- package/node_modules/delayed-stream/Makefile +0 -7
- package/node_modules/delayed-stream/Readme.md +0 -141
- package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
- package/node_modules/delayed-stream/package.json +0 -27
- package/node_modules/es-set-tostringtag/.eslintrc +0 -13
- package/node_modules/es-set-tostringtag/.nycrc +0 -9
- package/node_modules/es-set-tostringtag/CHANGELOG.md +0 -67
- package/node_modules/es-set-tostringtag/README.md +0 -53
- package/node_modules/es-set-tostringtag/index.d.ts +0 -10
- package/node_modules/es-set-tostringtag/index.js +0 -35
- package/node_modules/es-set-tostringtag/package.json +0 -78
- package/node_modules/es-set-tostringtag/test/index.js +0 -85
- package/node_modules/es-set-tostringtag/tsconfig.json +0 -9
- package/node_modules/follow-redirects/LICENSE +0 -18
- package/node_modules/follow-redirects/README.md +0 -157
- package/node_modules/follow-redirects/debug.js +0 -15
- package/node_modules/follow-redirects/http.js +0 -1
- package/node_modules/follow-redirects/https.js +0 -1
- package/node_modules/follow-redirects/index.js +0 -709
- package/node_modules/follow-redirects/package.json +0 -58
- package/node_modules/form-data/CHANGELOG.md +0 -669
- package/node_modules/form-data/License +0 -19
- package/node_modules/form-data/README.md +0 -350
- package/node_modules/form-data/index.d.ts +0 -51
- package/node_modules/form-data/lib/browser.js +0 -4
- package/node_modules/form-data/lib/form_data.js +0 -514
- package/node_modules/form-data/lib/populate.js +0 -10
- package/node_modules/form-data/node_modules/mime-db/HISTORY.md +0 -507
- package/node_modules/form-data/node_modules/mime-db/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-db/README.md +0 -100
- package/node_modules/form-data/node_modules/mime-db/db.json +0 -8519
- package/node_modules/form-data/node_modules/mime-db/index.js +0 -12
- package/node_modules/form-data/node_modules/mime-db/package.json +0 -60
- package/node_modules/form-data/node_modules/mime-types/HISTORY.md +0 -397
- package/node_modules/form-data/node_modules/mime-types/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-types/README.md +0 -113
- package/node_modules/form-data/node_modules/mime-types/index.js +0 -188
- package/node_modules/form-data/node_modules/mime-types/package.json +0 -44
- package/node_modules/form-data/package.json +0 -83
- package/node_modules/has-tostringtag/.eslintrc +0 -5
- package/node_modules/has-tostringtag/.github/FUNDING.yml +0 -12
- package/node_modules/has-tostringtag/.nycrc +0 -13
- package/node_modules/has-tostringtag/CHANGELOG.md +0 -42
- package/node_modules/has-tostringtag/README.md +0 -46
- package/node_modules/has-tostringtag/index.d.ts +0 -3
- package/node_modules/has-tostringtag/index.js +0 -8
- package/node_modules/has-tostringtag/package.json +0 -108
- package/node_modules/has-tostringtag/shams.d.ts +0 -3
- package/node_modules/has-tostringtag/shams.js +0 -8
- package/node_modules/has-tostringtag/test/index.js +0 -21
- package/node_modules/has-tostringtag/test/shams/core-js.js +0 -31
- package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +0 -30
- package/node_modules/has-tostringtag/test/tests.js +0 -15
- package/node_modules/has-tostringtag/tsconfig.json +0 -49
- package/node_modules/is-electron/LICENSE +0 -21
- package/node_modules/is-electron/README.md +0 -25
- package/node_modules/is-electron/index.d.ts +0 -2
- package/node_modules/is-electron/index.js +0 -21
- package/node_modules/is-electron/package.json +0 -34
- package/node_modules/is-stream/index.d.ts +0 -79
- package/node_modules/is-stream/index.js +0 -28
- package/node_modules/is-stream/license +0 -9
- package/node_modules/is-stream/package.json +0 -42
- package/node_modules/is-stream/readme.md +0 -60
- package/node_modules/proxy-from-env/LICENSE +0 -20
- package/node_modules/proxy-from-env/README.md +0 -163
- package/node_modules/proxy-from-env/index.cjs +0 -105
- package/node_modules/proxy-from-env/index.js +0 -103
- package/node_modules/proxy-from-env/package.json +0 -43
- package/npm-shrinkwrap.json +0 -1440
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-BSr252c_.js";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-jn1xLaVi.js";
|
|
2
3
|
import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
|
|
3
4
|
import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
5
|
+
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
|
+
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
7
|
+
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
8
|
+
import { createChannelDmPolicy } from "openclaw/plugin-sdk/channel-dm-policy";
|
|
9
|
+
import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
|
|
10
|
+
import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createPatchedAccountSetupAdapter, createSetupTranslator, createStandardChannelSetupStatus, defineTokenCredential, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
|
|
6
11
|
import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
|
|
7
12
|
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
8
13
|
//#region extensions/slack/src/setup-shared.ts
|
|
@@ -24,8 +29,8 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
24
29
|
messages_tab_enabled: true,
|
|
25
30
|
messages_tab_read_only_enabled: false
|
|
26
31
|
},
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
agent_view: {
|
|
33
|
+
agent_description: `${safeName} connects Slack Agent View conversations to OpenClaw agents.`,
|
|
29
34
|
suggested_prompts: [
|
|
30
35
|
{
|
|
31
36
|
title: "What can you do?",
|
|
@@ -77,8 +82,7 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
77
82
|
event_subscriptions: { bot_events: [
|
|
78
83
|
"app_home_opened",
|
|
79
84
|
"app_mention",
|
|
80
|
-
"
|
|
81
|
-
"assistant_thread_started",
|
|
85
|
+
"app_context_changed",
|
|
82
86
|
"channel_rename",
|
|
83
87
|
"member_joined_channel",
|
|
84
88
|
"member_left_channel",
|
|
@@ -100,8 +104,8 @@ function buildSlackSetupLines() {
|
|
|
100
104
|
"1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)",
|
|
101
105
|
"2) Add Socket Mode + enable it to get the app-level token (xapp-...)",
|
|
102
106
|
"3) Install App to workspace to get the xoxb- bot token",
|
|
103
|
-
"4) Enable Event Subscriptions (socket) for message, App Home, and
|
|
104
|
-
"5) App Home -> enable the Home tab, Messages tab for DMs, and
|
|
107
|
+
"4) Enable Event Subscriptions (socket) for message, App Home, and Agent View events",
|
|
108
|
+
"5) App Home -> enable the Home tab, Messages tab for DMs, and Agent View",
|
|
105
109
|
"Manifest JSON follows as plain text for copy/paste.",
|
|
106
110
|
"Tip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
|
|
107
111
|
`Docs: ${formatDocsLink("/slack", "slack")}`
|
|
@@ -157,14 +161,14 @@ function setSlackSetupIdentity(params) {
|
|
|
157
161
|
cfg: params.cfg,
|
|
158
162
|
channel: SLACK_CHANNEL,
|
|
159
163
|
accountId: params.accountId,
|
|
160
|
-
patch: params.identity === "user" ? {
|
|
164
|
+
patch: params.identity === "user" ? { postAs: "user" } : {}
|
|
161
165
|
});
|
|
162
166
|
if (params.identity === "user") return next;
|
|
163
167
|
const slack = next.channels?.slack;
|
|
164
168
|
if (!slack) return next;
|
|
165
169
|
if (params.accountId === DEFAULT_ACCOUNT_ID) {
|
|
166
170
|
const nextSlack = { ...slack };
|
|
167
|
-
delete nextSlack.
|
|
171
|
+
delete nextSlack.postAs;
|
|
168
172
|
return {
|
|
169
173
|
...next,
|
|
170
174
|
channels: {
|
|
@@ -176,8 +180,8 @@ function setSlackSetupIdentity(params) {
|
|
|
176
180
|
const account = slack.accounts?.[params.accountId];
|
|
177
181
|
if (!account) return next;
|
|
178
182
|
const nextAccount = { ...account };
|
|
179
|
-
if (slack.
|
|
180
|
-
else delete nextAccount.
|
|
183
|
+
if (slack.postAs === "user") nextAccount.postAs = "bot";
|
|
184
|
+
else delete nextAccount.postAs;
|
|
181
185
|
return {
|
|
182
186
|
...next,
|
|
183
187
|
channels: {
|
|
@@ -192,30 +196,6 @@ function setSlackSetupIdentity(params) {
|
|
|
192
196
|
}
|
|
193
197
|
};
|
|
194
198
|
}
|
|
195
|
-
function hasSlackInteractiveRepliesConfig(cfg, accountId) {
|
|
196
|
-
const capabilities = inspectSlackAccount({
|
|
197
|
-
cfg,
|
|
198
|
-
accountId
|
|
199
|
-
}).config.capabilities;
|
|
200
|
-
if (Array.isArray(capabilities)) return capabilities.some((entry) => normalizeLowercaseStringOrEmpty(entry) === "interactivereplies");
|
|
201
|
-
if (!capabilities || typeof capabilities !== "object") return false;
|
|
202
|
-
return "interactiveReplies" in capabilities;
|
|
203
|
-
}
|
|
204
|
-
function setSlackInteractiveReplies(cfg, accountId, interactiveReplies) {
|
|
205
|
-
const capabilities = inspectSlackAccount({
|
|
206
|
-
cfg,
|
|
207
|
-
accountId
|
|
208
|
-
}).config.capabilities;
|
|
209
|
-
return patchChannelConfigForAccount({
|
|
210
|
-
cfg,
|
|
211
|
-
channel: SLACK_CHANNEL,
|
|
212
|
-
accountId,
|
|
213
|
-
patch: { capabilities: Array.isArray(capabilities) ? interactiveReplies ? uniqueStrings([...capabilities, "interactiveReplies"]) : capabilities.filter((entry) => normalizeLowercaseStringOrEmpty(entry) !== "interactivereplies") : {
|
|
214
|
-
...capabilities && typeof capabilities === "object" ? capabilities : {},
|
|
215
|
-
interactiveReplies
|
|
216
|
-
} }
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
199
|
function createSlackTokenCredential(params) {
|
|
220
200
|
return defineTokenCredential({
|
|
221
201
|
inputKey: params.inputKey,
|
|
@@ -263,53 +243,131 @@ function hasSlackSetupCredentials(params) {
|
|
|
263
243
|
const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
|
|
264
244
|
channelKey: SLACK_CHANNEL,
|
|
265
245
|
validateInput: ({ cfg, accountId, input }) => {
|
|
266
|
-
|
|
246
|
+
const setupInput = input;
|
|
247
|
+
if (setupInput.useEnv && accountId !== DEFAULT_ACCOUNT_ID) return "Slack env tokens can only be used for the default account.";
|
|
267
248
|
const account = inspectSlackAccount({
|
|
268
249
|
cfg,
|
|
269
250
|
accountId
|
|
270
251
|
});
|
|
271
|
-
const identity =
|
|
272
|
-
const mode =
|
|
252
|
+
const identity = setupInput.identity ?? account.config.postAs ?? "bot";
|
|
253
|
+
const mode = setupInput.mode ?? account.config.mode ?? "socket";
|
|
273
254
|
if (identity === "user" && mode === "relay") return "Slack user identity setup supports mode \"socket\" or \"http\", not \"relay\".";
|
|
274
|
-
if (
|
|
255
|
+
if (setupInput.useEnv) return identity === "user" ? "Slack user identity setup does not support --use-env; configure userToken and the transport credential explicitly." : null;
|
|
275
256
|
if (hasSlackSetupCredentials({
|
|
276
|
-
input,
|
|
257
|
+
input: setupInput,
|
|
277
258
|
identity,
|
|
278
259
|
mode
|
|
279
260
|
})) return null;
|
|
280
261
|
if (identity === "user") return mode === "http" ? "Slack user identity requires --user-token and --signing-secret." : "Slack user identity requires --user-token and --app-token.";
|
|
281
262
|
return "Slack requires --bot-token and --app-token (or --use-env).";
|
|
282
263
|
},
|
|
283
|
-
buildPatch: (input) =>
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
264
|
+
buildPatch: (input) => {
|
|
265
|
+
const setupInput = input;
|
|
266
|
+
return {
|
|
267
|
+
...setupInput.identity ? { postAs: setupInput.identity } : {},
|
|
268
|
+
...setupInput.identity === "user" && setupInput.mode ? { mode: setupInput.mode } : {},
|
|
269
|
+
...setupInput.botToken ? { botToken: setupInput.botToken } : {},
|
|
270
|
+
...setupInput.appToken ? { appToken: setupInput.appToken } : {},
|
|
271
|
+
...setupInput.userToken ? { userToken: setupInput.userToken } : {},
|
|
272
|
+
...setupInput.signingSecret ? { signingSecret: setupInput.signingSecret } : {}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
291
275
|
});
|
|
292
276
|
const slackSetupAdapter = {
|
|
293
277
|
...slackSetupAdapterBase,
|
|
278
|
+
singleAccountKeysToMove: ["appToken"],
|
|
294
279
|
applyAccountConfig: ({ cfg, accountId, input }) => {
|
|
295
|
-
const
|
|
280
|
+
const setupInput = input;
|
|
281
|
+
const identity = setupInput.identity ?? inspectSlackAccount({
|
|
296
282
|
cfg,
|
|
297
283
|
accountId
|
|
298
|
-
}).config.
|
|
284
|
+
}).config.postAs;
|
|
299
285
|
return slackSetupAdapterBase.applyAccountConfig({
|
|
300
286
|
cfg,
|
|
301
287
|
accountId,
|
|
302
288
|
input: identity === "user" ? {
|
|
303
|
-
...
|
|
289
|
+
...setupInput,
|
|
304
290
|
identity
|
|
305
|
-
} :
|
|
291
|
+
} : setupInput
|
|
306
292
|
});
|
|
307
293
|
}
|
|
308
294
|
};
|
|
295
|
+
const slackSetupContract = defineChannelSetupContract({
|
|
296
|
+
fields: {
|
|
297
|
+
botToken: {
|
|
298
|
+
kind: "string",
|
|
299
|
+
sensitive: true,
|
|
300
|
+
cli: {
|
|
301
|
+
flags: "--bot-token <token>",
|
|
302
|
+
description: "Slack bot token"
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
appToken: {
|
|
306
|
+
kind: "string",
|
|
307
|
+
sensitive: true,
|
|
308
|
+
cli: {
|
|
309
|
+
flags: "--app-token <token>",
|
|
310
|
+
description: "Slack app token"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
userToken: {
|
|
314
|
+
kind: "string",
|
|
315
|
+
sensitive: true,
|
|
316
|
+
cli: {
|
|
317
|
+
flags: "--user-token <token>",
|
|
318
|
+
description: "Slack user token"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
signingSecret: {
|
|
322
|
+
kind: "string",
|
|
323
|
+
sensitive: true,
|
|
324
|
+
cli: {
|
|
325
|
+
flags: "--signing-secret <secret>",
|
|
326
|
+
description: "Slack signing secret"
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
identity: {
|
|
330
|
+
kind: "choice",
|
|
331
|
+
choices: ["bot", "user"],
|
|
332
|
+
cli: {
|
|
333
|
+
flags: "--identity <kind>",
|
|
334
|
+
description: "Slack identity"
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
mode: {
|
|
338
|
+
kind: "choice",
|
|
339
|
+
choices: ["socket", "http"],
|
|
340
|
+
cli: {
|
|
341
|
+
flags: "--mode <mode>",
|
|
342
|
+
description: "Slack connection mode"
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
useEnv: {
|
|
346
|
+
kind: "boolean",
|
|
347
|
+
cli: {
|
|
348
|
+
flags: "--use-env",
|
|
349
|
+
description: "Use Slack environment credentials"
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
legacyAdapter: slackSetupAdapter
|
|
354
|
+
});
|
|
309
355
|
function createSlackSetupWizardBase(handlers) {
|
|
310
|
-
const slackDmPolicy =
|
|
356
|
+
const slackDmPolicy = createChannelDmPolicy({
|
|
311
357
|
label: "Slack",
|
|
312
358
|
channel: SLACK_CHANNEL,
|
|
359
|
+
resolveAccount: (cfg, accountId) => inspectSlackAccount({
|
|
360
|
+
cfg,
|
|
361
|
+
accountId
|
|
362
|
+
}),
|
|
363
|
+
buildPatch: ({ account, policy, allowFrom }) => ({
|
|
364
|
+
dmPolicy: policy,
|
|
365
|
+
...allowFrom === void 0 ? {} : { allowFrom },
|
|
366
|
+
dm: {
|
|
367
|
+
...account.config.dm,
|
|
368
|
+
enabled: typeof account.config.dm?.enabled === "boolean" ? account.config.dm.enabled : true
|
|
369
|
+
}
|
|
370
|
+
}),
|
|
313
371
|
promptAllowFrom: handlers.promptAllowFrom
|
|
314
372
|
});
|
|
315
373
|
return {
|
|
@@ -332,7 +390,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
332
390
|
cfg,
|
|
333
391
|
accountId
|
|
334
392
|
});
|
|
335
|
-
if (currentAccount.configured && currentAccount.config.
|
|
393
|
+
if (currentAccount.configured && currentAccount.config.postAs !== "user") return { cfg };
|
|
336
394
|
const identity = await prompter.select({
|
|
337
395
|
message: "How should OpenClaw appear in Slack?",
|
|
338
396
|
options: [{
|
|
@@ -344,14 +402,14 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
344
402
|
label: "Slack user",
|
|
345
403
|
hint: "Post as the authorizing human"
|
|
346
404
|
}],
|
|
347
|
-
initialValue: currentAccount.config.
|
|
405
|
+
initialValue: currentAccount.config.postAs ?? "bot"
|
|
348
406
|
});
|
|
349
407
|
const next = setSlackSetupIdentity({
|
|
350
408
|
cfg,
|
|
351
409
|
accountId,
|
|
352
410
|
identity
|
|
353
411
|
});
|
|
354
|
-
if (currentAccount.configured && identity === currentAccount.config.
|
|
412
|
+
if (currentAccount.configured && identity === currentAccount.config.postAs) return { cfg: next };
|
|
355
413
|
if (identity === "user") {
|
|
356
414
|
if (currentAccount.config.mode === "relay") throw new Error("Slack user identity setup supports mode \"socket\" or \"http\", not \"relay\".");
|
|
357
415
|
await prompter.note([
|
|
@@ -375,7 +433,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
375
433
|
isAvailable: ({ cfg, accountId }) => accountId === DEFAULT_ACCOUNT_ID && (inspectSlackAccount({
|
|
376
434
|
cfg,
|
|
377
435
|
accountId
|
|
378
|
-
}).config.
|
|
436
|
+
}).config.postAs ?? "bot") === "bot" && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !inspectSlackAccount({
|
|
379
437
|
cfg,
|
|
380
438
|
accountId
|
|
381
439
|
}).configured,
|
|
@@ -392,7 +450,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
392
450
|
shouldPrompt: ({ cfg, accountId }) => (inspectSlackAccount({
|
|
393
451
|
cfg,
|
|
394
452
|
accountId
|
|
395
|
-
}).config.
|
|
453
|
+
}).config.postAs ?? "bot") === "bot"
|
|
396
454
|
}),
|
|
397
455
|
createSlackTokenCredential({
|
|
398
456
|
inputKey: "userToken",
|
|
@@ -404,7 +462,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
404
462
|
shouldPrompt: ({ cfg, accountId }) => inspectSlackAccount({
|
|
405
463
|
cfg,
|
|
406
464
|
accountId
|
|
407
|
-
}).config.
|
|
465
|
+
}).config.postAs === "user"
|
|
408
466
|
}),
|
|
409
467
|
createSlackTokenCredential({
|
|
410
468
|
inputKey: "appToken",
|
|
@@ -418,7 +476,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
418
476
|
cfg,
|
|
419
477
|
accountId
|
|
420
478
|
});
|
|
421
|
-
return (account.config.
|
|
479
|
+
return (account.config.postAs ?? "bot") === "bot" || (account.config.mode ?? "socket") === "socket";
|
|
422
480
|
}
|
|
423
481
|
}),
|
|
424
482
|
createSlackTokenCredential({
|
|
@@ -432,7 +490,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
432
490
|
cfg,
|
|
433
491
|
accountId
|
|
434
492
|
});
|
|
435
|
-
return account.config.
|
|
493
|
+
return account.config.postAs === "user" && account.config.mode === "http";
|
|
436
494
|
}
|
|
437
495
|
})
|
|
438
496
|
],
|
|
@@ -480,14 +538,6 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
480
538
|
fallbackResolved: (entries) => entries,
|
|
481
539
|
applyAllowlist: ({ cfg, accountId, resolved }) => setSlackChannelAllowlist(cfg, accountId, resolved)
|
|
482
540
|
}),
|
|
483
|
-
finalize: async ({ cfg, accountId, options, prompter }) => {
|
|
484
|
-
if (hasSlackInteractiveRepliesConfig(cfg, accountId)) return;
|
|
485
|
-
if (options?.quickstartDefaults) return { cfg: setSlackInteractiveReplies(cfg, accountId, true) };
|
|
486
|
-
return { cfg: setSlackInteractiveReplies(cfg, accountId, await prompter.confirm({
|
|
487
|
-
message: t("wizard.slack.interactiveRepliesPrompt"),
|
|
488
|
-
initialValue: true
|
|
489
|
-
})) };
|
|
490
|
-
},
|
|
491
541
|
disable: (cfg) => setSetupChannelEnabled(cfg, SLACK_CHANNEL, false)
|
|
492
542
|
};
|
|
493
543
|
}
|
|
@@ -499,4 +549,23 @@ function createSlackSetupWizardProxy(loadWizard) {
|
|
|
499
549
|
});
|
|
500
550
|
}
|
|
501
551
|
//#endregion
|
|
502
|
-
|
|
552
|
+
//#region extensions/slack/src/config-adapter.ts
|
|
553
|
+
const slackBaseConfigAdapter = createScopedChannelConfigAdapter({
|
|
554
|
+
sectionKey: SLACK_CHANNEL,
|
|
555
|
+
listAccountIds: listSlackAccountIds,
|
|
556
|
+
resolveAccount: adaptScopedAccountAccessor(resolveSlackAccount),
|
|
557
|
+
resolveAccessorAccount: resolveSlackConfigAccessorAccount,
|
|
558
|
+
defaultAccountId: resolveDefaultSlackAccountId,
|
|
559
|
+
clearBaseFields: [
|
|
560
|
+
"botToken",
|
|
561
|
+
"appToken",
|
|
562
|
+
"userToken",
|
|
563
|
+
"signingSecret",
|
|
564
|
+
"name"
|
|
565
|
+
],
|
|
566
|
+
resolveAllowFrom: (account) => account.allowFrom,
|
|
567
|
+
formatAllowFrom: (allowFrom) => formatAllowFromLowercase({ allowFrom }),
|
|
568
|
+
resolveDefaultTo: (account) => account.defaultTo
|
|
569
|
+
});
|
|
570
|
+
//#endregion
|
|
571
|
+
export { slackSetupContract as a, isSlackSetupAccountConfigured as c, slackSetupAdapter as i, createSlackSetupWizardBase as n, SLACK_CHANNEL as o, createSlackSetupWizardProxy as r, describeSlackSetupAccount as s, slackBaseConfigAdapter as t };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { buildSecretInputSchema, hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
|
|
2
2
|
import { createChannelConfigUiHints } from "openclaw/plugin-sdk/channel-core";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import { ChannelBotLoopProtectionSchema, ChannelDangerouslyAllowNameMatchingSchema, ChannelImplicitMentionsSchema, ChannelPreviewStreamingConfigSchema, ChannelStreamingProgressSchema, GroupPolicySchema, ProviderCommandsSchema, ReplyToModeSchema, buildChannelAllowBotsSchema, buildChannelConfigSchema, buildChannelExecApprovalsSchema, buildChannelReactionShape, buildCommonChannelAccountShape, buildGroupEntrySchema, requireAllowlistAllowFrom, requireOpenAllowFrom } from "openclaw/plugin-sdk/channel-config-schema";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region extensions/slack/src/config-ui-hints.ts
|
|
6
|
+
const slackChannelConfigUiHints = {
|
|
6
7
|
"": {
|
|
7
8
|
label: "Slack",
|
|
8
9
|
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."
|
|
@@ -11,16 +12,13 @@ const SlackChannelConfigSchema = buildChannelConfigSchema(SlackConfigSchema, { u
|
|
|
11
12
|
label: "Slack Enterprise Grid Org Install",
|
|
12
13
|
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=[\"*\"]."
|
|
13
14
|
},
|
|
14
|
-
|
|
15
|
+
postAs: {
|
|
15
16
|
label: "Slack Identity",
|
|
16
17
|
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."
|
|
17
18
|
},
|
|
18
19
|
...createChannelConfigUiHints({
|
|
19
20
|
channelLabel: "Slack",
|
|
20
|
-
dmPolicy: {
|
|
21
|
-
channelKey: "slack",
|
|
22
|
-
includeLegacyNestedPolicy: true
|
|
23
|
-
},
|
|
21
|
+
dmPolicy: { channelKey: "slack" },
|
|
24
22
|
configWrites: true,
|
|
25
23
|
mentionPatterns: {
|
|
26
24
|
targetDescription: "Slack channel IDs",
|
|
@@ -54,22 +52,6 @@ const SlackChannelConfigSchema = buildChannelConfigSchema(SlackConfigSchema, { u
|
|
|
54
52
|
label: "Slack Bot Loop Cooldown Seconds",
|
|
55
53
|
help: "How long to suppress the bot pair after it exceeds the budget. Default: 60."
|
|
56
54
|
},
|
|
57
|
-
socketMode: {
|
|
58
|
-
label: "Slack Socket Mode Transport",
|
|
59
|
-
help: "Slack Socket Mode transport tuning passed to the Slack SDK. Use only when investigating ping/pong timeout or stale websocket behavior."
|
|
60
|
-
},
|
|
61
|
-
"socketMode.clientPingTimeout": {
|
|
62
|
-
label: "Slack Socket Mode Pong Timeout",
|
|
63
|
-
help: "Milliseconds the Slack SDK waits for a pong after its client ping before treating the websocket as stale (OpenClaw default: 15000). Increase on hosts with event-loop starvation or slow network scheduling."
|
|
64
|
-
},
|
|
65
|
-
"socketMode.serverPingTimeout": {
|
|
66
|
-
label: "Slack Socket Mode Server Ping Timeout",
|
|
67
|
-
help: "Milliseconds the Slack SDK waits for Slack server pings before treating the websocket as stale."
|
|
68
|
-
},
|
|
69
|
-
"socketMode.pingPongLoggingEnabled": {
|
|
70
|
-
label: "Slack Socket Mode Ping/Pong Logging",
|
|
71
|
-
help: "Enable Slack SDK ping/pong transport logs while debugging Socket Mode websocket health."
|
|
72
|
-
},
|
|
73
55
|
relay: {
|
|
74
56
|
label: "Slack Relay Mode",
|
|
75
57
|
help: "Relay-delivered Slack events. Use with mode=\"relay\" when openclaw-slack-router owns the Slack Socket Mode connection."
|
|
@@ -102,10 +84,6 @@ const SlackChannelConfigSchema = buildChannelConfigSchema(SlackConfigSchema, { u
|
|
|
102
84
|
label: "Slack User Token Read Only",
|
|
103
85
|
help: "When true, treat configured Slack user token usage as read-only helper behavior where possible. Keep enabled if you only need supplemental reads without user-context writes."
|
|
104
86
|
},
|
|
105
|
-
"capabilities.interactiveReplies": {
|
|
106
|
-
label: "Slack Interactive Replies",
|
|
107
|
-
help: "Enable agent-authored Slack interactive reply directives (`[[slack_buttons: ...]]`, `[[slack_select: ...]]`). Default: false."
|
|
108
|
-
},
|
|
109
87
|
execApprovals: {
|
|
110
88
|
label: "Slack Exec Approvals",
|
|
111
89
|
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."
|
|
@@ -218,6 +196,227 @@ const SlackChannelConfigSchema = buildChannelConfigSchema(SlackConfigSchema, { u
|
|
|
218
196
|
label: "Slack Thread Initial History Limit",
|
|
219
197
|
help: "Maximum number of existing Slack thread messages to fetch when starting a new thread session (default: 20, set to 0 to disable)."
|
|
220
198
|
}
|
|
221
|
-
}
|
|
199
|
+
};
|
|
200
|
+
//#endregion
|
|
201
|
+
//#region extensions/slack/src/config-schema.ts
|
|
202
|
+
const SecretInputSchema = buildSecretInputSchema();
|
|
203
|
+
const SlackStreamingProgressSchema = ChannelStreamingProgressSchema.extend({ nativeTaskCards: z.boolean().optional() }).strict();
|
|
204
|
+
const SlackStreamingConfigSchema = ChannelPreviewStreamingConfigSchema.extend({
|
|
205
|
+
nativeTransport: z.boolean().optional(),
|
|
206
|
+
progress: SlackStreamingProgressSchema.optional()
|
|
207
|
+
}).strict();
|
|
208
|
+
const SlackDmSchema = z.object({
|
|
209
|
+
enabled: z.boolean().optional(),
|
|
210
|
+
groupEnabled: z.boolean().optional(),
|
|
211
|
+
groupChannels: z.array(z.union([z.string(), z.number()])).optional()
|
|
212
|
+
}).strict();
|
|
213
|
+
const SlackPresenceEventsSchema = z.object({ mode: z.enum([
|
|
214
|
+
"off",
|
|
215
|
+
"auto",
|
|
216
|
+
"on"
|
|
217
|
+
]).optional() }).strict();
|
|
218
|
+
const SlackChannelSchema = buildGroupEntrySchema({
|
|
219
|
+
ignoreOtherMentions: z.boolean().optional(),
|
|
220
|
+
replyToMode: ReplyToModeSchema.optional(),
|
|
221
|
+
allowBots: buildChannelAllowBotsSchema({ allowMentions: true }),
|
|
222
|
+
botLoopProtection: ChannelBotLoopProtectionSchema.optional(),
|
|
223
|
+
users: z.array(z.union([z.string(), z.number()])).optional(),
|
|
224
|
+
presenceEvents: SlackPresenceEventsSchema.optional()
|
|
225
|
+
}, { omit: ["allowFrom"] });
|
|
226
|
+
const SlackThreadSchema = z.object({
|
|
227
|
+
historyScope: z.enum(["thread", "channel"]).optional(),
|
|
228
|
+
inheritParent: z.boolean().optional(),
|
|
229
|
+
initialHistoryLimit: z.number().int().min(0).optional()
|
|
230
|
+
}).strict();
|
|
231
|
+
const ReplyToModeByChatTypeSchema = z.object({
|
|
232
|
+
direct: ReplyToModeSchema.optional(),
|
|
233
|
+
group: ReplyToModeSchema.optional(),
|
|
234
|
+
channel: ReplyToModeSchema.optional()
|
|
235
|
+
}).strict();
|
|
236
|
+
const SlackRelaySchema = z.object({
|
|
237
|
+
url: z.string().optional(),
|
|
238
|
+
authToken: SecretInputSchema.optional(),
|
|
239
|
+
gatewayId: z.string().optional()
|
|
240
|
+
}).strict();
|
|
241
|
+
const SlackIdentitySchema = z.enum(["bot", "user"]);
|
|
242
|
+
const SlackAccountSchema = z.object({
|
|
243
|
+
...buildCommonChannelAccountShape({
|
|
244
|
+
omit: ["groupAllowFrom"],
|
|
245
|
+
streaming: SlackStreamingConfigSchema.optional()
|
|
246
|
+
}),
|
|
247
|
+
postAs: SlackIdentitySchema.default("bot"),
|
|
248
|
+
mode: z.enum([
|
|
249
|
+
"socket",
|
|
250
|
+
"http",
|
|
251
|
+
"relay"
|
|
252
|
+
]).optional(),
|
|
253
|
+
enterpriseOrgInstall: z.boolean().optional(),
|
|
254
|
+
relay: SlackRelaySchema.optional(),
|
|
255
|
+
signingSecret: SecretInputSchema.optional(),
|
|
256
|
+
webhookPath: z.string().optional(),
|
|
257
|
+
execApprovals: buildChannelExecApprovalsSchema(z.union([z.string(), z.number()])),
|
|
258
|
+
commands: ProviderCommandsSchema,
|
|
259
|
+
botToken: SecretInputSchema.optional(),
|
|
260
|
+
appToken: SecretInputSchema.optional(),
|
|
261
|
+
userToken: SecretInputSchema.optional(),
|
|
262
|
+
userTokenReadOnly: z.boolean().optional().default(true),
|
|
263
|
+
allowBots: buildChannelAllowBotsSchema({ allowMentions: true }),
|
|
264
|
+
botLoopProtection: ChannelBotLoopProtectionSchema.optional(),
|
|
265
|
+
dangerouslyAllowNameMatching: ChannelDangerouslyAllowNameMatchingSchema,
|
|
266
|
+
requireMention: z.boolean().optional(),
|
|
267
|
+
implicitMentions: ChannelImplicitMentionsSchema.optional(),
|
|
268
|
+
unfurlLinks: z.boolean().optional(),
|
|
269
|
+
unfurlMedia: z.boolean().optional(),
|
|
270
|
+
...buildChannelReactionShape({
|
|
271
|
+
notificationModes: [
|
|
272
|
+
"off",
|
|
273
|
+
"own",
|
|
274
|
+
"all",
|
|
275
|
+
"allowlist"
|
|
276
|
+
],
|
|
277
|
+
reactionAllowlist: true,
|
|
278
|
+
ackReaction: z.string().optional()
|
|
279
|
+
}),
|
|
280
|
+
replyToModeByChatType: ReplyToModeByChatTypeSchema.optional(),
|
|
281
|
+
thread: SlackThreadSchema.optional(),
|
|
282
|
+
presenceEvents: SlackPresenceEventsSchema.optional(),
|
|
283
|
+
actions: z.object({
|
|
284
|
+
reactions: z.boolean().optional(),
|
|
285
|
+
messages: z.boolean().optional(),
|
|
286
|
+
pins: z.boolean().optional(),
|
|
287
|
+
search: z.boolean().optional(),
|
|
288
|
+
permissions: z.boolean().optional(),
|
|
289
|
+
memberInfo: z.boolean().optional(),
|
|
290
|
+
channelInfo: z.boolean().optional(),
|
|
291
|
+
emojiList: z.boolean().optional()
|
|
292
|
+
}).strict().optional(),
|
|
293
|
+
slashCommand: z.object({
|
|
294
|
+
enabled: z.boolean().optional(),
|
|
295
|
+
name: z.string().optional(),
|
|
296
|
+
sessionPrefix: z.string().optional(),
|
|
297
|
+
ephemeral: z.boolean().optional()
|
|
298
|
+
}).strict().optional(),
|
|
299
|
+
dm: SlackDmSchema.optional(),
|
|
300
|
+
channels: z.record(z.string(), SlackChannelSchema.optional()).optional(),
|
|
301
|
+
typingReaction: z.string().optional()
|
|
302
|
+
}).strict();
|
|
303
|
+
const SlackAccountEntrySchema = SlackAccountSchema.extend({ postAs: SlackIdentitySchema.optional() });
|
|
304
|
+
function validateSlackSigningSecretRequirements(value, ctx) {
|
|
305
|
+
const resolveMode = (mode) => mode === "http" || mode === "socket" || mode === "relay" ? mode : void 0;
|
|
306
|
+
const baseMode = resolveMode(value.mode) ?? "socket";
|
|
307
|
+
if (baseMode === "http" && !hasConfiguredSecretInput(value.signingSecret)) ctx.addIssue({
|
|
308
|
+
code: z.ZodIssueCode.custom,
|
|
309
|
+
message: "channels.slack.mode=\"http\" requires channels.slack.signingSecret",
|
|
310
|
+
path: ["signingSecret"]
|
|
311
|
+
});
|
|
312
|
+
for (const [accountId, account] of Object.entries(value.accounts ?? {})) {
|
|
313
|
+
if (!account || account.enabled === false) continue;
|
|
314
|
+
if ((resolveMode(account.mode) ?? baseMode) !== "http") continue;
|
|
315
|
+
if (!hasConfiguredSecretInput(account.signingSecret ?? value.signingSecret)) ctx.addIssue({
|
|
316
|
+
code: z.ZodIssueCode.custom,
|
|
317
|
+
message: "channels.slack.accounts.*.mode=\"http\" requires channels.slack.signingSecret or channels.slack.accounts.*.signingSecret",
|
|
318
|
+
path: [
|
|
319
|
+
"accounts",
|
|
320
|
+
accountId,
|
|
321
|
+
"signingSecret"
|
|
322
|
+
]
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
const SlackChannelConfigSchema = buildChannelConfigSchema(SlackAccountSchema.safeExtend({
|
|
327
|
+
mode: z.enum([
|
|
328
|
+
"socket",
|
|
329
|
+
"http",
|
|
330
|
+
"relay"
|
|
331
|
+
]).optional().default("socket"),
|
|
332
|
+
signingSecret: SecretInputSchema.optional(),
|
|
333
|
+
webhookPath: z.string().optional().default("/slack/events"),
|
|
334
|
+
groupPolicy: GroupPolicySchema.optional().default("allowlist"),
|
|
335
|
+
accounts: z.record(z.string(), SlackAccountEntrySchema.optional()).optional(),
|
|
336
|
+
defaultAccount: z.string().optional()
|
|
337
|
+
}).superRefine((value, ctx) => {
|
|
338
|
+
const dmPolicy = value.dmPolicy ?? "pairing";
|
|
339
|
+
const allowFrom = value.allowFrom;
|
|
340
|
+
requireOpenAllowFrom({
|
|
341
|
+
policy: dmPolicy,
|
|
342
|
+
allowFrom,
|
|
343
|
+
ctx,
|
|
344
|
+
path: ["allowFrom"],
|
|
345
|
+
message: "channels.slack.dmPolicy=\"open\" requires channels.slack.allowFrom to include \"*\""
|
|
346
|
+
});
|
|
347
|
+
requireAllowlistAllowFrom({
|
|
348
|
+
policy: dmPolicy,
|
|
349
|
+
allowFrom,
|
|
350
|
+
ctx,
|
|
351
|
+
path: ["allowFrom"],
|
|
352
|
+
message: "channels.slack.dmPolicy=\"allowlist\" requires channels.slack.allowFrom to contain at least one sender ID"
|
|
353
|
+
});
|
|
354
|
+
const requireRelayConfig = (relay, path) => {
|
|
355
|
+
if (typeof relay?.url !== "string" || !relay.url.trim()) ctx.addIssue({
|
|
356
|
+
code: z.ZodIssueCode.custom,
|
|
357
|
+
message: "channels.slack.mode=\"relay\" requires relay.url",
|
|
358
|
+
path: [...path, "url"]
|
|
359
|
+
});
|
|
360
|
+
if (!hasConfiguredSecretInput(relay?.authToken)) ctx.addIssue({
|
|
361
|
+
code: z.ZodIssueCode.custom,
|
|
362
|
+
message: "channels.slack.mode=\"relay\" requires relay.authToken",
|
|
363
|
+
path: [...path, "authToken"]
|
|
364
|
+
});
|
|
365
|
+
if (typeof relay?.gatewayId !== "string" || !relay.gatewayId.trim()) ctx.addIssue({
|
|
366
|
+
code: z.ZodIssueCode.custom,
|
|
367
|
+
message: "channels.slack.mode=\"relay\" requires relay.gatewayId",
|
|
368
|
+
path: [...path, "gatewayId"]
|
|
369
|
+
});
|
|
370
|
+
};
|
|
371
|
+
const baseMode = value.mode ?? "socket";
|
|
372
|
+
const accountIds = value.accounts ? Object.keys(value.accounts) : [];
|
|
373
|
+
if (!value.accounts) {
|
|
374
|
+
if (baseMode === "relay") requireRelayConfig(value.relay, ["relay"]);
|
|
375
|
+
validateSlackSigningSecretRequirements(value, ctx);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
for (const accountId of accountIds) {
|
|
379
|
+
const account = value.accounts[accountId];
|
|
380
|
+
if (!account || account.enabled === false) continue;
|
|
381
|
+
const accountMode = account.mode ?? baseMode;
|
|
382
|
+
const effectiveRelay = {
|
|
383
|
+
...value.relay,
|
|
384
|
+
...account.relay
|
|
385
|
+
};
|
|
386
|
+
const effectivePolicy = account.dmPolicy ?? value.dmPolicy ?? "pairing";
|
|
387
|
+
const effectiveAllowFrom = account.allowFrom ?? value.allowFrom;
|
|
388
|
+
requireOpenAllowFrom({
|
|
389
|
+
policy: effectivePolicy,
|
|
390
|
+
allowFrom: effectiveAllowFrom,
|
|
391
|
+
ctx,
|
|
392
|
+
path: [
|
|
393
|
+
"accounts",
|
|
394
|
+
accountId,
|
|
395
|
+
"allowFrom"
|
|
396
|
+
],
|
|
397
|
+
message: "channels.slack.accounts.*.dmPolicy=\"open\" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to include \"*\""
|
|
398
|
+
});
|
|
399
|
+
requireAllowlistAllowFrom({
|
|
400
|
+
policy: effectivePolicy,
|
|
401
|
+
allowFrom: effectiveAllowFrom,
|
|
402
|
+
ctx,
|
|
403
|
+
path: [
|
|
404
|
+
"accounts",
|
|
405
|
+
accountId,
|
|
406
|
+
"allowFrom"
|
|
407
|
+
],
|
|
408
|
+
message: "channels.slack.accounts.*.dmPolicy=\"allowlist\" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to contain at least one sender ID"
|
|
409
|
+
});
|
|
410
|
+
if (accountMode !== "http") {
|
|
411
|
+
if (accountMode === "relay") requireRelayConfig(effectiveRelay, [
|
|
412
|
+
"accounts",
|
|
413
|
+
accountId,
|
|
414
|
+
"relay"
|
|
415
|
+
]);
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
validateSlackSigningSecretRequirements(value, ctx);
|
|
420
|
+
}), { uiHints: slackChannelConfigUiHints });
|
|
222
421
|
//#endregion
|
|
223
422
|
export { SlackChannelConfigSchema as t };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-
|
|
2
|
-
import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-
|
|
1
|
+
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
+
import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-BSr252c_.js";
|
|
3
3
|
import { i as parseSlackTarget } from "./target-parsing-N6lHogYZ.js";
|
|
4
4
|
import "./targets-KmjP2E8s.js";
|
|
5
5
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-
|
|
1
|
+
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-CeixfVuC.js";
|
|
2
2
|
export { listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig };
|