import { z } from 'zod'; import dotenv from 'dotenv'; import path from 'path'; dotenv.config({ path: path.join(__dirname, '../../../../.env') }); const envSchema = z.object({ DATABASE_URL: z.string().url(), REDIS_URL: z.string().url(), ADMIN_API_KEY: z.string().min(32), WHATSAPP_ACCESS_TOKEN: z.string().optional(), WHATSAPP_PHONE_NUMBER_ID: z.string().optional(), OPENAI_API_KEY: z.string().optional(), GOOGLE_AI_API_KEY: z.string().optional(), ANTHROPIC_API_KEY: z.string().optional(), STRIPE_SECRET_KEY: z.string().optional(), STRIPE_WEBHOOK_SECRET: z.string().optional(), R2_ACCOUNT_ID: z.string().optional(), R2_ACCESS_KEY_ID: z.string().optional(), R2_SECRET_ACCESS_KEY: z.string().optional(), R2_BUCKET: z.string().optional(), PORT: z.string().default('3001').transform(Number), NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), ENCRYPTION_SECRET: z.string().min(32, 'ENCRYPTION_SECRET must be at least 32 characters') }); const result = envSchema.safeParse(process.env); if (!result.success) { console.error('[CONFIG] ❌ Invalid environment variables:', result.error.format()); throw new Error(`[CONFIG] Missing or invalid environment variables:\n${result.error.message}`); } export const config = result.data;