@openclaw/slack 2026.9.1-beta.1 → 2026.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/{account-inspect-CN2hBsim.js → account-inspect-C3sePHWa.js} +3 -3
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{action-runtime-BoSeX09X.js → action-runtime-DND4Pyp2.js} +84 -66
  4. package/dist/action-runtime.runtime-CEhbmS-Z.js +2 -0
  5. package/dist/{actions-XdQyjG_p.js → actions-fh66A6lc.js} +198 -54
  6. package/dist/api.js +14 -14
  7. package/dist/{approval-handler.runtime-DxXfGX_Z.js → approval-handler.runtime-D7d8sKM0.js} +18 -12
  8. package/dist/{channel-C_vnTgxo.js → channel-4m8IAdMD.js} +70 -128
  9. package/dist/channel-config-api.js +1 -1
  10. package/dist/channel-plugin-api.js +1 -1
  11. package/dist/{channel-type-j-2lalcC.js → channel-type-3-SqEMVc.js} +2 -2
  12. package/dist/{channel.setup-aal8tokM.js → channel.setup-t_ghLGb_.js} +23 -22
  13. package/dist/{config-schema-CN3XZRX5.js → config-schema-bP3eV2ra.js} +25 -16
  14. package/dist/{conversation-binding-route-DFVLUdYF.js → conversation-binding-route-Vee8Dgbf.js} +2 -2
  15. package/dist/{cursor-pages-eX7p8Wwt.js → cursor-pages-ByFwo-Py.js} +7 -1
  16. package/dist/{directory-config-DqfQ42OV.js → directory-config-Bmw4ykSy.js} +4 -3
  17. package/dist/directory-contract-api.js +1 -1
  18. package/dist/{directory-live-lC6X_Ru-.js → directory-live-q32AW7N1.js} +3 -8
  19. package/dist/{doctor-contract-BAy7-EUQ.js → doctor-contract-BNjw9bxb.js} +5 -4
  20. package/dist/doctor-contract-api.js +1 -1
  21. package/dist/{group-policy-CU1tEGpS.js → group-policy-BKjMqT-8.js} +161 -260
  22. package/dist/{message-tool-api-CWosHSi5.js → message-tool-api-uNEfQYGY.js} +19 -2
  23. package/dist/message-tool-api.js +1 -1
  24. package/dist/{monitor-DrNCGneD.js → monitor-Chwu_SiZ.js} +3 -3
  25. package/dist/{outbound-adapter-DkT2vUE9.js → outbound-adapter-BB8wAjm5.js} +95 -91
  26. package/dist/{pipeline.runtime-CRRng_Nw.js → pipeline.runtime-BklS_NEj.js} +347 -505
  27. package/dist/{policy-BoP6t88v.js → policy-D7PKkiet.js} +7 -4
  28. package/dist/{probe-4_aHtVT3.js → probe-gj5yQgN2.js} +210 -3
  29. package/dist/{provider-D4nDgxCh.js → provider-Do50wMWn.js} +168 -153
  30. package/dist/{relay-source-CEmze11m.js → relay-source-DWuduiJ2.js} +6 -4
  31. package/dist/{replies-D9XMM_S0.js → replies-Dc6WVh_Q.js} +20 -16
  32. package/dist/{resolve-channels-DSamDgVs.js → resolve-channels-CU7Bg5Ka.js} +6 -10
  33. package/dist/{resolve-users-CIzwbaJR.js → resolve-users-DrhttvRQ.js} +5 -4
  34. package/dist/runtime-api.js +10 -10
  35. package/dist/{scopes-BBrUzpBH.js → scopes-B9HRguDe.js} +1 -1
  36. package/dist/{send-DtjEnlLh.js → send-Djswy6lf.js} +24 -16
  37. package/dist/send-results-eeOu_HYm.js +23 -0
  38. package/dist/{send.runtime-DQeNKa2J.js → send.runtime-__WVTWLQ.js} +1 -1
  39. package/dist/setup-plugin-api.js +1 -1
  40. package/dist/{setup-surface-CsBCM4rP.js → setup-surface-DO0e-MMS.js} +5 -5
  41. package/dist/{shared-D9GeeR9K.js → shared-DEQBEKBL.js} +7 -5
  42. package/dist/{slash-dispatch.runtime-Chr3YHnT.js → slash-dispatch.runtime-C3B4h5ZM.js} +2 -2
  43. package/dist/{target-parsing-BnMD2ZqZ.js → target-parsing-PbxGDbr9.js} +11 -6
  44. package/dist/{targets-Cx5W_n3W.js → targets-7FexXJ62.js} +1 -1
  45. package/dist/{thread-ts-DUGhaYKq.js → thread-ts-CukseRVL.js} +5 -1
  46. package/node_modules/@slack/bolt/node_modules/negotiator/lib/accept.js +54 -0
  47. package/node_modules/@slack/bolt/node_modules/negotiator/lib/charset.js +10 -34
  48. package/node_modules/@slack/bolt/node_modules/negotiator/lib/encoding.js +9 -30
  49. package/node_modules/@slack/bolt/node_modules/negotiator/lib/language.js +15 -36
  50. package/node_modules/@slack/bolt/node_modules/negotiator/lib/mediaType.js +16 -134
  51. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/LICENSE +22 -0
  52. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/README.md +71 -0
  53. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.d.ts +46 -0
  54. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.js +176 -0
  55. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/dist/index.js.map +1 -0
  56. package/node_modules/@slack/bolt/node_modules/negotiator/node_modules/content-type/package.json +52 -0
  57. package/node_modules/@slack/bolt/node_modules/negotiator/package.json +16 -10
  58. package/node_modules/typebox/build/format/email.mjs +1 -1
  59. package/node_modules/typebox/build/format/idna/idn-hostname.mjs +19 -1
  60. package/node_modules/typebox/package.json +1 -1
  61. package/openclaw.plugin.json +15 -7
  62. package/package.json +5 -5
  63. package/dist/action-runtime.runtime-Dpa16J87.js +0 -2
  64. package/dist/slack-client-kind-hSfjXyUM.js +0 -94
  65. package/node_modules/@slack/bolt/node_modules/negotiator/HISTORY.md +0 -114
