@openclaw/slack 2026.7.2-beta.7 → 2026.8.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/{account-inspect-DEKpg9Ip.js → account-inspect-Drw2gAiN.js} +1 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/{accounts-CHAeNZOX.js → accounts-CK4AVI2_.js} +2 -2
- package/dist/{accounts.runtime-BHD4Ma2R.js → accounts.runtime-Cb7QwWBz.js} +1 -1
- package/dist/{action-runtime-DfuYoMjG.js → action-runtime-BkGe7ny_.js} +148 -76
- package/dist/action-runtime.runtime-D9I6uc0Q.js +2 -0
- package/dist/{actions-D3NuJvva.js → actions-BTDXwwE3.js} +85 -44
- package/dist/actions.runtime-DLFyUkvg.js +2 -0
- package/dist/api.js +15 -15
- package/dist/{approval-handler.runtime-BA05P0QT.js → approval-handler.runtime-CJaNzAq2.js} +51 -14
- package/dist/{block-text-DkHaoGem.js → block-text-YtiNkqmx.js} +1 -1
- package/dist/{channel-B9fVdW3s.js → channel-D_tovcUL.js} +151 -91
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-DXyos1d2.js → channel-type-B9MSdoGN.js} +9 -8
- package/dist/{config-adapter-CxBQH8fq.js → channel.setup-Bch9dYmA.js} +83 -25
- package/dist/{config-schema-SgZT6nXV.js → config-schema-xto5jFIx.js} +5 -11
- package/dist/{directory-config-CnCIAktf.js → directory-config-CNBz8lJa.js} +3 -3
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-DKunWh3A.js → directory-live-CFKUtW9E.js} +13 -22
- package/dist/{doctor-contract-CsGH1Dfc.js → doctor-contract-BAy7-EUQ.js} +30 -3
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{group-policy-NQZti9t-.js → group-policy-c4RP9bjc.js} +248 -163
- package/dist/index.js +4 -1
- package/dist/{message-tool-api-DkhFpMoy.js → message-tool-api-BykQB4AU.js} +14 -3
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-CmKz0wtI.js → monitor-1nF1NtqT.js} +3 -3
- package/dist/{outbound-adapter-BkuMp2Vs.js → outbound-adapter-S81tsswN.js} +19 -17
- package/dist/{pipeline.runtime-DgtmuYCP.js → pipeline.runtime-BvYsM5JO.js} +1087 -682
- package/dist/{policy-PRysPn23.js → policy-TapwbeaT.js} +18 -14
- package/dist/{probe-CgDsSops.js → probe-HoEg_WxB.js} +38 -18
- package/dist/{provider-DmRizMZt.js → provider-CDNvBXUi.js} +3422 -2590
- package/dist/{relay-source-Blxj8xb4.js → relay-source-C9leF11u.js} +11 -21
- package/dist/{replies-4s_Vq_z9.js → replies-CeOfv82I.js} +52 -6
- package/dist/{resolve-channels-yEqmM-3I.js → resolve-channels-CNPrxaXY.js} +39 -12
- package/dist/{resolve-users-BOrt5K-5.js → resolve-users-Dzomuwnr.js} +28 -5
- package/dist/{runtime-api-QMb-Q5Ko.js → runtime-api-Cj9nxBNv.js} +3 -3
- package/dist/runtime-api.js +11 -11
- package/dist/{scopes-BJSrkAp6.js → scopes-cYXKkrRD.js} +1 -1
- package/dist/{send-DsLeZpST.js → send-Nor0iBwY.js} +211 -105
- package/dist/{send.runtime-gUdK6V3h.js → send.runtime-BmgNe6S9.js} +1 -1
- package/dist/setup-entry.js +1 -4
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BeNzrMrJ.js → setup-surface-CbX1-Knh.js} +6 -6
- package/dist/{shared-DgIN3Dcr.js → shared-zdT5AMp-.js} +36 -42
- package/dist/{slash-dispatch.runtime-zPkyl7dB.js → slash-dispatch.runtime-Bnr9GR1S.js} +1 -1
- package/dist/{streaming-compat-3_X-21wW.js → streaming-compat-B-e0mqM0.js} +3 -8
- package/dist/{target-parsing-N6lHogYZ.js → target-parsing-BnMD2ZqZ.js} +40 -2
- package/dist/{targets-KmjP2E8s.js → targets-Cx5W_n3W.js} +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/socket-mode/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/crypto.d.ts +1 -1
- package/node_modules/@slack/socket-mode/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/undici/lib/cache/memory-cache-store.js +54 -9
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +7 -1
- package/node_modules/undici/lib/core/request.js +12 -1
- package/node_modules/undici/lib/dispatcher/client-h1.js +11 -2
- package/node_modules/undici/lib/handler/cache-handler.js +246 -64
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +3 -3
- package/node_modules/undici/lib/handler/retry-handler.js +24 -0
- package/node_modules/undici/lib/interceptor/cache.js +159 -52
- package/node_modules/undici/lib/util/cache.js +324 -62
- package/node_modules/undici/lib/util/date.js +23 -6
- package/node_modules/undici/lib/web/cookies/util.js +79 -9
- package/node_modules/undici/package.json +1 -1
- package/openclaw.plugin.json +239 -34
- package/package.json +9 -9
- package/skills/slack/SKILL.md +10 -68
- package/dist/action-runtime.runtime-DQErZYpz.js +0 -2
- package/dist/actions.runtime-BIRU_G4M.js +0 -2
- package/dist/channel.setup-CLP5oTvh.js +0 -56
- package/dist/preflight-audio.runtime-D5Bgags0.js +0 -3
- package/dist/slash-plugin-commands.runtime-Dosfcx3X.js +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
1
|
+
import { f as SLACK_SOCKET_RECONNECT_POLICY, p as formatUnknownError } from "./provider-CDNvBXUi.js";
|
|
2
|
+
import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
|
|
4
|
-
import { Buffer } from "node:buffer";
|
|
5
4
|
import { isIP } from "node:net";
|
|
5
|
+
import { rawDataToString } from "openclaw/plugin-sdk/webhook-ingress";
|
|
6
6
|
import WebSocket from "ws";
|
|
7
7
|
//#region extensions/slack/src/monitor/relay-source.ts
|
|
8
8
|
const SLACK_RELAY_ROUTE_KINDS = /* @__PURE__ */ new Set([
|
|
@@ -21,8 +21,7 @@ async function monitorSlackRelaySource(params) {
|
|
|
21
21
|
params.setStatus?.({
|
|
22
22
|
connected: true,
|
|
23
23
|
lastConnectedAt: Date.now(),
|
|
24
|
-
|
|
25
|
-
lastError: null
|
|
24
|
+
...params.identityHealth
|
|
26
25
|
});
|
|
27
26
|
params.runtime.log?.(`slack relay mode connected gateway_id:${params.config.gatewayId}`);
|
|
28
27
|
await runRelayWebSocket({
|
|
@@ -39,7 +38,7 @@ async function monitorSlackRelaySource(params) {
|
|
|
39
38
|
const delayMs = computeBackoff(SLACK_SOCKET_RECONNECT_POLICY, reconnectAttempts);
|
|
40
39
|
params.setStatus?.({
|
|
41
40
|
connected: false,
|
|
42
|
-
|
|
41
|
+
lifecycle: "recovering",
|
|
43
42
|
lastDisconnect: {
|
|
44
43
|
at: Date.now(),
|
|
45
44
|
error: formatUnknownError(err)
|
|
@@ -125,7 +124,7 @@ function runRelayWebSocket(params) {
|
|
|
125
124
|
const closeReason = formatRelayClose(code, reason);
|
|
126
125
|
params.setStatus?.({
|
|
127
126
|
connected: false,
|
|
128
|
-
|
|
127
|
+
lifecycle: "recovering",
|
|
129
128
|
lastDisconnect: {
|
|
130
129
|
at: Date.now(),
|
|
131
130
|
error: closeReason
|
|
@@ -204,20 +203,14 @@ function parseRelayFrame(data) {
|
|
|
204
203
|
throw new SlackRelayMalformedFrameError("Slack relay received malformed JSON frame", { cause });
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
|
-
function rawDataToString(data) {
|
|
208
|
-
if (typeof data === "string") return data;
|
|
209
|
-
if (Buffer.isBuffer(data)) return data.toString("utf8");
|
|
210
|
-
if (Array.isArray(data)) return Buffer.concat(data).toString("utf8");
|
|
211
|
-
return Buffer.from(data).toString("utf8");
|
|
212
|
-
}
|
|
213
206
|
function extractRelaySlackMessageEvent(frame) {
|
|
214
|
-
const record =
|
|
207
|
+
const record = asOptionalRecord(frame);
|
|
215
208
|
if (!record || record.type !== "slack_event") return;
|
|
216
209
|
const deliveryId = stringValue(record.delivery_id);
|
|
217
|
-
const routeRecord =
|
|
210
|
+
const routeRecord = asOptionalRecord(record.route);
|
|
218
211
|
const routeKind = stringValue(routeRecord?.kind);
|
|
219
212
|
const routeKey = stringValue(routeRecord?.key);
|
|
220
|
-
const event =
|
|
213
|
+
const event = asOptionalRecord(asOptionalRecord(record.payload)?.event);
|
|
221
214
|
if (event?.type !== "message" || typeof event.channel !== "string") return;
|
|
222
215
|
if (!deliveryId || !routeKind || !SLACK_RELAY_ROUTE_KINDS.has(routeKind) || !routeKey) return;
|
|
223
216
|
return {
|
|
@@ -230,12 +223,12 @@ function extractRelaySlackMessageEvent(frame) {
|
|
|
230
223
|
};
|
|
231
224
|
}
|
|
232
225
|
function extractRelayHello(frame) {
|
|
233
|
-
const record =
|
|
226
|
+
const record = asOptionalRecord(frame);
|
|
234
227
|
if (!record || record.type !== "hello") return;
|
|
235
228
|
return { identity: extractRelayIdentity(record) };
|
|
236
229
|
}
|
|
237
230
|
function extractRelayIdentity(record) {
|
|
238
|
-
const identityRecord =
|
|
231
|
+
const identityRecord = asOptionalRecord(record.slack_identity) ?? asOptionalRecord(record.slackIdentity);
|
|
239
232
|
if (!identityRecord) return;
|
|
240
233
|
const username = normalizeOptionalString(identityRecord.username);
|
|
241
234
|
const iconUrl = normalizeOptionalString(identityRecord.icon_url) ?? normalizeOptionalString(identityRecord.iconUrl);
|
|
@@ -262,9 +255,6 @@ function formatRelayClose(code, reason) {
|
|
|
262
255
|
const text = reason.toString("utf8");
|
|
263
256
|
return text ? `Slack relay websocket closed (${code} ${text})` : `Slack relay websocket closed (${code})`;
|
|
264
257
|
}
|
|
265
|
-
function asRecord(value) {
|
|
266
|
-
return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
|
|
267
|
-
}
|
|
268
258
|
function stringValue(value) {
|
|
269
259
|
return typeof value === "string" ? value : void 0;
|
|
270
260
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-
|
|
1
|
+
import { B as SLACK_TEXT_LIMIT, C as buildSlackNativeDataAccessibilityText, D as isSlackInvalidBlocksResponse, N as buildSlackBlocksFallbackText, O as isSlackNativeResponseUrlRejection, T as hasSlackNativeDataBlock, _ as resolveSlackReplyBlocks, g as resolveSlackReplyBlockResolution, j as markdownToSlackMrkdwnChunks, m as hasSlackReplyStructuredContent } from "./group-policy-c4RP9bjc.js";
|
|
2
|
+
import { m as chunkSlackTextAtHardLimit, p as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-Nor0iBwY.js";
|
|
3
|
+
import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-CDNvBXUi.js";
|
|
4
4
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
5
5
|
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
|
6
6
|
import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
|
|
@@ -64,6 +64,52 @@ function emitSlackMessageSentHooks(params) {
|
|
|
64
64
|
}
|
|
65
65
|
//#endregion
|
|
66
66
|
//#region extensions/slack/src/monitor/replies.ts
|
|
67
|
+
function compactSlackResponseUrlFallback(messages) {
|
|
68
|
+
if (messages.length <= 1) return [...messages];
|
|
69
|
+
if (messages.every((message) => !message.blocks?.length)) return chunkSlackTextAtHardLimit(messages.map((message) => message.text).join("")).map((text) => ({
|
|
70
|
+
text,
|
|
71
|
+
mrkdwn: false
|
|
72
|
+
}));
|
|
73
|
+
const compacted = [];
|
|
74
|
+
let pending;
|
|
75
|
+
const flush = () => {
|
|
76
|
+
if (pending) {
|
|
77
|
+
compacted.push(pending);
|
|
78
|
+
pending = void 0;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
for (const message of messages) {
|
|
82
|
+
if (!message.blocks?.length) {
|
|
83
|
+
flush();
|
|
84
|
+
compacted.push(message);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (!pending?.blocks?.length) {
|
|
88
|
+
pending = {
|
|
89
|
+
...message,
|
|
90
|
+
blocks: [...message.blocks]
|
|
91
|
+
};
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const text = `${pending.text}\n\n${message.text}`;
|
|
95
|
+
const blocks = [...pending.blocks, ...message.blocks];
|
|
96
|
+
if (text.length > 4e4 || blocks.length > 50) {
|
|
97
|
+
flush();
|
|
98
|
+
pending = {
|
|
99
|
+
...message,
|
|
100
|
+
blocks: [...message.blocks]
|
|
101
|
+
};
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
pending = {
|
|
105
|
+
text,
|
|
106
|
+
blocks,
|
|
107
|
+
mrkdwn: false
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
flush();
|
|
111
|
+
return compacted;
|
|
112
|
+
}
|
|
67
113
|
function readSlackReplyBlocks(payload) {
|
|
68
114
|
return resolveSlackReplyBlocks(payload);
|
|
69
115
|
}
|
|
@@ -88,8 +134,7 @@ async function deliverReplies(params) {
|
|
|
88
134
|
...input.textIsSlackMrkdwn ? { textIsSlackMrkdwn: true } : {},
|
|
89
135
|
...input.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
|
|
90
136
|
...params.eventScope ? {
|
|
91
|
-
|
|
92
|
-
enterpriseEventScope: params.eventScope,
|
|
137
|
+
eventScope: params.eventScope,
|
|
93
138
|
textLimit: params.textLimit,
|
|
94
139
|
...params.mediaMaxBytes !== void 0 ? { mediaMaxBytes: params.mediaMaxBytes } : {}
|
|
95
140
|
} : {},
|
|
@@ -264,13 +309,14 @@ async function deliverSlackSlashReplies(params) {
|
|
|
264
309
|
blocks: input.blocks,
|
|
265
310
|
baseText: input.baseText
|
|
266
311
|
});
|
|
312
|
+
const nativeFallback = responseBudget.remaining() === void 0 ? plan.fallbackMessages : compactSlackResponseUrlFallback(plan.fallbackMessages);
|
|
267
313
|
return {
|
|
268
314
|
message: {
|
|
269
315
|
text: plan.accessibilityText,
|
|
270
316
|
blocks: input.blocks,
|
|
271
317
|
mrkdwn: false
|
|
272
318
|
},
|
|
273
|
-
nativeFallback
|
|
319
|
+
nativeFallback,
|
|
274
320
|
...plan.skipOriginalBlocks ? { skipOriginalBlocks: true } : {}
|
|
275
321
|
};
|
|
276
322
|
};
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { a as
|
|
2
|
+
import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-BnMD2ZqZ.js";
|
|
3
|
+
import { i as createSlackLookupClient } from "./probe-HoEg_WxB.js";
|
|
3
4
|
import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.js";
|
|
4
5
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
6
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
6
7
|
//#region extensions/slack/src/resolve-channels.ts
|
|
7
8
|
var resolve_channels_exports = /* @__PURE__ */ __exportAll({ resolveSlackChannelAllowlist: () => resolveSlackChannelAllowlist });
|
|
9
|
+
function resolveWorkspaceQualifiedChannel(input) {
|
|
10
|
+
if (!/^team:/i.test(input)) return;
|
|
11
|
+
try {
|
|
12
|
+
const target = parseSlackTarget(input);
|
|
13
|
+
if (target?.kind !== "channel" || !target.teamId) return;
|
|
14
|
+
return {
|
|
15
|
+
input,
|
|
16
|
+
resolved: true,
|
|
17
|
+
id: formatSlackTarget({
|
|
18
|
+
teamId: target.teamId,
|
|
19
|
+
kind: "channel",
|
|
20
|
+
id: target.id
|
|
21
|
+
})
|
|
22
|
+
};
|
|
23
|
+
} catch {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
8
27
|
function parseSlackChannelMention(raw) {
|
|
9
28
|
const trimmed = raw.trim();
|
|
10
29
|
if (!trimmed) return {};
|
|
@@ -47,20 +66,26 @@ function resolveByName(name, channels) {
|
|
|
47
66
|
return matches.find((channel) => !channel.archived) ?? matches[0];
|
|
48
67
|
}
|
|
49
68
|
async function resolveSlackChannelAllowlist(params) {
|
|
50
|
-
const
|
|
69
|
+
const workspaceResolved = params.entries.map(resolveWorkspaceQualifiedChannel);
|
|
70
|
+
const lookupEntries = params.entries.filter((_, index) => !workspaceResolved[index]);
|
|
71
|
+
if (lookupEntries.length === 0) return workspaceResolved.filter((entry) => entry !== void 0);
|
|
72
|
+
const parsedEntries = lookupEntries.map((input) => ({
|
|
51
73
|
input,
|
|
52
74
|
parsed: parseSlackChannelMention(input)
|
|
53
75
|
}));
|
|
54
|
-
if (parsedEntries.every((entry) => Boolean(entry.parsed.id)))
|
|
55
|
-
input,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
76
|
+
if (parsedEntries.every((entry) => Boolean(entry.parsed.id))) {
|
|
77
|
+
const resolved = parsedEntries.map(({ input, parsed }) => ({
|
|
78
|
+
input,
|
|
79
|
+
resolved: true,
|
|
80
|
+
id: parsed.id,
|
|
81
|
+
name: parsed.name
|
|
82
|
+
}));
|
|
83
|
+
let resolvedIndex = 0;
|
|
84
|
+
return workspaceResolved.map((entry) => entry ?? resolved[resolvedIndex++]);
|
|
85
|
+
}
|
|
86
|
+
const resolved = resolveDirectoryAllowlistEntries({
|
|
87
|
+
entries: lookupEntries,
|
|
88
|
+
lookup: await listSlackChannels(params.client ?? createSlackLookupClient(params.token)),
|
|
64
89
|
parseInput: parseSlackChannelMention,
|
|
65
90
|
findById: (lookup, id) => lookup.find((channel) => channel.id === id),
|
|
66
91
|
buildIdResolved: ({ input, parsed, match }) => ({
|
|
@@ -87,6 +112,8 @@ async function resolveSlackChannelAllowlist(params) {
|
|
|
87
112
|
resolved: false
|
|
88
113
|
})
|
|
89
114
|
});
|
|
115
|
+
let resolvedIndex = 0;
|
|
116
|
+
return workspaceResolved.map((entry) => entry ?? resolved[resolvedIndex++]);
|
|
90
117
|
}
|
|
91
118
|
//#endregion
|
|
92
119
|
export { resolve_channels_exports as n, resolveSlackChannelAllowlist as t };
|
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { a as
|
|
2
|
+
import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-BnMD2ZqZ.js";
|
|
3
|
+
import { i as createSlackLookupClient } from "./probe-HoEg_WxB.js";
|
|
3
4
|
import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.js";
|
|
4
5
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
6
|
import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
|
|
6
7
|
//#region extensions/slack/src/resolve-users.ts
|
|
7
8
|
var resolve_users_exports = /* @__PURE__ */ __exportAll({ resolveSlackUserAllowlist: () => resolveSlackUserAllowlist });
|
|
9
|
+
function resolveWorkspaceQualifiedUser(input) {
|
|
10
|
+
if (!/^team:/i.test(input)) return;
|
|
11
|
+
try {
|
|
12
|
+
const target = parseSlackTarget(input);
|
|
13
|
+
if (target?.kind !== "user" || !target.teamId) return;
|
|
14
|
+
return {
|
|
15
|
+
input,
|
|
16
|
+
resolved: true,
|
|
17
|
+
id: formatSlackTarget({
|
|
18
|
+
teamId: target.teamId,
|
|
19
|
+
kind: "user",
|
|
20
|
+
id: target.id
|
|
21
|
+
})
|
|
22
|
+
};
|
|
23
|
+
} catch {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
8
27
|
function parseSlackUserInput(raw) {
|
|
9
28
|
const trimmed = raw.trim();
|
|
10
29
|
if (!trimmed) return {};
|
|
@@ -76,10 +95,12 @@ function resolveSlackUserFromMatches(input, matches, parsed) {
|
|
|
76
95
|
};
|
|
77
96
|
}
|
|
78
97
|
async function resolveSlackUserAllowlist(params) {
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
98
|
+
const workspaceResolved = params.entries.map(resolveWorkspaceQualifiedUser);
|
|
99
|
+
const lookupEntries = params.entries.filter((_, index) => !workspaceResolved[index]);
|
|
100
|
+
if (lookupEntries.length === 0) return workspaceResolved.filter((entry) => entry !== void 0);
|
|
101
|
+
const resolved = resolveDirectoryAllowlistEntries({
|
|
102
|
+
entries: lookupEntries,
|
|
103
|
+
lookup: await listSlackUsers(params.client ?? createSlackLookupClient(params.token)),
|
|
83
104
|
parseInput: parseSlackUserInput,
|
|
84
105
|
findById: (lookup, id) => lookup.find((user) => user.id === id),
|
|
85
106
|
buildIdResolved: ({ input, parsed, match }) => ({
|
|
@@ -113,6 +134,8 @@ async function resolveSlackUserAllowlist(params) {
|
|
|
113
134
|
resolved: false
|
|
114
135
|
})
|
|
115
136
|
});
|
|
137
|
+
let resolvedIndex = 0;
|
|
138
|
+
return workspaceResolved.map((entry) => entry ?? resolved[resolvedIndex++]);
|
|
116
139
|
}
|
|
117
140
|
//#endregion
|
|
118
141
|
export { resolve_users_exports as n, resolveSlackUserAllowlist as t };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./target-parsing-
|
|
2
|
-
import "./probe-
|
|
3
|
-
import "./config-schema-
|
|
1
|
+
import "./target-parsing-BnMD2ZqZ.js";
|
|
2
|
+
import "./probe-HoEg_WxB.js";
|
|
3
|
+
import "./config-schema-xto5jFIx.js";
|
|
4
4
|
import "openclaw/plugin-sdk/account-id";
|
|
5
5
|
import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
|
|
6
6
|
import "openclaw/plugin-sdk/channel-status";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CLp4obpN.js";
|
|
2
|
-
import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./accounts-
|
|
3
|
-
import {
|
|
4
|
-
import { t as probeSlack } from "./probe-
|
|
2
|
+
import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./accounts-CK4AVI2_.js";
|
|
3
|
+
import { i as resolveSlackGroupToolPolicy, r as resolveSlackGroupRequireMention } from "./group-policy-c4RP9bjc.js";
|
|
4
|
+
import { t as probeSlack } from "./probe-HoEg_WxB.js";
|
|
5
5
|
import { r as setSlackRuntime } from "./runtime-JSVZSWAj.js";
|
|
6
|
-
import { a as
|
|
7
|
-
import { r as sendMessageSlack } from "./send-
|
|
8
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
9
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
10
|
-
import { t as monitorSlackProvider } from "./provider-
|
|
11
|
-
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-
|
|
12
|
-
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-
|
|
13
|
-
import "./monitor-
|
|
6
|
+
import { a as getSlackMemberInfo, c as listSlackReactions, d as readSlackMessages, f as removeOwnSlackReactions, g as unpinSlackMessage, h as sendSlackMessage, l as pinSlackMessage, o as listSlackEmojis, p as removeSlackReaction, r as editSlackMessage, s as listSlackPins, t as deleteSlackMessage, u as reactSlackMessage } from "./actions-BTDXwwE3.js";
|
|
7
|
+
import { r as sendMessageSlack } from "./send-Nor0iBwY.js";
|
|
8
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-CNPrxaXY.js";
|
|
9
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-Dzomuwnr.js";
|
|
10
|
+
import { t as monitorSlackProvider } from "./provider-CDNvBXUi.js";
|
|
11
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-BkGe7ny_.js";
|
|
12
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-CFKUtW9E.js";
|
|
13
|
+
import "./monitor-1nF1NtqT.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 {
|
|
1
|
+
import { a as createSlackReadClient, r as formatSlackError } from "./probe-HoEg_WxB.js";
|
|
2
2
|
import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
3
3
|
//#region extensions/slack/src/scopes.ts
|
|
4
4
|
function collectScopes(value, into) {
|