@openclaw/slack 2026.5.14-beta.2 → 2026.5.16-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 (32) hide show
  1. package/dist/{action-runtime-CyE2jfW-.js → action-runtime-p39JLqwf.js} +1 -1
  2. package/dist/action-runtime.runtime-BzrPV3EA.js +2 -0
  3. package/dist/{actions-BibhOXpJ.js → actions-BCRbHv1Q.js} +3 -2
  4. package/dist/{actions.runtime-B9XQG6X4.js → actions.runtime-CpywQR3D.js} +1 -1
  5. package/dist/api.js +5 -5
  6. package/dist/{approval-handler.runtime-BjzVRaXN.js → approval-handler.runtime-DXrdRbkT.js} +1 -1
  7. package/dist/{channel-Dh07mU_K.js → channel-CVSopl66.js} +9 -9
  8. package/dist/channel-plugin-api.js +1 -1
  9. package/dist/{channel.setup-CmG37S2W.js → channel.setup-DknBgufI.js} +2 -2
  10. package/dist/inbound-contract-test-api.js +1 -1
  11. package/dist/{monitor-DDE5AI2O.js → monitor-CdVxsuHi.js} +2 -2
  12. package/dist/{outbound-adapter-BluPNDNi.js → outbound-adapter-CHm6e-0Q.js} +1 -1
  13. package/dist/outbound-payload-test-api.js +1 -1
  14. package/dist/{outbound-payload.test-harness-BNxnP6MC.js → outbound-payload.test-harness-C0CW7_CE.js} +1 -1
  15. package/dist/{pipeline.runtime-Dft2-QU4.js → pipeline.runtime-CakcaQh9.js} +113 -136
  16. package/dist/{prepare-D0tMg4dt.js → prepare-DSRUr44d.js} +220 -81
  17. package/dist/{provider-C6WxaFFf.js → provider-bKg1hkf5.js} +139 -7
  18. package/dist/{replies-D0QXXSPP.js → replies-Fg1T3ZzU.js} +2 -2
  19. package/dist/runtime-api.js +5 -5
  20. package/dist/{send-Dg9zcyYT.js → send-CxXFbqN1.js} +1 -1
  21. package/dist/send.runtime-BHCPpSj_.js +2 -0
  22. package/dist/send.runtime-CDG5AgU3.js +2 -0
  23. package/dist/{setup-core-WWQl-cE9.js → setup-core-B7pou7oe.js} +23 -22
  24. package/dist/setup-plugin-api.js +1 -1
  25. package/dist/{setup-surface-BLoTgna4.js → setup-surface-D6LLzeRz.js} +14 -13
  26. package/dist/{shared-GoB-OuUq.js → shared-7Vi9j4aV.js} +1 -1
  27. package/dist/{slash-dispatch.runtime-Bz_OkRcR.js → slash-dispatch.runtime-Cg7uU92H.js} +1 -1
  28. package/dist/test-api.js +5 -5
  29. package/package.json +6 -5
  30. package/dist/action-runtime.runtime-DLhfKw4B.js +0 -2
  31. package/dist/send.runtime-CjjQ9StM.js +0 -2
  32. package/dist/send.runtime-E47jGN-2.js +0 -2
