@aws/lsp-codewhisperer 0.0.69 → 0.0.70

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 (96) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/out/language-server/agenticChat/agenticChatController.js +32 -26
  3. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  4. package/out/language-server/agenticChat/constants/constants.d.ts +1 -1
  5. package/out/language-server/agenticChat/constants/constants.js +2 -1
  6. package/out/language-server/agenticChat/constants/constants.js.map +1 -1
  7. package/out/language-server/agenticChat/constants/toolConstants.d.ts +1 -1
  8. package/out/language-server/agenticChat/constants/toolConstants.js +2 -2
  9. package/out/language-server/agenticChat/constants/toolConstants.js.map +1 -1
  10. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +1 -1
  11. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
  12. package/out/language-server/agenticChat/qAgenticChatServer.d.ts +1 -1
  13. package/out/language-server/agenticChat/qAgenticChatServer.js +7 -8
  14. package/out/language-server/agenticChat/qAgenticChatServer.js.map +1 -1
  15. package/out/language-server/agenticChat/tools/chatDb/chatDb.d.ts +1 -0
  16. package/out/language-server/agenticChat/tools/chatDb/chatDb.js +3 -3
  17. package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
  18. package/out/language-server/agenticChat/tools/executeBash.js +6 -6
  19. package/out/language-server/agenticChat/tools/executeBash.js.map +1 -1
  20. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js +1 -2
  21. package/out/language-server/agenticChat/tools/mcp/mcpEventHandler.js.map +1 -1
  22. package/out/language-server/agenticChat/tools/mcp/mcpManager.d.ts +5 -0
  23. package/out/language-server/agenticChat/tools/mcp/mcpManager.js +60 -1
  24. package/out/language-server/agenticChat/tools/mcp/mcpManager.js.map +1 -1
  25. package/out/language-server/agenticChat/tools/mcp/mcpUtils.d.ts +1 -0
  26. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js +5 -0
  27. package/out/language-server/agenticChat/tools/mcp/mcpUtils.js.map +1 -1
  28. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReview.d.ts → codeReview.d.ts} +3 -3
  29. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReview.js → codeReview.js} +172 -115
  30. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReview.js.map +1 -0
  31. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewConstants.d.ts → codeReviewConstants.d.ts} +7 -6
  32. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewConstants.js → codeReviewConstants.js} +31 -20
  33. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.js.map +1 -0
  34. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.d.ts +12 -0
  35. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.js +32 -0
  36. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewErrors.js.map +1 -0
  37. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewSchemas.d.ts → codeReviewSchemas.d.ts} +6 -6
  38. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewSchemas.js → codeReviewSchemas.js} +15 -15
  39. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewSchemas.js.map +1 -0
  40. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewTypes.d.ts → codeReviewTypes.d.ts} +22 -1
  41. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.js +15 -0
  42. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.js.map +1 -0
  43. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewUtils.d.ts → codeReviewUtils.d.ts} +10 -14
  44. package/out/language-server/agenticChat/tools/qCodeAnalysis/{qCodeReviewUtils.js → codeReviewUtils.js} +29 -46
  45. package/out/language-server/agenticChat/tools/qCodeAnalysis/codeReviewUtils.js.map +1 -0
  46. package/out/language-server/agenticChat/tools/toolServer.js +8 -8
  47. package/out/language-server/agenticChat/tools/toolServer.js.map +1 -1
  48. package/out/language-server/chat/chatSessionService.js +19 -5
  49. package/out/language-server/chat/chatSessionService.js.map +1 -1
  50. package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +3 -2
  51. package/out/language-server/chat/telemetry/chatTelemetryController.js +12 -2
  52. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  53. package/out/language-server/configuration/qConfigurationServer.d.ts +1 -1
  54. package/out/language-server/inline-completion/codeWhispererServer.js +8 -106
  55. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
  56. package/out/language-server/inline-completion/telemetry.d.ts +9 -0
  57. package/out/language-server/inline-completion/telemetry.js +109 -0
  58. package/out/language-server/inline-completion/telemetry.js.map +1 -0
  59. package/out/language-server/netTransform/validation.d.ts +5 -0
  60. package/out/language-server/netTransform/validation.js +9 -2
  61. package/out/language-server/netTransform/validation.js.map +1 -1
  62. package/out/language-server/workspaceContext/artifactManager.d.ts +1 -0
  63. package/out/language-server/workspaceContext/artifactManager.js +31 -14
  64. package/out/language-server/workspaceContext/artifactManager.js.map +1 -1
  65. package/out/language-server/workspaceContext/workspaceContextServer.js +2 -0
  66. package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -1
  67. package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +3 -0
  68. package/out/language-server/workspaceContext/workspaceFolderManager.js +24 -5
  69. package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -1
  70. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.d.ts +1 -0
  71. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js +16 -7
  72. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -1
  73. package/out/shared/amazonQServiceManager/qDeveloperProfiles.js +48 -5
  74. package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
  75. package/out/shared/codeWhispererService.js +1 -0
  76. package/out/shared/codeWhispererService.js.map +1 -1
  77. package/out/shared/languageDetection.d.ts +14 -0
  78. package/out/shared/languageDetection.js +22 -0
  79. package/out/shared/languageDetection.js.map +1 -1
  80. package/out/shared/localProjectContextController.js +1 -3
  81. package/out/shared/localProjectContextController.js.map +1 -1
  82. package/out/shared/supplementalContextUtil/crossFileContextUtil.js +0 -10
  83. package/out/shared/supplementalContextUtil/crossFileContextUtil.js.map +1 -1
  84. package/out/shared/telemetry/types.d.ts +11 -0
  85. package/out/shared/telemetry/types.js +7 -1
  86. package/out/shared/telemetry/types.js.map +1 -1
  87. package/package.json +2 -2
  88. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReview.js.map +0 -1
  89. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewConstants.js.map +0 -1
  90. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.d.ts +0 -12
  91. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.js +0 -32
  92. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewErrors.js.map +0 -1
  93. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewSchemas.js.map +0 -1
  94. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewTypes.js +0 -3
  95. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewTypes.js.map +0 -1
  96. package/out/language-server/agenticChat/tools/qCodeAnalysis/qCodeReviewUtils.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.70](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.69...lsp-codewhisperer/v0.0.70) (2025-07-29)
