@openclaw/slack 2026.9.33 → 2026.9.35

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 (65) hide show
  1. package/dist/.setup/{action-runtime-DfWvuiZd.mjs → action-runtime-DrJGFq6u.mjs} +4 -4
  2. package/dist/.setup/action-runtime.runtime-BhXBcznI.mjs +1 -0
  3. package/dist/.setup/{actions-Df0CzcDl.mjs → actions-B-E1iXQh.mjs} +2 -2
  4. package/dist/.setup/{approval-handler.runtime-Ed6Sw5VK.mjs → approval-handler.runtime-B4zv4Cy-.mjs} +4 -4
  5. package/dist/.setup/{approval-message-updates-BadvtA7R.mjs → approval-message-updates-Psy357ys.mjs} +1 -1
  6. package/dist/.setup/{channel-C7bgPSTE.mjs → channel-CLZVpPR0.mjs} +9 -9
  7. package/dist/.setup/{channel-type-ClOttrZ5.mjs → channel-type-DdNW4_3Y.mjs} +1 -1
  8. package/dist/.setup/{monitor-BPVfkumU.mjs → monitor-CX8JFutk.mjs} +52 -24
  9. package/dist/.setup/{outbound-adapter-Bv48XUjq.mjs → outbound-adapter-BGeEF1Tb.mjs} +3 -3
  10. package/dist/.setup/{pipeline.runtime-B1H63Frf.mjs → pipeline.runtime-DpcyomUm.mjs} +9 -9
  11. package/dist/.setup/{policy-D-jfM174.mjs → policy-D7nmaTmD.mjs} +1 -1
  12. package/dist/.setup/{relay-source-BpKdjsll.mjs → relay-source-D89S2hfg.mjs} +7 -2
  13. package/dist/.setup/{replies-BAnUtr2f.mjs → replies-DsANnslp.mjs} +4 -4
  14. package/dist/.setup/{reply-blocks-SE1kTE3I.mjs → reply-blocks-BntCJ7mr.mjs} +1 -1
  15. package/dist/.setup/runtime-setter-api-Cx_PV-xu.mjs +2 -0
  16. package/dist/.setup/secret-contract-api-3duiGw0K.mjs +2 -0
  17. package/dist/.setup/{send-BOVLQi3n.mjs → send-BSQKD4nx.mjs} +1 -1
  18. package/dist/.setup/{session-status-DscajIsd.mjs → session-status-CPWDBkOb.mjs} +1 -1
  19. package/dist/.setup/setup-plugin-api-BVR4tSwT.mjs +2 -0
  20. package/dist/.setup/{slash-dispatch.runtime--AEzLVBF.mjs → slash-dispatch.runtime-B_jVFfTv.mjs} +1 -1
  21. package/dist/.source-module-urls/562d694877afe9d9dcbb3b32a8883c16974738f2aa892c48d45572cdc9a62529.json +1 -0
  22. package/dist/api.js +6 -6
  23. package/dist/channel-config-api.js +1 -2
  24. package/dist/channel-plugin-api.js +1 -2
  25. package/dist/directory-contract-api.js +1 -2
  26. package/dist/doctor-contract-api.js +1 -2
  27. package/dist/http-routes-api.js +1 -2
  28. package/dist/message-tool-api.js +1 -2
  29. package/dist/runtime-api.js +5 -5
  30. package/dist/runtime-setter-api.js +1 -2
  31. package/dist/secret-contract-api.js +1 -2
  32. package/dist/security-contract-api.js +1 -2
  33. package/dist/setup-entry.js +3 -3
  34. package/dist/setup-plugin-api.js +1 -2
  35. package/node_modules/@slack/bolt/node_modules/body-parser/README.md +17 -13
  36. package/node_modules/@slack/bolt/node_modules/body-parser/lib/read.js +74 -57
  37. package/node_modules/@slack/bolt/node_modules/body-parser/lib/types/json.js +11 -11
  38. package/node_modules/@slack/bolt/node_modules/body-parser/lib/types/urlencoded.js +5 -5
  39. package/node_modules/@slack/bolt/node_modules/body-parser/lib/utils.js +0 -15
  40. package/node_modules/@slack/bolt/node_modules/body-parser/package.json +7 -12
  41. package/node_modules/zod/package.json +1 -1
  42. package/node_modules/zod/src/v4/classic/tests/array.test.ts +27 -0
  43. package/node_modules/zod/src/v4/classic/tests/map.test.ts +7 -0
  44. package/node_modules/zod/src/v4/classic/tests/set.test.ts +6 -0
  45. package/node_modules/zod/src/v4/core/compile.ts +9 -0
  46. package/node_modules/zod/src/v4/core/schemas.ts +35 -1
  47. package/node_modules/zod/src/v4/core/util.ts +13 -0
  48. package/node_modules/zod/src/v4/core/versions.ts +1 -1
  49. package/node_modules/zod/v4/core/compile.cjs +8 -0
  50. package/node_modules/zod/v4/core/compile.js +8 -0
  51. package/node_modules/zod/v4/core/schemas.cjs +30 -0
  52. package/node_modules/zod/v4/core/schemas.d.cts +3 -1
  53. package/node_modules/zod/v4/core/schemas.d.ts +3 -1
  54. package/node_modules/zod/v4/core/schemas.js +30 -0
  55. package/node_modules/zod/v4/core/util.cjs +15 -0
  56. package/node_modules/zod/v4/core/util.d.cts +2 -0
  57. package/node_modules/zod/v4/core/util.d.ts +2 -0
  58. package/node_modules/zod/v4/core/util.js +14 -0
  59. package/node_modules/zod/v4/core/versions.cjs +1 -1
  60. package/node_modules/zod/v4/core/versions.js +1 -1
  61. package/package.json +5 -5
  62. package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +0 -2
  63. package/dist/.setup/runtime-setter-api-CMFvhrAr.mjs +0 -3
  64. package/dist/.setup/secret-contract-api-Dp6290Vg.mjs +0 -3
  65. package/dist/.setup/setup-plugin-api-DTtbTKNk.mjs +0 -3
@@ -1,7 +1,7 @@
1
1
  import { a as parseSlackTarget, n as formatSlackTarget, o as resolveSlackChannelId } from "./target-parsing-FFE26kOV.mjs";
2
2
  import { t as slackContextTargetsMatch } from "./targets-C6LZQL1Q.mjs";
3
- import { Nt as getSlackInstallationKind, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, Wt as resolveSlackAutoThreadId, _t as parseSlackBlocksInput, f as assertSlackDetachedTargetAllowed, r as buildSlackChannelIdCandidates, v as hasSlackNativeDataBlock } from "./session-status-DscajIsd.mjs";
4
- import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-D-jfM174.mjs";
3
+ import { Nt as getSlackInstallationKind, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, Wt as resolveSlackAutoThreadId, _t as parseSlackBlocksInput, f as assertSlackDetachedTargetAllowed, r as buildSlackChannelIdCandidates, v as hasSlackNativeDataBlock } from "./session-status-CPWDBkOb.mjs";
4
+ import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-D7nmaTmD.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,10 +27,10 @@ const pinActions = /* @__PURE__ */ new Set([
27
27
  "listPins"
28
28
  ]);
29
29
  const SLACK_REACTION_RESULT_LIMIT = 100;
30
- const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-Df0CzcDl.mjs").then((n) => n.t));
30
+ const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions-B-E1iXQh.mjs").then((n) => n.t));
31
31
  const bindSlackAction = createLazyRuntimeMethodBinder(loadSlackActionsRuntime);
32
32
  const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts-D_N9IqNA.mjs").then((n) => n.t));
33
- const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-ClOttrZ5.mjs").then((n) => n.t));
33
+ const loadSlackChannelTypeRuntime = createLazyRuntimeModule(() => import("./channel-type-DdNW4_3Y.mjs").then((n) => n.t));
34
34
  const bindSlackChannelType = createLazyRuntimeMethodBinder(loadSlackChannelTypeRuntime);
