@openclaw/slack 2026.9.6 → 2026.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-DP1Bcwj4.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-BBHvg0pY.mjs → accounts-D_N9IqNA.mjs} +23 -1
- package/dist/.setup/{action-runtime-B01d85zt.mjs → action-runtime-DfWvuiZd.mjs} +26 -41
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-DKCtBgCI.mjs → actions-Df0CzcDl.mjs} +88 -175
- package/dist/.setup/{approval-handler.runtime-DMszKn_7.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Tb_qRokK.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-CErYZ5zw.mjs → channel-C7bgPSTE.mjs} +181 -273
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-Dxk8VJUb.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BVoUtdPn.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-CyL279e7.mjs → config-schema-BZCxmHKG.mjs} +24 -21
- package/dist/.setup/{directory-config-CQTSH45W.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-BCcj89QV.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-C0PTFaNV.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-C-jPaGt2.mjs → monitor-BPVfkumU.mjs} +2181 -2693
- package/dist/.setup/{outbound-adapter-A7Wdn8ZT.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BlPOexmJ.mjs → pipeline.runtime-B1H63Frf.mjs} +311 -457
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-BApW53pI.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-DiYIMPJo.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-DfOnjJTE.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-BBAJxUOQ.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-Bm8kf6mK.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-BXbMBbJD.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-65WqvIqD.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-h3YB-mMs.mjs → scopes-CasuDvaa.mjs} +6 -17
- package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
- package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
- package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
- package/dist/.setup/{send-Cp6omkOg.mjs → send-BOVLQi3n.mjs} +84 -171
- package/dist/.setup/{session-status-Cf7AvWOt.mjs → session-status-DscajIsd.mjs} +315 -238
- package/dist/.setup/{setup-plugin-api-dLPkL06L.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-D3DLcCxu.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-CJ3arAFL.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-HFy_XvyO.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
- package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
- package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
- package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
- package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +18 -17
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +11 -12
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/node_modules/undici/README.md +81 -25
- package/node_modules/undici/docs/docs/api/Agent.md +249 -42
- package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
- package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
- package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
- package/node_modules/undici/docs/docs/api/Client.md +407 -162
- package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
- package/node_modules/undici/docs/docs/api/Connector.md +118 -35
- package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
- package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
- package/node_modules/undici/docs/docs/api/Debug.md +34 -18
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
- package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
- package/node_modules/undici/docs/docs/api/Errors.md +503 -28
- package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
- package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
- package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
- package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
- package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
- package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
- package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
- package/node_modules/undici/docs/docs/api/Pool.md +236 -41
- package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
- package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
- package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
- package/node_modules/undici/docs/docs/api/Util.md +68 -11
- package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
- package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
- package/node_modules/undici/docs/docs/getting-started.md +281 -0
- package/node_modules/undici/docs/docs/index.md +784 -0
- package/node_modules/undici/docs/docs/site.json +125 -0
- package/node_modules/undici/docs/docs/type-map.json +79 -0
- package/node_modules/undici/index.js +4 -2
- package/node_modules/undici/lib/api/api-connect.js +13 -11
- package/node_modules/undici/lib/api/api-pipeline.js +26 -13
- package/node_modules/undici/lib/api/api-request.js +51 -21
- package/node_modules/undici/lib/api/api-stream.js +81 -20
- package/node_modules/undici/lib/api/api-upgrade.js +21 -11
- package/node_modules/undici/lib/api/readable.js +45 -9
- package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
- package/node_modules/undici/lib/core/connect.js +46 -7
- package/node_modules/undici/lib/core/constants.js +1 -24
- package/node_modules/undici/lib/core/errors.js +22 -2
- package/node_modules/undici/lib/core/request.js +100 -18
- package/node_modules/undici/lib/core/symbols.js +4 -0
- package/node_modules/undici/lib/core/util.js +105 -48
- package/node_modules/undici/lib/dispatcher/agent.js +51 -32
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
- package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
- package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
- package/node_modules/undici/lib/dispatcher/client.js +109 -36
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
- package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
- package/node_modules/undici/lib/dispatcher/pool.js +30 -5
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
- package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
- package/node_modules/undici/lib/global.js +37 -14
- package/node_modules/undici/lib/handler/cache-handler.js +49 -7
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
- package/node_modules/undici/lib/handler/retry-handler.js +191 -50
- package/node_modules/undici/lib/interceptor/cache.js +75 -25
- package/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/undici/lib/interceptor/dns.js +12 -1
- package/node_modules/undici/lib/interceptor/redirect.js +3 -3
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +21 -9
- package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
- package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/node_modules/undici/lib/mock/mock-utils.js +281 -47
- package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
- package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
- package/node_modules/undici/lib/util/cache.js +92 -10
- package/node_modules/undici/lib/util/runtime-features.js +3 -34
- package/node_modules/undici/lib/web/cache/cache.js +6 -8
- package/node_modules/undici/lib/web/cookies/parse.js +150 -146
- package/node_modules/undici/lib/web/cookies/util.js +1 -1
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
- package/node_modules/undici/lib/web/eventsource/util.js +32 -1
- package/node_modules/undici/lib/web/fetch/body.js +48 -10
- package/node_modules/undici/lib/web/fetch/constants.js +1 -1
- package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
- package/node_modules/undici/lib/web/fetch/index.js +242 -223
- package/node_modules/undici/lib/web/fetch/request.js +35 -6
- package/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/node_modules/undici/lib/web/fetch/util.js +10 -2
- package/node_modules/undici/lib/web/webidl/index.js +5 -7
- package/node_modules/undici/lib/web/websocket/frame.js +1 -7
- package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
- package/node_modules/undici/package.json +10 -10
- package/node_modules/undici/types/agent.d.ts +0 -2
- package/node_modules/undici/types/client.d.ts +69 -24
- package/node_modules/undici/types/connector.d.ts +1 -0
- package/node_modules/undici/types/cookies.d.ts +1 -1
- package/node_modules/undici/types/dispatcher.d.ts +8 -30
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
- package/node_modules/undici/types/errors.d.ts +10 -0
- package/node_modules/undici/types/fetch.d.ts +5 -1
- package/node_modules/undici/types/formdata.d.ts +0 -6
- package/node_modules/undici/types/h2c-client.d.ts +6 -6
- package/node_modules/undici/types/handlers.d.ts +2 -0
- package/node_modules/undici/types/header.d.ts +5 -0
- package/node_modules/undici/types/index.d.ts +3 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici/types/pool.d.ts +0 -2
- package/node_modules/undici/types/proxy-agent.d.ts +9 -2
- package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
- package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
- package/node_modules/undici/types/webidl.d.ts +0 -1
- package/openclaw.plugin.json +31 -3
- package/package.json +7 -7
- package/dist/.setup/accounts.runtime-DN-PPocC.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-C8R8CUan.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-_Sht7Dqy.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-B4caZU6T.mjs +0 -2
- package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
- package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
- package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
- package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/util/promise.js +0 -28
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,136 +1,23 @@
|
|
|
1
|
-
import { B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as
|
|
1
|
+
import { $ as buildSlackDataVisualizationBlock, B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as encodeSlackQuestionAction, L as SLACK_QUESTION_BUTTON_ACTION_ID, N as SLACK_APPROVAL_BUTTON_ACTION_ID, P as SLACK_APPROVAL_SELECT_ACTION_ID, T as renderSlackBlockFallbackText, V as SLACK_REPLY_SELECT_ACTION_ID, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _t as parseSlackBlocksInput, at as countSlackDataTableCellCharacters, et as canRenderSlackDataVisualization, ft as encodeSlackApprovalAction, g as buildSlackNativeDataAccessibilityText, ht as SLACK_SECTION_TEXT_MAX, it as countSlackDataTableBlocksCellCharacters, j as truncateSlackText, m as appendSlackNativeDataFallbackText, ot as resolveSlackDataTableCellCharacterCount, rt as buildSlackDataTableBlock, st as renderSlackMessagePresentationChartFallbackText, tt as hasSlackDataVisualizationBlock, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, z as SLACK_REPLY_BUTTON_ACTION_ID } from "./session-status-DscajIsd.mjs";
|
|
2
2
|
import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
|
|
4
4
|
import { legacyInteractiveReplyToPresentation, normalizeMessagePresentation, renderMessagePresentationFallbackText, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
|
|
5
5
|
import { parseExecApprovalCommandText } from "openclaw/plugin-sdk/approval-reply-runtime";
|
|
6
6
|
import { resolveAskUserQuestionOptionIndex, resolveAskUserQuestionOptionIndices, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
7
|
-
import { buildApprovalResolutionRef } from "openclaw/plugin-sdk/approval-reference-runtime";
|
|
8
|
-
import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
9
|
-
const SLACK_BUTTON_VALUE_MAX = 2e3;
|
|
10
|
-
const SLACK_SECTION_TEXT_MAX = 3e3;
|
|
11
|
-
const SLACK_PRESENTATION_CAPABILITIES = {
|
|
12
|
-
supported: true,
|
|
13
|
-
buttons: true,
|
|
14
|
-
selects: true,
|
|
15
|
-
context: true,
|
|
16
|
-
divider: true,
|
|
17
|
-
charts: true,
|
|
18
|
-
tables: true,
|
|
19
|
-
limits: {
|
|
20
|
-
actions: {
|
|
21
|
-
maxActionsPerRow: 25,
|
|
22
|
-
maxValueBytes: SLACK_BUTTON_VALUE_MAX,
|
|
23
|
-
supportsStyles: true
|
|
24
|
-
},
|
|
25
|
-
selects: {
|
|
26
|
-
maxOptions: 100,
|
|
27
|
-
maxValueBytes: 150
|
|
28
|
-
},
|
|
29
|
-
text: {
|
|
30
|
-
encoding: "characters",
|
|
31
|
-
markdownDialect: "slack-mrkdwn",
|
|
32
|
-
supportsEdit: true
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
//#endregion
|
|
37
|
-
//#region extensions/slack/src/approval-actions.ts
|
|
38
|
-
const SLACK_APPROVAL_VALUE_PREFIX = "openclaw:approval:v1:";
|
|
39
|
-
const SLACK_APPROVAL_HEADER_BLOCK_ID = "openclaw_approval_header";
|
|
40
|
-
function isApprovalDecision(value) {
|
|
41
|
-
return value === "allow-once" || value === "allow-always" || value === "deny";
|
|
42
|
-
}
|
|
43
|
-
/** Encode portable approval facts without exposing a slash command to Slack callbacks. */
|
|
44
|
-
function encodeSlackApprovalAction(action) {
|
|
45
|
-
const encode = (approvalId) => `${SLACK_APPROVAL_VALUE_PREFIX}${JSON.stringify({
|
|
46
|
-
approvalId,
|
|
47
|
-
approvalKind: action.approvalKind,
|
|
48
|
-
decision: action.decision
|
|
49
|
-
})}`;
|
|
50
|
-
const exact = encode(action.approvalId);
|
|
51
|
-
return exact.length <= 2e3 ? exact : encode(buildApprovalResolutionRef({
|
|
52
|
-
approvalId: action.approvalId,
|
|
53
|
-
approvalKind: action.approvalKind
|
|
54
|
-
}));
|
|
55
|
-
}
|
|
56
|
-
/** Decode only the exact Slack-owned approval envelope. Malformed callbacks fail closed. */
|
|
57
|
-
function decodeSlackApprovalAction(value) {
|
|
58
|
-
if (typeof value !== "string" || !value.startsWith(SLACK_APPROVAL_VALUE_PREFIX)) return null;
|
|
59
|
-
try {
|
|
60
|
-
const decoded = JSON.parse(value.slice(21));
|
|
61
|
-
if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) return null;
|
|
62
|
-
const record = decoded;
|
|
63
|
-
if (Object.keys(record).length !== 3 || typeof record.approvalId !== "string" || record.approvalId.length === 0 || record.approvalKind !== "exec" && record.approvalKind !== "plugin" && record.approvalKind !== "system-agent" || !isApprovalDecision(record.decision)) return null;
|
|
64
|
-
return {
|
|
65
|
-
type: "approval",
|
|
66
|
-
approvalId: record.approvalId,
|
|
67
|
-
approvalKind: record.approvalKind,
|
|
68
|
-
decision: record.decision
|
|
69
|
-
};
|
|
70
|
-
} catch {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
//#endregion
|
|
75
|
-
//#region extensions/slack/src/question-actions.ts
|
|
76
|
-
const SLACK_QUESTION_VALUE_PREFIX = "slq1:";
|
|
77
|
-
const QUESTION_RECORD_ID_PATTERN = /^ask_[a-f0-9]{32}$/u;
|
|
78
|
-
function encodeSlackQuestionAction(action) {
|
|
79
|
-
if (!QUESTION_RECORD_ID_PATTERN.test(action.questionId) || !Number.isInteger(action.optionIndex) || action.optionIndex < 0 || action.optionIndex > 3) return;
|
|
80
|
-
const value = `${SLACK_QUESTION_VALUE_PREFIX}${action.questionId}:${action.optionIndex}`;
|
|
81
|
-
return value.length <= 2e3 ? value : void 0;
|
|
82
|
-
}
|
|
83
|
-
function decodeSlackQuestionAction(value) {
|
|
84
|
-
if (typeof value !== "string" || value.length > 2e3) return null;
|
|
85
|
-
const match = /^slq1:(ask_[a-f0-9]{32}):([0-3])$/u.exec(value);
|
|
86
|
-
return match?.[1] && match[2] ? {
|
|
87
|
-
questionId: match[1],
|
|
88
|
-
optionIndex: Number(match[2])
|
|
89
|
-
} : null;
|
|
90
|
-
}
|
|
91
|
-
async function resolveSlackQuestionAction(params) {
|
|
92
|
-
let result;
|
|
93
|
-
try {
|
|
94
|
-
result = await (params.resolveQuestion ?? questionGatewayRuntime.resolveOption)({
|
|
95
|
-
cfg: params.cfg,
|
|
96
|
-
questionId: params.action.questionId,
|
|
97
|
-
optionIndex: params.action.optionIndex,
|
|
98
|
-
senderId: params.userId,
|
|
99
|
-
clientDisplayName: `Slack question (${params.accountId})`
|
|
100
|
-
});
|
|
101
|
-
} catch {
|
|
102
|
-
await params.respond("Could not submit this answer.").catch(() => {});
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
await params.respond(result.status === "answered" ? "Answer submitted." : "This question was already answered.").catch(() => {});
|
|
106
|
-
}
|
|
107
|
-
//#endregion
|
|
108
7
|
//#region extensions/slack/src/blocks-render.ts
|
|
109
8
|
const SLACK_BUTTON_URL_MAX = 3e3;
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
function buildSlackApprovalSelectActionId(selectIndex) {
|
|
123
|
-
return `${SLACK_APPROVAL_SELECT_ACTION_ID}:${String(selectIndex)}`;
|
|
124
|
-
}
|
|
125
|
-
function buildSlackCallbackButtonActionId(buttonIndex, choiceIndex) {
|
|
126
|
-
return `${SLACK_CALLBACK_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
|
|
127
|
-
}
|
|
128
|
-
function buildSlackCallbackSelectActionId(selectIndex) {
|
|
129
|
-
return `${SLACK_CALLBACK_SELECT_ACTION_ID}:${String(selectIndex)}`;
|
|
130
|
-
}
|
|
131
|
-
function buildSlackQuestionButtonActionId(buttonIndex, choiceIndex) {
|
|
132
|
-
return `${SLACK_QUESTION_BUTTON_ACTION_ID}:${String(buttonIndex)}:${String(choiceIndex + 1)}`;
|
|
133
|
-
}
|
|
9
|
+
const SLACK_BUTTON_ACTION_IDS = {
|
|
10
|
+
approval: SLACK_APPROVAL_BUTTON_ACTION_ID,
|
|
11
|
+
callback: SLACK_CALLBACK_BUTTON_ACTION_ID,
|
|
12
|
+
link: SLACK_REPLY_LINK_ACTION_ID,
|
|
13
|
+
question: SLACK_QUESTION_BUTTON_ACTION_ID,
|
|
14
|
+
reply: SLACK_REPLY_BUTTON_ACTION_ID
|
|
15
|
+
};
|
|
16
|
+
const SLACK_SELECT_ACTION_IDS = {
|
|
17
|
+
approval: SLACK_APPROVAL_SELECT_ACTION_ID,
|
|
18
|
+
callback: SLACK_CALLBACK_SELECT_ACTION_ID,
|
|
19
|
+
reply: SLACK_REPLY_SELECT_ACTION_ID
|
|
20
|
+
};
|
|
134
21
|
function resolveSlackButtonStyle(style) {
|
|
135
22
|
if (style === "primary" || style === "danger") return style;
|
|
136
23
|
if (style === "success") return "primary";
|
|
@@ -183,7 +70,7 @@ function resolveSlackButtonTarget(button, questionOptionIndices) {
|
|
|
183
70
|
return action ? resolveSlackActionTarget(action, questionOptionIndices) : void 0;
|
|
184
71
|
}
|
|
185
72
|
const legacyUrl = normalizeOptionalString(button.url ?? button.webApp?.url ?? button.web_app?.url);
|
|
186
|
-
if (legacyUrl &&
|
|
73
|
+
if (legacyUrl && legacyUrl.length <= SLACK_BUTTON_URL_MAX) return {
|
|
187
74
|
kind: "link",
|
|
188
75
|
url: legacyUrl
|
|
189
76
|
};
|
|
@@ -213,12 +100,6 @@ function resolveSlackOptionTarget(option) {
|
|
|
213
100
|
value
|
|
214
101
|
} : void 0;
|
|
215
102
|
}
|
|
216
|
-
function isWithinSlackLimit(value, maxLength) {
|
|
217
|
-
return value.length <= maxLength;
|
|
218
|
-
}
|
|
219
|
-
function isRenderableSlackOption(option) {
|
|
220
|
-
return isWithinSlackLimit(option.value, 150);
|
|
221
|
-
}
|
|
222
103
|
function readSlackBlockId(block) {
|
|
223
104
|
const value = block.block_id;
|
|
224
105
|
return typeof value === "string" ? value : void 0;
|
|
@@ -304,7 +185,7 @@ function buildSlackPresentationBlocks(presentation, options = {}) {
|
|
|
304
185
|
continue;
|
|
305
186
|
}
|
|
306
187
|
if (block.type === "chart") {
|
|
307
|
-
const rendered = dataVisualizationCount < 2 ?
|
|
188
|
+
const rendered = dataVisualizationCount < 2 ? buildSlackDataVisualizationBlock(block) : void 0;
|
|
308
189
|
if (rendered) {
|
|
309
190
|
dataVisualizationCount += 1;
|
|
310
191
|
blocks.push(rendered);
|
|
@@ -340,17 +221,14 @@ function buildSlackPresentationBlocks(presentation, options = {}) {
|
|
|
340
221
|
}
|
|
341
222
|
return blocks;
|
|
342
223
|
}
|
|
343
|
-
function buildSlackPresentationChartBlock(block) {
|
|
344
|
-
return buildSlackDataVisualizationBlock(block);
|
|
345
|
-
}
|
|
346
224
|
function buildSlackPresentationButtonBlock(block, buttonIndex, questionOptionIndices) {
|
|
347
225
|
const elements = block.buttons.flatMap((button, choiceIndex) => {
|
|
348
226
|
const target = resolveSlackButtonTarget(button, questionOptionIndices);
|
|
349
|
-
if (!target || (target.kind === "link" ?
|
|
227
|
+
if (!target || (target.kind === "link" ? target.url.length > SLACK_BUTTON_URL_MAX : target.value.length > 2e3)) return [];
|
|
350
228
|
const style = resolveSlackButtonStyle(button.style);
|
|
351
229
|
return [{
|
|
352
230
|
type: "button",
|
|
353
|
-
action_id: target.kind
|
|
231
|
+
action_id: `${SLACK_BUTTON_ACTION_IDS[target.kind]}:${buttonIndex}:${choiceIndex + 1}`,
|
|
354
232
|
text: {
|
|
355
233
|
type: "plain_text",
|
|
356
234
|
text: truncateSlackText(button.label, 75),
|
|
@@ -379,7 +257,7 @@ function canRenderSlackPresentationTables(presentation, options = {}) {
|
|
|
379
257
|
}
|
|
380
258
|
/** True when native Slack rendering preserves every portable control. */
|
|
381
259
|
function canRenderSlackPresentation(presentation, options = {}) {
|
|
382
|
-
if (presentation.title &&
|
|
260
|
+
if (presentation.title && presentation.title.trim().length > 150) return false;
|
|
383
261
|
if (!canRenderSlackPresentationTables(presentation, options)) return false;
|
|
384
262
|
let dataVisualizationCount = options.dataVisualizationCountOffset ?? 0;
|
|
385
263
|
for (const block of presentation.blocks) {
|
|
@@ -389,20 +267,17 @@ function canRenderSlackPresentation(presentation, options = {}) {
|
|
|
389
267
|
if (!(block.buttons.every((button) => {
|
|
390
268
|
if (isSlackTextFallbackButton(button)) return true;
|
|
391
269
|
nativeButtonCount += 1;
|
|
392
|
-
if (
|
|
270
|
+
if (button.label.length > 75) return false;
|
|
393
271
|
const target = resolveSlackButtonTarget(button, options.questionOptionIndices);
|
|
394
|
-
return target ? target.kind === "link" ?
|
|
272
|
+
return target ? target.kind === "link" ? target.url.length <= SLACK_BUTTON_URL_MAX : target.value.length <= 2e3 : false;
|
|
395
273
|
}) && nativeButtonCount <= 25)) return false;
|
|
396
274
|
continue;
|
|
397
275
|
}
|
|
398
276
|
if (block.type === "select") {
|
|
399
|
-
if (!(
|
|
400
|
-
if (
|
|
277
|
+
if (!((normalizeOptionalString(block.placeholder) ?? "Choose an option").length <= 75 && block.options.length <= 100 && (!block.placeholder || block.placeholder.length <= 75) && block.options.every((option) => {
|
|
278
|
+
if (option.label.length > 75) return false;
|
|
401
279
|
const target = resolveSlackOptionTarget(option);
|
|
402
|
-
return target ?
|
|
403
|
-
label: option.label,
|
|
404
|
-
...target
|
|
405
|
-
}) : false;
|
|
280
|
+
return target ? target.value.length <= 150 : false;
|
|
406
281
|
}) && new Set(block.options.map((option) => resolveSlackOptionTarget(option)?.kind)).size === 1)) return false;
|
|
407
282
|
continue;
|
|
408
283
|
}
|
|
@@ -422,14 +297,14 @@ function buildSlackPresentationSelectBlock(block, selectIndex) {
|
|
|
422
297
|
label: option.label,
|
|
423
298
|
...target
|
|
424
299
|
}] : [];
|
|
425
|
-
}).filter(
|
|
300
|
+
}).filter((option) => option.value.length <= 150).slice(0, 100);
|
|
426
301
|
const optionKinds = new Set(options.map((option) => option.kind));
|
|
427
302
|
return options.length > 0 && optionKinds.size === 1 ? {
|
|
428
303
|
type: "actions",
|
|
429
304
|
block_id: `openclaw_reply_select_${selectIndex}`,
|
|
430
305
|
elements: [{
|
|
431
306
|
type: "static_select",
|
|
432
|
-
action_id: options[0]
|
|
307
|
+
action_id: `${SLACK_SELECT_ACTION_IDS[options[0].kind]}:${selectIndex}`,
|
|
433
308
|
placeholder: {
|
|
434
309
|
type: "plain_text",
|
|
435
310
|
text: truncateSlackText(normalizeOptionalString(block.placeholder) ?? "Choose an option", 75),
|
|
@@ -628,9 +503,7 @@ function projectSlackReplyRenderPlan(text, resolution, resolveAuthoredTextChunks
|
|
|
628
503
|
};
|
|
629
504
|
}
|
|
630
505
|
function readSlackChannelBlocks(payload) {
|
|
631
|
-
|
|
632
|
-
if (!slackData || typeof slackData !== "object" || Array.isArray(slackData)) return [];
|
|
633
|
-
return parseSlackBlocksInput(slackData.blocks) ?? [];
|
|
506
|
+
return parseSlackBlocksInput(asOptionalRecord(payload.channelData?.slack)?.blocks) ?? [];
|
|
634
507
|
}
|
|
635
508
|
function hasSlackReplyStructuredContent(payload) {
|
|
636
509
|
return Boolean(readSlackChannelBlocks(payload).length || normalizeMessagePresentation(payload.presentation) || payload.interactive?.blocks.length);
|
|
@@ -851,4 +724,4 @@ function resolveSlackReplyBlocks(payload) {
|
|
|
851
724
|
return segments.length === 1 && segments[0]?.kind === "blocks" ? segments[0].blocks : void 0;
|
|
852
725
|
}
|
|
853
726
|
//#endregion
|
|
854
|
-
export {
|
|
727
|
+
export { prepareSlackReply as a, resolveSlackReplyDeliveryMessages as c, buildSlackInteractiveBlocks as d, buildSlackPresentationBlocks as f, parseSlackReplyBlockSegments as i, resolveSlackReplyRenderPlan as l, iterateSlackReplyDeliveryMessages as n, resolveSlackReplyBlockResolution as o, canRenderSlackPresentation as p, normalizeSlackReplyPayload as r, resolveSlackReplyBlocks as s, hasSlackReplyStructuredContent as t, resolveSlackAuthoredTextPlacement as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-
|
|
3
|
-
import { c as
|
|
1
|
+
import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
|
|
2
|
+
import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-FFE26kOV.mjs";
|
|
3
|
+
import { c as collectSlackCursorPages, l as fetchSlackChannelListPage, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
6
6
|
//#region extensions/slack/src/resolve-channels.ts
|
|
@@ -31,14 +31,13 @@ async function listSlackChannels(client) {
|
|
|
31
31
|
archived: Boolean(channel.is_archived),
|
|
32
32
|
isPrivate: Boolean(channel.is_private)
|
|
33
33
|
};
|
|
34
|
-
}).filter(
|
|
34
|
+
}).filter((channel) => channel !== null)
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
function resolveByName(name, channels) {
|
|
38
38
|
const target = normalizeLowercaseStringOrEmpty(name);
|
|
39
39
|
if (!target) return;
|
|
40
40
|
const matches = channels.filter((channel) => normalizeLowercaseStringOrEmpty(channel.name) === target);
|
|
41
|
-
if (matches.length === 0) return;
|
|
42
41
|
return matches.find((channel) => !channel.archived) ?? matches[0];
|
|
43
42
|
}
|
|
44
43
|
async function resolveSlackChannelAllowlist(params) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-
|
|
3
|
-
import {
|
|
1
|
+
import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
|
|
2
|
+
import { s as resolveWorkspaceQualifiedSlackTarget } from "./target-parsing-FFE26kOV.mjs";
|
|
3
|
+
import { c as collectSlackCursorPages, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
6
6
|
//#region extensions/slack/src/resolve-users.ts
|
|
@@ -37,7 +37,18 @@ async function listSlackUsers(client) {
|
|
|
37
37
|
isBot: Boolean(member.is_bot),
|
|
38
38
|
isAppUser: Boolean(member.is_app_user)
|
|
39
39
|
};
|
|
40
|
-
}).filter(
|
|
40
|
+
}).filter((user) => user !== null)
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function matchesSlackUserName(user, name) {
|
|
44
|
+
const target = normalizeLowercaseStringOrEmpty(name);
|
|
45
|
+
return [
|
|
46
|
+
user.name,
|
|
47
|
+
user.displayName,
|
|
48
|
+
user.realName
|
|
49
|
+
].some((value) => {
|
|
50
|
+
const candidate = normalizeLowercaseStringOrEmpty(value);
|
|
51
|
+
return Boolean(candidate) && candidate === target;
|
|
41
52
|
});
|
|
42
53
|
}
|
|
43
54
|
function scoreSlackUser(user, match) {
|
|
@@ -45,21 +56,14 @@ function scoreSlackUser(user, match) {
|
|
|
45
56
|
if (!user.deleted) score += 3;
|
|
46
57
|
if (!user.isBot && !user.isAppUser) score += 2;
|
|
47
58
|
if (match.email && user.email === match.email) score += 5;
|
|
48
|
-
if (match.name)
|
|
49
|
-
const target = normalizeLowercaseStringOrEmpty(match.name);
|
|
50
|
-
if ([
|
|
51
|
-
user.name,
|
|
52
|
-
user.displayName,
|
|
53
|
-
user.realName
|
|
54
|
-
].map((value) => normalizeLowercaseStringOrEmpty(value)).filter(Boolean).some((value) => value === target)) score += 2;
|
|
55
|
-
}
|
|
59
|
+
if (match.name && matchesSlackUserName(user, match.name)) score += 2;
|
|
56
60
|
return score;
|
|
57
61
|
}
|
|
58
62
|
function resolveSlackUserFromMatches(input, matches, parsed) {
|
|
59
63
|
const best = matches.map((user) => ({
|
|
60
64
|
user,
|
|
61
65
|
score: scoreSlackUser(user, parsed)
|
|
62
|
-
})).toSorted((a, b) => b.score - a.score)[0]?.user
|
|
66
|
+
})).toSorted((a, b) => b.score - a.score)[0]?.user;
|
|
63
67
|
if (!best) return {
|
|
64
68
|
input,
|
|
65
69
|
resolved: false
|
|
@@ -99,15 +103,9 @@ async function resolveSlackUserAllowlist(params) {
|
|
|
99
103
|
const matches = lookup.filter((user) => user.email === parsed.email);
|
|
100
104
|
if (matches.length > 0) return resolveSlackUserFromMatches(input, matches, parsed);
|
|
101
105
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const matches = lookup.filter((user) =>
|
|
105
|
-
return [
|
|
106
|
-
user.name,
|
|
107
|
-
user.displayName,
|
|
108
|
-
user.realName
|
|
109
|
-
].map((value) => normalizeLowercaseStringOrEmpty(value)).filter(Boolean).includes(target);
|
|
110
|
-
});
|
|
106
|
+
const name = parsed.name;
|
|
107
|
+
if (name) {
|
|
108
|
+
const matches = lookup.filter((user) => matchesSlackUserName(user, name));
|
|
111
109
|
if (matches.length > 0) return resolveSlackUserFromMatches(input, matches, parsed);
|
|
112
110
|
}
|
|
113
111
|
},
|
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isRecord, normalizeOptionalString,
|
|
1
|
+
import { d as createSlackReadClient, o as formatSlackError } from "./probe-B2Y9qc_z.mjs";
|
|
2
|
+
import { isRecord, normalizeOptionalString, normalizeTrimmedStringList, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
//#region extensions/slack/src/scopes.ts
|
|
4
4
|
function collectScopes(value, into) {
|
|
5
|
-
if (
|
|
6
|
-
|
|
7
|
-
for (const entry of value) if (typeof entry === "string" && entry.trim()) into.push(entry.trim());
|
|
8
|
-
return;
|
|
9
|
-
}
|
|
10
|
-
if (typeof value === "string") {
|
|
11
|
-
const raw = value.trim();
|
|
12
|
-
if (!raw) return;
|
|
13
|
-
const parts = raw.split(/[,\s]+/).map((part) => part.trim());
|
|
14
|
-
for (const part of parts) if (part) into.push(part);
|
|
5
|
+
if (Array.isArray(value) || typeof value === "string") {
|
|
6
|
+
for (const scope of normalizeTrimmedStringList(typeof value === "string" ? value.split(/[,\s]+/) : value)) into.push(scope);
|
|
15
7
|
return;
|
|
16
8
|
}
|
|
17
9
|
if (!isRecord(value)) return;
|
|
18
10
|
for (const entry of Object.values(value)) if (Array.isArray(entry) || typeof entry === "string") collectScopes(entry, into);
|
|
19
11
|
}
|
|
20
|
-
function normalizeScopes(scopes) {
|
|
21
|
-
return sortUniqueStrings(normalizeStringEntries(scopes));
|
|
22
|
-
}
|
|
23
12
|
function extractScopes(payload) {
|
|
24
13
|
if (!isRecord(payload)) return [];
|
|
25
14
|
const scopes = [];
|
|
@@ -32,7 +21,7 @@ function extractScopes(payload) {
|
|
|
32
21
|
collectScopes(payload.info.user_scopes, scopes);
|
|
33
22
|
collectScopes(payload.info.bot_scopes, scopes);
|
|
34
23
|
}
|
|
35
|
-
return
|
|
24
|
+
return sortUniqueStrings(scopes);
|
|
36
25
|
}
|
|
37
26
|
async function callSlack(client, method) {
|
|
38
27
|
try {
|
|
@@ -61,7 +50,7 @@ async function fetchSlackScopes(token, timeoutMs) {
|
|
|
61
50
|
scopes,
|
|
62
51
|
source: method
|
|
63
52
|
};
|
|
64
|
-
const error =
|
|
53
|
+
const error = normalizeOptionalString(result?.error);
|
|
65
54
|
if (error) errors.push(`${method}: ${error}`);
|
|
66
55
|
}
|
|
67
56
|
return {
|
|
@@ -38,31 +38,26 @@ function collectRuntimeConfigAssignments(params) {
|
|
|
38
38
|
const relay = account.relay;
|
|
39
39
|
return relay !== null && typeof relay === "object" && !Array.isArray(relay) && hasOwnProperty(relay, "authToken");
|
|
40
40
|
};
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) === "socket",
|
|
51
|
-
topInactiveReason: "no enabled Slack socket-mode surface inherits this top-level appToken.",
|
|
52
|
-
accountInactiveReason: "Slack account is disabled or not running in socket mode."
|
|
53
|
-
});
|
|
54
|
-
collectConditionalChannelFieldAssignments({
|
|
41
|
+
for (const [field, mode, label] of [[
|
|
42
|
+
"appToken",
|
|
43
|
+
"socket",
|
|
44
|
+
"socket"
|
|
45
|
+
], [
|
|
46
|
+
"signingSecret",
|
|
47
|
+
"http",
|
|
48
|
+
"HTTP"
|
|
49
|
+
]]) collectConditionalChannelFieldAssignments({
|
|
55
50
|
channelKey: "slack",
|
|
56
|
-
field
|
|
51
|
+
field,
|
|
57
52
|
channel: slack,
|
|
58
53
|
surface,
|
|
59
54
|
defaults: params.defaults,
|
|
60
55
|
context: params.context,
|
|
61
|
-
topLevelActiveWithoutAccounts: baseMode ===
|
|
62
|
-
topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !hasOwnProperty(account,
|
|
63
|
-
accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) ===
|
|
64
|
-
topInactiveReason:
|
|
65
|
-
accountInactiveReason:
|
|
56
|
+
topLevelActiveWithoutAccounts: baseMode === mode,
|
|
57
|
+
topLevelInheritedAccountActive: ({ account, enabled }) => enabled && !hasOwnProperty(account, field) && resolveAccountMode(account) === mode,
|
|
58
|
+
accountActive: ({ account, enabled }) => enabled && resolveAccountMode(account) === mode,
|
|
59
|
+
topInactiveReason: `no enabled Slack ${label}-mode surface inherits this top-level ${field}.`,
|
|
60
|
+
accountInactiveReason: `Slack account is disabled or not running in ${label} mode.`
|
|
66
61
|
});
|
|
67
62
|
collectNestedChannelFieldAssignments({
|
|
68
63
|
channelKey: "slack",
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-
|
|
1
|
+
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-BaZcu6P_.mjs";
|
|
2
2
|
import "../secret-contract-api.js";
|
|
3
3
|
export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
|
|
2
2
|
import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
|
|
3
3
|
import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
|
|
4
4
|
import { resolveNativeCommandsEnabled, resolveNativeSkillsEnabled } from "openclaw/plugin-sdk/native-command-config-runtime";
|