@aws/lsp-codewhisperer 0.0.71 → 0.0.73

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 (102) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +116 -71
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/agenticChatResultStream.d.ts +4 -27
  5. package/out/language-server/agenticChat/agenticChatResultStream.js +14 -31
  6. package/out/language-server/agenticChat/agenticChatResultStream.js.map +1 -1
  7. package/out/language-server/agenticChat/constants/modelSelection.js +1 -1
  8. package/out/language-server/agenticChat/constants/modelSelection.js.map +1 -1
  9. package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +7 -1
  10. package/out/language-server/agenticChat/tools/chatDb/chatDb.js +64 -17
  11. package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
  12. package/out/language-server/agenticChat/tools/chatDb/util.d.ts +3 -2
  13. package/out/language-server/agenticChat/tools/chatDb/util.js.map +1 -1
  14. package/out/language-server/agenticChat/tools/executeBash.d.ts +1 -0
  15. package/out/language-server/agenticChat/tools/executeBash.js +33 -0
  16. package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
  17. package/out/language-server/agenticChat/tools/fileSearch.d.ts +1 -0
  18. package/out/language-server/agenticChat/tools/fileSearch.js +4 -0
  19. package/out/language-server/agenticChat/tools/fileSearch.js.map +1 -1
  20. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +22 -18
  21. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
  22. package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +1 -0
  23. package/out/language-server/agenticChat/tools/mcp/mcpManager.js +68 -32
  24. package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
  25. package/out/language-server/agenticChat/tools/mcp/mcpTypes.d.ts +1 -0
  26. package/out/language-server/agenticChat/tools/mcp/mcpTypes.js.map +1 -1
  27. package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +1 -1
  28. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +70 -7
  29. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
  30. package/out/language-server/agenticChat/tools/qCodeAnalysis/displayFindingsConstants.js +1 -0
  31. package/out/language-server/agenticChat/tools/qCodeAnalysis/displayFindingsConstants.js.map +1 -1
  32. package/out/language-server/agenticChat/utils/agenticChatControllerHelper.js +1 -1
  33. package/out/language-server/agenticChat/utils/agenticChatControllerHelper.js.map +1 -1
  34. package/out/language-server/chat/chatSessionService.js +1 -1
  35. package/out/language-server/chat/chatSessionService.js.map +1 -1
  36. package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +1 -0
  37. package/out/language-server/chat/telemetry/chatTelemetryController.js +11 -0
  38. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  39. package/out/language-server/inline-completion/codeDiffTracker.d.ts +9 -0
  40. package/out/language-server/inline-completion/codeDiffTracker.js.map +1 -1
  41. package/out/language-server/inline-completion/codePercentage.d.ts +2 -0
  42. package/out/language-server/inline-completion/codePercentage.js +10 -2
  43. package/out/language-server/inline-completion/codePercentage.js.map +1 -1
  44. package/out/language-server/inline-completion/codeWhispererServer.d.ts +0 -3
  45. package/out/language-server/inline-completion/codeWhispererServer.js +91 -200
  46. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
  47. package/out/language-server/inline-completion/constants.d.ts +10 -0
  48. package/out/language-server/inline-completion/constants.js +35 -0
  49. package/out/language-server/inline-completion/constants.js.map +1 -0
  50. package/out/language-server/inline-completion/diffUtils.d.ts +15 -0
  51. package/out/language-server/inline-completion/diffUtils.js +53 -0
  52. package/out/language-server/inline-completion/diffUtils.js.map +1 -1
  53. package/out/language-server/inline-completion/documentChangedListener.d.ts +8 -0
  54. package/out/language-server/inline-completion/documentChangedListener.js +20 -0
  55. package/out/language-server/inline-completion/documentChangedListener.js.map +1 -0
  56. package/out/language-server/inline-completion/editCompletionHandler.d.ts +49 -0
  57. package/out/language-server/inline-completion/editCompletionHandler.js +328 -0
  58. package/out/language-server/inline-completion/editCompletionHandler.js.map +1 -0
  59. package/out/language-server/inline-completion/session/sessionManager.d.ts +9 -3
  60. package/out/language-server/inline-completion/session/sessionManager.js +31 -7
  61. package/out/language-server/inline-completion/session/sessionManager.js.map +1 -1
  62. package/out/language-server/inline-completion/telemetry.d.ts +3 -3
  63. package/out/language-server/inline-completion/telemetry.js +11 -5
  64. package/out/language-server/inline-completion/telemetry.js.map +1 -1
  65. package/out/language-server/inline-completion/trigger.d.ts +17 -0
  66. package/out/language-server/inline-completion/trigger.js +42 -0
  67. package/out/language-server/inline-completion/trigger.js.map +1 -0
  68. package/out/language-server/workspaceContext/IdleWorkspaceManager.d.ts +13 -0
  69. package/out/language-server/workspaceContext/IdleWorkspaceManager.js +39 -0
  70. package/out/language-server/workspaceContext/IdleWorkspaceManager.js.map +1 -0
  71. package/out/language-server/workspaceContext/artifactManager.js +14 -0
  72. package/out/language-server/workspaceContext/artifactManager.js.map +1 -1
  73. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.d.ts +1 -1
  74. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js +2 -1
  75. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js.map +1 -1
  76. package/out/language-server/workspaceContext/workspaceContextServer.js +2 -6
  77. package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
  78. package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +8 -5
  79. package/out/language-server/workspaceContext/workspaceFolderManager.js +109 -82
  80. package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
  81. package/out/shared/codeWhispererService.d.ts +36 -1
  82. package/out/shared/codeWhispererService.js +112 -9
  83. package/out/shared/codeWhispererService.js.map +1 -1
  84. package/out/shared/constants.d.ts +1 -0
  85. package/out/shared/constants.js +2 -1
  86. package/out/shared/constants.js.map +1 -1
  87. package/out/shared/supplementalContextUtil/crossFileContextUtil.d.ts +3 -4
  88. package/out/shared/supplementalContextUtil/crossFileContextUtil.js +5 -5
  89. package/out/shared/supplementalContextUtil/crossFileContextUtil.js.map +1 -1
  90. package/out/shared/supplementalContextUtil/supplementalContextUtil.d.ts +1 -2
  91. package/out/shared/supplementalContextUtil/supplementalContextUtil.js +2 -2
  92. package/out/shared/supplementalContextUtil/supplementalContextUtil.js.map +1 -1
  93. package/out/shared/telemetry/telemetryService.d.ts +2 -2
  94. package/out/shared/telemetry/telemetryService.js +8 -5
  95. package/out/shared/telemetry/telemetryService.js.map +1 -1
  96. package/out/shared/telemetry/types.d.ts +8 -0
  97. package/out/shared/telemetry/types.js +1 -0
  98. package/out/shared/telemetry/types.js.map +1 -1
  99. package/out/shared/utils.d.ts +1 -0
  100. package/out/shared/utils.js +10 -1
  101. package/out/shared/utils.js.map +1 -1
  102. package/package.json +2 -2
