@aws/lsp-codewhisperer 0.0.3 → 0.0.5

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 (192) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/out/client/sigv4/service.json +1 -1
  3. package/out/client/token/bearer-token-service.json +1 -1
  4. package/out/index.d.ts +1 -0
  5. package/out/index.js +1 -0
  6. package/out/index.js.map +1 -1
  7. package/out/language-server/chat/chatController.d.ts +25 -0
  8. package/out/language-server/chat/chatController.js +117 -0
  9. package/out/language-server/chat/chatController.js.map +1 -0
  10. package/out/language-server/chat/chatController.test.d.ts +1 -0
  11. package/out/language-server/chat/chatController.test.js +240 -0
  12. package/out/language-server/chat/chatController.test.js.map +1 -0
  13. package/out/language-server/chat/chatEventParser.d.ts +24 -0
  14. package/out/language-server/chat/chatEventParser.js +84 -0
  15. package/out/language-server/chat/chatEventParser.js.map +1 -0
  16. package/out/language-server/chat/chatEventParser.test.d.ts +1 -0
  17. package/out/language-server/chat/chatEventParser.test.js +189 -0
  18. package/out/language-server/chat/chatEventParser.test.js.map +1 -0
  19. package/out/language-server/chat/chatSessionManagementService.d.ts +16 -0
  20. package/out/language-server/chat/chatSessionManagementService.js +92 -0
  21. package/out/language-server/chat/chatSessionManagementService.js.map +1 -0
  22. package/out/language-server/chat/chatSessionManagementService.test.d.ts +1 -0
  23. package/out/language-server/chat/chatSessionManagementService.test.js +73 -0
  24. package/out/language-server/chat/chatSessionManagementService.test.js.map +1 -0
  25. package/out/language-server/chat/chatSessionService.d.ts +13 -0
  26. package/out/language-server/chat/chatSessionService.js +63 -0
  27. package/out/language-server/chat/chatSessionService.js.map +1 -0
  28. package/out/language-server/chat/chatSessionService.test.d.ts +1 -0
  29. package/out/language-server/chat/chatSessionService.test.js +80 -0
  30. package/out/language-server/chat/chatSessionService.test.js.map +1 -0
  31. package/out/language-server/chat/contexts/documentContext.d.ts +17 -0
  32. package/out/language-server/chat/contexts/documentContext.js +59 -0
  33. package/out/language-server/chat/contexts/documentContext.js.map +1 -0
  34. package/out/language-server/chat/contexts/documentContext.test.d.ts +1 -0
  35. package/out/language-server/chat/contexts/documentContext.test.js +147 -0
  36. package/out/language-server/chat/contexts/documentContext.test.js.map +1 -0
  37. package/out/language-server/chat/contexts/utils.d.ts +10 -0
  38. package/out/language-server/chat/contexts/utils.js +71 -0
  39. package/out/language-server/chat/contexts/utils.js.map +1 -0
  40. package/out/language-server/chat/contexts/utils.test.d.ts +1 -0
  41. package/out/language-server/chat/contexts/utils.test.js +72 -0
  42. package/out/language-server/chat/contexts/utils.test.js.map +1 -0
  43. package/out/language-server/chat/utils.d.ts +4 -0
  44. package/out/language-server/chat/utils.js +34 -0
  45. package/out/language-server/chat/utils.js.map +1 -0
  46. package/out/language-server/codeWhispererSecurityScanServer.d.ts +1 -2
  47. package/out/language-server/codeWhispererSecurityScanServer.js +152 -25
  48. package/out/language-server/codeWhispererSecurityScanServer.js.map +1 -1
  49. package/out/language-server/codeWhispererServer.d.ts +1 -2
  50. package/out/language-server/codeWhispererServer.js +3 -3
  51. package/out/language-server/codeWhispererServer.js.map +1 -1
  52. package/out/language-server/codeWhispererServer.test.js +100 -101
  53. package/out/language-server/codeWhispererServer.test.js.map +1 -1
  54. package/out/language-server/codeWhispererService.d.ts +1 -1
  55. package/out/language-server/codeWhispererService.js.map +1 -1
  56. package/out/language-server/dependencyGraph/csharpDependencyGraph.d.ts +3 -3
  57. package/out/language-server/dependencyGraph/csharpDependencyGraph.js +40 -37
  58. package/out/language-server/dependencyGraph/csharpDependencyGraph.js.map +1 -1
  59. package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js +106 -78
  60. package/out/language-server/dependencyGraph/csharpDependencyGraph.test.js.map +1 -1
  61. package/out/language-server/dependencyGraph/dependencyGraph.d.ts +12 -4
  62. package/out/language-server/dependencyGraph/dependencyGraph.js +24 -6
  63. package/out/language-server/dependencyGraph/dependencyGraph.js.map +1 -1
  64. package/out/language-server/dependencyGraph/dependencyGraphFactory.d.ts +2 -3
  65. package/out/language-server/dependencyGraph/dependencyGraphFactory.js +2 -2
  66. package/out/language-server/dependencyGraph/dependencyGraphFactory.js.map +1 -1
  67. package/out/language-server/languageDetection.d.ts +11 -3
  68. package/out/language-server/languageDetection.js +85 -20
  69. package/out/language-server/languageDetection.js.map +1 -1
  70. package/out/language-server/languageDetection.test.d.ts +1 -0
  71. package/out/language-server/languageDetection.test.js +31 -0
  72. package/out/language-server/languageDetection.test.js.map +1 -0
  73. package/out/language-server/netTransformServer.d.ts +12 -0
  74. package/out/language-server/netTransformServer.js +27 -0
  75. package/out/language-server/netTransformServer.js.map +1 -0
  76. package/out/language-server/proxy-server.d.ts +3 -2
  77. package/out/language-server/proxy-server.js +35 -1
  78. package/out/language-server/proxy-server.js.map +1 -1
  79. package/out/language-server/qChatServer.d.ts +3 -0
  80. package/out/language-server/qChatServer.js +31 -0
  81. package/out/language-server/qChatServer.js.map +1 -0
  82. package/out/language-server/qChatServer.test.d.ts +1 -0
  83. package/out/language-server/qChatServer.test.js +51 -0
  84. package/out/language-server/qChatServer.test.js.map +1 -0
  85. package/out/language-server/securityScan/securityScanDiagnosticsProvider.d.ts +28 -0
  86. package/out/language-server/securityScan/securityScanDiagnosticsProvider.js +111 -0
  87. package/out/language-server/securityScan/securityScanDiagnosticsProvider.js.map +1 -0
  88. package/out/language-server/securityScan/securityScanHandler.d.ts +12 -5
  89. package/out/language-server/securityScan/securityScanHandler.js +69 -19
  90. package/out/language-server/securityScan/securityScanHandler.js.map +1 -1
  91. package/out/language-server/securityScan/securityScanHandler.test.js +3 -2
  92. package/out/language-server/securityScan/securityScanHandler.test.js.map +1 -1
  93. package/out/language-server/securityScan/types.d.ts +15 -0
  94. package/out/language-server/session/sessionManager.d.ts +1 -2
  95. package/out/language-server/session/sessionManager.js.map +1 -1
  96. package/out/language-server/telemetry/codePercentage.d.ts +1 -1
  97. package/out/language-server/telemetry/types.d.ts +20 -0
  98. package/out/language-server/telemetry/userTriggerDecision.test.js +8 -8
  99. package/out/language-server/telemetry/userTriggerDecision.test.js.map +1 -1
  100. package/out/language-server/telemetry.test.js +4 -4
  101. package/out/language-server/telemetry.test.js.map +1 -1
  102. package/out/language-server/testUtils.d.ts +1 -0
  103. package/out/language-server/testUtils.js +17 -1
  104. package/out/language-server/testUtils.js.map +1 -1
  105. package/out/language-server/types.d.ts +13 -0
  106. package/out/language-server/types.js +3 -0
  107. package/out/language-server/types.js.map +1 -0
  108. package/out/language-server/utils.d.ts +3 -0
  109. package/out/language-server/utils.js +19 -1
  110. package/out/language-server/utils.js.map +1 -1
  111. package/out/language-server/utils.test.d.ts +1 -0
  112. package/out/language-server/utils.test.js +33 -0
  113. package/out/language-server/utils.test.js.map +1 -0
  114. package/package.json +16 -7
  115. package/src.gen/@amzn/codewhisperer-streaming/LICENSE +201 -0
  116. package/src.gen/@amzn/codewhisperer-streaming/README.md +464 -0
  117. package/src.gen/@amzn/codewhisperer-streaming/api-extractor.json +4 -0
  118. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/CodeWhispererStreaming.js +17 -0
  119. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/CodeWhispererStreamingClient.js +42 -0
  120. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/commands/ExportResultArchiveCommand.js +42 -0
  121. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/commands/GenerateAssistantResponseCommand.js +42 -0
  122. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/commands/GenerateTaskAssistPlanCommand.js +42 -0
  123. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/commands/index.js +6 -0
  124. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/endpoints.js +165 -0
  125. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/extensionConfiguration.js +2 -0
  126. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/index.js +10 -0
  127. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/models/CodeWhispererStreamingServiceException.js +12 -0
  128. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/models/index.js +4 -0
  129. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/models/models_0.js +361 -0
  130. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/protocols/Aws_restJson1.js +458 -0
  131. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.browser.js +38 -0
  132. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.js +46 -0
  133. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.native.js +15 -0
  134. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeConfig.shared.js +22 -0
  135. package/src.gen/@amzn/codewhisperer-streaming/dist-cjs/runtimeExtensions.js +22 -0
  136. package/src.gen/@amzn/codewhisperer-streaming/dist-es/CodeWhispererStreaming.js +13 -0
  137. package/src.gen/@amzn/codewhisperer-streaming/dist-es/CodeWhispererStreamingClient.js +38 -0
  138. package/src.gen/@amzn/codewhisperer-streaming/dist-es/commands/ExportResultArchiveCommand.js +38 -0
  139. package/src.gen/@amzn/codewhisperer-streaming/dist-es/commands/GenerateAssistantResponseCommand.js +38 -0
  140. package/src.gen/@amzn/codewhisperer-streaming/dist-es/commands/GenerateTaskAssistPlanCommand.js +38 -0
  141. package/src.gen/@amzn/codewhisperer-streaming/dist-es/commands/index.js +3 -0
  142. package/src.gen/@amzn/codewhisperer-streaming/dist-es/endpoints.js +161 -0
  143. package/src.gen/@amzn/codewhisperer-streaming/dist-es/extensionConfiguration.js +1 -0
  144. package/src.gen/@amzn/codewhisperer-streaming/dist-es/index.js +5 -0
  145. package/src.gen/@amzn/codewhisperer-streaming/dist-es/models/CodeWhispererStreamingServiceException.js +8 -0
  146. package/src.gen/@amzn/codewhisperer-streaming/dist-es/models/index.js +1 -0
  147. package/src.gen/@amzn/codewhisperer-streaming/dist-es/models/models_0.js +328 -0
  148. package/src.gen/@amzn/codewhisperer-streaming/dist-es/protocols/Aws_restJson1.js +449 -0
  149. package/src.gen/@amzn/codewhisperer-streaming/dist-es/runtimeConfig.browser.js +33 -0
  150. package/src.gen/@amzn/codewhisperer-streaming/dist-es/runtimeConfig.js +41 -0
  151. package/src.gen/@amzn/codewhisperer-streaming/dist-es/runtimeConfig.native.js +11 -0
  152. package/src.gen/@amzn/codewhisperer-streaming/dist-es/runtimeConfig.shared.js +18 -0
  153. package/src.gen/@amzn/codewhisperer-streaming/dist-es/runtimeExtensions.js +18 -0
  154. package/src.gen/@amzn/codewhisperer-streaming/dist-types/CodeWhispererStreaming.d.ts +30 -0
  155. package/src.gen/@amzn/codewhisperer-streaming/dist-types/CodeWhispererStreamingClient.d.ts +169 -0
  156. package/src.gen/@amzn/codewhisperer-streaming/dist-types/commands/ExportResultArchiveCommand.d.ts +103 -0
  157. package/src.gen/@amzn/codewhisperer-streaming/dist-types/commands/GenerateAssistantResponseCommand.d.ts +294 -0
  158. package/src.gen/@amzn/codewhisperer-streaming/dist-types/commands/GenerateTaskAssistPlanCommand.d.ts +304 -0
  159. package/src.gen/@amzn/codewhisperer-streaming/dist-types/commands/index.d.ts +3 -0
  160. package/src.gen/@amzn/codewhisperer-streaming/dist-types/endpoints.d.ts +2 -0
  161. package/src.gen/@amzn/codewhisperer-streaming/dist-types/extensionConfiguration.d.ts +8 -0
  162. package/src.gen/@amzn/codewhisperer-streaming/dist-types/index.d.ts +5 -0
  163. package/src.gen/@amzn/codewhisperer-streaming/dist-types/models/CodeWhispererStreamingServiceException.d.ts +13 -0
  164. package/src.gen/@amzn/codewhisperer-streaming/dist-types/models/index.d.ts +1 -0
  165. package/src.gen/@amzn/codewhisperer-streaming/dist-types/models/models_0.d.ts +1173 -0
  166. package/src.gen/@amzn/codewhisperer-streaming/dist-types/protocols/Aws_restJson1.d.ts +29 -0
  167. package/src.gen/@amzn/codewhisperer-streaming/dist-types/runtimeConfig.browser.d.ts +39 -0
  168. package/src.gen/@amzn/codewhisperer-streaming/dist-types/runtimeConfig.d.ts +39 -0
  169. package/src.gen/@amzn/codewhisperer-streaming/dist-types/runtimeConfig.native.d.ts +38 -0
  170. package/src.gen/@amzn/codewhisperer-streaming/dist-types/runtimeConfig.shared.d.ts +17 -0
  171. package/src.gen/@amzn/codewhisperer-streaming/dist-types/runtimeExtensions.d.ts +17 -0
  172. package/src.gen/@amzn/codewhisperer-streaming/package.json +87 -0
  173. package/src.gen/@amzn/codewhisperer-streaming/src/CodeWhispererStreaming.ts +84 -0
  174. package/src.gen/@amzn/codewhisperer-streaming/src/CodeWhispererStreamingClient.ts +304 -0
  175. package/src.gen/@amzn/codewhisperer-streaming/src/commands/ExportResultArchiveCommand.ts +177 -0
  176. package/src.gen/@amzn/codewhisperer-streaming/src/commands/GenerateAssistantResponseCommand.ts +369 -0
  177. package/src.gen/@amzn/codewhisperer-streaming/src/commands/GenerateTaskAssistPlanCommand.ts +379 -0
  178. package/src.gen/@amzn/codewhisperer-streaming/src/commands/index.ts +4 -0
  179. package/src.gen/@amzn/codewhisperer-streaming/src/endpoints.ts +170 -0
  180. package/src.gen/@amzn/codewhisperer-streaming/src/extensionConfiguration.ts +12 -0
  181. package/src.gen/@amzn/codewhisperer-streaming/src/index.ts +8 -0
  182. package/src.gen/@amzn/codewhisperer-streaming/src/models/CodeWhispererStreamingServiceException.ts +22 -0
  183. package/src.gen/@amzn/codewhisperer-streaming/src/models/index.ts +2 -0
  184. package/src.gen/@amzn/codewhisperer-streaming/src/models/models_0.ts +1518 -0
  185. package/src.gen/@amzn/codewhisperer-streaming/src/protocols/Aws_restJson1.ts +740 -0
  186. package/src.gen/@amzn/codewhisperer-streaming/src/runtimeConfig.browser.ts +42 -0
  187. package/src.gen/@amzn/codewhisperer-streaming/src/runtimeConfig.native.ts +17 -0
  188. package/src.gen/@amzn/codewhisperer-streaming/src/runtimeConfig.shared.ts +24 -0
  189. package/src.gen/@amzn/codewhisperer-streaming/src/runtimeConfig.ts +55 -0
  190. package/src.gen/@amzn/codewhisperer-streaming/src/runtimeExtensions.ts +44 -0
  191. package/src.gen/@amzn/codewhisperer-streaming/typedoc.json +5 -0
  192. package/script/generateServiceClient.ts +0 -242
