@vscode/chat-lib 0.53.2026061203 → 0.54.0
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/auth/copilotTokenManager.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/auth/copilotTokenManager.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/auth/copilotTokenNotifier.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/auth/copilotTokenNotifier.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/defaultExpFilters.js +3 -3
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/experiments/defaultExpFilters.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/ghostText/ghostText.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/ghostText/ghostText.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/completionsPromptFactory/componentsCompletionsPromptFactory.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/completionsPromptFactory/componentsCompletionsPromptFactory.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/codeSnippets.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/codeSnippets.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/codeSnippets.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/codeSnippets.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsContext.d.ts +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsContext.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsContext.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsContext.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsPromptRenderer.d.ts +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsPromptRenderer.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsPromptRenderer.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/completionsPromptRenderer.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/currentFile.d.ts +6 -6
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/currentFile.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/currentFile.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/diagnostics.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/diagnostics.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/diagnostics.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/diagnostics.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/marker.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/marker.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/marker.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/marker.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/recentEdits.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/recentEdits.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/recentEdits.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/recentEdits.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/similarFiles.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/similarFiles.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/similarFiles.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPrompt.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPrompt.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPrompt.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPrompt.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPromptRenderer.d.ts +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPromptRenderer.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPromptRenderer.js +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/splitContextPromptRenderer.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/traits.d.ts +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/traits.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/traits.js +2 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/lib/src/prompt/components/traits.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/jsx-runtime/jsx-dev-runtime.d.ts +2 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/jsx-runtime/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/jsx-runtime/jsx-dev-runtime.js +14 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/jsx-runtime/jsx-dev-runtime.js.map +1 -0
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/src/tokenization/tokenizer.d.ts +48 -2
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/src/tokenization/tokenizer.d.ts.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/src/tokenization/tokenizer.js +82 -5
- package/dist/src/_internal/extension/completions-core/vscode-node/prompt/src/tokenization/tokenizer.js.map +1 -1
- package/dist/src/_internal/extension/completions-core/vscode-node/types/src/auth.d.ts +1 -1
- package/dist/src/_internal/extension/conversation/common/languageModelAccess.d.ts +16 -7
- package/dist/src/_internal/extension/conversation/common/languageModelAccess.d.ts.map +1 -1
- package/dist/src/_internal/extension/conversation/common/languageModelAccess.js +44 -27
- package/dist/src/_internal/extension/conversation/common/languageModelAccess.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.d.ts +6 -0
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.js +77 -1
- package/dist/src/_internal/extension/inlineEdits/node/debugRecorder.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts +9 -0
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js +24 -7
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.d.ts +21 -3
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js +32 -9
- package/dist/src/_internal/extension/xtab/node/xtabNextCursorPredictor.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/{xtabCustomDiffPatchResponseHandler.d.ts → xtabPatchResponseHandler.d.ts} +24 -34
- package/dist/src/_internal/extension/xtab/node/xtabPatchResponseHandler.d.ts.map +1 -0
- package/dist/src/_internal/extension/xtab/node/{xtabCustomDiffPatchResponseHandler.js → xtabPatchResponseHandler.js} +117 -64
- package/dist/src/_internal/extension/xtab/node/xtabPatchResponseHandler.js.map +1 -0
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts +6 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js +7 -6
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
- package/dist/src/_internal/platform/authentication/common/authentication.d.ts +15 -2
- package/dist/src/_internal/platform/authentication/common/authentication.d.ts.map +1 -1
- package/dist/src/_internal/platform/authentication/common/authentication.js +28 -17
- package/dist/src/_internal/platform/authentication/common/authentication.js.map +1 -1
- package/dist/src/_internal/platform/authentication/common/staticGitHubAuthenticationService.js +1 -1
- package/dist/src/_internal/platform/authentication/common/staticGitHubAuthenticationService.js.map +1 -1
- package/dist/src/_internal/platform/chat/common/chatQuotaServiceImpl.js +1 -1
- package/dist/src/_internal/platform/chat/common/chatQuotaServiceImpl.js.map +1 -1
- package/dist/src/_internal/platform/chat/common/commonTypes.d.ts.map +1 -1
- package/dist/src/_internal/platform/chat/common/commonTypes.js +11 -4
- package/dist/src/_internal/platform/chat/common/commonTypes.js.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +5 -7
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.js +5 -7
- package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +2 -4
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +6 -15
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/domainService.d.ts +0 -1
- package/dist/src/_internal/platform/endpoint/common/domainService.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/domainService.js +1 -3
- package/dist/src/_internal/platform/endpoint/common/domainService.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/chatEndpoint.d.ts +1 -0
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +3 -2
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
- package/dist/src/_internal/platform/git/common/utils.d.ts +20 -0
- package/dist/src/_internal/platform/git/common/utils.d.ts.map +1 -0
- package/dist/src/_internal/platform/git/common/utils.js +86 -0
- package/dist/src/_internal/platform/git/common/utils.js.map +1 -0
- package/dist/src/_internal/platform/github/common/githubService.d.ts +33 -0
- package/dist/src/_internal/platform/github/common/githubService.d.ts.map +1 -1
- package/dist/src/_internal/platform/github/common/githubService.js +29 -0
- package/dist/src/_internal/platform/github/common/githubService.js.map +1 -1
- package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.js +1 -1
- package/dist/src/_internal/platform/github/common/nullOctokitServiceImpl.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +3 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +7 -4
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.d.ts +14 -0
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.js +21 -0
- package/dist/src/_internal/platform/inlineEdits/common/inlineEditLogContext.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts +4 -2
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.js +11 -4
- package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.d.ts +4 -1
- package/dist/src/_internal/platform/networking/common/networking.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/openai.d.ts +5 -0
- package/dist/src/_internal/platform/networking/common/openai.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/openai.js +8 -0
- package/dist/src/_internal/platform/networking/common/openai.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/genAiMetrics.d.ts +10 -2
- package/dist/src/_internal/platform/otel/common/genAiMetrics.d.ts.map +1 -1
- package/dist/src/_internal/platform/otel/common/genAiMetrics.js +30 -3
- package/dist/src/_internal/platform/otel/common/genAiMetrics.js.map +1 -1
- package/dist/src/main.d.ts +21 -0
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +9 -2
- package/dist/src/main.js.map +1 -1
- package/dist/src/package.json +77 -83
- package/package.json +3 -3
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.d.ts.map +0 -1
- package/dist/src/_internal/extension/xtab/node/xtabCustomDiffPatchResponseHandler.js.map +0 -1
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { Raw } from '@vscode/prompt-tsx';
|
|
1
2
|
import { IConfigurationService } from '../../../platform/configuration/common/configurationService';
|
|
2
3
|
import { IEndpointProvider } from '../../../platform/endpoint/common/endpointProvider';
|
|
3
4
|
import { NextCursorLinePrediction } from '../../../platform/inlineEdits/common/dataTypes/nextCursorLinePrediction';
|
|
4
|
-
import { StatelessNextEditTelemetryBuilder } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
|
|
5
5
|
import { ILanguageDiagnosticsService } from '../../../platform/languages/common/languageDiagnosticsService';
|
|
6
|
-
import { ILogger } from '../../../platform/log/common/logService';
|
|
7
6
|
import { IProxyModelsService } from '../../../platform/proxyModels/common/proxyModelsService';
|
|
8
7
|
import { IExperimentationService } from '../../../platform/telemetry/common/nullExperimentationService';
|
|
9
8
|
import { Result } from '../../../util/common/result';
|
|
@@ -11,6 +10,7 @@ import { CancellationToken } from '../../../util/vs/base/common/cancellation';
|
|
|
11
10
|
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
12
11
|
import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation';
|
|
13
12
|
import { PromptPieces } from '../common/promptCrafting';
|
|
13
|
+
import type { RequestTracingContext } from './xtabProvider';
|
|
14
14
|
export type CursorJumpPrediction = {
|
|
15
15
|
readonly kind: 'sameFile';
|
|
16
16
|
readonly lineNumber: number;
|
|
@@ -19,6 +19,13 @@ export type CursorJumpPrediction = {
|
|
|
19
19
|
readonly filePath: string;
|
|
20
20
|
readonly lineNumber: number;
|
|
21
21
|
};
|
|
22
|
+
/**
|
|
23
|
+
* System prompt used for the cursor-jump (next-cursor-line) prediction model.
|
|
24
|
+
* Kept as an exported constant so that training-data generation can mirror it
|
|
25
|
+
* verbatim — drift between this string and the datagen prompt would corrupt
|
|
26
|
+
* the training distribution.
|
|
27
|
+
*/
|
|
28
|
+
export declare const NEXT_CURSOR_PREDICTION_SYSTEM_MESSAGE = "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.";
|
|
22
29
|
export declare class XtabNextCursorPredictor {
|
|
23
30
|
private readonly computeTokens;
|
|
24
31
|
private readonly instaService;
|
|
@@ -30,7 +37,18 @@ export declare class XtabNextCursorPredictor {
|
|
|
30
37
|
private isDisabled;
|
|
31
38
|
constructor(computeTokens: (text: string) => number, instaService: IInstantiationService, configService: IConfigurationService, expService: IExperimentationService, langDiagService: ILanguageDiagnosticsService, endpointProvider: IEndpointProvider, proxyModelsService: IProxyModelsService);
|
|
32
39
|
determineEnablement(supportsNextCursorLinePrediction?: boolean): NextCursorLinePrediction | undefined;
|
|
33
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Build the chat messages and `keptRange` for the cursor-prediction prompt
|
|
42
|
+
* without making any network call. Extracted from {@link predictNextCursorPosition}
|
|
43
|
+
* so that test/datagen tooling can capture the exact production prompt
|
|
44
|
+
* (and the kept-line range used to validate the assistant's response)
|
|
45
|
+
* without spinning up a mock endpoint.
|
|
46
|
+
*/
|
|
47
|
+
buildCursorPredictionPrompt(promptPieces: PromptPieces): Result<{
|
|
48
|
+
messages: Raw.ChatMessage[];
|
|
49
|
+
keptRange: OffsetRange;
|
|
50
|
+
}, Error>;
|
|
51
|
+
predictNextCursorPosition(promptPieces: PromptPieces, tracing: RequestTracingContext, cancellationToken: CancellationToken): Promise<Result<CursorJumpPrediction, Error>>;
|
|
34
52
|
private resolveEndpoint;
|
|
35
53
|
private determineModelName;
|
|
36
54
|
private determineLintOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xtabNextCursorPredictor.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"xtabNextCursorPredictor.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGzC,OAAO,EAAa,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,oDAAoD,CAAC;AAEvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yEAAyE,CAAC;AAGnH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+DAA+D,CAAC;AAI5G,OAAO,EAAE,mBAAmB,EAAE,MAAM,yDAAyD,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAGxG,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAErG,OAAO,EAAsC,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG5D,MAAM,MAAM,oBAAoB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAI9F;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC,wcAAwc,CAAC;AAE3f,qBAAa,uBAAuB;IAKlC,OAAO,CAAC,QAAQ,CAAC,aAAa;IACP,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IATzD,OAAO,CAAC,UAAU,CAAU;gBAGV,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAChB,YAAY,EAAE,qBAAqB,EACnC,aAAa,EAAE,qBAAqB,EAClC,UAAU,EAAE,uBAAuB,EAC/B,eAAe,EAAE,2BAA2B,EACtD,gBAAgB,EAAE,iBAAiB,EACjC,kBAAkB,EAAE,mBAAmB;IAKvE,mBAAmB,CAAC,gCAAgC,CAAC,EAAE,OAAO,GAAG,wBAAwB,GAAG,SAAS;IA+B5G;;;;;;OAMG;IACI,2BAA2B,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC;QAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;QAAC,SAAS,EAAE,WAAW,CAAA;KAAE,EAAE,KAAK,CAAC;IAgFzH,yBAAyB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAkExK,eAAe;IA2C7B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,oBAAoB;IAcrB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,GAAG,MAAM,CAAC,oBAAoB,EAAE,KAAK,CAAC;IA8BtG,OAAO,CAAC,uBAAuB;CAS/B"}
|
|
@@ -46,7 +46,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
46
46
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.XtabNextCursorPredictor = void 0;
|
|
49
|
+
exports.XtabNextCursorPredictor = exports.NEXT_CURSOR_PREDICTION_SYSTEM_MESSAGE = 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");
|
|
@@ -68,6 +68,13 @@ const lintErrors_1 = require("../common/lintErrors");
|
|
|
68
68
|
const promptCrafting_1 = require("../common/promptCrafting");
|
|
69
69
|
const xtabUtils_1 = require("./xtabUtils");
|
|
70
70
|
const DEFAULT_CURSOR_JUMP_MODEL_NAME = 'copilot-suggestions-himalia-001';
|
|
71
|
+
/**
|
|
72
|
+
* System prompt used for the cursor-jump (next-cursor-line) prediction model.
|
|
73
|
+
* Kept as an exported constant so that training-data generation can mirror it
|
|
74
|
+
* verbatim — drift between this string and the datagen prompt would corrupt
|
|
75
|
+
* the training distribution.
|
|
76
|
+
*/
|
|
77
|
+
exports.NEXT_CURSOR_PREDICTION_SYSTEM_MESSAGE = `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.`;
|
|
71
78
|
let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
72
79
|
constructor(computeTokens, instaService, configService, expService, langDiagService, endpointProvider, proxyModelsService) {
|
|
73
80
|
this.computeTokens = computeTokens;
|
|
@@ -102,9 +109,15 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
102
109
|
(0, assert_1.assertNever)(originalNextCursorLinePrediction);
|
|
103
110
|
}
|
|
104
111
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
112
|
+
/**
|
|
113
|
+
* Build the chat messages and `keptRange` for the cursor-prediction prompt
|
|
114
|
+
* without making any network call. Extracted from {@link predictNextCursorPosition}
|
|
115
|
+
* so that test/datagen tooling can capture the exact production prompt
|
|
116
|
+
* (and the kept-line range used to validate the assistant's response)
|
|
117
|
+
* without spinning up a mock endpoint.
|
|
118
|
+
*/
|
|
119
|
+
buildCursorPredictionPrompt(promptPieces) {
|
|
120
|
+
const systemMessage = exports.NEXT_CURSOR_PREDICTION_SYSTEM_MESSAGE;
|
|
108
121
|
const maxTokens = this.configService.getExperimentBasedConfig(configurationService_1.ConfigKey.Advanced.InlineEditsNextCursorPredictionCurrentFileMaxTokens, this.expService);
|
|
109
122
|
const currentFileContentR = (0, promptCrafting_1.constructTaggedFile)(promptPieces.currentDocument, promptPieces.editWindowLinesRange, promptPieces.areaAroundEditWindowLinesRange, {
|
|
110
123
|
...promptPieces.opts,
|
|
@@ -120,7 +133,6 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
120
133
|
}
|
|
121
134
|
});
|
|
122
135
|
if (currentFileContentR.isError()) {
|
|
123
|
-
tracer.trace(`Failed to construct tagged file: ${currentFileContentR.err}`);
|
|
124
136
|
return result_1.Result.fromString(currentFileContentR.err);
|
|
125
137
|
}
|
|
126
138
|
const { clippedTaggedCurrentDoc, areaAroundCodeToEdit } = currentFileContentR.val;
|
|
@@ -147,9 +159,20 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
147
159
|
systemMsg: systemMessage,
|
|
148
160
|
userMsg: userMessage
|
|
149
161
|
});
|
|
150
|
-
|
|
162
|
+
return result_1.Result.ok({ messages, keptRange: clippedTaggedCurrentDoc.keptRange });
|
|
163
|
+
}
|
|
164
|
+
async predictNextCursorPosition(promptPieces, tracing, cancellationToken) {
|
|
165
|
+
const tracer = tracing.tracer.createSubLogger('predictNextCursorPosition');
|
|
166
|
+
const promptR = this.buildCursorPredictionPrompt(promptPieces);
|
|
167
|
+
if (promptR.isError()) {
|
|
168
|
+
tracer.trace(`Failed to construct tagged file: ${promptR.err.message}`);
|
|
169
|
+
return result_1.Result.fromString(promptR.err.message);
|
|
170
|
+
}
|
|
171
|
+
const { messages, keptRange } = promptR.val;
|
|
172
|
+
tracing.telemetry.setCursorJumpPrompt(messages);
|
|
173
|
+
tracing.logContext.setCursorJumpPrompt(messages, keptRange);
|
|
151
174
|
const modelName = this.determineModelName();
|
|
152
|
-
|
|
175
|
+
tracing.telemetry.setCursorJumpModelName(modelName);
|
|
153
176
|
const resolvedEndpoint = await this.resolveEndpoint(modelName, tracer);
|
|
154
177
|
if (!resolvedEndpoint) {
|
|
155
178
|
return result_1.Result.fromString('endpointNotResolved');
|
|
@@ -180,9 +203,9 @@ let XtabNextCursorPredictor = class XtabNextCursorPredictor {
|
|
|
180
203
|
return result_1.Result.fromString(`fetchError:${response.type}`);
|
|
181
204
|
}
|
|
182
205
|
try {
|
|
183
|
-
|
|
206
|
+
tracing.telemetry.setCursorJumpResponse(response.value);
|
|
184
207
|
const trimmed = response.value.trim();
|
|
185
|
-
return this.parseResponse(trimmed,
|
|
208
|
+
return this.parseResponse(trimmed, keptRange);
|
|
186
209
|
}
|
|
187
210
|
catch (err) {
|
|
188
211
|
tracer.trace(`Failed to parse predicted line number from response '${response.value}': ${err}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xtabNextCursorPredictor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"xtabNextCursorPredictor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabNextCursorPredictor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGhG,qDAAkD;AAClD,2EAAgG;AAChG,sGAA+G;AAC/G,yFAAuF;AACvF,+EAA4E;AAC5E,sHAAmH;AACnH,oHAAsG;AACtG,wGAAiJ;AACjJ,8GAA4G;AAI5G,gGAA8F;AAC9F,8GAAwG;AACxG,sFAAmF;AACnF,wDAAyD;AACzD,wDAAqD;AACrD,8DAA+D;AAC/D,gEAAkE;AAGlE,gGAAqG;AACrG,qDAAkD;AAClD,6DAA4F;AAE5F,2CAAgD;AAMhD,MAAM,8BAA8B,GAAG,iCAAiC,CAAC;AAEzE;;;;;GAKG;AACU,QAAA,qCAAqC,GAAG,qcAAqc,CAAC;AAEpf,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAInC,YACkB,aAAuC,EAChB,YAAmC,EACnC,aAAoC,EAClC,UAAmC,EAC/B,eAA4C,EACtD,gBAAmC,EACjC,kBAAuC;QAN5D,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;QACjC,uBAAkB,GAAlB,kBAAkB,CAAqB;QAE7E,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;IAGD;;;;;;OAMG;IACI,2BAA2B,CAAC,YAA0B;QAC5D,MAAM,aAAa,GAAG,6CAAqC,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,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,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;QAE3I,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,OAAO,eAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,uBAAuB,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,CAAC;IAGM,KAAK,CAAC,yBAAyB,CAAC,YAA0B,EAAE,OAA8B,EAAE,iBAAoC;QAEtI,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,oCAAoC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxE,OAAO,eAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;QAE5C,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,OAAO,CAAC,SAAS,CAAC,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,OAAO,CAAC,SAAS,CAAC,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,SAAS,CAAC,CAAC;QAC/C,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,kBAAkB;QACzB,8EAA8E;QAC9E,0EAA0E;QAC1E,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,gCAAS,CAAC,YAAY,CAAC,wCAAwC,EAAE,IAAI,CAAC,UAAU,CAAC;eAChI,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;eACnD,8BAA8B,CAAC;IACpC,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,EAAE,GAAG,0DAAsC,EAAE,GAAG,gBAAgB,EAAE,CAAC;QAC3E,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,EAAE,0DAAsC,CAAC,CAAC;QACtF,CAAC;QAED,OAAO,0DAAsC,CAAC;IAC/C,CAAC;IAEM,aAAa,CAAC,WAAmB,EAAE,SAAsB;QAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5C,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;AAhTY,0DAAuB;kCAAvB,uBAAuB;IAMjC,WAAA,qCAAqB,CAAA;IACrB,WAAA,4CAAqB,CAAA;IACrB,WAAA,oDAAuB,CAAA;IACvB,WAAA,wDAA2B,CAAA;IAC3B,WAAA,oCAAiB,CAAA;IACjB,WAAA,wCAAmB,CAAA;GAXT,uBAAuB,CAgTnC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,IAAY;IACnC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9C,MAAM,GAAG,EAAE,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -7,7 +7,6 @@ import { LineReplacement } from '../../../util/vs/editor/common/core/edits/lineE
|
|
|
7
7
|
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
8
8
|
import { AbstractText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
9
9
|
import { CurrentDocument } from '../common/xtabCurrentDocument';
|
|
10
|
-
export { DuplicateAdditionsMode };
|
|
11
10
|
declare class Patch {
|
|
12
11
|
/**
|
|
13
12
|
* Expected to be file path relative to workspace root.
|
|
@@ -18,6 +17,11 @@ declare class Patch {
|
|
|
18
17
|
addedLines: string[];
|
|
19
18
|
private constructor();
|
|
20
19
|
static ofLine(line: string): Patch | null;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a pure-insertion patch (no removed lines) at the given line.
|
|
22
|
+
* Used for the continuation portion of a ghost-text progressive reveal.
|
|
23
|
+
*/
|
|
24
|
+
static insertion(filePath: string, lineNumZeroBased: number): Patch;
|
|
21
25
|
addLine(line: string): boolean;
|
|
22
26
|
toString(): string;
|
|
23
27
|
}
|
|
@@ -38,33 +42,6 @@ export interface DuplicateAdditionRemoval {
|
|
|
38
42
|
readonly newAdditions: string[];
|
|
39
43
|
readonly removedLines: readonly string[];
|
|
40
44
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Telemetry-safe summary of a single duplicate-addition detection.
|
|
43
|
-
*
|
|
44
|
-
* Deliberately excludes raw line content (`newAdditions` / `removedLines`)
|
|
45
|
-
* to keep `OnDuplicateRemovedCallback` from accidentally surfacing user
|
|
46
|
-
* source code through telemetry pipelines. Use the internal
|
|
47
|
-
* {@link DuplicateAdditionRemoval} returned by
|
|
48
|
-
* {@link tryRemoveDuplicateAdditions} when you legitimately need the
|
|
49
|
-
* content (e.g. to apply the trim).
|
|
50
|
-
*/
|
|
51
|
-
export interface DuplicateAdditionRemovalSummary {
|
|
52
|
-
readonly kind: 'suffix' | 'prefix' | 'middle';
|
|
53
|
-
readonly removedLineCount: number;
|
|
54
|
-
readonly remainingAdditionCount: number;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Callback invoked once per duplicate-addition detection. Receives only
|
|
58
|
-
* redacted, telemetry-safe metadata (counts and shape). The callback fires
|
|
59
|
-
* for every action mode (Log / DropPatch / DropAllRemaining / TrimDuplicate),
|
|
60
|
-
* including `Log` where the patch is not actually modified.
|
|
61
|
-
*/
|
|
62
|
-
export type OnDuplicateRemovedCallback = (info: {
|
|
63
|
-
readonly summary: DuplicateAdditionRemovalSummary;
|
|
64
|
-
readonly mode: Exclude<DuplicateAdditionsMode, DuplicateAdditionsMode.Off>;
|
|
65
|
-
readonly filePath: string;
|
|
66
|
-
readonly lineNumZeroBased: number;
|
|
67
|
-
}) => void;
|
|
68
45
|
/**
|
|
69
46
|
* Checks whether the patch's added lines duplicate the file content immediately
|
|
70
47
|
* following the deleted range, and if so, trims the duplicated lines.
|
|
@@ -105,10 +82,23 @@ export type OnDuplicateRemovedCallback = (info: {
|
|
|
105
82
|
* `undefined` if no duplication was detected.
|
|
106
83
|
*/
|
|
107
84
|
export declare function tryRemoveDuplicateAdditions(replacement: LineReplacement, currentText: AbstractText): DuplicateAdditionRemoval | undefined;
|
|
108
|
-
export declare
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
85
|
+
export declare namespace XtabPatchResponseHandler {
|
|
86
|
+
function handleResponse(linesStream: AsyncIterable<string>, currentDocument: CurrentDocument, activeDocumentId: DocumentId, workspaceRoot: URI | undefined, window: OffsetRange | undefined, parentTracer: ILogger, duplicateAdditionsMode?: DuplicateAdditionsMode, enableProgressiveGhostText?: boolean): AsyncGenerator<StreamedEdit, NoNextEditReason, void>;
|
|
87
|
+
/**
|
|
88
|
+
* Checks whether the first patch qualifies for ghost-text progressive reveal.
|
|
89
|
+
* A patch qualifies if it has exactly one removed line, at least one added line,
|
|
90
|
+
* targets the cursor line in the active document, and the edit on the first
|
|
91
|
+
* line is additive (the removed line is a subsequence of the first added line).
|
|
92
|
+
*/
|
|
93
|
+
function isGhostTextPatch(patch: Patch, cursorLineZeroBased: number, activeDocRelativePath: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* @param cursorLineZeroBased When provided (along with activeDocRelativePath),
|
|
96
|
+
* enables ghost-text progressive reveal for the first patch: if the first patch
|
|
97
|
+
* is a ghost-text (single removed line at the cursor that is additively edited),
|
|
98
|
+
* the cursor-line replacement is yielded immediately and any further added lines
|
|
99
|
+
* are collected into a separate pure-insertion patch.
|
|
100
|
+
*/
|
|
101
|
+
function extractEdits(linesStream: AsyncIterable<string>, cursorLineZeroBased?: number, activeDocRelativePath?: string): AsyncGenerator<Patch>;
|
|
113
102
|
}
|
|
114
|
-
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=xtabPatchResponseHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xtabPatchResponseHandler.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabPatchResponseHandler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,2DAA2D,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kEAAkE,CAAC;AAE1G,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gEAAgE,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,MAAM,yCAAyC,CAAC;AAIlE,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,uDAAuD,CAAC;AAIrF,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,cAAM,KAAK;IAKT;;OAEG;aACa,QAAQ,EAAE,MAAM;aAChB,gBAAgB,EAAE,MAAM;IARlC,YAAY,EAAE,MAAM,EAAE,CAAM;IAC5B,UAAU,EAAE,MAAM,EAAE,CAAM;IAEjC,OAAO;WAQO,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAShD;;;OAGG;WACW,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,KAAK;IAI1E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAavB,QAAQ,IAAI,MAAM;CAOzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,eAAe,EAC5B,WAAW,EAAE,YAAY,GACvB,wBAAwB,GAAG,SAAS,CA+EtC;AAyDD,yBAAiB,wBAAwB,CAAC;IAEzC,SAAuB,cAAc,CACpC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAClC,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,UAAU,EAC5B,aAAa,EAAE,GAAG,GAAG,SAAS,EAC9B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,YAAY,EAAE,OAAO,EACrB,sBAAsB,GAAE,sBAAmD,EAC3E,0BAA0B,GAAE,OAAe,GACzC,cAAc,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAwDtD;IAiBD;;;;;OAKG;IACH,SAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAMlH;IAED;;;;;;OAMG;IACH,SAAuB,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CA6C3J;CACD"}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.XtabPatchResponseHandler = void 0;
|
|
8
8
|
exports.tryRemoveDuplicateAdditions = tryRemoveDuplicateAdditions;
|
|
9
9
|
const documentId_1 = require("../../../platform/inlineEdits/common/dataTypes/documentId");
|
|
10
10
|
const xtabPromptOptions_1 = require("../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions");
|
|
11
|
-
|
|
11
|
+
const responseProcessor_1 = require("../../../platform/inlineEdits/common/responseProcessor");
|
|
12
12
|
const statelessNextEditProvider_1 = require("../../../platform/inlineEdits/common/statelessNextEditProvider");
|
|
13
13
|
const errors_1 = require("../../../util/common/errors");
|
|
14
14
|
const arrays_1 = require("../../../util/vs/base/common/arrays");
|
|
@@ -38,19 +38,24 @@ class Patch {
|
|
|
38
38
|
const [, filename, lineNumber] = match;
|
|
39
39
|
return new Patch(filename, parseInt(lineNumber, 10));
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a pure-insertion patch (no removed lines) at the given line.
|
|
43
|
+
* Used for the continuation portion of a ghost-text progressive reveal.
|
|
44
|
+
*/
|
|
45
|
+
static insertion(filePath, lineNumZeroBased) {
|
|
46
|
+
return new Patch(filePath, lineNumZeroBased);
|
|
47
|
+
}
|
|
41
48
|
addLine(line) {
|
|
42
49
|
const contentLine = line.slice(1);
|
|
43
50
|
if (line.startsWith('-')) {
|
|
44
51
|
this.removedLines.push(contentLine);
|
|
45
52
|
return true;
|
|
46
53
|
}
|
|
47
|
-
|
|
54
|
+
if (line.startsWith('+')) {
|
|
48
55
|
this.addedLines.push(contentLine);
|
|
49
56
|
return true;
|
|
50
57
|
}
|
|
51
|
-
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
58
|
+
return false;
|
|
54
59
|
}
|
|
55
60
|
toString() {
|
|
56
61
|
return [
|
|
@@ -178,67 +183,74 @@ function tryRemoveDuplicateAdditions(replacement, currentText) {
|
|
|
178
183
|
}
|
|
179
184
|
return undefined;
|
|
180
185
|
}
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
/**
|
|
187
|
+
* Runs duplicate-addition detection on `lineReplacement` and applies the
|
|
188
|
+
* configured `mode` policy, returning an `EditDecision` for the caller to act on.
|
|
189
|
+
*
|
|
190
|
+
* Logs only telemetry-safe metadata (no raw line content) via `tracer` and
|
|
191
|
+
* fires `onDuplicateRemoved` for every detected duplicate regardless of mode.
|
|
192
|
+
*/
|
|
193
|
+
function applyDuplicatePolicy(edit, lineReplacement, content, mode, tracer) {
|
|
194
|
+
const removal = tryRemoveDuplicateAdditions(lineReplacement, content);
|
|
195
|
+
if (removal === undefined) {
|
|
196
|
+
return { kind: 'emit', lineReplacement };
|
|
197
|
+
}
|
|
198
|
+
// Log only metadata (kind / counts / location) — do NOT include raw line
|
|
199
|
+
// content. The tracer output may end up in user-visible diagnostics.
|
|
200
|
+
tracer.trace(`Detected duplicate addition(s) (kind=${removal.kind}, count=${removal.removedLines.length}, mode=${mode}) for edit at ${edit.filePath}:${edit.lineNumZeroBased}`);
|
|
201
|
+
switch (mode) {
|
|
202
|
+
case xtabPromptOptions_1.DuplicateAdditionsMode.DropPatch:
|
|
203
|
+
return { kind: 'skip' };
|
|
204
|
+
case xtabPromptOptions_1.DuplicateAdditionsMode.DropAllRemaining:
|
|
205
|
+
// Drop this patch and skip every subsequent patch in the stream.
|
|
206
|
+
// We still consume the stream to completion so the underlying
|
|
207
|
+
// fetch is allowed to finalize cleanly.
|
|
208
|
+
return { kind: 'skipAndStop' };
|
|
209
|
+
case xtabPromptOptions_1.DuplicateAdditionsMode.TrimDuplicate: {
|
|
210
|
+
const newLines = removal.newAdditions;
|
|
211
|
+
if (newLines.length === 0 && lineReplacement.lineRange.length === 0) {
|
|
212
|
+
// Trim left a no-op patch — drop it.
|
|
213
|
+
return { kind: 'skip' };
|
|
214
|
+
}
|
|
215
|
+
return { kind: 'emit', lineReplacement: new lineEdit_1.LineReplacement(lineReplacement.lineRange, newLines) };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
var XtabPatchResponseHandler;
|
|
220
|
+
(function (XtabPatchResponseHandler) {
|
|
221
|
+
async function* handleResponse(linesStream, currentDocument, activeDocumentId, workspaceRoot, window, parentTracer, duplicateAdditionsMode = xtabPromptOptions_1.DuplicateAdditionsMode.Off, enableProgressiveGhostText = false) {
|
|
183
222
|
const tracer = parentTracer.createSubLogger(['XtabCustomDiffPatchResponseHandler', 'handleResponse']);
|
|
184
223
|
const activeDocRelativePath = (0, promptCraftingUtils_1.toUniquePath)(activeDocumentId, workspaceRoot?.path);
|
|
185
224
|
try {
|
|
186
225
|
let dropAllRemaining = false;
|
|
187
|
-
|
|
226
|
+
const cursorLine = enableProgressiveGhostText ? currentDocument.cursorLineOffset : undefined;
|
|
227
|
+
const progressiveDocPath = enableProgressiveGhostText ? activeDocRelativePath : undefined;
|
|
228
|
+
for await (const edit of extractEdits(linesStream, cursorLine, progressiveDocPath)) {
|
|
188
229
|
if (dropAllRemaining) {
|
|
189
230
|
continue;
|
|
190
231
|
}
|
|
191
232
|
const isActiveDoc = edit.filePath === activeDocRelativePath;
|
|
192
233
|
const targetDocument = isActiveDoc
|
|
193
234
|
? activeDocumentId
|
|
194
|
-
:
|
|
235
|
+
: resolveTargetDocument(edit.filePath, workspaceRoot);
|
|
195
236
|
if (!targetDocument) {
|
|
196
237
|
tracer.error(`Could not resolve target document for edit: ${edit.toString()}`);
|
|
197
238
|
continue;
|
|
198
239
|
}
|
|
199
|
-
let lineReplacement =
|
|
240
|
+
let lineReplacement = resolveEdit(edit);
|
|
200
241
|
// Only attempt dedup for the active document — other files'
|
|
201
242
|
// content is not directly available here.
|
|
202
243
|
if (duplicateAdditionsMode !== xtabPromptOptions_1.DuplicateAdditionsMode.Off && isActiveDoc) {
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
remainingAdditionCount: removal.newAdditions.length,
|
|
214
|
-
},
|
|
215
|
-
mode: duplicateAdditionsMode,
|
|
216
|
-
filePath: edit.filePath,
|
|
217
|
-
lineNumZeroBased: edit.lineNumZeroBased,
|
|
218
|
-
});
|
|
219
|
-
switch (duplicateAdditionsMode) {
|
|
220
|
-
case xtabPromptOptions_1.DuplicateAdditionsMode.Log:
|
|
221
|
-
// Yield the patch unchanged.
|
|
222
|
-
break;
|
|
223
|
-
case xtabPromptOptions_1.DuplicateAdditionsMode.DropPatch:
|
|
224
|
-
continue;
|
|
225
|
-
case xtabPromptOptions_1.DuplicateAdditionsMode.DropAllRemaining:
|
|
226
|
-
// Drop this patch and skip every subsequent
|
|
227
|
-
// patch in the stream. We still consume the
|
|
228
|
-
// stream to completion so the underlying
|
|
229
|
-
// fetch is allowed to finalize cleanly.
|
|
230
|
-
dropAllRemaining = true;
|
|
231
|
-
continue;
|
|
232
|
-
case xtabPromptOptions_1.DuplicateAdditionsMode.TrimDuplicate: {
|
|
233
|
-
const newAdditions = removal.newAdditions;
|
|
234
|
-
if (newAdditions.length === 0 && lineReplacement.lineRange.length === 0) {
|
|
235
|
-
// Trim left a no-op patch — drop it.
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
lineReplacement = new lineEdit_1.LineReplacement(lineReplacement.lineRange, newAdditions);
|
|
239
|
-
break;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
244
|
+
const decision = applyDuplicatePolicy(edit, lineReplacement, currentDocument.content, duplicateAdditionsMode, tracer);
|
|
245
|
+
switch (decision.kind) {
|
|
246
|
+
case 'skip':
|
|
247
|
+
continue;
|
|
248
|
+
case 'skipAndStop':
|
|
249
|
+
dropAllRemaining = true;
|
|
250
|
+
continue;
|
|
251
|
+
case 'emit':
|
|
252
|
+
lineReplacement = decision.lineReplacement;
|
|
253
|
+
break;
|
|
242
254
|
}
|
|
243
255
|
}
|
|
244
256
|
yield {
|
|
@@ -258,10 +270,11 @@ class XtabCustomDiffPatchResponseHandler {
|
|
|
258
270
|
}
|
|
259
271
|
return new statelessNextEditProvider_1.NoNextEditReason.NoSuggestions(currentDocument.content, window, undefined);
|
|
260
272
|
}
|
|
261
|
-
|
|
273
|
+
XtabPatchResponseHandler.handleResponse = handleResponse;
|
|
274
|
+
function resolveEdit(patch) {
|
|
262
275
|
return new lineEdit_1.LineReplacement(new lineRange_1.LineRange(patch.lineNumZeroBased + 1, patch.lineNumZeroBased + 1 + patch.removedLines.length), patch.addedLines);
|
|
263
276
|
}
|
|
264
|
-
|
|
277
|
+
function resolveTargetDocument(filePath, workspaceRoot) {
|
|
265
278
|
if ((0, path_1.isAbsolute)(filePath)) {
|
|
266
279
|
return documentId_1.DocumentId.create(uri_1.URI.file(filePath).toString());
|
|
267
280
|
}
|
|
@@ -271,10 +284,33 @@ class XtabCustomDiffPatchResponseHandler {
|
|
|
271
284
|
// Relative path with no workspace root — cannot resolve to a valid URI
|
|
272
285
|
return undefined;
|
|
273
286
|
}
|
|
274
|
-
|
|
287
|
+
/**
|
|
288
|
+
* Checks whether the first patch qualifies for ghost-text progressive reveal.
|
|
289
|
+
* A patch qualifies if it has exactly one removed line, at least one added line,
|
|
290
|
+
* targets the cursor line in the active document, and the edit on the first
|
|
291
|
+
* line is additive (the removed line is a subsequence of the first added line).
|
|
292
|
+
*/
|
|
293
|
+
function isGhostTextPatch(patch, cursorLineZeroBased, activeDocRelativePath) {
|
|
294
|
+
return patch.removedLines.length === 1
|
|
295
|
+
&& patch.addedLines.length >= 1
|
|
296
|
+
&& patch.lineNumZeroBased === cursorLineZeroBased
|
|
297
|
+
&& patch.filePath === activeDocRelativePath
|
|
298
|
+
&& responseProcessor_1.ResponseProcessor.isAdditiveEdit(patch.removedLines[0], patch.addedLines[0]);
|
|
299
|
+
}
|
|
300
|
+
XtabPatchResponseHandler.isGhostTextPatch = isGhostTextPatch;
|
|
301
|
+
/**
|
|
302
|
+
* @param cursorLineZeroBased When provided (along with activeDocRelativePath),
|
|
303
|
+
* enables ghost-text progressive reveal for the first patch: if the first patch
|
|
304
|
+
* is a ghost-text (single removed line at the cursor that is additively edited),
|
|
305
|
+
* the cursor-line replacement is yielded immediately and any further added lines
|
|
306
|
+
* are collected into a separate pure-insertion patch.
|
|
307
|
+
*/
|
|
308
|
+
async function* extractEdits(linesStream, cursorLineZeroBased, activeDocRelativePath) {
|
|
275
309
|
let currentPatch = null;
|
|
310
|
+
let isFirstPatch = true;
|
|
311
|
+
// Tracks whether we've already attempted progressive reveal (succeeds or fails only once).
|
|
312
|
+
let progressiveRevealDone = false;
|
|
276
313
|
for await (const line of linesStream) {
|
|
277
|
-
// if no current patch, try to parse a new one
|
|
278
314
|
if (line.trim() === tags_1.ResponseTags.NO_EDIT) {
|
|
279
315
|
break;
|
|
280
316
|
}
|
|
@@ -282,21 +318,38 @@ class XtabCustomDiffPatchResponseHandler {
|
|
|
282
318
|
currentPatch = Patch.ofLine(line);
|
|
283
319
|
continue;
|
|
284
320
|
}
|
|
285
|
-
// try to add line to current patch
|
|
286
321
|
if (currentPatch.addLine(line)) {
|
|
322
|
+
// For the first patch, check if we can do progressive reveal:
|
|
323
|
+
// once we have the `-` line and first `+` line, check ghost-text.
|
|
324
|
+
if (isFirstPatch && !progressiveRevealDone
|
|
325
|
+
&& cursorLineZeroBased !== undefined
|
|
326
|
+
&& activeDocRelativePath !== undefined
|
|
327
|
+
&& currentPatch.addedLines.length === 1
|
|
328
|
+
&& currentPatch.removedLines.length >= 1) {
|
|
329
|
+
if (isGhostTextPatch(currentPatch, cursorLineZeroBased, activeDocRelativePath)) {
|
|
330
|
+
// Yield the cursor-line replacement immediately
|
|
331
|
+
const earlyPatch = Patch.insertion(currentPatch.filePath, currentPatch.lineNumZeroBased);
|
|
332
|
+
earlyPatch.removedLines = [...currentPatch.removedLines];
|
|
333
|
+
earlyPatch.addedLines = [...currentPatch.addedLines];
|
|
334
|
+
yield earlyPatch;
|
|
335
|
+
// Replace currentPatch with a continuation pure-insertion patch
|
|
336
|
+
currentPatch = Patch.insertion(currentPatch.filePath, currentPatch.lineNumZeroBased + 1);
|
|
337
|
+
}
|
|
338
|
+
progressiveRevealDone = true;
|
|
339
|
+
}
|
|
287
340
|
continue;
|
|
288
341
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
}
|
|
293
|
-
currentPatch = Patch.ofLine(line);
|
|
342
|
+
// line does not belong to current patch, yield current and start new
|
|
343
|
+
if (currentPatch.removedLines.length > 0 || currentPatch.addedLines.length > 0) {
|
|
344
|
+
yield currentPatch;
|
|
294
345
|
}
|
|
346
|
+
currentPatch = Patch.ofLine(line);
|
|
347
|
+
isFirstPatch = false;
|
|
295
348
|
}
|
|
296
|
-
if (currentPatch) {
|
|
349
|
+
if (currentPatch && (currentPatch.removedLines.length > 0 || currentPatch.addedLines.length > 0)) {
|
|
297
350
|
yield currentPatch;
|
|
298
351
|
}
|
|
299
352
|
}
|
|
300
|
-
|
|
301
|
-
exports.
|
|
302
|
-
//# sourceMappingURL=
|
|
353
|
+
XtabPatchResponseHandler.extractEdits = extractEdits;
|
|
354
|
+
})(XtabPatchResponseHandler || (exports.XtabPatchResponseHandler = XtabPatchResponseHandler = {}));
|
|
355
|
+
//# sourceMappingURL=xtabPatchResponseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xtabPatchResponseHandler.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/xtab/node/xtabPatchResponseHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import * as xtabPromptOptions from '../../../platform/inlineEdits/common/dataTyp
|
|
|
7
7
|
import { LanguageContextLanguages, LanguageContextOptions } from '../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions';
|
|
8
8
|
import { InlineEditRequestLogContext } from '../../../platform/inlineEdits/common/inlineEditLogContext';
|
|
9
9
|
import { IInlineEditsModelService } from '../../../platform/inlineEdits/common/inlineEditsModelService';
|
|
10
|
-
import { EditStreamingWithTelemetry, IStatelessNextEditProvider, NoNextEditReason, StatelessNextEditDocument, StatelessNextEditRequest } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
|
|
10
|
+
import { EditStreamingWithTelemetry, IStatelessNextEditProvider, NoNextEditReason, StatelessNextEditDocument, StatelessNextEditRequest, StatelessNextEditTelemetryBuilder } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
|
|
11
11
|
import { ILanguageContextProviderService } from '../../../platform/languageContextProvider/common/languageContextProviderService';
|
|
12
12
|
import { ILanguageDiagnosticsService } from '../../../platform/languages/common/languageDiagnosticsService';
|
|
13
13
|
import { ILogger } from '../../../platform/log/common/logService';
|
|
@@ -23,6 +23,11 @@ import { CurrentDocument } from '../common/xtabCurrentDocument';
|
|
|
23
23
|
export interface ModelConfig extends xtabPromptOptions.PromptOptions {
|
|
24
24
|
modelName: string | undefined;
|
|
25
25
|
}
|
|
26
|
+
export interface RequestTracingContext {
|
|
27
|
+
tracer: ILogger;
|
|
28
|
+
logContext: InlineEditRequestLogContext;
|
|
29
|
+
telemetry: StatelessNextEditTelemetryBuilder;
|
|
30
|
+
}
|
|
26
31
|
export declare class XtabProvider implements IStatelessNextEditProvider {
|
|
27
32
|
private readonly modelService;
|
|
28
33
|
private readonly simulationCtx;
|
|
@@ -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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"}
|