@openclaw/slack 2026.5.24-beta.2 → 2026.5.25-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{action-runtime-ClZjzvJU.js → action-runtime-aNlZUC5X.js} +6 -4
  2. package/dist/action-runtime.runtime-CLBURvAS.js +2 -0
  3. package/dist/{actions-Dp1AKisQ.js → actions-DZqQvsrH.js} +2 -2
  4. package/dist/{actions.runtime-BzvmbC0z.js → actions.runtime-BnyePHn6.js} +1 -1
  5. package/dist/{allow-list-ChDz7vQO.js → allow-list-B1lkGjwl.js} +2 -2
  6. package/dist/api.js +10 -10
  7. package/dist/{approval-handler.runtime-DQdr992C.js → approval-handler.runtime-XWqmvXQj.js} +1 -1
  8. package/dist/{channel-CXs510aj.js → channel-DmywKR6E.js} +19 -18
  9. package/dist/channel-api-DdLCPu8a.js +20 -0
  10. package/dist/channel-plugin-api.js +1 -1
  11. package/dist/{channel.setup-CcyPmfoS.js → channel.setup-BVEey2Ge.js} +3 -2
  12. package/dist/{client-CMipJma0.js → client-Dc2Ji2YN.js} +1 -20
  13. package/dist/{directory-live-Dq12TcgS.js → directory-live-Cl83cGLZ.js} +1 -1
  14. package/dist/{errors-co-Fg3Ll.js → errors-CZtmv-h0.js} +1 -3
  15. package/dist/inbound-contract-test-api.js +2 -2
  16. package/dist/{interactive-replies-9v8OYeGV.js → interactive-replies-DtYu4Sf5.js} +4 -4
  17. package/dist/interactive-replies-api.js +1 -1
  18. package/dist/{message-tool-api-BXEWUFiV.js → message-tool-api-BieXX5lk.js} +1 -1
  19. package/dist/message-tool-api.js +1 -1
  20. package/dist/{monitor-CAfY1OZE.js → monitor-DxvDcCuQ.js} +4 -4
  21. package/dist/{outbound-adapter-Dtqbyixa.js → outbound-adapter-C3lEsGEd.js} +2 -2
  22. package/dist/outbound-payload-test-api.js +1 -1
  23. package/dist/{outbound-payload.test-harness-Ca13aYOM.js → outbound-payload.test-harness-C57ipELl.js} +1 -1
  24. package/dist/{pipeline.runtime-CwVyPQfY.js → pipeline.runtime-Dd4VXXjS.js} +9 -9
  25. package/dist/{policy-pdU_0AU0.js → policy-pu8tsF8_.js} +1 -1
  26. package/dist/{prepare-DFa-tK12.js → prepare-2yHC1V9V.js} +22 -28
  27. package/dist/{prepare.test-helpers-Y5XylD5f.js → prepare.test-helpers-dKm_6IFd.js} +1 -1
  28. package/dist/{probe-BRokY757.js → probe-cBVPhCKZ.js} +2 -2
  29. package/dist/{provider-GYmtqVRL.js → provider-CaIj5hMH.js} +27 -45
  30. package/dist/{replies-y6Coc_4v.js → replies-C6KAYDBW.js} +2 -2
  31. package/dist/{resolve-channels-D3v41FCM.js → resolve-channels-CT4oiz_9.js} +1 -1
  32. package/dist/{resolve-users-uMz1N7mm.js → resolve-users-o5S-Ijks.js} +1 -1
  33. package/dist/{room-context-C-6EgkTA.js → room-context-BsIaiZhE.js} +3 -3
  34. package/dist/{runtime-api-DHq45F2b.js → runtime-api-CyPE-EvY.js} +1 -1
  35. package/dist/runtime-api.js +9 -9
  36. package/dist/{scopes-BniaiyvU.js → scopes-CnyhLIPT.js} +4 -4
  37. package/dist/{send-B_Z5v6sU.js → send-CXGjjgpT.js} +8 -10
  38. package/dist/send.runtime-B0Gg0Ncx.js +2 -0
  39. package/dist/send.runtime-BbMOcD7_.js +2 -0
  40. package/dist/{setup-core-CJxjcOda.js → setup-core-DKe7Ug3V.js} +2 -2
  41. package/dist/setup-plugin-api.js +1 -1
  42. package/dist/{setup-surface-ByaVDcYW.js → setup-surface-DZAXKCKa.js} +6 -5
  43. package/dist/{shared-CHupOun0.js → shared-CqkL-uuZ.js} +4 -3
  44. package/dist/{slash-dispatch.runtime-u_Vj5RGB.js → slash-dispatch.runtime-CANn5muk.js} +1 -1
  45. package/dist/test-api.js +6 -6
  46. package/node_modules/qs/CHANGELOG.md +178 -0
  47. package/node_modules/qs/README.md +19 -1
  48. package/node_modules/qs/dist/qs.js +17 -17
  49. package/node_modules/qs/eslint.config.mjs +1 -0
  50. package/node_modules/qs/lib/parse.js +57 -25
  51. package/node_modules/qs/lib/stringify.js +11 -4
  52. package/node_modules/qs/lib/utils.js +2 -0
  53. package/node_modules/qs/package.json +3 -3
  54. package/node_modules/qs/test/parse.js +195 -4
  55. package/node_modules/qs/test/stringify.js +138 -0
  56. package/node_modules/qs/test/utils.js +38 -3
  57. package/node_modules/ws/lib/receiver.js +54 -0
  58. package/node_modules/ws/lib/websocket-server.js +8 -0
  59. package/node_modules/ws/lib/websocket.js +14 -0
  60. package/node_modules/ws/package.json +1 -1
  61. package/npm-shrinkwrap.json +9 -9
  62. package/package.json +4 -4
  63. package/dist/action-runtime.runtime-BUnUNH27.js +0 -2
  64. package/dist/send.runtime-BdYdgXuZ.js +0 -2
  65. package/dist/send.runtime-bgiJsule.js +0 -2