@@ -1,35 +1,92 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSupportedLanguageId = void 0;
3
+ exports.getLanguageId = exports.getSupportedLanguageId = exports.qLanguageIdByDocumentLanguageId = exports.languageByExtension = exports.supportedSecurityScanLanguages = void 0;
4
4
  // This will be extended as more language features
5
5
  // are integrated into the language server and clients.
6
6
  // See: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.18/specification/#textDocumentItem
7
- const supportedFileTypes = ['c', 'cpp', 'csharp', 'javascript', 'python', 'typescript'];
8
- const supportedExtensions = {
7
+ const supportedFileTypes = [
8
+ 'c',
9
+ 'cpp',
10
+ 'csharp',
11
+ 'java',
12
+ 'javascript',
13
+ 'jsx',
14
+ 'python',
15
+ 'typescript',
16
+ 'json',
17
+ 'yaml',
18
+ ];
19
+ exports.supportedSecurityScanLanguages = ['csharp'];
20
+ exports.languageByExtension = {
9
21
  '.c': 'c',
10
- '.h': 'c',
11
22
  '.cpp': 'cpp',
12
- '.hpp': 'cpp',
13
23
  '.cs': 'csharp',
24
+ '.h': 'c',
25
+ '.hpp': 'cpp',
26
+ '.go': 'go',
27
+ '.kt': 'kotlin',
28
+ '.kts': 'kotlin',
29
+ '.java': 'java',
14
30
  '.js': 'javascript',
31
+ '.json': 'json',
32
+ '.jsx': 'jsx',
33
+ '.php': 'php',
15
34
  '.py': 'python',
35
+ '.rb': 'ruby',
36
+ '.rs': 'rust',
37
+ '.sc': 'scala',
38
+ '.scala': 'scala',
39
+ '.sh': 'shell',
40
+ '.sql': 'sql',
41
+ '.tf': 'tf',
16
42
  '.ts': 'typescript',
43
+ '.tsx': 'tsx',
44
+ '.vue': 'vue',
45
+ '.yaml': 'yaml',
46
+ '.yml': 'yaml',
47
+ };
48
+ // some are exact match and some like javascriptreact and shellscript are not
49
+ exports.qLanguageIdByDocumentLanguageId = {
50
+ c: 'c',
51
+ cpp: 'cpp',
52
+ csharp: 'csharp',
53
+ go: 'go',
54
+ java: 'java',
55
+ javascript: 'javascript',
56
+ javascriptreact: 'jsx',
57
+ json: 'json',
58
+ jsx: 'jsx',
59
+ kotlin: 'kotlin',
60
+ php: 'php',
61
+ python: 'python',
62
+ ruby: 'ruby',
63
+ rust: 'rust',
64
+ scala: 'scala',
65
+ shell: 'shell',
66
+ shellscript: 'shell',
67
+ sql: 'sql',
68
+ tf: 'tf',
69
+ typescript: 'typescript',
70
+ typescriptreact: 'tsx',
71
+ vue: 'vue',
72
+ yaml: 'yaml',
17
73
  };
18
- const getSupportedLanguageId = (textDocument) => {
74
+ const getSupportedLanguageId = (textDocument, supportedLanguageIds = supportedFileTypes) => {
19
75
  if (!textDocument) {
20
76
  return;
21
77
  }
22
- const languageId = getCodeWhispererLanguageIdByTextDocumentLanguageId(textDocument.languageId);
23
- if (languageId !== undefined) {
24
- return languageId;
25
- }
26
- for (const extension in supportedExtensions) {
27
- if (textDocument.uri.endsWith(extension)) {
28
- return supportedExtensions[extension];
29
- }
30
- }
78
+ const languageId = (0, exports.getLanguageId)(textDocument);
79
+ return languageId && supportedLanguageIds.includes(languageId) ? languageId : undefined;
31
80
  };
32
81
  exports.getSupportedLanguageId = getSupportedLanguageId;
82
+ const getLanguageId = (textDocument) => {
83
+ if (!textDocument) {
84
+ return undefined;
85
+ }
86
+ return (getCodeWhispererLanguageIdByTextDocumentLanguageId(textDocument.languageId) ||
87
+ getCodeWhispererLanguageIdByExtension(textDocument));
88
+ };
89
+ exports.getLanguageId = getLanguageId;
33
90
  /**
34
91
  * Used to map different IDE values for TextDocument languageIds to CodeWhisperer languageIds.
35
92
  * Examples of the CodeWhisperer defined language ids can be found in service-2.json, near "ProgrammingLanguageLanguageNameString"
@@ -40,15 +97,23 @@ function getCodeWhispererLanguageIdByTextDocumentLanguageId(textDocumentLanguage
40
97
  if (textDocumentLanguageId === undefined) {
41
98
  return undefined;
42
99
  }
43
- if (supportedFileTypes.includes(textDocumentLanguageId)) {
44
- return textDocumentLanguageId;
100
+ else if (exports.qLanguageIdByDocumentLanguageId[textDocumentLanguageId]) {
101
+ return exports.qLanguageIdByDocumentLanguageId[textDocumentLanguageId];
45
102
  }
46
103
  // IDEs can identify a file's languageId using non-standardized values
47
104
  // Eg: 'CSHARP', 'CSharp' => 'csharp'
48
105
  // Try to map case-insensitive matches to increase the likelihood of supporting the file in an IDE.
49
- for (const supportedFileType of supportedFileTypes) {
50
- if (textDocumentLanguageId.toLowerCase() === supportedFileType.toLowerCase()) {
51
- return supportedFileType;
106
+ for (const [languageId, cwprLanguageId] of Object.entries(exports.qLanguageIdByDocumentLanguageId)) {
107
+ if (textDocumentLanguageId.toLowerCase() === languageId.toLowerCase()) {
108
+ return cwprLanguageId;
109
+ }
110
+ }
111
+ return undefined;
112
+ }
113
+ function getCodeWhispererLanguageIdByExtension(textDocument) {
114
+ for (const [extension, languageId] of Object.entries(exports.languageByExtension)) {
115
+ if (textDocument.uri.endsWith(extension)) {
116
+ return languageId;
52
117
  }
53
118
  }
54
119
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"languageDetection.js","sourceRoot":"","sources":["../../src/language-server/languageDetection.ts"],"names":[],"mappings":";;;AAwBA,kDAAkD;AAClD,uDAAuD;AACvD,oHAAoH;AACpH,MAAM,kBAAkB,GAA4B,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;AAChH,MAAM,mBAAmB,GAA6C;IAClE,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,YAAY;CACtB,CAAA;AAEM,MAAM,sBAAsB,GAAG,CAAC,YAAsC,EAAqC,EAAE;IAChH,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,kDAAkD,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IAC9F,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC1C,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAfY,QAAA,sBAAsB,0BAelC;AAED;;;;;GAKG;AACH,SAAS,kDAAkD,CACvD,sBAAsD;IAEtD,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,IAAI,kBAAkB,CAAC,QAAQ,CAAC,sBAA+C,CAAC,EAAE,CAAC;QAC/E,OAAO,sBAA+C,CAAA;IAC1D,CAAC;IAED,sEAAsE;IACtE,qCAAqC;IACrC,mGAAmG;IACnG,KAAK,MAAM,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;QACjD,IAAI,sBAAsB,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3E,OAAO,iBAA0C,CAAA;QACrD,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"languageDetection.js","sourceRoot":"","sources":["../../src/language-server/languageDetection.ts"],"names":[],"mappings":";;;AA0BA,kDAAkD;AAClD,uDAAuD;AACvD,oHAAoH;AACpH,MAAM,kBAAkB,GAA4B;IAChD,GAAG;IACH,KAAK;IACL,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,MAAM;IACN,MAAM;CACT,CAAA;AAEY,QAAA,8BAA8B,GAA4B,CAAC,QAAQ,CAAC,CAAA;AAEpE,QAAA,mBAAmB,GAA6C;IACzE,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,YAAY;IACnB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;CACjB,CAAA;AAED,6EAA6E;AAChE,QAAA,+BAA+B,GAA6C;IACrF,CAAC,EAAE,GAAG;IACN,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,KAAK;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,OAAO;IACpB,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,IAAI;IACR,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,KAAK;IACtB,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;CACf,CAAA;AAEM,MAAM,sBAAsB,GAAG,CAClC,YAAsC,EACtC,uBAAgD,kBAAkB,EACjC,EAAE;IACnC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAM;IACV,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,qBAAa,EAAC,YAAY,CAAC,CAAA;IAE9C,OAAO,UAAU,IAAI,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3F,CAAC,CAAA;AAXY,QAAA,sBAAsB,0BAWlC;AAEM,MAAM,aAAa,GAAG,CAAC,YAAsC,EAAqC,EAAE;IACvG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,SAAS,CAAA;IACpB,CAAC;IAED,OAAO,CACH,kDAAkD,CAAC,YAAY,CAAC,UAAU,CAAC;QAC3E,qCAAqC,CAAC,YAAY,CAAC,CACtD,CAAA;AACL,CAAC,CAAA;AATY,QAAA,aAAa,iBASzB;AAED;;;;;GAKG;AACH,SAAS,kDAAkD,CACvD,sBAAsD;IAEtD,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACvC,OAAO,SAAS,CAAA;IACpB,CAAC;SAAM,IAAI,uCAA+B,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjE,OAAO,uCAA+B,CAAC,sBAAsB,CAAC,CAAA;IAClE,CAAC;IAED,sEAAsE;IACtE,qCAAqC;IACrC,mGAAmG;IACnG,KAAK,MAAM,CAAC,UAAU,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uCAA+B,CAAC,EAAE,CAAC;QACzF,IAAI,sBAAsB,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;YACpE,OAAO,cAAc,CAAA;QACzB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,SAAS,qCAAqC,CAAC,YAA0B;IACrE,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,2BAAmB,CAAC,EAAE,CAAC;QACxE,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACvC,OAAO,UAAU,CAAA;QACrB,CAAC;IACL,CAAC;IAED,OAAO,SAAS,CAAA;AACpB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const assert = require("assert");
4
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
5
+ const languageDetection_1 = require("./languageDetection");
6
+ describe('LanguageDetection', () => {
7
+ describe('getLanguageId', () => {
8
+ it('matches all document language ids that are defined in qLanguageIdByDocumentId', () => {
9
+ for (const [documentLanguageId, qLanguageId] of Object.entries(languageDetection_1.qLanguageIdByDocumentLanguageId)) {
10
+ assert.strictEqual((0, languageDetection_1.getLanguageId)(vscode_languageserver_textdocument_1.TextDocument.create(`test://test.xxx`, documentLanguageId, 1, '')), qLanguageId);
11
+ }
12
+ });
13
+ it('able to match language ids regardless of casing', () => {
14
+ assert.strictEqual((0, languageDetection_1.getLanguageId)(vscode_languageserver_textdocument_1.TextDocument.create(`test://test.xxx`, 'CSHarp', 1, '')), 'csharp');
15
+ assert.strictEqual((0, languageDetection_1.getLanguageId)(vscode_languageserver_textdocument_1.TextDocument.create(`test://test.xxx`, 'TyPeScRipT', 1, '')), 'typescript');
16
+ });
17
+ it(`fallbacks to extension check if document's languageId does not exist`, () => {
18
+ for (const [extension, languageId] of Object.entries(languageDetection_1.languageByExtension)) {
19
+ assert.strictEqual((0, languageDetection_1.getLanguageId)(vscode_languageserver_textdocument_1.TextDocument.create(`test://test.${extension}`, undefined, 1, '')), languageId);
20
+ }
21
+ });
22
+ });
23
+ describe('getSupportedLanguageId', () => {
24
+ const typescriptDocument = vscode_languageserver_textdocument_1.TextDocument.create('test://test.ts', 'typescript', 1, '');
25
+ it('should return language id if it is in the list of supported languages', () => {
26
+ assert.ok((0, languageDetection_1.getSupportedLanguageId)(typescriptDocument, ['typescript', 'javascript']));
27
+ assert.ok(!(0, languageDetection_1.getSupportedLanguageId)(typescriptDocument, ['javascript']));
28
+ });
29
+ });
30
+ });
31
+ //# sourceMappingURL=languageDetection.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageDetection.test.js","sourceRoot":"","sources":["../../src/language-server/languageDetection.test.ts"],"names":[],"mappings":";;AAAA,iCAAgC;AAChC,2FAAiE;AACjE,2DAK4B;AAE5B,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,+EAA+E,EAAE,GAAG,EAAE;YACrF,KAAK,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mDAA+B,CAAC,EAAE,CAAC;gBAC9F,MAAM,CAAC,WAAW,CACd,IAAA,iCAAa,EAAC,iDAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAChF,WAAW,CACd,CAAA;YACL,CAAC;QACL,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACvD,MAAM,CAAC,WAAW,CAAC,IAAA,iCAAa,EAAC,iDAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YACpG,MAAM,CAAC,WAAW,CAAC,IAAA,iCAAa,EAAC,iDAAY,CAAC,MAAM,CAAC,iBAAiB,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAA;QAChH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC5E,KAAK,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,uCAAmB,CAAC,EAAE,CAAC;gBACxE,MAAM,CAAC,WAAW,CACd,IAAA,iCAAa,EAAC,iDAAY,CAAC,MAAM,CAAC,eAAe,SAAS,EAAE,EAAE,SAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EACvF,UAAU,CACb,CAAA;YACL,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACpC,MAAM,kBAAkB,GAAG,iDAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACrF,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;YAC7E,MAAM,CAAC,EAAE,CAAC,IAAA,0CAAsB,EAAC,kBAAkB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAA;YACnF,MAAM,CAAC,EAAE,CAAC,CAAC,IAAA,0CAAsB,EAAC,kBAAkB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { Server, CredentialsProvider } from '@aws/language-server-runtimes/server-interface';
2
+ import { CodeWhispererServiceToken } from './codeWhispererService';
3
+ /**
4
+ *
5
+ * @param createService Inject service instance based on credentials provider.
6
+ * @returns NetTransform server
7
+ */
8
+ export declare const NetTransformServerFactory: (createService: (credentialsProvider: CredentialsProvider) => CodeWhispererServiceToken) => Server;
9
+ /**
10
+ * Default NetTransformServer using Token authentication.
11
+ */
12
+ export declare const NetTransformServer: Server;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NetTransformServer = exports.NetTransformServerFactory = void 0;
4
+ const codeWhispererService_1 = require("./codeWhispererService");
5
+ /**
6
+ *
7
+ * @param createService Inject service instance based on credentials provider.
8
+ * @returns NetTransform server
9
+ */
10
+ const NetTransformServerFactory = createService => ({ credentialsProvider, lsp, workspace, telemetry, logging }) => {
11
+ const service = createService(credentialsProvider);
12
+ const onExecuteCommandHandler = async (params, _token) => {
13
+ //Placeholder for logic
14
+ };
15
+ // Do the thing
16
+ lsp.onExecuteCommand(onExecuteCommandHandler);
17
+ // Disposable
18
+ return () => {
19
+ // Do nothing
20
+ };
21
+ };
22
+ exports.NetTransformServerFactory = NetTransformServerFactory;
23
+ /**
24
+ * Default NetTransformServer using Token authentication.
25
+ */
26
+ exports.NetTransformServer = (0, exports.NetTransformServerFactory)(credentialsProvider => new codeWhispererService_1.CodeWhispererServiceToken(credentialsProvider, {}));
27
+ //# sourceMappingURL=netTransformServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"netTransformServer.js","sourceRoot":"","sources":["../../src/language-server/netTransformServer.ts"],"names":[],"mappings":";;;AAMA,iEAAkE;AAElE;;;;GAIG;AACI,MAAM,yBAAyB,GAGlC,aAAa,CAAC,EAAE,CAChB,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAClD,MAAM,uBAAuB,GAAG,KAAK,EACjC,MAA4B,EAC5B,MAAyB,EACb,EAAE;QACd,uBAAuB;IAC3B,CAAC,CAAA;IAED,eAAe;IACf,GAAG,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAA;IAE7C,aAAa;IACb,OAAO,GAAG,EAAE;QACR,aAAa;IACjB,CAAC,CAAA;AACL,CAAC,CAAA;AApBQ,QAAA,yBAAyB,6BAoBjC;AAEL;;GAEG;AACU,QAAA,kBAAkB,GAAG,IAAA,iCAAyB,EACvD,mBAAmB,CAAC,EAAE,CAAC,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAChF,CAAA"}
@@ -1,2 +1,3 @@
1
- export declare const CodeWhispererServerTokenProxy: import("@aws/language-server-runtimes").Server;
2
- export declare const CodeWhispererSecurityScanServerTokenProxy: import("@aws/language-server-runtimes").Server;
1
+ export declare const CodeWhispererServerTokenProxy: import("@aws/language-server-runtimes/server-interface").Server;
2
+ export declare const CodeWhispererSecurityScanServerTokenProxy: import("@aws/language-server-runtimes/server-interface").Server;
3
+ export declare const QChatServerProxy: import("@aws/language-server-runtimes/server-interface").Server;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CodeWhispererSecurityScanServerTokenProxy = exports.CodeWhispererServerTokenProxy = void 0;
3
+ exports.QChatServerProxy = exports.CodeWhispererSecurityScanServerTokenProxy = exports.CodeWhispererServerTokenProxy = void 0;
4
+ const chatSessionManagementService_1 = require("./chat/chatSessionManagementService");
4
5
  const codeWhispererSecurityScanServer_1 = require("./codeWhispererSecurityScanServer");
5
6
  const codeWhispererServer_1 = require("./codeWhispererServer");
6
7
  const codeWhispererService_1 = require("./codeWhispererService");
8
+ const qChatServer_1 = require("./qChatServer");
7
9
  exports.CodeWhispererServerTokenProxy = (0, codeWhispererServer_1.CodewhispererServerFactory)(credentialsProvider => {
8
10
  let additionalAwsConfig = {};
9
11
  const proxyUrl = process.env.HTTPS_PROXY ?? process.env.https_proxy;
@@ -32,4 +34,36 @@ exports.CodeWhispererSecurityScanServerTokenProxy = (0, codeWhispererSecuritySca
32
34
  }
33
35
  return new codeWhispererService_1.CodeWhispererServiceToken(credentialsProvider, additionalAwsConfig);
34
36
  });
37
+ exports.QChatServerProxy = (0, qChatServer_1.QChatServer)(credentialsProvider => {
38
+ let clientOptions;
39
+ const proxyUrl = process.env.HTTPS_PROXY ?? process.env.https_proxy;
40
+ if (proxyUrl) {
41
+ const { NodeHttpHandler } = require('@smithy/node-http-handler');
42
+ /**
43
+ * TODO: consolidate the libraries we need for http proxy
44
+ *
45
+ * proxy-http-agent is not compatible with smithy's node-http-handler,
46
+ * so we will use hpagent to create a new http handler
47
+ *
48
+ * At the same time, hpagent is not compatible with v2 sdk
49
+ */
50
+ const { HttpsProxyAgent } = require('hpagent');
51
+ // passing client options as a function so a new http handler can be created
52
+ clientOptions = () => {
53
+ // this mimics aws-sdk-v3-js-proxy
54
+ const agent = new HttpsProxyAgent({
55
+ proxy: proxyUrl,
56
+ });
57
+ return {
58
+ requestHandler: new NodeHttpHandler({
59
+ httpAgent: agent,
60
+ httpsAgent: agent,
61
+ }),
62
+ };
63
+ };
64
+ }
65
+ return chatSessionManagementService_1.ChatSessionManagementService.getInstance()
66
+ .withCredentialsProvider(credentialsProvider)
67
+ .withConfig(clientOptions);
68
+ });
35
69
  //# sourceMappingURL=proxy-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/language-server/proxy-server.ts"],"names":[],"mappings":";;;AAAA,uFAA2E;AAC3E,+DAAkE;AAClE,iEAAkE;AAErD,QAAA,6BAA6B,GAAG,IAAA,gDAA0B,EAAC,mBAAmB,CAAC,EAAE;IAC1F,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC;YACjC,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAA;QACF,mBAAmB,GAAG;YAClB,KAAK,EAAE,UAAU;SACpB,CAAA;IACL,CAAC;IACD,OAAO,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA;AAEW,QAAA,yCAAyC,GAAG,IAAA,yDAAuB,EAAC,mBAAmB,CAAC,EAAE;IACnG,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC;YACjC,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAA;QACF,mBAAmB,GAAG;YAClB,KAAK,EAAE,UAAU;SACpB,CAAA;IACL,CAAC;IACD,OAAO,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/language-server/proxy-server.ts"],"names":[],"mappings":";;;AAAA,sFAAkF;AAElF,uFAA2E;AAC3E,+DAAkE;AAClE,iEAAkE;AAClE,+CAA2C;AAE9B,QAAA,6BAA6B,GAAG,IAAA,gDAA0B,EAAC,mBAAmB,CAAC,EAAE;IAC1F,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC;YACjC,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAA;QACF,mBAAmB,GAAG;YAClB,KAAK,EAAE,UAAU;SACpB,CAAA;IACL,CAAC;IACD,OAAO,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA;AAEW,QAAA,yCAAyC,GAAG,IAAA,yDAAuB,EAAC,mBAAmB,CAAC,EAAE;IACnG,IAAI,mBAAmB,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;QACzD,MAAM,UAAU,GAAG,iBAAiB,CAAC;YACjC,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAA;QACF,mBAAmB,GAAG;YAClB,KAAK,EAAE,UAAU;SACpB,CAAA;IACL,CAAC;IACD,OAAO,IAAI,gDAAyB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAAG,IAAA,yBAAW,EAAC,mBAAmB,CAAC,EAAE;IAC9D,IAAI,aAAmD,CAAA;IAEvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAA;IAEnE,IAAI,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAA;QAEhE;;;;;;;WAOG;QACH,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;QAE9C,4EAA4E;QAC5E,aAAa,GAAG,GAAG,EAAE;YACjB,kCAAkC;YAClC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC;gBAC9B,KAAK,EAAE,QAAQ;aAClB,CAAC,CAAA;YAEF,OAAO;gBACH,cAAc,EAAE,IAAI,eAAe,CAAC;oBAChC,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,KAAK;iBACpB,CAAC;aACL,CAAA;QACL,CAAC,CAAA;IACL,CAAC;IAED,OAAO,2DAA4B,CAAC,WAAW,EAAE;SAC5C,uBAAuB,CAAC,mBAAmB,CAAC;SAC5C,UAAU,CAAC,aAAa,CAAC,CAAA;AAClC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { CredentialsProvider, Server } from '@aws/language-server-runtimes/server-interface';
2
+ import { ChatSessionManagementService } from './chat/chatSessionManagementService';
3
+ export declare const QChatServer: (service: (credentialsProvider: CredentialsProvider) => ChatSessionManagementService) => Server;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QChatServer = void 0;
4
+ const chatController_1 = require("./chat/chatController");
5
+ const QChatServer = (service) => features => {
6
+ const { chat, credentialsProvider, logging } = features;
7
+ const chatSessionManagementService = service(credentialsProvider);
8
+ const chatController = new chatController_1.ChatController(chatSessionManagementService, features);
9
+ chat.onTabAdd((...params) => {
10
+ logging.log('Received tab add request');
11
+ return chatController.onTabAdd(...params);
12
+ });
13
+ chat.onTabRemove((...params) => {
14
+ logging.log('Received tab remove request');
15
+ return chatController.onTabRemove(...params);
16
+ });
17
+ chat.onEndChat((...params) => {
18
+ logging.log('Received end chat request');
19
+ return chatController.onEndChat(...params);
20
+ });
21
+ chat.onChatPrompt((...params) => {
22
+ logging.log('Received chat prompt');
23
+ return chatController.onChatPrompt(...params);
24
+ });
25
+ logging.log('Q Chat server has been initialized');
26
+ return () => {
27
+ chatSessionManagementService.dispose();
28
+ };
29
+ };
30
+ exports.QChatServer = QChatServer;
31
+ //# sourceMappingURL=qChatServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qChatServer.js","sourceRoot":"","sources":["../../src/language-server/qChatServer.ts"],"names":[],"mappings":";;;AACA,0DAAsD;AAG/C,MAAM,WAAW,GACpB,CAAC,OAAmF,EAAU,EAAE,CAChG,QAAQ,CAAC,EAAE;IACP,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;IAEvD,MAAM,4BAA4B,GAAiC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAE/F,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAA;IAEjF,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACvC,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QAC1C,OAAO,cAAc,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;QACzB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;QAC5B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,OAAO,cAAc,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;IAEjD,OAAO,GAAG,EAAE;QACR,4BAA4B,CAAC,OAAO,EAAE,CAAA;IAC1C,CAAC,CAAA;AACL,CAAC,CAAA;AAlCQ,QAAA,WAAW,eAkCnB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const testing_1 = require("@aws/language-server-runtimes/testing");
4
+ const ts_sinon_1 = require("ts-sinon");
5
+ const chatController_1 = require("./chat/chatController");
6
+ const chatSessionManagementService_1 = require("./chat/chatSessionManagementService");
7
+ const qChatServer_1 = require("./qChatServer");
8
+ describe('QChatServer', () => {
9
+ const mockTabId = 'mockTabId';
10
+ let disposeStub;
11
+ let testFeatures;
12
+ let disposeServer;
13
+ let chatSessionManagementService;
14
+ beforeEach(() => {
15
+ testFeatures = new testing_1.TestFeatures();
16
+ disposeStub = ts_sinon_1.default.stub(chatSessionManagementService_1.ChatSessionManagementService.prototype, 'dispose');
17
+ chatSessionManagementService = chatSessionManagementService_1.ChatSessionManagementService.getInstance().withCredentialsProvider(testFeatures.credentialsProvider);
18
+ const chatServerFactory = (0, qChatServer_1.QChatServer)(() => chatSessionManagementService);
19
+ disposeServer = chatServerFactory(testFeatures);
20
+ });
21
+ afterEach(() => {
22
+ ts_sinon_1.default.restore();
23
+ chatSessionManagementService_1.ChatSessionManagementService.reset();
24
+ testFeatures.dispose();
25
+ });
26
+ it('dispose should dispose all chat session services', () => {
27
+ disposeServer();
28
+ ts_sinon_1.default.assert.calledOnce(disposeStub);
29
+ });
30
+ it('calls the corresponding controller when tabAdd notification is received', () => {
31
+ const tabAddStub = ts_sinon_1.default.stub(chatController_1.ChatController.prototype, 'onTabAdd');
32
+ testFeatures.chat.onTabAdd.firstCall.firstArg({ tabId: mockTabId });
33
+ ts_sinon_1.default.assert.calledOnce(tabAddStub);
34
+ });
35
+ it('calls the corresponding controller when tabRemove notification is received', () => {
36
+ const tabRemoveStub = ts_sinon_1.default.stub(chatController_1.ChatController.prototype, 'onTabRemove');
37
+ testFeatures.chat.onTabRemove.firstCall.firstArg({ tabId: mockTabId });
38
+ ts_sinon_1.default.assert.calledOnce(tabRemoveStub);
39
+ });
40
+ it('calls the corresponding controller when endChat request is received', () => {
41
+ const endChatStub = ts_sinon_1.default.stub(chatController_1.ChatController.prototype, 'onEndChat');
42
+ testFeatures.chat.onEndChat.firstCall.firstArg({ tabId: mockTabId });
43
+ ts_sinon_1.default.assert.calledOnce(endChatStub);
44
+ });
45
+ it('calls the corresponding controller when chatPrompt request is received', () => {
46
+ const chatPromptStub = ts_sinon_1.default.stub(chatController_1.ChatController.prototype, 'onChatPrompt');
47
+ testFeatures.chat.onChatPrompt.firstCall.firstArg({ tabId: mockTabId, prompt: { prompt: 'Hello' } }, {});
48
+ ts_sinon_1.default.assert.calledOnce(chatPromptStub);
49
+ });
50
+ });
51
+ //# sourceMappingURL=qChatServer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qChatServer.test.js","sourceRoot":"","sources":["../../src/language-server/qChatServer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Diagnostic, Logging, Lsp, Position, Range, TextDocumentContentChangeEvent } from '@aws/language-server-runtimes/server-interface';
2
+ import { AggregatedCodeScanIssue, CodeScanIssue } from './types';
3
+ declare class SecurityScanDiagnosticsProvider {
4
+ private diagnostics;
5
+ private lsp;
6
+ private logging;
7
+ private findings;
8
+ constructor(lsp: Lsp, logging: Logging);
9
+ resetDiagnostics(): Promise<void>;
10
+ createDiagnostics(findings: AggregatedCodeScanIssue[]): Promise<void>;
11
+ mapScanIssueToDiagnostics(issue: CodeScanIssue): Diagnostic;
12
+ validateDiagnostics(uri: string, e: TextDocumentContentChangeEvent): Promise<void>;
13
+ getChangedDiagnosticRange(diagnosticRange: Range, documentChangeRange?: Range): Range;
14
+ isPositionInRange: (position: Position, range: Range) => boolean;
15
+ getLineOffset(range: Range, text: string): number;
16
+ createDiagnosticsRange(startLine: number, endLine: number): {
17
+ start: {
18
+ line: number;
19
+ character: number;
20
+ };
21
+ end: {
22
+ line: number;
23
+ character: number;
24
+ };
25
+ };
26
+ publishDiagnostics(uri: string, diagnostics: Diagnostic[]): Promise<void>;
27
+ }
28
+ export default SecurityScanDiagnosticsProvider;
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const server_interface_1 = require("@aws/language-server-runtimes/server-interface");
4
+ const vscode_uri_1 = require("vscode-uri");
5
+ class SecurityScanDiagnosticsProvider {
6
+ constructor(lsp, logging) {
7
+ this.isPositionInRange = (position, range) => {
8
+ if (position.line < range.start.line || position.line > range.end.line) {
9
+ return false;
10
+ }
11
+ return true;
12
+ };
13
+ this.diagnostics = new Map();
14
+ this.lsp = lsp;
15
+ this.logging = logging;
16
+ this.findings = [];
17
+ }
18
+ async resetDiagnostics() {
19
+ await Promise.all(this.findings.map(finding => {
20
+ this.logging.log(`reset diagnostics for: ${finding.filePath}`);
21
+ this.publishDiagnostics(finding.filePath, []);
22
+ }));
23
+ this.diagnostics = new Map();
24
+ }
25
+ async createDiagnostics(findings) {
26
+ this.findings = findings;
27
+ for (const finding of findings) {
28
+ const path = vscode_uri_1.URI.file(finding.filePath).path;
29
+ const diagnostics = finding.issues.map(issue => this.mapScanIssueToDiagnostics(issue));
30
+ if (!this.diagnostics.has(path)) {
31
+ this.diagnostics.set(path, diagnostics);
32
+ }
33
+ this.diagnostics.set(path, [...(this.diagnostics.get(finding.filePath) || []), ...diagnostics]);
34
+ await this.publishDiagnostics(finding.filePath, diagnostics);
35
+ }
36
+ }
37
+ mapScanIssueToDiagnostics(issue) {
38
+ return server_interface_1.Diagnostic.create(this.createDiagnosticsRange(issue.startLine, issue.endLine), `${issue.detectorName} - ${issue.description.text}`, server_interface_1.DiagnosticSeverity.Warning, issue.relatedVulnerabilities.join(','), 'CodeWhisperer');
39
+ }
40
+ async validateDiagnostics(uri, e) {
41
+ const path = vscode_uri_1.URI.parse(uri).path;
42
+ const currentDiagnostics = this.diagnostics.get(path);
43
+ if (!currentDiagnostics) {
44
+ return;
45
+ }
46
+ // range will be omitted if the change is for entire document
47
+ const changeStartLine = e.range?.start?.line;
48
+ const changeEndLine = e.range?.end?.line;
49
+ const nextDiagnostics = currentDiagnostics.map(diagnostic => {
50
+ if (changeStartLine && changeStartLine > diagnostic.range.end.line) {
51
+ // change has no overlap with diagnostic
52
+ return diagnostic;
53
+ }
54
+ else if (changeEndLine && changeEndLine < diagnostic.range.start.line) {
55
+ // change is before diagnostic range, update diagnostic range
56
+ const lineOffset = this.getLineOffset(e.range, e.text);
57
+ return {
58
+ ...diagnostic,
59
+ range: this.createDiagnosticsRange(diagnostic.range.start.line + lineOffset, diagnostic.range.end.line + lineOffset),
60
+ };
61
+ }
62
+ else {
63
+ // change is within diagnostic range, update range and messaging to re-scan
64
+ const newRange = this.getChangedDiagnosticRange(diagnostic.range, e.range);
65
+ return diagnostic.severity === 2
66
+ ? {
67
+ ...diagnostic,
68
+ severity: 3,
69
+ message: `Re-scan to validate the fix: ${diagnostic.message}`,
70
+ range: newRange,
71
+ }
72
+ : diagnostic;
73
+ }
74
+ });
75
+ this.diagnostics.set(path, nextDiagnostics);
76
+ await this.publishDiagnostics(uri, nextDiagnostics);
77
+ }
78
+ getChangedDiagnosticRange(diagnosticRange, documentChangeRange) {
79
+ if (!documentChangeRange) {
80
+ return diagnosticRange;
81
+ }
82
+ const start = Math.max(diagnosticRange.start.line, documentChangeRange.start.line);
83
+ const end = Math.min(diagnosticRange.end.line, documentChangeRange.end.line);
84
+ return this.createDiagnosticsRange(start, end === start ? start + 1 : end);
85
+ }
86
+ getLineOffset(range, text) {
87
+ const originLines = range.end.line - range.start.line + 1;
88
+ const changedLines = text.split('\n').length;
89
+ return changedLines - originLines;
90
+ }
91
+ createDiagnosticsRange(startLine, endLine) {
92
+ return {
93
+ start: {
94
+ line: startLine,
95
+ character: 0,
96
+ },
97
+ end: {
98
+ line: endLine,
99
+ character: 0,
100
+ },
101
+ };
102
+ }
103
+ async publishDiagnostics(uri, diagnostics) {
104
+ await this.lsp.publishDiagnostics({
105
+ uri,
106
+ diagnostics: diagnostics,
107
+ });
108
+ }
109
+ }
110
+ exports.default = SecurityScanDiagnosticsProvider;
111
+ //# sourceMappingURL=securityScanDiagnosticsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityScanDiagnosticsProvider.js","sourceRoot":"","sources":["../../../src/language-server/securityScan/securityScanDiagnosticsProvider.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,24 @@
1
1
  /// <reference types="node" />
2
- import { Workspace } from '@aws/language-server-runtimes/out/features';
2
+ import { Logging, Workspace, CancellationToken, CancellationTokenSource } from '@aws/language-server-runtimes/server-interface';
3
3
  import { ArtifactMap, CreateUploadUrlResponse } from '../../client/token/codewhispererbearertokenclient';
4
4
  import { CodeWhispererServiceToken } from '../codeWhispererService';
5
- import { AggregatedCodeScanIssue, RawCodeScanIssue } from './types';
5
+ import { AggregatedCodeScanIssue } from './types';
6
6
  export declare class SecurityScanHandler {
7
7
  private client;
8
8
  private workspace;
9
- constructor(client: CodeWhispererServiceToken, workspace: Workspace);
9
+ private logging;
10
+ tokenSource: CancellationTokenSource;
11
+ constructor(client: CodeWhispererServiceToken, workspace: Workspace, logging: Logging);
10
12
  getMd5(content: Buffer): string;
13
+ throwIfCancelled(token: CancellationToken): void;
14
+ cancelSecurityScan(): void;
11
15
  createCodeResourcePresignedUrlHandler(zipContent: Buffer): Promise<ArtifactMap>;
12
- uploadArtifactToS3(zipBuffer: Buffer, resp: CreateUploadUrlResponse): Promise<import("got").Response<string>>;
16
+ uploadArtifactToS3(zipBuffer: Buffer, resp: CreateUploadUrlResponse): Promise<void>;
13
17
  createScanJob(artifactMap: ArtifactMap, languageName: string): Promise<import("aws-sdk/lib/request").PromiseResult<import("../../client/token/codewhispererbearertokenclient").StartCodeAnalysisResponse, import("aws-sdk").AWSError>>;
14
18
  pollScanJobStatus(jobId: string): Promise<string>;
15
19
  listScanResults(jobId: string, projectPath: string): Promise<AggregatedCodeScanIssue[]>;
16
- mapToAggregatedList(codeScanIssueMap: Map<string, RawCodeScanIssue[]>, aggregatedCodeScanIssueList: AggregatedCodeScanIssue[], json: string, projectPath: string): void;
20
+ mapToAggregatedList(json: string, projectPath: string): Promise<AggregatedCodeScanIssue[]>;
21
+ }
22
+ export declare class SecurityScanCancelledError extends Error {
23
+ constructor(message?: string);
17
24
  }