Path: blob/main/extensions/copilot/src/platform/endpoint/common/modelAliasRegistry.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45export class ModelAliasRegistry {6private readonly _aliasToModelId = new Map<string, string>();7private readonly _modelIdToAliases = new Map<string, string[]>();8private static readonly _instance = new ModelAliasRegistry();910private constructor() { }1112private static _updateAliasesForModelId(modelId: string): void {13const aliases: string[] = [];14for (const [alias, mappedModelId] of this._instance._aliasToModelId.entries()) {15if (mappedModelId === modelId) {16aliases.push(alias);17}18}1920if (aliases.length > 0) {21this._instance._modelIdToAliases.set(modelId, aliases);22} else {23this._instance._modelIdToAliases.delete(modelId);24}25}2627static registerAlias(alias: string, modelId: string): void {28this._instance._aliasToModelId.set(alias, modelId);29this._updateAliasesForModelId(modelId);30}3132static deregisterAlias(alias: string): void {33const modelId = this._instance._aliasToModelId.get(alias);34this._instance._aliasToModelId.delete(alias);35if (modelId) {36this._updateAliasesForModelId(modelId);37}38}3940static resolveAlias(alias: string): string {41return this._instance._aliasToModelId.get(alias) ?? alias;42}4344static getAliases(modelId: string): string[] {45return this._instance._modelIdToAliases.get(modelId) ?? [];46}47}4849ModelAliasRegistry.registerAlias('copilot-fast', 'gpt-4o-mini');5051