@vscode/chat-lib 0.5.1-6 → 0.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/features.d.ts +4 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/features.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/features.js +10 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/features.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/featuresService.d.ts +2 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/featuresService.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.js +2 -2
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/importFiltering.d.ts +2 -1
- package/dist/src/_internal/extension/inlineEdits/node/importFiltering.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/importFiltering.js +7 -2
- package/dist/src/_internal/extension/inlineEdits/node/importFiltering.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.d.ts +2 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.js +13 -9
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts +1 -0
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js +54 -38
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts +45 -3
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js +257 -19
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/rebaseResult.d.ts +22 -0
- package/dist/src/_internal/extension/inlineEdits/node/rebaseResult.d.ts.map +1 -0
- package/dist/src/_internal/extension/inlineEdits/node/rebaseResult.js +111 -0
- package/dist/src/_internal/extension/inlineEdits/node/rebaseResult.js.map +1 -0
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js +2 -3
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts +8 -2
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js +27 -5
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.d.ts +17 -3
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js +94 -44
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts +1 -0
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js +76 -14
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +13 -6
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.js +18 -11
- package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +4 -0
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +9 -2
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/endpointProvider.d.ts +1 -0
- package/dist/src/_internal/platform/endpoint/common/endpointProvider.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/endpointProvider.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.js +1 -1
- package/dist/src/_internal/platform/endpoint/node/autoChatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +16 -14
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts +2 -2
- package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js +46 -24
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js +1 -2
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
- package/dist/src/_internal/platform/git/common/gitService.d.ts +3 -1
- package/dist/src/_internal/platform/git/common/gitService.d.ts.map +1 -1
- package/dist/src/_internal/platform/git/common/gitService.js.map +1 -1
- package/dist/src/_internal/platform/github/common/githubService.d.ts +10 -0
- package/dist/src/_internal/platform/github/common/githubService.d.ts.map +1 -1
- package/dist/src/_internal/platform/github/common/githubService.js +5 -0
- package/dist/src/_internal/platform/github/common/githubService.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/importFilteringOptions.d.ts +8 -0
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/importFilteringOptions.d.ts.map +1 -0
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/importFilteringOptions.js +17 -0
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/importFilteringOptions.js.map +1 -0
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +2 -0
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +9 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.d.ts +5 -0
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.js +9 -0
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/observableWorkspace.d.ts +8 -2
- package/dist/src/_internal/platform/inlineEdits/common/observableWorkspace.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/observableWorkspace.js +6 -2
- package/dist/src/_internal/platform/inlineEdits/common/observableWorkspace.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts +5 -2
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js +8 -2
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/node/inlineEditsModelService.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/node/inlineEditsModelService.js.map +1 -1
- package/dist/src/_internal/platform/log/common/logService.js +2 -2
- package/dist/src/_internal/platform/log/common/logService.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts +6 -0
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.js +15 -0
- package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetcherService.d.ts +2 -0
- package/dist/src/_internal/platform/networking/common/fetcherService.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetcherService.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.d.ts +5 -2
- package/dist/src/_internal/platform/networking/common/networking.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.js +1 -0
- package/dist/src/_internal/platform/networking/common/networking.js.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts +10 -3
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js +21 -2
- package/dist/src/_internal/platform/networking/node/chatWebSocketManager.js.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.d.ts +6 -0
- package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.js +13 -1
- package/dist/src/_internal/platform/networking/node/chatWebSocketTelemetry.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/genAiAttributes.d.ts +2 -0
- package/dist/src/_internal/platform/otel/common/genAiAttributes.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/genAiAttributes.js +2 -0
- package/dist/src/_internal/platform/otel/common/genAiAttributes.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/noopOtelService.d.ts +1 -0
- package/dist/src/_internal/platform/otel/common/noopOtelService.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/noopOtelService.js +1 -0
- package/dist/src/_internal/platform/otel/common/noopOtelService.js.map +1 -1
- package/dist/src/_internal/platform/otel/common/otelService.d.ts +6 -0
- package/dist/src/_internal/platform/otel/common/otelService.d.ts.map +1 -1
- package/dist/src/_internal/platform/tokenizer/node/tokenizer.d.ts +6 -0
- package/dist/src/_internal/platform/tokenizer/node/tokenizer.d.ts.map +1 -1
- package/dist/src/_internal/platform/tokenizer/node/tokenizer.js +22 -0
- package/dist/src/_internal/platform/tokenizer/node/tokenizer.js.map +1 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +12 -2
- package/dist/src/main.js.map +1 -1
- package/dist/src/package.json +149 -61
- package/package.json +3 -3
|
@@ -50,6 +50,7 @@ exports.XtabNextCursorPredictor = void 0;
|
|
|
50
50
|
const copilot_api_1 = require("@vscode/copilot-api");
|
|
51
51
|
const commonTypes_1 = require("../../../platform/chat/common/commonTypes");
|
|
52
52
|
const configurationService_1 = require("../../../platform/configuration/common/configurationService");
|
|
53
|
+
const endpointProvider_1 = require("../../../platform/endpoint/common/endpointProvider");
|
|
53
54
|
const chatEndpoint_1 = require("../../../platform/endpoint/node/chatEndpoint");
|
|
54
55
|
const nextCursorLinePrediction_1 = require("../../../platform/inlineEdits/common/dataTypes/nextCursorLinePrediction");
|
|
55
56
|
const xtabPromptOptions = __importStar(require("../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions"));
|
|
@@ -66,18 +67,22 @@ const lintErrors_1 = require("../common/lintErrors");
|
|
|
66
67
|
const promptCrafting_1 = require("../common/promptCrafting");
|
|
67
68
|
const xtabUtils_1 = require("./xtabUtils");
|
|
68
69
|
let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
69
|
-
constructor(computeTokens, instaService, configService, expService, langDiagService) {
|
|
70
|
+
constructor(computeTokens, instaService, configService, expService, langDiagService, endpointProvider) {
|
|
70
71
|
this.computeTokens = computeTokens;
|
|
71
72
|
this.instaService = instaService;
|
|
72
73
|
this.configService = configService;
|
|
73
74
|
this.expService = expService;
|
|
74
75
|
this.langDiagService = langDiagService;
|
|
76
|
+
this.endpointProvider = endpointProvider;
|
|
75
77
|
this.isDisabled = false;
|
|
76
78
|
}
|
|
77
|
-
determineEnablement() {
|
|
79
|
+
determineEnablement(supportsNextCursorLinePrediction) {
|
|
78
80
|
if (this.isDisabled) {
|
|
79
81
|
return undefined;
|
|
80
82
|
}
|
|
83
|
+
if (supportsNextCursorLinePrediction === false) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
81
86
|
// the cast is for backward compatibility with older experiments
|
|
82
87
|
const originalNextCursorLinePrediction = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.InlineEditsNextCursorPredictionEnabled, this.expService);
|
|
83
88
|
switch (originalNextCursorLinePrediction) {
|
|
@@ -96,7 +101,7 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
96
101
|
}
|
|
97
102
|
async predictNextCursorPosition(promptPieces, parentTracer, telemetryBuilder, cancellationToken) {
|
|
98
103
|
const tracer = parentTracer.createSubLogger('predictNextCursorPosition');
|
|
99
|
-
const systemMessage = `Your task is to predict the
|
|
104
|
+
const systemMessage = `Your task is to predict the line number where the developer is most likely to make their next edit. If you jump in the current file, just output the line number. If you want to jump to another file, output the filepath (relative to workspace root), colon, then line number. If you don't think anywhere is a good next line jump target, just output the current line number of the cursor. Make sure to output no explanation, reasoning, extra spaces, etc.`;
|
|
100
105
|
const maxTokens = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.Advanced.InlineEditsNextCursorPredictionCurrentFileMaxTokens, this.expService);
|
|
101
106
|
const currentFileContentR = (0, promptCrafting_1.constructTaggedFile)(promptPieces.currentDocument, promptPieces.editWindowLinesRange, promptPieces.areaAroundEditWindowLinesRange, {
|
|
102
107
|
...promptPieces.opts,
|
|
@@ -146,35 +151,17 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
146
151
|
return result_1.Result.fromString('modelNameNotDefined');
|
|
147
152
|
}
|
|
148
153
|
telemetryBuilder?.setCursorJumpModelName(modelName);
|
|
149
|
-
const
|
|
154
|
+
const resolvedEndpoint = await this.resolveEndpoint(modelName, tracer);
|
|
155
|
+
if (!resolvedEndpoint) {
|
|
156
|
+
return result_1.Result.fromString('endpointNotResolved');
|
|
157
|
+
}
|
|
158
|
+
const { endpoint, usesResponsesApi } = resolvedEndpoint;
|
|
150
159
|
const secretKey = this.configService.getConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionApiKey);
|
|
151
|
-
const endpoint = this.instaService.createInstance(chatEndpoint_1.ChatEndpoint, {
|
|
152
|
-
id: modelName,
|
|
153
|
-
name: 'nes.nextCursorPosition',
|
|
154
|
-
vendor: modelName,
|
|
155
|
-
urlOrRequestMetadata: url ? url : { type: copilot_api_1.RequestType.ProxyChatCompletions },
|
|
156
|
-
model_picker_enabled: false,
|
|
157
|
-
is_chat_default: false,
|
|
158
|
-
is_chat_fallback: false,
|
|
159
|
-
version: '',
|
|
160
|
-
capabilities: {
|
|
161
|
-
type: 'chat',
|
|
162
|
-
family: '',
|
|
163
|
-
tokenizer: tokenizer_1.TokenizerType.CL100K,
|
|
164
|
-
limits: undefined,
|
|
165
|
-
supports: {
|
|
166
|
-
parallel_tool_calls: false,
|
|
167
|
-
tool_calls: false,
|
|
168
|
-
streaming: true,
|
|
169
|
-
vision: false,
|
|
170
|
-
prediction: false,
|
|
171
|
-
thinking: false
|
|
172
|
-
}
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
160
|
const maxResponseTokens = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionMaxResponseTokens, this.expService);
|
|
176
161
|
let requestOptions = {
|
|
177
|
-
|
|
162
|
+
// Responses API models include reasoning tokens in max_output_tokens,
|
|
163
|
+
// so we need a larger budget to leave room for actual output.
|
|
164
|
+
max_tokens: usesResponsesApi ? Math.max(maxResponseTokens, 2048) : maxResponseTokens,
|
|
178
165
|
};
|
|
179
166
|
if (secretKey) {
|
|
180
167
|
requestOptions = { ...requestOptions, secretKey };
|
|
@@ -196,33 +183,95 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
196
183
|
try {
|
|
197
184
|
telemetryBuilder?.setCursorJumpResponse(response.value);
|
|
198
185
|
const trimmed = response.value.trim();
|
|
199
|
-
|
|
200
|
-
if (isNaN(lineNumber)) {
|
|
201
|
-
return result_1.Result.fromString(`gotNaN`);
|
|
202
|
-
}
|
|
203
|
-
if (lineNumber < 0) {
|
|
204
|
-
return result_1.Result.fromString(`negativeLineNumber`);
|
|
205
|
-
}
|
|
206
|
-
if (lineNumber < clippedTaggedCurrentDoc.keptRange.start || clippedTaggedCurrentDoc.keptRange.endExclusive <= lineNumber) {
|
|
207
|
-
return result_1.Result.fromString(`modelNotSeenLineNumber`);
|
|
208
|
-
}
|
|
209
|
-
return result_1.Result.ok(lineNumber);
|
|
186
|
+
return this.parseResponse(trimmed, clippedTaggedCurrentDoc.keptRange);
|
|
210
187
|
}
|
|
211
188
|
catch (err) {
|
|
212
189
|
tracer.trace(`Failed to parse predicted line number from response '${response.value}': ${err}`);
|
|
213
190
|
return result_1.Result.fromString(`failedToParseLine:"${response.value}". Error ${errors_1.ErrorUtils.fromUnknown(err).message}`);
|
|
214
191
|
}
|
|
215
192
|
}
|
|
193
|
+
async resolveEndpoint(modelName, tracer) {
|
|
194
|
+
const useEndpointProvider = this.configService.getConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionUseEndpointProvider);
|
|
195
|
+
if (useEndpointProvider) {
|
|
196
|
+
const allEndpoints = await this.endpointProvider.getAllChatEndpoints();
|
|
197
|
+
const endpoint = allEndpoints.find(e => e.model === modelName || e.family === modelName);
|
|
198
|
+
if (!endpoint) {
|
|
199
|
+
tracer.trace(`Could not find endpoint for model '${modelName}' via endpoint provider`);
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
const usesResponsesApi = endpoint.apiType === 'responses';
|
|
203
|
+
return { endpoint, usesResponsesApi };
|
|
204
|
+
}
|
|
205
|
+
const url = this.configService.getConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionUrl);
|
|
206
|
+
return {
|
|
207
|
+
endpoint: this.instaService.createInstance(chatEndpoint_1.ChatEndpoint, {
|
|
208
|
+
id: modelName,
|
|
209
|
+
name: 'nes.nextCursorPosition',
|
|
210
|
+
vendor: modelName,
|
|
211
|
+
urlOrRequestMetadata: url ? url : { type: copilot_api_1.RequestType.ProxyChatCompletions },
|
|
212
|
+
model_picker_enabled: false,
|
|
213
|
+
is_chat_default: false,
|
|
214
|
+
is_chat_fallback: false,
|
|
215
|
+
version: '',
|
|
216
|
+
capabilities: {
|
|
217
|
+
type: 'chat',
|
|
218
|
+
family: '',
|
|
219
|
+
tokenizer: tokenizer_1.TokenizerType.CL100K,
|
|
220
|
+
limits: undefined,
|
|
221
|
+
supports: {
|
|
222
|
+
parallel_tool_calls: false,
|
|
223
|
+
tool_calls: false,
|
|
224
|
+
streaming: true,
|
|
225
|
+
vision: false,
|
|
226
|
+
prediction: false,
|
|
227
|
+
thinking: false
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
}),
|
|
231
|
+
usesResponsesApi: false,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
216
234
|
determineLintOptions() {
|
|
217
235
|
const localLintOptions = this.configService.getConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionLintOptions);
|
|
218
236
|
if (localLintOptions) {
|
|
219
237
|
return localLintOptions;
|
|
220
238
|
}
|
|
221
239
|
const expLintOptions = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsNextCursorPredictionLintOptionsString, this.expService);
|
|
222
|
-
if (
|
|
223
|
-
return
|
|
240
|
+
if (expLintOptions) {
|
|
241
|
+
return (0, xtabPromptOptions_1.parseLintOptionString)(expLintOptions);
|
|
242
|
+
}
|
|
243
|
+
return xtabPromptOptions_1.DEFAULT_CURSOR_PREDICTION_LINT_OPTIONS;
|
|
244
|
+
}
|
|
245
|
+
parseResponse(trimmed, keptRange) {
|
|
246
|
+
// Try parsing as a plain line number (same-file jump)
|
|
247
|
+
const lineNumber = parseInt(trimmed, 10);
|
|
248
|
+
if (!isNaN(lineNumber) && String(lineNumber) === trimmed) {
|
|
249
|
+
return this.parseSameFileLineNumber(lineNumber, keptRange);
|
|
250
|
+
}
|
|
251
|
+
// Try parsing as filepath:lineNumber (cross-file jump)
|
|
252
|
+
const lastColonIdx = trimmed.lastIndexOf(':');
|
|
253
|
+
if (lastColonIdx <= 0) {
|
|
254
|
+
return result_1.Result.fromString(`gotNaN`);
|
|
255
|
+
}
|
|
256
|
+
const filePath = trimmed.substring(0, lastColonIdx);
|
|
257
|
+
const lineNumberStr = trimmed.substring(lastColonIdx + 1);
|
|
258
|
+
const crossFileLineNumber = parseInt(lineNumberStr, 10);
|
|
259
|
+
if (isNaN(crossFileLineNumber) || crossFileLineNumber < 0) {
|
|
260
|
+
return result_1.Result.fromString(`crossFileInvalidLineNumber`);
|
|
261
|
+
}
|
|
262
|
+
if (filePath.trim().length === 0) {
|
|
263
|
+
return result_1.Result.fromString(`crossFileEmptyFilePath`);
|
|
264
|
+
}
|
|
265
|
+
return result_1.Result.ok({ kind: 'differentFile', filePath: filePath.trim(), lineNumber: crossFileLineNumber });
|
|
266
|
+
}
|
|
267
|
+
parseSameFileLineNumber(lineNumber, keptRange) {
|
|
268
|
+
if (lineNumber < 0) {
|
|
269
|
+
return result_1.Result.fromString(`negativeLineNumber`);
|
|
270
|
+
}
|
|
271
|
+
if (lineNumber < keptRange.start || keptRange.endExclusive <= lineNumber) {
|
|
272
|
+
return result_1.Result.fromString(`modelNotSeenLineNumber`);
|
|
224
273
|
}
|
|
225
|
-
return (
|
|
274
|
+
return result_1.Result.ok({ kind: 'sameFile', lineNumber });
|
|
226
275
|
}
|
|
227
276
|
};
|
|
228
277
|
exports.XtabNextCursorPredictor = XtabNextCursorPredictor;
|
|
@@ -230,6 +279,7 @@ exports.XtabNextCursorPredictor = XtabNextCursorPredictor = __decorate([
|
|
|
230
279
|
__param(1, instantiation_1.IInstantiationService),
|
|
231
280
|
__param(2, configurationService_1.IConfigurationService),
|
|
232
281
|
__param(3, nullExperimentationService_1.IExperimentationService),
|
|
233
|
-
__param(4, languageDiagnosticsService_1.ILanguageDiagnosticsService)
|
|
282
|
+
__param(4, languageDiagnosticsService_1.ILanguageDiagnosticsService),
|
|
283
|
+
__param(5, endpointProvider_1.IEndpointProvider)
|
|
234
284
|
], XtabNextCursorPredictor);
|
|
235
285
|
//# sourceMappingURL=xtabNextCursorPredictor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xtabNextCursorPredictor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhG,qDAAkD;AAClD,2EAAgG;AAChG,sGAA+G;AAC/G,+EAA4E;AAC5E,sHAAmH;AACnH,oHAAsG;AACtG,
|
|
1
|
+
{"version":3,"file":"xtabNextCursorPredictor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEhG,qDAAkD;AAClD,2EAAgG;AAChG,sGAA+G;AAC/G,yFAAuF;AACvF,+EAA4E;AAC5E,sHAAmH;AACnH,oHAAsG;AACtG,wGAAiJ;AAEjJ,8GAA4G;AAI5G,8GAAwG;AACxG,sFAAmF;AACnF,wDAAyD;AACzD,wDAAqD;AACrD,8DAA+D;AAC/D,gEAAkE;AAGlE,gGAAqG;AACrG,qDAAkD;AAClD,6DAA4F;AAC5F,2CAAgD;AAMzC,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAInC,YACkB,aAAuC,EAChB,YAAmC,EACnC,aAAoC,EAClC,UAAmC,EAC/B,eAA4C,EACtD,gBAAmC;QALtD,kBAAa,GAAb,aAAa,CAA0B;QAChB,iBAAY,GAAZ,YAAY,CAAuB;QACnC,kBAAa,GAAb,aAAa,CAAuB;QAClC,eAAU,GAAV,UAAU,CAAyB;QAC/B,oBAAe,GAAf,eAAe,CAA6B;QACtD,qBAAgB,GAAhB,gBAAgB,CAAmB;QAEvE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IACzB,CAAC;IAEM,mBAAmB,CAAC,gCAA0C;QACpE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,IAAI,gCAAgC,KAAK,KAAK,EAAE,CAAC;YAChD,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,gEAAgE;QAChE,MAAM,gCAAgC,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,sCAAsC,EAAE,IAAI,CAAC,UAAU,CAAqD,CAAC;QAE5M,QAAQ,gCAAgC,EAAE,CAAC;YAC1C,KAAK,IAAI;gBACR,OAAO,mDAAwB,CAAC,YAAY,CAAC;YAE9C,KAAK,KAAK,CAAC;YACX,KAAK,SAAS;gBACb,OAAO,SAAS,CAAC;YAElB,6BAA6B;YAC7B,KAAK,mDAAwB,CAAC,YAAY,CAAC;YAC3C,KAAK,mDAAwB,CAAC,IAAI;gBACjC,OAAO,mDAAwB,CAAC,YAAY,CAAC;YAE9C;gBACC,IAAA,oBAAW,EAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;IACF,CAAC;IAGM,KAAK,CAAC,yBAAyB,CAAC,YAA0B,EAAE,YAAqB,EAAE,gBAA+D,EAAE,iBAAoC;QAE9L,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAG,qcAAqc,CAAC;QAE5d,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,QAAQ,CAAC,mDAAmD,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvJ,MAAM,mBAAmB,GAAG,IAAA,oCAAmB,EAC9C,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,oBAAoB,EACjC,YAAY,CAAC,8BAA8B,EAC3C;YACC,GAAG,YAAY,CAAC,IAAI;YACpB,WAAW,EAAE;gBACZ,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW;gBAChC,SAAS;gBACT,WAAW,EAAE,KAAK;aAClB;SACD,EACD,IAAI,CAAC,aAAa,EAClB;YACC,kBAAkB,EAAE;gBACnB,oBAAoB,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,IAAI;gBACrE,kBAAkB,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,cAAc;aAC7E;SACD,CACD,CAAC;QAEF,IAAI,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,oCAAoC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5E,OAAO,eAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC;QAElF,wDAAwD;QACxD,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEjH,MAAM,kCAAkC,GAAG,IAAA,6CAAqB,EAC/D,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,YAAY,CAAC,+DAA+D,EAAE,IAAI,CAAC,UAAU,CAAC,EACpJ,CAAC,QAAQ,EAAE,EAAE;YACZ,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAC/H,CAAC;YACD,OAAO,QAAQ,CAAC;QACjB,CAAC,CACD,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,6BAAY,CACvC,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,oBAAoB,EACjC,YAAY,CAAC,8BAA8B,EAC3C,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,WAAW,EACxB,uBAAuB,CAAC,KAAK,EAC7B,oBAAoB,EACpB,YAAY,CAAC,OAAO,EACpB,YAAY,CAAC,mBAAmB,EAChC,UAAU,EACV,IAAI,CAAC,aAAa,EAClB;YACC,GAAG,YAAY,CAAC,IAAI;YACpB,iBAAiB,EAAE,KAAK;YACxB,WAAW;YACX,uBAAuB,EAAE;gBACxB,GAAG,YAAY,CAAC,IAAI,CAAC,uBAAuB;gBAC5C,kBAAkB,EAAE,kCAAkC;aACtD;SACD,CACD,CAAC;QAEF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,8BAAa,EAAC,eAAe,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,IAAA,6BAAiB,EAAC;YAClC,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,WAAW;SACpB,CAAC,CAAC;QAEH,gBAAgB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEhD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,YAAY,CAAC,wCAAwC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChJ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;YACrF,OAAO,eAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACjD,CAAC;QACD,gBAAgB,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,OAAO,eAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;QAExD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gCAAS,CAAC,YAAY,CAAC,qCAAqC,CAAC,CAAC;QAE7G,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,YAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEhK,IAAI,cAAc,GAA8B;YAC/C,sEAAsE;YACtE,8DAA8D;YAC9D,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB;SACpF,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACf,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,SAAS,EAAE,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAC/C;YACC,QAAQ;YACR,SAAS,EAAE,wBAAwB;YACnC,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,0BAAY,CAAC,KAAK;YAC5B,cAAc;SACd,EACD,iBAAiB,CACjB,CAAC;QAEF,IAAI,QAAQ,CAAC,IAAI,KAAK,mCAAqB,CAAC,OAAO,EAAE,CAAC;YACrD,IAAI,QAAQ,CAAC,IAAI,KAAK,mCAAqB,CAAC,QAAQ,EAAE,CAAC;gBACtD,MAAM,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;gBAC7G,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,OAAO,eAAM,CAAC,UAAU,CAAC,cAAc,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC;YACJ,gBAAgB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,uBAAuB,CAAC,SAAS,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,wDAAwD,QAAQ,CAAC,KAAK,MAAM,GAAG,EAAE,CAAC,CAAC;YAChG,OAAO,eAAM,CAAC,UAAU,CAAC,sBAAsB,QAAQ,CAAC,KAAK,YAAY,mBAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjH,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,MAAe;QAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gCAAS,CAAC,YAAY,CAAC,kDAAkD,CAAC,CAAC;QACpI,IAAI,mBAAmB,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;YACvE,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,SAAS,yBAAyB,CAAC,CAAC;gBACvF,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,OAAO,KAAK,WAAW,CAAC;YAC1D,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gCAAS,CAAC,YAAY,CAAC,kCAAkC,CAAC,CAAC;QACpG,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,2BAAY,EAAE;gBACxD,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,SAAS;gBACjB,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,yBAAW,CAAC,oBAAoB,EAAE;gBAC5E,oBAAoB,EAAE,KAAK;gBAC3B,eAAe,EAAE,KAAK;gBACtB,gBAAgB,EAAE,KAAK;gBACvB,OAAO,EAAE,EAAE;gBACX,YAAY,EAAE;oBACb,IAAI,EAAE,MAAM;oBACZ,MAAM,EAAE,EAAE;oBACV,SAAS,EAAE,yBAAa,CAAC,MAAM;oBAC/B,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE;wBACT,mBAAmB,EAAE,KAAK;wBAC1B,UAAU,EAAE,KAAK;wBACjB,SAAS,EAAE,IAAI;wBACf,MAAM,EAAE,KAAK;wBACb,UAAU,EAAE,KAAK;wBACjB,QAAQ,EAAE,KAAK;qBACf;iBACD;aACD,CAAC;YACF,gBAAgB,EAAE,KAAK;SACvB,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gCAAS,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;QACzH,IAAI,gBAAgB,EAAE,CAAC;YACtB,OAAO,gBAAgB,CAAC;QACzB,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,YAAY,CAAC,gDAAgD,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7J,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO,IAAA,yCAAqB,EAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,0DAAsC,CAAC;IAC/C,CAAC;IAEM,aAAa,CAAC,OAAe,EAAE,SAAsB;QAC3D,sDAAsD;QACtD,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,OAAO,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;QAED,uDAAuD;QACvD,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAExD,IAAI,KAAK,CAAC,mBAAmB,CAAC,IAAI,mBAAmB,GAAG,CAAC,EAAE,CAAC;YAC3D,OAAO,eAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,eAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,eAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACzG,CAAC;IAEO,uBAAuB,CAAC,UAAkB,EAAE,SAAsB;QACzE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,eAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,YAAY,IAAI,UAAU,EAAE,CAAC;YAC1E,OAAO,eAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,eAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACpD,CAAC;CACD,CAAA;AAtRY,0DAAuB;kCAAvB,uBAAuB;IAMjC,WAAA,qCAAqB,CAAA;IACrB,WAAA,4CAAqB,CAAA;IACrB,WAAA,oDAAuB,CAAA;IACvB,WAAA,wDAA2B,CAAA;IAC3B,WAAA,oCAAiB,CAAA;GAVP,uBAAuB,CAsRnC"}
|
|
@@ -55,6 +55,7 @@ export declare class XtabProvider implements IStatelessNextEditProvider {
|
|
|
55
55
|
private streamEditsWithFiltering;
|
|
56
56
|
private streamEdits;
|
|
57
57
|
private doGetNextEditsWithCursorJump;
|
|
58
|
+
private handleCrossFilePrediction;
|
|
58
59
|
private computeEditWindowLinesRange;
|
|
59
60
|
private determineModelConfiguration;
|
|
60
61
|
private getEndpoint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xtabProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabProvider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAsE,MAAM,2CAA2C,CAAC;AAC/I,OAAO,EAAa,qBAAqB,EAAkB,MAAM,6DAA6D,CAAC;AAC/H,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"xtabProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,6 +63,9 @@ const configurationService_1 = require("../../../platform/configuration/common/c
|
|
|
63
63
|
const diffService_1 = require("../../../platform/diff/common/diffService");
|
|
64
64
|
const proxyXtabEndpoint_1 = require("../../../platform/endpoint/node/proxyXtabEndpoint");
|
|
65
65
|
const ignoreService_1 = require("../../../platform/ignore/common/ignoreService");
|
|
66
|
+
const documentId_1 = require("../../../platform/inlineEdits/common/dataTypes/documentId");
|
|
67
|
+
const edit_1 = require("../../../platform/inlineEdits/common/dataTypes/edit");
|
|
68
|
+
const languageId_1 = require("../../../platform/inlineEdits/common/dataTypes/languageId");
|
|
66
69
|
const nextCursorLinePrediction_1 = require("../../../platform/inlineEdits/common/dataTypes/nextCursorLinePrediction");
|
|
67
70
|
const xtabPromptOptions = __importStar(require("../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions"));
|
|
68
71
|
const xtabPromptOptions_1 = require("../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions");
|
|
@@ -82,12 +85,16 @@ const errors_1 = require("../../../util/common/errors");
|
|
|
82
85
|
const result_1 = require("../../../util/common/result");
|
|
83
86
|
const assert_1 = require("../../../util/vs/base/common/assert");
|
|
84
87
|
const async_2 = require("../../../util/vs/base/common/async");
|
|
88
|
+
const path_1 = require("../../../util/vs/base/common/path");
|
|
85
89
|
const stopwatch_1 = require("../../../util/vs/base/common/stopwatch");
|
|
90
|
+
const uri_1 = require("../../../util/vs/base/common/uri");
|
|
86
91
|
const lineEdit_1 = require("../../../util/vs/editor/common/core/edits/lineEdit");
|
|
92
|
+
const stringEdit_1 = require("../../../util/vs/editor/common/core/edits/stringEdit");
|
|
87
93
|
const position_1 = require("../../../util/vs/editor/common/core/position");
|
|
88
94
|
const range_1 = require("../../../util/vs/editor/common/core/range");
|
|
89
95
|
const lineRange_1 = require("../../../util/vs/editor/common/core/ranges/lineRange");
|
|
90
96
|
const offsetRange_1 = require("../../../util/vs/editor/common/core/ranges/offsetRange");
|
|
97
|
+
const abstractText_1 = require("../../../util/vs/editor/common/core/text/abstractText");
|
|
91
98
|
const instantiation_1 = require("../../../util/vs/platform/instantiation/common/instantiation");
|
|
92
99
|
const vscodeTypesShim_1 = require("../../../util/common/test/shims/vscodeTypesShim");
|
|
93
100
|
const nearbyCursorInlineEditProvider_1 = require("../../inlineEdits/common/nearbyCursorInlineEditProvider");
|
|
@@ -314,7 +321,7 @@ let XtabProvider = class XtabProvider {
|
|
|
314
321
|
telemetryBuilder.setSimilarFilesContext(this.similarFilesContextService.compute(activeDocument.id.uri, activeDocument.languageId, activeDocument.documentAfterEdits.value, currentDocument.cursorOffset));
|
|
315
322
|
request.fetchIssued = true;
|
|
316
323
|
const cursorLineOffset = cursorPosition.column;
|
|
317
|
-
return yield* this.streamEditsWithFiltering(request, endpoint, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, editWindowLinesRange, promptPieces, prediction, {
|
|
324
|
+
return yield* this.streamEditsWithFiltering(request, endpoint, modelServiceConfig, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, editWindowLinesRange, promptPieces, prediction, {
|
|
318
325
|
shouldRemoveCursorTagFromResponse,
|
|
319
326
|
responseFormat,
|
|
320
327
|
retryState,
|
|
@@ -435,10 +442,10 @@ let XtabProvider = class XtabProvider {
|
|
|
435
442
|
return undefined;
|
|
436
443
|
}
|
|
437
444
|
}
|
|
438
|
-
async *streamEditsWithFiltering(request, endpoint, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, // cursor offset within the line it's in; 1-based
|
|
445
|
+
async *streamEditsWithFiltering(request, endpoint, modelServiceConfig, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, // cursor offset within the line it's in; 1-based
|
|
439
446
|
editWindowLineRange, promptPieces, prediction, opts, delaySession, parentTracer, telemetryBuilder, logContext, cancellationToken, originalEditWindow) {
|
|
440
447
|
const tracer = parentTracer.createSubLogger('streamEditsWithFiltering');
|
|
441
|
-
const iterator = this.streamEdits(request, endpoint, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, editWindowLineRange, promptPieces, prediction, opts, delaySession, tracer, telemetryBuilder, logContext, cancellationToken, originalEditWindow);
|
|
448
|
+
const iterator = this.streamEdits(request, endpoint, modelServiceConfig, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, editWindowLineRange, promptPieces, prediction, opts, delaySession, tracer, telemetryBuilder, logContext, cancellationToken, originalEditWindow);
|
|
442
449
|
let nEdits = 0;
|
|
443
450
|
let r = await iterator.next();
|
|
444
451
|
while (!r.done) {
|
|
@@ -458,13 +465,14 @@ let XtabProvider = class XtabProvider {
|
|
|
458
465
|
if (nEdits === 0 &&
|
|
459
466
|
r.value instanceof statelessNextEditProvider_1.NoNextEditReason.NoSuggestions // only retry if there was no error, cancellation, etc.
|
|
460
467
|
) {
|
|
461
|
-
return yield* this.doGetNextEditsWithCursorJump(request, editWindow, promptPieces, delaySession, parentTracer, logContext, cancellationToken, telemetryBuilder, opts.retryState);
|
|
468
|
+
return yield* this.doGetNextEditsWithCursorJump(request, modelServiceConfig, editWindow, promptPieces, delaySession, parentTracer, logContext, cancellationToken, telemetryBuilder, opts.retryState);
|
|
462
469
|
}
|
|
463
470
|
return r.value;
|
|
464
471
|
}
|
|
465
|
-
async *streamEdits(request, endpoint, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, // cursor offset within the line it's in; 1-based
|
|
472
|
+
async *streamEdits(request, endpoint, modelServiceConfig, messages, editWindow, editWindowLines, cursorOriginalLinesOffset, cursorLineOffset, // cursor offset within the line it's in; 1-based
|
|
466
473
|
editWindowLineRange, promptPieces, prediction, opts, delaySession, parentTracer, telemetryBuilder, logContext, cancellationToken, originalEditWindow) {
|
|
467
474
|
const tracer = parentTracer.createSubLogger('streamEdits');
|
|
475
|
+
const targetDocument = request.getActiveDocument().id;
|
|
468
476
|
const useFetcher = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.NextEditSuggestionsFetcher, this.expService) || undefined;
|
|
469
477
|
const fetchStreamSource = new chatMLFetcher_1.FetchStreamSource();
|
|
470
478
|
const fetchRequestStopWatch = new stopwatch_1.StopWatch();
|
|
@@ -583,7 +591,8 @@ let XtabProvider = class XtabProvider {
|
|
|
583
591
|
cleanedLinesStream = remainingLinesStream;
|
|
584
592
|
}
|
|
585
593
|
else if (opts.responseFormat === xtabPromptOptions.ResponseFormat.CustomDiffPatch) {
|
|
586
|
-
|
|
594
|
+
const activeDoc = request.getActiveDocument();
|
|
595
|
+
return yield* xtabCustomDiffPatchResponseHandler_1.XtabCustomDiffPatchResponseHandler.handleResponse(linesStream, request.documentBeforeEdits, activeDoc.id, activeDoc.workspaceRoot, editWindow, originalEditWindow);
|
|
587
596
|
}
|
|
588
597
|
else if (opts.responseFormat === xtabPromptOptions.ResponseFormat.UnifiedWithXml) {
|
|
589
598
|
const linesIter = linesStream[Symbol.asyncIterator]();
|
|
@@ -596,7 +605,7 @@ let XtabProvider = class XtabProvider {
|
|
|
596
605
|
}
|
|
597
606
|
const trimmedLines = firstLine.value.trim();
|
|
598
607
|
if (trimmedLines === tags_1.ResponseTags.NO_CHANGE.start) {
|
|
599
|
-
return yield* this.doGetNextEditsWithCursorJump(request, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder, opts.retryState);
|
|
608
|
+
return yield* this.doGetNextEditsWithCursorJump(request, modelServiceConfig, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder, opts.retryState);
|
|
600
609
|
}
|
|
601
610
|
if (trimmedLines === tags_1.ResponseTags.INSERT.start) {
|
|
602
611
|
const lineWithCursorContinued = await linesIter.next();
|
|
@@ -604,7 +613,7 @@ let XtabProvider = class XtabProvider {
|
|
|
604
613
|
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow);
|
|
605
614
|
}
|
|
606
615
|
const edit = new lineEdit_1.LineReplacement(new lineRange_1.LineRange(editWindowLineRange.start + cursorOriginalLinesOffset + 1 /* 0-based to 1-based */, editWindowLineRange.start + cursorOriginalLinesOffset + 2), [editWindowLines[cursorOriginalLinesOffset].slice(0, cursorLineOffset - 1) + lineWithCursorContinued.value + editWindowLines[cursorOriginalLinesOffset].slice(cursorLineOffset - 1)]);
|
|
607
|
-
yield { edit, isFromCursorJump, window: editWindow, originalWindow: originalEditWindow };
|
|
616
|
+
yield { edit, isFromCursorJump, window: editWindow, originalWindow: originalEditWindow, targetDocument };
|
|
608
617
|
const lines = [];
|
|
609
618
|
let v = await linesIter.next();
|
|
610
619
|
while (!v.done) {
|
|
@@ -621,7 +630,8 @@ let XtabProvider = class XtabProvider {
|
|
|
621
630
|
edit: new lineEdit_1.LineReplacement(new lineRange_1.LineRange(line, line), lines),
|
|
622
631
|
isFromCursorJump,
|
|
623
632
|
window: editWindow,
|
|
624
|
-
originalWindow: originalEditWindow
|
|
633
|
+
originalWindow: originalEditWindow,
|
|
634
|
+
targetDocument,
|
|
625
635
|
};
|
|
626
636
|
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow);
|
|
627
637
|
}
|
|
@@ -697,7 +707,7 @@ let XtabProvider = class XtabProvider {
|
|
|
697
707
|
}
|
|
698
708
|
}
|
|
699
709
|
}
|
|
700
|
-
yield { edit: singleLineEdit, isFromCursorJump, window: editWindow, originalWindow: originalEditWindow };
|
|
710
|
+
yield { edit: singleLineEdit, isFromCursorJump, window: editWindow, originalWindow: originalEditWindow, targetDocument };
|
|
701
711
|
i++;
|
|
702
712
|
}
|
|
703
713
|
}
|
|
@@ -712,9 +722,9 @@ let XtabProvider = class XtabProvider {
|
|
|
712
722
|
return new statelessNextEditProvider_1.NoNextEditReason.Unexpected(errors_1.ErrorUtils.fromUnknown(err));
|
|
713
723
|
}
|
|
714
724
|
}
|
|
715
|
-
async *doGetNextEditsWithCursorJump(request, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder, retryState) {
|
|
725
|
+
async *doGetNextEditsWithCursorJump(request, modelConfig, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder, retryState) {
|
|
716
726
|
const noSuggestions = new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow);
|
|
717
|
-
const nextCursorLinePrediction = this.nextCursorPredictor.determineEnablement();
|
|
727
|
+
const nextCursorLinePrediction = this.nextCursorPredictor.determineEnablement(modelConfig.supportsNextCursorLinePrediction);
|
|
718
728
|
if (nextCursorLinePrediction === undefined || retryState instanceof RetryState.Retrying) {
|
|
719
729
|
return noSuggestions;
|
|
720
730
|
}
|
|
@@ -735,9 +745,14 @@ let XtabProvider = class XtabProvider {
|
|
|
735
745
|
telemetryBuilder.setNextCursorLineError(nextCursorLineR.err.message);
|
|
736
746
|
return noSuggestions;
|
|
737
747
|
}
|
|
738
|
-
const
|
|
748
|
+
const prediction = nextCursorLineR.val;
|
|
749
|
+
if (prediction.kind === 'differentFile') {
|
|
750
|
+
return yield* this.handleCrossFilePrediction(prediction, nextCursorLinePrediction, request, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder);
|
|
751
|
+
}
|
|
752
|
+
const nextCursorLineZeroBased = prediction.lineNumber;
|
|
739
753
|
const lineDistanceFromCursorLine = nextCursorLineZeroBased - promptPieces.currentDocument.cursorLineOffset;
|
|
740
754
|
telemetryBuilder.setNextCursorLineDistance(lineDistanceFromCursorLine);
|
|
755
|
+
telemetryBuilder.setNextCursorIsCrossFile(false);
|
|
741
756
|
tracer.trace(`Predicted next cursor line: ${nextCursorLineZeroBased}`);
|
|
742
757
|
if (nextCursorLineZeroBased >= promptPieces.currentDocument.lines.length) { // >= because the line index is zero-based
|
|
743
758
|
tracer.trace(`Predicted next cursor line error: exceedsDocumentLines`);
|
|
@@ -766,6 +781,52 @@ let XtabProvider = class XtabProvider {
|
|
|
766
781
|
}
|
|
767
782
|
}
|
|
768
783
|
}
|
|
784
|
+
async *handleCrossFilePrediction(prediction, nextCursorLinePrediction, request, editWindow, promptPieces, delaySession, tracer, logContext, cancellationToken, telemetryBuilder) {
|
|
785
|
+
const workspaceRoot = promptPieces.activeDoc.workspaceRoot;
|
|
786
|
+
if (!workspaceRoot && !(0, path_1.isAbsolute)(prediction.filePath)) {
|
|
787
|
+
tracer.trace('Predicted cross-file cursor jump error: noWorkspaceRoot');
|
|
788
|
+
telemetryBuilder.setNextCursorLineError('crossFile:noWorkspaceRoot');
|
|
789
|
+
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow);
|
|
790
|
+
}
|
|
791
|
+
const targetUri = (0, path_1.isAbsolute)(prediction.filePath)
|
|
792
|
+
? uri_1.URI.file(prediction.filePath)
|
|
793
|
+
: uri_1.URI.joinPath(workspaceRoot, prediction.filePath);
|
|
794
|
+
const targetDocumentId = documentId_1.DocumentId.create(targetUri.toString());
|
|
795
|
+
const nextCursorLineOneBased = prediction.lineNumber + 1;
|
|
796
|
+
const nextCursorPosition = new position_1.Position(nextCursorLineOneBased, 1);
|
|
797
|
+
telemetryBuilder.setNextCursorIsCrossFile(true);
|
|
798
|
+
tracer.trace(`Predicted cross-file cursor jump: ${prediction.filePath}:${prediction.lineNumber}`);
|
|
799
|
+
switch (nextCursorLinePrediction) {
|
|
800
|
+
case nextCursorLinePrediction_1.NextCursorLinePrediction.Jump: {
|
|
801
|
+
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow, nextCursorPosition, targetDocumentId);
|
|
802
|
+
}
|
|
803
|
+
case nextCursorLinePrediction_1.NextCursorLinePrediction.OnlyWithEdit: {
|
|
804
|
+
let targetTextDoc;
|
|
805
|
+
try {
|
|
806
|
+
targetTextDoc = await this.workspaceService.openTextDocument(targetUri);
|
|
807
|
+
}
|
|
808
|
+
catch (err) {
|
|
809
|
+
tracer.trace(`Failed to open target file for cross-file edit: ${errors_1.ErrorUtils.fromUnknown(err).message}`);
|
|
810
|
+
telemetryBuilder.setNextCursorLineError('crossFile:failedToOpenFile');
|
|
811
|
+
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(request.documentBeforeEdits, editWindow, nextCursorPosition, targetDocumentId);
|
|
812
|
+
}
|
|
813
|
+
if (cancellationToken.isCancellationRequested) {
|
|
814
|
+
return new statelessNextEditProvider_1.NoNextEditReason.GotCancelled('afterCrossFileOpenTextDocument');
|
|
815
|
+
}
|
|
816
|
+
if (hasUserTypedSinceRequestStarted(request)) {
|
|
817
|
+
tracer.trace('Skipping cross-file edit: user typed during openTextDocument');
|
|
818
|
+
return new statelessNextEditProvider_1.NoNextEditReason.GotCancelled('afterCrossFileOpenTextDocumentUserTyped');
|
|
819
|
+
}
|
|
820
|
+
const targetContent = new abstractText_1.StringText(targetTextDoc.getText());
|
|
821
|
+
const syntheticDoc = new statelessNextEditProvider_1.StatelessNextEditDocument(targetDocumentId, promptPieces.activeDoc.workspaceRoot, languageId_1.LanguageId.create(targetTextDoc.languageId), targetContent.getLines(), lineEdit_1.LineEdit.empty, targetContent, new edit_1.Edits(stringEdit_1.StringEdit, []));
|
|
822
|
+
const syntheticRequest = new statelessNextEditProvider_1.StatelessNextEditRequest(request.headerRequestId, request.opportunityId, targetContent, [syntheticDoc], 0, request.xtabEditHistory, new async_2.DeferredPromise(), request.expandedEditWindowNLines, request.isSpeculative, request.logContext, request.recordingBookmark, request.recording, request.providerRequestStartDateTime);
|
|
823
|
+
return yield* this.doGetNextEditWithSelection(syntheticRequest, new range_1.Range(nextCursorLineOneBased, 1, nextCursorLineOneBased, 1), delaySession, tracer, logContext, cancellationToken, telemetryBuilder, new RetryState.Retrying('cursorJump'), editWindow);
|
|
824
|
+
}
|
|
825
|
+
default: {
|
|
826
|
+
(0, assert_1.assertNever)(nextCursorLinePrediction);
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
769
830
|
computeEditWindowLinesRange(currentDocument, request, tracer, telemetry) {
|
|
770
831
|
const currentDocLines = currentDocument.lines;
|
|
771
832
|
const cursorLineOffset = currentDocument.cursorLineOffset;
|
|
@@ -935,8 +996,9 @@ let XtabProvider = class XtabProvider {
|
|
|
935
996
|
return artificialDelay;
|
|
936
997
|
}
|
|
937
998
|
filterEdit(activeDoc, edits) {
|
|
999
|
+
const allowImportChanges = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.TeamInternal.InlineEditsAllowImportChanges, this.expService);
|
|
938
1000
|
const filters = [
|
|
939
|
-
(edits) => importFiltering_1.IgnoreImportChangesAspect.filterEdit(activeDoc, edits),
|
|
1001
|
+
(edits) => importFiltering_1.IgnoreImportChangesAspect.filterEdit(activeDoc, edits, allowImportChanges),
|
|
940
1002
|
(edits) => statelessNextEditProviders_1.IgnoreEmptyLineAndLeadingTrailingWhitespaceChanges.filterEdit(activeDoc, edits),
|
|
941
1003
|
];
|
|
942
1004
|
if (!this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.InlineEditsAllowWhitespaceOnlyChanges, this.expService)) {
|