@openclaw/slack 2026.10.5-beta.3 → 2026.10.10-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/.setup/{account-inspect-D58VVDjk.mjs → account-inspect-CmkKiSb9.mjs} +1 -1
- package/dist/.setup/{accounts-BMg9YLIv.mjs → accounts-msihSF3-.mjs} +1 -1
- package/dist/.setup/{action-runtime-BiRZNsIG.mjs → action-runtime-CgYsBWl6.mjs} +5 -5
- package/dist/.setup/action-runtime.runtime-WS3mGjut.mjs +1 -0
- package/dist/.setup/{actions-KGKwTAKO.mjs → actions-CafoV8hS.mjs} +4 -4
- package/dist/.setup/{approval-handler.runtime-DYrsG2Ox.mjs → approval-handler.runtime-Pty8hAZ9.mjs} +8 -8
- package/dist/.setup/{approval-message-updates-CwdDew9i.mjs → approval-message-updates-DCnXFLf3.mjs} +1 -1
- package/dist/.setup/{channel-C7MY-Hhg.mjs → channel-B-jnk0Gl.mjs} +51 -55
- package/dist/.setup/{channel-type-NjX2SwvS.mjs → channel-type-BrbGGbzI.mjs} +3 -3
- package/dist/.setup/{channel.setup-BFpQowO3.mjs → channel.setup-u6QQdbTa.mjs} +4 -4
- package/dist/.setup/{config-schema-BH0K9-Um.mjs → config-schema-DNnh6bWU.mjs} +1 -1
- package/dist/.setup/{directory-config-BEDZPfDn.mjs → directory-config-Cjj0N8R0.mjs} +1 -1
- package/dist/.setup/{directory-live-FipfeCwt.mjs → directory-live-BIKD-5B_.mjs} +2 -2
- package/dist/.setup/http-C9sM-FXe.mjs +2 -0
- package/dist/.setup/{message-tool-api-C7im5ETh.mjs → message-tool-api-BS5ekEA_.mjs} +2 -2
- package/dist/.setup/{monitor-BnN2px0N.mjs → monitor-DmJ-Qbx4.mjs} +181 -145
- package/dist/.setup/{outbound-adapter-4HdGq-8r.mjs → outbound-adapter-BlN9vmT-.mjs} +4 -4
- package/dist/.setup/{pipeline.runtime-ByPbC6MN.mjs → pipeline.runtime-DOf1Ghcz.mjs} +66 -129
- package/dist/.setup/{plugin-routes-B8tooDLj.mjs → plugin-routes-D4qozHVn.mjs} +1 -1
- package/dist/.setup/{policy-BaY9_eh1.mjs → policy-D4eNyn8m.mjs} +2 -2
- package/dist/.setup/{probe-CyX52GtD.mjs → probe-IiHogLQN.mjs} +3 -9
- package/dist/.setup/{registry-CIbMfuf8.mjs → registry-DizWcnNp.mjs} +4 -11
- package/dist/.setup/{relay-source-CVfH-fBO.mjs → relay-source-CUVJNz6R.mjs} +2 -2
- package/dist/.setup/{replies-WmfwvQxc.mjs → replies-Cs9SqIIs.mjs} +4 -4
- package/dist/.setup/{reply-blocks-rqHQ_3pr.mjs → reply-blocks-CoZ_dGM_.mjs} +1 -1
- package/dist/.setup/{resolve-channels-B96cgprw.mjs → resolve-channels-DRRhElwz.mjs} +1 -1
- package/dist/.setup/{resolve-users-Xz9aPdns.mjs → resolve-users-Cz8e17ky.mjs} +1 -1
- package/dist/.setup/runtime-setter-api-Cx_PV-xu.mjs +2 -0
- package/dist/.setup/{scopes-aMcMHhXk.mjs → scopes-DfQVi8Jw.mjs} +1 -1
- package/dist/.setup/secret-contract-api-DB6CMdgc.mjs +2 -0
- package/dist/.setup/{send-CLmsR42r.mjs → send-pi6r24yv.mjs} +5 -5
- package/dist/.setup/{session-status-CcXe10zN.mjs → session-status-DQY4hZLd.mjs} +73 -29
- package/dist/.setup/setup-plugin-api-B18kDKtr.mjs +2 -0
- package/dist/.setup/{setup-surface-368jx6Uc.mjs → setup-surface-9WVQgYCT.mjs} +6 -6
- package/dist/.setup/{shared-CtprVh_G.mjs → shared-DpHCoKy2.mjs} +7 -6
- package/dist/.setup/{slash-dispatch.runtime-Dzwj6TPI.mjs → slash-dispatch.runtime-BlBuHX9x.mjs} +3 -2
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +15 -14
- package/dist/channel-config-api.js +1 -2
- package/dist/channel-plugin-api.js +1 -2
- package/dist/directory-contract-api.js +1 -2
- package/dist/doctor-contract-api.js +1 -2
- package/dist/http-routes-api.js +1 -2
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -2
- package/dist/runtime-api.js +11 -11
- package/dist/runtime-setter-api.js +1 -2
- package/dist/secret-contract-api.js +1 -2
- package/dist/security-contract-api.js +1 -2
- package/dist/setup-entry.js +3 -3
- package/dist/setup-plugin-api.js +1 -2
- package/node_modules/typebox/build/value/clean/from_object.mjs +1 -1
- package/node_modules/typebox/package.json +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +5 -5
- package/dist/.setup/action-runtime.runtime-C5xceJoS.mjs +0 -2
- package/dist/.setup/runtime-setter-api-CMFvhrAr.mjs +0 -3
- package/dist/.setup/secret-contract-api-DmUVxIRs.mjs +0 -3
- package/dist/.setup/setup-plugin-api-D92P5p51.mjs +0 -3
- package/dist/.setup/{security-audit-C1nOGzJa.mjs → security-audit-DFGiFLqd.mjs} +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { r as isSlackPluginAccountConfigured } from "./account-configured-zcR9TJJN.mjs";
|
|
2
|
-
import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, i as listSlackAccountIds, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-
|
|
2
|
+
import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, i as listSlackAccountIds, o as resolveDefaultSlackAccountId, s as resolveSlackAccount } from "./accounts-msihSF3-.mjs";
|
|
3
3
|
import { a as parseSlackTarget, n as formatSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-FFE26kOV.mjs";
|
|
4
4
|
import { t as slackContextTargetsMatch } from "./targets-C6LZQL1Q.mjs";
|
|
5
|
-
import { A as resolveSlackAllowListMatch, j as resolveSlackUserAllowListForTeam, o as formatSlackError } from "./probe-
|
|
5
|
+
import { A as resolveSlackAllowListMatch, j as resolveSlackUserAllowListForTeam, o as formatSlackError } from "./probe-IiHogLQN.mjs";
|
|
6
|
+
import { resolveGlobalMap } from "openclaw/plugin-sdk/global-singleton";
|
|
6
7
|
import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
|
|
7
8
|
import { asOptionalRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeStringifiedOptionalString, readNonBlankString } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
9
|
import { normalizeMessageChannel, resolveAgentRoute } from "openclaw/plugin-sdk/routing";
|
|
@@ -11,11 +12,10 @@ import { FormatCapabilityProfile, chunkTextForOutbound, markdownToIR, renderMark
|
|
|
11
12
|
import { sliceUtf16Safe, truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
12
13
|
import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference";
|
|
13
14
|
import { buildChannelKeyCandidates } from "openclaw/plugin-sdk/channel-targets";
|
|
14
|
-
import {
|
|
15
|
+
import { createNativeApprovalChannelRouteGatesAsync, doesApprovalRequestSelectChannelAccountAsync, resolveApprovalKind, resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime";
|
|
15
16
|
import { createChannelApprovalAuth, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
|
|
16
17
|
import { normalizeHyphenSlug, normalizeStringEntriesLower } from "openclaw/plugin-sdk/string-normalization-runtime";
|
|
17
|
-
import {
|
|
18
|
-
import { resolveGlobalMap } from "openclaw/plugin-sdk/global-singleton";
|
|
18
|
+
import { createChannelExecApprovalProfileAsync, isChannelExecApprovalClientEnabledFromConfig, isChannelExecApprovalTargetRecipient, matchesApprovalRequestFilters } from "openclaw/plugin-sdk/approval-client-runtime";
|
|
19
19
|
import { channelRouteTargetsMatchExact, stringifyRouteThreadId } from "openclaw/plugin-sdk/channel-route";
|
|
20
20
|
import { normalizeMessagePresentation, renderMessagePresentationChartFallbackText, renderMessagePresentationFallbackText, renderMessagePresentationTableFallbackText } from "openclaw/plugin-sdk/interactive-runtime";
|
|
21
21
|
import { buildApprovalResolutionRef } from "openclaw/plugin-sdk/approval-reference-runtime";
|
|
@@ -23,8 +23,7 @@ import { eastAsianWidthType } from "get-east-asian-width";
|
|
|
23
23
|
import { resolveIntegerOption } from "openclaw/plugin-sdk/number-runtime";
|
|
24
24
|
import { questionGatewayRuntime } from "openclaw/plugin-sdk/question-gateway-runtime";
|
|
25
25
|
import { readResponseTextLimited } from "openclaw/plugin-sdk/provider-http";
|
|
26
|
-
import { inspectRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-binding-runtime";
|
|
27
|
-
import { resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRoute } from "openclaw/plugin-sdk/conversation-runtime";
|
|
26
|
+
import { inspectRuntimeConversationBindingRoute, resolveConfiguredBindingRoute, resolveRuntimeConversationBindingRouteAsync } from "openclaw/plugin-sdk/conversation-binding-runtime";
|
|
28
27
|
import { resolveScopeRequireMention, resolveScopeToolsPolicy } from "openclaw/plugin-sdk/channel-policy";
|
|
29
28
|
//#region extensions/slack/src/action-threading.ts
|
|
30
29
|
const SLACK_PRIVATE_ACTION_DELIVERY_RESULT = Symbol("slack.action.delivery-result");
|
|
@@ -91,7 +90,7 @@ function getSlackExecApprovalApprovers(params) {
|
|
|
91
90
|
normalizeApprover: normalizeSlackApproverId
|
|
92
91
|
});
|
|
93
92
|
}
|
|
94
|
-
const slackExecApprovalProfile =
|
|
93
|
+
const slackExecApprovalProfile = createChannelExecApprovalProfileAsync({
|
|
95
94
|
resolveConfig: (params) => resolveSlackAccount(params).config.execApprovals,
|
|
96
95
|
resolveApprovers: getSlackExecApprovalApprovers,
|
|
97
96
|
normalizeSenderId: normalizeSlackApproverId,
|
|
@@ -213,8 +212,8 @@ function resolveSlackApprovalTeamId(params) {
|
|
|
213
212
|
function isSlackPluginApprovalRequest(request) {
|
|
214
213
|
return resolveApprovalKind(request) === "plugin";
|
|
215
214
|
}
|
|
216
|
-
function resolveSlackApproverDmTargets(params) {
|
|
217
|
-
if (!shouldHandleSlackNativeApprovalRequest(params)) return [];
|
|
215
|
+
async function resolveSlackApproverDmTargets(params) {
|
|
216
|
+
if (!await shouldHandleSlackNativeApprovalRequest(params)) return [];
|
|
218
217
|
const teamId = resolveSlackApprovalTeamId(params);
|
|
219
218
|
return (params.approvalKind === "plugin" ? isSlackPluginApprovalRequest(params.request) ? getSlackApprovalApproversForTeam({
|
|
220
219
|
...params,
|
|
@@ -325,7 +324,7 @@ function normalizeSlackForwardTarget(target) {
|
|
|
325
324
|
threadId: stringifyRouteThreadId(target.threadId)
|
|
326
325
|
};
|
|
327
326
|
}
|
|
328
|
-
const { canApprovalPotentiallyRouteToChannel: canApprovalPotentiallyRouteToSlack, isSessionApprovalEligible: isForwardedSlackSessionApprovalEligible, isExplicitTargetEligible: isForwardedSlackExplicitTargetEligible } =
|
|
327
|
+
const { canApprovalPotentiallyRouteToChannel: canApprovalPotentiallyRouteToSlack, isSessionApprovalEligible: isForwardedSlackSessionApprovalEligible, isExplicitTargetEligible: isForwardedSlackExplicitTargetEligible } = createNativeApprovalChannelRouteGatesAsync({
|
|
329
328
|
channel: "slack",
|
|
330
329
|
defaultForwardingMode: "session",
|
|
331
330
|
isTransportEnabled: isSlackApprovalTransportEnabled,
|
|
@@ -343,8 +342,8 @@ function isSlackPluginNativeApprovalClientConfigEnabled(params) {
|
|
|
343
342
|
approverCount: getSlackApprovalApprovers(params).length
|
|
344
343
|
});
|
|
345
344
|
}
|
|
346
|
-
function shouldHandleSlackViaNativeClientConfig(params) {
|
|
347
|
-
if (!
|
|
345
|
+
async function shouldHandleSlackViaNativeClientConfig(params) {
|
|
346
|
+
if (!await doesApprovalRequestSelectChannelAccountAsync({
|
|
348
347
|
...params,
|
|
349
348
|
channel: "slack",
|
|
350
349
|
defaultAccountId: resolveDefaultSlackAccountId(params.cfg),
|
|
@@ -383,7 +382,7 @@ function listSlackNativeApprovalEligibleAccountIds(params) {
|
|
|
383
382
|
accountId
|
|
384
383
|
}) ? [accountId] : [];
|
|
385
384
|
}
|
|
386
|
-
function shouldHandleSlackPluginViaForwardingSession(params) {
|
|
385
|
+
async function shouldHandleSlackPluginViaForwardingSession(params) {
|
|
387
386
|
return isForwardedSlackSessionApprovalEligible({
|
|
388
387
|
...params,
|
|
389
388
|
approvalKind: "plugin"
|
|
@@ -395,7 +394,7 @@ function isSlackAnyNativeApprovalClientEnabled(params) {
|
|
|
395
394
|
approvalKind: "plugin"
|
|
396
395
|
});
|
|
397
396
|
}
|
|
398
|
-
function shouldHandleSlackNativeApprovalRequest(params) {
|
|
397
|
+
async function shouldHandleSlackNativeApprovalRequest(params) {
|
|
399
398
|
if (getSlackInstallationKind(resolveSlackAccount(params).accountId) === "enterprise" && !resolveSlackApprovalOriginTeamId(params.request)) return false;
|
|
400
399
|
const approvalKind = resolveApprovalKind(params.request, params.approvalKind);
|
|
401
400
|
if (approvalKind === "plugin") {
|
|
@@ -404,10 +403,10 @@ function shouldHandleSlackNativeApprovalRequest(params) {
|
|
|
404
403
|
...params,
|
|
405
404
|
approvalKind
|
|
406
405
|
});
|
|
407
|
-
return shouldHandleSlackViaNativeClientConfig({
|
|
406
|
+
return await shouldHandleSlackViaNativeClientConfig({
|
|
408
407
|
...params,
|
|
409
408
|
approvalKind
|
|
410
|
-
}) || shouldHandleSlackPluginViaForwardingSession(params) || (params.cfg.approvals?.plugin?.targets ?? []).some((target) => isForwardedSlackExplicitTargetEligible({
|
|
409
|
+
}) || await shouldHandleSlackPluginViaForwardingSession(params) || (params.cfg.approvals?.plugin?.targets ?? []).some((target) => isForwardedSlackExplicitTargetEligible({
|
|
411
410
|
...params,
|
|
412
411
|
approvalKind,
|
|
413
412
|
target
|
|
@@ -907,7 +906,8 @@ function escapeSlackMrkdwnContent(text, mentions) {
|
|
|
907
906
|
const matchIndex = match.index;
|
|
908
907
|
out.push(escapeSlackMrkdwn(text.slice(lastIndex, matchIndex)));
|
|
909
908
|
const token = match[0];
|
|
910
|
-
|
|
909
|
+
const escapeControl = mentions === "escape-controls" && /^<[@#!]/u.test(token);
|
|
910
|
+
out.push(isAllowedSlackAngleToken(token) && !escapeControl ? token : escapeSlackMrkdwn(token));
|
|
911
911
|
lastIndex = matchIndex + token.length;
|
|
912
912
|
}
|
|
913
913
|
out.push(escapeSlackMrkdwn(text.slice(lastIndex)));
|
|
@@ -922,7 +922,7 @@ function escapeSlackMrkdwnText(text, mentions) {
|
|
|
922
922
|
}
|
|
923
923
|
function buildSlackLink(link, text) {
|
|
924
924
|
const href = link.href.trim();
|
|
925
|
-
if (!href) return null;
|
|
925
|
+
if (!href || /^[@#!]/u.test(href)) return null;
|
|
926
926
|
const trimmedLabel = text.slice(link.start, link.end).trim();
|
|
927
927
|
const comparableHref = href.startsWith("mailto:") ? href.slice(7) : href;
|
|
928
928
|
if (!(trimmedLabel.length > 0 && trimmedLabel !== href && trimmedLabel !== comparableHref)) return null;
|
|
@@ -1348,7 +1348,7 @@ function readControlElementText(value, options = {}) {
|
|
|
1348
1348
|
const element = asOptionalRecord(value);
|
|
1349
1349
|
const type = normalizeOptionalString(element?.type);
|
|
1350
1350
|
if (type === "button" || type === "workflow_button") return normalizeOptionalString(element?.text) ?? readTextObject(element?.text, options);
|
|
1351
|
-
if (type && SLACK_SELECT_ELEMENT_TYPES.has(type)) {
|
|
1351
|
+
if (type && (SLACK_SELECT_ELEMENT_TYPES.has(type) || type === "overflow")) {
|
|
1352
1352
|
if (!options.includeSelectOptions) return readTextObject(element?.placeholder, options);
|
|
1353
1353
|
const choices = Array.isArray(element?.options) ? element.options : [];
|
|
1354
1354
|
return [readTextObject(element?.placeholder, options), ...choices.map((choice) => readTextObject(asOptionalRecord(choice)?.text, options))].filter(Boolean).join("\n");
|
|
@@ -1559,10 +1559,10 @@ function normalizeSlackRouteBindingConfig(cfg) {
|
|
|
1559
1559
|
}
|
|
1560
1560
|
function resolveSlackConversationBindingRoute(params) {
|
|
1561
1561
|
const { resolveRoute } = params;
|
|
1562
|
-
const resolveRuntime = (input, role) =>
|
|
1562
|
+
const resolveRuntime = (input, role) => inspectRuntimeConversationBindingRoute({
|
|
1563
1563
|
...input,
|
|
1564
1564
|
inspection: params.inspections[role]
|
|
1565
|
-
})
|
|
1565
|
+
});
|
|
1566
1566
|
let baseRuntimeRoute;
|
|
1567
1567
|
const resolveBaseRoute = (threadInspection) => baseRuntimeRoute ??= resolveRuntime({
|
|
1568
1568
|
resolveRoute: threadInspection ? (selection) => inspectRuntimeConversationBindingRoute({
|
|
@@ -1586,9 +1586,39 @@ function resolveSlackConversationBindingRoute(params) {
|
|
|
1586
1586
|
parentConversationId: params.baseConversationId
|
|
1587
1587
|
}
|
|
1588
1588
|
}, "thread") : null;
|
|
1589
|
-
|
|
1589
|
+
return applySlackConfiguredBindingRoute(params, !params.bindingsEnabled ? resolveUnboundSlackRoute(params) : boundThreadRoute && (boundThreadRoute.bindingRecord || boundThreadRoute.bindingOwnerAvailable === false) ? boundThreadRoute : resolveBaseRoute());
|
|
1590
|
+
}
|
|
1591
|
+
async function resolveSlackConversationBindingRouteAsync(params) {
|
|
1592
|
+
if (!params.bindingsEnabled) return applySlackConfiguredBindingRoute(params, resolveUnboundSlackRoute(params));
|
|
1593
|
+
let baseRuntimeRoute;
|
|
1594
|
+
const resolveBaseRoute = (threadInspection) => baseRuntimeRoute ??= resolveRuntimeConversationBindingRouteAsync({
|
|
1595
|
+
resolveRoute: threadInspection ? (selection) => inspectRuntimeConversationBindingRoute({
|
|
1596
|
+
route: params.resolveRoute(selection),
|
|
1597
|
+
inspection: threadInspection
|
|
1598
|
+
}).route : params.resolveRoute,
|
|
1599
|
+
touchBinding: params.touchBinding,
|
|
1600
|
+
conversation: {
|
|
1601
|
+
channel: "slack",
|
|
1602
|
+
accountId: params.accountId,
|
|
1603
|
+
conversationId: params.baseConversationId
|
|
1604
|
+
}
|
|
1605
|
+
});
|
|
1606
|
+
const boundThreadRoute = params.runtimeBindingThreadId ? await resolveRuntimeConversationBindingRouteAsync({
|
|
1607
|
+
resolveRoute: async (selection) => selection.bindingRecord || !selection.bindingOwnerAvailable ? params.resolveRoute(selection) : (await resolveBaseRoute(selection.inspection)).route,
|
|
1608
|
+
touchBinding: params.touchBinding,
|
|
1609
|
+
conversation: {
|
|
1610
|
+
channel: "slack",
|
|
1611
|
+
accountId: params.accountId,
|
|
1612
|
+
conversationId: params.runtimeBindingThreadId,
|
|
1613
|
+
parentConversationId: params.baseConversationId
|
|
1614
|
+
}
|
|
1615
|
+
}) : null;
|
|
1616
|
+
return applySlackConfiguredBindingRoute(params, boundThreadRoute && (boundThreadRoute.bindingRecord || boundThreadRoute.bindingOwnerAvailable === false) ? boundThreadRoute : await resolveBaseRoute());
|
|
1617
|
+
}
|
|
1618
|
+
function resolveUnboundSlackRoute(params) {
|
|
1619
|
+
return {
|
|
1590
1620
|
bindingOwnerAvailable: true,
|
|
1591
|
-
route: resolveRoute({
|
|
1621
|
+
route: params.resolveRoute({
|
|
1592
1622
|
inspection: {
|
|
1593
1623
|
status: "available",
|
|
1594
1624
|
binding: null
|
|
@@ -1598,7 +1628,9 @@ function resolveSlackConversationBindingRoute(params) {
|
|
|
1598
1628
|
}),
|
|
1599
1629
|
bindingRecord: null,
|
|
1600
1630
|
boundSessionKey: void 0
|
|
1601
|
-
}
|
|
1631
|
+
};
|
|
1632
|
+
}
|
|
1633
|
+
function applySlackConfiguredBindingRoute(params, runtimeRoute) {
|
|
1602
1634
|
const configuredRoute = params.bindingsEnabled && !runtimeRoute.boundSessionKey && !runtimeRoute.bindingRecord ? resolveConfiguredBindingRoute({
|
|
1603
1635
|
cfg: params.cfg,
|
|
1604
1636
|
route: runtimeRoute.route,
|
|
@@ -1650,6 +1682,17 @@ function qualifySlackConversationId(conversationId, eventScope) {
|
|
|
1650
1682
|
return eventScope ? `team:${encodeURIComponent(eventScope.teamId)}:${conversationId}` : conversationId;
|
|
1651
1683
|
}
|
|
1652
1684
|
//#endregion
|
|
1685
|
+
//#region extensions/slack/src/channel-policy-state.ts
|
|
1686
|
+
const slackChannelPolicyBindings = resolveGlobalMap(Symbol.for("openclaw.slack.channel-policy-bindings"), "close-and-restart");
|
|
1687
|
+
function setSlackChannelPolicyBindings(accountId, bindings) {
|
|
1688
|
+
slackChannelPolicyBindings.set(normalizeAccountId(accountId), new Map([...bindings].map(([key, id]) => [key, id.toUpperCase()])));
|
|
1689
|
+
}
|
|
1690
|
+
function getSlackChannelPolicyKeys(accountId, channelId) {
|
|
1691
|
+
const id = channelId?.trim().toUpperCase();
|
|
1692
|
+
if (!id) return [];
|
|
1693
|
+
return [...slackChannelPolicyBindings.get(normalizeAccountId(accountId)) ?? []].filter(([, resolvedId]) => resolvedId === id).map(([key]) => key);
|
|
1694
|
+
}
|
|
1695
|
+
//#endregion
|
|
1653
1696
|
//#region extensions/slack/src/group-policy.ts
|
|
1654
1697
|
function buildSlackChannelIdCandidates(channelId, teamId, options) {
|
|
1655
1698
|
const trimmedId = channelId?.trim();
|
|
@@ -1679,12 +1722,13 @@ function buildSlackChannelPolicyScope(params) {
|
|
|
1679
1722
|
}
|
|
1680
1723
|
function resolveSlackGroupPolicyScope(params) {
|
|
1681
1724
|
const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
|
|
1682
|
-
const
|
|
1683
|
-
const
|
|
1725
|
+
const slack = mergeSlackAccountConfig(params.cfg, accountId);
|
|
1726
|
+
const channels = slack.channels;
|
|
1727
|
+
const channelName = slack.dangerouslyAllowNameMatching === true ? params.groupChannel?.replace(/^#/, "") : void 0;
|
|
1684
1728
|
const allowUnscoped = getSlackInstallationKind(accountId) !== "enterprise";
|
|
1685
1729
|
return buildSlackChannelPolicyScope({
|
|
1686
1730
|
channels,
|
|
1687
|
-
candidates: buildChannelKeyCandidates(...buildSlackChannelIdCandidates(params.groupId, params.groupSpace, { allowUnscoped }), channelName ? `#${channelName}` : void 0, channelName, normalizeHyphenSlug(channelName))
|
|
1731
|
+
candidates: buildChannelKeyCandidates(...buildSlackChannelIdCandidates(params.groupId, params.groupSpace, { allowUnscoped }), ...getSlackChannelPolicyKeys(accountId, params.groupId), channelName ? `#${channelName}` : void 0, channelName, normalizeHyphenSlug(channelName))
|
|
1688
1732
|
});
|
|
1689
1733
|
}
|
|
1690
1734
|
function resolveSlackGroupRequireMention(params) {
|
|
@@ -1744,4 +1788,4 @@ async function renameSlackSession(params) {
|
|
|
1744
1788
|
}
|
|
1745
1789
|
}
|
|
1746
1790
|
//#endregion
|
|
1747
|
-
export {
|
|
1791
|
+
export { buildSlackDataVisualizationBlock as $, SLACK_MESSAGE_TEXT_HARD_LIMIT as A, resolveSlackApprovalTeamId as At, SLACK_REPLY_SELECT_ACTION_ID as B, resolvePluginApprovalSlackApprovers as Bt, isSlackNativeResponseUrlRejection as C, resolveSlackFallbackOriginTarget as Ct, buildSlackCompleteBlocksFallbackText as D, slackTargetsMatch as Dt, buildSlackBlocksFallbackText as E, shouldHandleSlackPluginViaForwardingSession as Et, truncateSlackTextByUtf8Bytes as F, isSlackExecApprovalAuthorizedSender as Ft, isSlackQuestionActionId as G, SLACK_SESSION_LINK_ACTION_ID as H, resolveSlackAutoThreadId as Ht, SLACK_BUTTON_ACTION_IDS as I, isSlackExecApprovalClientEnabled as It, encodeSlackQuestionAction as J, resolveSlackQuestionActionIds as K, SLACK_QUESTION_FINALIZATION_BLOCKS as L, normalizeSlackApproverId as Lt, SLACK_TEXT_LIMIT as M, isSlackWorkspaceInstallation as Mt, countSlackTextUtf8Bytes as N, registerSlackInstallationState as Nt, renderSlackBlockFallbackText as O, getSlackApprovalApproversForTeam as Ot, truncateSlackText as P, getSlackExecApprovalApprovers as Pt, normalizeSlackOutboundText as Q, SLACK_REPLY_BUTTON_ACTION_ID as R, resolveSlackExecApprovalTarget as Rt, isSlackInvalidBlocksResponse as S, resolveSlackApproverDmTargets as St, stripSlackNativeDataBlocks as T, shouldHandleSlackNativeApprovalRequest as Tt, isSlackApprovalActionId as U, SLACK_SELECT_ACTION_IDS as V, SLACK_PRIVATE_ACTION_DELIVERY_RESULT as Vt, isSlackCallbackActionId as W, chunkSlackMrkdwnText as X, resolveSlackQuestionAction as Y, markdownToSlackMrkdwnChunks as Z, appendSlackNativeDataPlainTextFallback as _, isSlackAnyNativeApprovalClientEnabled as _t, resolveSlackGroupRequireMention as a, renderSlackMessagePresentationChartFallbackText as at, hasSlackNativeDataBlock as b, normalizeSlackOriginTarget as bt, qualifySlackConversationId as c, SLACK_APPROVAL_HEADER_BLOCK_ID as ct, normalizeSlackRouteBindingConfig as d, SLACK_BUTTON_VALUE_MAX as dt, hasSlackDataVisualizationBlock as et, resolveSlackConversationBindingRoute as f, SLACK_PRESENTATION_CAPABILITIES as ft, appendSlackNativeDataFallbackText as g, validateSlackBlocksArray as gt, SLACK_MALFORMED_NATIVE_DATA_FALLBACK as h, parseSlackBlocksInput as ht, buildSlackChannelPolicyScope as i, countSlackDataTableCellCharacters as it, SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT as j, getSlackInstallationKind as jt, SLACK_EDIT_TEXT_MAX_BYTES as k, isSlackPluginApprovalAuthorizedSender as kt, qualifySlackRoutePeerId as l, decodeSlackApprovalAction as lt, assertSlackDetachedTargetAllowed as m, SLACK_MAX_BLOCKS as mt, setSlackSessionStatus as n, buildSlackDataTableBlock as nt, resolveSlackGroupToolPolicy as o, renderSlackMessagePresentationFallbackText as ot, resolveSlackConversationBindingRouteAsync as p, SLACK_SECTION_TEXT_MAX as pt, decodeSlackQuestionAction as q, buildSlackChannelIdCandidates as r, countSlackDataTableBlocksCellCharacters as rt, setSlackChannelPolicyBindings as s, escapeSlackMrkdwn as st, renameSlackSession as t, SLACK_DATA_TABLE_AGGREGATE_CELL_CHARACTERS_MAX as tt, resolveSlackAgentRoute as u, encodeSlackApprovalAction as ut, buildSlackNativeDataAccessibilityText as v, isSlackPluginApprovalRequest as vt, renderSlackNativeDataPlainTextBlock as w, resolveTurnSourceSlackOriginTarget as wt, isSlackInvalidBlocksError as x, resolveSessionSlackOriginTarget as xt, createSlackNativeDataBaseTextConsumer as y, normalizeSlackForwardTarget as yt, SLACK_REPLY_LINK_ACTION_ID as z, shouldSuppressLocalSlackExecApprovalPrompt as zt };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { c as resolveSlackAccountAllowFrom, o as resolveDefaultSlackAccountId } from "./accounts-
|
|
2
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
3
|
-
import "./shared-
|
|
4
|
-
import { a as buildSlackAllowFromPrompt, i as SLACK_CHANNEL, n as createSlackSetupWizardBase } from "./channel.setup-
|
|
5
|
-
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-
|
|
6
|
-
import { t as resolveSlackUserAllowlist } from "./resolve-users-
|
|
1
|
+
import { c as resolveSlackAccountAllowFrom, o as resolveDefaultSlackAccountId } from "./accounts-msihSF3-.mjs";
|
|
2
|
+
import { t as inspectSlackAccount } from "./account-inspect-CmkKiSb9.mjs";
|
|
3
|
+
import "./shared-DpHCoKy2.mjs";
|
|
4
|
+
import { a as buildSlackAllowFromPrompt, i as SLACK_CHANNEL, n as createSlackSetupWizardBase } from "./channel.setup-u6QQdbTa.mjs";
|
|
5
|
+
import { t as resolveSlackChannelAllowlist } from "./resolve-channels-DRRhElwz.mjs";
|
|
6
|
+
import { t as resolveSlackUserAllowlist } from "./resolve-users-Cz8e17ky.mjs";
|
|
7
7
|
import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
8
8
|
import { resolveBasicAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
|
|
9
9
|
import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, patchChannelConfigForAccount, promptResolvedAllowFrom, resolveEntriesWithOptionalToken, resolveSetupAccountId, splitSetupEntries } from "openclaw/plugin-sdk/setup-runtime";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { r as isSlackPluginAccountConfigured } from "./account-configured-zcR9TJJN.mjs";
|
|
2
|
-
import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, i as listSlackAccountIds, l as resolveSlackAccountDmPolicy } from "./accounts-
|
|
3
|
-
import { t as inspectSlackAccount } from "./account-inspect-
|
|
2
|
+
import { a as mergeSlackAccountConfig, c as resolveSlackAccountAllowFrom, i as listSlackAccountIds, l as resolveSlackAccountDmPolicy } from "./accounts-msihSF3-.mjs";
|
|
3
|
+
import { t as inspectSlackAccount } from "./account-inspect-CmkKiSb9.mjs";
|
|
4
4
|
import { a as parseSlackTarget } from "./target-parsing-FFE26kOV.mjs";
|
|
5
|
-
import { a as slackIngressIdentity, t as probeSlack } from "./probe-
|
|
5
|
+
import { a as slackIngressIdentity, t as probeSlack } from "./probe-IiHogLQN.mjs";
|
|
6
6
|
import { n as SLACK_CHANNEL_META } from "./channel-meta-C443t-lI.mjs";
|
|
7
|
-
import { r as slackBaseConfigAdapter, t as slackSetupPlugin } from "./channel.setup-
|
|
7
|
+
import { r as slackBaseConfigAdapter, t as slackSetupPlugin } from "./channel.setup-u6QQdbTa.mjs";
|
|
8
8
|
import { n as normalizeCompatibilityConfig, r as runtime_doctor_migrations_exports, t as legacyConfigRules } from "./doctor-contract-Cd4-VzIM.mjs";
|
|
9
9
|
import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-B-Qm6aQQ.mjs";
|
|
10
10
|
import { adaptScopedAccountAccessor, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
|
|
@@ -53,7 +53,7 @@ const collectSlackSecurityFindings = createConditionalWarningCollector.findings(
|
|
|
53
53
|
severity: "warn",
|
|
54
54
|
title: "Slack security warning"
|
|
55
55
|
});
|
|
56
|
-
const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-
|
|
56
|
+
const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-DFGiFLqd.mjs").then((n) => n.n));
|
|
57
57
|
const slackSecurityAdapter = {
|
|
58
58
|
resolveDmPolicy: resolveSlackDmPolicy,
|
|
59
59
|
collectWarnings: collectSlackSecurityFindings,
|
|
@@ -150,7 +150,7 @@ function collectSlackNameKeyedChannelWarnings({ cfg }) {
|
|
|
150
150
|
warnings.add(`${channelsPrefix}.channels."${channelKey}" is ambiguous: it may be a lowercase Slack channel ID or a channel name. If it is a channel name, inbound routing will not match it and ${fallbackDescription}. Re-key it with the channel's stable ID (e.g. C0123ABCD, from the channel's About details or conversations.info).`);
|
|
151
151
|
continue;
|
|
152
152
|
}
|
|
153
|
-
warnings.add(`${channelsPrefix}.channels."${channelKey}" is keyed by a channel name or
|
|
153
|
+
warnings.add(`${channelsPrefix}.channels."${channelKey}" is keyed by a channel name or unsupported ID form, not a routable Slack channel ID; under groupPolicy: "${effectiveGroupPolicy}" inbound routing does not match this entry, so ${fallbackDescription}. Re-key it with the channel's ID (e.g. C0123ABCD, from the channel's About details or conversations.info).`);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
return [...warnings];
|
|
@@ -216,6 +216,7 @@ const slackPluginBase = {
|
|
|
216
216
|
},
|
|
217
217
|
doctor: slackDoctor,
|
|
218
218
|
agentPrompt: {
|
|
219
|
+
customInlineButtonHint: true,
|
|
219
220
|
inboundFormattingHints: () => ({
|
|
220
221
|
text_markup: "markdown",
|
|
221
222
|
rules: [
|
package/dist/.setup/{slash-dispatch.runtime-Dzwj6TPI.mjs → slash-dispatch.runtime-BlBuHX9x.mjs}
RENAMED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { i as sanitizeSlackMonitorReplyPayload, r as deliverSlackSlashReplies } from "./replies-
|
|
1
|
+
import { i as sanitizeSlackMonitorReplyPayload, r as deliverSlackSlashReplies } from "./replies-Cs9SqIIs.mjs";
|
|
2
2
|
import { resolveAgentRoute } from "openclaw/plugin-sdk/routing";
|
|
3
3
|
import { resolveMarkdownTableMode } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
4
4
|
import { resolveConversationLabel } from "openclaw/plugin-sdk/conversation-runtime";
|
|
5
5
|
import { dispatchChannelInboundTurn, isChannelPartialDeliveryError } from "openclaw/plugin-sdk/channel-inbound";
|
|
6
6
|
import { finalizeInboundContext, resolveChunkMode } from "openclaw/plugin-sdk/reply-runtime";
|
|
7
|
-
|
|
7
|
+
import { recordDeliveredCommandExchange } from "openclaw/plugin-sdk/session-transcript-runtime";
|
|
8
|
+
export { deliverSlackSlashReplies, dispatchChannelInboundTurn, finalizeInboundContext, isChannelPartialDeliveryError, recordDeliveredCommandExchange, resolveAgentRoute, resolveChunkMode, resolveConversationLabel, resolveMarkdownTableMode, sanitizeSlackMonitorReplyPayload };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as inspectSlackAccount } from "./.setup/account-inspect-
|
|
1
|
+
import { t as inspectSlackAccount } from "./.setup/account-inspect-CmkKiSb9.mjs";
|
|
2
2
|
//#region extensions/slack/account-inspect-api.ts
|
|
3
3
|
function inspectSlackReadOnlyAccount(cfg, accountId) {
|
|
4
4
|
return inspectSlackAccount({
|
package/dist/api.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./.setup/registry-
|
|
2
|
-
import { a as mergeSlackAccountConfig, f as resolveSlackReplyToMode, i as listSlackAccountIds, o as resolveDefaultSlackAccountId, r as listEnabledSlackAccounts, s as resolveSlackAccount } from "./.setup/accounts-
|
|
3
|
-
import { t as inspectSlackAccount } from "./.setup/account-inspect-
|
|
1
|
+
import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./.setup/registry-DizWcnNp.mjs";
|
|
2
|
+
import { a as mergeSlackAccountConfig, f as resolveSlackReplyToMode, i as listSlackAccountIds, o as resolveDefaultSlackAccountId, r as listEnabledSlackAccounts, s as resolveSlackAccount } from "./.setup/accounts-msihSF3-.mjs";
|
|
3
|
+
import { t as inspectSlackAccount } from "./.setup/account-inspect-CmkKiSb9.mjs";
|
|
4
4
|
import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId } from "./.setup/target-parsing-FFE26kOV.mjs";
|
|
5
5
|
import "./.setup/targets-C6LZQL1Q.mjs";
|
|
6
|
-
import {
|
|
7
|
-
import { A as resolveSlackAllowListMatch, D as allowListMatches, E as resolveSlackWriteClientOptions, M as resolveSlackUserAllowed, O as normalizeSlackAllowOwnerEntry, S as SLACK_WRITE_RETRY_OPTIONS, T as resolveSlackWebClientOptions, _ as getSlackWriteClient, h as createSlackWriteClient, k as normalizeSlackSlug, m as createSlackWebClient, p as createSlackTokenCacheKey, t as probeSlack, x as SLACK_DEFAULT_RETRY_OPTIONS } from "./.setup/probe-
|
|
8
|
-
import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./.setup/channel-
|
|
9
|
-
import { d as buildSlackInteractiveBlocks, f as buildSlackPresentationBlocks } from "./.setup/reply-blocks-
|
|
10
|
-
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./.setup/message-tool-api-
|
|
11
|
-
import { n as resolveSlackChannelType } from "./.setup/channel-type-
|
|
12
|
-
import { t as slackSetupPlugin } from "./.setup/channel.setup-
|
|
13
|
-
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-
|
|
14
|
-
import { a as clearSlackThreadParticipationCache, s as hasSlackThreadParticipation, u as recordSlackThreadParticipation } from "./.setup/send-
|
|
15
|
-
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-
|
|
16
|
-
import
|
|
6
|
+
import { Ht as resolveSlackAutoThreadId, a as resolveSlackGroupRequireMention, gt as validateSlackBlocksArray, ht as parseSlackBlocksInput, mt as SLACK_MAX_BLOCKS, o as resolveSlackGroupToolPolicy } from "./.setup/session-status-DQY4hZLd.mjs";
|
|
7
|
+
import { A as resolveSlackAllowListMatch, D as allowListMatches, E as resolveSlackWriteClientOptions, M as resolveSlackUserAllowed, O as normalizeSlackAllowOwnerEntry, S as SLACK_WRITE_RETRY_OPTIONS, T as resolveSlackWebClientOptions, _ as getSlackWriteClient, h as createSlackWriteClient, k as normalizeSlackSlug, m as createSlackWebClient, p as createSlackTokenCacheKey, t as probeSlack, x as SLACK_DEFAULT_RETRY_OPTIONS } from "./.setup/probe-IiHogLQN.mjs";
|
|
8
|
+
import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./.setup/channel-B-jnk0Gl.mjs";
|
|
9
|
+
import { d as buildSlackInteractiveBlocks, f as buildSlackPresentationBlocks } from "./.setup/reply-blocks-CoZ_dGM_.mjs";
|
|
10
|
+
import { n as extractSlackToolSend, r as listSlackMessageActions } from "./.setup/message-tool-api-BS5ekEA_.mjs";
|
|
11
|
+
import { n as resolveSlackChannelType } from "./.setup/channel-type-BrbGGbzI.mjs";
|
|
12
|
+
import { t as slackSetupPlugin } from "./.setup/channel.setup-u6QQdbTa.mjs";
|
|
13
|
+
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-CafoV8hS.mjs";
|
|
14
|
+
import { a as clearSlackThreadParticipationCache, s as hasSlackThreadParticipation, u as recordSlackThreadParticipation } from "./.setup/send-pi6r24yv.mjs";
|
|
15
|
+
import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-Cjj0N8R0.mjs";
|
|
16
|
+
import "./.setup/http-C9sM-FXe.mjs";
|
|
17
|
+
import { t as collectSlackSecurityAuditFindings } from "./.setup/security-audit-DFGiFLqd.mjs";
|
|
17
18
|
import { normalizeStringEntries as normalizeAllowList, normalizeStringEntriesLower as normalizeAllowListLower } from "openclaw/plugin-sdk/string-normalization-runtime";
|
|
18
19
|
import { resolveOpenProviderRuntimeGroupPolicy as resolveSlackRuntimeGroupPolicy } from "openclaw/plugin-sdk/runtime-group-policy";
|
|
19
20
|
export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, collectSlackSecurityAuditFindings, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, 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,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { SlackChannelConfigSchema };
|
|
1
|
+
export { t as SlackChannelConfigSchema } from "./.setup/config-schema-DNnh6bWU.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { slackPlugin };
|
|
1
|
+
export { t as slackPlugin } from "./.setup/channel-B-jnk0Gl.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig };
|
|
1
|
+
export { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-Cjj0N8R0.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { legacyConfigRules, normalizeCompatibilityConfig };
|
|
1
|
+
export { t as legacyConfigRules, n as normalizeCompatibilityConfig } from "./.setup/doctor-contract-Cd4-VzIM.mjs";
|
package/dist/http-routes-api.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { registerSlackPluginHttpRoutes };
|
|
1
|
+
export { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-D4qozHVn.mjs";
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-
|
|
1
|
+
import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-D4qozHVn.mjs";
|
|
2
2
|
import "./http-routes-api.js";
|
|
3
3
|
import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
4
4
|
//#region extensions/slack/index.ts
|
package/dist/message-tool-api.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { describeSlackMessageTool as describeMessageTool };
|
|
1
|
+
export { t as describeMessageTool } from "./.setup/message-tool-api-BS5ekEA_.mjs";
|
package/dist/runtime-api.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-
|
|
2
|
-
import { h as resolveSlackBotToken, i as listSlackAccountIds, m as resolveSlackAppToken, o as resolveDefaultSlackAccountId, r as listEnabledSlackAccounts, s as resolveSlackAccount } from "./.setup/accounts-
|
|
3
|
-
import { a as resolveSlackGroupRequireMention, o as resolveSlackGroupToolPolicy } from "./.setup/session-status-
|
|
4
|
-
import { t as probeSlack } from "./.setup/probe-
|
|
1
|
+
import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-D4qozHVn.mjs";
|
|
2
|
+
import { h as resolveSlackBotToken, i as listSlackAccountIds, m as resolveSlackAppToken, o as resolveDefaultSlackAccountId, r as listEnabledSlackAccounts, s as resolveSlackAccount } from "./.setup/accounts-msihSF3-.mjs";
|
|
3
|
+
import { a as resolveSlackGroupRequireMention, o as resolveSlackGroupToolPolicy } from "./.setup/session-status-DQY4hZLd.mjs";
|
|
4
|
+
import { t as probeSlack } from "./.setup/probe-IiHogLQN.mjs";
|
|
5
5
|
import { r as setSlackRuntime } from "./.setup/runtime-JSVZSWAj.mjs";
|
|
6
|
-
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-
|
|
7
|
-
import { t as sendMessageSlack } from "./.setup/send-
|
|
8
|
-
import { n as slackActionRuntime, t as handleSlackAction } from "./.setup/action-runtime-
|
|
9
|
-
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./.setup/directory-live-
|
|
10
|
-
import { n as monitorSlackProvider } from "./.setup/monitor-
|
|
11
|
-
import { t as resolveSlackChannelAllowlist } from "./.setup/resolve-channels-
|
|
12
|
-
import { t as resolveSlackUserAllowlist } from "./.setup/resolve-users-
|
|
6
|
+
import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-CafoV8hS.mjs";
|
|
7
|
+
import { t as sendMessageSlack } from "./.setup/send-pi6r24yv.mjs";
|
|
8
|
+
import { n as slackActionRuntime, t as handleSlackAction } from "./.setup/action-runtime-CgYsBWl6.mjs";
|
|
9
|
+
import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./.setup/directory-live-BIKD-5B_.mjs";
|
|
10
|
+
import { n as monitorSlackProvider } from "./.setup/monitor-DmJ-Qbx4.mjs";
|
|
11
|
+
import { t as resolveSlackChannelAllowlist } from "./.setup/resolve-channels-DRRhElwz.mjs";
|
|
12
|
+
import { t as resolveSlackUserAllowlist } from "./.setup/resolve-users-Cz8e17ky.mjs";
|
|
13
13
|
export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { setSlackRuntime };
|
|
1
|
+
export { r as setSlackRuntime } from "./.setup/runtime-JSVZSWAj.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
|
|
1
|
+
export { t as channelSecrets, n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./.setup/secret-contract-B-Qm6aQQ.mjs";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { collectSlackSecurityAuditFindings };
|
|
1
|
+
export { t as collectSlackSecurityAuditFindings } from "./.setup/security-audit-DFGiFLqd.mjs";
|
package/dist/setup-entry.js
CHANGED
|
@@ -4,15 +4,15 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
var setup_entry_default = defineBundledChannelSetupEntry({
|
|
5
5
|
importMetaUrl: import.meta.url,
|
|
6
6
|
plugin: {
|
|
7
|
-
specifier: fileURLToPath(new URL(".setup/setup-plugin-api-
|
|
7
|
+
specifier: fileURLToPath(new URL(".setup/setup-plugin-api-B18kDKtr.mjs", import.meta.url).href),
|
|
8
8
|
exportName: "slackSetupPlugin"
|
|
9
9
|
},
|
|
10
10
|
secrets: {
|
|
11
|
-
specifier: fileURLToPath(new URL(".setup/secret-contract-api-
|
|
11
|
+
specifier: fileURLToPath(new URL(".setup/secret-contract-api-DB6CMdgc.mjs", import.meta.url).href),
|
|
12
12
|
exportName: "channelSecrets"
|
|
13
13
|
},
|
|
14
14
|
runtime: {
|
|
15
|
-
specifier: fileURLToPath(new URL(".setup/runtime-setter-api-
|
|
15
|
+
specifier: fileURLToPath(new URL(".setup/runtime-setter-api-Cx_PV-xu.mjs", import.meta.url).href),
|
|
16
16
|
exportName: "setSlackRuntime"
|
|
17
17
|
}
|
|
18
18
|
});
|
package/dist/setup-plugin-api.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { slackSetupPlugin };
|
|
1
|
+
export { t as slackSetupPlugin } from "./.setup/channel.setup-u6QQdbTa.mjs";
|
|
@@ -12,7 +12,7 @@ export function FromObject(context, type, value) {
|
|
|
12
12
|
return value;
|
|
13
13
|
const additionalProperties = GetAdditionalProperties(type);
|
|
14
14
|
for (const key of Guard.Keys(value)) {
|
|
15
|
-
if (Guard.HasPropertyKey(type.properties, key)) {
|
|
15
|
+
if (Guard.HasPropertyKey(type.properties, key) && IsSchema(type.properties[key])) {
|
|
16
16
|
value[key] = FromType(context, type.properties[key], value[key]);
|
|
17
17
|
continue;
|
|
18
18
|
}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2932,7 +2932,7 @@
|
|
|
2932
2932
|
},
|
|
2933
2933
|
"streaming.mode": {
|
|
2934
2934
|
"label": "Slack Streaming Mode",
|
|
2935
|
-
"help": "
|
|
2935
|
+
"help": "Slack preview mode: \"off\" | \"partial\" | \"block\" | \"progress\" (default). Default progress outside reply threads uses only a temporary typing reaction. Any explicit streaming.progress setting opts top-level turns into a preview, except nativeTaskCards: true, which only affects threads."
|
|
2936
2936
|
},
|
|
2937
2937
|
"streaming.chunkMode": {
|
|
2938
2938
|
"label": "Slack Chunk Mode",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/slack",
|
|
3
|
-
"version": "2026.10.
|
|
3
|
+
"version": "2026.10.10-beta.1",
|
|
4
4
|
"description": "OpenClaw Slack channel plugin for channels, DMs, commands, and app events.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"@slack/types": "3.2.0",
|
|
13
13
|
"@slack/web-api": "8.2.0",
|
|
14
14
|
"get-east-asian-width": "1.7.0",
|
|
15
|
-
"typebox": "1.3.
|
|
15
|
+
"typebox": "1.3.35",
|
|
16
16
|
"undici": "8.11.2",
|
|
17
17
|
"zod": "4.6.5"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"openclaw": ">=2026.10.
|
|
20
|
+
"openclaw": ">=2026.10.10-beta.1"
|
|
21
21
|
},
|
|
22
22
|
"peerDependenciesMeta": {
|
|
23
23
|
"openclaw": {
|
|
@@ -150,10 +150,10 @@
|
|
|
150
150
|
"allowInvalidConfigRecovery": true
|
|
151
151
|
},
|
|
152
152
|
"compat": {
|
|
153
|
-
"pluginApi": ">=2026.10.
|
|
153
|
+
"pluginApi": ">=2026.10.10-beta.1"
|
|
154
154
|
},
|
|
155
155
|
"build": {
|
|
156
|
-
"openclawVersion": "2026.10.
|
|
156
|
+
"openclawVersion": "2026.10.10-beta.1",
|
|
157
157
|
"bundledDist": false
|
|
158
158
|
},
|
|
159
159
|
"release": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
|
|
2
|
-
import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
|
|
3
2
|
import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
|
|
3
|
+
import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
|
|
4
4
|
import { resolveNativeCommandsEnabled, resolveNativeSkillsEnabled } from "openclaw/plugin-sdk/native-command-config-runtime";
|
|
5
5
|
//#region extensions/slack/src/security-audit.ts
|
|
6
6
|
var security_audit_exports = /* @__PURE__ */ __exportAll({ collectSlackSecurityAuditFindings: () => collectSlackSecurityAuditFindings });
|