@aws/lsp-codewhisperer 0.0.104 → 0.0.106

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 (32) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +17 -12
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/tabBarController.d.ts +1 -0
  5. package/out/language-server/agenticChat/tabBarController.js +23 -0
  6. package/out/language-server/agenticChat/tabBarController.js.map +1 -1
  7. package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +46 -0
  8. package/out/language-server/agenticChat/tools/chatDb/chatDb.js +135 -0
  9. package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
  10. package/out/language-server/agenticChat/tools/chatDb/util.d.ts +13 -0
  11. package/out/language-server/agenticChat/tools/chatDb/util.js +193 -1
  12. package/out/language-server/agenticChat/tools/chatDb/util.js.map +1 -1
  13. package/out/language-server/agenticChat/tools/executeBash.js +29 -10
  14. package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
  15. package/out/language-server/agenticChat/tools/toolShared.d.ts +1 -1
  16. package/out/language-server/agenticChat/tools/toolShared.js +8 -5
  17. package/out/language-server/agenticChat/tools/toolShared.js.map +1 -1
  18. package/out/language-server/chat/chatController.js +3 -2
  19. package/out/language-server/chat/chatController.js.map +1 -1
  20. package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +2 -2
  21. package/out/language-server/chat/telemetry/chatTelemetryController.js +4 -2
  22. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  23. package/out/language-server/netTransform/artifactManager.js +12 -0
  24. package/out/language-server/netTransform/artifactManager.js.map +1 -1
  25. package/out/language-server/netTransform/models.d.ts +1 -0
  26. package/out/shared/telemetry/telemetryService.d.ts +1 -0
  27. package/out/shared/telemetry/telemetryService.js +1 -0
  28. package/out/shared/telemetry/telemetryService.js.map +1 -1
  29. package/out/shared/telemetry/types.d.ts +1 -0
  30. package/out/shared/utils.js +10 -2
  31. package/out/shared/utils.js.map +1 -1
  32. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.106](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.105...lsp-codewhisperer/v0.0.106) (2026-02-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * copy private package's nupkg file to artifacts folder ([#2613](https://github.com/aws/language-servers/issues/2613)) ([99cb9a8](https://github.com/aws/language-servers/commit/99cb9a8f87d750a496c13b0678cae82de101b99d))
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **amazonq:** bumping up the language server runtime version ([#2621](https://github.com/aws/language-servers/issues/2621)) ([33c9eba](https://github.com/aws/language-servers/commit/33c9eba1fcc5ab7da5c520842c239e22b2237e4c))
14
+ * **amazonq:** emit modelid per tab ([#2620](https://github.com/aws/language-servers/issues/2620)) ([640179f](https://github.com/aws/language-servers/commit/640179f021d68a8bef5ece710d1b928e2c17fed1))
15
+ * **amazonq:** fix improperly formed requests ([#2616](https://github.com/aws/language-servers/issues/2616)) ([2739718](https://github.com/aws/language-servers/commit/273971834e2a307fe79402bef329b53b8bb51a4e))
16
+ * **amazonq:** prevent path traversal bypass in agentic chat workspace ([#2612](https://github.com/aws/language-servers/issues/2612)) ([13159f8](https://github.com/aws/language-servers/commit/13159f842e4c50aae03ace586c42085446a50986))
17
+
18
+
19
+ ### Dependencies
20
+
21
+ * The following workspace dependencies were updated
22
+ * dependencies
23
+ * @aws/lsp-core bumped from ^0.0.20 to ^0.0.21
24
+
25
+ ## [0.0.105](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.104...lsp-codewhisperer/v0.0.105) (2026-02-10)
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * amazon q chat history restoration to display rich ui elements and persisting model/agentic toggle preferences. ([#2610](https://github.com/aws/language-servers/issues/2610)) ([75135dd](https://github.com/aws/language-servers/commit/75135ddf2342a355a1fcba463dd6a42d040b75fa))
31
+ * extend SageMaker env detection to support both SMUS and SMAI ([#2598](https://github.com/aws/language-servers/issues/2598)) ([12fbc4c](https://github.com/aws/language-servers/commit/12fbc4c4f355ab0a8500de697a5fd7bd7950f661))
32
+
3
33
  ## [0.0.104](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.103...lsp-codewhisperer/v0.0.104) (2026-02-05)
4
34
 
5
35
 
@@ -672,6 +672,10 @@ class AgenticChatController {
672
672
  await this.#invalidateCompactCommand(params.tabId, compactIds);
673
673
  session.rejectAllDeferredToolExecutions(new toolShared_1.ToolApprovalException('Command ignored: new prompt', false));
674
674
  await this.#invalidateAllShellCommands(params.tabId, session);
675
+ // Capture the modelId at request time so telemetry always reports the model
676
+ // that was actually selected in this tab when the request was initiated,
677
+ // even if the user switches models before the response/error is processed.
678
+ const requestModelId = session.modelId;
675
679
  const metric = new metric_1.Metric({
676
680
  cwsprChatConversationType: 'AgenticChat',
677
681
  experimentName: this.#abTestingAllocation?.experimentName,
@@ -711,7 +715,7 @@ class AgenticChatController {
711
715
  metric.setDimension('languageServerVersion', this.#features.runtime.serverInfo.version);
712
716
  metric.setDimension('codewhispererCustomizationArn', this.#customizationArn);
713
717
  metric.setDimension('enabled', session.pairProgrammingMode);
714
- await this.#telemetryController.emitAddMessageMetric(params.tabId, metric.metric, 'Cancelled');
718
+ await this.#telemetryController.emitAddMessageMetric(params.tabId, metric.metric, 'Cancelled', undefined, undefined, requestModelId);
715
719
  });
716
720
  session.setConversationType('AgenticChat');
717
721
  // Set up delay notification callback to show retry progress to users
@@ -763,7 +767,7 @@ class AgenticChatController {
763
767
  finalResult = await this.#runAgentLoop(initialRequestInput, session, metric, chatResultStream, params.tabId, promptId, session.conversationId, token, triggerContext.documentReference, additionalContext);
764
768
  }
765
769
  // Result Handling - This happens only once
766
- return await this.#handleFinalResult(finalResult, session, params.tabId, metric, triggerContext, isNewConversation, chatResultStream);
770
+ return await this.#handleFinalResult(finalResult, session, params.tabId, metric, triggerContext, isNewConversation, chatResultStream, requestModelId);
767
771
  }
768
772
  catch (err) {
769
773
  // HACK: the chat-client needs to have a partial event with the associated messageId sent before it can accept the final result.
@@ -789,7 +793,7 @@ class AgenticChatController {
789
793
  buttons: [],
790
794
  };
791
795
  }
792
- return this.#handleRequestError(session.conversationId, err, errorMessageId, params.tabId, metric, session.pairProgrammingMode);
796
+ return this.#handleRequestError(session.conversationId, err, errorMessageId, params.tabId, metric, session.pairProgrammingMode, requestModelId);
793
797
  }
794
798
  }
795
799
  /**
@@ -2573,7 +2577,7 @@ class AgenticChatController {
2573
2577
  /**
2574
2578
  * Handles the final result after the agent loop completes
2575
2579
  */
2576
- async #handleFinalResult(result, session, tabId, metric, triggerContext, isNewConversation, chatResultStream) {
2580
+ async #handleFinalResult(result, session, tabId, metric, triggerContext, isNewConversation, chatResultStream, requestModelId) {
2577
2581
  if (!result.success) {
2578
2582
  throw new errors_2.AgenticChatError(result.error, 'FailedResult');
2579
2583
  }
@@ -2622,7 +2626,7 @@ class AgenticChatController {
2622
2626
  cwsprChatPinnedPromptContextCount: triggerContext.contextInfo.pinnedContextCount.promptContextCount,
2623
2627
  });
2624
2628
  }
2625
- await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Succeeded');
2629
+ await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Succeeded', undefined, undefined, requestModelId ?? session.modelId);
2626
2630
  this.#telemetryController.updateTriggerInfo(tabId, {
2627
2631
  lastMessageTrigger: {
2628
2632
  ...triggerContext,
@@ -2639,7 +2643,7 @@ class AgenticChatController {
2639
2643
  /**
2640
2644
  * Handles errors that occur during the request
2641
2645
  */
2642
- async #handleRequestError(conversationId, err, errorMessageId, tabId, metric, agenticCodingMode) {
2646
+ async #handleRequestError(conversationId, err, errorMessageId, tabId, metric, agenticCodingMode, requestModelId) {
2643
2647
  const errorMessage = ((0, utils_2.getErrorMsg)(err) ?? constants_2.GENERIC_ERROR_MS).replace(/[\r\n]+/g, ' '); // replace new lines with empty space
2644
2648
  const requestID = (0, utils_2.getRequestID)(err) ?? '';
2645
2649
  metric.setDimension('cwsprChatResponseCode', (0, utils_2.getHttpStatusCode)(err) ?? 0);
@@ -2650,9 +2654,10 @@ class AgenticChatController {
2650
2654
  metric.metric.cwsprChatMessageId = errorMessageId;
2651
2655
  metric.metric.cwsprChatConversationId = conversationId;
2652
2656
  const errorCode = err.code ?? '';
2653
- await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Failed', errorMessage, errorCode);
2657
+ await this.#telemetryController.emitAddMessageMetric(tabId, metric.metric, 'Failed', errorMessage, errorCode, requestModelId);
2654
2658
  // Reset memory bank flag on request error
2655
2659
  const sessionResult = this.#chatSessionManagementService.getSession(tabId);
2660
+ const modelId = requestModelId ?? (sessionResult.success ? sessionResult.data.modelId : undefined);
2656
2661
  if (sessionResult.success) {
2657
2662
  sessionResult.data.isMemoryBankGeneration = false;
2658
2663
  }
@@ -2668,7 +2673,7 @@ class AgenticChatController {
2668
2673
  });
2669
2674
  }
2670
2675
  if ((0, errors_2.isThrottlingRelated)(err)) {
2671
- this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, err.message, agenticCodingMode);
2676
+ this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, err.message, agenticCodingMode, modelId);
2672
2677
  new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err.message, {
2673
2678
  type: 'answer',
2674
2679
  body: requestID ? `${err.message} \n\nRequest ID: ${requestID}` : err.message,
@@ -2679,10 +2684,10 @@ class AgenticChatController {
2679
2684
  // use custom error message for unactionable errors (user-dependent errors like PromptCharacterLimit)
2680
2685
  if (err.code && err.code in errors_2.unactionableErrorCodes) {
2681
2686
  const customErrMessage = errors_2.unactionableErrorCodes[err.code];
2682
- this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, customErrMessage, agenticCodingMode);
2687
+ this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, customErrMessage, agenticCodingMode, modelId);
2683
2688
  }
2684
2689
  else {
2685
- this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, errorMessage, agenticCodingMode);
2690
+ this.#telemetryController.emitMessageResponseError(tabId, metric.metric, requestID, errorMessage, agenticCodingMode, modelId);
2686
2691
  }
2687
2692
  let authFollowType = undefined;
2688
2693
  // first check if there is an AmazonQ related auth follow up
@@ -3574,8 +3579,8 @@ class AgenticChatController {
3574
3579
  session.setModel(newModelId, cachedData?.models);
3575
3580
  this.#log(`Model set for model switch: ${newModelId}, tokenLimits: ${JSON.stringify(session.tokenLimits)}`);
3576
3581
  }
3577
- this.#chatHistoryDb.setModelId(session.modelId);
3578
- this.#chatHistoryDb.setPairProgrammingMode(session.pairProgrammingMode);
3582
+ this.#chatHistoryDb.setTabModelId(params.tabId, session.modelId);
3583
+ this.#chatHistoryDb.setTabPairProgrammingMode(params.tabId, session.pairProgrammingMode);
3579
3584
  }
3580
3585
  updateConfiguration = (newConfig) => {
3581
3586
  this.#customizationArn = newConfig.customizationArn;