Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/platform/endpoint/common/modelAliasRegistry.ts
13401 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
export class ModelAliasRegistry {
7
private readonly _aliasToModelId = new Map<string, string>();
8
private readonly _modelIdToAliases = new Map<string, string[]>();
9
private static readonly _instance = new ModelAliasRegistry();
10
11
private constructor() { }
12
13
private static _updateAliasesForModelId(modelId: string): void {
14
const aliases: string[] = [];
15
for (const [alias, mappedModelId] of this._instance._aliasToModelId.entries()) {
16
if (mappedModelId === modelId) {
17
aliases.push(alias);
18
}
19
}
20
21
if (aliases.length > 0) {
22
this._instance._modelIdToAliases.set(modelId, aliases);
23
} else {
24
this._instance._modelIdToAliases.delete(modelId);
25
}
26
}
27
28
static registerAlias(alias: string, modelId: string): void {
29
this._instance._aliasToModelId.set(alias, modelId);
30
this._updateAliasesForModelId(modelId);
31
}
32
33
static deregisterAlias(alias: string): void {
34
const modelId = this._instance._aliasToModelId.get(alias);
35
this._instance._aliasToModelId.delete(alias);
36
if (modelId) {
37
this._updateAliasesForModelId(modelId);
38
}
39
}
40
41
static resolveAlias(alias: string): string {
42
return this._instance._aliasToModelId.get(alias) ?? alias;
43
}
44
45
static getAliases(modelId: string): string[] {
46
return this._instance._modelIdToAliases.get(modelId) ?? [];
47
}
48
}
49
50
ModelAliasRegistry.registerAlias('copilot-fast', 'gpt-4o-mini');
51