diff --git a/src/vs/workbench/contrib/chat/browser/chatSetup.ts b/src/vs/workbench/contrib/chat/browser/chatSetup.ts index 136f67dd317..9621e9cd6f9 100644 --- a/src/vs/workbench/contrib/chat/browser/chatSetup.ts +++ b/src/vs/workbench/contrib/chat/browser/chatSetup.ts @@ -148,7 +148,7 @@ class SetupChatAgentImplementation extends Disposable implements IChatAgentImple disposable.add(chatAgentService.registerAgent(id, { id, - name: 'Copilot', // intentionally not using exact same name as extension to avoid conflict with IChatAgentService.getAgentsByName() + name: `${defaultChat.providerName} Copilot`, isDefault: true, isCore: true, isToolsAgent, diff --git a/src/vs/workbench/contrib/chat/common/chatAgents.ts b/src/vs/workbench/contrib/chat/common/chatAgents.ts index a43f913a274..6ef8775d594 100644 --- a/src/vs/workbench/contrib/chat/common/chatAgents.ts +++ b/src/vs/workbench/contrib/chat/common/chatAgents.ts @@ -450,7 +450,16 @@ export class ChatAgentService extends Disposable implements IChatAgentService { } getAgentsByName(name: string): IChatAgentData[] { - return this.getAgents().filter(a => a.name === name); + return this._preferExtensionAgents(this.getAgents().filter(a => a.name === name)); + } + + private _preferExtensionAgents(agents: T[]): T[] { + // We potentially have multiple agents on the same location, + // contributed from core and from extensions. + // This method will prefer the extensions provided agents + // falling back to the original agents array extension agent is found. + const extensionAgents = agents.filter(a => !a.isCore); + return extensionAgents.length > 0 ? extensionAgents : agents; } agentHasDupeName(id: string): boolean {