import { z } from 'zod'; /** * Provider configuration schema */ export const ProviderConfigSchema = z.object({ apiKey: z.string().optional(), apiBase: z.string().optional(), enabled: z.boolean().optional().default(true), }); /** * Providers configuration schema (OpenRouter only) */ export const ProvidersConfigSchema = z.object({ openrouter: ProviderConfigSchema.optional(), }); /** * Agent defaults configuration schema */ export const AgentDefaultsSchema = z.object({ model: z.string().default('anthropic/claude-opus-4-5'), temperature: z.number().min(0).max(2).optional().default(0.7), maxTokens: z.number().positive().optional().default(4096), systemPrompt: z.string().optional(), }); /** * Agents configuration schema */ export const AgentsConfigSchema = z.object({ defaults: AgentDefaultsSchema.optional(), }); /** * Tools configuration schema */ export const ToolsConfigSchema = z.object({ restrictToWorkspace: z.boolean().optional().default(false), allowedCommands: z.array(z.string()).optional(), deniedCommands: z.array(z.string()).optional(), }); /** * Main configuration schema */ export const ConfigSchema = z.object({ providers: ProvidersConfigSchema.optional().default({}), agents: AgentsConfigSchema.optional().default({}), tools: ToolsConfigSchema.optional().default({}), }); /** * Configuration types inferred from schema */ export type Config = z.infer; export type ProvidersConfig = z.infer; export type AgentsConfig = z.infer; export type ToolsConfig = z.infer;