@@ -1,8 +1,8 @@
1
1
  import { i as resolveSlackChannelId, r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
2
2
  import "./targets-nUqxHGgg.js";
3
3
  import { i as parseSlackBlocksInput } from "./thread-ts-ks-O8cEG.js";
4
- import { a as readNumberParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-DHq45F2b.js";
5
- import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-pdU_0AU0.js";
4
+ import { a as readNumberParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-CyPE-EvY.js";
5
+ import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-pu8tsF8_.js";
6
6
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
8
8
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
@@ -30,7 +30,7 @@ function sameSlackChannelTarget(targetChannel, currentChannelId) {
30
30
  let slackActionsRuntimePromise;
31
31
  let slackAccountsRuntimePromise;
32
32
  function loadSlackActionsRuntime() {
33
- slackActionsRuntimePromise ??= import("./actions.runtime-BzvmbC0z.js");
33
+ slackActionsRuntimePromise ??= import("./actions.runtime-BnyePHn6.js");
34
34
  return slackActionsRuntimePromise;
35
35
  }
36
36
  function loadSlackAccountsRuntime() {
@@ -322,6 +322,7 @@ async function handleSlackAction(params, cfg, context) {
322
322
  placeholder: downloaded.placeholder,
323
323
  media: {
324
324
  mediaUrl: downloaded.path,
325
+ outbound: false,
325
326
  ...downloaded.contentType ? { contentType: downloaded.contentType } : {}
326
327
  }
327
328
  });
@@ -332,7 +333,8 @@ async function handleSlackAction(params, cfg, context) {
332
333
  details: {
333
334
  fileId,
334
335
  path: downloaded.path,
335
- ...downloaded.contentType ? { contentType: downloaded.contentType } : {}
336
+ ...downloaded.contentType ? { contentType: downloaded.contentType } : {},
337
+ media: { outbound: false }
336
338
  }
337
339
  });
338
340
  }
@@ -0,0 +1,2 @@
1
+ import { t as handleSlackAction } from "./action-runtime-aNlZUC5X.js";
2
+ export { handleSlackAction };
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
2
  import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-BnLQ3fe2.js";
3
3
  import { a as validateSlackBlocksArray, o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-ks-O8cEG.js";
4
- import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-CMipJma0.js";
5
- import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-B_Z5v6sU.js";
4
+ import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-Dc2Ji2YN.js";
5
+ import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-CXGjjgpT.js";
6
6
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
7
7
  import { requireRuntimeConfig } from "openclaw/plugin-sdk/plugin-config-runtime";
8
8
  import { logVerbose, logVerbose as logVerbose$1 } from "openclaw/plugin-sdk/runtime-env";
@@ -1,2 +1,2 @@
1
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-Dp1AKisQ.js";
1
+ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-DZqQvsrH.js";
2
2
  export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, sendSlackMessage, unpinSlackMessage };
@@ -1,6 +1,6 @@
1
1
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
2
  import { compileAllowlist, resolveCompiledAllowlistMatch } from "openclaw/plugin-sdk/allow-from";
3
- import { normalizeHyphenSlug, normalizeStringEntries as normalizeStringEntries$1, normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
3
+ import { normalizeHyphenSlug, normalizeStringEntries as normalizeStringEntries$1, normalizeStringEntriesLower as normalizeStringEntriesLower$1 } from "openclaw/plugin-sdk/string-normalization-runtime";
4
4
  //#region extensions/slack/src/monitor/allow-list.ts
5
5
  const SLACK_SLUG_CACHE_MAX = 512;
6
6
  const slackSlugCache = /* @__PURE__ */ new Map();
@@ -20,7 +20,7 @@ function normalizeAllowList(list) {
20
20
  return normalizeStringEntries$1(list);
21
21
  }
22
22
  function normalizeAllowListLower(list) {
23
- return normalizeStringEntriesLower(list);
23
+ return normalizeStringEntriesLower$1(list);
24
24
  }
25
25
  function normalizeSlackAllowOwnerEntry(entry) {
26
26
  const trimmed = normalizeOptionalLowercaseString(entry);
package/dist/api.js CHANGED
@@ -2,20 +2,20 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
2
2
  import { t as inspectSlackAccount } from "./account-inspect-vVg3pT03.js";
3
3
  import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-C7eeWg7M.js";
4
4
  import "./targets-nUqxHGgg.js";
5
- import { i as resolveSlackChannelType, n as buildSlackThreadingToolContext, o as resolveSlackAutoThreadId, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-CXs510aj.js";
5
+ import { i as resolveSlackChannelType, n as buildSlackThreadingToolContext, o as resolveSlackAutoThreadId, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-DmywKR6E.js";
6
6
  import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-BlOURkUm.js";
7
7
  import { n as buildSlackPresentationBlocks, t as buildSlackInteractiveBlocks } from "./blocks-render-CNC4vQnd.js";
8
8
  import { a as validateSlackBlocksArray, i as parseSlackBlocksInput, r as SLACK_MAX_BLOCKS } from "./thread-ts-ks-O8cEG.js";
9
- import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-BXEWUFiV.js";
10
- import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-9v8OYeGV.js";
11
- import { a as getSlackWriteClient, c as resolveSlackWebClientOptions, i as createSlackWriteClient, l as resolveSlackWriteClientOptions, n as createSlackTokenCacheKey, o as SLACK_DEFAULT_RETRY_OPTIONS, r as createSlackWebClient, s as SLACK_WRITE_RETRY_OPTIONS, t as clearSlackWriteClientCacheForTest } from "./client-CMipJma0.js";
12
- import { a as normalizeSlackSlug, i as normalizeSlackAllowOwnerEntry, n as normalizeAllowList, o as resolveSlackAllowListMatch, r as normalizeAllowListLower, s as resolveSlackUserAllowed, t as allowListMatches } from "./allow-list-ChDz7vQO.js";
13
- import { t as slackSetupPlugin } from "./channel.setup-CcyPmfoS.js";
14
- import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-B_Z5v6sU.js";
15
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-Dp1AKisQ.js";
9
+ import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-BieXX5lk.js";
10
+ import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-DtYu4Sf5.js";
11
+ import { a as getSlackWriteClient, c as resolveSlackWebClientOptions, i as createSlackWriteClient, l as resolveSlackWriteClientOptions, n as createSlackTokenCacheKey, o as SLACK_DEFAULT_RETRY_OPTIONS, r as createSlackWebClient, s as SLACK_WRITE_RETRY_OPTIONS, t as clearSlackWriteClientCacheForTest } from "./client-Dc2Ji2YN.js";
12
+ import { a as normalizeSlackSlug, i as normalizeSlackAllowOwnerEntry, n as normalizeAllowList, o as resolveSlackAllowListMatch, r as normalizeAllowListLower, s as resolveSlackUserAllowed, t as allowListMatches } from "./allow-list-B1lkGjwl.js";
13
+ import { t as slackSetupPlugin } from "./channel.setup-BVEey2Ge.js";
14
+ import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-CXGjjgpT.js";
15
+ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, n as downloadSlackFile, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-DZqQvsrH.js";
16
16
  import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-9_djLTOK.js";
17
17
  import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-bbjH7IHX.js";
18
- import { t as probeSlack } from "./probe-BRokY757.js";
18
+ import { t as probeSlack } from "./probe-cBVPhCKZ.js";
19
19
  import { t as collectSlackSecurityAuditFindings } from "./security-audit-CikQhBUY.js";
20
- import { n as resolveSlackRuntimeGroupPolicy } from "./provider-GYmtqVRL.js";
20
+ import { n as resolveSlackRuntimeGroupPolicy } from "./provider-CaIj5hMH.js";
21
21
  export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, resetSlackChannelTypeCacheForTest as __resetSlackChannelTypeCacheForTest, resetSlackChannelTypeCacheForTest, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, clearSlackWriteClientCacheForTest, collectSlackSecurityAuditFindings, compileSlackInteractiveReplies, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, isSlackInteractiveRepliesEnabled, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, parseSlackOptionsLine, parseSlackTarget, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, recordSlackThreadParticipation, registerSlackHttpHandler, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAllowListMatch, resolveSlackAutoThreadId, resolveSlackChannelId, resolveSlackChannelType, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackReplyToMode, resolveSlackRuntimeGroupPolicy, resolveSlackUserAllowed, resolveSlackWebClientOptions, resolveSlackWriteClientOptions, sendSlackMessage, slackPlugin, slackSetupPlugin, unpinSlackMessage, validateSlackBlocksArray };
@@ -1,6 +1,6 @@
1
1
  import { a as resolveSlackApprovalKind, f as normalizeSlackApproverId, i as isSlackAnyNativeApprovalClientEnabled, o as shouldHandleSlackNativeApprovalRequest, t as resolveSlackReplyBlocks } from "./reply-blocks-BlOURkUm.js";
2
2
  import { s as truncateSlackText } from "./thread-ts-ks-O8cEG.js";
3
- import { t as sendMessageSlack } from "./send-B_Z5v6sU.js";
3
+ import { t as sendMessageSlack } from "./send-CXGjjgpT.js";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
6
6
  import { logError } from "openclaw/plugin-sdk/logging-core";
@@ -4,13 +4,14 @@ import "./targets-nUqxHGgg.js";
4
4
  import { a as resolveSlackApprovalKind, c as isSlackApprovalAuthorizedSender, d as isSlackExecApprovalClientEnabled, i as isSlackAnyNativeApprovalClientEnabled, l as getSlackExecApprovalApprovers, m as shouldSuppressLocalSlackExecApprovalPrompt, n as resolveSlackGroupRequireMention, o as shouldHandleSlackNativeApprovalRequest, p as resolveSlackExecApprovalTarget, r as resolveSlackGroupToolPolicy, s as getSlackApprovalApprovers, t as resolveSlackReplyBlocks, u as isSlackExecApprovalAuthorizedSender } from "./reply-blocks-BlOURkUm.js";
5
5
  import { n as buildSlackPresentationBlocks, r as resolveSlackInteractiveBlockOffsets, t as buildSlackInteractiveBlocks } from "./blocks-render-CNC4vQnd.js";
6
6
  import { n as resolveSlackThreadTsValue, o as SLACK_TEXT_LIMIT, t as normalizeSlackThreadTsCandidate } from "./thread-ts-ks-O8cEG.js";
7
- import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-BXEWUFiV.js";
8
- import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-9v8OYeGV.js";
9
- import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID } from "./client-CMipJma0.js";
10
- import { r as normalizeAllowListLower } from "./allow-list-ChDz7vQO.js";
7
+ import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api-BieXX5lk.js";
8
+ import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DtYu4Sf5.js";
9
+ import { a as resolveConfiguredFromRequiredCredentialStatuses, i as projectCredentialSnapshotFields, n as PAIRING_APPROVED_MESSAGE, t as DEFAULT_ACCOUNT_ID } from "./channel-api-DdLCPu8a.js";
10
+ import { r as createSlackWebClient } from "./client-Dc2Ji2YN.js";
11
+ import { r as normalizeAllowListLower } from "./allow-list-B1lkGjwl.js";
11
12
  import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
12
- import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-CHupOun0.js";
13
- import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-CJxjcOda.js";
13
+ import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-CqkL-uuZ.js";
14
+ import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-DKe7Ug3V.js";
14
15
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
15
16
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
16
17
  import { buildOutboundBaseSessionKey, normalizeMessageChannel } from "openclaw/plugin-sdk/routing";
@@ -235,7 +236,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
235
236
  approvalKind: resolveSlackApprovalKind(request),
236
237
  request
237
238
  }),
238
- load: async () => (await import("./approval-handler.runtime-DQdr992C.js")).slackApprovalNativeRuntime
239
+ load: async () => (await import("./approval-handler.runtime-XWqmvXQj.js")).slackApprovalNativeRuntime
239
240
  })
