@openclaw/slack 2026.5.14-beta.1 → 2026.5.16-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.
Files changed (83) hide show
  1. package/dist/{action-runtime-gtC-RM3r.js → action-runtime-p39JLqwf.js} +4 -4
  2. package/dist/action-runtime.runtime-BzrPV3EA.js +2 -0
  3. package/dist/{media-B-nNpS2G.js → actions-BCRbHv1Q.js} +309 -3
  4. package/dist/{actions.runtime-DD6hfFCA.js → actions.runtime-CpywQR3D.js} +1 -1
  5. package/dist/api.js +16 -16
  6. package/dist/{approval-handler.runtime-DeYBuIaU.js → approval-handler.runtime-DXrdRbkT.js} +3 -4
  7. package/dist/{blocks-render-BdLueE_v.js → blocks-render-BAVfd6r0.js} +1 -1
  8. package/dist/{channel-CC04F-xs.js → channel-CVSopl66.js} +23 -27
  9. package/dist/channel-config-api.js +1 -1
  10. package/dist/channel-plugin-api.js +1 -1
  11. package/dist/{channel.setup-jzYjY634.js → channel.setup-DknBgufI.js} +3 -3
  12. package/dist/{client-8r7r7aZ3.js → client-C_IaJbi5.js} +20 -1
  13. package/dist/{config-schema-Bueih4yH.js → config-schema-CNRousxw.js} +1 -1
  14. package/dist/contract-api.js +4 -4
  15. package/dist/directory-contract-api.js +1 -1
  16. package/dist/{directory-live-CuaWaGnM.js → directory-live-CZPzpQZF.js} +1 -1
  17. package/dist/{doctor-contract-DCkS8eNN.js → doctor-contract-B8QIWMs1.js} +1 -1
  18. package/dist/doctor-contract-api.js +1 -1
  19. package/dist/http-routes-api.js +1 -1
  20. package/dist/inbound-contract-test-api.js +2 -2
  21. package/dist/interactive-replies-api.js +1 -1
  22. package/dist/{message-tool-api-B_bKUmP0.js → message-tool-api-C7gc7goF.js} +1 -1
  23. package/dist/message-tool-api.js +1 -1
  24. package/dist/{monitor-B3QB1ysK.js → monitor-CdVxsuHi.js} +3 -3
  25. package/dist/{outbound-adapter-DsAvCwpZ.js → outbound-adapter-CHm6e-0Q.js} +4 -5
  26. package/dist/outbound-payload-test-api.js +1 -1
  27. package/dist/{outbound-payload.test-harness-DM9ZdY2f.js → outbound-payload.test-harness-C0CW7_CE.js} +2 -2
  28. package/dist/{pipeline.runtime-D-YJZZaI.js → pipeline.runtime-CakcaQh9.js} +119 -143
  29. package/dist/{plugin-routes-Dt_jh9W8.js → plugin-routes-CRnfsTTX.js} +1 -1
  30. package/dist/{prepare-CXI8nHbJ.js → prepare-DSRUr44d.js} +223 -85
  31. package/dist/{prepare.test-helpers-BhFHtbz3.js → prepare.test-helpers-CU1qB54Q.js} +1 -1
  32. package/dist/{probe-D1wYA05H.js → probe-FL4sUJsH.js} +2 -2
  33. package/dist/{provider-Ut7IF0Mn.js → provider-bKg1hkf5.js} +158 -24
  34. package/dist/{replies-CzfjCaLG.js → replies-Fg1T3ZzU.js} +4 -4
  35. package/dist/reply-blocks-BFaJ_ejG.js +134 -0
  36. package/dist/{resolve-channels-BiVxSLVm.js → resolve-channels-B_eKaOkE.js} +2 -2
  37. package/dist/{resolve-users-CcpSlYw-.js → resolve-users-BzBAJwvq.js} +2 -2
  38. package/dist/{room-context-D0hGOp8m.js → room-context-Cd8jFpS-.js} +2 -2
  39. package/dist/{runtime-api-D8wiG9BS.js → runtime-api-B5HGOzX3.js} +2 -2
  40. package/dist/runtime-api.js +12 -12
  41. package/dist/runtime-setter-api.js +1 -1
  42. package/dist/{scopes-BTkB8PPE.js → scopes-Bvg_ZzqZ.js} +2 -2
  43. package/dist/secret-contract-api.js +1 -1
  44. package/dist/security-contract-api.js +1 -1
  45. package/dist/{send-ioky2Xpy.js → send-CxXFbqN1.js} +5 -6
  46. package/dist/send.runtime-BHCPpSj_.js +2 -0
  47. package/dist/send.runtime-CDG5AgU3.js +2 -0
  48. package/dist/{setup-core-DgLJ7dQY.js → setup-core-B7pou7oe.js} +23 -22
  49. package/dist/setup-plugin-api.js +1 -1
  50. package/dist/{setup-surface-B6w9gtds.js → setup-surface-D6LLzeRz.js} +16 -15
  51. package/dist/{shared-CSiHkaVO.js → shared-7Vi9j4aV.js} +7 -7
  52. package/dist/{slash-dispatch.runtime-DNr1EDON.js → slash-dispatch.runtime-Cg7uU92H.js} +1 -1
  53. package/dist/test-api.js +7 -7
  54. package/dist/thread-ts-As_dcNbD.js +52 -0
  55. package/package.json +5 -5
  56. package/dist/action-runtime.runtime-DbVd7_Na.js +0 -2
  57. package/dist/actions-Cqyj7oRr.js +0 -309
  58. package/dist/approval-auth-D3xf0sS6.js +0 -28
  59. package/dist/blocks-input-BJZ8vv03.js +0 -29
  60. package/dist/channel-api-BfBK89IN.js +0 -20
  61. package/dist/exec-approvals-BLn4Zx7V.js +0 -58
  62. package/dist/group-policy-utF2iWnE.js +0 -41
  63. package/dist/mrkdwn-18IzcEAY.js +0 -6
  64. package/dist/reply-blocks-DWoZrUll.js +0 -14
  65. package/dist/send.runtime-5Kl3Wzbf.js +0 -2
  66. package/dist/send.runtime-DoifekaA.js +0 -2
  67. package/dist/thread-ts-o-QBwB3k.js +0 -24
  68. /package/dist/{accounts.runtime-CkfFIisb.js → accounts.runtime-BhbEu1ZK.js} +0 -0
  69. /package/dist/{allow-list-T7ZDpUsF.js → allow-list-nwXs_eCP.js} +0 -0
  70. /package/dist/{config-api-B48Z4H47.js → config-api-CmgE_ORg.js} +0 -0
  71. /package/dist/{directory-config-BKKNBkCq.js → directory-config-CMvFiswf.js} +0 -0
  72. /package/dist/{errors-BrtayXHa.js → errors-C_sW0Zgl.js} +0 -0
  73. /package/dist/{interactive-replies-CawNPL-h.js → interactive-replies-BSg5hXhj.js} +0 -0
  74. /package/dist/{magic-string.es-BLAi6qQC.js → magic-string.es-9lw4MGoF.js} +0 -0
  75. /package/dist/{registry-BdfKYina.js → registry-D2cWOLZV.js} +0 -0
  76. /package/dist/{resolve-allowlist-common-rhfyDyWi.js → resolve-allowlist-common-DLub2I2i.js} +0 -0
  77. /package/dist/{runtime--VlVtTPu.js → runtime-DQxkf7k2.js} +0 -0
  78. /package/dist/{secret-contract-BurGIyhv.js → secret-contract-0TL3L5Kb.js} +0 -0
  79. /package/dist/{security-audit-DvOpSaZM.js → security-audit-BJzADAw3.js} +0 -0
  80. /package/dist/{slash-commands.runtime-DRkNgIQ2.js → slash-commands.runtime-bcDwsGnu.js} +0 -0
  81. /package/dist/{slash-plugin-commands.runtime-Dj5h8hmv.js → slash-plugin-commands.runtime-DBHGUSj2.js} +0 -0
  82. /package/dist/{slash-skill-commands.runtime-B-_KAk0C.js → slash-skill-commands.runtime-rrY2hXvN.js} +0 -0
  83. /package/dist/{streaming-compat-C6rySwiD.js → streaming-compat-eu5Rj5gj.js} +0 -0
