import { z } from 'zod'; const envSchema = z.object({ NODE_ENV: z.enum(['development', 'test', 'production']).default('development'), DATABASE_URL: z.string().url(), REDIS_URL: z.string().url(), API_PORT: z.coerce.number().default(3001), JWT_SECRET: z.string().min(32), MEILI_URL: z.string().url().default('http://localhost:7700'), MEILI_MASTER_KEY: z.string().default('tower_meili_dev_key'), LOG_LEVEL: z.enum(['trace', 'debug', 'info', 'warn', 'error']).default('info'), WHATSAPP_SESSION_PATH: z.string().default('./sessions'), TOWER_PORTAL_BASE_URL: z.string().url().default('http://localhost:3000'), BCRYPT_ROUNDS: z.coerce.number().int().min(4).max(15).default(10), JWT_EXPIRES_IN: z.string().default('7d'), MEMBER_JWT_EXPIRES_IN: z.string().default('30d'), OPENROUTER_API_KEY: z.string().optional(), AI_STREAM_TOKEN: z.string().optional(), }); export type Env = z.infer; export function validateEnv(env: NodeJS.ProcessEnv = process.env): Env { const result = envSchema.safeParse(env); if (!result.success) { console.error('Invalid environment variables:', result.error.format()); throw new Error('Invalid environment variables'); } return result.data; }