@aws/lsp-codewhisperer 0.0.82 → 0.0.84
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/CHANGELOG.md +43 -0
- package/out/language-server/agenticChat/agenticChatController.js +105 -35
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/agenticChatResultStream.d.ts +1 -0
- package/out/language-server/agenticChat/agenticChatResultStream.js +21 -0
- package/out/language-server/agenticChat/agenticChatResultStream.js.map +1 -1
- package/out/language-server/agenticChat/constants/constants.d.ts +30 -0
- package/out/language-server/agenticChat/constants/constants.js +44 -1
- package/out/language-server/agenticChat/constants/constants.js.map +1 -1
- package/out/language-server/agenticChat/constants/modelSelection.d.ts +2 -2
- package/out/language-server/agenticChat/constants/modelSelection.js +6 -5
- package/out/language-server/agenticChat/constants/modelSelection.js.map +1 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.d.ts +2 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +3 -1
- package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
- package/out/language-server/agenticChat/context/memorybank/memoryBankController.js +4 -3
- package/out/language-server/agenticChat/context/memorybank/memoryBankController.js.map +1 -1
- package/out/language-server/agenticChat/retry/delayInterceptor.d.ts +33 -0
- package/out/language-server/agenticChat/retry/delayInterceptor.js +79 -0
- package/out/language-server/agenticChat/retry/delayInterceptor.js.map +1 -0
- package/out/language-server/agenticChat/retry/errorTransformer.d.ts +15 -0
- package/out/language-server/agenticChat/retry/errorTransformer.js +152 -0
- package/out/language-server/agenticChat/retry/errorTransformer.js.map +1 -0
- package/out/language-server/agenticChat/retry/index.d.ts +3 -0
- package/out/language-server/agenticChat/retry/index.js +11 -0
- package/out/language-server/agenticChat/retry/index.js.map +1 -0
- package/out/language-server/agenticChat/retry/qRetryStrategy.d.ts +20 -0
- package/out/language-server/agenticChat/retry/qRetryStrategy.js +71 -0
- package/out/language-server/agenticChat/retry/qRetryStrategy.js.map +1 -0
- package/out/language-server/agenticChat/retry/retryClassifier.d.ts +32 -0
- package/out/language-server/agenticChat/retry/retryClassifier.js +122 -0
- package/out/language-server/agenticChat/retry/retryClassifier.js.map +1 -0
- package/out/language-server/agenticChat/tabBarController.d.ts +4 -0
- package/out/language-server/agenticChat/tabBarController.js +19 -2
- package/out/language-server/agenticChat/tabBarController.js.map +1 -1
- package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +3 -25
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js +12 -107
- package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
- package/out/language-server/agenticChat/tools/chatDb/util.js +1 -2
- package/out/language-server/agenticChat/tools/chatDb/util.js.map +1 -1
- package/out/language-server/agenticChat/tools/fsRead.d.ts +3 -1
- package/out/language-server/agenticChat/tools/fsRead.js +12 -7
- package/out/language-server/agenticChat/tools/fsRead.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +30 -14
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +8 -0
- package/out/language-server/chat/chatController.js.map +1 -1
- package/out/language-server/chat/chatSessionService.d.ts +8 -1
- package/out/language-server/chat/chatSessionService.js +38 -81
- package/out/language-server/chat/chatSessionService.js.map +1 -1
- package/out/language-server/chat/constants.d.ts +1 -0
- package/out/language-server/chat/constants.js +2 -1
- package/out/language-server/chat/constants.js.map +1 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +2 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.js +12 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
- package/out/language-server/inline-completion/codeWhispererServer.d.ts +0 -1
- package/out/language-server/inline-completion/codeWhispererServer.js +17 -481
- package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
- package/out/language-server/inline-completion/contants/constants.js.map +1 -0
- package/out/language-server/inline-completion/{editCompletionHandler.d.ts → handler/editCompletionHandler.d.ts} +10 -10
- package/out/language-server/inline-completion/{editCompletionHandler.js → handler/editCompletionHandler.js} +17 -14
- package/out/language-server/inline-completion/handler/editCompletionHandler.js.map +1 -0
- package/out/language-server/inline-completion/handler/inlineCompletionHandler.d.ts +32 -0
- package/out/language-server/inline-completion/handler/inlineCompletionHandler.js +377 -0
- package/out/language-server/inline-completion/handler/inlineCompletionHandler.js.map +1 -0
- package/out/language-server/inline-completion/handler/sessionResultsHandler.d.ts +23 -0
- package/out/language-server/inline-completion/handler/sessionResultsHandler.js +119 -0
- package/out/language-server/inline-completion/handler/sessionResultsHandler.js.map +1 -0
- package/out/language-server/inline-completion/{telemetry.d.ts → telemetry/telemetry.d.ts} +2 -2
- package/out/language-server/inline-completion/{telemetry.js → telemetry/telemetry.js} +2 -2
- package/out/language-server/inline-completion/telemetry/telemetry.js.map +1 -0
- package/out/language-server/inline-completion/{codeDiffTracker.d.ts → tracker/codeDiffTracker.d.ts} +2 -2
- package/out/language-server/inline-completion/{codeDiffTracker.js → tracker/codeDiffTracker.js} +1 -1
- package/out/language-server/inline-completion/tracker/codeDiffTracker.js.map +1 -0
- package/out/language-server/inline-completion/tracker/codeEditTracker.js +1 -1
- package/out/language-server/inline-completion/tracker/codeEditTracker.js.map +1 -1
- package/out/language-server/inline-completion/{codePercentage.d.ts → tracker/codePercentageTracker.d.ts} +1 -1
- package/out/language-server/inline-completion/{codePercentage.js → tracker/codePercentageTracker.js} +1 -1
- package/out/language-server/inline-completion/tracker/codePercentageTracker.js.map +1 -0
- package/out/language-server/inline-completion/{diffUtils.d.ts → utils/diffUtils.d.ts} +29 -12
- package/out/language-server/inline-completion/utils/diffUtils.js +407 -0
- package/out/language-server/inline-completion/utils/diffUtils.js.map +1 -0
- package/out/language-server/inline-completion/utils/mergeRightUtils.d.ts +9 -0
- package/out/language-server/inline-completion/utils/mergeRightUtils.js +67 -0
- package/out/language-server/inline-completion/utils/mergeRightUtils.js.map +1 -0
- package/out/language-server/inline-completion/utils/textDocumentUtils.d.ts +3 -0
- package/out/language-server/inline-completion/utils/textDocumentUtils.js +37 -0
- package/out/language-server/inline-completion/utils/textDocumentUtils.js.map +1 -0
- package/out/language-server/inline-completion/{trigger.d.ts → utils/triggerUtils.d.ts} +4 -4
- package/out/language-server/inline-completion/{trigger.js → utils/triggerUtils.js} +3 -3
- package/out/language-server/inline-completion/utils/triggerUtils.js.map +1 -0
- package/out/language-server/netTransform/artifactManager.d.ts +2 -2
- package/out/language-server/netTransform/artifactManager.js +6 -10
- package/out/language-server/netTransform/artifactManager.js.map +1 -1
- package/out/language-server/workspaceContext/workspaceFolderManager.js +3 -1
- package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.d.ts +1 -1
- package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.js +8 -2
- package/out/shared/amazonQServiceManager/AmazonQIAMServiceManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +1 -0
- package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
- package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.js +6 -0
- package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.js.map +1 -1
- package/out/shared/codeWhispererService.js +52 -20
- package/out/shared/codeWhispererService.js.map +1 -1
- package/out/shared/streamingClientService.d.ts +7 -1
- package/out/shared/streamingClientService.js +53 -15
- package/out/shared/streamingClientService.js.map +1 -1
- package/out/shared/telemetry/telemetryService.js.map +1 -1
- package/out/shared/telemetry/types.d.ts +8 -0
- package/out/shared/telemetry/types.js +1 -0
- package/out/shared/telemetry/types.js.map +1 -1
- package/out/shared/testUtils.d.ts +0 -3
- package/out/shared/testUtils.js +1 -22
- package/out/shared/testUtils.js.map +1 -1
- package/out/shared/utils.d.ts +10 -4
- package/out/shared/utils.js +20 -11
- package/out/shared/utils.js.map +1 -1
- package/package.json +4 -5
- package/out/language-server/inline-completion/codeDiffTracker.js.map +0 -1
- package/out/language-server/inline-completion/codePercentage.js.map +0 -1
- package/out/language-server/inline-completion/constants.js.map +0 -1
- package/out/language-server/inline-completion/diffUtils.js +0 -255
- package/out/language-server/inline-completion/diffUtils.js.map +0 -1
- package/out/language-server/inline-completion/editCompletionHandler.js.map +0 -1
- package/out/language-server/inline-completion/mergeRightUtils.d.ts +0 -25
- package/out/language-server/inline-completion/mergeRightUtils.js +0 -114
- package/out/language-server/inline-completion/mergeRightUtils.js.map +0 -1
- package/out/language-server/inline-completion/telemetry.js.map +0 -1
- package/out/language-server/inline-completion/trigger.js.map +0 -1
- /package/out/language-server/inline-completion/{constants.d.ts → contants/constants.d.ts} +0 -0
- /package/out/language-server/inline-completion/{constants.js → contants/constants.js} +0 -0
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*!
|
|
3
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.generateUnifiedDiffWithTimestamps = generateUnifiedDiffWithTimestamps;
|
|
8
|
+
exports.generateDiffContexts = generateDiffContexts;
|
|
9
|
+
exports.getAddedAndDeletedLines = getAddedAndDeletedLines;
|
|
10
|
+
exports.getCharacterDifferences = getCharacterDifferences;
|
|
11
|
+
exports.processEditSuggestion = processEditSuggestion;
|
|
12
|
+
exports.readUdiff = readUdiff;
|
|
13
|
+
exports.categorizeUnifieddiff = categorizeUnifieddiff;
|
|
14
|
+
exports.extractAdditions = extractAdditions;
|
|
15
|
+
exports.removeOverlapCodeFromSuggestion = removeOverlapCodeFromSuggestion;
|
|
16
|
+
exports.longestCommonPrefix = longestCommonPrefix;
|
|
17
|
+
const diff_1 = require("diff");
|
|
18
|
+
const supplementalContextUtil_1 = require("../../../shared/supplementalContextUtil/supplementalContextUtil");
|
|
19
|
+
const protocol_1 = require("@aws/language-server-runtimes/protocol");
|
|
20
|
+
const codeWhispererService_1 = require("../../../shared/codeWhispererService");
|
|
21
|
+
const mergeRightUtils_1 = require("./mergeRightUtils");
|
|
22
|
+
/**
|
|
23
|
+
* Generates a unified diff format between old and new file contents
|
|
24
|
+
*
|
|
25
|
+
* @param oldFilePath - Path to the old version of the file
|
|
26
|
+
* @param newFilePath - Path to the new version of the file
|
|
27
|
+
* @param oldContent - Content of the old version
|
|
28
|
+
* @param newContent - Content of the new version
|
|
29
|
+
* @param oldTimestamp - Timestamp of the old version
|
|
30
|
+
* @param newTimestamp - Timestamp of the new version
|
|
31
|
+
* @param contextSize - Number of context lines to include in the diff
|
|
32
|
+
* @returns Unified diff string
|
|
33
|
+
*/
|
|
34
|
+
function generateUnifiedDiffWithTimestamps(oldFilePath, newFilePath, oldContent, newContent, oldTimestamp, newTimestamp, contextSize = 3) {
|
|
35
|
+
const patchResult = (0, diff_1.createTwoFilesPatch)(oldFilePath, newFilePath, oldContent, newContent, String(oldTimestamp), String(newTimestamp), { context: contextSize });
|
|
36
|
+
// Remove unused headers
|
|
37
|
+
const lines = patchResult.split('\n');
|
|
38
|
+
if (lines.length >= 2 && lines[0].startsWith('Index:')) {
|
|
39
|
+
lines.splice(0, 2);
|
|
40
|
+
return lines.join('\n');
|
|
41
|
+
}
|
|
42
|
+
return patchResult;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Generates supplemental contexts from snapshot contents and current content
|
|
46
|
+
*
|
|
47
|
+
* @param filePath - Path to the file
|
|
48
|
+
* @param currentContent - Current content of the file
|
|
49
|
+
* @param snapshotContents - List of snapshot contents sorted by timestamp (oldest first)
|
|
50
|
+
* @param maxContexts - Maximum number of supplemental contexts to return
|
|
51
|
+
* @returns CodeWhispererSupplementalContext object containing diffs between snapshots and current content
|
|
52
|
+
*/
|
|
53
|
+
function generateDiffContexts(filePath, currentContent, snapshotContents, maxContexts) {
|
|
54
|
+
if (snapshotContents.length === 0) {
|
|
55
|
+
return {
|
|
56
|
+
isUtg: false,
|
|
57
|
+
isProcessTimeout: false,
|
|
58
|
+
supplementalContextItems: [],
|
|
59
|
+
contentsLength: 0,
|
|
60
|
+
latency: 0,
|
|
61
|
+
strategy: 'recentEdits',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const startTime = Date.now();
|
|
65
|
+
const supplementalContextItems = [];
|
|
66
|
+
const currentTimestamp = Date.now();
|
|
67
|
+
// Process snapshots from newest to oldest
|
|
68
|
+
for (let i = snapshotContents.length - 1; i >= 0; i--) {
|
|
69
|
+
const snapshot = snapshotContents[i];
|
|
70
|
+
try {
|
|
71
|
+
const unifiedDiff = generateUnifiedDiffWithTimestamps(snapshot.filePath, filePath, snapshot.content, currentContent, snapshot.timestamp, currentTimestamp);
|
|
72
|
+
// Only add non-empty diffs
|
|
73
|
+
if (unifiedDiff.trim().length > 0) {
|
|
74
|
+
supplementalContextItems.push({
|
|
75
|
+
filePath: snapshot.filePath,
|
|
76
|
+
content: unifiedDiff,
|
|
77
|
+
score: 1.0, // Default score for recent edits
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
// TODO: logging
|
|
83
|
+
// console.error(`Failed to generate diff: ${err}`)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const trimmedContextItems = (0, supplementalContextUtil_1.trimSupplementalContexts)(supplementalContextItems, maxContexts);
|
|
87
|
+
const contentsLength = trimmedContextItems.reduce((sum, ctx) => sum + ctx.content.length, 0);
|
|
88
|
+
const latency = Date.now() - startTime;
|
|
89
|
+
return {
|
|
90
|
+
isUtg: false,
|
|
91
|
+
isProcessTimeout: false,
|
|
92
|
+
supplementalContextItems: trimmedContextItems,
|
|
93
|
+
contentsLength,
|
|
94
|
+
latency,
|
|
95
|
+
strategy: 'recentEdits',
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function getAddedAndDeletedLines(unifiedDiff) {
|
|
99
|
+
const lines = unifiedDiff.split('\n');
|
|
100
|
+
const addedLines = lines.filter(line => line.startsWith('+') && !line.startsWith('+++')).map(line => line.slice(1));
|
|
101
|
+
const deletedLines = lines
|
|
102
|
+
.filter(line => line.startsWith('-') && !line.startsWith('---'))
|
|
103
|
+
.map(line => line.slice(1));
|
|
104
|
+
return {
|
|
105
|
+
addedLines,
|
|
106
|
+
deletedLines,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Find longest common subsequence length between two strings
|
|
111
|
+
*/
|
|
112
|
+
function lcsLength(str1, str2) {
|
|
113
|
+
const m = str1.length;
|
|
114
|
+
const n = str2.length;
|
|
115
|
+
const dp = Array(m + 1)
|
|
116
|
+
.fill(null)
|
|
117
|
+
.map(() => Array(n + 1).fill(0));
|
|
118
|
+
for (let i = 1; i <= m; i++) {
|
|
119
|
+
for (let j = 1; j <= n; j++) {
|
|
120
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
121
|
+
dp[i][j] = dp[i - 1][j - 1] + 1;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return dp;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Calculate character differences between added and deleted blocks
|
|
132
|
+
*/
|
|
133
|
+
function getCharacterDifferences(addedLines, deletedLines) {
|
|
134
|
+
const addedText = addedLines.join('\n');
|
|
135
|
+
const deletedText = deletedLines.join('\n');
|
|
136
|
+
if (addedText.length === 0) {
|
|
137
|
+
return { charactersAdded: 0, charactersRemoved: deletedText.length };
|
|
138
|
+
}
|
|
139
|
+
if (deletedText.length === 0) {
|
|
140
|
+
return { charactersAdded: addedText.length, charactersRemoved: 0 };
|
|
141
|
+
}
|
|
142
|
+
const lcsTable = lcsLength(deletedText, addedText);
|
|
143
|
+
const lcsLen = lcsTable[deletedText.length][addedText.length];
|
|
144
|
+
return {
|
|
145
|
+
charactersAdded: addedText.length - lcsLen,
|
|
146
|
+
charactersRemoved: deletedText.length - lcsLen,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
function processEditSuggestion(unifiedDiff, triggerPosition, document, rightContext) {
|
|
150
|
+
// Assume it's an edit if anything goes wrong, at the very least it will not be rendered incorrectly
|
|
151
|
+
let diffCategory = 'edit';
|
|
152
|
+
try {
|
|
153
|
+
diffCategory = categorizeUnifieddiff(unifiedDiff, triggerPosition.line);
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
// We dont have logger here....
|
|
157
|
+
diffCategory = 'edit';
|
|
158
|
+
}
|
|
159
|
+
if (diffCategory === 'addOnly') {
|
|
160
|
+
const preprocessAdd = extractAdditions(unifiedDiff);
|
|
161
|
+
const leftContextAtTriggerLine = document.getText(protocol_1.Range.create(protocol_1.Position.create(triggerPosition.line, 0), triggerPosition));
|
|
162
|
+
/**
|
|
163
|
+
* SHOULD NOT remove the entire overlapping string, the way inline suggestion prefix matching work depends on where it triggers
|
|
164
|
+
* For example (^ note where user triggers)
|
|
165
|
+
* console.lo
|
|
166
|
+
* ^
|
|
167
|
+
* if LSP returns `g('foo')` instead of `.log()` the suggestion will be discarded because prefix doesnt match
|
|
168
|
+
*/
|
|
169
|
+
const processedAdd = removeOverlapCodeFromSuggestion(leftContextAtTriggerLine, preprocessAdd);
|
|
170
|
+
const mergedWithRightContext = (0, mergeRightUtils_1.truncateOverlapWithRightContext)(rightContext, processedAdd);
|
|
171
|
+
return {
|
|
172
|
+
suggestionContent: mergedWithRightContext,
|
|
173
|
+
type: codeWhispererService_1.SuggestionType.COMPLETION,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return {
|
|
178
|
+
suggestionContent: unifiedDiff,
|
|
179
|
+
type: codeWhispererService_1.SuggestionType.EDIT,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// TODO: refine
|
|
184
|
+
function readUdiff(unifiedDiff) {
|
|
185
|
+
let hunk;
|
|
186
|
+
try {
|
|
187
|
+
const patches = (0, diff_1.parsePatch)(unifiedDiff);
|
|
188
|
+
if (patches.length !== 1) {
|
|
189
|
+
throw new Error(`Provided unified diff from has 0 or more than 1 patches`);
|
|
190
|
+
}
|
|
191
|
+
hunk = patches[0].hunks[0];
|
|
192
|
+
if (!hunk) {
|
|
193
|
+
throw new Error(`Null hunk`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
throw e;
|
|
198
|
+
}
|
|
199
|
+
// TODO: Should use hunk instead of parsing manually
|
|
200
|
+
const lines = unifiedDiff.split('\n');
|
|
201
|
+
const headerEndIndex = lines.findIndex(l => l.startsWith('@@'));
|
|
202
|
+
if (headerEndIndex === -1) {
|
|
203
|
+
throw new Error('not able to parse');
|
|
204
|
+
}
|
|
205
|
+
const relevantLines = lines.slice(headerEndIndex + 1);
|
|
206
|
+
if (relevantLines.length === 0) {
|
|
207
|
+
throw new Error('not able to parse');
|
|
208
|
+
}
|
|
209
|
+
const minusIndexes = [];
|
|
210
|
+
const plusIndexes = [];
|
|
211
|
+
for (let i = 0; i < relevantLines.length; i++) {
|
|
212
|
+
const l = relevantLines[i];
|
|
213
|
+
if (l.startsWith('-')) {
|
|
214
|
+
minusIndexes.push(i);
|
|
215
|
+
}
|
|
216
|
+
else if (l.startsWith('+')) {
|
|
217
|
+
plusIndexes.push(i);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
const firstMinusIndex = relevantLines.findIndex(s => s.startsWith('-'));
|
|
221
|
+
const firstPlusIndex = relevantLines.findIndex(s => s.startsWith('+'));
|
|
222
|
+
// TODO: Comment these out as they are used for a different version of addonly type determination logic in case the current implementation doesn't work.
|
|
223
|
+
// Could remove later if we are sure current imple works.
|
|
224
|
+
/**
|
|
225
|
+
* Concatenate all contiguous added lines (i.e., unbroken sequence of "+"s).
|
|
226
|
+
* Exclude all newlines when concatenating, so we get a single line representing the new text
|
|
227
|
+
*/
|
|
228
|
+
// let singleLine = ''
|
|
229
|
+
// let prev: number | undefined
|
|
230
|
+
// for (const idx of plusIndexes) {
|
|
231
|
+
// if (!prev || idx === prev + 1) {
|
|
232
|
+
// const removedPlus = relevantLines[idx].substring(1)
|
|
233
|
+
// const removedStartNewline = trimStartNewline(removedPlus)
|
|
234
|
+
// singleLine += removedStartNewline
|
|
235
|
+
// } else {
|
|
236
|
+
// break
|
|
237
|
+
// }
|
|
238
|
+
// }
|
|
239
|
+
return {
|
|
240
|
+
linesWithoutHeaders: relevantLines,
|
|
241
|
+
firstMinusIndex: firstMinusIndex,
|
|
242
|
+
firstPlusIndex: firstPlusIndex,
|
|
243
|
+
minusIndexes: minusIndexes,
|
|
244
|
+
plusIndexes: plusIndexes,
|
|
245
|
+
hunk: hunk,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
// Theoretically, we should always pass userTriggerAtLine, keeping it nullable for easier testing for now
|
|
249
|
+
function categorizeUnifieddiff(unifiedDiff, userTriggerAtLine) {
|
|
250
|
+
try {
|
|
251
|
+
const d = readUdiff(unifiedDiff);
|
|
252
|
+
const hunk = d.hunk;
|
|
253
|
+
const firstMinusIndex = d.firstMinusIndex;
|
|
254
|
+
const firstPlusIndex = d.firstPlusIndex;
|
|
255
|
+
const diffWithoutHeaders = d.linesWithoutHeaders;
|
|
256
|
+
// Shouldn't be the case but if there is no - nor +, assume it's an edit
|
|
257
|
+
if (firstMinusIndex === -1 && firstPlusIndex === -1) {
|
|
258
|
+
return 'edit';
|
|
259
|
+
}
|
|
260
|
+
// If first "EDIT" line is not where users trigger, it must be EDIT
|
|
261
|
+
// Note hunk.start is 1 based index
|
|
262
|
+
const firstLineEdited = hunk.oldStart - 1 + Math.min(...d.minusIndexes, ...d.plusIndexes);
|
|
263
|
+
if (userTriggerAtLine !== undefined && userTriggerAtLine !== firstLineEdited) {
|
|
264
|
+
return 'edit';
|
|
265
|
+
}
|
|
266
|
+
// Naive case, only +
|
|
267
|
+
if (firstMinusIndex === -1 && firstPlusIndex !== -1) {
|
|
268
|
+
return 'addOnly';
|
|
269
|
+
}
|
|
270
|
+
// Naive case, only -
|
|
271
|
+
if (firstMinusIndex !== -1 && firstPlusIndex === -1) {
|
|
272
|
+
return 'deleteOnly';
|
|
273
|
+
}
|
|
274
|
+
const minusIndexes = d.minusIndexes;
|
|
275
|
+
const plusIndexes = d.plusIndexes;
|
|
276
|
+
// If there are multiple (> 1) non empty '-' lines, it must be edit
|
|
277
|
+
const c = minusIndexes.reduce((acc, cur) => {
|
|
278
|
+
if (diffWithoutHeaders[cur].trim().length > 0) {
|
|
279
|
+
return acc++;
|
|
280
|
+
}
|
|
281
|
+
return acc;
|
|
282
|
+
}, 0);
|
|
283
|
+
if (c > 1) {
|
|
284
|
+
return 'edit';
|
|
285
|
+
}
|
|
286
|
+
// If last '-' line is followed by '+' block, it could be addonly
|
|
287
|
+
if (plusIndexes[0] === minusIndexes[minusIndexes.length - 1] + 1) {
|
|
288
|
+
/**
|
|
289
|
+
-------------------------------
|
|
290
|
+
- return
|
|
291
|
+
+ return a - b;
|
|
292
|
+
-------------------------------
|
|
293
|
+
commonPrefix = "return "
|
|
294
|
+
minusLinesDelta = ""
|
|
295
|
+
|
|
296
|
+
--------------------------------
|
|
297
|
+
-\t\t\t
|
|
298
|
+
+\treturn a - b;
|
|
299
|
+
--------------------------------
|
|
300
|
+
commonPrefix = "\t"
|
|
301
|
+
minusLinesDelta = "\t\t"
|
|
302
|
+
|
|
303
|
+
*
|
|
304
|
+
*
|
|
305
|
+
*
|
|
306
|
+
*/
|
|
307
|
+
const minusLine = diffWithoutHeaders[minusIndexes[minusIndexes.length - 1]].substring(1);
|
|
308
|
+
const pluscode = extractAdditions(unifiedDiff);
|
|
309
|
+
// If minusLine subtract the longest common substring of minusLine and plugcode and it's empty string, it's addonly
|
|
310
|
+
const commonPrefix = longestCommonPrefix(minusLine, pluscode);
|
|
311
|
+
const minusLinesDelta = minusLine.substring(commonPrefix.length);
|
|
312
|
+
if (minusLinesDelta.trim().length === 0) {
|
|
313
|
+
return 'addOnly';
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
-------------------------------
|
|
317
|
+
- return a * b;
|
|
318
|
+
+ return a * b * c;
|
|
319
|
+
-------------------------------
|
|
320
|
+
commonPrefix = "return a * b"
|
|
321
|
+
minusLinesDelta = ";"
|
|
322
|
+
pluscodeDelta = " * c;"
|
|
323
|
+
*
|
|
324
|
+
*/
|
|
325
|
+
const pluscodeDelta = pluscode.substring(commonPrefix.length);
|
|
326
|
+
if (pluscodeDelta.endsWith(minusLinesDelta)) {
|
|
327
|
+
return 'addOnly';
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return 'edit';
|
|
331
|
+
}
|
|
332
|
+
catch (e) {
|
|
333
|
+
return 'edit';
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// TODO: current implementation here assumes service only return 1 chunk of edits (consecutive lines) and hacky
|
|
337
|
+
function extractAdditions(unifiedDiff) {
|
|
338
|
+
const lines = unifiedDiff.split('\n');
|
|
339
|
+
let completionSuggestion = '';
|
|
340
|
+
let isInAdditionBlock = false;
|
|
341
|
+
for (const line of lines) {
|
|
342
|
+
// Skip diff headers (files)
|
|
343
|
+
if (line.startsWith('+++') || line.startsWith('---')) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
// Skip hunk headers (@@ lines)
|
|
347
|
+
if (line.startsWith('@@')) {
|
|
348
|
+
continue;
|
|
349
|
+
}
|
|
350
|
+
// Handle additions
|
|
351
|
+
if (line.startsWith('+')) {
|
|
352
|
+
completionSuggestion += line.substring(1) + '\n';
|
|
353
|
+
isInAdditionBlock = true;
|
|
354
|
+
}
|
|
355
|
+
else if (isInAdditionBlock && !line.startsWith('+')) {
|
|
356
|
+
// End of addition block
|
|
357
|
+
isInAdditionBlock = false;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
// Remove trailing newline
|
|
361
|
+
return completionSuggestion.trimEnd();
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
*
|
|
365
|
+
* example
|
|
366
|
+
* code = 'return'
|
|
367
|
+
* suggestion = 'return a + b;'
|
|
368
|
+
* output = ' a + b;'
|
|
369
|
+
*/
|
|
370
|
+
function removeOverlapCodeFromSuggestion(code, suggestion) {
|
|
371
|
+
const suggestionLines = suggestion.split('\n');
|
|
372
|
+
const firstLineSuggestion = suggestionLines[0];
|
|
373
|
+
// Find the common string in code surfix and prefix of suggestion
|
|
374
|
+
const s = (0, mergeRightUtils_1.getPrefixSuffixOverlap)(code, firstLineSuggestion);
|
|
375
|
+
// Remove overlap s from suggestion
|
|
376
|
+
return suggestion.substring(s.length);
|
|
377
|
+
}
|
|
378
|
+
function longestCommonPrefix(str1, str2) {
|
|
379
|
+
const minLength = Math.min(str1.length, str2.length);
|
|
380
|
+
let prefix = '';
|
|
381
|
+
for (let i = 0; i < minLength; i++) {
|
|
382
|
+
if (str1[i] === str2[i]) {
|
|
383
|
+
prefix += str1[i];
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
break;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
return prefix;
|
|
390
|
+
}
|
|
391
|
+
// TODO: They are used for a different version of addonly type determination logic in case the current implementation doesn't work.
|
|
392
|
+
// Could remove later if we are sure current impl works.
|
|
393
|
+
// function trimStartNewline(str: string): string {
|
|
394
|
+
// return str.replace(/^[\n\r]+/, '')
|
|
395
|
+
// }
|
|
396
|
+
// function hasOneContiguousInsert(original: string, changed: string) {
|
|
397
|
+
// const delta = changed.length - original.length
|
|
398
|
+
// if (delta <= 0) {
|
|
399
|
+
// // Changed string must be longer
|
|
400
|
+
// return false
|
|
401
|
+
// }
|
|
402
|
+
// let p, s
|
|
403
|
+
// for (p = 0; original[p] === changed[p] && p < original.length; ++p);
|
|
404
|
+
// for (s = original.length - 1; original[s] === changed[s + delta] && s >= 0; --s);
|
|
405
|
+
// return p === s + 1
|
|
406
|
+
// }
|
|
407
|
+
//# sourceMappingURL=diffUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffUtils.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/utils/diffUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { InlineCompletionItemWithReferences, Range } from '@aws/language-server-runtimes/server-interface';
|
|
2
|
+
import { Suggestion } from '../../../shared/codeWhispererService';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the longest overlap between the Suffix of firstString and Prefix of second string
|
|
5
|
+
* getPrefixSuffixOverlap("adwg31", "31ggrs") = "31"
|
|
6
|
+
*/
|
|
7
|
+
export declare function getPrefixSuffixOverlap(firstString: string, secondString: string): string;
|
|
8
|
+
export declare function truncateOverlapWithRightContext(rightFileContent: string, suggestion: string): string;
|
|
9
|
+
export declare const mergeSuggestionsWithRightContext: (rightFileContext: string, suggestions: Suggestion[], includeImportsWithSuggestions: boolean, range?: Range) => InlineCompletionItemWithReferences[];
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeSuggestionsWithRightContext = void 0;
|
|
4
|
+
exports.getPrefixSuffixOverlap = getPrefixSuffixOverlap;
|
|
5
|
+
exports.truncateOverlapWithRightContext = truncateOverlapWithRightContext;
|
|
6
|
+
/**
|
|
7
|
+
* Returns the longest overlap between the Suffix of firstString and Prefix of second string
|
|
8
|
+
* getPrefixSuffixOverlap("adwg31", "31ggrs") = "31"
|
|
9
|
+
*/
|
|
10
|
+
function getPrefixSuffixOverlap(firstString, secondString) {
|
|
11
|
+
let i = Math.min(firstString.length, secondString.length);
|
|
12
|
+
while (i > 0) {
|
|
13
|
+
if (secondString.slice(0, i) === firstString.slice(-i)) {
|
|
14
|
+
break;
|
|
15
|
+
}
|
|
16
|
+
i--;
|
|
17
|
+
}
|
|
18
|
+
return secondString.slice(0, i);
|
|
19
|
+
}
|
|
20
|
+
function truncateOverlapWithRightContext(rightFileContent, suggestion) {
|
|
21
|
+
const trimmedSuggestion = suggestion.trim();
|
|
22
|
+
// limit of 5000 for right context matching
|
|
23
|
+
const rightContext = rightFileContent
|
|
24
|
+
.substring(0, 5000)
|
|
25
|
+
.replaceAll('\r\n', '\n')
|
|
26
|
+
.replace(/^[^\S\n]+/, ''); // remove leading tabs and whitespaces
|
|
27
|
+
const overlap = getPrefixSuffixOverlap(trimmedSuggestion, rightContext);
|
|
28
|
+
const overlapIndex = suggestion.lastIndexOf(overlap);
|
|
29
|
+
if (overlapIndex >= 0) {
|
|
30
|
+
const truncated = suggestion.slice(0, overlapIndex);
|
|
31
|
+
return truncated.trim().length ? truncated : '';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return suggestion;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const mergeSuggestionsWithRightContext = (rightFileContext, suggestions, includeImportsWithSuggestions, range) => {
|
|
38
|
+
return suggestions.map(suggestion => {
|
|
39
|
+
const insertText = truncateOverlapWithRightContext(rightFileContext, suggestion.content);
|
|
40
|
+
let references = suggestion.references
|
|
41
|
+
?.filter(ref => !(ref.recommendationContentSpan?.start && insertText.length <= ref.recommendationContentSpan.start) && insertText.length)
|
|
42
|
+
.map(r => {
|
|
43
|
+
return {
|
|
44
|
+
licenseName: r.licenseName,
|
|
45
|
+
referenceUrl: r.url,
|
|
46
|
+
referenceName: r.repository,
|
|
47
|
+
position: r.recommendationContentSpan && {
|
|
48
|
+
startCharacter: r.recommendationContentSpan.start,
|
|
49
|
+
endCharacter: r.recommendationContentSpan.end
|
|
50
|
+
? Math.min(r.recommendationContentSpan.end, insertText.length - 1)
|
|
51
|
+
: r.recommendationContentSpan.end,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
return {
|
|
56
|
+
itemId: suggestion.itemId,
|
|
57
|
+
insertText: insertText,
|
|
58
|
+
range,
|
|
59
|
+
references: references?.length ? references : undefined,
|
|
60
|
+
mostRelevantMissingImports: includeImportsWithSuggestions
|
|
61
|
+
? suggestion.mostRelevantMissingImports
|
|
62
|
+
: undefined,
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
exports.mergeSuggestionsWithRightContext = mergeSuggestionsWithRightContext;
|
|
67
|
+
//# sourceMappingURL=mergeRightUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeRightUtils.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/utils/mergeRightUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { TextDocument } from '@aws/language-server-runtimes/server-interface';
|
|
2
|
+
export declare const getLanguageIdFromUri: (uri: string, logging?: any) => string;
|
|
3
|
+
export declare const getTextDocument: (uri: string, workspace: any, logging: any) => Promise<TextDocument | undefined>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTextDocument = exports.getLanguageIdFromUri = void 0;
|
|
4
|
+
const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
|
|
5
|
+
const constants_1 = require("../contants/constants");
|
|
6
|
+
const vscode_uri_1 = require("vscode-uri");
|
|
7
|
+
const getLanguageIdFromUri = (uri, logging) => {
|
|
8
|
+
try {
|
|
9
|
+
if (uri.startsWith('vscode-notebook-cell:')) {
|
|
10
|
+
// use python for now as lsp does not support JL cell language detection
|
|
11
|
+
return 'python';
|
|
12
|
+
}
|
|
13
|
+
const extension = uri.split('.').pop()?.toLowerCase();
|
|
14
|
+
return constants_1.ABAP_EXTENSIONS.has(extension || '') ? 'abap' : '';
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
logging?.log(`Error parsing URI to determine language: ${uri}: ${err}`);
|
|
18
|
+
return '';
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.getLanguageIdFromUri = getLanguageIdFromUri;
|
|
22
|
+
const getTextDocument = async (uri, workspace, logging) => {
|
|
23
|
+
let textDocument = await workspace.getTextDocument(uri);
|
|
24
|
+
if (!textDocument) {
|
|
25
|
+
try {
|
|
26
|
+
const content = await workspace.fs.readFile(vscode_uri_1.URI.parse(uri).fsPath);
|
|
27
|
+
const languageId = (0, exports.getLanguageIdFromUri)(uri);
|
|
28
|
+
textDocument = server_interface_1.TextDocument.create(uri, languageId, 0, content);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
logging.log(`Unable to load from ${uri}: ${err}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return textDocument;
|
|
35
|
+
};
|
|
36
|
+
exports.getTextDocument = getTextDocument;
|
|
37
|
+
//# sourceMappingURL=textDocumentUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textDocumentUtils.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/utils/textDocumentUtils.ts"],"names":[],"mappings":";;;AAAA,qFAA6E;AAC7E,qDAAuD;AACvD,2CAAgC;AAEzB,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,OAAa,EAAU,EAAE;IACvE,IAAI,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC1C,wEAAwE;YACxE,OAAO,QAAQ,CAAA;QACnB,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAA;QACrD,OAAO,2BAAe,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,OAAO,EAAE,GAAG,CAAC,4CAA4C,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACvE,OAAO,EAAE,CAAA;IACb,CAAC;AACL,CAAC,CAAA;AAZY,QAAA,oBAAoB,wBAYhC;AAEM,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAE,SAAc,EAAE,OAAY,EAAqC,EAAE;IAClH,IAAI,YAAY,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,gBAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;YAClE,MAAM,UAAU,GAAG,IAAA,4BAAoB,EAAC,GAAG,CAAC,CAAA;YAC5C,YAAY,GAAG,+BAAY,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,KAAK,GAAG,EAAE,CAAC,CAAA;QACrD,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAA;AACvB,CAAC,CAAA;AAZY,QAAA,eAAe,mBAY3B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { SessionManager } from '
|
|
1
|
+
import { SessionManager } from '../session/sessionManager';
|
|
2
2
|
import { InlineCompletionWithReferencesParams } from '@aws/language-server-runtimes/protocol';
|
|
3
|
-
import { CursorTracker } from '
|
|
4
|
-
import { RecentEditTracker } from '
|
|
5
|
-
import { CodeWhispererServiceBase, ClientFileContext } from '
|
|
3
|
+
import { CursorTracker } from '../tracker/cursorTracker';
|
|
4
|
+
import { RecentEditTracker } from '../tracker/codeEditTracker';
|
|
5
|
+
import { CodeWhispererServiceBase, ClientFileContext } from '../../../shared/codeWhispererService';
|
|
6
6
|
export declare class NepTrigger {
|
|
7
7
|
}
|
|
8
8
|
export declare function shouldTriggerEdits(service: CodeWhispererServiceBase, fileContext: ClientFileContext, inlineParams: InlineCompletionWithReferencesParams, cursorTracker: CursorTracker, recentEditsTracker: RecentEditTracker, sessionManager: SessionManager, editsEnabled: boolean): NepTrigger | undefined;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NepTrigger = void 0;
|
|
4
4
|
exports.shouldTriggerEdits = shouldTriggerEdits;
|
|
5
|
-
const editPredictionAutoTrigger_1 = require("
|
|
6
|
-
const codeWhispererService_1 = require("
|
|
5
|
+
const editPredictionAutoTrigger_1 = require("../auto-trigger/editPredictionAutoTrigger");
|
|
6
|
+
const codeWhispererService_1 = require("../../../shared/codeWhispererService");
|
|
7
7
|
class NepTrigger {
|
|
8
8
|
}
|
|
9
9
|
exports.NepTrigger = NepTrigger;
|
|
@@ -39,4 +39,4 @@ function shouldTriggerEdits(service, fileContext, inlineParams, cursorTracker, r
|
|
|
39
39
|
return undefined;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=triggerUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triggerUtils.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/utils/triggerUtils.ts"],"names":[],"mappings":";;;AAaA,gDA2CC;AAtDD,yFAAqF;AAGrF,+EAI6C;AAE7C,MAAa,UAAU;CAAG;AAA1B,gCAA0B;AAE1B,SAAgB,kBAAkB,CAC9B,OAAiC,EACjC,WAA8B,EAC9B,YAAkD,EAClD,aAA4B,EAC5B,kBAAqC,EACrC,cAA8B,EAC9B,YAAqB;IAErB,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,SAAS,CAAA;IACpB,CAAC;IACD,0IAA0I;IAC1I,IAAI,CAAC,CAAC,OAAO,YAAY,gDAAyB,CAAC,EAAE,CAAC;QAClD,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,MAAM,oBAAoB,GAAG,YAAY,CAAC,oBAAoB,CAAA;IAC9D,MAAM,mBAAmB,GACrB,oBAAoB,EAAE,cAAc;QACpC,oBAAoB,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC9C,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAA;IAE7D,wFAAwF;IACxF,MAAM,iBAAiB,GAAG,mBAAmB;QACzC,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7C,CAAC,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAEvD,MAAM,gBAAgB,GAAG,cAAc,CAAC,kBAAkB,EAAE,EAAE,gCAAgC,EAAE,CAAA;IAChG,MAAM,GAAG,GAAG,IAAA,qDAAyB,EAAC;QAClC,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE,YAAY,CAAC,QAAQ,CAAC,IAAI;QACnC,IAAI,EAAE,iBAAiB;QACvB,gBAAgB,EAAE,gBAAgB,IAAI,EAAE;QACxC,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,kBAAkB;KAClC,CAAC,CAAA;IAEF,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACpB,OAAO,IAAI,UAAU,EAAE,CAAA;IAC3B,CAAC;SAAM,CAAC;QACJ,OAAO,SAAS,CAAA;IACpB,CAAC;AACL,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logging, Workspace } from '@aws/language-server-runtimes/server-interface';
|
|
2
|
-
import {
|
|
2
|
+
import { References, RequirementJson, StartTransformRequest, TransformationPreferences } from './models';
|
|
3
3
|
export declare class ArtifactManager {
|
|
4
4
|
private workspace;
|
|
5
5
|
private logging;
|
|
@@ -14,7 +14,7 @@ export declare class ArtifactManager {
|
|
|
14
14
|
copySolutionConfigFiles(request: StartTransformRequest): Promise<void>;
|
|
15
15
|
copySourceFile(solutionRootPath: string, filePath: string): Promise<void>;
|
|
16
16
|
createRequirementJsonContent(request: StartTransformRequest): Promise<RequirementJson>;
|
|
17
|
-
processPrivatePackages(request: StartTransformRequest,
|
|
17
|
+
processPrivatePackages(request: StartTransformRequest, artifactReference: References): Promise<void>;
|
|
18
18
|
zipArtifact(): Promise<string>;
|
|
19
19
|
static getSha256Async(fileName: string): Promise<string>;
|
|
20
20
|
getRequirementJsonPath(): string;
|