29 lines
1.2 KiB
TypeScript
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",
|
|
};
|
|
}
|