From e1eefc32148eb77944944a4d86c64e711b83da86 Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Mon, 2 Mar 2026 10:41:46 -0800 Subject: [PATCH 1/3] chat: make sendChatRequest extensionIdentifier parameter optional Makes the 'from' parameter optional (ExtensionIdentifier | undefined) in the sendChatRequest method chain across ILanguageModelsService, RPC protocol, and implementations. This allows internal VS Code calls to pass undefined instead of instantiating invalid ExtensionIdentifier('core') identifiers. - Updates ILanguageModelsService.sendChatRequest signature - Updates ILanguageModelChatProvider.sendChatRequest signature - Updates ExtHostLanguageModelsShape protocol - Updates ExtHostLanguageModels \ implementation - Removes new ExtensionIdentifier('core') from 5 internal callers - Passes undefined as requestInitiator when from is absent - Bumps vscode.proposed.chatProvider API version to 5 - Updates test mocks to accept optional from parameter Refs https://github.com/microsoft/vscode/issues/290436 (Commit message generated by Copilot) --- .vscode/notebooks/my-work.github-issues | 2 +- .../platform/extensions/common/extensionsApiProposals.ts | 2 +- src/vs/workbench/api/common/extHost.protocol.ts | 2 +- src/vs/workbench/api/common/extHostLanguageModels.ts | 5 +++-- .../chatEditing/chatEditingExplanationModelManager.ts | 3 +-- .../widget/chatContentParts/chatThinkingContentPart.ts | 3 +-- .../chat/browser/widget/chatQuestionCarouselAutoReply.ts | 5 ++--- src/vs/workbench/contrib/chat/common/languageModels.ts | 8 ++++---- .../contrib/chat/test/common/languageModels.test.ts | 2 +- .../workbench/contrib/chat/test/common/languageModels.ts | 2 +- src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts | 3 +-- .../browser/tools/monitoring/outputMonitor.ts | 7 +++---- src/vscode-dts/vscode.proposed.chatProvider.d.ts | 7 ++++--- 13 files changed, 24 insertions(+), 27 deletions(-) diff --git a/.vscode/notebooks/my-work.github-issues b/.vscode/notebooks/my-work.github-issues index b6c82fff3590b5..c4bc569e9da315 100644 --- a/.vscode/notebooks/my-work.github-issues +++ b/.vscode/notebooks/my-work.github-issues @@ -7,7 +7,7 @@ { "kind": 2, "language": "github-issues", - "value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce repo:microsoft/vscode-copilot-issues repo:microsoft/vscode-extension-samples\n\n// current milestone name\n$MILESTONE=milestone:\"February 2026\"\n" + "value": "// list of repos we work in\n$REPOS=repo:microsoft/lsprotocol repo:microsoft/monaco-editor repo:microsoft/vscode repo:microsoft/vscode-anycode repo:microsoft/vscode-autopep8 repo:microsoft/vscode-black-formatter repo:microsoft/vscode-copilot repo:microsoft/vscode-copilot-release repo:microsoft/vscode-dev repo:microsoft/vscode-dev-chrome-launcher repo:microsoft/vscode-emmet-helper repo:microsoft/vscode-extension-telemetry repo:microsoft/vscode-flake8 repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-hexeditor repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-isort repo:microsoft/vscode-js-debug repo:microsoft/vscode-jupyter repo:microsoft/vscode-jupyter-internal repo:microsoft/vscode-l10n repo:microsoft/vscode-livepreview repo:microsoft/vscode-markdown-languageservice repo:microsoft/vscode-markdown-tm-grammar repo:microsoft/vscode-mypy repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-pylint repo:microsoft/vscode-python repo:microsoft/vscode-python-debugger repo:microsoft/vscode-python-tools-extension-template repo:microsoft/vscode-references-view repo:microsoft/vscode-remote-release repo:microsoft/vscode-remote-repositories-github repo:microsoft/vscode-remote-tunnels repo:microsoft/vscode-remotehub repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-unpkg repo:microsoft/vscode-vsce repo:microsoft/vscode-copilot-issues repo:microsoft/vscode-extension-samples\n\n// current milestone name\n$MILESTONE=milestone:\"March 2026\"\n" }, { "kind": 1, diff --git a/src/vs/platform/extensions/common/extensionsApiProposals.ts b/src/vs/platform/extensions/common/extensionsApiProposals.ts index fb796867b8bc21..2d216e328dd0c8 100644 --- a/src/vs/platform/extensions/common/extensionsApiProposals.ts +++ b/src/vs/platform/extensions/common/extensionsApiProposals.ts @@ -68,7 +68,7 @@ const _allApiProposals = { }, chatProvider: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts', - version: 4 + version: 5 }, chatReferenceBinaryData: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatReferenceBinaryData.d.ts', diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index 8abfea0b8d3176..0f5821f2662b29 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -1368,7 +1368,7 @@ export interface MainThreadLanguageModelsShape extends IDisposable { export interface ExtHostLanguageModelsShape { $provideLanguageModelChatInfo(vendor: string, options: ILanguageModelChatInfoOptions, token: CancellationToken): Promise; $updateModelAccesslist(data: { from: ExtensionIdentifier; to: ExtensionIdentifier; enabled: boolean }[]): void; - $startChatRequest(modelId: string, requestId: number, from: ExtensionIdentifier, messages: SerializableObjectWithBuffers, options: { [name: string]: any }, token: CancellationToken): Promise; + $startChatRequest(modelId: string, requestId: number, from: ExtensionIdentifier | undefined, messages: SerializableObjectWithBuffers, options: { [name: string]: any }, token: CancellationToken): Promise; $acceptResponsePart(requestId: number, chunk: SerializableObjectWithBuffers): Promise; $acceptResponseDone(requestId: number, error: SerializedError | undefined): Promise; $provideTokenLength(modelId: string, value: string | IChatMessage, token: CancellationToken): Promise; diff --git a/src/vs/workbench/api/common/extHostLanguageModels.ts b/src/vs/workbench/api/common/extHostLanguageModels.ts index 18c2045825c0d6..9325afc01855d1 100644 --- a/src/vs/workbench/api/common/extHostLanguageModels.ts +++ b/src/vs/workbench/api/common/extHostLanguageModels.ts @@ -258,7 +258,7 @@ export class ExtHostLanguageModels implements ExtHostLanguageModelsShape { return modelMetadataAndIdentifier; } - async $startChatRequest(modelId: string, requestId: number, from: ExtensionIdentifier, messages: SerializableObjectWithBuffers, options: vscode.LanguageModelChatRequestOptions, token: CancellationToken): Promise { + async $startChatRequest(modelId: string, requestId: number, from: ExtensionIdentifier | undefined, messages: SerializableObjectWithBuffers, options: vscode.LanguageModelChatRequestOptions, token: CancellationToken): Promise { const knownModel = this._localModels.get(modelId); if (!knownModel) { throw new Error('Model not found'); @@ -319,7 +319,8 @@ export class ExtHostLanguageModels implements ExtHostLanguageModelsShape { value = data.provider.provideLanguageModelChatResponse( knownModel.info, messages.value.map(typeConvert.LanguageModelChatMessage2.to), - { ...options, modelOptions: options.modelOptions ?? {}, requestInitiator: ExtensionIdentifier.toKey(from), toolMode: options.toolMode ?? extHostTypes.LanguageModelChatToolMode.Auto }, + // todo@connor4312: move `core` -> `undefined` after 1.111 Insiders is out + { ...options, modelOptions: options.modelOptions ?? {}, requestInitiator: from ? ExtensionIdentifier.toKey(from) : 'core', toolMode: options.toolMode ?? extHostTypes.LanguageModelChatToolMode.Auto }, progress, token ); diff --git a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.ts b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.ts index b26f5ced875aa6..e752209f42896d 100644 --- a/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.ts +++ b/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.ts @@ -14,7 +14,6 @@ import { DetailedLineRangeMapping, LineRangeMapping } from '../../../../../edito import { createDecorator } from '../../../../../platform/instantiation/common/instantiation.js'; import { InstantiationType, registerSingleton } from '../../../../../platform/instantiation/common/extensions.js'; import { ChatMessageRole, ILanguageModelsService } from '../../common/languageModels.js'; -import { ExtensionIdentifier } from '../../../../../platform/extensions/common/extensions.js'; import * as nls from '../../../../../nls.js'; /** @@ -284,7 +283,7 @@ Example response format: const response = await this._languageModelsService.sendChatRequest( models[0], - new ExtensionIdentifier('core'), + undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: prompt }] }], {}, cancellationToken diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts index 473db6ff51a02b..bbab1de37aa368 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts @@ -32,7 +32,6 @@ import { autorun } from '../../../../../../base/common/observable.js'; import { CancellationTokenSource } from '../../../../../../base/common/cancellation.js'; import { IChatMarkdownAnchorService } from './chatMarkdownAnchorService.js'; import { ChatMessageRole, ILanguageModelsService } from '../../../common/languageModels.js'; -import { ExtensionIdentifier } from '../../../../../../platform/extensions/common/extensions.js'; import './media/chatThinkingContent.css'; import { IHoverService } from '../../../../../../platform/hover/browser/hover.js'; @@ -958,7 +957,7 @@ ${this.hookCount > 0 ? `EXAMPLES WITH BLOCKED CONTENT (from hooks): const response = await this.languageModelsService.sendChatRequest( models[0], - new ExtensionIdentifier('core'), + undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: prompt }] }], {}, cts.token diff --git a/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.ts b/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.ts index eca6e1608144ab..51ea07629f0235 100644 --- a/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.ts +++ b/src/vs/workbench/contrib/chat/browser/widget/chatQuestionCarouselAutoReply.ts @@ -13,7 +13,6 @@ import { hasKey } from '../../../../../base/common/types.js'; import { localize } from '../../../../../nls.js'; import { IConfigurationService } from '../../../../../platform/configuration/common/configuration.js'; import { IDialogService } from '../../../../../platform/dialogs/common/dialogs.js'; -import { ExtensionIdentifier } from '../../../../../platform/extensions/common/extensions.js'; import { ILogService } from '../../../../../platform/log/common/log.js'; import { IStorageService, StorageScope, StorageTarget } from '../../../../../platform/storage/common/storage.js'; import { IChatQuestion, IChatQuestionCarousel } from '../../common/chatService/chatService.js'; @@ -191,7 +190,7 @@ export class ChatQuestionCarouselAutoReply extends Disposable { const prompt = this.buildPrompt(carousel, requestMessageText, false); const response = await this.languageModelsService.sendChatRequest( modelId, - new ExtensionIdentifier('core'), + undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: prompt }] }], {}, token, @@ -205,7 +204,7 @@ export class ChatQuestionCarouselAutoReply extends Disposable { const retryPrompt = this.buildPrompt(carousel, requestMessageText, true); const retryResponse = await this.languageModelsService.sendChatRequest( modelId, - new ExtensionIdentifier('core'), + undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: retryPrompt }] }], {}, token, diff --git a/src/vs/workbench/contrib/chat/common/languageModels.ts b/src/vs/workbench/contrib/chat/common/languageModels.ts index 803c331fb67ec0..08912e24f66147 100644 --- a/src/vs/workbench/contrib/chat/common/languageModels.ts +++ b/src/vs/workbench/contrib/chat/common/languageModels.ts @@ -263,13 +263,13 @@ export async function getTextResponseFromStream(response: ILanguageModelChatResp export interface ILanguageModelChatProvider { readonly onDidChange: Event; provideLanguageModelChatInfo(options: ILanguageModelChatInfoOptions, token: CancellationToken): Promise; - sendChatRequest(modelId: string, messages: IChatMessage[], from: ExtensionIdentifier, options: { [name: string]: unknown }, token: CancellationToken): Promise; + sendChatRequest(modelId: string, messages: IChatMessage[], from: ExtensionIdentifier | undefined, options: { [name: string]: unknown }, token: CancellationToken): Promise; provideTokenCount(modelId: string, message: string | IChatMessage, token: CancellationToken): Promise; } export interface ILanguageModelChat { metadata: ILanguageModelChatMetadata; - sendChatRequest(messages: IChatMessage[], from: ExtensionIdentifier, options: { [name: string]: unknown }, token: CancellationToken): Promise; + sendChatRequest(messages: IChatMessage[], from: ExtensionIdentifier | undefined, options: { [name: string]: unknown }, token: CancellationToken): Promise; provideTokenCount(message: string | IChatMessage, token: CancellationToken): Promise; } @@ -355,7 +355,7 @@ export interface ILanguageModelsService { deltaLanguageModelChatProviderDescriptors(added: IUserFriendlyLanguageModel[], removed: IUserFriendlyLanguageModel[]): void; // eslint-disable-next-line @typescript-eslint/no-explicit-any - sendChatRequest(modelId: string, from: ExtensionIdentifier, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise; + sendChatRequest(modelId: string, from: ExtensionIdentifier | undefined, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise; computeTokenLength(modelId: string, message: string | IChatMessage, token: CancellationToken): Promise; @@ -927,7 +927,7 @@ export class LanguageModelsService implements ILanguageModelsService { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - async sendChatRequest(modelId: string, from: ExtensionIdentifier, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise { + async sendChatRequest(modelId: string, from: ExtensionIdentifier | undefined, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise { const provider = this._providers.get(this._modelCache.get(modelId)?.vendor || ''); if (!provider) { throw new Error(`Chat provider for model ${modelId} is not registered.`); diff --git a/src/vs/workbench/contrib/chat/test/common/languageModels.test.ts b/src/vs/workbench/contrib/chat/test/common/languageModels.test.ts index ddac0e86cc3dcc..5790fab95ddc01 100644 --- a/src/vs/workbench/contrib/chat/test/common/languageModels.test.ts +++ b/src/vs/workbench/contrib/chat/test/common/languageModels.test.ts @@ -160,7 +160,7 @@ suite('LanguageModels', function () { })); return modelMetadataAndIdentifier; }, - sendChatRequest: async (modelId: string, messages: IChatMessage[], _from: ExtensionIdentifier, _options: { [name: string]: any }, token: CancellationToken) => { + sendChatRequest: async (modelId: string, messages: IChatMessage[], _from: ExtensionIdentifier | undefined, _options: { [name: string]: any }, token: CancellationToken) => { // const message = messages.at(-1); const defer = new DeferredPromise(); diff --git a/src/vs/workbench/contrib/chat/test/common/languageModels.ts b/src/vs/workbench/contrib/chat/test/common/languageModels.ts index 77b874be830d02..8ead7eab0a9b0c 100644 --- a/src/vs/workbench/contrib/chat/test/common/languageModels.ts +++ b/src/vs/workbench/contrib/chat/test/common/languageModels.ts @@ -67,7 +67,7 @@ export class NullLanguageModelsService implements ILanguageModelsService { } // eslint-disable-next-line @typescript-eslint/no-explicit-any - sendChatRequest(identifier: string, from: ExtensionIdentifier, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise { + sendChatRequest(identifier: string, from: ExtensionIdentifier | undefined, messages: IChatMessage[], options: { [name: string]: any }, token: CancellationToken): Promise { throw new Error('Method not implemented.'); } diff --git a/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts b/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts index 317b4a0473bd50..0c729756165393 100644 --- a/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts +++ b/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts @@ -15,7 +15,6 @@ import { localize } from '../../../../nls.js'; import { ICommandService } from '../../../../platform/commands/common/commands.js'; import { ConfigurationTarget, getConfigValueInTarget, IConfigurationService } from '../../../../platform/configuration/common/configuration.js'; import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js'; -import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js'; import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js'; import { INotificationService, Severity } from '../../../../platform/notification/common/notification.js'; import { ChatAgentLocation, ChatConfiguration } from '../../chat/common/constants.js'; @@ -81,7 +80,7 @@ export class McpSamplingService extends Disposable implements IMcpSamplingServic const model = await this._modelSequencer.queue(() => this._getMatchingModel(opts)); // todo@connor4312: nullExtensionDescription.identifier -> undefined with API update - const response = await this._languageModelsService.sendChatRequest(model, new ExtensionIdentifier('core'), messages, {}, token); + const response = await this._languageModelsService.sendChatRequest(model, undefined, messages, {}, token); let responseText = ''; diff --git a/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.ts b/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.ts index 56f9617ea7bfd6..eef1a76329b348 100644 --- a/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.ts +++ b/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.ts @@ -13,7 +13,6 @@ import { Disposable, MutableDisposable, type IDisposable } from '../../../../../ import { isObject, isString } from '../../../../../../../base/common/types.js'; import { URI } from '../../../../../../../base/common/uri.js'; import { localize } from '../../../../../../../nls.js'; -import { ExtensionIdentifier } from '../../../../../../../platform/extensions/common/extensions.js'; import { IChatWidgetService } from '../../../../../chat/browser/chat.js'; import { ChatElicitationRequestPart } from '../../../../../chat/common/model/chatProgressTypes/chatElicitationRequestPart.js'; import { ChatModel } from '../../../../../chat/common/model/chatModel.js'; @@ -473,7 +472,7 @@ export class OutputMonitor extends Disposable implements IOutputMonitor { const response = await this._languageModelsService.sendChatRequest( model, - new ExtensionIdentifier('core'), + undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: `Evaluate this terminal output to determine if there were errors. If there are errors, return them. Otherwise, return undefined: ${buffer}.` }] }], {}, token @@ -546,7 +545,7 @@ export class OutputMonitor extends Disposable implements IOutputMonitor { ${lastLines} `; - const response = await this._languageModelsService.sendChatRequest(model, new ExtensionIdentifier('core'), [{ role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }], {}, token); + const response = await this._languageModelsService.sendChatRequest(model, undefined, [{ role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] }], {}, token); const responseText = await getTextResponseFromStream(response); try { const match = responseText.match(/\{[\s\S]*\}/); @@ -652,7 +651,7 @@ export class OutputMonitor extends Disposable implements IOutputMonitor { if (model) { try { const promptText = `Given the following confirmation prompt and options from a terminal output, which option is the default?\nPrompt: "${prompt}"\nOptions: ${JSON.stringify(options)}\nRespond with only the option string.`; - const response = await this._languageModelsService.sendChatRequest(model, new ExtensionIdentifier('core'), [ + const response = await this._languageModelsService.sendChatRequest(model, undefined, [ { role: ChatMessageRole.User, content: [{ type: 'text', value: promptText }] } ], {}, token); diff --git a/src/vscode-dts/vscode.proposed.chatProvider.d.ts b/src/vscode-dts/vscode.proposed.chatProvider.d.ts index 1ded6ac9ba7304..26332d13383870 100644 --- a/src/vscode-dts/vscode.proposed.chatProvider.d.ts +++ b/src/vscode-dts/vscode.proposed.chatProvider.d.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// version: 4 +// version: 5 declare module 'vscode' { @@ -13,9 +13,10 @@ declare module 'vscode' { export interface ProvideLanguageModelChatResponseOptions { /** - * What extension initiated the request to the language model + * What extension initiated the request to the language model, or + * `undefined` if the request was initiated by other functionality in the editor. */ - readonly requestInitiator: string; + readonly requestInitiator: string | undefined; } /** From 6571c4c7ef117b282d1244aab095c6149fa7cb33 Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Mon, 2 Mar 2026 10:44:15 -0800 Subject: [PATCH 2/3] keep api as old version for now --- src/vs/platform/extensions/common/extensionsApiProposals.ts | 2 +- src/vscode-dts/vscode.proposed.chatProvider.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/vs/platform/extensions/common/extensionsApiProposals.ts b/src/vs/platform/extensions/common/extensionsApiProposals.ts index 2d216e328dd0c8..fb796867b8bc21 100644 --- a/src/vs/platform/extensions/common/extensionsApiProposals.ts +++ b/src/vs/platform/extensions/common/extensionsApiProposals.ts @@ -68,7 +68,7 @@ const _allApiProposals = { }, chatProvider: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatProvider.d.ts', - version: 5 + version: 4 }, chatReferenceBinaryData: { proposal: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.chatReferenceBinaryData.d.ts', diff --git a/src/vscode-dts/vscode.proposed.chatProvider.d.ts b/src/vscode-dts/vscode.proposed.chatProvider.d.ts index 26332d13383870..b19b106205b8ef 100644 --- a/src/vscode-dts/vscode.proposed.chatProvider.d.ts +++ b/src/vscode-dts/vscode.proposed.chatProvider.d.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -// version: 5 +// version: 4 declare module 'vscode' { @@ -16,7 +16,7 @@ declare module 'vscode' { * What extension initiated the request to the language model, or * `undefined` if the request was initiated by other functionality in the editor. */ - readonly requestInitiator: string | undefined; + readonly requestInitiator: string; } /** From 3af9ba81af7489f6029e123b5bcb73a3acc37e5f Mon Sep 17 00:00:00 2001 From: Connor Peet Date: Mon, 2 Mar 2026 10:51:14 -0800 Subject: [PATCH 3/3] Update src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts b/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts index 0c729756165393..a49f79b70dc641 100644 --- a/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts +++ b/src/vs/workbench/contrib/mcp/common/mcpSamplingService.ts @@ -79,7 +79,6 @@ export class McpSamplingService extends Disposable implements IMcpSamplingServic } const model = await this._modelSequencer.queue(() => this._getMatchingModel(opts)); - // todo@connor4312: nullExtensionDescription.identifier -> undefined with API update const response = await this._languageModelsService.sendChatRequest(model, undefined, messages, {}, token); let responseText = '';