@openclaw/slack 2026.5.14-beta.2 → 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 (32) hide show
  1. package/dist/{action-runtime-CyE2jfW-.js → action-runtime-p39JLqwf.js} +1 -1
  2. package/dist/action-runtime.runtime-BzrPV3EA.js +2 -0
  3. package/dist/{actions-BibhOXpJ.js → actions-BCRbHv1Q.js} +3 -2
  4. package/dist/{actions.runtime-B9XQG6X4.js → actions.runtime-CpywQR3D.js} +1 -1
  5. package/dist/api.js +5 -5
  6. package/dist/{approval-handler.runtime-BjzVRaXN.js → approval-handler.runtime-DXrdRbkT.js} +1 -1
  7. package/dist/{channel-Dh07mU_K.js → channel-CVSopl66.js} +9 -9
  8. package/dist/channel-plugin-api.js +1 -1
  9. package/dist/{channel.setup-CmG37S2W.js → channel.setup-DknBgufI.js} +2 -2
  10. package/dist/inbound-contract-test-api.js +1 -1
  11. package/dist/{monitor-DDE5AI2O.js → monitor-CdVxsuHi.js} +2 -2
  12. package/dist/{outbound-adapter-BluPNDNi.js → outbound-adapter-CHm6e-0Q.js} +1 -1
  13. package/dist/outbound-payload-test-api.js +1 -1
  14. package/dist/{outbound-payload.test-harness-BNxnP6MC.js → outbound-payload.test-harness-C0CW7_CE.js} +1 -1
  15. package/dist/{pipeline.runtime-Dft2-QU4.js → pipeline.runtime-CakcaQh9.js} +113 -136
  16. package/dist/{prepare-D0tMg4dt.js → prepare-DSRUr44d.js} +220 -81
  17. package/dist/{provider-C6WxaFFf.js → provider-bKg1hkf5.js} +139 -7
  18. package/dist/{replies-D0QXXSPP.js → replies-Fg1T3ZzU.js} +2 -2
  19. package/dist/runtime-api.js +5 -5
  20. package/dist/{send-Dg9zcyYT.js → send-CxXFbqN1.js} +1 -1
  21. package/dist/send.runtime-BHCPpSj_.js +2 -0
  22. package/dist/send.runtime-CDG5AgU3.js +2 -0
  23. package/dist/{setup-core-WWQl-cE9.js → setup-core-B7pou7oe.js} +23 -22
  24. package/dist/setup-plugin-api.js +1 -1
  25. package/dist/{setup-surface-BLoTgna4.js → setup-surface-D6LLzeRz.js} +14 -13
  26. package/dist/{shared-GoB-OuUq.js → shared-7Vi9j4aV.js} +1 -1
  27. package/dist/{slash-dispatch.runtime-Bz_OkRcR.js → slash-dispatch.runtime-Cg7uU92H.js} +1 -1
  28. package/dist/test-api.js +5 -5
  29. package/package.json +4 -4
  30. package/dist/action-runtime.runtime-DLhfKw4B.js +0 -2
  31. package/dist/send.runtime-CjjQ9StM.js +0 -2
  32. package/dist/send.runtime-E47jGN-2.js +0 -2
@@ -1,14 +1,14 @@
1
1
  import { a as resolveSlackAccount, d as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts, u as resolveSlackAppToken } from "./accounts-yk5K3wQU.js";
2
2
  import { n as resolveSlackGroupRequireMention, r as resolveSlackGroupToolPolicy } from "./reply-blocks-BFaJ_ejG.js";
3
3
  import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
4
- import { t as sendMessageSlack } from "./send-Dg9zcyYT.js";
5
- import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-BibhOXpJ.js";
4
+ import { t as sendMessageSlack } from "./send-CxXFbqN1.js";
5
+ import { a as listSlackEmojis, c as pinSlackMessage, d as removeOwnSlackReactions, f as removeSlackReaction, i as getSlackMemberInfo, l as reactSlackMessage, m as unpinSlackMessage, o as listSlackPins, p as sendSlackMessage, r as editSlackMessage, s as listSlackReactions, t as deleteSlackMessage, u as readSlackMessages } from "./actions-BCRbHv1Q.js";
6
6
  import { t as probeSlack } from "./probe-FL4sUJsH.js";
7
7
  import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
8
8
  import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
