@openclaw/slack 2026.7.1-beta.6 → 2026.7.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accounts.runtime-KvftRRek.js +2 -0
- package/dist/{action-runtime-DoQGk_8D.js → action-runtime-p6M2ULpv.js} +205 -29
- package/dist/action-runtime.runtime-DQstDkHG.js +2 -0
- package/dist/{actions-DMpDmKEA.js → actions-DkTcWmpT.js} +87 -138
- package/dist/{actions.runtime-C103_BPW.js → actions.runtime-BSxpwgUc.js} +1 -1
- package/dist/api.js +14 -13
- package/dist/{approval-handler.runtime-CIUbOt5T.js → approval-handler.runtime-UGbnz9OC.js} +3 -3
- package/dist/{channel-BjlsaGHn.js → channel-B0_j6C6z.js} +116 -140
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/channel-type-BpeTezY4.js +109 -0
- package/dist/{channel.setup-Dq6syTNU.js → channel.setup-BQFut21T.js} +2 -2
- package/dist/{client-DGxwSL7f.js → client-D2F6m8CP.js} +38 -2
- package/dist/config-api-Df9a1B8C.js +3 -0
- package/dist/{config-schema-BzqzFW__.js → config-schema-DYI01PV2.js} +20 -37
- package/dist/cursor-pages-DSmTg0su.js +13 -0
- package/dist/{directory-config-BZuS8141.js → directory-config-DRkFujwG.js} +2 -2
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-BNsxCgqP.js → directory-live-DX7yFsM-.js} +2 -2
- package/dist/{doctor-contract-XL6HeNCb.js → doctor-contract-DddfkMlF.js} +25 -38
- package/dist/doctor-contract-api.js +1 -1
- package/dist/group-policy-C-b2ZnSl.js +2332 -0
- package/dist/{interactive-replies-CXpT-vA_.js → interactive-replies-BilWUdcI.js} +5 -1
- package/dist/interactive-replies-api.js +1 -1
- package/dist/{message-tool-api-BgWKyu2r.js → message-tool-api-CA9jZrCY.js} +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-Ux-wzUWI.js → monitor-BN_uuvrQ.js} +3 -3
- package/dist/outbound-adapter-ECl0go7d.js +228 -0
- package/dist/{pipeline.runtime-rpVpay59.js → pipeline.runtime-f0eJJoJL.js} +492 -178
- package/dist/{policy-Dj-puVPb.js → policy-f8b0edSi.js} +1 -1
- package/dist/preflight-audio.runtime-D5Bgags0.js +3 -0
- package/dist/{probe-CuwRDE5j.js → probe-CfALk0l4.js} +2 -2
- package/dist/{provider-C1-DFSpw.js → provider-Ds-y-imP.js} +658 -192
- package/dist/{relay-source-D2jv1iGg.js → relay-source-B-6LFUdz.js} +6 -17
- package/dist/replies-BMvf3ihj.js +420 -0
- package/dist/{resolve-channels-CstkChBE.js → resolve-channels-DOMgNCWb.js} +17 -6
- package/dist/{resolve-users-C3NP2c-Q.js → resolve-users-aL6-Ssee.js} +11 -6
- package/dist/{runtime-BOk7xkOl.js → runtime-CauEvswP.js} +1 -1
- package/dist/{runtime-api-CEmqYxR-.js → runtime-api-CVb6CQjX.js} +3 -3
- package/dist/runtime-api.js +11 -11
- package/dist/runtime-setter-api.js +1 -1
- package/dist/{scopes-DCWVD5-8.js → scopes-Dw8wbU0j.js} +2 -2
- package/dist/{secret-contract-C3ChHo5A.js → secret-contract-CMohXFWS.js} +18 -113
- package/dist/secret-contract-api.js +1 -1
- package/dist/{send-DKDXoeoV.js → send-NEfJ0GvM.js} +662 -325
- package/dist/{send.runtime-GPRa63l1.js → send.runtime-BkKpitPu.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-Dv2fIJNB.js → setup-surface-BN2WeG5c.js} +3 -3
- package/dist/{shared-CosfcFri.js → shared-BLnB9R1T.js} +7 -5
- package/dist/{slash-dispatch.runtime-CcMbbT3_.js → slash-dispatch.runtime-C0Otuf_T.js} +1 -1
- package/dist/{streaming-compat-DjlgH-Be.js → streaming-compat-3_X-21wW.js} +1 -0
- package/dist/{target-parsing-3jYH8LfB.js → target-parsing-N6lHogYZ.js} +16 -3
- package/dist/{targets-Dll4NJgs.js → targets-KmjP2E8s.js} +1 -1
- package/node_modules/p-map/index.d.ts +155 -0
- package/node_modules/p-map/index.js +284 -0
- package/node_modules/p-map/license +9 -0
- package/node_modules/p-map/package.json +57 -0
- package/node_modules/p-map/readme.md +190 -0
- package/npm-shrinkwrap.json +16 -3
- package/openclaw.plugin.json +16 -0
- package/package.json +6 -4
- package/dist/accounts.runtime-DWvaCb-X.js +0 -2
- package/dist/action-runtime.runtime-BABj3aM-.js +0 -2
- package/dist/config-api-DnT9ohtE.js +0 -2
- package/dist/format-YCNoNkM2.js +0 -107
- package/dist/outbound-adapter-DVoBfBW5.js +0 -272
- package/dist/replies-DpF38e1y.js +0 -287
- package/dist/reply-blocks-BGQ6zSqM.js +0 -877
- package/dist/resolve-allowlist-common-CP8SH0Zf.js +0 -43
|
@@ -78,8 +78,11 @@ function buildSelectBlock(raw) {
|
|
|
78
78
|
const parts = normalizeStringEntries(raw.split("|"));
|
|
79
79
|
if (parts.length === 0) return null;
|
|
80
80
|
const [first, second] = parts;
|
|
81
|
+
if (!first || parts.length >= 2 && !second) return null;
|
|
81
82
|
const placeholder = parts.length >= 2 ? first : "Choose an option";
|
|
82
|
-
const
|
|
83
|
+
const choicesText = parts.length >= 2 ? second : first;
|
|
84
|
+
if (!choicesText) return null;
|
|
85
|
+
const choices = parseChoices(choicesText, SLACK_SELECT_MAX_ITEMS);
|
|
83
86
|
if (choices.length === 0) return null;
|
|
84
87
|
return {
|
|
85
88
|
type: "select",
|
|
@@ -134,6 +137,7 @@ function compileSlackInteractiveReplies(payload) {
|
|
|
134
137
|
const matchText = match[0];
|
|
135
138
|
const directiveType = match[1];
|
|
136
139
|
const body = match[2];
|
|
140
|
+
if (!directiveType || !body) continue;
|
|
137
141
|
const index = match.index ?? 0;
|
|
138
142
|
const precedingText = text.slice(cursor, index);
|
|
139
143
|
visibleTextParts.push(precedingText);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-
|
|
1
|
+
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-BilWUdcI.js";
|
|
2
2
|
export { compileSlackInteractiveReplies, isSlackInteractiveRepliesEnabled };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { a as resolveSlackAccount, t as listEnabledSlackAccounts } from "./accounts-BOJJiHSr.js";
|
|
2
2
|
import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
|
|
3
|
-
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-
|
|
3
|
+
import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-BilWUdcI.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";
|
package/dist/message-tool-api.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as describeSlackMessageTool } from "./message-tool-api-
|
|
1
|
+
import { t as describeSlackMessageTool } from "./message-tool-api-CA9jZrCY.js";
|
|
2
2
|
export { describeSlackMessageTool as describeMessageTool };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as isSlackChannelAllowedByPolicy } from "./policy-
|
|
4
|
-
import { o as resolveSlackThreadTs } from "./replies-
|
|
2
|
+
import { C as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-Ds-y-imP.js";
|
|
3
|
+
import { t as isSlackChannelAllowedByPolicy } from "./policy-f8b0edSi.js";
|
|
4
|
+
import { o as resolveSlackThreadTs } from "./replies-BMvf3ihj.js";
|
|
5
5
|
//#region extensions/slack/src/monitor.ts
|
|
6
6
|
var monitor_exports = /* @__PURE__ */ __exportAll({
|
|
7
7
|
buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { F as SLACK_TEXT_LIMIT, J as SLACK_PRESENTATION_CAPABILITIES, M as resolveSlackAuthoredTextPlacement, g as resolveSlackReplyDeliveryMessages, m as resolveSlackReplyBlockResolution, p as parseSlackReplyBlockSegments } from "./group-policy-C-b2ZnSl.js";
|
|
2
|
+
import { n as resolveSlackThreadTsValue } from "./thread-ts-DUGhaYKq.js";
|
|
3
|
+
import { n as isSlackInteractiveRepliesEnabled, t as compileSlackInteractiveReplies } from "./interactive-replies-BilWUdcI.js";
|
|
4
|
+
import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
5
|
+
import { resolveOutboundSendDep } from "openclaw/plugin-sdk/channel-outbound";
|
|
6
|
+
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
7
|
+
import { normalizeMessagePresentation, resolveInteractiveTextFallback } from "openclaw/plugin-sdk/interactive-runtime";
|
|
8
|
+
import { resolvePayloadMediaUrls, sendPayloadMediaSequenceAndFinalize, sendTextMediaPayload } from "openclaw/plugin-sdk/reply-payload";
|
|
9
|
+
import { attachChannelToResult, createAttachedChannelResultAdapter } from "openclaw/plugin-sdk/channel-send-result";
|
|
10
|
+
//#region extensions/slack/src/outbound-adapter.ts
|
|
11
|
+
const SLACK_RENDERED_PRESENTATION_PROVENANCE = Object.freeze({});
|
|
12
|
+
const loadSlackSendRuntime = createLazyRuntimeModule(() => import("./send.runtime-BkKpitPu.js"));
|
|
13
|
+
function resolveSlackSendIdentity(identity) {
|
|
14
|
+
if (!identity) return;
|
|
15
|
+
const username = normalizeOptionalString(identity.name);
|
|
16
|
+
const iconUrl = normalizeOptionalString(identity.avatarUrl);
|
|
17
|
+
const rawEmoji = normalizeOptionalString(identity.emoji);
|
|
18
|
+
const iconEmoji = !iconUrl ? rawEmoji : void 0;
|
|
19
|
+
if (!username && !iconUrl && !iconEmoji) return;
|
|
20
|
+
return {
|
|
21
|
+
username,
|
|
22
|
+
iconUrl,
|
|
23
|
+
iconEmoji
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function resolveSlackOutboundBlockResolution(payload) {
|
|
27
|
+
const slackData = payload.channelData?.slack;
|
|
28
|
+
const presentation = normalizeMessagePresentation(payload.presentation);
|
|
29
|
+
if (!Boolean(slackData?.blocks !== void 0 || presentation || payload.interactive?.blocks.length)) return {
|
|
30
|
+
authoredTextPlacement: resolveSlackAuthoredTextPlacement(payload),
|
|
31
|
+
segments: []
|
|
32
|
+
};
|
|
33
|
+
const { authoredTextPlacement: _authoredTextPlacement, renderedPresentationProvenance: _renderedPresentationProvenance, renderedPresentationSegments: _renderedPresentationSegments, ...preservedSlackData } = slackData ?? {};
|
|
34
|
+
return resolveSlackReplyBlockResolution({
|
|
35
|
+
...payload,
|
|
36
|
+
channelData: {
|
|
37
|
+
...payload.channelData,
|
|
38
|
+
slack: preservedSlackData
|
|
39
|
+
}
|
|
40
|
+
}, { materializeAuthoredText: true });
|
|
41
|
+
}
|
|
42
|
+
function withSlackRenderedPresentation(payload, slackData, resolution) {
|
|
43
|
+
const { authoredTextPlacement: _authoredTextPlacement, blocks: _blocks, renderedPresentationProvenance: _renderedPresentationProvenance, renderedPresentationSegments: _renderedPresentationSegments, ...preservedSlackData } = slackData ?? {};
|
|
44
|
+
return {
|
|
45
|
+
...payload,
|
|
46
|
+
channelData: {
|
|
47
|
+
...payload.channelData,
|
|
48
|
+
slack: {
|
|
49
|
+
...preservedSlackData,
|
|
50
|
+
authoredTextPlacement: resolution.authoredTextPlacement,
|
|
51
|
+
renderedPresentationProvenance: SLACK_RENDERED_PRESENTATION_PROVENANCE,
|
|
52
|
+
renderedPresentationSegments: resolution.segments
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function readSlackAuthoredTextPlacement(value) {
|
|
58
|
+
return value === "none" || value === "blocks" || value === "outside-blocks" ? value : void 0;
|
|
59
|
+
}
|
|
60
|
+
async function sendSlackOutboundMessage(params) {
|
|
61
|
+
const send = resolveOutboundSendDep(params.deps, "slack") ?? (await loadSlackSendRuntime()).sendMessageSlack;
|
|
62
|
+
const slackIdentity = resolveSlackSendIdentity(params.identity);
|
|
63
|
+
const threadTs = resolveSlackThreadTsValue({
|
|
64
|
+
replyToId: params.replyToId,
|
|
65
|
+
threadId: params.threadId
|
|
66
|
+
});
|
|
67
|
+
const sendOptions = {
|
|
68
|
+
cfg: params.cfg,
|
|
69
|
+
threadTs,
|
|
70
|
+
accountId: params.accountId ?? void 0,
|
|
71
|
+
...params.mediaUrl ? {
|
|
72
|
+
mediaUrl: params.mediaUrl,
|
|
73
|
+
mediaAccess: params.mediaAccess,
|
|
74
|
+
mediaLocalRoots: params.mediaLocalRoots,
|
|
75
|
+
mediaReadFile: params.mediaReadFile
|
|
76
|
+
} : {},
|
|
77
|
+
...params.blocks ? { blocks: params.blocks } : {},
|
|
78
|
+
...params.authoredTextPlacement ? { authoredTextPlacement: params.authoredTextPlacement } : {},
|
|
79
|
+
...Object.hasOwn(params, "nativeDataFallbackBaseText") ? { nativeDataFallbackBaseText: params.nativeDataFallbackBaseText } : {},
|
|
80
|
+
...params.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
|
|
81
|
+
...slackIdentity ? { identity: slackIdentity } : {},
|
|
82
|
+
...params.deliveryQueueId ? { deliveryQueueId: params.deliveryQueueId } : {},
|
|
83
|
+
...params.onPlatformSendDispatch ? { onPlatformSendDispatch: params.onPlatformSendDispatch } : {},
|
|
84
|
+
...params.onDeliveryResult ? { onDeliveryResult: async (progress) => {
|
|
85
|
+
await params.onDeliveryResult?.(attachChannelToResult("slack", progress));
|
|
86
|
+
} } : {}
|
|
87
|
+
};
|
|
88
|
+
return await send(params.to, params.text, sendOptions);
|
|
89
|
+
}
|
|
90
|
+
function createSlackAttachedSendAdapter() {
|
|
91
|
+
return createAttachedChannelResultAdapter({
|
|
92
|
+
channel: "slack",
|
|
93
|
+
sendText: async ({ cfg, to, text, accountId, deps, replyToId, threadId, identity, deliveryQueueId, onPlatformSendDispatch, onDeliveryResult }) => await sendSlackOutboundMessage({
|
|
94
|
+
cfg,
|
|
95
|
+
to,
|
|
96
|
+
text,
|
|
97
|
+
accountId,
|
|
98
|
+
deps,
|
|
99
|
+
replyToId,
|
|
100
|
+
threadId,
|
|
101
|
+
identity,
|
|
102
|
+
deliveryQueueId,
|
|
103
|
+
onPlatformSendDispatch,
|
|
104
|
+
onDeliveryResult
|
|
105
|
+
}),
|
|
106
|
+
sendMedia: async ({ cfg, to, text, mediaUrl, mediaAccess, mediaLocalRoots, mediaReadFile, accountId, deps, replyToId, threadId, identity, deliveryQueueId, onPlatformSendDispatch, onDeliveryResult }) => await sendSlackOutboundMessage({
|
|
107
|
+
cfg,
|
|
108
|
+
to,
|
|
109
|
+
text,
|
|
110
|
+
mediaUrl,
|
|
111
|
+
mediaAccess,
|
|
112
|
+
mediaLocalRoots,
|
|
113
|
+
mediaReadFile,
|
|
114
|
+
accountId,
|
|
115
|
+
deps,
|
|
116
|
+
replyToId,
|
|
117
|
+
threadId,
|
|
118
|
+
identity,
|
|
119
|
+
deliveryQueueId,
|
|
120
|
+
onPlatformSendDispatch,
|
|
121
|
+
onDeliveryResult
|
|
122
|
+
})
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const slackOutbound = {
|
|
126
|
+
deliveryMode: "direct",
|
|
127
|
+
chunker: null,
|
|
128
|
+
textChunkLimit: SLACK_TEXT_LIMIT,
|
|
129
|
+
normalizePayload: ({ payload, cfg, accountId }) => isSlackInteractiveRepliesEnabled({
|
|
130
|
+
cfg,
|
|
131
|
+
accountId
|
|
132
|
+
}) ? compileSlackInteractiveReplies(payload) : payload,
|
|
133
|
+
presentationCapabilities: SLACK_PRESENTATION_CAPABILITIES,
|
|
134
|
+
renderPresentation: ({ payload, ctx }) => {
|
|
135
|
+
const payloadForBudget = isSlackInteractiveRepliesEnabled({
|
|
136
|
+
cfg: ctx.cfg,
|
|
137
|
+
accountId: ctx.accountId
|
|
138
|
+
}) ? compileSlackInteractiveReplies(payload) : payload;
|
|
139
|
+
const slackData = payload.channelData?.slack;
|
|
140
|
+
const resolution = resolveSlackOutboundBlockResolution(payloadForBudget);
|
|
141
|
+
return resolution.segments.length > 0 ? withSlackRenderedPresentation(payloadForBudget, slackData, resolution) : null;
|
|
142
|
+
},
|
|
143
|
+
sendPayload: async (ctx) => {
|
|
144
|
+
const payload = {
|
|
145
|
+
...ctx.payload,
|
|
146
|
+
text: resolveInteractiveTextFallback({
|
|
147
|
+
text: ctx.payload.text,
|
|
148
|
+
interactive: ctx.payload.interactive
|
|
149
|
+
}) ?? ""
|
|
150
|
+
};
|
|
151
|
+
const slackData = payload.channelData?.slack;
|
|
152
|
+
const hasRenderedPresentationProvenance = slackData?.renderedPresentationProvenance === SLACK_RENDERED_PRESENTATION_PROVENANCE;
|
|
153
|
+
const renderedSegments = hasRenderedPresentationProvenance ? parseSlackReplyBlockSegments(slackData?.renderedPresentationSegments) : void 0;
|
|
154
|
+
const renderedPlacement = hasRenderedPresentationProvenance ? readSlackAuthoredTextPlacement(slackData?.authoredTextPlacement) : void 0;
|
|
155
|
+
let resolution;
|
|
156
|
+
if (renderedSegments) {
|
|
157
|
+
if (!renderedPlacement) throw new Error("Slack rendered presentation is missing authored text placement");
|
|
158
|
+
resolution = {
|
|
159
|
+
authoredTextPlacement: renderedPlacement,
|
|
160
|
+
segments: renderedSegments
|
|
161
|
+
};
|
|
162
|
+
} else resolution = resolveSlackOutboundBlockResolution(payload);
|
|
163
|
+
if (resolution.segments.length === 0) return await sendTextMediaPayload({
|
|
164
|
+
channel: "slack",
|
|
165
|
+
ctx: {
|
|
166
|
+
...ctx,
|
|
167
|
+
payload
|
|
168
|
+
},
|
|
169
|
+
adapter: slackOutbound
|
|
170
|
+
});
|
|
171
|
+
const mediaUrls = resolvePayloadMediaUrls(payload);
|
|
172
|
+
const deliveryMessages = resolveSlackReplyDeliveryMessages({
|
|
173
|
+
authoredTextPlacement: resolution.authoredTextPlacement,
|
|
174
|
+
segments: resolution.segments,
|
|
175
|
+
text: payload.text
|
|
176
|
+
});
|
|
177
|
+
const useSingleDeliveryMarker = mediaUrls.length === 0 && deliveryMessages.length === 1;
|
|
178
|
+
return attachChannelToResult("slack", await sendPayloadMediaSequenceAndFinalize({
|
|
179
|
+
text: "",
|
|
180
|
+
mediaUrls,
|
|
181
|
+
send: async ({ text, mediaUrl }) => await sendSlackOutboundMessage({
|
|
182
|
+
cfg: ctx.cfg,
|
|
183
|
+
to: ctx.to,
|
|
184
|
+
text,
|
|
185
|
+
mediaUrl,
|
|
186
|
+
mediaAccess: ctx.mediaAccess,
|
|
187
|
+
mediaLocalRoots: ctx.mediaLocalRoots,
|
|
188
|
+
mediaReadFile: ctx.mediaReadFile,
|
|
189
|
+
accountId: ctx.accountId,
|
|
190
|
+
deps: ctx.deps,
|
|
191
|
+
replyToId: ctx.replyToId,
|
|
192
|
+
threadId: ctx.threadId,
|
|
193
|
+
identity: ctx.identity,
|
|
194
|
+
deliveryQueueId: useSingleDeliveryMarker ? ctx.deliveryQueueId : void 0,
|
|
195
|
+
onPlatformSendDispatch: useSingleDeliveryMarker ? ctx.onPlatformSendDispatch : void 0,
|
|
196
|
+
onDeliveryResult: ctx.onDeliveryResult
|
|
197
|
+
}),
|
|
198
|
+
finalize: async () => {
|
|
199
|
+
let lastResult;
|
|
200
|
+
for (const message of deliveryMessages) lastResult = await sendSlackOutboundMessage({
|
|
201
|
+
cfg: ctx.cfg,
|
|
202
|
+
to: ctx.to,
|
|
203
|
+
text: message.text,
|
|
204
|
+
mediaAccess: ctx.mediaAccess,
|
|
205
|
+
mediaLocalRoots: ctx.mediaLocalRoots,
|
|
206
|
+
mediaReadFile: ctx.mediaReadFile,
|
|
207
|
+
...message.blocks ? { blocks: message.blocks } : {},
|
|
208
|
+
...message.authoredTextPlacement ? { authoredTextPlacement: message.authoredTextPlacement } : {},
|
|
209
|
+
...message.nativeDataFallbackBaseText ? { nativeDataFallbackBaseText: message.nativeDataFallbackBaseText } : {},
|
|
210
|
+
...message.textIsSlackPlainText ? { textIsSlackPlainText: true } : {},
|
|
211
|
+
accountId: ctx.accountId,
|
|
212
|
+
deps: ctx.deps,
|
|
213
|
+
replyToId: ctx.replyToId,
|
|
214
|
+
threadId: ctx.threadId,
|
|
215
|
+
identity: ctx.identity,
|
|
216
|
+
deliveryQueueId: useSingleDeliveryMarker ? ctx.deliveryQueueId : void 0,
|
|
217
|
+
onPlatformSendDispatch: useSingleDeliveryMarker ? ctx.onPlatformSendDispatch : void 0,
|
|
218
|
+
onDeliveryResult: ctx.onDeliveryResult
|
|
219
|
+
});
|
|
220
|
+
if (!lastResult) throw new Error("Slack rendered presentation produced no deliverable segment");
|
|
221
|
+
return lastResult;
|
|
222
|
+
}
|
|
223
|
+
}));
|
|
224
|
+
},
|
|
225
|
+
...createSlackAttachedSendAdapter()
|
|
226
|
+
};
|
|
227
|
+
//#endregion
|
|
228
|
+
export { slackOutbound };
|