@openclaw/slack 2026.5.30-beta.1 → 2026.5.31-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/README.md +11 -0
- package/dist/{action-runtime-BQ5ny5AD.js → action-runtime-DEztkt37.js} +2 -2
- package/dist/action-runtime.runtime-uN2B3l57.js +2 -0
- package/dist/{actions-DMBUHKPy.js → actions-BA_6yvPC.js} +2 -2
- package/dist/{actions.runtime-BfyFeTsT.js → actions.runtime-BNL71SN3.js} +1 -1
- package/dist/api.js +7 -7
- package/dist/{approval-handler.runtime-DVLnnq25.js → approval-handler.runtime-D0rHmHTC.js} +1 -1
- package/dist/{channel-CvkLuaXk.js → channel-ClgouPGI.js} +14 -15
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel.setup-oGp4gSTP.js → channel.setup-DvU_3G7a.js} +2 -3
- package/dist/{client-DowBk5k0.js → client-qvqS9fQM.js} +20 -1
- package/dist/{config-schema-C0RewpJQ.js → config-schema-BjAjs8_6.js} +16 -0
- package/dist/contract-api.js +1 -1
- package/dist/{directory-live-BFB1pSax.js → directory-live-WZwhRYe2.js} +1 -1
- package/dist/{doctor-contract-DIMUXDHO.js → doctor-contract-DpGLNqS3.js} +2 -2
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{monitor-BdzpEeNU.js → monitor-D5FVBchh.js} +2 -2
- package/dist/{outbound-adapter-BHZMgblN.js → outbound-adapter-BxKw6eWi.js} +1 -1
- package/dist/{pipeline.runtime-C52E8vGp.js → pipeline.runtime-Bo6reKXg.js} +37 -26
- package/dist/{probe-Djes9Fy6.js → probe-DczaQTdi.js} +1 -1
- package/dist/{provider-Ba13bui0.js → provider-DNfFBEzl.js} +6 -6
- package/dist/{replies-DkmWK7JW.js → replies-BmFpkBXm.js} +1 -1
- package/dist/{resolve-channels-zXt5f47h.js → resolve-channels-DIxJRl0F.js} +1 -1
- package/dist/{resolve-users-BLfGAz1v.js → resolve-users-B3vczJHE.js} +1 -1
- package/dist/{runtime-api-DvpUD2hw.js → runtime-api-BpGQDSTg.js} +1 -1
- package/dist/runtime-api.js +9 -9
- package/dist/{scopes-DiiHsqh1.js → scopes-Q1VjNpWb.js} +1 -1
- package/dist/{send-BURYyCXI.js → send-zvrcUvp2.js} +2 -3
- package/dist/send.runtime-iCVpfyB_.js +2 -0
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-DJTHAguz.js → setup-surface-95xI4u2U.js} +3 -3
- package/dist/{shared-D9WMYymo.js → shared-D5tOdKwQ.js} +3 -4
- package/dist/{slash-dispatch.runtime-lsyTm_q5.js → slash-dispatch.runtime-BKo3qtpZ.js} +1 -1
- package/node_modules/@slack/bolt/README.md +1 -1
- package/node_modules/@slack/bolt/dist/App.d.ts +3 -3
- package/node_modules/@slack/bolt/dist/App.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/App.js +8 -12
- package/node_modules/@slack/bolt/dist/App.js.map +1 -1
- package/node_modules/@slack/bolt/dist/Assistant.d.ts +1 -2
- package/node_modules/@slack/bolt/dist/Assistant.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/Assistant.js.map +1 -1
- package/node_modules/@slack/bolt/dist/context/index.d.ts +5 -5
- package/node_modules/@slack/bolt/dist/context/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/context/index.js +7 -7
- package/node_modules/@slack/bolt/dist/context/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/index.d.ts +19 -19
- package/node_modules/@slack/bolt/dist/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/index.js +16 -16
- package/node_modules/@slack/bolt/dist/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js +2 -0
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/ExpressReceiver.d.ts +2 -2
- package/node_modules/@slack/bolt/dist/receivers/ExpressReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/ExpressReceiver.js +8 -1
- package/node_modules/@slack/bolt/dist/receivers/ExpressReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.d.ts +2 -2
- package/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.js +4 -2
- package/node_modules/@slack/bolt/dist/receivers/HTTPReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/verify-request.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/verify-request.js +3 -0
- package/node_modules/@slack/bolt/dist/receivers/verify-request.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/verify-signing-secret.d.ts +2 -0
- package/node_modules/@slack/bolt/dist/receivers/verify-signing-secret.d.ts.map +1 -0
- package/node_modules/@slack/bolt/dist/receivers/verify-signing-secret.js +12 -0
- package/node_modules/@slack/bolt/dist/receivers/verify-signing-secret.js.map +1 -0
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.js +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/events/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/index.d.ts +3 -3
- package/node_modules/@slack/bolt/dist/types/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/index.js +3 -3
- package/node_modules/@slack/bolt/dist/types/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/options/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/package.json +4 -4
- package/node_modules/@types/retry/LICENSE +21 -21
- package/node_modules/@types/retry/README.md +4 -5
- package/node_modules/@types/retry/index.d.ts +13 -20
- package/node_modules/@types/retry/package.json +11 -9
- package/node_modules/es-object-atoms/CHANGELOG.md +21 -14
- package/node_modules/es-object-atoms/isObject.d.ts +1 -1
- package/node_modules/es-object-atoms/package.json +6 -7
- package/node_modules/es-object-atoms/tsconfig.json +1 -0
- package/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/hasown/package.json +4 -5
- package/node_modules/typebox/build/type/script/mapping.d.mts +5 -2
- package/node_modules/typebox/build/type/script/mapping.mjs +15 -8
- package/node_modules/typebox/build/type/script/parser.d.mts +3 -1
- package/node_modules/typebox/build/type/script/parser.mjs +2 -1
- package/node_modules/typebox/package.json +29 -29
- package/npm-shrinkwrap.json +22 -101
- package/openclaw.plugin.json +76 -0
- package/package.json +8 -7
- package/dist/action-runtime.runtime-C-vhDKzY.js +0 -2
- package/dist/channel-api-DdLCPu8a.js +0 -20
- package/dist/send.runtime-CKaMG3s-.js +0 -2
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# OpenClaw Slack
|
|
2
|
+
|
|
3
|
+
Official OpenClaw channel plugin for Slack channels, DMs, commands, and app events.
|
|
4
|
+
|
|
5
|
+
Install from OpenClaw:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
openclaw plugin add @openclaw/slack
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Configure the Slack app credentials and allowed workspaces/channels in OpenClaw. The plugin lets agents receive Slack events and reply through the configured Slack app.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as resolveSlackChannelId, r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
|
|
2
2
|
import "./targets-nUqxHGgg.js";
|
|
3
3
|
import { a as parseSlackBlocksInput } from "./thread-ts-NSVqWybn.js";
|
|
4
|
-
import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-
|
|
4
|
+
import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-BpGQDSTg.js";
|
|
5
5
|
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-BBDU-PQK.js";
|
|
6
6
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
@@ -30,7 +30,7 @@ function sameSlackChannelTarget(targetChannel, currentChannelId) {
|
|
|
30
30
|
let slackActionsRuntimePromise;
|
|
31
31
|
let slackAccountsRuntimePromise;
|
|
32
32
|
function loadSlackActionsRuntime() {
|
|
33
|
-
slackActionsRuntimePromise ??= import("./actions.runtime-
|
|
33
|
+
slackActionsRuntimePromise ??= import("./actions.runtime-BNL71SN3.js");
|
|
34
34
|
return slackActionsRuntimePromise;
|
|
35
35
|
}
|
|
36
36
|
function loadSlackAccountsRuntime() {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
2
|
import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-f6Xcv9Vi.js";
|
|
3
3
|
import { b as truncateSlackText, o as validateSlackBlocksArray, s as SLACK_TEXT_LIMIT } from "./thread-ts-NSVqWybn.js";
|
|
4
|
-
import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-
|
|
5
|
-
import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-
|
|
4
|
+
import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-qvqS9fQM.js";
|
|
5
|
+
import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-zvrcUvp2.js";
|
|
6
6
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
|
|
8
8
|
import { logVerbose, logVerbose as logVerbose$1 } from "openclaw/plugin-sdk/runtime-env";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-
|
|
1
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-BA_6yvPC.js";
|
|
2
2
|
export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, sendSlackMessage, unpinSlackMessage };
|
package/dist/api.js
CHANGED
|
@@ -3,16 +3,16 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
|
|
|
3
3
|
import { t as inspectSlackAccount } from "./account-inspect-CdGk6R7l.js";
|
|
4
4
|
import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-C7eeWg7M.js";
|
|
5
5
|
import "./targets-nUqxHGgg.js";
|
|
6
|
-
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-
|
|
6
|
+
import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-ClgouPGI.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";
|
|
10
|
-
import { a as getSlackWriteClient, c as resolveSlackWebClientOptions, i as createSlackWriteClient, l as resolveSlackWriteClientOptions, n as createSlackTokenCacheKey, o as SLACK_DEFAULT_RETRY_OPTIONS, r as createSlackWebClient, s as SLACK_WRITE_RETRY_OPTIONS, t as clearSlackWriteClientCacheForTest } from "./client-
|
|
11
|
-
import { t as slackSetupPlugin } from "./channel.setup-
|
|
12
|
-
import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-
|
|
13
|
-
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-
|
|
10
|
+
import { a as getSlackWriteClient, c as resolveSlackWebClientOptions, i as createSlackWriteClient, l as resolveSlackWriteClientOptions, n as createSlackTokenCacheKey, o as SLACK_DEFAULT_RETRY_OPTIONS, r as createSlackWebClient, s as SLACK_WRITE_RETRY_OPTIONS, t as clearSlackWriteClientCacheForTest } from "./client-qvqS9fQM.js";
|
|
11
|
+
import { t as slackSetupPlugin } from "./channel.setup-DvU_3G7a.js";
|
|
12
|
+
import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-zvrcUvp2.js";
|
|
13
|
+
import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-BA_6yvPC.js";
|
|
14
14
|
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-8UPAEyNg.js";
|
|
15
|
-
import { t as probeSlack } from "./probe-
|
|
15
|
+
import { t as probeSlack } from "./probe-DczaQTdi.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-DNfFBEzl.js";
|
|
18
18
|
export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, resetSlackChannelTypeCacheForTest as __resetSlackChannelTypeCacheForTest, resetSlackChannelTypeCacheForTest, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, clearSlackWriteClientCacheForTest, collectSlackSecurityAuditFindings, compileSlackInteractiveReplies, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, isSlackInteractiveRepliesEnabled, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, parseSlackOptionsLine, parseSlackTarget, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, recordSlackThreadParticipation, registerSlackHttpHandler, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAllowListMatch, resolveSlackAutoThreadId, resolveSlackChannelId, resolveSlackChannelType, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackReplyToMode, resolveSlackRuntimeGroupPolicy, resolveSlackUserAllowed, resolveSlackWebClientOptions, resolveSlackWriteClientOptions, sendSlackMessage, slackPlugin, slackSetupPlugin, unpinSlackMessage, validateSlackBlocksArray };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C as isSlackAnyNativeApprovalClientEnabled, T as shouldHandleSlackNativeApprovalRequest, b as truncateSlackText, j as normalizeSlackApproverId, r as resolveSlackReplyBlocks, w as resolveSlackApprovalKind } from "./thread-ts-NSVqWybn.js";
|
|
2
|
-
import { t as sendMessageSlack } from "./send-
|
|
2
|
+
import { t as sendMessageSlack } from "./send-zvrcUvp2.js";
|
|
3
3
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
4
|
import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
5
5
|
import { logError } from "openclaw/plugin-sdk/logging-core";
|
|
@@ -4,10 +4,9 @@ import "./targets-nUqxHGgg.js";
|
|
|
4
4
|
import { A as isSlackExecApprovalClientEnabled, C as isSlackAnyNativeApprovalClientEnabled, D as isSlackApprovalAuthorizedSender, E as getSlackApprovalApprovers, M as resolveSlackExecApprovalTarget, N as shouldSuppressLocalSlackExecApprovalPrompt, O as getSlackExecApprovalApprovers, T as shouldHandleSlackNativeApprovalRequest, _ as buildSlackInteractiveBlocks, c as resolveSlackGroupRequireMention, f as normalizeAllowListLower, k as isSlackExecApprovalAuthorizedSender, l as resolveSlackGroupToolPolicy, n as resolveSlackThreadTsValue, r as resolveSlackReplyBlocks, s as SLACK_TEXT_LIMIT, t as normalizeSlackThreadTsCandidate, v as buildSlackPresentationBlocks, w as resolveSlackApprovalKind, y as resolveSlackInteractiveBlockOffsets } from "./thread-ts-NSVqWybn.js";
|
|
5
5
|
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-B9M0zzlQ.js";
|
|
6
6
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
7
|
-
import {
|
|
8
|
-
import { r as createSlackWebClient } from "./client-DowBk5k0.js";
|
|
7
|
+
import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID } from "./client-qvqS9fQM.js";
|
|
9
8
|
import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
10
|
-
import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-
|
|
9
|
+
import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-D5tOdKwQ.js";
|
|
11
10
|
import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-POfI_bgP.js";
|
|
12
11
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
13
12
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -232,7 +231,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
232
231
|
approvalKind: resolveSlackApprovalKind(request),
|
|
233
232
|
request
|
|
234
233
|
}),
|
|
235
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
234
|
+
load: async () => (await import("./approval-handler.runtime-D0rHmHTC.js")).slackApprovalNativeRuntime
|
|
236
235
|
})
|
|
237
236
|
});
|
|
238
237
|
const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
|
|
@@ -431,7 +430,7 @@ async function handleSlackMessageAction(params) {
|
|
|
431
430
|
//#region extensions/slack/src/channel-actions.ts
|
|
432
431
|
let slackActionRuntimePromise$1;
|
|
433
432
|
async function loadSlackActionRuntime$1() {
|
|
434
|
-
slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-
|
|
433
|
+
slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-uN2B3l57.js");
|
|
435
434
|
return await slackActionRuntimePromise$1;
|
|
436
435
|
}
|
|
437
436
|
function resolveSlackActionContext(params) {
|
|
@@ -561,9 +560,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
|
|
|
561
560
|
const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
|
|
562
561
|
const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
|
|
563
562
|
const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
|
|
564
|
-
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-
|
|
565
|
-
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-
|
|
566
|
-
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-
|
|
563
|
+
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-95xI4u2U.js"));
|
|
564
|
+
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-Q1VjNpWb.js"));
|
|
565
|
+
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-BxKw6eWi.js"));
|
|
567
566
|
async function resolveSlackHandleAction() {
|
|
568
567
|
return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
|
|
569
568
|
}
|
|
@@ -584,26 +583,26 @@ let slackProbeModulePromise;
|
|
|
584
583
|
let slackMonitorModulePromise;
|
|
585
584
|
let slackDirectoryLiveModulePromise;
|
|
586
585
|
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-8UPAEyNg.js").then((n) => n.t));
|
|
587
|
-
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
588
|
-
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
586
|
+
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-DIxJRl0F.js").then((n) => n.n));
|
|
587
|
+
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-B3vczJHE.js").then((n) => n.n));
|
|
589
588
|
async function loadSlackActionRuntime() {
|
|
590
|
-
slackActionRuntimePromise ??= import("./action-runtime.runtime-
|
|
589
|
+
slackActionRuntimePromise ??= import("./action-runtime.runtime-uN2B3l57.js");
|
|
591
590
|
return await slackActionRuntimePromise;
|
|
592
591
|
}
|
|
593
592
|
async function loadSlackSendRuntime() {
|
|
594
|
-
slackSendRuntimePromise ??= import("./send.runtime-
|
|
593
|
+
slackSendRuntimePromise ??= import("./send.runtime-iCVpfyB_.js");
|
|
595
594
|
return await slackSendRuntimePromise;
|
|
596
595
|
}
|
|
597
596
|
async function loadSlackProbeModule() {
|
|
598
|
-
slackProbeModulePromise ??= import("./probe-
|
|
597
|
+
slackProbeModulePromise ??= import("./probe-DczaQTdi.js").then((n) => n.n);
|
|
599
598
|
return await slackProbeModulePromise;
|
|
600
599
|
}
|
|
601
600
|
async function loadSlackMonitorModule() {
|
|
602
|
-
slackMonitorModulePromise ??= import("./monitor-
|
|
601
|
+
slackMonitorModulePromise ??= import("./monitor-D5FVBchh.js").then((n) => n.t);
|
|
603
602
|
return await slackMonitorModulePromise;
|
|
604
603
|
}
|
|
605
604
|
async function loadSlackDirectoryLiveModule() {
|
|
606
|
-
slackDirectoryLiveModulePromise ??= import("./directory-live-
|
|
605
|
+
slackDirectoryLiveModulePromise ??= import("./directory-live-WZwhRYe2.js").then((n) => n.t);
|
|
607
606
|
return await slackDirectoryLiveModulePromise;
|
|
608
607
|
}
|
|
609
608
|
async function resolveSlackSendContext(params) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-BjAjs8_6.js";
|
|
2
2
|
export { SlackChannelConfigSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackPlugin } from "./channel-
|
|
1
|
+
import { t as slackPlugin } from "./channel-ClgouPGI.js";
|
|
2
2
|
export { slackPlugin };
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-f6Xcv9Vi.js";
|
|
2
|
-
import "./channel-api-DdLCPu8a.js";
|
|
3
2
|
import { a as describeSlackSetupAccount, i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, o as isSlackSetupAccountConfigured, r as slackSetupAdapter } from "./setup-core-POfI_bgP.js";
|
|
4
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
3
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-BjAjs8_6.js";
|
|
5
4
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
6
5
|
import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
|
|
7
6
|
//#region extensions/slack/src/channel.setup.ts
|
|
8
|
-
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-
|
|
7
|
+
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-95xI4u2U.js")).slackSetupWizard }));
|
|
9
8
|
const slackSetupConfigAdapter = createScopedChannelConfigAdapter({
|
|
10
9
|
sectionKey: SLACK_CHANNEL,
|
|
11
10
|
listAccountIds: listSlackAccountIds,
|
|
@@ -1,6 +1,25 @@
|
|
|
1
|
+
import "./target-parsing-C7eeWg7M.js";
|
|
2
|
+
import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
|
|
3
|
+
import { PAIRING_APPROVED_MESSAGE, projectCredentialSnapshotFields, resolveConfiguredFromRequiredCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
|
|
1
4
|
import { createHash } from "node:crypto";
|
|
2
5
|
import { WebClient } from "@slack/web-api";
|
|
3
6
|
import { createNodeProxyAgent } from "openclaw/plugin-sdk/fetch-runtime";
|
|
7
|
+
//#region extensions/slack/src/channel-api.ts
|
|
8
|
+
const SLACK_CHANNEL_META = {
|
|
9
|
+
id: "slack",
|
|
10
|
+
label: "Slack",
|
|
11
|
+
selectionLabel: "Slack",
|
|
12
|
+
docsPath: "/channels/slack",
|
|
13
|
+
docsLabel: "slack",
|
|
14
|
+
blurb: "supports bot + app tokens, channels, threads, and interactive replies.",
|
|
15
|
+
systemImage: "number.square",
|
|
16
|
+
markdownCapable: true
|
|
17
|
+
};
|
|
18
|
+
function getChatChannelMeta(id) {
|
|
19
|
+
if (id !== SLACK_CHANNEL_META.id) throw new Error(`Unsupported Slack channel meta lookup: ${id}`);
|
|
20
|
+
return SLACK_CHANNEL_META;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
4
23
|
//#region extensions/slack/src/client-options.ts
|
|
5
24
|
const SLACK_DEFAULT_RETRY_OPTIONS = {
|
|
6
25
|
retries: 2,
|
|
@@ -84,4 +103,4 @@ function clearSlackWriteClientCacheForTest() {
|
|
|
84
103
|
slackWriteClientCache.clear();
|
|
85
104
|
}
|
|
86
105
|
//#endregion
|
|
87
|
-
export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t };
|
|
106
|
+
export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, PAIRING_APPROVED_MESSAGE as d, getChatChannelMeta as f, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, resolveConfiguredFromRequiredCredentialStatuses as m, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, projectCredentialSnapshotFields as p, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t, DEFAULT_ACCOUNT_ID$1 as u };
|
|
@@ -18,6 +18,22 @@ const SlackChannelConfigSchema = buildChannelConfigSchema(SlackConfigSchema, { u
|
|
|
18
18
|
label: "Slack Config Writes",
|
|
19
19
|
help: "Allow Slack to write config in response to channel events/commands (default: true)."
|
|
20
20
|
},
|
|
21
|
+
mentionPatterns: {
|
|
22
|
+
label: "Slack Mention Pattern Policy",
|
|
23
|
+
help: "Scopes configured groupChat mentionPatterns to selected Slack channel IDs. Native Slack @mentions still trigger even when regex patterns are denied."
|
|
24
|
+
},
|
|
25
|
+
"mentionPatterns.mode": {
|
|
26
|
+
label: "Slack Mention Pattern Mode",
|
|
27
|
+
help: "\"allow\" enables configured regex mention patterns unless denyIn matches; \"deny\" disables them unless allowIn matches."
|
|
28
|
+
},
|
|
29
|
+
"mentionPatterns.allowIn": {
|
|
30
|
+
label: "Slack Mention Pattern Allowlist",
|
|
31
|
+
help: "Slack channel IDs where configured regex mention patterns are enabled when mode is deny."
|
|
32
|
+
},
|
|
33
|
+
"mentionPatterns.denyIn": {
|
|
34
|
+
label: "Slack Mention Pattern Denylist",
|
|
35
|
+
help: "Slack channel IDs where configured regex mention patterns are disabled. Native @mentions still trigger."
|
|
36
|
+
},
|
|
21
37
|
"commands.native": {
|
|
22
38
|
label: "Slack Native Commands",
|
|
23
39
|
help: "Override native commands for Slack (bool or \"auto\")."
|
package/dist/contract-api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
1
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DpGLNqS3.js";
|
|
2
2
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-g_PPWuoD.js";
|
|
3
3
|
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-8UPAEyNg.js";
|
|
4
4
|
import { t as collectSlackSecurityAuditFindings } from "./security-audit-CikQhBUY.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
2
|
import { a as resolveSlackAccount } from "./accounts-f6Xcv9Vi.js";
|
|
3
|
-
import { r as createSlackWebClient } from "./client-
|
|
3
|
+
import { r as createSlackWebClient } from "./client-qvqS9fQM.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/directory-live.ts
|
|
6
6
|
var directory_live_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -7,14 +7,14 @@ function hasLegacySlackStreamingAliases(value) {
|
|
|
7
7
|
function hasLegacySlackChannelAllowAlias(value) {
|
|
8
8
|
const channels = asObjectRecord(asObjectRecord(value)?.channels);
|
|
9
9
|
if (!channels) return false;
|
|
10
|
-
return Object.values(channels).some((channel) => Object.
|
|
10
|
+
return Object.values(channels).some((channel) => Object.hasOwn(asObjectRecord(channel) ?? {}, "allow"));
|
|
11
11
|
}
|
|
12
12
|
function normalizeSlackChannelAllowAliases(params) {
|
|
13
13
|
let changed = false;
|
|
14
14
|
const nextChannels = { ...params.channels };
|
|
15
15
|
for (const [channelId, channelValue] of Object.entries(params.channels)) {
|
|
16
16
|
const channel = asObjectRecord(channelValue);
|
|
17
|
-
if (!channel || !Object.
|
|
17
|
+
if (!channel || !Object.hasOwn(channel, "allow")) continue;
|
|
18
18
|
const nextChannel = { ...channel };
|
|
19
19
|
if (nextChannel.enabled === void 0) {
|
|
20
20
|
nextChannel.enabled = channel.allow;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-
|
|
1
|
+
import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-DpGLNqS3.js";
|
|
2
2
|
export { legacyConfigRules, normalizeCompatibilityConfig };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-
|
|
2
|
+
import { t as monitorSlackProvider, y as buildSlackSlashCommandMatcher } from "./provider-DNfFBEzl.js";
|
|
3
3
|
import { t as isSlackChannelAllowedByPolicy } from "./policy-BBDU-PQK.js";
|
|
4
|
-
import { o as resolveSlackThreadTs } from "./replies-
|
|
4
|
+
import { o as resolveSlackThreadTs } from "./replies-BmFpkBXm.js";
|
|
5
5
|
//#region extensions/slack/src/monitor.ts
|
|
6
6
|
var monitor_exports = /* @__PURE__ */ __exportAll({
|
|
7
7
|
buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
|
|
@@ -9,7 +9,7 @@ import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextM
|
|
|
9
9
|
const SLACK_MAX_BLOCKS = 50;
|
|
10
10
|
let slackSendRuntimePromise;
|
|
11
11
|
async function loadSlackSendRuntime() {
|
|
12
|
-
slackSendRuntimePromise ??= import("./send.runtime-
|
|
12
|
+
slackSendRuntimePromise ??= import("./send.runtime-iCVpfyB_.js");
|
|
13
13
|
return await slackSendRuntimePromise;
|
|
14
14
|
}
|
|
15
15
|
function resolveRenderedInteractiveBlocks(interactive, previousBlocks) {
|
|
@@ -4,12 +4,12 @@ import "./targets-nUqxHGgg.js";
|
|
|
4
4
|
import { b as truncateSlackText, f as normalizeAllowListLower, h as resolveSlackAllowListMatch, p as normalizeSlackAllowOwnerEntry, s as SLACK_TEXT_LIMIT } from "./thread-ts-NSVqWybn.js";
|
|
5
5
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
6
6
|
import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-DjlgH-Be.js";
|
|
7
|
-
import { a as recordSlackThreadParticipation, i as hasSlackThreadParticipationWithPersistence, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-
|
|
8
|
-
import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-
|
|
7
|
+
import { a as recordSlackThreadParticipation, i as hasSlackThreadParticipationWithPersistence, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-zvrcUvp2.js";
|
|
8
|
+
import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-BA_6yvPC.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-DNfFBEzl.js";
|
|
11
11
|
import { n as resolveSlackChannelConfig } from "./policy-BBDU-PQK.js";
|
|
12
|
-
import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-
|
|
12
|
+
import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-BmFpkBXm.js";
|
|
13
13
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
14
14
|
import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
|
|
15
15
|
import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftGate, createDraftStreamLoop, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
|
|
@@ -562,7 +562,6 @@ async function finalizeSlackPreviewEdit(params) {
|
|
|
562
562
|
client: params.client,
|
|
563
563
|
...params.blocks?.length ? { blocks: params.blocks } : {}
|
|
564
564
|
});
|
|
565
|
-
return;
|
|
566
565
|
} catch (err) {
|
|
567
566
|
try {
|
|
568
567
|
if (await didSlackPreviewEditApplyAfterError({
|
|
@@ -1039,10 +1038,11 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1039
1038
|
const deliverNormally = async (params) => {
|
|
1040
1039
|
if (params.payload.isReasoning === true) return;
|
|
1041
1040
|
const replyThreadTs = resolveDeliveryThreadTs(params);
|
|
1041
|
+
const deliveryReplyThreadTs = replyDeliveryMode === "off" && !forcedReplyThreadTs && !isThreadReply ? void 0 : replyThreadTs;
|
|
1042
1042
|
if (deliveryTracker.hasDelivered({
|
|
1043
1043
|
kind: params.kind,
|
|
1044
1044
|
payload: params.payload,
|
|
1045
|
-
threadTs:
|
|
1045
|
+
threadTs: deliveryReplyThreadTs
|
|
1046
1046
|
})) {
|
|
1047
1047
|
logVerbose("slack: suppressed duplicate normal delivery within the same turn");
|
|
1048
1048
|
return;
|
|
@@ -1055,7 +1055,7 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1055
1055
|
accountId: account.accountId,
|
|
1056
1056
|
runtime,
|
|
1057
1057
|
textLimit: ctx.textLimit,
|
|
1058
|
-
replyThreadTs,
|
|
1058
|
+
replyThreadTs: deliveryReplyThreadTs,
|
|
1059
1059
|
replyToMode: replyDeliveryMode,
|
|
1060
1060
|
...slackIdentity ? { identity: slackIdentity } : {},
|
|
1061
1061
|
...slackMessageMetadata ? { metadata: slackMessageMetadata } : {}
|
|
@@ -1065,14 +1065,14 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1065
1065
|
const deliveredThreadTs = resolveDeliveredSlackReplyThreadTs({
|
|
1066
1066
|
replyToMode: replyDeliveryMode,
|
|
1067
1067
|
payloadReplyToId: params.payload.replyToId,
|
|
1068
|
-
replyThreadTs
|
|
1068
|
+
replyThreadTs: deliveryReplyThreadTs
|
|
1069
1069
|
});
|
|
1070
1070
|
rememberDeliveredThreadTs(params.kind, deliveredThreadTs);
|
|
1071
1071
|
replyPlan.markSent();
|
|
1072
1072
|
deliveryTracker.markDelivered({
|
|
1073
1073
|
kind: params.kind,
|
|
1074
1074
|
payload: params.payload,
|
|
1075
|
-
threadTs:
|
|
1075
|
+
threadTs: deliveryReplyThreadTs
|
|
1076
1076
|
});
|
|
1077
1077
|
};
|
|
1078
1078
|
const deliverBufferedStreamFallback = async (params) => {
|
|
@@ -1321,7 +1321,7 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1321
1321
|
return;
|
|
1322
1322
|
}
|
|
1323
1323
|
}
|
|
1324
|
-
|
|
1324
|
+
await deliverWithFinalizableLivePreviewAdapter({
|
|
1325
1325
|
kind: info.kind,
|
|
1326
1326
|
payload,
|
|
1327
1327
|
adapter: defineFinalizableLivePreviewAdapter({
|
|
@@ -1398,7 +1398,7 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1398
1398
|
kind: info.kind
|
|
1399
1399
|
});
|
|
1400
1400
|
}
|
|
1401
|
-
})
|
|
1401
|
+
});
|
|
1402
1402
|
};
|
|
1403
1403
|
const onSlackDeliveryError = (err, info) => {
|
|
1404
1404
|
runtime.error?.(danger(`slack ${info.kind} reply failed: ${formatSlackError(err)}`));
|
|
@@ -1444,7 +1444,7 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1444
1444
|
const progressDraftMaxLineChars = resolveChannelProgressDraftMaxLineChars(account.config);
|
|
1445
1445
|
const renderProgressDraft = () => {
|
|
1446
1446
|
if (!draftStream || streamMode !== "status_final") return;
|
|
1447
|
-
const progressLines =
|
|
1447
|
+
const progressLines = previewToolProgressLines.length === 0 ? lastNonEmptyPreviewToolProgressLines : previewToolProgressLines;
|
|
1448
1448
|
const previewText = formatChannelProgressDraftText({
|
|
1449
1449
|
entry: account.config,
|
|
1450
1450
|
lines: progressLines,
|
|
@@ -1639,7 +1639,7 @@ async function dispatchPreparedSlackMessage(prepared) {
|
|
|
1639
1639
|
});
|
|
1640
1640
|
};
|
|
1641
1641
|
const onDraftBoundary = !shouldUseDraftStream ? void 0 : async () => {
|
|
1642
|
-
if (hasStreamedMessage) {
|
|
1642
|
+
if (hasStreamedMessage && streamMode !== "status_final") {
|
|
1643
1643
|
draftStream?.forceNewMessage();
|
|
1644
1644
|
hasStreamedMessage = false;
|
|
1645
1645
|
appendRenderedText = "";
|
|
@@ -1855,7 +1855,7 @@ const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
|
|
|
1855
1855
|
const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
|
|
1856
1856
|
let slackMediaModulePromise$1;
|
|
1857
1857
|
function loadSlackMediaModule$1() {
|
|
1858
|
-
slackMediaModulePromise$1 ??= import("./actions-
|
|
1858
|
+
slackMediaModulePromise$1 ??= import("./actions-BA_6yvPC.js").then((n) => n.h);
|
|
1859
1859
|
return slackMediaModulePromise$1;
|
|
1860
1860
|
}
|
|
1861
1861
|
function collectUniqueSlackMentionIds$1(texts) {
|
|
@@ -2369,7 +2369,7 @@ function formatSlackBotStarterThreadLabel(params) {
|
|
|
2369
2369
|
//#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
|
|
2370
2370
|
let slackMediaModulePromise;
|
|
2371
2371
|
function loadSlackMediaModule() {
|
|
2372
|
-
slackMediaModulePromise ??= import("./actions-
|
|
2372
|
+
slackMediaModulePromise ??= import("./actions-BA_6yvPC.js").then((n) => n.h);
|
|
2373
2373
|
return slackMediaModulePromise;
|
|
2374
2374
|
}
|
|
2375
2375
|
const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
|
|
@@ -2417,9 +2417,12 @@ async function resolveSlackThreadContextData(params) {
|
|
|
2417
2417
|
});
|
|
2418
2418
|
let threadStarterBody;
|
|
2419
2419
|
let threadHistoryBody;
|
|
2420
|
-
let threadSessionPreviousTimestamp;
|
|
2421
2420
|
let threadLabel;
|
|
2422
2421
|
let threadStarterMedia = null;
|
|
2422
|
+
const threadSessionPreviousTimestamp = params.isThreadReply && params.threadTs ? readSessionUpdatedAt({
|
|
2423
|
+
storePath: params.storePath,
|
|
2424
|
+
sessionKey: params.sessionKey
|
|
2425
|
+
}) : void 0;
|
|
2423
2426
|
if (!params.isThreadReply || !params.threadTs) return {
|
|
2424
2427
|
threadStarterBody,
|
|
2425
2428
|
threadHistoryBody,
|
|
@@ -2460,10 +2463,6 @@ async function resolveSlackThreadContextData(params) {
|
|
|
2460
2463
|
if (threadStarterMedia) logVerbose(`slack: hydrated thread starter file ${threadStarterMedia.map((item) => item.placeholder).join(", ")} from root message`);
|
|
2461
2464
|
}
|
|
2462
2465
|
} else threadLabel = `Slack thread ${params.roomLabel}`;
|
|
2463
|
-
threadSessionPreviousTimestamp = readSessionUpdatedAt({
|
|
2464
|
-
storePath: params.storePath,
|
|
2465
|
-
sessionKey: params.sessionKey
|
|
2466
|
-
});
|
|
2467
2466
|
const includeBotStarterAsRootContext = shouldIncludeBotThreadStarterContext({
|
|
2468
2467
|
starterIsCurrentBot,
|
|
2469
2468
|
isNewThreadSession: !threadSessionPreviousTimestamp,
|
|
@@ -2713,8 +2712,13 @@ async function restoreSlackAssistantThreadContextFromMetadata(params) {
|
|
|
2713
2712
|
logVerbose(`slack assistant context restore failed channel=${params.message.channel} ts=${threadTs}: ${formatErrorMessage(err)}`);
|
|
2714
2713
|
}
|
|
2715
2714
|
}
|
|
2716
|
-
function resolveCachedMentionRegexes(ctx, agentId) {
|
|
2717
|
-
const key =
|
|
2715
|
+
function resolveCachedMentionRegexes(ctx, agentId, options) {
|
|
2716
|
+
const key = [
|
|
2717
|
+
normalizeOptionalString(agentId) ?? "__default__",
|
|
2718
|
+
normalizeOptionalString(options?.provider),
|
|
2719
|
+
normalizeOptionalString(options?.conversationId ?? void 0),
|
|
2720
|
+
options?.providerPolicy ? JSON.stringify(options.providerPolicy) : ""
|
|
2721
|
+
].join("");
|
|
2718
2722
|
let byAgent = mentionRegexCache.get(ctx);
|
|
2719
2723
|
if (!byAgent) {
|
|
2720
2724
|
byAgent = /* @__PURE__ */ new Map();
|
|
@@ -2722,7 +2726,7 @@ function resolveCachedMentionRegexes(ctx, agentId) {
|
|
|
2722
2726
|
}
|
|
2723
2727
|
const cached = byAgent.get(key);
|
|
2724
2728
|
if (cached) return cached;
|
|
2725
|
-
const built = buildMentionRegexes(ctx.cfg, agentId);
|
|
2729
|
+
const built = buildMentionRegexes(ctx.cfg, agentId, options);
|
|
2726
2730
|
byAgent.set(key, built);
|
|
2727
2731
|
return built;
|
|
2728
2732
|
}
|
|
@@ -2992,7 +2996,12 @@ async function prepareSlackMessage(params) {
|
|
|
2992
2996
|
canResolveExplicit: Boolean(ctx.botUserId)
|
|
2993
2997
|
}
|
|
2994
2998
|
}));
|
|
2995
|
-
|
|
2999
|
+
const buildPolicyMentionRegexes = (agentId) => resolveCachedMentionRegexes(ctx, agentId, {
|
|
3000
|
+
provider: "slack",
|
|
3001
|
+
conversationId: message.channel,
|
|
3002
|
+
providerPolicy: account.config.mentionPatterns
|
|
3003
|
+
});
|
|
3004
|
+
let mentionRegexes = buildPolicyMentionRegexes(routing.route.agentId);
|
|
2996
3005
|
let wasMentioned = resolveWasMentioned(mentionRegexes);
|
|
2997
3006
|
const hasBoundSession = Boolean(routing.runtimeBoundSessionKey || routing.configuredBindingSessionKey);
|
|
2998
3007
|
if (!seedTopLevelRoomThreadBySource && wasMentioned && isRoom && !routing.isThreadReply && !hasBoundSession) {
|
|
@@ -3007,10 +3016,12 @@ async function prepareSlackMessage(params) {
|
|
|
3007
3016
|
seedTopLevelRoomThread: true,
|
|
3008
3017
|
assistantThreadTs: assistantThreadContext?.threadTs
|
|
3009
3018
|
});
|
|
3010
|
-
mentionRegexes =
|
|
3019
|
+
mentionRegexes = buildPolicyMentionRegexes(routing.route.agentId);
|
|
3011
3020
|
wasMentioned = resolveWasMentioned(mentionRegexes);
|
|
3012
3021
|
}
|
|
3013
3022
|
const { route, runtimeBinding, configuredBinding, configuredBindingSessionKey, replyToMode, threadContext, threadTs, isThreadReply, threadKeys, sessionKey, historyKey } = routing;
|
|
3023
|
+
const isAssistantThreadMessage = Boolean(isDirectMessage && messageAssistantThreadContext);
|
|
3024
|
+
const forcedAssistantReplyThreadTs = Boolean(assistantThreadContext?.threadTs && (isThreadReply || isAssistantThreadMessage || replyToMode !== "off")) ? assistantThreadContext?.threadTs : void 0;
|
|
3014
3025
|
if (runtimeBinding && shouldLogVerbose()) logVerbose(`slack: routed via bound conversation ${runtimeBinding.conversation.conversationId} -> ${runtimeBinding.targetSessionKey}`);
|
|
3015
3026
|
if (configuredBinding) {
|
|
3016
3027
|
const ensured = await ensureConfiguredBindingRouteReady({
|
|
@@ -3496,7 +3507,7 @@ async function prepareSlackMessage(params) {
|
|
|
3496
3507
|
} : void 0
|
|
3497
3508
|
},
|
|
3498
3509
|
replyToMode,
|
|
3499
|
-
...
|
|
3510
|
+
...forcedAssistantReplyThreadTs ? { forcedReplyThreadTs: forcedAssistantReplyThreadTs } : {},
|
|
3500
3511
|
...assistantThreadContext ? { slackMessageMetadata: buildSlackAssistantThreadMetadata(assistantThreadContext) } : {},
|
|
3501
3512
|
requireMention: shouldRequireMention,
|
|
3502
3513
|
isDirectMessage,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-qvqS9fQM.js";
|
|
3
3
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
4
4
|
import { withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
5
5
|
//#region extensions/slack/src/probe.ts
|
|
@@ -2,11 +2,11 @@ import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from ".
|
|
|
2
2
|
import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-f6Xcv9Vi.js";
|
|
3
3
|
import { C as isSlackAnyNativeApprovalClientEnabled, D as isSlackApprovalAuthorizedSender, b as truncateSlackText, d as normalizeAllowList, f as normalizeAllowListLower, h as resolveSlackAllowListMatch, k as isSlackExecApprovalAuthorizedSender, m as normalizeSlackSlug, p as normalizeSlackAllowOwnerEntry, s as SLACK_TEXT_LIMIT, u as allowListMatches } from "./thread-ts-NSVqWybn.js";
|
|
4
4
|
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DrBq4Mld.js";
|
|
5
|
-
import { c as resolveSlackWebClientOptions } from "./client-
|
|
5
|
+
import { c as resolveSlackWebClientOptions } from "./client-qvqS9fQM.js";
|
|
6
6
|
import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
|
|
7
7
|
import { t as formatSlackError } from "./errors-CZtmv-h0.js";
|
|
8
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
9
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
8
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DIxJRl0F.js";
|
|
9
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-B3vczJHE.js";
|
|
10
10
|
import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-BBDU-PQK.js";
|
|
11
11
|
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
12
12
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries, normalizeStringEntriesLower, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -2699,7 +2699,7 @@ function createSlackThreadTsResolver(params) {
|
|
|
2699
2699
|
//#region extensions/slack/src/monitor/message-handler.ts
|
|
2700
2700
|
let slackMessagePipelinePromise;
|
|
2701
2701
|
function loadSlackMessagePipeline() {
|
|
2702
|
-
slackMessagePipelinePromise ??= import("./pipeline.runtime-
|
|
2702
|
+
slackMessagePipelinePromise ??= import("./pipeline.runtime-Bo6reKXg.js");
|
|
2703
2703
|
return slackMessagePipelinePromise;
|
|
2704
2704
|
}
|
|
2705
2705
|
const APP_MENTION_RETRY_TTL_MS = 6e4;
|
|
@@ -3331,7 +3331,7 @@ function loadSlashCommandsRuntime() {
|
|
|
3331
3331
|
return slashCommandsRuntimePromise;
|
|
3332
3332
|
}
|
|
3333
3333
|
function loadSlashDispatchRuntime() {
|
|
3334
|
-
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-
|
|
3334
|
+
slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-BKo3qtpZ.js");
|
|
3335
3335
|
return slashDispatchRuntimePromise;
|
|
3336
3336
|
}
|
|
3337
3337
|
function loadSlackPluginCommandsRuntime() {
|
|
@@ -4071,7 +4071,7 @@ function parseApiAppIdFromAppToken(raw) {
|
|
|
4071
4071
|
async function monitorSlackProvider(opts = {}) {
|
|
4072
4072
|
const cfg = opts.config ?? getRuntimeConfig$1();
|
|
4073
4073
|
const runtime = opts.runtime ?? createNonExitingRuntime();
|
|
4074
|
-
|
|
4074
|
+
const account = resolveSlackAccount({
|
|
4075
4075
|
cfg,
|
|
4076
4076
|
accountId: opts.accountId
|
|
4077
4077
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { r as resolveSlackReplyBlocks, s as SLACK_TEXT_LIMIT } from "./thread-ts-NSVqWybn.js";
|
|
2
|
-
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-
|
|
2
|
+
import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-zvrcUvp2.js";
|
|
3
3
|
import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
|
|
4
4
|
import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
|
|
5
5
|
import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-qvqS9fQM.js";
|
|
3
3
|
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-channels.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import { r as createSlackWebClient } from "./client-
|
|
2
|
+
import { r as createSlackWebClient } from "./client-qvqS9fQM.js";
|
|
3
3
|
import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
|
|
4
4
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
//#region extensions/slack/src/resolve-users.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./target-parsing-C7eeWg7M.js";
|
|
2
|
-
import "./
|
|
2
|
+
import "./client-qvqS9fQM.js";
|
|
3
3
|
import "./config-api-DnT9ohtE.js";
|
|
4
4
|
import "openclaw/plugin-sdk/account-id";
|
|
5
5
|
import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
|