@openclaw/slack 2026.8.1-beta.2 → 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-CK4AVI2_.js → accounts-Dm_H77gH.js} +12 -11
- package/dist/{accounts.runtime-Cb7QwWBz.js → accounts.runtime-DRuEK6mL.js} +1 -1
- package/dist/{action-runtime-BkGe7ny_.js → action-runtime-044ldvNL.js} +80 -79
- package/dist/action-runtime.runtime-BL3KzX13.js +2 -0
- package/dist/{actions-BTDXwwE3.js → actions-BI7JkfVm.js} +273 -263
- package/dist/api.js +14 -14
- package/dist/{approval-handler.runtime-CJaNzAq2.js → approval-handler.runtime-DYv0UIZS.js} +53 -174
- package/dist/{channel-D_tovcUL.js → channel-1vIJOzPx.js} +134 -160
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-B9MSdoGN.js → channel-type-DlFSKeIZ.js} +3 -7
- package/dist/{channel.setup-Bch9dYmA.js → channel.setup-ofDi3_Pu.js} +34 -49
- package/dist/{config-schema-xto5jFIx.js → config-schema-BVIMyiDN.js} +42 -19
- package/dist/configured-state.js +34 -0
- package/dist/conversation-binding-route-DFVLUdYF.js +115 -0
- package/dist/{directory-config-CNBz8lJa.js → directory-config-DqfQ42OV.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-CFKUtW9E.js → directory-live-BPaNHjmP.js} +2 -2
- package/dist/{group-policy-c4RP9bjc.js → group-policy-BdwszjYn.js} +625 -773
- package/dist/{message-tool-api-BykQB4AU.js → message-tool-api-CJ0kjcg5.js} +23 -5
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-1nF1NtqT.js → monitor-Dq5Cmrvp.js} +3 -3
- package/dist/{outbound-adapter-S81tsswN.js → outbound-adapter-DYaI8ThX.js} +101 -66
- package/dist/{pipeline.runtime-BvYsM5JO.js → pipeline.runtime-Bd22U0ga.js} +494 -474
- package/dist/{policy-TapwbeaT.js → policy-CtQVbde1.js} +2 -1
- package/dist/{probe-HoEg_WxB.js → probe-0usmAb0i.js} +209 -22
- package/dist/{provider-CDNvBXUi.js → provider-CN_8hFv2.js} +296 -178
- package/dist/{relay-source-C9leF11u.js → relay-source-BNGpsdwV.js} +1 -1
- package/dist/{replies-CeOfv82I.js → replies-BSiRQOJ1.js} +48 -27
- package/dist/{resolve-channels-CNPrxaXY.js → resolve-channels-Czheznc8.js} +1 -1
- package/dist/{resolve-users-Dzomuwnr.js → resolve-users-BAOlNimr.js} +1 -1
- package/dist/runtime-api.js +11 -11
- package/dist/{scopes-cYXKkrRD.js → scopes-COSlmhnH.js} +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/{send-Nor0iBwY.js → send-DS9ICrBI.js} +88 -100
- package/dist/send-results-eeOu_HYm.js +23 -0
- package/dist/{send.runtime-BmgNe6S9.js → send.runtime-D_Bb6IuH.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-CbX1-Knh.js → setup-surface-BGnd2pSe.js} +6 -6
- package/dist/{shared-zdT5AMp-.js → shared-D5B-5hBg.js} +35 -9
- package/dist/{slash-dispatch.runtime-Bnr9GR1S.js → slash-dispatch.runtime-CilDmI0c.js} +2 -2
- 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 +57 -7
- package/package.json +9 -9
- package/dist/account-configured-BwfXBo_F.js +0 -14
- package/dist/account-inspect-Drw2gAiN.js +0 -89
- package/dist/account-reply-mode-DrUXogvO.js +0 -14
- package/dist/action-runtime.runtime-D9I6uc0Q.js +0 -2
- package/dist/actions.runtime-DLFyUkvg.js +0 -2
- package/dist/block-text-YtiNkqmx.js +0 -79
- package/dist/runtime-api-Cj9nxBNv.js +0 -10
- package/node_modules/p-map/index.d.ts +0 -155
- package/node_modules/p-map/index.js +0 -285
- package/node_modules/p-map/license +0 -9
- package/node_modules/p-map/package.json +0 -57
- package/node_modules/p-map/readme.md +0 -190
- 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
- package/dist/{security-audit-DR097212.js → security-audit-B_yKr7MW.js} +1 -1
|
@@ -1,51 +1,37 @@
|
|
|
1
|
-
import {
|
|
2
|
-
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";
|
|
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-Bch9dYmA.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
|
-
import { buildOutboundBaseSessionKey, normalizeMessageChannel } from "openclaw/plugin-sdk/routing";
|
|
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";
|
|
24
24
|
import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
|
|
25
25
|
import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
|
|
26
26
|
import { sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
|
|
27
|
-
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
28
27
|
import { createApproverRestrictedNativeApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
29
28
|
import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
30
29
|
import { createChannelNativeOriginTargetResolver, createNativeApprovalForwardingFallbackSuppressor } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
31
30
|
import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
|
|
32
31
|
import { resolveReactionMessageId } from "openclaw/plugin-sdk/channel-actions";
|
|
33
32
|
import { normalizeLegacyInteractiveReply, normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
|
|
34
|
-
import {
|
|
35
|
-
|
|
36
|
-
function resolveSlackAutoThreadId(params) {
|
|
37
|
-
const context = params.toolContext;
|
|
38
|
-
if (!context?.currentChannelId && !context?.currentMessagingTarget) return;
|
|
39
|
-
if (!slackContextTargetsMatch(params.to, context)) return;
|
|
40
|
-
if (!context.currentThreadTs) {
|
|
41
|
-
if (context.sameChannelThreadRequired) throw new Error("Slack thread context is required for same-channel replies from a threaded Slack turn. Set topLevel=true or threadId=null to post at the channel root.");
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
if (context.replyToMode !== "all" && !isSingleUseReplyToMode(context.replyToMode ?? "off")) return;
|
|
45
|
-
if (isSingleUseReplyToMode(context.replyToMode ?? "off") && context.hasRepliedRef?.value) return;
|
|
46
|
-
return context.currentThreadTs;
|
|
47
|
-
}
|
|
48
|
-
//#endregion
|
|
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";
|
|
49
35
|
//#region extensions/slack/src/approval-native.ts
|
|
50
36
|
function resolveSlackNativeSuppressionAccountId({ target, request }) {
|
|
51
37
|
return normalizeOptionalString(target.accountId) ?? normalizeOptionalString(request.request.turnSourceAccountId);
|
|
@@ -103,7 +89,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
103
89
|
channelLabel: "Slack",
|
|
104
90
|
describeExecApprovalSetup: ({ accountId }) => {
|
|
105
91
|
const prefix = accountId && accountId !== "default" ? `channels.slack.accounts.${accountId}` : "channels.slack";
|
|
106
|
-
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.`;
|
|
107
93
|
},
|
|
108
94
|
listAccountIds: listSlackAccountIds,
|
|
109
95
|
hasApprovers: ({ cfg, accountId }) => getSlackExecApprovalApprovers({
|
|
@@ -145,7 +131,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
145
131
|
approvalKind,
|
|
146
132
|
request
|
|
147
133
|
}),
|
|
148
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
134
|
+
load: async () => (await import("./approval-handler.runtime-DYv0UIZS.js")).slackApprovalNativeRuntime
|
|
149
135
|
})
|
|
150
136
|
});
|
|
151
137
|
const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
|
|
@@ -207,7 +193,7 @@ function resolveSlackPresentationText(content, presentation) {
|
|
|
207
193
|
}
|
|
208
194
|
function renderSlackActionPresentation(presentation) {
|
|
209
195
|
if (!presentation) return { usesPresentationTextFallback: false };
|
|
210
|
-
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;
|
|
211
197
|
const usesPresentationTextFallback = !renderedBlocks || renderedBlocks.length > 50;
|
|
212
198
|
const blocks = usesPresentationTextFallback ? void 0 : renderedBlocks;
|
|
213
199
|
return {
|
|
@@ -221,16 +207,22 @@ async function handleSlackMessageAction(params) {
|
|
|
221
207
|
const { action, cfg, params: actionParams } = ctx;
|
|
222
208
|
const accountId = ctx.accountId ?? void 0;
|
|
223
209
|
const resolveChannelId = () => {
|
|
224
|
-
const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to", { required: true });
|
|
210
|
+
const channelId = readStringParam$1(actionParams, "channelId") ?? readStringParam$1(actionParams, "to", { required: true });
|
|
225
211
|
return normalizeChannelId ? normalizeChannelId(channelId) : channelId;
|
|
226
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);
|
|
227
219
|
if (action === "send") {
|
|
228
|
-
const to = readStringParam(actionParams, "to", { required: true });
|
|
229
|
-
const content = readStringParam(actionParams, "message", {
|
|
220
|
+
const to = readStringParam$1(actionParams, "to", { required: true });
|
|
221
|
+
const content = readStringParam$1(actionParams, "message", {
|
|
230
222
|
required: false,
|
|
231
223
|
allowEmpty: true
|
|
232
224
|
});
|
|
233
|
-
const mediaUrl = readStringParam(actionParams, "media", { trim: false });
|
|
225
|
+
const mediaUrl = readStringParam$1(actionParams, "media", { trim: false });
|
|
234
226
|
const presentation = normalizeMessagePresentation(actionParams.presentation);
|
|
235
227
|
const interactive = normalizeLegacyInteractiveReply(actionParams.interactive);
|
|
236
228
|
const hasStructuredContent = Boolean(presentation || interactive?.blocks.length);
|
|
@@ -247,8 +239,8 @@ async function handleSlackMessageAction(params) {
|
|
|
247
239
|
if (!content && preparedMessages.length === 0 && !mediaUrl) throw new Error("Slack send requires message, blocks, or media.");
|
|
248
240
|
const replyBroadcast = readBooleanParam(actionParams, "replyBroadcast");
|
|
249
241
|
if (replyBroadcast && mediaUrl) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
|
|
250
|
-
const threadId = readStringParam(actionParams, "threadId");
|
|
251
|
-
const replyTo = readStringParam(actionParams, "replyTo");
|
|
242
|
+
const threadId = readStringParam$1(actionParams, "threadId");
|
|
243
|
+
const replyTo = readStringParam$1(actionParams, "replyTo");
|
|
252
244
|
const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
|
|
253
245
|
const toolContext = preparedMessages.length > 0 ? {
|
|
254
246
|
...ctx.toolContext,
|
|
@@ -261,7 +253,10 @@ async function handleSlackMessageAction(params) {
|
|
|
261
253
|
mediaUrl: mediaUrl ?? void 0,
|
|
262
254
|
...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
|
|
263
255
|
accountId,
|
|
264
|
-
threadTs:
|
|
256
|
+
threadTs: resolveSlackThreadTsValue({
|
|
257
|
+
replyToId: replyTo,
|
|
258
|
+
threadId
|
|
259
|
+
}),
|
|
265
260
|
...topLevel ? { topLevel: true } : {},
|
|
266
261
|
...replyBroadcast ? { replyBroadcast } : {}
|
|
267
262
|
}, cfg, toolContext);
|
|
@@ -273,7 +268,7 @@ async function handleSlackMessageAction(params) {
|
|
|
273
268
|
});
|
|
274
269
|
if (messageIdRaw == null) throw new Error("messageId required. Provide messageId explicitly or react to the current inbound message.");
|
|
275
270
|
const messageId = String(messageIdRaw);
|
|
276
|
-
const emoji = readStringParam(actionParams, "emoji", { allowEmpty: true });
|
|
271
|
+
const emoji = readStringParam$1(actionParams, "emoji", { allowEmpty: true });
|
|
277
272
|
const remove = typeof actionParams.remove === "boolean" ? actionParams.remove : void 0;
|
|
278
273
|
return await invoke({
|
|
279
274
|
action: "react",
|
|
@@ -285,7 +280,7 @@ async function handleSlackMessageAction(params) {
|
|
|
285
280
|
}, cfg, ctx.toolContext);
|
|
286
281
|
}
|
|
287
282
|
if (action === "reactions") {
|
|
288
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
283
|
+
const messageId = readStringParam$1(actionParams, "messageId", { required: true });
|
|
289
284
|
return await invoke({
|
|
290
285
|
action: "reactions",
|
|
291
286
|
channelId: resolveChannelId(),
|
|
@@ -299,17 +294,17 @@ async function handleSlackMessageAction(params) {
|
|
|
299
294
|
action: "readMessages",
|
|
300
295
|
channelId: resolveChannelId(),
|
|
301
296
|
limit: actionParams.limit,
|
|
302
|
-
before: readStringParam(actionParams, "before"),
|
|
303
|
-
after: readStringParam(actionParams, "after"),
|
|
304
|
-
messageId: readStringParam(actionParams, "messageId"),
|
|
297
|
+
before: readStringParam$1(actionParams, "before"),
|
|
298
|
+
after: readStringParam$1(actionParams, "after"),
|
|
299
|
+
messageId: readStringParam$1(actionParams, "messageId"),
|
|
305
300
|
accountId
|
|
306
301
|
};
|
|
307
|
-
if (includeReadThreadId) readAction.threadId = readStringParam(actionParams, "threadId");
|
|
302
|
+
if (includeReadThreadId) readAction.threadId = readStringParam$1(actionParams, "threadId");
|
|
308
303
|
return await invoke(readAction, cfg, ctx.toolContext);
|
|
309
304
|
}
|
|
310
305
|
if (action === "edit") {
|
|
311
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
312
|
-
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 });
|
|
313
308
|
const presentation = normalizeMessagePresentation(actionParams.presentation);
|
|
314
309
|
const renderedPresentation = renderSlackActionPresentation(presentation);
|
|
315
310
|
const blocks = renderedPresentation.usesPresentationTextFallback ? void 0 : renderedPresentation.blocks;
|
|
@@ -317,7 +312,15 @@ async function handleSlackMessageAction(params) {
|
|
|
317
312
|
text: content,
|
|
318
313
|
presentation
|
|
319
314
|
}) : resolveSlackPresentationText(content, presentation);
|
|
320
|
-
|
|
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
|
+
}
|
|
321
324
|
if (!accessibleContent && !blocks) throw new Error("Slack edit requires message or blocks.");
|
|
322
325
|
return await invoke({
|
|
323
326
|
action: "editMessage",
|
|
@@ -329,7 +332,7 @@ async function handleSlackMessageAction(params) {
|
|
|
329
332
|
}, cfg, ctx.toolContext);
|
|
330
333
|
}
|
|
331
334
|
if (action === "delete") {
|
|
332
|
-
const messageId = readStringParam(actionParams, "messageId", { required: true });
|
|
335
|
+
const messageId = readStringParam$1(actionParams, "messageId", { required: true });
|
|
333
336
|
return await invoke({
|
|
334
337
|
action: "deleteMessage",
|
|
335
338
|
channelId: resolveChannelId(),
|
|
@@ -338,7 +341,7 @@ async function handleSlackMessageAction(params) {
|
|
|
338
341
|
}, cfg, ctx.toolContext);
|
|
339
342
|
}
|
|
340
343
|
if (action === "pin" || action === "unpin" || action === "list-pins") {
|
|
341
|
-
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 });
|
|
342
345
|
return await invoke({
|
|
343
346
|
action: action === "pin" ? "pinMessage" : action === "unpin" ? "unpinMessage" : "listPins",
|
|
344
347
|
channelId: resolveChannelId(),
|
|
@@ -350,7 +353,7 @@ async function handleSlackMessageAction(params) {
|
|
|
350
353
|
const requesterAccountId = ctx.requesterAccountId ? normalizeAccountId(ctx.requesterAccountId) : void 0;
|
|
351
354
|
const targetAccountId = normalizeAccountId(accountId ?? resolveDefaultSlackAccountId(cfg));
|
|
352
355
|
const requesterUserId = normalizeOptionalLowercaseString(ctx.toolContext?.currentChannelProvider) === "slack" && requesterAccountId !== void 0 && requesterAccountId === targetAccountId ? normalizeOptionalString(ctx.requesterSenderId) : void 0;
|
|
353
|
-
const userId = readStringParam(actionParams, "userId") ?? requesterUserId;
|
|
356
|
+
const userId = readStringParam$1(actionParams, "userId") ?? requesterUserId;
|
|
354
357
|
if (!userId) throw new Error("member-info requires a userId outside a current Slack conversation.");
|
|
355
358
|
return await invoke({
|
|
356
359
|
action: "memberInfo",
|
|
@@ -360,16 +363,16 @@ async function handleSlackMessageAction(params) {
|
|
|
360
363
|
}
|
|
361
364
|
if (action === "emoji-list") return await invoke({
|
|
362
365
|
action: "emojiList",
|
|
363
|
-
limit: readPositiveIntegerParam(actionParams, "limit", { message: "limit must be a positive integer." }),
|
|
366
|
+
limit: readPositiveIntegerParam$1(actionParams, "limit", { message: "limit must be a positive integer." }),
|
|
364
367
|
accountId
|
|
365
368
|
}, cfg, ctx.toolContext);
|
|
366
369
|
if (action === "download-file") {
|
|
367
|
-
const fileIdParam = readStringParam(actionParams, "fileId");
|
|
368
|
-
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");
|
|
369
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.");
|
|
370
|
-
const fileId = readStringParam(actionParams, "fileId", { required: true });
|
|
371
|
-
const channelId = readStringParam(actionParams, "channelId") ?? readStringParam(actionParams, "to");
|
|
372
|
-
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");
|
|
373
376
|
return await invoke({
|
|
374
377
|
action: "downloadFile",
|
|
375
378
|
fileId,
|
|
@@ -380,18 +383,18 @@ async function handleSlackMessageAction(params) {
|
|
|
380
383
|
}
|
|
381
384
|
if (action === "upload-file") {
|
|
382
385
|
if (readBooleanParam(actionParams, "replyBroadcast")) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
|
|
383
|
-
const to = readStringParam(actionParams, "to") ?? resolveChannelId();
|
|
384
|
-
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 });
|
|
385
388
|
if (!filePath) throw new Error("upload-file requires filePath, path, or media");
|
|
386
|
-
const threadId = readStringParam(actionParams, "threadId") ?? readStringParam(actionParams, "replyTo");
|
|
389
|
+
const threadId = readStringParam$1(actionParams, "threadId") ?? readStringParam$1(actionParams, "replyTo");
|
|
387
390
|
const topLevel = readBooleanParam(actionParams, "topLevel") === true || actionParams.threadId === null;
|
|
388
391
|
return await invoke({
|
|
389
392
|
action: "uploadFile",
|
|
390
393
|
to,
|
|
391
394
|
filePath,
|
|
392
|
-
initialComment: readStringParam(actionParams, "initialComment", { allowEmpty: true }) ?? readStringParam(actionParams, "message", { allowEmpty: true }) ?? "",
|
|
393
|
-
filename: readStringParam(actionParams, "filename"),
|
|
394
|
-
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"),
|
|
395
398
|
threadTs: threadId ?? void 0,
|
|
396
399
|
...readSlackForceDocument(actionParams) ? { forceDocument: true } : {},
|
|
397
400
|
...topLevel ? { topLevel: true } : {},
|
|
@@ -411,7 +414,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = /* @__PURE__ */ new Set([
|
|
|
411
414
|
"unpinMessage",
|
|
412
415
|
"uploadFile"
|
|
413
416
|
]);
|
|
414
|
-
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
417
|
+
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-BL3KzX13.js"));
|
|
415
418
|
function resolveSlackActionContext(ctx, toolContext) {
|
|
416
419
|
if (!toolContext && !ctx.mediaAccess && !ctx.mediaLocalRoots && !ctx.mediaReadFile && !ctx.conversationReadOrigin && !ctx.requesterAccountId && !ctx.requesterSenderId) return;
|
|
417
420
|
return {
|
|
@@ -426,6 +429,7 @@ function resolveSlackActionContext(ctx, toolContext) {
|
|
|
426
429
|
}
|
|
427
430
|
function createSlackActions(providerId, options) {
|
|
428
431
|
return {
|
|
432
|
+
providerOwnedReadGates: true,
|
|
429
433
|
describeMessageTool: describeSlackMessageTool,
|
|
430
434
|
extractToolSend: ({ args }) => extractSlackToolSend(args),
|
|
431
435
|
isToolDeliveryAction: ({ args }) => typeof args.action === "string" && SLACK_TOOL_DELIVERY_ACTIONS.has(args.action),
|
|
@@ -464,6 +468,58 @@ function shouldUseWorkspaceAwareSlackActionSend(rawTarget, context) {
|
|
|
464
468
|
return false;
|
|
465
469
|
}
|
|
466
470
|
//#endregion
|
|
471
|
+
//#region extensions/slack/src/conversation-route-owner.ts
|
|
472
|
+
function inspectSlackConversationRouteOwner(params) {
|
|
473
|
+
const installationKind = getSlackInstallationKind(params.accountId);
|
|
474
|
+
const direct = params.conversation.kind === "direct";
|
|
475
|
+
const target = parseSlackTarget(params.conversation.peerId, { defaultKind: direct ? "user" : "channel" });
|
|
476
|
+
if (!target || target.kind !== (direct ? "user" : "channel")) return null;
|
|
477
|
+
const targetIsEnterprise = Boolean(target.teamId);
|
|
478
|
+
if (!targetIsEnterprise && (installationKind === "degraded" || !installationKind)) return { kind: "unavailable" };
|
|
479
|
+
if (targetIsEnterprise && installationKind === "workspace") return null;
|
|
480
|
+
const contextTeamId = params.conversation.context?.teamId?.trim();
|
|
481
|
+
if (contextTeamId && target.teamId && contextTeamId.toLowerCase() !== target.teamId.toLowerCase()) return null;
|
|
482
|
+
const teamId = contextTeamId ?? target.teamId;
|
|
483
|
+
if (!direct && params.conversation.nativeChannelId && params.conversation.nativeChannelId.toLowerCase() !== target.id.toLowerCase()) return null;
|
|
484
|
+
const enterpriseRoute = installationKind === "enterprise" || targetIsEnterprise;
|
|
485
|
+
if (enterpriseRoute && !teamId) return null;
|
|
486
|
+
const enterpriseScope = enterpriseRoute && teamId ? { teamId } : void 0;
|
|
487
|
+
const route = resolveAgentRoute({
|
|
488
|
+
cfg: normalizeSlackRouteBindingConfig(params.cfg),
|
|
489
|
+
channel: "slack",
|
|
490
|
+
accountId: params.accountId,
|
|
491
|
+
teamId,
|
|
492
|
+
peer: {
|
|
493
|
+
kind: params.conversation.kind,
|
|
494
|
+
id: qualifySlackRoutePeerId({
|
|
495
|
+
id: target.id,
|
|
496
|
+
kind: direct ? "user" : "channel",
|
|
497
|
+
eventScope: enterpriseScope
|
|
498
|
+
})
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
const baseConversationId = qualifySlackConversationId(direct ? `user:${target.id}` : target.id, enterpriseScope);
|
|
502
|
+
const bindingRoute = resolveSlackConversationBindingRoute({
|
|
503
|
+
cfg: params.cfg,
|
|
504
|
+
route,
|
|
505
|
+
accountId: params.accountId,
|
|
506
|
+
baseConversationId,
|
|
507
|
+
runtimeBindingThreadId: params.conversation.threadId,
|
|
508
|
+
bindingsEnabled: !enterpriseRoute,
|
|
509
|
+
touchBinding: false
|
|
510
|
+
});
|
|
511
|
+
if (!bindingRoute.runtimeRoute.bindingOwnerAvailable) return { kind: "unavailable" };
|
|
512
|
+
if (bindingRoute.runtimeRoute.pluginId) return {
|
|
513
|
+
kind: "plugin",
|
|
514
|
+
pluginId: bindingRoute.runtimeRoute.pluginId,
|
|
515
|
+
fallbackAgentId: route.agentId
|
|
516
|
+
};
|
|
517
|
+
return {
|
|
518
|
+
kind: "agent",
|
|
519
|
+
agentId: bindingRoute.runtimeRoute.boundAgentId ?? bindingRoute.configuredRoute?.boundAgentId ?? route.agentId
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
//#endregion
|
|
467
523
|
//#region extensions/slack/src/threading-tool-context.ts
|
|
468
524
|
function buildSlackThreadingToolContext(params) {
|
|
469
525
|
const account = resolveSlackAccount({
|
|
@@ -500,41 +556,23 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
|
|
|
500
556
|
const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
|
|
501
557
|
const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
|
|
502
558
|
const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
|
|
503
|
-
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-
|
|
504
|
-
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-
|
|
505
|
-
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"));
|
|
506
562
|
async function resolveSlackHandleAction() {
|
|
507
563
|
return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
|
|
508
564
|
}
|
|
509
565
|
function shouldTreatSlackDeliveredTextAsVisible(params) {
|
|
510
566
|
return params.kind === "block" && typeof params.text === "string" && params.text.trim().length > 0;
|
|
511
567
|
}
|
|
512
|
-
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-
|
|
513
|
-
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
514
|
-
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
515
|
-
const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
516
|
-
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
517
|
-
const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-
|
|
518
|
-
const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-
|
|
519
|
-
const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-
|
|
520
|
-
async function resolveSlackSendContext(params) {
|
|
521
|
-
const account = resolveSlackAccount({
|
|
522
|
-
cfg: params.cfg,
|
|
523
|
-
accountId: params.accountId
|
|
524
|
-
});
|
|
525
|
-
const target = parseSlackTarget(params.to, { defaultKind: "channel" });
|
|
526
|
-
assertSlackDetachedTargetAllowed(account.accountId, target?.teamId);
|
|
527
|
-
const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
|
|
528
|
-
const token = resolveSlackOperationToken(account, "write");
|
|
529
|
-
const botToken = account.botToken?.trim();
|
|
530
|
-
const tokenOverride = token && token !== botToken ? token : void 0;
|
|
531
|
-
return {
|
|
532
|
-
send,
|
|
533
|
-
threadTsValue: resolveSlackThreadTsValue(params),
|
|
534
|
-
tokenOverride,
|
|
535
|
-
to: params.to
|
|
536
|
-
};
|
|
537
|
-
}
|
|
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));
|
|
538
576
|
async function setSlackHeartbeatThreadStatus(params) {
|
|
539
577
|
const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
|
|
540
578
|
const target = parseSlackTarget(params.to, { defaultKind: "channel" });
|
|
@@ -565,15 +603,6 @@ async function setSlackHeartbeatThreadStatus(params) {
|
|
|
565
603
|
logVerbose(`slack heartbeat status update failed: ${formatSlackError(error)}`);
|
|
566
604
|
}
|
|
567
605
|
}
|
|
568
|
-
function withSlackSendOverride(params) {
|
|
569
|
-
return {
|
|
570
|
-
...params.deps,
|
|
571
|
-
slack: async (to, text, opts) => await params.send(to, text, {
|
|
572
|
-
...opts,
|
|
573
|
-
...params.tokenOverride ? { token: params.tokenOverride } : {}
|
|
574
|
-
})
|
|
575
|
-
};
|
|
576
|
-
}
|
|
577
606
|
function resolveSlackRouteTarget(raw) {
|
|
578
607
|
const target = parseSlackTarget(raw, { defaultKind: "channel" });
|
|
579
608
|
if (!target) return null;
|
|
@@ -735,72 +764,16 @@ const slackChannelOutbound = {
|
|
|
735
764
|
}
|
|
736
765
|
}),
|
|
737
766
|
sendPayload: async (ctx) => {
|
|
738
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
739
|
-
cfg: ctx.cfg,
|
|
740
|
-
accountId: ctx.accountId ?? void 0,
|
|
741
|
-
to: ctx.to,
|
|
742
|
-
deps: ctx.deps,
|
|
743
|
-
replyToId: ctx.replyToId,
|
|
744
|
-
threadId: ctx.threadId
|
|
745
|
-
});
|
|
746
767
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
747
|
-
return await slackOutbound.sendPayload(
|
|
748
|
-
...ctx,
|
|
749
|
-
to,
|
|
750
|
-
replyToId: threadTsValue,
|
|
751
|
-
threadId: null,
|
|
752
|
-
deliveryQueueId: void 0,
|
|
753
|
-
deps: withSlackSendOverride({
|
|
754
|
-
deps: ctx.deps,
|
|
755
|
-
send,
|
|
756
|
-
tokenOverride
|
|
757
|
-
})
|
|
758
|
-
});
|
|
768
|
+
return await slackOutbound.sendPayload(ctx);
|
|
759
769
|
},
|
|
760
770
|
sendText: async (ctx) => {
|
|
761
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
762
|
-
cfg: ctx.cfg,
|
|
763
|
-
accountId: ctx.accountId ?? void 0,
|
|
764
|
-
to: ctx.to,
|
|
765
|
-
deps: ctx.deps,
|
|
766
|
-
replyToId: ctx.replyToId,
|
|
767
|
-
threadId: ctx.threadId
|
|
768
|
-
});
|
|
769
771
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
770
|
-
return await slackOutbound.sendText(
|
|
771
|
-
...ctx,
|
|
772
|
-
to,
|
|
773
|
-
replyToId: threadTsValue,
|
|
774
|
-
threadId: null,
|
|
775
|
-
deps: withSlackSendOverride({
|
|
776
|
-
deps: ctx.deps,
|
|
777
|
-
send,
|
|
778
|
-
tokenOverride
|
|
779
|
-
})
|
|
780
|
-
});
|
|
772
|
+
return await slackOutbound.sendText(ctx);
|
|
781
773
|
},
|
|
782
774
|
sendMedia: async (ctx) => {
|
|
783
|
-
const { send, threadTsValue, tokenOverride, to } = await resolveSlackSendContext({
|
|
784
|
-
cfg: ctx.cfg,
|
|
785
|
-
accountId: ctx.accountId ?? void 0,
|
|
786
|
-
to: ctx.to,
|
|
787
|
-
deps: ctx.deps,
|
|
788
|
-
replyToId: ctx.replyToId,
|
|
789
|
-
threadId: ctx.threadId
|
|
790
|
-
});
|
|
791
775
|
const { slackOutbound } = await loadSlackOutboundAdapterModule();
|
|
792
|
-
return await slackOutbound.sendMedia(
|
|
793
|
-
...ctx,
|
|
794
|
-
to,
|
|
795
|
-
replyToId: threadTsValue,
|
|
796
|
-
threadId: null,
|
|
797
|
-
deliveryQueueId: void 0,
|
|
798
|
-
deps: withSlackSendOverride({
|
|
799
|
-
deps: ctx.deps,
|
|
800
|
-
send,
|
|
801
|
-
tokenOverride
|
|
802
|
-
})
|
|
803
|
-
});
|
|
776
|
+
return await slackOutbound.sendMedia(ctx);
|
|
804
777
|
}
|
|
805
778
|
};
|
|
806
779
|
const slackMessageAdapterBase = createChannelMessageAdapterFromOutbound({
|
|
@@ -886,6 +859,7 @@ const slackPlugin = createChatChannelPlugin({
|
|
|
886
859
|
},
|
|
887
860
|
conversationBindings: { isCurrentConversationBindingSupported: ({ accountId }) => isSlackWorkspaceInstallation(accountId) },
|
|
888
861
|
messaging: {
|
|
862
|
+
resolveConversationRouteOwner: inspectSlackConversationRouteOwner,
|
|
889
863
|
targetPrefixes: ["slack"],
|
|
890
864
|
directTargetStyle: "user-prefixed",
|
|
891
865
|
targetIdComparison: "lowercase",
|
|
@@ -1175,4 +1149,4 @@ const slackPlugin = createChatChannelPlugin({
|
|
|
1175
1149
|
outbound: slackChannelOutbound
|
|
1176
1150
|
});
|
|
1177
1151
|
//#endregion
|
|
1178
|
-
export { buildSlackThreadingToolContext as n,
|
|
1152
|
+
export { buildSlackThreadingToolContext as n, slackPlugin as t };
|
|
@@ -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,13 +1,12 @@
|
|
|
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";
|
|
8
8
|
//#region extensions/slack/src/channel-type.ts
|
|
9
9
|
var channel_type_exports = /* @__PURE__ */ __exportAll({
|
|
10
|
-
resetSlackChannelTypeCacheForTest: () => resetSlackChannelTypeCacheForTest,
|
|
11
10
|
resolveSlackChannelType: () => resolveSlackChannelType,
|
|
12
11
|
resolveSlackConversationInfo: () => resolveSlackConversationInfo
|
|
13
12
|
});
|
|
@@ -102,8 +101,5 @@ async function resolveSlackConversationInfo(params) {
|
|
|
102
101
|
async function resolveSlackChannelType(params) {
|
|
103
102
|
return (await resolveSlackConversationInfo(params)).type;
|
|
104
103
|
}
|
|
105
|
-
function resetSlackChannelTypeCacheForTest() {
|
|
106
|
-
SLACK_CONVERSATION_INFO_CACHE.clear();
|
|
107
|
-
}
|
|
108
104
|
//#endregion
|
|
109
105
|
export { resolveSlackChannelType as n, resolveSlackConversationInfo as r, channel_type_exports as t };
|