@aws/lsp-codewhisperer 0.0.29 → 0.0.31

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 (232) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/CONTRIBUTING.md +28 -0
  3. package/README.md +1 -1
  4. package/out/client/streamingClient/codewhispererStreamingClient.js +1 -0
  5. package/out/client/streamingClient/codewhispererStreamingClient.js.map +1 -1
  6. package/out/index.d.ts +6 -5
  7. package/out/index.js +7 -5
  8. package/out/index.js.map +1 -1
  9. package/out/language-server/agenticChat/agenticChatController.d.ts +40 -0
  10. package/out/language-server/agenticChat/agenticChatController.js +414 -0
  11. package/out/language-server/agenticChat/agenticChatController.js.map +1 -0
  12. package/out/language-server/agenticChat/qAgenticChatServer.d.ts +6 -0
  13. package/out/language-server/agenticChat/qAgenticChatServer.js +96 -0
  14. package/out/language-server/agenticChat/qAgenticChatServer.js.map +1 -0
  15. package/out/language-server/agenticChat/tools/fsRead.d.ts +38 -0
  16. package/out/language-server/agenticChat/tools/fsRead.js +96 -0
  17. package/out/language-server/agenticChat/tools/fsRead.js.map +1 -0
  18. package/out/language-server/agenticChat/tools/fsWrite.d.ts +73 -0
  19. package/out/language-server/agenticChat/tools/fsWrite.js +128 -0
  20. package/out/language-server/agenticChat/tools/fsWrite.js.map +1 -0
  21. package/out/language-server/agenticChat/tools/toolServer.d.ts +2 -0
  22. package/out/language-server/agenticChat/tools/toolServer.js +14 -0
  23. package/out/language-server/agenticChat/tools/toolServer.js.map +1 -0
  24. package/out/language-server/agenticChat/tools/toolShared.d.ts +7 -0
  25. package/out/language-server/agenticChat/tools/toolShared.js +5 -0
  26. package/out/language-server/agenticChat/tools/toolShared.js.map +1 -0
  27. package/out/language-server/chat/agents/docGeneration/constants.d.ts +59 -0
  28. package/out/language-server/chat/agents/docGeneration/constants.js +147 -0
  29. package/out/language-server/chat/agents/docGeneration/constants.js.map +1 -0
  30. package/out/language-server/chat/agents/docGeneration/errors.d.ts +29 -0
  31. package/out/language-server/chat/agents/docGeneration/errors.js +67 -0
  32. package/out/language-server/chat/agents/docGeneration/errors.js.map +1 -0
  33. package/out/language-server/chat/agents/shared/i18n.d.ts +1 -0
  34. package/out/language-server/chat/agents/shared/i18n.js +7 -0
  35. package/out/language-server/chat/agents/shared/i18n.js.map +1 -0
  36. package/out/language-server/chat/agents/shared/types.d.ts +55 -0
  37. package/out/language-server/chat/agents/shared/types.js +46 -0
  38. package/out/language-server/chat/agents/shared/types.js.map +1 -0
  39. package/out/language-server/chat/chatController.d.ts +9 -6
  40. package/out/language-server/chat/chatController.js +74 -27
  41. package/out/language-server/chat/chatController.js.map +1 -1
  42. package/out/language-server/chat/chatEventParser.d.ts +2 -2
  43. package/out/language-server/chat/chatSessionManagementService.d.ts +1 -1
  44. package/out/language-server/chat/chatSessionService.d.ts +1 -1
  45. package/out/language-server/chat/chatSessionService.js +1 -3
  46. package/out/language-server/chat/chatSessionService.js.map +1 -1
  47. package/out/language-server/chat/contexts/documentContext.d.ts +2 -0
  48. package/out/language-server/chat/contexts/documentContext.js +15 -2
  49. package/out/language-server/chat/contexts/documentContext.js.map +1 -1
  50. package/out/language-server/chat/contexts/triggerContext.d.ts +5 -5
  51. package/out/language-server/chat/contexts/triggerContext.js +3 -3
  52. package/out/language-server/chat/contexts/triggerContext.js.map +1 -1
  53. package/out/language-server/{qChatServer.js → chat/qChatServer.js} +15 -11
  54. package/out/language-server/chat/qChatServer.js.map +1 -0
  55. package/out/language-server/chat/telemetry/chatTelemetryController.d.ts +3 -3
  56. package/out/language-server/chat/telemetry/chatTelemetryController.js +3 -3
  57. package/out/language-server/chat/telemetry/chatTelemetryController.js.map +1 -1
  58. package/out/language-server/chat/telemetry/clientTelemetry.js +1 -1
  59. package/out/language-server/chat/telemetry/clientTelemetry.js.map +1 -1
  60. package/out/language-server/chat/utils.js +1 -1
  61. package/out/language-server/chat/utils.js.map +1 -1
  62. package/out/language-server/configuration/qConfigurationServer.d.ts +2 -2
  63. package/out/language-server/configuration/qConfigurationServer.js +2 -2
  64. package/out/language-server/configuration/qConfigurationServer.js.map +1 -1
  65. package/out/language-server/{auto-trigger → inline-completion/auto-trigger}/autoTrigger.d.ts +1 -1
  66. package/out/language-server/inline-completion/auto-trigger/autoTrigger.js.map +1 -0
  67. package/out/language-server/{telemetry → inline-completion}/codeDiffTracker.js +1 -1
  68. package/out/language-server/inline-completion/codeDiffTracker.js.map +1 -0
  69. package/out/language-server/{telemetry → inline-completion}/codePercentage.d.ts +1 -1
  70. package/out/language-server/inline-completion/codePercentage.js.map +1 -0
  71. package/out/language-server/inline-completion/codeWhispererServer.d.ts +7 -0
  72. package/out/language-server/{codeWhispererServer.js → inline-completion/codeWhispererServer.js} +37 -75
  73. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -0
  74. package/out/language-server/inline-completion/mergeRightUtils.js.map +1 -0
  75. package/out/language-server/{session → inline-completion/session}/sessionManager.d.ts +3 -3
  76. package/out/language-server/inline-completion/session/sessionManager.js.map +1 -0
  77. package/out/language-server/netTransform/artifactManager.d.ts +7 -7
  78. package/out/language-server/netTransform/artifactManager.js +86 -46
  79. package/out/language-server/netTransform/artifactManager.js.map +1 -1
  80. package/out/language-server/netTransform/metrics.js +1 -1
  81. package/out/language-server/netTransform/metrics.js.map +1 -1
  82. package/out/language-server/netTransform/models.d.ts +12 -0
  83. package/out/language-server/netTransform/models.js.map +1 -1
  84. package/out/language-server/{netTransformServer.d.ts → netTransform/netTransformServer.d.ts} +1 -1
  85. package/out/language-server/{netTransformServer.js → netTransform/netTransformServer.js} +5 -5
  86. package/out/language-server/netTransform/netTransformServer.js.map +1 -0
  87. package/out/language-server/netTransform/tests/mockData.d.ts +2 -21
  88. package/out/language-server/netTransform/tests/mockData.js +16 -13
  89. package/out/language-server/netTransform/tests/mockData.js.map +1 -1
  90. package/out/language-server/netTransform/transformHandler.d.ts +3 -1
  91. package/out/language-server/netTransform/transformHandler.js +49 -15
  92. package/out/language-server/netTransform/transformHandler.js.map +1 -1
  93. package/out/language-server/{codeWhispererSecurityScanServer.js → securityScan/codeWhispererSecurityScanServer.js} +5 -5
  94. package/out/language-server/securityScan/codeWhispererSecurityScanServer.js.map +1 -0
  95. package/out/language-server/securityScan/dependencyGraph/commonUtil.js.map +1 -0
  96. package/out/language-server/securityScan/dependencyGraph/constants.js.map +1 -0
  97. package/out/language-server/securityScan/dependencyGraph/csharpDependencyGraph.js.map +1 -0
  98. package/out/language-server/securityScan/dependencyGraph/dependencyGraph.js.map +1 -0
  99. package/out/language-server/securityScan/dependencyGraph/dependencyGraphFactory.js.map +1 -0
  100. package/out/language-server/securityScan/securityScanHandler.d.ts +1 -1
  101. package/out/language-server/securityScan/securityScanHandler.js +1 -1
  102. package/out/language-server/securityScan/securityScanHandler.js.map +1 -1
  103. package/out/{language-server → shared}/amazonQServiceManager/AmazonQTokenServiceManager.d.ts +6 -3
  104. package/out/{language-server → shared}/amazonQServiceManager/AmazonQTokenServiceManager.js +48 -84
  105. package/out/shared/amazonQServiceManager/AmazonQTokenServiceManager.js.map +1 -0
  106. package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.d.ts +7 -0
  107. package/out/shared/amazonQServiceManager/BaseAmazonQServiceManager.js.map +1 -0
  108. package/out/shared/amazonQServiceManager/configurationUtils.d.ts +45 -0
  109. package/out/shared/amazonQServiceManager/configurationUtils.js +130 -0
  110. package/out/shared/amazonQServiceManager/configurationUtils.js.map +1 -0
  111. package/out/shared/amazonQServiceManager/errors.js.map +1 -0
  112. package/out/shared/amazonQServiceManager/factories.d.ts +15 -0
  113. package/out/shared/amazonQServiceManager/factories.js +47 -0
  114. package/out/shared/amazonQServiceManager/factories.js.map +1 -0
  115. package/out/{language-server → shared}/amazonQServiceManager/qDeveloperProfiles.d.ts +1 -3
  116. package/out/{language-server → shared}/amazonQServiceManager/qDeveloperProfiles.js +2 -2
  117. package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -0
  118. package/out/shared/codeWhispererService.js.map +1 -0
  119. package/out/{language-server → shared}/constants.d.ts +5 -0
  120. package/out/shared/constants.js +16 -0
  121. package/out/shared/constants.js.map +1 -0
  122. package/out/shared/languageDetection.js.map +1 -0
  123. package/out/shared/models/constants.js.map +1 -0
  124. package/out/shared/models/model.js.map +1 -0
  125. package/out/{language-server → shared}/proxy-server.d.ts +1 -0
  126. package/out/shared/proxy-server.js +21 -0
  127. package/out/shared/proxy-server.js.map +1 -0
  128. package/out/shared/streamingClientService.d.ts +10 -0
  129. package/out/shared/streamingClientService.js +42 -0
  130. package/out/shared/streamingClientService.js.map +1 -0
  131. package/out/shared/supplementalContextUtil/codeParsingUtil.js.map +1 -0
  132. package/out/{language-server/utilities → shared}/supplementalContextUtil/crossFileContextUtil.d.ts +1 -1
  133. package/out/{language-server/utilities → shared}/supplementalContextUtil/crossFileContextUtil.js +1 -1
  134. package/out/shared/supplementalContextUtil/crossFileContextUtil.js.map +1 -0
  135. package/out/shared/supplementalContextUtil/rankBm25.js.map +1 -0
  136. package/out/{language-server/utilities → shared}/supplementalContextUtil/supplementalContextUtil.d.ts +1 -1
  137. package/out/shared/supplementalContextUtil/supplementalContextUtil.js.map +1 -0
  138. package/out/shared/telemetry/metric.js.map +1 -0
  139. package/out/{language-server → shared/telemetry}/telemetryService.d.ts +5 -5
  140. package/out/{language-server → shared/telemetry}/telemetryService.js +4 -4
  141. package/out/shared/telemetry/telemetryService.js.map +1 -0
  142. package/out/{language-server → shared}/telemetry/types.d.ts +2 -2
  143. package/out/shared/telemetry/types.js.map +1 -0
  144. package/out/{language-server/utilities → shared}/telemetryUtils.d.ts +1 -1
  145. package/out/shared/telemetryUtils.js.map +1 -0
  146. package/out/shared/testUtils.js.map +1 -0
  147. package/out/shared/utils.js.map +1 -0
  148. package/package.json +4 -4
  149. package/out/constants.d.ts +0 -8
  150. package/out/constants.js +0 -12
  151. package/out/constants.js.map +0 -1
  152. package/out/language-server/amazonQServiceManager/AmazonQTokenServiceManager.js.map +0 -1
  153. package/out/language-server/amazonQServiceManager/BaseAmazonQServiceManager.d.ts +0 -5
  154. package/out/language-server/amazonQServiceManager/BaseAmazonQServiceManager.js.map +0 -1
  155. package/out/language-server/amazonQServiceManager/errors.js.map +0 -1
  156. package/out/language-server/amazonQServiceManager/qDeveloperProfiles.js.map +0 -1
  157. package/out/language-server/auto-trigger/autoTrigger.js.map +0 -1
  158. package/out/language-server/codeWhispererSecurityScanServer.js.map +0 -1
  159. package/out/language-server/codeWhispererServer.d.ts +0 -6
  160. package/out/language-server/codeWhispererServer.js.map +0 -1
  161. package/out/language-server/codeWhispererService.js.map +0 -1
  162. package/out/language-server/constants.js +0 -8
  163. package/out/language-server/constants.js.map +0 -1
  164. package/out/language-server/dependencyGraph/commonUtil.js.map +0 -1
  165. package/out/language-server/dependencyGraph/constants.js.map +0 -1
  166. package/out/language-server/dependencyGraph/csharpDependencyGraph.js.map +0 -1
  167. package/out/language-server/dependencyGraph/dependencyGraph.js.map +0 -1
  168. package/out/language-server/dependencyGraph/dependencyGraphFactory.js.map +0 -1
  169. package/out/language-server/languageDetection.js.map +0 -1
  170. package/out/language-server/mergeRightUtils.js.map +0 -1
  171. package/out/language-server/models/constants.js.map +0 -1
  172. package/out/language-server/models/model.js.map +0 -1
  173. package/out/language-server/netTransformServer.js.map +0 -1
  174. package/out/language-server/proxy-server.js +0 -22
  175. package/out/language-server/proxy-server.js.map +0 -1
  176. package/out/language-server/qChatServer.js.map +0 -1
  177. package/out/language-server/session/sessionManager.js.map +0 -1
  178. package/out/language-server/telemetry/codeDiffTracker.js.map +0 -1
  179. package/out/language-server/telemetry/codePercentage.js.map +0 -1
  180. package/out/language-server/telemetry/metric.js.map +0 -1
  181. package/out/language-server/telemetry/types.js.map +0 -1
  182. package/out/language-server/telemetryService.js.map +0 -1
  183. package/out/language-server/testUtils.js.map +0 -1
  184. package/out/language-server/utilities/supplementalContextUtil/codeParsingUtil.js.map +0 -1
  185. package/out/language-server/utilities/supplementalContextUtil/crossFileContextUtil.js.map +0 -1
  186. package/out/language-server/utilities/supplementalContextUtil/rankBm25.js.map +0 -1
  187. package/out/language-server/utilities/supplementalContextUtil/supplementalContextUtil.js.map +0 -1
  188. package/out/language-server/utilities/telemetryUtils.js.map +0 -1
  189. package/out/language-server/utils.js.map +0 -1
  190. /package/out/language-server/{qChatServer.d.ts → chat/qChatServer.d.ts} +0 -0
  191. /package/out/language-server/{auto-trigger → inline-completion/auto-trigger}/autoTrigger.js +0 -0
  192. /package/out/language-server/{auto-trigger → inline-completion/auto-trigger}/coefficients.json +0 -0
  193. /package/out/language-server/{telemetry → inline-completion}/codeDiffTracker.d.ts +0 -0
  194. /package/out/language-server/{telemetry → inline-completion}/codePercentage.js +0 -0
  195. /package/out/language-server/{mergeRightUtils.d.ts → inline-completion/mergeRightUtils.d.ts} +0 -0
  196. /package/out/language-server/{mergeRightUtils.js → inline-completion/mergeRightUtils.js} +0 -0
  197. /package/out/language-server/{session → inline-completion/session}/sessionManager.js +0 -0
  198. /package/out/language-server/{codeWhispererSecurityScanServer.d.ts → securityScan/codeWhispererSecurityScanServer.d.ts} +0 -0
  199. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/commonUtil.d.ts +0 -0
  200. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/commonUtil.js +0 -0
  201. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/constants.d.ts +0 -0
  202. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/constants.js +0 -0
  203. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/csharpDependencyGraph.d.ts +0 -0
  204. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/csharpDependencyGraph.js +0 -0
  205. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/dependencyGraph.d.ts +0 -0
  206. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/dependencyGraph.js +0 -0
  207. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/dependencyGraphFactory.d.ts +0 -0
  208. /package/out/language-server/{dependencyGraph → securityScan/dependencyGraph}/dependencyGraphFactory.js +0 -0
  209. /package/out/{language-server → shared}/amazonQServiceManager/BaseAmazonQServiceManager.js +0 -0
  210. /package/out/{language-server → shared}/amazonQServiceManager/errors.d.ts +0 -0
  211. /package/out/{language-server → shared}/amazonQServiceManager/errors.js +0 -0
  212. /package/out/{language-server → shared}/codeWhispererService.d.ts +0 -0
  213. /package/out/{language-server → shared}/codeWhispererService.js +0 -0
  214. /package/out/{language-server → shared}/languageDetection.d.ts +0 -0
  215. /package/out/{language-server → shared}/languageDetection.js +0 -0
  216. /package/out/{language-server → shared}/models/constants.d.ts +0 -0
  217. /package/out/{language-server → shared}/models/constants.js +0 -0
  218. /package/out/{language-server → shared}/models/model.d.ts +0 -0
  219. /package/out/{language-server → shared}/models/model.js +0 -0
  220. /package/out/{language-server/utilities → shared}/supplementalContextUtil/codeParsingUtil.d.ts +0 -0
  221. /package/out/{language-server/utilities → shared}/supplementalContextUtil/codeParsingUtil.js +0 -0
  222. /package/out/{language-server/utilities → shared}/supplementalContextUtil/rankBm25.d.ts +0 -0
  223. /package/out/{language-server/utilities → shared}/supplementalContextUtil/rankBm25.js +0 -0
  224. /package/out/{language-server/utilities → shared}/supplementalContextUtil/supplementalContextUtil.js +0 -0
  225. /package/out/{language-server → shared}/telemetry/metric.d.ts +0 -0
  226. /package/out/{language-server → shared}/telemetry/metric.js +0 -0
  227. /package/out/{language-server → shared}/telemetry/types.js +0 -0
  228. /package/out/{language-server/utilities → shared}/telemetryUtils.js +0 -0
  229. /package/out/{language-server → shared}/testUtils.d.ts +0 -0
  230. /package/out/{language-server → shared}/testUtils.js +0 -0
  231. /package/out/{language-server → shared}/utils.d.ts +0 -0
  232. /package/out/{language-server → shared}/utils.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.0.31](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.30...lsp-codewhisperer/v0.0.31) (2025-04-07)