9
- import { t as monitorSlackProvider } from "./provider-C6WxaFFf.js";
9
+ import { t as monitorSlackProvider } from "./provider-bKg1hkf5.js";
10
10
  import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CRnfsTTX.js";
11
- import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-CyE2jfW-.js";
11
+ import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-p39JLqwf.js";
12
12
  import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-CZPzpQZF.js";
13
- import "./monitor-DDE5AI2O.js";
13
+ import "./monitor-CdVxsuHi.js";
14
14
  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 };
@@ -298,7 +298,7 @@ function hasCustomIdentity(identity) {
298
298
  }
299
299
  function buildSlackUnfurlPayload(options) {
300
300
  return {
301
- ...typeof options?.unfurlLinks === "boolean" ? { unfurl_links: options.unfurlLinks } : {},
301
+ unfurl_links: options?.unfurlLinks ?? false,
302
302
  ...typeof options?.unfurlMedia === "boolean" ? { unfurl_media: options.unfurlMedia } : {}
303
303
  };
304
304
  }
@@ -0,0 +1,2 @@
1
+ import "./send-CxXFbqN1.js";
2
+ export {};
@@ -0,0 +1,2 @@
1
+ import { t as sendMessageSlack } from "./send-CxXFbqN1.js";
2
+ export { sendMessageSlack };
@@ -2,7 +2,7 @@ import { a as resolveSlackAccount } from "./accounts-yk5K3wQU.js";
2
2
  import { t as inspectSlackAccount } from "./account-inspect-BJyQLSkN.js";
3
3
  import { hasConfiguredSecretInput } from "openclaw/plugin-sdk/secret-input";
4
4
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
5
- import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createEnvPatchedAccountSetupAdapter, createLegacyCompatChannelDmPolicy, createStandardChannelSetupStatus, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
5
+ import { DEFAULT_ACCOUNT_ID, createAccountScopedAllowFromSection, createAccountScopedGroupAccessSection, createAllowlistSetupWizardProxy, createEnvPatchedAccountSetupAdapter, createLegacyCompatChannelDmPolicy, createSetupTranslator, createStandardChannelSetupStatus, parseMentionOrPrefixedId, patchChannelConfigForAccount, setSetupChannelEnabled } from "openclaw/plugin-sdk/setup-runtime";
6
6
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
7
7
  import { describeAccountSnapshot } from "openclaw/plugin-sdk/account-helpers";
8
8
  //#region extensions/slack/src/setup-shared.ts
@@ -113,6 +113,7 @@ function describeSlackSetupAccount(account) {
113
113
  }
114
114
  //#endregion
115
115
  //#region extensions/slack/src/setup-core.ts