@@ -1,28 +0,0 @@
1
- import { a as resolveSlackAccount, o as resolveSlackAccountAllowFrom } from "./accounts-yk5K3wQU.js";
2
- import { i as normalizeSlackApproverId } from "./exec-approvals-BLn4Zx7V.js";
3
- import { createResolvedApproverActionAuthAdapter, resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
4
- //#region extensions/slack/src/approval-auth.ts
5
- function getSlackApprovalApprovers(params) {
6
- const account = resolveSlackAccount(params).config;
7
- return resolveApprovalApprovers({
8
- allowFrom: resolveSlackAccountAllowFrom(params),
9
- defaultTo: account.defaultTo,
10
- normalizeApprover: normalizeSlackApproverId,
11
- normalizeDefaultTo: normalizeSlackApproverId
12
- });
13
- }
14
- function isSlackApprovalAuthorizedSender(params) {
15
- const senderId = params.senderId ? normalizeSlackApproverId(params.senderId) : void 0;
16
- if (!senderId) return false;
17
- return getSlackApprovalApprovers(params).includes(senderId);
18
- }
19
- createResolvedApproverActionAuthAdapter({
20
- channelLabel: "Slack",
21
- resolveApprovers: ({ cfg, accountId }) => getSlackApprovalApprovers({
22
- cfg,
23
- accountId
24
- }),
25
- normalizeSenderId: (value) => normalizeSlackApproverId(value)
26
- });
27
- //#endregion
28
- export { isSlackApprovalAuthorizedSender as t };
@@ -1,29 +0,0 @@
1
- //#region extensions/slack/src/blocks-input.ts
2
- const SLACK_MAX_BLOCKS = 50;
3
- function parseBlocksJson(raw) {
4
- try {
5
- return JSON.parse(raw);
6
- } catch {
7
- throw new Error("blocks must be valid JSON");
8
- }
9
- }
10
- function assertBlocksArray(raw) {
11
- if (!Array.isArray(raw)) throw new Error("blocks must be an array");
12
- if (raw.length === 0) throw new Error("blocks must contain at least one block");
13
- if (raw.length > 50) throw new Error(`blocks cannot exceed 50 items`);
14
- for (const block of raw) {
15
- if (!block || typeof block !== "object" || Array.isArray(block)) throw new Error("each block must be an object");
16
- const type = block.type;
17
- if (typeof type !== "string" || type.trim().length === 0) throw new Error("each block must include a non-empty string type");
18
- }
19
- }
20
- function validateSlackBlocksArray(raw) {
21
- assertBlocksArray(raw);
22
- return raw;
23
- }
24
- function parseSlackBlocksInput(raw) {
25
- if (raw == null) return;
26
- return validateSlackBlocksArray(typeof raw === "string" ? parseBlocksJson(raw) : raw);
27
- }
28
- //#endregion
29
- export { parseSlackBlocksInput as n, validateSlackBlocksArray as r, SLACK_MAX_BLOCKS as t };
@@ -1,20 +0,0 @@
1
- import "./target-parsing-CQmv-iSm.js";
2
- import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
3
- import { PAIRING_APPROVED_MESSAGE, projectCredentialSnapshotFields, resolveConfiguredFromRequiredCredentialStatuses } from "openclaw/plugin-sdk/channel-status";
4
- //#region extensions/slack/src/channel-api.ts
5
- const SLACK_CHANNEL_META = {
6
- id: "slack",
7
- label: "Slack",
8
- selectionLabel: "Slack",
9
- docsPath: "/channels/slack",
10
- docsLabel: "slack",
11
- blurb: "supports bot + app tokens, channels, threads, and interactive replies.",
12
- systemImage: "number.square",
13
- markdownCapable: true
14
- };
15
- function getChatChannelMeta(id) {
16
- if (id !== SLACK_CHANNEL_META.id) throw new Error(`Unsupported Slack channel meta lookup: ${id}`);
17
- return SLACK_CHANNEL_META;
18
- }
19
- //#endregion
20
- export { resolveConfiguredFromRequiredCredentialStatuses as a, projectCredentialSnapshotFields as i, PAIRING_APPROVED_MESSAGE as n, getChatChannelMeta as r, DEFAULT_ACCOUNT_ID$1 as t };
@@ -1,58 +0,0 @@
1
- import { a as resolveSlackAccount } from "./accounts-yk5K3wQU.js";
2
- import { normalizeStringifiedOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
3
- import { doesApprovalRequestMatchChannelAccount } from "openclaw/plugin-sdk/approval-native-runtime";
4
- import { resolveApprovalApprovers } from "openclaw/plugin-sdk/approval-auth-runtime";
5
- import { createChannelExecApprovalProfile, isChannelExecApprovalTargetRecipient } from "openclaw/plugin-sdk/approval-client-runtime";
6
- //#region extensions/slack/src/exec-approvals.ts
7
- function normalizeSlackApproverId(value) {
8
- const trimmed = normalizeStringifiedOptionalString(value);
9
- if (!trimmed) return;
10
- const prefixed = trimmed.match(/^(?:slack|user):([A-Z0-9]+)$/i);
11
- if (prefixed?.[1]) return prefixed[1];
12
- const mention = trimmed.match(/^<@([A-Z0-9]+)>$/i);
13
- if (mention?.[1]) return mention[1];
14
- return /^[UW][A-Z0-9]+$/i.test(trimmed) ? trimmed : void 0;
15
- }
16
- function resolveSlackOwnerApprovers(cfg) {
17
- const ownerAllowFrom = cfg.commands?.ownerAllowFrom;
18
- if (!Array.isArray(ownerAllowFrom) || ownerAllowFrom.length === 0) return [];
19
- return resolveApprovalApprovers({
20
- explicit: ownerAllowFrom,
21
- normalizeApprover: normalizeSlackApproverId
22
- });
23
- }
24
- function getSlackExecApprovalApprovers(params) {
25
- const account = resolveSlackAccount(params).config;
26
- return resolveApprovalApprovers({
27
- explicit: account.execApprovals?.approvers ?? resolveSlackOwnerApprovers(params.cfg),
28
- normalizeApprover: normalizeSlackApproverId
29
- });
30
- }
31
- function isSlackExecApprovalTargetRecipient(params) {
32
- return isChannelExecApprovalTargetRecipient({
33
- ...params,
34
- channel: "slack",
35
- normalizeSenderId: normalizeSlackApproverId,
36
- matchTarget: ({ target, normalizedSenderId }) => normalizeSlackApproverId(target.to) === normalizedSenderId
37
- });
38
- }
39
- const slackExecApprovalProfile = createChannelExecApprovalProfile({
40
- resolveConfig: (params) => resolveSlackAccount(params).config.execApprovals,
41
- resolveApprovers: getSlackExecApprovalApprovers,
42
- normalizeSenderId: normalizeSlackApproverId,
43
- isTargetRecipient: isSlackExecApprovalTargetRecipient,
44
- matchesRequestAccount: (params) => doesApprovalRequestMatchChannelAccount({
45
- cfg: params.cfg,
46
- request: params.request,
47
- channel: "slack",
48
- accountId: params.accountId
49
- })
50
- });
51
- const isSlackExecApprovalClientEnabled = slackExecApprovalProfile.isClientEnabled;
52
- slackExecApprovalProfile.isApprover;
53
- const isSlackExecApprovalAuthorizedSender = slackExecApprovalProfile.isAuthorizedSender;
54
- const resolveSlackExecApprovalTarget = slackExecApprovalProfile.resolveTarget;
55
- const shouldHandleSlackExecApprovalRequest = slackExecApprovalProfile.shouldHandleRequest;
56
- const shouldSuppressLocalSlackExecApprovalPrompt = slackExecApprovalProfile.shouldSuppressLocalPrompt;
57
- //#endregion
58
- export { resolveSlackExecApprovalTarget as a, normalizeSlackApproverId as i, isSlackExecApprovalAuthorizedSender as n, shouldHandleSlackExecApprovalRequest as o, isSlackExecApprovalClientEnabled as r, shouldSuppressLocalSlackExecApprovalPrompt as s, getSlackExecApprovalApprovers as t };
@@ -1,41 +0,0 @@
1
- import { i as resolveDefaultSlackAccountId, r as mergeSlackAccountConfig } from "./accounts-yk5K3wQU.js";
2
- import { normalizeAccountId } from "openclaw/plugin-sdk/account-resolution";
3
- import { normalizeHyphenSlug } from "openclaw/plugin-sdk/string-normalization-runtime";
4
- import { resolveToolsBySender } from "openclaw/plugin-sdk/channel-policy";
5
- //#region extensions/slack/src/group-policy.ts
6
- function resolveSlackChannelPolicyEntry(params) {
7
- const accountId = normalizeAccountId(params.accountId ?? resolveDefaultSlackAccountId(params.cfg));
8
- const channelMap = mergeSlackAccountConfig(params.cfg, accountId).channels ?? {};
9
- if (Object.keys(channelMap).length === 0) return;
10
- const channelId = params.groupId?.trim();
11
- const channelName = params.groupChannel?.replace(/^#/, "");
12
- const normalizedName = normalizeHyphenSlug(channelName);
13
- const candidates = [
14
- channelId ?? "",
15
- channelName ? `#${channelName}` : "",
16
- channelName ?? "",
17
- normalizedName
18
- ].filter(Boolean);
19
- for (const candidate of candidates) if (candidate && channelMap[candidate]) return channelMap[candidate];
20
- return channelMap["*"];
21
- }
22
- function resolveSenderToolsEntry(entry, params) {
23
- if (!entry) return;
24
- return resolveToolsBySender({
25
- toolsBySender: entry.toolsBySender,
26
- senderId: params.senderId,
27
- senderName: params.senderName,
28
- senderUsername: params.senderUsername,
29
- senderE164: params.senderE164
30
- }) ?? entry.tools;
31
- }
32
- function resolveSlackGroupRequireMention(params) {
33
- const resolved = resolveSlackChannelPolicyEntry(params);
34
- if (typeof resolved?.requireMention === "boolean") return resolved.requireMention;
35
- return true;
36
- }
37
- function resolveSlackGroupToolPolicy(params) {
38
- return resolveSenderToolsEntry(resolveSlackChannelPolicyEntry(params), params);
39
- }
40
- //#endregion
41
- export { resolveSlackGroupToolPolicy as n, resolveSlackGroupRequireMention as t };
@@ -1,6 +0,0 @@
1
- //#region extensions/slack/src/monitor/mrkdwn.ts
2
- function escapeSlackMrkdwn(value) {
3
- return value.replaceAll("\\", "\\\\").replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replace(/([*_`~])/g, "\\$1");
4
- }
5
- //#endregion
6
- export { escapeSlackMrkdwn as t };
@@ -1,14 +0,0 @@
1
- import { t as buildSlackInteractiveBlocks } from "./blocks-render-BdLueE_v.js";
2
- import { n as parseSlackBlocksInput } from "./blocks-input-BJZ8vv03.js";
3
- //#region extensions/slack/src/reply-blocks.ts
4
- function resolveSlackReplyBlocks(payload) {
5
- const slackData = payload.channelData?.slack;
6
- const interactiveBlocks = buildSlackInteractiveBlocks(payload.interactive);
7
- let channelBlocks = [];
8
- if (slackData && typeof slackData === "object" && !Array.isArray(slackData)) channelBlocks = parseSlackBlocksInput(slackData.blocks) ?? [];
9
- const blocks = [...channelBlocks, ...interactiveBlocks];
10
- if (blocks.length > 50) throw new Error(`Slack blocks cannot exceed 50 items after interactive render`);
11
- return blocks.length > 0 ? blocks : void 0;
12
- }
13
- //#endregion
14
- export { resolveSlackReplyBlocks as t };
@@ -1,2 +0,0 @@
1
- import { t as sendMessageSlack } from "./send-ioky2Xpy.js";
2
- export { sendMessageSlack };
@@ -1,2 +0,0 @@
1
- import "./send-ioky2Xpy.js";
2
- export {};
@@ -1,24 +0,0 @@
1
- import { normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
2
- //#region extensions/slack/src/truncate.ts
3
- function truncateSlackText(value, max) {
4
- const trimmed = value.trim();
5
- if (trimmed.length <= max) return trimmed;
6
- if (max <= 1) return trimmed.slice(0, max);
7
- return `${trimmed.slice(0, max - 1)}…`;
8
- }
9
- //#endregion
10
- //#region extensions/slack/src/limits.ts
11
- const SLACK_TEXT_LIMIT = 8e3;
12
- //#endregion
13
- //#region extensions/slack/src/thread-ts.ts
14
- const SLACK_THREAD_TS_PATTERN = /^\d+\.\d+$/;
15
- function normalizeSlackThreadTsCandidate(value) {
16
- if (typeof value !== "string") return;
17
- const normalized = normalizeOptionalString(value);
18
- return normalized && SLACK_THREAD_TS_PATTERN.test(normalized) ? normalized : void 0;
19
- }
20
- function resolveSlackThreadTsValue(params) {
21
- return normalizeSlackThreadTsCandidate(params.replyToId) ?? normalizeSlackThreadTsCandidate(params.threadId);
22
- }
23
- //#endregion
24
- export { truncateSlackText as i, resolveSlackThreadTsValue as n, SLACK_TEXT_LIMIT as r, normalizeSlackThreadTsCandidate as t };
File without changes