@aws/lsp-codewhisperer 0.0.86 → 0.0.88
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 +23 -0
- package/out/language-server/agenticChat/agenticChatController.js +2 -0
- package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
- package/out/language-server/agenticChat/context/contextCommandsProvider.d.ts +6 -0
- package/out/language-server/agenticChat/context/contextCommandsProvider.js +24 -0
- package/out/language-server/agenticChat/context/contextCommandsProvider.js.map +1 -1
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +2 -2
- package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.d.ts +2 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +8 -3
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.d.ts +4 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js +4 -2
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js.map +1 -1
- package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +1 -0
- package/out/language-server/inline-completion/auto-trigger/autoTrigger.js +2 -2
- package/out/language-server/inline-completion/auto-trigger/autoTrigger.js.map +1 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.d.ts +44 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js +335 -1
- package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js.map +1 -1
- package/out/language-server/inline-completion/handler/editCompletionHandler.js +46 -56
- package/out/language-server/inline-completion/handler/editCompletionHandler.js.map +1 -1
- package/out/language-server/inline-completion/handler/inlineCompletionHandler.js +1 -1
- package/out/language-server/inline-completion/handler/inlineCompletionHandler.js.map +1 -1
- package/out/language-server/inline-completion/session/sessionManager.d.ts +5 -0
- package/out/language-server/inline-completion/session/sessionManager.js +16 -0
- package/out/language-server/inline-completion/session/sessionManager.js.map +1 -1
- package/out/language-server/inline-completion/utils/triggerUtils.d.ts +11 -3
- package/out/language-server/inline-completion/utils/triggerUtils.js +58 -0
- package/out/language-server/inline-completion/utils/triggerUtils.js.map +1 -1
- package/out/shared/codeWhispererService.d.ts +16 -7
- package/out/shared/codeWhispererService.js +51 -23
- package/out/shared/codeWhispererService.js.map +1 -1
- package/out/shared/constants.js +3 -0
- package/out/shared/constants.js.map +1 -1
- package/out/shared/localProjectContextController.d.ts +1 -0
- package/out/shared/localProjectContextController.js +4 -0
- package/out/shared/localProjectContextController.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoTrigger.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/auto-trigger/autoTrigger.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"autoTrigger.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/auto-trigger/autoTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { FileContext } from '../../../shared/codeWhispererService';
|
|
5
|
+
import { ClientFileContextClss, FileContext } from '../../../shared/codeWhispererService';
|
|
6
6
|
import { CursorTracker } from '../tracker/cursorTracker';
|
|
7
7
|
import { RecentEditTracker } from '../tracker/codeEditTracker';
|
|
8
|
+
import { CodeWhispererSupplementalContext } from '../../../shared/models/model';
|
|
9
|
+
import { UserTriggerDecision } from '../session/sessionManager';
|
|
10
|
+
import { Logging } from '@aws/language-server-runtimes/server-interface';
|
|
8
11
|
/**
|
|
9
12
|
* Parameters for the edit prediction auto-trigger
|
|
10
13
|
*/
|
|
@@ -26,3 +29,43 @@ export interface EditPredictionAutoTriggerParams {
|
|
|
26
29
|
export declare const editPredictionAutoTrigger: ({ fileContext, lineNum, char, previousDecision, cursorHistory, recentEdits, }: EditPredictionAutoTriggerParams) => {
|
|
27
30
|
shouldTrigger: boolean;
|
|
28
31
|
};
|
|
32
|
+
type EditAutoTriggerInput = {
|
|
33
|
+
fileContext: ClientFileContextClss;
|
|
34
|
+
triggerChar: string;
|
|
35
|
+
recentEdits: CodeWhispererSupplementalContext;
|
|
36
|
+
recentDecisions: UserTriggerDecision[];
|
|
37
|
+
};
|
|
38
|
+
type EditClassifierFeatures = {
|
|
39
|
+
lastCharacter: string;
|
|
40
|
+
lastLineLength: number;
|
|
41
|
+
leftContextLineCount: number;
|
|
42
|
+
rightContextLineCount: number;
|
|
43
|
+
normalizedEditHistory: EditHistoryFeature | undefined;
|
|
44
|
+
language: string;
|
|
45
|
+
keyword: string;
|
|
46
|
+
userAR: number;
|
|
47
|
+
};
|
|
48
|
+
type EditHistoryFeature = {
|
|
49
|
+
changedCharacters: number;
|
|
50
|
+
addedLines: number;
|
|
51
|
+
deletedLines: number;
|
|
52
|
+
};
|
|
53
|
+
export declare class EditClassifier {
|
|
54
|
+
readonly logging: Logging;
|
|
55
|
+
static THRESHOLD: number;
|
|
56
|
+
static INTERCEPT: number;
|
|
57
|
+
private _score;
|
|
58
|
+
private features;
|
|
59
|
+
constructor(params: EditAutoTriggerInput, logging: Logging);
|
|
60
|
+
shouldTriggerEdits(): {
|
|
61
|
+
shouldTrigger: boolean;
|
|
62
|
+
threshold: number;
|
|
63
|
+
score: number;
|
|
64
|
+
};
|
|
65
|
+
score(): number;
|
|
66
|
+
prepareFeatures(params: EditAutoTriggerInput): EditClassifierFeatures;
|
|
67
|
+
static processEditHistory(udiff: string): EditHistoryFeature;
|
|
68
|
+
static normalizedRecentEdit(edit: EditHistoryFeature): EditHistoryFeature;
|
|
69
|
+
static editDistance(s1: string, s2: string): number;
|
|
70
|
+
}
|
|
71
|
+
export {};
|
|
@@ -4,8 +4,13 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.editPredictionAutoTrigger = void 0;
|
|
7
|
+
exports.EditClassifier = exports.editPredictionAutoTrigger = void 0;
|
|
8
8
|
const editPredictionConfig_1 = require("./editPredictionConfig");
|
|
9
|
+
const triggerUtils_1 = require("../utils/triggerUtils");
|
|
10
|
+
// The sigmoid function to clamp the auto-trigger result to the (0, 1) range
|
|
11
|
+
const sigmoid = (x) => {
|
|
12
|
+
return 1 / (1 + Math.exp(-x));
|
|
13
|
+
};
|
|
9
14
|
/**
|
|
10
15
|
* Auto-trigger for edit predictions if users' editor state meets ALL the following conditions
|
|
11
16
|
* (condition 1) there are recent edits
|
|
@@ -31,4 +36,333 @@ const editPredictionAutoTrigger = ({ fileContext, lineNum, char, previousDecisio
|
|
|
31
36
|
return { shouldTrigger };
|
|
32
37
|
};
|
|
33
38
|
exports.editPredictionAutoTrigger = editPredictionAutoTrigger;
|
|
39
|
+
const keyWordCoefficients = {
|
|
40
|
+
get: 1.171,
|
|
41
|
+
const: -0.7697,
|
|
42
|
+
try: 0.7182,
|
|
43
|
+
number: 0.6706,
|
|
44
|
+
this: 0.6271,
|
|
45
|
+
return: -0.3991,
|
|
46
|
+
from: -0.3515,
|
|
47
|
+
None: -0.3409,
|
|
48
|
+
True: -0.3653,
|
|
49
|
+
true: -0.2502,
|
|
50
|
+
async: -0.3212,
|
|
51
|
+
false: 0.3478,
|
|
52
|
+
else: 0.3154,
|
|
53
|
+
type: -0.2662,
|
|
54
|
+
null: -0.1576,
|
|
55
|
+
if: -0.1276,
|
|
56
|
+
in: -0.0905,
|
|
57
|
+
void: 0.1712,
|
|
58
|
+
any: 0.1663,
|
|
59
|
+
as: 0.139,
|
|
60
|
+
import: 0.1424,
|
|
61
|
+
for: 0.0252,
|
|
62
|
+
is: 0.1023,
|
|
63
|
+
string: 0.0691,
|
|
64
|
+
};
|
|
65
|
+
const lastCharCoefficients = {
|
|
66
|
+
// alphabet
|
|
67
|
+
a: 0.0773,
|
|
68
|
+
c: 0.1191,
|
|
69
|
+
d: -0.0938,
|
|
70
|
+
e: -0.1517,
|
|
71
|
+
f: 0.4246,
|
|
72
|
+
i: 0.154,
|
|
73
|
+
l: 0.2188,
|
|
74
|
+
m: -0.3026,
|
|
75
|
+
n: -0.0324,
|
|
76
|
+
o: 0.196,
|
|
77
|
+
p: -0.2283,
|
|
78
|
+
Q: -0.0205,
|
|
79
|
+
r: 0.1418,
|
|
80
|
+
s: 0.0387,
|
|
81
|
+
S: 0.3369,
|
|
82
|
+
t: 0.1863,
|
|
83
|
+
u: 0.3599,
|
|
84
|
+
y: 0.0456,
|
|
85
|
+
// numbers
|
|
86
|
+
'0': 0.0415,
|
|
87
|
+
'1': -0.1826,
|
|
88
|
+
'2': -0.1085,
|
|
89
|
+
// special chars
|
|
90
|
+
'(': 0.0539,
|
|
91
|
+
')': 0.0996,
|
|
92
|
+
'{': 0.2644,
|
|
93
|
+
'}': 0.1122,
|
|
94
|
+
';': 0.2225,
|
|
95
|
+
'/': -0.0745,
|
|
96
|
+
'>': -0.0378,
|
|
97
|
+
'.': 0.0244,
|
|
98
|
+
',': -0.0274,
|
|
99
|
+
'\n': 0.1023,
|
|
100
|
+
' ': -0.066,
|
|
101
|
+
_: 0.0781,
|
|
102
|
+
"'": -0.036,
|
|
103
|
+
'"': 0.0629,
|
|
104
|
+
};
|
|
105
|
+
const languageCoefficients = {
|
|
106
|
+
c: 0.1013,
|
|
107
|
+
cpp: -0.1371,
|
|
108
|
+
sql: -0.1509,
|
|
109
|
+
java: 0.0564,
|
|
110
|
+
javascript: 0.1183,
|
|
111
|
+
json: 0.0811,
|
|
112
|
+
kotlin: -0.3022,
|
|
113
|
+
python: 0.0914,
|
|
114
|
+
rust: -0.1024,
|
|
115
|
+
scala: 0.1648,
|
|
116
|
+
shell: 0.1292,
|
|
117
|
+
tf: -0.3823,
|
|
118
|
+
typescript: 0.0928,
|
|
119
|
+
yaml: -0.2578,
|
|
120
|
+
};
|
|
121
|
+
const leftContextLineCountCoeffecients = {
|
|
122
|
+
lte25: -0.0417,
|
|
123
|
+
};
|
|
124
|
+
// No rightContextLineCountCoefficients, leave it 0 for now
|
|
125
|
+
const rightContextLineCountCoefficients = {
|
|
126
|
+
lte3: 0,
|
|
127
|
+
gte_4_lte6: 0,
|
|
128
|
+
gte7: 0,
|
|
129
|
+
};
|
|
130
|
+
const editHistoryCoefficients = {
|
|
131
|
+
changedCharsNorm: 0.0194,
|
|
132
|
+
linesDeletedNorm: -0.084,
|
|
133
|
+
linesAddedNorm: 0.0594,
|
|
134
|
+
};
|
|
135
|
+
const lastLineLengthCoefficients = {
|
|
136
|
+
lte4: 0.0293,
|
|
137
|
+
gte_5_lte12: -0.0012,
|
|
138
|
+
};
|
|
139
|
+
const arCoefficients = {
|
|
140
|
+
previous5: 0.4723,
|
|
141
|
+
};
|
|
142
|
+
class EditClassifier {
|
|
143
|
+
logging;
|
|
144
|
+
static THRESHOLD = 0.53;
|
|
145
|
+
static INTERCEPT = -0.2782;
|
|
146
|
+
_score;
|
|
147
|
+
features;
|
|
148
|
+
constructor(params, logging) {
|
|
149
|
+
this.logging = logging;
|
|
150
|
+
this.features = this.prepareFeatures(params);
|
|
151
|
+
}
|
|
152
|
+
shouldTriggerEdits() {
|
|
153
|
+
const s = this.score();
|
|
154
|
+
return {
|
|
155
|
+
score: s,
|
|
156
|
+
threshold: EditClassifier.THRESHOLD,
|
|
157
|
+
shouldTrigger: s > EditClassifier.THRESHOLD,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
score() {
|
|
161
|
+
if (this._score !== undefined) {
|
|
162
|
+
return this._score;
|
|
163
|
+
}
|
|
164
|
+
// 1. Last Character
|
|
165
|
+
const lastChar = this.features.lastCharacter;
|
|
166
|
+
const myLastCharCoef = lastCharCoefficients[lastChar] ?? 0;
|
|
167
|
+
// 2. Last Line Length
|
|
168
|
+
const lastLineLength = this.features.lastLineLength;
|
|
169
|
+
let myLastLineLengthCoef = 0;
|
|
170
|
+
if (lastLineLength <= 4) {
|
|
171
|
+
myLastLineLengthCoef = lastLineLengthCoefficients.lte4;
|
|
172
|
+
}
|
|
173
|
+
else if (lastLineLength >= 5 && lastLineLength <= 12) {
|
|
174
|
+
myLastLineLengthCoef = lastLineLengthCoefficients.gte_5_lte12;
|
|
175
|
+
}
|
|
176
|
+
// 3. Left Context Line Count
|
|
177
|
+
const leftContextLineCount = this.features.leftContextLineCount;
|
|
178
|
+
const myLeftContextLineCountCoef = leftContextLineCount <= 25 ? leftContextLineCountCoeffecients.lte25 : 0;
|
|
179
|
+
// 4. Right Context Line Count
|
|
180
|
+
const rightContextLineCount = this.features.rightContextLineCount;
|
|
181
|
+
let myRightContextLineCountCoef = 0;
|
|
182
|
+
if (rightContextLineCount <= 3) {
|
|
183
|
+
myRightContextLineCountCoef = rightContextLineCountCoefficients.lte3;
|
|
184
|
+
}
|
|
185
|
+
else if (rightContextLineCount >= 4 && rightContextLineCount <= 6) {
|
|
186
|
+
myRightContextLineCountCoef = rightContextLineCountCoefficients.gte_4_lte6;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
myRightContextLineCountCoef = rightContextLineCountCoefficients.gte7;
|
|
190
|
+
}
|
|
191
|
+
// 5. Edit History (only using oldest)
|
|
192
|
+
const editH = this.features.normalizedEditHistory;
|
|
193
|
+
const myAdded = (editH?.addedLines ?? 0) * editHistoryCoefficients.linesAddedNorm;
|
|
194
|
+
const myDeleted = (editH?.deletedLines ?? 0) * editHistoryCoefficients.linesDeletedNorm;
|
|
195
|
+
const myChanged = (editH?.changedCharacters ?? 0) * editHistoryCoefficients.changedCharsNorm;
|
|
196
|
+
// 6. Language
|
|
197
|
+
const lang = this.features.language;
|
|
198
|
+
const myLangCoef = languageCoefficients[lang] ?? 0;
|
|
199
|
+
// 7. Keyword
|
|
200
|
+
const kw = this.features.keyword;
|
|
201
|
+
const myKeywordCoef = keyWordCoefficients[kw] ?? 0;
|
|
202
|
+
// 8. AR
|
|
203
|
+
const myArCoef = arCoefficients.previous5 * this.features.userAR;
|
|
204
|
+
// Linear combination result
|
|
205
|
+
const logit = myLastCharCoef +
|
|
206
|
+
myLastLineLengthCoef +
|
|
207
|
+
myLeftContextLineCountCoef +
|
|
208
|
+
myRightContextLineCountCoef +
|
|
209
|
+
myAdded +
|
|
210
|
+
myDeleted +
|
|
211
|
+
myChanged +
|
|
212
|
+
myLangCoef +
|
|
213
|
+
myKeywordCoef +
|
|
214
|
+
myArCoef +
|
|
215
|
+
EditClassifier.INTERCEPT;
|
|
216
|
+
const probability = sigmoid(logit);
|
|
217
|
+
this.logging.log(`classifier:
|
|
218
|
+
"logit": ${logit},
|
|
219
|
+
"probability": ${probability},
|
|
220
|
+
"threshold": ${EditClassifier.THRESHOLD},
|
|
221
|
+
@@features@@
|
|
222
|
+
${JSON.stringify(this.features, undefined, 2)}
|
|
223
|
+
@@linear combination of features@@
|
|
224
|
+
${JSON.stringify({
|
|
225
|
+
lastChar: myLastCharCoef,
|
|
226
|
+
lastLineLength: myLastLineLengthCoef,
|
|
227
|
+
leftContextLineCount: myLeftContextLineCountCoef,
|
|
228
|
+
rightContextLineCount: myRightContextLineCountCoef,
|
|
229
|
+
addedLines: myAdded,
|
|
230
|
+
deletedLines: myDeleted,
|
|
231
|
+
changedChars: myChanged,
|
|
232
|
+
language: myLangCoef,
|
|
233
|
+
keyword: myKeywordCoef,
|
|
234
|
+
ar: myArCoef,
|
|
235
|
+
intercept: EditClassifier.INTERCEPT,
|
|
236
|
+
}, undefined, 2)}`);
|
|
237
|
+
return probability;
|
|
238
|
+
}
|
|
239
|
+
prepareFeatures(params) {
|
|
240
|
+
// 1. Last Character
|
|
241
|
+
const lastCharacter = params.triggerChar;
|
|
242
|
+
// 2. Last Line Length
|
|
243
|
+
const lastLineLength = params.fileContext.leftContextAtCurLine.length;
|
|
244
|
+
// 3. Left Context Line Count
|
|
245
|
+
const leftContextLineCount = params.fileContext.leftFileContent.split('\n').length;
|
|
246
|
+
// 4. Right Context Line Count
|
|
247
|
+
const rightContextLineCount = params.fileContext.rightFileContent.split('\n').length;
|
|
248
|
+
// 5. Edit History (only using olderst)
|
|
249
|
+
const oldest = params.recentEdits.supplementalContextItems[params.recentEdits.supplementalContextItems.length - 1]; // nullable
|
|
250
|
+
const editHistory = oldest ? EditClassifier.processEditHistory(oldest.content) : undefined;
|
|
251
|
+
const normalizedEditHistory = editHistory ? EditClassifier.normalizedRecentEdit(editHistory) : undefined;
|
|
252
|
+
this.logging.log(`lastLineFileContext:
|
|
253
|
+
${params.fileContext.leftContextAtCurLine}
|
|
254
|
+
recent decisions:
|
|
255
|
+
${JSON.stringify(params.recentDecisions)}
|
|
256
|
+
recent edits:
|
|
257
|
+
@@raw oldest edit@@
|
|
258
|
+
${oldest.content}
|
|
259
|
+
@@raw numbers@@
|
|
260
|
+
${JSON.stringify(editHistory, undefined, 2)}
|
|
261
|
+
@@normalized numbers@@
|
|
262
|
+
${JSON.stringify(normalizedEditHistory, undefined, 2)}
|
|
263
|
+
@@edits array@@
|
|
264
|
+
${params.recentEdits.supplementalContextItems.map(it => it.content)}`);
|
|
265
|
+
// 6. Language
|
|
266
|
+
const lang = params.fileContext.programmingLanguage;
|
|
267
|
+
// 7. Keywords
|
|
268
|
+
const lastToken = (0, triggerUtils_1.lastTokenFromString)(params.fileContext.leftFileContent);
|
|
269
|
+
// 8. User AR for last 5
|
|
270
|
+
// Cold start we assume 0.3 for AR
|
|
271
|
+
const ar = params.recentDecisions.length === 0
|
|
272
|
+
? 0.3
|
|
273
|
+
: params.recentDecisions.reduce((acc, cur) => {
|
|
274
|
+
if (cur === 'Accept') {
|
|
275
|
+
return acc + 1;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
return acc;
|
|
279
|
+
}
|
|
280
|
+
}, 0) / params.recentDecisions.length;
|
|
281
|
+
return {
|
|
282
|
+
lastCharacter: lastCharacter,
|
|
283
|
+
lastLineLength: lastLineLength,
|
|
284
|
+
leftContextLineCount: leftContextLineCount,
|
|
285
|
+
rightContextLineCount: rightContextLineCount,
|
|
286
|
+
normalizedEditHistory: normalizedEditHistory,
|
|
287
|
+
language: lang.languageName,
|
|
288
|
+
userAR: ar,
|
|
289
|
+
keyword: lastToken,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
static processEditHistory(udiff) {
|
|
293
|
+
const lines = udiff.split('\n');
|
|
294
|
+
const addedLines = lines
|
|
295
|
+
.filter(line => line.startsWith('+') && !line.startsWith('+++'))
|
|
296
|
+
.map(line => line.substring(1));
|
|
297
|
+
const deletedLines = lines
|
|
298
|
+
.filter(line => line.startsWith('-') && !line.startsWith('---'))
|
|
299
|
+
.map(line => line.substring(1));
|
|
300
|
+
const deletedText = deletedLines.join('\n');
|
|
301
|
+
const addedText = addedLines.join('\n');
|
|
302
|
+
const historyChangedChars = EditClassifier.editDistance(deletedText, addedText);
|
|
303
|
+
const historyLineAdded = addedLines.length;
|
|
304
|
+
const historyLineDeleted = deletedLines.length;
|
|
305
|
+
return {
|
|
306
|
+
changedCharacters: historyChangedChars,
|
|
307
|
+
addedLines: historyLineAdded,
|
|
308
|
+
deletedLines: historyLineDeleted,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
static normalizedRecentEdit(edit) {
|
|
312
|
+
// Apply min-max normalization using training data min/max values
|
|
313
|
+
const { changedCharacters, addedLines, deletedLines } = edit;
|
|
314
|
+
const trainingCharsChangedMin = 0;
|
|
315
|
+
const trainingCharsChangedMax = 261;
|
|
316
|
+
const normalizedChangedCharacters = (changedCharacters - trainingCharsChangedMin) / (trainingCharsChangedMax - trainingCharsChangedMin);
|
|
317
|
+
const trainingLineAddedMin = 0;
|
|
318
|
+
const trainingLineAddedMax = 7;
|
|
319
|
+
const normalizedAddedLines = (addedLines - trainingLineAddedMin) / (trainingLineAddedMax - trainingLineAddedMin);
|
|
320
|
+
const trainingLineDeletedMin = 0;
|
|
321
|
+
const trainingLineDeletedMax = 6;
|
|
322
|
+
const normalizedDeletedLines = (deletedLines - trainingLineDeletedMin) / (trainingLineDeletedMax - trainingLineDeletedMin);
|
|
323
|
+
return {
|
|
324
|
+
changedCharacters: normalizedChangedCharacters,
|
|
325
|
+
addedLines: normalizedAddedLines,
|
|
326
|
+
deletedLines: normalizedDeletedLines,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
// TODO: Maybe consider reusing same logic across the entire repo or 3rd party edit distance function, we have too many different variants of such
|
|
330
|
+
static editDistance(s1, s2) {
|
|
331
|
+
if (s1.length === 0)
|
|
332
|
+
return s2.length;
|
|
333
|
+
if (s2.length === 0)
|
|
334
|
+
return s1.length;
|
|
335
|
+
// Create matrix
|
|
336
|
+
const rows = s1.length + 1;
|
|
337
|
+
const cols = s2.length + 1;
|
|
338
|
+
const dp = Array(rows)
|
|
339
|
+
.fill(0)
|
|
340
|
+
.map(() => Array(cols).fill(0));
|
|
341
|
+
// Initialize first row and column
|
|
342
|
+
for (let i = 0; i < rows; i++) {
|
|
343
|
+
dp[i][0] = i;
|
|
344
|
+
}
|
|
345
|
+
for (let j = 0; j < cols; j++) {
|
|
346
|
+
dp[0][j] = j;
|
|
347
|
+
}
|
|
348
|
+
// Fill the matrix
|
|
349
|
+
for (let i = 1; i < rows; i++) {
|
|
350
|
+
for (let j = 1; j < cols; j++) {
|
|
351
|
+
if (s1[i - 1] === s2[j - 1]) {
|
|
352
|
+
dp[i][j] = dp[i - 1][j - 1];
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
dp[i][j] =
|
|
356
|
+
1 +
|
|
357
|
+
Math.min(dp[i - 1][j], // deletion
|
|
358
|
+
dp[i][j - 1], // insertion
|
|
359
|
+
dp[i - 1][j - 1] // substitution
|
|
360
|
+
);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return dp[rows - 1][cols - 1];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
exports.EditClassifier = EditClassifier;
|
|
34
368
|
//# sourceMappingURL=editPredictionAutoTrigger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editPredictionAutoTrigger.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,iEAAoE;AAcpE;;;;;;GAMG;AACI,MAAM,yBAAyB,GAAG,CAAC,EACtC,WAAW,EACX,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,WAAW,GACmB,EAEhC,EAAE;IACA,oBAAoB;IACpB,MAAM,MAAM,GAAG,kDAA2B,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAA;IAEpE,4BAA4B;IAC5B,MAAM,iBAAiB,GAAG,WAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAErE,sCAAsC;IACtC,MAAM,aAAa,GAAG,WAAW,EAAE,mBAAmB,CAClD,WAAW,CAAC,OAAO,EACnB,OAAO,EACP,MAAM,CAAC,qBAAqB,EAC5B,MAAM,CAAC,qBAAqB,CAC/B,CAAA;IAED,iFAAiF;IACjF,IAAI,iBAAiB,GAAG,KAAK,CAAA;IAC7B,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAA;IACxG,IAAI,wBAAwB,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAA;QAClF,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,IAAI,iBAAiB,CAAA;IAExD,OAAO,EAAE,aAAa,EAAE,CAAA;AAC5B,CAAC,CAAA;AAnCY,QAAA,yBAAyB,6BAmCrC"}
|
|
1
|
+
{"version":3,"file":"editPredictionAutoTrigger.js","sourceRoot":"","sources":["../../../../src/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.EditCompletionHandler = void 0;
|
|
4
4
|
const protocol_1 = require("@aws/language-server-runtimes/protocol");
|
|
5
5
|
const codeWhispererService_1 = require("../../../shared/codeWhispererService");
|
|
6
|
-
const sessionManager_1 = require("../session/sessionManager");
|
|
7
6
|
const languageDetection_1 = require("../../../shared/languageDetection");
|
|
8
7
|
const workspaceFolderManager_1 = require("../../workspaceContext/workspaceFolderManager");
|
|
9
8
|
const triggerUtils_1 = require("../utils/triggerUtils");
|
|
@@ -14,6 +13,7 @@ const errors_1 = require("../../../shared/amazonQServiceManager/errors");
|
|
|
14
13
|
const constants_1 = require("../contants/constants");
|
|
15
14
|
const streakTracker_1 = require("../tracker/streakTracker");
|
|
16
15
|
const diffUtils_1 = require("../utils/diffUtils");
|
|
16
|
+
const editPredictionAutoTrigger_1 = require("../auto-trigger/editPredictionAutoTrigger");
|
|
17
17
|
class EditCompletionHandler {
|
|
18
18
|
logging;
|
|
19
19
|
clientMetadata;
|
|
@@ -60,15 +60,15 @@ class EditCompletionHandler {
|
|
|
60
60
|
* Also as a followup, ideally it should be a message/event publish/subscribe pattern instead of manual invocation like this
|
|
61
61
|
*/
|
|
62
62
|
documentChanged() {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
63
|
+
// TODO: Remove this entirely once we are sure we dont need debounce
|
|
64
|
+
// if (this.debounceTimeout) {
|
|
65
|
+
// if (this.isWaiting) {
|
|
66
|
+
// this.hasDocumentChangedSinceInvocation = true
|
|
67
|
+
// } else {
|
|
68
|
+
// this.logging.info(`refresh and debounce edits suggestion for another ${EDIT_DEBOUNCE_INTERVAL_MS}`)
|
|
69
|
+
// this.debounceTimeout.refresh()
|
|
70
|
+
// }
|
|
71
|
+
// }
|
|
72
72
|
}
|
|
73
73
|
async onEditCompletion(params, token) {
|
|
74
74
|
if (this.isInProgress) {
|
|
@@ -136,73 +136,63 @@ class EditCompletionHandler {
|
|
|
136
136
|
this.isInProgress = false;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
|
|
140
|
-
this.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const result = await this._invoke(params, startPreprocessTimestamp, token, textDocument, inferredLanguageId, currentSession).finally(() => {
|
|
144
|
-
this.isWaiting = false;
|
|
145
|
-
});
|
|
146
|
-
if (this.hasDocumentChangedSinceInvocation) {
|
|
147
|
-
this.logging.info('EditCompletionHandler - Document changed during execution, resolving empty result');
|
|
148
|
-
resolve({
|
|
149
|
-
sessionId: sessionManager_1.SessionManager.getInstance('EDITS').getActiveSession()?.id ?? '',
|
|
150
|
-
items: [],
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
this.logging.info('EditCompletionHandler - No document changes, resolving result');
|
|
155
|
-
resolve(result);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
finally {
|
|
159
|
-
this.debounceTimeout = undefined;
|
|
160
|
-
this.hasDocumentChangedSinceInvocation = false;
|
|
161
|
-
}
|
|
162
|
-
}, constants_1.EDIT_DEBOUNCE_INTERVAL_MS);
|
|
163
|
-
}).finally(() => {
|
|
139
|
+
try {
|
|
140
|
+
return await this._invoke(params, startPreprocessTimestamp, token, textDocument, inferredLanguageId, currentSession);
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
164
143
|
this.isInProgress = false;
|
|
165
|
-
}
|
|
144
|
+
}
|
|
166
145
|
}
|
|
167
146
|
async _invoke(params, startPreprocessTimestamp, token, textDocument, inferredLanguageId, currentSession) {
|
|
168
147
|
// Build request context
|
|
169
148
|
const isAutomaticLspTriggerKind = params.context.triggerKind == protocol_1.InlineCompletionTriggerKind.Automatic;
|
|
170
149
|
const maxResults = isAutomaticLspTriggerKind ? 1 : 5;
|
|
171
|
-
const
|
|
150
|
+
const fileContextClss = (0, codeWhispererService_1.getFileContext)({
|
|
172
151
|
textDocument,
|
|
173
152
|
inferredLanguageId,
|
|
174
153
|
position: params.position,
|
|
175
154
|
workspaceFolder: this.workspace.getWorkspaceFolder(textDocument.uri),
|
|
176
155
|
});
|
|
156
|
+
// TODO: Parametrize these to a util function, duplicate code as inineCompletionHandler
|
|
157
|
+
const triggerCharacters = (0, triggerUtils_1.inferTriggerChar)(fileContextClss, params.documentChangeParams);
|
|
177
158
|
const workspaceState = workspaceFolderManager_1.WorkspaceFolderManager.getInstance()?.getWorkspaceState();
|
|
178
159
|
const workspaceId = workspaceState?.webSocketClient?.isConnected() ? workspaceState.workspaceId : undefined;
|
|
179
|
-
const
|
|
180
|
-
|
|
160
|
+
const recentEdits = await this.recentEditsTracker.generateEditBasedContext(textDocument);
|
|
161
|
+
// TODO: Refactor and merge these 2 shouldTrigger into single one
|
|
162
|
+
const classifier = new editPredictionAutoTrigger_1.EditClassifier({
|
|
163
|
+
fileContext: fileContextClss,
|
|
164
|
+
triggerChar: triggerCharacters,
|
|
165
|
+
recentEdits: recentEdits,
|
|
166
|
+
recentDecisions: this.sessionManager.userDecisionLog.map(it => it.decision),
|
|
167
|
+
}, this.logging);
|
|
168
|
+
const classifierBasedTrigger = classifier.shouldTriggerEdits();
|
|
169
|
+
const ruleBasedTrigger = (0, triggerUtils_1.shouldTriggerEdits)(this.codeWhispererService, fileContextClss.toServiceModel(), params, this.cursorTracker, this.recentEditsTracker, this.sessionManager, true);
|
|
170
|
+
// Both classifier and rule based conditions need to evaluate to true otherwise we wont fire Edits requests
|
|
171
|
+
const shouldFire = classifierBasedTrigger.shouldTrigger && ruleBasedTrigger !== undefined;
|
|
172
|
+
if (!shouldFire) {
|
|
181
173
|
return constants_1.EMPTY_RESULT;
|
|
182
174
|
}
|
|
183
175
|
const generateCompletionReq = {
|
|
184
|
-
fileContext:
|
|
176
|
+
fileContext: fileContextClss.toServiceModel(),
|
|
185
177
|
maxResults: maxResults,
|
|
186
178
|
predictionTypes: ['EDITS'],
|
|
187
179
|
workspaceId: workspaceId,
|
|
188
180
|
};
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
languageName: generateCompletionReq.fileContext?.programmingLanguage?.languageName,
|
|
195
|
-
},
|
|
196
|
-
text: textDocument.getText(),
|
|
181
|
+
generateCompletionReq.editorState = {
|
|
182
|
+
document: {
|
|
183
|
+
relativeFilePath: textDocument.uri,
|
|
184
|
+
programmingLanguage: {
|
|
185
|
+
languageName: generateCompletionReq.fileContext?.programmingLanguage?.languageName,
|
|
197
186
|
},
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
187
|
+
text: textDocument.getText(),
|
|
188
|
+
},
|
|
189
|
+
cursorState: {
|
|
190
|
+
position: {
|
|
191
|
+
line: params.position.line,
|
|
192
|
+
character: params.position.character,
|
|
203
193
|
},
|
|
204
|
-
}
|
|
205
|
-
}
|
|
194
|
+
},
|
|
195
|
+
};
|
|
206
196
|
const supplementalContext = await this.codeWhispererService.constructSupplementalContext(textDocument, params.position, this.workspace, this.recentEditsTracker, this.logging, token, params.openTabFilepaths, {
|
|
207
197
|
includeRecentEdits: true,
|
|
208
198
|
});
|
|
@@ -221,7 +211,7 @@ class EditCompletionHandler {
|
|
|
221
211
|
startPreprocessTimestamp: startPreprocessTimestamp,
|
|
222
212
|
startPosition: params.position,
|
|
223
213
|
triggerType: isAutomaticLspTriggerKind ? 'AutoTrigger' : 'OnDemand',
|
|
224
|
-
language:
|
|
214
|
+
language: fileContextClss.programmingLanguage.languageName,
|
|
225
215
|
requestContext: generateCompletionReq,
|
|
226
216
|
autoTriggerType: undefined,
|
|
227
217
|
triggerCharacter: '',
|