@openclaw/slack 2026.5.28-beta.3 → 2026.5.28
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/api.js +2 -2
- package/dist/{channel-D8p_1twn.js → channel-BvEE3i26.js} +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{monitor-D7jGKmQk.js → monitor-RVx8NyTs.js} +1 -1
- package/dist/{pipeline.runtime-xM6ppqQZ.js → pipeline.runtime-CwtZdUTK.js} +22 -11
- package/dist/{provider-CxMP_s2o.js → provider-Do2x35qj.js} +1 -1
- package/dist/runtime-api.js +2 -2
- package/npm-shrinkwrap.json +3 -3
- package/package.json +4 -4
package/dist/api.js
CHANGED
|
@@ -3,7 +3,7 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
|
|
|
3
3
|
import { t as inspectSlackAccount } from "./account-inspect-CdGk6R7l.js";
|
|
4
4
|
import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-C7eeWg7M.js";
|
|
5
5
|
import "./targets-nUqxHGgg.js";
|
|
6
|
-
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-
|
|
6
|
+
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-BvEE3i26.js";
|
|
7
7
|
import { _ as buildSlackInteractiveBlocks, a as parseSlackBlocksInput, c as resolveSlackGroupRequireMention, d as normalizeAllowList, f as normalizeAllowListLower, g as resolveSlackUserAllowed, h as resolveSlackAllowListMatch, i as SLACK_MAX_BLOCKS, l as resolveSlackGroupToolPolicy, m as normalizeSlackSlug, o as validateSlackBlocksArray, p as normalizeSlackAllowOwnerEntry, u as allowListMatches, v as buildSlackPresentationBlocks } from "./thread-ts-NSVqWybn.js";
|
|
8
8
|
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-B9M0zzlQ.js";
|
|
9
9
|
import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
@@ -14,5 +14,5 @@ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReaction
|
|
|
14
14
|
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-8UPAEyNg.js";
|
|
15
15
|
import { t as probeSlack } from "./probe-Djes9Fy6.js";
|
|
16
16
|
import { t as collectSlackSecurityAuditFindings } from "./security-audit-CikQhBUY.js";
|
|
17
|
-
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-
|
|
17
|
+
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-Do2x35qj.js";
|
|
18
18
|
export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, resetSlackChannelTypeCacheForTest as __resetSlackChannelTypeCacheForTest, resetSlackChannelTypeCacheForTest, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, clearSlackWriteClientCacheForTest, collectSlackSecurityAuditFindings, compileSlackInteractiveReplies, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, isSlackInteractiveRepliesEnabled, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, parseSlackOptionsLine, parseSlackTarget, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, recordSlackThreadParticipation, registerSlackHttpHandler, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAllowListMatch, resolveSlackAutoThreadId, resolveSlackChannelId, resolveSlackChannelType, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackReplyToMode, resolveSlackRuntimeGroupPolicy, resolveSlackUserAllowed, resolveSlackWebClientOptions, resolveSlackWriteClientOptions, sendSlackMessage, slackPlugin, slackSetupPlugin, unpinSlackMessage, validateSlackBlocksArray };
|
|
@@ -599,7 +599,7 @@ async function loadSlackProbeModule() {
|
|
|
599
599
|
return await slackProbeModulePromise;
|
|
600
600
|
}
|
|
601
601
|
async function loadSlackMonitorModule() {
|
|
602
|
-
slackMonitorModulePromise ??= import("./monitor-
|
|
602
|
+
slackMonitorModulePromise ??= import("./monitor-RVx8NyTs.js").then((n) => n.t);
|
|
603
603
|
return await slackMonitorModulePromise;
|
|
604
604
|
}
|
|
605
605
|
async function loadSlackDirectoryLiveModule() {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackPlugin } from "./channel-
|
|
1
|
+
import { t as slackPlugin } from "./channel-BvEE3i26.js";
|
|
2
2
|
export { slackPlugin };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-
|
|
2
|
+
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-Do2x35qj.js";
|
|
3
3
|
import { t as isSlackChannelAllowedByPolicy } from "./policy-BBDU-PQK.js";
|
|
4
4
|
import { o as resolveSlackThreadTs } from "./replies-DkmWK7JW.js";
|
|
5
5
|
//#region extensions/slack/src/monitor.ts
|
|
@@ -7,7 +7,7 @@ import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as
|
|
|
7
7
|
import { a as recordSlackThreadParticipation, i as hasSlackThreadParticipationWithPersistence, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-BURYyCXI.js";
|
|
8
8
|
import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-zfVWcIY6.js";
|
|
9
9
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
10
|
-
import { _ as resolveStorePath, a as escapeSlackMrkdwn, b as stripSlackMentionsForCommandDetection, c as authorizeSlackBotRoomMessage, d as buildSlackAssistantThreadMetadata, f as parseSlackAssistantThreadMetadata, g as resolveChannelContextVisibilityMode, h as readSessionUpdatedAt, i as authorizeSlackDirectMessage, l as resolveSlackCommandIngress, m as resolveSlackChatType, o as recordInboundSession, p as normalizeSlackChannelType, r as resolveSlackRoomContextHints, s as resolveConversationLabel$1, u as resolveSlackEffectiveAllowFrom, v as updateLastRoute } from "./provider-
|
|
10
|
+
import { _ as resolveStorePath, a as escapeSlackMrkdwn, b as stripSlackMentionsForCommandDetection, c as authorizeSlackBotRoomMessage, d as buildSlackAssistantThreadMetadata, f as parseSlackAssistantThreadMetadata, g as resolveChannelContextVisibilityMode, h as readSessionUpdatedAt, i as authorizeSlackDirectMessage, l as resolveSlackCommandIngress, m as resolveSlackChatType, o as recordInboundSession, p as normalizeSlackChannelType, r as resolveSlackRoomContextHints, s as resolveConversationLabel$1, u as resolveSlackEffectiveAllowFrom, v as updateLastRoute } from "./provider-Do2x35qj.js";
|
|
11
11
|
import { n as resolveSlackChannelConfig } from "./policy-BBDU-PQK.js";
|
|
12
12
|
import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-DkmWK7JW.js";
|
|
13
13
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -23,6 +23,7 @@ import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
|
|
|
23
23
|
import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
|
|
24
24
|
import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
|
|
25
25
|
import { enqueueSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
|
|
26
|
+
import { asFiniteNumberInRange, parseStrictFiniteNumber } from "openclaw/plugin-sdk/number-runtime";
|
|
26
27
|
import { buildChannelInboundEventContext, buildMentionRegexes, classifyChannelInboundEvent, dispatchChannelInboundReply, formatInboundEnvelope, hasVisibleInboundReplyDispatch, implicitMentionKindWhen, logInboundDrop, matchesMentionWithExplicit, recordDroppedChannelInboundHistory, resolveEnvelopeFormatOptions, resolveUnmentionedGroupInboundPolicy, toInboundMediaFacts } from "openclaw/plugin-sdk/channel-inbound";
|
|
27
28
|
import { filterSupplementalContextItems, resolvePinnedMainDmOwnerFromAllowlist, shouldIncludeSupplementalContext } from "openclaw/plugin-sdk/security-runtime";
|
|
28
29
|
import { DEFAULT_TIMING, createStatusReactionController, logAckFailure, logTypingFailure, removeAckReactionAfterReply, resolveAckReaction, shouldAckReaction } from "openclaw/plugin-sdk/channel-feedback";
|
|
@@ -580,6 +581,19 @@ async function finalizeSlackPreviewEdit(params) {
|
|
|
580
581
|
}
|
|
581
582
|
}
|
|
582
583
|
//#endregion
|
|
584
|
+
//#region extensions/slack/src/monitor/message-handler/timestamp.ts
|
|
585
|
+
const SLACK_TIMESTAMP_RE = /^\d+(?:\.\d+)?$/;
|
|
586
|
+
const MAX_SAFE_SLACK_TIMESTAMP_SECONDS = Number.MAX_SAFE_INTEGER / 1e3;
|
|
587
|
+
function resolveSlackTimestampMs(ts) {
|
|
588
|
+
const trimmed = ts?.trim();
|
|
589
|
+
if (!trimmed || !SLACK_TIMESTAMP_RE.test(trimmed)) return;
|
|
590
|
+
const seconds = asFiniteNumberInRange(parseStrictFiniteNumber(trimmed), {
|
|
591
|
+
min: 0,
|
|
592
|
+
max: MAX_SAFE_SLACK_TIMESTAMP_SECONDS
|
|
593
|
+
});
|
|
594
|
+
return seconds === void 0 ? void 0 : Math.round(seconds * 1e3);
|
|
595
|
+
}
|
|
596
|
+
//#endregion
|
|
583
597
|
//#region extensions/slack/src/monitor/message-handler/dispatch.ts
|
|
584
598
|
const UNICODE_TO_SLACK = {
|
|
585
599
|
"👀": "eyes",
|
|
@@ -609,10 +623,7 @@ const SLACK_REASONING_TAG_RE = /<\s*(\/?)\s*(?:think(?:ing)?|thought|antthinking
|
|
|
609
623
|
const SLACK_REASONING_LABEL_PREFIX_RE = /^\s*(?:>\s*)?Reasoning:\s*/iu;
|
|
610
624
|
const SLACK_THINKING_LABEL_PREFIX_RE = /^\s*(?:>\s*)?Thinking\.{0,3}(?=\s*(?:\n|_))/iu;
|
|
611
625
|
function resolveSlackMessageTimestampMs(message) {
|
|
612
|
-
|
|
613
|
-
if (!ts) return;
|
|
614
|
-
const parsed = Number(ts);
|
|
615
|
-
return Number.isFinite(parsed) ? Math.trunc(parsed * 1e3) : void 0;
|
|
626
|
+
return resolveSlackTimestampMs(message.event_ts ?? message.ts);
|
|
616
627
|
}
|
|
617
628
|
function resolveSlackBotLoopProtection(prepared) {
|
|
618
629
|
const senderBotId = prepared.message.bot_id;
|
|
@@ -2119,7 +2130,7 @@ async function resolveSlackDmHistoryContext(params) {
|
|
|
2119
2130
|
const isCurrentBot = params.ctx.botUserId && message.user === params.ctx.botUserId || params.ctx.botId && message.bot_id === params.ctx.botId;
|
|
2120
2131
|
const role = isCurrentBot || message.bot_id ? "assistant" : "user";
|
|
2121
2132
|
const sender = `${isCurrentBot ? "Assistant" : message.user ? await resolveUserLabel(message.user) : normalizeOptionalString(message.username) ?? (message.bot_id ? "Bot" : "Unknown")} (${role})`;
|
|
2122
|
-
const timestamp =
|
|
2133
|
+
const timestamp = resolveSlackTimestampMs(message.ts);
|
|
2123
2134
|
entries.push({
|
|
2124
2135
|
sender,
|
|
2125
2136
|
body,
|
|
@@ -2534,7 +2545,7 @@ async function resolveSlackThreadContextData(params) {
|
|
|
2534
2545
|
historyParts.push(formatInboundEnvelope({
|
|
2535
2546
|
channel: "Slack",
|
|
2536
2547
|
from: `${msgSenderName} (${role})`,
|
|
2537
|
-
timestamp:
|
|
2548
|
+
timestamp: resolveSlackTimestampMs(historyMsg.ts),
|
|
2538
2549
|
body: msgWithId,
|
|
2539
2550
|
chatType: "channel",
|
|
2540
2551
|
envelope: params.envelopeOptions
|
|
@@ -3133,7 +3144,7 @@ async function prepareSlackMessage(params) {
|
|
|
3133
3144
|
threadTs,
|
|
3134
3145
|
client: ctx.app.client
|
|
3135
3146
|
}) : null;
|
|
3136
|
-
const timestamp =
|
|
3147
|
+
const timestamp = resolveSlackTimestampMs(message.ts);
|
|
3137
3148
|
const senderName = pendingBody ? await resolveSenderName() : void 0;
|
|
3138
3149
|
await recordDroppedChannelInboundHistory({
|
|
3139
3150
|
input: {
|
|
@@ -3268,7 +3279,7 @@ async function prepareSlackMessage(params) {
|
|
|
3268
3279
|
let combinedBody = formatInboundEnvelope({
|
|
3269
3280
|
channel: "Slack",
|
|
3270
3281
|
from: envelopeFrom,
|
|
3271
|
-
timestamp:
|
|
3282
|
+
timestamp: resolveSlackTimestampMs(message.ts),
|
|
3272
3283
|
body: textWithId,
|
|
3273
3284
|
chatType,
|
|
3274
3285
|
sender: {
|
|
@@ -3338,7 +3349,7 @@ async function prepareSlackMessage(params) {
|
|
|
3338
3349
|
channel: "slack",
|
|
3339
3350
|
accountId: route.accountId,
|
|
3340
3351
|
messageId: message.ts,
|
|
3341
|
-
timestamp:
|
|
3352
|
+
timestamp: resolveSlackTimestampMs(message.ts),
|
|
3342
3353
|
from: slackFrom,
|
|
3343
3354
|
sender: {
|
|
3344
3355
|
id: senderId,
|
|
@@ -3419,7 +3430,7 @@ async function prepareSlackMessage(params) {
|
|
|
3419
3430
|
entry: {
|
|
3420
3431
|
sender: senderName,
|
|
3421
3432
|
body: rawBody,
|
|
3422
|
-
timestamp:
|
|
3433
|
+
timestamp: resolveSlackTimestampMs(message.ts),
|
|
3423
3434
|
messageId: message.ts
|
|
3424
3435
|
}
|
|
3425
3436
|
});
|
|
@@ -2682,7 +2682,7 @@ function createSlackThreadTsResolver(params) {
|
|
|
2682
2682
|
//#region extensions/slack/src/monitor/message-handler.ts
|
|
2683
2683
|
let slackMessagePipelinePromise;
|
|
2684
2684
|
function loadSlackMessagePipeline() {
|
|
2685
|
-
slackMessagePipelinePromise ??= import("./pipeline.runtime-
|
|
2685
|
+
slackMessagePipelinePromise ??= import("./pipeline.runtime-CwtZdUTK.js");
|
|
2686
2686
|
return slackMessagePipelinePromise;
|
|
2687
2687
|
}
|
|
2688
2688
|
const APP_MENTION_RETRY_TTL_MS = 6e4;
|
package/dist/runtime-api.js
CHANGED
|
@@ -7,8 +7,8 @@ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReaction
|
|
|
7
7
|
import { t as probeSlack } from "./probe-Djes9Fy6.js";
|
|
8
8
|
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-zXt5f47h.js";
|
|
9
9
|
import { t as resolveSlackUserAllowlist } from "./resolve-users-BLfGAz1v.js";
|
|
10
|
-
import { t as monitorSlackProvider } from "./provider-
|
|
10
|
+
import { t as monitorSlackProvider } from "./provider-Do2x35qj.js";
|
|
11
11
|
import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-BOEgcnv6.js";
|
|
12
12
|
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-BFB1pSax.js";
|
|
13
|
-
import "./monitor-
|
|
13
|
+
import "./monitor-RVx8NyTs.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 };
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.5.28
|
|
3
|
+
"version": "2026.5.28",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@openclaw/slack",
|
|
9
|
-
"version": "2026.5.28
|
|
9
|
+
"version": "2026.5.28",
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@slack/bolt": "4.7.2",
|
|
12
12
|
"@slack/types": "2.21.1",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"zod": "4.4.3"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"openclaw": ">=2026.5.28
|
|
18
|
+
"openclaw": ">=2026.5.28"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"openclaw": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.5.28
|
|
3
|
+
"version": "2026.5.28",
|
|
4
4
|
"description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"zod": "4.4.3"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"openclaw": ">=2026.5.28
|
|
18
|
+
"openclaw": ">=2026.5.28"
|
|
19
19
|
},
|
|
20
20
|
"peerDependenciesMeta": {
|
|
21
21
|
"openclaw": {
|
|
@@ -60,13 +60,13 @@
|
|
|
60
60
|
"allowInvalidConfigRecovery": true
|
|
61
61
|
},
|
|
62
62
|
"compat": {
|
|
63
|
-
"pluginApi": ">=2026.5.28
|
|
63
|
+
"pluginApi": ">=2026.5.28"
|
|
64
64
|
},
|
|
65
65
|
"startup": {
|
|
66
66
|
"deferConfiguredChannelFullLoadUntilAfterListen": true
|
|
67
67
|
},
|
|
68
68
|
"build": {
|
|
69
|
-
"openclawVersion": "2026.5.28
|
|
69
|
+
"openclawVersion": "2026.5.28",
|
|
70
70
|
"bundledDist": false
|
|
71
71
|
},
|
|
72
72
|
"release": {
|