@openclaw/slack 2026.6.11 → 2026.7.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/{action-runtime-DfJK7zS0.js → action-runtime-E9QZMf0z.js} +6 -13
  2. package/dist/action-runtime.runtime-BQrVgSOq.js +2 -0
  3. package/dist/{actions-OhnDIN4l.js → actions-CqRHPciJ.js} +3 -3
  4. package/dist/{actions.runtime-DkFXr3-k.js → actions.runtime-Dl6AfO_g.js} +1 -1
  5. package/dist/api.js +8 -8
  6. package/dist/{approval-handler.runtime-CsFrthnF.js → approval-handler.runtime-BqNO_HC_.js} +7 -3
  7. package/dist/{channel-COCbJwom.js → channel-jO8Jdkge.js} +22 -42
  8. package/dist/channel-plugin-api.js +1 -1
  9. package/dist/{channel.setup-DYQGnKPK.js → channel.setup-CDOZ8V3p.js} +1 -1
  10. package/dist/{client-km2ba2l3.js → client-DG9cyk55.js} +27 -16
  11. package/dist/{directory-live-DzOkmJVV.js → directory-live-DC-YA5SQ.js} +10 -12
  12. package/dist/{monitor-Cy-0xYgF.js → monitor-BQ7P93ll.js} +3 -3
  13. package/dist/{outbound-adapter-CzX4D5K_.js → outbound-adapter-BHUtpXz0.js} +3 -6
  14. package/dist/{pipeline.runtime-5R4HgM_7.js → pipeline.runtime-cxw6Zihc.js} +39 -26
  15. package/dist/{policy-Bi92bs5t.js → policy-DAE6BTN3.js} +1 -1
  16. package/dist/{probe-BRsYAcGR.js → probe-DFKt9Ute.js} +1 -1
  17. package/dist/{provider-7YKru1TZ.js → provider-BdoeWKr8.js} +71 -51
  18. package/dist/{relay-source-42fP7Ktr.js → relay-source-OcqQzKfX.js} +13 -3
  19. package/dist/{replies-Dlxge48k.js → replies-D_G-EPr8.js} +3 -3
  20. package/dist/{reply-blocks-BT_sNsDQ.js → reply-blocks-CfJqf7eq.js} +3 -2
  21. package/dist/{resolve-channels-CtUOIX8D.js → resolve-channels-eniB45fy.js} +1 -1
  22. package/dist/{resolve-users-DfFN2BcP.js → resolve-users-DDKzl37a.js} +1 -1
  23. package/dist/{runtime-api-ClM1_yX2.js → runtime-api-DHJ8ntLr.js} +1 -1
  24. package/dist/runtime-api.js +10 -10
  25. package/dist/{scopes-CNKZU1t1.js → scopes-BdVdJxFf.js} +1 -1
  26. package/dist/{send-CRoD-UQw.js → send-Dg6U9K7_.js} +4 -4
  27. package/dist/send.runtime-a-O4PP2B.js +2 -0
  28. package/dist/setup-plugin-api.js +1 -1
  29. package/dist/{setup-surface-D4GE34e2.js → setup-surface-D7xdZLxB.js} +3 -3
  30. package/dist/{shared-BtJS2bUx.js → shared-iMaNxOIL.js} +1 -1
  31. package/dist/{slash-dispatch.runtime-D1qKAWNN.js → slash-dispatch.runtime-DVhs_fpQ.js} +1 -1
  32. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/LICENSE +21 -0
  33. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/README.md +15 -0
  34. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/assert/strict.d.ts +59 -0
  35. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/assert.d.ts +950 -0
  36. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/async_hooks.d.ts +711 -0
  37. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/buffer.buffer.d.ts +466 -0
  38. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/buffer.d.ts +1765 -0
  39. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/child_process.d.ts +1366 -0
  40. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/cluster.d.ts +432 -0
  41. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/compatibility/iterators.d.ts +21 -0
  42. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/console.d.ts +93 -0
  43. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/constants.d.ts +14 -0
  44. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/crypto.d.ts +4058 -0
  45. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dgram.d.ts +537 -0
  46. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/diagnostics_channel.d.ts +552 -0
  47. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dns/promises.d.ts +497 -0
  48. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/dns.d.ts +876 -0
  49. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/domain.d.ts +150 -0
  50. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/events.d.ts +1008 -0
  51. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs/promises.d.ts +1468 -0
  52. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/fs.d.ts +4780 -0
  53. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/globals.d.ts +150 -0
  54. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/globals.typedarray.d.ts +101 -0
  55. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/http.d.ts +2147 -0
  56. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/http2.d.ts +2485 -0
  57. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/https.d.ts +400 -0
  58. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/index.d.ts +117 -0
  59. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector/promises.d.ts +35 -0
  60. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector.d.ts +264 -0
  61. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/inspector.generated.d.ts +4406 -0
  62. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/module.d.ts +755 -0
  63. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/net.d.ts +970 -0
  64. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/os.d.ts +498 -0
  65. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/package.json +155 -0
  66. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path/posix.d.ts +8 -0
  67. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path/win32.d.ts +8 -0
  68. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/path.d.ts +178 -0
  69. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/perf_hooks.d.ts +612 -0
  70. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/process.d.ts +2204 -0
  71. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/punycode.d.ts +89 -0
  72. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/querystring.d.ts +139 -0
  73. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/quic.d.ts +897 -0
  74. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/readline/promises.d.ts +158 -0
  75. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/readline.d.ts +507 -0
  76. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/repl.d.ts +420 -0
  77. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/sea.d.ts +47 -0
  78. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/sqlite.d.ts +1068 -0
  79. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/consumers.d.ts +114 -0
  80. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/iter.d.ts +301 -0
  81. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/promises.d.ts +211 -0
  82. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream/web.d.ts +300 -0
  83. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/stream.d.ts +1774 -0
  84. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/string_decoder.d.ts +27 -0
  85. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/test/reporters.d.ts +59 -0
  86. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/test.d.ts +2279 -0
  87. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/timers/promises.d.ts +93 -0
  88. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/timers.d.ts +149 -0
  89. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/tls.d.ts +1193 -0
  90. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/trace_events.d.ts +103 -0
  91. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +462 -0
  92. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +71 -0
  93. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +36 -0
  94. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.6/index.d.ts +119 -0
  95. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +72 -0
  96. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/ts5.7/index.d.ts +119 -0
  97. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/tty.d.ts +225 -0
  98. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/url.d.ts +556 -0
  99. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/util/types.d.ts +558 -0
  100. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/util.d.ts +1677 -0
  101. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/v8.d.ts +980 -0
  102. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/vm.d.ts +1136 -0
  103. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/wasi.d.ts +131 -0
  104. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/abortcontroller.d.ts +59 -0
  105. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/blob.d.ts +23 -0
  106. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/console.d.ts +9 -0
  107. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/crypto.d.ts +39 -0
  108. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/domexception.d.ts +68 -0
  109. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/encoding.d.ts +11 -0
  110. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/events.d.ts +106 -0
  111. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/fetch.d.ts +69 -0
  112. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/importmeta.d.ts +13 -0
  113. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/messaging.d.ts +23 -0
  114. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/navigator.d.ts +25 -0
  115. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/performance.d.ts +45 -0
  116. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/storage.d.ts +24 -0
  117. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/streams.d.ts +115 -0
  118. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/timers.d.ts +44 -0
  119. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/web-globals/url.d.ts +24 -0
  120. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/worker_threads.d.ts +671 -0
  121. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/zlib/iter.d.ts +131 -0
  122. package/node_modules/@types/jsonwebtoken/node_modules/@types/node/zlib.d.ts +589 -0
  123. package/npm-shrinkwrap.json +12 -3
  124. package/package.json +4 -4
  125. package/dist/action-runtime.runtime-CIYPRrNy.js +0 -2
  126. package/dist/send.runtime-C_y65BU0.js +0 -2
