import { config as loadEnv } from "dotenv"; import { z } from "zod"; loadEnv(); const schema = z.object({ NODE_ENV: z.enum(["development", "production", "test"]).default("production"), PORT: z.coerce.number().int().positive().default(8811), LOG_LEVEL: z.enum(["debug", "info", "warn", "error"]).default("info"), GATEWAY_VERSION: z.string().default("0.1.0"), ENABLED_PLUGINS: z.string().default(""), AGENT_TOKENS: z.string().default(""), PLUGINS_DIR: z.string().default("./dist/plugins"), }); const parsed = schema.safeParse(process.env); if (!parsed.success) { // Boot-time validation failure: print and exit. Never let a misconfigured // gateway start up partially. console.error("Invalid environment configuration:", parsed.error.format()); process.exit(1); } export const env = parsed.data; export const enabledPlugins = env.ENABLED_PLUGINS ? env.ENABLED_PLUGINS.split(",") .map((s) => s.trim()) .filter(Boolean) : [];