| 189 | } |
| 190 | |
| 191 | export function validateModelMap(raw: unknown, label = "model map"): ModelMapOverride { |
| 192 | if (!raw || typeof raw !== "object" || Array.isArray(raw)) { |
| 193 | throw new Error(`${label} must be a JSON object.`); |
| 194 | } |
| 195 | const obj = raw as Record<string, unknown>; |
| 196 | const models: ModelMapOverride = {}; |
| 197 | for (const [key, value] of Object.entries(obj)) { |
| 198 | if (!COMPLEXITY_VALUES.has(key as Complexity)) { |
| 199 | throw new Error(`${label} contains unknown complexity key: ${key}`); |
| 200 | } |
| 201 | if (typeof value !== "string" || value.trim() === "") { |
| 202 | throw new Error(`${label}.${key} must be a non-empty string.`); |
| 203 | } |
| 204 | models[key as Complexity] = value.trim(); |
| 205 | } |
| 206 | return models; |
| 207 | } |
| 208 | |
| 209 | export function createModelResolver(overrides: ModelMapOverride = {}): (c: Complexity) => string { |
| 210 | const models: ModelMap = { ...DEFAULT_MODEL_MAP, ...overrides }; |