diff --git a/extensions/typescript-language-features/src/languageFeatures/copilotRelated.ts b/extensions/typescript-language-features/src/languageFeatures/copilotRelated.ts deleted file mode 100644 index 24e4e7074e55e..0000000000000 --- a/extensions/typescript-language-features/src/languageFeatures/copilotRelated.ts +++ /dev/null @@ -1,97 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as vscode from 'vscode'; -import { isSupportedLanguageMode } from '../configuration/languageIds'; -import { DocumentSelector } from '../configuration/documentSelector'; -import { API } from '../tsServer/api'; -import type * as Proto from '../tsServer/protocol/protocol'; -import { ITypeScriptServiceClient } from '../typescriptService'; -import { conditionalRegistration, requireMinVersion } from './util/dependentRegistration'; - -const minVersion = API.v570; - -interface CopilotApi { - registerRelatedFilesProvider(providerId: { - extensionId: string; - languageId: string; - }, callback: (uri: vscode.Uri, context: { - flags: Record; - }, cancellationToken: vscode.CancellationToken) => Promise<{ - entries: vscode.Uri[]; - traits?: Array<{ - name: string; - value: string; - includeInPrompt?: boolean; - promptTextOverride?: string; - }>; - }>): vscode.Disposable; -} - -export function register( - selector: DocumentSelector, - client: ITypeScriptServiceClient, -): vscode.Disposable { - return conditionalRegistration([ - requireMinVersion(client, minVersion), - ], () => { - const ext = vscode.extensions.getExtension('github.copilot'); - if (!ext) { - return new vscode.Disposable(() => { }); - } - - const disposers: vscode.Disposable[] = []; - ext.activate().then(() => { - const relatedAPI = ext.exports as CopilotApi | undefined; - if (relatedAPI?.registerRelatedFilesProvider) { - for (const syntax of selector.syntax) { - if (!syntax.language) { - continue; - } - const id = { - extensionId: 'vscode.typescript-language-features', - languageId: syntax.language - }; - disposers.push(relatedAPI.registerRelatedFilesProvider(id, async (uri, _context, token) => { - let document; - try { - document = await vscode.workspace.openTextDocument(uri); - } catch { - if (!vscode.window.activeTextEditor) { - vscode.window.showErrorMessage(vscode.l10n.t("Related files provider failed. No active text editor.")); - return { entries: [] }; - } - // something is REALLY wrong if you can't open the active text editor's document, so don't catch that - document = await vscode.workspace.openTextDocument(vscode.window.activeTextEditor.document.uri); - } - - if (!isSupportedLanguageMode(document)) { - vscode.window.showErrorMessage(vscode.l10n.t("Related files provider failed. Copilot requested file with unsupported language mode.")); - return { entries: [] }; - } - - const file = client.toOpenTsFilePath(document); - if (!file) { - return { entries: [] }; - } - const response = await client.execute('copilotRelated', { file, }, token) as Proto.CopilotRelatedResponse; - if (response.type !== 'response' || !response.body) { - return { entries: [] }; - } - return { entries: response.body.relatedFiles.map(f => client.toResource(f)), traits: [] }; - })); - } - } - }); - - return { - dispose: () => { - for (const disposer of disposers) { - disposer.dispose(); - } - } - }; - }); -} diff --git a/extensions/typescript-language-features/src/languageProvider.ts b/extensions/typescript-language-features/src/languageProvider.ts index 09a4fe3ccc9c6..7b95591604bd0 100644 --- a/extensions/typescript-language-features/src/languageProvider.ts +++ b/extensions/typescript-language-features/src/languageProvider.ts @@ -91,7 +91,6 @@ export default class LanguageProvider extends Disposable { import('./languageFeatures/sourceDefinition').then(provider => this._register(provider.register(this.client, this.commandManager))), import('./languageFeatures/tagClosing').then(provider => this._register(provider.register(selector, this.description, this.client))), import('./languageFeatures/typeDefinitions').then(provider => this._register(provider.register(selector, this.client))), - import('./languageFeatures/copilotRelated').then(provider => this._register(provider.register(selector, this.client))), ]); } diff --git a/extensions/typescript-language-features/src/typescriptService.ts b/extensions/typescript-language-features/src/typescriptService.ts index 306769f952a31..90528ee47dc8c 100644 --- a/extensions/typescript-language-features/src/typescriptService.ts +++ b/extensions/typescript-language-features/src/typescriptService.ts @@ -77,7 +77,6 @@ interface StandardTsServerRequests { 'getMoveToRefactoringFileSuggestions': [Proto.GetMoveToRefactoringFileSuggestionsRequestArgs, Proto.GetMoveToRefactoringFileSuggestions]; 'linkedEditingRange': [Proto.FileLocationRequestArgs, Proto.LinkedEditingRangeResponse]; 'mapCode': [Proto.MapCodeRequestArgs, Proto.MapCodeResponse]; - 'copilotRelated': [Proto.FileRequestArgs, Proto.CopilotRelatedResponse]; 'getPasteEdits': [Proto.GetPasteEditsRequestArgs, Proto.GetPasteEditsResponse]; 'preparePasteEdits': [Proto.PreparePasteEditsRequestArgs, Proto.PreparePasteEditsResponse]; }