@openclaw/slack 2026.8.2 → 2026.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{action-runtime-B0kRJ69h.js → action-runtime-DND4Pyp2.js} +4 -4
- package/dist/action-runtime.runtime-CEhbmS-Z.js +2 -0
- package/dist/{actions-BOxiu2Vy.js → actions-fh66A6lc.js} +2 -2
- package/dist/api.js +8 -8
- package/dist/{approval-handler.runtime-l5_2JLqi.js → approval-handler.runtime-D7d8sKM0.js} +13 -8
- package/dist/{channel-BguxhhNG.js → channel-4m8IAdMD.js} +28 -23
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-ChkODKBW.js → channel-type-3-SqEMVc.js} +1 -1
- package/dist/{channel.setup-BJohRJha.js → channel.setup-t_ghLGb_.js} +2 -2
- package/dist/{config-schema-B9GwoRlE.js → config-schema-bP3eV2ra.js} +1 -1
- package/dist/{cursor-pages-eX7p8Wwt.js → cursor-pages-ByFwo-Py.js} +7 -1
- package/dist/{directory-live-BOILcXPo.js → directory-live-q32AW7N1.js} +2 -7
- package/dist/{group-policy-BYH74y50.js → group-policy-BKjMqT-8.js} +46 -87
- package/dist/{message-tool-api-BsZbsulu.js → message-tool-api-uNEfQYGY.js} +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-B72wWXWg.js → monitor-Chwu_SiZ.js} +3 -3
- package/dist/{outbound-adapter-CPgYQ-BM.js → outbound-adapter-BB8wAjm5.js} +3 -3
- package/dist/{pipeline.runtime-CcdujV99.js → pipeline.runtime-BklS_NEj.js} +61 -95
- package/dist/{policy-CUpBeOt9.js → policy-D7PKkiet.js} +1 -1
- package/dist/{provider-DW9YC_no.js → provider-Do50wMWn.js} +52 -35
- package/dist/{relay-source-BLMdBrAw.js → relay-source-DWuduiJ2.js} +1 -1
- package/dist/{replies-DLjQ8RYU.js → replies-Dc6WVh_Q.js} +9 -10
- package/dist/{resolve-channels-Bv6IiGZ4.js → resolve-channels-CU7Bg5Ka.js} +2 -7
- package/dist/{resolve-users-BXw2pA7y.js → resolve-users-DrhttvRQ.js} +1 -1
- package/dist/runtime-api.js +9 -9
- package/dist/{send-GUz4_v2E.js → send-Djswy6lf.js} +2 -2
- package/dist/{send.runtime-rScD-UJi.js → send.runtime-__WVTWLQ.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-Cc3P-z35.js → setup-surface-DO0e-MMS.js} +4 -4
- package/dist/{shared-CQGVZ_8a.js → shared-DEQBEKBL.js} +1 -1
- package/dist/{slash-dispatch.runtime-C2015r6s.js → slash-dispatch.runtime-C3B4h5ZM.js} +1 -1
- package/dist/{thread-ts-DUGhaYKq.js → thread-ts-CukseRVL.js} +5 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -4
- package/dist/action-runtime.runtime-IuA14rev.js +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as parseSlackTarget, n as formatSlackTarget, o as resolveSlackChannelId } from "./target-parsing-PbxGDbr9.js";
|
|
2
2
|
import { t as slackContextTargetsMatch } from "./targets-7FexXJ62.js";
|
|
3
|
-
import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, t as buildSlackChannelIdCandidates, yt as getSlackInstallationKind } from "./group-policy-
|
|
4
|
-
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
3
|
+
import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, t as buildSlackChannelIdCandidates, yt as getSlackInstallationKind } from "./group-policy-BKjMqT-8.js";
|
|
4
|
+
import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-D7PKkiet.js";
|
|
5
5
|
import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.js";
|
|
6
6
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
7
7
|
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
@@ -27,9 +27,9 @@ const pinActions = /* @__PURE__ */ new Set([
|
|
|
27
27
|
"listPins"
|
|
28
28
|
]);
|
|
29
29
|
const SLACK_REACTION_RESULT_LIMIT = 100;
|
|
30
|
-
const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-
|
|
30
|
+
const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-fh66A6lc.js").then((n) => n.t));
|
|
31
31
|
const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-DRuEK6mL.js"));
|
|
32
|
-
const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-
|
|
32
|
+
const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-3-SqEMVc.js").then((n) => n.t));
|
|
33
33
|
function createLazySlackAction(key) {
|
|
34
34
|
return (async (...args) => {
|
|
35
35
|
const action = (await loadSlackActionsRuntime())[key];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
2
|
import { a as resolveSlackAccount, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId } from "./accounts-Dm_H77gH.js";
|
|
3
3
|
import { n as formatSlackTarget } from "./target-parsing-PbxGDbr9.js";
|
|
4
|
-
import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, I as countSlackTextUtf8Bytes, Q as normalizeSlackOutboundText, R as truncateSlackTextByUtf8Bytes, T as buildSlackBlocksFallbackText, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, et as escapeSlackMrkdwn, g as appendSlackNativeDataFallbackText, k as SLACK_EDIT_TEXT_MAX_BYTES, st as validateSlackBlocksArray, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError } from "./group-policy-
|
|
4
|
+
import { At as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, I as countSlackTextUtf8Bytes, Q as normalizeSlackOutboundText, R as truncateSlackTextByUtf8Bytes, T as buildSlackBlocksFallbackText, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, et as escapeSlackMrkdwn, g as appendSlackNativeDataFallbackText, k as SLACK_EDIT_TEXT_MAX_BYTES, st as validateSlackBlocksArray, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError } from "./group-policy-BKjMqT-8.js";
|
|
5
5
|
import { m as getSlackWriteClient, s as createSlackLookupClient } from "./probe-gj5yQgN2.js";
|
|
6
|
-
import { m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-
|
|
6
|
+
import { m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-Djswy6lf.js";
|
|
7
7
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
8
8
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
9
9
|
import { createSubsystemLogger, logVerbose, logVerbose as logVerbose$1 } from "openclaw/plugin-sdk/runtime-env";
|
package/dist/api.js
CHANGED
|
@@ -4,15 +4,15 @@ import { r as resolveSlackReplyToMode } from "./conversation-binding-route-Vee8D
|
|
|
4
4
|
import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
|
|
5
5
|
import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId } from "./target-parsing-PbxGDbr9.js";
|
|
6
6
|
import "./targets-7FexXJ62.js";
|
|
7
|
-
import { N as buildSlackInteractiveBlocks, P as buildSlackPresentationBlocks, at as SLACK_MAX_BLOCKS, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, r as resolveSlackGroupRequireMention, st as validateSlackBlocksArray } from "./group-policy-
|
|
7
|
+
import { N as buildSlackInteractiveBlocks, P as buildSlackPresentationBlocks, at as SLACK_MAX_BLOCKS, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, r as resolveSlackGroupRequireMention, st as validateSlackBlocksArray } from "./group-policy-BKjMqT-8.js";
|
|
8
8
|
import { C as normalizeAllowListLower, E as resolveSlackAllowListMatch, O as resolveSlackUserAllowed, S as normalizeAllowList, T as normalizeSlackSlug, b as resolveSlackWriteClientOptions, d as createSlackWebClient, f as createSlackWriteClient, g as SLACK_WRITE_RETRY_OPTIONS, h as SLACK_DEFAULT_RETRY_OPTIONS, m as getSlackWriteClient, t as probeSlack, u as createSlackTokenCacheKey, w as normalizeSlackAllowOwnerEntry, x as allowListMatches, y as resolveSlackWebClientOptions } from "./probe-gj5yQgN2.js";
|
|
9
|
-
import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./channel-
|
|
10
|
-
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-
|
|
11
|
-
import { n as resolveSlackChannelType } from "./channel-type-
|
|
12
|
-
import { t as slackSetupPlugin } from "./channel.setup-
|
|
13
|
-
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./actions-
|
|
14
|
-
import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./send-
|
|
9
|
+
import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./channel-4m8IAdMD.js";
|
|
10
|
+
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-uNEfQYGY.js";
|
|
11
|
+
import { n as resolveSlackChannelType } from "./channel-type-3-SqEMVc.js";
|
|
12
|
+
import { t as slackSetupPlugin } from "./channel.setup-t_ghLGb_.js";
|
|
13
|
+
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./actions-fh66A6lc.js";
|
|
14
|
+
import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./send-Djswy6lf.js";
|
|
15
15
|
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-Bmw4ykSy.js";
|
|
16
16
|
import { t as collectSlackSecurityAuditFindings } from "./security-audit-B_yKr7MW.js";
|
|
17
|
-
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-
|
|
17
|
+
import { n as resolveSlackRuntimeGroupPolicy } from "./provider-Do50wMWn.js";
|
|
18
18
|
export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, collectSlackSecurityAuditFindings, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, 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,6 +1,6 @@
|
|
|
1
1
|
import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.js";
|
|
2
|
-
import { Dt as normalizeSlackApproverId, R as truncateSlackTextByUtf8Bytes, f as resolveSlackReplyBlocks, gt as shouldHandleSlackNativeApprovalRequest, k as SLACK_EDIT_TEXT_MAX_BYTES, lt as isSlackAnyNativeApprovalClientEnabled, tt as SLACK_APPROVAL_HEADER_BLOCK_ID } from "./group-policy-
|
|
3
|
-
import { r as sendMessageSlack } from "./send-
|
|
2
|
+
import { Dt as normalizeSlackApproverId, R as truncateSlackTextByUtf8Bytes, f as resolveSlackReplyBlocks, gt as shouldHandleSlackNativeApprovalRequest, k as SLACK_EDIT_TEXT_MAX_BYTES, lt as isSlackAnyNativeApprovalClientEnabled, tt as SLACK_APPROVAL_HEADER_BLOCK_ID } from "./group-policy-BKjMqT-8.js";
|
|
3
|
+
import { r as sendMessageSlack } from "./send-Djswy6lf.js";
|
|
4
4
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
5
|
import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
6
6
|
import { buildApprovalPresentationFromActionDescriptors } from "openclaw/plugin-sdk/approval-reply-runtime";
|
|
@@ -93,14 +93,15 @@ function buildSlackPluginRequestBlocks(view) {
|
|
|
93
93
|
function buildSlackApprovalPayload(input) {
|
|
94
94
|
const { phase, view } = input;
|
|
95
95
|
const isPlugin = view.approvalKind === "plugin";
|
|
96
|
-
const
|
|
96
|
+
const isSystemAgent = view.approvalKind === "system-agent";
|
|
97
|
+
const approvalName = isPlugin ? "Plugin" : isSystemAgent ? "OpenClaw change" : "Exec";
|
|
97
98
|
let heading;
|
|
98
99
|
let description;
|
|
99
100
|
if (phase === "pending") {
|
|
100
101
|
heading = `*${approvalName} approval required*`;
|
|
101
|
-
description = view.approvalKind === "plugin" ? resolveSlackPluginDescription(view) : "A command needs your approval.";
|
|
102
|
+
description = view.approvalKind === "plugin" ? resolveSlackPluginDescription(view) : isSystemAgent ? "An OpenClaw change needs your approval." : "A command needs your approval.";
|
|
102
103
|
} else if (phase === "resolved") {
|
|
103
|
-
heading = `*${approvalName} approval: ${resolveSlackApprovalDecisionLabel(view.decision)}*`;
|
|
104
|
+
heading = `*${approvalName} approval: ${isSystemAgent && view.terminalStatus === "cancelled" ? "Cancelled" : isSystemAgent && view.applicationStatus === "applied" ? "Applied" : isSystemAgent && view.applicationStatus === "not-applied" ? "Not applied" : resolveSlackApprovalDecisionLabel(view.decision)}*`;
|
|
104
105
|
const resolvedBy = formatSlackApprover(view.resolvedBy);
|
|
105
106
|
description = resolvedBy ? `Resolved by ${resolvedBy}.` : "Resolved.";
|
|
106
107
|
} else {
|
|
@@ -108,7 +109,7 @@ function buildSlackApprovalPayload(input) {
|
|
|
108
109
|
description = "This approval request expired before it was resolved.";
|
|
109
110
|
}
|
|
110
111
|
const metadata = isPlugin ? buildSlackPluginMetadata(view) : view.metadata;
|
|
111
|
-
const bodyLabel = isPlugin ? "*Request*" : "*Command*";
|
|
112
|
+
const bodyLabel = isPlugin ? "*Request*" : isSystemAgent ? "*Change*" : "*Command*";
|
|
112
113
|
const bodyText = isPlugin ? view.title : buildSlackCodeBlock(view.commandText);
|
|
113
114
|
const text = [
|
|
114
115
|
heading,
|
|
@@ -130,7 +131,7 @@ function buildSlackApprovalPayload(input) {
|
|
|
130
131
|
type: "section",
|
|
131
132
|
text: {
|
|
132
133
|
type: "mrkdwn",
|
|
133
|
-
text:
|
|
134
|
+
text: `${bodyLabel}\n${buildSlackCodeBlock(truncateSlackMrkdwn(view.commandText, 2600))}`
|
|
134
135
|
}
|
|
135
136
|
}, ...phase === "pending" ? buildSlackMetadataContextBlocks(view.metadata) : []]];
|
|
136
137
|
if (phase === "pending") blocks.push(...resolveSlackReplyBlocks({
|
|
@@ -155,7 +156,11 @@ async function updateMessage(params) {
|
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
158
|
const slackApprovalNativeRuntime = createChannelApprovalNativeRuntimeAdapter({
|
|
158
|
-
eventKinds: [
|
|
159
|
+
eventKinds: [
|
|
160
|
+
"exec",
|
|
161
|
+
"plugin",
|
|
162
|
+
"system-agent"
|
|
163
|
+
],
|
|
159
164
|
availability: {
|
|
160
165
|
isConfigured: (params) => {
|
|
161
166
|
const resolved = resolveHandlerContext(params);
|
|
@@ -3,14 +3,14 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
|
|
|
3
3
|
import { n as resolveSlackConversationBindingRoute, r as resolveSlackReplyToMode, t as normalizeSlackRouteBindingConfig } from "./conversation-binding-route-Vee8Dgbf.js";
|
|
4
4
|
import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, n as formatSlackTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId, t as canonicalizeSlackApiTargetId } from "./target-parsing-PbxGDbr9.js";
|
|
5
5
|
import { t as slackContextTargetsMatch } from "./targets-7FexXJ62.js";
|
|
6
|
-
import { $ as renderSlackMessagePresentationFallbackText, Ct as isSlackApprovalAuthorizedSender, Et as isSlackExecApprovalClientEnabled, F as canRenderSlackPresentation, I as countSlackTextUtf8Bytes, M as SLACK_TEXT_LIMIT, Ot as resolveSlackExecApprovalTarget, P as buildSlackPresentationBlocks, Q as normalizeSlackOutboundText, St as getSlackApprovalApproversForTeam, Tt as isSlackExecApprovalAuthorizedSender, _t as shouldHandleSlackPluginViaForwardingSession, a as qualifySlackConversationId, bt as isSlackWorkspaceInstallation, c as assertSlackDetachedTargetAllowed, ct as hasSlackPluginApprovers, d as resolveSlackReplyBlockResolution, dt as normalizeSlackOriginTarget, f as resolveSlackReplyBlocks, ft as resolveEnterpriseApprovalTeamId, gt as shouldHandleSlackNativeApprovalRequest, ht as resolveTurnSourceSlackOriginTarget, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, k as SLACK_EDIT_TEXT_MAX_BYTES, kt as shouldSuppressLocalSlackExecApprovalPrompt, lt as isSlackAnyNativeApprovalClientEnabled, mt as resolveSlackFallbackOriginTarget, o as qualifySlackRoutePeerId, p as resolveSlackReplyDeliveryMessages, pt as resolveSessionSlackOriginTarget, r as resolveSlackGroupRequireMention, rt as SLACK_PRESENTATION_CAPABILITIES, ut as normalizeSlackForwardTarget, vt as slackTargetsMatch, wt as getSlackExecApprovalApprovers, yt as getSlackInstallationKind } from "./group-policy-
|
|
6
|
+
import { $ as renderSlackMessagePresentationFallbackText, Ct as isSlackApprovalAuthorizedSender, Et as isSlackExecApprovalClientEnabled, F as canRenderSlackPresentation, I as countSlackTextUtf8Bytes, M as SLACK_TEXT_LIMIT, Ot as resolveSlackExecApprovalTarget, P as buildSlackPresentationBlocks, Q as normalizeSlackOutboundText, St as getSlackApprovalApproversForTeam, Tt as isSlackExecApprovalAuthorizedSender, _t as shouldHandleSlackPluginViaForwardingSession, a as qualifySlackConversationId, bt as isSlackWorkspaceInstallation, c as assertSlackDetachedTargetAllowed, ct as hasSlackPluginApprovers, d as resolveSlackReplyBlockResolution, dt as normalizeSlackOriginTarget, f as resolveSlackReplyBlocks, ft as resolveEnterpriseApprovalTeamId, gt as shouldHandleSlackNativeApprovalRequest, ht as resolveTurnSourceSlackOriginTarget, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, k as SLACK_EDIT_TEXT_MAX_BYTES, kt as shouldSuppressLocalSlackExecApprovalPrompt, lt as isSlackAnyNativeApprovalClientEnabled, mt as resolveSlackFallbackOriginTarget, o as qualifySlackRoutePeerId, p as resolveSlackReplyDeliveryMessages, pt as resolveSessionSlackOriginTarget, r as resolveSlackGroupRequireMention, rt as SLACK_PRESENTATION_CAPABILITIES, ut as normalizeSlackForwardTarget, vt as slackTargetsMatch, wt as getSlackExecApprovalApprovers, yt as getSlackInstallationKind } from "./group-policy-BKjMqT-8.js";
|
|
7
7
|
import { m as getSlackWriteClient, o as formatSlackError } from "./probe-gj5yQgN2.js";
|
|
8
|
-
import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-
|
|
9
|
-
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-
|
|
10
|
-
import { a as PAIRING_APPROVED_MESSAGE, i as DEFAULT_ACCOUNT_ID$1, n as slackConfigAdapter, o as projectCredentialSnapshotFields, r as slackSecurityAdapter, s as resolveConfiguredFromRequiredCredentialStatuses, t as createSlackPluginBase } from "./shared-
|
|
11
|
-
import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-
|
|
8
|
+
import { n as resolveSlackReplyThreadTs, r as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-CukseRVL.js";
|
|
9
|
+
import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-uNEfQYGY.js";
|
|
10
|
+
import { a as PAIRING_APPROVED_MESSAGE, i as DEFAULT_ACCOUNT_ID$1, n as slackConfigAdapter, o as projectCredentialSnapshotFields, r as slackSecurityAdapter, s as resolveConfiguredFromRequiredCredentialStatuses, t as createSlackPluginBase } from "./shared-DEQBEKBL.js";
|
|
11
|
+
import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-3-SqEMVc.js";
|
|
12
12
|
import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.js";
|
|
13
|
-
import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-
|
|
13
|
+
import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-t_ghLGb_.js";
|
|
14
14
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
15
15
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
16
16
|
import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -126,7 +126,11 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
126
126
|
resolveApproverDmTargets: resolveSlackApproverDmTargets,
|
|
127
127
|
notifyOriginWhenDmOnly: true,
|
|
128
128
|
nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({
|
|
129
|
-
eventKinds: [
|
|
129
|
+
eventKinds: [
|
|
130
|
+
"exec",
|
|
131
|
+
"plugin",
|
|
132
|
+
"system-agent"
|
|
133
|
+
],
|
|
130
134
|
isConfigured: ({ cfg, accountId }) => isSlackAnyNativeApprovalClientEnabled({
|
|
131
135
|
cfg,
|
|
132
136
|
accountId
|
|
@@ -137,7 +141,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
|
|
|
137
141
|
approvalKind,
|
|
138
142
|
request
|
|
139
143
|
}),
|
|
140
|
-
load: async () => (await import("./approval-handler.runtime-
|
|
144
|
+
load: async () => (await import("./approval-handler.runtime-D7d8sKM0.js")).slackApprovalNativeRuntime
|
|
141
145
|
})
|
|
142
146
|
});
|
|
143
147
|
const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
|
|
@@ -421,7 +425,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = /* @__PURE__ */ new Set([
|
|
|
421
425
|
"unpinMessage",
|
|
422
426
|
"uploadFile"
|
|
423
427
|
]);
|
|
424
|
-
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
428
|
+
const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-CEhbmS-Z.js"));
|
|
425
429
|
function resolveSlackActionContext(ctx, toolContext) {
|
|
426
430
|
if (!toolContext && !ctx.mediaAccess && !ctx.mediaLocalRoots && !ctx.mediaReadFile && !ctx.conversationReadOrigin && !ctx.requesterAccountId && !ctx.requesterSenderId) return;
|
|
427
431
|
return {
|
|
@@ -563,9 +567,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
|
|
|
563
567
|
const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
|
|
564
568
|
const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
|
|
565
569
|
const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
|
|
566
|
-
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-
|
|
570
|
+
const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-DO0e-MMS.js"));
|
|
567
571
|
const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-B9HRguDe.js"));
|
|
568
|
-
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-
|
|
572
|
+
const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-BB8wAjm5.js"));
|
|
569
573
|
async function resolveSlackHandleAction() {
|
|
570
574
|
return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
|
|
571
575
|
}
|
|
@@ -573,13 +577,13 @@ function shouldTreatSlackDeliveredTextAsVisible(params) {
|
|
|
573
577
|
return params.kind === "block" && typeof params.text === "string" && params.text.trim().length > 0;
|
|
574
578
|
}
|
|
575
579
|
const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-Bmw4ykSy.js").then((n) => n.t));
|
|
576
|
-
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-
|
|
577
|
-
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-
|
|
578
|
-
const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-
|
|
579
|
-
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
580
|
+
const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CU7Bg5Ka.js").then((n) => n.n));
|
|
581
|
+
const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DrhttvRQ.js").then((n) => n.n));
|
|
582
|
+
const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-CEhbmS-Z.js"));
|
|
583
|
+
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-__WVTWLQ.js"));
|
|
580
584
|
const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-gj5yQgN2.js").then((n) => n.n));
|
|
581
|
-
const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-
|
|
582
|
-
const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-
|
|
585
|
+
const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-Chwu_SiZ.js").then((n) => n.t));
|
|
586
|
+
const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-q32AW7N1.js").then((n) => n.t));
|
|
583
587
|
async function setSlackHeartbeatThreadStatus(params) {
|
|
584
588
|
const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
|
|
585
589
|
const target = parseSlackTarget(params.to, { defaultKind: "channel" });
|
|
@@ -1141,12 +1145,13 @@ const slackPlugin = createChatChannelPlugin({
|
|
|
1141
1145
|
to,
|
|
1142
1146
|
toolContext
|
|
1143
1147
|
})),
|
|
1144
|
-
resolveReplyTransport: ({ threadId, replyToId, replyToIsExplicit, replyDelivery }) => {
|
|
1145
|
-
const
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1148
|
+
resolveReplyTransport: ({ threadId, replyToId, replyToIsExplicit, replyToCurrent, replyDelivery }) => {
|
|
1149
|
+
const resolvedReplyToId = resolveSlackReplyThreadTs({
|
|
1150
|
+
replyToId: normalizeSlackThreadTsCandidate(replyToId),
|
|
1151
|
+
threadId: normalizeSlackThreadTsCandidate(threadId),
|
|
1152
|
+
replyToMode: replyDelivery?.replyToMode,
|
|
1153
|
+
replyToIsExplicit,
|
|
1154
|
+
replyToCurrent
|
|
1150
1155
|
});
|
|
1151
1156
|
return {
|
|
1152
1157
|
replyToId: replyDelivery?.replyToMode === "off" && !resolvedReplyToId ? null : resolvedReplyToId,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
1
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-bP3eV2ra.js";
|
|
2
2
|
export { SlackChannelConfigSchema };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as slackPlugin } from "./channel-
|
|
1
|
+
import { t as slackPlugin } from "./channel-4m8IAdMD.js";
|
|
2
2
|
export { slackPlugin };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
2
|
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
|
|
3
|
-
import { c as assertSlackDetachedTargetAllowed } from "./group-policy-
|
|
3
|
+
import { c as assertSlackDetachedTargetAllowed } from "./group-policy-BKjMqT-8.js";
|
|
4
4
|
import { C as normalizeAllowListLower, c as createSlackReadClient, d as createSlackWebClient } from "./probe-gj5yQgN2.js";
|
|
5
5
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as isSlackSetupAccountConfigured } from "./account-configured-sUohAxZr.js";
|
|
2
2
|
import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-Dm_H77gH.js";
|
|
3
3
|
import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
|
|
4
|
-
import { t as SlackChannelConfigSchema } from "./config-schema-
|
|
4
|
+
import { t as SlackChannelConfigSchema } from "./config-schema-bP3eV2ra.js";
|
|
5
5
|
import { normalizeSecretInputString } from "openclaw/plugin-sdk/secret-input";
|
|
6
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -556,7 +556,7 @@ const slackBaseConfigAdapter = createScopedChannelConfigAdapter({
|
|
|
556
556
|
});
|
|
557
557
|
//#endregion
|
|
558
558
|
//#region extensions/slack/src/channel.setup.ts
|
|
559
|
-
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-
|
|
559
|
+
const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-DO0e-MMS.js")).slackSetupWizard }));
|
|
560
560
|
const slackSetupPlugin = {
|
|
561
561
|
id: SLACK_CHANNEL,
|
|
562
562
|
meta: {
|
|
@@ -32,7 +32,7 @@ const slackChannelConfigUiHints = {
|
|
|
32
32
|
nativeTransport: "Enable native Slack text streaming (chat.startStream/chat.appendStream/chat.stopStream) when channels.slack.streaming.mode is partial (default: true). Native streaming and Slack assistant thread status require a reply thread target; top-level DMs can still use draft post-and-edit preview streaming.",
|
|
33
33
|
"preview.toolProgress": "Show tool/progress activity in the live draft preview message (default: true). Set false to hide interim tool updates while the draft preview stays active.",
|
|
34
34
|
"preview.commandText": "Command/exec detail in preview tool-progress lines: \"status\" is the safe default; \"raw\" opts into command text.",
|
|
35
|
-
"progress.style": "Slack progress presentation: \"card\"
|
|
35
|
+
"progress.style": "Slack progress presentation: \"card\" uses structured task/session cards; \"compact\" keeps one editable text draft that the final answer replaces in place when Slack can safely edit it. Defaults to \"compact\" when progress.toolProgress is false, otherwise \"card\".",
|
|
36
36
|
"progress.nativeTaskCards": "Slack native task-card progress updates when channels.slack.streaming.mode=\"progress\", progress.style=\"card\", and streaming.nativeTransport is enabled. Set false to fall back to the Block Kit progress card. Default: true."
|
|
37
37
|
},
|
|
38
38
|
progress: { labels: "openclaw" }
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
//#region extensions/slack/src/cursor-pages.ts
|
|
2
2
|
const SLACK_CURSOR_PAGE_LIMIT = 1e4;
|
|
3
|
+
const fetchSlackChannelListPage = (client, cursor) => client.conversations.list({
|
|
4
|
+
types: "public_channel,private_channel",
|
|
5
|
+
exclude_archived: false,
|
|
6
|
+
limit: 1e3,
|
|
7
|
+
cursor
|
|
8
|
+
});
|
|
3
9
|
async function collectSlackCursorPages(params) {
|
|
4
10
|
const items = [];
|
|
5
11
|
let cursor;
|
|
@@ -16,4 +22,4 @@ async function collectSlackCursorPages(params) {
|
|
|
16
22
|
throw new Error(`Slack cursor pagination exceeded ${SLACK_CURSOR_PAGE_LIMIT} pages`);
|
|
17
23
|
}
|
|
18
24
|
//#endregion
|
|
19
|
-
export { collectSlackCursorPages as t };
|
|
25
|
+
export { fetchSlackChannelListPage as n, collectSlackCursorPages as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
2
|
import { a as resolveSlackAccount } from "./accounts-Dm_H77gH.js";
|
|
3
3
|
import { s as createSlackLookupClient } from "./probe-gj5yQgN2.js";
|
|
4
|
-
import { t as collectSlackCursorPages } from "./cursor-pages-
|
|
4
|
+
import { n as fetchSlackChannelListPage, t as collectSlackCursorPages } from "./cursor-pages-ByFwo-Py.js";
|
|
5
5
|
import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
6
6
|
//#region extensions/slack/src/directory-live.ts
|
|
7
7
|
var directory_live_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -91,12 +91,7 @@ async function listSlackDirectoryGroupsLive(params) {
|
|
|
91
91
|
if (!client) return [];
|
|
92
92
|
const query = normalizeQuery(params.query);
|
|
93
93
|
const rows = (await collectSlackCursorPages({
|
|
94
|
-
fetchPage: (cursor) => client
|
|
95
|
-
types: "public_channel,private_channel",
|
|
96
|
-
exclude_archived: false,
|
|
97
|
-
limit: 1e3,
|
|
98
|
-
cursor
|
|
99
|
-
}),
|
|
94
|
+
fetchPage: (cursor) => fetchSlackChannelListPage(client, cursor),
|
|
100
95
|
collectPageItems: (res) => Array.isArray(res.channels) ? res.channels : []
|
|
101
96
|
})).filter((channel) => {
|
|
102
97
|
const name = normalizeOptionalLowercaseString(channel.name);
|
|
@@ -599,58 +599,55 @@ function renderSlackMessagePresentationFallbackText(params) {
|
|
|
599
599
|
});
|
|
600
600
|
}
|
|
601
601
|
//#endregion
|
|
602
|
+
//#region extensions/slack/src/rich-text.ts
|
|
603
|
+
const RICH_TEXT_CONTAINER_TYPES = /* @__PURE__ */ new Set([
|
|
604
|
+
"rich_text_section",
|
|
605
|
+
"rich_text_preformatted",
|
|
606
|
+
"rich_text_quote",
|
|
607
|
+
"rich_text_list"
|
|
608
|
+
]);
|
|
609
|
+
function renderSlackRichText(value, mode, separator = "") {
|
|
610
|
+
if (!Array.isArray(value)) return "";
|
|
611
|
+
const table = mode === "table";
|
|
612
|
+
const read = table ? readNonBlankString : normalizeOptionalString;
|
|
613
|
+
const literal = table ? (text) => text : escapeSlackMrkdwn;
|
|
614
|
+
const reference = mode === "escaped" ? escapeSlackMrkdwn : (text) => text;
|
|
615
|
+
const formatReference = (raw, prefix, suffix) => {
|
|
616
|
+
const text = read(raw);
|
|
617
|
+
return text ? reference(`${prefix}${text}${suffix}`) : "";
|
|
618
|
+
};
|
|
619
|
+
return value.map((rawElement) => {
|
|
620
|
+
const element = asOptionalRecord(rawElement);
|
|
621
|
+
if (!element) return "";
|
|
622
|
+
if (Array.isArray(element.elements) && (table || RICH_TEXT_CONTAINER_TYPES.has(element.type))) return renderSlackRichText(element.elements, mode, element.type === "rich_text_list" ? "\n" : "");
|
|
623
|
+
if (table) {
|
|
624
|
+
if (element.type === "text" && typeof element.text === "string") return element.text;
|
|
625
|
+
const text = readNonBlankString(element.text);
|
|
626
|
+
if (text) return text;
|
|
627
|
+
}
|
|
628
|
+
switch (element.type) {
|
|
629
|
+
case "text": return typeof element.text === "string" ? literal(element.text) : "";
|
|
630
|
+
case "link": return literal(read(element.text) ?? read(element.url) ?? "");
|
|
631
|
+
case "user": return formatReference(element.user_id, "<@", ">");
|
|
632
|
+
case "channel": return formatReference(element.channel_id, "<#", ">");
|
|
633
|
+
case "usergroup": return formatReference(element.usergroup_id, "<!subteam^", ">");
|
|
634
|
+
case "broadcast": return formatReference(element.range, "<!", ">");
|
|
635
|
+
case "emoji": {
|
|
636
|
+
const name = read(element.name);
|
|
637
|
+
return name ? `:${name}:` : "";
|
|
638
|
+
}
|
|
639
|
+
case "date": return literal(read(element.fallback) ?? "");
|
|
640
|
+
default: return "";
|
|
641
|
+
}
|
|
642
|
+
}).filter(Boolean).join(separator);
|
|
643
|
+
}
|
|
644
|
+
//#endregion
|
|
602
645
|
//#region extensions/slack/src/data-table.ts
|
|
603
646
|
const SLACK_DATA_TABLE_COLUMNS_MAX = 20;
|
|
604
647
|
const SLACK_DATA_TABLE_ROWS_MAX = 100;
|
|
605
648
|
function countCharacters(value) {
|
|
606
649
|
return Array.from(value).length;
|
|
607
650
|
}
|
|
608
|
-
function readRichTextLeaf(record) {
|
|
609
|
-
if (record.type === "text" && typeof record.text === "string") return record.text;
|
|
610
|
-
const text = readNonBlankString(record.text);
|
|
611
|
-
if (text) return text;
|
|
612
|
-
switch (record.type) {
|
|
613
|
-
case "link": return readNonBlankString(record.url) ?? "";
|
|
614
|
-
case "user": {
|
|
615
|
-
const userId = readNonBlankString(record.user_id);
|
|
616
|
-
return userId ? `<@${userId}>` : "";
|
|
617
|
-
}
|
|
618
|
-
case "channel": {
|
|
619
|
-
const channelId = readNonBlankString(record.channel_id);
|
|
620
|
-
return channelId ? `<#${channelId}>` : "";
|
|
621
|
-
}
|
|
622
|
-
case "usergroup": {
|
|
623
|
-
const usergroupId = readNonBlankString(record.usergroup_id);
|
|
624
|
-
return usergroupId ? `<!subteam^${usergroupId}>` : "";
|
|
625
|
-
}
|
|
626
|
-
case "broadcast": {
|
|
627
|
-
const range = readNonBlankString(record.range);
|
|
628
|
-
return range ? `<!${range}>` : "";
|
|
629
|
-
}
|
|
630
|
-
case "emoji": {
|
|
631
|
-
const name = readNonBlankString(record.name);
|
|
632
|
-
return name ? `:${name}:` : "";
|
|
633
|
-
}
|
|
634
|
-
case "date": return readNonBlankString(record.fallback) ?? "";
|
|
635
|
-
default: return "";
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
function readRichTextElements(value, separator = "") {
|
|
639
|
-
if (!Array.isArray(value)) return "";
|
|
640
|
-
const parts = [];
|
|
641
|
-
for (const rawElement of value) {
|
|
642
|
-
const element = asOptionalRecord(rawElement);
|
|
643
|
-
if (!element) continue;
|
|
644
|
-
if (Array.isArray(element.elements)) {
|
|
645
|
-
const rendered = readRichTextElements(element.elements, element.type === "rich_text_list" ? "\n" : "");
|
|
646
|
-
if (rendered) parts.push(rendered);
|
|
647
|
-
continue;
|
|
648
|
-
}
|
|
649
|
-
const rendered = readRichTextLeaf(element);
|
|
650
|
-
if (rendered) parts.push(rendered);
|
|
651
|
-
}
|
|
652
|
-
return parts.join(separator);
|
|
653
|
-
}
|
|
654
651
|
function readSlackBasicTableCell(value) {
|
|
655
652
|
const cell = asOptionalRecord(value);
|
|
656
653
|
if (!cell) return "";
|
|
@@ -660,7 +657,7 @@ function readSlackBasicTableCell(value) {
|
|
|
660
657
|
if (typeof cell.value === "number" && Number.isFinite(cell.value)) return String(cell.value);
|
|
661
658
|
return typeof cell.value === "string" ? cell.value : "";
|
|
662
659
|
}
|
|
663
|
-
return cell.type === "rich_text" ?
|
|
660
|
+
return cell.type === "rich_text" ? renderSlackRichText(cell.elements, "table", "\n") : "";
|
|
664
661
|
}
|
|
665
662
|
function parseSlackBasicTableRows(value) {
|
|
666
663
|
const block = asOptionalRecord(value);
|
|
@@ -682,7 +679,7 @@ function readSlackDataTableCell(value, allowRichText) {
|
|
|
682
679
|
if (!cell) return;
|
|
683
680
|
if (cell.type === "raw_text") return readNonBlankString(cell.text);
|
|
684
681
|
if (cell.type === "raw_number") return typeof cell.value === "number" && Number.isFinite(cell.value) ? readNonBlankString(cell.text) : void 0;
|
|
685
|
-
if (allowRichText && cell.type === "rich_text") return readNonBlankString(
|
|
682
|
+
if (allowRichText && cell.type === "rich_text") return readNonBlankString(renderSlackRichText(cell.elements, "table"));
|
|
686
683
|
}
|
|
687
684
|
function parseSlackDataTable(value, options = {}) {
|
|
688
685
|
const block = asOptionalRecord(value);
|
|
@@ -1790,44 +1787,6 @@ function readTextObject(value, options = {}) {
|
|
|
1790
1787
|
function readTextValue(value, options = {}) {
|
|
1791
1788
|
return normalizeOptionalString(value) ?? readTextObject(value, options);
|
|
1792
1789
|
}
|
|
1793
|
-
function renderSlackRichTextElement(value, renderReference) {
|
|
1794
|
-
const element = asOptionalRecord(value);
|
|
1795
|
-
if (!element) return "";
|
|
1796
|
-
switch (element.type) {
|
|
1797
|
-
case "rich_text_section":
|
|
1798
|
-
case "rich_text_preformatted":
|
|
1799
|
-
case "rich_text_quote": return renderSlackRichTextElements(element.elements, "", renderReference);
|
|
1800
|
-
case "rich_text_list": return renderSlackRichTextElements(element.elements, "\n", renderReference);
|
|
1801
|
-
case "text": return typeof element.text === "string" ? escapeSlackMrkdwn(element.text) : "";
|
|
1802
|
-
case "link": return escapeSlackMrkdwn(normalizeOptionalString(element.text) ?? normalizeOptionalString(element.url) ?? "");
|
|
1803
|
-
case "user": {
|
|
1804
|
-
const userId = normalizeOptionalString(element.user_id);
|
|
1805
|
-
return userId ? renderReference(`<@${userId}>`) : "";
|
|
1806
|
-
}
|
|
1807
|
-
case "channel": {
|
|
1808
|
-
const channelId = normalizeOptionalString(element.channel_id);
|
|
1809
|
-
return channelId ? renderReference(`<#${channelId}>`) : "";
|
|
1810
|
-
}
|
|
1811
|
-
case "usergroup": {
|
|
1812
|
-
const usergroupId = normalizeOptionalString(element.usergroup_id);
|
|
1813
|
-
return usergroupId ? renderReference(`<!subteam^${usergroupId}>`) : "";
|
|
1814
|
-
}
|
|
1815
|
-
case "broadcast": {
|
|
1816
|
-
const range = normalizeOptionalString(element.range);
|
|
1817
|
-
return range ? renderReference(`<!${range}>`) : "";
|
|
1818
|
-
}
|
|
1819
|
-
case "emoji": {
|
|
1820
|
-
const name = normalizeOptionalString(element.name);
|
|
1821
|
-
return name ? `:${name}:` : "";
|
|
1822
|
-
}
|
|
1823
|
-
case "date": return escapeSlackMrkdwn(normalizeOptionalString(element.fallback) ?? "");
|
|
1824
|
-
default: return "";
|
|
1825
|
-
}
|
|
1826
|
-
}
|
|
1827
|
-
function renderSlackRichTextElements(value, separator, renderReference) {
|
|
1828
|
-
if (!Array.isArray(value)) return "";
|
|
1829
|
-
return value.map((element) => renderSlackRichTextElement(element, renderReference)).filter(Boolean).join(separator);
|
|
1830
|
-
}
|
|
1831
1790
|
function readImageText(block) {
|
|
1832
1791
|
const altText = normalizeOptionalString(block.alt_text);
|
|
1833
1792
|
return (altText ? escapeSlackMrkdwn(altText) : void 0) ?? readTextObject(block.title);
|
|
@@ -1877,7 +1836,7 @@ function renderSlackBlockFallbackText(raw, options = {}) {
|
|
|
1877
1836
|
const block = asOptionalRecord(raw);
|
|
1878
1837
|
if (!block) return;
|
|
1879
1838
|
switch (block.type) {
|
|
1880
|
-
case "rich_text": return normalizeOptionalString(
|
|
1839
|
+
case "rich_text": return normalizeOptionalString(renderSlackRichText(block.elements, options.nativeReferenceFormat === "plain" ? "native-reference" : "escaped", "\n"));
|
|
1881
1840
|
case "header": return readTextObject(block.text, options);
|
|
1882
1841
|
case "section": return readSectionText(block, options);
|
|
1883
1842
|
case "image": return readImageText(block) ?? "Shared an image";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as listSlackAccountIds } from "./accounts-Dm_H77gH.js";
|
|
2
2
|
import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
|
|
3
|
-
import {
|
|
3
|
+
import { r as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-CukseRVL.js";
|
|
4
4
|
import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
|
|
5
5
|
import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
|
|
6
6
|
import { Type } from "typebox";
|
package/dist/message-tool-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as describeSlackMessageTool } from "./message-tool-api-
|
|
1
|
+
import { t as describeSlackMessageTool } from "./message-tool-api-uNEfQYGY.js";
|
|
2
2
|
export { describeSlackMessageTool as describeMessageTool };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
|
|
2
|
-
import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-
|
|
3
|
-
import { t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
4
|
-
import {
|
|
2
|
+
import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-Do50wMWn.js";
|
|
3
|
+
import { t as isSlackChannelAllowedByPolicy } from "./policy-D7PKkiet.js";
|
|
4
|
+
import { a as resolveSlackThreadTs } from "./replies-Dc6WVh_Q.js";
|
|
5
5
|
//#region extensions/slack/src/monitor.ts
|
|
6
6
|
var monitor_exports = /* @__PURE__ */ __exportAll({
|
|
7
7
|
buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
|
|
2
2
|
import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.js";
|
|
3
|
-
import { M as SLACK_TEXT_LIMIT, O as resolveSlackAuthoredTextPlacement, c as assertSlackDetachedTargetAllowed, d as resolveSlackReplyBlockResolution, et as escapeSlackMrkdwn, p as resolveSlackReplyDeliveryMessages, q as resolveSlackQuestionActionIds, rt as SLACK_PRESENTATION_CAPABILITIES, u as parseSlackReplyBlockSegments, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-
|
|
4
|
-
import {
|
|
3
|
+
import { M as SLACK_TEXT_LIMIT, O as resolveSlackAuthoredTextPlacement, c as assertSlackDetachedTargetAllowed, d as resolveSlackReplyBlockResolution, et as escapeSlackMrkdwn, p as resolveSlackReplyDeliveryMessages, q as resolveSlackQuestionActionIds, rt as SLACK_PRESENTATION_CAPABILITIES, u as parseSlackReplyBlockSegments, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-BKjMqT-8.js";
|
|
4
|
+
import { r as resolveSlackThreadTsValue } from "./thread-ts-CukseRVL.js";
|
|
5
5
|
import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.js";
|
|
6
6
|
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
7
7
|
import { resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
@@ -51,7 +51,7 @@ function readSlackRenderedPresentation(slackData) {
|
|
|
51
51
|
return;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-
|
|
54
|
+
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-__WVTWLQ.js"));
|
|
55
55
|
function resolveSlackSendIdentity(identity) {
|
|
56
56
|
if (!identity) return;
|
|
57
57
|
const username = normalizeOptionalString(identity.name);
|