@@ -28,7 +28,7 @@ function sameSlackChannelTarget(targetChannel, currentChannelId) {
28
28
  let slackActionsRuntimePromise;
29
29
  let slackAccountsRuntimePromise;
30
30
  function loadSlackActionsRuntime() {
31
- slackActionsRuntimePromise ??= import("./actions.runtime-B9XQG6X4.js");
31
+ slackActionsRuntimePromise ??= import("./actions.runtime-CpywQR3D.js");
32
32
  return slackActionsRuntimePromise;
33
33
  }
34
34
  function loadSlackAccountsRuntime() {
@@ -0,0 +1,2 @@
1
+ import { t as handleSlackAction } from "./action-runtime-p39JLqwf.js";
2
+ export { handleSlackAction };
@@ -2,7 +2,7 @@ import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
2
  import { a as resolveSlackAccount, d as resolveSlackBotToken } from "./accounts-yk5K3wQU.js";
3
3
  import { a as validateSlackBlocksArray, o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-As_dcNbD.js";
4
4
  import { a as getSlackWriteClient, r as createSlackWebClient } from "./client-C_IaJbi5.js";
5
- import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-Dg9zcyYT.js";
5
+ import { c as buildSlackBlocksFallbackText, t as sendMessageSlack } from "./send-CxXFbqN1.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";
@@ -173,7 +173,8 @@ function createSlackMediaRequest(url, token) {
173
173
  }
174
174
  function isMockedFetch(fetchImpl) {
175
175
  if (typeof fetchImpl !== "function") return false;
176
- return typeof fetchImpl.mock === "object";
176
+ const candidate = fetchImpl;
177
+ return candidate.mock !== void 0 || candidate._isMockFunction === true;
177
178
  }
178
179
  function createSlackMediaFetch() {
179
180
  return async (input, init) => {
@@ -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-BibhOXpJ.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-BCRbHv1Q.js";
2
2
  export { deleteSlackMessage, downloadSlackFile, editSlackMessage, getSlackMemberInfo, listSlackEmojis, listSlackPins, listSlackReactions, pinSlackMessage, reactSlackMessage, readSlackMessages, removeOwnSlackReactions, removeSlackReaction, sendSlackMessage, unpinSlackMessage };
package/dist/api.js CHANGED
@@ -2,7 +2,7 @@ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, l as resol
2
2
  import { t as inspectSlackAccount } from "./account-inspect-BJyQLSkN.js";
3
3
  import { i as resolveSlackChannelId, n as normalizeSlackMessagingTarget, r as parseSlackTarget, t as looksLikeSlackTargetId } from "./target-parsing-CQmv-iSm.js";
4
4
  import "./targets-B1tYCAr6.js";
5
- import { i as resolveSlackChannelType, n as buildSlackThreadingToolContext, o as resolveSlackAutoThreadId, r as __resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-Dh07mU_K.js";
5
+ import { i as resolveSlackChannelType, n as buildSlackThreadingToolContext, o as resolveSlackAutoThreadId, r as __resetSlackChannelTypeCacheForTest, t as slackPlugin } from "./channel-CVSopl66.js";
6
6
  import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-BFaJ_ejG.js";
7
7
  import { n as buildSlackPresentationBlocks, t as buildSlackInteractiveBlocks } from "./blocks-render-BAVfd6r0.js";
8
8
  import { a as validateSlackBlocksArray, i as parseSlackBlocksInput, r as SLACK_MAX_BLOCKS } from "./thread-ts-As_dcNbD.js";
@@ -10,12 +10,12 @@ import { n as extractSlackToolSend, r as listSlackMessageActions } from "./messa
10
10
  import { n as isSlackInteractiveRepliesEnabled, r as parseSlackOptionsLine, t as compileSlackInteractiveReplies } from "./interactive-replies-BSg5hXhj.js";
11
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-C_IaJbi5.js";
12
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-nwXs_eCP.js";
13
- import { t as slackSetupPlugin } from "./channel.setup-CmG37S2W.js";
14
- import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-Dg9zcyYT.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-BibhOXpJ.js";
13
+ import { t as slackSetupPlugin } from "./channel.setup-DknBgufI.js";
14
+ import { a as recordSlackThreadParticipation, n as clearSlackThreadParticipationCache, r as hasSlackThreadParticipation } from "./send-CxXFbqN1.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-BCRbHv1Q.js";
16
16
  import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-CMvFiswf.js";
17
17
  import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-D2cWOLZV.js";
18
18
  import { t as probeSlack } from "./probe-FL4sUJsH.js";
19
19
  import { t as collectSlackSecurityAuditFindings } from "./security-audit-BJzADAw3.js";
20
- import { n as resolveSlackRuntimeGroupPolicy } from "./provider-C6WxaFFf.js";
20
+ import { n as resolveSlackRuntimeGroupPolicy } from "./provider-bKg1hkf5.js";
21
21
  export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, __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 { c as normalizeSlackApproverId, s as isSlackExecApprovalClientEnabled, t as resolveSlackReplyBlocks, u as shouldHandleSlackExecApprovalRequest } from "./reply-blocks-BFaJ_ejG.js";
2
2
  import { s as truncateSlackText } from "./thread-ts-As_dcNbD.js";
3
- import { t as sendMessageSlack } from "./send-Dg9zcyYT.js";
3
+ import { t as sendMessageSlack } from "./send-CxXFbqN1.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";
@@ -9,8 +9,8 @@ import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveRepl
9
9
  import { d as PAIRING_APPROVED_MESSAGE, m as resolveConfiguredFromRequiredCredentialStatuses, p as projectCredentialSnapshotFields, r as createSlackWebClient, u as DEFAULT_ACCOUNT_ID } from "./client-C_IaJbi5.js";
10
10
  import { r as normalizeAllowListLower } from "./allow-list-nwXs_eCP.js";
11
11
  import { t as getOptionalSlackRuntime } from "./runtime-DQxkf7k2.js";
12
- import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-GoB-OuUq.js";
13
- import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-WWQl-cE9.js";
12
+ import { i as slackSecurityAdapter, n as isSlackPluginAccountConfigured, r as slackConfigAdapter, t as createSlackPluginBase } from "./shared-7Vi9j4aV.js";
13
+ import { i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, r as slackSetupAdapter } from "./setup-core-B7pou7oe.js";
14
14
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
15
15
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
16
16
  import { buildOutboundBaseSessionKey } from "openclaw/plugin-sdk/routing";
@@ -173,7 +173,7 @@ const slackApprovalCapability = createApproverRestrictedNativeApprovalCapability
173
173
  accountId,
174
174
  request
175
175
  }),
176
- load: async () => (await import("./approval-handler.runtime-BjzVRaXN.js")).slackApprovalNativeRuntime
176
+ load: async () => (await import("./approval-handler.runtime-DXrdRbkT.js")).slackApprovalNativeRuntime
177
177
  })
178
178
  });