4
+
5
+
6
+ ### Features
7
+
8
+ * Add support for inline chat ([#897](https://github.com/aws/language-servers/issues/897)) ([9fd97ea](https://github.com/aws/language-servers/commit/9fd97ea946712dbbd4490752d41c395d508c8d0c))
9
+ * **amazonq:** add streaming client caching and inflight-request cancellation ([#901](https://github.com/aws/language-servers/issues/901)) ([ecb323d](https://github.com/aws/language-servers/commit/ecb323dbd3835193c1f8478d797b6a37d89b5961))
10
+ * **amazonq:** optimize service manager reuse ([#886](https://github.com/aws/language-servers/issues/886)) ([84f46ef](https://github.com/aws/language-servers/commit/84f46ef88fbae72a246c3e966ee525124eb8915a))
11
+ * context data selection support in chat-client ([#902](https://github.com/aws/language-servers/issues/902)) ([a22dea5](https://github.com/aws/language-servers/commit/a22dea51c0039f198a403e88f774ad7769b15d29))
12
+ * port fs related tools from VSC. ([#894](https://github.com/aws/language-servers/issues/894)) ([a368acc](https://github.com/aws/language-servers/commit/a368accfcd0b5c88b81f407d4cd7b73be2782b9b))
13
+ * update artifact manager for qct .net to include private package support ([#872](https://github.com/aws/language-servers/issues/872)) ([9c86cac](https://github.com/aws/language-servers/commit/9c86caceb2ebaf803d3e47ad257d49c8ab87bded))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **amazonq:** do not throw when receiving null profile while client not connected ([#908](https://github.com/aws/language-servers/issues/908)) ([a04eed1](https://github.com/aws/language-servers/commit/a04eed1d3527009d848c4d00d0860dc0adf70d80))
19
+ * **amazonq:** reduce noisy logging from Q Service Manager ([7ef13b5](https://github.com/aws/language-servers/commit/7ef13b585130e264f4fa9a2ba4fae2e923fb940a))
20
+ * for transformation failure with incorrect filePath while extracting ([#875](https://github.com/aws/language-servers/issues/875)) ([54310cc](https://github.com/aws/language-servers/commit/54310cc15a8cfb3d0eb44559f0d560bdd70581e5))
21
+ * handle large file uploads using streams ([#874](https://github.com/aws/language-servers/issues/874)) ([b5999aa](https://github.com/aws/language-servers/commit/b5999aa7c54addd4e6b92483a2bb28c2fe70ffa6))
22
+ * update null check for net core compatibility version and path for private package support ([#914](https://github.com/aws/language-servers/issues/914)) ([30a0d80](https://github.com/aws/language-servers/commit/30a0d80591dbe73fd54ad3783e0d75526d994af8))
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * The following workspace dependencies were updated
28
+ * dependencies
29
+ * @aws/lsp-core bumped from ^0.0.2 to ^0.0.3
30
+
31
+ ## [0.0.30](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.29...lsp-codewhisperer/v0.0.30) (2025-03-27)
32
+
33
+
34
+ ### Features
35
+
36
+ * copied test files and added README to clarify purpose of this folder ([6a18e55](https://github.com/aws/language-servers/commit/6a18e55a1392aa9e68a202a8ca6f1a8b5c55bb4b))
37
+ * create copy of chat server and controller to use in agentic chat ([035b30e](https://github.com/aws/language-servers/commit/035b30ec98b85faad5696034e56dbafef67e7f79))
38
+
39
+
40
+ ### Bug Fixes
41
+
42
+ * **amazonq:** select corrert Service manager mode in completion server factory ([8041934](https://github.com/aws/language-servers/commit/8041934de1021cfe570fc2686e4000749fe297a6))
43
+ * **amazonq:** use relative path of document with chat params ([#867](https://github.com/aws/language-servers/issues/867)) ([fbc667e](https://github.com/aws/language-servers/commit/fbc667e44767ca8ddcb743b9377bf1331a27fb29))
44
+
3
45
  ## [0.0.29](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.28...lsp-codewhisperer/v0.0.29) (2025-03-26)
4
46
 
5
47
 
@@ -0,0 +1,28 @@
1
+ # Contribution Guide to @aws/lsp-codewhisperer
2
+
3
+
4
+ ## Code structure
5
+
6
+ ### Servers
7
+
8
+ The code whisperer capability is consist of the following [LSP servers](https://github.com/aws/language-server-runtimes/blob/main/runtimes/server-interface/server.ts):
9
+
10
+ - `agenticChat`
11
+ - `chat`
12
+ - `inline-completion`
13
+ - `netTransform`
14
+ - `securityScan`
15
+
16
+ New server should always be created in their own directory under [`./src/language-server/`](./src/language-server/).
17
+
18
+ Please make sure:
19
+
20
+ 1. servers must be in a self-contained directory and not import files from each other.
21
+ 1. shared code should be in `shared` directory to be used by more than one server.
22
+
23
+
24
+ ### Client
25
+
26
+ `client` directory contains the AWS SDK for JavaScript client to call CodeWhisperer service using either [AWS Signature Version 4 (SigV4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html) or [Builder ID (bearer token)](https://docs.aws.amazon.com/signin/latest/userguide/sign-in-aws_builder_id.html), which are two different ways to access Amazon Q Developer.
27
+
28
+
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  ## Guides
4
4
 
5
5
  ### Proxy
6
- To use the CodeWhisperer server behind a proxy, import the [`CodeWhispererServerTokenProxy`](./src/language-server/proxy-server.ts) as the server and set up the environment variable `HTTPS_PROXY` or `https_proxy` to the proxy URL you are using.
6
+ To use the CodeWhisperer server behind a proxy, import the [`CodeWhispererServerTokenProxy`](./src/shared/proxy-server.ts) as the server and set up the environment variable `HTTPS_PROXY` or `https_proxy` to the proxy URL you are using.
7
7
  You can pass the environment variable to the process or just set it up globally on your system.
8
8
 
9
9
  ```
@@ -4,6 +4,7 @@ exports.StreamingClient = void 0;
4
4
  exports.createStreamingClient = createStreamingClient;
5
5
  const codewhisperer_streaming_1 = require("@amzn/codewhisperer-streaming");
6
6
  const util_retry_1 = require("@aws-sdk/util-retry");
7
+ // TODO: refactor and combine with language-server/streamingClientService.ts when no longer in use
7
8
  class StreamingClient {
8
9
  async getStreamingClient(credentialsProvider, codeWhispererRegion, codeWhispererEndpoint, sdkInitializator, config) {
9
10
  return await createStreamingClient(credentialsProvider, codeWhispererRegion, codeWhispererEndpoint, sdkInitializator, config);
@@ -1 +1 @@
1
- {"version":3,"file":"codewhispererStreamingClient.js","sourceRoot":"","sources":["../../../src/client/streamingClient/codewhispererStreamingClient.ts"],"names":[],"mappings":";;;AAqBA,sDAiBC;AAtCD,2EAA0G;AAC1G,oDAA6D;AAG7D,MAAa,eAAe;IACjB,KAAK,CAAC,kBAAkB,CAC3B,mBAAwB,EACxB,mBAA2B,EAC3B,qBAA6B,EAC7B,gBAAkC,EAClC,MAA2C;QAE3C,OAAO,MAAM,qBAAqB,CAC9B,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,CACT,CAAA;IACL,CAAC;CACJ;AAhBD,0CAgBC;AACM,KAAK,UAAU,qBAAqB,CACvC,mBAAwB,EACxB,mBAA2B,EAC3B,qBAA6B,EAC7B,gBAAkC,EAClC,MAA2C;IAE3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAE1D,MAAM,eAAe,GAAG,gBAAgB,CAAC,gDAAsB,EAAE;QAC7D,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,qBAAqB;QAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;QAC7B,aAAa,EAAE,IAAI,oCAAuB,CAAC,CAAC,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QACvF,GAAG,MAAM;KACZ,CAAC,CAAA;IACF,OAAO,eAAe,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"codewhispererStreamingClient.js","sourceRoot":"","sources":["../../../src/client/streamingClient/codewhispererStreamingClient.ts"],"names":[],"mappings":";;;AAsBA,sDAiBC;AAvCD,2EAA0G;AAC1G,oDAA6D;AAG7D,kGAAkG;AAClG,MAAa,eAAe;IACjB,KAAK,CAAC,kBAAkB,CAC3B,mBAAwB,EACxB,mBAA2B,EAC3B,qBAA6B,EAC7B,gBAAkC,EAClC,MAA2C;QAE3C,OAAO,MAAM,qBAAqB,CAC9B,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,CACT,CAAA;IACL,CAAC;CACJ;AAhBD,0CAgBC;AACM,KAAK,UAAU,qBAAqB,CACvC,mBAAwB,EACxB,mBAA2B,EAC3B,qBAA6B,EAC7B,gBAAkC,EAClC,MAA2C;IAE3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;IAE1D,MAAM,eAAe,GAAG,gBAAgB,CAAC,gDAAsB,EAAE;QAC7D,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,qBAAqB;QAC/B,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE;QAC7B,aAAa,EAAE,IAAI,oCAAuB,CAAC,CAAC,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;QACvF,GAAG,MAAM;KACZ,CAAC,CAAA;IACF,OAAO,eAAe,CAAA;AAC1B,CAAC"}
package/out/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export * from './language-server/codeWhispererSecurityScanServer';
2
- export * from './language-server/codeWhispererServer';
3
- export * from './language-server/qChatServer';
4
- export * from './language-server/proxy-server';
5
- export * from './language-server/netTransformServer';
1
+ export * from './language-server/securityScan/codeWhispererSecurityScanServer';
2
+ export * from './language-server/inline-completion/codeWhispererServer';
3
+ export * from './language-server/chat/qChatServer';
4
+ export * as QAgenticChatServer from './language-server/agenticChat/qAgenticChatServer';
5
+ export * from './shared/proxy-server';
6
+ export * from './language-server/netTransform/netTransformServer';
package/out/index.js CHANGED
@@ -14,9 +14,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./language-server/codeWhispererSecurityScanServer"), exports);
18
- __exportStar(require("./language-server/codeWhispererServer"), exports);
19
- __exportStar(require("./language-server/qChatServer"), exports);
20
- __exportStar(require("./language-server/proxy-server"), exports);
21
- __exportStar(require("./language-server/netTransformServer"), exports);
17
+ exports.QAgenticChatServer = void 0;
18
+ __exportStar(require("./language-server/securityScan/codeWhispererSecurityScanServer"), exports);
19
+ __exportStar(require("./language-server/inline-completion/codeWhispererServer"), exports);
20
+ __exportStar(require("./language-server/chat/qChatServer"), exports);
21
+ exports.QAgenticChatServer = require("./language-server/agenticChat/qAgenticChatServer");
22
+ __exportStar(require("./shared/proxy-server"), exports);
23
+ __exportStar(require("./language-server/netTransform/netTransformServer"), exports);
22
24
  //# sourceMappingURL=index.js.map
package/out/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oFAAiE;AACjE,wEAAqD;AACrD,gEAA6C;AAC7C,iEAA8C;AAC9C,uEAAoD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iGAA8E;AAC9E,0FAAuE;AACvE,qEAAkD;AAClD,yFAAsF;AACtF,wDAAqC;AACrC,oFAAiE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copied from ../chat/chatController.ts for the purpose of developing a divergent implementation.
3
+ * Will be deleted or merged.
4
+ */
5
+ import { FeedbackParams, InsertToCursorPositionParams, InlineChatParams } from '@aws/language-server-runtimes/protocol';
6
+ import { CancellationToken, Chat, ChatParams, ChatResult, EndChatParams, QuickActionParams, ResponseError, TabAddParams, TabRemoveParams, TabChangeParams, InlineChatResult } from '@aws/language-server-runtimes/server-interface';
7
+ import { Features, LspHandlers } from '../types';
8
+ import { ChatSessionManagementService } from '../chat/chatSessionManagementService';
9
+ import { TelemetryService } from '../../shared/telemetry/telemetryService';
10
+ import { AmazonQTokenServiceManager } from '../../shared/amazonQServiceManager/AmazonQTokenServiceManager';
11
+ import { AmazonQWorkspaceConfig } from '../../shared/amazonQServiceManager/configurationUtils';
12
+ type ChatHandlers = Omit<LspHandlers<Chat>, 'openTab' | 'sendChatUpdate' | 'onFileClicked' | 'onInlineChatPrompt' | 'sendContextCommands' | 'onCreatePrompt'>;
13
+ export declare class AgenticChatController implements ChatHandlers {
14
+ #private;
15
+ constructor(chatSessionManagementService: ChatSessionManagementService, features: Features, telemetryService: TelemetryService, amazonQServiceManager?: AmazonQTokenServiceManager);
16
+ dispose(): void;
17
+ onChatPrompt(params: ChatParams, token: CancellationToken): Promise<ChatResult | ResponseError<ChatResult>>;
18
+ onInlineChatPrompt(params: InlineChatParams, token: CancellationToken): Promise<InlineChatResult | ResponseError<InlineChatResult>>;
19
+ onCodeInsertToCursorPosition(params: InsertToCursorPositionParams): Promise<void>;
20
+ onCopyCodeToClipboard(): void;
21
+ onEndChat(params: EndChatParams, _token: CancellationToken): boolean;
22
+ onFollowUpClicked(): void;
23
+ onInfoLinkClick(): void;
24
+ onLinkClick(): void;
25
+ onReady(): void;
26
+ onSendFeedback({ tabId, feedbackPayload }: FeedbackParams): void;
27
+ onSourceLinkClick(): void;
28
+ onTabAdd(params: TabAddParams): void;
29
+ onTabChange(params: TabChangeParams): void;
30
+ onTabRemove(params: TabRemoveParams): void;
31
+ onQuickAction(params: QuickActionParams, _cancellationToken: CancellationToken): {
32
+ messageId?: undefined;
33
+ body?: undefined;
34
+ } | {
35
+ messageId: string;
36
+ body: string;
37
+ };
38
+ updateConfiguration: (newConfig: AmazonQWorkspaceConfig) => void;
39
+ }
40
+ export {};
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ /**
3
+ * Copied from ../chat/chatController.ts for the purpose of developing a divergent implementation.
4
+ * Will be deleted or merged.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgenticChatController = void 0;
8
+ const codewhisperer_streaming_1 = require("@amzn/codewhisperer-streaming");
9
+ const protocol_1 = require("@aws/language-server-runtimes/protocol");
10
+ const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
11
+ const uuid_1 = require("uuid");
12
+ const types_1 = require("../../shared/telemetry/types");
13
+ const chatEventParser_1 = require("../chat/chatEventParser");
14
+ const utils_1 = require("../chat/utils");
15
+ const chatTelemetryController_1 = require("../chat/telemetry/chatTelemetryController");
16
+ const quickActions_1 = require("../chat/quickActions");
17
+ const metric_1 = require("../../shared/telemetry/metric");
18
+ const utils_2 = require("../../shared/utils");
19
+ const triggerContext_1 = require("../chat/contexts/triggerContext");
20
+ const constants_1 = require("../chat/constants");
21
+ const errors_1 = require("../../shared/amazonQServiceManager/errors");
22
+ const AmazonQTokenServiceManager_1 = require("../../shared/amazonQServiceManager/AmazonQTokenServiceManager");
23
+ class AgenticChatController {
24
+ #features;
25
+ #chatSessionManagementService;
26
+ #telemetryController;
27
+ #triggerContext;
28
+ #customizationArn;
29
+ #telemetryService;
30
+ #amazonQServiceManager;
31
+ constructor(chatSessionManagementService, features, telemetryService, amazonQServiceManager) {
32
+ this.#features = features;
33
+ this.#chatSessionManagementService = chatSessionManagementService;
34
+ this.#triggerContext = new triggerContext_1.QChatTriggerContext(features.workspace, features.logging);
35
+ this.#telemetryController = new chatTelemetryController_1.ChatTelemetryController(features, telemetryService);
36
+ this.#telemetryService = telemetryService;
37
+ this.#amazonQServiceManager = amazonQServiceManager;
38
+ }
39
+ dispose() {
40
+ this.#chatSessionManagementService.dispose();
41
+ this.#telemetryController.dispose();
42
+ }
43
+ async onChatPrompt(params, token) {
44
+ const maybeDefaultResponse = (0, utils_1.getDefaultChatResponse)(params.prompt.prompt);
45
+ if (maybeDefaultResponse) {
46
+ return maybeDefaultResponse;
47
+ }
48
+ const sessionResult = this.#chatSessionManagementService.getSession(params.tabId);
49
+ const { data: session, success } = sessionResult;
50
+ if (!success) {
51
+ return new server_interface_1.ResponseError(protocol_1.ErrorCodes.InternalError, sessionResult.error);
52
+ }
53
+ const metric = new metric_1.Metric({
54
+ cwsprChatConversationType: 'Chat',
55
+ });
56
+ const triggerContext = await this.#getTriggerContext(params, metric);
57
+ const isNewConversation = !session.conversationId;
58
+ token.onCancellationRequested(() => {
59
+ this.#log('cancellation requested');
60
+ session.abortRequest();
61
+ });
62
+ let response;
63
+ let requestInput;
64
+ const conversationIdentifier = session?.conversationId ?? 'New conversation';
65
+ try {
66
+ this.#log('Request for conversation id:', conversationIdentifier);
67
+ const profileArn = AmazonQTokenServiceManager_1.AmazonQTokenServiceManager.getInstance(this.#features).getActiveProfileArn();
68
+ requestInput = this.#triggerContext.getChatParamsFromTrigger(params, triggerContext, codewhisperer_streaming_1.ChatTriggerType.MANUAL, this.#customizationArn, profileArn);
69
+ metric.recordStart();
70
+ response = await session.sendMessage(requestInput);
71
+ this.#log('Response for conversation id:', conversationIdentifier, JSON.stringify(response.$metadata));
72
+ }
73
+ catch (err) {
74
+ if ((0, utils_2.isAwsError)(err) || ((0, utils_2.isObject)(err) && 'statusCode' in err && typeof err.statusCode === 'number')) {
75
+ metric.setDimension('cwsprChatRepsonseCode', err.statusCode ?? 400);
76
+ this.#telemetryController.emitMessageResponseError(params.tabId, metric.metric);
77
+ }
78
+ if (err instanceof errors_1.AmazonQServicePendingSigninError) {
79
+ this.#log(`Q Chat SSO Connection error: ${(0, utils_2.getErrorMessage)(err)}`);
80
+ return (0, utils_1.createAuthFollowUpResult)('full-auth');
81
+ }
82
+ if (err instanceof errors_1.AmazonQServicePendingProfileError) {
83
+ this.#log(`Q Chat SSO Connection error: ${(0, utils_2.getErrorMessage)(err)}`);
84
+ const followUpResult = (0, utils_1.createAuthFollowUpResult)('use-supported-auth');
85
+ // Access first element in array
86
+ if (followUpResult.followUp?.options) {
87
+ followUpResult.followUp.options[0].pillText = 'Select Q Developer Profile';
88
+ }
89
+ return followUpResult;
90
+ }
91
+ const authFollowType = (0, utils_1.getAuthFollowUpType)(err);
92
+ if (authFollowType) {
93
+ this.#log(`Q auth error: ${(0, utils_2.getErrorMessage)(err)}`);
94
+ return (0, utils_1.createAuthFollowUpResult)(authFollowType);
95
+ }
96
+ this.#log(`Q api request error ${err instanceof Error ? err.message : 'unknown'}`);
97
+ return new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err instanceof Error ? err.message : 'Unknown request error');
98
+ }
99
+ try {
100
+ const result = await this.#processSendMessageResponse(response, metric.mergeWith({
101
+ cwsprChatResponseCode: response.$metadata.httpStatusCode,
102
+ cwsprChatMessageId: response.$metadata.requestId,
103
+ }), params.partialResultToken);
104
+ session.conversationId = result.data?.conversationId;
105
+ this.#log('Session conversation id:', session.conversationId || '');
106
+ if (session.conversationId) {
107
+ this.#telemetryController.setConversationId(params.tabId, session.conversationId);
108
+ if (isNewConversation) {
109
+ this.#telemetryController.updateTriggerInfo(params.tabId, {
110
+ startTrigger: {
111
+ hasUserSnippet: metric.metric.cwsprChatHasCodeSnippet ?? false,
112
+ triggerType: triggerContext.triggerType,
113
+ },
114
+ });
115
+ this.#telemetryController.emitStartConversationMetric(params.tabId, metric.metric);
116
+ }
117
+ }
118
+ metric.setDimension('codewhispererCustomizationArn', requestInput.conversationState?.customizationArn);
119
+ await this.#telemetryController.emitAddMessageMetric(params.tabId, metric.metric);
120
+ this.#telemetryController.updateTriggerInfo(params.tabId, {
121
+ lastMessageTrigger: {
122
+ ...triggerContext,
123
+ messageId: response.$metadata.requestId,
124
+ followUpActions: new Set(result.data?.chatResult.followUp?.options
125
+ ?.map(option => option.prompt ?? '')
126
+ .filter(prompt => prompt.length > 0)),
127
+ },
128
+ });
129
+ return result.success
130
+ ? result.data.chatResult
131
+ : new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, result.error);
132
+ }
133
+ catch (err) {
134
+ this.#log('Error encountered during response streaming:', err instanceof Error ? err.message : 'unknown');
135
+ return new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err instanceof Error ? err.message : 'Unknown error occured during response stream');
136
+ }
137
+ }
138
+ async onInlineChatPrompt(params, token) {
139
+ // TODO: This metric needs to be removed later, just added for now to be able to create a ChatEventParser object
140
+ const metric = new metric_1.Metric({
141
+ cwsprChatConversationType: 'Chat',
142
+ });
143
+ const triggerContext = await this.#getInlineChatTriggerContext(params);
144
+ let response;
145
+ let requestInput;
146
+ try {
147
+ const profileArn = AmazonQTokenServiceManager_1.AmazonQTokenServiceManager.getInstance(this.#features).getActiveProfileArn();
148
+ requestInput = this.#triggerContext.getChatParamsFromTrigger(params, triggerContext, codewhisperer_streaming_1.ChatTriggerType.INLINE_CHAT, this.#customizationArn, profileArn);
149
+ if (!this.#amazonQServiceManager) {
150
+ throw new Error('amazonQServiceManager is not initialized');
151
+ }
152
+ const client = this.#amazonQServiceManager.getStreamingClient();
153
+ response = await client.sendMessage(requestInput);
154
+ this.#log('Response for inline chat', JSON.stringify(response.$metadata), JSON.stringify(response));
155
+ }
156
+ catch (err) {
157
+ if (err instanceof errors_1.AmazonQServicePendingSigninError || err instanceof errors_1.AmazonQServicePendingProfileError) {
158
+ this.#log(`Q Inline Chat SSO Connection error: ${(0, utils_2.getErrorMessage)(err)}`);
159
+ return new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err.message);
160
+ }
161
+ this.#log(`Q api request error ${err instanceof Error ? err.message : 'unknown'}`);
162
+ return new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err instanceof Error ? err.message : 'Unknown request error');
163
+ }
164
+ try {
165
+ const result = await this.#processSendMessageResponseForInlineChat(response, metric, params.partialResultToken);
166
+ return result.success
167
+ ? {
168
+ ...result.data.chatResult,
169
+ requestId: response.$metadata.requestId,
170
+ }
171
+ : new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, result.error);
172
+ }
173
+ catch (err) {
174
+ this.#log('Error encountered during inline chat response streaming:', err instanceof Error ? err.message : 'unknown');
175
+ return new server_interface_1.ResponseError(server_interface_1.LSPErrorCodes.RequestFailed, err instanceof Error ? err.message : 'Unknown error occurred during inline chat response stream');
176
+ }
177
+ }
178
+ async onCodeInsertToCursorPosition(params) {
179
+ // Implementation based on https://github.com/aws/aws-toolkit-vscode/blob/1814cc84228d4bf20270574c5980b91b227f31cf/packages/core/src/amazonq/commons/controllers/contentController.ts#L38
180
+ if (!params.textDocument || !params.cursorPosition || !params.code) {
181
+ const missingParams = [];
182
+ if (!params.textDocument)
183
+ missingParams.push('textDocument');
184
+ if (!params.cursorPosition)
185
+ missingParams.push('cursorPosition');
186
+ if (!params.code)
187
+ missingParams.push('code');
188
+ this.#log(`Q Chat server failed to insert code. Missing required parameters for insert code: ${missingParams.join(', ')}`);
189
+ return;
190
+ }
191
+ let cursorPosition = params.cursorPosition;
192
+ const indentRange = {
193
+ start: { line: cursorPosition.line, character: 0 },
194
+ end: cursorPosition,
195
+ };
196
+ const documentContent = await this.#features.workspace.getTextDocument(params.textDocument.uri);
197
+ // linePrefix is the raw text that is between the start of the line and the current cursor position
198
+ let linePrefix = documentContent?.getText(indentRange);
199
+ // calculatedIndent is the indent we calculate inside this function and apply to the text to be inserted
200
+ let calculatedIndent = '';
201
+ let hasVirtualSpace = false;
202
+ if (linePrefix) {
203
+ // If linePrefix object is not empty, there are two possibilities:
204
+ // Case 1: If linePrefix contains only whitespace: Use the entire linePrefix as is for the indent
205
+ // Case 2: If linePrefix contains non-whitespace characters: Extract leading whitespace from linePrefix (if any), ignore rest of text
206
+ calculatedIndent =
207
+ linePrefix.trim().length == 0
208
+ ? linePrefix
209
+ : ' '.repeat(linePrefix.length - linePrefix.trimStart().length);
210
+ }
211
+ else if (documentContent && cursorPosition.character > 0) {
212
+ // When the cursor is not at the start of the line (position > 0) but there's no actual text at the indentation range
213
+ // It means there are virtual spaces that is being rendered by the IDE
214
+ // In this case, the indentation is determined by the cursorPosition
215
+ this.#log('Indent is nullish and the cursor position is greater than zero while inserting code');
216
+ calculatedIndent = ' '.repeat(cursorPosition.character);
217
+ hasVirtualSpace = true;
218
+ cursorPosition.character = 0;
219
+ }
220
+ const textWithIndent = params.code
221
+ .split('\n')
222
+ .map((line, index) => {
223
+ if (index === 0) {
224
+ return hasVirtualSpace && line ? calculatedIndent + line : line;
225
+ }
226
+ // Only indent non-empty lines
227
+ return line ? calculatedIndent + line : '';
228
+ })
229
+ .join('\n');
230
+ const workspaceEdit = {
231
+ edit: {
232
+ documentChanges: [
233
+ protocol_1.TextDocumentEdit.create({ uri: params.textDocument.uri, version: 0 }, [
234
+ protocol_1.TextEdit.insert(cursorPosition, textWithIndent),
235
+ ]),
236
+ ],
237
+ },
238
+ };
239
+ const applyResult = await this.#features.lsp.workspace.applyWorkspaceEdit(workspaceEdit);
240
+ if (applyResult.applied) {
241
+ this.#log(`Q Chat server inserted code successfully`);
242
+ this.#telemetryController.enqueueCodeDiffEntry({ ...params, code: textWithIndent });
243
+ }
244
+ else {
245
+ this.#log(`Q Chat server failed to insert code: ${applyResult.failureReason ?? 'No failure reason provided'}`);
246
+ }
247
+ }
248
+ onCopyCodeToClipboard() { }
249
+ onEndChat(params, _token) {
250
+ const { success } = this.#chatSessionManagementService.deleteSession(params.tabId);
251
+ return success;
252
+ }
253
+ onFollowUpClicked() { }
254
+ onInfoLinkClick() { }
255
+ onLinkClick() { }
256
+ onReady() { }
257
+ onSendFeedback({ tabId, feedbackPayload }) {
258
+ this.#features.telemetry.emitMetric({
259
+ name: 'amazonq_sendFeedback',
260
+ data: {
261
+ comment: JSON.stringify({
262
+ type: 'codewhisperer-chat-answer-feedback',
263
+ conversationId: this.#telemetryController.getConversationId(tabId) ?? '',
264
+ messageId: feedbackPayload.messageId,
265
+ reason: feedbackPayload.selectedOption,
266
+ userComment: feedbackPayload.comment,
267
+ }),
268
+ // this is always Negative because only thumbs down has a form
269
+ sentiment: 'Negative',
270
+ },
271
+ });
272
+ }
273
+ onSourceLinkClick() { }
274
+ onTabAdd(params) {
275
+ this.#telemetryController.activeTabId = params.tabId;
276
+ this.#chatSessionManagementService.createSession(params.tabId);
277
+ }
278
+ onTabChange(params) {
279
+ this.#telemetryController.emitConversationMetric({
280
+ name: types_1.ChatTelemetryEventName.ExitFocusConversation,
281
+ data: {},
282
+ });
283
+ this.#telemetryController.activeTabId = params.tabId;
284
+ this.#telemetryController.emitConversationMetric({
285
+ name: types_1.ChatTelemetryEventName.EnterFocusConversation,
286
+ data: {},
287
+ });
288
+ }
289
+ onTabRemove(params) {
290
+ if (this.#telemetryController.activeTabId === params.tabId) {
291
+ this.#telemetryController.emitConversationMetric({
292
+ name: types_1.ChatTelemetryEventName.ExitFocusConversation,
293
+ data: {},
294
+ });
295
+ this.#telemetryController.activeTabId = undefined;
296
+ }
297
+ this.#chatSessionManagementService.deleteSession(params.tabId);
298
+ this.#telemetryController.removeConversation(params.tabId);
299
+ }
300
+ onQuickAction(params, _cancellationToken) {
301
+ switch (params.quickAction) {
302
+ case quickActions_1.QuickAction.Clear: {
303
+ const sessionResult = this.#chatSessionManagementService.getSession(params.tabId);
304
+ this.#telemetryController.emitChatMetric({
305
+ name: types_1.ChatTelemetryEventName.RunCommand,
306
+ data: {
307
+ cwsprChatCommandType: params.quickAction,
308
+ },
309
+ });
310
+ this.#telemetryController.removeConversation(params.tabId);
311
+ sessionResult.data?.clear();
312
+ return {};
313
+ }
314
+ case quickActions_1.QuickAction.Help:
315
+ this.#telemetryController.emitChatMetric({
316
+ name: types_1.ChatTelemetryEventName.RunCommand,
317
+ data: {
318
+ cwsprChatCommandType: params.quickAction,
319
+ },
320
+ });
321
+ return {
322
+ messageId: (0, uuid_1.v4)(),
323
+ body: constants_1.HELP_MESSAGE,
324
+ };
325
+ default:
326
+ return {};
327
+ }
328
+ }
329
+ async #getInlineChatTriggerContext(params) {
330
+ let triggerContext = await this.#triggerContext.getNewTriggerContext(params);
331
+ return triggerContext;
332
+ }
333
+ async #getTriggerContext(params, metric) {
334
+ const lastMessageTrigger = this.#telemetryController.getLastMessageTrigger(params.tabId);
335
+ let triggerContext;
336
+ // this is the only way we can detect a follow up action
337
+ // we can reuse previous trigger information
338
+ if (lastMessageTrigger?.followUpActions?.has(params.prompt?.prompt ?? '')) {
339
+ await this.#telemetryController.emitInteractWithMessageMetric(params.tabId, {
340
+ cwsprChatMessageId: lastMessageTrigger.messageId,
341
+ cwsprChatInteractionType: types_1.ChatInteractionType.ClickFollowUp,
342
+ });
343
+ triggerContext = lastMessageTrigger;
344
+ }
345
+ else {
346
+ triggerContext = await this.#triggerContext.getNewTriggerContext(params);
347
+ triggerContext.triggerType = this.#telemetryController.getCurrentTrigger(params.tabId) ?? 'click';
348
+ }
349
+ metric.mergeWith({
350
+ cwsprChatUserIntent: triggerContext?.userIntent,
351
+ cwsprChatProgrammingLanguage: triggerContext?.programmingLanguage?.languageName,
352
+ cwsprChatRequestLength: params.prompt?.prompt?.length ?? 0,
353
+ cwsprChatTriggerInteraction: triggerContext?.triggerType,
354
+ cwsprChatHasCodeSnippet: triggerContext.hasCodeSnippet ?? false,
355
+ cwsprChatActiveEditorTotalCharacters: triggerContext.totalEditorCharacters ?? 0,
356
+ });
357
+ return triggerContext;
358
+ }
359
+ async #processSendMessageResponse(response, metric, partialResultToken) {
360
+ const requestId = response.$metadata.requestId;
361
+ const chatEventParser = new chatEventParser_1.ChatEventParser(requestId, metric);
362
+ for await (const chatEvent of response.sendMessageResponse) {
363
+ const result = chatEventParser.processPartialEvent(chatEvent);
364
+ // terminate early when there is an error
365
+ if (!result.success) {
366
+ return result;
367
+ }
368
+ if (!(0, utils_2.isNullish)(partialResultToken)) {
369
+ await this.#features.lsp.sendProgress(protocol_1.chatRequestType, partialResultToken, result.data.chatResult);
370
+ }
371
+ }
372
+ metric.mergeWith({
373
+ cwsprChatFullResponseLatency: metric.getTimeElapsed(),
374
+ cwsprChatFollowUpCount: chatEventParser.totalEvents.followupPromptEvent,
375
+ cwsprChatReferencesCount: chatEventParser.totalEvents.codeReferenceEvent,
376
+ cwsprChatSourceLinkCount: chatEventParser.totalEvents.supplementaryWebLinksEvent,
377
+ cwsprChatResponseLength: chatEventParser.body?.length ?? 0,
378
+ });
379
+ return chatEventParser.getResult();
380
+ }
381
+ async #processSendMessageResponseForInlineChat(response, metric, partialResultToken) {
382
+ const requestId = response.$metadata.requestId;
383
+ const chatEventParser = new chatEventParser_1.ChatEventParser(requestId, metric);
384
+ for await (const chatEvent of response.sendMessageResponse) {
385
+ const result = chatEventParser.processPartialEvent(chatEvent);
386
+ // terminate early when there is an error
387
+ if (!result.success) {
388
+ return result;
389
+ }
390
+ if (!(0, utils_2.isNullish)(partialResultToken)) {
391
+ await this.#features.lsp.sendProgress(protocol_1.chatRequestType, partialResultToken, result.data.chatResult);
392
+ }
393
+ }
394
+ return chatEventParser.getResult();
395
+ }
396
+ updateConfiguration = (newConfig) => {
397
+ this.#customizationArn = newConfig.customizationArn;
398
+ this.#log(`Chat configuration updated to use ${this.#customizationArn}`);
399
+ /*
400
+ The flag enableTelemetryEventsToDestination is set to true temporarily. It's value will be determined through destination
401
+ configuration post all events migration to STE. It'll be replaced by qConfig['enableTelemetryEventsToDestination'] === true
402
+ */
403
+ // const enableTelemetryEventsToDestination = true
404
+ // this.#telemetryService.updateEnableTelemetryEventsToDestination(enableTelemetryEventsToDestination)
405
+ const updatedOptOutPreference = newConfig.optOutTelemetryPreference;
406
+ this.#telemetryService.updateOptOutPreference(updatedOptOutPreference);
407
+ this.#log(`Chat configuration telemetry preference to ${updatedOptOutPreference}`);
408
+ };
409
+ #log(...messages) {
410
+ this.#features.logging.log(messages.join(' '));
411
+ }
412
+ }
413
+ exports.AgenticChatController = AgenticChatController;
414
+ //# sourceMappingURL=agenticChatController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agenticChatController.js","sourceRoot":"","sources":["../../../src/language-server/agenticChat/agenticChatController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copied from ../qChatServer.ts for the purpose of developing a divergent implementation.
3
+ * Will be deleted or merged.
4
+ */
5
+ import { Server } from '@aws/language-server-runtimes/server-interface';
6
+ export declare const QAgenticChatServer: () => Server;