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;
}