| type AliasMap = Record<string, string>; |
|
|
| export function getDefaultModelAliasBase(modelId: string): string { |
| const trimmed = modelId.trim(); |
| if (!trimmed) return ""; |
|
|
| const segments = trimmed |
| .split("/") |
| .map((segment) => segment.trim()) |
| .filter(Boolean); |
| return segments[segments.length - 1] || trimmed; |
| } |
|
|
| export function resolveManagedModelAlias({ |
| modelId, |
| fullModel, |
| providerDisplayAlias, |
| existingAliases, |
| }: { |
| modelId: string; |
| fullModel: string; |
| providerDisplayAlias: string; |
| existingAliases: AliasMap; |
| }): string | null { |
| const baseAlias = getDefaultModelAliasBase(modelId); |
| if (!baseAlias) return null; |
|
|
| for (const [alias, value] of Object.entries(existingAliases)) { |
| if (value === fullModel) return alias; |
| } |
|
|
| const displayAlias = providerDisplayAlias.trim(); |
| const candidates: string[] = []; |
| const seen = new Set<string>(); |
| const pushCandidate = (candidate: string) => { |
| const trimmed = candidate.trim(); |
| if (!trimmed || seen.has(trimmed)) return; |
| seen.add(trimmed); |
| candidates.push(trimmed); |
| }; |
|
|
| pushCandidate(baseAlias); |
| if (displayAlias) { |
| pushCandidate(`${displayAlias}-${baseAlias}`); |
| } |
|
|
| for (const candidate of candidates) { |
| if (!(candidate in existingAliases) || existingAliases[candidate] === fullModel) { |
| return candidate; |
| } |
| } |
|
|
| for (let suffix = 2; suffix <= 5000; suffix += 1) { |
| if (displayAlias) { |
| const prefixed = `${displayAlias}-${baseAlias}-${suffix}`; |
| if (!(prefixed in existingAliases) || existingAliases[prefixed] === fullModel) { |
| return prefixed; |
| } |
| } |
|
|
| const fallback = `${baseAlias}-${suffix}`; |
| if (!(fallback in existingAliases) || existingAliases[fallback] === fullModel) { |
| return fallback; |
| } |
| } |
|
|
| return null; |
| } |
|
|