fix: support blank env values and windows local audio

This commit is contained in:
2026-04-30 02:46:38 +09:00
parent cf6398f50a
commit 23bc534b23
3 changed files with 219 additions and 11 deletions

View File

@@ -3,20 +3,28 @@ import { z } from "zod";
loadDotenv();
const emptyToUndefined = z.preprocess((value) => {
if (typeof value !== "string") {
return value;
}
const trimmed = value.trim();
return trimmed.length === 0 ? undefined : trimmed;
}, z.string().min(1).optional());
const envSchema = z.object({
DISCORD_BOT_TOKEN: z.string().min(1).optional(),
DISCORD_APPLICATION_ID: z.string().min(1).optional(),
DISCORD_COMMAND_GUILD_ID: z.string().min(1).optional(),
OPENAI_API_KEY: z.string().min(1).optional(),
DISCORD_BOT_TOKEN: emptyToUndefined,
DISCORD_APPLICATION_ID: emptyToUndefined,
DISCORD_COMMAND_GUILD_ID: emptyToUndefined,
OPENAI_API_KEY: emptyToUndefined,
OPENAI_MODEL: z.string().min(1).default("gpt-5.4-mini"),
ELEVENLABS_API_KEY: z.string().min(1).optional(),
ELEVENLABS_VOICE_ID: z.string().min(1).optional(),
ELEVENLABS_API_KEY: emptyToUndefined,
ELEVENLABS_VOICE_ID: emptyToUndefined,
ELEVENLABS_STT_MODEL: z.string().min(1).default("scribe_v2_realtime"),
ELEVENLABS_TTS_MODEL: z.string().min(1).default("eleven_flash_v2_5"),
BOT_DEFAULT_LANGUAGE: z.string().min(2).default("ko"),
MAX_CONVERSATION_TURNS: z.coerce.number().int().min(4).max(30).default(12),
LOCAL_AUDIO_SOURCE: z.string().min(1).optional(),
LOCAL_AUDIO_SINK: z.string().min(1).optional(),
LOCAL_AUDIO_SOURCE: emptyToUndefined,
LOCAL_AUDIO_SINK: emptyToUndefined,
LOCAL_SPEAKER_NAME: z.string().min(1).default("local-user"),
DEBUG_TEXT_EVENTS: z
.string()