@aws/lsp-codewhisperer 0.0.28 → 0.0.29
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 +26 -0
- package/README.md +3 -0
- package/out/client/token/codewhisperer.d.ts +1 -1
- package/out/constants.d.ts +3 -0
- package/out/constants.js +4 -1
- package/out/constants.js.map +1 -1
- package/out/language-server/amazonQServiceManager/AmazonQTokenServiceManager.d.ts +90 -0
- package/out/language-server/amazonQServiceManager/AmazonQTokenServiceManager.js +466 -0
- package/out/language-server/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -0
- package/out/language-server/amazonQServiceManager/BaseAmazonQServiceManager.d.ts +5 -0
- package/out/language-server/amazonQServiceManager/BaseAmazonQServiceManager.js +3 -0
- package/out/language-server/amazonQServiceManager/BaseAmazonQServiceManager.js.map +1 -0
- package/out/language-server/amazonQServiceManager/errors.d.ts +28 -0
- package/out/language-server/amazonQServiceManager/errors.js +70 -0
- package/out/language-server/amazonQServiceManager/errors.js.map +1 -0
- package/out/language-server/amazonQServiceManager/qDeveloperProfiles.js +7 -7
- package/out/language-server/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
- package/out/language-server/chat/chatController.d.ts +1 -1
- package/out/language-server/chat/chatController.js +17 -1
- package/out/language-server/chat/chatController.js.map +1 -1
- package/out/language-server/chat/chatSessionManagementService.d.ts +3 -8
- package/out/language-server/chat/chatSessionManagementService.js +5 -57
- package/out/language-server/chat/chatSessionManagementService.js.map +1 -1
- package/out/language-server/chat/chatSessionService.d.ts +2 -3
- package/out/language-server/chat/chatSessionService.js +7 -21
- package/out/language-server/chat/chatSessionService.js.map +1 -1
- package/out/language-server/chat/contexts/triggerContext.d.ts +1 -1
- package/out/language-server/chat/contexts/triggerContext.js +2 -1
- package/out/language-server/chat/contexts/triggerContext.js.map +1 -1
- package/out/language-server/chat/telemetry/chatTelemetryController.js +88 -81
- package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
- package/out/language-server/codeWhispererSecurityScanServer.d.ts +2 -4
- package/out/language-server/codeWhispererSecurityScanServer.js +24 -11
- package/out/language-server/codeWhispererSecurityScanServer.js.map +1 -1
- package/out/language-server/codeWhispererServer.js +90 -37
- package/out/language-server/codeWhispererServer.js.map +1 -1
- package/out/language-server/codeWhispererService.d.ts +8 -1
- package/out/language-server/codeWhispererService.js +39 -16
- package/out/language-server/codeWhispererService.js.map +1 -1
- package/out/language-server/configuration/qConfigurationServer.d.ts +5 -9
- package/out/language-server/configuration/qConfigurationServer.js +23 -35
- package/out/language-server/configuration/qConfigurationServer.js.map +1 -1
- package/out/language-server/netTransformServer.js +2 -2
- package/out/language-server/netTransformServer.js.map +1 -1
- package/out/language-server/proxy-server.js +3 -14
- package/out/language-server/proxy-server.js.map +1 -1
- package/out/language-server/qChatServer.d.ts +2 -4
- package/out/language-server/qChatServer.js +30 -16
- package/out/language-server/qChatServer.js.map +1 -1
- package/out/language-server/securityScan/constants.d.ts +3 -0
- package/out/language-server/securityScan/constants.js +7 -0
- package/out/language-server/securityScan/constants.js.map +1 -0
- package/out/language-server/securityScan/securityScanHandler.d.ts +5 -5
- package/out/language-server/securityScan/securityScanHandler.js +22 -12
- package/out/language-server/securityScan/securityScanHandler.js.map +1 -1
- package/out/language-server/telemetry/codeDiffTracker.d.ts +1 -1
- package/out/language-server/telemetry/codeDiffTracker.js +1 -1
- package/out/language-server/telemetry/codeDiffTracker.js.map +1 -1
- package/out/language-server/telemetryService.d.ts +7 -5
- package/out/language-server/telemetryService.js +29 -20
- package/out/language-server/telemetryService.js.map +1 -1
- package/out/language-server/testUtils.d.ts +3 -0
- package/out/language-server/testUtils.js +12 -1
- package/out/language-server/testUtils.js.map +1 -1
- package/out/language-server/utils.d.ts +2 -0
- package/out/language-server/utils.js +11 -0
- package/out/language-server/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -15,6 +15,7 @@ class ChatTelemetryController {
|
|
|
15
15
|
#customizationInfoByTabAndMessageId;
|
|
16
16
|
#credentialsProvider;
|
|
17
17
|
#telemetry;
|
|
18
|
+
#logging;
|
|
18
19
|
#codeDiffTracker;
|
|
19
20
|
#telemetryService;
|
|
20
21
|
constructor(features, telemetryService) {
|
|
@@ -22,8 +23,9 @@ class ChatTelemetryController {
|
|
|
22
23
|
this.#currentTriggerByTabId = {};
|
|
23
24
|
this.#customizationInfoByTabAndMessageId = {};
|
|
24
25
|
this.#telemetry = features.telemetry;
|
|
26
|
+
this.#logging = features.logging;
|
|
25
27
|
this.#credentialsProvider = features.credentialsProvider;
|
|
26
|
-
this.#telemetry.onClientTelemetry(params => this.#handleClientTelemetry(params));
|
|
28
|
+
this.#telemetry.onClientTelemetry(async (params) => await this.#handleClientTelemetry(params));
|
|
27
29
|
this.#codeDiffTracker = new codeDiffTracker_1.CodeDiffTracker(features.workspace, features.logging, (entry, percentage) => this.emitModifyCodeMetric(entry, percentage));
|
|
28
30
|
this.#telemetryService = telemetryService;
|
|
29
31
|
}
|
|
@@ -194,88 +196,93 @@ class ChatTelemetryController {
|
|
|
194
196
|
}
|
|
195
197
|
}
|
|
196
198
|
async #handleClientTelemetry(params) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
199
|
+
try {
|
|
200
|
+
if ((0, clientTelemetry_1.isClientTelemetryEvent)(params)) {
|
|
201
|
+
switch (params.name) {
|
|
202
|
+
case clientTelemetry_1.ChatUIEventName.AddMessage:
|
|
203
|
+
// we are trusting that the notification comes just right before the request
|
|
204
|
+
this.#currentTriggerByTabId[params.tabId] = params.triggerType;
|
|
205
|
+
break;
|
|
206
|
+
case clientTelemetry_1.ChatUIEventName.TabAdd:
|
|
207
|
+
this.#tabTelemetryInfoByTabId[params.tabId] = {
|
|
208
|
+
...this.#tabTelemetryInfoByTabId[params.tabId],
|
|
209
|
+
startTrigger: {
|
|
210
|
+
triggerType: params.triggerType,
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
break;
|
|
214
|
+
case clientTelemetry_1.ChatUIEventName.EnterFocusChat:
|
|
215
|
+
this.emitChatMetric({
|
|
216
|
+
name: types_1.ChatTelemetryEventName.EnterFocusChat,
|
|
217
|
+
data: {},
|
|
218
|
+
});
|
|
219
|
+
break;
|
|
220
|
+
case clientTelemetry_1.ChatUIEventName.ExitFocusChat:
|
|
221
|
+
this.emitChatMetric({
|
|
222
|
+
name: types_1.ChatTelemetryEventName.ExitFocusChat,
|
|
223
|
+
data: {},
|
|
224
|
+
});
|
|
225
|
+
break;
|
|
226
|
+
case clientTelemetry_1.ChatUIEventName.Vote:
|
|
227
|
+
const voteData = {
|
|
228
|
+
cwsprChatMessageId: params.messageId,
|
|
229
|
+
cwsprChatInteractionType: params.vote === clientTelemetry_1.RelevancyVoteType.UP
|
|
230
|
+
? types_1.ChatInteractionType.Upvote
|
|
231
|
+
: types_1.ChatInteractionType.Downvote,
|
|
232
|
+
codewhispererCustomizationArn: this.getCustomizationId(params.tabId, params.messageId),
|
|
233
|
+
};
|
|
234
|
+
await this.#telemetryService.emitChatInteractWithMessage(voteData, {
|
|
235
|
+
conversationId: this.getConversationId(params.tabId),
|
|
236
|
+
});
|
|
237
|
+
break;
|
|
238
|
+
case clientTelemetry_1.ChatUIEventName.InsertToCursorPosition:
|
|
239
|
+
case clientTelemetry_1.ChatUIEventName.CopyToClipboard:
|
|
240
|
+
if (params.name === clientTelemetry_1.ChatUIEventName.InsertToCursorPosition) {
|
|
241
|
+
this.#enqueueCodeDiffEntry(params);
|
|
242
|
+
}
|
|
243
|
+
const interactData = {
|
|
244
|
+
cwsprChatMessageId: params.messageId,
|
|
245
|
+
cwsprChatInteractionType: params.name === clientTelemetry_1.ChatUIEventName.InsertToCursorPosition
|
|
246
|
+
? types_1.ChatInteractionType.InsertAtCursor
|
|
247
|
+
: types_1.ChatInteractionType.CopySnippet,
|
|
248
|
+
cwsprChatAcceptedCharactersLength: params.code?.length ?? 0,
|
|
249
|
+
cwsprChatHasReference: Boolean(params.referenceTrackerInformation?.length),
|
|
250
|
+
cwsprChatCodeBlockIndex: params.codeBlockIndex,
|
|
251
|
+
cwsprChatTotalCodeBlocks: params.totalCodeBlocks,
|
|
252
|
+
codewhispererCustomizationArn: this.getCustomizationId(params.tabId, params.messageId),
|
|
253
|
+
};
|
|
254
|
+
await this.#telemetryService.emitChatInteractWithMessage(interactData, {
|
|
255
|
+
conversationId: this.getConversationId(params.tabId),
|
|
256
|
+
acceptedLineCount: params.name === clientTelemetry_1.ChatUIEventName.InsertToCursorPosition
|
|
257
|
+
? params.code?.split('\n').length
|
|
258
|
+
: undefined,
|
|
259
|
+
});
|
|
260
|
+
break;
|
|
261
|
+
case clientTelemetry_1.ChatUIEventName.LinkClick:
|
|
262
|
+
case clientTelemetry_1.ChatUIEventName.InfoLinkClick:
|
|
263
|
+
const clickBodyLinkData = {
|
|
264
|
+
cwsprChatMessageId: params.messageId,
|
|
265
|
+
cwsprChatInteractionType: types_1.ChatInteractionType.ClickBodyLink,
|
|
266
|
+
cwsprChatInteractionTarget: params.link,
|
|
267
|
+
codewhispererCustomizationArn: this.getCustomizationId(params.tabId, params.messageId),
|
|
268
|
+
};
|
|
269
|
+
await this.emitInteractWithMessageMetric(params.tabId, clickBodyLinkData);
|
|
270
|
+
break;
|
|
271
|
+
case clientTelemetry_1.ChatUIEventName.SourceLinkClick:
|
|
272
|
+
const clickLinkData = {
|
|
273
|
+
cwsprChatMessageId: params.messageId,
|
|
274
|
+
cwsprChatInteractionType: types_1.ChatInteractionType.ClickLink,
|
|
275
|
+
cwsprChatInteractionTarget: params.link,
|
|
276
|
+
codewhispererCustomizationArn: this.getCustomizationId(params.tabId, params.messageId),
|
|
277
|
+
};
|
|
278
|
+
await this.emitInteractWithMessageMetric(params.tabId, clickLinkData);
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
277
281
|
}
|
|
278
282
|
}
|
|
283
|
+
catch (err) {
|
|
284
|
+
this.#logging.log(`Exception Thrown from ChatTelemetryController: ${err}`);
|
|
285
|
+
}
|
|
279
286
|
}
|
|
280
287
|
dispose() {
|
|
281
288
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatTelemetryController.js","sourceRoot":"","sources":["../../../../src/language-server/chat/telemetry/chatTelemetryController.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"chatTelemetryController.js","sourceRoot":"","sources":["../../../../src/language-server/chat/telemetry/chatTelemetryController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { SDKInitializator } from '@aws/language-server-runtimes/server-interface';
|
|
4
|
-
export declare const SecurityScanServerToken: (service: (credentialsProvider: CredentialsProvider, workspace: Workspace, awsQRegion: string, awsQEndpointUrl: string, sdkInitializator: SDKInitializator) => CodeWhispererServiceToken) => Server;
|
|
1
|
+
import { Server } from '@aws/language-server-runtimes/server-interface';
|
|
2
|
+
export declare const SecurityScanServerToken: () => Server;
|
|
@@ -8,15 +8,18 @@ const languageDetection_1 = require("./languageDetection");
|
|
|
8
8
|
const securityScanDiagnosticsProvider_1 = require("./securityScan/securityScanDiagnosticsProvider");
|
|
9
9
|
const securityScanHandler_1 = require("./securityScan/securityScanHandler");
|
|
10
10
|
const utils_1 = require("./utils");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const uuid_1 = require("uuid");
|
|
12
|
+
const AmazonQTokenServiceManager_1 = require("./amazonQServiceManager/AmazonQTokenServiceManager");
|
|
13
13
|
const RunSecurityScanCommand = 'aws/codewhisperer/runSecurityScan';
|
|
14
14
|
const CancelSecurityScanCommand = 'aws/codewhisperer/cancelSecurityScan';
|
|
15
|
-
const SecurityScanServerToken = (
|
|
16
|
-
|
|
15
|
+
const SecurityScanServerToken = () => ({ credentialsProvider, workspace, logging, lsp, telemetry, runtime, sdkInitializator }) => {
|
|
16
|
+
let amazonQServiceManager;
|
|
17
|
+
let scanHandler;
|
|
17
18
|
const diagnosticsProvider = new securityScanDiagnosticsProvider_1.default(lsp, logging);
|
|
18
|
-
const scanHandler = new securityScanHandler_1.SecurityScanHandler(codewhispererclient, workspace, logging);
|
|
19
19
|
const runSecurityScan = async (params, token) => {
|
|
20
|
+
/**
|
|
21
|
+
* Only project scans are supported at this time
|
|
22
|
+
*/
|
|
20
23
|
logging.log(`Starting security scan`);
|
|
21
24
|
await diagnosticsProvider.resetDiagnostics();
|
|
22
25
|
let jobStatus;
|
|
@@ -82,8 +85,9 @@ const SecurityScanServerToken = (service) => ({ credentialsProvider, workspace,
|
|
|
82
85
|
*/
|
|
83
86
|
const uploadStartTime = perf_hooks_1.performance.now();
|
|
84
87
|
let artifactMap = {};
|
|
88
|
+
const scanName = (0, uuid_1.v4)();
|
|
85
89
|
try {
|
|
86
|
-
artifactMap = await scanHandler.createCodeResourcePresignedUrlHandler(truncation.zipFileBuffer);
|
|
90
|
+
artifactMap = await scanHandler.createCodeResourcePresignedUrlHandler(truncation.zipFileBuffer, scanName);
|
|
87
91
|
}
|
|
88
92
|
catch (error) {
|
|
89
93
|
logging.log(`Error: Failed to upload code artifacts ${error}`);
|
|
@@ -98,7 +102,7 @@ const SecurityScanServerToken = (service) => ({ credentialsProvider, workspace,
|
|
|
98
102
|
* Step 3: Create scan job
|
|
99
103
|
*/
|
|
100
104
|
serviceInvocationStartTime = perf_hooks_1.performance.now();
|
|
101
|
-
const scanJob = await scanHandler.createScanJob(artifactMap, document.languageId.toLowerCase());
|
|
105
|
+
const scanJob = await scanHandler.createScanJob(artifactMap, document.languageId.toLowerCase(), scanName);
|
|
102
106
|
logging.log(`Created security scan job id: ${scanJob.jobId}`);
|
|
103
107
|
securityScanTelemetryEntry.codewhispererCodeScanJobId = scanJob.jobId;
|
|
104
108
|
scanHandler.throwIfCancelled(token);
|
|
@@ -176,9 +180,6 @@ const SecurityScanServerToken = (service) => ({ credentialsProvider, workspace,
|
|
|
176
180
|
return;
|
|
177
181
|
};
|
|
178
182
|
const onInitializeHandler = (params) => {
|
|
179
|
-
codewhispererclient.updateClientConfig({
|
|
180
|
-
customUserAgent: (0, telemetryUtils_1.getUserAgent)(params, runtime.serverInfo),
|
|
181
|
-
});
|
|
182
183
|
return {
|
|
183
184
|
capabilities: {
|
|
184
185
|
executeCommandProvider: {
|
|
@@ -187,8 +188,20 @@ const SecurityScanServerToken = (service) => ({ credentialsProvider, workspace,
|
|
|
187
188
|
},
|
|
188
189
|
};
|
|
189
190
|
};
|
|
191
|
+
const onInitializedHandler = () => {
|
|
192
|
+
amazonQServiceManager = AmazonQTokenServiceManager_1.AmazonQTokenServiceManager.getInstance({
|
|
193
|
+
lsp,
|
|
194
|
+
logging,
|
|
195
|
+
runtime,
|
|
196
|
+
credentialsProvider,
|
|
197
|
+
sdkInitializator,
|
|
198
|
+
workspace,
|
|
199
|
+
});
|
|
200
|
+
scanHandler = new securityScanHandler_1.SecurityScanHandler(amazonQServiceManager, workspace, logging);
|
|
201
|
+
};
|
|
190
202
|
lsp.onExecuteCommand(onExecuteCommandHandler);
|
|
191
203
|
lsp.addInitializer(onInitializeHandler);
|
|
204
|
+
lsp.onInitialized(onInitializedHandler);
|
|
192
205
|
lsp.onDidChangeTextDocument(async (p) => {
|
|
193
206
|
const textDocument = await workspace.getTextDocument(p.textDocument.uri);
|
|
194
207
|
const languageId = (0, languageDetection_1.getSupportedLanguageId)(textDocument, languageDetection_1.supportedSecurityScanLanguages);
|
|
@@ -206,7 +219,7 @@ const SecurityScanServerToken = (service) => ({ credentialsProvider, workspace,
|
|
|
206
219
|
logging.log('SecurityScan server has been initialized');
|
|
207
220
|
return () => {
|
|
208
221
|
// dispose function
|
|
209
|
-
scanHandler
|
|
222
|
+
scanHandler?.tokenSource.dispose();
|
|
210
223
|
};
|
|
211
224
|
};
|
|
212
225
|
exports.SecurityScanServerToken = SecurityScanServerToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeWhispererSecurityScanServer.js","sourceRoot":"","sources":["../../src/language-server/codeWhispererSecurityScanServer.ts"],"names":[],"mappings":";;;AAQA,2CAAwC;AACxC,6BAAmC;AAGnC,qFAAiF;AACjF,2DAA4F;AAC5F,oGAA4F;AAC5F,4EAAoG;AAGpG,mCAAoD;
|
|
1
|
+
{"version":3,"file":"codeWhispererSecurityScanServer.js","sourceRoot":"","sources":["../../src/language-server/codeWhispererSecurityScanServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,8 @@ const lsp_core_1 = require("@aws/lsp-core");
|
|
|
16
16
|
const telemetryService_1 = require("./telemetryService");
|
|
17
17
|
const codeDiffTracker_1 = require("./telemetry/codeDiffTracker");
|
|
18
18
|
const constants_1 = require("../constants");
|
|
19
|
+
const AmazonQTokenServiceManager_1 = require("./amazonQServiceManager/AmazonQTokenServiceManager");
|
|
20
|
+
const errors_1 = require("./amazonQServiceManager/errors");
|
|
19
21
|
const EMPTY_RESULT = { sessionId: '', items: [] };
|
|
20
22
|
exports.CONTEXT_CHARACTERS_LIMIT = 10240;
|
|
21
23
|
// Both clients (token, sigv4) define their own types, this return value needs to match both of them.
|
|
@@ -154,19 +156,20 @@ const mergeSuggestionsWithRightContext = (rightFileContext, suggestions, range)
|
|
|
154
156
|
const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, workspace, telemetry, logging, runtime, sdkInitializator }) => {
|
|
155
157
|
let lastUserModificationTime;
|
|
156
158
|
let timeSinceLastUserModification = 0;
|
|
159
|
+
let extraContext = undefined;
|
|
157
160
|
const sessionManager = sessionManager_1.SessionManager.getInstance();
|
|
158
|
-
const awsQRegion = runtime.getConfiguration(
|
|
159
|
-
const awsQEndpointUrl = runtime.getConfiguration(
|
|
160
|
-
const
|
|
161
|
-
|
|
161
|
+
const awsQRegion = runtime.getConfiguration(constants_1.AWS_Q_REGION_ENV_VAR) ?? constants_1.DEFAULT_AWS_Q_REGION;
|
|
162
|
+
const awsQEndpointUrl = runtime.getConfiguration(constants_1.AWS_Q_ENDPOINT_URL_ENV_VAR) ?? constants_1.DEFAULT_AWS_Q_ENDPOINT_URL;
|
|
163
|
+
const fallbackCodeWhispererService = service(credentialsProvider, workspace, awsQRegion, awsQEndpointUrl, sdkInitializator);
|
|
164
|
+
// AmazonQTokenServiceManager and TelemetryService are initialized in `onInitialized` handler to make sure Language Server connection is started
|
|
165
|
+
let amazonQServiceManager;
|
|
166
|
+
let telemetryService;
|
|
167
|
+
const serviceType = fallbackCodeWhispererService.constructor.name;
|
|
162
168
|
lsp.addInitializer((params) => {
|
|
163
|
-
|
|
169
|
+
// TODO: Review configuration options expected in other features
|
|
170
|
+
fallbackCodeWhispererService.updateClientConfig({
|
|
164
171
|
customUserAgent: (0, telemetryUtils_1.getUserAgent)(params, runtime.serverInfo),
|
|
165
172
|
});
|
|
166
|
-
telemetryService.updateClientConfig({
|
|
167
|
-
customUserAgent: (0, telemetryUtils_1.getUserAgent)(params, runtime.serverInfo),
|
|
168
|
-
});
|
|
169
|
-
telemetryService.updateUserContext((0, telemetryUtils_1.makeUserContextObject)(params, runtime.platform, 'INLINE'));
|
|
170
173
|
return {
|
|
171
174
|
capabilities: {},
|
|
172
175
|
};
|
|
@@ -176,19 +179,9 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
176
179
|
// right before returning and is only guaranteed to be consistent within
|
|
177
180
|
// the context of a single response.
|
|
178
181
|
let includeSuggestionsWithCodeReferences = false;
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
sessionId: entry.sessionId,
|
|
183
|
-
requestId: entry.requestId,
|
|
184
|
-
languageId: entry.languageId,
|
|
185
|
-
customizationArn: entry.customizationArn,
|
|
186
|
-
timestamp: new Date(),
|
|
187
|
-
acceptedCharacterCount: entry.originalString.length,
|
|
188
|
-
modificationPercentage: percentage,
|
|
189
|
-
unmodifiedAcceptedCharacterCount: unmodifiedAcceptedCharacterCount,
|
|
190
|
-
});
|
|
191
|
-
});
|
|
182
|
+
// CodePercentage and codeDiff tracker have a dependency on TelemetryService, so initialization is also delayed to `onInitialized` handler
|
|
183
|
+
let codePercentageTracker;
|
|
184
|
+
let codeDiffTracker;
|
|
192
185
|
const onInlineCompletionHandler = async (params, token) => {
|
|
193
186
|
// On every new completion request close current inflight session.
|
|
194
187
|
const currentSession = sessionManager.getCurrentSession();
|
|
@@ -197,6 +190,7 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
197
190
|
// User Trigger Decision will be reported at the time of processing API response in the callback below.
|
|
198
191
|
sessionManager.discardSession(currentSession);
|
|
199
192
|
}
|
|
193
|
+
// prettier-ignore
|
|
200
194
|
return workspace.getTextDocument(params.textDocument.uri).then(async (textDocument) => {
|
|
201
195
|
if (!textDocument) {
|
|
202
196
|
logging.log(`textDocument [${params.textDocument.uri}] not found`);
|
|
@@ -231,6 +225,7 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
231
225
|
!autoTriggerResult.shouldTrigger) {
|
|
232
226
|
return EMPTY_RESULT;
|
|
233
227
|
}
|
|
228
|
+
const codeWhispererService = amazonQServiceManager.getCodewhispererService();
|
|
234
229
|
// supplementalContext available only via token authentication
|
|
235
230
|
const supplementalContextPromise = codeWhispererService instanceof codeWhispererService_1.CodeWhispererServiceToken
|
|
236
231
|
? (0, supplementalContextUtil_1.fetchSupplementalContext)(textDocument, params.position, workspace, logging, token)
|
|
@@ -268,8 +263,11 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
268
263
|
supplementalMetadata: supplementalContext,
|
|
269
264
|
customizationArn: lsp_core_1.textUtils.undefinedIfEmpty(codeWhispererService.customizationArn),
|
|
270
265
|
});
|
|
271
|
-
|
|
272
|
-
|
|
266
|
+
// Add extra context to request context
|
|
267
|
+
if (extraContext) {
|
|
268
|
+
requestContext.fileContext.leftFileContent = extraContext + '\n' + requestContext.fileContext.leftFileContent;
|
|
269
|
+
}
|
|
270
|
+
return codeWhispererService.generateSuggestions({
|
|
273
271
|
...requestContext,
|
|
274
272
|
fileContext: {
|
|
275
273
|
...requestContext.fileContext,
|
|
@@ -345,14 +343,26 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
345
343
|
}
|
|
346
344
|
return { items: suggestionsWithRightContext, sessionId: newSession.id };
|
|
347
345
|
})
|
|
348
|
-
.catch(
|
|
346
|
+
.catch(error => {
|
|
349
347
|
// TODO, handle errors properly
|
|
350
|
-
logging.log('Recommendation failure: ' +
|
|
351
|
-
emitServiceInvocationFailure(telemetry, newSession,
|
|
348
|
+
logging.log('Recommendation failure: ' + error);
|
|
349
|
+
emitServiceInvocationFailure(telemetry, newSession, error);
|
|
352
350
|
// TODO: check if we can/should emit UserTriggerDecision
|
|
353
351
|
sessionManager.closeSession(newSession);
|
|
352
|
+
if (error instanceof errors_1.AmazonQError) {
|
|
353
|
+
throw error;
|
|
354
|
+
}
|
|
354
355
|
return EMPTY_RESULT;
|
|
355
356
|
});
|
|
357
|
+
})
|
|
358
|
+
.catch(error => {
|
|
359
|
+
logging.log('onInlineCompletionHandler error:' + error);
|
|
360
|
+
if (error instanceof errors_1.AmazonQError) {
|
|
361
|
+
throw new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, error.message || 'Error processing suggestion requests', {
|
|
362
|
+
awsErrorCode: error.code,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
return EMPTY_RESULT;
|
|
356
366
|
});
|
|
357
367
|
};
|
|
358
368
|
// Schedule tracker for UserModification Telemetry event
|
|
@@ -400,36 +410,79 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
400
410
|
};
|
|
401
411
|
const updateConfiguration = async () => {
|
|
402
412
|
try {
|
|
413
|
+
// Currently can't hook AmazonQTokenServiceManager.handleDidChangeConfiguration to lsp listenre directly
|
|
414
|
+
// as it will override listeners from each consuming Server.
|
|
415
|
+
// TODO: refactor configuration listener in Server and AmazonQTokenServiceManager in runtimes.
|
|
416
|
+
await amazonQServiceManager.handleDidChangeConfiguration();
|
|
403
417
|
const qConfig = await lsp.workspace.getConfiguration(qConfigurationServer_1.Q_CONFIGURATION_SECTION);
|
|
404
418
|
if (qConfig) {
|
|
405
|
-
|
|
419
|
+
fallbackCodeWhispererService.customizationArn = lsp_core_1.textUtils.undefinedIfEmpty(qConfig.customization);
|
|
406
420
|
codePercentageTracker.customizationArn = lsp_core_1.textUtils.undefinedIfEmpty(qConfig.customization);
|
|
407
|
-
logging.log(`Inline completion configuration updated to use ${
|
|
421
|
+
logging.log(`Inline completion configuration updated to use ${fallbackCodeWhispererService.customizationArn}`);
|
|
408
422
|
/*
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
423
|
+
The flag enableTelemetryEventsToDestination is set to true temporarily. It's value will be determined through destination
|
|
424
|
+
configuration post all events migration to STE. It'll be replaced by qConfig['enableTelemetryEventsToDestination'] === true
|
|
425
|
+
*/
|
|
412
426
|
// const enableTelemetryEventsToDestination = true
|
|
413
427
|
// telemetryService.updateEnableTelemetryEventsToDestination(enableTelemetryEventsToDestination)
|
|
414
428
|
const optOutTelemetryPreference = qConfig['optOutTelemetry'] === true ? 'OPTOUT' : 'OPTIN';
|
|
415
429
|
telemetryService.updateOptOutPreference(optOutTelemetryPreference);
|
|
430
|
+
extraContext = qConfig.inlineSuggestions?.extraContext;
|
|
416
431
|
}
|
|
417
432
|
const config = await lsp.workspace.getConfiguration('aws.codeWhisperer');
|
|
418
433
|
if (!config)
|
|
419
434
|
return;
|
|
420
435
|
includeSuggestionsWithCodeReferences = config['includeSuggestionsWithCodeReferences'] === true;
|
|
421
436
|
logging.log(`Configuration updated to ${includeSuggestionsWithCodeReferences ? 'include' : 'exclude'} suggestions with code references`);
|
|
422
|
-
|
|
437
|
+
fallbackCodeWhispererService.shareCodeWhispererContentWithAWS =
|
|
423
438
|
config['shareCodeWhispererContentWithAWS'] === true;
|
|
424
|
-
logging.log(`Configuration updated to ${
|
|
439
|
+
logging.log(`Configuration updated to ${fallbackCodeWhispererService.shareCodeWhispererContentWithAWS ? 'share' : 'not share'} Amazon Q content with AWS`);
|
|
425
440
|
}
|
|
426
441
|
catch (error) {
|
|
427
442
|
logging.log(`Error in GetConfiguration: ${error}`);
|
|
428
443
|
}
|
|
429
444
|
};
|
|
445
|
+
const onInitializedHandler = async () => {
|
|
446
|
+
if (serviceType === 'CodeWhispererServiceToken') {
|
|
447
|
+
amazonQServiceManager = AmazonQTokenServiceManager_1.AmazonQTokenServiceManager.getInstance({
|
|
448
|
+
lsp,
|
|
449
|
+
logging,
|
|
450
|
+
credentialsProvider,
|
|
451
|
+
sdkInitializator,
|
|
452
|
+
workspace,
|
|
453
|
+
runtime,
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
// Fallback to default passed service factory for IAM credentials type
|
|
458
|
+
amazonQServiceManager = {
|
|
459
|
+
handleDidChangeConfiguration: async () => { },
|
|
460
|
+
getCodewhispererService: () => {
|
|
461
|
+
return fallbackCodeWhispererService;
|
|
462
|
+
},
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
const clientParams = (0, utils_1.safeGet)(lsp.getClientInitializeParams(), new errors_1.AmazonQServiceInitializationError('TelemetryService initialized before LSP connection was initialized.'));
|
|
466
|
+
telemetryService = new telemetryService_1.TelemetryService(amazonQServiceManager, credentialsProvider, telemetry, logging);
|
|
467
|
+
telemetryService.updateUserContext((0, telemetryUtils_1.makeUserContextObject)(clientParams, runtime.platform, 'INLINE'));
|
|
468
|
+
codePercentageTracker = new codePercentage_1.CodePercentageTracker(telemetryService);
|
|
469
|
+
codeDiffTracker = new codeDiffTracker_1.CodeDiffTracker(workspace, logging, async (entry, percentage, unmodifiedAcceptedCharacterCount) => {
|
|
470
|
+
await telemetryService.emitUserModificationEvent({
|
|
471
|
+
sessionId: entry.sessionId,
|
|
472
|
+
requestId: entry.requestId,
|
|
473
|
+
languageId: entry.languageId,
|
|
474
|
+
customizationArn: entry.customizationArn,
|
|
475
|
+
timestamp: new Date(),
|
|
476
|
+
acceptedCharacterCount: entry.originalString.length,
|
|
477
|
+
modificationPercentage: percentage,
|
|
478
|
+
unmodifiedAcceptedCharacterCount: unmodifiedAcceptedCharacterCount,
|
|
479
|
+
});
|
|
480
|
+
});
|
|
481
|
+
await updateConfiguration();
|
|
482
|
+
};
|
|
430
483
|
lsp.extensions.onInlineCompletionWithReferences(onInlineCompletionHandler);
|
|
431
484
|
lsp.extensions.onLogInlineCompletionSessionResults(onLogInlineCompletionSessionResultsHandler);
|
|
432
|
-
lsp.onInitialized(
|
|
485
|
+
lsp.onInitialized(onInitializedHandler);
|
|
433
486
|
lsp.didChangeConfiguration(updateConfiguration);
|
|
434
487
|
lsp.onDidChangeTextDocument(async (p) => {
|
|
435
488
|
const textDocument = await workspace.getTextDocument(p.textDocument.uri);
|
|
@@ -448,8 +501,8 @@ const CodewhispererServerFactory = (service) => ({ credentialsProvider, lsp, wor
|
|
|
448
501
|
});
|
|
449
502
|
logging.log('Amazon Q Inline Suggestion server has been initialised');
|
|
450
503
|
return async () => {
|
|
451
|
-
codePercentageTracker
|
|
452
|
-
await codeDiffTracker
|
|
504
|
+
codePercentageTracker?.dispose();
|
|
505
|
+
await codeDiffTracker?.shutdown();
|
|
453
506
|
};
|
|
454
507
|
};
|
|
455
508
|
exports.CodewhispererServerFactory = CodewhispererServerFactory;
|