@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,8 +1,9 @@
1
1
  import { i as resolveSlackChannelId } from "./target-parsing-3jYH8LfB.js";
2
2
  import { t as slackContextTargetsMatch } from "./targets-Dll4NJgs.js";
3
- import { r as parseSlackBlocksInput } from "./reply-blocks-BT_sNsDQ.js";
4
- import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-ClM1_yX2.js";
5
- import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-Bi92bs5t.js";
3
+ import { r as parseSlackBlocksInput } from "./reply-blocks-CfJqf7eq.js";
4
+ import { a as readPositiveIntegerParam, c as withNormalizedTimestamp, n as imageResultFromFile, o as readReactionParams, r as jsonResult, s as readStringParam, t as createActionGate } from "./runtime-api-DHJ8ntLr.js";
5
+ import { n as resolveSlackChannelConfig, t as isSlackChannelAllowedByPolicy } from "./policy-DAE6BTN3.js";
6
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
6
7
  import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
7
8
  import { readBooleanParam } from "openclaw/plugin-sdk/boolean-param";
8
9
  import { resolveOpenProviderRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
@@ -21,16 +22,8 @@ const pinActions = new Set([
21
22
  "unpinMessage",
22
23
  "listPins"
23
24
  ]);
24
- let slackActionsRuntimePromise;
25
- let slackAccountsRuntimePromise;
26
- function loadSlackActionsRuntime() {
27
- slackActionsRuntimePromise ??= import("./actions.runtime-DkFXr3-k.js");
28
- return slackActionsRuntimePromise;
29
- }
30
- function loadSlackAccountsRuntime() {
31
- slackAccountsRuntimePromise ??= import("./accounts.runtime-CgWgzjLX.js");
32
- return slackAccountsRuntimePromise;
33
- }
25
+ const loadSlackActionsRuntime = createLazyRuntimeModule(() => import("./actions.runtime-Dl6AfO_g.js"));
26
+ const loadSlackAccountsRuntime = createLazyRuntimeModule(() => import("./accounts.runtime-CgWgzjLX.js"));
34
27
  function createLazySlackAction(key) {
35
28
  return (async (...args) => {
36
29
  const action = (await loadSlackActionsRuntime())[key];
@@ -0,0 +1,2 @@
1
+ import { t as handleSlackAction } from "./action-runtime-E9QZMf0z.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-BPCiCe8y.js";
3
- import { a as SLACK_TEXT_LIMIT, i as validateSlackBlocksArray, v as truncateSlackText } from "./reply-blocks-BT_sNsDQ.js";
4
- import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-km2ba2l3.js";
5
- import { l as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-CRoD-UQw.js";
3
+ import { a as SLACK_TEXT_LIMIT, i as validateSlackBlocksArray, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
4
+ import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-DG9cyk55.js";
5
+ import { l as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-Dg6U9K7_.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-OhnDIN4l.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-CqRHPciJ.js";
2
2
  export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, sendSlackMessage, unpinSlackMessage };
package/dist/api.js CHANGED
@@ -3,16 +3,16 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
3
3
  import { t as inspectSlackAccount } from "./account-inspect-DOtQbKkB.js";
4
4
  import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-3jYH8LfB.js";
5
5
  import "./targets-Dll4NJgs.js";
6
- import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-COCbJwom.js";
7
- import { c as allowListMatches, d as normalizeSlackAllowOwnerEntry, f as normalizeSlackSlug, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, i as validateSlackBlocksArray, l as normalizeAllowList, m as resolveSlackUserAllowed, n as SLACK_MAX_BLOCKS, o as resolveSlackGroupRequireMention, p as resolveSlackAllowListMatch, r as parseSlackBlocksInput, s as resolveSlackGroupToolPolicy, u as normalizeAllowListLower } from "./reply-blocks-BT_sNsDQ.js";
6
+ import { a as resolveSlackAutoThreadId, i as resolveSlackChannelType, n as buildSlackThreadingToolContext, r as resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-jO8Jdkge.js";
7
+ import { c as allowListMatches, d as normalizeSlackAllowOwnerEntry, f as normalizeSlackSlug, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, i as validateSlackBlocksArray, l as normalizeAllowList, m as resolveSlackUserAllowed, n as SLACK_MAX_BLOCKS, o as resolveSlackGroupRequireMention, p as resolveSlackAllowListMatch, r as parseSlackBlocksInput, s as resolveSlackGroupToolPolicy, u as normalizeAllowListLower } from "./reply-blocks-CfJqf7eq.js";
8
8
  import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api--zYyTqrR.js";
9
9
  import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-D-22gTp3.js";
10
- 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-km2ba2l3.js";
11
- import { t as slackSetupPlugin } from "./channel.setup-DYQGnKPK.js";
12
- import { i as hasSlackThreadParticipation, o as recordSlackThreadParticipation, r as clearSlackThreadParticipationCache } from "./send-CRoD-UQw.js";
13
- 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-OhnDIN4l.js";
10
+ 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-DG9cyk55.js";
11
+ import { t as slackSetupPlugin } from "./channel.setup-CDOZ8V3p.js";
12
+ import { i as hasSlackThreadParticipation, o as recordSlackThreadParticipation, r as clearSlackThreadParticipationCache } from "./send-Dg6U9K7_.js";
13
+ 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-CqRHPciJ.js";
14
14
  import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-DDVHDmrN.js";
15
- import { t as probeSlack } from "./probe-BRsYAcGR.js";
15
+ import { t as probeSlack } from "./probe-DFKt9Ute.js";
16
16
  import { t as collectSlackSecurityAuditFindings } from "./security-audit-CikQhBUY.js";
17
- import { n as resolveSlackRuntimeGroupPolicy } from "./provider-7YKru1TZ.js";
17
+ import { n as resolveSlackRuntimeGroupPolicy } from "./provider-BdoeWKr8.js";
18
18
  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,8 +1,9 @@
1
- import { E as resolveSlackApprovalKind, L as normalizeSlackApproverId, S as isSlackAnyNativeApprovalClientEnabled, k as shouldHandleSlackNativeApprovalRequest, t as resolveSlackReplyBlocks, v as truncateSlackText } from "./reply-blocks-BT_sNsDQ.js";
2
- import { t as sendMessageSlack } from "./send-CRoD-UQw.js";
1
+ import { E as resolveSlackApprovalKind, L as normalizeSlackApproverId, S as isSlackAnyNativeApprovalClientEnabled, k as shouldHandleSlackNativeApprovalRequest, t as resolveSlackReplyBlocks, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
2
+ import { t as sendMessageSlack } from "./send-Dg6U9K7_.js";
3
3
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
4
4
  import { buildChannelApprovalNativeTargetKey } from "openclaw/plugin-sdk/approval-native-runtime";
5
5
  import { buildApprovalPresentationFromActionDescriptors } from "openclaw/plugin-sdk/approval-reply-runtime";
6
+ import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
6
7
  import { logError } from "openclaw/plugin-sdk/logging-core";
7
8
  import { createChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime";
8
9
  //#region extensions/slack/src/approval-handler.runtime.ts
@@ -19,7 +20,10 @@ function resolveHandlerContext(params) {
19
20
  };
20
21
  }
21
22
  function truncateSlackMrkdwn(text, maxChars) {
22
- return text.length <= maxChars ? text : `${text.slice(0, maxChars - 1)}…`;
23
+ const limit = Math.max(0, Math.floor(maxChars));
24
+ if (text.length <= limit) return text;
25
+ if (limit <= 1) return truncateUtf16Safe(text, limit);
26
+ return `${truncateUtf16Safe(text, limit - 1)}…`;
23
27
  }
24
28
  function buildSlackCodeBlock(text) {
25
29
  let fence = "```";
@@ -1,14 +1,14 @@
1
1
  import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resolveSlackReplyToMode, n as listSlackAccountIds, o as resolveSlackAccountAllowFrom } from "./accounts-BPCiCe8y.js";
2
2
  import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-3jYH8LfB.js";
3
3
  import { t as slackContextTargetsMatch } from "./targets-Dll4NJgs.js";
4
- import { A as shouldHandleSlackPluginViaForwardingSession, C as normalizeSlackForwardTarget, D as resolveSlackFallbackOriginTarget, E as resolveSlackApprovalKind, F as isSlackExecApprovalAuthorizedSender, I as isSlackExecApprovalClientEnabled, M as getSlackApprovalApprovers, N as isSlackApprovalAuthorizedSender, O as resolveTurnSourceSlackOriginTarget, P as getSlackExecApprovalApprovers, R as resolveSlackExecApprovalTarget, S as isSlackAnyNativeApprovalClientEnabled, T as resolveSessionSlackOriginTarget, _ as resolveSlackInteractiveBlockOffsets, a as SLACK_TEXT_LIMIT, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, j as slackTargetsMatch, k as shouldHandleSlackNativeApprovalRequest, o as resolveSlackGroupRequireMention, s as resolveSlackGroupToolPolicy, t as resolveSlackReplyBlocks, u as normalizeAllowListLower, w as normalizeSlackOriginTarget, x as hasSlackPluginApprovers, z as shouldSuppressLocalSlackExecApprovalPrompt } from "./reply-blocks-BT_sNsDQ.js";
4
+ import { A as shouldHandleSlackPluginViaForwardingSession, C as normalizeSlackForwardTarget, D as resolveSlackFallbackOriginTarget, E as resolveSlackApprovalKind, F as isSlackExecApprovalAuthorizedSender, I as isSlackExecApprovalClientEnabled, M as getSlackApprovalApprovers, N as isSlackApprovalAuthorizedSender, O as resolveTurnSourceSlackOriginTarget, P as getSlackExecApprovalApprovers, R as resolveSlackExecApprovalTarget, S as isSlackAnyNativeApprovalClientEnabled, T as resolveSessionSlackOriginTarget, _ as resolveSlackInteractiveBlockOffsets, a as SLACK_TEXT_LIMIT, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, j as slackTargetsMatch, k as shouldHandleSlackNativeApprovalRequest, o as resolveSlackGroupRequireMention, s as resolveSlackGroupToolPolicy, t as resolveSlackReplyBlocks, u as normalizeAllowListLower, w as normalizeSlackOriginTarget, x as hasSlackPluginApprovers, z as shouldSuppressLocalSlackExecApprovalPrompt } from "./reply-blocks-CfJqf7eq.js";
5
5
  import { t as isSlackPluginAccountConfigured } from "./account-configured-DzC407uv.js";
6
6
  import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
7
7
  import { n as extractSlackToolSend, t as describeSlackMessageTool } from "./message-tool-api--zYyTqrR.js";
8
8
  import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-D-22gTp3.js";
9
- import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID$1 } from "./client-km2ba2l3.js";
9
+ import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID$1 } from "./client-DG9cyk55.js";
10
10
  import { t as getOptionalSlackRuntime } from "./runtime-BOk7xkOl.js";
11
- import { n as slackConfigAdapter, r as slackSecurityAdapter, t as createSlackPluginBase } from "./shared-BtJS2bUx.js";
11
+ import { n as slackConfigAdapter, r as slackSecurityAdapter, t as createSlackPluginBase } from "./shared-iMaNxOIL.js";
12
12
  import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-BCGzyZhx.js";
13
13
  import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
14
14
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
@@ -22,6 +22,7 @@ import { createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-
22
22
  import { createChannelDirectoryAdapter, createRuntimeDirectoryLiveAdapter } from "openclaw/plugin-sdk/directory-runtime";
23
23
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
24
24
  import { createComputedAccountStatusAdapter, createDefaultChannelRuntimeState } from "openclaw/plugin-sdk/status-helpers";
25
+ import { sanitizeAssistantVisibleText } from "openclaw/plugin-sdk/text-chunking";
25
26
  import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
26
27
  import { createApproverRestrictedNativeApprovalCapability } from "openclaw/plugin-sdk/approval-delivery-runtime";
27
28
  import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime";
@@ -134,7 +135,7 @@ const baseSlackApprovalCapability = createApproverRestrictedNativeApprovalCapabi
134
135
  approvalKind: resolveSlackApprovalKind(request),
135
136
  request
136
137
  }),
137
- load: async () => (await import("./approval-handler.runtime-CsFrthnF.js")).slackApprovalNativeRuntime
138
+ load: async () => (await import("./approval-handler.runtime-BqNO_HC_.js")).slackApprovalNativeRuntime
138
139
  })
139
140
  });
140
141
  const baseSlackNativeAdapter = baseSlackApprovalCapability.native;
@@ -351,7 +352,6 @@ async function handleSlackMessageAction(params) {
351
352
  }
352
353
  //#endregion
353
354
  //#region extensions/slack/src/channel-actions.ts
354
- let slackActionRuntimePromise$1;
355
355
  const SLACK_TOOL_DELIVERY_ACTIONS = new Set([
356
356
  "deleteMessage",
357
357
  "editMessage",
@@ -361,10 +361,7 @@ const SLACK_TOOL_DELIVERY_ACTIONS = new Set([
361
361
  "unpinMessage",
362
362
  "uploadFile"
363
363
  ]);
364
- async function loadSlackActionRuntime$1() {
365
- slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-CIYPRrNy.js");
366
- return await slackActionRuntimePromise$1;
367
- }
364
+ const loadSlackActionRuntime$1 = createLazyRuntimeModule(() => import("./action-runtime.runtime-BQrVgSOq.js"));
368
365
  function resolveSlackActionContext(params) {
369
366
  if (!params.toolContext && !params.mediaLocalRoots && !params.mediaReadFile) return;
370
367
  return {
@@ -495,9 +492,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
495
492
  const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
496
493
  const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
497
494
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
498
- const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-D4GE34e2.js"));
499
- const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-CNKZU1t1.js"));
500
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-CzX4D5K_.js"));
495
+ const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-D7xdZLxB.js"));
496
+ const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-BdVdJxFf.js"));
497
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-BHUtpXz0.js"));
501
498
  async function resolveSlackHandleAction() {
502
499
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
503
500
  }
@@ -512,34 +509,14 @@ function getTokenForOperation(account, operation) {
512
509
  if (!allowUserWrites) return botToken;
513
510
  return botToken ?? userToken;
514
511
  }
515
- let slackActionRuntimePromise;
516
- let slackSendRuntimePromise;
517
- let slackProbeModulePromise;
518
- let slackMonitorModulePromise;
519
- let slackDirectoryLiveModulePromise;
520
512
  const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./directory-config-DDVHDmrN.js").then((n) => n.t));
521
- const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-CtUOIX8D.js").then((n) => n.n));
522
- const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DfFN2BcP.js").then((n) => n.n));
523
- async function loadSlackActionRuntime() {
524
- slackActionRuntimePromise ??= import("./action-runtime.runtime-CIYPRrNy.js");
525
- return await slackActionRuntimePromise;
526
- }
527
- async function loadSlackSendRuntime() {
528
- slackSendRuntimePromise ??= import("./send.runtime-C_y65BU0.js");
529
- return await slackSendRuntimePromise;
530
- }
531
- async function loadSlackProbeModule() {
532
- slackProbeModulePromise ??= import("./probe-BRsYAcGR.js").then((n) => n.n);
533
- return await slackProbeModulePromise;
534
- }
535
- async function loadSlackMonitorModule() {
536
- slackMonitorModulePromise ??= import("./monitor-Cy-0xYgF.js").then((n) => n.t);
537
- return await slackMonitorModulePromise;
538
- }
539
- async function loadSlackDirectoryLiveModule() {
540
- slackDirectoryLiveModulePromise ??= import("./directory-live-DzOkmJVV.js").then((n) => n.t);
541
- return await slackDirectoryLiveModulePromise;
542
- }
513
+ const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-eniB45fy.js").then((n) => n.n));
514
+ const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-DDKzl37a.js").then((n) => n.n));
515
+ const loadSlackActionRuntime = createLazyRuntimeModule(() => import("./action-runtime.runtime-BQrVgSOq.js"));
516
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-a-O4PP2B.js"));
517
+ const loadSlackProbeModule = createLazyRuntimeModule(() => import("./probe-DFKt9Ute.js").then((n) => n.n));
518
+ const loadSlackMonitorModule = createLazyRuntimeModule(() => import("./monitor-BQ7P93ll.js").then((n) => n.t));
519
+ const loadSlackDirectoryLiveModule = createLazyRuntimeModule(() => import("./directory-live-DC-YA5SQ.js").then((n) => n.t));
543
520
  async function resolveSlackSendContext(params) {
544
521
  const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
545
522
  const account = resolveSlackAccount({
@@ -672,6 +649,7 @@ const slackChannelOutbound = {
672
649
  deliveryMode: "direct",
673
650
  chunker: null,
674
651
  textChunkLimit: SLACK_TEXT_LIMIT,
652
+ sanitizeText: ({ text }) => sanitizeAssistantVisibleText(text),
675
653
  normalizePayload: ({ payload, cfg, accountId }) => isSlackInteractiveRepliesEnabled({
676
654
  cfg,
677
655
  accountId
@@ -1010,10 +988,12 @@ const slackPlugin = createChatChannelPlugin({
1010
988
  to,
1011
989
  toolContext
1012
990
  })),
1013
- resolveReplyTransport: ({ threadId, replyToId, replyDelivery }) => {
991
+ resolveReplyTransport: ({ threadId, replyToId, replyToIsExplicit, replyDelivery }) => {
992
+ const allowedReplyToId = replyDelivery?.replyToMode === "off" ? void 0 : replyToId;
993
+ const preferThreadId = replyToIsExplicit === false;
1014
994
  const resolvedReplyToId = resolveSlackThreadTsValue({
1015
- replyToId: replyDelivery?.replyToMode === "off" ? void 0 : replyToId,
1016
- threadId
995
+ replyToId: preferThreadId ? threadId : allowedReplyToId,
996
+ threadId: preferThreadId ? allowedReplyToId : threadId
1017
997
  });
1018
998
  return {
1019
999
  replyToId: replyDelivery?.replyToMode === "off" && !resolvedReplyToId ? null : resolvedReplyToId,
@@ -1,2 +1,2 @@
1
- import { t as slackPlugin } from "./channel-COCbJwom.js";
1
+ import { t as slackPlugin } from "./channel-jO8Jdkge.js";
2
2
  export { slackPlugin };
@@ -4,7 +4,7 @@ import { t as SlackChannelConfigSchema } from "./config-schema-BzqzFW__.js";
4
4
  import { adaptScopedAccountAccessor, createScopedChannelConfigAdapter } from "openclaw/plugin-sdk/channel-config-helpers";
5
5
  import { formatAllowFromLowercase } from "openclaw/plugin-sdk/allow-from";
6
6
  //#region extensions/slack/src/channel.setup.ts
7
- const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-D4GE34e2.js")).slackSetupWizard }));
7
+ const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-D7xdZLxB.js")).slackSetupWizard }));
8
8
  const slackSetupConfigAdapter = createScopedChannelConfigAdapter({
9
9
  sectionKey: SLACK_CHANNEL,
10
10
  listAccountIds: listSlackAccountIds,
@@ -44,31 +44,37 @@ const SLACK_WRITE_RETRY_OPTIONS = { retries: 0 };
44
44
  * Returns `undefined` when no proxy env var is configured or when Slack hosts
45
45
  * are excluded by `NO_PROXY`.
46
46
  */
47
- function resolveSlackProxyAgent() {
47
+ function resolveSlackProxyAgent(targetUrl) {
48
48
  try {
49
49
  return createNodeProxyAgent({
50
50
  mode: "env",
51
- targetUrl: "https://slack.com/",
52
- protocol: "https"
51
+ targetUrl
53
52
  });
54
53
  } catch {
55
54
  return;
56
55
  }
57
56
  }
57
+ function resolveSlackApiUrlFromEnv() {
58
+ return process.env.SLACK_API_URL?.trim() || void 0;
59
+ }
60
+ function applySlackApiUrlAndProxyOptions(options) {
61
+ const slackApiUrl = options.slackApiUrl ?? resolveSlackApiUrlFromEnv();
62
+ options.agent ??= resolveSlackProxyAgent(slackApiUrl ?? "https://slack.com/");
63
+ if (slackApiUrl !== void 0) options.slackApiUrl = slackApiUrl;
64
+ else delete options.slackApiUrl;
65
+ }
58
66
  function resolveSlackWebClientOptions(options = {}) {
59
- return {
60
- ...options,
61
- agent: options.agent ?? resolveSlackProxyAgent(),
62
- retryConfig: options.retryConfig ?? SLACK_DEFAULT_RETRY_OPTIONS
63
- };
67
+ const resolved = Object.assign({}, options);
68
+ applySlackApiUrlAndProxyOptions(resolved);
69
+ resolved.retryConfig ??= SLACK_DEFAULT_RETRY_OPTIONS;
70
+ return resolved;
64
71
  }
65
72
  function resolveSlackWriteClientOptions(options = {}) {
66
- return {
67
- ...options,
68
- agent: options.agent ?? resolveSlackProxyAgent(),
69
- retryConfig: options.retryConfig ?? SLACK_WRITE_RETRY_OPTIONS,
70
- maxRequestConcurrency: options.maxRequestConcurrency ?? 1
71
- };
73
+ const resolved = Object.assign({}, options);
74
+ applySlackApiUrlAndProxyOptions(resolved);
75
+ resolved.retryConfig ??= SLACK_WRITE_RETRY_OPTIONS;
76
+ resolved.maxRequestConcurrency ??= 1;
77
+ return resolved;
72
78
  }
73
79
  //#endregion
74
80
  //#region extensions/slack/src/client.ts
@@ -83,15 +89,20 @@ function createSlackWriteClient(token, options = {}) {
83
89
  function createSlackTokenCacheKey(token) {
84
90
  return `sha256:${createHash("sha256").update(token).digest("base64url")}`;
85
91
  }
86
- function getSlackWriteClient(token) {
92
+ function slackWriteClientCacheKey(token, options) {
87
93
  const tokenKey = createSlackTokenCacheKey(token);
94
+ return options.slackApiUrl ? `${tokenKey}:api:${options.slackApiUrl}` : tokenKey;
95
+ }
96
+ function getSlackWriteClient(token, options = {}) {
97
+ const resolvedOptions = resolveSlackWriteClientOptions(options);
98
+ const tokenKey = slackWriteClientCacheKey(token, resolvedOptions);
88
99
  const cached = slackWriteClientCache.get(tokenKey);
89
100
  if (cached) {
90
101
  slackWriteClientCache.delete(tokenKey);
91
102
  slackWriteClientCache.set(tokenKey, cached);
92
103
  return cached;
93
104
  }
94
- const client = createSlackWriteClient(token);
105
+ const client = new WebClient(token, resolvedOptions);
95
106
  if (slackWriteClientCache.size >= SLACK_WRITE_CLIENT_CACHE_MAX) {
96
107
  const oldestTokenKey = slackWriteClientCache.keys().next().value;
97
108
  if (oldestTokenKey) slackWriteClientCache.delete(oldestTokenKey);
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
2
  import { a as resolveSlackAccount } from "./accounts-BPCiCe8y.js";
3
- import { r as createSlackWebClient } from "./client-km2ba2l3.js";
3
+ import { r as createSlackWebClient } from "./client-DG9cyk55.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({
@@ -8,12 +8,13 @@ var directory_live_exports = /* @__PURE__ */ __exportAll({
8
8
  listSlackDirectoryGroupsLive: () => listSlackDirectoryGroupsLive,
9
9
  listSlackDirectoryPeersLive: () => listSlackDirectoryPeersLive
10
10
  });
11
- function resolveReadToken(params) {
11
+ function createSlackDirectoryClient(params) {
12
12
  const account = resolveSlackAccount({
13
13
  cfg: params.cfg,
14
14
  accountId: params.accountId
15
15
  });
16
- return account.userToken ?? account.botToken?.trim();
16
+ const token = account.userToken ?? account.botToken?.trim();
17
+ return token ? createSlackWebClient(token) : null;
17
18
  }
18
19
  function normalizeQuery(value) {
19
20
  return normalizeLowercaseStringOrEmpty(value);
@@ -42,9 +43,8 @@ function slackUserToDirectoryEntry(user, fallback) {
42
43
  };
43
44
  }
44
45
  async function getSlackDirectorySelfLive(params) {
45
- const token = resolveReadToken(params);
46
- if (!token) return null;
47
- const client = createSlackWebClient(token);
46
+ const client = createSlackDirectoryClient(params);
47
+ if (!client) return null;
48
48
  const auth = await client.auth.test();
49
49
  const userId = normalizeOptionalString(auth.user_id);
50
50
  if (!userId) return null;
@@ -64,9 +64,8 @@ async function getSlackDirectorySelfLive(params) {
64
64
  }
65
65
  }
66
66
  async function listSlackDirectoryPeersLive(params) {
67
- const token = resolveReadToken(params);
68
- if (!token) return [];
69
- const client = createSlackWebClient(token);
67
+ const client = createSlackDirectoryClient(params);
68
+ if (!client) return [];
70
69
  const query = normalizeQuery(params.query);
71
70
  const members = [];
72
71
  let cursor;
@@ -92,9 +91,8 @@ async function listSlackDirectoryPeersLive(params) {
92
91
  return rows;
93
92
  }
94
93
  async function listSlackDirectoryGroupsLive(params) {
95
- const token = resolveReadToken(params);
96
- if (!token) return [];
97
- const client = createSlackWebClient(token);
94
+ const client = createSlackDirectoryClient(params);
95
+ if (!client) return [];
98
96
  const query = normalizeQuery(params.query);
99
97
  const channels = [];
100
98
  let cursor;
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
2
- import { t as monitorSlackProvider, x as buildSlackSlashCommandMatcher } from "./provider-7YKru1TZ.js";
3
- import { t as isSlackChannelAllowedByPolicy } from "./policy-Bi92bs5t.js";
4
- import { o as resolveSlackThreadTs } from "./replies-Dlxge48k.js";
2
+ import { S as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-BdoeWKr8.js";
3
+ import { t as isSlackChannelAllowedByPolicy } from "./policy-DAE6BTN3.js";
4
+ import { o as resolveSlackThreadTs } from "./replies-D_G-EPr8.js";
5
5
  //#region extensions/slack/src/monitor.ts
6
6
  var monitor_exports = /* @__PURE__ */ __exportAll({
7
7
  buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
@@ -1,18 +1,15 @@
1
- import { _ as resolveSlackInteractiveBlockOffsets, a as SLACK_TEXT_LIMIT, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, r as parseSlackBlocksInput } from "./reply-blocks-BT_sNsDQ.js";
1
+ import { _ as resolveSlackInteractiveBlockOffsets, a as SLACK_TEXT_LIMIT, g as buildSlackPresentationBlocks, h as buildSlackInteractiveBlocks, r as parseSlackBlocksInput } from "./reply-blocks-CfJqf7eq.js";
2
2
  import { n as resolveSlackThreadTsValue } from "./thread-ts-DUGhaYKq.js";
3
3
  import { t as compileSlackInteractiveReplies } from "./interactive-replies-D-22gTp3.js";
4
4
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
5
  import { resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
6
6
  import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
7
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
8
  import { resolveInteractiveTextFallback } from "openclaw/plugin-sdk/interactive-runtime";
8
9
  import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
9
10
  //#region extensions/slack/src/outbound-adapter.ts
10
11
  const SLACK_MAX_BLOCKS = 50;
11
- let slackSendRuntimePromise;
12
- async function loadSlackSendRuntime() {
13
- slackSendRuntimePromise ??= import("./send.runtime-C_y65BU0.js");
14
- return await slackSendRuntimePromise;
15
- }
12
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-a-O4PP2B.js"));
16
13
  function resolveRenderedInteractiveBlocks(interactive, previousBlocks) {
17
14
  if (!interactive) return;
18
15
  const blocks = buildSlackInteractiveBlocks(interactive, resolveSlackInteractiveBlockOffsets(previousBlocks));
@@ -1,24 +1,25 @@
1
1
  import { l as resolveSlackReplyToMode } 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, d as normalizeSlackAllowOwnerEntry, p as resolveSlackAllowListMatch, u as normalizeAllowListLower, v as truncateSlackText } from "./reply-blocks-BT_sNsDQ.js";
4
+ import { a as SLACK_TEXT_LIMIT, d as normalizeSlackAllowOwnerEntry, p as resolveSlackAllowListMatch, u as normalizeAllowListLower, v as truncateSlackText } from "./reply-blocks-CfJqf7eq.js";
5
5
  import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-D-22gTp3.js";
6
6
  import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-DjlgH-Be.js";
7
- import { a as hasSlackThreadParticipationWithPersistence, c as normalizeSlackOutboundText, o as recordSlackThreadParticipation, t as sendMessageSlack } from "./send-CRoD-UQw.js";
8
- import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-OhnDIN4l.js";
7
+ import { a as hasSlackThreadParticipationWithPersistence, c as normalizeSlackOutboundText, o as recordSlackThreadParticipation, t as sendMessageSlack } from "./send-Dg6U9K7_.js";
8
+ import { _ as resolveSlackThreadStarter, b as buildSlackEditTextPayload, f as removeSlackReaction, g as resolveSlackThreadHistory, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage, y as formatSlackFileReference } from "./actions-CqRHPciJ.js";
9
9
  import { t as formatSlackError } from "./errors-CZtmv-h0.js";
10
- import { S as stripSlackMentionsForCommandDetection, _ as readSessionUpdatedAt, b as updateLastRoute, c as recordInboundSession, d as resolveSlackCommandIngress, f as resolveSlackEffectiveAllowFrom, g as resolveSlackChatType, h as normalizeSlackChannelType, i as authorizeSlackDirectMessage, l as resolveConversationLabel$1, m as parseSlackAssistantThreadMetadata, p as buildSlackAssistantThreadMetadata, r as resolveSlackRoomContextHints, s as escapeSlackMrkdwn, u as authorizeSlackBotRoomMessage, v as resolveChannelContextVisibilityMode, y as resolveStorePath } from "./provider-7YKru1TZ.js";
11
- import { n as resolveSlackChannelConfig } from "./policy-Bi92bs5t.js";
12
- import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, s as emitSlackMessageSentHooks, t as createSlackReplyDeliveryPlan } from "./replies-Dlxge48k.js";
10
+ import { C as stripSlackMentionsForCommandDetection, _ as readSessionUpdatedAt, b as resolveStorePath, c as recordInboundSession, d as resolveSlackCommandIngress, f as resolveSlackEffectiveAllowFrom, g as resolveSlackChatType, h as normalizeSlackChannelType, i as authorizeSlackDirectMessage, l as resolveConversationLabel$1, m as parseSlackAssistantThreadMetadata, p as buildSlackAssistantThreadMetadata, r as resolveSlackRoomContextHints, s as escapeSlackMrkdwn, u as authorizeSlackBotRoomMessage, v as resolveChannelContextVisibilityMode, x as updateLastRoute, y as resolveChannelResetConfig } from "./provider-BdoeWKr8.js";
11
+ import { n as resolveSlackChannelConfig } from "./policy-DAE6BTN3.js";
12
+ import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, s as emitSlackMessageSentHooks, t as createSlackReplyDeliveryPlan } from "./replies-D_G-EPr8.js";
13
13
  import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalLowercaseString, normalizeOptionalString, readStringValue } from "openclaw/plugin-sdk/string-coerce-runtime";
14
14
  import { resolveAgentRoute, resolveInboundLastRouteSessionKey, resolveThreadSessionKeys } from "openclaw/plugin-sdk/routing";
15
15
  import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, createChannelMessageReplyPipeline, createChannelProgressDraftGate, createDraftStreamLoop, defineFinalizableLivePreviewAdapter, deliverWithFinalizableLivePreviewAdapter, formatChannelProgressDraftText, isChannelProgressDraftWorkToolName, mergeChannelProgressDraftLine, resolveAgentOutboundIdentity, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelProgressDraftConfig, resolveChannelProgressDraftMaxLineChars, resolveChannelProgressDraftMaxLines, resolveChannelProgressDraftRender, resolveChannelStreamingBlockEnabled, resolveChannelStreamingNativeTransport, resolveChannelStreamingPreviewToolProgress, resolveChannelStreamingSuppressDefaultToolProgressMessages } from "openclaw/plugin-sdk/channel-outbound";
16
+ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
17
+ import { stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
16
18
  import { createHash } from "node:crypto";
17
19
  import { danger, logVerbose, shouldLogVerbose, sleep } from "openclaw/plugin-sdk/runtime-env";
18
20
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
19
21
  import { asDateTimestampMs, asFiniteNumberInRange, parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
20
22
  import { buildTtsSupplementMediaPayload, getReplyPayloadTtsSupplement, resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
21
- import { stripReasoningTagsFromText } from "openclaw/plugin-sdk/text-chunking";
22
23
  import { ensureConfiguredBindingRouteReady, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-runtime";
23
24
  import { createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
24
25
  import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
@@ -2030,11 +2031,7 @@ function toLintErrorObject(value, fallbackMessage) {
2030
2031
  const SLACK_MENTION_RESOLUTION_CONCURRENCY = 4;
2031
2032
  const SLACK_MENTION_RESOLUTION_MAX_LOOKUPS_PER_MESSAGE = 20;
2032
2033
  const SLACK_USER_MENTION_RE$1 = /<@([A-Z0-9]+)(?:\|[^>]+)?>/gi;
2033
- let slackMediaModulePromise$1;
2034
- function loadSlackMediaModule$1() {
2035
- slackMediaModulePromise$1 ??= import("./actions-OhnDIN4l.js").then((n) => n.h);
2036
- return slackMediaModulePromise$1;
2037
- }
2034
+ const loadSlackMediaModule$1 = createLazyRuntimeModule(() => import("./actions-CqRHPciJ.js").then((n) => n.h));
2038
2035
  function collectUniqueSlackMentionIds$1(texts) {
2039
2036
  const seen = /* @__PURE__ */ new Set();
2040
2037
  const mentionIds = [];
@@ -2544,12 +2541,20 @@ function formatSlackBotStarterThreadLabel(params) {
2544
2541
  }
2545
2542
  //#endregion
2546
2543
  //#region extensions/slack/src/monitor/message-handler/prepare-thread-context.ts
2547
- let slackMediaModulePromise;
2548
- function loadSlackMediaModule() {
2549
- slackMediaModulePromise ??= import("./actions-OhnDIN4l.js").then((n) => n.h);
2550
- return slackMediaModulePromise;
2551
- }
2544
+ const loadSlackMediaModule = createLazyRuntimeModule(() => import("./actions-CqRHPciJ.js").then((n) => n.h));
2552
2545
  const SLACK_THREAD_CONTEXT_USER_LOOKUP_CONCURRENCY = 4;
2546
+ function resolveSlackThreadSessionFreshness(params) {
2547
+ return params.ctx.channelRuntime?.session?.resolveEntryResetFreshness?.({
2548
+ storePath: params.storePath,
2549
+ sessionKey: params.sessionKey,
2550
+ sessionCfg: params.ctx.cfg.session,
2551
+ resetType: "thread",
2552
+ resetOverride: resolveChannelResetConfig({
2553
+ sessionCfg: params.ctx.cfg.session,
2554
+ channel: "slack"
2555
+ })
2556
+ });
2557
+ }
2553
2558
  function isSlackThreadContextSenderAllowed(params) {
2554
2559
  if (params.allowFromLower.length === 0 || params.botId) return true;
2555
2560
  if (!params.userId) return false;
@@ -2596,14 +2601,21 @@ async function resolveSlackThreadContextData(params) {
2596
2601
  let threadHistoryBody;
2597
2602
  let threadLabel;
2598
2603
  let threadStarterMedia = null;
2599
- const threadSessionPreviousTimestamp = params.isThreadReply && params.threadTs ? readSessionUpdatedAt({
2604
+ const threadSessionFreshness = params.isThreadReply && params.threadTs ? resolveSlackThreadSessionFreshness({
2605
+ ctx: params.ctx,
2606
+ storePath: params.storePath,
2607
+ sessionKey: params.sessionKey
2608
+ }) : void 0;
2609
+ const threadSessionPreviousTimestamp = params.isThreadReply && params.threadTs && !threadSessionFreshness ? readSessionUpdatedAt({
2600
2610
  storePath: params.storePath,
2601
2611
  sessionKey: params.sessionKey
2602
2612
  }) : void 0;
2613
+ const shouldSeedInitialThreadContext = Boolean(params.isThreadReply && params.threadTs && (threadSessionFreshness ? threadSessionFreshness.state !== "fresh" : threadSessionPreviousTimestamp === void 0));
2614
+ const shouldLoadInitialThreadHistory = shouldSeedInitialThreadContext || params.forceInitialHistory === true;
2603
2615
  if (!params.isThreadReply || !params.threadTs) return {
2604
2616
  threadStarterBody,
2605
2617
  threadHistoryBody,
2606
- threadSessionPreviousTimestamp,
2618
+ shouldSeedInitialThreadContext,
2607
2619
  threadLabel,
2608
2620
  threadStarterMedia
2609
2621
  };
@@ -2642,7 +2654,7 @@ async function resolveSlackThreadContextData(params) {
2642
2654
  } else threadLabel = `Slack thread ${params.roomLabel}`;
2643
2655
  const includeBotStarterAsRootContext = shouldIncludeBotThreadStarterContext({
2644
2656
  starterIsCurrentBot,
2645
- isNewThreadSession: !threadSessionPreviousTimestamp,
2657
+ isNewThreadSession: shouldSeedInitialThreadContext,
2646
2658
  hasStarterText: Boolean(starter?.text)
2647
2659
  });
2648
2660
  if (starter?.text && starterIsCurrentBot && !includeBotStarterAsRootContext) logVerbose("slack: omitted current-bot thread starter from context");
@@ -2655,7 +2667,7 @@ async function resolveSlackThreadContextData(params) {
2655
2667
  logVerbose("slack: retained current-bot thread starter as assistant root context");
2656
2668
  }
2657
2669
  const threadInitialHistoryLimit = params.account.config?.thread?.initialHistoryLimit ?? 20;
2658
- if (threadInitialHistoryLimit > 0 && (!threadSessionPreviousTimestamp || params.forceInitialHistory)) {
2670
+ if (threadInitialHistoryLimit > 0 && shouldLoadInitialThreadHistory) {
2659
2671
  const currentBotRootTs = starter?.ts ?? params.threadTs;
2660
2672
  const threadHistoryWithBotRoot = ensureSlackThreadHistoryHasBotRoot({
2661
2673
  history: await resolveSlackThreadHistory({
@@ -2740,7 +2752,7 @@ async function resolveSlackThreadContextData(params) {
2740
2752
  return {
2741
2753
  threadStarterBody,
2742
2754
  threadHistoryBody,
2743
- threadSessionPreviousTimestamp,
2755
+ shouldSeedInitialThreadContext,
2744
2756
  threadLabel,
2745
2757
  threadStarterMedia
2746
2758
  };
@@ -3517,7 +3529,7 @@ async function prepareSlackMessage(params) {
3517
3529
  channelInfo,
3518
3530
  channelConfig
3519
3531
  });
3520
- const { threadStarterBody, threadHistoryBody, threadSessionPreviousTimestamp, threadLabel, threadStarterMedia } = await resolveSlackThreadContextData({
3532
+ const { threadStarterBody, threadHistoryBody, shouldSeedInitialThreadContext, threadLabel, threadStarterMedia } = await resolveSlackThreadContextData({
3521
3533
  ctx,
3522
3534
  account,
3523
3535
  message,
@@ -3551,7 +3563,8 @@ async function prepareSlackMessage(params) {
3551
3563
  sender: {
3552
3564
  id: senderId,
3553
3565
  name: senderName,
3554
- displayLabel: senderName
3566
+ displayLabel: senderName,
3567
+ isBot: isBotMessage || void 0
3555
3568
  },
3556
3569
  conversation: {
3557
3570
  kind: chatType,
@@ -3595,7 +3608,7 @@ async function prepareSlackMessage(params) {
3595
3608
  media: toInboundMediaFacts(effectiveMedia),
3596
3609
  supplemental: {
3597
3610
  thread: {
3598
- starterBody: !directThreadRoutedToDmSession && !threadSessionPreviousTimestamp ? threadStarterBody : void 0,
3611
+ starterBody: !directThreadRoutedToDmSession && shouldSeedInitialThreadContext ? threadStarterBody : void 0,
3599
3612
  historyBody: supplementalThreadHistoryBody,
3600
3613
  label: directThreadRoutedToDmSession ? void 0 : threadLabel
3601
3614
  },
@@ -3609,7 +3622,7 @@ async function prepareSlackMessage(params) {
3609
3622
  SlackAssistantThreadContextChannelId: assistantThreadContext?.channelId,
3610
3623
  SlackAssistantThreadContextTeamId: assistantThreadContext?.teamId,
3611
3624
  SlackAssistantThreadContextEnterpriseId: assistantThreadContext?.enterpriseId ?? void 0,
3612
- IsFirstThreadTurn: isThreadReply && threadTs && !directThreadRoutedToDmSession && !threadSessionPreviousTimestamp ? true : void 0,
3625
+ IsFirstThreadTurn: isThreadReply && threadTs && !directThreadRoutedToDmSession && shouldSeedInitialThreadContext ? true : void 0,
3613
3626
  ...buildSlackMentionContextPayload({
3614
3627
  isRoomish,
3615
3628
  effectiveWasMentioned,
@@ -1,4 +1,4 @@
1
- import { f as normalizeSlackSlug } from "./reply-blocks-BT_sNsDQ.js";
1
+ import { f as normalizeSlackSlug } from "./reply-blocks-CfJqf7eq.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,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 { 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