@@ -1,6 +1,6 @@
1
1
  import { n as listSlackAccountIds } from "./accounts-Dm_H77gH.js";
2
- import { t as inspectSlackAccount } from "./account-inspect-CN2hBsim.js";
3
- import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
2
+ import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
3
+ import { r as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-CukseRVL.js";
4
4
  import { createActionGate } from "openclaw/plugin-sdk/channel-actions";
5
5
  import { extractToolSend } from "openclaw/plugin-sdk/tool-send";
6
6
  import { Type } from "typebox";
@@ -24,6 +24,7 @@ function listSlackMessageActions(cfg, accountId) {
24
24
  actions.add("reactions");
25
25
  }
26
26
  if (isActionEnabled("messages")) {
27
+ actions.add("conversation-open");
27
28
  actions.add("read");
28
29
  actions.add("edit");
29
30
  actions.add("delete");
@@ -106,6 +107,22 @@ function describeSlackMessageTool({ cfg, accountId }) {
106
107
  const actions = listSlackMessageActions(cfg, accountId);
107
108
  const capabilities = /* @__PURE__ */ new Set();
108
109
  const schema = [];
110
+ if (actions.includes("conversation-open")) schema.push({
111
+ actions: ["conversation-open"],
112
+ visibility: "all-configured",
113
+ properties: {
114
+ userIds: Type.Optional(Type.Array(Type.String({ pattern: "^[UW][A-Z0-9]+$" }), {
115
+ minItems: 1,
116
+ maxItems: 8,
117
+ uniqueItems: true,
118
+ description: "Slack conversation-open: 1-8 other member IDs. One opens a DM; multiple open or reuse a group DM. Exclude the calling account. Use the returned target with action=\"send\"."
119
+ })),
120
+ teamId: Type.Optional(Type.String({
121
+ pattern: "^T[A-Z0-9]+$",
122
+ description: "Slack workspace for conversation-open. Defaults to the trusted current workspace for the selected account; required for detached Enterprise operations."
123
+ }))
124
+ }
125
+ });
109
126
  if (actions.includes("send")) capabilities.add("presentation");
110
127
  if (actions.includes("download-file")) schema.push({
111
128
  properties: createSlackFileActionSchema(),
@@ -1,2 +1,2 @@
1
- import { t as describeSlackMessageTool } from "./message-tool-api-CWosHSi5.js";
1
+ import { t as describeSlackMessageTool } from "./message-tool-api-uNEfQYGY.js";
2
2
  export { describeSlackMessageTool as describeMessageTool };
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-D4nDgxCh.js";
3
- import { t as isSlackChannelAllowedByPolicy } from "./policy-BoP6t88v.js";
4
- import { o as resolveSlackThreadTs } from "./replies-D9XMM_S0.js";
2
+ import { T as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-Do50wMWn.js";
3
+ import { t as isSlackChannelAllowedByPolicy } from "./policy-D7PKkiet.js";
4
+ import { a as resolveSlackThreadTs } from "./replies-Dc6WVh_Q.js";
5
5
  //#region extensions/slack/src/monitor.ts
6
6
  var monitor_exports = /* @__PURE__ */ __exportAll({
7
7
  buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
@@ -1,24 +1,26 @@
1
- import { a as parseSlackTarget } from "./target-parsing-BnMD2ZqZ.js";
2
- import { B as SLACK_TEXT_LIMIT, I as resolveSlackAuthoredTextPlacement, ct as escapeSlackMrkdwn, dt as SLACK_PRESENTATION_CAPABILITIES, q as SLACK_QUESTION_FINALIZATION_BLOCKS, tt as resolveSlackQuestionActionIds, v as parseSlackReplyBlockSegments, x as resolveSlackReplyDeliveryMessages, y as resolveSlackReplyBlockResolution } from "./group-policy-CU1tEGpS.js";
3
- import { n as resolveSlackThreadTsValue } from "./thread-ts-DUGhaYKq.js";
1
+ import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
2
+ import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.js";
3
+ import { M as SLACK_TEXT_LIMIT, O as resolveSlackAuthoredTextPlacement, c as assertSlackDetachedTargetAllowed, d as resolveSlackReplyBlockResolution, et as escapeSlackMrkdwn, p as resolveSlackReplyDeliveryMessages, q as resolveSlackQuestionActionIds, rt as SLACK_PRESENTATION_CAPABILITIES, u as parseSlackReplyBlockSegments, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-BKjMqT-8.js";
4
+ import { r as resolveSlackThreadTsValue } from "./thread-ts-CukseRVL.js";
5
+ import { t as mergeSlackSendResults } from "./send-results-eeOu_HYm.js";
4
6
  import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
- import { createMessageReceiptFromOutboundResults, resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
7
+ import { resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
6
8
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
7
9
  import { normalizeMessagePresentation, resolveLegacyInteractiveTextFallback } from "openclaw/plugin-sdk/interactive-runtime";
10
+ import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
8
11
  import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
9
12
  import { createHmac, randomBytes, timingSafeEqual } from "node:crypto";
10
- import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
11
- import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
13
+ import { attachChannelToResult } from "openclaw/plugin-sdk/channel-send-result";
12
14
  //#region extensions/slack/src/outbound-adapter.ts
13
15
  function toSlackOutboundResult(result) {
14
16
  const { channelId, ...delivery } = result;
15
- return channelId === void 0 ? delivery : {
17
+ return attachChannelToResult("slack", channelId === void 0 ? delivery : {
16
18
  ...delivery,
17
19
  target: {
18
20
  kind: "channel",
19
21
  id: channelId
20
22
  }
21
- };
23
+ });
22
24
  }
23
25
  const SLACK_RENDERED_PRESENTATION_PROVENANCE_KEY = randomBytes(32);
24
26
  function createSlackRenderedPresentationProvenance(resolution) {
@@ -49,7 +51,7 @@ function readSlackRenderedPresentation(slackData) {
49
51
  return;
50
52
  }
51
53
  }
52
- const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-DQeNKa2J.js"));
54
+ const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-__WVTWLQ.js"));
53
55
  function resolveSlackSendIdentity(identity) {
54
56
  if (!identity) return;
55
57
  const username = normalizeOptionalString(identity.name);
@@ -97,43 +99,45 @@ function withSlackRenderedPresentation(payload, slackData, resolution) {
97
99
  function readSlackAuthoredTextPlacement(value) {
98
100
  return value === "none" || value === "blocks" || value === "outside-blocks" ? value : void 0;
99
101
  }
100
- async function sendSlackOutboundMessage(params) {
101
- const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
102
- const slackIdentity = resolveSlackSendIdentity(params.identity);
103
- const threadTs = resolveSlackThreadTsValue({
104
- replyToId: params.replyToId,
105
- threadId: params.threadId
102
+ async function prepareSlackOutboundSend(ctx) {
103
+ const account = resolveSlackAccount({
104
+ cfg: ctx.cfg,
105
+ accountId: ctx.accountId
106
106
  });
107
- const sendOptions = {
108
- cfg: params.cfg,
109
- threadTs,
110
- accountId: params.accountId ?? void 0,
111
- ...params.mediaUrl ? {
112
- mediaUrl: params.mediaUrl,
113
- mediaAccess: params.mediaAccess,
114
- mediaLocalRoots: params.mediaLocalRoots,
115
- mediaReadFile: params.mediaReadFile,
116
- ...params.forceDocument ? { forceDocument: true } : {}
117
- } : {},
118
- ...params.blocks ? { blocks: params.blocks } : {},
119
- ...params.authoredTextPlacement ? { authoredTextPlacement: params.authoredTextPlacement } : {},
120
- ...Object.hasOwn(params, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: params.nativeDataFallbackBaseText } : {},
121
- ...params.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
122
- ...slackIdentity ? { identity: slackIdentity } : {},
123
- ...params.deliveryQueueId ? { deliveryQueueId: params.deliveryQueueId } : {},
124
- ...params.onPlatformSendDispatch ? { onPlatformSendDispatch: params.onPlatformSendDispatch } : {},
125
- ...params.onDeliveryResult ? { onDeliveryResult: async (progress) => {
126
- await params.onDeliveryResult?.(attachChannelToResult("slack", toSlackOutboundResult(progress)));
127
- } } : {}
107
+ const target = parseSlackTarget(ctx.to, { defaultKind: "channel" });
108
+ assertSlackDetachedTargetAllowed(account.accountId, target?.teamId);
109
+ const send = resolveOutboundSendDep(ctx.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
110
+ const token = resolveSlackOperationToken(account, "write");
111
+ const botToken = account.botToken?.trim();
112
+ const tokenOverride = token && token !== botToken ? token : void 0;
113
+ return async (params) => {
114
+ const slackIdentity = resolveSlackSendIdentity(params.identity);
115
+ const threadTs = resolveSlackThreadTsValue(params);
116
+ const sendOptions = {
117
+ cfg: params.cfg,
118
+ ...tokenOverride ? { token: tokenOverride } : {},
119
+ threadTs,
120
+ accountId: params.accountId ?? void 0,
121
+ ...params.mediaUrl ? {
122
+ mediaUrl: params.mediaUrl,
123
+ mediaAccess: params.mediaAccess,
124
+ mediaLocalRoots: params.mediaLocalRoots,
125
+ mediaReadFile: params.mediaReadFile,
126
+ ...params.forceDocument ? { forceDocument: true } : {}
127
+ } : {},
128
+ ...params.blocks ? { blocks: params.blocks } : {},
129
+ ...params.authoredTextPlacement ? { authoredTextPlacement: params.authoredTextPlacement } : {},
130
+ ...Object.hasOwn(params, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: params.nativeDataFallbackBaseText } : {},
131
+ ...params.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
132
+ ...slackIdentity ? { identity: slackIdentity } : {},
133
+ ...params.deliveryQueueId ? { deliveryQueueId: params.deliveryQueueId } : {},
134
+ ...params.onPlatformSendDispatch ? { onPlatformSendDispatch: params.onPlatformSendDispatch } : {},
135
+ ...params.onDeliveryResult ? { onDeliveryResult: async (progress) => {
136
+ await params.onDeliveryResult?.(toSlackOutboundResult(progress));
137
+ } } : {}
138
+ };
139
+ return await send(params.to, params.text, sendOptions);
128
140
  };
129
- return await send(params.to, params.text, sendOptions);
130
- }
131
- function createSlackAttachedSendAdapter() {
132
- return createAttachedChannelResultAdapter({
133
- channel: "slack",
134
- sendText: async (ctx) => toSlackOutboundResult(await sendSlackOutboundMessage(ctx)),
135
- sendMedia: async (ctx) => toSlackOutboundResult(await sendSlackOutboundMessage(ctx))
136
- });
137
141
  }
138
142
  const slackOutbound = {
139
143
  deliveryMode: "direct",
@@ -146,11 +150,19 @@ const slackOutbound = {
146
150
  return resolution.segments.length > 0 ? withSlackRenderedPresentation(payload, slackData, resolution) : null;
147
151
  },
148
152
  sendPayload: async (ctx) => {
153
+ const send = await prepareSlackOutboundSend(ctx);
154
+ const { mediaUrl: _mediaUrl, ...commonCtx } = ctx;
155
+ const preparedCtx = {
156
+ ...commonCtx,
157
+ replyToId: resolveSlackThreadTsValue(ctx),
158
+ threadId: null,
159
+ deliveryQueueId: void 0
160
+ };
149
161
  const payload = {
150
- ...ctx.payload,
162
+ ...preparedCtx.payload,
151
163
  text: resolveLegacyInteractiveTextFallback({
152
- text: ctx.payload.text,
153
- interactive: ctx.payload.interactive
164
+ text: preparedCtx.payload.text,
165
+ interactive: preparedCtx.payload.interactive
154
166
  }) ?? ""
155
167
  };
156
168
  const slackData = payload.channelData?.slack;
@@ -158,66 +170,50 @@ const slackOutbound = {
158
170
  let resolution;
159
171
  if (renderedResolution) resolution = renderedResolution;
160
172
  else resolution = resolveSlackOutboundBlockResolution(payload);
161
- if (resolution.segments.length === 0) return await sendTextMediaPayload({
162
- channel: "slack",
163
- ctx: {
164
- ...ctx,
165
- payload
166
- },
167
- adapter: slackOutbound
168
- });
173
+ if (resolution.segments.length === 0) {
174
+ const sendPart = async (part) => toSlackOutboundResult(await send(part));
175
+ return await sendTextMediaPayload({
176
+ channel: "slack",
177
+ ctx: {
178
+ ...preparedCtx,
179
+ payload
180
+ },
181
+ adapter: {
182
+ sendText: sendPart,
183
+ sendMedia: sendPart
184
+ }
185
+ });
186
+ }
169
187
  const mediaUrls = resolvePayloadMediaUrls(payload);
170
188
  const deliveryMessages = resolveSlackReplyDeliveryMessages({
171
189
  authoredTextPlacement: resolution.authoredTextPlacement,
172
190
  segments: resolution.segments,
173
191
  text: payload.text
174
192
  });
175
- const useSingleDeliveryMarker = mediaUrls.length === 0 && deliveryMessages.length === 1;
176
193
  const sentResults = [];
177
- return attachChannelToResult("slack", toSlackOutboundResult(await sendPayloadMediaSequenceAndFinalize({
194
+ return toSlackOutboundResult(await sendPayloadMediaSequenceAndFinalize({
178
195
  text: "",
179
196
  mediaUrls,
180
- send: async ({ text, mediaUrl }) => await sendSlackOutboundMessage({
181
- ...ctx,
197
+ send: async ({ text, mediaUrl }) => await send({
198
+ ...preparedCtx,
182
199
  text,
183
- mediaUrl,
184
- deliveryQueueId: useSingleDeliveryMarker ? ctx.deliveryQueueId : void 0
200
+ mediaUrl
185
201
  }),
186
202
  onResult: (result) => {
187
203
  sentResults.push(result);
188
204
  },
189
205
  finalize: async () => {
190
- let lastResult;
191
- for (const message of deliveryMessages) {
192
- lastResult = await sendSlackOutboundMessage({
193
- ...ctx,
194
- text: message.text,
195
- ...message.blocks ? { blocks: message.blocks } : {},
196
- ...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
197
- ...message.nativeDataFallbackBaseText ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
198
- ...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
199
- deliveryQueueId: useSingleDeliveryMarker ? ctx.deliveryQueueId : void 0
200
- });
201
- sentResults.push(lastResult);
202
- }
203
- if (!lastResult) throw new Error("Slack rendered presentation produced no deliverable segment");
204
- if (sentResults.length === 1) return lastResult;
205
- const receipt = createMessageReceiptFromOutboundResults({ results: sentResults });
206
- receipt.parts = receipt.parts.map((part, index) => ({
207
- ...part,
208
- index
206
+ for (const message of deliveryMessages) sentResults.push(await send({
207
+ ...preparedCtx,
208
+ text: message.text,
209
+ ...message.blocks ? { blocks: message.blocks } : {},
210
+ ...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
211
+ ...message.nativeDataFallbackBaseText ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
212
+ ...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {}
209
213
  }));
210
- const questionResult = sentResults.find((result) => result.meta?.slackQuestionActionIds.length);
211
- return {
212
- ...lastResult,
213
- receipt,
214
- ...questionResult?.meta ? { meta: {
215
- ...questionResult.meta,
216
- slackQuestionMessageId: questionResult.meta.slackQuestionMessageId ?? questionResult.messageId
217
- } } : {}
218
- };
214
+ return mergeSlackSendResults(sentResults);
219
215
  }
220
- })));
216
+ }));
221
217
  },
222
218
  afterDeliverPayload: async ({ cfg, target, payload, results }) => {
223
219
  const questionId = questionGatewayRuntime.readAskUserQuestionId(payload);
@@ -263,7 +259,15 @@ const slackOutbound = {
263
259
  }
264
260
  });
265
261
  },
266
- ...createSlackAttachedSendAdapter()
262
+ sendText: async (ctx) => {
263
+ return toSlackOutboundResult(await (await prepareSlackOutboundSend(ctx))(ctx));
264
+ },
265
+ sendMedia: async (ctx) => {
266
+ return toSlackOutboundResult(await (await prepareSlackOutboundSend(ctx))({
267
+ ...ctx,
268
+ deliveryQueueId: void 0
269
+ }));
270
+ }
267
271
  };
268
272
  //#endregion
269
273
  export { slackOutbound };