@openclaw/slack 2026.8.33 → 2026.8.34

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 (26) hide show
  1. package/dist/.setup/{action-runtime-C_G4J1MV.mjs → action-runtime-Ddpb2CZS.mjs} +4 -4
  2. package/dist/.setup/action-runtime.runtime-Beq7Am11.mjs +2 -0
  3. package/dist/.setup/{actions-8uuOLGDR.mjs → actions-DV3J6OB-.mjs} +2 -2
  4. package/dist/.setup/{approval-handler.runtime-Bj-Kl-Ak.mjs → approval-handler.runtime-rEYfeaG_.mjs} +13 -8
  5. package/dist/.setup/{channel-Dmbj_FF6.mjs → channel-Bpv8aTo8.mjs} +13 -9
  6. package/dist/.setup/{channel-type-CncPqtvr.mjs → channel-type-CrwjkeJT.mjs} +1 -1
  7. package/dist/.setup/{group-policy-9pMyFFRP.mjs → group-policy-5epvX6Dt.mjs} +1 -1
  8. package/dist/.setup/{monitor-t4yqSbLZ.mjs → monitor-BnckzNnh.mjs} +3 -3
  9. package/dist/.setup/{outbound-adapter-CIO-lnfQ.mjs → outbound-adapter-Ic_fTJof.mjs} +2 -2
  10. package/dist/.setup/{pipeline.runtime-xjOJ8ltM.mjs → pipeline.runtime-D4MRWgXI.mjs} +8 -8
  11. package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
  12. package/dist/.setup/{policy-CpLMTEad.mjs → policy-BxGXCr2q.mjs} +1 -1
  13. package/dist/.setup/{provider-1mRMBuV5.mjs → provider-DGNYrXQN.mjs} +8 -8
  14. package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
  15. package/dist/.setup/{relay-source-DiUZ6ltP.mjs → relay-source-BgJo9sZ_.mjs} +1 -1
  16. package/dist/.setup/{replies-Cpng2F6w.mjs → replies-BRmyMlAE.mjs} +3 -3
  17. package/dist/.setup/{send-CBfhmYDj.mjs → send-DN8vdkyi.mjs} +1 -1
  18. package/dist/.setup/{send.runtime-BTyALMiN.mjs → send.runtime-CtIhzzZU.mjs} +1 -1
  19. package/dist/.setup/{slash-dispatch.runtime-D5WAai-5.mjs → slash-dispatch.runtime-CZZBmmE3.mjs} +1 -1
  20. package/dist/api.js +7 -7
  21. package/dist/channel-plugin-api.js +1 -1
  22. package/dist/http-routes-api.js +1 -1
  23. package/dist/index.js +1 -1
  24. package/dist/runtime-api.js +7 -7
  25. package/package.json +4 -4
  26. package/dist/.setup/action-runtime.runtime-DldZIYpL.mjs +0 -2
@@ -1,7 +1,7 @@
1
1
  import { a as parseSlackTarget, n as formatSlackTarget, o as resolveSlackChannelId } from "./target-parsing-PbxGDbr9.mjs";
2
2
  import { t as slackContextTargetsMatch } from "./targets-BlQcnjPc.mjs";
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-9pMyFFRP.mjs";
4
- import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-CpLMTEad.mjs";
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-5epvX6Dt.mjs";
4
+ import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-BxGXCr2q.mjs";
5
5
  import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.mjs";
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-8uuOLGDR.mjs").then((n) => n.t));
30
+ const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-DV3J6OB-.mjs").then((n) => n.t));
31
31
  const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-BpWv-6-2.mjs"));
