@openclaw/slack 2026.5.27 → 2026.5.28-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 (94) hide show
  1. package/dist/{account-inspect-vVg3pT03.js → account-inspect-CdGk6R7l.js} +1 -1
  2. package/dist/account-inspect-api.js +1 -1
  3. package/dist/{accounts-BnLQ3fe2.js → accounts-f6Xcv9Vi.js} +42 -1
  4. package/dist/accounts.runtime-BJt1IxOS.js +2 -0
  5. package/dist/{action-runtime-JVb7KyQs.js → action-runtime-BOEgcnv6.js} +7 -8
  6. package/dist/action-runtime.runtime-BXQYV0yA.js +2 -0
  7. package/dist/{actions-1o9nMIY8.js → actions-zfVWcIY6.js} +4 -4
  8. package/dist/{actions.runtime-qQtdNww-.js → actions.runtime-CoijPN8g.js} +1 -1
  9. package/dist/api.js +14 -17
  10. package/dist/{approval-handler.runtime-Ba8nwnYi.js → approval-handler.runtime-CWz3XLfN.js} +12 -69
  11. package/dist/{channel-Bd7eept6.js → channel-D8p_1twn.js} +25 -28
  12. package/dist/channel-config-api.js +1 -1
  13. package/dist/channel-plugin-api.js +1 -1
  14. package/dist/{channel.setup-WNNVmCm0.js → channel.setup-oGp4gSTP.js} +4 -4
  15. package/dist/{client-Dc2Ji2YN.js → client-DowBk5k0.js} +6 -24
  16. package/dist/{config-schema-CUiDK8HV.js → config-schema-C0RewpJQ.js} +4 -0
  17. package/dist/contract-api.js +1 -1
  18. package/dist/{directory-config-9_djLTOK.js → directory-config-8UPAEyNg.js} +1 -1
  19. package/dist/directory-contract-api.js +1 -1
  20. package/dist/{directory-live-Cl83cGLZ.js → directory-live-BFB1pSax.js} +2 -2
  21. package/dist/http-routes-api.js +1 -1
  22. package/dist/index.js +3 -7
  23. package/dist/{interactive-replies-DtYu4Sf5.js → interactive-replies-DrBq4Mld.js} +1 -1
  24. package/dist/interactive-replies-api.js +1 -1
  25. package/dist/{message-tool-api-BieXX5lk.js → message-tool-api-B9M0zzlQ.js} +2 -2
  26. package/dist/message-tool-api.js +1 -1
  27. package/dist/{monitor-Cn7LUDFL.js → monitor-D7jGKmQk.js} +3 -4
  28. package/dist/{outbound-adapter-ChuR4_0v.js → outbound-adapter-BHZMgblN.js} +4 -7
  29. package/dist/pipeline.runtime-xM6ppqQZ.js +3492 -0
  30. package/dist/plugin-routes-B9PvcDQJ.js +22 -0
  31. package/dist/{policy-pu8tsF8_.js → policy-BBDU-PQK.js} +1 -1
  32. package/dist/{probe-cBVPhCKZ.js → probe-Djes9Fy6.js} +1 -1
  33. package/dist/{provider-Bccng2Wp.js → provider-CxMP_s2o.js} +828 -28
  34. package/dist/{replies-jiEDV6lH.js → replies-DkmWK7JW.js} +2 -4
  35. package/dist/{resolve-channels-CT4oiz_9.js → resolve-channels-zXt5f47h.js} +1 -1
  36. package/dist/{resolve-users-o5S-Ijks.js → resolve-users-BLfGAz1v.js} +1 -1
  37. package/dist/{runtime-api-CyPE-EvY.js → runtime-api-DvpUD2hw.js} +2 -2
  38. package/dist/runtime-api.js +12 -12
  39. package/dist/{scopes-CnyhLIPT.js → scopes-DiiHsqh1.js} +1 -1
  40. package/dist/{send-DvfE8LVm.js → send-BURYyCXI.js} +4 -4
  41. package/dist/send.runtime-CKaMG3s-.js +2 -0
  42. package/dist/{setup-core-DKe7Ug3V.js → setup-core-POfI_bgP.js} +2 -2
  43. package/dist/setup-entry.js +8 -1
  44. package/dist/setup-plugin-api.js +1 -1
  45. package/dist/{setup-surface-gjRthuZA.js → setup-surface-DJTHAguz.js} +5 -5
  46. package/dist/{shared-D8A7iVVH.js → shared-D9WMYymo.js} +5 -5
  47. package/dist/{slash-dispatch.runtime-BBhdJHb8.js → slash-dispatch.runtime-lsyTm_q5.js} +1 -1
  48. package/dist/thread-ts-NSVqWybn.js +646 -0
  49. package/node_modules/semver/classes/range.js +7 -0
  50. package/node_modules/semver/package.json +1 -1
  51. package/node_modules/semver/ranges/subset.js +2 -2
  52. package/npm-shrinkwrap.json +6 -29
  53. package/openclaw.plugin.json +10 -0
  54. package/package.json +8 -7
  55. package/dist/accounts.runtime-BVdtQeuq.js +0 -2
  56. package/dist/action-runtime.runtime-BZa5VDjs.js +0 -2
  57. package/dist/allow-list-B1lkGjwl.js +0 -82
  58. package/dist/blocks-render-CNC4vQnd.js +0 -232
  59. package/dist/inbound-contract-test-api.js +0 -3
  60. package/dist/magic-string.es-BPXBBMwL.js +0 -1011
  61. package/dist/outbound-payload-test-api.js +0 -2
  62. package/dist/outbound-payload.test-harness-8MnHFgR1.js +0 -13551
  63. package/dist/pipeline.runtime-BVK8yXw_.js +0 -1473
  64. package/dist/plugin-routes-DRR3ijKM.js +0 -20
  65. package/dist/prepare-Bl5WcC3f.js +0 -1713
  66. package/dist/prepare.test-helpers-BcAo4KMw.js +0 -49
  67. package/dist/reply-blocks-BlOURkUm.js +0 -290
  68. package/dist/room-context-BmNTBiw5.js +0 -816
  69. package/dist/send.runtime-Dv6ajTGK.js +0 -2
  70. package/dist/send.runtime-v3TSw9xY.js +0 -2
  71. package/dist/test-api.js +0 -8
  72. package/dist/thread-ts-ks-O8cEG.js +0 -52
  73. package/node_modules/agent-base/LICENSE +0 -22
  74. package/node_modules/agent-base/README.md +0 -69
  75. package/node_modules/agent-base/dist/helpers.d.ts +0 -10
  76. package/node_modules/agent-base/dist/helpers.d.ts.map +0 -1
  77. package/node_modules/agent-base/dist/helpers.js +0 -37
  78. package/node_modules/agent-base/dist/helpers.js.map +0 -1
  79. package/node_modules/agent-base/dist/index.d.ts +0 -37
  80. package/node_modules/agent-base/dist/index.d.ts.map +0 -1
  81. package/node_modules/agent-base/dist/index.js +0 -146
  82. package/node_modules/agent-base/dist/index.js.map +0 -1
  83. package/node_modules/agent-base/package.json +0 -46
  84. package/node_modules/https-proxy-agent/LICENSE +0 -22
  85. package/node_modules/https-proxy-agent/README.md +0 -70
  86. package/node_modules/https-proxy-agent/dist/index.d.ts +0 -43
  87. package/node_modules/https-proxy-agent/dist/index.d.ts.map +0 -1
  88. package/node_modules/https-proxy-agent/dist/index.js +0 -150
  89. package/node_modules/https-proxy-agent/dist/index.js.map +0 -1
  90. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +0 -12
  91. package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +0 -1
  92. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -94
  93. package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +0 -1
  94. package/node_modules/https-proxy-agent/package.json +0 -50