@@ -0,0 +1,10 @@
1
+ export declare const FILE_URI_CHARS_LIMIT = 1024;
2
+ export declare const FILENAME_CHARS_LIMIT = 1024;
3
+ export declare const CONTEXT_CHARACTERS_LIMIT = 10240;
4
+ export declare const EMPTY_RESULT: {
5
+ sessionId: string;
6
+ items: never[];
7
+ };
8
+ export declare const EDIT_DEBOUNCE_INTERVAL_MS = 500;
9
+ export declare const EDIT_STALE_RETRY_COUNT = 3;
10
+ export declare const ABAP_EXTENSIONS: Set<string>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ABAP_EXTENSIONS = exports.EDIT_STALE_RETRY_COUNT = exports.EDIT_DEBOUNCE_INTERVAL_MS = exports.EMPTY_RESULT = exports.CONTEXT_CHARACTERS_LIMIT = exports.FILENAME_CHARS_LIMIT = exports.FILE_URI_CHARS_LIMIT = void 0;
4
+ exports.FILE_URI_CHARS_LIMIT = 1024;
5
+ exports.FILENAME_CHARS_LIMIT = 1024;
6
+ exports.CONTEXT_CHARACTERS_LIMIT = 10240;
7
+ exports.EMPTY_RESULT = { sessionId: '', items: [] };
8
+ exports.EDIT_DEBOUNCE_INTERVAL_MS = 500;
9
+ exports.EDIT_STALE_RETRY_COUNT = 3;
10
+ // ABAP ADT extensions commonly used with Eclipse
11
+ exports.ABAP_EXTENSIONS = new Set([
12
+ 'asprog',
13
+ 'aclass',
14
+ 'asinc',
15
+ 'aint',
16
+ 'assrvds',
17
+ 'asbdef',
18
+ 'asddls',
19
+ 'astablds',
20
+ 'astabldt',
21
+ 'amdp',
22
+ 'apack',
23
+ 'asrv',
24
+ 'aobj',
25
+ 'aexit',
26
+ 'abdef',
27
+ 'acinc',
28
+ 'asfugr',
29
+ 'apfugr',
30
+ 'asfunc',
31
+ 'asfinc',
32
+ 'apfunc',
33
+ 'apfinc',
34
+ ]);
35
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/language-server/inline-completion/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,IAAI,CAAA;AAC3B,QAAA,oBAAoB,GAAG,IAAI,CAAA;AAC3B,QAAA,wBAAwB,GAAG,KAAK,CAAA;AAChC,QAAA,YAAY,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AAC3C,QAAA,yBAAyB,GAAG,GAAG,CAAA;AAC/B,QAAA,sBAAsB,GAAG,CAAC,CAAA;AACvC,iDAAiD;AACpC,QAAA,eAAe,GAAG,IAAI,GAAG,CAAC;IACnC,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,UAAU;IACV,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC,CAAA"}
@@ -44,7 +44,22 @@ export declare function generateDiffContexts(filePath: string, currentContent: s
44
44
  * @returns The modified code after applying the diff
45
45
  */
46
46
  export declare function applyUnifiedDiff(docText: string, unifiedDiff: string): string;
47
+ export declare function getAddedAndDeletedLines(unifiedDiff: string): {
48
+ addedLines: string[];
49
+ deletedLines: string[];
50
+ };
47
51
  export declare function getAddedAndDeletedChars(unifiedDiff: string): {
48
52
  addedCharacters: string;
49
53
  deletedCharacters: string;
50
54
  };
55
+ /**
56
+ * Calculate character differences between added and deleted text blocks using LCS
57
+ */
58
+ export interface CharDiffResult {
59
+ charactersAdded: number;
60
+ charactersRemoved: number;
61
+ }
62
+ /**
63
+ * Calculate character differences between added and deleted blocks
64
+ */
65
+ export declare function getCharacterDifferences(addedLines: string[], deletedLines: string[]): CharDiffResult;
@@ -7,7 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.generateUnifiedDiffWithTimestamps = generateUnifiedDiffWithTimestamps;
8
8
  exports.generateDiffContexts = generateDiffContexts;
9
9
  exports.applyUnifiedDiff = applyUnifiedDiff;
10
+ exports.getAddedAndDeletedLines = getAddedAndDeletedLines;
10
11
  exports.getAddedAndDeletedChars = getAddedAndDeletedChars;
12
+ exports.getCharacterDifferences = getCharacterDifferences;
11
13
  const diff = require("diff");
12
14
  const supplementalContextUtil_1 = require("../../shared/supplementalContextUtil/supplementalContextUtil");
13
15
  /**
@@ -159,6 +161,17 @@ function applyUnifiedDiff(docText, unifiedDiff) {
159
161
  return docText; // Return original text if all methods fail
160
162
  }
161
163
  }
164
+ function getAddedAndDeletedLines(unifiedDiff) {
165
+ const lines = unifiedDiff.split('\n');
166
+ const addedLines = lines.filter(line => line.startsWith('+') && !line.startsWith('+++')).map(line => line.slice(1));
167
+ const deletedLines = lines
168
+ .filter(line => line.startsWith('-') && !line.startsWith('---'))
169
+ .map(line => line.slice(1));
170
+ return {
171
+ addedLines,
172
+ deletedLines,
173
+ };
174
+ }
162
175
  // src https://github.com/aws/aws-toolkit-vscode/blob/3921457b0a2094b831beea0d66cc2cbd2a833890/packages/amazonq/src/app/inline/EditRendering/diffUtils.ts#L147
163
176
  function getAddedAndDeletedChars(unifiedDiff) {
164
177
  let addedCharacters = '';
@@ -199,4 +212,44 @@ function getAddedAndDeletedChars(unifiedDiff) {
199
212
  deletedCharacters,
200
213
  };
201
214
  }
215
+ /**
216
+ * Find longest common subsequence length between two strings
217
+ */
218
+ function lcsLength(str1, str2) {
219
+ const m = str1.length;
220
+ const n = str2.length;
221
+ const dp = Array(m + 1)
222
+ .fill(null)
223
+ .map(() => Array(n + 1).fill(0));
224
+ for (let i = 1; i <= m; i++) {
225
+ for (let j = 1; j <= n; j++) {
226
+ if (str1[i - 1] === str2[j - 1]) {
227
+ dp[i][j] = dp[i - 1][j - 1] + 1;
228
+ }
229
+ else {
230
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
231
+ }
232
+ }
233
+ }
234
+ return dp;
235
+ }
236
+ /**
237
+ * Calculate character differences between added and deleted blocks
238
+ */
239
+ function getCharacterDifferences(addedLines, deletedLines) {
240
+ const addedText = addedLines.join('\n');
241
+ const deletedText = deletedLines.join('\n');
242
+ if (addedText.length === 0) {
243
+ return { charactersAdded: 0, charactersRemoved: deletedText.length };
244
+ }
245
+ if (deletedText.length === 0) {
246
+ return { charactersAdded: addedText.length, charactersRemoved: 0 };
247
+ }
248
+ const lcsTable = lcsLength(deletedText, addedText);
249
+ const lcsLen = lcsTable[deletedText.length][addedText.length];
250
+ return {
251
+ charactersAdded: addedText.length - lcsLen,
252
+ charactersRemoved: deletedText.length - lcsLen,
253
+ };
254
+ }
202
255
  //# sourceMappingURL=diffUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diffUtils.js","sourceRoot":"","sources":["../../../src/language-server/inline-completion/diffUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diffUtils.js","sourceRoot":"","sources":["../../../src/language-server/inline-completion/diffUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { DidChangeTextDocumentParams } from '@aws/language-server-runtimes/protocol';
2
+ export declare class DocumentChangedListener {
3
+ private _lastUserModificationTime;
4
+ private _timeSinceLastUserModification;
5
+ get timeSinceLastUserModification(): number;
6
+ constructor();
7
+ onDocumentChanged(e: DidChangeTextDocumentParams): void;
8
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DocumentChangedListener = void 0;
4
+ class DocumentChangedListener {
5
+ _lastUserModificationTime = 0;
6
+ _timeSinceLastUserModification = 0;
7
+ get timeSinceLastUserModification() {
8
+ return this._timeSinceLastUserModification;
9
+ }
10
+ constructor() { }
11
+ onDocumentChanged(e) {
12
+ // Record last user modification time for any document
13
+ if (this._lastUserModificationTime) {
14
+ this._timeSinceLastUserModification = new Date().getTime() - this._lastUserModificationTime;
15
+ }
16
+ this._lastUserModificationTime = new Date().getTime();
17
+ }
18
+ }
19
+ exports.DocumentChangedListener = DocumentChangedListener;
20
+ //# sourceMappingURL=documentChangedListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documentChangedListener.js","sourceRoot":"","sources":["../../../src/language-server/inline-completion/documentChangedListener.ts"],"names":[],"mappings":";;;AAEA,MAAa,uBAAuB;IACxB,yBAAyB,GAAW,CAAC,CAAA;IACrC,8BAA8B,GAAW,CAAC,CAAA;IAClD,IAAI,6BAA6B;QAC7B,OAAO,IAAI,CAAC,8BAA8B,CAAA;IAC9C,CAAC;IAED,gBAAe,CAAC;IAEhB,iBAAiB,CAAC,CAA8B;QAC5C,sDAAsD;QACtD,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,8BAA8B,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,yBAAyB,CAAA;QAC/F,CAAC;QACD,IAAI,CAAC,yBAAyB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;IACzD,CAAC;CACJ;AAhBD,0DAgBC"}
@@ -0,0 +1,49 @@
1
+ import { CancellationToken, InitializeParams, InlineCompletionListWithReferences, InlineCompletionWithReferencesParams, Range, TextDocument } from '@aws/language-server-runtimes/protocol';
2
+ import { RecentEditTracker } from './tracker/codeEditTracker';
3
+ import { CredentialsProvider, Logging, Telemetry, Workspace } from '@aws/language-server-runtimes/server-interface';
4
+ import { GenerateSuggestionsResponse } from '../../shared/codeWhispererService';
5
+ import { CodeWhispererSession, SessionManager } from './session/sessionManager';
6
+ import { CursorTracker } from './tracker/cursorTracker';
7
+ import { CodewhispererLanguage } from '../../shared/languageDetection';
8
+ import { TelemetryService } from '../../shared/telemetry/telemetryService';
9
+ import { AmazonQBaseServiceManager } from '../../shared/amazonQServiceManager/BaseAmazonQServiceManager';
10
+ import { RejectedEditTracker } from './tracker/rejectedEditTracker';
11
+ import { DocumentChangedListener } from './documentChangedListener';
12
+ export declare class EditCompletionHandler {
13
+ readonly logging: Logging;
14
+ readonly clientMetadata: InitializeParams;
15
+ readonly workspace: Workspace;
16
+ readonly amazonQServiceManager: AmazonQBaseServiceManager;
17
+ readonly sessionManager: SessionManager;
18
+ readonly cursorTracker: CursorTracker;
19
+ readonly recentEditsTracker: RecentEditTracker;
20
+ readonly rejectedEditTracker: RejectedEditTracker;
21
+ readonly documentChangedListener: DocumentChangedListener;
22
+ readonly telemetry: Telemetry;
23
+ readonly telemetryService: TelemetryService;
24
+ readonly credentialsProvider: CredentialsProvider;
25
+ private readonly editsEnabled;
26
+ private debounceTimeout;
27
+ private isWaiting;
28
+ private hasDocumentChangedSinceInvocation;
29
+ constructor(logging: Logging, clientMetadata: InitializeParams, workspace: Workspace, amazonQServiceManager: AmazonQBaseServiceManager, sessionManager: SessionManager, cursorTracker: CursorTracker, recentEditsTracker: RecentEditTracker, rejectedEditTracker: RejectedEditTracker, documentChangedListener: DocumentChangedListener, telemetry: Telemetry, telemetryService: TelemetryService, credentialsProvider: CredentialsProvider);
30
+ get codeWhispererService(): import("../../shared/codeWhispererService").CodeWhispererServiceBase;
31
+ /**
32
+ * This is a workaround to refresh the debounce timer when user is typing quickly.
33
+ * Adding debounce at function call doesnt work because server won't process second request until first request is processed.
34
+ * Also as a followup, ideally it should be a message/event publish/subscribe pattern instead of manual invocation like this
35
+ */
36
+ documentChanged(): void;
37
+ onEditCompletion(params: InlineCompletionWithReferencesParams, token: CancellationToken): Promise<InlineCompletionListWithReferences>;
38
+ _invoke(params: InlineCompletionWithReferencesParams, token: CancellationToken, textDocument: TextDocument, inferredLanguageId: CodewhispererLanguage, currentSession: CodeWhispererSession | undefined): Promise<InlineCompletionListWithReferences>;
39
+ processSuggestionResponse(suggestionResponse: GenerateSuggestionsResponse, session: CodeWhispererSession, isNewSession: boolean, selectionRange?: Range, textDocument?: TextDocument): Promise<{
40
+ items: {
41
+ insertText: string;
42
+ isInlineEdit: boolean;
43
+ itemId: string;
44
+ }[];
45
+ sessionId: string;
46
+ partialResultToken: string | undefined;
47
+ }>;
48
+ handleSuggestionsErrors(error: Error, session: CodeWhispererSession): InlineCompletionListWithReferences;
49
+ }
@@ -0,0 +1,328 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EditCompletionHandler = void 0;
4
+ const protocol_1 = require("@aws/language-server-runtimes/protocol");
5
+ const codeWhispererService_1 = require("../../shared/codeWhispererService");
6
+ const languageDetection_1 = require("../../shared/languageDetection");
7
+ const workspaceFolderManager_1 = require("../workspaceContext/workspaceFolderManager");
8
+ const trigger_1 = require("./trigger");
9
+ const telemetry_1 = require("./telemetry");
10
+ const lsp_core_1 = require("@aws/lsp-core");
11
+ const utils_1 = require("../../shared/utils");
12
+ const errors_1 = require("../../shared/amazonQServiceManager/errors");
13
+ const constants_1 = require("./constants");
14
+ class EditCompletionHandler {
15
+ logging;
16
+ clientMetadata;
17
+ workspace;
18
+ amazonQServiceManager;
19
+ sessionManager;
20
+ cursorTracker;
21
+ recentEditsTracker;
22
+ rejectedEditTracker;
23
+ documentChangedListener;
24
+ telemetry;
25
+ telemetryService;
26
+ credentialsProvider;
27
+ editsEnabled;
28
+ debounceTimeout;
29
+ isWaiting = false;
30
+ hasDocumentChangedSinceInvocation = false;
31
+ constructor(logging, clientMetadata, workspace, amazonQServiceManager, sessionManager, cursorTracker, recentEditsTracker, rejectedEditTracker, documentChangedListener, telemetry, telemetryService, credentialsProvider) {
32
+ this.logging = logging;
33
+ this.clientMetadata = clientMetadata;
34
+ this.workspace = workspace;
35
+ this.amazonQServiceManager = amazonQServiceManager;
36
+ this.sessionManager = sessionManager;
37
+ this.cursorTracker = cursorTracker;
38
+ this.recentEditsTracker = recentEditsTracker;
39
+ this.rejectedEditTracker = rejectedEditTracker;
40
+ this.documentChangedListener = documentChangedListener;
41
+ this.telemetry = telemetry;
42
+ this.telemetryService = telemetryService;
43
+ this.credentialsProvider = credentialsProvider;
44
+ this.editsEnabled =
45
+ this.clientMetadata.initializationOptions?.aws?.awsClientCapabilities?.textDocument
46
+ ?.inlineCompletionWithReferences?.inlineEditSupport ?? false;
47
+ }
48
+ get codeWhispererService() {
49
+ return this.amazonQServiceManager.getCodewhispererService();
50
+ }
51
+ /**
52
+ * This is a workaround to refresh the debounce timer when user is typing quickly.
53
+ * Adding debounce at function call doesnt work because server won't process second request until first request is processed.
54
+ * Also as a followup, ideally it should be a message/event publish/subscribe pattern instead of manual invocation like this
55
+ */
56
+ documentChanged() {
57
+ if (this.debounceTimeout) {
58
+ this.logging.info('[NEP] refresh timeout');
59
+ this.debounceTimeout.refresh();
60
+ }
61
+ if (this.isWaiting) {
62
+ this.hasDocumentChangedSinceInvocation = true;
63
+ }
64
+ }
65
+ async onEditCompletion(params, token) {
66
+ this.hasDocumentChangedSinceInvocation = false;
67
+ this.debounceTimeout = undefined;
68
+ // On every new completion request close current inflight session.
69
+ const currentSession = this.sessionManager.getCurrentSession();
70
+ if (currentSession && currentSession.state == 'REQUESTING' && !params.partialResultToken) {
71
+ // this REQUESTING state only happens when the session is initialized, which is rare
72
+ currentSession.discardInflightSessionOnNewInvocation = true;
73
+ }
74
+ if (this.cursorTracker) {
75
+ this.cursorTracker.trackPosition(params.textDocument.uri, params.position);
76
+ }
77
+ const textDocument = await this.workspace.getTextDocument(params.textDocument.uri);
78
+ if (!textDocument) {
79
+ this.logging.warn(`textDocument [${params.textDocument.uri}] not found`);
80
+ return constants_1.EMPTY_RESULT;
81
+ }
82
+ if (!(this.codeWhispererService instanceof codeWhispererService_1.CodeWhispererServiceToken)) {
83
+ return constants_1.EMPTY_RESULT;
84
+ }
85
+ // request for new session
86
+ const inferredLanguageId = (0, languageDetection_1.getSupportedLanguageId)(textDocument);
87
+ if (!inferredLanguageId) {
88
+ this.logging.log(`textDocument [${params.textDocument.uri}] with languageId [${textDocument.languageId}] not supported`);
89
+ return constants_1.EMPTY_RESULT;
90
+ }
91
+ if (params.partialResultToken && currentSession) {
92
+ // Close ACTIVE session. We shouldn't record Discard trigger decision for trigger with nextToken.
93
+ if (currentSession && currentSession.state === 'ACTIVE') {
94
+ this.sessionManager.discardSession(currentSession);
95
+ }
96
+ const newSession = this.sessionManager.createSession({
97
+ document: textDocument,
98
+ startPosition: params.position,
99
+ triggerType: 'AutoTrigger',
100
+ language: currentSession.language,
101
+ requestContext: currentSession.requestContext,
102
+ autoTriggerType: undefined,
103
+ triggerCharacter: '',
104
+ classifierResult: undefined,
105
+ classifierThreshold: undefined,
106
+ credentialStartUrl: currentSession.credentialStartUrl,
107
+ supplementalMetadata: currentSession.supplementalMetadata,
108
+ customizationArn: currentSession.customizationArn,
109
+ });
110
+ // subsequent paginated requests for current session
111
+ try {
112
+ const suggestionResponse = await this.codeWhispererService.generateSuggestions({
113
+ ...newSession.requestContext,
114
+ nextToken: `${params.partialResultToken}`,
115
+ });
116
+ return await this.processSuggestionResponse(suggestionResponse, newSession, true, params.context.selectedCompletionInfo?.range);
117
+ }
118
+ catch (error) {
119
+ return this.handleSuggestionsErrors(error, currentSession);
120
+ }
121
+ }
122
+ // TODO: telemetry, discarded suggestions
123
+ // The other easy way to do this is simply not return any suggestion (which is used when retry > 3)
124
+ const invokeWithRetry = async (attempt = 0) => {
125
+ return new Promise(async (resolve) => {
126
+ this.debounceTimeout = setTimeout(async () => {
127
+ try {
128
+ this.isWaiting = true;
129
+ const result = await this._invoke(params, token, textDocument, inferredLanguageId, currentSession).finally(() => {
130
+ this.isWaiting = false;
131
+ });
132
+ if (this.hasDocumentChangedSinceInvocation) {
133
+ if (attempt < constants_1.EDIT_STALE_RETRY_COUNT) {
134
+ this.logging.info(`EditCompletionHandler - Document changed during execution, retrying (attempt ${attempt + 1})`);
135
+ this.hasDocumentChangedSinceInvocation = false;
136
+ const retryResult = await invokeWithRetry(attempt + 1);
137
+ resolve(retryResult);
138
+ }
139
+ else {
140
+ this.logging.info('EditCompletionHandler - Max retries reached, returning empty result');
141
+ resolve(constants_1.EMPTY_RESULT);
142
+ }
143
+ }
144
+ else {
145
+ this.logging.info('EditCompletionHandler - No document changes, resolving result');
146
+ resolve(result);
147
+ }
148
+ }
149
+ finally {
150
+ this.debounceTimeout = undefined;
151
+ }
152
+ }, constants_1.EDIT_DEBOUNCE_INTERVAL_MS);
153
+ });
154
+ };
155
+ return invokeWithRetry();
156
+ }
157
+ async _invoke(params, token, textDocument, inferredLanguageId, currentSession) {
158
+ // Build request context
159
+ const isAutomaticLspTriggerKind = params.context.triggerKind == protocol_1.InlineCompletionTriggerKind.Automatic;
160
+ const maxResults = isAutomaticLspTriggerKind ? 1 : 5;
161
+ const fileContext = (0, codeWhispererService_1.getFileContext)({
162
+ textDocument,
163
+ inferredLanguageId,
164
+ position: params.position,
165
+ workspaceFolder: this.workspace.getWorkspaceFolder(textDocument.uri),
166
+ });
167
+ const workspaceState = workspaceFolderManager_1.WorkspaceFolderManager.getInstance()?.getWorkspaceState();
168
+ const workspaceId = workspaceState?.webSocketClient?.isConnected() ? workspaceState.workspaceId : undefined;
169
+ const qEditsTrigger = (0, trigger_1.shouldTriggerEdits)(this.codeWhispererService, fileContext, params, this.cursorTracker, this.recentEditsTracker, this.sessionManager, true);
170
+ if (!qEditsTrigger) {
171
+ return constants_1.EMPTY_RESULT;
172
+ }
173
+ const generateCompletionReq = {
174
+ fileContext: fileContext,
175
+ maxResults: maxResults,
176
+ predictionTypes: ['EDITS'],
177
+ workspaceId: workspaceId,
178
+ };
179
+ if (qEditsTrigger) {
180
+ generateCompletionReq.editorState = {
181
+ document: {
182
+ relativeFilePath: textDocument.uri,
183
+ programmingLanguage: {
184
+ languageName: generateCompletionReq.fileContext.programmingLanguage.languageName,
185
+ },
186
+ text: textDocument.getText(),
187
+ },
188
+ cursorState: {
189
+ position: {
190
+ line: params.position.line,
191
+ character: params.position.character,
192
+ },
193
+ },
194
+ };
195
+ }
196
+ const supplementalContext = await this.codeWhispererService.constructSupplementalContext(textDocument, params.position, this.workspace, this.recentEditsTracker, this.logging, token, params.openTabFilepaths, {
197
+ includeRecentEdits: true,
198
+ });
199
+ if (supplementalContext) {
200
+ generateCompletionReq.supplementalContexts = supplementalContext.items;
201
+ }
202
+ // Close ACTIVE session and record Discard trigger decision immediately
203
+ if (currentSession && currentSession.state === 'ACTIVE') {
204
+ // Emit user trigger decision at session close time for active session
205
+ this.sessionManager.discardSession(currentSession);
206
+ const streakLength = this.editsEnabled ? this.sessionManager.getAndUpdateStreakLength(false) : 0;
207
+ await (0, telemetry_1.emitUserTriggerDecisionTelemetry)(this.telemetry, this.telemetryService, currentSession, this.documentChangedListener.timeSinceLastUserModification, 0, 0, [], [], streakLength);
208
+ }
209
+ const newSession = this.sessionManager.createSession({
210
+ document: textDocument,
211
+ startPosition: params.position,
212
+ triggerType: isAutomaticLspTriggerKind ? 'AutoTrigger' : 'OnDemand',
213
+ language: fileContext.programmingLanguage.languageName,
214
+ requestContext: generateCompletionReq,
215
+ autoTriggerType: undefined,
216
+ triggerCharacter: '',
217
+ classifierResult: undefined,
218
+ classifierThreshold: undefined,
219
+ credentialStartUrl: this.credentialsProvider.getConnectionMetadata?.()?.sso?.startUrl ?? undefined,
220
+ supplementalMetadata: supplementalContext?.supContextData,
221
+ customizationArn: lsp_core_1.textUtils.undefinedIfEmpty(this.codeWhispererService.customizationArn),
222
+ });
223
+ try {
224
+ const suggestionResponse = await this.codeWhispererService.generateSuggestions(generateCompletionReq);
225
+ return await this.processSuggestionResponse(suggestionResponse, newSession, true, params.context.selectedCompletionInfo?.range);
226
+ }
227
+ catch (error) {
228
+ return this.handleSuggestionsErrors(error, newSession);
229
+ }
230
+ }
231
+ async processSuggestionResponse(suggestionResponse, session, isNewSession, selectionRange, textDocument) {
232
+ // TODO: we haven't decided how to do these telemetry for Edits suggestions
233
+ // codePercentageTracker.countInvocation(session.language)
234
+ // userWrittenCodeTracker?.recordUsageCount(session.language)
235
+ if (isNewSession) {
236
+ // Populate the session with information from codewhisperer response
237
+ session.suggestions = suggestionResponse.suggestions;
238
+ session.responseContext = suggestionResponse.responseContext;
239
+ session.codewhispererSessionId = suggestionResponse.responseContext.codewhispererSessionId;
240
+ session.timeToFirstRecommendation = new Date().getTime() - session.startTime;
241
+ session.suggestionType = suggestionResponse.suggestionType;
242
+ }
243
+ else {
244
+ session.suggestions = [...session.suggestions, ...suggestionResponse.suggestions];
245
+ }
246
+ // Emit service invocation telemetry for every request sent to backend
247
+ (0, telemetry_1.emitServiceInvocationTelemetry)(this.telemetry, session, suggestionResponse.responseContext.requestId);
248
+ // Discard previous inflight API response due to new trigger
249
+ if (session.discardInflightSessionOnNewInvocation) {
250
+ session.discardInflightSessionOnNewInvocation = false;
251
+ this.sessionManager.discardSession(session);
252
+ const streakLength = this.editsEnabled ? this.sessionManager.getAndUpdateStreakLength(false) : 0;
253
+ await (0, telemetry_1.emitUserTriggerDecisionTelemetry)(this.telemetry, this.telemetryService, session, this.documentChangedListener.timeSinceLastUserModification, 0, 0, [], [], streakLength);
254
+ }
255
+ // API response was recieved, we can activate session now
256
+ this.sessionManager.activateSession(session);
257
+ // Process suggestions to apply Empty or Filter filters
258
+ const filteredSuggestions = suggestionResponse.suggestions
259
+ // Empty suggestion filter
260
+ .filter(suggestion => {
261
+ if (suggestion.content === '') {
262
+ session.setSuggestionState(suggestion.itemId, 'Empty');
263
+ return false;
264
+ }
265
+ return true;
266
+ })
267
+ // References setting filter
268
+ .filter(suggestion => {
269
+ // State to track whether code with references should be included in
270
+ // the response. No locking or concurrency controls, filtering is done
271
+ // right before returning and is only guaranteed to be consistent within
272
+ // the context of a single response.
273
+ const { includeSuggestionsWithCodeReferences } = this.amazonQServiceManager.getConfiguration();
274
+ if (includeSuggestionsWithCodeReferences) {
275
+ return true;
276
+ }
277
+ if (suggestion.references == null || suggestion.references.length === 0) {
278
+ return true;
279
+ }
280
+ // Filter out suggestions that have references when includeSuggestionsWithCodeReferences setting is true
281
+ session.setSuggestionState(suggestion.itemId, 'Filter');
282
+ return false;
283
+ });
284
+ return {
285
+ items: suggestionResponse.suggestions
286
+ .map(suggestion => {
287
+ // Check if this suggestion is similar to a previously rejected edit
288
+ const isSimilarToRejected = this.rejectedEditTracker.isSimilarToRejected(suggestion.content, textDocument?.uri || '');
289
+ if (isSimilarToRejected) {
290
+ // Mark as rejected in the session
291
+ session.setSuggestionState(suggestion.itemId, 'Reject');
292
+ this.logging.debug(`[EDIT_PREDICTION] Filtered out suggestion similar to previously rejected edit`);
293
+ // Return empty item that will be filtered out
294
+ return {
295
+ insertText: '',
296
+ isInlineEdit: true,
297
+ itemId: suggestion.itemId,
298
+ };
299
+ }
300
+ return {
301
+ insertText: suggestion.content,
302
+ isInlineEdit: true,
303
+ itemId: suggestion.itemId,
304
+ };
305
+ })
306
+ .filter(item => item.insertText !== ''),
307
+ sessionId: session.id,
308
+ partialResultToken: suggestionResponse.responseContext.nextToken,
309
+ };
310
+ }
311
+ handleSuggestionsErrors(error, session) {
312
+ this.logging.log('Recommendation failure: ' + error);
313
+ (0, telemetry_1.emitServiceInvocationFailure)(this.telemetry, session, error);
314
+ this.sessionManager.closeSession(session);
315
+ let translatedError = error;
316
+ if ((0, utils_1.hasConnectionExpired)(error)) {
317
+ translatedError = new errors_1.AmazonQServiceConnectionExpiredError((0, utils_1.getErrorMessage)(error));
318
+ }
319
+ if (translatedError instanceof errors_1.AmazonQError) {
320
+ throw new protocol_1.ResponseError(protocol_1.LSPErrorCodes.RequestFailed, translatedError.message || 'Error processing suggestion requests', {
321
+ awsErrorCode: translatedError.code,
322
+ });
323
+ }
324
+ return constants_1.EMPTY_RESULT;
325
+ }
326
+ }
327
+ exports.EditCompletionHandler = EditCompletionHandler;
328
+ //# sourceMappingURL=editCompletionHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editCompletionHandler.js","sourceRoot":"","sources":["../../../src/language-server/inline-completion/editCompletionHandler.ts"],"names":[],"mappings":"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"}