-
Notifications
You must be signed in to change notification settings - Fork 31.8k
/
Copy pathvscode.proposed.mappedEditsProvider.d.ts
110 lines (98 loc) · 3.6 KB
/
vscode.proposed.mappedEditsProvider.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
declare module 'vscode' {
/**
* @deprecated Part of MappedEditsProvider, use `MappedEditsProvider2` instead.
*/
export interface DocumentContextItem {
readonly uri: Uri;
readonly version: number;
readonly ranges: Range[];
}
/**
* @deprecated Part of MappedEditsProvider, use `MappedEditsProvider2` instead.
*/
export interface ConversationRequest {
// eslint-disable-next-line local/vscode-dts-string-type-literals
readonly type: 'request';
readonly message: string;
}
/**
* @deprecated Part of MappedEditsProvider, use `MappedEditsProvider2` instead.
*/
export interface ConversationResponse {
// eslint-disable-next-line local/vscode-dts-string-type-literals
readonly type: 'response';
readonly message: string;
readonly result?: ChatResult;
readonly references?: DocumentContextItem[];
}
/**
* @deprecated Part of MappedEditsProvider, use `MappedEditsProvider2` instead.
*/
export interface MappedEditsContext {
readonly documents: DocumentContextItem[][];
/**
* The conversation that led to the current code block(s).
* The last conversation part contains the code block(s) for which the code mapper should provide edits.
*/
readonly conversation?: Array<ConversationRequest | ConversationResponse>;
}
/**
* Interface for providing mapped edits for a given document.
* @deprecated Use `MappedEditsProvider2` instead.
*/
export interface MappedEditsProvider {
/**
* Provide mapped edits for a given document.
* @param document The document to provide mapped edits for.
* @param codeBlocks Code blocks that come from an LLM's reply.
* "Apply in Editor" in the panel chat only sends one edit that the user clicks on, but inline chat can send multiple blocks and let the lang server decide what to do with them.
* @param context The context for providing mapped edits.
* @param token A cancellation token.
* @returns A provider result of text edits.
*/
provideMappedEdits(
document: TextDocument,
codeBlocks: string[],
context: MappedEditsContext,
token: CancellationToken
): ProviderResult<WorkspaceEdit | null>;
}
/**
* Interface for providing mapped edits for a given document.
*/
export interface MappedEditsRequest {
readonly codeBlocks: { code: string; resource: Uri; markdownBeforeBlock?: string }[];
readonly location?: string;
readonly chatRequestId?: string;
readonly chatRequestModel?: string;
readonly chatSessionId?: string;
}
export interface MappedEditsResponseStream {
textEdit(target: Uri, edits: TextEdit | TextEdit[]): void;
notebookEdit(target: Uri, edits: NotebookEdit | NotebookEdit[]): void;
}
export interface MappedEditsResult {
readonly errorMessage?: string;
}
/**
* Interface for providing mapped edits for a given document.
*/
export interface MappedEditsProvider2 {
provideMappedEdits(
request: MappedEditsRequest,
result: MappedEditsResponseStream,
token: CancellationToken
): ProviderResult<MappedEditsResult>;
}
namespace chat {
/**
* @deprecated Use `MappedEditsProvider2` instead.
*/
export function registerMappedEditsProvider(documentSelector: DocumentSelector, provider: MappedEditsProvider): Disposable;
export function registerMappedEditsProvider2(provider: MappedEditsProvider2): Disposable;
}
}