@openclaw/slack 2026.6.1-beta.1 → 2026.6.1-beta.2
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/{action-runtime-Cg2tZbNu.js → action-runtime-CgrHdqkC.js} +4 -4
- package/dist/action-runtime.runtime-D05xDf1s.js +2 -0
- package/dist/{actions-CkiDNtJN.js → actions-YkhEE5f1.js} +3 -3
- package/dist/{actions.runtime-BCrYXk_p.js → actions.runtime-DyVzqzLc.js} +1 -1
- package/dist/api.js +8 -8
- package/dist/{approval-handler.runtime-D89odl0s.js → approval-handler.runtime-KWkR1mEG.js} +2 -2
- package/dist/{channel-C3A408fP.js → channel-C15EZbTc.js} +48 -132
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-Bwe4Z6kB.js → channel.setup-DrCTObMp.js} +1 -1
- package/dist/{client-qvqS9fQM.js → client-Cn2WwpcA.js} +11 -2
- package/dist/{directory-live-WZwhRYe2.js → directory-live-C1acgXKJ.js} +1 -1
- package/dist/{monitor-NFID7817.js → monitor-C1P_IgPU.js} +3 -3
- package/dist/{outbound-adapter-C0WSWc70.js → outbound-adapter-DvXnHfDP.js} +2 -2
- package/dist/{pipeline.runtime-DikPOwwv.js → pipeline.runtime-DDELeqeP.js} +8 -8
- package/dist/{policy-Bb46UkJW.js → policy-DT3mRh58.js} +1 -1
- package/dist/{probe-DczaQTdi.js → probe-BTKzLT2u.js} +1 -1
- package/dist/{provider-B4QaoPTL.js → provider-Cxqi3uh_.js} +7 -7
- package/dist/{replies-BPnv9QT6.js → replies-FEOdgSlE.js} +2 -2
- package/dist/{resolve-channels-DIxJRl0F.js → resolve-channels-DX2GSx9c.js} +1 -1
- package/dist/{resolve-users-B3vczJHE.js → resolve-users-DOULgUwy.js} +1 -1
- package/dist/{runtime-api-BpGQDSTg.js → runtime-api-DudG6lbf.js} +1 -1
- package/dist/runtime-api.js +10 -10
- package/dist/{scopes-Q1VjNpWb.js → scopes-CErQL0td.js} +1 -1
- package/dist/{send-DzphzfbK.js → send-rekB-Xjp.js} +3 -3
- package/dist/send.runtime-DGyqPLWj.js +2 -0
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-CMNvy84L.js → setup-surface-BB_ivsoR.js} +3 -3
- package/dist/{shared-VMk8NGYC.js → shared-Bviszgb6.js} +2 -8
- package/dist/{slash-dispatch.runtime-Dr5g7nrJ.js → slash-dispatch.runtime-CoFAysiw.js} +1 -1
- package/dist/{thread-ts-CzxxhSE5.js → thread-ts-Cffag8e2.js} +155 -83
- package/npm-shrinkwrap.json +3 -3
- package/openclaw.plugin.json +13 -13
- package/package.json +4 -4
- package/dist/action-runtime.runtime-Cy2yYwZP.js +0 -2
- package/dist/send.runtime-2BUc6y7a.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { i as resolveSlackChannelId, r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
|
|
2
2
|
import "./targets-nUqxHGgg.js";
|
|
3
|
-
import { a as parseSlackBlocksInput } from "./thread-ts-
|
|
4
|
-
import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-
|
|
5
|
-
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
3
|
+
import { a as parseSlackBlocksInput } from "./thread-ts-Cffag8e2.js";
|
|
4
|
+
import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-DudG6lbf.js";
|
|
5
|
+
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-DT3mRh58.js";
|
|
6
6
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
8
8
|
import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
|
|
@@ -30,7 +30,7 @@ function sameSlackChannelTarget(targetChannel, currentChannelId) {
|
|
|
30
30
|
let slackActionsRuntimePromise;
|
|
31
31
|
let slackAccountsRuntimePromise;
|
|
32
32
|
function loadSlackActionsRuntime() {
|
|
33
|
-
slackActionsRuntimePromise ??= import("./actions.runtime-
|
|
33
|
+
slackActionsRuntimePromise ??= import("./actions.runtime-DyVzqzLc.js");
|
|
34
34
|
return slackActionsRuntimePromise;
|
|
35
35
|
}
|
|
36
36
|
function loadSlackAccountsRuntime() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
2
|
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-f6Xcv9Vi.js";
|
|
3
|
-
import { b as truncateSlackText, o as validateSlackBlocksArray, s as SLACK_TEXT_LIMIT } from "./thread-ts-
|
|
4
|
-
import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-
|
|
5
|
-
import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-
|
|
3
|
+
import { b as truncateSlackText, o as validateSlackBlocksArray, s as SLACK_TEXT_LIMIT } from "./thread-ts-Cffag8e2.js";
|
|
4
|
+
import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
5
|
+
import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-rekB-Xjp.js";
|
|
6
6
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
|
|
8
8
|
import { logVerbose, logVerbose as logVerbose$1 } from "openclaw/plugin-sdk/runtime-env";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-
|
|
1
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-YkhEE5f1.js";
|
|
2
2
|
export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, sendSlackMessage, unpinSlackMessage };
|
package/dist/api.js
CHANGED
|
@@ -3,16 +3,16 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
|
|
|
3
3
|
import { t as inspectSlackAccount } from "./account-inspect-CdGk6R7l.js";
|
|
4
4
|
import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-C7eeWg7M.js";
|
|
5
5
|
import "./targets-nUqxHGgg.js";
|
|
6
|
-
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-
|
|
7
|
-
import { _ as buildSlackInteractiveBlocks, a as parseSlackBlocksInput, c as resolveSlackGroupRequireMention, d as normalizeAllowList, f as normalizeAllowListLower, g as resolveSlackUserAllowed, h as resolveSlackAllowListMatch, i as SLACK_MAX_BLOCKS, l as resolveSlackGroupToolPolicy, m as normalizeSlackSlug, o as validateSlackBlocksArray, p as normalizeSlackAllowOwnerEntry, u as allowListMatches, v as buildSlackPresentationBlocks } from "./thread-ts-
|
|
6
|
+
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-C15EZbTc.js";
|
|
7
|
+
import { _ as buildSlackInteractiveBlocks, a as parseSlackBlocksInput, c as resolveSlackGroupRequireMention, d as normalizeAllowList, f as normalizeAllowListLower, g as resolveSlackUserAllowed, h as resolveSlackAllowListMatch, i as SLACK_MAX_BLOCKS, l as resolveSlackGroupToolPolicy, m as normalizeSlackSlug, o as validateSlackBlocksArray, p as normalizeSlackAllowOwnerEntry, u as allowListMatches, v as buildSlackPresentationBlocks } from "./thread-ts-Cffag8e2.js";
|
|
8
|
+
import { a as getSlackWriteClient, c as resolveSlackWebClientOptions, i as createSlackWriteClient, l as resolveSlackWriteClientOptions, n as createSlackTokenCacheKey, o as SLACK_DEFAULT_RETRY_OPTIONS, r as createSlackWebClient, s as SLACK_WRITE_RETRY_OPTIONS, t as clearSlackWriteClientCacheForTest } from "./client-Cn2WwpcA.js";
|
|
8
9
|
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-B9M0zzlQ.js";
|
|
9
10
|
import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { a as
|
|
13
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-CkiDNtJN.js";
|
|
11
|
+
import { t as slackSetupPlugin } from "./channel.setup-DrCTObMp.js";
|
|
12
|
+
import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-rekB-Xjp.js";
|
|
13
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-YkhEE5f1.js";
|
|
14
14
|
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-8UPAEyNg.js";
|
|
15
|
-
import { t as probeSlack } from "./probe-
|
|
15
|
+
import { t as probeSlack } from "./probe-BTKzLT2u.js";
|
|
16
16
|
import { t as collectSlackSecurityAuditFindings } from "./security-audit-CikQhBUY.js";
|
|
17
|
-
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-
|
|
17
|
+
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-Cxqi3uh_.js";
|
|
18
18
|
export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, resetSlackChannelTypeCacheForTest as __resetSlackChannelTypeCacheForTest, resetSlackChannelTypeCacheForTest, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, clearSlackWriteClientCacheForTest, collectSlackSecurityAuditFindings, compileSlackInteractiveReplies, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, isSlackInteractiveRepliesEnabled, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, parseSlackOptionsLine, parseSlackTarget, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, recordSlackThreadParticipation, registerSlackHttpHandler, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAllowListMatch, resolveSlackAutoThreadId, resolveSlackChannelId, resolveSlackChannelType, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackReplyToMode, resolveSlackRuntimeGroupPolicy, resolveSlackUserAllowed, resolveSlackWebClientOptions, resolveSlackWriteClientOptions, sendSlackMessage, slackPlugin, slackSetupPlugin, unpinSlackMessage, validateSlackBlocksArray };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as sendMessageSlack } from "./send-
|
|
1
|
+
import { O as resolveSlackApprovalKind, b as truncateSlackText, j as shouldHandleSlackNativeApprovalRequest, r as resolveSlackReplyBlocks, w as isSlackAnyNativeApprovalClientEnabled, z as normalizeSlackApproverId } from "./thread-ts-Cffag8e2.js";
|
|
2
|
+
import { t as sendMessageSlack } from "./send-rekB-Xjp.js";
|
|
3
3
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
5
5
|
import { buildApprovalPresentationFromActionDescriptors } from "openclaw/plugin-sdk/approval-reply-runtime";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resolveSlackReplyToMode, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom } from "./accounts-f6Xcv9Vi.js";
|
|
2
2
|
import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-C7eeWg7M.js";
|
|
3
3
|
import "./targets-nUqxHGgg.js";
|
|
4
|
-
import { A as
|
|
4
|
+
import { A as resolveTurnSourceSlackOriginTarget, B as resolveSlackExecApprovalTarget, C as hasSlackPluginApprovers, D as resolveSessionSlackOriginTarget, E as normalizeSlackOriginTarget, F as isSlackApprovalAuthorizedSender, I as getSlackExecApprovalApprovers, L as isSlackExecApprovalAuthorizedSender, M as shouldHandleSlackPluginViaForwardingSession, N as slackTargetsMatch, O as resolveSlackApprovalKind, P as getSlackApprovalApprovers, R as isSlackExecApprovalClientEnabled, T as normalizeSlackForwardTarget, V as shouldSuppressLocalSlackExecApprovalPrompt, _ as buildSlackInteractiveBlocks, c as resolveSlackGroupRequireMention, f as normalizeAllowListLower, j as shouldHandleSlackNativeApprovalRequest, k as resolveSlackFallbackOriginTarget, l as resolveSlackGroupToolPolicy, n as resolveSlackThreadTsValue, r as resolveSlackReplyBlocks, s as SLACK_TEXT_LIMIT, t as normalizeSlackThreadTsCandidate, v as buildSlackPresentationBlocks, w as isSlackAnyNativeApprovalClientEnabled, y as resolveSlackInteractiveBlockOffsets } from "./thread-ts-Cffag8e2.js";
|
|
5
|
+
import { d as PAIRING_APPROVED_MESSAGE, h as isSlackPluginAccountConfigured, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID } from "./client-Cn2WwpcA.js";
|
|
5
6
|
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-B9M0zzlQ.js";
|
|
6
7
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
7
|
-
import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID } from "./client-qvqS9fQM.js";
|
|
8
8
|
import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
9
|
-
import {
|
|
9
|
+
import { n as slackConfigAdapter, r as slackSecurityAdapter, t as createSlackPluginBase } from "./shared-Bviszgb6.js";
|
|
10
10
|
import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-POfI_bgP.js";
|
|
11
11
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
12
12
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -22,8 +22,7 @@ import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState }
|
|
|
22
22
|
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
23
23
|
import { createApproverRestrictedNativeApprovalCapability, splitChannelApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
|
|
24
24
|
import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
|
|
25
|
-
import { createChannelNativeOriginTargetResolver,
|
|
26
|
-
import { channelRouteTargetsMatchExact, stringifyRouteThreadId } from "openclaw/plugin-sdk/channel-route";
|
|
25
|
+
import { createChannelNativeOriginTargetResolver, createNativeApprovalForwardingFallbackSuppressor } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
27
26
|
import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
|
|
28
27
|
import { normalizeInteractiveReply, normalizeMessagePresentation } from "openclaw/plugin-sdk/interactive-runtime";
|
|
29
28
|
import { readPositiveIntegerParam, readStringParam } from "openclaw/plugin-sdk/param-readers";
|
|
@@ -44,88 +43,6 @@ function resolveSlackAutoThreadId(params) {
|
|
|
44
43
|
}
|
|
45
44
|
//#endregion
|
|
46
45
|
//#region extensions/slack/src/approval-native.ts
|
|
47
|
-
const SLACK_DM_CHANNEL_ID_RE = /^D[A-Z0-9]{8,}$/i;
|
|
48
|
-
const SLACK_USER_ID_RE = /^[UW][A-Z0-9]{8,}$/i;
|
|
49
|
-
function extractSlackSessionKind(sessionKey) {
|
|
50
|
-
if (!sessionKey) return null;
|
|
51
|
-
const kind = normalizeLowercaseStringOrEmpty(sessionKey.match(/slack:(direct|channel|group):/i)?.[1]);
|
|
52
|
-
return kind ? kind : null;
|
|
53
|
-
}
|
|
54
|
-
function normalizeComparableTarget(value) {
|
|
55
|
-
return normalizeLowercaseStringOrEmpty(value);
|
|
56
|
-
}
|
|
57
|
-
function normalizeSlackThreadMatchKey(threadId) {
|
|
58
|
-
return threadId?.trim() ?? "";
|
|
59
|
-
}
|
|
60
|
-
function resolveSlackTurnSourceDefaultKind(params) {
|
|
61
|
-
if (SLACK_DM_CHANNEL_ID_RE.test(params.turnSourceTo)) return "channel";
|
|
62
|
-
return params.sessionKind === "direct" ? "user" : "channel";
|
|
63
|
-
}
|
|
64
|
-
function resolveTurnSourceSlackOriginTarget(request) {
|
|
65
|
-
const turnSourceChannel = normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel);
|
|
66
|
-
const turnSourceTo = normalizeOptionalString(request.request.turnSourceTo) ?? "";
|
|
67
|
-
if (turnSourceChannel !== "slack" || !turnSourceTo) return null;
|
|
68
|
-
const parsed = parseSlackTarget(turnSourceTo, { defaultKind: resolveSlackTurnSourceDefaultKind({
|
|
69
|
-
turnSourceTo,
|
|
70
|
-
sessionKind: extractSlackSessionKind(request.request.sessionKey ?? void 0)
|
|
71
|
-
}) });
|
|
72
|
-
if (!parsed) return null;
|
|
73
|
-
const threadId = stringifyRouteThreadId(request.request.turnSourceThreadId);
|
|
74
|
-
return {
|
|
75
|
-
to: `${parsed.kind}:${parsed.id}`,
|
|
76
|
-
threadId
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function resolveSessionSlackOriginTarget(sessionTarget) {
|
|
80
|
-
return {
|
|
81
|
-
to: sessionTarget.to,
|
|
82
|
-
threadId: stringifyRouteThreadId(sessionTarget.threadId)
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function resolveSlackFallbackOriginTarget(request) {
|
|
86
|
-
const sessionTarget = resolveApprovalRequestSessionConversation({
|
|
87
|
-
request,
|
|
88
|
-
channel: "slack",
|
|
89
|
-
bundledFallback: false
|
|
90
|
-
});
|
|
91
|
-
if (!sessionTarget) return null;
|
|
92
|
-
const parsed = parseSlackTarget(sessionTarget.id.toUpperCase(), { defaultKind: "channel" });
|
|
93
|
-
if (!parsed) return null;
|
|
94
|
-
return {
|
|
95
|
-
to: `${parsed.kind}:${parsed.id}`,
|
|
96
|
-
threadId: sessionTarget.threadId
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
function normalizeSlackOriginTarget(target) {
|
|
100
|
-
return {
|
|
101
|
-
...target,
|
|
102
|
-
to: normalizeComparableTarget(target.to)
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function parseComparableSlackTarget(target) {
|
|
106
|
-
return parseSlackTarget(target.to, { defaultKind: "channel" });
|
|
107
|
-
}
|
|
108
|
-
function isSlackDmChannelToUserRoutePair(a, b) {
|
|
109
|
-
const left = parseComparableSlackTarget(a);
|
|
110
|
-
const right = parseComparableSlackTarget(b);
|
|
111
|
-
if (!left || !right) return false;
|
|
112
|
-
return left.kind === "channel" && SLACK_DM_CHANNEL_ID_RE.test(left.id) && right.kind === "user" || right.kind === "channel" && SLACK_DM_CHANNEL_ID_RE.test(right.id) && left.kind === "user";
|
|
113
|
-
}
|
|
114
|
-
function slackTargetsMatch(a, b) {
|
|
115
|
-
const threadKey = normalizeSlackThreadMatchKey(a.threadId);
|
|
116
|
-
if (threadKey !== normalizeSlackThreadMatchKey(b.threadId)) return false;
|
|
117
|
-
if (channelRouteTargetsMatchExact({
|
|
118
|
-
left: {
|
|
119
|
-
channel: "slack",
|
|
120
|
-
to: a.to
|
|
121
|
-
},
|
|
122
|
-
right: {
|
|
123
|
-
channel: "slack",
|
|
124
|
-
to: b.to
|
|
125
|
-
}
|
|
126
|
-
})) return true;
|
|
127
|
-
return Boolean(threadKey && isSlackDmChannelToUserRoutePair(a, b));
|
|
128
|
-
}
|
|
129
46
|
function resolveSlackNativeSuppressionAccountId({ target, request }) {
|
|
130
47
|
return normalizeOptionalString(target.accountId) ?? normalizeOptionalString(request.request.turnSourceAccountId);
|
|
131
48
|
}
|
|
@@ -134,34 +51,6 @@ function shouldConsiderSlackNativeForwardingSuppression(input) {
|
|
|
134
51
|
if (input.approvalKind === "plugin") return true;
|
|
135
52
|
return normalizeMessageChannel(input.request.request.turnSourceChannel) === "slack";
|
|
136
53
|
}
|
|
137
|
-
function resolveForwardingFallbackSlackTarget(target) {
|
|
138
|
-
const to = normalizeOptionalString(target.to);
|
|
139
|
-
if (!to) return null;
|
|
140
|
-
const parsed = parseSlackTarget(to, { defaultKind: SLACK_USER_ID_RE.test(to) ? "user" : "channel" });
|
|
141
|
-
if (!parsed) return null;
|
|
142
|
-
return {
|
|
143
|
-
to: `${parsed.kind}:${parsed.id}`,
|
|
144
|
-
threadId: stringifyRouteThreadId(target.threadId)
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function isSlackPluginForwardingFallbackHandledNatively(input) {
|
|
148
|
-
const forwardingTarget = resolveForwardingFallbackSlackTarget(input.target);
|
|
149
|
-
if (!forwardingTarget) return false;
|
|
150
|
-
const request = input.request;
|
|
151
|
-
const originTarget = resolveSlackOriginTarget({
|
|
152
|
-
cfg: input.cfg,
|
|
153
|
-
accountId: resolveSlackNativeSuppressionAccountId(input),
|
|
154
|
-
approvalKind: input.approvalKind,
|
|
155
|
-
request
|
|
156
|
-
});
|
|
157
|
-
if (originTarget && slackTargetsMatch(forwardingTarget, originTarget)) return true;
|
|
158
|
-
return resolveSlackApproverDmTargets({
|
|
159
|
-
cfg: input.cfg,
|
|
160
|
-
accountId: resolveSlackNativeSuppressionAccountId(input),
|
|
161
|
-
approvalKind: input.approvalKind,
|
|
162
|
-
request
|
|
163
|
-
}).some((target) => slackTargetsMatch(forwardingTarget, target));
|
|
164
|
-
}
|
|
165
54
|
const resolveSlackOriginTarget = createChannelNativeOriginTargetResolver({
|
|
166
55
|
channel: "slack",
|
|
167
56
|
shouldHandleRequest: ({ cfg, accountId, request }) => shouldHandleSlackNativeApprovalRequest({
|
|
@@ -184,6 +73,19 @@ function resolveSlackApproverDmTargets(params) {
|
|
|
184
73
|
})) return [];
|
|
185
74
|
return (params.approvalKind === "plugin" ? getSlackApprovalApprovers(params) : getSlackExecApprovalApprovers(params)).map((approver) => ({ to: `user:${approver}` }));
|
|
186
75
|
}
|
|
76
|
+
const shouldSuppressSlackForwardingFallback = createNativeApprovalForwardingFallbackSuppressor({
|
|
77
|
+
channel: "slack",
|
|
78
|
+
normalizeForwardTarget: normalizeSlackForwardTarget,
|
|
79
|
+
resolveAccountId: ({ target, request }) => resolveSlackNativeSuppressionAccountId({
|
|
80
|
+
target,
|
|
81
|
+
request
|
|
82
|
+
}),
|
|
83
|
+
isSessionRouteEligible: shouldHandleSlackNativeApprovalRequest,
|
|
84
|
+
isExplicitTargetEligible: shouldHandleSlackNativeApprovalRequest,
|
|
85
|
+
resolveOriginTarget: resolveSlackOriginTarget,
|
|
86
|
+
resolveApproverDmTargets: resolveSlackApproverDmTargets,
|
|
87
|
+
targetsMatch: slackTargetsMatch
|
|
88
|
+
});
|
|
187
89
|
const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapability({
|
|
188
90
|
channel: "slack",
|
|
189
91
|
channelLabel: "Slack",
|
|
@@ -231,7 +133,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
231
133
|
approvalKind: resolveSlackApprovalKind(request),
|
|
232
134
|
request
|
|
233
135
|
}),
|
|
234
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
136
|
+
load: async () => (await import("./approval-handler.runtime-KWkR1mEG.js")).slackApprovalNativeRuntime
|
|
235
137
|
})
|
|
236
138
|
});
|
|
237
139
|
const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
|
|
@@ -248,20 +150,34 @@ const slackApprovalCapability = {
|
|
|
248
150
|
request: input.request
|
|
249
151
|
});
|
|
250
152
|
if (!canHandleNative || input.approvalKind !== "plugin") return canHandleNative;
|
|
251
|
-
return
|
|
153
|
+
return shouldSuppressSlackForwardingFallback(input);
|
|
252
154
|
}
|
|
253
155
|
},
|
|
254
156
|
native: baseSlackNativeAdapter ? {
|
|
255
157
|
...baseSlackNativeAdapter,
|
|
256
158
|
describeDeliveryCapabilities: (params) => {
|
|
159
|
+
const capabilities = baseSlackNativeAdapter.describeDeliveryCapabilities(params);
|
|
160
|
+
const request = params.request;
|
|
161
|
+
const approvalKind = params.approvalKind;
|
|
257
162
|
return {
|
|
258
|
-
...
|
|
163
|
+
...capabilities,
|
|
259
164
|
enabled: shouldHandleSlackNativeApprovalRequest({
|
|
260
165
|
cfg: params.cfg,
|
|
261
166
|
accountId: params.accountId,
|
|
262
|
-
approvalKind
|
|
263
|
-
request
|
|
264
|
-
})
|
|
167
|
+
approvalKind,
|
|
168
|
+
request
|
|
169
|
+
}),
|
|
170
|
+
...approvalKind === "plugin" && shouldHandleSlackPluginViaForwardingSession({
|
|
171
|
+
cfg: params.cfg,
|
|
172
|
+
accountId: params.accountId,
|
|
173
|
+
request
|
|
174
|
+
}) ? {
|
|
175
|
+
preferredSurface: "origin",
|
|
176
|
+
supportsApproverDmSurface: hasSlackPluginApprovers({
|
|
177
|
+
cfg: params.cfg,
|
|
178
|
+
accountId: params.accountId
|
|
179
|
+
})
|
|
180
|
+
} : {}
|
|
265
181
|
};
|
|
266
182
|
}
|
|
267
183
|
} : void 0
|
|
@@ -430,7 +346,7 @@ async function handleSlackMessageAction(params) {
|
|
|
430
346
|
//#region extensions/slack/src/channel-actions.ts
|
|
431
347
|
let slackActionRuntimePromise$1;
|
|
432
348
|
async function loadSlackActionRuntime$1() {
|
|
433
|
-
slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-
|
|
349
|
+
slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-D05xDf1s.js");
|
|
434
350
|
return await slackActionRuntimePromise$1;
|
|
435
351
|
}
|
|
436
352
|
function resolveSlackActionContext(params) {
|
|
@@ -560,9 +476,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
|
|
|
560
476
|
const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
|
|
561
477
|
const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
|
|
562
478
|
const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
|
|
563
|
-
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-
|
|
564
|
-
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-
|
|
565
|
-
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-
|
|
479
|
+
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BB_ivsoR.js"));
|
|
480
|
+
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-CErQL0td.js"));
|
|
481
|
+
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-DvXnHfDP.js"));
|
|
566
482
|
async function resolveSlackHandleAction() {
|
|
567
483
|
return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
|
|
568
484
|
}
|
|
@@ -583,26 +499,26 @@ let slackProbeModulePromise;
|
|
|
583
499
|
let slackMonitorModulePromise;
|
|
584
500
|
let slackDirectoryLiveModulePromise;
|
|
585
501
|
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-8UPAEyNg.js").then((n) => n.t));
|
|
586
|
-
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
587
|
-
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
502
|
+
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-DX2GSx9c.js").then((n) => n.n));
|
|
503
|
+
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DOULgUwy.js").then((n) => n.n));
|
|
588
504
|
async function loadSlackActionRuntime() {
|
|
589
|
-
slackActionRuntimePromise ??= import("./action-runtime.runtime-
|
|
505
|
+
slackActionRuntimePromise ??= import("./action-runtime.runtime-D05xDf1s.js");
|
|
590
506
|
return await slackActionRuntimePromise;
|
|
591
507
|
}
|
|
592
508
|
async function loadSlackSendRuntime() {
|
|
593
|
-
slackSendRuntimePromise ??= import("./send.runtime-
|
|
509
|
+
slackSendRuntimePromise ??= import("./send.runtime-DGyqPLWj.js");
|
|
594
510
|
return await slackSendRuntimePromise;
|
|
595
511
|
}
|
|
596
512
|
async function loadSlackProbeModule() {
|
|
597
|
-
slackProbeModulePromise ??= import("./probe-
|
|
513
|
+
slackProbeModulePromise ??= import("./probe-BTKzLT2u.js").then((n) => n.n);
|
|
598
514
|
return await slackProbeModulePromise;
|
|
599
515
|
}
|
|
600
516
|
async function loadSlackMonitorModule() {
|
|
601
|
-
slackMonitorModulePromise ??= import("./monitor-
|
|
517
|
+
slackMonitorModulePromise ??= import("./monitor-C1P_IgPU.js").then((n) => n.t);
|
|
602
518
|
return await slackMonitorModulePromise;
|
|
603
519
|
}
|
|
604
520
|
async function loadSlackDirectoryLiveModule() {
|
|
605
|
-
slackDirectoryLiveModulePromise ??= import("./directory-live-
|
|
521
|
+
slackDirectoryLiveModulePromise ??= import("./directory-live-C1acgXKJ.js").then((n) => n.t);
|
|
606
522
|
return await slackDirectoryLiveModulePromise;
|
|
607
523
|
}
|
|
608
524
|
async function resolveSlackSendContext(params) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackPlugin } from "./channel-
|
|
1
|
+
import { t as slackPlugin } from "./channel-C15EZbTc.js";
|
|
2
2
|
export { slackPlugin };
|
|
@@ -4,7 +4,7 @@ import { t as SlackChannelConfigSchema } from "./config-schema-BjAjs8_6.js";
|
|
|
4
4
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
5
5
|
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
6
6
|
//#region extensions/slack/src/channel.setup.ts
|
|
7
|
-
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-
|
|
7
|
+
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-BB_ivsoR.js")).slackSetupWizard }));
|
|
8
8
|
const slackSetupConfigAdapter = createScopedChannelConfigAdapter({
|
|
9
9
|
sectionKey: SLACK_CHANNEL,
|
|
10
10
|
listAccountIds: listSlackAccountIds,
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import "./target-parsing-C7eeWg7M.js";
|
|
2
|
-
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$
|
|
2
|
+
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$2 } from "openclaw/plugin-sdk/account-id";
|
|
3
|
+
import { hasConfiguredAccountValue } from "openclaw/plugin-sdk/account-resolution";
|
|
3
4
|
import { PAIRING_APPROVED_MESSAGE, projectCredentialSnapshotFields, resolveConfiguredFromRequiredCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
|
|
4
5
|
import { createHash } from "node:crypto";
|
|
5
6
|
import { WebClient } from "@slack/web-api";
|
|
6
7
|
import { createNodeProxyAgent } from "openclaw/plugin-sdk/fetch-runtime";
|
|
8
|
+
//#region extensions/slack/src/account-configured.ts
|
|
9
|
+
function isSlackPluginAccountConfigured(account) {
|
|
10
|
+
const mode = account.config.mode ?? "socket";
|
|
11
|
+
if (!Boolean(account.botToken?.trim())) return false;
|
|
12
|
+
if (mode === "http") return hasConfiguredAccountValue(account.config.signingSecret);
|
|
13
|
+
return Boolean(account.appToken?.trim());
|
|
14
|
+
}
|
|
15
|
+
//#endregion
|
|
7
16
|
//#region extensions/slack/src/channel-api.ts
|
|
8
17
|
const SLACK_CHANNEL_META = {
|
|
9
18
|
id: "slack",
|
|
@@ -103,4 +112,4 @@ function clearSlackWriteClientCacheForTest() {
|
|
|
103
112
|
slackWriteClientCache.clear();
|
|
104
113
|
}
|
|
105
114
|
//#endregion
|
|
106
|
-
export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, PAIRING_APPROVED_MESSAGE as d, getChatChannelMeta as f, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, resolveConfiguredFromRequiredCredentialStatuses as m, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, projectCredentialSnapshotFields as p, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t, DEFAULT_ACCOUNT_ID$
|
|
115
|
+
export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, PAIRING_APPROVED_MESSAGE as d, getChatChannelMeta as f, isSlackPluginAccountConfigured as h, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, resolveConfiguredFromRequiredCredentialStatuses as m, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, projectCredentialSnapshotFields as p, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t, DEFAULT_ACCOUNT_ID$2 as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
2
|
import { a as resolveSlackAccount } from "./accounts-f6Xcv9Vi.js";
|
|
3
|
-
import { r as createSlackWebClient } from "./client-
|
|
3
|
+
import { r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/directory-live.ts
|
|
6
6
|
var directory_live_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-
|
|
3
|
-
import { t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
4
|
-
import { o as resolveSlackThreadTs } from "./replies-
|
|
2
|
+
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-Cxqi3uh_.js";
|
|
3
|
+
import { t as isSlackChannelAllowedByPolicy } from "./policy-DT3mRh58.js";
|
|
4
|
+
import { o as resolveSlackThreadTs } from "./replies-FEOdgSlE.js";
|
|
5
5
|
//#region extensions/slack/src/monitor.ts
|
|
6
6
|
var monitor_exports = /* @__PURE__ */ __exportAll({
|
|
7
7
|
buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as buildSlackInteractiveBlocks, a as parseSlackBlocksInput, n as resolveSlackThreadTsValue, s as SLACK_TEXT_LIMIT, v as buildSlackPresentationBlocks, y as resolveSlackInteractiveBlockOffsets } from "./thread-ts-
|
|
1
|
+
import { _ as buildSlackInteractiveBlocks, a as parseSlackBlocksInput, n as resolveSlackThreadTsValue, s as SLACK_TEXT_LIMIT, v as buildSlackPresentationBlocks, y as resolveSlackInteractiveBlockOffsets } from "./thread-ts-Cffag8e2.js";
|
|
2
2
|
import { t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
3
3
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
@@ -9,7 +9,7 @@ import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextM
|
|
|
9
9
|
const SLACK_MAX_BLOCKS = 50;
|
|
10
10
|
let slackSendRuntimePromise;
|
|
11
11
|
async function loadSlackSendRuntime() {
|
|
12
|
-
slackSendRuntimePromise ??= import("./send.runtime-
|
|
12
|
+
slackSendRuntimePromise ??= import("./send.runtime-DGyqPLWj.js");
|
|
13
13
|
return await slackSendRuntimePromise;
|
|
14
14
|
}
|
|
15
15
|
function resolveRenderedInteractiveBlocks(interactive, previousBlocks) {
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { l as resolveSlackReplyToMode } from "./accounts-f6Xcv9Vi.js";
|
|
2
2
|
import { r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
|
|
3
3
|
import "./targets-nUqxHGgg.js";
|
|
4
|
-
import { b as truncateSlackText, f as normalizeAllowListLower, h as resolveSlackAllowListMatch, p as normalizeSlackAllowOwnerEntry, s as SLACK_TEXT_LIMIT } from "./thread-ts-
|
|
4
|
+
import { b as truncateSlackText, f as normalizeAllowListLower, h as resolveSlackAllowListMatch, p as normalizeSlackAllowOwnerEntry, s as SLACK_TEXT_LIMIT } from "./thread-ts-Cffag8e2.js";
|
|
5
5
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
6
6
|
import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-DjlgH-Be.js";
|
|
7
|
-
import { a as recordSlackThreadParticipation, i as hasSlackThreadParticipationWithPersistence, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-
|
|
8
|
-
import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-
|
|
7
|
+
import { a as recordSlackThreadParticipation, i as hasSlackThreadParticipationWithPersistence, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-rekB-Xjp.js";
|
|
8
|
+
import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-YkhEE5f1.js";
|
|
9
9
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
10
|
-
import { _ as resolveStorePath, a as escapeSlackMrkdwn, b as stripSlackMentionsForCommandDetection, c as authorizeSlackBotRoomMessage, d as buildSlackAssistantThreadMetadata, f as parseSlackAssistantThreadMetadata, g as resolveChannelContextVisibilityMode, h as readSessionUpdatedAt, i as authorizeSlackDirectMessage, l as resolveSlackCommandIngress, m as resolveSlackChatType, o as recordInboundSession, p as normalizeSlackChannelType, r as resolveSlackRoomContextHints, s as resolveConversationLabel$1, u as resolveSlackEffectiveAllowFrom, v as updateLastRoute } from "./provider-
|
|
11
|
-
import { n as resolveSlackChannelConfig } from "./policy-
|
|
12
|
-
import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
10
|
+
import { _ as resolveStorePath, a as escapeSlackMrkdwn, b as stripSlackMentionsForCommandDetection, c as authorizeSlackBotRoomMessage, d as buildSlackAssistantThreadMetadata, f as parseSlackAssistantThreadMetadata, g as resolveChannelContextVisibilityMode, h as readSessionUpdatedAt, i as authorizeSlackDirectMessage, l as resolveSlackCommandIngress, m as resolveSlackChatType, o as recordInboundSession, p as normalizeSlackChannelType, r as resolveSlackRoomContextHints, s as resolveConversationLabel$1, u as resolveSlackEffectiveAllowFrom, v as updateLastRoute } from "./provider-Cxqi3uh_.js";
|
|
11
|
+
import { n as resolveSlackChannelConfig } from "./policy-DT3mRh58.js";
|
|
12
|
+
import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-FEOdgSlE.js";
|
|
13
13
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
14
14
|
import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
|
|
15
15
|
import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftGate, createDraftStreamLoop, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
|
|
@@ -1865,7 +1865,7 @@ const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
|
|
|
1865
1865
|
const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
|
|
1866
1866
|
let slackMediaModulePromise$1;
|
|
1867
1867
|
function loadSlackMediaModule$1() {
|
|
1868
|
-
slackMediaModulePromise$1 ??= import("./actions-
|
|
1868
|
+
slackMediaModulePromise$1 ??= import("./actions-YkhEE5f1.js").then((n) => n.h);
|
|
1869
1869
|
return slackMediaModulePromise$1;
|
|
1870
1870
|
}
|
|
1871
1871
|
function collectUniqueSlackMentionIds$1(texts) {
|
|
@@ -2379,7 +2379,7 @@ function formatSlackBotStarterThreadLabel(params) {
|
|
|
2379
2379
|
//#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
|
|
2380
2380
|
let slackMediaModulePromise;
|
|
2381
2381
|
function loadSlackMediaModule() {
|
|
2382
|
-
slackMediaModulePromise ??= import("./actions-
|
|
2382
|
+
slackMediaModulePromise ??= import("./actions-YkhEE5f1.js").then((n) => n.h);
|
|
2383
2383
|
return slackMediaModulePromise;
|
|
2384
2384
|
}
|
|
2385
2385
|
const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { m as normalizeSlackSlug } from "./thread-ts-
|
|
1
|
+
import { m as normalizeSlackSlug } from "./thread-ts-Cffag8e2.js";
|
|
2
2
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { applyChannelMatchMeta, buildChannelKeyCandidates, resolveChannelEntryMatchWithFallback } from "openclaw/plugin-sdk/channel-targets";
|
|
4
4
|
import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
3
3
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
4
4
|
import { withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
5
5
|
//#region extensions/slack/src/probe.ts
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-bbjH7IHX.js";
|
|
2
2
|
import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-f6Xcv9Vi.js";
|
|
3
|
-
import {
|
|
3
|
+
import { F as isSlackApprovalAuthorizedSender, L as isSlackExecApprovalAuthorizedSender, b as truncateSlackText, d as normalizeAllowList, f as normalizeAllowListLower, h as resolveSlackAllowListMatch, m as normalizeSlackSlug, p as normalizeSlackAllowOwnerEntry, s as SLACK_TEXT_LIMIT, u as allowListMatches, w as isSlackAnyNativeApprovalClientEnabled } from "./thread-ts-Cffag8e2.js";
|
|
4
|
+
import { c as resolveSlackWebClientOptions } from "./client-Cn2WwpcA.js";
|
|
4
5
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
5
|
-
import { c as resolveSlackWebClientOptions } from "./client-qvqS9fQM.js";
|
|
6
6
|
import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
7
7
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
8
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
9
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
10
|
-
import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
8
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DX2GSx9c.js";
|
|
9
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-DOULgUwy.js";
|
|
10
|
+
import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-DT3mRh58.js";
|
|
11
11
|
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
12
12
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries, normalizeStringEntriesLower, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
13
13
|
import { normalizeAccountId, normalizeMainKey, resolveAgentRoute, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
|
|
@@ -2699,7 +2699,7 @@ function createSlackThreadTsResolver(params) {
|
|
|
2699
2699
|
//#region extensions/slack/src/monitor/message-handler.ts
|
|
2700
2700
|
let slackMessagePipelinePromise;
|
|
2701
2701
|
function loadSlackMessagePipeline() {
|
|
2702
|
-
slackMessagePipelinePromise ??= import("./pipeline.runtime-
|
|
2702
|
+
slackMessagePipelinePromise ??= import("./pipeline.runtime-DDELeqeP.js");
|
|
2703
2703
|
return slackMessagePipelinePromise;
|
|
2704
2704
|
}
|
|
2705
2705
|
const APP_MENTION_RETRY_TTL_MS = 6e4;
|
|
@@ -3341,7 +3341,7 @@ function loadSlashCommandsRuntime() {
|
|
|
3341
3341
|
return slashCommandsRuntimePromise;
|
|
3342
3342
|
}
|
|
3343
3343
|
function loadSlashDispatchRuntime() {
|
|
3344
|
-
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-
|
|
3344
|
+
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-CoFAysiw.js");
|
|
3345
3345
|
return slashDispatchRuntimePromise;
|
|
3346
3346
|
}
|
|
3347
3347
|
function loadSlackPluginCommandsRuntime() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as resolveSlackReplyBlocks, s as SLACK_TEXT_LIMIT } from "./thread-ts-
|
|
2
|
-
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-
|
|
1
|
+
import { r as resolveSlackReplyBlocks, s as SLACK_TEXT_LIMIT } from "./thread-ts-Cffag8e2.js";
|
|
2
|
+
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-rekB-Xjp.js";
|
|
3
3
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
4
4
|
import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
|
|
5
5
|
import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
3
3
|
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-channels.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
3
3
|
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-users.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./target-parsing-C7eeWg7M.js";
|
|
2
|
-
import "./client-
|
|
2
|
+
import "./client-Cn2WwpcA.js";
|
|
3
3
|
import "./config-api-DnT9ohtE.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";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-B9PvcDQJ.js";
|
|
2
2
|
import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-f6Xcv9Vi.js";
|
|
3
|
-
import { c as resolveSlackGroupRequireMention, l as resolveSlackGroupToolPolicy } from "./thread-ts-
|
|
3
|
+
import { c as resolveSlackGroupRequireMention, l as resolveSlackGroupToolPolicy } from "./thread-ts-Cffag8e2.js";
|
|
4
4
|
import { n as setSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
5
|
-
import { t as sendMessageSlack } from "./send-
|
|
6
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-
|
|
7
|
-
import { t as probeSlack } from "./probe-
|
|
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-
|
|
5
|
+
import { t as sendMessageSlack } from "./send-rekB-Xjp.js";
|
|
6
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-YkhEE5f1.js";
|
|
7
|
+
import { t as probeSlack } from "./probe-BTKzLT2u.js";
|
|
8
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DX2GSx9c.js";
|
|
9
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-DOULgUwy.js";
|
|
10
|
+
import { t as monitorSlackProvider } from "./provider-Cxqi3uh_.js";
|
|
11
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-CgrHdqkC.js";
|
|
12
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-C1acgXKJ.js";
|
|
13
|
+
import "./monitor-C1P_IgPU.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 { r as createSlackWebClient } from "./client-
|
|
1
|
+
import { r as createSlackWebClient } from "./client-Cn2WwpcA.js";
|
|
2
2
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
3
3
|
import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
//#region extensions/slack/src/scopes.ts
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-f6Xcv9Vi.js";
|
|
2
2
|
import { r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
|
|
3
3
|
import "./targets-nUqxHGgg.js";
|
|
4
|
-
import { b as truncateSlackText, o as validateSlackBlocksArray, s as SLACK_TEXT_LIMIT, t as normalizeSlackThreadTsCandidate } from "./thread-ts-
|
|
5
|
-
import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-
|
|
4
|
+
import { b as truncateSlackText, o as validateSlackBlocksArray, s as SLACK_TEXT_LIMIT, t as normalizeSlackThreadTsCandidate } from "./thread-ts-Cffag8e2.js";
|
|
5
|
+
import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-Cn2WwpcA.js";
|
|
6
6
|
import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
7
|
-
import { i as loadOutboundMediaFromUrl } from "./runtime-api-
|
|
7
|
+
import { i as loadOutboundMediaFromUrl } from "./runtime-api-DudG6lbf.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 { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
|
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-DrCTObMp.js";
|
|
2
2
|
export { slackSetupPlugin };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-f6Xcv9Vi.js";
|
|
2
|
-
import "./shared-
|
|
2
|
+
import "./shared-Bviszgb6.js";
|
|
3
3
|
import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-POfI_bgP.js";
|
|
4
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
5
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
4
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DX2GSx9c.js";
|
|
5
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-DOULgUwy.js";
|
|
6
6
|
import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
8
8
|
import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy } from "./accounts-f6Xcv9Vi.js";
|
|
2
2
|
import { t as inspectSlackAccount } from "./account-inspect-CdGk6R7l.js";
|
|
3
|
+
import { f as getChatChannelMeta, h as isSlackPluginAccountConfigured } from "./client-Cn2WwpcA.js";
|
|
3
4
|
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-DrBq4Mld.js";
|
|
4
|
-
import { f as getChatChannelMeta } from "./client-qvqS9fQM.js";
|
|
5
5
|
import { i as SLACK_CHANNEL } from "./setup-core-POfI_bgP.js";
|
|
6
6
|
import { t as SlackChannelConfigSchema } from "./config-schema-BjAjs8_6.js";
|
|
7
7
|
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-XL6HeNCb.js";
|
|
@@ -106,12 +106,6 @@ const slackDoctor = {
|
|
|
106
106
|
};
|
|
107
107
|
//#endregion
|
|
108
108
|
//#region extensions/slack/src/shared.ts
|
|
109
|
-
function isSlackPluginAccountConfigured(account) {
|
|
110
|
-
const mode = account.config.mode ?? "socket";
|
|
111
|
-
if (!Boolean(account.botToken?.trim())) return false;
|
|
112
|
-
if (mode === "http") return Boolean(account.config.signingSecret?.trim());
|
|
113
|
-
return Boolean(account.appToken?.trim());
|
|
114
|
-
}
|
|
115
109
|
const slackConfigAdapter = createScopedChannelConfigAdapter({
|
|
116
110
|
sectionKey: SLACK_CHANNEL,
|
|
117
111
|
listAccountIds: listSlackAccountIds,
|
|
@@ -209,4 +203,4 @@ function createSlackPluginBase(params) {
|
|
|
209
203
|
};
|
|
210
204
|
}
|
|
211
205
|
//#endregion
|
|
212
|
-
export {
|
|
206
|
+
export { slackConfigAdapter as n, slackSecurityAdapter as r, createSlackPluginBase as t };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as deliverSlackSlashReplies$1 } from "./replies-
|
|
1
|
+
import { r as deliverSlackSlashReplies$1 } from "./replies-FEOdgSlE.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";
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-f6Xcv9Vi.js";
|
|
1
|
+
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-f6Xcv9Vi.js";
|
|
2
|
+
import { r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
|
|
3
|
+
import "./targets-nUqxHGgg.js";
|
|
4
|
+
import { h as isSlackPluginAccountConfigured } from "./client-Cn2WwpcA.js";
|
|
2
5
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
3
|
-
import { normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
|
+
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
7
|
import { normalizeMessageChannel } from "openclaw/plugin-sdk/routing";
|
|
5
|
-
import { doesApprovalRequestMatchChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
8
|
+
import { createNativeApprovalChannelRouteGates, doesApprovalRequestMatchChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
6
9
|
import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
7
10
|
import { createChannelExecApprovalProfile, isChannelExecApprovalClientEnabledFromConfig, isChannelExecApprovalTargetRecipient, matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
11
|
+
import { channelRouteTargetsMatchExact, stringifyRouteThreadId } from "openclaw/plugin-sdk/channel-route";
|
|
8
12
|
import { reduceInteractiveReply, resolveMessagePresentationControlValue } from "openclaw/plugin-sdk/interactive-runtime";
|
|
9
13
|
import { parseExecApprovalCommandText } from "openclaw/plugin-sdk/approval-reply-runtime";
|
|
10
14
|
import { compileAllowlist, resolveCompiledAllowlistMatch } from "openclaw/plugin-sdk/allow-from";
|
|
@@ -79,7 +83,9 @@ function getSlackApprovalApprovers(params) {
|
|
|
79
83
|
function isSlackApprovalAuthorizedSender(params) {
|
|
80
84
|
const senderId = params.senderId ? normalizeSlackApproverId(params.senderId) : void 0;
|
|
81
85
|
if (!senderId) return false;
|
|
82
|
-
|
|
86
|
+
const approvers = getSlackApprovalApprovers(params);
|
|
87
|
+
if (approvers.length > 0) return approvers.includes(senderId);
|
|
88
|
+
return (resolveSlackAccountAllowFrom(params) ?? []).some((entry) => entry.trim() === "*");
|
|
83
89
|
}
|
|
84
90
|
createResolvedApproverActionAuthAdapter({
|
|
85
91
|
channelLabel: "Slack",
|
|
@@ -91,85 +97,139 @@ createResolvedApproverActionAuthAdapter({
|
|
|
91
97
|
});
|
|
92
98
|
//#endregion
|
|
93
99
|
//#region extensions/slack/src/approval-native-gates.ts
|
|
100
|
+
const DEFAULT_APPROVAL_FORWARDING_MODE = "session";
|
|
101
|
+
const SLACK_DM_CHANNEL_ID_RE = /^D[A-Z0-9]{8,}$/i;
|
|
102
|
+
const SLACK_USER_ID_RE = /^[UW][A-Z0-9]{8,}$/i;
|
|
94
103
|
function resolveSlackApprovalKind(request) {
|
|
95
104
|
return request.id.startsWith("plugin:") ? "plugin" : "exec";
|
|
96
105
|
}
|
|
106
|
+
function isSlackApprovalTransportEnabled(params) {
|
|
107
|
+
return isSlackPluginAccountConfigured(resolveSlackAccount(params));
|
|
108
|
+
}
|
|
97
109
|
function resolveSlackNativeApprovalConfig(params) {
|
|
98
110
|
return resolveSlackAccount(params).config.execApprovals;
|
|
99
111
|
}
|
|
100
112
|
function resolvePluginApprovalForwardingConfig(cfg) {
|
|
101
113
|
return cfg.approvals?.plugin;
|
|
102
114
|
}
|
|
103
|
-
function
|
|
104
|
-
return
|
|
105
|
-
}
|
|
106
|
-
function
|
|
107
|
-
return
|
|
108
|
-
}
|
|
109
|
-
function
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
return
|
|
113
|
-
}
|
|
114
|
-
function
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
function normalizeSlackThreadMatchKey(threadId) {
|
|
116
|
+
return threadId == null ? "" : String(threadId).trim();
|
|
117
|
+
}
|
|
118
|
+
function normalizeComparableTarget(value) {
|
|
119
|
+
return normalizeLowercaseStringOrEmpty(value);
|
|
120
|
+
}
|
|
121
|
+
function extractSlackSessionKind(sessionKey) {
|
|
122
|
+
if (!sessionKey) return null;
|
|
123
|
+
const kind = normalizeLowercaseStringOrEmpty(sessionKey.match(/slack:(direct|channel|group):/i)?.[1]);
|
|
124
|
+
return kind ? kind : null;
|
|
125
|
+
}
|
|
126
|
+
function resolveSlackTurnSourceDefaultKind(params) {
|
|
127
|
+
if (SLACK_DM_CHANNEL_ID_RE.test(params.turnSourceTo)) return "channel";
|
|
128
|
+
return params.sessionKind === "direct" ? "user" : "channel";
|
|
129
|
+
}
|
|
130
|
+
function resolveTurnSourceSlackOriginTarget(request) {
|
|
131
|
+
const turnSourceChannel = normalizeLowercaseStringOrEmpty(request.request.turnSourceChannel);
|
|
132
|
+
const turnSourceTo = normalizeOptionalString(request.request.turnSourceTo) ?? "";
|
|
133
|
+
if (turnSourceChannel !== "slack" || !turnSourceTo) return null;
|
|
134
|
+
const parsed = parseSlackTarget(turnSourceTo, { defaultKind: resolveSlackTurnSourceDefaultKind({
|
|
135
|
+
turnSourceTo,
|
|
136
|
+
sessionKind: extractSlackSessionKind(request.request.sessionKey ?? void 0)
|
|
137
|
+
}) });
|
|
138
|
+
if (!parsed) return null;
|
|
139
|
+
return {
|
|
140
|
+
to: `${parsed.kind}:${parsed.id}`,
|
|
141
|
+
threadId: stringifyRouteThreadId(request.request.turnSourceThreadId)
|
|
142
|
+
};
|
|
119
143
|
}
|
|
120
|
-
function
|
|
121
|
-
return
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
});
|
|
126
|
-
});
|
|
144
|
+
function resolveSessionSlackOriginTarget(sessionTarget) {
|
|
145
|
+
return {
|
|
146
|
+
to: sessionTarget.to,
|
|
147
|
+
threadId: stringifyRouteThreadId(sessionTarget.threadId)
|
|
148
|
+
};
|
|
127
149
|
}
|
|
128
|
-
function
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
if (turnSourceChannel) return turnSourceChannel === "slack" && matchesSlackAccount({
|
|
132
|
-
expectedAccountId: params.accountId,
|
|
133
|
-
actualAccountId: request.turnSourceAccountId
|
|
134
|
-
});
|
|
135
|
-
return resolveApprovalRequestSessionConversation({
|
|
136
|
-
request: params.request,
|
|
150
|
+
function resolveSlackFallbackOriginTarget(request) {
|
|
151
|
+
const sessionTarget = resolveApprovalRequestSessionConversation({
|
|
152
|
+
request,
|
|
137
153
|
channel: "slack",
|
|
138
154
|
bundledFallback: false
|
|
139
|
-
}) !== null && doesApprovalRequestMatchChannelAccount({
|
|
140
|
-
cfg: params.cfg,
|
|
141
|
-
request: params.request,
|
|
142
|
-
channel: "slack",
|
|
143
|
-
accountId: params.accountId
|
|
144
155
|
});
|
|
156
|
+
if (!sessionTarget) return null;
|
|
157
|
+
const parsed = parseSlackTarget(sessionTarget.id.toUpperCase(), { defaultKind: "channel" });
|
|
158
|
+
if (!parsed) return null;
|
|
159
|
+
return {
|
|
160
|
+
to: `${parsed.kind}:${parsed.id}`,
|
|
161
|
+
threadId: sessionTarget.threadId
|
|
162
|
+
};
|
|
145
163
|
}
|
|
146
|
-
function
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
agentFilter: config.agentFilter,
|
|
152
|
-
sessionFilter: config.sessionFilter
|
|
153
|
-
});
|
|
164
|
+
function normalizeSlackOriginTarget(target) {
|
|
165
|
+
return {
|
|
166
|
+
...target,
|
|
167
|
+
to: normalizeComparableTarget(target.to)
|
|
168
|
+
};
|
|
154
169
|
}
|
|
155
|
-
function
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
170
|
+
function parseComparableSlackTarget(target) {
|
|
171
|
+
return parseSlackTarget(target.to, { defaultKind: "channel" });
|
|
172
|
+
}
|
|
173
|
+
function isSlackDmChannelToUserRoutePair(a, b) {
|
|
174
|
+
const left = parseComparableSlackTarget(a);
|
|
175
|
+
const right = parseComparableSlackTarget(b);
|
|
176
|
+
if (!left || !right) return false;
|
|
177
|
+
return left.kind === "channel" && SLACK_DM_CHANNEL_ID_RE.test(left.id) && right.kind === "user" || right.kind === "channel" && SLACK_DM_CHANNEL_ID_RE.test(right.id) && left.kind === "user";
|
|
178
|
+
}
|
|
179
|
+
function slackTargetsMatch(a, b) {
|
|
180
|
+
const threadKey = normalizeSlackThreadMatchKey(a.threadId);
|
|
181
|
+
if (threadKey !== normalizeSlackThreadMatchKey(b.threadId)) return false;
|
|
182
|
+
if (channelRouteTargetsMatchExact({
|
|
183
|
+
left: {
|
|
184
|
+
channel: "slack",
|
|
185
|
+
to: a.to
|
|
186
|
+
},
|
|
187
|
+
right: {
|
|
188
|
+
channel: "slack",
|
|
189
|
+
to: b.to
|
|
190
|
+
}
|
|
161
191
|
})) return true;
|
|
162
|
-
return
|
|
192
|
+
return Boolean(threadKey && isSlackDmChannelToUserRoutePair(a, b));
|
|
193
|
+
}
|
|
194
|
+
function normalizeSlackForwardTarget(target) {
|
|
195
|
+
if ((normalizeMessageChannel(target.channel) ?? target.channel) !== "slack") return null;
|
|
196
|
+
const to = normalizeOptionalString(target.to);
|
|
197
|
+
if (!to) return null;
|
|
198
|
+
const parsed = parseSlackTarget(to, { defaultKind: SLACK_USER_ID_RE.test(to) ? "user" : "channel" });
|
|
199
|
+
if (!parsed) return null;
|
|
200
|
+
return {
|
|
201
|
+
to: `${parsed.kind}:${parsed.id}`,
|
|
202
|
+
accountId: normalizeOptionalString(target.accountId),
|
|
203
|
+
threadId: stringifyRouteThreadId(target.threadId)
|
|
204
|
+
};
|
|
163
205
|
}
|
|
164
|
-
|
|
165
|
-
|
|
206
|
+
const { canApprovalPotentiallyRouteToChannel: canApprovalPotentiallyRouteToSlack, isSessionApprovalEligible: isForwardedSlackSessionApprovalEligible, isExplicitTargetEligible: isForwardedSlackExplicitTargetEligible } = createNativeApprovalChannelRouteGates({
|
|
207
|
+
channel: "slack",
|
|
208
|
+
defaultForwardingMode: DEFAULT_APPROVAL_FORWARDING_MODE,
|
|
209
|
+
isTransportEnabled: isSlackApprovalTransportEnabled,
|
|
210
|
+
listAccountIds: listSlackAccountIds,
|
|
211
|
+
resolveDefaultAccountId: resolveDefaultSlackAccountId,
|
|
212
|
+
normalizeForwardTarget: normalizeSlackForwardTarget,
|
|
213
|
+
resolveTurnSourceTarget: resolveTurnSourceSlackOriginTarget,
|
|
214
|
+
targetsMatch: slackTargetsMatch
|
|
215
|
+
});
|
|
216
|
+
function hasSlackPluginApprovers(params) {
|
|
217
|
+
return getSlackApprovalApprovers(params).length > 0;
|
|
218
|
+
}
|
|
219
|
+
function isSlackPluginNativeApprovalClientConfigEnabled(params) {
|
|
220
|
+
return isChannelExecApprovalClientEnabledFromConfig({
|
|
166
221
|
enabled: resolveSlackNativeApprovalConfig(params)?.enabled,
|
|
167
222
|
approverCount: getSlackApprovalApprovers(params).length
|
|
168
|
-
})
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
function isSlackPluginForwardingRoutePotentiallyEnabled(params) {
|
|
226
|
+
return canApprovalPotentiallyRouteToSlack({
|
|
227
|
+
...params,
|
|
228
|
+
approvalKind: "plugin"
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
function isSlackPluginNativeApprovalClientEnabled(params) {
|
|
232
|
+
return isSlackPluginNativeApprovalClientConfigEnabled(params) || isSlackPluginForwardingRoutePotentiallyEnabled(params);
|
|
173
233
|
}
|
|
174
234
|
function shouldHandleSlackPluginViaNativeClientConfig(params) {
|
|
175
235
|
if (!doesApprovalRequestMatchChannelAccount({
|
|
@@ -183,17 +243,37 @@ function shouldHandleSlackPluginViaNativeClientConfig(params) {
|
|
|
183
243
|
enabled: config?.enabled,
|
|
184
244
|
approverCount: getSlackApprovalApprovers(params).length
|
|
185
245
|
})) return false;
|
|
186
|
-
return
|
|
187
|
-
request: params.request
|
|
246
|
+
return matchesSlackNativeApprovalFilters({
|
|
247
|
+
request: params.request,
|
|
188
248
|
agentFilter: config?.agentFilter,
|
|
189
249
|
sessionFilter: config?.sessionFilter
|
|
190
250
|
});
|
|
191
251
|
}
|
|
192
|
-
function
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
252
|
+
function matchesSlackNativeApprovalFilters(params) {
|
|
253
|
+
return matchesApprovalRequestFilters({
|
|
254
|
+
request: params.request.request,
|
|
255
|
+
agentFilter: params.agentFilter,
|
|
256
|
+
sessionFilter: params.sessionFilter
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
function isAnyForwardedSlackExplicitTargetEligible(params) {
|
|
260
|
+
return (resolvePluginApprovalForwardingConfig(params.cfg)?.targets ?? []).some((target) => isForwardedSlackExplicitTargetEligible({
|
|
261
|
+
...params,
|
|
262
|
+
approvalKind: "plugin",
|
|
263
|
+
target
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
function shouldHandleSlackPluginViaForwarding(params) {
|
|
267
|
+
return isForwardedSlackSessionApprovalEligible({
|
|
268
|
+
...params,
|
|
269
|
+
approvalKind: "plugin"
|
|
270
|
+
}) || isAnyForwardedSlackExplicitTargetEligible(params);
|
|
271
|
+
}
|
|
272
|
+
function shouldHandleSlackPluginViaForwardingSession(params) {
|
|
273
|
+
return isForwardedSlackSessionApprovalEligible({
|
|
274
|
+
...params,
|
|
275
|
+
approvalKind: "plugin"
|
|
276
|
+
});
|
|
197
277
|
}
|
|
198
278
|
function isSlackNativeApprovalClientEnabled(params) {
|
|
199
279
|
if (params.approvalKind === "exec") return isSlackExecApprovalClientEnabled(params);
|
|
@@ -209,12 +289,7 @@ function isSlackAnyNativeApprovalClientEnabled(params) {
|
|
|
209
289
|
});
|
|
210
290
|
}
|
|
211
291
|
function shouldHandleSlackNativeApprovalRequest(params) {
|
|
212
|
-
|
|
213
|
-
if (approvalKind === "plugin") return shouldHandleSlackPluginNativeApprovalRequest({
|
|
214
|
-
cfg: params.cfg,
|
|
215
|
-
accountId: params.accountId,
|
|
216
|
-
request: params.request
|
|
217
|
-
});
|
|
292
|
+
if ((params.approvalKind ?? resolveSlackApprovalKind(params.request)) === "plugin") return shouldHandleSlackPluginViaNativeClientConfig(params) || shouldHandleSlackPluginViaForwarding(params);
|
|
218
293
|
if (!doesApprovalRequestMatchChannelAccount({
|
|
219
294
|
cfg: params.cfg,
|
|
220
295
|
request: params.request,
|
|
@@ -224,13 +299,10 @@ function shouldHandleSlackNativeApprovalRequest(params) {
|
|
|
224
299
|
const config = resolveSlackNativeApprovalConfig(params);
|
|
225
300
|
if (!isChannelExecApprovalClientEnabledFromConfig({
|
|
226
301
|
enabled: config?.enabled,
|
|
227
|
-
approverCount:
|
|
228
|
-
...params,
|
|
229
|
-
approvalKind
|
|
230
|
-
}).length
|
|
302
|
+
approverCount: getSlackExecApprovalApprovers(params).length
|
|
231
303
|
})) return false;
|
|
232
|
-
return
|
|
233
|
-
request: params.request
|
|
304
|
+
return matchesSlackNativeApprovalFilters({
|
|
305
|
+
request: params.request,
|
|
234
306
|
agentFilter: config?.agentFilter,
|
|
235
307
|
sessionFilter: config?.sessionFilter
|
|
236
308
|
});
|
|
@@ -664,4 +736,4 @@ function resolveSlackThreadTsValue(params) {
|
|
|
664
736
|
return normalizeSlackThreadTsCandidate(params.replyToId) ?? normalizeSlackThreadTsCandidate(params.threadId);
|
|
665
737
|
}
|
|
666
738
|
//#endregion
|
|
667
|
-
export {
|
|
739
|
+
export { resolveTurnSourceSlackOriginTarget as A, resolveSlackExecApprovalTarget as B, hasSlackPluginApprovers as C, resolveSessionSlackOriginTarget as D, normalizeSlackOriginTarget as E, isSlackApprovalAuthorizedSender as F, getSlackExecApprovalApprovers as I, isSlackExecApprovalAuthorizedSender as L, shouldHandleSlackPluginViaForwardingSession as M, slackTargetsMatch as N, resolveSlackApprovalKind as O, getSlackApprovalApprovers as P, isSlackExecApprovalClientEnabled as R, SLACK_REPLY_SELECT_ACTION_ID as S, normalizeSlackForwardTarget as T, shouldSuppressLocalSlackExecApprovalPrompt as V, buildSlackInteractiveBlocks as _, parseSlackBlocksInput as a, truncateSlackText as b, resolveSlackGroupRequireMention as c, normalizeAllowList as d, normalizeAllowListLower as f, resolveSlackUserAllowed as g, resolveSlackAllowListMatch as h, SLACK_MAX_BLOCKS as i, shouldHandleSlackNativeApprovalRequest as j, resolveSlackFallbackOriginTarget as k, resolveSlackGroupToolPolicy as l, normalizeSlackSlug as m, resolveSlackThreadTsValue as n, validateSlackBlocksArray as o, normalizeSlackAllowOwnerEntry as p, resolveSlackReplyBlocks as r, SLACK_TEXT_LIMIT as s, normalizeSlackThreadTsCandidate as t, allowListMatches as u, buildSlackPresentationBlocks as v, isSlackAnyNativeApprovalClientEnabled as w, SLACK_REPLY_BUTTON_ACTION_ID as x, resolveSlackInteractiveBlockOffsets as y, normalizeSlackApproverId as z };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.6.1-beta.
|
|
3
|
+
"version": "2026.6.1-beta.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/slack",
|
|
9
|
-
"version": "2026.6.1-beta.
|
|
9
|
+
"version": "2026.6.1-beta.2",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@slack/bolt": "4.7.3",
|
|
12
12
|
"@slack/types": "2.21.1",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"zod": "4.4.3"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"openclaw": ">=2026.6.1-beta.
|
|
18
|
+
"openclaw": ">=2026.6.1-beta.2"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"openclaw": {
|
package/openclaw.plugin.json
CHANGED
|
@@ -8,18 +8,6 @@
|
|
|
8
8
|
"channels": [
|
|
9
9
|
"slack"
|
|
10
10
|
],
|
|
11
|
-
"channelEnvVars": {
|
|
12
|
-
"slack": [
|
|
13
|
-
"SLACK_BOT_TOKEN",
|
|
14
|
-
"SLACK_APP_TOKEN",
|
|
15
|
-
"SLACK_USER_TOKEN"
|
|
16
|
-
]
|
|
17
|
-
},
|
|
18
|
-
"configSchema": {
|
|
19
|
-
"type": "object",
|
|
20
|
-
"additionalProperties": false,
|
|
21
|
-
"properties": {}
|
|
22
|
-
},
|
|
23
11
|
"channelConfigs": {
|
|
24
12
|
"slack": {
|
|
25
13
|
"schema": {
|
|
@@ -2427,7 +2415,7 @@
|
|
|
2427
2415
|
"additionalProperties": false
|
|
2428
2416
|
},
|
|
2429
2417
|
"label": "Slack",
|
|
2430
|
-
"description": "
|
|
2418
|
+
"description": "Slack channel, DM, command, and app event integration.",
|
|
2431
2419
|
"uiHints": {
|
|
2432
2420
|
"": {
|
|
2433
2421
|
"label": "Slack",
|
|
@@ -2635,5 +2623,17 @@
|
|
|
2635
2623
|
}
|
|
2636
2624
|
}
|
|
2637
2625
|
}
|
|
2626
|
+
},
|
|
2627
|
+
"channelEnvVars": {
|
|
2628
|
+
"slack": [
|
|
2629
|
+
"SLACK_BOT_TOKEN",
|
|
2630
|
+
"SLACK_APP_TOKEN",
|
|
2631
|
+
"SLACK_USER_TOKEN"
|
|
2632
|
+
]
|
|
2633
|
+
},
|
|
2634
|
+
"configSchema": {
|
|
2635
|
+
"type": "object",
|
|
2636
|
+
"additionalProperties": false,
|
|
2637
|
+
"properties": {}
|
|
2638
2638
|
}
|
|
2639
2639
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.6.1-beta.
|
|
3
|
+
"version": "2026.6.1-beta.2",
|
|
4
4
|
"description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"zod": "4.4.3"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"openclaw": ">=2026.6.1-beta.
|
|
18
|
+
"openclaw": ">=2026.6.1-beta.2"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"openclaw": {
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
"allowInvalidConfigRecovery": true
|
|
61
61
|
},
|
|
62
62
|
"compat": {
|
|
63
|
-
"pluginApi": ">=2026.6.1-beta.
|
|
63
|
+
"pluginApi": ">=2026.6.1-beta.2"
|
|
64
64
|
},
|
|
65
65
|
"startup": {
|
|
66
66
|
"deferConfiguredChannelFullLoadUntilAfterListen": true
|
|
67
67
|
},
|
|
68
68
|
"build": {
|
|
69
|
-
"openclawVersion": "2026.6.1-beta.
|
|
69
|
+
"openclawVersion": "2026.6.1-beta.2",
|
|
70
70
|
"bundledDist": false
|
|
71
71
|
},
|
|
72
72
|
"release": {
|