import { z } from "zod"; // 统一在启动时解析环境变量,避免业务代码里散落字符串默认值。 const envSchema = z.object({ NODE_ENV: z.string().default("development"), PORT: z.coerce.number().int().positive().default(8788), HOST: z.string().default("0.0.0.0"), LOG_LEVEL: z.string().default("info"), AGENT_INTERNAL_TOKEN: z.string().optional(), OPENCODE_HOSTNAME: z.string().default("127.0.0.1"), OPENCODE_PORT: z.coerce.number().int().positive().default(4096), OPENCODE_TIMEOUT_MS: z.coerce.number().int().positive().default(5000), OPENCODE_MODEL: z.string().default("anthropic/claude-sonnet-4-5"), OPENCODE_BASE_URL: z.string().optional(), OPENCODE_SERVER_PASSWORD: z.string().optional(), OPENCODE_SERVER_USERNAME: z.string().default("opencode"), SESSION_TTL_SECONDS: z.coerce.number().int().positive().default(1800), TJWATER_API_BASE_URL: z.string().default("http://127.0.0.1:8000"), TJWATER_API_TIMEOUT_MS: z.coerce.number().int().positive().default(30000), MAX_INLINE_RESULT_BYTES: z.coerce.number().int().positive().default(12000), MAX_PREVIEW_SAMPLE_ITEMS: z.coerce.number().int().positive().default(3), }); export const config = envSchema.parse(process.env);