@@ -1,49 +0,0 @@
1
- import { p as createSlackMonitorContext } from "./room-context-BmNTBiw5.js";
2
- import "openclaw/plugin-sdk/temp-path";
3
- //#region extensions/slack/src/monitor/message-handler/prepare.test-helpers.ts
4
- function createInboundSlackTestContext(params) {
5
- return createSlackMonitorContext({
6
- cfg: params.cfg,
7
- accountId: "default",
8
- botToken: "token",
9
- app: { client: params.appClient ?? {} },
10
- runtime: {},
11
- botUserId: "B1",
12
- botId: "B1",
13
- teamId: "T1",
14
- apiAppId: "A1",
15
- historyLimit: 0,
16
- dmHistoryLimit: params.dmHistoryLimit,
17
- sessionScope: "per-sender",
18
- mainKey: "main",
19
- dmEnabled: true,
20
- dmPolicy: "open",
21
- allowFrom: ["*"],
22
- allowNameMatching: false,
23
- groupDmEnabled: true,
24
- groupDmChannels: [],
25
- defaultRequireMention: params.defaultRequireMention ?? true,
26
- channelsConfig: params.channelsConfig,
27
- groupPolicy: "open",
28
- useAccessGroups: false,
29
- reactionMode: "off",
30
- reactionAllowlist: [],
31
- replyToMode: params.replyToMode ?? "off",
32
- threadHistoryScope: "thread",
33
- threadInheritParent: false,
34
- threadRequireExplicitMention: params.threadRequireExplicitMention ?? false,
35
- slashCommand: {
36
- enabled: false,
37
- name: "openclaw",
38
- sessionPrefix: "slack:slash",
39
- ephemeral: true
40
- },
41
- textLimit: 4e3,
42
- ackReactionScope: "group-mentions",
43
- typingReaction: "",
44
- mediaMaxBytes: 1024,
45
- removeAckAfterReply: false
46
- });
47
- }
48
- //#endregion
49
- export { createInboundSlackTestContext as t };
@@ -1,290 +0,0 @@
1
- import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig } from "./accounts-BnLQ3fe2.js";
2
- import { n as buildSlackPresentationBlocks, r as resolveSlackInteractiveBlockOffsets, t as buildSlackInteractiveBlocks } from "./blocks-render-CNC4vQnd.js";
3
- import { i as parseSlackBlocksInput } from "./thread-ts-ks-O8cEG.js";
4
- import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
5
- import { normalizeOptionalString, normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
- import { normalizeMessageChannel } from "openclaw/plugin-sdk/routing";
7
- import { doesApprovalRequestMatchChannelAccount, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
8
- import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
9
- import { createChannelExecApprovalProfile, isChannelExecApprovalClientEnabledFromConfig, isChannelExecApprovalTargetRecipient, matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
10
- import { normalizeHyphenSlug } from "openclaw/plugin-sdk/string-normalization-runtime";
11
- import { resolveToolsBySender } from "openclaw/plugin-sdk/channel-policy";
12
- //#region extensions/slack/src/exec-approvals.ts
13
- function normalizeSlackUserLikeId(value) {
14
- const upper = value.toUpperCase();
15
- return /^[UW][A-Z0-9]+$/.test(upper) ? upper : void 0;
16
- }
17
- function normalizeSlackApproverId(value) {
18
- const trimmed = normalizeStringifiedOptionalString(value);
19
- if (!trimmed) return;
20
- const prefixed = trimmed.match(/^(?:slack|user):([A-Z0-9]+)$/i);
21
- if (prefixed?.[1]) return normalizeSlackUserLikeId(prefixed[1]);
22
- const mention = trimmed.match(/^<@([A-Z0-9]+)>$/i);
23
- if (mention?.[1]) return normalizeSlackUserLikeId(mention[1]);
24
- return normalizeSlackUserLikeId(trimmed);
25
- }
26
- function resolveSlackOwnerApprovers(cfg) {
27
- const ownerAllowFrom = cfg.commands?.ownerAllowFrom;
28
- if (!Array.isArray(ownerAllowFrom) || ownerAllowFrom.length === 0) return [];
29
- return resolveApprovalApprovers({
30
- explicit: ownerAllowFrom,
31
- normalizeApprover: normalizeSlackApproverId
32
- });
33
- }
34
- function getSlackExecApprovalApprovers(params) {
35
- const account = resolveSlackAccount(params).config;
36
- return resolveApprovalApprovers({
37
- explicit: account.execApprovals?.approvers ?? resolveSlackOwnerApprovers(params.cfg),
38
- normalizeApprover: normalizeSlackApproverId
39
- });
40
- }
41
- function isSlackExecApprovalTargetRecipient(params) {
42
- return isChannelExecApprovalTargetRecipient({
43
- ...params,
44
- channel: "slack",
45
- normalizeSenderId: normalizeSlackApproverId,
46
- matchTarget: ({ target, normalizedSenderId }) => normalizeSlackApproverId(target.to) === normalizedSenderId
47
- });
48
- }
49
- const slackExecApprovalProfile = createChannelExecApprovalProfile({
50
- resolveConfig: (params) => resolveSlackAccount(params).config.execApprovals,
51
- resolveApprovers: getSlackExecApprovalApprovers,
52
- normalizeSenderId: normalizeSlackApproverId,
53
- isTargetRecipient: isSlackExecApprovalTargetRecipient,
54
- matchesRequestAccount: (params) => doesApprovalRequestMatchChannelAccount({
55
- cfg: params.cfg,
56
- request: params.request,
57
- channel: "slack",
58
- accountId: params.accountId
59
- })
60
- });
61
- const isSlackExecApprovalClientEnabled = slackExecApprovalProfile.isClientEnabled;
62
- slackExecApprovalProfile.isApprover;
63
- const isSlackExecApprovalAuthorizedSender = slackExecApprovalProfile.isAuthorizedSender;
64
- const resolveSlackExecApprovalTarget = slackExecApprovalProfile.resolveTarget;
65
- slackExecApprovalProfile.shouldHandleRequest;
66
- const shouldSuppressLocalSlackExecApprovalPrompt = slackExecApprovalProfile.shouldSuppressLocalPrompt;
67
- //#endregion
68
- //#region extensions/slack/src/approval-auth.ts
69
- function getSlackApprovalApprovers(params) {
70
- const account = resolveSlackAccount(params).config;
71
- return resolveApprovalApprovers({
72
- allowFrom: resolveSlackAccountAllowFrom(params),
73
- defaultTo: account.defaultTo,
74
- normalizeApprover: normalizeSlackApproverId,
75
- normalizeDefaultTo: normalizeSlackApproverId
76
- });
77
- }
78
- function isSlackApprovalAuthorizedSender(params) {
79
- const senderId = params.senderId ? normalizeSlackApproverId(params.senderId) : void 0;
80
- if (!senderId) return false;
81
- return getSlackApprovalApprovers(params).includes(senderId);
82
- }
83
- createResolvedApproverActionAuthAdapter({
84
- channelLabel: "Slack",
85
- resolveApprovers: ({ cfg, accountId }) => getSlackApprovalApprovers({
86
- cfg,
87
- accountId
88
- }),
89
- normalizeSenderId: (value) => normalizeSlackApproverId(value)
90
- });
91
- //#endregion
92
- //#region extensions/slack/src/approval-native-gates.ts
93
- function resolveSlackApprovalKind(request) {
94
- return request.id.startsWith("plugin:") ? "plugin" : "exec";
95
- }
96
- function resolveSlackNativeApprovalConfig(params) {
97
- return resolveSlackAccount(params).config.execApprovals;
98
- }
99
- function resolvePluginApprovalForwardingConfig(cfg) {
100
- return cfg.approvals?.plugin;
101
- }
102
- function getSlackNativeApprovalApprovers(params) {
103
- return params.approvalKind === "plugin" ? getSlackApprovalApprovers(params) : getSlackExecApprovalApprovers(params);
104
- }
105
- function normalizeAccountId$2(value) {
106
- return normalizeOptionalString(value)?.toLowerCase();
107
- }
108
- function matchesSlackAccount(params) {
109
- const expected = normalizeAccountId$2(params.expectedAccountId);
110
- const actual = normalizeAccountId$2(params.actualAccountId);
111
- return !expected || !actual || expected === actual;
112
- }
113
- function modeIncludesSession(mode) {
114
- return mode === void 0 || mode === "session" || mode === "both";
115
- }
116
- function modeIncludesTargets(mode) {
117
- return mode === "targets" || mode === "both";
118
- }
119
- function hasSlackPluginForwardingTarget(params) {
120
- return (resolvePluginApprovalForwardingConfig(params.cfg)?.targets ?? []).some((target) => {
121
- return (normalizeMessageChannel(target.channel) ?? target.channel) === "slack" && matchesSlackAccount({
122
- expectedAccountId: params.accountId,
123
- actualAccountId: target.accountId
124
- });
125
- });
126
- }
127
- function requestHasSlackOriginOrSession(params) {
128
- const request = params.request.request;
129
- const turnSourceChannel = normalizeMessageChannel(request.turnSourceChannel);
130
- if (turnSourceChannel) return turnSourceChannel === "slack" && matchesSlackAccount({
131
- expectedAccountId: params.accountId,
132
- actualAccountId: request.turnSourceAccountId
133
- });
134
- return resolveApprovalRequestSessionConversation({
135
- request: params.request,
136
- channel: "slack",
137
- bundledFallback: false
138
- }) !== null && doesApprovalRequestMatchChannelAccount({
139
- cfg: params.cfg,
140
- request: params.request,
141
- channel: "slack",
142
- accountId: params.accountId
143
- });
144
- }
145
- function isPluginForwardingEnabledForRequest(params) {
146
- const config = resolvePluginApprovalForwardingConfig(params.cfg);
147
- if (!config?.enabled) return false;
148
- return matchesApprovalRequestFilters({
149
- request: params.request.request,
150
- agentFilter: config.agentFilter,
151
- sessionFilter: config.sessionFilter
152
- });
153
- }
154
- function canPluginForwardingRouteToSlack(params) {
155
- const mode = resolvePluginApprovalForwardingConfig(params.cfg)?.mode;
156
- if (modeIncludesSession(mode) && requestHasSlackOriginOrSession({
157
- cfg: params.cfg,
158
- request: params.request,
159
- accountId: params.accountId
160
- })) return true;
161
- return modeIncludesTargets(mode) && hasSlackPluginForwardingTarget(params);
162
- }
163
- function isSlackPluginNativeApprovalClientEnabled(params) {
164
- if (isChannelExecApprovalClientEnabledFromConfig({
165
- enabled: resolveSlackNativeApprovalConfig(params)?.enabled,
166
- approverCount: getSlackApprovalApprovers(params).length
167
- })) return true;
168
- const config = resolvePluginApprovalForwardingConfig(params.cfg);
169
- if (!config?.enabled || getSlackApprovalApprovers(params).length <= 0) return false;
170
- const mode = config.mode;
171
- return modeIncludesSession(mode) || modeIncludesTargets(mode) && hasSlackPluginForwardingTarget(params);
172
- }
173
- function shouldHandleSlackPluginViaNativeClientConfig(params) {
174
- if (!doesApprovalRequestMatchChannelAccount({
175
- cfg: params.cfg,
176
- request: params.request,
177
- channel: "slack",
178
- accountId: params.accountId
179
- })) return false;
180
- const config = resolveSlackNativeApprovalConfig(params);
181
- if (!isChannelExecApprovalClientEnabledFromConfig({
182
- enabled: config?.enabled,
183
- approverCount: getSlackApprovalApprovers(params).length
184
- })) return false;
185
- return matchesApprovalRequestFilters({
186
- request: params.request.request,
187
- agentFilter: config?.agentFilter,
188
- sessionFilter: config?.sessionFilter
189
- });
190
- }
191
- function shouldHandleSlackPluginNativeApprovalRequest(params) {
192
- if (getSlackApprovalApprovers(params).length <= 0) return false;
193
- if (shouldHandleSlackPluginViaNativeClientConfig(params)) return true;
194
- if (!isPluginForwardingEnabledForRequest(params)) return false;
195
- return canPluginForwardingRouteToSlack(params);
196
- }
197
- function isSlackNativeApprovalClientEnabled(params) {
198
- if (params.approvalKind === "exec") return isSlackExecApprovalClientEnabled(params);
199
- return isSlackPluginNativeApprovalClientEnabled(params);
200
- }
201
- function isSlackAnyNativeApprovalClientEnabled(params) {
202
- return isSlackNativeApprovalClientEnabled({
203
- ...params,
204
- approvalKind: "exec"
205
- }) || isSlackNativeApprovalClientEnabled({
206
- ...params,
207
- approvalKind: "plugin"
208
- });
209
- }
210
- function shouldHandleSlackNativeApprovalRequest(params) {
211
- const approvalKind = params.approvalKind ?? resolveSlackApprovalKind(params.request);
212
- if (approvalKind === "plugin") return shouldHandleSlackPluginNativeApprovalRequest({
213
- cfg: params.cfg,
214
- accountId: params.accountId,
215
- request: params.request
216
- });
217
- if (!doesApprovalRequestMatchChannelAccount({
218
- cfg: params.cfg,
219
- request: params.request,
220
- channel: "slack",
221
- accountId: params.accountId
222
- })) return false;
223
- const config = resolveSlackNativeApprovalConfig(params);
224
- if (!isChannelExecApprovalClientEnabledFromConfig({
225
- enabled: config?.enabled,
226
- approverCount: getSlackNativeApprovalApprovers({
227
- ...params,
228
- approvalKind
229
- }).length
230
- })) return false;
231
- return matchesApprovalRequestFilters({
232
- request: params.request.request,
233
- agentFilter: config?.agentFilter,
234
- sessionFilter: config?.sessionFilter
235
- });
236
- }
237
- //#endregion
238
- //#region extensions/slack/src/group-policy.ts
239
- function resolveSlackChannelPolicyEntry(params) {
240
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
241
- const channelMap = mergeSlackAccountConfig(params.cfg, accountId).channels ?? {};
242
- if (Object.keys(channelMap).length === 0) return;
243
- const channelId = params.groupId?.trim();
244
- const channelName = params.groupChannel?.replace(/^#/, "");
245
- const normalizedName = normalizeHyphenSlug(channelName);
246
- const candidates = [
247
- channelId ?? "",
248
- channelName ? `#${channelName}` : "",
249
- channelName ?? "",
250
- normalizedName
251
- ].filter(Boolean);
252
- for (const candidate of candidates) if (candidate && channelMap[candidate]) return channelMap[candidate];
253
- return channelMap["*"];
254
- }
255
- function resolveSenderToolsEntry(entry, params) {
256
- if (!entry) return;
257
- return resolveToolsBySender({
258
- toolsBySender: entry.toolsBySender,
259
- senderId: params.senderId,
260
- senderName: params.senderName,
261
- senderUsername: params.senderUsername,
262
- senderE164: params.senderE164
263
- }) ?? entry.tools;
264
- }
265
- function resolveSlackGroupRequireMention(params) {
266
- const resolved = resolveSlackChannelPolicyEntry(params);
267
- if (typeof resolved?.requireMention === "boolean") return resolved.requireMention;
268
- return true;
269
- }
270
- function resolveSlackGroupToolPolicy(params) {
271
- return resolveSenderToolsEntry(resolveSlackChannelPolicyEntry(params), params);
272
- }
273
- //#endregion
274
- //#region extensions/slack/src/reply-blocks.ts
275
- function resolveSlackReplyBlocks(payload) {
276
- const slackData = payload.channelData?.slack;
277
- let channelBlocks = [];
278
- if (slackData && typeof slackData === "object" && !Array.isArray(slackData)) channelBlocks = parseSlackBlocksInput(slackData.blocks) ?? [];
279
- const presentationBlocks = buildSlackPresentationBlocks(payload.presentation, resolveSlackInteractiveBlockOffsets(channelBlocks));
280
- const interactiveBlocks = buildSlackInteractiveBlocks(payload.interactive, resolveSlackInteractiveBlockOffsets([...channelBlocks, ...presentationBlocks]));
281
- const blocks = [
282
- ...channelBlocks,
283
- ...presentationBlocks,
284
- ...interactiveBlocks
285
- ];
286
- if (blocks.length > 50) throw new Error(`Slack blocks cannot exceed 50 items after interactive render`);
287
- return blocks.length > 0 ? blocks : void 0;
288
- }
289
- //#endregion
290
- export { resolveSlackApprovalKind as a, isSlackApprovalAuthorizedSender as c, isSlackExecApprovalClientEnabled as d, normalizeSlackApproverId as f, isSlackAnyNativeApprovalClientEnabled as i, getSlackExecApprovalApprovers as l, shouldSuppressLocalSlackExecApprovalPrompt as m, resolveSlackGroupRequireMention as n, shouldHandleSlackNativeApprovalRequest as o, resolveSlackExecApprovalTarget as p, resolveSlackGroupToolPolicy as r, getSlackApprovalApprovers as s, resolveSlackReplyBlocks as t, isSlackExecApprovalAuthorizedSender as u };