32
- const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-CncPqtvr.mjs").then((n) => n.t));
32
+ const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-CrwjkeJT.mjs").then((n) => n.t));
33
33
  function createLazySlackAction(key) {
34
34
  return (async (...args) => {
35
35
  const action = (await loadSlackActionsRuntime())[key];
@@ -0,0 +1,2 @@
1
+ import { t as handleSlackAction } from "./action-runtime-Ddpb2CZS.mjs";
2
+ export { handleSlackAction };
@@ -1,9 +1,9 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
2
  import { a as resolveSlackAccount, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId } from "./accounts-C1FspRF-.mjs";
3
3
  import { n as formatSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
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-9pMyFFRP.mjs";
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-5epvX6Dt.mjs";
5
5
  import { m as getSlackWriteClient, s as createSlackLookupClient } from "./probe-DnWN6oBa.mjs";
6
- import { m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-CBfhmYDj.mjs";
6
+ import { m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-DN8vdkyi.mjs";
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";
@@ -1,6 +1,6 @@
1
1
  import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
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-9pMyFFRP.mjs";
3
- import { r as sendMessageSlack } from "./send-CBfhmYDj.mjs";
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-5epvX6Dt.mjs";
3
+ import { r as sendMessageSlack } from "./send-DN8vdkyi.mjs";
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 approvalName = isPlugin ? "Plugin" : "Exec";
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: `*Command*\n${buildSlackCodeBlock(truncateSlackMrkdwn(view.commandText, 2600))}`
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: ["exec", "plugin"],
159
+ eventKinds: [
160
+ "exec",
161
+ "plugin",
162
+ "system-agent"
163
+ ],
159
164
  availability: {
160
165
  isConfigured: (params) => {
161
166
  const resolved = resolveHandlerContext(params);
@@ -3,12 +3,12 @@ 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-shed4O6L.mjs";
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.mjs";
5
5
  import { t as slackContextTargetsMatch } from "./targets-BlQcnjPc.mjs";
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-9pMyFFRP.mjs";
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-5epvX6Dt.mjs";
7
7
  import { m as getSlackWriteClient, o as formatSlackError } from "./probe-DnWN6oBa.mjs";
8
8
  import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.mjs";
9
9
  import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-CBtuGn2d.mjs";
10
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-DWQcLrb8.mjs";
11
- import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-CncPqtvr.mjs";
11
+ import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-CrwjkeJT.mjs";
12
12
  import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
13
13
  import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-CTV8N2nI.mjs";
14
14
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
@@ -126,7 +126,11 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
126
126
  resolveApproverDmTargets: resolveSlackApproverDmTargets,
127
127
  notifyOriginWhenDmOnly: true,
128
128
  nativeRuntime: createLazyChannelApprovalNativeRuntimeAdapter({
129
- eventKinds: ["exec", "plugin"],
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-Bj-Kl-Ak.mjs")).slackApprovalNativeRuntime
144
+ load: async () => (await import("./approval-handler.runtime-rEYfeaG_.mjs")).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-DldZIYpL.mjs"));
428
+ const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-Beq7Am11.mjs"));
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 {
@@ -565,7 +569,7 @@ const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SH
565
569
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
566
570
  const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BcIT0kDT.mjs"));
567
571
  const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-Dcgl9Nme.mjs"));
568
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-CIO-lnfQ.mjs"));
572
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-Ic_fTJof.mjs"));
569
573
  async function resolveSlackHandleAction() {
570
574
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
571
575
  }
@@ -575,10 +579,10 @@ function shouldTreatSlackDeliveredTextAsVisible(params) {
575
579
  const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-CW4ICy0y.mjs").then((n) => n.t));
576
580
  const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-Dpv7OyKO.mjs").then((n) => n.n));
577
581
  const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DmyA3D_2.mjs").then((n) => n.n));
578
- const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-DldZIYpL.mjs"));
579
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-BTyALMiN.mjs"));
582
+ const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-Beq7Am11.mjs"));
583
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-CtIhzzZU.mjs"));
580
584
  const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-DnWN6oBa.mjs").then((n) => n.n));
581
- const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-t4yqSbLZ.mjs").then((n) => n.t));
585
+ const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-BnckzNnh.mjs").then((n) => n.t));
582
586
  const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-C2hI1rq1.mjs").then((n) => n.t));
583
587
  async function setSlackHeartbeatThreadStatus(params) {
584
588
  const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
2
  import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-C1FspRF-.mjs";
3
- import { c as assertSlackDetachedTargetAllowed } from "./group-policy-9pMyFFRP.mjs";
3
+ import { c as assertSlackDetachedTargetAllowed } from "./group-policy-5epvX6Dt.mjs";
4
4
  import { C as normalizeAllowListLower, c as createSlackReadClient, d as createSlackWebClient } from "./probe-DnWN6oBa.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { createHash } from "node:crypto";
@@ -493,7 +493,7 @@ function decodeSlackApprovalAction(value) {
493
493
  const decoded = JSON.parse(value.slice(21));
494
494
  if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) return null;
495
495
  const record = decoded;
496
- if (Object.keys(record).length !== 3 || typeof record.approvalId !== "string" || record.approvalId.length === 0 || record.approvalKind !== "exec" && record.approvalKind !== "plugin" || !isApprovalDecision(record.decision)) return null;
496
+ if (Object.keys(record).length !== 3 || typeof record.approvalId !== "string" || record.approvalId.length === 0 || record.approvalKind !== "exec" && record.approvalKind !== "plugin" && record.approvalKind !== "system-agent" || !isApprovalDecision(record.decision)) return null;
497
497
  return {
498
498
  type: "approval",
499
499
  approvalId: record.approvalId,
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
- import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-1mRMBuV5.mjs";
3
- import { t as isSlackChannelAllowedByPolicy } from "./policy-CpLMTEad.mjs";
4
- import { o as resolveSlackThreadTs } from "./replies-Cpng2F6w.mjs";
2
+ import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-DGNYrXQN.mjs";
3
+ import { t as isSlackChannelAllowedByPolicy } from "./policy-BxGXCr2q.mjs";
4
+ import { o as resolveSlackThreadTs } from "./replies-BRmyMlAE.mjs";
5
5
  //#region extensions/slack/src/monitor.ts
6
6
  var monitor_exports = /* @__PURE__ */ __exportAll({
7
7
  buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
@@ -1,6 +1,6 @@
1
1
  import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-C1FspRF-.mjs";
2
2
  import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
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-9pMyFFRP.mjs";
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-5epvX6Dt.mjs";
4
4
  import { n as resolveSlackThreadTsValue } from "./thread-ts-DUGhaYKq.mjs";
5
5
  import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.mjs";
6
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -51,7 +51,7 @@ function readSlackRenderedPresentation(slackData) {
51
51
  return;
52
52
  }
53
53
  }
54
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-BTyALMiN.mjs"));
54
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-CtIhzzZU.mjs"));
55
55
  function resolveSlackSendIdentity(identity) {
56
56
  if (!identity) return;
57
57
  const username = normalizeOptionalString(identity.name);
@@ -1,13 +1,13 @@
1
1
  import { n as resolveSlackConversationBindingRoute, r as resolveSlackReplyToMode, t as normalizeSlackRouteBindingConfig } from "./conversation-binding-route-shed4O6L.mjs";
2
2
  import { n as formatSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
3
- import { I as countSlackTextUtf8Bytes, L as truncateSlackText, M as SLACK_TEXT_LIMIT, Q as normalizeSlackOutboundText, R as truncateSlackTextByUtf8Bytes, T as buildSlackBlocksFallbackText, U as SLACK_SESSION_LINK_ACTION_ID, a as qualifySlackConversationId, b as hasSlackNativeDataBlock, et as escapeSlackMrkdwn, k as SLACK_EDIT_TEXT_MAX_BYTES, m as resolveSlackReplyRenderPlan, o as qualifySlackRoutePeerId, s as resolveSlackEnterpriseMainDmSessionKey } from "./group-policy-9pMyFFRP.mjs";
3
+ import { I as countSlackTextUtf8Bytes, L as truncateSlackText, M as SLACK_TEXT_LIMIT, Q as normalizeSlackOutboundText, R as truncateSlackTextByUtf8Bytes, T as buildSlackBlocksFallbackText, U as SLACK_SESSION_LINK_ACTION_ID, a as qualifySlackConversationId, b as hasSlackNativeDataBlock, et as escapeSlackMrkdwn, k as SLACK_EDIT_TEXT_MAX_BYTES, m as resolveSlackReplyRenderPlan, o as qualifySlackRoutePeerId, s as resolveSlackEnterpriseMainDmSessionKey } from "./group-policy-5epvX6Dt.mjs";
4
4
  import { C as normalizeAllowListLower, E as resolveSlackAllowListMatch, o as formatSlackError, w as normalizeSlackAllowOwnerEntry } from "./probe-DnWN6oBa.mjs";
5
5
  import { n as resolveSlackStreamingMode, t as resolveSlackNativeStreaming } from "./streaming-compat-B-e0mqM0.mjs";
6
- import { D as resolveSlackMessageText$1, E as resolveSlackBlocksText, O as buildSlackEditTextPayload, S as formatSlackFileReferenceList, T as isSlackUnfurlAttachment, a as editSlackRenderedMessage, d as reactSlackMessage, i as editSlackMessage, m as removeSlackReaction, n as deleteSlackMessage, v as logVerbose$1, w as hasSlackTableBlock, x as formatSlackFileReference } from "./actions-8uuOLGDR.mjs";
7
- import { c as hasSlackThreadFailureNotice, d as recordSlackThreadFailureNotice, f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, m as buildSlackNativeDataDeliveryPlan, o as clearSlackThreadFailureNotice, r as sendMessageSlack, u as hasSlackThreadParticipationWithPersistence } from "./send-CBfhmYDj.mjs";
8
- import { C as resolveStorePath, E as stripSlackMentionsForCommandDetection, S as resolveChannelResetConfig, _ as resolveSlackChatType, b as readSessionUpdatedAt, c as resolveSlackThreadTargets, d as authorizeSlackBotRoomMessage, f as resolveSlackCommandIngress, g as normalizeSlackChannelType, l as trackSlackDraftMessage, o as authorizeSlackDirectMessage, p as resolveSlackEffectiveAllowFrom, r as resolveSlackRoomContextHints, s as resolveSlackThreadContext, u as resolveConversationLabel$1, v as buildSlackAssistantThreadMetadata, w as updateLastRoute, x as resolveChannelContextVisibilityMode, y as parseSlackAssistantThreadMetadata } from "./provider-1mRMBuV5.mjs";
9
- import { n as resolveSlackChannelConfig } from "./policy-CpLMTEad.mjs";
10
- import { a as resolveDeliveredSlackReplyThreadTs, c as emitSlackMessageSentHooks, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, s as sanitizeSlackMonitorReplyPayload, t as createSlackReplyDeliveryPlan } from "./replies-Cpng2F6w.mjs";
6
+ import { D as resolveSlackMessageText$1, E as resolveSlackBlocksText, O as buildSlackEditTextPayload, S as formatSlackFileReferenceList, T as isSlackUnfurlAttachment, a as editSlackRenderedMessage, d as reactSlackMessage, i as editSlackMessage, m as removeSlackReaction, n as deleteSlackMessage, v as logVerbose$1, w as hasSlackTableBlock, x as formatSlackFileReference } from "./actions-DV3J6OB-.mjs";
7
+ import { c as hasSlackThreadFailureNotice, d as recordSlackThreadFailureNotice, f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, m as buildSlackNativeDataDeliveryPlan, o as clearSlackThreadFailureNotice, r as sendMessageSlack, u as hasSlackThreadParticipationWithPersistence } from "./send-DN8vdkyi.mjs";
8
+ import { C as resolveStorePath, E as stripSlackMentionsForCommandDetection, S as resolveChannelResetConfig, _ as resolveSlackChatType, b as readSessionUpdatedAt, c as resolveSlackThreadTargets, d as authorizeSlackBotRoomMessage, f as resolveSlackCommandIngress, g as normalizeSlackChannelType, l as trackSlackDraftMessage, o as authorizeSlackDirectMessage, p as resolveSlackEffectiveAllowFrom, r as resolveSlackRoomContextHints, s as resolveSlackThreadContext, u as resolveConversationLabel$1, v as buildSlackAssistantThreadMetadata, w as updateLastRoute, x as resolveChannelContextVisibilityMode, y as parseSlackAssistantThreadMetadata } from "./provider-DGNYrXQN.mjs";
9
+ import { n as resolveSlackChannelConfig } from "./policy-BxGXCr2q.mjs";
10
+ import { a as resolveDeliveredSlackReplyThreadTs, c as emitSlackMessageSentHooks, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, s as sanitizeSlackMonitorReplyPayload, t as createSlackReplyDeliveryPlan } from "./replies-BRmyMlAE.mjs";
11
11
  import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
13
13
  import { createChannelMessageReplyPipeline, createChannelProgressDraftCompositor, createDraftStreamLoop, createFinalizableDraftStreamControlsForState, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelStreamingBlockEnabled, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
@@ -2807,7 +2807,7 @@ const SLACK_MENTION_RESOLUTION_CONCURRENCY = 4;
2807
2807
  const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
2808
2808
  const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
2809
2809
  const MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS = 2e3;
2810
- const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-8uuOLGDR.mjs").then((n) => n._));
2810
+ const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-DV3J6OB-.mjs").then((n) => n._));
2811
2811
  function formatSlackUnavailableMedia(params) {
2812
2812
  let fileReferences = params.files?.map((file) => `${formatSlackFileReference(file)} unavailable (${file.reason})`).join(", ");
2813
2813
  if (fileReferences && fileReferences.length > MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS) fileReferences = `${truncateUtf16Safe(fileReferences, MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS)}; … (file references truncated)`;
@@ -3153,7 +3153,7 @@ function formatSlackThreadLabelSnippet(text) {
3153
3153
  }
3154
3154
  //#endregion
3155
3155
  //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
3156
- const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-8uuOLGDR.mjs").then((n) => n._));
3156
+ const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-DV3J6OB-.mjs").then((n) => n._));
3157
3157
  const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
3158
3158
  function resolveSlackThreadSessionFreshness(params) {
3159
3159
  return params.ctx.channelRuntime?.session?.resolveEntryResetFreshness?.({
@@ -1,4 +1,4 @@
1
- import { r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-bbjH7IHX.mjs";
1
+ import { r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-CIbMfuf8.mjs";
2
2
  import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id";
3
3
  //#region extensions/slack/src/http/plugin-routes.ts
4
4
  function resolveSlackWebhookPaths(config) {
@@ -1,4 +1,4 @@
1
- import { n as buildSlackChannelPolicyScope, t as buildSlackChannelIdCandidates } from "./group-policy-9pMyFFRP.mjs";
1
+ import { n as buildSlackChannelPolicyScope, t as buildSlackChannelIdCandidates } from "./group-policy-5epvX6Dt.mjs";
2
2
  import { D as resolveSlackUserAllowListForTeam, T as normalizeSlackSlug } from "./probe-DnWN6oBa.mjs";
3
3
  import { applyChannelMatchMeta, buildChannelKeyCandidates } from "openclaw/plugin-sdk/channel-targets";
4
4
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
@@ -1,15 +1,15 @@
1
- import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-bbjH7IHX.mjs";
1
+ import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-CIbMfuf8.mjs";
2
2
  import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as formatSlackBotTokenIdentityWarning } from "./accounts-C1FspRF-.mjs";
3
3
  import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
4
- import { Ct as isSlackApprovalAuthorizedSender, G as isSlackCallbackActionId, J as decodeSlackQuestionAction, K as isSlackQuestionActionId, L as truncateSlackText, M as SLACK_TEXT_LIMIT, Tt as isSlackExecApprovalAuthorizedSender, W as isSlackApprovalActionId, Y as resolveSlackQuestionAction, a as qualifySlackConversationId, et as escapeSlackMrkdwn, lt as isSlackAnyNativeApprovalClientEnabled, nt as decodeSlackApprovalAction, o as qualifySlackRoutePeerId, s as resolveSlackEnterpriseMainDmSessionKey, t as buildSlackChannelIdCandidates, xt as registerSlackInstallationState } from "./group-policy-9pMyFFRP.mjs";
4
+ import { Ct as isSlackApprovalAuthorizedSender, G as isSlackCallbackActionId, J as decodeSlackQuestionAction, K as isSlackQuestionActionId, L as truncateSlackText, M as SLACK_TEXT_LIMIT, Tt as isSlackExecApprovalAuthorizedSender, W as isSlackApprovalActionId, Y as resolveSlackQuestionAction, a as qualifySlackConversationId, et as escapeSlackMrkdwn, lt as isSlackAnyNativeApprovalClientEnabled, nt as decodeSlackApprovalAction, o as qualifySlackRoutePeerId, s as resolveSlackEnterpriseMainDmSessionKey, t as buildSlackChannelIdCandidates, xt as registerSlackInstallationState } from "./group-policy-5epvX6Dt.mjs";
5
5
  import { C as normalizeAllowListLower, D as resolveSlackUserAllowListForTeam, E as resolveSlackAllowListMatch, S as normalizeAllowList, T as normalizeSlackSlug, _ as resolveSlackLookupClientOptions, a as slackIngressIdentity, d as createSlackWebClient, i as createSlackIngressSubject, l as createSlackStartupAuthClient, o as formatSlackError, p as getSlackListenerUploadCompletionClient, v as resolveSlackProxyDispatcher, w as normalizeSlackAllowOwnerEntry, x as allowListMatches, y as resolveSlackWebClientOptions } from "./probe-DnWN6oBa.mjs";
6
6
  import { n as getSlackRuntime, t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
7
- import { C as hasSlackMessageTableBlock, b as saveRemoteMedia, f as readSlackMessages, y as isGovSlackClient } from "./actions-8uuOLGDR.mjs";
8
- import { i as setSlackDefaultSendIdentity, p as requireSlackPostMessageTimestamp } from "./send-CBfhmYDj.mjs";
7
+ import { C as hasSlackMessageTableBlock, b as saveRemoteMedia, f as readSlackMessages, y as isGovSlackClient } from "./actions-DV3J6OB-.mjs";
8
+ import { i as setSlackDefaultSendIdentity, p as requireSlackPostMessageTimestamp } from "./send-DN8vdkyi.mjs";
9
9
  import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.mjs";
10
10
  import { t as resolveSlackChannelAllowlist } from "./resolve-channels-Dpv7OyKO.mjs";
11
11
  import { t as resolveSlackUserAllowlist } from "./resolve-users-DmyA3D_2.mjs";
12
- import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-CpLMTEad.mjs";
12
+ import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-BxGXCr2q.mjs";
13
13
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
14
14
  import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
15
15
  import { asNonArrayRecord, asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -4283,7 +4283,7 @@ function buildSlackDebounceKey(message, accountId, teamId) {
4283
4283
  }
4284
4284
  //#endregion
4285
4285
  //#region extensions/slack/src/monitor/message-handler.ts
4286
- const loadSlackMessagePipeline = createLazyRuntimeModule(() => import("./pipeline.runtime-xjOJ8ltM.mjs"));
4286
+ const loadSlackMessagePipeline = createLazyRuntimeModule(() => import("./pipeline.runtime-D4MRWgXI.mjs"));
4287
4287
  const RETRYABLE_FLUSH_MAX_ATTEMPTS = 3;
4288
4288
  const RETRYABLE_FLUSH_RETRY_DELAY_MS = 1e3;
4289
4289
  const REPLY_SESSION_INIT_CONFLICT_MESSAGE_RE = /reply session initialization conflicted for \S+/u;
@@ -5256,7 +5256,7 @@ const SLACK_COMMAND_ARG_CONFIRM_TEXT_MAX = 300;
5256
5256
  const SLACK_HEADER_TEXT_MAX = 150;
5257
5257
  const SLACK_COMMAND_ARG_ACTION_BLOCKS_MAX = 47;
5258
5258
  const loadSlashCommandsRuntime = createLazyRuntimeModule(() => import("./slash-commands.runtime-BTTMlmwy.mjs"));
5259
- const loadSlashDispatchRuntime = createLazyRuntimeModule(() => import("./slash-dispatch.runtime-D5WAai-5.mjs"));
5259
+ const loadSlashDispatchRuntime = createLazyRuntimeModule(() => import("./slash-dispatch.runtime-CZZBmmE3.mjs"));
5260
5260
  const loadSlashSkillCommandsRuntime = createLazyRuntimeModule(() => import("./slash-skill-commands.runtime-CD1J2ODY.mjs"));
5261
5261
  const loadPluginCommandRuntime = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/plugin-command-runtime"));
5262
5262
  function resolveSlackCommandMenuModelContext(params) {
@@ -6155,7 +6155,7 @@ async function getSlackBoltInterop() {
6155
6155
  }
6156
6156
  return slackBoltInterop;
6157
6157
  }
6158
- const loadSlackRelaySource = createLazyRuntimeModule(() => import("./relay-source-DiUZ6ltP.mjs"));
6158
+ const loadSlackRelaySource = createLazyRuntimeModule(() => import("./relay-source-BgJo9sZ_.mjs"));
6159
6159
  const SLACK_WEBHOOK_MAX_BODY_BYTES = 1048576;
6160
6160
  const SLACK_WEBHOOK_BODY_TIMEOUT_MS = 3e4;
6161
6161
  function resolveSlackRuntimeIdentity(params) {
@@ -23,9 +23,13 @@ function registerSlackHttpHandler(params) {
23
23
  params.log?.(`slack: webhook path ${normalizedPath} already registered${suffix}`);
24
24
  return () => {};
25
25
  }
26
- routes.set(normalizedPath, params.handler);
26
+ const handler = params.handler;
27
+ routes.set(normalizedPath, handler);
28
+ let registered = true;
27
29
  return () => {
28
- getSlackHttpRoutes().delete(normalizedPath);
30
+ if (!registered) return;
31
+ registered = false;
32
+ if (routes.get(normalizedPath) === handler) routes.delete(normalizedPath);
29
33
  };
30
34
  }
31
35
  async function handleSlackHttpRequest(req, res) {
@@ -1,4 +1,4 @@
1
- import { h as formatUnknownError, m as SLACK_SOCKET_RECONNECT_POLICY } from "./provider-1mRMBuV5.mjs";
1
+ import { h as formatUnknownError, m as SLACK_SOCKET_RECONNECT_POLICY } from "./provider-DGNYrXQN.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
4
4
  import { isIP } from "node:net";
@@ -1,6 +1,6 @@
1
- import { C as isSlackNativeResponseUrlRejection, M as SLACK_TEXT_LIMIT, S as isSlackInvalidBlocksResponse, T as buildSlackBlocksFallbackText, Z as markdownToSlackMrkdwnChunks, b as hasSlackNativeDataBlock, d as resolveSlackReplyBlockResolution, f as resolveSlackReplyBlocks, l as hasSlackReplyStructuredContent, v as buildSlackNativeDataAccessibilityText } from "./group-policy-9pMyFFRP.mjs";
2
- import { h as chunkSlackTextAtHardLimit, m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-CBfhmYDj.mjs";
3
- import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-1mRMBuV5.mjs";
1
+ import { C as isSlackNativeResponseUrlRejection, M as SLACK_TEXT_LIMIT, S as isSlackInvalidBlocksResponse, T as buildSlackBlocksFallbackText, Z as markdownToSlackMrkdwnChunks, b as hasSlackNativeDataBlock, d as resolveSlackReplyBlockResolution, f as resolveSlackReplyBlocks, l as hasSlackReplyStructuredContent, v as buildSlackNativeDataAccessibilityText } from "./group-policy-5epvX6Dt.mjs";
2
+ import { h as chunkSlackTextAtHardLimit, m as buildSlackNativeDataDeliveryPlan, r as sendMessageSlack } from "./send-DN8vdkyi.mjs";
3
+ import { a as createSlackResponseUrlBudget, i as SlackResponseAlreadyReportedError } from "./provider-DGNYrXQN.mjs";
4
4
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
5
5
  import { sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
6
6
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
@@ -1,6 +1,6 @@
1
1
  import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-C1FspRF-.mjs";
2
2
  import { a as parseSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-PbxGDbr9.mjs";
3
- import { A as SLACK_MESSAGE_TEXT_HARD_LIMIT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, L as truncateSlackText, M as SLACK_TEXT_LIMIT, R as truncateSlackTextByUtf8Bytes, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, j as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, k as SLACK_EDIT_TEXT_MAX_BYTES, q as resolveSlackQuestionActionIds, st as validateSlackBlocksArray, v as buildSlackNativeDataAccessibilityText, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError, y as createSlackNativeDataBaseTextConsumer, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-9pMyFFRP.mjs";
3
+ import { A as SLACK_MESSAGE_TEXT_HARD_LIMIT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, L as truncateSlackText, M as SLACK_TEXT_LIMIT, R as truncateSlackTextByUtf8Bytes, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, j as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, k as SLACK_EDIT_TEXT_MAX_BYTES, q as resolveSlackQuestionActionIds, st as validateSlackBlocksArray, v as buildSlackNativeDataAccessibilityText, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError, y as createSlackNativeDataBaseTextConsumer, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-5epvX6Dt.mjs";
4
4
  import { c as createSlackReadClient, m as getSlackWriteClient, o as formatSlackError, u as createSlackTokenCacheKey } from "./probe-DnWN6oBa.mjs";
5
5
  import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.mjs";
6
6
  import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
@@ -1,2 +1,2 @@
1
- import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-CBfhmYDj.mjs";
1
+ import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-DN8vdkyi.mjs";
2
2
  export { reconcileSlackUnknownSend, resolveSlackDmChannelId, sendMessageSlack, updateMessageSlack };
@@ -1,4 +1,4 @@
1
- import { r as deliverSlackSlashReplies$1, s as sanitizeSlackMonitorReplyPayload } from "./replies-Cpng2F6w.mjs";
1
+ import { r as deliverSlackSlashReplies$1, s as sanitizeSlackMonitorReplyPayload } from "./replies-BRmyMlAE.mjs";
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 { resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
package/dist/api.js CHANGED
@@ -1,18 +1,18 @@
1
- import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./.setup/registry-bbjH7IHX.mjs";
1
+ import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./.setup/registry-CIbMfuf8.mjs";
2
2
  import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, r as mergeSlackAccountConfig, t as listEnabledSlackAccounts } from "./.setup/accounts-C1FspRF-.mjs";
3
3
  import { r as resolveSlackReplyToMode } from "./.setup/conversation-binding-route-shed4O6L.mjs";
4
4
  import { t as inspectSlackAccount } from "./.setup/account-inspect-B86OaUEt.mjs";
5
5
  import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId } from "./.setup/target-parsing-PbxGDbr9.mjs";
6
6
  import "./.setup/targets-BlQcnjPc.mjs";
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 "./.setup/group-policy-9pMyFFRP.mjs";
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 "./.setup/group-policy-5epvX6Dt.mjs";
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 "./.setup/probe-DnWN6oBa.mjs";
9
- import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./.setup/channel-Dmbj_FF6.mjs";
9
+ import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./.setup/channel-Bpv8aTo8.mjs";
10
10
  import { n as extractSlackToolSend, r as listSlackMessageActions } from "./.setup/message-tool-api-CBtuGn2d.mjs";
11
- import { n as resolveSlackChannelType } from "./.setup/channel-type-CncPqtvr.mjs";
11
+ import { n as resolveSlackChannelType } from "./.setup/channel-type-CrwjkeJT.mjs";
12
12
  import { t as slackSetupPlugin } from "./.setup/channel.setup-CTV8N2nI.mjs";
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 "./.setup/actions-8uuOLGDR.mjs";
14
- import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./.setup/send-CBfhmYDj.mjs";
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 "./.setup/actions-DV3J6OB-.mjs";
14
+ import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./.setup/send-DN8vdkyi.mjs";
15
15
  import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-CW4ICy0y.mjs";
16
16
  import { t as collectSlackSecurityAuditFindings } from "./.setup/security-audit-tCbGyCfU.mjs";
17
- import { n as resolveSlackRuntimeGroupPolicy } from "./.setup/provider-1mRMBuV5.mjs";
17
+ import { n as resolveSlackRuntimeGroupPolicy } from "./.setup/provider-DGNYrXQN.mjs";
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,2 +1,2 @@
1
- import { t as slackPlugin } from "./.setup/channel-Dmbj_FF6.mjs";
1
+ import { t as slackPlugin } from "./.setup/channel-Bpv8aTo8.mjs";
2
2
  export { slackPlugin };
@@ -1,2 +1,2 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-C3X0eVaK.mjs";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
2
  export { registerSlackPluginHttpRoutes };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-C3X0eVaK.mjs";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
2
  import "./http-routes-api.js";
3
3
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
4
4
  //#region extensions/slack/index.ts
@@ -1,14 +1,14 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-C3X0eVaK.mjs";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
2
  import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./.setup/accounts-C1FspRF-.mjs";
3
- import { i as resolveSlackGroupToolPolicy, r as resolveSlackGroupRequireMention } from "./.setup/group-policy-9pMyFFRP.mjs";
3
+ import { i as resolveSlackGroupToolPolicy, r as resolveSlackGroupRequireMention } from "./.setup/group-policy-5epvX6Dt.mjs";
4
4
  import { t as probeSlack } from "./.setup/probe-DnWN6oBa.mjs";
5
5
  import { r as setSlackRuntime } from "./.setup/runtime-JSVZSWAj.mjs";
6
- 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, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-8uuOLGDR.mjs";
7
- import { r as sendMessageSlack } from "./.setup/send-CBfhmYDj.mjs";
6
+ 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, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-DV3J6OB-.mjs";
7
+ import { r as sendMessageSlack } from "./.setup/send-DN8vdkyi.mjs";
8
8
  import { t as resolveSlackChannelAllowlist } from "./.setup/resolve-channels-Dpv7OyKO.mjs";
9
9
  import { t as resolveSlackUserAllowlist } from "./.setup/resolve-users-DmyA3D_2.mjs";
10
- import { t as monitorSlackProvider } from "./.setup/provider-1mRMBuV5.mjs";
11
- import { n as slackActionRuntime, t as handleSlackAction } from "./.setup/action-runtime-C_G4J1MV.mjs";
10
+ import { t as monitorSlackProvider } from "./.setup/provider-DGNYrXQN.mjs";
11
+ import { n as slackActionRuntime, t as handleSlackAction } from "./.setup/action-runtime-Ddpb2CZS.mjs";
12
12
  import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./.setup/directory-live-C2hI1rq1.mjs";
13
- import "./.setup/monitor-t4yqSbLZ.mjs";
13
+ import "./.setup/monitor-BnckzNnh.mjs";
14
14
  export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/slack",
3
- "version": "2026.8.33",
3
+ "version": "2026.8.34",
4
4
  "description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "zod": "4.4.3"
20
20
  },
21
21
  "peerDependencies": {
22
- "openclaw": ">=2026.8.33"
22
+ "openclaw": ">=2026.8.34"
23
23
  },
24
24
  "peerDependenciesMeta": {
25
25
  "openclaw": {
@@ -151,10 +151,10 @@
151
151
  "allowInvalidConfigRecovery": true
152
152
  },
153
153
  "compat": {
154
- "pluginApi": ">=2026.8.33"
154
+ "pluginApi": ">=2026.8.34"
155
155
  },
156
156
  "build": {
157
- "openclawVersion": "2026.8.33",
157
+ "openclawVersion": "2026.8.34",
158
158
  "bundledDist": false
159
159
  },
160
160
  "release": {
@@ -1,2 +0,0 @@
1
- import { t as handleSlackAction } from "./action-runtime-C_G4J1MV.mjs";
2
- export { handleSlackAction };