35
35
  const slackActionRuntime = {
36
36
  deleteSlackMessage: bindSlackAction((runtime) => runtime.deleteSlackMessage),
@@ -0,0 +1 @@
1
+ export { t as handleSlackAction } from "./action-runtime-DrJGFq6u.mjs";
@@ -1,9 +1,9 @@
1
1
  import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { h as resolveSlackBotToken, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
3
  import { n as formatSlackTarget } from "./target-parsing-FFE26kOV.mjs";
4
- import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, f as assertSlackDetachedTargetAllowed, h as appendSlackNativeDataPlainTextFallback, lt as escapeSlackMrkdwn, m as appendSlackNativeDataFallbackText, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-DscajIsd.mjs";
4
+ import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, Ut as SLACK_PRIVATE_ACTION_DELIVERY_RESULT, f as assertSlackDetachedTargetAllowed, h as appendSlackNativeDataPlainTextFallback, lt as escapeSlackMrkdwn, m as appendSlackNativeDataFallbackText, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-CPWDBkOb.mjs";
5
5
  import { _ as getSlackWriteClient, h as createSlackWriteClient, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
6
- import { p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
6
+ import { p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BSQKD4nx.mjs";
7
7
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
8
8
  import { asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
9
9
  import { createSubsystemLogger, logVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -1,9 +1,9 @@
1
1
  import { a as parseSlackTarget } from "./target-parsing-FFE26kOV.mjs";
2
- import { Dt as shouldHandleSlackNativeApprovalRequest, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, n as setSlackSessionStatus, ut as SLACK_APPROVAL_HEADER_BLOCK_ID, yt as isSlackAnyNativeApprovalClientEnabled, zt as normalizeSlackApproverId } from "./session-status-DscajIsd.mjs";
2
+ import { Dt as shouldHandleSlackNativeApprovalRequest, E as SLACK_EDIT_TEXT_MAX_BYTES, M as truncateSlackTextByUtf8Bytes, n as setSlackSessionStatus, ut as SLACK_APPROVAL_HEADER_BLOCK_ID, yt as isSlackAnyNativeApprovalClientEnabled, zt as normalizeSlackApproverId } from "./session-status-CPWDBkOb.mjs";
3
3
  import { g as getSlackListenerWriteClient } from "./probe-B2Y9qc_z.mjs";
4
- import { s as resolveSlackReplyBlocks } from "./reply-blocks-SE1kTE3I.mjs";
5
- import { t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
6
- import { n as runSlackApprovalMessageUpdate } from "./approval-message-updates-BadvtA7R.mjs";
4
+ import { s as resolveSlackReplyBlocks } from "./reply-blocks-BntCJ7mr.mjs";
5
+ import { t as sendMessageSlack } from "./send-BSQKD4nx.mjs";
6
+ import { n as runSlackApprovalMessageUpdate } from "./approval-message-updates-Psy357ys.mjs";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
9
9
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
@@ -1,4 +1,4 @@
1
- import { U as isSlackApprovalActionId, dt as decodeSlackApprovalAction } from "./session-status-DscajIsd.mjs";
1
+ import { U as isSlackApprovalActionId, dt as decodeSlackApprovalAction } from "./session-status-CPWDBkOb.mjs";
2
2
  import { asOptionalRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { KeyedAsyncQueue } from "openclaw/plugin-sdk/keyed-async-queue";
4
4
  //#region extensions/slack/src/approval-message-updates.ts
@@ -2,12 +2,12 @@ import { n as isSlackPluginAccountConfigured } from "./account-configured-sUohAx
2
2
  import { c as resolveSlackAccountAllowFrom, d as resolveSlackOperationToken, f as resolveSlackReplyToMode, i as listSlackAccountIds, n as hasImplicitDefaultSlackAccount, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
3
  import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, n as formatSlackTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId, t as canonicalizeSlackApiTargetId } from "./target-parsing-FFE26kOV.mjs";
4
4
  import { t as slackContextTargetsMatch } from "./targets-C6LZQL1Q.mjs";
5
- import { A as countSlackTextUtf8Bytes, At as getSlackApprovalApproversForTeam, Bt as resolveSlackExecApprovalTarget, Ct as resolveSessionSlackOriginTarget, Dt as shouldHandleSlackNativeApprovalRequest, E as SLACK_EDIT_TEXT_MAX_BYTES, Et as resolveTurnSourceSlackOriginTarget, Ht as resolvePluginApprovalSlackApprovers, It as getSlackExecApprovalApprovers, Lt as isSlackExecApprovalAuthorizedSender, Mt as resolveSlackApprovalTeamId, Nt as getSlackInstallationKind, Ot as shouldHandleSlackPluginViaForwardingSession, Pt as isSlackWorkspaceInstallation, Q as normalizeSlackOutboundText, Rt as isSlackExecApprovalClientEnabled, St as normalizeSlackOriginTarget, Tt as resolveSlackFallbackOriginTarget, Vt as shouldSuppressLocalSlackExecApprovalPrompt, Wt as resolveSlackAutoThreadId, a as resolveSlackGroupRequireMention, bt as isSlackPluginApprovalRequest, c as qualifySlackRoutePeerId, ct as renderSlackMessagePresentationFallbackText, d as resolveSlackConversationBindingRoute, f as assertSlackDetachedTargetAllowed, jt as isSlackPluginApprovalAuthorizedSender, k as SLACK_TEXT_LIMIT, kt as slackTargetsMatch, mt as SLACK_PRESENTATION_CAPABILITIES, n as setSlackSessionStatus, o as resolveSlackGroupToolPolicy, s as qualifySlackConversationId, u as normalizeSlackRouteBindingConfig, wt as resolveSlackApproverDmTargets, xt as normalizeSlackForwardTarget, yt as isSlackAnyNativeApprovalClientEnabled } from "./session-status-DscajIsd.mjs";
5
+ import { A as countSlackTextUtf8Bytes, At as getSlackApprovalApproversForTeam, Bt as resolveSlackExecApprovalTarget, Ct as resolveSessionSlackOriginTarget, Dt as shouldHandleSlackNativeApprovalRequest, E as SLACK_EDIT_TEXT_MAX_BYTES, Et as resolveTurnSourceSlackOriginTarget, Ht as resolvePluginApprovalSlackApprovers, It as getSlackExecApprovalApprovers, Lt as isSlackExecApprovalAuthorizedSender, Mt as resolveSlackApprovalTeamId, Nt as getSlackInstallationKind, Ot as shouldHandleSlackPluginViaForwardingSession, Pt as isSlackWorkspaceInstallation, Q as normalizeSlackOutboundText, Rt as isSlackExecApprovalClientEnabled, St as normalizeSlackOriginTarget, Tt as resolveSlackFallbackOriginTarget, Vt as shouldSuppressLocalSlackExecApprovalPrompt, Wt as resolveSlackAutoThreadId, a as resolveSlackGroupRequireMention, bt as isSlackPluginApprovalRequest, c as qualifySlackRoutePeerId, ct as renderSlackMessagePresentationFallbackText, d as resolveSlackConversationBindingRoute, f as assertSlackDetachedTargetAllowed, jt as isSlackPluginApprovalAuthorizedSender, k as SLACK_TEXT_LIMIT, kt as slackTargetsMatch, mt as SLACK_PRESENTATION_CAPABILITIES, n as setSlackSessionStatus, o as resolveSlackGroupToolPolicy, s as qualifySlackConversationId, u as normalizeSlackRouteBindingConfig, wt as resolveSlackApproverDmTargets, xt as normalizeSlackForwardTarget, yt as isSlackAnyNativeApprovalClientEnabled } from "./session-status-CPWDBkOb.mjs";
6
6
  import { _ as getSlackWriteClient, c as collectSlackCursorPages, o as formatSlackError, u as createSlackLookupClient } from "./probe-B2Y9qc_z.mjs";
7
- import { c as resolveSlackReplyDeliveryMessages, f as buildSlackPresentationBlocks, o as resolveSlackReplyBlockResolution, p as canRenderSlackPresentation, r as normalizeSlackReplyPayload, s as resolveSlackReplyBlocks } from "./reply-blocks-SE1kTE3I.mjs";
7
+ import { c as resolveSlackReplyDeliveryMessages, f as buildSlackPresentationBlocks, o as resolveSlackReplyBlockResolution, p as canRenderSlackPresentation, r as normalizeSlackReplyPayload, s as resolveSlackReplyBlocks } from "./reply-blocks-BntCJ7mr.mjs";
8
8
  import { n as resolveSlackReplyThreadTs, r as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-Cvt7WD6B.mjs";
9
9
  import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-Cu4lwlGy.mjs";
10
- import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-ClOttrZ5.mjs";
10
+ import { n as resolveSlackChannelType, r as resolveSlackConversationInfo } from "./channel-type-DdNW4_3Y.mjs";
11
11
  import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
12
12
  import { n as slackConfigAdapter, r as slackSecurityAdapter, t as createSlackPluginBase } from "./shared-qau-uDGl.mjs";
13
13
  import { a as slackSetupContract, i as createSlackSetupWizardProxy, o as SLACK_CHANNEL } from "./channel.setup-Dh2jzAjN.mjs";
@@ -99,7 +99,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
99
99
  ],
100
100
  isConfigured: isSlackAnyNativeApprovalClientEnabled,
101
101
  shouldHandle: shouldHandleSlackNativeApprovalRequest,
102
- load: async () => (await import("./approval-handler.runtime-Ed6Sw5VK.mjs")).slackApprovalNativeRuntime
102
+ load: async () => (await import("./approval-handler.runtime-B4zv4Cy-.mjs")).slackApprovalNativeRuntime
103
103
  })
104
104
  });
105
105
  const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
@@ -403,7 +403,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = /* @__PURE__ */ new Set([
403
403
  "unpinMessage",
404
404
  "uploadFile"
405
405
  ]);
406
- const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-Ck4bAWOX.mjs"));
406
+ const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-BhXBcznI.mjs"));
407
407
  function resolveSlackActionContext(ctx, toolContext) {
408
408
  if (!toolContext && !ctx.mediaAccess && !ctx.mediaLocalRoots && !ctx.mediaReadFile && !ctx.conversationReadOrigin && !ctx.requesterAccountId && !ctx.requesterSenderId && !ctx.assertDirectAdapterHandoff) return;
409
409
  return {
@@ -575,7 +575,7 @@ const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SH
575
575
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
576
576
  const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-Dn7QgWRE.mjs"));
577
577
  const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-CasuDvaa.mjs"));
578
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-Bv48XUjq.mjs"));
578
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-BGeEF1Tb.mjs"));
579
579
  const bindSlackOutbound = createLazyRuntimeMethodBinder(loadSlackOutboundAdapterModule);
580
580
  async function resolveSlackHandleAction() {
581
581
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
@@ -583,10 +583,10 @@ async function resolveSlackHandleAction() {
583
583
  const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-BOUWH3hR.mjs").then((n) => n.t));
584
584
  const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-XXBn8UU_.mjs").then((n) => n.n));
585
585
  const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DW0ngD03.mjs").then((n) => n.n));
586
- const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-Ck4bAWOX.mjs"));
587
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send-BOVLQi3n.mjs").then((n) => n.n));
586
+ const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-BhXBcznI.mjs"));
587
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send-BSQKD4nx.mjs").then((n) => n.n));
588
588
  const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-B2Y9qc_z.mjs").then((n) => n.n));
589
- const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-BPVfkumU.mjs").then((n) => n.t));
589
+ const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-CX8JFutk.mjs").then((n) => n.t));
590
590
  const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-B2O4B_Ho.mjs").then((n) => n.t));
591
591
  async function setSlackHeartbeatThreadStatus(params) {
592
592
  const threadTs = resolveSlackThreadTsValue({ threadId: params.threadId });
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { d as resolveSlackOperationToken, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
- import { f as assertSlackDetachedTargetAllowed } from "./session-status-DscajIsd.mjs";
3
+ import { f as assertSlackDetachedTargetAllowed } from "./session-status-CPWDBkOb.mjs";
4
4
  import { d as createSlackReadClient, m as createSlackWebClient, v as readLruMapEntry } from "./probe-B2Y9qc_z.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
@@ -2,16 +2,16 @@ import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-CIbMfuf8.mjs";
3
3
  import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, f as resolveSlackReplyToMode, h as resolveSlackBotToken, l as resolveSlackAccountDmPolicy, m as resolveSlackAppToken, o as resolveDefaultSlackAccountId, p as formatSlackBotTokenIdentityWarning, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
4
4
  import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-FFE26kOV.mjs";
5
- import { Ft as registerSlackInstallationState, G as isSlackQuestionActionId, Lt as isSlackExecApprovalAuthorizedSender, U as isSlackApprovalActionId, W as isSlackCallbackActionId, Y as resolveSlackQuestionAction, c as qualifySlackRoutePeerId, d as resolveSlackConversationBindingRoute, dt as decodeSlackApprovalAction, j as truncateSlackText, jt as isSlackPluginApprovalAuthorizedSender, k as SLACK_TEXT_LIMIT, l as resolveSlackEnterpriseMainDmSessionKey, lt as escapeSlackMrkdwn, n as setSlackSessionStatus, q as decodeSlackQuestionAction, r as buildSlackChannelIdCandidates, s as qualifySlackConversationId, t as renameSlackSession, u as normalizeSlackRouteBindingConfig, yt as isSlackAnyNativeApprovalClientEnabled } from "./session-status-DscajIsd.mjs";
5
+ import { Ft as registerSlackInstallationState, G as isSlackQuestionActionId, Lt as isSlackExecApprovalAuthorizedSender, U as isSlackApprovalActionId, W as isSlackCallbackActionId, Y as resolveSlackQuestionAction, c as qualifySlackRoutePeerId, d as resolveSlackConversationBindingRoute, dt as decodeSlackApprovalAction, j as truncateSlackText, jt as isSlackPluginApprovalAuthorizedSender, k as SLACK_TEXT_LIMIT, l as resolveSlackEnterpriseMainDmSessionKey, lt as escapeSlackMrkdwn, n as setSlackSessionStatus, q as decodeSlackQuestionAction, r as buildSlackChannelIdCandidates, s as qualifySlackConversationId, t as renameSlackSession, u as normalizeSlackRouteBindingConfig, yt as isSlackAnyNativeApprovalClientEnabled } from "./session-status-CPWDBkOb.mjs";
6
6
  import { A as resolveSlackUserAllowListForTeam, C as resolveSlackMonitorDispatchers, D as normalizeSlackAllowOwnerEntry, E as allowListMatches, O as normalizeSlackSlug, S as resolveSlackLookupClientOptions, a as slackIngressIdentity, c as collectSlackCursorPages, f as createSlackStartupAuthClient, g as getSlackListenerWriteClient, i as createSlackIngressSubject, k as resolveSlackAllowListMatch, m as createSlackWebClient, o as formatSlackError, v as readLruMapEntry, w as resolveSlackWebClientOptions, y as writeLruMapEntry } from "./probe-B2Y9qc_z.mjs";
7
7
  import { n as getSlackRuntime, t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
8
8
  import { t as DEFAULT_SLACK_SUGGESTED_PROMPTS } from "./channel-meta-C443t-lI.mjs";
9
- import { S as hasSlackMessageTableBlock, f as readSlackMessages, v as isGovSlackClient, y as saveRemoteMedia } from "./actions-Df0CzcDl.mjs";
10
- import { d as requireSlackPostMessageTimestamp, f as buildSlackMessageIdentityPayload, r as setSlackDefaultSendIdentity } from "./send-BOVLQi3n.mjs";
11
- import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-D-jfM174.mjs";
9
+ import { S as hasSlackMessageTableBlock, f as readSlackMessages, v as isGovSlackClient, y as saveRemoteMedia } from "./actions-B-E1iXQh.mjs";
10
+ import { d as requireSlackPostMessageTimestamp, f as buildSlackMessageIdentityPayload, r as setSlackDefaultSendIdentity } from "./send-BSQKD4nx.mjs";
11
+ import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-D7nmaTmD.mjs";
12
12
  import { t as resolveSlackChannelAllowlist } from "./resolve-channels-XXBn8UU_.mjs";
13
13
  import { t as resolveSlackUserAllowlist } from "./resolve-users-DW0ngD03.mjs";
14
- import { n as runSlackApprovalMessageUpdate, t as hasSlackApprovalControl } from "./approval-message-updates-BadvtA7R.mjs";
14
+ import { n as runSlackApprovalMessageUpdate, t as hasSlackApprovalControl } from "./approval-message-updates-Psy357ys.mjs";
15
15
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
16
16
  import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
17
17
  import { asNonArrayRecord, asOptionalRecord, isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -491,6 +491,9 @@ function resolveSlackIdentityHealth(params) {
491
491
  //#endregion
492
492
  //#region extensions/slack/src/monitor/reconnect-policy.ts
493
493
  const SLACK_AUTH_ERROR_RE = /account_inactive|invalid_auth|token_revoked|token_expired|not_authed|org_login_required|team_access_not_granted|user_removed_from_team|team_disabled|missing_scope|cannot_find_service|invalid_token/i;
494
+ const SLACK_DEFINITIVE_AUTH_ERROR_RE = /account_inactive|token_revoked|token_expired|not_authed|org_login_required|team_access_not_granted|user_removed_from_team|team_disabled|missing_scope|cannot_find_service|invalid_token/i;
495
+ /** Consecutive isolated invalid_auth failures before the channel turns terminal. */
496
+ const SLACK_ISOLATED_INVALID_AUTH_TERMINAL_LIMIT = 3;
494
497
  const SLACK_SOCKET_RECONNECT_POLICY = {
495
498
  initialMs: 2e3,
496
499
  maxMs: 3e4,
@@ -584,6 +587,28 @@ function waitForSlackSocketDisconnect(app, abortSignal) {
584
587
  function isNonRecoverableSlackAuthError(error) {
585
588
  return SLACK_AUTH_ERROR_RE.test(formatSlackError(error, ""));
586
589
  }
590
+ /** Terminal, retryable-isolated, or undefined (not auth-shaped) for this failure. */
591
+ function nextSlackAuthFailureState(error, consecutiveInvalidAuth) {
592
+ if (error && isIsolatedInvalidAuthSlackError(error)) {
593
+ const next = consecutiveInvalidAuth + 1;
594
+ return next >= SLACK_ISOLATED_INVALID_AUTH_TERMINAL_LIMIT ? {
595
+ decision: "terminal",
596
+ consecutiveInvalidAuth: next
597
+ } : {
598
+ decision: "retry-isolated",
599
+ consecutiveInvalidAuth: next
600
+ };
601
+ }
602
+ return {
603
+ decision: error && isNonRecoverableSlackAuthError(error) ? "terminal" : void 0,
604
+ consecutiveInvalidAuth
605
+ };
606
+ }
607
+ /** Isolated invalid_auth: auth-shaped, but not a definitive credential verdict. */
608
+ function isIsolatedInvalidAuthSlackError(error) {
609
+ const text = formatSlackError(error, "");
610
+ return /invalid_auth/i.test(text) && !SLACK_DEFINITIVE_AUTH_ERROR_RE.test(text);
611
+ }
587
612
  //#endregion
588
613
  //#region extensions/slack/src/monitor/socket-mode-envelope.ts
589
614
  function installSlackSocketModeEnvelopeGuard(client, acknowledge, logger) {
@@ -612,8 +637,8 @@ function installSlackSocketModeEnvelopeGuard(client, acknowledge, logger) {
612
637
  //#endregion
613
638
  //#region extensions/slack/src/monitor/provider-support.ts
614
639
  const OPENCLAW_SLACK_CLIENT_PING_TIMEOUT_MS = 15e3;
615
- const OPENCLAW_SLACK_SOCKET_START_FAILED_EVENT = "unable_to_socket_mode_start";
616
- const OPENCLAW_SLACK_NATIVE_RECONNECT_OBSERVER_KEY = "__openclawNativeReconnectFailureObserver";
640
+ const SLACK_SOCKET_START_FAILED_EVENT = "unable_to_socket_mode_start";
641
+ const SLACK_NATIVE_RECONNECT_OBSERVER_KEY = "__openclawNativeReconnectFailureObserver";
617
642
  const SLACK_SOCKET_PONG_TIMEOUT_WARNING_PREFIX = "A pong wasn't received from the server";
618
643
  const SLACK_SOCKET_PING_TIMEOUT_WARNING_PREFIX = "A ping wasn't received from the server";
619
644
  const SLACK_SOCKET_LOG_LEVEL_IGNORED_WARNING_RE = /^The logLevel given to .+ was ignored as you also gave logger$/;
@@ -624,11 +649,11 @@ function installSlackNativeReconnectFailureObserver(receiver) {
624
649
  if (!receiver || typeof receiver !== "object") return;
625
650
  const client = Reflect.get(receiver, "client");
626
651
  if (!client || typeof client !== "object") return;
627
- if (Reflect.get(client, OPENCLAW_SLACK_NATIVE_RECONNECT_OBSERVER_KEY)) return;
652
+ if (Reflect.get(client, SLACK_NATIVE_RECONNECT_OBSERVER_KEY)) return;
628
653
  const delayReconnectAttempt = Reflect.get(client, "delayReconnectAttempt");
629
654
  const emit = Reflect.get(client, "emit");
630
655
  if (typeof delayReconnectAttempt !== "function" || typeof emit !== "function") return;
631
- Reflect.set(client, OPENCLAW_SLACK_NATIVE_RECONNECT_OBSERVER_KEY, true);
656
+ Reflect.set(client, SLACK_NATIVE_RECONNECT_OBSERVER_KEY, true);
632
657
  Reflect.set(client, "delayReconnectAttempt", function patchedDelayReconnectAttempt(callback) {
633
658
  if (typeof callback !== "function") return delayReconnectAttempt.call(this, callback);
634
659
  const nextFailureCount = Number(Reflect.get(this, "numOfConsecutiveReconnectionFailures") ?? 0) + 1;
@@ -649,7 +674,7 @@ function installSlackNativeReconnectFailureObserver(receiver) {
649
674
  emit.call(this, "reconnecting");
650
675
  Promise.resolve(callback.call(this)).then(resolve, (error) => {
651
676
  if (callback === Reflect.get(this, "start")) {
652
- emit.call(this, OPENCLAW_SLACK_SOCKET_START_FAILED_EVENT, error);
677
+ emit.call(this, SLACK_SOCKET_START_FAILED_EVENT, error);
653
678
  resolve(void 0);
654
679
  return;
655
680
  }
@@ -705,6 +730,14 @@ function publishSlackConnectedStatus(setStatus, identityHealth = {
705
730
  lastConnectedAt
706
731
  }) : channelReadyPatch({ lastConnectedAt }));
707
732
  }
733
+ function trackSlackAuthFailure(failure, phase, setStatus, logError, state) {
734
+ const auth = nextSlackAuthFailureState(failure, state.consecutiveInvalidAuth);
735
+ state.consecutiveInvalidAuth = auth.consecutiveInvalidAuth;
736
+ if (auth.decision !== "terminal") return;
737
+ publishSlackBlockedStatus(setStatus, failure);
738
+ logError(`slack ${phase} (${formatSlackError(failure)})`);
739
+ throw failure instanceof Error ? failure : new Error(formatSlackError(failure));
740
+ }
708
741
  function publishSlackBlockedStatus(setStatus, error) {
709
742
  if (!setStatus) return;
710
743
  setStatus(channelBlockedPatch(formatSlackError(error), { connected: false }));
@@ -2898,7 +2931,7 @@ const SLACK_COMMAND_ARG_CONFIRM_TEXT_MAX = 300;
2898
2931
  const SLACK_HEADER_TEXT_MAX = 150;
2899
2932
  const SLACK_COMMAND_ARG_ACTION_BLOCKS_MAX = 47;
2900
2933
  const loadSlashCommandsRuntime = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/command-auth-native"));
2901
- const loadSlashDispatchRuntime = createLazyRuntimeModule(() => import("./slash-dispatch.runtime--AEzLVBF.mjs"));
2934
+ const loadSlashDispatchRuntime = createLazyRuntimeModule(() => import("./slash-dispatch.runtime-B_jVFfTv.mjs"));
2902
2935
  const loadPluginCommandRuntime = createLazyRuntimeModule(() => import("openclaw/plugin-sdk/plugin-command-runtime"));
2903
2936
  function resolveSlackCommandMenuModelContext(params) {
2904
2937
  if (!params.sessionKey.trim()) return {};
@@ -4525,7 +4558,7 @@ async function handleSlackApprovalInteraction(params) {
4525
4558
  channelId,
4526
4559
  messageTs
4527
4560
  }, async () => {
4528
- const { readSlackMessages } = await import("./actions-Df0CzcDl.mjs").then((n) => n.t);
4561
+ const { readSlackMessages } = await import("./actions-B-E1iXQh.mjs").then((n) => n.t);
4529
4562
  const { messages } = await readSlackMessages(channelId, {
4530
4563
  client: params.eventScope?.client ?? params.ctx.app.client,
4531
4564
  messageId: messageTs,
@@ -6092,7 +6125,7 @@ function buildSlackDebounceKey(message, accountId, teamId) {
6092
6125
  }
6093
6126
  //#endregion
6094
6127
  //#region extensions/slack/src/monitor/message-handler.ts
6095
- const loadSlackMessagePipeline = createLazyRuntimeModule(() => import("./pipeline.runtime-B1H63Frf.mjs"));
6128
+ const loadSlackMessagePipeline = createLazyRuntimeModule(() => import("./pipeline.runtime-DpcyomUm.mjs"));
6096
6129
  const RETRYABLE_FLUSH_MAX_ATTEMPTS = 3;
6097
6130
  const RETRYABLE_FLUSH_RETRY_DELAY_MS = 1e3;
6098
6131
  const REPLY_SESSION_INIT_CONFLICT_MESSAGE_RE = /reply session initialization conflicted for \S+/u;
@@ -6653,7 +6686,7 @@ async function getSlackBoltInterop() {
6653
6686
  }
6654
6687
  return slackBoltInterop;
6655
6688
  }
6656
- const loadSlackRelaySource = createLazyRuntimeModule(() => import("./relay-source-BpKdjsll.mjs"));
6689
+ const loadSlackRelaySource = createLazyRuntimeModule(() => import("./relay-source-D89S2hfg.mjs"));
6657
6690
  function resolveSlackRuntimeIdentity(params) {
6658
6691
  const botUserId = normalizeOptionalString(params.botUserId);
6659
6692
  const botId = normalizeOptionalString(params.botId);
@@ -7055,6 +7088,8 @@ async function monitorSlackProvider(opts = {}) {
7055
7088
  }
7056
7089
  if (slackMode === "socket") {
7057
7090
  let reconnectAttempts = 0;
7091
+ const authState = { consecutiveInvalidAuth: 0 };
7092
+ const logError = (message) => runtime.error?.(message);
7058
7093
  let hasLoggedSocketConnected = false;
7059
7094
  while (!opts.abortSignal?.aborted) try {
7060
7095
  const disconnect = await startSlackSocketAndWaitForDisconnect({
@@ -7062,6 +7097,7 @@ async function monitorSlackProvider(opts = {}) {
7062
7097
  abortSignal: opts.abortSignal,
7063
7098
  onStarted: async () => {
7064
7099
  reconnectAttempts = 0;
7100
+ authState.consecutiveInvalidAuth = 0;
7065
7101
  await recoverSlackIdentity();
7066
7102
  publishSlackConnectedStatus(opts.setStatus, ctx.identityHealth);
7067
7103
  if (!hasLoggedSocketConnected) {
@@ -7073,11 +7109,7 @@ async function monitorSlackProvider(opts = {}) {
7073
7109
  if (!disconnect) break;
7074
7110
  if (opts.abortSignal?.aborted) break;
7075
7111
  publishSlackDisconnectedStatus(opts.setStatus, disconnect.error);
7076
- if (disconnect.error && isNonRecoverableSlackAuthError(disconnect.error)) {
7077
- publishSlackBlockedStatus(opts.setStatus, disconnect.error);
7078
- runtime.error?.(`slack socket mode disconnected due to non-recoverable auth error — skipping channel (${formatSlackError(disconnect.error)})`);
7079
- throw disconnect.error instanceof Error ? disconnect.error : new Error(formatSlackError(disconnect.error));
7080
- }
7112
+ trackSlackAuthFailure(disconnect.error, "auth: disconnected, skipping channel", opts.setStatus, logError, authState);
7081
7113
  reconnectAttempts += 1;
7082
7114
  const delayMs = computeBackoff(SLACK_SOCKET_RECONNECT_POLICY, reconnectAttempts);
7083
7115
  runtime.log?.(warn(formatSlackSocketReconnectMessage({
@@ -7093,11 +7125,7 @@ async function monitorSlackProvider(opts = {}) {
7093
7125
  break;
7094
7126
  }
7095
7127
  } catch (err) {
7096
- if (isNonRecoverableSlackAuthError(err)) {
7097
- publishSlackBlockedStatus(opts.setStatus, err);
7098
- runtime.error?.(`slack socket mode failed to start due to non-recoverable auth error — skipping channel (${formatSlackError(err)})`);
7099
- throw err;
7100
- }
7128
+ trackSlackAuthFailure(err, "auth: start failed, skipping channel", opts.setStatus, logError, authState);
7101
7129
  publishSlackDisconnectedStatus(opts.setStatus, err);
7102
7130
  reconnectAttempts += 1;
7103
7131
  const delayMs = computeBackoff(SLACK_SOCKET_RECONNECT_POLICY, reconnectAttempts);
@@ -1,7 +1,7 @@
1
1
  import { d as resolveSlackOperationToken, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
2
2
  import { a as parseSlackTarget } from "./target-parsing-FFE26kOV.mjs";
3
- import { K as resolveSlackQuestionActionIds, R as SLACK_QUESTION_FINALIZATION_BLOCKS, f as assertSlackDetachedTargetAllowed, k as SLACK_TEXT_LIMIT, lt as escapeSlackMrkdwn, mt as SLACK_PRESENTATION_CAPABILITIES } from "./session-status-DscajIsd.mjs";
4
- import { c as resolveSlackReplyDeliveryMessages, i as parseSlackReplyBlockSegments, o as resolveSlackReplyBlockResolution, r as normalizeSlackReplyPayload, u as resolveSlackAuthoredTextPlacement } from "./reply-blocks-SE1kTE3I.mjs";
3
+ import { K as resolveSlackQuestionActionIds, R as SLACK_QUESTION_FINALIZATION_BLOCKS, f as assertSlackDetachedTargetAllowed, k as SLACK_TEXT_LIMIT, lt as escapeSlackMrkdwn, mt as SLACK_PRESENTATION_CAPABILITIES } from "./session-status-CPWDBkOb.mjs";
4
+ import { c as resolveSlackReplyDeliveryMessages, i as parseSlackReplyBlockSegments, o as resolveSlackReplyBlockResolution, r as normalizeSlackReplyPayload, u as resolveSlackAuthoredTextPlacement } from "./reply-blocks-BntCJ7mr.mjs";
5
5
  import { r as resolveSlackThreadTsValue } from "./thread-ts-Cvt7WD6B.mjs";
6
6
  import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.mjs";
7
7
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -44,7 +44,7 @@ function readSlackRenderedPresentation(slackData) {
44
44
  return;
45
45
  }
46
46
  }
47
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send-BOVLQi3n.mjs").then((n) => n.n));
47
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send-BSQKD4nx.mjs").then((n) => n.n));
48
48
  function resolveSlackSendIdentity(identity) {
49
49
  if (!identity) return;
50
50
  const username = normalizeOptionalString(identity.name);
@@ -1,15 +1,15 @@
1
1
  import { i as __reExport, n as resolveSlackStreamingMode, r as __exportAll, t as resolveSlackNativeStreaming } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { f as resolveSlackReplyToMode } from "./accounts-D_N9IqNA.mjs";
3
3
  import { n as formatSlackTarget } from "./target-parsing-FFE26kOV.mjs";
4
- import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, H as SLACK_SESSION_LINK_ACTION_ID, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, c as qualifySlackRoutePeerId, j as truncateSlackText, k as SLACK_TEXT_LIMIT, lt as escapeSlackMrkdwn, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText } from "./session-status-DscajIsd.mjs";
4
+ import { A as countSlackTextUtf8Bytes, C as buildSlackBlocksFallbackText, E as SLACK_EDIT_TEXT_MAX_BYTES, H as SLACK_SESSION_LINK_ACTION_ID, M as truncateSlackTextByUtf8Bytes, Q as normalizeSlackOutboundText, c as qualifySlackRoutePeerId, j as truncateSlackText, k as SLACK_TEXT_LIMIT, lt as escapeSlackMrkdwn, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText } from "./session-status-CPWDBkOb.mjs";
5
5
  import { D as normalizeSlackAllowOwnerEntry, j as resolveSlackUserAllowed, o as formatSlackError, v as readLruMapEntry, y as writeLruMapEntry } from "./probe-B2Y9qc_z.mjs";
6
- import { a as prepareSlackReply, l as resolveSlackReplyRenderPlan, s as resolveSlackReplyBlocks } from "./reply-blocks-SE1kTE3I.mjs";
6
+ import { a as prepareSlackReply, l as resolveSlackReplyRenderPlan, s as resolveSlackReplyBlocks } from "./reply-blocks-BntCJ7mr.mjs";
7
7
  import { n as resolveSlackReplyThreadTs } from "./thread-ts-Cvt7WD6B.mjs";
8
- import { C as hasSlackTableBlock, D as buildSlackEditTextPayload, E as resolveSlackMessageText$1, T as resolveSlackBlocksText, a as editSlackRenderedMessage, b as formatSlackFileReference, d as reactSlackMessage, i as editSlackMessage, m as removeSlackReaction, n as deleteSlackMessage, w as isSlackUnfurlAttachment, x as formatSlackFileReferenceList } from "./actions-Df0CzcDl.mjs";
9
- import { c as hasSlackThreadParticipationWithPersistence, i as clearSlackThreadFailureNotice, l as recordSlackThreadFailureNotice, o as hasSlackThreadFailureNotice, p as buildSlackNativeDataDeliveryPlan, s as hasSlackThreadParticipation, t as sendMessageSlack, u as recordSlackThreadParticipation } from "./send-BOVLQi3n.mjs";
10
- import { n as resolveSlackChannelConfig } from "./policy-D-jfM174.mjs";
11
- import { C as resolveSlackChatType, E as stripSlackMentionsForCommandDetection, S as normalizeSlackChannelType, T as readSlackAssistantThreadContext, _ as appendSlackStream, b as stopSlackStream, c as resolveSlackRoutingContext, g as SlackStreamNotDeliveredError, h as resolveSlackEffectiveAllowFrom, i as resolveSlackRoomContextHints, l as registerSlackSessionRun, m as resolveSlackCommandIngress, p as authorizeSlackBotRoomMessage, r as trackSlackDraftMessage, s as authorizeSlackDirectMessage, u as resolveSlackThreadContext, v as markSlackStreamFallbackDelivered, w as buildSlackAssistantThreadMetadata, y as startSlackStream } from "./monitor-BPVfkumU.mjs";
12
- import { a as emitSlackMessageSentHooks, i as sanitizeSlackMonitorReplyPayload, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-BAnUtr2f.mjs";
8
+ import { C as hasSlackTableBlock, D as buildSlackEditTextPayload, E as resolveSlackMessageText$1, T as resolveSlackBlocksText, a as editSlackRenderedMessage, b as formatSlackFileReference, d as reactSlackMessage, i as editSlackMessage, m as removeSlackReaction, n as deleteSlackMessage, w as isSlackUnfurlAttachment, x as formatSlackFileReferenceList } from "./actions-B-E1iXQh.mjs";
9
+ import { c as hasSlackThreadParticipationWithPersistence, i as clearSlackThreadFailureNotice, l as recordSlackThreadFailureNotice, o as hasSlackThreadFailureNotice, p as buildSlackNativeDataDeliveryPlan, s as hasSlackThreadParticipation, t as sendMessageSlack, u as recordSlackThreadParticipation } from "./send-BSQKD4nx.mjs";
10
+ import { n as resolveSlackChannelConfig } from "./policy-D7nmaTmD.mjs";
11
+ import { C as resolveSlackChatType, E as stripSlackMentionsForCommandDetection, S as normalizeSlackChannelType, T as readSlackAssistantThreadContext, _ as appendSlackStream, b as stopSlackStream, c as resolveSlackRoutingContext, g as SlackStreamNotDeliveredError, h as resolveSlackEffectiveAllowFrom, i as resolveSlackRoomContextHints, l as registerSlackSessionRun, m as resolveSlackCommandIngress, p as authorizeSlackBotRoomMessage, r as trackSlackDraftMessage, s as authorizeSlackDirectMessage, u as resolveSlackThreadContext, v as markSlackStreamFallbackDelivered, w as buildSlackAssistantThreadMetadata, y as startSlackStream } from "./monitor-CX8JFutk.mjs";
12
+ import { a as emitSlackMessageSentHooks, i as sanitizeSlackMonitorReplyPayload, n as deliverReplies, t as createSlackReplyDeliveryPlan } from "./replies-DsANnslp.mjs";
13
13
  import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
14
14
  import { resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
15
15
  import { buildChannelProgressDraftLine, createChannelMessageReplyPipeline, createChannelProgressDraftCompositor, createChannelProgressWorkCounter, createDraftStreamLoop, createFinalizableDraftLifecycle, createLivePreviewLifecycle, createMessageReceiptFromOutboundResults, formatChannelProgressDraftDiffStat, formatPlanChecklistLines, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelStreamingBlockEnabled, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
@@ -2786,7 +2786,7 @@ const SLACK_MENTION_RESOLUTION_CONCURRENCY = 4;
2786
2786
  const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
2787
2787
  const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
2788
2788
  const MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS = 2e3;
2789
- const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-Df0CzcDl.mjs").then((n) => n._));
2789
+ const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-B-E1iXQh.mjs").then((n) => n._));
2790
2790
  function formatSlackUnavailableMedia(params) {
2791
2791
  let fileReferences = params.files?.map((file) => `${formatSlackFileReference(file)} unavailable (${file.reason})`).join(", ");
2792
2792
  if (fileReferences && fileReferences.length > MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS) fileReferences = `${truncateUtf16Safe(fileReferences, MAX_SLACK_UNAVAILABLE_FILE_TEXT_CHARS)}; … (file references truncated)`;
@@ -3140,7 +3140,7 @@ async function resolveSlackHistoryMedia(params) {
3140
3140
  }
3141
3141
  //#endregion
3142
3142
  //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
3143
- const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-Df0CzcDl.mjs").then((n) => n._));
3143
+ const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-B-E1iXQh.mjs").then((n) => n._));
3144
3144
  const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
3145
3145
  function formatSlackThreadLabelSnippet(text) {
3146
3146
  return truncateUtf16Safe(text.replace(/\s+/g, " "), 80);
@@ -1,4 +1,4 @@
1
- import { i as buildSlackChannelPolicyScope, r as buildSlackChannelIdCandidates } from "./session-status-DscajIsd.mjs";
1
+ import { i as buildSlackChannelPolicyScope, r as buildSlackChannelIdCandidates } from "./session-status-CPWDBkOb.mjs";
2
2
  import { A as resolveSlackUserAllowListForTeam, O as normalizeSlackSlug } from "./probe-B2Y9qc_z.mjs";
3
3
  import { applyChannelMatchMeta, buildChannelKeyCandidates } from "openclaw/plugin-sdk/channel-targets";
4
4
  import { firstDefined } from "openclaw/plugin-sdk/allow-from";
@@ -1,11 +1,11 @@
1
1
  import { o as formatSlackError } from "./probe-B2Y9qc_z.mjs";
2
- import { d as parseSlackMessageEvent, f as requireSlackMessageEvent, x as SLACK_SOCKET_RECONNECT_POLICY } from "./monitor-BPVfkumU.mjs";
2
+ import { d as parseSlackMessageEvent, f as requireSlackMessageEvent, x as SLACK_SOCKET_RECONNECT_POLICY } from "./monitor-CX8JFutk.mjs";
3
3
  import { asOptionalRecord, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
5
5
  import { createNodeProxyAgent } from "openclaw/plugin-sdk/fetch-runtime";
6
6
  import { isIP } from "node:net";
7
7
  import { rawDataToString } from "openclaw/plugin-sdk/webhook-ingress";
8
- import { WebSocket } from "openclaw/plugin-sdk/websocket-runtime";
8
+ import { WebSocket, startWebSocketKeepalive } from "openclaw/plugin-sdk/websocket-runtime";
9
9
  //#region extensions/slack/src/monitor/relay-source.ts
10
10
  const SLACK_RELAY_ROUTE_KINDS = /* @__PURE__ */ new Set([
11
11
  "user_group",
@@ -93,7 +93,12 @@ function runRelayWebSocket(params) {
93
93
  const ws = params.connection;
94
94
  let pending = Promise.resolve();
95
95
  return new Promise((resolve, reject) => {
96
+ const stopKeepalive = startWebSocketKeepalive(ws, () => {
97
+ ws.terminate();
98
+ settleReject(/* @__PURE__ */ new Error("Slack relay websocket heartbeat timed out"));
99
+ });
96
100
  const cleanup = () => {
101
+ stopKeepalive();
97
102
  ws.off("message", onMessage);
98
103
  ws.off("error", onError);
99
104
  ws.off("close", onClose);
@@ -1,8 +1,8 @@
1
- import { C as buildSlackBlocksFallbackText, Z as markdownToSlackMrkdwnChunks, b as isSlackInvalidBlocksResponse, g as buildSlackNativeDataAccessibilityText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, x as isSlackNativeResponseUrlRejection } from "./session-status-DscajIsd.mjs";
2
- import { n as iterateSlackReplyDeliveryMessages, o as resolveSlackReplyBlockResolution, t as hasSlackReplyStructuredContent } from "./reply-blocks-SE1kTE3I.mjs";
1
+ import { C as buildSlackBlocksFallbackText, Z as markdownToSlackMrkdwnChunks, b as isSlackInvalidBlocksResponse, g as buildSlackNativeDataAccessibilityText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, x as isSlackNativeResponseUrlRejection } from "./session-status-CPWDBkOb.mjs";
2
+ import { n as iterateSlackReplyDeliveryMessages, o as resolveSlackReplyBlockResolution, t as hasSlackReplyStructuredContent } from "./reply-blocks-BntCJ7mr.mjs";
3
3
  import { n as resolveSlackReplyThreadTs } from "./thread-ts-Cvt7WD6B.mjs";
4
- import { m as chunkSlackTextAtHardLimit, p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BOVLQi3n.mjs";
5
- import { a as SlackResponseAlreadyReportedError, o as createSlackResponseUrlBudget } from "./monitor-BPVfkumU.mjs";
4
+ import { m as chunkSlackTextAtHardLimit, p as buildSlackNativeDataDeliveryPlan, t as sendMessageSlack } from "./send-BSQKD4nx.mjs";
5
+ import { a as SlackResponseAlreadyReportedError, o as createSlackResponseUrlBudget } from "./monitor-CX8JFutk.mjs";
6
6
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
7
7
  import { sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
8
8
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
@@ -1,4 +1,4 @@
1
- import { $ as buildSlackDataVisualizationBlock, B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as encodeSlackQuestionAction, L as SLACK_QUESTION_BUTTON_ACTION_ID, N as SLACK_APPROVAL_BUTTON_ACTION_ID, P as SLACK_APPROVAL_SELECT_ACTION_ID, T as renderSlackBlockFallbackText, V as SLACK_REPLY_SELECT_ACTION_ID, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _t as parseSlackBlocksInput, at as countSlackDataTableCellCharacters, et as canRenderSlackDataVisualization, ft as encodeSlackApprovalAction, g as buildSlackNativeDataAccessibilityText, ht as SLACK_SECTION_TEXT_MAX, it as countSlackDataTableBlocksCellCharacters, j as truncateSlackText, m as appendSlackNativeDataFallbackText, ot as resolveSlackDataTableCellCharacterCount, rt as buildSlackDataTableBlock, st as renderSlackMessagePresentationChartFallbackText, tt as hasSlackDataVisualizationBlock, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, z as SLACK_REPLY_BUTTON_ACTION_ID } from "./session-status-DscajIsd.mjs";
1
+ import { $ as buildSlackDataVisualizationBlock, B as SLACK_REPLY_LINK_ACTION_ID, C as buildSlackBlocksFallbackText, F as SLACK_CALLBACK_BUTTON_ACTION_ID, I as SLACK_CALLBACK_SELECT_ACTION_ID, J as encodeSlackQuestionAction, L as SLACK_QUESTION_BUTTON_ACTION_ID, N as SLACK_APPROVAL_BUTTON_ACTION_ID, P as SLACK_APPROVAL_SELECT_ACTION_ID, T as renderSlackBlockFallbackText, V as SLACK_REPLY_SELECT_ACTION_ID, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _t as parseSlackBlocksInput, at as countSlackDataTableCellCharacters, et as canRenderSlackDataVisualization, ft as encodeSlackApprovalAction, g as buildSlackNativeDataAccessibilityText, ht as SLACK_SECTION_TEXT_MAX, it as countSlackDataTableBlocksCellCharacters, j as truncateSlackText, m as appendSlackNativeDataFallbackText, ot as resolveSlackDataTableCellCharacterCount, rt as buildSlackDataTableBlock, st as renderSlackMessagePresentationChartFallbackText, tt as hasSlackDataVisualizationBlock, v as hasSlackNativeDataBlock, w as buildSlackCompleteBlocksFallbackText, z as SLACK_REPLY_BUTTON_ACTION_ID } from "./session-status-CPWDBkOb.mjs";
2
2
  import { asOptionalRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { chunkTextForOutbound } from "openclaw/plugin-sdk/text-chunking";
4
4
  import { legacyInteractiveReplyToPresentation, normalizeMessagePresentation, renderMessagePresentationFallbackText, resolveMessagePresentationButtonAction, resolveMessagePresentationOptionAction } from "openclaw/plugin-sdk/interactive-runtime";
@@ -0,0 +1,2 @@
1
+ export { r as setSlackRuntime } from "./runtime-JSVZSWAj.mjs";
2
+ import "../runtime-setter-api.js";
@@ -0,0 +1,2 @@
1
+ export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-BaZcu6P_.mjs";
2
+ import "../secret-contract-api.js";
@@ -1,7 +1,7 @@
1
1
  import { r as __exportAll } from "./streaming-compat-C5Wut626.mjs";
2
2
  import { d as resolveSlackOperationToken, s as resolveSlackAccount } from "./accounts-D_N9IqNA.mjs";
3
3
  import { a as parseSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-FFE26kOV.mjs";
4
- import { D as SLACK_MESSAGE_TEXT_HARD_LIMIT, E as SLACK_EDIT_TEXT_MAX_BYTES, K as resolveSlackQuestionActionIds, M as truncateSlackTextByUtf8Bytes, O as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, R as SLACK_QUESTION_FINALIZATION_BLOCKS, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as createSlackNativeDataBaseTextConsumer, f as assertSlackDetachedTargetAllowed, g as buildSlackNativeDataAccessibilityText, h as appendSlackNativeDataPlainTextFallback, j as truncateSlackText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-DscajIsd.mjs";
4
+ import { D as SLACK_MESSAGE_TEXT_HARD_LIMIT, E as SLACK_EDIT_TEXT_MAX_BYTES, K as resolveSlackQuestionActionIds, M as truncateSlackTextByUtf8Bytes, O as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, R as SLACK_QUESTION_FINALIZATION_BLOCKS, S as stripSlackNativeDataBlocks, T as renderSlackBlockFallbackText, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as createSlackNativeDataBaseTextConsumer, f as assertSlackDetachedTargetAllowed, g as buildSlackNativeDataAccessibilityText, h as appendSlackNativeDataPlainTextFallback, j as truncateSlackText, k as SLACK_TEXT_LIMIT, v as hasSlackNativeDataBlock, vt as validateSlackBlocksArray, w as buildSlackCompleteBlocksFallbackText, y as isSlackInvalidBlocksError } from "./session-status-CPWDBkOb.mjs";
5
5
  import { _ as getSlackWriteClient, d as createSlackReadClient, h as createSlackWriteClient, o as formatSlackError, p as createSlackTokenCacheKey, s as getSlackWebApiErrorData } from "./probe-B2Y9qc_z.mjs";
6
6
  import { r as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-Cvt7WD6B.mjs";
7
7
  import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
@@ -68,7 +68,7 @@ function normalizeSlackApproverTarget(value) {
68
68
  const trimmed = normalizeStringifiedOptionalString(value);
69
69
  if (!trimmed) return;
70
70
  try {
71
- const target = parseSlackTarget(trimmed, { defaultKind: "user" });
71
+ const target = parseSlackTarget(trimmed.replace(/^slack:/i, ""), { defaultKind: "user" });
72
72
  const id = target?.kind === "user" ? normalizeSlackUserLikeId(target.id) : void 0;
73
73
  return target?.teamId && id ? formatSlackTarget({
74
74
  kind: "user",
@@ -0,0 +1,2 @@
1
+ export { t as slackSetupPlugin } from "./channel.setup-Dh2jzAjN.mjs";
2
+ import "../setup-plugin-api.js";
@@ -1,4 +1,4 @@
1
- import { i as sanitizeSlackMonitorReplyPayload, r as deliverSlackSlashReplies } from "./replies-BAnUtr2f.mjs";
1
+ import { i as sanitizeSlackMonitorReplyPayload, r as deliverSlackSlashReplies } from "./replies-DsANnslp.mjs";
2
2
  import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
3
3
  import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
4
4
  import { resolveConversationLabel } from "openclaw/plugin-sdk/conversation-runtime";
@@ -0,0 +1 @@
1
+ {"version":3,"entries":[{"output":"account-inspect-api.js","source":"extensions/slack/account-inspect-api.ts"},{"output":"api.js","source":"extensions/slack/api.ts"},{"output":"channel-config-api.js","source":"extensions/slack/channel-config-api.ts"},{"output":"channel-entry.js","source":"extensions/slack/channel-entry.ts"},{"output":"channel-plugin-api.js","source":"extensions/slack/channel-plugin-api.ts"},{"output":"configured-state.js","source":"extensions/slack/configured-state.ts"},{"output":"contract-api.js","source":"extensions/slack/contract-api.ts"},{"output":"directory-contract-api.js","source":"extensions/slack/directory-contract-api.ts"},{"output":"doctor-contract-api.js","source":"extensions/slack/doctor-contract-api.ts"},{"output":"http-routes-api.js","source":"extensions/slack/http-routes-api.ts"},{"output":"index.js","source":"extensions/slack/index.ts"},{"output":"message-tool-api.js","source":"extensions/slack/message-tool-api.ts"},{"output":"runtime-api.js","source":"extensions/slack/runtime-api.ts"},{"output":"runtime-setter-api.js","source":"extensions/slack/runtime-setter-api.ts"},{"output":"secret-contract-api.js","source":"extensions/slack/secret-contract-api.ts"},{"output":"security-contract-api.js","source":"extensions/slack/security-contract-api.ts"},{"output":"setup-entry.js","source":"extensions/slack/setup-entry.ts"},{"output":"setup-plugin-api.js","source":"extensions/slack/setup-plugin-api.ts"}],"chunks":[{"output":".setup/account-configured-sUohAxZr.mjs","sha256":"82fcabfb7b188ada842e8d3ce4cdb58919c010a37ce05edf88033ac332198ffe","facadeSource":null,"sources":["extensions/slack/src/account-configured.ts"]},{"output":".setup/account-inspect-DWBXpER6.mjs","sha256":"ab057df3481a5e7e4d618756e61b5a4ef6a6bbbcdef7b4d77bea2b46d1c20838","facadeSource":null,"sources":["extensions/slack/src/account-inspect.ts"]},{"output":".setup/accounts-D_N9IqNA.mjs","sha256":"16fd7747f988f365337ee760fa9c00541b66a72f1cfa758255d195e80333c333","facadeSource":null,"sources":["extensions/slack/src/account-reply-mode.ts","extensions/slack/src/accounts.ts","extensions/slack/src/token.ts"]},{"output":".setup/action-runtime-DrJGFq6u.mjs","sha256":"d88e1d22cc6e1c775539ec4b0f6f66745a84aa8863def7124c6b5bf4505cd4bc","facadeSource":null,"sources":["extensions/slack/src/action-runtime.ts"]},{"output":".setup/action-runtime.runtime-BhXBcznI.mjs","sha256":"2c8291809facf90ae23f7c38eba08e192843be9fd4fceb07f6f9a94b9ef2d7e2","facadeSource":"extensions/slack/src/action-runtime.runtime.ts","sources":[]},{"output":".setup/actions-B-E1iXQh.mjs","sha256":"8bd427bc0f2fa1013702bedeb14e35a9b4171adcb12ee5fda8ee1c8a69159def","facadeSource":null,"sources":["extensions/slack/src/actions.ts","extensions/slack/src/conversation-open.ts","extensions/slack/src/edit-text.ts","extensions/slack/src/file-reference.ts","extensions/slack/src/monitor/block-text.ts","extensions/slack/src/monitor/media.runtime.ts","extensions/slack/src/monitor/media.ts","extensions/slack/src/monitor/slack-client-kind.ts"]},{"output":".setup/approval-handler.runtime-B4zv4Cy-.mjs","sha256":"d9f6f74f9a90e4a9e9b4e1c5ee0aeb8a154e3d6cecdb0fe1c0cd96ca78d36580","facadeSource":"extensions/slack/src/approval-handler.runtime.ts","sources":["extensions/slack/src/approval-handler.runtime.ts"]},{"output":".setup/approval-message-updates-Psy357ys.mjs","sha256":"e512c51e8574de2c5ac5e6aefd666aa66766916fc9105d5bc047b37063ca0f37","facadeSource":null,"sources":["extensions/slack/src/approval-message-updates.ts"]},{"output":".setup/channel-CLZVpPR0.mjs","sha256":"a8652af83e064d6e325d1fc5317bcd8304e5f80dd50bf5606e4b2538564050e1","facadeSource":null,"sources":["extensions/slack/src/approval-native.ts","extensions/slack/src/channel-actions.ts","extensions/slack/src/channel.ts","extensions/slack/src/conversation-route-owner.ts","extensions/slack/src/enterprise-user-route.ts","extensions/slack/src/message-action-dispatch.ts","extensions/slack/src/threading-tool-context.ts"]},{"output":".setup/channel-meta-C443t-lI.mjs","sha256":"9c2859245e7b4af118b9e83309cfa1199171e136cee1722317d28e0d31a87180","facadeSource":null,"sources":["extensions/slack/src/channel-meta.ts"]},{"output":".setup/channel-type-DdNW4_3Y.mjs","sha256":"0535b73da829ca76b67b0030b57ef568123f121ea933163e47e1a18128077cbb","facadeSource":null,"sources":["extensions/slack/src/channel-type.ts"]},{"output":".setup/channel.setup-Dh2jzAjN.mjs","sha256":"b5f1ed7eb81c50286316e253738683f3c109e94d17950ba28aacb4bf070d4538","facadeSource":null,"sources":["extensions/slack/src/channel.setup.ts","extensions/slack/src/config-adapter.ts","extensions/slack/src/setup-core.ts","extensions/slack/src/setup-shared.ts"]},{"output":".setup/config-schema-BZCxmHKG.mjs","sha256":"5c76e3a84299f218857440091c54a7aaa9b3c6cb751b66647fecbe47af7e1850","facadeSource":null,"sources":["extensions/slack/src/config-schema.ts","extensions/slack/src/config-ui-hints.ts"]},{"output":".setup/directory-config-BOUWH3hR.mjs","sha256":"79a1f38c13d61173b8093faeb3f879fbc44416ac186f0fec4c4a9afa51bc7757","facadeSource":null,"sources":["extensions/slack/src/directory-config.ts"]},{"output":".setup/directory-live-B2O4B_Ho.mjs","sha256":"4db7e91f5a2a6f3c458f448d80bcd4205f3c31ea87e84812aa2c89419213f9ae","facadeSource":null,"sources":["extensions/slack/src/directory-live.ts"]},{"output":".setup/doctor-contract-CRN1Z_c7.mjs","sha256":"5717c9afd8aeb5d758d4e8949ef73a817db900184e8d7a5b290046fe1d5a14fa","facadeSource":null,"sources":["extensions/slack/src/doctor-contract.ts","packages/normalization-core/src/record-coerce.ts","src/config/channel-config-normalization.ts","src/plugin-sdk/legacy-webhook-listener-migration.ts"]},{"output":".setup/message-tool-api-Cu4lwlGy.mjs","sha256":"5c8459024c265cec8a0efd77efe9b0063e8e15369b46cea1d4fa17d7b88450b0","facadeSource":null,"sources":["extensions/slack/src/message-actions.ts","extensions/slack/src/message-tool-api.ts"]},{"output":".setup/monitor-CX8JFutk.mjs","sha256":"67bf9d2bd8821f1e02935d540446a26d760270fe96573fc4b5f4e2e3ccb7631c","facadeSource":null,"sources":["extensions/slack/src/channel-migration.ts","extensions/slack/src/draft-message-boundaries.ts","extensions/slack/src/interactive-dispatch.ts","extensions/slack/src/modal-metadata.ts","extensions/slack/src/monitor.ts","extensions/slack/src/monitor/agent-view-state.ts","extensions/slack/src/monitor/approval-runtime-context.ts","extensions/slack/src/monitor/assistant-thread-context.ts","extensions/slack/src/monitor/auth.ts","extensions/slack/src/monitor/channel-type.ts","extensions/slack/src/monitor/commands.ts","extensions/slack/src/monitor/context.ts","extensions/slack/src/monitor/deferred-action-routing.ts","extensions/slack/src/monitor/dm-auth.ts","extensions/slack/src/monitor/enterprise-install.ts","extensions/slack/src/monitor/event-scope.ts","extensions/slack/src/monitor/events.ts","extensions/slack/src/monitor/events/agent.ts","extensions/slack/src/monitor/events/assistant.ts","extensions/slack/src/monitor/events/channels.ts","extensions/slack/src/monitor/events/home.ts","extensions/slack/src/monitor/events/interaction-event.ts","extensions/slack/src/monitor/events/interactions.approval-sender.ts","extensions/slack/src/monitor/events/interactions.block-actions.ts","extensions/slack/src/monitor/events/interactions.modal.ts","extensions/slack/src/monitor/events/interactions.shortcuts.ts","extensions/slack/src/monitor/events/interactions.ts","extensions/slack/src/monitor/events/members.ts","extensions/slack/src/monitor/events/message-subtype-handlers.ts","extensions/slack/src/monitor/events/messages.ts","extensions/slack/src/monitor/events/pins.ts","extensions/slack/src/monitor/events/reactions.ts","extensions/slack/src/monitor/events/system-event-context.ts","extensions/slack/src/monitor/external-arg-menu-store.ts","extensions/slack/src/monitor/http-handler.ts","extensions/slack/src/monitor/ingress.ts","extensions/slack/src/monitor/message-dispatch-dedupe.ts","extensions/slack/src/monitor/message-handler.ts","extensions/slack/src/monitor/message-handler/debounce-key.ts","extensions/slack/src/monitor/message-handler/prepare-routing.ts","extensions/slack/src/monitor/presence-cooldown-store.ts","extensions/slack/src/monitor/presence-monitor.ts","extensions/slack/src/monitor/provider-support.ts","extensions/slack/src/monitor/provider.ts","extensions/slack/src/monitor/reconnect-policy.ts","extensions/slack/src/monitor/response-url-budget.ts","extensions/slack/src/monitor/room-context.ts","extensions/slack/src/monitor/runtime-policy.ts","extensions/slack/src/monitor/session-run-targets.ts","extensions/slack/src/monitor/slash.ts","extensions/slack/src/monitor/socket-mode-envelope.ts","extensions/slack/src/monitor/suggested-prompts.ts","extensions/slack/src/monitor/system-event-session.ts","extensions/slack/src/monitor/thread-resolution.ts","extensions/slack/src/streaming.ts","extensions/slack/src/threading.ts","extensions/slack/src/types.ts"]},{"output":".setup/outbound-adapter-BGeEF1Tb.mjs","sha256":"bc96be64567ae188f482fd46ae6ef3783b999360c4dc4625fdc610cba0b25d58","facadeSource":"extensions/slack/src/outbound-adapter.ts","sources":["extensions/slack/src/outbound-adapter.ts"]},{"output":".setup/pipeline.runtime-DpcyomUm.mjs","sha256":"d29246dbb1025c1de7e0abc3bf5c67abf0d3c77222b319cc953a25fe8b3453e9","facadeSource":"extensions/slack/src/monitor/message-handler/pipeline.runtime.ts","sources":["extensions/slack/src/agent-context.ts","extensions/slack/src/draft-stream.ts","extensions/slack/src/monitor/message-handler/dispatch-helpers.ts","extensions/slack/src/monitor/message-handler/dispatch-progress-card.ts","extensions/slack/src/monitor/message-handler/dispatch-progress-native.ts","extensions/slack/src/monitor/message-handler/dispatch-progress-render.ts","extensions/slack/src/monitor/message-handler/dispatch-progress.ts","extensions/slack/src/monitor/message-handler/dispatch-setup.ts","extensions/slack/src/monitor/message-handler/dispatch-streaming.ts","extensions/slack/src/monitor/message-handler/dispatch.ts","extensions/slack/src/monitor/message-handler/preflight-audio.ts","extensions/slack/src/monitor/message-handler/prepare-content.ts","extensions/slack/src/monitor/message-handler/prepare-dm-history.ts","extensions/slack/src/monitor/message-handler/prepare-room-history.ts","extensions/slack/src/monitor/message-handler/prepare-thread-context-root.ts","extensions/slack/src/monitor/message-handler/prepare-thread-context.ts","extensions/slack/src/monitor/message-handler/prepare-thread-mentions.ts","extensions/slack/src/monitor/message-handler/prepare.ts","extensions/slack/src/monitor/message-handler/preview-finalize.ts","extensions/slack/src/monitor/message-handler/subteam-mentions.ts","extensions/slack/src/monitor/message-handler/timestamp.ts","extensions/slack/src/monitor/thread.ts","extensions/slack/src/progress-blocks.ts","extensions/slack/src/stream-mode.ts","src/channels/mention-gating.ts"]},{"output":".setup/plugin-routes-B8tooDLj.mjs","sha256":"6807fcf3ddadca56e7c5fb24618aa0fb4a90fd8122019c6a419a8c1d101ae4b9","facadeSource":null,"sources":["extensions/slack/src/http/plugin-routes.ts"]},{"output":".setup/policy-D7nmaTmD.mjs","sha256":"0ae67b64d5a7b076a762a91f44713af0f5e85d9efbd29feeab5f3f69b2a5feb6","facadeSource":null,"sources":["extensions/slack/src/monitor/channel-config.ts","extensions/slack/src/monitor/policy.ts"]},{"output":".setup/probe-B2Y9qc_z.mjs","sha256":"57867725eb23ff26972b8ff7fd2268312bfd7cf68b924e9ada5dc7dafe83eade","facadeSource":null,"sources":["extensions/slack/src/client-options.ts","extensions/slack/src/client.ts","extensions/slack/src/cursor-pages.ts","extensions/slack/src/errors.ts","extensions/slack/src/monitor/allow-list.ts","extensions/slack/src/monitor/ingress-identity.ts","extensions/slack/src/monitor/lru-map-cache.ts","extensions/slack/src/probe.ts"]},{"output":".setup/registry-CIbMfuf8.mjs","sha256":"cd6833f1c991f545bbff77c95b64b743e01a1a51c8e89cc332f3cec3dcf4b4ac","facadeSource":null,"sources":["extensions/slack/src/http/paths.ts","extensions/slack/src/http/registry.ts"]},{"output":".setup/relay-source-D89S2hfg.mjs","sha256":"cfba198d3d1f4a426ff248b123efb33e47a8dfeb215d03d69d4293b65be6edbb","facadeSource":"extensions/slack/src/monitor/relay-source.ts","sources":["extensions/slack/src/monitor/relay-source.ts"]},{"output":".setup/replies-DsANnslp.mjs","sha256":"c65588cf8f0f586a3f54ebcf3620d47f242bc043d2147ae796ed9474f557eca5","facadeSource":null,"sources":["extensions/slack/src/message-sent-hook.ts","extensions/slack/src/monitor/replies.ts"]},{"output":".setup/reply-blocks-BntCJ7mr.mjs","sha256":"0798f5abf3dcb0ae0086e9e8c21257b372d6d68fd7989ce36dcb487cd64c0746","facadeSource":null,"sources":["extensions/slack/src/authored-text.ts","extensions/slack/src/blocks-render.ts","extensions/slack/src/reply-blocks.ts"]},{"output":".setup/resolve-channels-XXBn8UU_.mjs","sha256":"057aa5d458bc8be81c79243b809c463e31a709659ad49a76e44783f814f840ee","facadeSource":null,"sources":["extensions/slack/src/resolve-channels.ts"]},{"output":".setup/resolve-users-DW0ngD03.mjs","sha256":"f1b6a740261eeb78aec1393f4e6677468d3cb5b04636c412ed8173cbb3c90a8b","facadeSource":null,"sources":["extensions/slack/src/resolve-users.ts"]},{"output":".setup/runtime-JSVZSWAj.mjs","sha256":"bdc12ab895b35efc1ea3abeac2b050dbd7223c3accca9aad94baa9aaadb9123a","facadeSource":null,"sources":["extensions/slack/src/runtime.ts"]},{"output":".setup/runtime-setter-api-Cx_PV-xu.mjs","sha256":"459d6d1bc508399dbbfe2e5f654387d549a61897e2758c2f3b7537751aa847d8","facadeSource":"extensions/slack/runtime-setter-api.ts","sources":[]},{"output":".setup/scopes-CasuDvaa.mjs","sha256":"cc1e11dc2dd3f64c4f2457d83a1e4be2d2dad79f69d65f2a554f31343c36d9ba","facadeSource":"extensions/slack/src/scopes.ts","sources":["extensions/slack/src/scopes.ts"]},{"output":".setup/secret-contract-api-3duiGw0K.mjs","sha256":"c90976fd133e65fdda4e034977b72cda25f23d511eee441b153f73c45f65f973","facadeSource":"extensions/slack/secret-contract-api.ts","sources":[]},{"output":".setup/secret-contract-BaZcu6P_.mjs","sha256":"83cc90575775dae77a143edeb6e685b9abe35fc8766661e1b376016ea97a5d44","facadeSource":null,"sources":["extensions/slack/src/secret-contract.ts"]},{"output":".setup/security-audit-BqDc-6VL.mjs","sha256":"f18115e43f8bc00d6331d74737562839ad44e9c6ec5b86de7277b1cdb60f228f","facadeSource":null,"sources":["extensions/slack/src/security-audit.ts"]},{"output":".setup/send-BSQKD4nx.mjs","sha256":"c4614e7a35aa9817743343475b7eb9b80dfab30858071702bf8d559bab20d9f9","facadeSource":null,"sources":["extensions/slack/src/client-delivery.ts","extensions/slack/src/native-data-fallback.ts","extensions/slack/src/post-message-identity.ts","extensions/slack/src/post-message-payload.ts","extensions/slack/src/send.ts","extensions/slack/src/sent-thread-cache.ts","extensions/slack/src/slack-dm-channel-cache.ts"]},{"output":".setup/send-results-eeOu_HYm.mjs","sha256":"537adf38bb52b98f8693b8904c1bb0161f5a61c08ced67cd8ffa95ecc44b8778","facadeSource":null,"sources":["extensions/slack/src/send-results.ts"]},{"output":".setup/session-status-CPWDBkOb.mjs","sha256":"044bc65cabbc8b87cb652dca422ca305e86a80b199b99bba1387aa9a71222d10","facadeSource":null,"sources":["extensions/slack/src/action-threading.ts","extensions/slack/src/approval-actions.ts","extensions/slack/src/approval-auth.ts","extensions/slack/src/approval-native-gates.ts","extensions/slack/src/approval-plugin-policy.ts","extensions/slack/src/blocks-fallback.ts","extensions/slack/src/blocks-input.ts","extensions/slack/src/conversation-binding-route.ts","extensions/slack/src/data-table.ts","extensions/slack/src/data-visualization.ts","extensions/slack/src/detached-target-admission.ts","extensions/slack/src/exec-approvals.ts","extensions/slack/src/format.ts","extensions/slack/src/group-policy.ts","extensions/slack/src/installation-identity-state.ts","extensions/slack/src/limits.ts","extensions/slack/src/monitor/mrkdwn.ts","extensions/slack/src/monitor/workspace-routing.ts","extensions/slack/src/native-data-blocks.ts","extensions/slack/src/presentation-fallback.ts","extensions/slack/src/presentation.ts","extensions/slack/src/question-actions.ts","extensions/slack/src/reply-action-ids.ts","extensions/slack/src/rich-text.ts","extensions/slack/src/session-status.ts","extensions/slack/src/truncate.ts"]},{"output":".setup/setup-plugin-api-BVR4tSwT.mjs","sha256":"c05bcb204a8854467b186a1216f39cab852b25c036ea7c665f40f197785b97ba","facadeSource":"extensions/slack/setup-plugin-api.ts","sources":[]},{"output":".setup/setup-surface-Dn7QgWRE.mjs","sha256":"1fe1ba32ab519b8e265913ca6ff8e548ab8e967ba22b29eb03f9e341cd1c6d70","facadeSource":"extensions/slack/src/setup-surface.ts","sources":["extensions/slack/src/setup-surface.ts"]},{"output":".setup/shared-qau-uDGl.mjs","sha256":"a0cb391ff94ca29b8a53853ec9e4fd2cfcf8cbae3ea99e7ba8a7e7e334afb670","facadeSource":null,"sources":["extensions/slack/src/doctor.ts","extensions/slack/src/security-doctor.ts","extensions/slack/src/security.ts","extensions/slack/src/shared.ts"]},{"output":".setup/slash-dispatch.runtime-B_jVFfTv.mjs","sha256":"77117eb099b410dd1aa0966ad51b13753ddd0837e2e731a30cc75251f73c25e9","facadeSource":"extensions/slack/src/monitor/slash-dispatch.runtime.ts","sources":[]},{"output":".setup/streaming-compat-C5Wut626.mjs","sha256":"8ed0c454f5c42b31b8d94c1bccd4abdeea750877df7f704446a6657a68973d49","facadeSource":null,"sources":["extensions/slack/src/streaming-compat.ts"]},{"output":".setup/target-parsing-FFE26kOV.mjs","sha256":"89456e9a292d400c036b295073e5c95655912c002a655dac7b9cd6b53df0d4b8","facadeSource":null,"sources":["extensions/slack/src/target-parsing.ts"]},{"output":".setup/targets-C6LZQL1Q.mjs","sha256":"e977c787d9c4f44bc2eea643e072e7f98af6814125dc1a96d25266264e2017a8","facadeSource":null,"sources":["extensions/slack/src/targets.ts"]},{"output":".setup/thread-ts-Cvt7WD6B.mjs","sha256":"00e816eefbf22d06ca8a285a83b40fea4a2bfbb9d0561e3c80a9ef08b161fa41","facadeSource":null,"sources":["extensions/slack/src/thread-ts.ts"]},{"output":"account-inspect-api.js","sha256":"bb26e61bc575b68715fe10c2e3e267769c3132766e76a4a44bcc8f22938f03de","facadeSource":"extensions/slack/account-inspect-api.ts","sources":["extensions/slack/account-inspect-api.ts"]},{"output":"api.js","sha256":"1613f64ba1ed08b7345f0155c4c520b15ebcf545665641828375f729f64268b5","facadeSource":"extensions/slack/api.ts","sources":[]},{"output":"channel-config-api.js","sha256":"1ede360d5135be4029418addb752e6e5a03a3b1325ed090d3a58f3745cbeab3d","facadeSource":"extensions/slack/channel-config-api.ts","sources":[]},{"output":"channel-entry.js","sha256":"db4699f8ffe20a62ca6011814b4a20f3fcf49c905f9864c97cb41fabef0e0ba4","facadeSource":"extensions/slack/channel-entry.ts","sources":["extensions/slack/channel-entry.ts"]},{"output":"channel-plugin-api.js","sha256":"c834bcbceadc0f9c1f1eff58ab086a91494f2a8cee72f09a74f5a9a651f1084c","facadeSource":"extensions/slack/channel-plugin-api.ts","sources":[]},{"output":"configured-state.js","sha256":"62886bc2fe28e2ceb5541a6d41287bdbb1fbbb253bfef8df87f8f4c9735bbc5a","facadeSource":"extensions/slack/configured-state.ts","sources":["extensions/slack/configured-state.ts"]},{"output":"contract-api.js","sha256":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","facadeSource":"extensions/slack/contract-api.ts","sources":[]},{"output":"directory-contract-api.js","sha256":"1ecd6452c405398578551007f334498fc34251825167ab9601febe8a4860153c","facadeSource":"extensions/slack/directory-contract-api.ts","sources":[]},{"output":"doctor-contract-api.js","sha256":"37ac50eaf2ad7f3fe5961d0473830768e38d8c0a34c1ba2668a1092a693a31e2","facadeSource":"extensions/slack/doctor-contract-api.ts","sources":[]},{"output":"http-routes-api.js","sha256":"7e25eac01bd5146f5583bac6bf60ec777576e3de83bc9a9b2d017801a16e9ce7","facadeSource":"extensions/slack/http-routes-api.ts","sources":[]},{"output":"index.js","sha256":"063c52dcf87a3efe50e04cb33b9da12d20ea57bc5acc065dcb213fde2ff6a2a3","facadeSource":"extensions/slack/index.ts","sources":["extensions/slack/index.ts"]},{"output":"message-tool-api.js","sha256":"50819b53ed1bfebdae1418950374c11e9364049ed6b40f2d70db21d346bf5228","facadeSource":"extensions/slack/message-tool-api.ts","sources":[]},{"output":"runtime-api.js","sha256":"81fdf517215231f355278674a19ff3151b89964aca5bbd3eb90183e06f3f653d","facadeSource":"extensions/slack/runtime-api.ts","sources":[]},{"output":"runtime-setter-api.js","sha256":"922b8e00df9d5b8ec92d98bda060404d5abd7644b3b5184db64a58077dbe0b5b","facadeSource":"extensions/slack/runtime-setter-api.ts","sources":[]},{"output":"secret-contract-api.js","sha256":"8d72c3223d225222b4dabfdc0ff33cc624e3c5bb9ddc719f40d8fe71d81ce622","facadeSource":"extensions/slack/secret-contract-api.ts","sources":[]},{"output":"security-contract-api.js","sha256":"b79eae03969176010a7d9d823a3d6b54f623077fbc561e178a3c3a0f0718f269","facadeSource":"extensions/slack/security-contract-api.ts","sources":[]},{"output":"setup-entry.js","sha256":"2e97418f8dd112060ca2084dd93428310902e44322a88551bf7239d77f6098f8","facadeSource":"extensions/slack/setup-entry.ts","sources":["extensions/slack/setup-entry.ts"]},{"output":"setup-plugin-api.js","sha256":"4c31378b0430ef257d01909c2b8a19dbc95cea124a768784dae0543f09bcdcf0","facadeSource":"extensions/slack/setup-plugin-api.ts","sources":[]}],"unrenderedSources":["extensions/slack/api.ts","extensions/slack/channel-config-api.ts","extensions/slack/channel-plugin-api.ts","extensions/slack/config-doctor-api.ts","extensions/slack/contract-api.ts","extensions/slack/directory-contract-api.ts","extensions/slack/doctor-contract-api.ts","extensions/slack/http-routes-api.ts","extensions/slack/message-tool-api.ts","extensions/slack/runtime-api.ts","extensions/slack/runtime-setter-api.ts","extensions/slack/secret-contract-api.ts","extensions/slack/security-contract-api.ts","extensions/slack/setup-plugin-api.ts","extensions/slack/src/action-runtime.runtime.ts","extensions/slack/src/http/index.ts","extensions/slack/src/monitor/media-types.ts","extensions/slack/src/monitor/message-handler/pipeline.runtime.ts","extensions/slack/src/monitor/slash-dispatch.runtime.ts"]}