feat: add sandbox, agent_configs, and routing config schemas

This commit is contained in:
William Valentin
2026-02-06 15:48:55 -08:00
parent e4eea764e7
commit daf8cac3fe
3 changed files with 127 additions and 1 deletions
+38
View File
@@ -179,6 +179,38 @@ const toolsSchema = z.object({
providers: z.record(z.string(), toolOverrideSchema).default({}),
}).default({});
// ── Sandbox schemas ───────────────────────────────────────────────────
const sandboxSchema = z.object({
enabled: z.boolean().default(false),
image: z.string().default('node:22-slim'),
workspace_dir: z.string().default('/workspace'),
network: z.enum(['none', 'bridge', 'host']).default('none'),
memory_limit: z.string().default('512m'),
cpu_limit: z.string().default('1.0'),
timeout_seconds: z.number().min(10).max(3600).default(300),
}).default({});
// ── Agent config + routing schemas ────────────────────────────────────
const modelTierEnum = z.enum(['fast', 'default', 'complex', 'local']);
const agentConfigEntrySchema = z.object({
system_prompt: z.string().optional(),
model_tier: modelTierEnum.optional(),
tool_profile: toolProfileEnum.optional(),
tool_overrides: toolOverrideSchema.optional(),
sandbox: z.boolean().default(false),
});
const agentConfigsSchema = z.record(z.string(), agentConfigEntrySchema).default({});
const routingSchema = z.object({
default_agent: z.string().optional(),
channels: z.record(z.string(), z.string()).default({}),
senders: z.record(z.string(), z.string()).default({}),
}).default({});
const promptSchema = z.object({
/** Additional directories to search for prompt template files. */
search_dirs: z.array(z.string()).default([]),
@@ -209,6 +241,9 @@ export const configSchema = z.object({
web_search: webSearchSchema,
prompt: promptSchema,
tools: toolsSchema,
sandbox: sandboxSchema,
agent_configs: agentConfigsSchema,
routing: routingSchema,
});
export type Config = z.infer<typeof configSchema>;
@@ -228,3 +263,6 @@ export type PromptConfig = z.infer<typeof promptSchema>;
export type ToolProfile = z.infer<typeof toolProfileEnum>;
export type ToolOverrideConfig = z.infer<typeof toolOverrideSchema>;
export type ToolsConfig = z.infer<typeof toolsSchema>;
export type SandboxConfig = z.infer<typeof sandboxSchema>;
export type AgentConfigEntry = z.infer<typeof agentConfigEntrySchema>;
export type RoutingConfig = z.infer<typeof routingSchema>;