import { z } from 'zod/v4' export const AutoFixConfigSchema = z .object({ enabled: z.boolean().describe('Whether auto-fix is enabled'), lint: z .string() .optional() .describe('Lint command to run after file edits (e.g. "eslint . --fix")'), test: z .string() .optional() .describe('Test command to run after file edits (e.g. "bun test")'), maxRetries: z .number() .int() .min(0) .max(10) .default(3) .describe('Maximum number of auto-fix retry attempts (default: 3)'), timeout: z .number() .int() .min(1000) .max(300000) .default(30000) .describe('Timeout in ms for each lint/test command (default: 30000)'), }) .refine( data => !data.enabled || data.lint !== undefined || data.test !== undefined, { message: 'At least one of "lint" or "test" must be set when enabled', }, ) export type AutoFixConfig = z.infer export function getAutoFixConfig( rawConfig: unknown, ): AutoFixConfig | null { if (!rawConfig || typeof rawConfig !== 'object') { return null } const parsed = AutoFixConfigSchema.safeParse(rawConfig) if (!parsed.success) { return null } if (!parsed.data.enabled) { return null } return parsed.data }