import { normalizeOptionalString } from "../shared/string-coerce.js"; import { isRecord } from "../utils.js"; import type {
ResolvedTalkConfig,
TalkConfig,
TalkConfigResponse,
TalkProviderConfig,
} from "./types.gateway.js"; import type { OpenClawConfig } from "./types.openclaw.js"; import { coerceSecretRef } from "./types.secrets.js";
function normalizeSilenceTimeoutMs(value: unknown): number | undefined { if (typeof value !== "number" || !Number.isInteger(value) || value <= 0) { return undefined;
} return value;
}
function buildLegacyTalkProviderCompat(
value: Record<string, unknown>,
): TalkProviderConfig | undefined { const provider: TalkProviderConfig = {}; for (const key of ["voiceId", "voiceAliases", "modelId", "outputFormat"] as const) { if (value[key] !== undefined) {
provider[key] = value[key];
}
} const apiKey = normalizeTalkSecretInput(value.apiKey); if (apiKey !== undefined) {
provider.apiKey = apiKey;
} return Object.keys(provider).length > 0 ? provider : undefined;
}
function normalizeTalkProviderConfig(value: unknown): TalkProviderConfig | undefined { if (!isRecord(value)) { return undefined;
}
const provider: TalkProviderConfig = {}; for (const [key, raw] of Object.entries(value)) { if (raw === undefined) { continue;
} if (key === "apiKey") { const normalized = normalizeTalkSecretInput(raw); if (normalized !== undefined) {
provider.apiKey = normalized;
} continue;
}
provider[key] = raw;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.