File size: 1,868 Bytes
6111b2b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | 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;
}
|