4
+
5
+
6
+ ### Features
7
+
8
+ * **amazonq:** add new model error handling code ([#1972](https://github.com/aws/language-servers/issues/1972)) ([905f0fc](https://github.com/aws/language-servers/commit/905f0fcbb274926d22bcf30600ad4bd419ac8ee4))
9
+ * **amazonq:** enable compaction, minor UI changes ([#1979](https://github.com/aws/language-servers/issues/1979)) ([2b56ca8](https://github.com/aws/language-servers/commit/2b56ca87f442a06b554043fee86edd79f96c638d))
10
+ * **amazonq:** enhance workspaceContext classpath generation ([#1955](https://github.com/aws/language-servers/issues/1955)) ([f7ed20b](https://github.com/aws/language-servers/commit/f7ed20bc4010996c508f6ea8ca87950e117e43c1))
11
+ * **amazonq:** redirect /review, rename CodeReview tool, emit metrics, modify prompts ([#1964](https://github.com/aws/language-servers/issues/1964)) ([ad8e2db](https://github.com/aws/language-servers/commit/ad8e2db77e34f369fef9af71cdda2d3522f555c6))
12
+ * **amazonq:** revert auto-approve ([#2002](https://github.com/aws/language-servers/issues/2002)) ([c8181f7](https://github.com/aws/language-servers/commit/c8181f7a1de224dfcc7a77cd0bfc905fa1018372))
13
+ * enhance profile fetching logs to diagnose developerProfiles errors ([#1969](https://github.com/aws/language-servers/issues/1969)) ([eb688c2](https://github.com/aws/language-servers/commit/eb688c272df1251cd5c14ada7894bcaf625b6453))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **amazonq:** wrong path in the logs for the function ([#1978](https://github.com/aws/language-servers/issues/1978)) ([ed8b4f6](https://github.com/aws/language-servers/commit/ed8b4f6755accb624e7dc8c645ecd5cd9370a0f2))
19
+ * emit metric for tool error ([#1954](https://github.com/aws/language-servers/issues/1954)) ([c3bbcea](https://github.com/aws/language-servers/commit/c3bbceabcea3d7aea2e414abc632c3a744b0e02b))
20
+ * enable repomap for all users ([#1967](https://github.com/aws/language-servers/issues/1967)) ([6954085](https://github.com/aws/language-servers/commit/69540851e54b65729b2affbe3ae7d98629bdb5f4))
21
+ * move network commands out of ro category ([#1985](https://github.com/aws/language-servers/issues/1985)) ([3cc9fd9](https://github.com/aws/language-servers/commit/3cc9fd91ae2f78ee28e224d5390ba78509de3615))
22
+ * remove malicious characters from MCP tool description ([#1977](https://github.com/aws/language-servers/issues/1977)) ([64d4e3e](https://github.com/aws/language-servers/commit/64d4e3ebade706b01d256682cafe8d4ff8b85f41))
23
+
3
24
  ## [0.0.69](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.68...lsp-codewhisperer/v0.0.69) (2025-07-23)
4
25
 
5
26
 
@@ -51,8 +51,8 @@ const errors_2 = require("./errors");
51
51
  const vscode_uri_1 = require("vscode-uri");
52
52
  const executeBash_2 = require("./tools/executeBash");
53
53
  const userWrittenCodeTracker_1 = require("../../shared/userWrittenCodeTracker");
54
- const qCodeReview_1 = require("./tools/qCodeAnalysis/qCodeReview");
55
- const qCodeReviewConstants_1 = require("./tools/qCodeAnalysis/qCodeReviewConstants");
54
+ const codeReview_1 = require("./tools/qCodeAnalysis/codeReview");
55
+ const codeReviewConstants_1 = require("./tools/qCodeAnalysis/codeReviewConstants");
56
56
  const mcpEventHandler_1 = require("./tools/mcp/mcpEventHandler");
57
57
  const mcpUtils_1 = require("./tools/mcp/mcpUtils");
58
58
  const mcpManager_1 = require("./tools/mcp/mcpManager");
@@ -64,7 +64,6 @@ const imageVerification_1 = require("../../shared/imageVerification");
64
64
  const path_1 = require("@aws/lsp-core/out/util/path");
65
65
  const agenticChatControllerHelper_1 = require("./utils/agenticChatControllerHelper");
66
66
  const activeUserTracker_1 = require("../../shared/activeUserTracker");
67
- const qAgenticChatServer_1 = require("./qAgenticChatServer");
68
67
  class AgenticChatController {
69
68
  #features;
70
69
  #chatSessionManagementService;
@@ -549,7 +548,7 @@ class AgenticChatController {
549
548
  const promptId = crypto.randomUUID();
550
549
  session.setCurrentPromptId(promptId);
551
550
  // Start the compaction call
552
- finalResult = await this.#runCompaction(compactionRequestInput, session, metric, chatResultStream, params.tabId, promptId, session.conversationId, token, triggerContext.documentReference);
551
+ finalResult = await this.#runCompaction(compactionRequestInput, session, metric, chatResultStream, params.tabId, promptId, types_1.CompactHistoryActionType.Manual, session.conversationId, token, triggerContext.documentReference);
553
552
  }
554
553
  else {
555
554
  // Get the initial request input
@@ -615,7 +614,7 @@ class AgenticChatController {
615
614
  */
616
615
  #shouldCompact(currentRequestCount) {
617
616
  // 80% of 570K limit
618
- if ((0, qAgenticChatServer_1.enabledCompaction)(this.#features.lsp.getClientInitializeParams()) && currentRequestCount > 456_000) {
617
+ if (currentRequestCount > 456_000) {
619
618
  this.#debug(`Current request total character count is: ${currentRequestCount}, prompting user to compact`);
620
619
  return true;
621
620
  }
@@ -626,7 +625,7 @@ class AgenticChatController {
626
625
  /**
627
626
  * Runs the compaction to compact history into a single summary
628
627
  */
629
- async #runCompaction(compactionRequestInput, session, metric, chatResultStream, tabId, promptId, conversationIdentifier, token, documentReference) {
628
+ async #runCompaction(compactionRequestInput, session, metric, chatResultStream, tabId, promptId, type, conversationIdentifier, token, documentReference) {
630
629
  let currentRequestInput = { ...compactionRequestInput };
631
630
  let finalResult = null;
632
631
  metric.recordStart();
@@ -684,21 +683,24 @@ class AgenticChatController {
684
683
  });
685
684
  }
686
685
  await resultStreamWriter.close();
686
+ session.setConversationType('AgenticChatWithCompaction');
687
+ const conversationType = session.getConversationType();
688
+ metric.setDimension('cwsprChatConversationType', conversationType);
689
+ this.#telemetryController.emitCompactHistory(type, characterCount, this.#features.runtime.serverInfo.version ?? '');
687
690
  // Add loading message before making the request
688
691
  const loadingMessageId = `loading-${(0, uuid_1.v4)()}`;
689
692
  await chatResultStream.writeResultBlock({ ...constants_1.loadingMessage, messageId: loadingMessageId });
690
693
  this.#debug(`Compacting history with ${characterCount} characters`);
691
694
  this.#llmRequestStartTime = Date.now();
692
695
  // Phase 3: Request Execution
693
- // Note: these logs are very noisy, but contain information redacted on the backend.
694
- this.#debug(`generateAssistantResponse/SendMessage Request: ${JSON.stringify(currentRequestInput, undefined, 2)}`);
696
+ this.#debug(`Compaction Request: ${JSON.stringify(currentRequestInput, undefined, 2)}`);
695
697
  const response = await session.getChatResponse(currentRequestInput);
696
698
  if (response.$metadata.requestId) {
697
699
  metric.mergeWith({
698
700
  requestIds: [response.$metadata.requestId],
699
701
  });
700
702
  }
701
- this.#features.logging.info(`generateAssistantResponse/SendMessage ResponseMetadata: ${lsp_core_2.loggingUtils.formatObj(response.$metadata)}`);
703
+ this.#features.logging.info(`Compaction ResponseMetadata: ${lsp_core_2.loggingUtils.formatObj(response.$metadata)}`);
702
704
  await chatResultStream.removeResultBlock(loadingMessageId);
703
705
  // Phase 4: Response Processing
704
706
  const result = await this.#processAgenticChatResponseWithTimeout(response, metric.mergeWith({
@@ -923,13 +925,13 @@ class AgenticChatController {
923
925
  }
924
926
  if (this.#shouldCompact(currentRequestCount)) {
925
927
  const messageId = this.#getMessageIdForCompact((0, uuid_1.v4)());
926
- const confirmationResult = this.#processCompactConfirmation(messageId);
928
+ const confirmationResult = this.#processCompactConfirmation(messageId, currentRequestCount);
927
929
  const cachedButtonBlockId = await chatResultStream.writeResultBlock(confirmationResult);
928
930
  await this.waitForCompactApproval(messageId, chatResultStream, cachedButtonBlockId, session);
929
931
  // Get the compaction request input
930
932
  const compactionRequestInput = this.#getCompactionRequestInput(session);
931
933
  // Start the compaction call
932
- return await this.#runCompaction(compactionRequestInput, session, metric, chatResultStream, tabId, promptId, session.conversationId, token, documentReference);
934
+ return await this.#runCompaction(compactionRequestInput, session, metric, chatResultStream, tabId, promptId, types_1.CompactHistoryActionType.Nudge, session.conversationId, token, documentReference);
933
935
  }
934
936
  return (finalResult || {
935
937
  success: false,
@@ -1167,7 +1169,7 @@ class AgenticChatController {
1167
1169
  }
1168
1170
  break;
1169
1171
  }
1170
- case qCodeReview_1.QCodeReview.toolName:
1172
+ case codeReview_1.CodeReview.toolName:
1171
1173
  // no need to write tool message for code review
1172
1174
  break;
1173
1175
  // — DEFAULT ⇒ Only MCP tools, but can also handle generic tool execution messages
@@ -1219,7 +1221,7 @@ class AgenticChatController {
1219
1221
  fileChange: { before: document?.getText() },
1220
1222
  });
1221
1223
  }
1222
- if (toolUse.name === qCodeReview_1.QCodeReview.toolName) {
1224
+ if (toolUse.name === codeReview_1.CodeReview.toolName) {
1223
1225
  try {
1224
1226
  let initialInput = JSON.parse(JSON.stringify(toolUse.input));
1225
1227
  let ruleArtifacts = await this.#additionalContextProvider.collectWorkspaceRules(tabId);
@@ -1232,7 +1234,7 @@ class AgenticChatController {
1232
1234
  toolUse.input = initialInput;
1233
1235
  }
1234
1236
  catch (e) {
1235
- this.#features.logging.warn(`could not parse QCodeReview tool input: ${e}`);
1237
+ this.#features.logging.warn(`could not parse CodeReview tool input: ${e}`);
1236
1238
  }
1237
1239
  }
1238
1240
  // After approval, add the path to the approved paths in the session
@@ -1302,17 +1304,17 @@ class AgenticChatController {
1302
1304
  this.#telemetryController.emitInteractWithAgenticChat('GeneratedDiff', tabId, session.pairProgrammingMode, session.getConversationType(), this.#abTestingAllocation?.experimentName, this.#abTestingAllocation?.userVariation);
1303
1305
  await chatResultStream.writeResultBlock(chatResult);
1304
1306
  break;
1305
- case qCodeReview_1.QCodeReview.toolName:
1307
+ case codeReview_1.CodeReview.toolName:
1306
1308
  // no need to write tool result for code review, this is handled by model via chat
1307
1309
  // Push result in message so that it is picked by IDE plugin to show in issues panel
1308
- const qCodeReviewResult = result;
1309
- if (qCodeReviewResult?.output?.kind === 'json' &&
1310
- qCodeReviewResult.output.success &&
1311
- qCodeReviewResult.output.content?.findingsByFile) {
1310
+ const codeReviewResult = result;
1311
+ if (codeReviewResult?.output?.kind === 'json' &&
1312
+ codeReviewResult.output.success &&
1313
+ codeReviewResult.output.content?.findingsByFile) {
1312
1314
  await chatResultStream.writeResultBlock({
1313
1315
  type: 'tool',
1314
- messageId: toolUse.toolUseId + qCodeReviewConstants_1.FINDINGS_MESSAGE_SUFFIX,
1315
- body: qCodeReviewResult.output.content.findingsByFile,
1316
+ messageId: toolUse.toolUseId + codeReviewConstants_1.FINDINGS_MESSAGE_SUFFIX,
1317
+ body: codeReviewResult.output.content.findingsByFile,
1316
1318
  });
1317
1319
  }
1318
1320
  break;
@@ -1336,7 +1338,7 @@ class AgenticChatController {
1336
1338
  });
1337
1339
  }
1338
1340
  }
1339
- this.#telemetryController.emitToolUseSuggested(toolUse, session.conversationId ?? '', this.#features.runtime.serverInfo.version ?? '', latency, session.pairProgrammingMode, this.#abTestingAllocation?.experimentName, this.#abTestingAllocation?.userVariation);
1341
+ this.#telemetryController.emitToolUseSuggested(toolUse, session.conversationId ?? '', this.#features.runtime.serverInfo.version ?? '', latency, session.pairProgrammingMode, this.#abTestingAllocation?.experimentName, this.#abTestingAllocation?.userVariation, 'Succeeded');
1340
1342
  }
1341
1343
  }
1342
1344
  catch (err) {
@@ -1370,6 +1372,10 @@ class AgenticChatController {
1370
1372
  throw err;
1371
1373
  }
1372
1374
  }
1375
+ else {
1376
+ // only emit if this is an actual tool error (not a user rejecting/canceling tool)
1377
+ this.#telemetryController.emitToolUseSuggested(toolUse, session.conversationId ?? '', this.#features.runtime.serverInfo.version ?? '', undefined, session.pairProgrammingMode, this.#abTestingAllocation?.experimentName, this.#abTestingAllocation?.userVariation, 'Failed');
1378
+ }
1373
1379
  // display fs write failure status in the UX of that file card
1374
1380
  if ((toolUse.name === toolConstants_1.FS_WRITE || toolUse.name === toolConstants_1.FS_REPLACE) && toolUse.toolUseId) {
1375
1381
  const existingCard = chatResultStream.getMessageBlockId(toolUse.toolUseId);
@@ -1585,7 +1591,7 @@ class AgenticChatController {
1585
1591
  });
1586
1592
  }
1587
1593
  #getWritableStream(chatResultStream, toolUse) {
1588
- if (toolUse.name === qCodeReview_1.QCodeReview.toolName) {
1594
+ if (toolUse.name === codeReview_1.CodeReview.toolName) {
1589
1595
  return this.#getToolOverWritableStream(chatResultStream, toolUse);
1590
1596
  }
1591
1597
  if (toolUse.name !== toolConstants_1.EXECUTE_BASH) {
@@ -1757,7 +1763,7 @@ class AgenticChatController {
1757
1763
  },
1758
1764
  });
1759
1765
  }
1760
- #processCompactConfirmation(messageId) {
1766
+ #processCompactConfirmation(messageId, characterCount) {
1761
1767
  const buttons = [{ id: 'allow-tools', text: 'Allow', icon: 'ok', status: 'clear' }];
1762
1768
  const header = {
1763
1769
  icon: 'warning',
@@ -1765,7 +1771,7 @@ class AgenticChatController {
1765
1771
  body: constants_2.COMPACTION_HEADER_BODY,
1766
1772
  buttons,
1767
1773
  };
1768
- const body = constants_2.COMPACTION_BODY;
1774
+ const body = (0, constants_2.COMPACTION_BODY)(Math.round((characterCount / chatDb_1.MaxOverallCharacters) * 100));
1769
1775
  return {
1770
1776
  type: 'tool',
1771
1777
  messageId,
@@ -2741,7 +2747,7 @@ class AgenticChatController {
2741
2747
  {
2742
2748
  messageId,
2743
2749
  type: 'tool',
2744
- body: constants_2.COMPACTION_BODY,
2750
+ body: 'Compaction is skipped.',
2745
2751
  header: {
2746
2752
  body: constants_2.COMPACTION_HEADER_BODY,
2747
2753
  status: { icon: 'block', text: 'Ignored' },