refactor: dedupe account name normalization

This commit is contained in:
Peter Steinberger
2026-04-07 05:23:32 +01:00
parent 7e1f04f36a
commit 1275b9b873
14 changed files with 38 additions and 24 deletions

View File

@@ -3,6 +3,7 @@ import {
hasConfiguredSecretInput,
normalizeSecretInputString,
} from "openclaw/plugin-sdk/secret-input";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import {
mergeDiscordAccountConfig,
resolveDefaultDiscordAccountId,
@@ -66,7 +67,7 @@ export function inspectDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: accountToken.token,
tokenSource: accountToken.tokenSource,
tokenStatus: accountToken.tokenStatus,
@@ -78,7 +79,7 @@ export function inspectDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: "",
tokenSource: "none",
tokenStatus: "missing",
@@ -92,7 +93,7 @@ export function inspectDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: channelToken.token,
tokenSource: channelToken.tokenSource,
tokenStatus: channelToken.tokenStatus,
@@ -109,7 +110,7 @@ export function inspectDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: envToken.replace(/^Bot\s+/i, ""),
tokenSource: "env",
tokenStatus: "available",
@@ -121,7 +122,7 @@ export function inspectDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: "",
tokenSource: "none",
tokenStatus: "missing",

View File

@@ -5,6 +5,7 @@ import {
} from "openclaw/plugin-sdk/account-helpers";
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
import { resolveAccountEntry } from "openclaw/plugin-sdk/routing";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { DiscordAccountConfig, DiscordActionConfig, OpenClawConfig } from "./runtime-api.js";
import { resolveDiscordToken } from "./token.js";
@@ -69,7 +70,7 @@ export function resolveDiscordAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: tokenResolution.token,
tokenSource: tokenResolution.source,
config: merged,

View File

@@ -3,6 +3,7 @@ import { loadConfig } from "openclaw/plugin-sdk/config-runtime";
import type { RetryConfig, RetryRunner } from "openclaw/plugin-sdk/retry-runtime";
import { normalizeAccountId } from "openclaw/plugin-sdk/routing";
import type { RuntimeEnv } from "openclaw/plugin-sdk/runtime-env";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import {
mergeDiscordAccountConfig,
resolveDiscordAccount,
@@ -96,7 +97,7 @@ function resolveAccountWithoutToken(params: {
return {
accountId,
enabled: baseEnabled && accountEnabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: "",
tokenSource: "none",
config: merged,

View File

@@ -4,6 +4,7 @@ import {
resolveMergedAccountConfig,
type OpenClawConfig,
} from "openclaw/plugin-sdk/account-resolution";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { IMessageAccountConfig } from "../runtime-api.js";
export type ResolvedIMessageAccount = {
@@ -57,7 +58,7 @@ export function resolveIMessageAccount(params: {
return {
accountId,
enabled: baseEnabled && accountEnabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
config: merged,
configured,
};

View File

@@ -6,6 +6,7 @@ import {
tryReadSecretFileSync,
} from "openclaw/plugin-sdk/channel-core";
import { normalizeResolvedSecretInputString } from "openclaw/plugin-sdk/secret-input";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { CoreConfig, IrcAccountConfig, IrcNickServConfig } from "./types.js";
const TRUTHY_ENV = new Set(["true", "1", "yes", "on"]);
@@ -186,7 +187,7 @@ export function resolveIrcAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
configured: Boolean(host && nick),
host,
port,

View File

@@ -6,6 +6,7 @@ import {
resolveChannelStreamingBlockEnabled,
resolveChannelStreamingChunkMode,
} from "openclaw/plugin-sdk/channel-streaming";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import { normalizeResolvedSecretInputString, normalizeSecretInputString } from "../secret-input.js";
import type {
MattermostAccountConfig,
@@ -108,7 +109,7 @@ export function resolveMattermostAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
botToken,
baseUrl,
botTokenSource,

View File

@@ -4,6 +4,7 @@ import {
resolveMergedAccountConfig,
type OpenClawConfig,
} from "openclaw/plugin-sdk/account-resolution";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { SignalAccountConfig } from "./runtime-api.js";
export type ResolvedSignalAccount = {
@@ -54,7 +55,7 @@ export function resolveSignalAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
baseUrl,
configured,
config: merged,

View File

@@ -7,6 +7,7 @@ import {
hasConfiguredSecretInput,
normalizeSecretInputString,
} from "openclaw/plugin-sdk/secret-input";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { SlackAccountSurfaceFields } from "./account-surface-fields.js";
import {
mergeSlackAccountConfig,
@@ -128,7 +129,7 @@ export function inspectSlackAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
mode,
botToken,
appToken,

View File

@@ -6,6 +6,7 @@ import {
resolveMergedAccountConfig,
type OpenClawConfig,
} from "openclaw/plugin-sdk/account-resolution";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { SlackAccountSurfaceFields } from "./account-surface-fields.js";
import type { SlackAccountConfig } from "./runtime-api.js";
import { resolveSlackAppToken, resolveSlackBotToken, resolveSlackUserToken } from "./token.js";
@@ -79,7 +80,7 @@ export function resolveSlackAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
botToken,
appToken,
userToken,

View File

@@ -9,6 +9,7 @@ import {
hasConfiguredSecretInput,
normalizeSecretInputString,
} from "openclaw/plugin-sdk/secret-input";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import {
mergeTelegramAccountConfig,
resolveDefaultTelegramAccountId,
@@ -131,7 +132,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: accountTokenFile.token,
tokenSource: accountTokenFile.tokenSource,
tokenStatus: accountTokenFile.tokenStatus,
@@ -145,7 +146,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: accountToken.token,
tokenSource: accountToken.tokenSource,
tokenStatus: accountToken.tokenStatus,
@@ -159,7 +160,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: channelTokenFile.token,
tokenSource: channelTokenFile.tokenSource,
tokenStatus: channelTokenFile.tokenStatus,
@@ -176,7 +177,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: channelToken.token,
tokenSource: channelToken.tokenSource,
tokenStatus: channelToken.tokenStatus,
@@ -191,7 +192,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: envToken,
tokenSource: "env",
tokenStatus: "available",
@@ -203,7 +204,7 @@ function inspectTelegramAccountPrimary(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: "",
tokenSource: "none",
tokenStatus: "missing",

View File

@@ -20,6 +20,7 @@ import {
} from "openclaw/plugin-sdk/routing";
import { formatSetExplicitDefaultInstruction } from "openclaw/plugin-sdk/routing";
import { createSubsystemLogger, isTruthyEnvValue } from "openclaw/plugin-sdk/runtime-env";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { TelegramTransport } from "./fetch.js";
import { resolveTelegramToken } from "./token.js";
@@ -222,7 +223,7 @@ export function resolveTelegramAccount(params: {
return {
accountId,
enabled,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
token: tokenResolution.token,
tokenSource: tokenResolution.source,
config: merged,

View File

@@ -8,6 +8,7 @@ import {
type OpenClawConfig,
} from "openclaw/plugin-sdk/account-core";
import { resolveOAuthDir } from "openclaw/plugin-sdk/state-paths";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import { resolveMergedWhatsAppAccountConfig } from "./account-config.js";
import { hasWebCredsSync } from "./creds-files.js";
import type { DmPolicy, GroupPolicy, WhatsAppAccountConfig } from "./runtime-api.js";
@@ -127,7 +128,7 @@ export function resolveWhatsAppAccount(params: {
});
return {
accountId,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
enabled,
sendReadReceipts: merged.sendReadReceipts ?? true,
messagePrefix: merged.messagePrefix ?? params.cfg.messages?.messagePrefix,

View File

@@ -3,6 +3,7 @@ import {
resolveMergedAccountConfig,
} from "openclaw/plugin-sdk/account-helpers";
import { normalizeAccountId } from "openclaw/plugin-sdk/account-id";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { OpenClawConfig } from "./runtime-api.js";
import { resolveZaloToken } from "./token.js";
import type { ResolvedZaloAccount, ZaloAccountConfig, ZaloConfig } from "./types.js";
@@ -44,7 +45,7 @@ export function resolveZaloAccount(params: {
return {
accountId,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
enabled,
token: tokenResolution.token,
tokenSource: tokenResolution.source,

View File

@@ -4,6 +4,7 @@ import {
normalizeAccountId,
resolveMergedAccountConfig,
} from "openclaw/plugin-sdk/account-resolution";
import { normalizeOptionalString } from "openclaw/plugin-sdk/text-runtime";
import type { OpenClawConfig } from "../runtime-api.js";
import type { ResolvedZalouserAccount, ZalouserAccountConfig, ZalouserConfig } from "./types.js";
@@ -76,7 +77,7 @@ export async function resolveZalouserAccount(params: {
return {
accountId,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
enabled,
profile,
authenticated,
@@ -92,7 +93,7 @@ export function resolveZalouserAccountSync(params: {
return {
accountId,
name: merged.name?.trim() || undefined,
name: normalizeOptionalString(merged.name),
enabled,
profile,
authenticated: false,