@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
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { hasConfiguredAccountValue } from "openclaw/plugin-sdk/account-resolution";
|
|
2
|
+
import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
|
|
3
|
+
//#region extensions/slack/src/account-configured.ts
|
|
4
|
+
function hasSlackAccountCredentials(params) {
|
|
5
|
+
if (!params.identityTokenConfigured) return false;
|
|
6
|
+
const mode = params.config.mode ?? "socket";
|
|
7
|
+
if (mode === "http") return hasConfiguredAccountValue(params.config.signingSecret);
|
|
8
|
+
if (mode === "relay") {
|
|
9
|
+
const relay = params.config.relay;
|
|
10
|
+
return hasConfiguredAccountValue(relay?.url) && hasConfiguredAccountValue(relay?.authToken) && hasConfiguredAccountValue(relay?.gatewayId);
|
|
11
|
+
}
|
|
12
|
+
return params.appTokenConfigured;
|
|
13
|
+
}
|
|
14
|
+
function isSlackPluginAccountConfigured(account) {
|
|
15
|
+
const identityToken = account.identity === "user" ? account.userToken : account.botToken;
|
|
16
|
+
return hasSlackAccountCredentials({
|
|
17
|
+
config: account.config,
|
|
18
|
+
identityTokenConfigured: Boolean(identityToken?.trim()),
|
|
19
|
+
appTokenConfigured: Boolean(account.appToken?.trim())
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function isSlackSetupAccountConfigured(account) {
|
|
23
|
+
if (account.config.mode === "relay") return isSlackPluginAccountConfigured(account);
|
|
24
|
+
const identityToken = account.identity === "user" ? account.userToken : account.botToken;
|
|
25
|
+
const configuredIdentityToken = account.identity === "user" ? account.config.userToken : account.config.botToken;
|
|
26
|
+
return hasSlackAccountCredentials({
|
|
27
|
+
config: account.config,
|
|
28
|
+
identityTokenConfigured: Boolean(identityToken?.trim()) || hasConfiguredSecretInput(configuredIdentityToken),
|
|
29
|
+
appTokenConfigured: Boolean(account.appToken?.trim()) || hasConfiguredSecretInput(account.config.appToken)
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { isSlackPluginAccountConfigured as n, isSlackSetupAccountConfigured as r, hasSlackAccountCredentials as t };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { t as hasSlackAccountCredentials } from "./account-configured-sUohAxZr.js";
|
|
2
|
+
import { i as resolveDefaultSlackAccountId, r as mergeSlackAccountConfig } from "./accounts-Dm_H77gH.js";
|
|
3
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
4
|
+
import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
5
|
+
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
|
+
//#region extensions/slack/src/account-inspect.ts
|
|
7
|
+
function inspectSlackToken(value) {
|
|
8
|
+
const token = normalizeSecretInputString(value);
|
|
9
|
+
if (token) return {
|
|
10
|
+
token,
|
|
11
|
+
source: "config",
|
|
12
|
+
status: "available"
|
|
13
|
+
};
|
|
14
|
+
if (hasConfiguredSecretInput(value)) return {
|
|
15
|
+
source: "config",
|
|
16
|
+
status: "configured_unavailable"
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
source: "none",
|
|
20
|
+
status: "missing"
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function resolveInspectedSlackToken(configured, envToken) {
|
|
24
|
+
return configured.status === "missing" && envToken ? {
|
|
25
|
+
token: envToken,
|
|
26
|
+
source: "env",
|
|
27
|
+
status: "available"
|
|
28
|
+
} : configured;
|
|
29
|
+
}
|
|
30
|
+
function inspectSlackAccount(params) {
|
|
31
|
+
const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
|
|
32
|
+
const merged = mergeSlackAccountConfig(params.cfg, accountId);
|
|
33
|
+
const enabled = params.cfg.channels?.slack?.enabled !== false && merged.enabled !== false;
|
|
34
|
+
const allowEnv = accountId === DEFAULT_ACCOUNT_ID;
|
|
35
|
+
const mode = merged.mode ?? "socket";
|
|
36
|
+
const identity = merged.postAs ?? "bot";
|
|
37
|
+
const isHttpMode = mode === "http";
|
|
38
|
+
const isRelayMode = mode === "relay";
|
|
39
|
+
const configBot = inspectSlackToken(merged.botToken);
|
|
40
|
+
const configApp = inspectSlackToken(merged.appToken);
|
|
41
|
+
const configSigningSecret = inspectSlackToken(merged.signingSecret);
|
|
42
|
+
const configUser = inspectSlackToken(merged.userToken);
|
|
43
|
+
const envBot = allowEnv ? normalizeSecretInputString(params.envBotToken ?? process.env.SLACK_BOT_TOKEN) : void 0;
|
|
44
|
+
const envApp = allowEnv && !isRelayMode ? normalizeSecretInputString(params.envAppToken ?? process.env.SLACK_APP_TOKEN) : void 0;
|
|
45
|
+
const envUser = allowEnv ? normalizeSecretInputString(params.envUserToken ?? process.env.SLACK_USER_TOKEN) : void 0;
|
|
46
|
+
const botCredential = resolveInspectedSlackToken(configBot, envBot);
|
|
47
|
+
const appCredential = resolveInspectedSlackToken(configApp, envApp);
|
|
48
|
+
const userCredential = resolveInspectedSlackToken(configUser, envUser);
|
|
49
|
+
return {
|
|
50
|
+
accountId,
|
|
51
|
+
enabled,
|
|
52
|
+
...identity === "user" ? { identity } : {},
|
|
53
|
+
name: normalizeOptionalString(merged.name),
|
|
54
|
+
mode,
|
|
55
|
+
botToken: botCredential.token,
|
|
56
|
+
appToken: appCredential.token,
|
|
57
|
+
...isHttpMode ? { signingSecret: configSigningSecret.token } : {},
|
|
58
|
+
userToken: userCredential.token,
|
|
59
|
+
botTokenSource: botCredential.source,
|
|
60
|
+
appTokenSource: appCredential.source,
|
|
61
|
+
...isHttpMode ? { signingSecretSource: configSigningSecret.source } : {},
|
|
62
|
+
userTokenSource: userCredential.source,
|
|
63
|
+
botTokenStatus: botCredential.status,
|
|
64
|
+
appTokenStatus: appCredential.status,
|
|
65
|
+
...isHttpMode ? { signingSecretStatus: configSigningSecret.status } : {},
|
|
66
|
+
userTokenStatus: userCredential.status,
|
|
67
|
+
configured: hasSlackAccountCredentials({
|
|
68
|
+
config: merged,
|
|
69
|
+
identityTokenConfigured: (identity === "user" ? userCredential : botCredential).status !== "missing",
|
|
70
|
+
appTokenConfigured: appCredential.status !== "missing"
|
|
71
|
+
}),
|
|
72
|
+
config: merged,
|
|
73
|
+
groupPolicy: merged.groupPolicy,
|
|
74
|
+
textChunkLimit: merged.textChunkLimit,
|
|
75
|
+
mediaMaxMb: merged.mediaMaxMb,
|
|
76
|
+
reactionNotifications: merged.reactionNotifications,
|
|
77
|
+
reactionAllowlist: merged.reactionAllowlist,
|
|
78
|
+
replyToMode: merged.replyToMode,
|
|
79
|
+
replyToModeByChatType: merged.replyToModeByChatType,
|
|
80
|
+
actions: merged.actions,
|
|
81
|
+
slashCommand: merged.slashCommand,
|
|
82
|
+
dm: merged.dm,
|
|
83
|
+
channels: merged.channels
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
87
|
+
export { inspectSlackAccount as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
1
|
+
import { t as inspectSlackAccount } from "./account-inspect-CN2hBsim.js";
|
|
2
2
|
//#region extensions/slack/account-inspect-api.ts
|
|
3
3
|
function inspectSlackReadOnlyAccount(cfg, accountId) {
|
|
4
4
|
return inspectSlackAccount({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { t as hasSlackAccountCredentials } from "./account-configured-sUohAxZr.js";
|
|
1
2
|
import { DEFAULT_ACCOUNT_ID, createAccountListHelpers, hasConfiguredAccountValue, normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
2
3
|
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
3
4
|
import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -46,16 +47,12 @@ const { listAccountIds, resolveDefaultAccountId, resolveAccountConfig: resolveMe
|
|
|
46
47
|
],
|
|
47
48
|
hasImplicitDefaultAccount: (cfg) => {
|
|
48
49
|
const slack = cfg.channels?.slack;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
if (!(hasConfiguredAccountValue(slack?.botToken) || hasConfiguredAccountValue(process.env.SLACK_BOT_TOKEN))) return false;
|
|
56
|
-
if (slack?.mode === "http") return hasConfiguredAccountValue(slack.signingSecret);
|
|
57
|
-
if (slack?.mode === "relay") return hasConfiguredAccountValue(slack.relay?.url) && hasConfiguredAccountValue(slack.relay?.authToken) && hasConfiguredAccountValue(slack.relay?.gatewayId);
|
|
58
|
-
return hasConfiguredAccountValue(slack?.appToken) || hasConfiguredAccountValue(process.env.SLACK_APP_TOKEN);
|
|
50
|
+
const userIdentity = slack?.postAs === "user";
|
|
51
|
+
return hasSlackAccountCredentials({
|
|
52
|
+
config: slack ?? {},
|
|
53
|
+
identityTokenConfigured: hasConfiguredAccountValue(userIdentity ? slack?.userToken : slack?.botToken) || hasConfiguredAccountValue(userIdentity ? process.env.SLACK_USER_TOKEN : process.env.SLACK_BOT_TOKEN),
|
|
54
|
+
appTokenConfigured: hasConfiguredAccountValue(slack?.appToken) || hasConfiguredAccountValue(process.env.SLACK_APP_TOKEN)
|
|
55
|
+
});
|
|
59
56
|
}
|
|
60
57
|
});
|
|
61
58
|
const listSlackAccountIds = listAccountIds;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, l as resolveSlackOperationToken, o as resolveSlackAccountAllowFrom } from "./accounts-
|
|
1
|
+
import { a as resolveSlackAccount, l as resolveSlackOperationToken, o as resolveSlackAccountAllowFrom } from "./accounts-Dm_H77gH.js";
|
|
2
2
|
export { resolveSlackAccount, resolveSlackAccountAllowFrom, resolveSlackOperationToken };
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { a as parseSlackTarget, n as formatSlackTarget, o as resolveSlackChannelId } from "./target-parsing-BnMD2ZqZ.js";
|
|
2
2
|
import { t as slackContextTargetsMatch } from "./targets-Cx5W_n3W.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, t as buildSlackChannelIdCandidates, yt as getSlackInstallationKind } from "./group-policy-BdwszjYn.js";
|
|
4
|
+
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-CtQVbde1.js";
|
|
5
|
+
import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.js";
|
|
6
6
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
7
7
|
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
8
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
9
9
|
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
10
10
|
import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
|
|
11
|
+
import { createActionGate, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
|
|
11
12
|
import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
12
13
|
//#region extensions/slack/src/action-runtime.ts
|
|
13
14
|
const messagingActions = /* @__PURE__ */ new Set([
|
|
15
|
+
"openConversation",
|
|
14
16
|
"sendMessage",
|
|
15
17
|
"uploadFile",
|
|
16
18
|
"editMessage",
|
|
@@ -24,10 +26,10 @@ const pinActions = /* @__PURE__ */ new Set([
|
|
|
24
26
|
"unpinMessage",
|
|
25
27
|
"listPins"
|
|
26
28
|
]);
|
|
27
|
-
const
|
|
28
|
-
const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions
|
|
29
|
-
const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-
|
|
30
|
-
const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-
|
|
29
|
+
const SLACK_REACTION_RESULT_LIMIT = 100;
|
|
30
|
+
const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-BI7JkfVm.js").then((n) => n.t));
|
|
31
|
+
const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-DRuEK6mL.js"));
|
|
32
|
+
const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-DlFSKeIZ.js").then((n) => n.t));
|
|
31
33
|
function createLazySlackAction(key) {
|
|
32
34
|
return (async (...args) => {
|
|
33
35
|
const action = (await loadSlackActionsRuntime())[key];
|
|
@@ -42,6 +44,7 @@ const slackActionRuntime = {
|
|
|
42
44
|
listSlackEmojis: createLazySlackAction("listSlackEmojis"),
|
|
43
45
|
listSlackPins: createLazySlackAction("listSlackPins"),
|
|
44
46
|
listSlackReactions: createLazySlackAction("listSlackReactions"),
|
|
47
|
+
openSlackConversation: createLazySlackAction("openSlackConversation"),
|
|
45
48
|
parseSlackBlocksInput,
|
|
46
49
|
pinSlackMessage: createLazySlackAction("pinSlackMessage"),
|
|
47
50
|
reactSlackMessage: createLazySlackAction("reactSlackMessage"),
|
|
@@ -329,7 +332,7 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
329
332
|
});
|
|
330
333
|
}
|
|
331
334
|
await assertReadTargetAllowed(target);
|
|
332
|
-
const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ??
|
|
335
|
+
const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ?? SLACK_REACTION_RESULT_LIMIT, SLACK_REACTION_RESULT_LIMIT);
|
|
333
336
|
return jsonResult({
|
|
334
337
|
ok: true,
|
|
335
338
|
reactions: (await slackActionRuntime.listSlackReactions(channelId, messageId, readOpts))?.map((reaction) => reaction.users ? Object.assign({}, reaction, { users: reaction.users.slice(0, limit) }) : reaction)
|
|
@@ -337,6 +340,7 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
337
340
|
}
|
|
338
341
|
if (messagingActions.has(action)) {
|
|
339
342
|
if (!isActionEnabled("messages")) throw new Error("Slack messages are disabled.");
|
|
343
|
+
const sentResults = [];
|
|
340
344
|
const sendSlackMessage = async (target, content, options) => {
|
|
341
345
|
const replyReference = context?.hasRepliedRef && slackContextTargetsMatch(target, context) ? context.hasRepliedRef : void 0;
|
|
342
346
|
const result = await slackActionRuntime.sendSlackMessage(target, content, {
|
|
@@ -346,9 +350,21 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
346
350
|
} } : {}
|
|
347
351
|
});
|
|
348
352
|
if (replyReference) replyReference.value = true;
|
|
353
|
+
sentResults.push(result);
|
|
349
354
|
return result;
|
|
350
355
|
};
|
|
351
356
|
switch (action) {
|
|
357
|
+
case "openConversation": {
|
|
358
|
+
const teamId = readStringParam(params, "teamId") ?? resolveTrustedCurrentSlackTeamId({
|
|
359
|
+
account,
|
|
360
|
+
context
|
|
361
|
+
});
|
|
362
|
+
assertSlackDetachedTargetAllowed(account.accountId, teamId);
|
|
363
|
+
return jsonResult({
|
|
364
|
+
ok: true,
|
|
365
|
+
...await slackActionRuntime.openSlackConversation(params.userIds, buildActionOpts("write", teamId))
|
|
366
|
+
});
|
|
367
|
+
}
|
|
352
368
|
case "sendMessage": {
|
|
353
369
|
const destination = resolveSlackActionTarget(account, readStringParam(params, "to", { required: true }), context).routingTarget;
|
|
354
370
|
const content = readStringParam(params, "content", { allowEmpty: true });
|
|
@@ -396,35 +412,27 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
396
412
|
blocks
|
|
397
413
|
});
|
|
398
414
|
};
|
|
415
|
+
if (mediaUrl && (preparedMessages?.length || blocks)) await sendSlackMessage(destination, "", {
|
|
416
|
+
...preparedMessages?.length ? baseSendOpts : sendOpts,
|
|
417
|
+
mediaUrl
|
|
418
|
+
});
|
|
419
|
+
if (preparedMessages?.length) for (const [index, message] of preparedMessages.entries()) await sendSlackMessage(destination, message.text, {
|
|
420
|
+
...baseSendOpts,
|
|
421
|
+
...index === 0 && replyBroadcast ? { replyBroadcast: true } : {},
|
|
422
|
+
...message.blocks ? { blocks: message.blocks } : {},
|
|
423
|
+
...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
|
|
424
|
+
...Object.hasOwn(message, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
|
|
425
|
+
...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {}
|
|
426
|
+
});
|
|
427
|
+
else if (blocks) await sendContentAndBlocks();
|
|
428
|
+
else await sendSlackMessage(destination, content ?? "", {
|
|
429
|
+
...sendOpts,
|
|
430
|
+
mediaUrl: mediaUrl ?? void 0,
|
|
431
|
+
blocks
|
|
432
|
+
});
|
|
399
433
|
return jsonResult({
|
|
400
434
|
ok: true,
|
|
401
|
-
result:
|
|
402
|
-
let lastResult;
|
|
403
|
-
if (mediaUrl) lastResult = await sendSlackMessage(destination, "", {
|
|
404
|
-
...baseSendOpts,
|
|
405
|
-
mediaUrl
|
|
406
|
-
});
|
|
407
|
-
for (const [index, message] of preparedMessages.entries()) lastResult = await sendSlackMessage(destination, message.text, {
|
|
408
|
-
...baseSendOpts,
|
|
409
|
-
...index === 0 && replyBroadcast ? { replyBroadcast: true } : {},
|
|
410
|
-
...message.blocks ? { blocks: message.blocks } : {},
|
|
411
|
-
...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
|
|
412
|
-
...Object.hasOwn(message, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
|
|
413
|
-
...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {}
|
|
414
|
-
});
|
|
415
|
-
if (!lastResult) throw new Error("Slack prepared message plan produced no delivery.");
|
|
416
|
-
return lastResult;
|
|
417
|
-
})() : blocks ? await (async () => {
|
|
418
|
-
if (mediaUrl) await sendSlackMessage(destination, "", {
|
|
419
|
-
...sendOpts,
|
|
420
|
-
mediaUrl
|
|
421
|
-
});
|
|
422
|
-
return await sendContentAndBlocks();
|
|
423
|
-
})() : await sendSlackMessage(destination, content ?? "", {
|
|
424
|
-
...sendOpts,
|
|
425
|
-
mediaUrl: mediaUrl ?? void 0,
|
|
426
|
-
blocks
|
|
427
|
-
})
|
|
435
|
+
result: mergeSlackSendResults(sentResults)
|
|
428
436
|
});
|
|
429
437
|
}
|
|
430
438
|
case "uploadFile": {
|
|
@@ -525,7 +533,7 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
525
533
|
});
|
|
526
534
|
if (!downloaded) return jsonResult({
|
|
527
535
|
ok: false,
|
|
528
|
-
error: "File could not be downloaded
|
|
536
|
+
error: "File could not be downloaded. Confirm the fileId came from the requested Slack channel or explicit thread and that the file is accessible and within the size limit."
|
|
529
537
|
});
|
|
530
538
|
if (!isImageContentType(downloaded.contentType)) return jsonResult({
|
|
531
539
|
ok: true,
|
|
@@ -601,26 +609,23 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
601
609
|
}
|
|
602
610
|
if (action === "emojiList") {
|
|
603
611
|
if (!isActionEnabled("emojiList")) throw new Error("Slack emoji list is disabled.");
|
|
604
|
-
const limit = readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." });
|
|
612
|
+
const limit = Math.min(readPositiveIntegerParam(params, "limit", { message: "limit must be a positive integer." }) ?? SLACK_REACTION_RESULT_LIMIT, SLACK_REACTION_RESULT_LIMIT);
|
|
605
613
|
const teamId = resolveTrustedCurrentSlackTeamId({
|
|
606
614
|
account,
|
|
607
615
|
context
|
|
608
616
|
});
|
|
609
617
|
assertSlackDetachedTargetAllowed(account.accountId, teamId);
|
|
610
618
|
const result = await slackActionRuntime.listSlackEmojis(buildActionOpts("read", teamId));
|
|
611
|
-
if (limit != null && limit > 0 && result.emoji != null) {
|
|
612
|
-
const entries = Object.entries(result.emoji).toSorted(([a], [b]) => a.localeCompare(b));
|
|
613
|
-
if (entries.length > limit) return jsonResult({
|
|
614
|
-
ok: true,
|
|
615
|
-
emojis: {
|
|
616
|
-
...result,
|
|
617
|
-
emoji: Object.fromEntries(entries.slice(0, limit))
|
|
618
|
-
}
|
|
619
|
-
});
|
|
620
|
-
}
|
|
621
619
|
return jsonResult({
|
|
622
620
|
ok: true,
|
|
623
|
-
emojis: result
|
|
621
|
+
emojis: Object.entries(result.emoji ?? {}).toSorted(([left], [right]) => left.localeCompare(right)).slice(0, limit).map(([name, value]) => value.startsWith("alias:") ? {
|
|
622
|
+
name,
|
|
623
|
+
identifier: name,
|
|
624
|
+
aliasOf: value.slice(6)
|
|
625
|
+
} : {
|
|
626
|
+
name,
|
|
627
|
+
identifier: name
|
|
628
|
+
})
|
|
624
629
|
});
|
|
625
630
|
}
|
|
626
631
|
throw new Error(`Unknown action: ${action}`);
|