42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
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<void> {
|
|
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);
|
|
});
|