@@ -1,28 +1,29 @@
1
1
  import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath } from "./registry-bbjH7IHX.js";
2
2
  import { a as resolveSlackAccount, d as resolveSlackBotToken, o as resolveSlackAccountAllowFrom, s as resolveSlackAccountDmPolicy, u as resolveSlackAppToken } from "./accounts-BPCiCe8y.js";
3
- import { F as isSlackExecApprovalAuthorizedSender, N as isSlackApprovalAuthorizedSender, S as isSlackAnyNativeApprovalClientEnabled, a as SLACK_TEXT_LIMIT, c as allowListMatches, d as normalizeSlackAllowOwnerEntry, f as normalizeSlackSlug, l as normalizeAllowList, p as resolveSlackAllowListMatch, u as normalizeAllowListLower, v as truncateSlackText } from "./reply-blocks-BT_sNsDQ.js";
3
+ import { F as isSlackExecApprovalAuthorizedSender, N as isSlackApprovalAuthorizedSender, S as isSlackAnyNativeApprovalClientEnabled, a as SLACK_TEXT_LIMIT, c as allowListMatches, d as normalizeSlackAllowOwnerEntry, f as normalizeSlackSlug, l as normalizeAllowList, p as resolveSlackAllowListMatch, u as normalizeAllowListLower, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
4
4
  import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-D-22gTp3.js";
5
- import { c as resolveSlackWebClientOptions } from "./client-km2ba2l3.js";
5
+ import { c as resolveSlackWebClientOptions } from "./client-DG9cyk55.js";
6
6
  import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
7
- import { n as setSlackDefaultSendIdentity } from "./send-CRoD-UQw.js";
7
+ import { n as setSlackDefaultSendIdentity } from "./send-Dg6U9K7_.js";
8
8
  import { t as formatSlackError } from "./errors-CZtmv-h0.js";
9
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-CtUOIX8D.js";
10
- import { t as resolveSlackUserAllowlist } from "./resolve-users-DfFN2BcP.js";
11
- import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-Bi92bs5t.js";
9
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-eniB45fy.js";
10
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-DDKzl37a.js";
11
+ import { n as resolveSlackChannelConfig, r as resolveSlackChannelLabel, t as isSlackChannelAllowedByPolicy } from "./policy-DAE6BTN3.js";
12
12
  import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
13
13
  import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, normalizeStringEntries, normalizeStringEntriesLower, normalizeUniqueTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
14
14
  import { normalizeAccountId, normalizeMainKey, resolveAgentRoute, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
15
15
  import { createChannelMessageReplyPipeline } from "openclaw/plugin-sdk/channel-outbound";
16
16
  import { createChannelPairingChallengeIssuer } from "openclaw/plugin-sdk/channel-pairing";
17
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
18
+ import { chunkItems } from "openclaw/plugin-sdk/text-chunking";
17
19
  import { CHANNEL_APPROVAL_NATIVE_RUNTIME_CONTEXT_CAPABILITY } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
18
20
  import { parseExecApprovalCommandText } from "openclaw/plugin-sdk/approval-reply-runtime";
19
21
  import { addAllowlistUserEntriesFromConfigEntry, buildAllowlistResolutionSummary, formatAllowlistMatchMeta, mergeAllowlist, patchAllowlistUsersInConfigEntries, summarizeMapping } from "openclaw/plugin-sdk/allow-from";
20
22
  import { computeBackoff, createNonExitingRuntime, createSubsystemLogger, danger, getChildLogger, logVerbose, shouldLogVerbose, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
21
- import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
23
+ import { collectErrorGraphCandidates, formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
22
24
  import { pruneMapToMaxSize } from "openclaw/plugin-sdk/collection-runtime";
23
25
  import { asDateTimestampMs, parseFiniteNumber, parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs, timestampMsToIsoString } from "openclaw/plugin-sdk/number-runtime";
24
26
  import { resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-chunking";
25
- import { chunkItems } from "openclaw/plugin-sdk/text-chunking";
26
27
  import { createDedupeCache, resolveGlobalDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
27
28
  import { buildPluginBindingResolvedText, parsePluginBindingApprovalCustomId, recordInboundSession, resolveConversationLabel as resolveConversationLabel$1, resolvePluginConversationBindingApproval, resolveRuntimeConversationBindingRoute, upsertChannelPairingRequest } from "openclaw/plugin-sdk/conversation-runtime";
28
29
  import { resolveNativeCommandsEnabled, resolveNativeSkillsEnabled } from "openclaw/plugin-sdk/native-command-config-runtime";
@@ -31,7 +32,7 @@ import { DEFAULT_GROUP_HISTORY_LIMIT } from "openclaw/plugin-sdk/reply-history";
31
32
  import { installRequestBodyLimitGuard } from "openclaw/plugin-sdk/webhook-request-guards";
32
33
  import { getRuntimeConfig, getRuntimeConfig as getRuntimeConfig$1, getRuntimeConfigSnapshot } from "openclaw/plugin-sdk/runtime-config-snapshot";
33
34
  import { isDangerousNameMatchingEnabled } from "openclaw/plugin-sdk/dangerous-name-runtime";
34
- import { loadSessionStore, readSessionUpdatedAt, resolveSessionKey, resolveStorePath, resolveStorePath as resolveStorePath$1, updateLastRoute } from "openclaw/plugin-sdk/session-store-runtime";
35
+ import { getSessionEntry, readSessionUpdatedAt, resolveChannelResetConfig, resolveSessionKey, resolveStorePath, resolveStorePath as resolveStorePath$1, updateLastRoute } from "openclaw/plugin-sdk/session-store-runtime";
35
36
  import { resolveChannelContextVisibilityMode } from "openclaw/plugin-sdk/context-visibility-runtime";
36
37
  import { resolveDefaultGroupPolicy, resolveOpenProviderRuntimeGroupPolicy as resolveOpenProviderRuntimeGroupPolicy$1, warnMissingProviderGroupPolicyFallbackOnce } from "openclaw/plugin-sdk/runtime-group-policy";
37
38
  import { loadModelCatalog, resolveDefaultAgentId, resolveDefaultModelForAgent } from "openclaw/plugin-sdk/agent-runtime";
@@ -374,6 +375,7 @@ function createSlackMonitorContext(params) {
374
375
  botToken: params.botToken,
375
376
  app: params.app,
376
377
  runtime: params.runtime,
378
+ channelRuntime: params.channelRuntime,
377
379
  botUserId: params.botUserId,
378
380
  botId: params.botId,
379
381
  teamId: params.teamId,
@@ -1178,7 +1180,7 @@ function summarizeRichTextPreview(value) {
1178
1180
  const joined = fragments.join(" ").replace(/\s+/g, " ").trim();
1179
1181
  if (!joined) return;
1180
1182
  const max = 120;
1181
- return joined.length <= max ? joined : `${joined.slice(0, max - 1)}…`;
1183
+ return joined.length <= max ? joined : truncateSlackText(joined, max);
1182
1184
  }
1183
1185
  function readInteractionAction(raw) {
1184
1186
  if (!raw || typeof raw !== "object" || Array.isArray(raw)) return;
@@ -2819,11 +2821,7 @@ function createSlackThreadTsResolver(params) {
2819
2821
  }
2820
2822
  //#endregion
2821
2823
  //#region extensions/slack/src/monitor/message-handler.ts
2822
- let slackMessagePipelinePromise;
2823
- function loadSlackMessagePipeline() {
2824
- slackMessagePipelinePromise ??= import("./pipeline.runtime-5R4HgM_7.js");
2825
- return slackMessagePipelinePromise;
2826
- }
2824
+ const loadSlackMessagePipeline = createLazyRuntimeModule(() => import("./pipeline.runtime-cxw6Zihc.js"));
2827
2825
  function createSlackDispatchCompletion() {
2828
2826
  let resolve;
2829
2827
  let reject;
@@ -2837,12 +2835,19 @@ function createSlackDispatchCompletion() {
2837
2835
  };
2838
2836
  }
2839
2837
  const APP_MENTION_RETRY_TTL_MS = 6e4;
2838
+ const RETRYABLE_FLUSH_MAX_ATTEMPTS = 3;
2839
+ const RETRYABLE_FLUSH_RETRY_DELAY_MS = 1e3;
2840
+ const REPLY_SESSION_INIT_CONFLICT_MESSAGE_RE = /reply session initialization conflicted for \S+/u;
2840
2841
  var SlackRetryableInboundError = class extends Error {
2841
2842
  constructor(message, options) {
2842
2843
  super(message, options);
2843
2844
  this.name = "SlackRetryableInboundError";
2844
2845
  }
2845
2846
  };
2847
+ function isRetryableSlackInboundError(error) {
2848
+ if (error instanceof SlackRetryableInboundError) return true;
2849
+ return collectErrorGraphCandidates(error, (current) => [current.cause, current.error]).some((candidate) => REPLY_SESSION_INIT_CONFLICT_MESSAGE_RE.test(formatErrorMessage(candidate)));
2850
+ }
2846
2851
  function shouldDebounceSlackMessage(message, cfg) {
2847
2852
  return shouldDebounceTextInbound({
2848
2853
  text: stripSlackMentionsForCommandDetection(message.text ?? ""),
@@ -2862,6 +2867,29 @@ function createSlackMessageHandler(params) {
2862
2867
  buildKey: (entry) => buildSlackDebounceKey(entry.message, ctx.accountId),
2863
2868
  shouldDebounce: (entry) => shouldDebounceSlackMessage(entry.message, ctx.cfg),
2864
2869
  onFlush: async (entries) => {
2870
+ const retryEntries = (sourceError) => {
2871
+ if (!isRetryableSlackInboundError(sourceError)) return false;
2872
+ const nextEntries = entries.map((entry) => {
2873
+ if (entry.opts.dispatchCompletion) return null;
2874
+ const retryAttempt = entry.opts.retryAttempt ?? 0;
2875
+ if (retryAttempt >= RETRYABLE_FLUSH_MAX_ATTEMPTS) return null;
2876
+ const { dispatchCompletion: _dispatchCompletion, ...retryOpts } = entry.opts;
2877
+ return {
2878
+ ...entry,
2879
+ opts: {
2880
+ ...retryOpts,
2881
+ retryAttempt: retryAttempt + 1
2882
+ }
2883
+ };
2884
+ }).filter((entry) => entry !== null);
2885
+ if (nextEntries.length === 0) return false;
2886
+ setTimeout(() => {
2887
+ for (const entry of nextEntries) enqueueSlackMessage(entry.message, entry.opts).catch((err) => {
2888
+ ctx.runtime.error?.(`slack inbound retry enqueue failed: ${formatErrorMessage(err)}`);
2889
+ });
2890
+ }, RETRYABLE_FLUSH_RETRY_DELAY_MS).unref?.();
2891
+ return true;
2892
+ };
2865
2893
  const completions = entries.map((entry) => entry.opts.dispatchCompletion).filter((completion) => completion !== void 0);
2866
2894
  try {
2867
2895
  await (async () => {
@@ -2921,22 +2949,24 @@ function createSlackMessageHandler(params) {
2921
2949
  messages: entries.map((entry) => entry.message)
2922
2950
  });
2923
2951
  } catch (error) {
2924
- if (!(error instanceof SlackRetryableInboundError)) await recordSlackInboundMessageDeliveries({
2952
+ if (!isRetryableSlackInboundError(error)) await recordSlackInboundMessageDeliveries({
2925
2953
  accountId: ctx.accountId,
2926
2954
  messages: entries.map((entry) => entry.message)
2927
2955
  });
2928
2956
  throw error;
2929
2957
  }
2930
2958
  } catch (error) {
2931
- if (error instanceof SlackRetryableInboundError) {
2932
- if (seenMessageKey) appMentionDispatchedKeys.delete(seenMessageKey);
2933
- ctx.releaseSeenMessage(last.message.channel, last.message.ts);
2959
+ if (isRetryableSlackInboundError(error)) for (const entry of entries) {
2960
+ const entrySeenKey = buildSeenMessageKey(entry.message.channel, entry.message.ts);
2961
+ if (entrySeenKey) appMentionDispatchedKeys.delete(entrySeenKey);
2962
+ ctx.releaseSeenMessage(entry.message.channel, entry.message.ts);
2934
2963
  }
2935
2964
  throw error;
2936
2965
  }
2937
2966
  })();
2938
2967
  for (const completion of completions) completion.resolve();
2939
2968
  } catch (error) {
2969
+ retryEntries(error);
2940
2970
  for (const completion of completions) completion.reject(error);
2941
2971
  throw error;
2942
2972
  }
@@ -2975,7 +3005,7 @@ function createSlackMessageHandler(params) {
2975
3005
  appMentionRetryKeys.delete(key);
2976
3006
  return true;
2977
3007
  };
2978
- return async (message, opts) => {
3008
+ async function enqueueSlackMessage(message, opts) {
2979
3009
  if (opts.source === "message" && message.type !== "message") return;
2980
3010
  if (opts.source === "message" && message.subtype && message.subtype !== "file_share" && message.subtype !== "bot_message" && message.subtype !== "thread_broadcast") return;
2981
3011
  const seenMessageKey = buildSeenMessageKey(message.channel, message.ts);
@@ -3020,7 +3050,10 @@ function createSlackMessageHandler(params) {
3020
3050
  } } : {}
3021
3051
  }
3022
3052
  });
3023
- await dispatchCompletion?.promise;
3053
+ return dispatchCompletion;
3054
+ }
3055
+ return async (message, opts) => {
3056
+ await (await enqueueSlackMessage(message, opts))?.promise;
3024
3057
  };
3025
3058
  }
3026
3059
  //#endregion
@@ -3493,26 +3526,10 @@ const SLACK_COMMAND_ARG_BUTTON_VALUE_MAX = 2e3;
3493
3526
  const SLACK_COMMAND_ARG_CONFIRM_TEXT_MAX = 300;
3494
3527
  const SLACK_HEADER_TEXT_MAX = 150;
3495
3528
  const SLACK_COMMAND_ARG_ACTION_BLOCKS_MAX = 47;
3496
- let slashCommandsRuntimePromise = null;
3497
- let slashDispatchRuntimePromise = null;
3498
- let slackPluginCommandsRuntimePromise = null;
3499
- let slashSkillCommandsRuntimePromise = null;
3500
- function loadSlashCommandsRuntime() {
3501
- slashCommandsRuntimePromise ??= import("./slash-commands.runtime-BTTMlmwy.js");
3502
- return slashCommandsRuntimePromise;
3503
- }
3504
- function loadSlashDispatchRuntime() {
3505
- slashDispatchRuntimePromise ??= import("./slash-dispatch.runtime-D1qKAWNN.js");
3506
- return slashDispatchRuntimePromise;
3507
- }
3508
- function loadSlackPluginCommandsRuntime() {
3509
- slackPluginCommandsRuntimePromise ??= import("./slash-plugin-commands.runtime-Dosfcx3X.js");
3510
- return slackPluginCommandsRuntimePromise;
3511
- }
3512
- function loadSlashSkillCommandsRuntime() {
3513
- slashSkillCommandsRuntimePromise ??= import("./slash-skill-commands.runtime-CD1J2ODY.js");
3514
- return slashSkillCommandsRuntimePromise;
3515
- }
3529
+ const loadSlashCommandsRuntime = createLazyRuntimeModule(() => import("./slash-commands.runtime-BTTMlmwy.js"));
3530
+ const loadSlashDispatchRuntime = createLazyRuntimeModule(() => import("./slash-dispatch.runtime-DVhs_fpQ.js"));
3531
+ const loadSlackPluginCommandsRuntime = createLazyRuntimeModule(() => import("./slash-plugin-commands.runtime-Dosfcx3X.js"));
3532
+ const loadSlashSkillCommandsRuntime = createLazyRuntimeModule(() => import("./slash-skill-commands.runtime-CD1J2ODY.js"));
3516
3533
  function resolveSlackCommandMenuModelContext(params) {
3517
3534
  if (!params.sessionKey.trim()) return {};
3518
3535
  try {
@@ -3520,15 +3537,21 @@ function resolveSlackCommandMenuModelContext(params) {
3520
3537
  cfg: params.cfg,
3521
3538
  agentId: params.agentId
3522
3539
  });
3523
- const store = loadSessionStore(resolveStorePath(params.cfg.session?.store, { agentId: params.agentId }));
3524
- const entry = store[params.sessionKey];
3540
+ const storePath = resolveStorePath(params.cfg.session?.store, { agentId: params.agentId });
3541
+ const entry = getSessionEntry({
3542
+ storePath,
3543
+ sessionKey: params.sessionKey
3544
+ });
3525
3545
  if (entry?.modelOverrideSource === "auto" && normalizeOptionalString(entry.modelOverride)) return {
3526
3546
  provider: defaultModel.provider,
3527
3547
  model: defaultModel.model
3528
3548
  };
3529
3549
  const override = resolveStoredModelOverride({
3530
3550
  sessionEntry: entry,
3531
- sessionStore: store,
3551
+ loadSessionEntry: (sessionKey) => getSessionEntry({
3552
+ storePath,
3553
+ sessionKey
3554
+ }),
3532
3555
  sessionKey: params.sessionKey,
3533
3556
  defaultProvider: defaultModel.provider
3534
3557
  });
@@ -4127,7 +4150,7 @@ async function registerSlackMonitorSlashCommands(params) {
4127
4150
  await ack({ options: entry.choices.filter((choice) => !query || normalizeLowercaseStringOrEmpty(choice.label).includes(query)).slice(0, SLACK_COMMAND_ARG_SELECT_OPTIONS_MAX).map((choice) => ({
4128
4151
  text: {
4129
4152
  type: "plain_text",
4130
- text: choice.label.slice(0, 75)
4153
+ text: truncateSlackText(choice.label, SLACK_COMMAND_ARG_SELECT_OPTION_TEXT_MAX)
4131
4154
  },
4132
4155
  value: choice.value
4133
4156
  })) });
@@ -4203,7 +4226,6 @@ async function registerSlackMonitorSlashCommands(params) {
4203
4226
  //#endregion
4204
4227
  //#region extensions/slack/src/monitor/provider.ts
4205
4228
  let slackBoltInterop;
4206
- let slackRelaySourcePromise;
4207
4229
  async function getSlackBoltInterop() {
4208
4230
  if (!slackBoltInterop) {
4209
4231
  const slackBoltModule = await import("@slack/bolt");
@@ -4214,10 +4236,7 @@ async function getSlackBoltInterop() {
4214
4236
  }
4215
4237
  return slackBoltInterop;
4216
4238
  }
4217
- function loadSlackRelaySource() {
4218
- slackRelaySourcePromise ??= import("./relay-source-42fP7Ktr.js");
4219
- return slackRelaySourcePromise;
4220
- }
4239
+ const loadSlackRelaySource = createLazyRuntimeModule(() => import("./relay-source-OcqQzKfX.js"));
4221
4240
  const SLACK_WEBHOOK_MAX_BODY_BYTES = 1024 * 1024;
4222
4241
  const SLACK_WEBHOOK_BODY_TIMEOUT_MS = 3e4;
4223
4242
  function resolveStableSlackUserIdEntry(raw) {
@@ -4408,6 +4427,7 @@ async function monitorSlackProvider(opts = {}) {
4408
4427
  botToken,
4409
4428
  app,
4410
4429
  runtime,
4430
+ channelRuntime: opts.channelRuntime,
4411
4431
  botUserId,
4412
4432
  botId,
4413
4433
  teamId,
@@ -4661,4 +4681,4 @@ async function monitorSlackProvider(opts = {}) {
4661
4681
  }
4662
4682
  const resolveSlackRuntimeGroupPolicy = resolveOpenProviderRuntimeGroupPolicy$1;
4663
4683
  //#endregion
4664
- export { stripSlackMentionsForCommandDetection as S, readSessionUpdatedAt as _, SLACK_SOCKET_RECONNECT_POLICY as a, updateLastRoute as b, recordInboundSession as c, resolveSlackCommandIngress as d, resolveSlackEffectiveAllowFrom as f, resolveSlackChatType as g, normalizeSlackChannelType as h, authorizeSlackDirectMessage as i, resolveConversationLabel$1 as l, parseSlackAssistantThreadMetadata as m, resolveSlackRuntimeGroupPolicy as n, formatUnknownError as o, buildSlackAssistantThreadMetadata as p, resolveSlackRoomContextHints as r, escapeSlackMrkdwn as s, monitorSlackProvider as t, authorizeSlackBotRoomMessage as u, resolveChannelContextVisibilityMode as v, buildSlackSlashCommandMatcher as x, resolveStorePath$1 as y };
4684
+ export { stripSlackMentionsForCommandDetection as C, buildSlackSlashCommandMatcher as S, readSessionUpdatedAt as _, SLACK_SOCKET_RECONNECT_POLICY as a, resolveStorePath$1 as b, recordInboundSession as c, resolveSlackCommandIngress as d, resolveSlackEffectiveAllowFrom as f, resolveSlackChatType as g, normalizeSlackChannelType as h, authorizeSlackDirectMessage as i, resolveConversationLabel$1 as l, parseSlackAssistantThreadMetadata as m, resolveSlackRuntimeGroupPolicy as n, formatUnknownError as o, buildSlackAssistantThreadMetadata as p, resolveSlackRoomContextHints as r, escapeSlackMrkdwn as s, monitorSlackProvider as t, authorizeSlackBotRoomMessage as u, resolveChannelContextVisibilityMode as v, updateLastRoute as x, resolveChannelResetConfig as y };
@@ -1,4 +1,4 @@
1
- import { a as SLACK_SOCKET_RECONNECT_POLICY, o as formatUnknownError } from "./provider-7YKru1TZ.js";
1
+ import { a as SLACK_SOCKET_RECONNECT_POLICY, o as formatUnknownError } from "./provider-BdoeWKr8.js";
2
2
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { computeBackoff, sleepWithAbort, warn } from "openclaw/plugin-sdk/runtime-env";
4
4
  import { Buffer } from "node:buffer";
@@ -206,9 +206,19 @@ function isLocalRelayHost(hostname) {
206
206
  if (host === "localhost" || host === "::1") return true;
207
207
  return isIP(host) === 4 && host.startsWith("127.");
208
208
  }
209
+ var SlackRelayMalformedFrameError = class extends Error {
210
+ constructor(message, options) {
211
+ super(message, options);
212
+ this.name = "SlackRelayMalformedFrameError";
213
+ }
214
+ };
209
215
  function parseRelayFrame(data) {
210
216
  const text = rawDataToString(data);
211
- return JSON.parse(text);
217
+ try {
218
+ return JSON.parse(text);
219
+ } catch (cause) {
220
+ throw new SlackRelayMalformedFrameError("Slack relay received malformed JSON frame", { cause });
221
+ }
212
222
  }
213
223
  function rawDataToString(data) {
214
224
  if (typeof data === "string") return data;
@@ -275,4 +285,4 @@ function stringValue(value) {
275
285
  return typeof value === "string" ? value : void 0;
276
286
  }
277
287
  //#endregion
278
- export { SLACK_RELAY_MAX_PAYLOAD_BYTES, buildRelayWebSocketOptions, buildRelayWebSocketUrl, monitorSlackRelaySource };
288
+ export { SLACK_RELAY_MAX_PAYLOAD_BYTES, SlackRelayMalformedFrameError, buildRelayWebSocketOptions, buildRelayWebSocketUrl, monitorSlackRelaySource, parseRelayFrame };
@@ -1,6 +1,6 @@
1
- import { a as SLACK_TEXT_LIMIT, t as resolveSlackReplyBlocks } from "./reply-blocks-BT_sNsDQ.js";
2
- import { s as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-CRoD-UQw.js";
3
- import "./provider-7YKru1TZ.js";
1
+ import { a as SLACK_TEXT_LIMIT, t as resolveSlackReplyBlocks } from "./reply-blocks-CfJqf7eq.js";
2
+ import { s as markdownToSlackMrkdwnChunks, t as sendMessageSlack } from "./send-Dg6U9K7_.js";
3
+ import "./provider-BdoeWKr8.js";
4
4
  import { createReplyReferencePlanner } from "openclaw/plugin-sdk/reply-reference";
5
5
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
6
6
  import { SILENT_REPLY_TOKEN, chunkMarkdownTextWithMode, isSilentReplyText } from "openclaw/plugin-sdk/reply-chunking";
@@ -11,6 +11,7 @@ import { createChannelExecApprovalProfile, isChannelExecApprovalClientEnabledFro
11
11
  import { channelRouteTargetsMatchExact, stringifyRouteThreadId } from "openclaw/plugin-sdk/channel-route";
12
12
  import { reduceInteractiveReply, resolveMessagePresentationControlValue } from "openclaw/plugin-sdk/interactive-runtime";
13
13
  import { parseExecApprovalCommandText } from "openclaw/plugin-sdk/approval-reply-runtime";
14
+ import { sliceUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
14
15
  import { compileAllowlist, resolveCompiledAllowlistMatch } from "openclaw/plugin-sdk/allow-from";
15
16
  import { normalizeHyphenSlug, normalizeStringEntries as normalizeStringEntries$1, normalizeStringEntriesLower as normalizeStringEntriesLower$1 } from "openclaw/plugin-sdk/string-normalization-runtime";
16
17
  import { resolveToolsBySender } from "openclaw/plugin-sdk/channel-policy";
@@ -316,8 +317,8 @@ const SLACK_REPLY_SELECT_ACTION_ID = "openclaw:reply_select";
316
317
  function truncateSlackText(value, max) {
317
318
  const trimmed = value.trim();
318
319
  if (trimmed.length <= max) return trimmed;
319
- if (max <= 1) return trimmed.slice(0, max);
320
- return `${trimmed.slice(0, max - 1)}…`;
320
+ if (max <= 1) return sliceUtf16Safe(trimmed, 0, max);
321
+ return `${sliceUtf16Safe(trimmed, 0, max - 1)}…`;
321
322
  }
322
323
  //#endregion
323
324
  //#region extensions/slack/src/blocks-render.ts
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { r as createSlackWebClient } from "./client-km2ba2l3.js";
2
+ import { r as createSlackWebClient } from "./client-DG9cyk55.js";
3
3
  import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
4
4
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/slack/src/resolve-channels.ts
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { r as createSlackWebClient } from "./client-km2ba2l3.js";
2
+ import { r as createSlackWebClient } from "./client-DG9cyk55.js";
3
3
  import { n as resolveSlackAllowlistEntries, t as collectSlackCursorItems } from "./resolve-allowlist-common-CP8SH0Zf.js";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/slack/src/resolve-users.ts
@@ -1,5 +1,5 @@
1
1
  import "./target-parsing-3jYH8LfB.js";
2
- import "./client-km2ba2l3.js";
2
+ import "./client-DG9cyk55.js";
3
3
  import "./config-api-DnT9ohtE.js";
4
4
  import "openclaw/plugin-sdk/account-id";
5
5
  import { createActionGate as createActionGate$1, imageResultFromFile, jsonResult, readPositiveIntegerParam, readReactionParams, readStringParam, withNormalizedTimestamp } from "openclaw/plugin-sdk/channel-actions";
@@ -1,14 +1,14 @@
1
1
  import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-B9PvcDQJ.js";
2
2
  import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-BPCiCe8y.js";
3
- import { o as resolveSlackGroupRequireMention, s as resolveSlackGroupToolPolicy } from "./reply-blocks-BT_sNsDQ.js";
3
+ import { o as resolveSlackGroupRequireMention, s as resolveSlackGroupToolPolicy } from "./reply-blocks-CfJqf7eq.js";
4
4
  import { n as setSlackRuntime } from "./runtime-BOk7xkOl.js";
5
- import { t as sendMessageSlack } from "./send-CRoD-UQw.js";
6
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-OhnDIN4l.js";
7
- import { t as probeSlack } from "./probe-BRsYAcGR.js";
8
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-CtUOIX8D.js";
9
- import { t as resolveSlackUserAllowlist } from "./resolve-users-DfFN2BcP.js";
10
- import { t as monitorSlackProvider } from "./provider-7YKru1TZ.js";
11
- import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-DfJK7zS0.js";
12
- import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-DzOkmJVV.js";
13
- import "./monitor-Cy-0xYgF.js";
5
+ import { t as sendMessageSlack } from "./send-Dg6U9K7_.js";
6
+ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-CqRHPciJ.js";
7
+ import { t as probeSlack } from "./probe-DFKt9Ute.js";
8
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-eniB45fy.js";
9
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-DDKzl37a.js";
10
+ import { t as monitorSlackProvider } from "./provider-BdoeWKr8.js";
11
+ import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-E9QZMf0z.js";
12
+ import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-DC-YA5SQ.js";
13
+ import "./monitor-BQ7P93ll.js";
14
14
  export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
@@ -1,4 +1,4 @@
1
- import { r as createSlackWebClient } from "./client-km2ba2l3.js";
1
+ import { r as createSlackWebClient } from "./client-DG9cyk55.js";
2
2
  import { t as formatSlackError } from "./errors-CZtmv-h0.js";
3
3
  import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  //#region extensions/slack/src/scopes.ts
@@ -1,13 +1,14 @@
1
1
  import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-BPCiCe8y.js";
2
2
  import { r as parseSlackTarget } from "./target-parsing-3jYH8LfB.js";
3
3
  import "./targets-Dll4NJgs.js";
4
- import { a as SLACK_TEXT_LIMIT, i as validateSlackBlocksArray, v as truncateSlackText } from "./reply-blocks-BT_sNsDQ.js";
4
+ import { a as SLACK_TEXT_LIMIT, i as validateSlackBlocksArray, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
5
5
  import { t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
6
- import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-km2ba2l3.js";
6
+ import { a as getSlackWriteClient, n as createSlackTokenCacheKey } from "./client-DG9cyk55.js";
7
7
  import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
8
- import { i as loadOutboundMediaFromUrl } from "./runtime-api-ClM1_yX2.js";
8
+ import { i as loadOutboundMediaFromUrl } from "./runtime-api-DHJ8ntLr.js";
9
9
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
10
10
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
11
+ import { markdownToIR, renderMarkdownIRChunksWithinLimit, renderMarkdownWithMarkers } from "openclaw/plugin-sdk/text-chunking";
11
12
  import { withTrustedEnvProxyGuardedFetchMode } from "openclaw/plugin-sdk/fetch-runtime";
12
13
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
13
14
  import { logVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -15,7 +16,6 @@ import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-run
15
16
  import { chunkMarkdownTextWithMode, isSilentReplyText, resolveChunkMode, resolveTextChunkLimit } from "openclaw/plugin-sdk/reply-chunking";
16
17
  import { resolveTextChunksWithFallback } from "openclaw/plugin-sdk/reply-payload";
17
18
  import { fetchWithSsrFGuard } from "openclaw/plugin-sdk/ssrf-runtime";
18
- import { markdownToIR, renderMarkdownIRChunksWithinLimit, renderMarkdownWithMarkers } from "openclaw/plugin-sdk/text-chunking";
19
19
  import { resolveGlobalDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
20
20
  //#region extensions/slack/src/blocks-fallback.ts
21
21
  function cleanCandidate(value) {
@@ -0,0 +1,2 @@
1
+ import { t as sendMessageSlack } from "./send-Dg6U9K7_.js";
2
+ export { sendMessageSlack };
@@ -1,2 +1,2 @@
1
- import { t as slackSetupPlugin } from "./channel.setup-DYQGnKPK.js";
1
+ import { t as slackSetupPlugin } from "./channel.setup-CDOZ8V3p.js";
2
2
  export { slackSetupPlugin };
@@ -1,8 +1,8 @@
1
1
  import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-BPCiCe8y.js";
2
- import "./shared-BtJS2bUx.js";
2
+ import "./shared-iMaNxOIL.js";
3
3
  import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-BCGzyZhx.js";
4
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-CtUOIX8D.js";
5
- import { t as resolveSlackUserAllowlist } from "./resolve-users-DfFN2BcP.js";
4
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-eniB45fy.js";
5
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-DDKzl37a.js";
6
6
  import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
8
8
  import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
@@ -2,7 +2,7 @@ import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as
2
2
  import { t as inspectSlackAccount } from "./account-inspect-DOtQbKkB.js";
3
3
  import { t as isSlackPluginAccountConfigured } from "./account-configured-DzC407uv.js";
4
4
  import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-D-22gTp3.js";
5
- import { f as getChatChannelMeta } from "./client-km2ba2l3.js";
5
+ import { f as getChatChannelMeta } from "./client-DG9cyk55.js";
6
6
  import { i as SLACK_CHANNEL } from "./setup-core-BCGzyZhx.js";
7
7
  import { t as SlackChannelConfigSchema } from "./config-schema-BzqzFW__.js";
8
8
  import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-XL6HeNCb.js";
@@ -1,4 +1,4 @@
1
- import { r as deliverSlackSlashReplies$1 } from "./replies-Dlxge48k.js";
1
+ import { r as deliverSlackSlashReplies$1 } from "./replies-D_G-EPr8.js";
2
2
  import { resolveAgentRoute as resolveAgentRoute$1 } from "openclaw/plugin-sdk/routing";
3
3
  import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
4
4
  import { recordInboundSessionMetaSafe as recordInboundSessionMetaSafe$1, resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
@@ -0,0 +1,15 @@
1
+ # Installation
2
+ > `npm install --save @types/node`
3
+
4
+ # Summary
5
+ This package contains type definitions for node (https://nodejs.org/).
6
+
7
+ # Details
8
+ Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
+
10
+ ### Additional Details
11
+ * Last updated: Tue, 19 May 2026 17:48:56 GMT
12
+ * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
+
14
+ # Credits
15
+ These definitions were written by [Microsoft TypeScript](https://github.com/Microsoft), [Alberto Schiabel](https://github.com/jkomyno), [Andrew Makarov](https://github.com/r3nya), [Benjamin Toueg](https://github.com/btoueg), [David Junger](https://github.com/touffy), [Mohsen Azimi](https://github.com/mohsen1), [Nikita Galkin](https://github.com/galkin), [Sebastian Silbermann](https://github.com/eps1lon), [Wilco Bakker](https://github.com/WilcoBakker), [Marcin Kopacz](https://github.com/chyzwar), [Trivikram Kamat](https://github.com/trivikr), [Junxiao Shi](https://github.com/yoursunny), [Ilia Baryshnikov](https://github.com/qwelias), [ExE Boss](https://github.com/ExE-Boss), [Piotr Błażejewicz](https://github.com/peterblazejewicz), [Anna Henningsen](https://github.com/addaleax), [Victor Perin](https://github.com/victorperin), [NodeJS Contributors](https://github.com/NodeJS), [Linus Unnebäck](https://github.com/LinusU), [wafuwafu13](https://github.com/wafuwafu13), [Matteo Collina](https://github.com/mcollina), [Dmitry Semigradsky](https://github.com/Semigradsky), [René](https://github.com/Renegade334), and [Yagiz Nizipli](https://github.com/anonrig).
@@ -0,0 +1,59 @@
1
+ declare module "node:assert/strict" {
2
+ import {
3
+ Assert,
4
+ AssertionError,
5
+ AssertionErrorOptions,
6
+ AssertOptions,
7
+ AssertPredicate,
8
+ AssertStrict,
9
+ deepStrictEqual,
10
+ doesNotMatch,
11
+ doesNotReject,
12
+ doesNotThrow,
13
+ fail,
14
+ ifError,
15
+ match,
16
+ notDeepStrictEqual,
17
+ notStrictEqual,
18
+ ok,
19
+ partialDeepStrictEqual,
20
+ rejects,
21
+ strictEqual,
22
+ throws,
23
+ } from "node:assert";
24
+ function strict(value: unknown, message?: string | Error): asserts value;
25
+ namespace strict {
26
+ export {
27
+ Assert,
28
+ AssertionError,
29
+ AssertionErrorOptions,
30
+ AssertOptions,
31
+ AssertPredicate,
32
+ AssertStrict,
33
+ deepStrictEqual,
34
+ deepStrictEqual as deepEqual,
35
+ doesNotMatch,
36
+ doesNotReject,
37
+ doesNotThrow,
38
+ fail,
39
+ ifError,
40
+ match,
41
+ notDeepStrictEqual,
42
+ notDeepStrictEqual as notDeepEqual,
43
+ notStrictEqual,
44
+ notStrictEqual as notEqual,
45
+ ok,
46
+ partialDeepStrictEqual,
47
+ rejects,
48
+ strict,
49
+ strictEqual,
50
+ strictEqual as equal,
51
+ throws,
52
+ };
53
+ }
54
+ export = strict;
55
+ }
56
+ declare module "assert/strict" {
57
+ import strict = require("node:assert/strict");
58
+ export = strict;
59
+ }