import process from "node:process"; import { loadConfig, requireAssistantRuntimeConfig, requireDiscordRuntimeConfig } from "./config.js"; import { runDiscordBot } from "./discord-main.js"; import { Logger } from "./logger.js"; import { dumpLocalTtsWave, printLocalAudioDevices, runLocalAssistant, runLocalTtsSmokeTest } from "./local-main.js"; const mode = process.argv[2] ?? "discord"; const config = loadConfig(); const logger = new Logger(config.LOG_LEVEL); async function main(): Promise { switch (mode) { case "discord": await runDiscordBot(requireDiscordRuntimeConfig(config), logger); return; case "local": await runLocalAssistant(requireAssistantRuntimeConfig(config), logger); return; case "local-devices": await printLocalAudioDevices(); return; case "local-say": { const text = process.argv.slice(3).join(" ").trim() || "안녕하세요. TTS 단독 재생 테스트입니다."; await runLocalTtsSmokeTest(requireAssistantRuntimeConfig(config), logger, text); return; } case "local-say-dump": { const text = process.argv.slice(3).join(" ").trim() || "안녕하세요. TTS WAV 파일 테스트입니다."; await dumpLocalTtsWave(requireAssistantRuntimeConfig(config), logger, text); return; } default: throw new Error(`알 수 없는 실행 모드입니다: ${mode}. 사용 가능: discord, local, local-devices, local-say, local-say-dump`); } } void main().catch((error) => { logger.error("Fatal startup error", error); process.exit(1); });