@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
|
@@ -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";
|
|
@@ -39,19 +40,19 @@ function resolveSlackOperationToken(account, operation) {
|
|
|
39
40
|
return account.config.userTokenReadOnly === false ? botToken ?? userToken : botToken;
|
|
40
41
|
}
|
|
41
42
|
const { listAccountIds, resolveDefaultAccountId, resolveAccountConfig: resolveMergedSlackAccountConfig } = createAccountListHelpers("slack", {
|
|
42
|
-
nestedObjectKeys: [
|
|
43
|
+
nestedObjectKeys: [
|
|
44
|
+
"botLoopProtection",
|
|
45
|
+
"presenceEvents",
|
|
46
|
+
"relay"
|
|
47
|
+
],
|
|
43
48
|
hasImplicitDefaultAccount: (cfg) => {
|
|
44
49
|
const slack = cfg.channels?.slack;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
if (!(hasConfiguredAccountValue(slack?.botToken) || hasConfiguredAccountValue(process.env.SLACK_BOT_TOKEN))) return false;
|
|
52
|
-
if (slack?.mode === "http") return hasConfiguredAccountValue(slack.signingSecret);
|
|
53
|
-
if (slack?.mode === "relay") return hasConfiguredAccountValue(slack.relay?.url) && hasConfiguredAccountValue(slack.relay?.authToken) && hasConfiguredAccountValue(slack.relay?.gatewayId);
|
|
54
|
-
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
|
+
});
|
|
55
56
|
}
|
|
56
57
|
});
|
|
57
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"),
|
|
@@ -54,26 +57,15 @@ const slackActionRuntime = {
|
|
|
54
57
|
sendSlackMessage: createLazySlackAction("sendSlackMessage"),
|
|
55
58
|
unpinSlackMessage: createLazySlackAction("unpinSlackMessage")
|
|
56
59
|
};
|
|
57
|
-
/**
|
|
58
|
-
* Resolve threadTs for a Slack message based on context and replyToMode.
|
|
59
|
-
* - "all": always inject threadTs
|
|
60
|
-
* - "first"/"batched": inject only for the first eligible message (updates hasRepliedRef)
|
|
61
|
-
* - "off": never auto-inject
|
|
62
|
-
*/
|
|
63
60
|
function resolveThreadTsFromContext(explicitThreadTs, targetChannel, context, opts) {
|
|
64
61
|
if (explicitThreadTs) return explicitThreadTs;
|
|
65
62
|
if (opts?.suppressImplicitThread) return;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (context.replyToMode === "all") return context.currentThreadTs;
|
|
73
|
-
if (isSingleUseReplyToMode(context.replyToMode ?? "off") && context.hasRepliedRef && !context.hasRepliedRef.value) {
|
|
74
|
-
context.hasRepliedRef.value = true;
|
|
75
|
-
return context.currentThreadTs;
|
|
76
|
-
}
|
|
63
|
+
const threadTs = resolveSlackAutoThreadId({
|
|
64
|
+
to: targetChannel,
|
|
65
|
+
toolContext: context
|
|
66
|
+
});
|
|
67
|
+
if (isSingleUseReplyToMode(context?.replyToMode ?? "off") && !context?.hasRepliedRef) return;
|
|
68
|
+
return threadTs;
|
|
77
69
|
}
|
|
78
70
|
function readSlackBlocksParam(params) {
|
|
79
71
|
return slackActionRuntime.parseSlackBlocksInput(params.blocks);
|
|
@@ -340,7 +332,7 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
340
332
|
});
|
|
341
333
|
}
|
|
342
334
|
await assertReadTargetAllowed(target);
|
|
343
|
-
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);
|
|
344
336
|
return jsonResult({
|
|
345
337
|
ok: true,
|
|
346
338
|
reactions: (await slackActionRuntime.listSlackReactions(channelId, messageId, readOpts))?.map((reaction) => reaction.users ? Object.assign({}, reaction, { users: reaction.users.slice(0, limit) }) : reaction)
|
|
@@ -348,7 +340,31 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
348
340
|
}
|
|
349
341
|
if (messagingActions.has(action)) {
|
|
350
342
|
if (!isActionEnabled("messages")) throw new Error("Slack messages are disabled.");
|
|
343
|
+
const sentResults = [];
|
|
344
|
+
const sendSlackMessage = async (target, content, options) => {
|
|
345
|
+
const replyReference = context?.hasRepliedRef && slackContextTargetsMatch(target, context) ? context.hasRepliedRef : void 0;
|
|
346
|
+
const result = await slackActionRuntime.sendSlackMessage(target, content, {
|
|
347
|
+
...options,
|
|
348
|
+
...replyReference ? { [SLACK_PRIVATE_ACTION_DELIVERY_RESULT]: () => {
|
|
349
|
+
replyReference.value = true;
|
|
350
|
+
} } : {}
|
|
351
|
+
});
|
|
352
|
+
if (replyReference) replyReference.value = true;
|
|
353
|
+
sentResults.push(result);
|
|
354
|
+
return result;
|
|
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 });
|
|
@@ -385,48 +401,38 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
385
401
|
const shouldSplitLongContent = content && content.length > 8e3 && !hasSlackNativeDataBlock(blocks);
|
|
386
402
|
if (content && shouldSplitLongContent) {
|
|
387
403
|
const { replyBroadcast: _replyBroadcast, ...blockSendOpts } = sendOpts;
|
|
388
|
-
await
|
|
404
|
+
await sendSlackMessage(destination, "", {
|
|
389
405
|
...blockSendOpts,
|
|
390
406
|
blocks
|
|
391
407
|
});
|
|
392
|
-
return await
|
|
408
|
+
return await sendSlackMessage(destination, content, sendOpts);
|
|
393
409
|
}
|
|
394
|
-
return await
|
|
410
|
+
return await sendSlackMessage(destination, content ?? "", {
|
|
395
411
|
...sendOpts,
|
|
396
412
|
blocks
|
|
397
413
|
});
|
|
398
414
|
};
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
if (!lastResult) throw new Error("Slack prepared message plan produced no delivery.");
|
|
414
|
-
return lastResult;
|
|
415
|
-
})() : blocks ? await (async () => {
|
|
416
|
-
if (mediaUrl) await slackActionRuntime.sendSlackMessage(destination, "", {
|
|
417
|
-
...sendOpts,
|
|
418
|
-
mediaUrl
|
|
419
|
-
});
|
|
420
|
-
return await sendContentAndBlocks();
|
|
421
|
-
})() : await slackActionRuntime.sendSlackMessage(destination, content ?? "", {
|
|
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 ?? "", {
|
|
422
429
|
...sendOpts,
|
|
423
430
|
mediaUrl: mediaUrl ?? void 0,
|
|
424
431
|
blocks
|
|
425
432
|
});
|
|
426
|
-
if (context?.hasRepliedRef && slackContextTargetsMatch(destination, context)) context.hasRepliedRef.value = true;
|
|
427
433
|
return jsonResult({
|
|
428
434
|
ok: true,
|
|
429
|
-
result
|
|
435
|
+
result: mergeSlackSendResults(sentResults)
|
|
430
436
|
});
|
|
431
437
|
}
|
|
432
438
|
case "uploadFile": {
|
|
@@ -441,21 +447,19 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
441
447
|
const forceDocument = readBooleanParam(params, "forceDocument") === true;
|
|
442
448
|
if (readBooleanParam(params, "replyBroadcast")) throw new Error("Slack replyBroadcast is only supported for text or block thread replies.");
|
|
443
449
|
const threadTs = resolveThreadTsFromContext(readStringParam(params, "threadTs"), destination, context, { suppressImplicitThread: params.topLevel === true || params.threadTs === null });
|
|
444
|
-
const result = await slackActionRuntime.sendSlackMessage(destination, initialComment ?? "", {
|
|
445
|
-
...buildActionOpts("write"),
|
|
446
|
-
mediaUrl: filePath,
|
|
447
|
-
mediaAccess: context?.mediaAccess,
|
|
448
|
-
mediaLocalRoots: context?.mediaLocalRoots,
|
|
449
|
-
mediaReadFile: context?.mediaReadFile,
|
|
450
|
-
threadTs: threadTs ?? void 0,
|
|
451
|
-
...forceDocument ? { forceDocument: true } : {},
|
|
452
|
-
...filename ? { uploadFileName: filename } : {},
|
|
453
|
-
...title ? { uploadTitle: title } : {}
|
|
454
|
-
});
|
|
455
|
-
if (context?.hasRepliedRef && slackContextTargetsMatch(destination, context)) context.hasRepliedRef.value = true;
|
|
456
450
|
return jsonResult({
|
|
457
451
|
ok: true,
|
|
458
|
-
result
|
|
452
|
+
result: await sendSlackMessage(destination, initialComment ?? "", {
|
|
453
|
+
...buildActionOpts("write"),
|
|
454
|
+
mediaUrl: filePath,
|
|
455
|
+
mediaAccess: context?.mediaAccess,
|
|
456
|
+
mediaLocalRoots: context?.mediaLocalRoots,
|
|
457
|
+
mediaReadFile: context?.mediaReadFile,
|
|
458
|
+
threadTs: threadTs ?? void 0,
|
|
459
|
+
...forceDocument ? { forceDocument: true } : {},
|
|
460
|
+
...filename ? { uploadFileName: filename } : {},
|
|
461
|
+
...title ? { uploadTitle: title } : {}
|
|
462
|
+
})
|
|
459
463
|
});
|
|
460
464
|
}
|
|
461
465
|
case "editMessage": {
|
|
@@ -529,7 +533,7 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
529
533
|
});
|
|
530
534
|
if (!downloaded) return jsonResult({
|
|
531
535
|
ok: false,
|
|
532
|
-
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."
|
|
533
537
|
});
|
|
534
538
|
if (!isImageContentType(downloaded.contentType)) return jsonResult({
|
|
535
539
|
ok: true,
|
|
@@ -605,26 +609,23 @@ async function handleSlackAction(params, cfg, context) {
|
|
|
605
609
|
}
|
|
606
610
|
if (action === "emojiList") {
|
|
607
611
|
if (!isActionEnabled("emojiList")) throw new Error("Slack emoji list is disabled.");
|
|
608
|
-
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);
|
|
609
613
|
const teamId = resolveTrustedCurrentSlackTeamId({
|
|
610
614
|
account,
|
|
611
615
|
context
|
|
612
616
|
});
|
|
613
617
|
assertSlackDetachedTargetAllowed(account.accountId, teamId);
|
|
614
618
|
const result = await slackActionRuntime.listSlackEmojis(buildActionOpts("read", teamId));
|
|
615
|
-
if (limit != null && limit > 0 && result.emoji != null) {
|
|
616
|
-
const entries = Object.entries(result.emoji).toSorted(([a], [b]) => a.localeCompare(b));
|
|
617
|
-
if (entries.length > limit) return jsonResult({
|
|
618
|
-
ok: true,
|
|
619
|
-
emojis: {
|
|
620
|
-
...result,
|
|
621
|
-
emoji: Object.fromEntries(entries.slice(0, limit))
|
|
622
|
-
}
|
|
623
|
-
});
|
|
624
|
-
}
|
|
625
619
|
return jsonResult({
|
|
626
620
|
ok: true,
|
|
627
|
-
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
|
+
})
|
|
628
629
|
});
|
|
629
630
|
}
|
|
630
631
|
throw new Error(`Unknown action: ${action}`);
|