@openclaw/slack 2026.5.16-beta.3 → 2026.5.16-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/account-inspect-api.js +1 -1
- package/dist/{account-inspect-BJyQLSkN.js → account-inspect-uMPQ6wIu.js} +1 -1
- package/dist/{accounts-yk5K3wQU.js → accounts-Cbw3i3Sa.js} +7 -2
- package/dist/accounts.runtime-z3fshUeC.js +2 -0
- package/dist/{action-runtime-p39JLqwf.js → action-runtime-DgzkekLM.js} +3 -3
- package/dist/action-runtime.runtime-CGEyxfMu.js +2 -0
- package/dist/{actions-BCRbHv1Q.js → actions-vFq9T_Kd.js} +3 -3
- package/dist/{actions.runtime-CpywQR3D.js → actions.runtime-3XZA8-ot.js} +1 -1
- package/dist/api.js +14 -14
- package/dist/{approval-handler.runtime-DXrdRbkT.js → approval-handler.runtime-C_hfvcRd.js} +4 -4
- package/dist/{blocks-render-BAVfd6r0.js → blocks-render-ziYgM0qF.js} +74 -3
- package/dist/{channel-DoFtZGpw.js → channel-D9Wzqu3W.js} +21 -21
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-BDL4qn9U.js → channel.setup-C2_IZ9It.js} +4 -4
- package/dist/{client-C_IaJbi5.js → client-Dr7pteMR.js} +4 -2
- package/dist/{config-schema-CNRousxw.js → config-schema-C8tW0Db0.js} +4 -0
- package/dist/contract-api.js +1 -1
- package/dist/{directory-config-CMvFiswf.js → directory-config-qDXRTCcs.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-CZPzpQZF.js → directory-live-BnN4Zawp.js} +2 -2
- package/dist/http-routes-api.js +1 -1
- package/dist/inbound-contract-test-api.js +2 -2
- package/dist/{interactive-replies-BSg5hXhj.js → interactive-replies-B1wwXeVn.js} +10 -1
- package/dist/interactive-replies-api.js +1 -1
- package/dist/{message-tool-api-C7gc7goF.js → message-tool-api-DRSTJhP8.js} +2 -2
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-Djnd8pGL.js → monitor-beou_Rl6.js} +3 -3
- package/dist/{outbound-adapter-CHm6e-0Q.js → outbound-adapter-Dcy9jZv1.js} +26 -6
- package/dist/outbound-payload-test-api.js +1 -1
- package/dist/{outbound-payload.test-harness-C0CW7_CE.js → outbound-payload.test-harness-B8N8U_AA.js} +1 -1
- package/dist/{pipeline.runtime-DJcwOZky.js → pipeline.runtime-COwSmZG5.js} +131 -46
- package/dist/{plugin-routes-CRnfsTTX.js → plugin-routes-hrKOqBIn.js} +1 -1
- package/dist/{prepare-Or_6_XXl.js → prepare-BjlcuiLr.js} +132 -24
- package/dist/{prepare.test-helpers-CU1qB54Q.js → prepare.test-helpers-D807wdul.js} +1 -1
- package/dist/{probe-FL4sUJsH.js → probe-DDef8MfR.js} +1 -1
- package/dist/{provider-3Y7c15_J.js → provider-C7uiI7hL.js} +120 -9
- package/dist/{replies-Fg1T3ZzU.js → replies-ClYRn89v.js} +9 -6
- package/dist/{reply-blocks-BFaJ_ejG.js → reply-blocks-DgUdywKU.js} +9 -4
- package/dist/{resolve-channels-B_eKaOkE.js → resolve-channels-gx65A1PR.js} +1 -1
- package/dist/{resolve-users-BzBAJwvq.js → resolve-users-OknHaiRY.js} +1 -1
- package/dist/{room-context-Cd8jFpS-.js → room-context-BI26wVBb.js} +83 -2
- package/dist/{runtime-api-B5HGOzX3.js → runtime-api-D3pvtood.js} +1 -1
- package/dist/runtime-api.js +12 -12
- package/dist/{scopes-Bvg_ZzqZ.js → scopes-vRHcdO0m.js} +1 -1
- package/dist/{send-CxXFbqN1.js → send-Br_H5f6H.js} +8 -3
- package/dist/send.runtime-Cj0cqt6C.js +2 -0
- package/dist/send.runtime-CjgsYARn.js +2 -0
- package/dist/{setup-core-B7pou7oe.js → setup-core-BRD65LS_.js} +23 -4
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-CJS-L7PA.js → setup-surface-DpNyddrJ.js} +5 -5
- package/dist/{shared-BEabCPK3.js → shared-DdgQfBV9.js} +6 -6
- package/dist/{slash-dispatch.runtime-Cg7uU92H.js → slash-dispatch.runtime-DYm6lWN8.js} +1 -1
- package/dist/test-api.js +6 -6
- package/openclaw.plugin.json +14 -0
- package/package.json +4 -4
- package/dist/accounts.runtime-BhbEu1ZK.js +0 -2
- package/dist/action-runtime.runtime-BzrPV3EA.js +0 -2
- package/dist/send.runtime-BHCPpSj_.js +0 -2
- package/dist/send.runtime-CDG5AgU3.js +0 -2
|
@@ -121,6 +121,36 @@ function isSlackChannelAllowedByPolicy(params) {
|
|
|
121
121
|
}
|
|
122
122
|
//#endregion
|
|
123
123
|
//#region extensions/slack/src/monitor/context.ts
|
|
124
|
+
const SLACK_ASSISTANT_THREAD_CONTEXT_METADATA_EVENT = "assistant_thread_context";
|
|
125
|
+
function buildSlackAssistantThreadMetadata(context) {
|
|
126
|
+
const eventPayload = {};
|
|
127
|
+
if (context.channelId) eventPayload.channel_id = context.channelId;
|
|
128
|
+
if (context.teamId) eventPayload.team_id = context.teamId;
|
|
129
|
+
if (context.enterpriseId) eventPayload.enterprise_id = context.enterpriseId;
|
|
130
|
+
return {
|
|
131
|
+
event_type: SLACK_ASSISTANT_THREAD_CONTEXT_METADATA_EVENT,
|
|
132
|
+
event_payload: eventPayload
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function parseSlackAssistantThreadMetadata(value) {
|
|
136
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return;
|
|
137
|
+
const metadata = value;
|
|
138
|
+
if (metadata.event_type !== "assistant_thread_context") return;
|
|
139
|
+
const payload = metadata.event_payload;
|
|
140
|
+
if (!payload || typeof payload !== "object" || Array.isArray(payload)) return;
|
|
141
|
+
const record = payload;
|
|
142
|
+
const stringField = (key) => {
|
|
143
|
+
const raw = record[key];
|
|
144
|
+
return typeof raw === "string" && raw.trim() ? raw.trim() : void 0;
|
|
145
|
+
};
|
|
146
|
+
return {
|
|
147
|
+
channelId: stringField("channel_id"),
|
|
148
|
+
teamId: stringField("team_id"),
|
|
149
|
+
enterpriseId: stringField("enterprise_id")
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const SLACK_ASSISTANT_CONTEXT_TTL_MS = 1440 * 60 * 1e3;
|
|
153
|
+
const SLACK_ASSISTANT_CONTEXT_CLEANUP_INTERVAL_MS = 600 * 1e3;
|
|
124
154
|
function createSlackMonitorContext(params) {
|
|
125
155
|
const channelHistories = /* @__PURE__ */ new Map();
|
|
126
156
|
const logger = getChildLogger({ module: "slack-auto-reply" });
|
|
@@ -130,6 +160,8 @@ function createSlackMonitorContext(params) {
|
|
|
130
160
|
ttlMs: 6e4,
|
|
131
161
|
maxSize: 500
|
|
132
162
|
});
|
|
163
|
+
const assistantThreadContexts = /* @__PURE__ */ new Map();
|
|
164
|
+
let lastAssistantContextCleanupAt = Date.now();
|
|
133
165
|
const allowFrom = normalizeAllowList(params.allowFrom);
|
|
134
166
|
const groupDmChannels = normalizeAllowList(params.groupDmChannels);
|
|
135
167
|
const groupDmChannelsLower = normalizeAllowListLower(groupDmChannels);
|
|
@@ -144,6 +176,32 @@ function createSlackMonitorContext(params) {
|
|
|
144
176
|
if (!channelId || !ts) return;
|
|
145
177
|
seenMessages.delete(`${channelId}:${ts}`);
|
|
146
178
|
};
|
|
179
|
+
const assistantContextKey = (channelId, threadTs) => `${channelId}:${threadTs}`;
|
|
180
|
+
const cleanupAssistantThreadContexts = () => {
|
|
181
|
+
const now = Date.now();
|
|
182
|
+
if (now - lastAssistantContextCleanupAt < SLACK_ASSISTANT_CONTEXT_CLEANUP_INTERVAL_MS) return;
|
|
183
|
+
lastAssistantContextCleanupAt = now;
|
|
184
|
+
const cutoff = now - SLACK_ASSISTANT_CONTEXT_TTL_MS;
|
|
185
|
+
for (const [key, entry] of assistantThreadContexts) if (entry.updatedAt < cutoff) assistantThreadContexts.delete(key);
|
|
186
|
+
};
|
|
187
|
+
const getSlackAssistantThreadContext = (channelId, threadTs) => {
|
|
188
|
+
if (!channelId || !threadTs) return;
|
|
189
|
+
const key = assistantContextKey(channelId, threadTs);
|
|
190
|
+
const entry = assistantThreadContexts.get(key);
|
|
191
|
+
if (!entry) return;
|
|
192
|
+
if (Date.now() - entry.updatedAt > SLACK_ASSISTANT_CONTEXT_TTL_MS) {
|
|
193
|
+
assistantThreadContexts.delete(key);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
return entry;
|
|
197
|
+
};
|
|
198
|
+
const saveSlackAssistantThreadContext = (context) => {
|
|
199
|
+
cleanupAssistantThreadContexts();
|
|
200
|
+
assistantThreadContexts.set(assistantContextKey(context.assistantChannelId, context.threadTs), {
|
|
201
|
+
...context,
|
|
202
|
+
updatedAt: Date.now()
|
|
203
|
+
});
|
|
204
|
+
};
|
|
147
205
|
const resolveSlackSystemEventSessionKey = (p) => {
|
|
148
206
|
const channelId = normalizeOptionalString(p.channelId) ?? "";
|
|
149
207
|
if (!channelId) return params.mainKey;
|
|
@@ -256,6 +314,26 @@ function createSlackMonitorContext(params) {
|
|
|
256
314
|
logVerbose(`slack status update failed for channel ${p.channelId}: ${formatSlackError(err)}`);
|
|
257
315
|
}
|
|
258
316
|
};
|
|
317
|
+
const setSlackAssistantSuggestedPrompts = async (p) => {
|
|
318
|
+
const prompts = p.prompts.map((prompt) => ({
|
|
319
|
+
title: prompt.title.trim(),
|
|
320
|
+
message: prompt.message.trim()
|
|
321
|
+
})).filter((prompt) => prompt.title && prompt.message).slice(0, 4);
|
|
322
|
+
if (prompts.length === 0) return false;
|
|
323
|
+
try {
|
|
324
|
+
await params.app.client.assistant.threads.setSuggestedPrompts({
|
|
325
|
+
token: params.botToken,
|
|
326
|
+
channel_id: p.channelId,
|
|
327
|
+
thread_ts: p.threadTs,
|
|
328
|
+
...p.title?.trim() ? { title: p.title.trim() } : {},
|
|
329
|
+
prompts
|
|
330
|
+
});
|
|
331
|
+
return true;
|
|
332
|
+
} catch (err) {
|
|
333
|
+
logVerbose(`slack suggested prompts update failed for channel ${p.channelId}: ${formatSlackError(err)}`);
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
259
337
|
const isChannelAllowed = (p) => {
|
|
260
338
|
const channelType = normalizeSlackChannelType(p.channelType, p.channelId);
|
|
261
339
|
const isDirectMessage = channelType === "im";
|
|
@@ -362,7 +440,10 @@ function createSlackMonitorContext(params) {
|
|
|
362
440
|
isChannelAllowed,
|
|
363
441
|
resolveChannelName,
|
|
364
442
|
resolveUserName,
|
|
365
|
-
setSlackThreadStatus
|
|
443
|
+
setSlackThreadStatus,
|
|
444
|
+
getSlackAssistantThreadContext,
|
|
445
|
+
saveSlackAssistantThreadContext,
|
|
446
|
+
setSlackAssistantSuggestedPrompts
|
|
366
447
|
};
|
|
367
448
|
}
|
|
368
449
|
//#endregion
|
|
@@ -786,4 +867,4 @@ function resolveSlackRoomContextHints(params) {
|
|
|
786
867
|
};
|
|
787
868
|
}
|
|
788
869
|
//#endregion
|
|
789
|
-
export {
|
|
870
|
+
export { resolveSlackSlashCommandConfig as A, resolveChannelContextVisibilityMode as C, updateLastRoute as D, resolveStorePath$1 as E, warnMissingProviderGroupPolicyFallbackOnce as O, readSessionUpdatedAt as S, resolveOpenProviderRuntimeGroupPolicy as T, resolveSlackChatType as _, recordInboundSession as a, getRuntimeConfig$1 as b, authorizeSlackBotRoomMessage as c, resolveSlackEffectiveAllowFrom as d, buildSlackAssistantThreadMetadata as f, normalizeSlackChannelType as g, isSlackChannelAllowedByPolicy as h, parsePluginBindingApprovalCustomId as i, stripSlackMentionsForCommandDetection as j, buildSlackSlashCommandMatcher as k, authorizeSlackSystemEventSender as l, parseSlackAssistantThreadMetadata as m, authorizeSlackDirectMessage as n, resolveConversationLabel$1 as o, createSlackMonitorContext as p, buildPluginBindingResolvedText as r, resolvePluginConversationBindingApproval as s, resolveSlackRoomContextHints as t, resolveSlackCommandIngress as u, resolveSlackChannelConfig as v, resolveDefaultGroupPolicy as w, isDangerousNameMatchingEnabled as x, resolveSlackChannelLabel as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./target-parsing-CQmv-iSm.js";
|
|
2
|
-
import "./client-
|
|
2
|
+
import "./client-Dr7pteMR.js";
|
|
3
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";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-
|
|
2
|
-
import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-
|
|
1
|
+
import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-Cbw3i3Sa.js";
|
|
2
|
+
import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-DgUdywKU.js";
|
|
3
3
|
import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
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-
|
|
4
|
+
import { t as sendMessageSlack } from "./send-Br_H5f6H.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-vFq9T_Kd.js";
|
|
6
|
+
import { t as probeSlack } from "./probe-DDef8MfR.js";
|
|
7
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-gx65A1PR.js";
|
|
8
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-OknHaiRY.js";
|
|
9
|
+
import { t as monitorSlackProvider } from "./provider-C7uiI7hL.js";
|
|
10
|
+
import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-hrKOqBIn.js";
|
|
11
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-DgzkekLM.js";
|
|
12
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-BnN4Zawp.js";
|
|
13
|
+
import "./monitor-beou_Rl6.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-Dr7pteMR.js";
|
|
2
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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-
|
|
1
|
+
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-Cbw3i3Sa.js";
|
|
2
2
|
import { r as parseSlackTarget } from "./target-parsing-CQmv-iSm.js";
|
|
3
3
|
import "./targets-B1tYCAr6.js";
|
|
4
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-
|
|
5
|
+
import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-Dr7pteMR.js";
|
|
6
6
|
import { t as getOptionalSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
7
|
-
import { i as loadOutboundMediaFromUrl } from "./runtime-api-
|
|
7
|
+
import { i as loadOutboundMediaFromUrl } from "./runtime-api-D3pvtood.js";
|
|
8
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
|
|
10
10
|
import { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
|
|
@@ -312,12 +312,14 @@ function buildSlackPostMessagePayload(params) {
|
|
|
312
312
|
channel: params.channelId,
|
|
313
313
|
text: params.text,
|
|
314
314
|
blocks: params.blocks,
|
|
315
|
+
...params.metadata ? { metadata: params.metadata } : {},
|
|
315
316
|
...threadPayload,
|
|
316
317
|
...unfurlPayload
|
|
317
318
|
};
|
|
318
319
|
return {
|
|
319
320
|
channel: params.channelId,
|
|
320
321
|
text: params.text,
|
|
322
|
+
...params.metadata ? { metadata: params.metadata } : {},
|
|
321
323
|
...threadPayload,
|
|
322
324
|
...unfurlPayload
|
|
323
325
|
};
|
|
@@ -637,6 +639,7 @@ async function sendMessageSlackQueuedInner(params) {
|
|
|
637
639
|
replyBroadcast: opts.replyBroadcast,
|
|
638
640
|
identity: opts.identity,
|
|
639
641
|
blocks,
|
|
642
|
+
metadata: opts.metadata,
|
|
640
643
|
unfurl
|
|
641
644
|
})).ts ?? "unknown";
|
|
642
645
|
return {
|
|
@@ -686,6 +689,7 @@ async function sendMessageSlackQueuedInner(params) {
|
|
|
686
689
|
threadTs: opts.threadTs,
|
|
687
690
|
replyBroadcast: sentMessageIds.length === 0 ? opts.replyBroadcast : void 0,
|
|
688
691
|
identity: opts.identity,
|
|
692
|
+
metadata: sentMessageIds.length === 0 ? opts.metadata : void 0,
|
|
689
693
|
unfurl
|
|
690
694
|
});
|
|
691
695
|
lastMessageId = response.ts ?? lastMessageId;
|
|
@@ -699,6 +703,7 @@ async function sendMessageSlackQueuedInner(params) {
|
|
|
699
703
|
threadTs: opts.threadTs,
|
|
700
704
|
replyBroadcast: sentMessageIds.length === 0 ? opts.replyBroadcast : void 0,
|
|
701
705
|
identity: opts.identity,
|
|
706
|
+
metadata: sentMessageIds.length === 0 ? opts.metadata : void 0,
|
|
702
707
|
unfurl
|
|
703
708
|
});
|
|
704
709
|
lastMessageId = response.ts ?? lastMessageId;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as resolveSlackAccount } from "./accounts-
|
|
2
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
1
|
+
import { a as resolveSlackAccount } from "./accounts-Cbw3i3Sa.js";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-uMPQ6wIu.js";
|
|
3
3
|
import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createEnvPatchedAccountSetupAdapter, createLegacyCompatChannelDmPolicy, createSetupTranslator, createStandardChannelSetupStatus, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
|
|
@@ -24,6 +24,23 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
24
24
|
messages_tab_enabled: true,
|
|
25
25
|
messages_tab_read_only_enabled: false
|
|
26
26
|
},
|
|
27
|
+
assistant_view: {
|
|
28
|
+
assistant_description: `${safeName} connects Slack assistant threads to OpenClaw agents.`,
|
|
29
|
+
suggested_prompts: [
|
|
30
|
+
{
|
|
31
|
+
title: "What can you do?",
|
|
32
|
+
message: "What can you help me with?"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
title: "Summarize this channel",
|
|
36
|
+
message: "Summarize the recent activity in this channel."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "Draft a reply",
|
|
40
|
+
message: "Help me draft a reply."
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
},
|
|
27
44
|
slash_commands: [{
|
|
28
45
|
command: "/openclaw",
|
|
29
46
|
description: "Send a message to OpenClaw",
|
|
@@ -60,6 +77,8 @@ function buildSlackManifest(botName = "OpenClaw") {
|
|
|
60
77
|
event_subscriptions: { bot_events: [
|
|
61
78
|
"app_home_opened",
|
|
62
79
|
"app_mention",
|
|
80
|
+
"assistant_thread_context_changed",
|
|
81
|
+
"assistant_thread_started",
|
|
63
82
|
"channel_rename",
|
|
64
83
|
"member_joined_channel",
|
|
65
84
|
"member_left_channel",
|
|
@@ -81,8 +100,8 @@ function buildSlackSetupLines() {
|
|
|
81
100
|
"1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)",
|
|
82
101
|
"2) Add Socket Mode + enable it to get the app-level token (xapp-...)",
|
|
83
102
|
"3) Install App to workspace to get the xoxb- bot token",
|
|
84
|
-
"4) Enable Event Subscriptions (socket) for message
|
|
85
|
-
"5) App Home -> enable the Home tab
|
|
103
|
+
"4) Enable Event Subscriptions (socket) for message, App Home, and assistant events",
|
|
104
|
+
"5) App Home -> enable the Home tab, Messages tab for DMs, and AI assistant view",
|
|
86
105
|
"Manifest JSON follows as plain text for copy/paste.",
|
|
87
106
|
"Tip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.",
|
|
88
107
|
`Docs: ${formatDocsLink("/slack", "slack")}`
|
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-C2_IZ9It.js";
|
|
2
2
|
export { slackSetupPlugin };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-
|
|
2
|
-
import "./shared-
|
|
3
|
-
import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-
|
|
4
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
5
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
1
|
+
import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-Cbw3i3Sa.js";
|
|
2
|
+
import "./shared-DdgQfBV9.js";
|
|
3
|
+
import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-BRD65LS_.js";
|
|
4
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-gx65A1PR.js";
|
|
5
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-OknHaiRY.js";
|
|
6
6
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
7
7
|
import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
|
|
8
8
|
import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy } from "./accounts-
|
|
2
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
3
|
-
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-
|
|
4
|
-
import { f as getChatChannelMeta } from "./client-
|
|
5
|
-
import { i as SLACK_CHANNEL } from "./setup-core-
|
|
6
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy } from "./accounts-Cbw3i3Sa.js";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-uMPQ6wIu.js";
|
|
3
|
+
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-B1wwXeVn.js";
|
|
4
|
+
import { f as getChatChannelMeta } from "./client-Dr7pteMR.js";
|
|
5
|
+
import { i as SLACK_CHANNEL } from "./setup-core-BRD65LS_.js";
|
|
6
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-C8tW0Db0.js";
|
|
7
7
|
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-B8QIWMs1.js";
|
|
8
8
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-0TL3L5Kb.js";
|
|
9
9
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as deliverSlackSlashReplies$1 } from "./replies-
|
|
1
|
+
import { r as deliverSlackSlashReplies$1 } from "./replies-ClYRn89v.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";
|
package/dist/test-api.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { a as createSlackActions, t as slackPlugin } from "./channel-
|
|
1
|
+
import { a as createSlackActions, t as slackPlugin } from "./channel-D9Wzqu3W.js";
|
|
2
2
|
import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
|
|
3
|
-
import { t as sendMessageSlack } from "./send-
|
|
4
|
-
import { t as prepareSlackMessage } from "./prepare-
|
|
5
|
-
import { t as createInboundSlackTestContext } from "./prepare.test-helpers-
|
|
6
|
-
import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-
|
|
7
|
-
import { n as slackOutbound } from "./outbound-adapter-
|
|
3
|
+
import { t as sendMessageSlack } from "./send-Br_H5f6H.js";
|
|
4
|
+
import { t as prepareSlackMessage } from "./prepare-BjlcuiLr.js";
|
|
5
|
+
import { t as createInboundSlackTestContext } from "./prepare.test-helpers-D807wdul.js";
|
|
6
|
+
import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-B8N8U_AA.js";
|
|
7
|
+
import { n as slackOutbound } from "./outbound-adapter-Dcy9jZv1.js";
|
|
8
8
|
export { createInboundSlackTestContext, createSlackActions, createSlackOutboundPayloadHarness, prepareSlackMessage, sendMessageSlack, setSlackRuntime, slackOutbound, slackPlugin };
|
package/openclaw.plugin.json
CHANGED
|
@@ -672,6 +672,11 @@
|
|
|
672
672
|
"exclusiveMinimum": 0,
|
|
673
673
|
"maximum": 9007199254740991
|
|
674
674
|
},
|
|
675
|
+
"maxLineChars": {
|
|
676
|
+
"type": "integer",
|
|
677
|
+
"exclusiveMinimum": 0,
|
|
678
|
+
"maximum": 9007199254740991
|
|
679
|
+
},
|
|
675
680
|
"render": {
|
|
676
681
|
"type": "string",
|
|
677
682
|
"enum": [
|
|
@@ -1819,6 +1824,11 @@
|
|
|
1819
1824
|
"exclusiveMinimum": 0,
|
|
1820
1825
|
"maximum": 9007199254740991
|
|
1821
1826
|
},
|
|
1827
|
+
"maxLineChars": {
|
|
1828
|
+
"type": "integer",
|
|
1829
|
+
"exclusiveMinimum": 0,
|
|
1830
|
+
"maximum": 9007199254740991
|
|
1831
|
+
},
|
|
1822
1832
|
"render": {
|
|
1823
1833
|
"type": "string",
|
|
1824
1834
|
"enum": [
|
|
@@ -2487,6 +2497,10 @@
|
|
|
2487
2497
|
"label": "Slack Progress Max Lines",
|
|
2488
2498
|
"help": "Maximum number of compact progress lines to keep below the draft label (default: 8)."
|
|
2489
2499
|
},
|
|
2500
|
+
"streaming.progress.maxLineChars": {
|
|
2501
|
+
"label": "Slack Progress Max Line Chars",
|
|
2502
|
+
"help": "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
|
|
2503
|
+
},
|
|
2490
2504
|
"streaming.progress.render": {
|
|
2491
2505
|
"label": "Slack Progress Renderer",
|
|
2492
2506
|
"help": "Progress draft renderer: \"text\" uses one portable text body; \"rich\" renders structured Slack Block Kit fields with the same text fallback."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.5.16-beta.
|
|
3
|
+
"version": "2026.5.16-beta.5",
|
|
4
4
|
"description": "OpenClaw Slack channel plugin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"openclaw": "workspace:*"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
|
-
"openclaw": ">=2026.5.16-beta.
|
|
23
|
+
"openclaw": ">=2026.5.16-beta.5"
|
|
24
24
|
},
|
|
25
25
|
"peerDependenciesMeta": {
|
|
26
26
|
"openclaw": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"allowInvalidConfigRecovery": true
|
|
66
66
|
},
|
|
67
67
|
"compat": {
|
|
68
|
-
"pluginApi": ">=2026.5.16-beta.
|
|
68
|
+
"pluginApi": ">=2026.5.16-beta.5"
|
|
69
69
|
},
|
|
70
70
|
"build": {
|
|
71
|
-
"openclawVersion": "2026.5.16-beta.
|
|
71
|
+
"openclawVersion": "2026.5.16-beta.5",
|
|
72
72
|
"bundledDist": false
|
|
73
73
|
},
|
|
74
74
|
"release": {
|