diff --git a/src/slack/account-inspect.ts b/src/slack/account-inspect.ts index 82978d32d83..34b4a13fb23 100644 --- a/src/slack/account-inspect.ts +++ b/src/slack/account-inspect.ts @@ -2,6 +2,7 @@ import type { OpenClawConfig } from "../config/config.js"; import { hasConfiguredSecretInput, normalizeSecretInputString } from "../config/types.secrets.js"; import type { SlackAccountConfig } from "../config/types.slack.js"; import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../routing/session-key.js"; +import type { SlackAccountSurfaceFields } from "./account-surface-fields.js"; import { mergeSlackAccountConfig, resolveDefaultSlackAccountId, @@ -29,18 +30,7 @@ export type InspectedSlackAccount = { userTokenStatus: SlackCredentialStatus; configured: boolean; config: SlackAccountConfig; - groupPolicy?: SlackAccountConfig["groupPolicy"]; - textChunkLimit?: SlackAccountConfig["textChunkLimit"]; - mediaMaxMb?: SlackAccountConfig["mediaMaxMb"]; - reactionNotifications?: SlackAccountConfig["reactionNotifications"]; - reactionAllowlist?: SlackAccountConfig["reactionAllowlist"]; - replyToMode?: SlackAccountConfig["replyToMode"]; - replyToModeByChatType?: SlackAccountConfig["replyToModeByChatType"]; - actions?: SlackAccountConfig["actions"]; - slashCommand?: SlackAccountConfig["slashCommand"]; - dm?: SlackAccountConfig["dm"]; - channels?: SlackAccountConfig["channels"]; -}; +} & SlackAccountSurfaceFields; function inspectSlackToken(value: unknown): { token?: string; diff --git a/src/slack/account-surface-fields.ts b/src/slack/account-surface-fields.ts new file mode 100644 index 00000000000..8e2293e213a --- /dev/null +++ b/src/slack/account-surface-fields.ts @@ -0,0 +1,15 @@ +import type { SlackAccountConfig } from "../config/types.js"; + +export type SlackAccountSurfaceFields = { + groupPolicy?: SlackAccountConfig["groupPolicy"]; + textChunkLimit?: SlackAccountConfig["textChunkLimit"]; + mediaMaxMb?: SlackAccountConfig["mediaMaxMb"]; + reactionNotifications?: SlackAccountConfig["reactionNotifications"]; + reactionAllowlist?: SlackAccountConfig["reactionAllowlist"]; + replyToMode?: SlackAccountConfig["replyToMode"]; + replyToModeByChatType?: SlackAccountConfig["replyToModeByChatType"]; + actions?: SlackAccountConfig["actions"]; + slashCommand?: SlackAccountConfig["slashCommand"]; + dm?: SlackAccountConfig["dm"]; + channels?: SlackAccountConfig["channels"]; +}; diff --git a/src/slack/accounts.ts b/src/slack/accounts.ts index b90ded773a9..6e5aed59fa2 100644 --- a/src/slack/accounts.ts +++ b/src/slack/accounts.ts @@ -4,6 +4,7 @@ import type { OpenClawConfig } from "../config/config.js"; import type { SlackAccountConfig } from "../config/types.js"; import { resolveAccountEntry } from "../routing/account-lookup.js"; import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "../routing/session-key.js"; +import type { SlackAccountSurfaceFields } from "./account-surface-fields.js"; import { resolveSlackAppToken, resolveSlackBotToken, resolveSlackUserToken } from "./token.js"; export type SlackTokenSource = "env" | "config" | "none"; @@ -19,18 +20,7 @@ export type ResolvedSlackAccount = { appTokenSource: SlackTokenSource; userTokenSource: SlackTokenSource; config: SlackAccountConfig; - groupPolicy?: SlackAccountConfig["groupPolicy"]; - textChunkLimit?: SlackAccountConfig["textChunkLimit"]; - mediaMaxMb?: SlackAccountConfig["mediaMaxMb"]; - reactionNotifications?: SlackAccountConfig["reactionNotifications"]; - reactionAllowlist?: SlackAccountConfig["reactionAllowlist"]; - replyToMode?: SlackAccountConfig["replyToMode"]; - replyToModeByChatType?: SlackAccountConfig["replyToModeByChatType"]; - actions?: SlackAccountConfig["actions"]; - slashCommand?: SlackAccountConfig["slashCommand"]; - dm?: SlackAccountConfig["dm"]; - channels?: SlackAccountConfig["channels"]; -}; +} & SlackAccountSurfaceFields; const { listAccountIds, resolveDefaultAccountId } = createAccountListHelpers("slack"); export const listSlackAccountIds = listAccountIds;