Files
agent/apps/server/src/config.ts
T

29 lines
1.2 KiB
TypeScript

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",
};
}