diff --git a/packages/coding-agent/src/core/model-registry.ts b/packages/coding-agent/src/core/model-registry.ts index dca1db76..9b7d40de 100644 --- a/packages/coding-agent/src/core/model-registry.ts +++ b/packages/coding-agent/src/core/model-registry.ts @@ -28,6 +28,7 @@ import type { AuthStorage } from "./auth-storage.js"; import { clearConfigValueCache, resolveConfigValue, resolveHeaders } from "./resolve-config-value.js"; const Ajv = (AjvModule as any).default || AjvModule; +const ajv = new Ajv(); // Schema for OpenRouter routing preferences const OpenRouterRoutingSchema = Type.Object({ @@ -120,6 +121,8 @@ const ModelsConfigSchema = Type.Object({ providers: Type.Record(Type.String(), ProviderConfigSchema), }); +ajv.addSchema(ModelsConfigSchema, "ModelsConfig"); + type ModelsConfig = Static; /** Provider override config (baseUrl, headers, apiKey) without custom models */ @@ -350,8 +353,7 @@ export class ModelRegistry { const config: ModelsConfig = JSON.parse(content); // Validate schema - const ajv = new Ajv(); - const validate = ajv.compile(ModelsConfigSchema); + const validate = ajv.getSchema("ModelsConfig")!; if (!validate(config)) { const errors = validate.errors?.map((e: any) => ` - ${e.instancePath || "root"}: ${e.message}`).join("\n") ||