@openclaw/slack 2026.5.16-beta.4 → 2026.5.16-beta.6

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.
Files changed (58) hide show
  1. package/dist/account-inspect-api.js +1 -1
  2. package/dist/{account-inspect-BJyQLSkN.js → account-inspect-uMPQ6wIu.js} +1 -1
  3. package/dist/{accounts-yk5K3wQU.js → accounts-Cbw3i3Sa.js} +7 -2
  4. package/dist/accounts.runtime-z3fshUeC.js +2 -0
  5. package/dist/{action-runtime-0RLkDKyA.js → action-runtime-DgzkekLM.js} +3 -3
  6. package/dist/action-runtime.runtime-CGEyxfMu.js +2 -0
  7. package/dist/{actions-Chs6DbrP.js → actions-vFq9T_Kd.js} +3 -3
  8. package/dist/{actions.runtime-BsbIDsmT.js → actions.runtime-3XZA8-ot.js} +1 -1
  9. package/dist/api.js +14 -14
  10. package/dist/{approval-handler.runtime-BmCbRrbT.js → approval-handler.runtime-C_hfvcRd.js} +4 -4
  11. package/dist/{blocks-render-BAVfd6r0.js → blocks-render-ziYgM0qF.js} +74 -3
  12. package/dist/{channel-DUS8ZO45.js → channel-D9Wzqu3W.js} +21 -21
  13. package/dist/channel-config-api.js +1 -1
  14. package/dist/channel-plugin-api.js +1 -1
  15. package/dist/{channel.setup-qGOC05UK.js → channel.setup-C2_IZ9It.js} +4 -4
  16. package/dist/{client-C_IaJbi5.js → client-Dr7pteMR.js} +4 -2
  17. package/dist/{config-schema-CNRousxw.js → config-schema-C8tW0Db0.js} +4 -0
  18. package/dist/contract-api.js +1 -1
  19. package/dist/{directory-config-CMvFiswf.js → directory-config-qDXRTCcs.js} +1 -1
  20. package/dist/directory-contract-api.js +1 -1
  21. package/dist/{directory-live-CZPzpQZF.js → directory-live-BnN4Zawp.js} +2 -2
  22. package/dist/http-routes-api.js +1 -1
  23. package/dist/inbound-contract-test-api.js +1 -1
  24. package/dist/{interactive-replies-BSg5hXhj.js → interactive-replies-B1wwXeVn.js} +10 -1
  25. package/dist/interactive-replies-api.js +1 -1
  26. package/dist/{message-tool-api-C7gc7goF.js → message-tool-api-DRSTJhP8.js} +2 -2
  27. package/dist/message-tool-api.js +1 -1
  28. package/dist/{monitor-BhEzWuv0.js → monitor-beou_Rl6.js} +2 -2
  29. package/dist/{outbound-adapter-BoDXPksS.js → outbound-adapter-Dcy9jZv1.js} +26 -6
  30. package/dist/outbound-payload-test-api.js +1 -1
  31. package/dist/{outbound-payload.test-harness-C7Izm95Q.js → outbound-payload.test-harness-B8N8U_AA.js} +1 -1
  32. package/dist/{pipeline.runtime-Bq754VH8.js → pipeline.runtime-COwSmZG5.js} +96 -26
  33. package/dist/{plugin-routes-CRnfsTTX.js → plugin-routes-hrKOqBIn.js} +1 -1
  34. package/dist/{prepare-BcznR9ok.js → prepare-BjlcuiLr.js} +12 -11
  35. package/dist/{probe-FL4sUJsH.js → probe-DDef8MfR.js} +1 -1
  36. package/dist/{provider-BFnE2bgI.js → provider-C7uiI7hL.js} +8 -8
  37. package/dist/{replies-2ve_YcHy.js → replies-ClYRn89v.js} +3 -3
  38. package/dist/{reply-blocks-BFaJ_ejG.js → reply-blocks-DgUdywKU.js} +9 -4
  39. package/dist/{resolve-channels-B_eKaOkE.js → resolve-channels-gx65A1PR.js} +1 -1
  40. package/dist/{resolve-users-BzBAJwvq.js → resolve-users-OknHaiRY.js} +1 -1
  41. package/dist/{runtime-api-B5HGOzX3.js → runtime-api-D3pvtood.js} +1 -1
  42. package/dist/runtime-api.js +12 -12
  43. package/dist/{scopes-Bvg_ZzqZ.js → scopes-vRHcdO0m.js} +1 -1
  44. package/dist/{send-C5PzphgC.js → send-Br_H5f6H.js} +3 -3
  45. package/dist/send.runtime-Cj0cqt6C.js +2 -0
  46. package/dist/send.runtime-CjgsYARn.js +2 -0
  47. package/dist/{setup-core-az0LCrNr.js → setup-core-BRD65LS_.js} +2 -2
  48. package/dist/setup-plugin-api.js +1 -1
  49. package/dist/{setup-surface-Cdq_mfjx.js → setup-surface-DpNyddrJ.js} +5 -5
  50. package/dist/{shared-BuNoOmas.js → shared-DdgQfBV9.js} +6 -6
  51. package/dist/{slash-dispatch.runtime-CcbE1HtP.js → slash-dispatch.runtime-DYm6lWN8.js} +1 -1
  52. package/dist/test-api.js +5 -5
  53. package/openclaw.plugin.json +14 -0
  54. package/package.json +4 -4
  55. package/dist/accounts.runtime-BhbEu1ZK.js +0 -2
  56. package/dist/action-runtime.runtime-DpzOXqtk.js +0 -2
  57. package/dist/send.runtime-Bgf0P22e.js +0 -2
  58. package/dist/send.runtime-DsEXD6MR.js +0 -2
