@openclaw/slack 2026.5.14-beta.1 → 2026.5.16-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{action-runtime-gtC-RM3r.js → action-runtime-p39JLqwf.js} +4 -4
- package/dist/action-runtime.runtime-BzrPV3EA.js +2 -0
- package/dist/{media-B-nNpS2G.js → actions-BCRbHv1Q.js} +309 -3
- package/dist/{actions.runtime-DD6hfFCA.js → actions.runtime-CpywQR3D.js} +1 -1
- package/dist/api.js +16 -16
- package/dist/{approval-handler.runtime-DeYBuIaU.js → approval-handler.runtime-DXrdRbkT.js} +3 -4
- package/dist/{blocks-render-BdLueE_v.js → blocks-render-BAVfd6r0.js} +1 -1
- package/dist/{channel-CC04F-xs.js → channel-CVSopl66.js} +23 -27
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-jzYjY634.js → channel.setup-DknBgufI.js} +3 -3
- package/dist/{client-8r7r7aZ3.js → client-C_IaJbi5.js} +20 -1
- package/dist/{config-schema-Bueih4yH.js → config-schema-CNRousxw.js} +1 -1
- package/dist/contract-api.js +4 -4
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-CuaWaGnM.js → directory-live-CZPzpQZF.js} +1 -1
- package/dist/{doctor-contract-DCkS8eNN.js → doctor-contract-B8QIWMs1.js} +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/inbound-contract-test-api.js +2 -2
- package/dist/interactive-replies-api.js +1 -1
- package/dist/{message-tool-api-B_bKUmP0.js → message-tool-api-C7gc7goF.js} +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-B3QB1ysK.js → monitor-CdVxsuHi.js} +3 -3
- package/dist/{outbound-adapter-DsAvCwpZ.js → outbound-adapter-CHm6e-0Q.js} +4 -5
- package/dist/outbound-payload-test-api.js +1 -1
- package/dist/{outbound-payload.test-harness-DM9ZdY2f.js → outbound-payload.test-harness-C0CW7_CE.js} +2 -2
- package/dist/{pipeline.runtime-D-YJZZaI.js → pipeline.runtime-CakcaQh9.js} +119 -143
- package/dist/{plugin-routes-Dt_jh9W8.js → plugin-routes-CRnfsTTX.js} +1 -1
- package/dist/{prepare-CXI8nHbJ.js → prepare-DSRUr44d.js} +223 -85
- package/dist/{prepare.test-helpers-BhFHtbz3.js → prepare.test-helpers-CU1qB54Q.js} +1 -1
- package/dist/{probe-D1wYA05H.js → probe-FL4sUJsH.js} +2 -2
- package/dist/{provider-Ut7IF0Mn.js → provider-bKg1hkf5.js} +158 -24
- package/dist/{replies-CzfjCaLG.js → replies-Fg1T3ZzU.js} +4 -4
- package/dist/reply-blocks-BFaJ_ejG.js +134 -0
- package/dist/{resolve-channels-BiVxSLVm.js → resolve-channels-B_eKaOkE.js} +2 -2
- package/dist/{resolve-users-CcpSlYw-.js → resolve-users-BzBAJwvq.js} +2 -2
- package/dist/{room-context-D0hGOp8m.js → room-context-Cd8jFpS-.js} +2 -2
- package/dist/{runtime-api-D8wiG9BS.js → runtime-api-B5HGOzX3.js} +2 -2
- package/dist/runtime-api.js +12 -12
- package/dist/runtime-setter-api.js +1 -1
- package/dist/{scopes-BTkB8PPE.js → scopes-Bvg_ZzqZ.js} +2 -2
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/{send-ioky2Xpy.js → send-CxXFbqN1.js} +5 -6
- package/dist/send.runtime-BHCPpSj_.js +2 -0
- package/dist/send.runtime-CDG5AgU3.js +2 -0
- package/dist/{setup-core-DgLJ7dQY.js → setup-core-B7pou7oe.js} +23 -22
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-B6w9gtds.js → setup-surface-D6LLzeRz.js} +16 -15
- package/dist/{shared-CSiHkaVO.js → shared-7Vi9j4aV.js} +7 -7
- package/dist/{slash-dispatch.runtime-DNr1EDON.js → slash-dispatch.runtime-Cg7uU92H.js} +1 -1
- package/dist/test-api.js +7 -7
- package/dist/thread-ts-As_dcNbD.js +52 -0
- package/package.json +5 -5
- package/dist/action-runtime.runtime-DbVd7_Na.js +0 -2
- package/dist/actions-Cqyj7oRr.js +0 -309
- package/dist/approval-auth-D3xf0sS6.js +0 -28
- package/dist/blocks-input-BJZ8vv03.js +0 -29
- package/dist/channel-api-BfBK89IN.js +0 -20
- package/dist/exec-approvals-BLn4Zx7V.js +0 -58
- package/dist/group-policy-utF2iWnE.js +0 -41
- package/dist/mrkdwn-18IzcEAY.js +0 -6
- package/dist/reply-blocks-DWoZrUll.js +0 -14
- package/dist/send.runtime-5Kl3Wzbf.js +0 -2
- package/dist/send.runtime-DoifekaA.js +0 -2
- package/dist/thread-ts-o-QBwB3k.js +0 -24
- /package/dist/{accounts.runtime-CkfFIisb.js → accounts.runtime-BhbEu1ZK.js} +0 -0
- /package/dist/{allow-list-T7ZDpUsF.js → allow-list-nwXs_eCP.js} +0 -0
- /package/dist/{config-api-B48Z4H47.js → config-api-CmgE_ORg.js} +0 -0
- /package/dist/{directory-config-BKKNBkCq.js → directory-config-CMvFiswf.js} +0 -0
- /package/dist/{errors-BrtayXHa.js → errors-C_sW0Zgl.js} +0 -0
- /package/dist/{interactive-replies-CawNPL-h.js → interactive-replies-BSg5hXhj.js} +0 -0
- /package/dist/{magic-string.es-BLAi6qQC.js → magic-string.es-9lw4MGoF.js} +0 -0
- /package/dist/{registry-BdfKYina.js → registry-D2cWOLZV.js} +0 -0
- /package/dist/{resolve-allowlist-common-rhfyDyWi.js → resolve-allowlist-common-DLub2I2i.js} +0 -0
- /package/dist/{runtime--VlVtTPu.js → runtime-DQxkf7k2.js} +0 -0
- /package/dist/{secret-contract-BurGIyhv.js → secret-contract-0TL3L5Kb.js} +0 -0
- /package/dist/{security-audit-DvOpSaZM.js → security-audit-BJzADAw3.js} +0 -0
- /package/dist/{slash-commands.runtime-DRkNgIQ2.js → slash-commands.runtime-bcDwsGnu.js} +0 -0
- /package/dist/{slash-plugin-commands.runtime-Dj5h8hmv.js → slash-plugin-commands.runtime-DBHGUSj2.js} +0 -0
- /package/dist/{slash-skill-commands.runtime-B-_KAk0C.js → slash-skill-commands.runtime-rrY2hXvN.js} +0 -0
- /package/dist/{streaming-compat-C6rySwiD.js → streaming-compat-eu5Rj5gj.js} +0 -0
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-yk5K3wQU.js";
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import "./
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { n as
|
|
8
|
-
import "./
|
|
9
|
-
import {
|
|
10
|
-
import { t as
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-CcpSlYw-.js";
|
|
13
|
-
import { C as resolveOpenProviderRuntimeGroupPolicy, D as buildSlackSlashCommandMatcher, E as warnMissingProviderGroupPolicyFallbackOnce, O as resolveSlackSlashCommandConfig, S as resolveDefaultGroupPolicy, _ as resolveSlackChannelLabel, d as resolveSlackEffectiveAllowFrom, f as createSlackMonitorContext, g as resolveSlackChannelConfig, h as resolveSlackChatType, i as parsePluginBindingApprovalCustomId, k as stripSlackMentionsForCommandDetection, l as authorizeSlackSystemEventSender, m as normalizeSlackChannelType, n as authorizeSlackDirectMessage, p as isSlackChannelAllowedByPolicy, r as buildPluginBindingResolvedText, s as resolvePluginConversationBindingApproval, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, v as getRuntimeConfig$1, y as isDangerousNameMatchingEnabled } from "./room-context-D0hGOp8m.js";
|
|
14
|
-
import { t as escapeSlackMrkdwn } from "./mrkdwn-18IzcEAY.js";
|
|
2
|
+
import { i as isSlackApprovalAuthorizedSender, o as isSlackExecApprovalAuthorizedSender, s as isSlackExecApprovalClientEnabled } from "./reply-blocks-BFaJ_ejG.js";
|
|
3
|
+
import "./blocks-render-BAVfd6r0.js";
|
|
4
|
+
import { o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-As_dcNbD.js";
|
|
5
|
+
import { c as resolveSlackWebClientOptions } from "./client-C_IaJbi5.js";
|
|
6
|
+
import { n as normalizeAllowList, r as normalizeAllowListLower, t as allowListMatches } from "./allow-list-nwXs_eCP.js";
|
|
7
|
+
import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-D2cWOLZV.js";
|
|
8
|
+
import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
|
|
9
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
|
|
10
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
|
|
11
|
+
import { C as resolveOpenProviderRuntimeGroupPolicy, D as buildSlackSlashCommandMatcher, E as warnMissingProviderGroupPolicyFallbackOnce, O as resolveSlackSlashCommandConfig, S as resolveDefaultGroupPolicy, _ as resolveSlackChannelLabel, d as resolveSlackEffectiveAllowFrom, f as createSlackMonitorContext, g as resolveSlackChannelConfig, h as resolveSlackChatType, i as parsePluginBindingApprovalCustomId, k as stripSlackMentionsForCommandDetection, l as authorizeSlackSystemEventSender, m as normalizeSlackChannelType, n as authorizeSlackDirectMessage, p as isSlackChannelAllowedByPolicy, r as buildPluginBindingResolvedText, s as resolvePluginConversationBindingApproval, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, v as getRuntimeConfig$1, y as isDangerousNameMatchingEnabled } from "./room-context-Cd8jFpS-.js";
|
|
15
12
|
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
16
13
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
17
14
|
import { normalizeAccountId, normalizeMainKey } from "openclaw/plugin-sdk/routing";
|
|
@@ -124,6 +121,7 @@ function registerSlackChannelEvents(params) {
|
|
|
124
121
|
enqueueSystemEvent(`Slack channel ${params.kind}: ${label}.`, {
|
|
125
122
|
sessionKey,
|
|
126
123
|
contextKey: `slack:channel:${params.kind}:${params.channelId ?? params.channelName ?? "unknown"}`,
|
|
124
|
+
forceSenderIsOwnerFalse: true,
|
|
127
125
|
trusted: false
|
|
128
126
|
});
|
|
129
127
|
};
|
|
@@ -293,6 +291,11 @@ async function dispatchSlackPluginInteractiveHandler(params) {
|
|
|
293
291
|
});
|
|
294
292
|
}
|
|
295
293
|
//#endregion
|
|
294
|
+
//#region extensions/slack/src/monitor/mrkdwn.ts
|
|
295
|
+
function escapeSlackMrkdwn(value) {
|
|
296
|
+
return value.replaceAll("\\", "\\\\").replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replace(/([*_`~])/g, "\\$1");
|
|
297
|
+
}
|
|
298
|
+
//#endregion
|
|
296
299
|
//#region extensions/slack/src/monitor/events/interactions.block-actions.ts
|
|
297
300
|
function readOptionValues(options) {
|
|
298
301
|
if (!Array.isArray(options)) return;
|
|
@@ -698,6 +701,7 @@ function enqueueSlackBlockActionEvent(params) {
|
|
|
698
701
|
accountId: params.ctx.accountId,
|
|
699
702
|
threadId: params.parsed.threadTs
|
|
700
703
|
},
|
|
704
|
+
forceSenderIsOwnerFalse: true,
|
|
701
705
|
trusted: false
|
|
702
706
|
})) requestHeartbeat({
|
|
703
707
|
source: "hook",
|
|
@@ -843,7 +847,8 @@ function parseSlackModalPrivateMetadata(raw) {
|
|
|
843
847
|
sessionKey: normalizeOptionalString(parsed.sessionKey),
|
|
844
848
|
channelId: normalizeOptionalString(parsed.channelId),
|
|
845
849
|
channelType: normalizeOptionalString(parsed.channelType),
|
|
846
|
-
userId: normalizeOptionalString(parsed.userId)
|
|
850
|
+
userId: normalizeOptionalString(parsed.userId),
|
|
851
|
+
pluginInteractiveData: normalizeOptionalString(parsed.pluginInteractiveData)
|
|
847
852
|
};
|
|
848
853
|
} catch {
|
|
849
854
|
return {};
|
|
@@ -851,6 +856,35 @@ function parseSlackModalPrivateMetadata(raw) {
|
|
|
851
856
|
}
|
|
852
857
|
//#endregion
|
|
853
858
|
//#region extensions/slack/src/monitor/events/interactions.modal.ts
|
|
859
|
+
const OPENCLAW_MODAL_CALLBACK_PREFIX = "openclaw:";
|
|
860
|
+
function resolveSlackModalPluginInteractiveData(params) {
|
|
861
|
+
const metadataData = params.metadata.pluginInteractiveData?.trim();
|
|
862
|
+
if (metadataData) return metadataData;
|
|
863
|
+
if (!params.callbackId.startsWith(OPENCLAW_MODAL_CALLBACK_PREFIX)) return;
|
|
864
|
+
return params.callbackId.slice(9).trim() || void 0;
|
|
865
|
+
}
|
|
866
|
+
function shouldHandleSlackModalLifecycleBody(body) {
|
|
867
|
+
const typed = body;
|
|
868
|
+
if ((typed.view?.callback_id ?? "").startsWith(OPENCLAW_MODAL_CALLBACK_PREFIX)) return true;
|
|
869
|
+
const metadata = parseSlackModalPrivateMetadata(typed.view?.private_metadata);
|
|
870
|
+
return Boolean(metadata.pluginInteractiveData?.trim());
|
|
871
|
+
}
|
|
872
|
+
function resolveSlackModalPluginNamespace(data) {
|
|
873
|
+
if (!data) return;
|
|
874
|
+
const separatorIndex = data.indexOf(":");
|
|
875
|
+
return separatorIndex >= 0 ? data.slice(0, separatorIndex) : data;
|
|
876
|
+
}
|
|
877
|
+
function resolveSlackPluginSystemEventPayload(result) {
|
|
878
|
+
if (!result || typeof result !== "object") return;
|
|
879
|
+
const systemEvent = result.systemEvent;
|
|
880
|
+
if (!systemEvent || typeof systemEvent !== "object") return;
|
|
881
|
+
const typed = systemEvent;
|
|
882
|
+
const output = {};
|
|
883
|
+
if (typeof typed.summary === "string" && typed.summary.trim()) output.summary = typed.summary;
|
|
884
|
+
if (typeof typed.reference === "string" && typed.reference.trim()) output.reference = typed.reference;
|
|
885
|
+
if (typed.data && typeof typed.data === "object" && !Array.isArray(typed.data)) output.data = typed.data;
|
|
886
|
+
return Object.keys(output).length > 0 ? output : void 0;
|
|
887
|
+
}
|
|
854
888
|
function resolveModalSessionRouting(params) {
|
|
855
889
|
const metadata = params.metadata;
|
|
856
890
|
if (metadata.sessionKey) return {
|
|
@@ -897,6 +931,7 @@ function resolveSlackModalEventBase(params) {
|
|
|
897
931
|
expectedUserId: metadata.userId,
|
|
898
932
|
viewId,
|
|
899
933
|
sessionRouting,
|
|
934
|
+
stateValues: params.body.view?.state?.values,
|
|
900
935
|
payload: {
|
|
901
936
|
actionId: `view:${callbackId}`,
|
|
902
937
|
callbackId,
|
|
@@ -916,12 +951,68 @@ function resolveSlackModalEventBase(params) {
|
|
|
916
951
|
}
|
|
917
952
|
};
|
|
918
953
|
}
|
|
954
|
+
async function dispatchSlackModalPluginInteractiveHandler(params) {
|
|
955
|
+
if (!params.data) return {
|
|
956
|
+
matched: false,
|
|
957
|
+
handled: false,
|
|
958
|
+
duplicate: false
|
|
959
|
+
};
|
|
960
|
+
const isViewClosed = params.interactionType === "view_closed";
|
|
961
|
+
const interactionId = [
|
|
962
|
+
params.interactionType,
|
|
963
|
+
params.payload.callbackId,
|
|
964
|
+
params.payload.viewId,
|
|
965
|
+
params.payload.userId
|
|
966
|
+
].filter(Boolean).join(":");
|
|
967
|
+
const result = await dispatchSlackPluginInteractiveHandler({
|
|
968
|
+
data: params.data,
|
|
969
|
+
interactionId,
|
|
970
|
+
ctx: {
|
|
971
|
+
accountId: params.ctx.accountId,
|
|
972
|
+
interactionId,
|
|
973
|
+
conversationId: params.sessionRouting.channelId ?? "",
|
|
974
|
+
parentConversationId: void 0,
|
|
975
|
+
threadId: void 0,
|
|
976
|
+
senderId: params.payload.userId,
|
|
977
|
+
senderUsername: void 0,
|
|
978
|
+
auth: params.auth,
|
|
979
|
+
interaction: {
|
|
980
|
+
kind: params.interactionType,
|
|
981
|
+
callbackId: params.payload.callbackId,
|
|
982
|
+
viewId: params.payload.viewId,
|
|
983
|
+
rootViewId: params.payload.rootViewId,
|
|
984
|
+
previousViewId: params.payload.previousViewId,
|
|
985
|
+
externalId: params.payload.externalId,
|
|
986
|
+
isStackedView: params.payload.isStackedView,
|
|
987
|
+
isCleared: isViewClosed ? params.body.is_cleared === true : void 0,
|
|
988
|
+
inputs: params.payload.inputs,
|
|
989
|
+
stateValues: params.stateValues,
|
|
990
|
+
triggerId: params.body.trigger_id
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
respond: {
|
|
994
|
+
acknowledge: async () => {},
|
|
995
|
+
reply: async () => {},
|
|
996
|
+
followUp: async () => {},
|
|
997
|
+
editMessage: async () => {}
|
|
998
|
+
}
|
|
999
|
+
});
|
|
1000
|
+
return {
|
|
1001
|
+
...result,
|
|
1002
|
+
namespace: result.matched ? resolveSlackModalPluginNamespace(params.data) : void 0,
|
|
1003
|
+
systemEvent: result.matched ? resolveSlackPluginSystemEventPayload(result.result) : void 0
|
|
1004
|
+
};
|
|
1005
|
+
}
|
|
919
1006
|
async function emitSlackModalLifecycleEvent(params) {
|
|
920
|
-
const { callbackId, userId, expectedUserId, viewId, sessionRouting, payload } = resolveSlackModalEventBase({
|
|
1007
|
+
const { callbackId, userId, expectedUserId, viewId, sessionRouting, stateValues, payload } = resolveSlackModalEventBase({
|
|
921
1008
|
ctx: params.ctx,
|
|
922
1009
|
body: params.body,
|
|
923
1010
|
summarizeViewState: params.summarizeViewState
|
|
924
1011
|
});
|
|
1012
|
+
const pluginInteractiveData = resolveSlackModalPluginInteractiveData({
|
|
1013
|
+
callbackId,
|
|
1014
|
+
metadata: parseSlackModalPrivateMetadata(params.body.view?.private_metadata)
|
|
1015
|
+
});
|
|
925
1016
|
const isViewClosed = params.interactionType === "view_closed";
|
|
926
1017
|
const isCleared = params.body.is_cleared === true;
|
|
927
1018
|
const eventPayload = isViewClosed ? {
|
|
@@ -935,6 +1026,20 @@ async function emitSlackModalLifecycleEvent(params) {
|
|
|
935
1026
|
if (isViewClosed) params.ctx.runtime.log?.(`slack:interaction view_closed callback=${callbackId} user=${userId} cleared=${isCleared}`);
|
|
936
1027
|
else params.ctx.runtime.log?.(`slack:interaction view_submission callback=${callbackId} user=${userId} inputs=${payload.inputs.length}`);
|
|
937
1028
|
if (!expectedUserId) {
|
|
1029
|
+
if (pluginInteractiveData) try {
|
|
1030
|
+
await dispatchSlackModalPluginInteractiveHandler({
|
|
1031
|
+
ctx: params.ctx,
|
|
1032
|
+
body: params.body,
|
|
1033
|
+
interactionType: params.interactionType,
|
|
1034
|
+
data: pluginInteractiveData,
|
|
1035
|
+
auth: { isAuthorizedSender: false },
|
|
1036
|
+
payload,
|
|
1037
|
+
stateValues,
|
|
1038
|
+
sessionRouting
|
|
1039
|
+
});
|
|
1040
|
+
} catch (error) {
|
|
1041
|
+
params.ctx.runtime.log?.(`slack:interaction modal plugin dispatch failed callback=${callbackId} error=${error instanceof Error ? error.message : String(error)}`);
|
|
1042
|
+
}
|
|
938
1043
|
params.ctx.runtime.log?.(`slack:interaction drop modal callback=${callbackId} user=${userId} reason=missing-expected-user`);
|
|
939
1044
|
return;
|
|
940
1045
|
}
|
|
@@ -950,7 +1055,31 @@ async function emitSlackModalLifecycleEvent(params) {
|
|
|
950
1055
|
params.ctx.runtime.log?.(`slack:interaction drop modal callback=${callbackId} user=${userId} reason=${auth.reason ?? "unauthorized"}`);
|
|
951
1056
|
return;
|
|
952
1057
|
}
|
|
953
|
-
|
|
1058
|
+
let pluginDispatch;
|
|
1059
|
+
try {
|
|
1060
|
+
pluginDispatch = await dispatchSlackModalPluginInteractiveHandler({
|
|
1061
|
+
ctx: params.ctx,
|
|
1062
|
+
body: params.body,
|
|
1063
|
+
interactionType: params.interactionType,
|
|
1064
|
+
data: pluginInteractiveData,
|
|
1065
|
+
auth: { isAuthorizedSender: auth.allowed },
|
|
1066
|
+
payload,
|
|
1067
|
+
stateValues,
|
|
1068
|
+
sessionRouting
|
|
1069
|
+
});
|
|
1070
|
+
} catch (error) {
|
|
1071
|
+
params.ctx.runtime.log?.(`slack:interaction modal plugin dispatch failed callback=${callbackId} error=${error instanceof Error ? error.message : String(error)}`);
|
|
1072
|
+
}
|
|
1073
|
+
const pluginEventFields = pluginDispatch?.matched === true ? {
|
|
1074
|
+
pluginHandled: pluginDispatch.handled,
|
|
1075
|
+
pluginNamespace: pluginDispatch.namespace,
|
|
1076
|
+
pluginDuplicate: pluginDispatch.duplicate || void 0,
|
|
1077
|
+
pluginSystemEvent: pluginDispatch.systemEvent
|
|
1078
|
+
} : {};
|
|
1079
|
+
enqueueSystemEvent(params.formatSystemEvent({
|
|
1080
|
+
...eventPayload,
|
|
1081
|
+
...pluginEventFields
|
|
1082
|
+
}), {
|
|
954
1083
|
sessionKey: sessionRouting.sessionKey,
|
|
955
1084
|
contextKey: [
|
|
956
1085
|
params.contextPrefix,
|
|
@@ -962,6 +1091,7 @@ async function emitSlackModalLifecycleEvent(params) {
|
|
|
962
1091
|
}
|
|
963
1092
|
function registerModalLifecycleHandler(params) {
|
|
964
1093
|
params.register(params.matcher, async ({ ack, body }) => {
|
|
1094
|
+
if (!shouldHandleSlackModalLifecycleBody(body)) return;
|
|
965
1095
|
await ack();
|
|
966
1096
|
if (params.ctx.shouldDropMismatchedSlackEvent?.(body)) {
|
|
967
1097
|
params.ctx.runtime.log?.(`slack:interaction drop ${params.interactionType} payload (mismatched app/team)`);
|
|
@@ -980,7 +1110,6 @@ function registerModalLifecycleHandler(params) {
|
|
|
980
1110
|
}
|
|
981
1111
|
//#endregion
|
|
982
1112
|
//#region extensions/slack/src/monitor/events/interactions.ts
|
|
983
|
-
const OPENCLAW_ACTION_PREFIX = "openclaw:";
|
|
984
1113
|
const SLACK_INTERACTION_EVENT_PREFIX = "Slack interaction: ";
|
|
985
1114
|
const REDACTED_INTERACTION_VALUE = "[redacted]";
|
|
986
1115
|
const SLACK_INTERACTION_EVENT_MAX_CHARS = 2400;
|
|
@@ -1056,6 +1185,10 @@ function buildCompactSlackInteractionPayload(payload) {
|
|
|
1056
1185
|
selectedDateTime: payload.selectedDateTime,
|
|
1057
1186
|
workflowId: payload.workflowId,
|
|
1058
1187
|
routedChannelType: payload.routedChannelType,
|
|
1188
|
+
pluginHandled: payload.pluginHandled,
|
|
1189
|
+
pluginNamespace: payload.pluginNamespace,
|
|
1190
|
+
pluginDuplicate: payload.pluginDuplicate,
|
|
1191
|
+
pluginSystemEvent: payload.pluginSystemEvent,
|
|
1059
1192
|
inputs: compactInputs.length > 0 ? compactInputs : void 0,
|
|
1060
1193
|
inputsOmitted: rawInputs.length > SLACK_INTERACTION_COMPACT_INPUTS_MAX_ITEMS ? rawInputs.length - SLACK_INTERACTION_COMPACT_INPUTS_MAX_ITEMS : void 0,
|
|
1061
1194
|
payloadTruncated: true
|
|
@@ -1101,7 +1234,7 @@ function registerSlackInteractionEvents(params) {
|
|
|
1101
1234
|
formatSystemEvent: formatSlackInteractionSystemEvent
|
|
1102
1235
|
});
|
|
1103
1236
|
if (typeof ctx.app.view !== "function") return;
|
|
1104
|
-
const modalMatcher =
|
|
1237
|
+
const modalMatcher = /.*/;
|
|
1105
1238
|
registerModalLifecycleHandler({
|
|
1106
1239
|
register: (matcher, handler) => ctx.app.view(matcher, handler),
|
|
1107
1240
|
matcher: modalMatcher,
|
|
@@ -1462,6 +1595,7 @@ function registerSlackReactionEvents(params) {
|
|
|
1462
1595
|
enqueueSystemEvent(authorLabel ? `${baseText} from ${authorLabel}` : baseText, {
|
|
1463
1596
|
sessionKey: ingressContext.sessionKey,
|
|
1464
1597
|
contextKey: `slack:reaction:${action}:${item.channel}:${item.ts}:${event.user}:${emojiLabel}`,
|
|
1598
|
+
forceSenderIsOwnerFalse: true,
|
|
1465
1599
|
trusted: false
|
|
1466
1600
|
});
|
|
1467
1601
|
} catch (err) {
|
|
@@ -1627,7 +1761,7 @@ function createSlackThreadTsResolver(params) {
|
|
|
1627
1761
|
//#region extensions/slack/src/monitor/message-handler.ts
|
|
1628
1762
|
let slackMessagePipelinePromise;
|
|
1629
1763
|
function loadSlackMessagePipeline() {
|
|
1630
|
-
slackMessagePipelinePromise ??= import("./pipeline.runtime-
|
|
1764
|
+
slackMessagePipelinePromise ??= import("./pipeline.runtime-CakcaQh9.js");
|
|
1631
1765
|
return slackMessagePipelinePromise;
|
|
1632
1766
|
}
|
|
1633
1767
|
const APP_MENTION_RETRY_TTL_MS = 6e4;
|
|
@@ -2165,19 +2299,19 @@ let slashDispatchRuntimePromise = null;
|
|
|
2165
2299
|
let slackPluginCommandsRuntimePromise = null;
|
|
2166
2300
|
let slashSkillCommandsRuntimePromise = null;
|
|
2167
2301
|
function loadSlashCommandsRuntime() {
|
|
2168
|
-
slashCommandsRuntimePromise ??= import("./slash-commands.runtime-
|
|
2302
|
+
slashCommandsRuntimePromise ??= import("./slash-commands.runtime-bcDwsGnu.js");
|
|
2169
2303
|
return slashCommandsRuntimePromise;
|
|
2170
2304
|
}
|
|
2171
2305
|
function loadSlashDispatchRuntime() {
|
|
2172
|
-
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-
|
|
2306
|
+
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-Cg7uU92H.js");
|
|
2173
2307
|
return slashDispatchRuntimePromise;
|
|
2174
2308
|
}
|
|
2175
2309
|
function loadSlackPluginCommandsRuntime() {
|
|
2176
|
-
slackPluginCommandsRuntimePromise ??= import("./slash-plugin-commands.runtime-
|
|
2310
|
+
slackPluginCommandsRuntimePromise ??= import("./slash-plugin-commands.runtime-DBHGUSj2.js");
|
|
2177
2311
|
return slackPluginCommandsRuntimePromise;
|
|
2178
2312
|
}
|
|
2179
2313
|
function loadSlashSkillCommandsRuntime() {
|
|
2180
|
-
slashSkillCommandsRuntimePromise ??= import("./slash-skill-commands.runtime-
|
|
2314
|
+
slashSkillCommandsRuntimePromise ??= import("./slash-skill-commands.runtime-rrY2hXvN.js");
|
|
2181
2315
|
return slashSkillCommandsRuntimePromise;
|
|
2182
2316
|
}
|
|
2183
2317
|
function resolveSlackCommandMenuModelContext(params) {
|
|
@@ -3269,4 +3403,4 @@ async function monitorSlackProvider(opts = {}) {
|
|
|
3269
3403
|
}
|
|
3270
3404
|
const resolveSlackRuntimeGroupPolicy = resolveOpenProviderRuntimeGroupPolicy;
|
|
3271
3405
|
//#endregion
|
|
3272
|
-
export { resolveSlackRuntimeGroupPolicy as n, monitorSlackProvider as t };
|
|
3406
|
+
export { resolveSlackRuntimeGroupPolicy as n, escapeSlackMrkdwn as r, monitorSlackProvider as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-
|
|
4
|
-
import "./send.runtime-
|
|
1
|
+
import { t as resolveSlackReplyBlocks } from "./reply-blocks-BFaJ_ejG.js";
|
|
2
|
+
import { o as SLACK_TEXT_LIMIT } from "./thread-ts-As_dcNbD.js";
|
|
3
|
+
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-CxXFbqN1.js";
|
|
4
|
+
import "./send.runtime-BHCPpSj_.js";
|
|
5
5
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
6
6
|
import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
|
|
7
7
|
import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-yk5K3wQU.js";
|
|
2
|
+
import { t as buildSlackInteractiveBlocks } from "./blocks-render-BAVfd6r0.js";
|
|
3
|
+
import { i as parseSlackBlocksInput } from "./thread-ts-As_dcNbD.js";
|
|
4
|
+
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
5
|
+
import { normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
|
+
import { doesApprovalRequestMatchChannelAccount } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
7
|
+
import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
8
|
+
import { createChannelExecApprovalProfile, isChannelExecApprovalTargetRecipient } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
9
|
+
import { normalizeHyphenSlug } from "openclaw/plugin-sdk/string-normalization-runtime";
|
|
10
|
+
import { resolveToolsBySender } from "openclaw/plugin-sdk/channel-policy";
|
|
11
|
+
//#region extensions/slack/src/exec-approvals.ts
|
|
12
|
+
function normalizeSlackApproverId(value) {
|
|
13
|
+
const trimmed = normalizeStringifiedOptionalString(value);
|
|
14
|
+
if (!trimmed) return;
|
|
15
|
+
const prefixed = trimmed.match(/^(?:slack|user):([A-Z0-9]+)$/i);
|
|
16
|
+
if (prefixed?.[1]) return prefixed[1];
|
|
17
|
+
const mention = trimmed.match(/^<@([A-Z0-9]+)>$/i);
|
|
18
|
+
if (mention?.[1]) return mention[1];
|
|
19
|
+
return /^[UW][A-Z0-9]+$/i.test(trimmed) ? trimmed : void 0;
|
|
20
|
+
}
|
|
21
|
+
function resolveSlackOwnerApprovers(cfg) {
|
|
22
|
+
const ownerAllowFrom = cfg.commands?.ownerAllowFrom;
|
|
23
|
+
if (!Array.isArray(ownerAllowFrom) || ownerAllowFrom.length === 0) return [];
|
|
24
|
+
return resolveApprovalApprovers({
|
|
25
|
+
explicit: ownerAllowFrom,
|
|
26
|
+
normalizeApprover: normalizeSlackApproverId
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function getSlackExecApprovalApprovers(params) {
|
|
30
|
+
const account = resolveSlackAccount(params).config;
|
|
31
|
+
return resolveApprovalApprovers({
|
|
32
|
+
explicit: account.execApprovals?.approvers ?? resolveSlackOwnerApprovers(params.cfg),
|
|
33
|
+
normalizeApprover: normalizeSlackApproverId
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function isSlackExecApprovalTargetRecipient(params) {
|
|
37
|
+
return isChannelExecApprovalTargetRecipient({
|
|
38
|
+
...params,
|
|
39
|
+
channel: "slack",
|
|
40
|
+
normalizeSenderId: normalizeSlackApproverId,
|
|
41
|
+
matchTarget: ({ target, normalizedSenderId }) => normalizeSlackApproverId(target.to) === normalizedSenderId
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const slackExecApprovalProfile = createChannelExecApprovalProfile({
|
|
45
|
+
resolveConfig: (params) => resolveSlackAccount(params).config.execApprovals,
|
|
46
|
+
resolveApprovers: getSlackExecApprovalApprovers,
|
|
47
|
+
normalizeSenderId: normalizeSlackApproverId,
|
|
48
|
+
isTargetRecipient: isSlackExecApprovalTargetRecipient,
|
|
49
|
+
matchesRequestAccount: (params) => doesApprovalRequestMatchChannelAccount({
|
|
50
|
+
cfg: params.cfg,
|
|
51
|
+
request: params.request,
|
|
52
|
+
channel: "slack",
|
|
53
|
+
accountId: params.accountId
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
const isSlackExecApprovalClientEnabled = slackExecApprovalProfile.isClientEnabled;
|
|
57
|
+
slackExecApprovalProfile.isApprover;
|
|
58
|
+
const isSlackExecApprovalAuthorizedSender = slackExecApprovalProfile.isAuthorizedSender;
|
|
59
|
+
const resolveSlackExecApprovalTarget = slackExecApprovalProfile.resolveTarget;
|
|
60
|
+
const shouldHandleSlackExecApprovalRequest = slackExecApprovalProfile.shouldHandleRequest;
|
|
61
|
+
const shouldSuppressLocalSlackExecApprovalPrompt = slackExecApprovalProfile.shouldSuppressLocalPrompt;
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region extensions/slack/src/approval-auth.ts
|
|
64
|
+
function getSlackApprovalApprovers(params) {
|
|
65
|
+
const account = resolveSlackAccount(params).config;
|
|
66
|
+
return resolveApprovalApprovers({
|
|
67
|
+
allowFrom: resolveSlackAccountAllowFrom(params),
|
|
68
|
+
defaultTo: account.defaultTo,
|
|
69
|
+
normalizeApprover: normalizeSlackApproverId,
|
|
70
|
+
normalizeDefaultTo: normalizeSlackApproverId
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function isSlackApprovalAuthorizedSender(params) {
|
|
74
|
+
const senderId = params.senderId ? normalizeSlackApproverId(params.senderId) : void 0;
|
|
75
|
+
if (!senderId) return false;
|
|
76
|
+
return getSlackApprovalApprovers(params).includes(senderId);
|
|
77
|
+
}
|
|
78
|
+
createResolvedApproverActionAuthAdapter({
|
|
79
|
+
channelLabel: "Slack",
|
|
80
|
+
resolveApprovers: ({ cfg, accountId }) => getSlackApprovalApprovers({
|
|
81
|
+
cfg,
|
|
82
|
+
accountId
|
|
83
|
+
}),
|
|
84
|
+
normalizeSenderId: (value) => normalizeSlackApproverId(value)
|
|
85
|
+
});
|
|
86
|
+
//#endregion
|
|
87
|
+
//#region extensions/slack/src/group-policy.ts
|
|
88
|
+
function resolveSlackChannelPolicyEntry(params) {
|
|
89
|
+
const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
|
|
90
|
+
const channelMap = mergeSlackAccountConfig(params.cfg, accountId).channels ?? {};
|
|
91
|
+
if (Object.keys(channelMap).length === 0) return;
|
|
92
|
+
const channelId = params.groupId?.trim();
|
|
93
|
+
const channelName = params.groupChannel?.replace(/^#/, "");
|
|
94
|
+
const normalizedName = normalizeHyphenSlug(channelName);
|
|
95
|
+
const candidates = [
|
|
96
|
+
channelId ?? "",
|
|
97
|
+
channelName ? `#${channelName}` : "",
|
|
98
|
+
channelName ?? "",
|
|
99
|
+
normalizedName
|
|
100
|
+
].filter(Boolean);
|
|
101
|
+
for (const candidate of candidates) if (candidate && channelMap[candidate]) return channelMap[candidate];
|
|
102
|
+
return channelMap["*"];
|
|
103
|
+
}
|
|
104
|
+
function resolveSenderToolsEntry(entry, params) {
|
|
105
|
+
if (!entry) return;
|
|
106
|
+
return resolveToolsBySender({
|
|
107
|
+
toolsBySender: entry.toolsBySender,
|
|
108
|
+
senderId: params.senderId,
|
|
109
|
+
senderName: params.senderName,
|
|
110
|
+
senderUsername: params.senderUsername,
|
|
111
|
+
senderE164: params.senderE164
|
|
112
|
+
}) ?? entry.tools;
|
|
113
|
+
}
|
|
114
|
+
function resolveSlackGroupRequireMention(params) {
|
|
115
|
+
const resolved = resolveSlackChannelPolicyEntry(params);
|
|
116
|
+
if (typeof resolved?.requireMention === "boolean") return resolved.requireMention;
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
function resolveSlackGroupToolPolicy(params) {
|
|
120
|
+
return resolveSenderToolsEntry(resolveSlackChannelPolicyEntry(params), params);
|
|
121
|
+
}
|
|
122
|
+
//#endregion
|
|
123
|
+
//#region extensions/slack/src/reply-blocks.ts
|
|
124
|
+
function resolveSlackReplyBlocks(payload) {
|
|
125
|
+
const slackData = payload.channelData?.slack;
|
|
126
|
+
const interactiveBlocks = buildSlackInteractiveBlocks(payload.interactive);
|
|
127
|
+
let channelBlocks = [];
|
|
128
|
+
if (slackData && typeof slackData === "object" && !Array.isArray(slackData)) channelBlocks = parseSlackBlocksInput(slackData.blocks) ?? [];
|
|
129
|
+
const blocks = [...channelBlocks, ...interactiveBlocks];
|
|
130
|
+
if (blocks.length > 50) throw new Error(`Slack blocks cannot exceed 50 items after interactive render`);
|
|
131
|
+
return blocks.length > 0 ? blocks : void 0;
|
|
132
|
+
}
|
|
133
|
+
//#endregion
|
|
134
|
+
export { getSlackExecApprovalApprovers as a, normalizeSlackApproverId as c, shouldSuppressLocalSlackExecApprovalPrompt as d, isSlackApprovalAuthorizedSender as i, resolveSlackExecApprovalTarget as l, resolveSlackGroupRequireMention as n, isSlackExecApprovalAuthorizedSender as o, resolveSlackGroupToolPolicy as r, isSlackExecApprovalClientEnabled as s, resolveSlackReplyBlocks as t, shouldHandleSlackExecApprovalRequest as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
3
|
-
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
|
|
3
|
+
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-DLub2I2i.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-channels.ts
|
|
6
6
|
var resolve_channels_exports = /* @__PURE__ */ __exportAll({ resolveSlackChannelAllowlist: () => resolveSlackChannelAllowlist });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
3
|
-
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
|
|
3
|
+
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-DLub2I2i.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-users.ts
|
|
6
6
|
var resolve_users_exports = /* @__PURE__ */ __exportAll({ resolveSlackUserAllowlist: () => resolveSlackUserAllowlist });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as normalizeSlackSlug, i as normalizeSlackAllowOwnerEntry, n as normalizeAllowList, o as resolveSlackAllowListMatch, r as normalizeAllowListLower, t as allowListMatches } from "./allow-list-
|
|
2
|
-
import { t as formatSlackError } from "./errors-
|
|
1
|
+
import { a as normalizeSlackSlug, i as normalizeSlackAllowOwnerEntry, n as normalizeAllowList, o as resolveSlackAllowListMatch, r as normalizeAllowListLower, t as allowListMatches } from "./allow-list-nwXs_eCP.js";
|
|
2
|
+
import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
|
|
3
3
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { resolveAgentRoute, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
|
|
5
5
|
import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./target-parsing-CQmv-iSm.js";
|
|
2
|
-
import "./
|
|
3
|
-
import "./config-api-
|
|
2
|
+
import "./client-C_IaJbi5.js";
|
|
3
|
+
import "./config-api-CmgE_ORg.js";
|
|
4
4
|
import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readNumberParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
|
|
5
5
|
import "openclaw/plugin-sdk/account-id";
|
|
6
6
|
import "openclaw/plugin-sdk/channel-status";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-yk5K3wQU.js";
|
|
2
|
-
import { n as
|
|
3
|
-
import { n as setSlackRuntime } from "./runtime
|
|
4
|
-
import { t as sendMessageSlack } from "./send-
|
|
5
|
-
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-
|
|
6
|
-
import { t as probeSlack } from "./probe-
|
|
7
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
8
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
9
|
-
import { t as monitorSlackProvider } from "./provider-
|
|
10
|
-
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-
|
|
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-
|
|
2
|
+
import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-BFaJ_ejG.js";
|
|
3
|
+
import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
4
|
+
import { t as sendMessageSlack } from "./send-CxXFbqN1.js";
|
|
5
|
+
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-BCRbHv1Q.js";
|
|
6
|
+
import { t as probeSlack } from "./probe-FL4sUJsH.js";
|
|
7
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
|
|
8
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
|
|
9
|
+
import { t as monitorSlackProvider } from "./provider-bKg1hkf5.js";
|
|
10
|
+
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CRnfsTTX.js";
|
|
11
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-p39JLqwf.js";
|
|
12
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-CZPzpQZF.js";
|
|
13
|
+
import "./monitor-CdVxsuHi.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,2 +1,2 @@
|
|
|
1
|
-
import { n as setSlackRuntime } from "./runtime
|
|
1
|
+
import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
2
2
|
export { setSlackRuntime };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
-
import { t as formatSlackError } from "./errors-
|
|
1
|
+
import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
|
|
2
|
+
import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
|
|
3
3
|
import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
//#region extensions/slack/src/scopes.ts
|
|
5
5
|
function collectScopes(value, into) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-
|
|
1
|
+
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-0TL3L5Kb.js";
|
|
2
2
|
export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as collectSlackSecurityAuditFindings } from "./security-audit-
|
|
1
|
+
import { t as collectSlackSecurityAuditFindings } from "./security-audit-BJzADAw3.js";
|
|
2
2
|
export { collectSlackSecurityAuditFindings };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-yk5K3wQU.js";
|
|
2
2
|
import { r as parseSlackTarget } from "./target-parsing-CQmv-iSm.js";
|
|
3
3
|
import "./targets-B1tYCAr6.js";
|
|
4
|
-
import {
|
|
5
|
-
import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { i as loadOutboundMediaFromUrl } from "./runtime-api-D8wiG9BS.js";
|
|
4
|
+
import { a as validateSlackBlocksArray, o as SLACK_TEXT_LIMIT, s as truncateSlackText, t as normalizeSlackThreadTsCandidate } from "./thread-ts-As_dcNbD.js";
|
|
5
|
+
import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-C_IaJbi5.js";
|
|
6
|
+
import { t as getOptionalSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
7
|
+
import { i as loadOutboundMediaFromUrl } from "./runtime-api-B5HGOzX3.js";
|
|
9
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
10
9
|
import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
|
|
11
10
|
import { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
|
|
@@ -299,7 +298,7 @@ function hasCustomIdentity(identity) {
|
|
|
299
298
|
}
|
|
300
299
|
function buildSlackUnfurlPayload(options) {
|
|
301
300
|
return {
|
|
302
|
-
|
|
301
|
+
unfurl_links: options?.unfurlLinks ?? false,
|
|
303
302
|
...typeof options?.unfurlMedia === "boolean" ? { unfurl_media: options.unfurlMedia } : {}
|
|
304
303
|
};
|
|
305
304
|
}
|