179
179
  splitChannelApprovalCapability(slackApprovalCapability);
@@ -340,7 +340,7 @@ async function handleSlackMessageAction(params) {
340
340
  //#region extensions/slack/src/channel-actions.ts
341
341
  let slackActionRuntimePromise$1;
342
342
  async function loadSlackActionRuntime$1() {
343
- slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-DLhfKw4B.js");
343
+ slackActionRuntimePromise$1 ??= import("./action-runtime.runtime-BzrPV3EA.js");
344
344
  return await slackActionRuntimePromise$1;
345
345
  }
346
346
  function resolveSlackActionContext(params) {
@@ -464,9 +464,9 @@ const EXTENSION_SHARED_MODULE_ID = "openclaw/plugin-sdk/extension-shared";
464
464
  const TARGET_RESOLVER_RUNTIME_MODULE_ID = "openclaw/plugin-sdk/target-resolver-runtime";
465
465
  const loadExtensionSharedSdk = createLazyRuntimeModule(() => import(EXTENSION_SHARED_MODULE_ID));
466
466
  const loadTargetResolverRuntimeSdk = createLazyRuntimeModule(() => import(TARGET_RESOLVER_RUNTIME_MODULE_ID));
467
- const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-BLoTgna4.js"));
467
+ const loadSlackSetupSurfaceModule = createLazyRuntimeModule(() => import("./setup-surface-D6LLzeRz.js"));
468
468
  const loadSlackScopesModule = createLazyRuntimeModule(() => import("./scopes-Bvg_ZzqZ.js"));
469
- const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-BluPNDNi.js").then((n) => n.t));
469
+ const loadSlackOutboundAdapterModule = createLazyRuntimeModule(() => import("./outbound-adapter-CHm6e-0Q.js").then((n) => n.t));
470
470
  async function resolveSlackHandleAction() {
471
471
  return getOptionalSlackRuntime()?.channel?.slack?.handleSlackAction ?? (await loadSlackActionRuntime()).handleSlackAction;
472
472
  }
@@ -490,11 +490,11 @@ const loadSlackDirectoryConfigModule = createLazyRuntimeModule(() => import("./d
490
490
  const loadSlackResolveChannelsModule = createLazyRuntimeModule(() => import("./resolve-channels-B_eKaOkE.js").then((n) => n.n));
491
491
  const loadSlackResolveUsersModule = createLazyRuntimeModule(() => import("./resolve-users-BzBAJwvq.js").then((n) => n.n));
492
492
  async function loadSlackActionRuntime() {
493
- slackActionRuntimePromise ??= import("./action-runtime.runtime-DLhfKw4B.js");
493
+ slackActionRuntimePromise ??= import("./action-runtime.runtime-BzrPV3EA.js");
494
494
  return await slackActionRuntimePromise;
495
495
  }
496
496
  async function loadSlackSendRuntime() {
497
- slackSendRuntimePromise ??= import("./send.runtime-E47jGN-2.js");
497
+ slackSendRuntimePromise ??= import("./send.runtime-CDG5AgU3.js");
498
498
  return await slackSendRuntimePromise;
499
499
  }
500
500
  async function loadSlackProbeModule() {
@@ -502,7 +502,7 @@ async function loadSlackProbeModule() {
502
502
  return await slackProbeModulePromise;
503
503
  }
504
504
  async function loadSlackMonitorModule() {
505
- slackMonitorModulePromise ??= import("./monitor-DDE5AI2O.js").then((n) => n.t);
505
+ slackMonitorModulePromise ??= import("./monitor-CdVxsuHi.js").then((n) => n.t);
506
506
  return await slackMonitorModulePromise;
507
507
  }
508
508
  async function loadSlackDirectoryLiveModule() {
@@ -1,2 +1,2 @@
1
- import { t as slackPlugin } from "./channel-Dh07mU_K.js";
1
+ import { t as slackPlugin } from "./channel-CVSopl66.js";
2
2
  export { slackPlugin };
@@ -1,10 +1,10 @@
1
1
  import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds } from "./accounts-yk5K3wQU.js";
2
- import { a as describeSlackSetupAccount, i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, o as isSlackSetupAccountConfigured, r as slackSetupAdapter } from "./setup-core-WWQl-cE9.js";
2
+ import { a as describeSlackSetupAccount, i as SLACK_CHANNEL, n as createSlackSetupWizardProxy, o as isSlackSetupAccountConfigured, r as slackSetupAdapter } from "./setup-core-B7pou7oe.js";
3
3
  import { t as SlackChannelConfigSchema } from "./config-schema-CNRousxw.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-BLoTgna4.js")).slackSetupWizard }));
