import { z } from "zod"; const EnvironmentSchema = z.object({ HOST: z.string().default("127.0.0.1"), PORT: z.coerce.number().int().min(1).max(65_535).default(3_001), SESSIONS_ROOT: z.string().min(1).default(".agent-studio-sessions"), AGENT_DIR: z.string().min(1).default(".agent-studio-runtime"), MAX_IMAGE_BYTES: z.coerce.number().int().positive().default(5 * 1024 * 1024), SESSION_RUN_TIMEOUT_MS: z.coerce.number().int().positive().default(120_000), APPROVAL_TIMEOUT_MS: z.coerce.number().int().positive().default(60_000), MAX_IMAGES_PER_MESSAGE: z.coerce.number().int().positive().max(16).default(4), ALLOW_PRIVATE_LLM_BASE_URLS: z.enum(["true", "false"]).default("false"), }).passthrough(); export function loadServerConfig(environment: NodeJS.ProcessEnv) { const parsed = EnvironmentSchema.parse(environment); return { host: parsed.HOST, port: parsed.PORT, sessionsRoot: parsed.SESSIONS_ROOT, agentDir: parsed.AGENT_DIR, maxImageBytes: parsed.MAX_IMAGE_BYTES, runTimeoutMs: parsed.SESSION_RUN_TIMEOUT_MS, approvalTimeoutMs: parsed.APPROVAL_TIMEOUT_MS, maxImagesPerMessage: parsed.MAX_IMAGES_PER_MESSAGE, allowPrivateLlmBaseUrls: parsed.ALLOW_PRIVATE_LLM_BASE_URLS === "true", }; }