Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/copilot/src/extension/conversation/node/aiMappedEditsProvider.ts
13399 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
import type * as vscode from 'vscode';
6
import { ICodeMapperService } from '../../prompts/node/codeMapper/codeMapperService';
7
8
export class AIMappedEditsProvider2 implements vscode.MappedEditsProvider2 {
9
10
constructor(
11
@ICodeMapperService private readonly _codeMapperService: ICodeMapperService,
12
) {
13
}
14
15
async provideMappedEdits(
16
request: vscode.MappedEditsRequest,
17
response: vscode.MappedEditsResponseStream,
18
token: vscode.CancellationToken
19
): Promise<vscode.MappedEditsResult | null | undefined> {
20
21
const errorMessages: string[] = [];
22
for (const codeBlock of request.codeBlocks) {
23
24
if (token.isCancellationRequested) {
25
return undefined;
26
}
27
28
const result = await this._codeMapperService.mapCode({ codeBlock, location: request.location }, response, {
29
isAgent: request.location === 'tool',
30
chatRequestId: request.chatRequestId,
31
chatSessionId: request.chatSessionId,
32
chatRequestSource: `api_${request.location}`,
33
chatRequestModel: request.chatRequestModel,
34
}, token);
35
if (result) {
36
if (result.errorDetails) {
37
errorMessages.push(result.errorDetails.message);
38
}
39
}
40
}
41
if (errorMessages.length) {
42
return { errorMessage: errorMessages.join('\n') };
43
}
44
return {};
45
}
46
}
47
48