/** * Centralised environment configuration. * Preserves existing env variable names and default values. */ export const env = { get nodeEnv(): string { return process.env.NODE_ENV ?? "development"; }, get isProduction(): boolean { return env.nodeEnv === "production"; }, get sessionSecret(): string { return process.env.SESSION_SECRET ?? "complex_password_at_least_32_characters_long"; }, get authPassword(): string { return process.env.AUTH_PASSWORD ?? "adventure"; }, get cronSecret(): string { return process.env.CRON_SECRET ?? "change-me-cron-secret"; }, get ollamaUrl(): string { return process.env.OLLAMA_URL ?? "http://localhost:11434"; }, get ollamaModelFast(): string { return process.env.OLLAMA_MODEL_FAST ?? "llama3.2:3b"; }, get ollamaModelProse(): string { return process.env.OLLAMA_MODEL_PROSE ?? process.env.OLLAMA_MODEL_FAST ?? "llama3.2:3b"; }, get hyperOllamaUrl(): string { return process.env.HYPER_OLLAMA_URL ?? "http://192.168.1.50:11434"; }, get hyperOllamaModelFast(): string { return process.env.HYPER_OLLAMA_MODEL_FAST ?? "llama3.1:8b"; }, get hyperOllamaModelProse(): string { return ( process.env.HYPER_OLLAMA_MODEL_PROSE ?? process.env.HYPER_OLLAMA_MODEL_FAST ?? "llama3.1:8b" ); }, get openAiApiKey(): string | undefined { return process.env.OPENAI_API_KEY; }, get llamaCppApiKey(): string | undefined { return process.env.LLAMACPP_API_KEY; }, get calibreLibraryPath(): string | undefined { return process.env.CALIBRE_LIBRARY_PATH; }, get calibreMetadataDbPath(): string | undefined { return process.env.CALIBRE_METADATA_DB_PATH; }, get calibreReadOnly(): boolean { return process.env.CALIBRE_READ_ONLY !== "false"; }, } as const; export function getOpenAiCompatibleApiKey(): string | undefined { return env.openAiApiKey ?? env.llamaCppApiKey; }