@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.
Files changed (39) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +2 -0
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/context/contextCommandsProvider.d.ts +6 -0
  5. package/out/language-server/agenticChat/context/contextCommandsProvider.js +24 -0
  6. package/out/language-server/agenticChat/context/contextCommandsProvider.js.map +1 -1
  7. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +2 -2
  8. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
  9. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.d.ts +2 -1
  10. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js +8 -3
  11. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -1
  12. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.d.ts +4 -1
  13. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js +4 -2
  14. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js.map +1 -1
  15. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.d.ts +1 -0
  16. package/out/language-server/inline-completion/auto-trigger/autoTrigger.js +2 -2
  17. package/out/language-server/inline-completion/auto-trigger/autoTrigger.js.map +1 -1
  18. package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.d.ts +44 -1
  19. package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js +335 -1
  20. package/out/language-server/inline-completion/auto-trigger/editPredictionAutoTrigger.js.map +1 -1
  21. package/out/language-server/inline-completion/handler/editCompletionHandler.js +46 -56
  22. package/out/language-server/inline-completion/handler/editCompletionHandler.js.map +1 -1
  23. package/out/language-server/inline-completion/handler/inlineCompletionHandler.js +1 -1
  24. package/out/language-server/inline-completion/handler/inlineCompletionHandler.js.map +1 -1
  25. package/out/language-server/inline-completion/session/sessionManager.d.ts +5 -0
  26. package/out/language-server/inline-completion/session/sessionManager.js +16 -0
  27. package/out/language-server/inline-completion/session/sessionManager.js.map +1 -1
  28. package/out/language-server/inline-completion/utils/triggerUtils.d.ts +11 -3
  29. package/out/language-server/inline-completion/utils/triggerUtils.js +58 -0
  30. package/out/language-server/inline-completion/utils/triggerUtils.js.map +1 -1
  31. package/out/shared/codeWhispererService.d.ts +16 -7
  32. package/out/shared/codeWhispererService.js +51 -23
  33. package/out/shared/codeWhispererService.js.map +1 -1
  34. package/out/shared/constants.js +3 -0
  35. package/out/shared/constants.js.map +1 -1
  36. package/out/shared/localProjectContextController.d.ts +1 -0
  37. package/out/shared/localProjectContextController.js +4 -0
  38. package/out/shared/localProjectContextController.js.map +1 -1
  39. 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":"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"}
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
- if (this.debounceTimeout) {
64
- if (this.isWaiting) {
65
- this.hasDocumentChangedSinceInvocation = true;
66
- }
67
- else {
68
- this.logging.info(`refresh and debounce edits suggestion for another ${constants_1.EDIT_DEBOUNCE_INTERVAL_MS}`);
69
- this.debounceTimeout.refresh();
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
- return new Promise(async (resolve) => {
140
- this.debounceTimeout = setTimeout(async () => {
141
- try {
142
- this.isWaiting = true;
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 fileContext = (0, codeWhispererService_1.getFileContext)({
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 qEditsTrigger = (0, triggerUtils_1.shouldTriggerEdits)(this.codeWhispererService, fileContext, params, this.cursorTracker, this.recentEditsTracker, this.sessionManager, true);
180
- if (!qEditsTrigger) {
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: fileContext,
176
+ fileContext: fileContextClss.toServiceModel(),
185
177
  maxResults: maxResults,
186
178
  predictionTypes: ['EDITS'],
187
179
  workspaceId: workspaceId,
188
180
  };
189
- if (qEditsTrigger) {
190
- generateCompletionReq.editorState = {
191
- document: {
192
- relativeFilePath: textDocument.uri,
193
- programmingLanguage: {
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
- cursorState: {
199
- position: {
200
- line: params.position.line,
201
- character: params.position.character,
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: fileContext.programmingLanguage.languageName,
214
+ language: fileContextClss.programmingLanguage.languageName,
225
215
  requestContext: generateCompletionReq,
226
216
  autoTriggerType: undefined,
227
217
  triggerCharacter: '',