import dotenv from "dotenv"; dotenv.config(); function numberFromEnv(env, key, fallback) { const value = env[key]; if (value === undefined || value === "") { return fallback; } const parsed = Number(value); return Number.isFinite(parsed) ? parsed : fallback; } export function loadConfig(env = process.env) { return { openAiApiKey: env.OPENAI_API_KEY ?? "", openAiBaseUrl: (env.OPENAI_BASE_URL ?? "https://api.openai.com/v1").replace(/\/+$/, ""), port: numberFromEnv(env, "PORT", 3000), mediaTtlSeconds: numberFromEnv(env, "MEDIA_TTL_SECONDS", 3600), requestTimeoutMs: numberFromEnv(env, "REQUEST_TIMEOUT_MS", 60000), jsonLimit: env.JSON_LIMIT ?? "50mb", maxAudioDownloadMb: numberFromEnv(env, "MAX_AUDIO_DOWNLOAD_MB", 25) }; } export function validateConfig(config) { const missing = []; if (!config.openAiApiKey) { missing.push("OPENAI_API_KEY"); } if (!config.openAiBaseUrl) { missing.push("OPENAI_BASE_URL"); } if (missing.length > 0) { throw new Error(`Missing required environment variables: ${missing.join(", ")}`); } }