mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 12:52:55 +00:00
71 lines
2.1 KiB
TypeScript
71 lines
2.1 KiB
TypeScript
import { normalizeOptionalString as readString } from "@openclaw/normalization-core/string-coerce";
|
|
|
|
export type TranscriptsAutoStartConfig = {
|
|
providerId: string;
|
|
sessionId?: string;
|
|
title?: string;
|
|
accountId?: string;
|
|
guildId?: string;
|
|
channelId?: string;
|
|
meetingUrl?: string;
|
|
};
|
|
|
|
export type ResolvedTranscriptsAutoStartConfig = {
|
|
providerId: string;
|
|
sessionId?: string;
|
|
title?: string;
|
|
accountId?: string;
|
|
guildId?: string;
|
|
channelId?: string;
|
|
meetingUrl?: string;
|
|
};
|
|
|
|
export type TranscriptsConfig = {
|
|
enabled?: boolean;
|
|
maxUtterances?: number;
|
|
autoStart?: TranscriptsAutoStartConfig[];
|
|
};
|
|
|
|
export type ResolvedTranscriptsConfig = {
|
|
enabled: boolean;
|
|
maxUtterances: number;
|
|
autoStart: ResolvedTranscriptsAutoStartConfig[];
|
|
};
|
|
|
|
function resolveAutoStart(raw: unknown): ResolvedTranscriptsAutoStartConfig[] {
|
|
if (!Array.isArray(raw)) {
|
|
return [];
|
|
}
|
|
return raw
|
|
.map((entry): ResolvedTranscriptsAutoStartConfig | undefined => {
|
|
const config = entry && typeof entry === "object" ? (entry as Record<string, unknown>) : {};
|
|
const providerId = readString(config.providerId);
|
|
if (!providerId) {
|
|
return undefined;
|
|
}
|
|
return {
|
|
providerId,
|
|
sessionId: readString(config.sessionId),
|
|
title: readString(config.title),
|
|
accountId: readString(config.accountId),
|
|
guildId: readString(config.guildId),
|
|
channelId: readString(config.channelId),
|
|
meetingUrl: readString(config.meetingUrl),
|
|
};
|
|
})
|
|
.filter((entry): entry is ResolvedTranscriptsAutoStartConfig => entry !== undefined);
|
|
}
|
|
|
|
export function resolveTranscriptsConfig(raw: unknown): ResolvedTranscriptsConfig {
|
|
const config = raw && typeof raw === "object" ? (raw as Record<string, unknown>) : {};
|
|
const maxUtterances =
|
|
typeof config.maxUtterances === "number" && Number.isFinite(config.maxUtterances)
|
|
? Math.max(1, Math.min(10_000, Math.floor(config.maxUtterances)))
|
|
: 2_000;
|
|
return {
|
|
enabled: config.enabled === true,
|
|
maxUtterances,
|
|
autoStart: resolveAutoStart(config.autoStart),
|
|
};
|
|
}
|