export const MODEL_MAP: Record = { "gpt-5.1": "gpt-5.1", "gpt-5.1-none": "gpt-5.1", "gpt-5.1-low": "gpt-5.1", "gpt-5.1-medium": "gpt-5.1", "gpt-5.1-high": "gpt-5.1", "gpt-5.2": "gpt-5.2", "gpt-5.2-none": "gpt-5.2", "gpt-5.2-low": "gpt-5.2", "gpt-5.2-medium": "gpt-5.2", "gpt-5.2-high": "gpt-5.2", "gpt-5.2-xhigh": "gpt-5.2", "gpt-5.1-codex": "gpt-5.1-codex", "gpt-5.1-codex-low": "gpt-5.1-codex", "gpt-5.1-codex-medium": "gpt-5.1-codex", "gpt-5.1-codex-high": "gpt-5.1-codex", "gpt-5.1-codex-max": "gpt-5.1-codex-max", "gpt-5.1-codex-max-low": "gpt-5.1-codex-max", "gpt-5.1-codex-max-medium": "gpt-5.1-codex-max", "gpt-5.1-codex-max-high": "gpt-5.1-codex-max", "gpt-5.1-codex-max-xhigh": "gpt-5.1-codex-max", "gpt-5.1-codex-mini": "gpt-5.1-codex-mini", "gpt-5.1-codex-mini-medium": "gpt-5.1-codex-mini", "gpt-5.1-codex-mini-high": "gpt-5.1-codex-mini", "gpt-5.2-codex": "gpt-5.2-codex", "gpt-5.2-codex-low": "gpt-5.2-codex", "gpt-5.2-codex-medium": "gpt-5.2-codex", "gpt-5.2-codex-high": "gpt-5.2-codex", "gpt-5.2-codex-xhigh": "gpt-5.2-codex", }; export function getNormalizedModel(modelId: string): string | undefined { try { if (MODEL_MAP[modelId]) { return MODEL_MAP[modelId]; } const lowerModelId = modelId.toLowerCase(); const match = Object.keys(MODEL_MAP).find( (key) => key.toLowerCase() === lowerModelId, ); return match ? MODEL_MAP[match] : undefined; } catch { return undefined; } } export function isKnownModel(modelId: string): boolean { return getNormalizedModel(modelId) !== undefined; } export function getModelFamily( normalizedModel: string, ): "gpt-5.1" | "gpt-5.2" | "codex" | "codex-max" | "codex-mini" | "gpt-5.2-codex" { if (normalizedModel.includes("gpt-5.2-codex")) { return "gpt-5.2-codex"; } if (normalizedModel.includes("codex-max")) { return "codex-max"; } if (normalizedModel.includes("codex") && normalizedModel.includes("mini")) { return "codex-mini"; } if (normalizedModel.includes("codex")) { return "codex"; } if (normalizedModel.includes("gpt-5.2")) { return "gpt-5.2"; } return "gpt-5.1"; }