@@ -1,21 +1,21 @@
1
1
  import { o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-As_dcNbD.js";
2
- import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-BSg5hXhj.js";
2
+ import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-B1wwXeVn.js";
3
3
  import { i as normalizeSlackAllowOwnerEntry } from "./allow-list-nwXs_eCP.js";
4
4
  import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-eu5Rj5gj.js";
5
- import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-C5PzphgC.js";
6
- import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-Chs6DbrP.js";
5
+ import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-Br_H5f6H.js";
6
+ import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-vFq9T_Kd.js";
7
7
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
8
8
  import { D as updateLastRoute, E as resolveStorePath, a as recordInboundSession } from "./room-context-BI26wVBb.js";
9
- import { r as escapeSlackMrkdwn } from "./provider-BFnE2bgI.js";
10
- import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-BcznR9ok.js";
11
- import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-2ve_YcHy.js";
9
+ import { r as escapeSlackMrkdwn } from "./provider-C7uiI7hL.js";
10
+ import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-BjlcuiLr.js";
11
+ import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-ClYRn89v.js";
12
12
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
13
13
  import { resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
14
14
  import { createChannelMessageReplyPipeline, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-message";
15
- import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelProgressDraftGate, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveChannelProgressDraftLabel, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-streaming";
15
+ import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelProgressDraftGate, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveChannelProgressDraftLabel, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-streaming";
16
16
  import { danger, logVerbose, shouldLogVerbose, sleep } from "openclaw/plugin-sdk/runtime-env";
17
17
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
18
- import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
18
+ import { buildTtsSupplementMediaPayload, getReplyPayloadTtsSupplement, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
19
19
  import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
20
20
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
21
21
  import { resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
@@ -142,7 +142,7 @@ function createSlackDraftStream(params) {
142
142
  //#endregion
143
143
  //#region extensions/slack/src/progress-blocks.ts
144
144
  const SLACK_PROGRESS_FIELD_MAX = 1800;
145
- const SLACK_PROGRESS_DETAIL_MAX_CHARS = 48;
145
+ const DEFAULT_SLACK_PROGRESS_DETAIL_MAX_CHARS = 120;
146
146
  function field(text) {
147
147
  return {
148
148
  type: "mrkdwn",
@@ -152,26 +152,28 @@ function field(text) {
152
152
  function lineTitle(line) {
153
153
  return `${line.icon ?? "•"} *${escapeSlackMrkdwn(line.label)}*`;
154
154
  }
155
- function compactDetail(value) {
155
+ function compactDetail(value, maxChars) {
156
156
  const normalized = value.replace(/\s+/g, " ").trim();
157
157
  const chars = Array.from(normalized);
158
- if (chars.length <= SLACK_PROGRESS_DETAIL_MAX_CHARS) return normalized;
159
- const keepStart = Math.ceil((SLACK_PROGRESS_DETAIL_MAX_CHARS - 1) * .45);
160
- const keepEnd = SLACK_PROGRESS_DETAIL_MAX_CHARS - keepStart - 1;
158
+ if (chars.length <= maxChars) return normalized;
159
+ if (maxChars <= 1) return "…";
160
+ const keepStart = Math.max(1, Math.ceil((maxChars - 1) * .45));
161
+ const keepEnd = Math.max(1, maxChars - keepStart - 1);
161
162
  return `${chars.slice(0, keepStart).join("").trimEnd()}…${chars.slice(-keepEnd).join("").trimStart()}`;
162
163
  }
163
- function lineDetail(line) {
164
+ function lineDetail(line, maxChars) {
164
165
  const parts = [line.detail, line.status && !line.detail?.includes(line.status) ? line.status : void 0].map((part) => part?.trim()).filter((part) => Boolean(part));
165
- return parts.length ? escapeSlackMrkdwn(compactDetail(parts.join(" · "))) : " ";
166
+ return parts.length ? escapeSlackMrkdwn(compactDetail(parts.join(" · "), maxChars)) : " ";
166
167
  }
167
168
  function buildSlackProgressDraftBlocks(params) {
168
169
  const label = params.label?.trim();
170
+ const maxLineChars = params.maxLineChars && params.maxLineChars > 0 ? Math.floor(params.maxLineChars) : DEFAULT_SLACK_PROGRESS_DETAIL_MAX_CHARS;
169
171
  const blocks = [...label ? [{
170
172
  type: "section",
171
173
  text: field(`*${escapeSlackMrkdwn(label)}*`)
172
174
  }] : [], ...params.lines.map((line) => ({
173
175
  type: "section",
174
- fields: [field(lineTitle(line)), field(lineDetail(line))]
176
+ fields: [field(lineTitle(line)), field(lineDetail(line, maxLineChars))]
175
177
  }))].slice(-50);
176
178
  return blocks.length ? blocks : void 0;
177
179
  }
@@ -620,13 +622,14 @@ async function dispatchPreparedSlackMessage(prepared) {
620
622
  normalizeEntry: normalizeSlackAllowOwnerEntry
621
623
  });
622
624
  const senderRecipient = normalizeOptionalLowercaseString(message.user);
623
- if (pinnedMainDmOwner && senderRecipient && normalizeOptionalLowercaseString(pinnedMainDmOwner) !== senderRecipient) logVerbose(`slack: skip main-session last route for ${senderRecipient} (pinned owner ${pinnedMainDmOwner})`);
625
+ const inboundLastRouteSessionKey = resolveInboundLastRouteSessionKey({
626
+ route,
627
+ sessionKey: prepared.ctxPayload.SessionKey ?? route.sessionKey
628
+ });
629
+ if (inboundLastRouteSessionKey === route.mainSessionKey && pinnedMainDmOwner && senderRecipient && normalizeOptionalLowercaseString(pinnedMainDmOwner) !== senderRecipient) logVerbose(`slack: skip main-session last route for ${senderRecipient} (pinned owner ${pinnedMainDmOwner})`);
624
630
  else await updateLastRoute({
625
631
  storePath,
626
- sessionKey: resolveInboundLastRouteSessionKey({
627
- route,
628
- sessionKey: prepared.ctxPayload.SessionKey ?? route.sessionKey
629
- }),
632
+ sessionKey: inboundLastRouteSessionKey,
630
633
  deliveryContext: {
631
634
  channel: "slack",
632
635
  to: `user:${message.user}`,
@@ -1011,7 +1014,62 @@ async function dispatchPreparedSlackMessage(prepared) {
1011
1014
  }
1012
1015
  const reply = resolveSendableOutboundReplyParts(payload);
1013
1016
  const slackBlocks = readSlackReplyBlocks(payload);
1014
- const trimmedFinalText = reply.trimmedText;
1017
+ const ttsSupplement = getReplyPayloadTtsSupplement(payload);
1018
+ const trimmedFinalText = (payload.text ?? ttsSupplement?.spokenText ?? "").trim();
1019
+ const shouldRestoreTtsSupplementTextForPreviewFallback = Boolean(ttsSupplement) && ttsSupplement?.visibleTextAlreadyDelivered !== true && Boolean(draftStream) && !draftPreviewCommitted && previewStreamingEnabled && !payload.text?.trim();
1020
+ if (info.kind === "final" && ttsSupplement && draftStream && !draftPreviewCommitted && previewStreamingEnabled && !payload.isError && trimmedFinalText.length > 0) {
1021
+ const channelId = draftStream.channelId();
1022
+ const messageId = draftStream.messageId();
1023
+ if (channelId && messageId) {
1024
+ const finalThreadTs = usedReplyThreadTs ?? statusThreadTs;
1025
+ await draftStream.flush();
1026
+ await draftStream.seal();
1027
+ try {
1028
+ await finalizeSlackPreviewEdit({
1029
+ client: ctx.app.client,
1030
+ token: ctx.botToken,
1031
+ accountId: account.accountId,
1032
+ channelId,
1033
+ messageId,
1034
+ text: normalizeSlackOutboundText(trimmedFinalText),
1035
+ ...slackBlocks?.length ? { blocks: slackBlocks } : {},
1036
+ threadTs: finalThreadTs
1037
+ });
1038
+ } catch (err) {
1039
+ logVerbose(`slack: preview final edit failed; falling back to standard send (${formatSlackError(err)})`);
1040
+ await draftStream.discardPending();
1041
+ let delivered = false;
1042
+ try {
1043
+ await deliverNormally({
1044
+ payload: payload.text?.trim() ? payload : {
1045
+ ...payload,
1046
+ text: trimmedFinalText
1047
+ },
1048
+ kind: info.kind,
1049
+ forcedThreadTs: finalThreadTs
1050
+ });
1051
+ delivered = true;
1052
+ } finally {
1053
+ if (delivered) await draftStream.clear();
1054
+ }
1055
+ return;
1056
+ }
1057
+ draftPreviewCommitted = true;
1058
+ observedReplyDelivery = true;
1059
+ replyPlan.markSent();
1060
+ await deliverNormally({
1061
+ payload: buildTtsSupplementMediaPayload(payload),
1062
+ kind: info.kind,
1063
+ forcedThreadTs: finalThreadTs
1064
+ });
1065
+ deliveryTracker.markDelivered({
1066
+ kind: info.kind,
1067
+ payload,
1068
+ threadTs: finalThreadTs
1069
+ });
1070
+ return;
1071
+ }
1072
+ }
1015
1073
  if ((await deliverWithFinalizableLivePreviewAdapter({
1016
1074
  kind: info.kind,
1017
1075
  payload,
@@ -1031,7 +1089,7 @@ async function dispatchPreparedSlackMessage(prepared) {
1031
1089
  }
1032
1090
  } : void 0,
1033
1091
  buildFinalEdit: () => {
1034
- if (!previewStreamingEnabled || reply.hasMedia || payload.isError || trimmedFinalText.length === 0 && !slackBlocks?.length) return;
1092
+ if (!previewStreamingEnabled || reply.hasMedia && !ttsSupplement || payload.isError || trimmedFinalText.length === 0 && !slackBlocks?.length) return;
1035
1093
  return {
1036
1094
  text: normalizeSlackOutboundText(trimmedFinalText),
1037
1095
  blocks: slackBlocks,
@@ -1054,6 +1112,7 @@ async function dispatchPreparedSlackMessage(prepared) {
1054
1112
  ...edit.blocks?.length ? { blocks: edit.blocks } : {},
1055
1113
  threadTs: edit.threadTs
1056
1114
  });
1115
+ draftPreviewCommitted = true;
1057
1116
  },
1058
1117
  onPreviewFinalized: (_preview) => {
1059
1118
  draftPreviewCommitted = true;
@@ -1066,13 +1125,23 @@ async function dispatchPreparedSlackMessage(prepared) {
1066
1125
  threadTs: finalThreadTs
1067
1126
  });
1068
1127
  },
1128
+ buildSupplementalPayload: () => ttsSupplement ? buildTtsSupplementMediaPayload(payload) : void 0,
1129
+ deliverSupplemental: async (supplementalPayload) => {
1130
+ await deliverNormally({
1131
+ payload: supplementalPayload,
1132
+ kind: info.kind
1133
+ });
1134
+ },
1069
1135
  logPreviewEditFailure: (err) => {
1070
1136
  logVerbose(`slack: preview final edit failed; falling back to standard send (${formatSlackError(err)})`);
1071
1137
  }
1072
1138
  }),
1073
1139
  deliverNormally: async () => {
1074
1140
  await deliverNormally({
1075
- payload,
1141
+ payload: shouldRestoreTtsSupplementTextForPreviewFallback ? {
1142
+ ...payload,
1143
+ text: ttsSupplement?.spokenText
1144
+ } : payload,
1076
1145
  kind: info.kind
1077
1146
  });
1078
1147
  }
@@ -1130,7 +1199,8 @@ async function dispatchPreparedSlackMessage(prepared) {
1130
1199
  entry: account.config,
1131
1200
  seed: progressSeed
1132
1201
  }),
1133
- lines: previewToolProgressLines
1202
+ lines: previewToolProgressLines,
1203
+ maxLineChars: resolveChannelProgressDraftMaxLineChars(account.config)
1134
1204
  })
1135
1205
  } : previewText);
1136
1206
  hasStreamedMessage = true;
@@ -1367,7 +1437,7 @@ async function dispatchPreparedSlackMessage(prepared) {
1367
1437
  if (dispatchError) throw dispatchError;
1368
1438
  const participationThreadTs = usedReplyThreadTs ?? statusThreadTs;
1369
1439
  if (anyReplyDelivered && participationThreadTs) recordSlackThreadParticipation(account.accountId, message.channel, participationThreadTs, { agentId: route.agentId });
1370
- if (!anyReplyDelivered) {
1440
+ if (!anyReplyDelivered && !draftPreviewCommitted) {
1371
1441
  await draftStream?.clear();
1372
1442
  return;
1373
1443
  }
@@ -1,4 +1,4 @@
1
- import { n as listSlackAccountIds, r as mergeSlackAccountConfig } from "./accounts-yk5K3wQU.js";
1
+ import { n as listSlackAccountIds, r as mergeSlackAccountConfig } from "./accounts-Cbw3i3Sa.js";
2
2
  import { r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-D2cWOLZV.js";
3
3
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
4
4
  //#region extensions/slack/src/http/plugin-routes.ts
@@ -1,12 +1,12 @@
1
- import { l as resolveSlackReplyToMode } from "./accounts-yk5K3wQU.js";
1
+ import { l as resolveSlackReplyToMode } from "./accounts-Cbw3i3Sa.js";
2
2
  import { r as parseSlackTarget } from "./target-parsing-CQmv-iSm.js";
3
3
  import "./targets-B1tYCAr6.js";
4
4
  import { i as normalizeSlackAllowOwnerEntry, o as resolveSlackAllowListMatch, r as normalizeAllowListLower } from "./allow-list-nwXs_eCP.js";
5
- import { i as hasSlackThreadParticipationWithPersistence, t as sendMessageSlack } from "./send-C5PzphgC.js";
6
- import { _ as resolveSlackThreadStarter, g as resolveSlackThreadHistory, l as reactSlackMessage, y as formatSlackFileReference } from "./actions-Chs6DbrP.js";
5
+ import { i as hasSlackThreadParticipationWithPersistence, t as sendMessageSlack } from "./send-Br_H5f6H.js";
6
+ import { _ as resolveSlackThreadStarter, g as resolveSlackThreadHistory, l as reactSlackMessage, y as formatSlackFileReference } from "./actions-vFq9T_Kd.js";
7
7
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
8
8
  import { C as resolveChannelContextVisibilityMode, E as resolveStorePath, S as readSessionUpdatedAt, _ as resolveSlackChatType, c as authorizeSlackBotRoomMessage, d as resolveSlackEffectiveAllowFrom, f as buildSlackAssistantThreadMetadata, g as normalizeSlackChannelType, j as stripSlackMentionsForCommandDetection, m as parseSlackAssistantThreadMetadata, n as authorizeSlackDirectMessage, o as resolveConversationLabel$1, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, v as resolveSlackChannelConfig } from "./room-context-BI26wVBb.js";
9
- import "./send.runtime-DsEXD6MR.js";
9
+ import "./send.runtime-CjgsYARn.js";
10
10
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
11
11
  import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
12
12
  import { resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-message";
@@ -30,7 +30,7 @@ const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
30
30
  const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
31
31
  let slackMediaModulePromise$1;
32
32
  function loadSlackMediaModule$1() {
33
- slackMediaModulePromise$1 ??= import("./actions-Chs6DbrP.js").then((n) => n.h);
33
+ slackMediaModulePromise$1 ??= import("./actions-vFq9T_Kd.js").then((n) => n.h);
34
34
  return slackMediaModulePromise$1;
35
35
  }
36
36
  function collectUniqueSlackMentionIds$1(texts) {
@@ -578,7 +578,7 @@ function formatSlackBotStarterThreadLabel(params) {
578
578
  //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
579
579
  let slackMediaModulePromise;
580
580
  function loadSlackMediaModule() {
581
- slackMediaModulePromise ??= import("./actions-Chs6DbrP.js").then((n) => n.h);
581
+ slackMediaModulePromise ??= import("./actions-vFq9T_Kd.js").then((n) => n.h);
582
582
  return slackMediaModulePromise;
583
583
  }
584
584
  const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
@@ -1672,6 +1672,10 @@ async function prepareSlackMessage(params) {
1672
1672
  const replyTarget = isDirectMessage ? `channel:${message.channel}` : ctxPayload.To ?? void 0;
1673
1673
  if (!replyTarget) return null;
1674
1674
  if (shouldLogVerbose()) logVerbose(`slack inbound: channel=${message.channel} from=${slackFrom} preview="${preview}"`);
1675
+ const updateLastRouteSessionKey = resolveInboundLastRouteSessionKey({
1676
+ route,
1677
+ sessionKey
1678
+ });
1675
1679
  return {
1676
1680
  ctx,
1677
1681
  account,
@@ -1684,15 +1688,12 @@ async function prepareSlackMessage(params) {
1684
1688
  storePath,
1685
1689
  record: {
1686
1690
  updateLastRoute: isDirectMessage ? {
1687
- sessionKey: resolveInboundLastRouteSessionKey({
1688
- route,
1689
- sessionKey
1690
- }),
1691
+ sessionKey: updateLastRouteSessionKey,
1691
1692
  channel: "slack",
1692
1693
  to: `user:${message.user}`,
1693
1694
  accountId: route.accountId,
1694
1695
  threadId: effectiveMessageThreadId,
1695
- mainDmOwnerPin: pinnedMainDmOwner && message.user ? {
1696
+ mainDmOwnerPin: updateLastRouteSessionKey === route.mainSessionKey && pinnedMainDmOwner && message.user ? {
1696
1697
  ownerRecipient: pinnedMainDmOwner,
1697
1698
  senderRecipient: normalizeLowercaseStringOrEmpty(message.user),
1698
1699
  onSkip: ({ ownerRecipient, senderRecipient }) => {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
- import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
2
+ import { r as createSlackWebClient } from "./client-Dr7pteMR.js";
3
3
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
4
4
  import { withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
5
5
  //#region extensions/slack/src/probe.ts
@@ -1,13 +1,13 @@
1
- import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-yk5K3wQU.js";
2
- import { i as isSlackApprovalAuthorizedSender, o as isSlackExecApprovalAuthorizedSender, s as isSlackExecApprovalClientEnabled } from "./reply-blocks-BFaJ_ejG.js";
3
- import "./blocks-render-BAVfd6r0.js";
1
+ import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-Cbw3i3Sa.js";
2
+ import { i as isSlackApprovalAuthorizedSender, o as isSlackExecApprovalAuthorizedSender, s as isSlackExecApprovalClientEnabled } from "./reply-blocks-DgUdywKU.js";
3
+ import "./blocks-render-ziYgM0qF.js";
4
4
  import { o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-As_dcNbD.js";
5
- import { c as resolveSlackWebClientOptions } from "./client-C_IaJbi5.js";
5
+ import { c as resolveSlackWebClientOptions } from "./client-Dr7pteMR.js";
6
6
  import { n as normalizeAllowList, r as normalizeAllowListLower, t as allowListMatches } from "./allow-list-nwXs_eCP.js";
7
7
  import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-D2cWOLZV.js";
8
8
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
9
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
10
- import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
9
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-gx65A1PR.js";
10
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-OknHaiRY.js";
11
11
  import { A as resolveSlackSlashCommandConfig, O as warnMissingProviderGroupPolicyFallbackOnce, T as resolveOpenProviderRuntimeGroupPolicy, _ as resolveSlackChatType, b as getRuntimeConfig$1, d as resolveSlackEffectiveAllowFrom, f as buildSlackAssistantThreadMetadata, g as normalizeSlackChannelType, h as isSlackChannelAllowedByPolicy, i as parsePluginBindingApprovalCustomId, j as stripSlackMentionsForCommandDetection, k as buildSlackSlashCommandMatcher, l as authorizeSlackSystemEventSender, n as authorizeSlackDirectMessage, p as createSlackMonitorContext, r as buildPluginBindingResolvedText, s as resolvePluginConversationBindingApproval, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, v as resolveSlackChannelConfig, w as resolveDefaultGroupPolicy, x as isDangerousNameMatchingEnabled, y as resolveSlackChannelLabel } from "./room-context-BI26wVBb.js";
12
12
  import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
13
13
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -1875,7 +1875,7 @@ function createSlackThreadTsResolver(params) {
1875
1875
  //#region extensions/slack/src/monitor/message-handler.ts
1876
1876
  let slackMessagePipelinePromise;
1877
1877
  function loadSlackMessagePipeline() {
1878
- slackMessagePipelinePromise ??= import("./pipeline.runtime-Bq754VH8.js");
1878
+ slackMessagePipelinePromise ??= import("./pipeline.runtime-COwSmZG5.js");
1879
1879
  return slackMessagePipelinePromise;
1880
1880
  }
1881
1881
  const APP_MENTION_RETRY_TTL_MS = 6e4;
@@ -2417,7 +2417,7 @@ function loadSlashCommandsRuntime() {
2417
2417
  return slashCommandsRuntimePromise;
2418
2418
  }
2419
2419
  function loadSlashDispatchRuntime() {
2420
- slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-CcbE1HtP.js");
2420
+ slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-DYm6lWN8.js");
2421
2421
  return slashDispatchRuntimePromise;
2422
2422
  }
2423
2423
  function loadSlackPluginCommandsRuntime() {
@@ -1,7 +1,7 @@
1
- import { t as resolveSlackReplyBlocks } from "./reply-blocks-BFaJ_ejG.js";
1
+ import { t as resolveSlackReplyBlocks } from "./reply-blocks-DgUdywKU.js";
2
2
  import { o as SLACK_TEXT_LIMIT } from "./thread-ts-As_dcNbD.js";
3
- import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-C5PzphgC.js";
4
- import "./send.runtime-DsEXD6MR.js";
3
+ import { o as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-Br_H5f6H.js";
4
+ import "./send.runtime-CjgsYARn.js";
5
5
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
6
6
  import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
7
7
  import { deliverTextOrMediaReply, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
@@ -1,5 +1,5 @@
1
- import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-yk5K3wQU.js";
2
- import { t as buildSlackInteractiveBlocks } from "./blocks-render-BAVfd6r0.js";
1
+ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-Cbw3i3Sa.js";
2
+ import { n as buildSlackPresentationBlocks, r as resolveSlackInteractiveBlockOffsets, t as buildSlackInteractiveBlocks } from "./blocks-render-ziYgM0qF.js";
3
3
  import { i as parseSlackBlocksInput } from "./thread-ts-As_dcNbD.js";
4
4
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
5
5
  import { normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -123,10 +123,15 @@ function resolveSlackGroupToolPolicy(params) {
123
123
  //#region extensions/slack/src/reply-blocks.ts
124
124
  function resolveSlackReplyBlocks(payload) {
125
125
  const slackData = payload.channelData?.slack;
126
- const interactiveBlocks = buildSlackInteractiveBlocks(payload.interactive);
127
126
  let channelBlocks = [];
128
127
  if (slackData && typeof slackData === "object" && !Array.isArray(slackData)) channelBlocks = parseSlackBlocksInput(slackData.blocks) ?? [];
129
- const blocks = [...channelBlocks, ...interactiveBlocks];
128
+ const presentationBlocks = buildSlackPresentationBlocks(payload.presentation, resolveSlackInteractiveBlockOffsets(channelBlocks));
129
+ const interactiveBlocks = buildSlackInteractiveBlocks(payload.interactive, resolveSlackInteractiveBlockOffsets([...channelBlocks, ...presentationBlocks]));
130
+ const blocks = [
131
+ ...channelBlocks,
132
+ ...presentationBlocks,
133
+ ...interactiveBlocks
134
+ ];
130
135
  if (blocks.length > 50) throw new Error(`Slack blocks cannot exceed 50 items after interactive render`);
131
136
  return blocks.length > 0 ? blocks : void 0;
132
137
  }
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
- import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
2
+ import { r as createSlackWebClient } from "./client-Dr7pteMR.js";
3
3
  import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-DLub2I2i.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-CiIaOW0V.js";
2
- import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
2
+ import { r as createSlackWebClient } from "./client-Dr7pteMR.js";
3
3
  import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-DLub2I2i.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-CQmv-iSm.js";
2
- import "./client-C_IaJbi5.js";
2
+ import "./client-Dr7pteMR.js";
3
3
  import "./config-api-CmgE_ORg.js";
4
4
  import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readNumberParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
5
5
  import "openclaw/plugin-sdk/account-id";
@@ -1,14 +1,14 @@
1
- import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-yk5K3wQU.js";
2
- import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-BFaJ_ejG.js";
1
+ import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-Cbw3i3Sa.js";
2
+ import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-DgUdywKU.js";
3
3
  import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
4
- import { t as sendMessageSlack } from "./send-C5PzphgC.js";
5
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-Chs6DbrP.js";
6
- import { t as probeSlack } from "./probe-FL4sUJsH.js";
7
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
8
- import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
9
- import { t as monitorSlackProvider } from "./provider-BFnE2bgI.js";
10
- import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CRnfsTTX.js";
11
- import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-0RLkDKyA.js";
12
- import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-CZPzpQZF.js";
13
- import "./monitor-BhEzWuv0.js";
4
+ import { t as sendMessageSlack } from "./send-Br_H5f6H.js";
5
+ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-vFq9T_Kd.js";
6
+ import { t as probeSlack } from "./probe-DDef8MfR.js";
7
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-gx65A1PR.js";
8
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-OknHaiRY.js";
9
+ import { t as monitorSlackProvider } from "./provider-C7uiI7hL.js";
10
+ import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-hrKOqBIn.js";
11
+ import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-DgzkekLM.js";
12
+ import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-BnN4Zawp.js";
13
+ import "./monitor-beou_Rl6.js";
14
14
  export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
@@ -1,4 +1,4 @@
1
- import { r as createSlackWebClient } from "./client-C_IaJbi5.js";
1
+ import { r as createSlackWebClient } from "./client-Dr7pteMR.js";
2
2
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
3
3
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/slack/src/scopes.ts
@@ -1,10 +1,10 @@
1
- import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-yk5K3wQU.js";
1
+ import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-Cbw3i3Sa.js";
2
2
  import { r as parseSlackTarget } from "./target-parsing-CQmv-iSm.js";
3
3
  import "./targets-B1tYCAr6.js";
4
4
  import { a as validateSlackBlocksArray, o as SLACK_TEXT_LIMIT, s as truncateSlackText, t as normalizeSlackThreadTsCandidate } from "./thread-ts-As_dcNbD.js";
5
- import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-C_IaJbi5.js";
5
+ import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-Dr7pteMR.js";
6
6
  import { t as getOptionalSlackRuntime } from "./runtime-DQxkf7k2.js";
7
- import { i as loadOutboundMediaFromUrl } from "./runtime-api-B5HGOzX3.js";
7
+ import { i as loadOutboundMediaFromUrl } from "./runtime-api-D3pvtood.js";
8
8
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-message";
10
10
  import { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
@@ -0,0 +1,2 @@
1
+ import { t as sendMessageSlack } from "./send-Br_H5f6H.js";
2
+ export { sendMessageSlack };
@@ -0,0 +1,2 @@
1
+ import "./send-Br_H5f6H.js";
2
+ export {};
@@ -1,5 +1,5 @@
1
- import { a as resolveSlackAccount } from "./accounts-yk5K3wQU.js";
2
- import { t as inspectSlackAccount } from "./account-inspect-BJyQLSkN.js";
1
+ import { a as resolveSlackAccount } from "./accounts-Cbw3i3Sa.js";
2
+ import { t as inspectSlackAccount } from "./account-inspect-uMPQ6wIu.js";
3
3
  import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createEnvPatchedAccountSetupAdapter, createLegacyCompatChannelDmPolicy, createSetupTranslator, createStandardChannelSetupStatus, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
@@ -1,2 +1,2 @@
1
- import { t as slackSetupPlugin } from "./channel.setup-qGOC05UK.js";
1
+ import { t as slackSetupPlugin } from "./channel.setup-C2_IZ9It.js";
2
2
  export { slackSetupPlugin };
@@ -1,8 +1,8 @@
1
- import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-yk5K3wQU.js";
2
- import "./shared-BuNoOmas.js";
3
- import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-az0LCrNr.js";
4
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
5
- import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
1
+ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-Cbw3i3Sa.js";
2
+ import "./shared-DdgQfBV9.js";
3
+ import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-BRD65LS_.js";
4
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-gx65A1PR.js";
5
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-OknHaiRY.js";
6
6
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
7
7
  import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
8
8
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
@@ -1,9 +1,9 @@
1
- import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy } from "./accounts-yk5K3wQU.js";
2
- import { t as inspectSlackAccount } from "./account-inspect-BJyQLSkN.js";
3
- import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-BSg5hXhj.js";
4
- import { f as getChatChannelMeta } from "./client-C_IaJbi5.js";
5
- import { i as SLACK_CHANNEL } from "./setup-core-az0LCrNr.js";
6
- import { t as SlackChannelConfigSchema } from "./config-schema-CNRousxw.js";
1
+ import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy } from "./accounts-Cbw3i3Sa.js";
2
+ import { t as inspectSlackAccount } from "./account-inspect-uMPQ6wIu.js";
3
+ import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-B1wwXeVn.js";
4
+ import { f as getChatChannelMeta } from "./client-Dr7pteMR.js";
5
+ import { i as SLACK_CHANNEL } from "./setup-core-BRD65LS_.js";
6
+ import { t as SlackChannelConfigSchema } from "./config-schema-C8tW0Db0.js";
7
7
  import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-B8QIWMs1.js";
8
8
  import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-0TL3L5Kb.js";
9
9
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
@@ -1,4 +1,4 @@
1
- import { r as deliverSlackSlashReplies$1 } from "./replies-2ve_YcHy.js";
1
+ import { r as deliverSlackSlashReplies$1 } from "./replies-ClYRn89v.js";
2
2
  import { resolveAgentRoute as resolveAgentRoute$1 } from "openclaw/plugin-sdk/routing";
3
3
  import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
4
4
  import { recordInboundSessionMetaSafe as recordInboundSessionMetaSafe$1, resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
package/dist/test-api.js CHANGED
@@ -1,8 +1,8 @@
1
- import { a as createSlackActions, t as slackPlugin } from "./channel-DUS8ZO45.js";
1
+ import { a as createSlackActions, t as slackPlugin } from "./channel-D9Wzqu3W.js";
2
2
  import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
3
- import { t as sendMessageSlack } from "./send-C5PzphgC.js";
4
- import { t as prepareSlackMessage } from "./prepare-BcznR9ok.js";
3
+ import { t as sendMessageSlack } from "./send-Br_H5f6H.js";
4
+ import { t as prepareSlackMessage } from "./prepare-BjlcuiLr.js";
5
5
  import { t as createInboundSlackTestContext } from "./prepare.test-helpers-D807wdul.js";
6
- import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-C7Izm95Q.js";
7
- import { n as slackOutbound } from "./outbound-adapter-BoDXPksS.js";
6
+ import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-B8N8U_AA.js";
7
+ import { n as slackOutbound } from "./outbound-adapter-Dcy9jZv1.js";
8
8
  export { createInboundSlackTestContext, createSlackActions, createSlackOutboundPayloadHarness, prepareSlackMessage, sendMessageSlack, setSlackRuntime, slackOutbound, slackPlugin };
@@ -672,6 +672,11 @@
672
672
  "exclusiveMinimum": 0,
673
673
  "maximum": 9007199254740991
674
674
  },
675
+ "maxLineChars": {
676
+ "type": "integer",
677
+ "exclusiveMinimum": 0,
678
+ "maximum": 9007199254740991
679
+ },
675
680
  "render": {
676
681
  "type": "string",
677
682
  "enum": [
@@ -1819,6 +1824,11 @@
1819
1824
  "exclusiveMinimum": 0,
1820
1825
  "maximum": 9007199254740991
1821
1826
  },
1827
+ "maxLineChars": {
1828
+ "type": "integer",
1829
+ "exclusiveMinimum": 0,
1830
+ "maximum": 9007199254740991
1831
+ },
1822
1832
  "render": {
1823
1833
  "type": "string",
1824
1834
  "enum": [
@@ -2487,6 +2497,10 @@
2487
2497
  "label": "Slack Progress Max Lines",
2488
2498
  "help": "Maximum number of compact progress lines to keep below the draft label (default: 8)."
2489
2499
  },
2500
+ "streaming.progress.maxLineChars": {
2501
+ "label": "Slack Progress Max Line Chars",
2502
+ "help": "Maximum characters per compact progress line before truncation (default: 120). Prose cuts at word boundaries; commands and paths keep useful suffixes."
2503
+ },
2490
2504
  "streaming.progress.render": {
2491
2505
  "label": "Slack Progress Renderer",
2492
2506
  "help": "Progress draft renderer: \"text\" uses one portable text body; \"rich\" renders structured Slack Block Kit fields with the same text fallback."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/slack",
3
- "version": "2026.5.16-beta.4",
3
+ "version": "2026.5.16-beta.6",
4
4
  "description": "OpenClaw Slack channel plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  "openclaw": "workspace:*"
21
21
  },
22
22
  "peerDependencies": {
23
- "openclaw": ">=2026.5.16-beta.4"
23
+ "openclaw": ">=2026.5.16-beta.6"
24
24
  },
25
25
  "peerDependenciesMeta": {
26
26
  "openclaw": {
@@ -65,10 +65,10 @@
65
65
  "allowInvalidConfigRecovery": true
66
66
  },
67
67
  "compat": {
68
- "pluginApi": ">=2026.5.16-beta.4"
68
+ "pluginApi": ">=2026.5.16-beta.6"
69
69
  },
70
70
  "build": {
71
- "openclawVersion": "2026.5.16-beta.4",
71
+ "openclawVersion": "2026.5.16-beta.6",
72
72
  "bundledDist": false
73
73
  },
74
74
  "release": {
@@ -1,2 +0,0 @@
1
- import { a as resolveSlackAccount } from "./accounts-yk5K3wQU.js";
2
- export { resolveSlackAccount };
@@ -1,2 +0,0 @@
1
- import { t as handleSlackAction } from "./action-runtime-0RLkDKyA.js";
2
- export { handleSlackAction };
@@ -1,2 +0,0 @@
1
- import { t as sendMessageSlack } from "./send-C5PzphgC.js";
2
- export { sendMessageSlack };
@@ -1,2 +0,0 @@
1
- import "./send-C5PzphgC.js";
2
- export {};