diff --git a/src/lsptoolshost/activate.ts b/src/lsptoolshost/activate.ts index 8de47bbd96..bc8d0e04d7 100644 --- a/src/lsptoolshost/activate.ts +++ b/src/lsptoolshost/activate.ts @@ -27,7 +27,6 @@ import { TelemetryEventNames } from '../shared/telemetryEventNames'; import { WorkspaceStatus } from './workspace/workspaceStatus'; import { ProjectContextStatus } from './projectContext/projectContextStatus'; import { RoslynLanguageServer } from './server/roslynLanguageServer'; -import { registerCopilotRelatedFilesProvider } from './copilot/relatedFilesProvider'; import { registerCopilotContextProviders } from './copilot/contextProviders'; import { RazorLogger } from '../razor/src/razorLogger'; import { registerRazorEndpoints } from './razor/razorEndpoints'; @@ -79,7 +78,6 @@ export async function activateRoslynLanguageServer( registerLanguageStatusItems(context, languageServer, languageServerEvents); registerMiscellaneousFileNotifier(context, languageServer); - registerCopilotRelatedFilesProvider(context, languageServer, _channel); registerCopilotContextProviders(context, languageServer, _channel); // Register any commands that need to be handled by the extension. diff --git a/src/lsptoolshost/copilot/relatedFilesProvider.ts b/src/lsptoolshost/copilot/relatedFilesProvider.ts deleted file mode 100644 index aafa79a0a1..0000000000 --- a/src/lsptoolshost/copilot/relatedFilesProvider.ts +++ /dev/null @@ -1,105 +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 { CSharpExtensionId } from '../../constants/csharpExtensionId'; -import { CopilotRelatedDocumentsReport, CopilotRelatedDocumentsRequest } from '../server/roslynProtocol'; -import { RoslynLanguageServer } from '../server/roslynLanguageServer'; -import { UriConverter } from '../utils/uriConverter'; -import { TextDocumentIdentifier } from 'vscode-languageserver-protocol'; - -interface CopilotTrait { - name: string; - value: string; - includeInPrompt?: boolean; - promptTextOverride?: string; -} - -interface CopilotRelatedFilesProviderRegistration { - registerRelatedFilesProvider( - providerId: { extensionId: string; languageId: string }, - callback: ( - uri: vscode.Uri, - context: { flags: Record }, - cancellationToken?: vscode.CancellationToken - ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> - ): vscode.Disposable; -} - -export function registerCopilotRelatedFilesProvider( - context: vscode.ExtensionContext, - languageServer: RoslynLanguageServer, - channel: vscode.LogOutputChannel -) { - const copilotApi = vscode.extensions.getExtension('github.copilot'); - if (!copilotApi) { - channel.debug( - 'Failed to find comnpatible version of GitHub Copilot extension installed. Skip registeration of Copilot related files provider.' - ); - return; - } - - copilotApi.activate().then(async (api) => { - try { - const id = { - extensionId: CSharpExtensionId, - languageId: 'csharp', - }; - - context.subscriptions.push( - api.registerRelatedFilesProvider(id, async (uri, _, token) => { - const buildResult = ( - activeDocumentUri: vscode.Uri, - reports: CopilotRelatedDocumentsReport[], - builder: vscode.Uri[] - ) => { - if (reports) { - for (const report of reports) { - if (report._vs_file_paths) { - for (const filePath of report._vs_file_paths) { - // The Roslyn related document service would return the active document as related file to itself - // if the code contains reference to the types defined in the same document. Skip it so the active file - // won't be used as additonal context. - const relatedUri = vscode.Uri.file(filePath); - if (relatedUri.fsPath !== activeDocumentUri.fsPath) { - builder.push(relatedUri); - } - } - } - } - } - }; - const relatedFiles: vscode.Uri[] = []; - const uriString = UriConverter.serialize(uri); - const textDocument = TextDocumentIdentifier.create(uriString); - try { - await languageServer.sendRequestWithProgress( - CopilotRelatedDocumentsRequest.type, - { - _vs_textDocument: textDocument, - position: { - line: 0, - character: 0, - }, - }, - async (r) => buildResult(uri, r, relatedFiles), - token - ); - } catch (e) { - if (e instanceof Error) { - channel.appendLine(e.message); - } - } - channel.trace(`Copilot related files provider returned ${relatedFiles.length} items`); - return { entries: relatedFiles }; - }) - ); - - channel.debug('Registration of C# related files provider for GitHub Copilot extension succeeded.'); - } catch (error) { - channel.error('Failed to register Copilot related files providers', error); - } - }); -} diff --git a/src/lsptoolshost/server/roslynProtocol.ts b/src/lsptoolshost/server/roslynProtocol.ts index 5db567112f..83b4e167ef 100644 --- a/src/lsptoolshost/server/roslynProtocol.ts +++ b/src/lsptoolshost/server/roslynProtocol.ts @@ -239,15 +239,6 @@ export interface ProjectNeedsRestoreName { projectFilePaths: string[]; } -export interface CopilotRelatedDocumentsParams extends WorkDoneProgressParams, PartialResultParams { - _vs_textDocument: TextDocumentIdentifier; - position: Position; -} - -export interface CopilotRelatedDocumentsReport { - _vs_file_paths?: string[]; -} - export interface SourceGeneratorGetRequestParams { textDocument: TextDocumentIdentifier; resultId?: string; @@ -366,18 +357,6 @@ export namespace ProjectNeedsRestoreRequest { export const type = new RequestType(method); } -export namespace CopilotRelatedDocumentsRequest { - export const method = 'copilot/_related_documents'; - export const messageDirection: MessageDirection = MessageDirection.clientToServer; - export const type = new ProtocolRequestType< - CopilotRelatedDocumentsParams, - CopilotRelatedDocumentsReport[], - CopilotRelatedDocumentsReport[], - void, - void - >(method); -} - export namespace SourceGeneratorGetTextRequest { export const method = 'sourceGeneratedDocument/_roslyn_getText'; export const messageDirection: MessageDirection = MessageDirection.clientToServer;