116
+ const t = createSetupTranslator();
116
117
  function enableSlackAccount(cfg, accountId) {
117
118
  return patchChannelConfigForAccount({
118
119
  cfg,
@@ -201,10 +202,10 @@ function createSlackSetupWizardBase(handlers) {
201
202
  channel: SLACK_CHANNEL,
202
203
  status: createStandardChannelSetupStatus({
203
204
  channelLabel: "Slack",
204
- configuredLabel: "configured",
205
- unconfiguredLabel: "needs tokens",
206
- configuredHint: "configured",
207
- unconfiguredHint: "needs tokens",
205
+ configuredLabel: t("wizard.channels.statusConfigured"),
206
+ unconfiguredLabel: t("wizard.channels.statusNeedsTokens"),
207
+ configuredHint: t("wizard.channels.statusConfigured"),
208
+ unconfiguredHint: t("wizard.channels.statusNeedsTokens"),
208
209
  configuredScore: 2,
209
210
  unconfiguredScore: 1,
210
211
  resolveConfigured: ({ cfg, accountId }) => inspectSlackAccount({
@@ -213,7 +214,7 @@ function createSlackSetupWizardBase(handlers) {
213
214
  }).configured
214
215
  }),
215
216
  introNote: {
216
- title: "Slack socket mode tokens",
217
+ title: t("wizard.slack.socketModeTokensTitle"),
217
218
  lines: buildSlackSetupLines(),
218
219
  shouldShow: ({ cfg, accountId }) => !isSlackSetupAccountConfigured(resolveSlackAccount({
219
220
  cfg,
@@ -230,7 +231,7 @@ function createSlackSetupWizardBase(handlers) {
230
231
  else await prompter.note(manifest, "Slack manifest JSON");
231
232
  },
232
233
  envShortcut: {
233
- prompt: "SLACK_BOT_TOKEN + SLACK_APP_TOKEN detected. Use env vars?",
234
+ prompt: t("wizard.slack.envPrompt"),
234
235
  preferredEnvVar: "SLACK_BOT_TOKEN",
235
236
  isAvailable: ({ cfg, accountId }) => accountId === DEFAULT_ACCOUNT_ID && Boolean(process.env.SLACK_BOT_TOKEN?.trim()) && Boolean(process.env.SLACK_APP_TOKEN?.trim()) && !isSlackSetupAccountConfigured(resolveSlackAccount({
236
237
  cfg,
@@ -241,34 +242,34 @@ function createSlackSetupWizardBase(handlers) {
241
242
  credentials: [createSlackTokenCredential({
242
243
  inputKey: "botToken",
243
244
  providerHint: "slack-bot",
244
- credentialLabel: "Slack bot token",
245
+ credentialLabel: t("wizard.slack.botToken"),
245
246
  preferredEnvVar: "SLACK_BOT_TOKEN",
246
- keepPrompt: "Slack bot token already configured. Keep it?",
247
- inputPrompt: "Enter Slack bot token (xoxb-...)"
247
+ keepPrompt: t("wizard.slack.botTokenKeep"),
248
+ inputPrompt: t("wizard.slack.botTokenInput")
248
249
  }), createSlackTokenCredential({
249
250
  inputKey: "appToken",
250
251
  providerHint: "slack-app",
251
- credentialLabel: "Slack app token",
252
+ credentialLabel: t("wizard.slack.appToken"),
252
253
  preferredEnvVar: "SLACK_APP_TOKEN",
253
- keepPrompt: "Slack app token already configured. Keep it?",
254
- inputPrompt: "Enter Slack app token (xapp-...)"
254
+ keepPrompt: t("wizard.slack.appTokenKeep"),
255
+ inputPrompt: t("wizard.slack.appTokenInput")
255
256
  })],
256
257
  dmPolicy: slackDmPolicy,
257
258
  allowFrom: createAccountScopedAllowFromSection({
258
259
  channel: SLACK_CHANNEL,
259
260
  credentialInputKey: "botToken",
260
- helpTitle: "Slack allowlist",
261
+ helpTitle: t("wizard.slack.allowlistTitle"),
261
262
  helpLines: [
262
- "Allowlist Slack DMs by username (we resolve to user ids).",
263
- "Examples:",
263
+ t("wizard.slack.allowlistIntro"),
264
+ t("wizard.slack.examples"),
264
265
  "- U12345678",
265
266
  "- @alice",
266
- "Multiple entries: comma-separated.",
267
- `Docs: ${formatDocsLink("/slack", "slack")}`
267
+ t("wizard.slack.multipleEntries"),
268
+ t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
268
269
  ],
269
- message: "Slack allowFrom (usernames or ids)",
270
+ message: t("wizard.slack.allowFromPrompt"),
270
271
  placeholder: "@alice, U12345678",
271
- invalidWithoutCredentialNote: "Slack token missing; use user ids (or mention form) only.",
272
+ invalidWithoutCredentialNote: t("wizard.slack.allowFromInvalidWithoutToken"),
272
273
  parseId: (value) => parseMentionOrPrefixedId({
273
274
  value,
274
275
  mentionPattern: /^<@([A-Z0-9]+)>$/i,
@@ -280,7 +281,7 @@ function createSlackSetupWizardBase(handlers) {
280
281
  }),
281
282
  groupAccess: createAccountScopedGroupAccessSection({
282
283
  channel: SLACK_CHANNEL,
283
- label: "Slack channels",
284
+ label: t("wizard.slack.channelsLabel"),
284
285
  placeholder: "#general, #private, C123",
285
286
  currentPolicy: ({ cfg, accountId }) => resolveSlackAccount({
286
287
  cfg,
@@ -302,7 +303,7 @@ function createSlackSetupWizardBase(handlers) {
302
303
  if (hasSlackInteractiveRepliesConfig(cfg, accountId)) return;
303
304
  if (options?.quickstartDefaults) return { cfg: setSlackInteractiveReplies(cfg, accountId, true) };
304
305
  return { cfg: setSlackInteractiveReplies(cfg, accountId, await prompter.confirm({
305
- message: "Enable Slack interactive replies (buttons/selects) for agent responses?",
306
+ message: t("wizard.slack.interactiveRepliesPrompt"),
306
307
  initialValue: true
307
308
  })) };
308
309
  },
@@ -1,2 +1,2 @@
1
- import { t as slackSetupPlugin } from "./channel.setup-CmG37S2W.js";
1
+ import { t as slackSetupPlugin } from "./channel.setup-DknBgufI.js";
2
2
  export { slackSetupPlugin };
@@ -1,12 +1,13 @@
1
1
  import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-yk5K3wQU.js";
2
- import "./shared-GoB-OuUq.js";
3
- import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-WWQl-cE9.js";
2
+ import "./shared-7Vi9j4aV.js";
3
+ import { i as SLACK_CHANNEL, t as createSlackSetupWizardBase } from "./setup-core-B7pou7oe.js";
4
4
  import { t as resolveSlackChannelAllowlist } from "./resolve-channels-B_eKaOkE.js";
5
5
  import { t as resolveSlackUserAllowlist } from "./resolve-users-BzBAJwvq.js";
6
6
  import { adaptScopedAccountAccessor } from "openclaw/plugin-sdk/channel-config-helpers";
7
- import { noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
7
+ import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, promptLegacyChannelAllowFromForAccount, resolveEntriesWithOptionalToken } from "openclaw/plugin-sdk/setup-runtime";
8
8
  import { formatDocsLink } from "openclaw/plugin-sdk/setup-tools";
9
9
  //#region extensions/slack/src/setup-surface.ts
10
+ const t = createSetupTranslator();
10
11
  async function resolveSlackAllowFromEntries(params) {
11
12
  return await resolveEntriesWithOptionalToken({
12
13
  token: params.token,
@@ -46,19 +47,19 @@ async function promptSlackAllowFrom(params) {
46
47
  accountId: account.accountId
47
48
  }) ?? [],
48
49
  resolveToken: (account) => account.userToken ?? account.botToken ?? "",
49
- noteTitle: "Slack allowlist",
50
+ noteTitle: t("wizard.slack.allowlistTitle"),
50
51
  noteLines: [
51
- "Allowlist Slack DMs by username (we resolve to user ids).",
52
- "Examples:",
52
+ t("wizard.slack.allowlistIntro"),
53
+ t("wizard.slack.examples"),
53
54
  "- U12345678",
54
55
  "- @alice",
55
- "Multiple entries: comma-separated.",
56
- `Docs: ${formatDocsLink("/slack", "slack")}`
56
+ t("wizard.slack.multipleEntries"),
57
+ t("wizard.channels.docs", { link: formatDocsLink("/slack", "slack") })
57
58
  ],
58
- message: "Slack allowFrom (usernames or ids)",
59
+ message: t("wizard.slack.allowFromPrompt"),
59
60
  placeholder: "@alice, U12345678",
60
61
  parseId,
61
- invalidWithoutTokenNote: "Slack token missing; use user ids (or mention form) only.",
62
+ invalidWithoutTokenNote: t("wizard.slack.allowFromInvalidWithoutToken"),
62
63
  resolveEntries: async ({ token, entries }) => (await resolveSlackUserAllowlist({
63
64
  token,
64
65
  entries
@@ -94,9 +95,9 @@ async function resolveSlackGroupAllowlist(params) {
94
95
  keys = [...resolvedKeys, ...unresolved.map((entry) => entry.trim()).filter(Boolean)];
95
96
  await noteChannelLookupSummary({
96
97
  prompter: params.prompter,
97
- label: "Slack channels",
98
+ label: t("wizard.slack.channelsLabel"),
98
99
  resolvedSections: [{
99
- title: "Resolved",
100
+ title: t("wizard.channels.resolvedTitle"),
100
101
  values: resolvedKeys
101
102
  }],
102
103
  unresolved
@@ -104,7 +105,7 @@ async function resolveSlackGroupAllowlist(params) {
104
105
  } catch (error) {
105
106
  await noteChannelLookupFailure({
106
107
  prompter: params.prompter,
107
- label: "Slack channels",
108
+ label: t("wizard.slack.channelsLabel"),
108
109
  error
109
110
  });
110
111
  }
@@ -2,7 +2,7 @@ import { a as resolveSlackAccount, c as resolveSlackConfigAccessorAccount, i as
2
2
  import { t as inspectSlackAccount } from "./account-inspect-BJyQLSkN.js";
3
3
  import { n as isSlackInteractiveRepliesEnabled } from "./interactive-replies-BSg5hXhj.js";
4
4
  import { f as getChatChannelMeta } from "./client-C_IaJbi5.js";
5
- import { i as SLACK_CHANNEL } from "./setup-core-WWQl-cE9.js";
5
+ import { i as SLACK_CHANNEL } from "./setup-core-B7pou7oe.js";
6
6
  import { t as SlackChannelConfigSchema } from "./config-schema-CNRousxw.js";
7
7
  import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-B8QIWMs1.js";
8
8
  import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-0TL3L5Kb.js";
@@ -1,4 +1,4 @@
1
- import { r as deliverSlackSlashReplies$1 } from "./replies-D0QXXSPP.js";
1
+ import { r as deliverSlackSlashReplies$1 } from "./replies-Fg1T3ZzU.js";
2
2
  import { resolveAgentRoute as resolveAgentRoute$1 } from "openclaw/plugin-sdk/routing";
3
3
  import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
4
4
  import { recordInboundSessionMetaSafe as recordInboundSessionMetaSafe$1, resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
package/dist/test-api.js CHANGED
@@ -1,8 +1,8 @@
1
- import { a as createSlackActions, t as slackPlugin } from "./channel-Dh07mU_K.js";
1
+ import { a as createSlackActions, t as slackPlugin } from "./channel-CVSopl66.js";
2
2
  import { n as setSlackRuntime } from "./runtime-DQxkf7k2.js";
3
- import { t as sendMessageSlack } from "./send-Dg9zcyYT.js";
4
- import { t as prepareSlackMessage } from "./prepare-D0tMg4dt.js";
3
+ import { t as sendMessageSlack } from "./send-CxXFbqN1.js";
4
+ import { t as prepareSlackMessage } from "./prepare-DSRUr44d.js";
5
5
  import { t as createInboundSlackTestContext } from "./prepare.test-helpers-CU1qB54Q.js";
6
- import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-BNxnP6MC.js";
7
- import { n as slackOutbound } from "./outbound-adapter-BluPNDNi.js";
6
+ import { t as createSlackOutboundPayloadHarness } from "./outbound-payload.test-harness-C0CW7_CE.js";
7
+ import { n as slackOutbound } from "./outbound-adapter-CHm6e-0Q.js";
8
8
  export { createInboundSlackTestContext, createSlackActions, createSlackOutboundPayloadHarness, prepareSlackMessage, sendMessageSlack, setSlackRuntime, slackOutbound, slackPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/slack",
3
- "version": "2026.5.14-beta.2",
3
+ "version": "2026.5.16-beta.1",
4
4
  "description": "OpenClaw Slack channel plugin",
5
5
  "repository": {
6
6
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  "openclaw": "workspace:*"
21
21
  },
22
22
  "peerDependencies": {
23
- "openclaw": ">=2026.5.14-beta.2"
23
+ "openclaw": ">=2026.5.16-beta.1"
24
24
  },
25
25
  "peerDependenciesMeta": {
26
26
  "openclaw": {
@@ -64,10 +64,10 @@
64
64
  "minHostVersion": ">=2026.5.12-beta.1"
65
65
  },
66
66
  "compat": {
67
- "pluginApi": ">=2026.5.14-beta.2"
67
+ "pluginApi": ">=2026.5.16-beta.1"
68
68
  },
69
69
  "build": {
70
- "openclawVersion": "2026.5.14-beta.2",
70
+ "openclawVersion": "2026.5.16-beta.1",
71
71
  "bundledDist": false
72
72
  },
73
73
  "release": {
@@ -1,2 +0,0 @@
1
- import { t as handleSlackAction } from "./action-runtime-CyE2jfW-.js";
2
- export { handleSlackAction };
@@ -1,2 +0,0 @@
1
- import "./send-Dg9zcyYT.js";
2
- export {};
@@ -1,2 +0,0 @@
1
- import { t as sendMessageSlack } from "./send-Dg9zcyYT.js";
2
- export { sendMessageSlack };