240
241
  });
241
242
  const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
@@ -434,7 +435,7 @@ async function handleSlackMessageAction(params) {
434
435
  //#region extensions/slack/src/channel-actions.ts
435
436
  let slackActionRuntimePromise$1;
436
437
  async function loadSlackActionRuntime$1() {
437
- slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-BUnUNH27.js");
438
+ slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-CLBURvAS.js");
438
439
  return await slackActionRuntimePromise$1;
439
440
  }
440
441
  function resolveSlackActionContext(params) {
@@ -564,9 +565,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
564
565
  const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
565
566
  const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
566
567
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
567
- const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-ByaVDcYW.js"));
568
- const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-BniaiyvU.js"));
569
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-Dtqbyixa.js").then((n) => n.t));
568
+ const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-DZAXKCKa.js"));
569
+ const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-CnyhLIPT.js"));
570
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-C3lEsGEd.js").then((n) => n.t));
570
571
  async function resolveSlackHandleAction() {
571
572
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
572
573
  }
@@ -587,26 +588,26 @@ let slackProbeModulePromise;
587
588
  let slackMonitorModulePromise;
588
589
  let slackDirectoryLiveModulePromise;
589
590
  const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-9_djLTOK.js").then((n) => n.t));
590
- const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-D3v41FCM.js").then((n) => n.n));
591
- const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-uMz1N7mm.js").then((n) => n.n));
591
+ const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CT4oiz_9.js").then((n) => n.n));
592
+ const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-o5S-Ijks.js").then((n) => n.n));
592
593
  async function loadSlackActionRuntime() {
593
- slackActionRuntimePromise ??= import("./action-runtime.runtime-BUnUNH27.js");
594
+ slackActionRuntimePromise ??= import("./action-runtime.runtime-CLBURvAS.js");
594
595
  return await slackActionRuntimePromise;
595
596
  }
596
597
  async function loadSlackSendRuntime() {
597
- slackSendRuntimePromise ??= import("./send.runtime-bgiJsule.js");
598
+ slackSendRuntimePromise ??= import("./send.runtime-B0Gg0Ncx.js");
598
599
  return await slackSendRuntimePromise;
599
600
  }
600
601
  async function loadSlackProbeModule() {
601
- slackProbeModulePromise ??= import("./probe-BRokY757.js").then((n) => n.n);
602
+ slackProbeModulePromise ??= import("./probe-cBVPhCKZ.js").then((n) => n.n);
602
603
  return await slackProbeModulePromise;
603
604
  }
604
605
  async function loadSlackMonitorModule() {
605
- slackMonitorModulePromise ??= import("./monitor-CAfY1OZE.js").then((n) => n.t);
606
+ slackMonitorModulePromise ??= import("./monitor-DxvDcCuQ.js").then((n) => n.t);
606
607
  return await slackMonitorModulePromise;
607
608
  }
608
609
  async function loadSlackDirectoryLiveModule() {
609
- slackDirectoryLiveModulePromise ??= import("./directory-live-Dq12TcgS.js").then((n) => n.t);
610
+ slackDirectoryLiveModulePromise ??= import("./directory-live-Cl83cGLZ.js").then((n) => n.t);
610
611
  return await slackDirectoryLiveModulePromise;
611
612
  }
612
613
  async function resolveSlackSendContext(params) {
@@ -0,0 +1,20 @@
1
+ import "./target-parsing-C7eeWg7M.js";
2
+ import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
3
+ import { PAIRING_APPROVED_MESSAGE, projectCredentialSnapshotFields, resolveConfiguredFromRequiredCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
4
+ //#region extensions/slack/src/channel-api.ts
5
+ const SLACK_CHANNEL_META = {
6
+ id: "slack",
7
+ label: "Slack",
8
+ selectionLabel: "Slack",
9
+ docsPath: "/channels/slack",
10
+ docsLabel: "slack",
11
+ blurb: "supports bot + app tokens, channels, threads, and interactive replies.",
12
+ systemImage: "number.square",
13
+ markdownCapable: true
14
+ };
15
+ function getChatChannelMeta(id) {
16
+ if (id !== SLACK_CHANNEL_META.id) throw new Error(`Unsupported Slack channel meta lookup: ${id}`);
17
+ return SLACK_CHANNEL_META;
18
+ }
19
+ //#endregion
20
+ export { resolveConfiguredFromRequiredCredentialStatuses as a, projectCredentialSnapshotFields as i, PAIRING_APPROVED_MESSAGE as n, getChatChannelMeta as r, DEFAULT_ACCOUNT_ID$1 as t };
@@ -1,2 +1,2 @@
1
- import { t as slackPlugin } from "./channel-CXs510aj.js";
1
+ import { t as slackPlugin } from "./channel-DmywKR6E.js";
2
2
  export { slackPlugin };
@@ -1,10 +1,11 @@
1
1
  import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-BnLQ3fe2.js";
2
- import { a as describeSlackSetupAccount, i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, o as isSlackSetupAccountConfigured, r as slackSetupAdapter } from "./setup-core-CJxjcOda.js";
2
+ import "./channel-api-DdLCPu8a.js";
3
+ import { a as describeSlackSetupAccount, i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, o as isSlackSetupAccountConfigured, r as slackSetupAdapter } from "./setup-core-DKe7Ug3V.js";
3
4
  import { t as SlackChannelConfigSchema } from "./config-schema-CUiDK8HV.js";
4
5
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
5
6
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
6
7
  //#region extensions/slack/src/channel.setup.ts
7
- const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-ByaVDcYW.js")).slackSetupWizard }));
8
+ const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-DZAXKCKa.js")).slackSetupWizard }));
8
9
  const slackSetupConfigAdapter = createScopedChannelConfigAdapter({
9
10
  sectionKey: SLACK_CHANNEL,
10
11
  listAccountIds: listSlackAccountIds,
@@ -1,26 +1,7 @@
1
- import "./target-parsing-C7eeWg7M.js";
2
- import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
3
- import { PAIRING_APPROVED_MESSAGE, projectCredentialSnapshotFields, resolveConfiguredFromRequiredCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
4
1
  import { createHash } from "node:crypto";
5
2
  import { WebClient } from "@slack/web-api";
6
3
  import { HttpsProxyAgent } from "https-proxy-agent";
7
4
  import { resolveActiveManagedProxyTlsOptions, resolveEnvHttpProxyUrl } from "openclaw/plugin-sdk/fetch-runtime";
8
- //#region extensions/slack/src/channel-api.ts
9
- const SLACK_CHANNEL_META = {
10
- id: "slack",
11
- label: "Slack",
12
- selectionLabel: "Slack",
13
- docsPath: "/channels/slack",
14
- docsLabel: "slack",
15
- blurb: "supports bot + app tokens, channels, threads, and interactive replies.",
16
- systemImage: "number.square",
17
- markdownCapable: true
18
- };
19
- function getChatChannelMeta(id) {
20
- if (id !== SLACK_CHANNEL_META.id) throw new Error(`Unsupported Slack channel meta lookup: ${id}`);
21
- return SLACK_CHANNEL_META;
22
- }
23
- //#endregion
24
5
  //#region extensions/slack/src/client-options.ts
25
6
  const SLACK_DEFAULT_RETRY_OPTIONS = {
26
7
  retries: 2,
@@ -121,4 +102,4 @@ function clearSlackWriteClientCacheForTest() {
121
102
  slackWriteClientCache.clear();
122
103
  }
123
104
  //#endregion
124
- export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, PAIRING_APPROVED_MESSAGE as d, getChatChannelMeta as f, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, resolveConfiguredFromRequiredCredentialStatuses as m, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, projectCredentialSnapshotFields as p, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t, DEFAULT_ACCOUNT_ID$1 as u };
105
+ export { getSlackWriteClient as a, resolveSlackWebClientOptions as c, createSlackWriteClient as i, resolveSlackWriteClientOptions as l, createSlackTokenCacheKey as n, SLACK_DEFAULT_RETRY_OPTIONS as o, createSlackWebClient as r, SLACK_WRITE_RETRY_OPTIONS as s, clearSlackWriteClientCacheForTest as t };
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
2
  import { a as resolveSlackAccount } from "./accounts-BnLQ3fe2.js";
3
- import { r as createSlackWebClient } from "./client-CMipJma0.js";
3
+ import { r as createSlackWebClient } from "./client-Dc2Ji2YN.js";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  //#region extensions/slack/src/directory-live.ts
6
6
  var directory_live_exports = /* @__PURE__ */ __exportAll({
@@ -1,9 +1,7 @@
1
+ import { isRecord } from "openclaw/plugin-sdk/string-coerce-runtime";
1
2
  import { redactSensitiveText } from "openclaw/plugin-sdk/logging-core";
2
3
  //#region extensions/slack/src/errors.ts
3
4
  const NO_ERROR_DETAIL = "no error detail";
4
- function isRecord(value) {
5
- return Boolean(value) && typeof value === "object" && !Array.isArray(value);
6
- }
7
5
  function redact(value) {
8
6
  return redactSensitiveText(value);
9
7
  }
@@ -1,3 +1,3 @@
1
- import { t as prepareSlackMessage } from "./prepare-DFa-tK12.js";
2
- import { t as createInboundSlackTestContext } from "./prepare.test-helpers-Y5XylD5f.js";
1
+ import { t as prepareSlackMessage } from "./prepare-2yHC1V9V.js";
2
+ import { t as createInboundSlackTestContext } from "./prepare.test-helpers-dKm_6IFd.js";
3
3
  export { createInboundSlackTestContext, prepareSlackMessage };
@@ -1,5 +1,5 @@
1
1
  import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId } from "./accounts-BnLQ3fe2.js";
2
- import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
2
+ import { normalizeLowercaseStringOrEmpty, normalizeStringEntries, normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/slack/src/interactive-replies.ts
4
4
  const SLACK_BUTTON_MAX_ITEMS = 5;
5
5
  const SLACK_SELECT_MAX_ITEMS = 100;
@@ -64,7 +64,7 @@ function buildButtonsBlock(raw) {
64
64
  };
65
65
  }
66
66
  function buildSelectBlock(raw) {
67
- const parts = raw.split("|").map((entry) => entry.trim()).filter(Boolean);
67
+ const parts = normalizeStringEntries(raw.split("|"));
68
68
  if (parts.length === 0) return null;
69
69
  const [first, second] = parts;
70
70
  const placeholder = parts.length >= 2 ? first : "Choose an option";
@@ -82,10 +82,10 @@ function hasSlackBlocks(payload) {
82
82
  return Array.isArray(blocks) && blocks.length > 0;
83
83
  }
84
84
  function parseSimpleSlackOptions(raw) {
85
- const entries = raw.split(",").map((entry) => entry.trim()).filter(Boolean);
85
+ const entries = normalizeStringEntries(raw.split(","));
86
86
  if (entries.length < 2 || entries.length > SLACK_AUTO_SELECT_MAX_ITEMS) return null;
87
87
  if (!entries.every((entry) => SLACK_SIMPLE_OPTION_RE.test(entry))) return null;
88
- if (new Set(entries.map((entry) => normalizeLowercaseStringOrEmpty(entry))).size !== entries.length) return null;
88
+ if (new Set(normalizeStringEntriesLower(entries)).size !== entries.length) return null;
89
89
  return entries.map((entry) => ({
90
90
  label: entry,
91
91
  value: entry
@@ -1,2 +1,2 @@
1
- import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-9v8OYeGV.js";
1
+ import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DtYu4Sf5.js";
2
2
  export { compileSlackInteractiveReplies, isSlackInteractiveRepliesEnabled };
@@ -1,5 +1,5 @@
1
1
  import { a as resolveSlackAccount, t as listEnabledSlackAccounts } from "./accounts-BnLQ3fe2.js";
2
- import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-9v8OYeGV.js";
2
+ import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-DtYu4Sf5.js";
3
3
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
4
4
  import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
5
5
  import { Type } from "typebox";
@@ -1,2 +1,2 @@
1
- import { t as describeSlackMessageTool } from "./message-tool-api-BXEWUFiV.js";
1
+ import { t as describeSlackMessageTool } from "./message-tool-api-BieXX5lk.js";
2
2
  export { describeSlackMessageTool as describeMessageTool };
@@ -1,8 +1,8 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { E as buildSlackSlashCommandMatcher } from "./room-context-C-6EgkTA.js";
3
- import { t as isSlackChannelAllowedByPolicy } from "./policy-pdU_0AU0.js";
4
- import { t as monitorSlackProvider } from "./provider-GYmtqVRL.js";
5
- import { o as resolveSlackThreadTs } from "./replies-y6Coc_4v.js";
2
+ import { E as buildSlackSlashCommandMatcher } from "./room-context-BsIaiZhE.js";
3
+ import { t as isSlackChannelAllowedByPolicy } from "./policy-pu8tsF8_.js";
4
+ import { t as monitorSlackProvider } from "./provider-CaIj5hMH.js";
5
+ import { o as resolveSlackThreadTs } from "./replies-C6KAYDBW.js";
6
6
  //#region extensions/slack/src/monitor.ts
7
7
  var monitor_exports = /* @__PURE__ */ __exportAll({
8
8
  buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
2
  import { n as buildSlackPresentationBlocks, r as resolveSlackInteractiveBlockOffsets, t as buildSlackInteractiveBlocks } from "./blocks-render-CNC4vQnd.js";
3
3
  import { i as parseSlackBlocksInput, n as resolveSlackThreadTsValue, o as SLACK_TEXT_LIMIT } from "./thread-ts-ks-O8cEG.js";
4
- import { t as compileSlackInteractiveReplies } from "./interactive-replies-9v8OYeGV.js";
4
+ import { t as compileSlackInteractiveReplies } from "./interactive-replies-DtYu4Sf5.js";
5
5
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
7
7
  import { resolveOutboundSendDep } from "openclaw/plugin-sdk/outbound-send-deps";
@@ -12,7 +12,7 @@ var outbound_adapter_exports = /* @__PURE__ */ __exportAll({ slackOutbound: () =
12
12
  const SLACK_MAX_BLOCKS = 50;
13
13
  let slackSendRuntimePromise;
14
14
  async function loadSlackSendRuntime() {
15
- slackSendRuntimePromise ??= import("./send.runtime-bgiJsule.js");
15
+ slackSendRuntimePromise ??= import("./send.runtime-B0Gg0Ncx.js");
16
16
  return await slackSendRuntimePromise;
17
17
  }
18
18
  function resolveRenderedInteractiveBlocks(interactive, previousBlocks) {
@@ -1,2 +1,2 @@
1
- import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-Ca13aYOM.js";
1
+ import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-C57ipELl.js";
2
2
  export { createSlackOutboundPayloadHarness };
@@ -1,4 +1,4 @@
1
- import { n as slackOutbound } from "./outbound-adapter-Dtqbyixa.js";
1
+ import { n as slackOutbound } from "./outbound-adapter-C3lEsGEd.js";
2
2
  import { primeChannelOutboundSendMock } from "openclaw/plugin-sdk/channel-contract-testing";
3
3
  //#region node_modules/tinyrainbow/dist/index.js
4
4
  var b = {
@@ -1,14 +1,14 @@
1
1
  import { o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-ks-O8cEG.js";
2
- import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-9v8OYeGV.js";
3
- import { i as normalizeSlackAllowOwnerEntry } from "./allow-list-ChDz7vQO.js";
2
+ import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-DtYu4Sf5.js";
3
+ import { i as normalizeSlackAllowOwnerEntry } from "./allow-list-B1lkGjwl.js";
4
4
  import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-gDv83t5m.js";
5
- import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-B_Z5v6sU.js";
6
- import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-Dp1AKisQ.js";
7
- import { t as formatSlackError } from "./errors-co-Fg3Ll.js";
8
- import { C as resolveStorePath, a as recordInboundSession, w as updateLastRoute } from "./room-context-C-6EgkTA.js";
9
- import { r as escapeSlackMrkdwn } from "./provider-GYmtqVRL.js";
10
- import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-DFa-tK12.js";
11
- import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-y6Coc_4v.js";
5
+ import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-CXGjjgpT.js";
6
+ import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-DZqQvsrH.js";
7
+ import { t as formatSlackError } from "./errors-CZtmv-h0.js";
8
+ import { C as resolveStorePath, a as recordInboundSession, w as updateLastRoute } from "./room-context-BsIaiZhE.js";
9
+ import { r as escapeSlackMrkdwn } from "./provider-CaIj5hMH.js";
10
+ import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-2yHC1V9V.js";
11
+ import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-C6KAYDBW.js";
12
12
  import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/string-coerce-runtime";
13
13
  import { resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
14
14
  import { createChannelMessageReplyPipeline, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-message";
@@ -1,4 +1,4 @@
1
- import { a as normalizeSlackSlug } from "./allow-list-ChDz7vQO.js";
1
+ import { a as normalizeSlackSlug } from "./allow-list-B1lkGjwl.js";
2
2
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { applyChannelMatchMeta, buildChannelKeyCandidates, resolveChannelEntryMatchWithFallback } from "openclaw/plugin-sdk/channel-targets";
4
4
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
@@ -1,14 +1,14 @@
1
1
  import { l as resolveSlackReplyToMode } from "./accounts-BnLQ3fe2.js";
2
2
  import { r as parseSlackTarget } from "./target-parsing-C7eeWg7M.js";
3
3
  import "./targets-nUqxHGgg.js";
4
- import { i as normalizeSlackAllowOwnerEntry, o as resolveSlackAllowListMatch, r as normalizeAllowListLower } from "./allow-list-ChDz7vQO.js";
5
- import { i as hasSlackThreadParticipationWithPersistence, t as sendMessageSlack } from "./send-B_Z5v6sU.js";
6
- import { _ as resolveSlackThreadStarter, g as resolveSlackThreadHistory, l as reactSlackMessage, y as formatSlackFileReference } from "./actions-Dp1AKisQ.js";
7
- import { t as formatSlackError } from "./errors-co-Fg3Ll.js";
8
- import { C as resolveStorePath, O as stripSlackMentionsForCommandDetection, b as resolveChannelContextVisibilityMode, c as authorizeSlackBotRoomMessage, d as resolveSlackEffectiveAllowFrom, f as buildSlackAssistantThreadMetadata, g as resolveSlackChatType, h as normalizeSlackChannelType, m as parseSlackAssistantThreadMetadata, n as authorizeSlackDirectMessage, o as resolveConversationLabel$1, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, y as readSessionUpdatedAt } from "./room-context-C-6EgkTA.js";
9
- import { n as resolveSlackChannelConfig } from "./policy-pdU_0AU0.js";
10
- import "./send.runtime-BdYdgXuZ.js";
11
- import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
+ import { i as normalizeSlackAllowOwnerEntry, o as resolveSlackAllowListMatch, r as normalizeAllowListLower } from "./allow-list-B1lkGjwl.js";
5
+ import { i as hasSlackThreadParticipationWithPersistence, t as sendMessageSlack } from "./send-CXGjjgpT.js";
6
+ import { _ as resolveSlackThreadStarter, g as resolveSlackThreadHistory, l as reactSlackMessage, y as formatSlackFileReference } from "./actions-DZqQvsrH.js";
7
+ import { t as formatSlackError } from "./errors-CZtmv-h0.js";
8
+ import { C as resolveStorePath, O as stripSlackMentionsForCommandDetection, b as resolveChannelContextVisibilityMode, c as authorizeSlackBotRoomMessage, d as resolveSlackEffectiveAllowFrom, f as buildSlackAssistantThreadMetadata, g as resolveSlackChatType, h as normalizeSlackChannelType, m as parseSlackAssistantThreadMetadata, n as authorizeSlackDirectMessage, o as resolveConversationLabel$1, t as resolveSlackRoomContextHints, u as resolveSlackCommandIngress, y as readSessionUpdatedAt } from "./room-context-BsIaiZhE.js";
9
+ import { n as resolveSlackChannelConfig } from "./policy-pu8tsF8_.js";
10
+ import "./send.runtime-BbMOcD7_.js";
11
+ import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
12
12
  import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
13
13
  import { resolveChannelMessageSourceReplyDeliveryMode } from "openclaw/plugin-sdk/channel-message";
14
14
  import { logVerbose, shouldLogVerbose } from "openclaw/plugin-sdk/runtime-env";
@@ -31,7 +31,7 @@ const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
31
31
  const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
32
32
  let slackMediaModulePromise$1;
33
33
  function loadSlackMediaModule$1() {
34
- slackMediaModulePromise$1 ??= import("./actions-Dp1AKisQ.js").then((n) => n.h);
34
+ slackMediaModulePromise$1 ??= import("./actions-DZqQvsrH.js").then((n) => n.h);
35
35
  return slackMediaModulePromise$1;
36
36
  }
37
37
  function collectUniqueSlackMentionIds$1(texts) {
@@ -56,35 +56,32 @@ function renderSlackUserMentions(text, renderedMentions) {
56
56
  return renderedMentions.get(userId) ?? full;
57
57
  });
58
58
  }
59
- function readString(value) {
60
- return typeof value === "string" ? value : void 0;
61
- }
62
59
  function readTextObject(value) {
63
60
  if (!value || typeof value !== "object") return;
64
- return normalizeOptionalString(readString(value.text));
61
+ return normalizeOptionalString(readStringValue(value.text));
65
62
  }
66
63
  function renderSlackRichTextLeaf(element) {
67
64
  switch (element.type) {
68
- case "text": return readString(element.text) ?? "";
69
- case "link": return readString(element.text) ?? readString(element.url) ?? "";
65
+ case "text": return readStringValue(element.text) ?? "";
66
+ case "link": return readStringValue(element.text) ?? readStringValue(element.url) ?? "";
70
67
  case "user": {
71
- const userId = readString(element.user_id);
68
+ const userId = readStringValue(element.user_id);
72
69
  return userId ? `<@${userId}>` : "";
73
70
  }
74
71
  case "channel": {
75
- const channelId = readString(element.channel_id);
72
+ const channelId = readStringValue(element.channel_id);
76
73
  return channelId ? `<#${channelId}>` : "";
77
74
  }
78
75
  case "usergroup": {
79
- const usergroupId = readString(element.usergroup_id);
76
+ const usergroupId = readStringValue(element.usergroup_id);
80
77
  return usergroupId ? `<!subteam^${usergroupId}>` : "";
81
78
  }
82
79
  case "broadcast": {
83
- const range = readString(element.range);
80
+ const range = readStringValue(element.range);
84
81
  return range ? `<!${range}>` : "";
85
82
  }
86
83
  case "emoji": {
87
- const name = readString(element.name);
84
+ const name = readStringValue(element.name);
88
85
  return name ? `:${name}:` : "";
89
86
  }
90
87
  default: return "";
@@ -148,8 +145,8 @@ function readSlackBlockText(block) {
148
145
  }
149
146
  return parts.length > 0 ? parts.join(" ") : void 0;
150
147
  }
151
- case "image": return normalizeOptionalString(readString(blockLike.alt_text)) ?? readTextObject(blockLike.title);
152
- case "video": return readTextObject(blockLike.title) ?? normalizeOptionalString(readString(blockLike.alt_text));
148
+ case "image": return normalizeOptionalString(readStringValue(blockLike.alt_text)) ?? readTextObject(blockLike.title);
149
+ case "video": return readTextObject(blockLike.title) ?? normalizeOptionalString(readStringValue(blockLike.alt_text));
153
150
  default: return;
154
151
  }
155
152
  }
@@ -579,7 +576,7 @@ function formatSlackBotStarterThreadLabel(params) {
579
576
  //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
580
577
  let slackMediaModulePromise;
581
578
  function loadSlackMediaModule() {
582
- slackMediaModulePromise ??= import("./actions-Dp1AKisQ.js").then((n) => n.h);
579
+ slackMediaModulePromise ??= import("./actions-DZqQvsrH.js").then((n) => n.h);
583
580
  return slackMediaModulePromise;
584
581
  }
585
582
  const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
@@ -851,9 +848,6 @@ const SLACK_HISTORY_MEDIA_MAX_ATTACHMENTS = 4;
851
848
  const SLACK_HISTORY_MEDIA_MAX_BYTES = 10 * 1024 * 1024;
852
849
  const SLACK_HISTORY_MEDIA_IDLE_TIMEOUT_MS = 1e3;
853
850
  const SLACK_HISTORY_MEDIA_TOTAL_TIMEOUT_MS = 3e3;
854
- function asRecord(value) {
855
- return value && typeof value === "object" && !Array.isArray(value) ? value : void 0;
856
- }
857
851
  function recordString(record, key) {
858
852
  return normalizeOptionalString(record?.[key]);
859
853
  }
@@ -878,9 +872,9 @@ function hasSlackAssistantThreadMetadata(context) {
878
872
  return Boolean(context?.channelId || context?.teamId || context?.enterpriseId !== void 0);
879
873
  }
880
874
  function resolveSlackMessageAssistantThreadContext(message) {
881
- const thread = asRecord(message.assistant_thread);
875
+ const thread = asOptionalRecord(message.assistant_thread);
882
876
  if (!thread) return;
883
- const context = asRecord(thread.context);
877
+ const context = asOptionalRecord(thread.context);
884
878
  const assistantChannelId = recordString(thread, "channel_id") ?? message.channel;
885
879
  const threadTs = recordString(thread, "thread_ts") ?? message.thread_ts ?? message.ts;
886
880
  if (!assistantChannelId || !threadTs) return;
@@ -1,4 +1,4 @@
1
- import { p as createSlackMonitorContext } from "./room-context-C-6EgkTA.js";
1
+ import { p as createSlackMonitorContext } from "./room-context-BsIaiZhE.js";
2
2
  import "openclaw/plugin-sdk/temp-path";
3
3
  //#region extensions/slack/src/monitor/message-handler/prepare.test-helpers.ts
4
4
  function createInboundSlackTestContext(params) {
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { r as createSlackWebClient } from "./client-CMipJma0.js";
3
- import { t as formatSlackError } from "./errors-co-Fg3Ll.js";
2
+ import { r as createSlackWebClient } from "./client-Dc2Ji2YN.js";
3
+ import { t as formatSlackError } from "./errors-CZtmv-h0.js";
4
4
  import { withTimeout } from "openclaw/plugin-sdk/text-utility-runtime";
5
5
  //#region extensions/slack/src/probe.ts
6
6
  var probe_exports = /* @__PURE__ */ __exportAll({ probeSlack: () => probeSlack });