import type { TurnConfig } from "@/lib/api"; export function defaultTurnConfig(): TurnConfig { return { bargeIn: { strategy: "vad" }, vad: { confidence: 0.7, startSecs: 0.2, stopSecs: 0.2, minVolume: 0.6, }, turnDetection: { strategy: "silence", silenceTimeoutSecs: 0.6, }, }; } function record(value: unknown): Record { return value && typeof value === "object" ? (value as Record) : {}; } function numberOr(value: unknown, fallback: number): number { return typeof value === "number" && Number.isFinite(value) ? value : fallback; } /** Fill settings introduced after the first Workflow release for old records. */ export function normalizeTurnConfig(value: unknown): TurnConfig { const defaults = defaultTurnConfig(); const input = record(value); const bargeIn = record(input.bargeIn); const vad = record(input.vad); const turnDetection = record(input.turnDetection); return { bargeIn: { strategy: bargeIn.strategy === "transcription" ? "transcription" : "vad", }, vad: { confidence: numberOr(vad.confidence, defaults.vad.confidence), startSecs: numberOr(vad.startSecs, defaults.vad.startSecs), stopSecs: numberOr(vad.stopSecs, defaults.vad.stopSecs), minVolume: numberOr(vad.minVolume, defaults.vad.minVolume), }, turnDetection: { strategy: turnDetection.strategy === "smart_turn" ? "smart_turn" : "silence", silenceTimeoutSecs: numberOr( turnDetection.silenceTimeoutSecs, defaults.turnDetection.silenceTimeoutSecs, ), }, }; }