@openclaw/slack 2026.7.2-beta.3 → 2026.7.2-beta.4
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-inspect-api.js +1 -1
- package/dist/{account-inspect-Bvbtu3iH.js → account-inspect-jn1xLaVi.js} +2 -2
- package/dist/account-reply-mode-DrUXogvO.js +14 -0
- package/dist/{accounts-DQEbYKh9.js → accounts-BSr252c_.js} +6 -27
- package/dist/{accounts.runtime-BIKmJdtJ.js → accounts.runtime-CjULMLTa.js} +1 -1
- package/dist/{action-runtime-DqkRwO3Z.js → action-runtime-CFU52n4W.js} +7 -7
- package/dist/action-runtime.runtime-9-17zvKH.js +2 -0
- package/dist/{actions-CF0tUY5q.js → actions-D51foiwR.js} +5 -5
- package/dist/{actions.runtime-hCbx4RXg.js → actions.runtime-BMJwtf5C.js} +1 -1
- package/dist/api.js +15 -14
- package/dist/{approval-handler.runtime-Em8I1-8-.js → approval-handler.runtime-3b4-wxMl.js} +2 -2
- package/dist/{channel-4-TRi1D6.js → channel-Ds8NKvfr.js} +26 -24
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-Cu1yjNg2.js → channel-type-DXkUajFP.js} +3 -3
- package/dist/{channel.setup-CgkADtZg.js → channel.setup-DOSTEDfA.js} +6 -5
- package/dist/{config-schema-XjJGfwQC.js → config-schema-B4j4tCOI.js} +231 -26
- package/dist/{directory-config-Bv0lcUlH.js → directory-config-B08pm5ZT.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-CzUIB7th.js → directory-live-DpPKzPrn.js} +2 -2
- package/dist/{doctor-contract-DKpe5VBr.js → doctor-contract-U6oVntbM.js} +60 -89
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{group-policy-Bw-65m3V.js → group-policy-CdnQzQBI.js} +32 -5
- package/dist/{interactive-replies-Dm_t2R9S.js → interactive-replies-C3ffk6oN.js} +1 -1
- package/dist/interactive-replies-api.js +1 -1
- package/dist/{message-tool-api-C2pcf5du.js → message-tool-api-ByVyIVOh.js} +2 -2
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-CNFeF30h.js → monitor-CnB_WKvF.js} +3 -3
- package/dist/{outbound-adapter-CVi2uok0.js → outbound-adapter-DuPz2HHt.js} +3 -3
- package/dist/{pipeline.runtime-CTvokbty.js → pipeline.runtime-5rRYZuX5.js} +110 -77
- package/dist/{policy-b_dOPDCq.js → policy-C31RYSuT.js} +1 -1
- package/dist/{probe-Borhn9PQ.js → probe-CVRuArHA.js} +1 -1
- package/dist/{provider-B-HVL5ZE.js → provider-htuIJGFD.js} +365 -200
- package/dist/{relay-source-Ea_P9VcO.js → relay-source-Df9EaiTF.js} +1 -1
- package/dist/{replies-B4bOdrYb.js → replies-Cgr2Gli4.js} +3 -3
- package/dist/{resolve-channels-KTc568SU.js → resolve-channels-DodP2TFx.js} +1 -1
- package/dist/{resolve-users-DeGJf1yp.js → resolve-users-M9eF8891.js} +1 -1
- package/dist/{runtime-api-BFfNpzDe.js → runtime-api-D5XYMMsf.js} +3 -2
- package/dist/runtime-api.js +11 -11
- package/dist/{scopes-lx08L56K.js → scopes-CJRpHkDC.js} +1 -1
- package/dist/{security-audit-CikQhBUY.js → security-audit-Cz6erklv.js} +0 -10
- package/dist/security-contract-api.js +1 -1
- package/dist/{send-KuTDky7i.js → send-BZ1tPv7-.js} +4 -4
- package/dist/{send.runtime-CXyxws1D.js → send.runtime-a2pilFor.js} +1 -1
- package/dist/{setup-core-CeiAVwQ3.js → setup-core-tPxMuFez.js} +138 -40
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-DLA0vHXp.js → setup-surface-wV-S1dE_.js} +43 -27
- package/dist/{shared-C4yVB0Q-.js → shared-BfMskaMx.js} +9 -8
- package/dist/{slash-dispatch.runtime-BT-mMm-f.js → slash-dispatch.runtime-lfeIsXTX.js} +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/fs/promises.d.ts +16 -6
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/agent-base/README.md +145 -0
- package/node_modules/agent-base/dist/src/index.d.ts +78 -0
- package/node_modules/agent-base/dist/src/index.js +203 -0
- package/node_modules/agent-base/dist/src/index.js.map +1 -0
- package/node_modules/agent-base/dist/src/promisify.d.ts +4 -0
- package/node_modules/agent-base/dist/src/promisify.js +18 -0
- package/node_modules/agent-base/dist/src/promisify.js.map +1 -0
- package/node_modules/agent-base/package.json +64 -0
- package/node_modules/agent-base/src/index.ts +345 -0
- package/node_modules/agent-base/src/promisify.ts +33 -0
- package/node_modules/axios/CHANGELOG.md +197 -1
- package/node_modules/axios/README.md +424 -256
- package/node_modules/axios/dist/axios.js +589 -204
- package/node_modules/axios/dist/axios.min.js +3 -3
- package/node_modules/axios/dist/axios.min.js.map +1 -1
- package/node_modules/axios/dist/browser/axios.cjs +630 -185
- package/node_modules/axios/dist/esm/axios.js +630 -185
- package/node_modules/axios/dist/esm/axios.min.js +2 -2
- package/node_modules/axios/dist/esm/axios.min.js.map +1 -1
- package/node_modules/axios/dist/node/axios.cjs +949 -301
- package/node_modules/axios/index.d.cts +28 -5
- package/node_modules/axios/index.d.ts +24 -3
- package/node_modules/axios/lib/adapters/adapters.js +1 -1
- package/node_modules/axios/lib/adapters/fetch.js +223 -49
- package/node_modules/axios/lib/adapters/http.js +408 -193
- package/node_modules/axios/lib/adapters/xhr.js +3 -1
- package/node_modules/axios/lib/core/Axios.js +4 -2
- package/node_modules/axios/lib/core/AxiosError.js +13 -1
- package/node_modules/axios/lib/core/AxiosHeaders.js +13 -42
- package/node_modules/axios/lib/core/buildFullPath.js +29 -1
- package/node_modules/axios/lib/core/mergeConfig.js +35 -0
- package/node_modules/axios/lib/defaults/transitional.js +2 -0
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +1 -3
- package/node_modules/axios/lib/helpers/Http2Sessions.js +119 -0
- package/node_modules/axios/lib/helpers/buildURL.js +7 -4
- package/node_modules/axios/lib/helpers/composeSignals.js +48 -47
- package/node_modules/axios/lib/helpers/cookies.js +5 -1
- package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +16 -11
- package/node_modules/axios/lib/helpers/formDataToJSON.js +26 -4
- package/node_modules/axios/lib/helpers/formDataToStream.js +2 -2
- package/node_modules/axios/lib/helpers/fromDataURI.js +20 -5
- package/node_modules/axios/lib/helpers/progressEventReducer.js +3 -0
- package/node_modules/axios/lib/helpers/resolveConfig.js +26 -13
- package/node_modules/axios/lib/helpers/sanitizeHeaderValue.js +60 -0
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +33 -1
- package/node_modules/axios/lib/helpers/toFormData.js +48 -12
- package/node_modules/axios/lib/helpers/validator.js +1 -1
- package/node_modules/axios/lib/utils.js +105 -19
- package/node_modules/axios/package.json +31 -13
- package/node_modules/https-proxy-agent/README.md +137 -0
- package/node_modules/https-proxy-agent/dist/agent.d.ts +30 -0
- package/node_modules/https-proxy-agent/dist/agent.js +177 -0
- package/node_modules/https-proxy-agent/dist/agent.js.map +1 -0
- package/node_modules/https-proxy-agent/dist/index.d.ts +23 -0
- package/node_modules/https-proxy-agent/dist/index.js +14 -0
- package/node_modules/https-proxy-agent/dist/index.js.map +1 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +7 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +66 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
- package/node_modules/https-proxy-agent/package.json +56 -0
- package/node_modules/iconv-lite/encodings/sbcs-data.js +2 -0
- package/node_modules/iconv-lite/encodings/utf32.js +10 -3
- package/node_modules/iconv-lite/package.json +2 -2
- package/node_modules/iconv-lite/types/encodings.d.ts +2 -0
- package/node_modules/path-to-regexp/Readme.md +3 -3
- package/node_modules/path-to-regexp/dist/index.js +135 -158
- package/node_modules/path-to-regexp/dist/index.js.map +1 -1
- package/node_modules/path-to-regexp/package.json +2 -2
- package/node_modules/qs/CHANGELOG.md +11 -0
- package/node_modules/qs/dist/qs.js +17 -17
- package/node_modules/qs/lib/parse.js +19 -8
- package/node_modules/qs/lib/utils.js +47 -8
- package/node_modules/qs/package.json +6 -5
- package/node_modules/qs/test/parse.js +230 -0
- package/node_modules/qs/test/utils.js +194 -0
- package/node_modules/typebox/build/compile/validator.d.mts +1 -4
- package/node_modules/typebox/build/guard/guard.d.mts +1 -1
- package/node_modules/typebox/build/guard/guard.mjs +5 -2
- package/node_modules/typebox/build/guard/string.mjs +16 -4
- package/node_modules/typebox/build/schema/engine/_functions.mjs +34 -15
- package/node_modules/typebox/build/type/action/readonly_object.d.mts +5 -0
- package/node_modules/typebox/build/type/action/readonly_object.mjs +8 -0
- package/node_modules/typebox/build/typebox.d.mts +1 -1
- package/node_modules/typebox/build/typebox.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +29 -32
- package/node_modules/ws/lib/receiver.js +15 -32
- package/node_modules/ws/lib/websocket-server.js +4 -4
- package/node_modules/ws/lib/websocket.js +4 -4
- package/node_modules/ws/package.json +5 -1
- package/npm-shrinkwrap.json +54 -27
- package/openclaw.plugin.json +1759 -1908
- package/package.json +92 -14
- package/dist/action-runtime.runtime-DEWOcFM4.js +0 -2
- package/dist/config-api-Df9a1B8C.js +0 -3
- package/node_modules/axios/dist/axios.js.map +0 -1
- package/node_modules/axios/dist/browser/axios.cjs.map +0 -1
- package/node_modules/axios/dist/esm/axios.js.map +0 -1
- package/node_modules/axios/dist/node/axios.cjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as formatUnknownError, s as SLACK_SOCKET_RECONNECT_POLICY } from "./provider-
|
|
1
|
+
import { c as formatUnknownError, s as SLACK_SOCKET_RECONNECT_POLICY } from "./provider-htuIJGFD.js";
|
|
2
2
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
|
|
4
4
|
import { Buffer } from "node:buffer";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as hasSlackNativeDataBlock, D as markdownToSlackMrkdwnChunks, F as SLACK_TEXT_LIMIT, f as hasSlackReplyStructuredContent, h as resolveSlackReplyBlocks, k as buildSlackBlocksFallbackText, m as resolveSlackReplyBlockResolution, w as isSlackInvalidBlocksError, x as buildSlackNativeDataAccessibilityText } from "./group-policy-
|
|
2
|
-
import { d as chunkSlackTextAtHardLimit, r as sendMessageSlack, u as buildSlackNativeDataDeliveryPlan } from "./send-
|
|
3
|
-
import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-
|
|
1
|
+
import { C as hasSlackNativeDataBlock, D as markdownToSlackMrkdwnChunks, F as SLACK_TEXT_LIMIT, f as hasSlackReplyStructuredContent, h as resolveSlackReplyBlocks, k as buildSlackBlocksFallbackText, m as resolveSlackReplyBlockResolution, w as isSlackInvalidBlocksError, x as buildSlackNativeDataAccessibilityText } from "./group-policy-CdnQzQBI.js";
|
|
2
|
+
import { d as chunkSlackTextAtHardLimit, r as sendMessageSlack, u as buildSlackNativeDataDeliveryPlan } from "./send-BZ1tPv7-.js";
|
|
3
|
+
import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-htuIJGFD.js";
|
|
4
4
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
5
5
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
6
6
|
import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as createSlackLookupClient } from "./probe-
|
|
2
|
+
import { a as createSlackLookupClient } from "./probe-CVRuArHA.js";
|
|
3
3
|
import { t as collectSlackCursorPages } from "./cursor-pages-DSmTg0su.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { a as createSlackLookupClient } from "./probe-
|
|
2
|
+
import { a as createSlackLookupClient } from "./probe-CVRuArHA.js";
|
|
3
3
|
import { t as collectSlackCursorPages } from "./cursor-pages-DSmTg0su.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "./target-parsing-N6lHogYZ.js";
|
|
2
|
-
import "./probe-
|
|
3
|
-
import "./config-
|
|
2
|
+
import "./probe-CVRuArHA.js";
|
|
3
|
+
import "./config-schema-B4j4tCOI.js";
|
|
4
4
|
import "openclaw/plugin-sdk/account-id";
|
|
5
5
|
import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
|
|
6
6
|
import "openclaw/plugin-sdk/channel-status";
|
|
7
|
+
import "openclaw/plugin-sdk/channel-config-schema";
|
|
7
8
|
import "openclaw/plugin-sdk/channel-plugin-common";
|
|
8
9
|
import { loadOutboundMediaFromUrl } from "openclaw/plugin-sdk/outbound-media";
|
|
9
10
|
export { readPositiveIntegerParam as a, withNormalizedTimestamp as c, loadOutboundMediaFromUrl as i, imageResultFromFile as n, readReactionParams as o, jsonResult as r, readStringParam as s, createActionGate$1 as t };
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CLp4obpN.js";
|
|
2
|
-
import { a as resolveSlackAccount,
|
|
3
|
-
import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./group-policy-
|
|
4
|
-
import { t as probeSlack } from "./probe-
|
|
2
|
+
import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./accounts-BSr252c_.js";
|
|
3
|
+
import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./group-policy-CdnQzQBI.js";
|
|
4
|
+
import { t as probeSlack } from "./probe-CVRuArHA.js";
|
|
5
5
|
import { r as setSlackRuntime } from "./runtime-JSVZSWAj.js";
|
|
6
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, h as unpinSlackMessage, i as getSlackMemberInfo, l as reactSlackMessage, m as sendSlackMessage, o as listSlackPins, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-
|
|
7
|
-
import { r as sendMessageSlack } from "./send-
|
|
8
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
9
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
10
|
-
import { t as monitorSlackProvider } from "./provider-
|
|
11
|
-
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-
|
|
12
|
-
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-
|
|
13
|
-
import "./monitor-
|
|
6
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, h as unpinSlackMessage, i as getSlackMemberInfo, l as reactSlackMessage, m as sendSlackMessage, o as listSlackPins, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-D51foiwR.js";
|
|
7
|
+
import { r as sendMessageSlack } from "./send-BZ1tPv7-.js";
|
|
8
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DodP2TFx.js";
|
|
9
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-M9eF8891.js";
|
|
10
|
+
import { t as monitorSlackProvider } from "./provider-htuIJGFD.js";
|
|
11
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-CFU52n4W.js";
|
|
12
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-DpPKzPrn.js";
|
|
13
|
+
import "./monitor-CnB_WKvF.js";
|
|
14
14
|
export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { c as createSlackWebClient, r as formatSlackError } from "./probe-
|
|
1
|
+
import { c as createSlackWebClient, r as formatSlackError } from "./probe-CVRuArHA.js";
|
|
2
2
|
import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
//#region extensions/slack/src/scopes.ts
|
|
4
4
|
function collectScopes(value, into) {
|
|
@@ -17,16 +17,6 @@ async function collectSlackSecurityAuditFindings(params) {
|
|
|
17
17
|
providerSetting: coerceNativeSetting(slackCfg.commands?.nativeSkills),
|
|
18
18
|
globalSetting: params.cfg.commands?.nativeSkills
|
|
19
19
|
}))) return findings;
|
|
20
|
-
if (!(params.cfg.commands?.useAccessGroups !== false)) {
|
|
21
|
-
findings.push({
|
|
22
|
-
checkId: "channels.slack.commands.slash.useAccessGroups_off",
|
|
23
|
-
severity: "critical",
|
|
24
|
-
title: "Slack slash commands bypass access groups",
|
|
25
|
-
detail: "Slack slash/native commands are enabled while commands.useAccessGroups=false; this can allow unrestricted /… command execution from channels/users you didn't explicitly authorize.",
|
|
26
|
-
remediation: "Set commands.useAccessGroups=true (recommended)."
|
|
27
|
-
});
|
|
28
|
-
return findings;
|
|
29
|
-
}
|
|
30
20
|
const allowFromRaw = slackCfg.allowFrom;
|
|
31
21
|
const legacyAllowFromRaw = params.account.dm?.allowFrom;
|
|
32
22
|
const allowFrom = Array.isArray(allowFromRaw) ? allowFromRaw : Array.isArray(legacyAllowFromRaw) ? legacyAllowFromRaw : [];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as collectSlackSecurityAuditFindings } from "./security-audit-
|
|
1
|
+
import { t as collectSlackSecurityAuditFindings } from "./security-audit-Cz6erklv.js";
|
|
2
2
|
export { collectSlackSecurityAuditFindings };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-
|
|
1
|
+
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-BSr252c_.js";
|
|
2
2
|
import { i as parseSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-N6lHogYZ.js";
|
|
3
|
-
import { A as buildSlackCompleteBlocksFallbackText, C as hasSlackNativeDataBlock, D as markdownToSlackMrkdwnChunks, E as chunkSlackMrkdwnText, F as SLACK_TEXT_LIMIT, P as SLACK_MESSAGE_TEXT_HARD_LIMIT, S as createSlackNativeDataBaseTextConsumer, T as stripSlackNativeDataBlocks, b as appendSlackNativeDataPlainTextFallback, et as validateSlackBlocksArray, i as assertSlackDirectSendAllowed, j as renderSlackBlockFallbackText, w as isSlackInvalidBlocksError, x as buildSlackNativeDataAccessibilityText, z as truncateSlackText } from "./group-policy-
|
|
3
|
+
import { A as buildSlackCompleteBlocksFallbackText, C as hasSlackNativeDataBlock, D as markdownToSlackMrkdwnChunks, E as chunkSlackMrkdwnText, F as SLACK_TEXT_LIMIT, P as SLACK_MESSAGE_TEXT_HARD_LIMIT, S as createSlackNativeDataBaseTextConsumer, T as stripSlackNativeDataBlocks, b as appendSlackNativeDataPlainTextFallback, et as validateSlackBlocksArray, i as assertSlackDirectSendAllowed, j as renderSlackBlockFallbackText, w as isSlackInvalidBlocksError, x as buildSlackNativeDataAccessibilityText, z as truncateSlackText } from "./group-policy-CdnQzQBI.js";
|
|
4
4
|
import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
|
|
5
|
-
import { c as createSlackWebClient, d as getSlackWriteClient, s as createSlackTokenCacheKey } from "./probe-
|
|
5
|
+
import { c as createSlackWebClient, d as getSlackWriteClient, s as createSlackTokenCacheKey } from "./probe-CVRuArHA.js";
|
|
6
6
|
import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.js";
|
|
7
|
-
import { i as loadOutboundMediaFromUrl } from "./runtime-api-
|
|
7
|
+
import { i as loadOutboundMediaFromUrl } from "./runtime-api-D5XYMMsf.js";
|
|
8
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
|
|
10
10
|
import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-
|
|
1
|
+
import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-BZ1tPv7-.js";
|
|
2
2
|
export { reconcileSlackUnknownSend, resolveSlackDmChannelId, sendMessageSlack, updateMessageSlack };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
1
|
+
import { t as inspectSlackAccount } from "./account-inspect-jn1xLaVi.js";
|
|
2
2
|
import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
|
|
3
3
|
import { hasConfiguredSecretInput, normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
|
-
import {
|
|
5
|
+
import { defineChannelSetupContract } from "openclaw/plugin-sdk/channel-setup";
|
|
6
|
+
import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createPatchedAccountSetupAdapter, createSetupTranslator, createStandardChannelSetupStatus, defineTokenCredential, mergeAllowFromEntries, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
|
|
6
7
|
import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
|
|
7
8
|
import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
|
|
8
9
|
//#region extensions/slack/src/setup-shared.ts
|
|
@@ -24,8 +25,8 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
24
25
|
messages_tab_enabled: true,
|
|
25
26
|
messages_tab_read_only_enabled: false
|
|
26
27
|
},
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
agent_view: {
|
|
29
|
+
agent_description: `${safeName} connects Slack Agent View conversations to OpenClaw agents.`,
|
|
29
30
|
suggested_prompts: [
|
|
30
31
|
{
|
|
31
32
|
title: "What can you do?",
|
|
@@ -77,8 +78,7 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
77
78
|
event_subscriptions: { bot_events: [
|
|
78
79
|
"app_home_opened",
|
|
79
80
|
"app_mention",
|
|
80
|
-
"
|
|
81
|
-
"assistant_thread_started",
|
|
81
|
+
"app_context_changed",
|
|
82
82
|
"channel_rename",
|
|
83
83
|
"member_joined_channel",
|
|
84
84
|
"member_left_channel",
|
|
@@ -100,8 +100,8 @@ function buildSlackSetupLines() {
|
|
|
100
100
|
"1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)",
|
|
101
101
|
"2) Add Socket Mode + enable it to get the app-level token (xapp-...)",
|
|
102
102
|
"3) Install App to workspace to get the xoxb- bot token",
|
|
103
|
-
"4) Enable Event Subscriptions (socket) for message, App Home, and
|
|
104
|
-
"5) App Home -> enable the Home tab, Messages tab for DMs, and
|
|
103
|
+
"4) Enable Event Subscriptions (socket) for message, App Home, and Agent View events",
|
|
104
|
+
"5) App Home -> enable the Home tab, Messages tab for DMs, and Agent View",
|
|
105
105
|
"Manifest JSON follows as plain text for copy/paste.",
|
|
106
106
|
"Tip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
|
|
107
107
|
`Docs: ${formatDocsLink("/slack", "slack")}`
|
|
@@ -157,14 +157,14 @@ function setSlackSetupIdentity(params) {
|
|
|
157
157
|
cfg: params.cfg,
|
|
158
158
|
channel: SLACK_CHANNEL,
|
|
159
159
|
accountId: params.accountId,
|
|
160
|
-
patch: params.identity === "user" ? {
|
|
160
|
+
patch: params.identity === "user" ? { postAs: "user" } : {}
|
|
161
161
|
});
|
|
162
162
|
if (params.identity === "user") return next;
|
|
163
163
|
const slack = next.channels?.slack;
|
|
164
164
|
if (!slack) return next;
|
|
165
165
|
if (params.accountId === DEFAULT_ACCOUNT_ID) {
|
|
166
166
|
const nextSlack = { ...slack };
|
|
167
|
-
delete nextSlack.
|
|
167
|
+
delete nextSlack.postAs;
|
|
168
168
|
return {
|
|
169
169
|
...next,
|
|
170
170
|
channels: {
|
|
@@ -176,8 +176,8 @@ function setSlackSetupIdentity(params) {
|
|
|
176
176
|
const account = slack.accounts?.[params.accountId];
|
|
177
177
|
if (!account) return next;
|
|
178
178
|
const nextAccount = { ...account };
|
|
179
|
-
if (slack.
|
|
180
|
-
else delete nextAccount.
|
|
179
|
+
if (slack.postAs === "user") nextAccount.postAs = "bot";
|
|
180
|
+
else delete nextAccount.postAs;
|
|
181
181
|
return {
|
|
182
182
|
...next,
|
|
183
183
|
channels: {
|
|
@@ -263,55 +263,153 @@ function hasSlackSetupCredentials(params) {
|
|
|
263
263
|
const slackSetupAdapterBase = createPatchedAccountSetupAdapter({
|
|
264
264
|
channelKey: SLACK_CHANNEL,
|
|
265
265
|
validateInput: ({ cfg, accountId, input }) => {
|
|
266
|
-
|
|
266
|
+
const setupInput = input;
|
|
267
|
+
if (setupInput.useEnv && accountId !== DEFAULT_ACCOUNT_ID) return "Slack env tokens can only be used for the default account.";
|
|
267
268
|
const account = inspectSlackAccount({
|
|
268
269
|
cfg,
|
|
269
270
|
accountId
|
|
270
271
|
});
|
|
271
|
-
const identity =
|
|
272
|
-
const mode =
|
|
272
|
+
const identity = setupInput.identity ?? account.config.postAs ?? "bot";
|
|
273
|
+
const mode = setupInput.mode ?? account.config.mode ?? "socket";
|
|
273
274
|
if (identity === "user" && mode === "relay") return "Slack user identity setup supports mode \"socket\" or \"http\", not \"relay\".";
|
|
274
|
-
if (
|
|
275
|
+
if (setupInput.useEnv) return identity === "user" ? "Slack user identity setup does not support --use-env; configure userToken and the transport credential explicitly." : null;
|
|
275
276
|
if (hasSlackSetupCredentials({
|
|
276
|
-
input,
|
|
277
|
+
input: setupInput,
|
|
277
278
|
identity,
|
|
278
279
|
mode
|
|
279
280
|
})) return null;
|
|
280
281
|
if (identity === "user") return mode === "http" ? "Slack user identity requires --user-token and --signing-secret." : "Slack user identity requires --user-token and --app-token.";
|
|
281
282
|
return "Slack requires --bot-token and --app-token (or --use-env).";
|
|
282
283
|
},
|
|
283
|
-
buildPatch: (input) =>
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
284
|
+
buildPatch: (input) => {
|
|
285
|
+
const setupInput = input;
|
|
286
|
+
return {
|
|
287
|
+
...setupInput.identity ? { postAs: setupInput.identity } : {},
|
|
288
|
+
...setupInput.identity === "user" && setupInput.mode ? { mode: setupInput.mode } : {},
|
|
289
|
+
...setupInput.botToken ? { botToken: setupInput.botToken } : {},
|
|
290
|
+
...setupInput.appToken ? { appToken: setupInput.appToken } : {},
|
|
291
|
+
...setupInput.userToken ? { userToken: setupInput.userToken } : {},
|
|
292
|
+
...setupInput.signingSecret ? { signingSecret: setupInput.signingSecret } : {}
|
|
293
|
+
};
|
|
294
|
+
}
|
|
291
295
|
});
|
|
292
296
|
const slackSetupAdapter = {
|
|
293
297
|
...slackSetupAdapterBase,
|
|
298
|
+
singleAccountKeysToMove: ["appToken"],
|
|
294
299
|
applyAccountConfig: ({ cfg, accountId, input }) => {
|
|
295
|
-
const
|
|
300
|
+
const setupInput = input;
|
|
301
|
+
const identity = setupInput.identity ?? inspectSlackAccount({
|
|
296
302
|
cfg,
|
|
297
303
|
accountId
|
|
298
|
-
}).config.
|
|
304
|
+
}).config.postAs;
|
|
299
305
|
return slackSetupAdapterBase.applyAccountConfig({
|
|
300
306
|
cfg,
|
|
301
307
|
accountId,
|
|
302
308
|
input: identity === "user" ? {
|
|
303
|
-
...
|
|
309
|
+
...setupInput,
|
|
304
310
|
identity
|
|
305
|
-
} :
|
|
311
|
+
} : setupInput
|
|
306
312
|
});
|
|
307
313
|
}
|
|
308
314
|
};
|
|
315
|
+
const slackSetupContract = defineChannelSetupContract({
|
|
316
|
+
fields: {
|
|
317
|
+
botToken: {
|
|
318
|
+
kind: "string",
|
|
319
|
+
sensitive: true,
|
|
320
|
+
cli: {
|
|
321
|
+
flags: "--bot-token <token>",
|
|
322
|
+
description: "Slack bot token"
|
|
323
|
+
}
|
|
324
|
+
},
|
|
325
|
+
appToken: {
|
|
326
|
+
kind: "string",
|
|
327
|
+
sensitive: true,
|
|
328
|
+
cli: {
|
|
329
|
+
flags: "--app-token <token>",
|
|
330
|
+
description: "Slack app token"
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
userToken: {
|
|
334
|
+
kind: "string",
|
|
335
|
+
sensitive: true,
|
|
336
|
+
cli: {
|
|
337
|
+
flags: "--user-token <token>",
|
|
338
|
+
description: "Slack user token"
|
|
339
|
+
}
|
|
340
|
+
},
|
|
341
|
+
signingSecret: {
|
|
342
|
+
kind: "string",
|
|
343
|
+
sensitive: true,
|
|
344
|
+
cli: {
|
|
345
|
+
flags: "--signing-secret <secret>",
|
|
346
|
+
description: "Slack signing secret"
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
identity: {
|
|
350
|
+
kind: "choice",
|
|
351
|
+
choices: ["bot", "user"],
|
|
352
|
+
cli: {
|
|
353
|
+
flags: "--identity <kind>",
|
|
354
|
+
description: "Slack identity"
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
mode: {
|
|
358
|
+
kind: "choice",
|
|
359
|
+
choices: ["socket", "http"],
|
|
360
|
+
cli: {
|
|
361
|
+
flags: "--mode <mode>",
|
|
362
|
+
description: "Slack connection mode"
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
useEnv: {
|
|
366
|
+
kind: "boolean",
|
|
367
|
+
cli: {
|
|
368
|
+
flags: "--use-env",
|
|
369
|
+
description: "Use Slack environment credentials"
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
legacyAdapter: slackSetupAdapter
|
|
374
|
+
});
|
|
309
375
|
function createSlackSetupWizardBase(handlers) {
|
|
310
|
-
const slackDmPolicy =
|
|
376
|
+
const slackDmPolicy = {
|
|
311
377
|
label: "Slack",
|
|
312
378
|
channel: SLACK_CHANNEL,
|
|
379
|
+
policyKey: "channels.slack.dmPolicy",
|
|
380
|
+
allowFromKey: "channels.slack.allowFrom",
|
|
381
|
+
resolveConfigKeys: (_cfg, accountId) => accountId && accountId !== DEFAULT_ACCOUNT_ID ? {
|
|
382
|
+
policyKey: `channels.slack.accounts.${accountId}.dmPolicy`,
|
|
383
|
+
allowFromKey: `channels.slack.accounts.${accountId}.allowFrom`
|
|
384
|
+
} : {
|
|
385
|
+
policyKey: "channels.slack.dmPolicy",
|
|
386
|
+
allowFromKey: "channels.slack.allowFrom"
|
|
387
|
+
},
|
|
388
|
+
getCurrent: (cfg, accountId) => inspectSlackAccount({
|
|
389
|
+
cfg,
|
|
390
|
+
accountId
|
|
391
|
+
}).config.dmPolicy ?? "pairing",
|
|
392
|
+
setPolicy: (cfg, policy, accountId) => {
|
|
393
|
+
const account = inspectSlackAccount({
|
|
394
|
+
cfg,
|
|
395
|
+
accountId
|
|
396
|
+
});
|
|
397
|
+
return patchChannelConfigForAccount({
|
|
398
|
+
cfg,
|
|
399
|
+
channel: SLACK_CHANNEL,
|
|
400
|
+
accountId: account.accountId,
|
|
401
|
+
patch: {
|
|
402
|
+
dmPolicy: policy,
|
|
403
|
+
...policy === "open" ? { allowFrom: mergeAllowFromEntries(account.config.allowFrom ?? [], ["*"]) } : {},
|
|
404
|
+
dm: {
|
|
405
|
+
...account.config.dm,
|
|
406
|
+
enabled: typeof account.config.dm?.enabled === "boolean" ? account.config.dm.enabled : true
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
},
|
|
313
411
|
promptAllowFrom: handlers.promptAllowFrom
|
|
314
|
-
}
|
|
412
|
+
};
|
|
315
413
|
return {
|
|
316
414
|
channel: SLACK_CHANNEL,
|
|
317
415
|
status: createStandardChannelSetupStatus({
|
|
@@ -332,7 +430,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
332
430
|
cfg,
|
|
333
431
|
accountId
|
|
334
432
|
});
|
|
335
|
-
if (currentAccount.configured && currentAccount.config.
|
|
433
|
+
if (currentAccount.configured && currentAccount.config.postAs !== "user") return { cfg };
|
|
336
434
|
const identity = await prompter.select({
|
|
337
435
|
message: "How should OpenClaw appear in Slack?",
|
|
338
436
|
options: [{
|
|
@@ -344,14 +442,14 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
344
442
|
label: "Slack user",
|
|
345
443
|
hint: "Post as the authorizing human"
|
|
346
444
|
}],
|
|
347
|
-
initialValue: currentAccount.config.
|
|
445
|
+
initialValue: currentAccount.config.postAs ?? "bot"
|
|
348
446
|
});
|
|
349
447
|
const next = setSlackSetupIdentity({
|
|
350
448
|
cfg,
|
|
351
449
|
accountId,
|
|
352
450
|
identity
|
|
353
451
|
});
|
|
354
|
-
if (currentAccount.configured && identity === currentAccount.config.
|
|
452
|
+
if (currentAccount.configured && identity === currentAccount.config.postAs) return { cfg: next };
|
|
355
453
|
if (identity === "user") {
|
|
356
454
|
if (currentAccount.config.mode === "relay") throw new Error("Slack user identity setup supports mode \"socket\" or \"http\", not \"relay\".");
|
|
357
455
|
await prompter.note([
|
|
@@ -375,7 +473,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
375
473
|
isAvailable: ({ cfg, accountId }) => accountId === DEFAULT_ACCOUNT_ID && (inspectSlackAccount({
|
|
376
474
|
cfg,
|
|
377
475
|
accountId
|
|
378
|
-
}).config.
|
|
476
|
+
}).config.postAs ?? "bot") === "bot" && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !inspectSlackAccount({
|
|
379
477
|
cfg,
|
|
380
478
|
accountId
|
|
381
479
|
}).configured,
|
|
@@ -392,7 +490,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
392
490
|
shouldPrompt: ({ cfg, accountId }) => (inspectSlackAccount({
|
|
393
491
|
cfg,
|
|
394
492
|
accountId
|
|
395
|
-
}).config.
|
|
493
|
+
}).config.postAs ?? "bot") === "bot"
|
|
396
494
|
}),
|
|
397
495
|
createSlackTokenCredential({
|
|
398
496
|
inputKey: "userToken",
|
|
@@ -404,7 +502,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
404
502
|
shouldPrompt: ({ cfg, accountId }) => inspectSlackAccount({
|
|
405
503
|
cfg,
|
|
406
504
|
accountId
|
|
407
|
-
}).config.
|
|
505
|
+
}).config.postAs === "user"
|
|
408
506
|
}),
|
|
409
507
|
createSlackTokenCredential({
|
|
410
508
|
inputKey: "appToken",
|
|
@@ -418,7 +516,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
418
516
|
cfg,
|
|
419
517
|
accountId
|
|
420
518
|
});
|
|
421
|
-
return (account.config.
|
|
519
|
+
return (account.config.postAs ?? "bot") === "bot" || (account.config.mode ?? "socket") === "socket";
|
|
422
520
|
}
|
|
423
521
|
}),
|
|
424
522
|
createSlackTokenCredential({
|
|
@@ -432,7 +530,7 @@ function createSlackSetupWizardBase(handlers) {
|
|
|
432
530
|
cfg,
|
|
433
531
|
accountId
|
|
434
532
|
});
|
|
435
|
-
return account.config.
|
|
533
|
+
return account.config.postAs === "user" && account.config.mode === "http";
|
|
436
534
|
}
|
|
437
535
|
})
|
|
438
536
|
],
|
|
@@ -499,4 +597,4 @@ function createSlackSetupWizardProxy(loadWizard) {
|
|
|
499
597
|
});
|
|
500
598
|
}
|
|
501
599
|
//#endregion
|
|
502
|
-
export {
|
|
600
|
+
export { SLACK_CHANNEL as a, slackSetupContract as i, createSlackSetupWizardProxy as n, describeSlackSetupAccount as o, slackSetupAdapter as r, isSlackSetupAccountConfigured as s, createSlackSetupWizardBase as t };
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackSetupPlugin } from "./channel.setup-
|
|
1
|
+
import { t as slackSetupPlugin } from "./channel.setup-DOSTEDfA.js";
|
|
2
2
|
export { slackSetupPlugin };
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-
|
|
2
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
3
|
-
import "./shared-
|
|
4
|
-
import {
|
|
5
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
6
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
1
|
+
import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-BSr252c_.js";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-jn1xLaVi.js";
|
|
3
|
+
import "./shared-BfMskaMx.js";
|
|
4
|
+
import { a as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-tPxMuFez.js";
|
|
5
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DodP2TFx.js";
|
|
6
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-M9eF8891.js";
|
|
7
7
|
import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
|
-
import {
|
|
9
|
-
import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
|
|
8
|
+
import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, patchChannelConfigForAccount, promptResolvedAllowFrom, resolveEntriesWithOptionalToken, resolveSetupAccountId, splitSetupEntries } from "openclaw/plugin-sdk/setup-runtime";
|
|
10
9
|
import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
|
|
11
10
|
//#region extensions/slack/src/setup-surface.ts
|
|
12
11
|
const t = createSetupTranslator();
|
|
13
12
|
function resolveSlackSetupAuth(account, credentialValues) {
|
|
14
|
-
if (account.config.
|
|
13
|
+
if (account.config.postAs === "user") return credentialValues.userToken || account.userToken;
|
|
15
14
|
return credentialValues.botToken || account.botToken;
|
|
16
15
|
}
|
|
17
16
|
async function resolveSlackAllowFromEntries(params) {
|
|
@@ -41,29 +40,34 @@ async function promptSlackAllowFrom(params) {
|
|
|
41
40
|
idPattern: /^[A-Z][A-Z0-9]+$/i,
|
|
42
41
|
normalizeId: (id) => id.toUpperCase()
|
|
43
42
|
});
|
|
44
|
-
|
|
43
|
+
const accountId = resolveSetupAccountId({
|
|
44
|
+
accountId: params.accountId,
|
|
45
|
+
defaultAccountId: resolveDefaultSlackAccountId(params.cfg)
|
|
46
|
+
});
|
|
47
|
+
const account = inspectSlackAccount({
|
|
45
48
|
cfg: params.cfg,
|
|
46
|
-
|
|
49
|
+
accountId
|
|
50
|
+
});
|
|
51
|
+
const noteTitle = t("wizard.slack.allowlistTitle");
|
|
52
|
+
await params.prompter.note([
|
|
53
|
+
t("wizard.slack.allowlistIntro"),
|
|
54
|
+
t("wizard.slack.examples"),
|
|
55
|
+
"- U12345678",
|
|
56
|
+
"- @alice",
|
|
57
|
+
t("wizard.slack.multipleEntries"),
|
|
58
|
+
t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
|
|
59
|
+
].join("\n"), noteTitle);
|
|
60
|
+
const allowFrom = await promptResolvedAllowFrom({
|
|
47
61
|
prompter: params.prompter,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
resolveExisting: (account, cfg) => resolveSlackAccountAllowFrom({
|
|
52
|
-
cfg,
|
|
53
|
-
accountId: account.accountId
|
|
62
|
+
existing: resolveSlackAccountAllowFrom({
|
|
63
|
+
cfg: params.cfg,
|
|
64
|
+
accountId
|
|
54
65
|
}) ?? [],
|
|
55
|
-
|
|
56
|
-
noteTitle: t("wizard.slack.allowlistTitle"),
|
|
57
|
-
noteLines: [
|
|
58
|
-
t("wizard.slack.allowlistIntro"),
|
|
59
|
-
t("wizard.slack.examples"),
|
|
60
|
-
"- U12345678",
|
|
61
|
-
"- @alice",
|
|
62
|
-
t("wizard.slack.multipleEntries"),
|
|
63
|
-
t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
|
|
64
|
-
],
|
|
66
|
+
token: account.userToken ?? account.botToken ?? "",
|
|
65
67
|
message: t("wizard.slack.allowFromPrompt"),
|
|
66
68
|
placeholder: "@alice, U12345678",
|
|
69
|
+
label: noteTitle,
|
|
70
|
+
parseInputs: splitSetupEntries,
|
|
67
71
|
parseId,
|
|
68
72
|
invalidWithoutTokenNote: t("wizard.slack.allowFromInvalidWithoutToken"),
|
|
69
73
|
resolveEntries: async ({ token, entries }) => (await resolveSlackUserAllowlist({
|
|
@@ -75,6 +79,18 @@ async function promptSlackAllowFrom(params) {
|
|
|
75
79
|
id: entry.id ?? null
|
|
76
80
|
}))
|
|
77
81
|
});
|
|
82
|
+
return patchChannelConfigForAccount({
|
|
83
|
+
cfg: params.cfg,
|
|
84
|
+
channel: SLACK_CHANNEL,
|
|
85
|
+
accountId: account.accountId,
|
|
86
|
+
patch: {
|
|
87
|
+
allowFrom,
|
|
88
|
+
dm: {
|
|
89
|
+
...account.config.dm,
|
|
90
|
+
enabled: typeof account.config.dm?.enabled === "boolean" ? account.config.dm.enabled : true
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
78
94
|
}
|
|
79
95
|
async function resolveSlackGroupAllowlist(params) {
|
|
80
96
|
let keys = params.entries;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig, s as resolveSlackAccountDmPolicy } from "./accounts-
|
|
2
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
1
|
+
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig, s as resolveSlackAccountDmPolicy } from "./accounts-BSr252c_.js";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-jn1xLaVi.js";
|
|
3
3
|
import { t as isSlackPluginAccountConfigured } from "./account-configured-BwfXBo_F.js";
|
|
4
|
-
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-
|
|
5
|
-
import { t as probeSlack, v as getChatChannelMeta } from "./probe-
|
|
6
|
-
import {
|
|
7
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
8
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
4
|
+
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-C3ffk6oN.js";
|
|
5
|
+
import { t as probeSlack, v as getChatChannelMeta } from "./probe-CVRuArHA.js";
|
|
6
|
+
import { a as SLACK_CHANNEL } from "./setup-core-tPxMuFez.js";
|
|
7
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-B4j4tCOI.js";
|
|
8
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-U6oVntbM.js";
|
|
9
9
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-DxmvbxBF.js";
|
|
10
10
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
11
11
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
@@ -46,7 +46,7 @@ const collectSlackSecurityWarnings = createOpenProviderConfiguredRouteWarningCol
|
|
|
46
46
|
remediation: "Set channels.slack.groupPolicy=\"allowlist\" and configure channels.slack.channels"
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
-
const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-
|
|
49
|
+
const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-Cz6erklv.js").then((n) => n.n));
|
|
50
50
|
const slackSecurityAdapter = {
|
|
51
51
|
resolveDmPolicy: resolveSlackDmPolicy,
|
|
52
52
|
collectWarnings: collectSlackSecurityWarnings,
|
|
@@ -216,6 +216,7 @@ function createSlackPluginBase(params) {
|
|
|
216
216
|
preferSessionLookupForAnnounceTarget: true
|
|
217
217
|
},
|
|
218
218
|
setupWizard: params.setupWizard,
|
|
219
|
+
...params.setupContract ? { setupContract: params.setupContract } : {},
|
|
219
220
|
capabilities: {
|
|
220
221
|
chatTypes: [
|
|
221
222
|
"direct",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as deliverSlackSlashReplies$1 } from "./replies-
|
|
1
|
+
import { r as deliverSlackSlashReplies$1 } from "./replies-Cgr2Gli4.js";
|
|
2
2
|
import { resolveAgentRoute as resolveAgentRoute$1 } from "openclaw/plugin-sdk/routing";
|
|
3
3
|
import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
4
4
|
import { recordInboundSessionMetaSafe as recordInboundSessionMetaSafe$1, resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
|
|
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
|
|
|
8
8
|
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
|
|
9
9
|
|
|
10
10
|
### Additional Details
|
|
11
|
-
* Last updated: Wed,
|
|
11
|
+
* Last updated: Wed, 08 Jul 2026 06:47:45 GMT
|
|
12
12
|
* Dependencies: [undici-types](https://npmjs.com/package/undici-types)
|
|
13
13
|
|
|
14
14
|
# Credits
|