@openclaw/slack 2026.8.1-beta.3 → 2026.8.1
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/dist/account-configured-sUohAxZr.js +33 -0
- package/dist/account-inspect-CN2hBsim.js +87 -0
- package/dist/account-inspect-api.js +1 -1
- package/dist/{accounts-BlzxuYle.js → accounts-Dm_H77gH.js} +7 -10
- package/dist/{accounts.runtime-CbabBL8x.js → accounts.runtime-DRuEK6mL.js} +1 -1
- package/dist/{action-runtime-D6jg2CQd.js → action-runtime-044ldvNL.js} +53 -48
- package/dist/action-runtime.runtime-BL3KzX13.js +2 -0
- package/dist/{actions-DFk0ANVB.js → actions-BI7JkfVm.js} +266 -96
- package/dist/api.js +12 -12
- package/dist/{approval-handler.runtime-BNvAoKdK.js → approval-handler.runtime-DYv0UIZS.js} +53 -176
- package/dist/{channel-CA5w7qDF.js → channel-1vIJOzPx.js} +77 -142
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-CZWv55Wu.js → channel-type-DlFSKeIZ.js} +3 -3
- package/dist/{channel.setup-CpyYsEXH.js → channel.setup-ofDi3_Pu.js} +34 -49
- package/dist/{config-schema-CN3XZRX5.js → config-schema-BVIMyiDN.js} +19 -12
- package/dist/configured-state.js +34 -0
- package/dist/{directory-config-BGYyuzWh.js → directory-config-DqfQ42OV.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-DjUJQLbq.js → directory-live-BPaNHjmP.js} +2 -2
- package/dist/{group-policy-DyfB_ZIE.js → group-policy-BdwszjYn.js} +581 -743
- package/dist/{message-tool-api-CqMr5Rmc.js → message-tool-api-CJ0kjcg5.js} +23 -5
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-Chrecrb9.js → monitor-Dq5Cmrvp.js} +3 -3
- package/dist/{outbound-adapter-DuRqAQXK.js → outbound-adapter-DYaI8ThX.js} +93 -68
- package/dist/{pipeline.runtime-Bbfd5VFW.js → pipeline.runtime-Bd22U0ga.js} +128 -160
- package/dist/{policy-BKXSxrIS.js → policy-CtQVbde1.js} +2 -1
- package/dist/{probe-BVA65leh.js → probe-0usmAb0i.js} +209 -22
- package/dist/{provider-CUUiwsg2.js → provider-CN_8hFv2.js} +243 -146
- package/dist/{relay-source-mhpMMRG-.js → relay-source-BNGpsdwV.js} +1 -1
- package/dist/{replies-SnWyXcsL.js → replies-BSiRQOJ1.js} +15 -5
- package/dist/{resolve-channels-BSpqC8jU.js → resolve-channels-Czheznc8.js} +1 -1
- package/dist/{resolve-users-Dvz9pDe0.js → resolve-users-BAOlNimr.js} +1 -1
- package/dist/runtime-api.js +11 -11
- package/dist/{scopes-BSk4GZvZ.js → scopes-COSlmhnH.js} +1 -1
- package/dist/{send-CtnOxKCc.js → send-DS9ICrBI.js} +39 -31
- package/dist/send-results-eeOu_HYm.js +23 -0
- package/dist/{send.runtime-kYctMHSd.js → send.runtime-D_Bb6IuH.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BPFfp6So.js → setup-surface-BGnd2pSe.js} +6 -6
- package/dist/{shared-DJBaslN7.js → shared-D5B-5hBg.js} +26 -6
- package/dist/{slash-dispatch.runtime-Cf2FTrnf.js → slash-dispatch.runtime-CilDmI0c.js} +3 -3
- 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 +0 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +6 -6
- package/node_modules/@slack/bolt/node_modules/@types/node/dns/promises.d.ts +5 -5
- package/node_modules/@slack/bolt/node_modules/@types/node/dns.d.ts +5 -5
- package/node_modules/@slack/bolt/node_modules/@types/node/fs.d.ts +7 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http.d.ts +30 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +4 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/os.d.ts +30 -30
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/perf_hooks.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +42 -43
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +1049 -84
- package/node_modules/@slack/bolt/node_modules/@types/node/sqlite.d.ts +14 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +61 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/v8.d.ts +20 -23
- package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/README.md +2 -0
- package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +20 -0
- package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js +20 -14
- package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -1
- package/node_modules/@slack/bolt/node_modules/body-parser/node_modules/content-type/package.json +1 -1
- package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/README.md +2 -0
- package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.d.ts +20 -0
- package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js +20 -14
- package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -1
- package/node_modules/@slack/bolt/node_modules/type-is/node_modules/content-type/package.json +1 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/child_process.d.ts +0 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +6 -6
- package/node_modules/@slack/socket-mode/node_modules/@types/node/dns/promises.d.ts +5 -5
- package/node_modules/@slack/socket-mode/node_modules/@types/node/dns.d.ts +5 -5
- package/node_modules/@slack/socket-mode/node_modules/@types/node/fs.d.ts +7 -0
- package/node_modules/@slack/socket-mode/node_modules/@types/node/http.d.ts +30 -0
- package/node_modules/@slack/socket-mode/node_modules/@types/node/http2.d.ts +4 -4
- package/node_modules/@slack/socket-mode/node_modules/@types/node/os.d.ts +30 -30
- package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/socket-mode/node_modules/@types/node/perf_hooks.d.ts +2 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/process.d.ts +42 -43
- package/node_modules/@slack/socket-mode/node_modules/@types/node/quic.d.ts +1049 -84
- package/node_modules/@slack/socket-mode/node_modules/@types/node/sqlite.d.ts +14 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/stream/iter.d.ts +3 -2
- package/node_modules/@slack/socket-mode/node_modules/@types/node/test.d.ts +61 -0
- package/node_modules/@slack/socket-mode/node_modules/@types/node/v8.d.ts +20 -23
- 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 +0 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +6 -6
- package/node_modules/@slack/web-api/node_modules/@types/node/dns/promises.d.ts +5 -5
- package/node_modules/@slack/web-api/node_modules/@types/node/dns.d.ts +5 -5
- package/node_modules/@slack/web-api/node_modules/@types/node/fs.d.ts +7 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http.d.ts +30 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +4 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/os.d.ts +30 -30
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/perf_hooks.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +42 -43
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +1049 -84
- package/node_modules/@slack/web-api/node_modules/@types/node/sqlite.d.ts +14 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +61 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/v8.d.ts +20 -23
- package/node_modules/typebox/build/format/date.d.mts +1 -1
- package/node_modules/typebox/build/format/date.mjs +1 -1
- package/node_modules/typebox/build/format/date_time.d.mts +2 -2
- package/node_modules/typebox/build/format/date_time.mjs +3 -3
- package/node_modules/typebox/build/format/email.d.mts +1 -1
- package/node_modules/typebox/build/format/email.mjs +2 -2
- package/node_modules/typebox/build/format/hostname.mjs +2 -10
- package/node_modules/typebox/build/format/idn_email.d.mts +1 -1
- package/node_modules/typebox/build/format/idn_email.mjs +3 -3
- package/node_modules/typebox/build/format/idn_hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idn_hostname.mjs +3 -11
- package/node_modules/typebox/build/format/idna/format/bidi.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/bidi.mjs +98 -0
- package/node_modules/typebox/build/format/idna/format/puny.d.mts +3 -0
- package/node_modules/typebox/build/format/idna/format/puny.mjs +144 -0
- package/node_modules/typebox/build/format/idna/hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/hostname.mjs +16 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +23 -0
- package/node_modules/typebox/build/format/idna/index.d.mts +2 -0
- package/node_modules/typebox/build/format/idna/index.mjs +2 -0
- package/node_modules/typebox/build/format/idna/label/ascii.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/ascii.mjs +9 -0
- package/node_modules/typebox/build/format/idna/label/puny.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/puny.mjs +28 -0
- package/node_modules/typebox/build/format/idna/label/unicode.d.mts +1 -0
- package/node_modules/typebox/build/format/idna/label/unicode.mjs +106 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.d.mts +30 -0
- package/node_modules/typebox/build/format/idna/pattern/pattern.mjs +70 -0
- package/node_modules/typebox/build/format/ipv4.d.mts +0 -1
- package/node_modules/typebox/build/format/ipv4.mjs +2 -32
- package/node_modules/typebox/build/format/ipv6.mjs +2 -61
- package/node_modules/typebox/build/format/iri.d.mts +2 -2
- package/node_modules/typebox/build/format/iri.mjs +26 -8
- package/node_modules/typebox/build/format/iri_reference.d.mts +2 -2
- package/node_modules/typebox/build/format/iri_reference.mjs +9 -55
- package/node_modules/typebox/build/format/regex.d.mts +1 -2
- package/node_modules/typebox/build/format/regex.mjs +2 -6
- package/node_modules/typebox/build/format/time.d.mts +2 -2
- package/node_modules/typebox/build/format/time.mjs +19 -14
- package/node_modules/typebox/build/format/uri.d.mts +1 -1
- package/node_modules/typebox/build/format/uri.mjs +3 -130
- package/node_modules/typebox/build/format/uri_reference.d.mts +1 -1
- package/node_modules/typebox/build/format/uri_reference.mjs +2 -3
- package/node_modules/typebox/build/format/uri_template.d.mts +2 -3
- package/node_modules/typebox/build/format/uri_template.mjs +4 -5
- package/node_modules/typebox/build/format/url.d.mts +3 -3
- package/node_modules/typebox/build/format/url.mjs +4 -5
- package/node_modules/typebox/build/guard/emit.d.mts +3 -1
- package/node_modules/typebox/build/guard/emit.mjs +12 -5
- package/node_modules/typebox/build/guard/guard.d.mts +8 -2
- package/node_modules/typebox/build/guard/guard.mjs +25 -4
- package/node_modules/typebox/build/guard/string.d.mts +2 -2
- package/node_modules/typebox/build/guard/string.mjs +7 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -2
- package/node_modules/typebox/build/schema/engine/_regexp.d.mts +2 -0
- package/node_modules/typebox/build/schema/engine/_regexp.mjs +4 -0
- package/node_modules/typebox/build/schema/engine/_stack.mjs +12 -13
- package/node_modules/typebox/build/schema/engine/additionalItems.mjs +17 -7
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +4 -3
- package/node_modules/typebox/build/schema/engine/contains.mjs +18 -6
- package/node_modules/typebox/build/schema/engine/enum.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/items.mjs +26 -6
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/minContains.mjs +14 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -2
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +7 -6
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +4 -3
- package/node_modules/typebox/build/schema/engine/ref.mjs +1 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +13 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +1 -1
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +4 -1
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +202 -1
- package/node_modules/typebox/build/schema/static/propertyNames.d.mts +5 -0
- package/node_modules/typebox/build/schema/static/propertyNames.mjs +3 -0
- package/node_modules/typebox/build/schema/static/schema.d.mts +3 -0
- package/node_modules/typebox/build/schema/types/index.d.mts +0 -2
- package/node_modules/typebox/build/schema/types/index.mjs +0 -2
- package/node_modules/typebox/build/system/memory/clone.mjs +14 -11
- package/node_modules/typebox/build/system/memory/discard.mjs +6 -5
- package/node_modules/typebox/build/system/settings/settings.d.mts +9 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +2 -0
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.d.mts +6 -1
- package/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs +16 -3
- package/node_modules/typebox/build/type/engine/call/instantiate.mjs +34 -4
- package/node_modules/typebox/build/type/engine/evaluate/broaden.d.mts +5 -5
- package/node_modules/typebox/build/type/engine/evaluate/broaden.mjs +20 -26
- package/node_modules/typebox/build/type/engine/evaluate/compare.d.mts +6 -10
- package/node_modules/typebox/build/type/engine/evaluate/compare.mjs +9 -13
- package/node_modules/typebox/build/type/engine/evaluate/composite.d.mts +7 -4
- package/node_modules/typebox/build/type/engine/evaluate/composite.mjs +12 -19
- package/node_modules/typebox/build/type/engine/evaluate/distribute.d.mts +4 -20
- package/node_modules/typebox/build/type/engine/evaluate/distribute.mjs +8 -20
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.d.mts +4 -4
- package/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs +11 -8
- package/node_modules/typebox/build/type/engine/evaluate/flatten.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/evaluate/flatten.mjs +3 -4
- package/node_modules/typebox/build/type/engine/evaluate/narrow.d.mts +17 -2
- package/node_modules/typebox/build/type/engine/evaluate/narrow.mjs +26 -6
- package/node_modules/typebox/build/type/engine/exclude/operation.mjs +3 -4
- package/node_modules/typebox/build/type/engine/extract/operation.d.mts +1 -1
- package/node_modules/typebox/build/type/engine/extract/operation.mjs +3 -4
- package/node_modules/typebox/build/type/engine/priority/priority.d.mts +2 -2
- package/node_modules/typebox/build/type/engine/priority/priority.mjs +3 -4
- package/node_modules/typebox/build/type/script/mapping.d.mts +32 -29
- package/node_modules/typebox/build/type/script/mapping.mjs +18 -25
- package/node_modules/typebox/build/type/script/parser.d.mts +19 -25
- package/node_modules/typebox/build/type/script/parser.mjs +27 -23
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -2
- package/node_modules/typebox/build/value/errors/errors.mjs +1 -1
- package/node_modules/typebox/package.json +27 -27
- package/node_modules/typebox/readme.md +79 -82
- package/node_modules/ws/lib/permessage-deflate.js +3 -1
- package/node_modules/ws/package.json +1 -1
- package/openclaw.plugin.json +14 -6
- package/package.json +9 -7
- package/dist/account-configured-BwfXBo_F.js +0 -14
- package/dist/account-inspect-YJvFBbCR.js +0 -89
- package/dist/action-runtime.runtime-JtoOK9l5.js +0 -2
- package/dist/actions.runtime-CYLsYRai.js +0 -2
- package/dist/runtime-api-DBi7xc_g.js +0 -10
- package/dist/slack-client-kind-BXyOOICI.js +0 -94
- package/node_modules/typebox/build/format/_idna.d.mts +0 -2
- package/node_modules/typebox/build/format/_idna.mjs +0 -246
- package/node_modules/typebox/build/format/_puny.d.mts +0 -1
- package/node_modules/typebox/build/format/_puny.mjs +0 -77
- package/node_modules/typebox/build/schema/resolve/ref.d.mts +0 -3
- package/node_modules/typebox/build/schema/resolve/ref.mjs +0 -146
- package/node_modules/typebox/build/schema/types/contentEncoding.d.mts +0 -9
- package/node_modules/typebox/build/schema/types/contentEncoding.mjs +0 -13
- package/node_modules/typebox/build/schema/types/contentMediaType.d.mts +0 -9
- package/node_modules/typebox/build/schema/types/contentMediaType.mjs +0 -13
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as isSlackPluginAccountConfigured } from "./account-configured-sUohAxZr.js";
|
|
2
|
+
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resolveSlackOperationToken, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom } from "./accounts-Dm_H77gH.js";
|
|
2
3
|
import { n as resolveSlackConversationBindingRoute, r as resolveSlackReplyToMode, t as normalizeSlackRouteBindingConfig } from "./conversation-binding-route-DFVLUdYF.js";
|
|
3
4
|
import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, n as formatSlackTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId, t as canonicalizeSlackApiTargetId } from "./target-parsing-BnMD2ZqZ.js";
|
|
4
5
|
import { t as slackContextTargetsMatch } from "./targets-Cx5W_n3W.js";
|
|
5
|
-
import {
|
|
6
|
-
import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
|
|
6
|
+
import { $ as renderSlackMessagePresentationFallbackText, Ct as isSlackApprovalAuthorizedSender, Et as isSlackExecApprovalClientEnabled, F as canRenderSlackPresentation, I as countSlackTextUtf8Bytes, M as SLACK_TEXT_LIMIT, Ot as resolveSlackExecApprovalTarget, P as buildSlackPresentationBlocks, Q as normalizeSlackOutboundText, St as getSlackApprovalApprovers, Tt as isSlackExecApprovalAuthorizedSender, _t as shouldHandleSlackPluginViaForwardingSession, a as qualifySlackConversationId, bt as isSlackWorkspaceInstallation, c as assertSlackDetachedTargetAllowed, ct as hasSlackPluginApprovers, d as resolveSlackReplyBlockResolution, dt as normalizeSlackOriginTarget, f as resolveSlackReplyBlocks, ft as resolveEnterpriseApprovalTeamId, gt as shouldHandleSlackNativeApprovalRequest, ht as resolveTurnSourceSlackOriginTarget, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, k as SLACK_EDIT_TEXT_MAX_BYTES, kt as shouldSuppressLocalSlackExecApprovalPrompt, lt as isSlackAnyNativeApprovalClientEnabled, mt as resolveSlackFallbackOriginTarget, o as qualifySlackRoutePeerId, p as resolveSlackReplyDeliveryMessages, pt as resolveSessionSlackOriginTarget, r as resolveSlackGroupRequireMention, rt as SLACK_PRESENTATION_CAPABILITIES, ut as normalizeSlackForwardTarget, vt as slackTargetsMatch, wt as getSlackExecApprovalApprovers, yt as getSlackInstallationKind } from "./group-policy-BdwszjYn.js";
|
|
7
7
|
import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
|
|
8
|
-
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-CJ0kjcg5.js";
|
|
9
|
+
import { a as PAIRING_APPROVED_MESSAGE, i as DEFAULT_ACCOUNT_ID$1, n as slackConfigAdapter, o as projectCredentialSnapshotFields, r as slackSecurityAdapter, s as resolveConfiguredFromRequiredCredentialStatuses, t as createSlackPluginBase } from "./shared-D5B-5hBg.js";
|
|
10
|
+
import { S as getSlackWriteClient, o as formatSlackError } from "./probe-0usmAb0i.js";
|
|
11
|
+
import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-DlFSKeIZ.js";
|
|
11
12
|
import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.js";
|
|
12
|
-
import {
|
|
13
|
-
import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-CpyYsEXH.js";
|
|
13
|
+
import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-ofDi3_Pu.js";
|
|
14
14
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
15
15
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
16
16
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
17
17
|
import { buildOutboundBaseSessionKey, normalizeMessageChannel, resolveAgentRoute } from "openclaw/plugin-sdk/routing";
|
|
18
18
|
import { buildLegacyDmAccountAllowlistAdapter, createAccountScopedAllowlistNameResolver, createFlatAllowlistOverrideResolver } from "openclaw/plugin-sdk/allowlist-config-edit";
|
|
19
19
|
import { buildThreadAwareOutboundSessionRoute, createChatChannelPlugin } from "openclaw/plugin-sdk/channel-core";
|
|
20
|
-
import { createChannelMessageAdapterFromOutbound, createRuntimeOutboundDelegates
|
|
20
|
+
import { createChannelMessageAdapterFromOutbound, createRuntimeOutboundDelegates } from "openclaw/plugin-sdk/channel-outbound";
|
|
21
21
|
import { createPairingPrefixStripper } from "openclaw/plugin-sdk/channel-pairing";
|
|
22
22
|
import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
|
|
23
23
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
@@ -30,7 +30,8 @@ import { createChannelNativeOriginTargetResolver, createNativeApprovalForwarding
|
|
|
30
30
|
import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
|
|
31
31
|
import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
|
|
32
32
|
import { normalizeLegacyInteractiveReply, normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
|
|
33
|
-
import {
|
|
33
|
+
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
34
|
+
import { readPositiveIntegerParam as readPositiveIntegerParam$1, readStringParam as readStringParam$1 } from "openclaw/plugin-sdk/param-readers";
|
|
34
35
|
//#region extensions/slack/src/approval-native.ts
|
|
35
36
|
function resolveSlackNativeSuppressionAccountId({ target, request }) {
|
|
36
37
|
return normalizeOptionalString(target.accountId) ?? normalizeOptionalString(request.request.turnSourceAccountId);
|
|
@@ -88,7 +89,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
88
89
|
channelLabel: "Slack",
|
|
89
90
|
describeExecApprovalSetup: ({ accountId }) => {
|
|
90
91
|
const prefix = accountId && accountId !== "default" ? `channels.slack.accounts.${accountId}` : "channels.slack";
|
|
91
|
-
return `Approve it from the Web UI or terminal UI for now. Slack supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`;
|
|
92
|
+
return `Approve it from the Web UI or terminal UI for now. Slack supports native exec approvals for this account. Configure \`${prefix}.execApprovals.approvers\` or \`commands.ownerAllowFrom\`; set \`${prefix}.execApprovals.enabled\` to \`auto\` or \`true\`. Unset or \`false\` disables native exec approval delivery.`;
|
|
92
93
|
},
|
|
93
94
|
listAccountIds: listSlackAccountIds,
|
|
94
95
|
hasApprovers: ({ cfg, accountId }) => getSlackExecApprovalApprovers({
|
|
@@ -130,7 +131,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
130
131
|
approvalKind,
|
|
131
132
|
request
|
|
132
133
|
}),
|
|
133
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
134
|
+
load: async () => (await import("./approval-handler.runtime-DYv0UIZS.js")).slackApprovalNativeRuntime
|
|
134
135
|
})
|
|
135
136
|
});
|
|
136
137
|
const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
|
|
@@ -192,7 +193,7 @@ function resolveSlackPresentationText(content, presentation) {
|
|
|
192
193
|
}
|
|
193
194
|
function renderSlackActionPresentation(presentation) {
|
|
194
195
|
if (!presentation) return { usesPresentationTextFallback: false };
|
|
195
|
-
const renderedBlocks = canRenderSlackPresentation(presentation) ? buildSlackPresentationBlocks(presentation) : void 0;
|
|
196
|
+
const renderedBlocks = !presentation.blocks.some((block) => (block.type === "text" || block.type === "context") && block.text.trim().length > 3e3) && canRenderSlackPresentation(presentation) ? buildSlackPresentationBlocks(presentation) : void 0;
|
|
196
197
|
const usesPresentationTextFallback = !renderedBlocks || renderedBlocks.length > 50;
|
|
197
198
|
const blocks = usesPresentationTextFallback ? void 0 : renderedBlocks;
|
|
198
199
|
return {
|
|
@@ -206,16 +207,22 @@ async function handleSlackMessageAction(params) {
|
|
|
206
207
|
const { action, cfg, params: actionParams } = ctx;
|
|
207
208
|
const accountId = ctx.accountId ?? void 0;
|
|
208
209
|
const resolveChannelId = () => {
|
|
209
|
-
const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to", { required: true });
|
|
210
|
+
const channelId = readStringParam$1(actionParams, "channelId") ?? readStringParam$1(actionParams, "to", { required: true });
|
|
210
211
|
return normalizeChannelId ? normalizeChannelId(channelId) : channelId;
|
|
211
212
|
};
|
|
213
|
+
if (action === "conversation-open") return await invoke({
|
|
214
|
+
action: "openConversation",
|
|
215
|
+
userIds: actionParams.userIds,
|
|
216
|
+
teamId: readStringParam$1(actionParams, "teamId"),
|
|
217
|
+
accountId
|
|
218
|
+
}, cfg, ctx.toolContext);
|
|
212
219
|
if (action === "send") {
|
|
213
|
-
const to = readStringParam(actionParams, "to", { required: true });
|
|
214
|
-
const content = readStringParam(actionParams, "message", {
|
|
220
|
+
const to = readStringParam$1(actionParams, "to", { required: true });
|
|
221
|
+
const content = readStringParam$1(actionParams, "message", {
|
|
215
222
|
required: false,
|
|
216
223
|
allowEmpty: true
|
|
217
224
|
});
|
|
218
|
-
const mediaUrl = readStringParam(actionParams, "media", { trim: false });
|
|
225
|
+
const mediaUrl = readStringParam$1(actionParams, "media", { trim: false });
|
|
219
226
|
const presentation = normalizeMessagePresentation(actionParams.presentation);
|
|
220
227
|
const interactive = normalizeLegacyInteractiveReply(actionParams.interactive);
|
|
221
228
|
const hasStructuredContent = Boolean(presentation || interactive?.blocks.length);
|
|
@@ -232,8 +239,8 @@ async function handleSlackMessageAction(params) {
|
|
|
232
239
|
if (!content && preparedMessages.length === 0 && !mediaUrl) throw new Error("Slack send requires message, blocks, or media.");
|
|
233
240
|
const replyBroadcast = readBooleanParam(actionParams, "replyBroadcast");
|
|
234
241
|
if (replyBroadcast && mediaUrl) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
|
|
235
|
-
const threadId = readStringParam(actionParams, "threadId");
|
|
236
|
-
const replyTo = readStringParam(actionParams, "replyTo");
|
|
242
|
+
const threadId = readStringParam$1(actionParams, "threadId");
|
|
243
|
+
const replyTo = readStringParam$1(actionParams, "replyTo");
|
|
237
244
|
const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
|
|
238
245
|
const toolContext = preparedMessages.length > 0 ? {
|
|
239
246
|
...ctx.toolContext,
|
|
@@ -246,7 +253,10 @@ async function handleSlackMessageAction(params) {
|
|
|
246
253
|
mediaUrl: mediaUrl ?? void 0,
|
|
247
254
|
...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
|
|
248
255
|
accountId,
|
|
249
|
-
threadTs:
|
|
256
|
+
threadTs: resolveSlackThreadTsValue({
|
|
257
|
+
replyToId: replyTo,
|
|
258
|
+
threadId
|
|
259
|
+
}),
|
|
250
260
|
...topLevel ? { topLevel: true } : {},
|
|
251
261
|
...replyBroadcast ? { replyBroadcast } : {}
|
|
252
262
|
}, cfg, toolContext);
|
|
@@ -258,7 +268,7 @@ async function handleSlackMessageAction(params) {
|
|
|
258
268
|
});
|
|
259
269
|
if (messageIdRaw == null) throw new Error("messageId required. Provide messageId explicitly or react to the current inbound message.");
|
|
260
270
|
const messageId = String(messageIdRaw);
|
|
261
|
-
const emoji = readStringParam(actionParams, "emoji", { allowEmpty: true });
|
|
271
|
+
const emoji = readStringParam$1(actionParams, "emoji", { allowEmpty: true });
|
|
262
272
|
const remove = typeof actionParams.remove === "boolean" ? actionParams.remove : void 0;
|
|
263
273
|
return await invoke({
|
|
264
274
|
action: "react",
|
|
@@ -270,7 +280,7 @@ async function handleSlackMessageAction(params) {
|
|
|
270
280
|
}, cfg, ctx.toolContext);
|
|
271
281
|
}
|
|
272
282
|
if (action === "reactions") {
|
|
273
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
283
|
+
const messageId = readStringParam$1(actionParams, "messageId", { required: true });
|
|
274
284
|
return await invoke({
|
|
275
285
|
action: "reactions",
|
|
276
286
|
channelId: resolveChannelId(),
|
|
@@ -284,17 +294,17 @@ async function handleSlackMessageAction(params) {
|
|
|
284
294
|
action: "readMessages",
|
|
285
295
|
channelId: resolveChannelId(),
|
|
286
296
|
limit: actionParams.limit,
|
|
287
|
-
before: readStringParam(actionParams, "before"),
|
|
288
|
-
after: readStringParam(actionParams, "after"),
|
|
289
|
-
messageId: readStringParam(actionParams, "messageId"),
|
|
297
|
+
before: readStringParam$1(actionParams, "before"),
|
|
298
|
+
after: readStringParam$1(actionParams, "after"),
|
|
299
|
+
messageId: readStringParam$1(actionParams, "messageId"),
|
|
290
300
|
accountId
|
|
291
301
|
};
|
|
292
|
-
if (includeReadThreadId) readAction.threadId = readStringParam(actionParams, "threadId");
|
|
302
|
+
if (includeReadThreadId) readAction.threadId = readStringParam$1(actionParams, "threadId");
|
|
293
303
|
return await invoke(readAction, cfg, ctx.toolContext);
|
|
294
304
|
}
|
|
295
305
|
if (action === "edit") {
|
|
296
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
297
|
-
const content = readStringParam(actionParams, "message", { allowEmpty: true });
|
|
306
|
+
const messageId = readStringParam$1(actionParams, "messageId", { required: true });
|
|
307
|
+
const content = readStringParam$1(actionParams, "message", { allowEmpty: true });
|
|
298
308
|
const presentation = normalizeMessagePresentation(actionParams.presentation);
|
|
299
309
|
const renderedPresentation = renderSlackActionPresentation(presentation);
|
|
300
310
|
const blocks = renderedPresentation.usesPresentationTextFallback ? void 0 : renderedPresentation.blocks;
|
|
@@ -302,7 +312,15 @@ async function handleSlackMessageAction(params) {
|
|
|
302
312
|
text: content,
|
|
303
313
|
presentation
|
|
304
314
|
}) : resolveSlackPresentationText(content, presentation);
|
|
305
|
-
|
|
315
|
+
const tableMode = resolveMarkdownTableMode({
|
|
316
|
+
cfg,
|
|
317
|
+
channel: "slack",
|
|
318
|
+
accountId: accountId ?? resolveDefaultSlackAccountId(cfg)
|
|
319
|
+
});
|
|
320
|
+
if (!blocks && countSlackTextUtf8Bytes(normalizeSlackOutboundText(accessibleContent, { tableMode })) > 4e3) {
|
|
321
|
+
const editSubject = renderedPresentation.usesPresentationTextFallback ? "Slack presentation fallback" : "Slack edit";
|
|
322
|
+
throw new Error(`${editSubject} exceeds the ${String(SLACK_EDIT_TEXT_MAX_BYTES)}-byte edit limit. Send a new message instead.`);
|
|
323
|
+
}
|
|
306
324
|
if (!accessibleContent && !blocks) throw new Error("Slack edit requires message or blocks.");
|
|
307
325
|
return await invoke({
|
|
308
326
|
action: "editMessage",
|
|
@@ -314,7 +332,7 @@ async function handleSlackMessageAction(params) {
|
|
|
314
332
|
}, cfg, ctx.toolContext);
|
|
315
333
|
}
|
|
316
334
|
if (action === "delete") {
|
|
317
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
335
|
+
const messageId = readStringParam$1(actionParams, "messageId", { required: true });
|
|
318
336
|
return await invoke({
|
|
319
337
|
action: "deleteMessage",
|
|
320
338
|
channelId: resolveChannelId(),
|
|
@@ -323,7 +341,7 @@ async function handleSlackMessageAction(params) {
|
|
|
323
341
|
}, cfg, ctx.toolContext);
|
|
324
342
|
}
|
|
325
343
|
if (action === "pin" || action === "unpin" || action === "list-pins") {
|
|
326
|
-
const messageId = action === "list-pins" ? void 0 : readStringParam(actionParams, "messageId", { required: true });
|
|
344
|
+
const messageId = action === "list-pins" ? void 0 : readStringParam$1(actionParams, "messageId", { required: true });
|
|
327
345
|
return await invoke({
|
|
328
346
|
action: action === "pin" ? "pinMessage" : action === "unpin" ? "unpinMessage" : "listPins",
|
|
329
347
|
channelId: resolveChannelId(),
|
|
@@ -335,7 +353,7 @@ async function handleSlackMessageAction(params) {
|
|
|
335
353
|
const requesterAccountId = ctx.requesterAccountId ? normalizeAccountId(ctx.requesterAccountId) : void 0;
|
|
336
354
|
const targetAccountId = normalizeAccountId(accountId ?? resolveDefaultSlackAccountId(cfg));
|
|
337
355
|
const requesterUserId = normalizeOptionalLowercaseString(ctx.toolContext?.currentChannelProvider) === "slack" && requesterAccountId !== void 0 && requesterAccountId === targetAccountId ? normalizeOptionalString(ctx.requesterSenderId) : void 0;
|
|
338
|
-
const userId = readStringParam(actionParams, "userId") ?? requesterUserId;
|
|
356
|
+
const userId = readStringParam$1(actionParams, "userId") ?? requesterUserId;
|
|
339
357
|
if (!userId) throw new Error("member-info requires a userId outside a current Slack conversation.");
|
|
340
358
|
return await invoke({
|
|
341
359
|
action: "memberInfo",
|
|
@@ -345,16 +363,16 @@ async function handleSlackMessageAction(params) {
|
|
|
345
363
|
}
|
|
346
364
|
if (action === "emoji-list") return await invoke({
|
|
347
365
|
action: "emojiList",
|
|
348
|
-
limit: readPositiveIntegerParam(actionParams, "limit", { message: "limit must be a positive integer." }),
|
|
366
|
+
limit: readPositiveIntegerParam$1(actionParams, "limit", { message: "limit must be a positive integer." }),
|
|
349
367
|
accountId
|
|
350
368
|
}, cfg, ctx.toolContext);
|
|
351
369
|
if (action === "download-file") {
|
|
352
|
-
const fileIdParam = readStringParam(actionParams, "fileId");
|
|
353
|
-
const messageIdParam = readStringParam(actionParams, "messageId") ?? readStringParam(actionParams, "message_id");
|
|
370
|
+
const fileIdParam = readStringParam$1(actionParams, "fileId");
|
|
371
|
+
const messageIdParam = readStringParam$1(actionParams, "messageId") ?? readStringParam$1(actionParams, "message_id");
|
|
354
372
|
if (!fileIdParam && messageIdParam) throw new Error("download-file requires fileId (the Slack file id, for example F0B0LTT8M36 from event.files[].id), not messageId. Did you mean to pass fileId? messageId is the Slack message timestamp and is used by react / reactions / edit / delete / pin / unpin actions, not download-file.");
|
|
355
|
-
const fileId = readStringParam(actionParams, "fileId", { required: true });
|
|
356
|
-
const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to");
|
|
357
|
-
const threadId = readStringParam(actionParams, "threadId") ?? readStringParam(actionParams, "replyTo");
|
|
373
|
+
const fileId = readStringParam$1(actionParams, "fileId", { required: true });
|
|
374
|
+
const channelId = readStringParam$1(actionParams, "channelId") ?? readStringParam$1(actionParams, "to");
|
|
375
|
+
const threadId = readStringParam$1(actionParams, "threadId") ?? readStringParam$1(actionParams, "replyTo");
|
|
358
376
|
return await invoke({
|
|
359
377
|
action: "downloadFile",
|
|
360
378
|
fileId,
|
|
@@ -365,18 +383,18 @@ async function handleSlackMessageAction(params) {
|
|
|
365
383
|
}
|
|
366
384
|
if (action === "upload-file") {
|
|
367
385
|
if (readBooleanParam(actionParams, "replyBroadcast")) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
|
|
368
|
-
const to = readStringParam(actionParams, "to") ?? resolveChannelId();
|
|
369
|
-
const filePath = readStringParam(actionParams, "filePath", { trim: false }) ?? readStringParam(actionParams, "path", { trim: false }) ?? readStringParam(actionParams, "media", { trim: false });
|
|
386
|
+
const to = readStringParam$1(actionParams, "to") ?? resolveChannelId();
|
|
387
|
+
const filePath = readStringParam$1(actionParams, "filePath", { trim: false }) ?? readStringParam$1(actionParams, "path", { trim: false }) ?? readStringParam$1(actionParams, "media", { trim: false });
|
|
370
388
|
if (!filePath) throw new Error("upload-file requires filePath, path, or media");
|
|
371
|
-
const threadId = readStringParam(actionParams, "threadId") ?? readStringParam(actionParams, "replyTo");
|
|
389
|
+
const threadId = readStringParam$1(actionParams, "threadId") ?? readStringParam$1(actionParams, "replyTo");
|
|
372
390
|
const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
|
|
373
391
|
return await invoke({
|
|
374
392
|
action: "uploadFile",
|
|
375
393
|
to,
|
|
376
394
|
filePath,
|
|
377
|
-
initialComment: readStringParam(actionParams, "initialComment", { allowEmpty: true }) ?? readStringParam(actionParams, "message", { allowEmpty: true }) ?? readStringParam(actionParams, "caption", { allowEmpty: true }) ?? "",
|
|
378
|
-
filename: readStringParam(actionParams, "filename"),
|
|
379
|
-
title: readStringParam(actionParams, "title"),
|
|
395
|
+
initialComment: readStringParam$1(actionParams, "initialComment", { allowEmpty: true }) ?? readStringParam$1(actionParams, "message", { allowEmpty: true }) ?? readStringParam$1(actionParams, "caption", { allowEmpty: true }) ?? "",
|
|
396
|
+
filename: readStringParam$1(actionParams, "filename"),
|
|
397
|
+
title: readStringParam$1(actionParams, "title"),
|
|
380
398
|
threadTs: threadId ?? void 0,
|
|
381
399
|
...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
|
|
382
400
|
...topLevel ? { topLevel: true } : {},
|
|
@@ -396,7 +414,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = /* @__PURE__ */ new Set([
|
|
|
396
414
|
"unpinMessage",
|
|
397
415
|
"uploadFile"
|
|
398
416
|
]);
|
|
399
|
-
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
417
|
+
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-BL3KzX13.js"));
|
|
400
418
|
function resolveSlackActionContext(ctx, toolContext) {
|
|
401
419
|
if (!toolContext && !ctx.mediaAccess && !ctx.mediaLocalRoots && !ctx.mediaReadFile && !ctx.conversationReadOrigin && !ctx.requesterAccountId && !ctx.requesterSenderId) return;
|
|
402
420
|
return {
|
|
@@ -538,41 +556,23 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
|
|
|
538
556
|
const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
|
|
539
557
|
const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
|
|
540
558
|
const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
|
|
541
|
-
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-
|
|
542
|
-
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-
|
|
543
|
-
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-
|
|
559
|
+
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BGnd2pSe.js"));
|
|
560
|
+
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-COSlmhnH.js"));
|
|
561
|
+
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-DYaI8ThX.js"));
|
|
544
562
|
async function resolveSlackHandleAction() {
|
|
545
563
|
return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
|
|
546
564
|
}
|
|
547
565
|
function shouldTreatSlackDeliveredTextAsVisible(params) {
|
|
548
566
|
return params.kind === "block" && typeof params.text === "string" && params.text.trim().length > 0;
|
|
549
567
|
}
|
|
550
|
-
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-
|
|
551
|
-
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
552
|
-
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
553
|
-
const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
554
|
-
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
555
|
-
const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-
|
|
556
|
-
const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-
|
|
557
|
-
const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-
|
|
558
|
-
async function resolveSlackSendContext(params) {
|
|
559
|
-
const account = resolveSlackAccount({
|
|
560
|
-
cfg: params.cfg,
|
|
561
|
-
accountId: params.accountId
|
|
562
|
-
});
|
|
563
|
-
const target = parseSlackTarget(params.to, { defaultKind: "channel" });
|
|
564
|
-
assertSlackDetachedTargetAllowed(account.accountId, target?.teamId);
|
|
565
|
-
const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
|
|
566
|
-
const token = resolveSlackOperationToken(account, "write");
|
|
567
|
-
const botToken = account.botToken?.trim();
|
|
568
|
-
const tokenOverride = token && token !== botToken ? token : void 0;
|
|
569
|
-
return {
|
|
570
|
-
send,
|
|
571
|
-
threadTsValue: resolveSlackThreadTsValue(params),
|
|
572
|
-
tokenOverride,
|
|
573
|
-
to: params.to
|
|
574
|
-
};
|
|
575
|
-
}
|
|
568
|
+
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-DqfQ42OV.js").then((n) => n.t));
|
|
569
|
+
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-Czheznc8.js").then((n) => n.n));
|
|
570
|
+
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-BAOlNimr.js").then((n) => n.n));
|
|
571
|
+
const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-BL3KzX13.js"));
|
|
572
|
+
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-D_Bb6IuH.js"));
|
|
573
|
+
const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-0usmAb0i.js").then((n) => n.n));
|
|
574
|
+
const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-Dq5Cmrvp.js").then((n) => n.t));
|
|
575
|
+
const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-BPaNHjmP.js").then((n) => n.t));
|
|
576
576
|
async function setSlackHeartbeatThreadStatus(params) {
|
|
577
577
|
const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
|
|
578
578
|
const target = parseSlackTarget(params.to, { defaultKind: "channel" });
|
|
@@ -603,15 +603,6 @@ async function setSlackHeartbeatThreadStatus(params) {
|
|
|
603
603
|
logVerbose(`slack heartbeat status update failed: ${formatSlackError(error)}`);
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
|
-
function withSlackSendOverride(params) {
|
|
607
|
-
return {
|
|
608
|
-
...params.deps,
|
|
609
|
-
slack: async (to, text, opts) => await params.send(to, text, {
|
|
610
|
-
...opts,
|
|
611
|
-
...params.tokenOverride ? { token: params.tokenOverride } : {}
|
|
612
|
-
})
|
|
613
|
-
};
|
|
614
|
-
}
|
|
615
606
|
function resolveSlackRouteTarget(raw) {
|
|
616
607
|
const target = parseSlackTarget(raw, { defaultKind: "channel" });
|
|
617
608
|
if (!target) return null;
|
|
@@ -773,72 +764,16 @@ const slackChannelOutbound = {
|
|
|
773
764
|
}
|
|
774
765
|
}),
|
|
775
766
|
sendPayload: async (ctx) => {
|
|
776
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
777
|
-
cfg: ctx.cfg,
|
|
778
|
-
accountId: ctx.accountId ?? void 0,
|
|
779
|
-
to: ctx.to,
|
|
780
|
-
deps: ctx.deps,
|
|
781
|
-
replyToId: ctx.replyToId,
|
|
782
|
-
threadId: ctx.threadId
|
|
783
|
-
});
|
|
784
767
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
785
|
-
return await slackOutbound.sendPayload(
|
|
786
|
-
...ctx,
|
|
787
|
-
to,
|
|
788
|
-
replyToId: threadTsValue,
|
|
789
|
-
threadId: null,
|
|
790
|
-
deliveryQueueId: void 0,
|
|
791
|
-
deps: withSlackSendOverride({
|
|
792
|
-
deps: ctx.deps,
|
|
793
|
-
send,
|
|
794
|
-
tokenOverride
|
|
795
|
-
})
|
|
796
|
-
});
|
|
768
|
+
return await slackOutbound.sendPayload(ctx);
|
|
797
769
|
},
|
|
798
770
|
sendText: async (ctx) => {
|
|
799
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
800
|
-
cfg: ctx.cfg,
|
|
801
|
-
accountId: ctx.accountId ?? void 0,
|
|
802
|
-
to: ctx.to,
|
|
803
|
-
deps: ctx.deps,
|
|
804
|
-
replyToId: ctx.replyToId,
|
|
805
|
-
threadId: ctx.threadId
|
|
806
|
-
});
|
|
807
771
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
808
|
-
return await slackOutbound.sendText(
|
|
809
|
-
...ctx,
|
|
810
|
-
to,
|
|
811
|
-
replyToId: threadTsValue,
|
|
812
|
-
threadId: null,
|
|
813
|
-
deps: withSlackSendOverride({
|
|
814
|
-
deps: ctx.deps,
|
|
815
|
-
send,
|
|
816
|
-
tokenOverride
|
|
817
|
-
})
|
|
818
|
-
});
|
|
772
|
+
return await slackOutbound.sendText(ctx);
|
|
819
773
|
},
|
|
820
774
|
sendMedia: async (ctx) => {
|
|
821
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
822
|
-
cfg: ctx.cfg,
|
|
823
|
-
accountId: ctx.accountId ?? void 0,
|
|
824
|
-
to: ctx.to,
|
|
825
|
-
deps: ctx.deps,
|
|
826
|
-
replyToId: ctx.replyToId,
|
|
827
|
-
threadId: ctx.threadId
|
|
828
|
-
});
|
|
829
775
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
830
|
-
return await slackOutbound.sendMedia(
|
|
831
|
-
...ctx,
|
|
832
|
-
to,
|
|
833
|
-
replyToId: threadTsValue,
|
|
834
|
-
threadId: null,
|
|
835
|
-
deliveryQueueId: void 0,
|
|
836
|
-
deps: withSlackSendOverride({
|
|
837
|
-
deps: ctx.deps,
|
|
838
|
-
send,
|
|
839
|
-
tokenOverride
|
|
840
|
-
})
|
|
841
|
-
});
|
|
776
|
+
return await slackOutbound.sendMedia(ctx);
|
|
842
777
|
}
|
|
843
778
|
};
|
|
844
779
|
const slackMessageAdapterBase = createChannelMessageAdapterFromOutbound({
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-BVIMyiDN.js";
|
|
2
2
|
export { SlackChannelConfigSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackPlugin } from "./channel-
|
|
1
|
+
import { t as slackPlugin } from "./channel-1vIJOzPx.js";
|
|
2
2
|
export { slackPlugin };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
|
|
3
|
+
import { c as assertSlackDetachedTargetAllowed } from "./group-policy-BdwszjYn.js";
|
|
4
|
+
import { g as createSlackReadClient, l as normalizeAllowListLower, y as createSlackWebClient } from "./probe-0usmAb0i.js";
|
|
5
5
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
5
|
-
import {
|
|
1
|
+
import { r as isSlackSetupAccountConfigured } from "./account-configured-sUohAxZr.js";
|
|
2
|
+
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-Dm_H77gH.js";
|
|
3
|
+
import { t as inspectSlackAccount } from "./account-inspect-CN2hBsim.js";
|
|
4
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-BVIMyiDN.js";
|
|
5
|
+
import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
6
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
8
8
|
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
@@ -102,13 +102,13 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
102
102
|
}
|
|
103
103
|
function buildSlackSetupLines() {
|
|
104
104
|
return [
|
|
105
|
-
"1) Slack API -> Create App -> From scratch or
|
|
106
|
-
"2)
|
|
107
|
-
"3)
|
|
108
|
-
"4)
|
|
109
|
-
"5)
|
|
110
|
-
"
|
|
111
|
-
"Tip:
|
|
105
|
+
"1) Slack API -> Create App -> From scratch or a transport-specific manifest",
|
|
106
|
+
"2) Install App to workspace to get the xoxb- bot token",
|
|
107
|
+
"3) Socket Mode: enable it and create an app-level token (xapp-...)",
|
|
108
|
+
"4) HTTP: configure a public HTTPS Request URL and copy the app Signing Secret",
|
|
109
|
+
"5) Enable Event Subscriptions for message, App Home, and Agent View events",
|
|
110
|
+
"6) App Home -> enable the Home tab, Messages tab for DMs, and Agent View",
|
|
111
|
+
"Tip: Socket Mode can use SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
|
|
112
112
|
`Docs: ${formatDocsLink("/slack", "slack")}`
|
|
113
113
|
];
|
|
114
114
|
}
|
|
@@ -121,17 +121,6 @@ function setSlackChannelAllowlist(cfg, accountId, channelKeys) {
|
|
|
121
121
|
patch: { channels }
|
|
122
122
|
});
|
|
123
123
|
}
|
|
124
|
-
function isSlackSetupAccountConfigured(account) {
|
|
125
|
-
if (account.config.mode === "relay") return isSlackPluginAccountConfigured(account);
|
|
126
|
-
const hasConfiguredUserToken = Boolean(account.userToken?.trim()) || hasConfiguredSecretInput(account.config.userToken);
|
|
127
|
-
const hasConfiguredBotToken = Boolean(account.botToken?.trim()) || hasConfiguredSecretInput(account.config.botToken);
|
|
128
|
-
const hasConfiguredAppToken = Boolean(account.appToken?.trim()) || hasConfiguredSecretInput(account.config.appToken);
|
|
129
|
-
if (account.identity === "user") {
|
|
130
|
-
const hasTransportCredential = account.config.mode === "http" ? hasConfiguredSecretInput(account.config.signingSecret) : hasConfiguredAppToken;
|
|
131
|
-
return hasConfiguredUserToken && hasTransportCredential;
|
|
132
|
-
}
|
|
133
|
-
return hasConfiguredBotToken && hasConfiguredAppToken;
|
|
134
|
-
}
|
|
135
124
|
function describeSlackSetupAccount(account) {
|
|
136
125
|
return describeAccountSnapshot({
|
|
137
126
|
account,
|
|
@@ -229,12 +218,9 @@ function createSlackTokenCredential(params) {
|
|
|
229
218
|
});
|
|
230
219
|
}
|
|
231
220
|
function hasSlackSetupCredentials(params) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
if (params.mode === "http") return Boolean(params.input.userToken && params.input.signingSecret);
|
|
237
|
-
return params.mode === "socket" && Boolean(params.input.userToken && params.input.appToken);
|
|
221
|
+
const identityToken = params.identity === "user" ? params.input.userToken : params.input.botToken;
|
|
222
|
+
const transportCredential = params.mode === "http" ? params.input.signingSecret : params.input.appToken;
|
|
223
|
+
return Boolean(identityToken && transportCredential);
|
|
238
224
|
}
|
|
239
225
|
const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
|
|
240
226
|
channelKey: SLACK_CHANNEL,
|
|
@@ -260,13 +246,13 @@ const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
|
|
|
260
246
|
mode
|
|
261
247
|
})) return null;
|
|
262
248
|
if (identity === "user") return mode === "http" ? "Slack user identity requires --user-token and --signing-secret." : "Slack user identity requires --user-token and --app-token.";
|
|
263
|
-
return "Slack requires --bot-token and --app-token (or --use-env).";
|
|
249
|
+
return mode === "http" ? "Slack HTTP mode requires --bot-token and --signing-secret (or --use-env)." : "Slack requires --bot-token and --app-token (or --use-env).";
|
|
264
250
|
},
|
|
265
251
|
buildPatch: (input) => {
|
|
266
252
|
const setupInput = input;
|
|
267
253
|
return {
|
|
268
254
|
...setupInput.identity ? { postAs: setupInput.identity } : {},
|
|
269
|
-
...setupInput.
|
|
255
|
+
...setupInput.mode ? { mode: setupInput.mode } : {},
|
|
270
256
|
...setupInput.botToken ? { botToken: setupInput.botToken } : {},
|
|
271
257
|
...setupInput.appToken ? { appToken: setupInput.appToken } : {},
|
|
272
258
|
...setupInput.userToken ? { userToken: setupInput.userToken } : {},
|
|
@@ -421,23 +407,24 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
421
407
|
`Docs: ${formatDocsLink("/channels/slack#user-identity-post-as-a-real-person", "channels/slack")}`
|
|
422
408
|
].join("\n"), "Slack user identity");
|
|
423
409
|
} else {
|
|
424
|
-
await prompter.note(buildSlackSetupLines().join("\n"), t("wizard.
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
410
|
+
await prompter.note(buildSlackSetupLines().join("\n"), t("wizard.channels.setupTitle"));
|
|
411
|
+
if (currentAccount.config.mode !== "http") {
|
|
412
|
+
const manifest = buildSlackManifest();
|
|
413
|
+
await (prompter.plain ? prompter.plain(manifest) : prompter.note(manifest, "Slack manifest JSON"));
|
|
414
|
+
}
|
|
428
415
|
}
|
|
429
416
|
return { cfg: next };
|
|
430
417
|
},
|
|
431
418
|
envShortcut: {
|
|
432
419
|
prompt: t("wizard.slack.envPrompt"),
|
|
433
420
|
preferredEnvVar: "SLACK_BOT_TOKEN",
|
|
434
|
-
isAvailable: ({ cfg, accountId }) =>
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
accountId
|
|
440
|
-
}
|
|
421
|
+
isAvailable: ({ cfg, accountId }) => {
|
|
422
|
+
const account = inspectSlackAccount({
|
|
423
|
+
cfg,
|
|
424
|
+
accountId
|
|
425
|
+
});
|
|
426
|
+
return accountId === DEFAULT_ACCOUNT_ID && (account.config.postAs ?? "bot") === "bot" && (account.config.mode ?? "socket") === "socket" && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !account.configured;
|
|
427
|
+
},
|
|
441
428
|
apply: ({ cfg, accountId }) => enableSlackAccount(cfg, accountId)
|
|
442
429
|
},
|
|
443
430
|
credentials: [
|
|
@@ -473,11 +460,10 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
473
460
|
keepPrompt: t("wizard.slack.appTokenKeep"),
|
|
474
461
|
inputPrompt: t("wizard.slack.appTokenInput"),
|
|
475
462
|
shouldPrompt: ({ cfg, accountId }) => {
|
|
476
|
-
|
|
463
|
+
return (inspectSlackAccount({
|
|
477
464
|
cfg,
|
|
478
465
|
accountId
|
|
479
|
-
});
|
|
480
|
-
return (account.config.postAs ?? "bot") === "bot" || (account.config.mode ?? "socket") === "socket";
|
|
466
|
+
}).config.mode ?? "socket") === "socket";
|
|
481
467
|
}
|
|
482
468
|
}),
|
|
483
469
|
createSlackTokenCredential({
|
|
@@ -487,11 +473,10 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
487
473
|
keepPrompt: "Slack signing secret already configured. Keep it?",
|
|
488
474
|
inputPrompt: "Enter Slack signing secret",
|
|
489
475
|
shouldPrompt: ({ cfg, accountId }) => {
|
|
490
|
-
|
|
476
|
+
return inspectSlackAccount({
|
|
491
477
|
cfg,
|
|
492
478
|
accountId
|
|
493
|
-
});
|
|
494
|
-
return account.config.postAs === "user" && account.config.mode === "http";
|
|
479
|
+
}).config.mode === "http";
|
|
495
480
|
}
|
|
496
481
|
})
|
|
497
482
|
],
|
|
@@ -570,7 +555,7 @@ const slackBaseConfigAdapter = createScopedChannelConfigAdapter({
|
|
|
570
555
|
});
|
|
571
556
|
//#endregion
|
|
572
557
|
//#region extensions/slack/src/channel.setup.ts
|
|
573
|
-
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-
|
|
558
|
+
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-BGnd2pSe.js")).slackSetupWizard }));
|
|
574
559
|
const slackSetupPlugin = {
|
|
575
560
|
id: SLACK_CHANNEL,
|
|
576
561
|
meta: {
|