7
+ const slackSetupWizard = createSlackSetupWizardProxy(async () => ({ slackSetupWizard: (await import("./setup-surface-D6LLzeRz.js")).slackSetupWizard }));
8
8
  const slackSetupConfigAdapter = createScopedChannelConfigAdapter({
9
9
  sectionKey: SLACK_CHANNEL,
10
10
  listAccountIds: listSlackAccountIds,
@@ -1,3 +1,3 @@
1
- import { t as prepareSlackMessage } from "./prepare-D0tMg4dt.js";
1
+ import { t as prepareSlackMessage } from "./prepare-DSRUr44d.js";
2
2
  import { t as createInboundSlackTestContext } from "./prepare.test-helpers-CU1qB54Q.js";
3
3
  export { createInboundSlackTestContext, prepareSlackMessage };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-CiIaOW0V.js";
2
2
  import { D as buildSlackSlashCommandMatcher, p as isSlackChannelAllowedByPolicy } from "./room-context-Cd8jFpS-.js";
3
- import { t as monitorSlackProvider } from "./provider-C6WxaFFf.js";
4
- import { o as resolveSlackThreadTs } from "./replies-D0QXXSPP.js";
3
+ import { t as monitorSlackProvider } from "./provider-bKg1hkf5.js";
4
+ import { o as resolveSlackThreadTs } from "./replies-Fg1T3ZzU.js";
5
5
  //#region extensions/slack/src/monitor.ts
6
6
  var monitor_exports = /* @__PURE__ */ __exportAll({
7
7
  buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
@@ -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-E47jGN-2.js");
15
+ slackSendRuntimePromise ??= import("./send.runtime-CDG5AgU3.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-BNxnP6MC.js";
1
+ import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-C0CW7_CE.js";
2
2
  export { createSlackOutboundPayloadHarness };
@@ -1,4 +1,4 @@
1
- import { n as slackOutbound } from "./outbound-adapter-BluPNDNi.js";
1
+ import { n as slackOutbound } from "./outbound-adapter-CHm6e-0Q.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 = {
@@ -2,13 +2,13 @@ import { o as SLACK_TEXT_LIMIT, s as truncateSlackText } from "./thread-ts-As_dc
2
2
  import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-BSg5hXhj.js";
3
3
  import { i as normalizeSlackAllowOwnerEntry } from "./allow-list-nwXs_eCP.js";
4
4
  import { n as resolveSlackNativeStreaming, r as resolveSlackStreamingMode, t as mapStreamingModeToSlackLegacyDraftStreamMode } from "./streaming-compat-eu5Rj5gj.js";
5
- import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-Dg9zcyYT.js";
6
- import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-BibhOXpJ.js";
5
+ import { a as recordSlackThreadParticipation, s as normalizeSlackOutboundText, t as sendMessageSlack } from "./send-CxXFbqN1.js";
6
+ import { b as buildSlackEditTextPayload, f as removeSlackReaction, l as reactSlackMessage, r as editSlackMessage, t as deleteSlackMessage } from "./actions-BCRbHv1Q.js";
7
7
  import { t as formatSlackError } from "./errors-C_sW0Zgl.js";
8
8
  import { T as updateLastRoute, a as recordInboundSession, w as resolveStorePath } from "./room-context-Cd8jFpS-.js";
9
- import { r as escapeSlackMrkdwn } from "./provider-C6WxaFFf.js";
10
- import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-D0tMg4dt.js";
11
- import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-D0QXXSPP.js";
9
+ import { r as escapeSlackMrkdwn } from "./provider-bKg1hkf5.js";
10
+ import { n as resolveSlackThreadTargets, t as prepareSlackMessage } from "./prepare-DSRUr44d.js";
11
+ import { a as resolveDeliveredSlackReplyThreadTs, i as readSlackReplyBlocks, n as deliverReplies, o as resolveSlackThreadTs, t as createSlackReplyDeliveryPlan } from "./replies-Fg1T3ZzU.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";
@@ -16,12 +16,11 @@ import { buildChannelProgressDraftLine, buildChannelProgressDraftLineForEntry, c
16
16
  import { danger, logVerbose, shouldLogVerbose, sleep } from "openclaw/plugin-sdk/runtime-env";
17
17
  import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
18
18
  import { resolveSendableOutboundReplyParts } from "openclaw/plugin-sdk/reply-payload";
19
- import { clearHistoryEntriesIfEnabled } from "openclaw/plugin-sdk/reply-history";
20
19
  import { resolveHumanDelayConfig } from "openclaw/plugin-sdk/agent-runtime";
21
20
  import { mergePairLoopGuardConfig } from "openclaw/plugin-sdk/pair-loop-guard-runtime";
22
21
  import { resolvePinnedMainDmOwnerFromAllowlist } from "openclaw/plugin-sdk/security-runtime";
23
22
  import { DEFAULT_TIMING, createStatusReactionController, logAckFailure, logTypingFailure, removeAckReactionAfterReply } from "openclaw/plugin-sdk/channel-feedback";
24
- import { hasVisibleInboundReplyDispatch, runInboundReplyTurn } from "openclaw/plugin-sdk/inbound-reply-dispatch";
23
+ import { hasVisibleInboundReplyDispatch, runPreparedInboundReplyTurn } from "openclaw/plugin-sdk/inbound-reply-dispatch";
25
24
  import { resolveAgentOutboundIdentity } from "openclaw/plugin-sdk/outbound-runtime";
26
25
  import { createDraftStreamLoop } from "openclaw/plugin-sdk/channel-lifecycle";
27
26
  import { createReplyDispatcherWithTyping, dispatchInboundMessage, settleReplyDispatcher } from "openclaw/plugin-sdk/reply-runtime";
@@ -987,6 +986,7 @@ async function dispatchPreparedSlackMessage(prepared) {
987
986
  });
988
987
  }
989
988
  };
989
+ let draftPreviewCommitted = false;
990
990
  const { dispatcher, replyOptions, markDispatchIdle } = createReplyDispatcherWithTyping({
991
991
  ...replyPipeline,
992
992
  humanDelay: resolveHumanDelayConfig(cfg, route.agentId),
@@ -1005,7 +1005,7 @@ async function dispatchPreparedSlackMessage(prepared) {
1005
1005
  kind: info.kind,
1006
1006
  payload,
1007
1007
  adapter: defineFinalizableLivePreviewAdapter({
1008
- draft: draftStream ? {
1008
+ draft: draftStream && !draftPreviewCommitted ? {
1009
1009
  flush: draftStream.flush,
1010
1010
  clear: draftStream.clear,
1011
1011
  discardPending: draftStream.discardPending,
@@ -1045,6 +1045,7 @@ async function dispatchPreparedSlackMessage(prepared) {
1045
1045
  });
1046
1046
  },
1047
1047
  onPreviewFinalized: (_preview) => {
1048
+ draftPreviewCommitted = true;
1048
1049
  const finalThreadTs = usedReplyThreadTs ?? statusThreadTs;
1049
1050
  observedReplyDelivery = true;
1050
1051
  replyPlan.markSent();
@@ -1199,127 +1200,113 @@ async function dispatchPreparedSlackMessage(prepared) {
1199
1200
  let counts = {};
1200
1201
  let dispatchSettledBeforeStart = false;
1201
1202
  try {
1202
- const turnResult = await runInboundReplyTurn({
1203
+ const turnResult = await runPreparedInboundReplyTurn({
1203
1204
  channel: "slack",
1204
1205
  accountId: route.accountId,
1205
- raw: prepared.message,
1206
- adapter: {
1207
- ingest: () => ({
1208
- id: prepared.message.ts ?? `${prepared.ctxPayload.From}:${Date.now()}`,
1209
- timestamp: prepared.message.ts ? Number(prepared.message.ts) * 1e3 : void 0,
1210
- rawText: prepared.ctxPayload.RawBody ?? "",
1211
- textForAgent: prepared.ctxPayload.BodyForAgent,
1212
- textForCommands: prepared.ctxPayload.CommandBody,
1213
- raw: prepared.message
1214
- }),
1215
- resolveTurn: () => ({
1216
- channel: "slack",
1217
- accountId: route.accountId,
1218
- routeSessionKey: route.sessionKey,
1219
- storePath: prepared.turn.storePath,
1220
- ctxPayload: prepared.ctxPayload,
1221
- recordInboundSession,
1222
- record: prepared.turn.record,
1223
- botLoopProtection: resolveSlackBotLoopProtection(prepared),
1224
- onPreDispatchFailure: async () => {
1225
- dispatchSettledBeforeStart = true;
1226
- await settleReplyDispatcher({
1227
- dispatcher,
1228
- onSettled: () => markDispatchIdle()
1229
- });
1206
+ routeSessionKey: route.sessionKey,
1207
+ storePath: prepared.turn.storePath,
1208
+ ctxPayload: prepared.ctxPayload,
1209
+ recordInboundSession,
1210
+ record: prepared.turn.record,
1211
+ history: prepared.turn.history,
1212
+ botLoopProtection: resolveSlackBotLoopProtection(prepared),
1213
+ onPreDispatchFailure: async () => {
1214
+ dispatchSettledBeforeStart = true;
1215
+ await settleReplyDispatcher({
1216
+ dispatcher,
1217
+ onSettled: () => markDispatchIdle()
1218
+ });
1219
+ },
1220
+ runDispatch: () => dispatchInboundMessage({
1221
+ ctx: prepared.ctxPayload,
1222
+ cfg,
1223
+ dispatcher,
1224
+ replyOptions: {
1225
+ ...replyOptions,
1226
+ skillFilter: prepared.channelConfig?.skills,
1227
+ sourceReplyDeliveryMode,
1228
+ hasRepliedRef,
1229
+ disableBlockStreaming,
1230
+ onModelSelected,
1231
+ suppressDefaultToolProgressMessages: suppressDefaultToolProgressMessages ? true : void 0,
1232
+ onPartialReply: useStreaming ? void 0 : !previewStreamingEnabled ? void 0 : async (payload) => {
1233
+ updateDraftFromPartial(payload.text);
1230
1234
  },
1231
- runDispatch: () => dispatchInboundMessage({
1232
- ctx: prepared.ctxPayload,
1233
- cfg,
1234
- dispatcher,
1235
- replyOptions: {
1236
- ...replyOptions,
1237
- skillFilter: prepared.channelConfig?.skills,
1238
- sourceReplyDeliveryMode,
1239
- hasRepliedRef,
1240
- disableBlockStreaming,
1241
- onModelSelected,
1242
- suppressDefaultToolProgressMessages: suppressDefaultToolProgressMessages ? true : void 0,
1243
- onPartialReply: useStreaming ? void 0 : !previewStreamingEnabled ? void 0 : async (payload) => {
1244
- updateDraftFromPartial(payload.text);
1245
- },
1246
- onAssistantMessageStart: onDraftBoundary,
1247
- onReasoningEnd: onDraftBoundary,
1248
- onReasoningStream: statusReactionsEnabled ? async () => {
1249
- await statusReactions.setThinking();
1250
- } : void 0,
1251
- onToolStart: async (payload) => {
1252
- if (statusReactionsEnabled) await statusReactions.setTool(payload.name);
1253
- await pushPreviewToolProgress(buildChannelProgressDraftLineForEntry(account.config, {
1254
- event: "tool",
1255
- name: payload.name,
1256
- phase: payload.phase,
1257
- args: payload.args
1258
- }, payload.detailMode ? { detailMode: payload.detailMode } : void 0), { toolName: payload.name });
1259
- },
1260
- onItemEvent: async (payload) => {
1261
- await pushPreviewToolProgress(buildChannelProgressDraftLineForEntry(account.config, {
1262
- event: "item",
1263
- itemId: payload.itemId,
1264
- itemKind: payload.kind,
1265
- title: payload.title,
1266
- name: payload.name,
1267
- phase: payload.phase,
1268
- status: payload.status,
1269
- summary: payload.summary,
1270
- progressText: payload.progressText,
1271
- meta: payload.meta
1272
- }));
1273
- },
1274
- onPlanUpdate: async (payload) => {
1275
- if (payload.phase !== "update") return;
1276
- await pushPreviewToolProgress(buildChannelProgressDraftLine({
1277
- event: "plan",
1278
- phase: payload.phase,
1279
- title: payload.title,
1280
- explanation: payload.explanation,
1281
- steps: payload.steps
1282
- }));
1283
- },
1284
- onApprovalEvent: async (payload) => {
1285
- if (payload.phase !== "requested") return;
1286
- await pushPreviewToolProgress(buildChannelProgressDraftLine({
1287
- event: "approval",
1288
- phase: payload.phase,
1289
- title: payload.title,
1290
- command: payload.command,
1291
- reason: payload.reason,
1292
- message: payload.message
1293
- }));
1294
- },
1295
- onCommandOutput: async (payload) => {
1296
- if (payload.phase !== "end") return;
1297
- await pushPreviewToolProgress(buildChannelProgressDraftLine({
1298
- event: "command-output",
1299
- phase: payload.phase,
1300
- title: payload.title,
1301
- name: payload.name,
1302
- status: payload.status,
1303
- exitCode: payload.exitCode
1304
- }));
1305
- },
1306
- onPatchSummary: async (payload) => {
1307
- if (payload.phase !== "end") return;
1308
- await pushPreviewToolProgress(buildChannelProgressDraftLine({
1309
- event: "patch",
1310
- phase: payload.phase,
1311
- title: payload.title,
1312
- name: payload.name,
1313
- added: payload.added,
1314
- modified: payload.modified,
1315
- deleted: payload.deleted,
1316
- summary: payload.summary
1317
- }));
1318
- }
1319
- }
1320
- })
1321
- })
1322
- }
1235
+ onAssistantMessageStart: onDraftBoundary,
1236
+ onReasoningEnd: onDraftBoundary,
1237
+ onReasoningStream: statusReactionsEnabled ? async () => {
1238
+ await statusReactions.setThinking();
1239
+ } : void 0,
1240
+ onToolStart: async (payload) => {
1241
+ if (statusReactionsEnabled) await statusReactions.setTool(payload.name);
1242
+ await pushPreviewToolProgress(buildChannelProgressDraftLineForEntry(account.config, {
1243
+ event: "tool",
1244
+ name: payload.name,
1245
+ phase: payload.phase,
1246
+ args: payload.args
1247
+ }, payload.detailMode ? { detailMode: payload.detailMode } : void 0), { toolName: payload.name });
1248
+ },
1249
+ onItemEvent: async (payload) => {
1250
+ await pushPreviewToolProgress(buildChannelProgressDraftLineForEntry(account.config, {
1251
+ event: "item",
1252
+ itemId: payload.itemId,
1253
+ itemKind: payload.kind,
1254
+ title: payload.title,
1255
+ name: payload.name,
1256
+ phase: payload.phase,
1257
+ status: payload.status,
1258
+ summary: payload.summary,
1259
+ progressText: payload.progressText,
1260
+ meta: payload.meta
1261
+ }));
1262
+ },
1263
+ onPlanUpdate: async (payload) => {
1264
+ if (payload.phase !== "update") return;
1265
+ await pushPreviewToolProgress(buildChannelProgressDraftLine({
1266
+ event: "plan",
1267
+ phase: payload.phase,
1268
+ title: payload.title,
1269
+ explanation: payload.explanation,
1270
+ steps: payload.steps
1271
+ }));
1272
+ },
1273
+ onApprovalEvent: async (payload) => {
1274
+ if (payload.phase !== "requested") return;
1275
+ await pushPreviewToolProgress(buildChannelProgressDraftLine({
1276
+ event: "approval",
1277
+ phase: payload.phase,
1278
+ title: payload.title,
1279
+ command: payload.command,
1280
+ reason: payload.reason,
1281
+ message: payload.message
1282
+ }));
1283
+ },
1284
+ onCommandOutput: async (payload) => {
1285
+ if (payload.phase !== "end") return;
1286
+ await pushPreviewToolProgress(buildChannelProgressDraftLine({
1287
+ event: "command-output",
1288
+ phase: payload.phase,
1289
+ title: payload.title,
1290
+ name: payload.name,
1291
+ status: payload.status,
1292
+ exitCode: payload.exitCode
1293
+ }));
1294
+ },
1295
+ onPatchSummary: async (payload) => {
1296
+ if (payload.phase !== "end") return;
1297
+ await pushPreviewToolProgress(buildChannelProgressDraftLine({
1298
+ event: "patch",
1299
+ phase: payload.phase,
1300
+ title: payload.title,
1301
+ name: payload.name,
1302
+ added: payload.added,
1303
+ modified: payload.modified,
1304
+ deleted: payload.deleted,
1305
+ summary: payload.summary
1306
+ }));
1307
+ }
1308
+ }
1309
+ })
1323
1310
  });
1324
1311
  if (turnResult.dispatched) {
1325
1312
  const result = turnResult.dispatchResult;
@@ -1367,11 +1354,6 @@ async function dispatchPreparedSlackMessage(prepared) {
1367
1354
  if (anyReplyDelivered && participationThreadTs) recordSlackThreadParticipation(account.accountId, message.channel, participationThreadTs, { agentId: route.agentId });
1368
1355
  if (!anyReplyDelivered) {
1369
1356
  await draftStream?.clear();
1370
- if (prepared.isRoomish && prepared.requireMention) clearHistoryEntriesIfEnabled({
1371
- historyMap: ctx.channelHistories,
1372
- historyKey: prepared.historyKey,
1373
- limit: ctx.historyLimit
1374
- });
1375
1357
  return;
1376
1358
  }
1377
1359
  if (shouldLogVerbose()) {
@@ -1395,11 +1377,6 @@ async function dispatchPreparedSlackMessage(prepared) {
1395
1377
  });
1396
1378
  }
1397
1379
  });
1398
- if (prepared.isRoomish && prepared.requireMention) clearHistoryEntriesIfEnabled({
1399
- historyMap: ctx.channelHistories,
1400
- historyKey: prepared.historyKey,
1401
- limit: ctx.historyLimit
1402
- });
1403
1380
  }
1404
1381
  //#endregion
1405
1382
  export { dispatchPreparedSlackMessage, prepareSlackMessage };