@aws/lsp-codewhisperer 0.0.34 → 0.0.36

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 (103) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/out/client/token/bearer-token-service.json +91 -225
  3. package/out/language-server/agenticChat/agenticChatController.js +82 -29
  4. package/out/language-server/agenticChat/agenticChatController.js.map +1 -1
  5. package/out/language-server/agenticChat/agenticChatResultStream.js +3 -0
  6. package/out/language-server/agenticChat/agenticChatResultStream.js.map +1 -1
  7. package/out/language-server/agenticChat/constants.d.ts +3 -0
  8. package/out/language-server/agenticChat/constants.js +4 -1
  9. package/out/language-server/agenticChat/constants.js.map +1 -1
  10. package/out/language-server/agenticChat/context/agenticChatTriggerContext.d.ts +3 -8
  11. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js +9 -2
  12. package/out/language-server/agenticChat/context/agenticChatTriggerContext.js.map +1 -1
  13. package/out/language-server/agenticChat/context/contextUtils.d.ts +20 -0
  14. package/out/language-server/agenticChat/context/contextUtils.js +107 -0
  15. package/out/language-server/agenticChat/context/contextUtils.js.map +1 -1
  16. package/out/language-server/agenticChat/errors.d.ts +2 -1
  17. package/out/language-server/agenticChat/errors.js +4 -1
  18. package/out/language-server/agenticChat/errors.js.map +1 -1
  19. package/out/language-server/agenticChat/tabBarController.js +1 -1
  20. package/out/language-server/agenticChat/tabBarController.js.map +1 -1
  21. package/out/language-server/agenticChat/tools/chatDb/chatDb.js +3 -2
  22. package/out/language-server/agenticChat/tools/chatDb/chatDb.js.map +1 -1
  23. package/out/language-server/agenticChat/tools/fileSearch.js +1 -1
  24. package/out/language-server/agenticChat/tools/fileSearch.js.map +1 -1
  25. package/out/language-server/agenticChat/tools/listDirectory.js +5 -5
  26. package/out/language-server/agenticChat/tools/listDirectory.js.map +1 -1
  27. package/out/language-server/chat/chatController.js +1 -1
  28. package/out/language-server/chat/chatController.js.map +1 -1
  29. package/out/language-server/chat/chatSessionService.d.ts +5 -0
  30. package/out/language-server/chat/chatSessionService.js +4 -1
  31. package/out/language-server/chat/chatSessionService.js.map +1 -1
  32. package/out/language-server/chat/constants.d.ts +3 -1
  33. package/out/language-server/chat/constants.js +15 -2
  34. package/out/language-server/chat/constants.js.map +1 -1
  35. package/out/language-server/chat/contexts/triggerContext.d.ts +3 -1
  36. package/out/language-server/chat/contexts/triggerContext.js +14 -1
  37. package/out/language-server/chat/contexts/triggerContext.js.map +1 -1
  38. package/out/language-server/configuration/qConfigurationServer.d.ts +8 -1
  39. package/out/language-server/configuration/qConfigurationServer.js +107 -8
  40. package/out/language-server/configuration/qConfigurationServer.js.map +1 -1
  41. package/out/language-server/inline-completion/codeWhispererServer.js +15 -2
  42. package/out/language-server/inline-completion/codeWhispererServer.js.map +1 -1
  43. package/out/language-server/netTransform/resources/SupportedProjects.js +1 -7
  44. package/out/language-server/netTransform/resources/SupportedProjects.js.map +1 -1
  45. package/out/language-server/workspaceContext/artifactManager.d.ts +44 -0
  46. package/out/language-server/workspaceContext/artifactManager.js +496 -0
  47. package/out/language-server/workspaceContext/artifactManager.js.map +1 -0
  48. package/out/language-server/workspaceContext/client.d.ts +23 -0
  49. package/out/language-server/workspaceContext/client.js +172 -0
  50. package/out/language-server/workspaceContext/client.js.map +1 -0
  51. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.d.ts +15 -0
  52. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js +129 -0
  53. package/out/language-server/workspaceContext/dependency/dependencyDiscoverer.js.map +1 -0
  54. package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.d.ts +18 -0
  55. package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.js +204 -0
  56. package/out/language-server/workspaceContext/dependency/dependencyHandler/JSTSDependencyHandler.js.map +1 -0
  57. package/out/language-server/workspaceContext/dependency/dependencyHandler/JavaDependencyHandler.d.ts +16 -0
  58. package/out/language-server/workspaceContext/dependency/dependencyHandler/JavaDependencyHandler.js +160 -0
  59. package/out/language-server/workspaceContext/dependency/dependencyHandler/JavaDependencyHandler.js.map +1 -0
  60. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.d.ts +78 -0
  61. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.js +255 -0
  62. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandler.js.map +1 -0
  63. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandlerFactory.d.ts +7 -0
  64. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandlerFactory.js +23 -0
  65. package/out/language-server/workspaceContext/dependency/dependencyHandler/LanguageDependencyHandlerFactory.js.map +1 -0
  66. package/out/language-server/workspaceContext/dependency/dependencyHandler/PythonDependencyHandler.d.ts +46 -0
  67. package/out/language-server/workspaceContext/dependency/dependencyHandler/PythonDependencyHandler.js +233 -0
  68. package/out/language-server/workspaceContext/dependency/dependencyHandler/PythonDependencyHandler.js.map +1 -0
  69. package/out/language-server/workspaceContext/javaManager.d.ts +92 -0
  70. package/out/language-server/workspaceContext/javaManager.js +710 -0
  71. package/out/language-server/workspaceContext/javaManager.js.map +1 -0
  72. package/out/language-server/workspaceContext/util.d.ts +10 -0
  73. package/out/language-server/workspaceContext/util.js +72 -0
  74. package/out/language-server/workspaceContext/util.js.map +1 -0
  75. package/out/language-server/workspaceContext/workspaceContextServer.d.ts +2 -0
  76. package/out/language-server/workspaceContext/workspaceContextServer.js +414 -0
  77. package/out/language-server/workspaceContext/workspaceContextServer.js.map +1 -0
  78. package/out/language-server/workspaceContext/workspaceFolderManager.d.ts +113 -0
  79. package/out/language-server/workspaceContext/workspaceFolderManager.js +827 -0
  80. package/out/language-server/workspaceContext/workspaceFolderManager.js.map +1 -0
  81. package/out/shared/amazonQServiceManager/qDeveloperProfiles.js.map +1 -1
  82. package/out/shared/codeWhispererService.d.ts +13 -0
  83. package/out/shared/codeWhispererService.js +24 -0
  84. package/out/shared/codeWhispererService.js.map +1 -1
  85. package/out/shared/languageDetection.d.ts +27 -0
  86. package/out/shared/languageDetection.js +44 -1
  87. package/out/shared/languageDetection.js.map +1 -1
  88. package/out/shared/localProjectContextController.d.ts +1 -0
  89. package/out/shared/localProjectContextController.js +7 -9
  90. package/out/shared/localProjectContextController.js.map +1 -1
  91. package/out/shared/proxy-server.d.ts +1 -0
  92. package/out/shared/proxy-server.js +3 -1
  93. package/out/shared/proxy-server.js.map +1 -1
  94. package/out/shared/supplementalContextUtil/crossFileContextUtil.d.ts +4 -3
  95. package/out/shared/supplementalContextUtil/crossFileContextUtil.js +16 -5
  96. package/out/shared/supplementalContextUtil/crossFileContextUtil.js.map +1 -1
  97. package/out/shared/supplementalContextUtil/supplementalContextUtil.d.ts +2 -1
  98. package/out/shared/supplementalContextUtil/supplementalContextUtil.js +2 -2
  99. package/out/shared/supplementalContextUtil/supplementalContextUtil.js.map +1 -1
  100. package/out/shared/utils.d.ts +1 -0
  101. package/out/shared/utils.js +15 -1
  102. package/out/shared/utils.js.map +1 -1
  103. package/package.json +9 -3
@@ -0,0 +1,496 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArtifactManager = exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES = void 0;
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const vscode_uri_1 = require("vscode-uri");
7
+ const JSZip = require("jszip");
8
+ const javaManager_1 = require("./javaManager");
9
+ const util_1 = require("./util");
10
+ const glob = require("fast-glob");
11
+ const languageDetection_1 = require("../../shared/languageDetection");
12
+ exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES = [
13
+ 'python',
14
+ 'javascript',
15
+ 'typescript',
16
+ 'java',
17
+ ];
18
+ const ARTIFACT_FOLDER_NAME = 'workspaceContextArtifacts';
19
+ const IGNORE_PATTERNS = [
20
+ // Package management and git
21
+ '**/node_modules/**',
22
+ '**/.git/**',
23
+ // Build outputs
24
+ '**/dist/**',
25
+ '**/build/**',
26
+ '**/out/**',
27
+ // Test directories
28
+ '**/test/**',
29
+ '**/tests/**',
30
+ '**/coverage/**',
31
+ // Hidden directories and files
32
+ '**/.*/**',
33
+ '**/.*',
34
+ // Logs and temporary files
35
+ '**/logs/**',
36
+ '**/tmp/**',
37
+ // Environment and configuration
38
+ '**/env/**',
39
+ '**/venv/**',
40
+ '**/bin/**',
41
+ // Framework specific
42
+ '**/target/**', // Maven/Gradle builds
43
+ ];
44
+ const MAX_UNCOMPRESSED_SRC_SIZE_MB = 250; // 250 MB limit per language per workspace folder
45
+ const MAX_UNCOMPRESSED_SRC_SIZE_BYTES = MAX_UNCOMPRESSED_SRC_SIZE_MB * 1024 * 1024; // Convert to bytes
46
+ class ArtifactManager {
47
+ workspace;
48
+ logging;
49
+ workspaceFolders;
50
+ // TODO, how to handle when two workspace folders have the same name but different URI
51
+ filesByWorkspaceFolderAndLanguage;
52
+ tempDirPath;
53
+ constructor(workspace, logging, workspaceFolders) {
54
+ this.workspace = workspace;
55
+ this.logging = logging;
56
+ this.workspaceFolders = workspaceFolders;
57
+ this.filesByWorkspaceFolderAndLanguage = new Map();
58
+ this.tempDirPath = path.join(this.workspace.fs.getTempDirPath(), ARTIFACT_FOLDER_NAME);
59
+ this.createFolderIfNotExist(this.tempDirPath);
60
+ }
61
+ updateWorkspaceFolders(workspaceFolders) {
62
+ this.workspaceFolders = workspaceFolders;
63
+ }
64
+ async addWorkspaceFolders(workspaceFolders) {
65
+ this.log(`Adding new workspace folders: ${workspaceFolders.map(f => f.name).join(', ')}`);
66
+ this.workspaceFolders = [...this.workspaceFolders, ...workspaceFolders];
67
+ const zipFileMetadata = await this.processWorkspaceFolders(workspaceFolders);
68
+ return zipFileMetadata;
69
+ }
70
+ async addNewDirectories(newDirectories) {
71
+ let zipFileMetadata = [];
72
+ for (const directory of newDirectories) {
73
+ const workspaceFolder = this.workspaceFolders.find(ws => directory.path.startsWith(vscode_uri_1.URI.parse(ws.uri).path));
74
+ if (!workspaceFolder) {
75
+ // No workspace folder found for directory, it will not be processed
76
+ continue;
77
+ }
78
+ try {
79
+ const workspacePath = vscode_uri_1.URI.parse(workspaceFolder.uri).path;
80
+ const relativePath = path.relative(workspacePath, directory.path);
81
+ const filesByLanguage = await this.processDirectory(workspaceFolder, directory.path, relativePath);
82
+ zipFileMetadata = await this.processFilesByLanguage(workspaceFolder, filesByLanguage, relativePath);
83
+ }
84
+ catch (error) {
85
+ this.logging.warn(`Error processing new directory ${directory.path}: ${error}`);
86
+ }
87
+ }
88
+ return zipFileMetadata;
89
+ }
90
+ async removeWorkspaceFolders(workspaceFolders) {
91
+ workspaceFolders.forEach(workspaceToRemove => {
92
+ // Find the matching workspace folder by URI
93
+ let folderToDelete;
94
+ for (const [existingFolder] of this.filesByWorkspaceFolderAndLanguage) {
95
+ if (existingFolder.uri === workspaceToRemove.uri) {
96
+ folderToDelete = existingFolder;
97
+ break;
98
+ }
99
+ }
100
+ if (!folderToDelete) {
101
+ // No matching workspace found to remove, do nothing
102
+ return;
103
+ }
104
+ this.filesByWorkspaceFolderAndLanguage.delete(folderToDelete);
105
+ this.workspaceFolders = this.workspaceFolders.filter(folder => folder.uri !== workspaceToRemove.uri);
106
+ const workspaceDirPath = path.join(this.tempDirPath, workspaceToRemove.name);
107
+ fs.rmSync(workspaceDirPath, { recursive: true, force: true });
108
+ });
109
+ }
110
+ async getFileMetadata(currentWorkspace, filePath, languageOverride, filePathInZipOverride) {
111
+ let fileMetadataList = [];
112
+ const language = languageOverride !== undefined ? languageOverride : (0, languageDetection_1.getCodeWhispererLanguageIdFromPath)(filePath);
113
+ if (!language || !exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES.includes(language)) {
114
+ return Promise.reject('unsupported language');
115
+ }
116
+ if ((0, util_1.isDirectory)(filePath)) {
117
+ const files = await glob(['**/*'], {
118
+ cwd: filePath,
119
+ dot: false,
120
+ ignore: IGNORE_PATTERNS,
121
+ followSymbolicLinks: false,
122
+ absolute: false,
123
+ onlyFiles: true,
124
+ });
125
+ for (const relativePath of files) {
126
+ const fullPath = path.join(filePath, relativePath);
127
+ try {
128
+ const fileMetadata = await this.createFileMetadata(fullPath, path.join(filePathInZipOverride !== undefined ? filePathInZipOverride : '', relativePath), language, currentWorkspace);
129
+ fileMetadataList.push(fileMetadata);
130
+ }
131
+ catch (error) {
132
+ this.logging.warn(`Error processing file ${fullPath}: ${error}`);
133
+ }
134
+ }
135
+ }
136
+ else {
137
+ const workspaceUri = vscode_uri_1.URI.parse(currentWorkspace.uri);
138
+ const fileUri = vscode_uri_1.URI.parse(filePath);
139
+ const relativePath = filePathInZipOverride !== undefined
140
+ ? filePathInZipOverride
141
+ : path.join(currentWorkspace.name, path.relative(workspaceUri.path, fileUri.path));
142
+ const fileMetadata = await this.createFileMetadata(fileUri.path, relativePath, language, currentWorkspace);
143
+ fileMetadataList.push(fileMetadata);
144
+ }
145
+ return fileMetadataList;
146
+ }
147
+ async processNewFile(currentWorkspace, filePath) {
148
+ const workspaceUri = vscode_uri_1.URI.parse(currentWorkspace.uri);
149
+ const fileUri = vscode_uri_1.URI.parse(filePath);
150
+ // const relativePath = path.join(currentWorkspace.name, path.relative(workspaceUri.path, fileUri.path))
151
+ const language = (0, languageDetection_1.getCodeWhispererLanguageIdFromPath)(filePath);
152
+ if (!language || !exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES.includes(language)) {
153
+ return Promise.reject('unsupported language');
154
+ }
155
+ const fileMetadata = await this.createFileMetadata(fileUri.path, path.relative(workspaceUri.path, fileUri.path), language, currentWorkspace);
156
+ // Find existing workspace folder or use current one
157
+ const workspaceKey = this.findWorkspaceFolder(currentWorkspace) || currentWorkspace;
158
+ // Update the internal map with the new file metadata
159
+ if (!this.filesByWorkspaceFolderAndLanguage.has(workspaceKey)) {
160
+ this.filesByWorkspaceFolderAndLanguage.set(workspaceKey, new Map());
161
+ }
162
+ const workspaceMap = this.filesByWorkspaceFolderAndLanguage.get(workspaceKey);
163
+ if (!workspaceMap.has(language)) {
164
+ workspaceMap.set(language, []);
165
+ }
166
+ // Replace or add the file metadata
167
+ const files = workspaceMap.get(language);
168
+ const existingIndex = files.findIndex(f => f.filePath === fileMetadata.filePath);
169
+ if (existingIndex !== -1) {
170
+ files[existingIndex] = fileMetadata;
171
+ }
172
+ else {
173
+ files.push(fileMetadata);
174
+ }
175
+ const zippedMetadata = await this.createZipForFile(currentWorkspace, language, [fileMetadata], path.relative(workspaceUri.path, fileUri.path));
176
+ return zippedMetadata;
177
+ }
178
+ handleDeletedPathAndGetLanguages(fileUri, workspaceRoot) {
179
+ const fileLanguage = (0, languageDetection_1.getCodeWhispererLanguageIdFromPath)(fileUri);
180
+ const programmingLanguages = new Set();
181
+ // Add the file language if we can determine it, but don't return early
182
+ if (fileLanguage) {
183
+ programmingLanguages.add(fileLanguage);
184
+ }
185
+ const languagesMap = this.getLanguagesForWorkspaceFolder(workspaceRoot);
186
+ if (!languagesMap) {
187
+ return Array.from(programmingLanguages);
188
+ }
189
+ const deletedFilePath = vscode_uri_1.URI.parse(fileUri).fsPath;
190
+ // Check and update the language maps
191
+ for (const [language, files] of languagesMap.entries()) {
192
+ const affectedFiles = files.filter(file => file.filePath.startsWith(deletedFilePath) || file.filePath === deletedFilePath);
193
+ if (affectedFiles.length > 0) {
194
+ programmingLanguages.add(language);
195
+ // Update the map by removing affected files
196
+ const remainingFiles = files.filter(file => !affectedFiles.includes(file));
197
+ if (remainingFiles.length === 0) {
198
+ languagesMap.delete(language);
199
+ }
200
+ else {
201
+ languagesMap.set(language, remainingFiles);
202
+ }
203
+ }
204
+ }
205
+ return Array.from(programmingLanguages);
206
+ }
207
+ async handleRename(workspaceFolder, oldUri, newUri) {
208
+ // First remove the old entry
209
+ this.handleDeletedPathAndGetLanguages(oldUri, workspaceFolder);
210
+ // Then process the new path
211
+ let filesMetadata = [];
212
+ if ((0, util_1.isDirectory)(newUri)) {
213
+ if (!(0, util_1.isEmptyDirectory)(newUri)) {
214
+ filesMetadata = await this.addNewDirectories([vscode_uri_1.URI.parse(newUri)]);
215
+ }
216
+ }
217
+ else {
218
+ filesMetadata = [await this.processNewFile(workspaceFolder, newUri)];
219
+ }
220
+ return filesMetadata;
221
+ }
222
+ cleanup(preserveDependencies = false) {
223
+ try {
224
+ this.workspaceFolders.forEach(workspaceToRemove => {
225
+ const workspaceDirPath = path.join(this.tempDirPath, workspaceToRemove.name);
226
+ if (preserveDependencies) {
227
+ // Define the zip files to delete
228
+ const zipPatternsToDelete = [
229
+ 'files.zip',
230
+ ...exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES.map(lang => `${lang}.zip`),
231
+ ];
232
+ // If directory exists, only delete specific zip files
233
+ if (fs.existsSync(workspaceDirPath)) {
234
+ const entries = fs.readdirSync(workspaceDirPath);
235
+ entries.forEach(entry => {
236
+ const entryPath = path.join(workspaceDirPath, entry);
237
+ const stat = fs.statSync(entryPath);
238
+ if (stat.isFile() && zipPatternsToDelete.includes(entry.toLowerCase())) {
239
+ fs.rmSync(entryPath, { force: true });
240
+ this.log(`Deleted zip file: ${workspaceDirPath}/${entry}`);
241
+ }
242
+ });
243
+ }
244
+ }
245
+ else {
246
+ // Original cleanup behavior - delete everything
247
+ if (fs.existsSync(workspaceDirPath)) {
248
+ fs.rmSync(workspaceDirPath, { recursive: true, force: true });
249
+ this.log(`Deleted workspace directory: ${workspaceDirPath}`);
250
+ }
251
+ }
252
+ });
253
+ }
254
+ catch (error) {
255
+ this.logging.warn(`Failed to cleanup workspace artifacts: ${error}`);
256
+ }
257
+ }
258
+ getLanguagesForWorkspaceFolder(workspaceFolder) {
259
+ // Find the matching workspace folder by URI
260
+ for (const [existingFolder, languagesMap] of this.filesByWorkspaceFolderAndLanguage) {
261
+ if (existingFolder.uri === workspaceFolder.uri) {
262
+ return languagesMap;
263
+ }
264
+ }
265
+ return undefined;
266
+ }
267
+ async createZipForDependencies(workspaceFolder, language, files, subDirectory = '', zipChunkIndex) {
268
+ const zipDirectoryPath = path.join(this.tempDirPath, workspaceFolder.name, subDirectory);
269
+ this.createFolderIfNotExist(zipDirectoryPath);
270
+ const zipFileName = `${zipChunkIndex}_${Date.now()}.zip`;
271
+ const zipPath = path.join(zipDirectoryPath, zipFileName);
272
+ const zipBuffer = await this.createZipBuffer(files);
273
+ await fs.promises.writeFile(zipPath, zipBuffer);
274
+ const stats = fs.statSync(zipPath);
275
+ return {
276
+ filePath: zipPath,
277
+ relativePath: path.join(workspaceFolder.name, subDirectory, zipFileName),
278
+ language,
279
+ contentLength: stats.size,
280
+ lastModified: stats.mtimeMs,
281
+ content: zipBuffer,
282
+ workspaceFolder: workspaceFolder,
283
+ };
284
+ }
285
+ async processDirectory(workspaceFolder, directoryPath, baseRelativePath = '') {
286
+ const filesByLanguage = new Map();
287
+ const files = await glob(['**/*'], {
288
+ cwd: directoryPath,
289
+ dot: false,
290
+ ignore: IGNORE_PATTERNS,
291
+ followSymbolicLinks: false,
292
+ absolute: false,
293
+ onlyFiles: true,
294
+ });
295
+ for (const relativePath of files) {
296
+ const fullPath = path.join(directoryPath, relativePath);
297
+ const language = (0, languageDetection_1.getCodeWhispererLanguageIdFromPath)(fullPath);
298
+ if (!language || !exports.SUPPORTED_WORKSPACE_CONTEXT_LANGUAGES.includes(language)) {
299
+ continue;
300
+ }
301
+ try {
302
+ const fileMetadata = await this.createFileMetadata(fullPath, path.join(baseRelativePath, relativePath), language, workspaceFolder);
303
+ if (!filesByLanguage.has(language)) {
304
+ filesByLanguage.set(language, []);
305
+ }
306
+ filesByLanguage.get(language).push(fileMetadata);
307
+ }
308
+ catch (error) {
309
+ this.logging.warn(`Error processing file ${fullPath}: ${error}`);
310
+ }
311
+ }
312
+ return filesByLanguage;
313
+ }
314
+ // TODO, if MD5 hash is not needed, better to remove this function and remove content from FileMetadata interface to be memory efficient
315
+ // Doing the readfile call inside this function and storing the contents in the FileMetadata allows us to call readFile only once
316
+ // instead of calling it twice: once in md5 calculation and once during zip creation
317
+ async createFileMetadata(filePath, relativePath, language, workspaceFolder) {
318
+ const fileContent = fs.readFileSync(filePath);
319
+ return {
320
+ filePath,
321
+ contentLength: fileContent.length,
322
+ lastModified: fs.statSync(filePath).mtimeMs,
323
+ content: fileContent,
324
+ language,
325
+ relativePath,
326
+ workspaceFolder,
327
+ };
328
+ }
329
+ async createZipForLanguage(workspaceFolder, language, files, subDirectory = '') {
330
+ const zipDirectoryPath = path.join(this.tempDirPath, workspaceFolder.name, subDirectory);
331
+ this.createFolderIfNotExist(zipDirectoryPath);
332
+ const zipPath = path.join(zipDirectoryPath, `${language}.zip`);
333
+ let currentSize = 0;
334
+ let skippedSize = 0;
335
+ let skippedFiles = 0;
336
+ const filesToInclude = [];
337
+ // Don't add files to the zip if the total size of uncompressed source code would go over the limit
338
+ // Currently there is no ordering on the files. If the first file added to the zip is equal to the limit, only it will be added and no other files will be added
339
+ for (const file of files) {
340
+ if (currentSize + file.contentLength <= MAX_UNCOMPRESSED_SRC_SIZE_BYTES) {
341
+ filesToInclude.push(file);
342
+ currentSize += file.contentLength;
343
+ }
344
+ else {
345
+ skippedSize += file.contentLength;
346
+ skippedFiles += 1;
347
+ }
348
+ }
349
+ const zipBuffer = await this.createZipBuffer(filesToInclude);
350
+ await fs.promises.writeFile(zipPath, zipBuffer);
351
+ const stats = fs.statSync(zipPath);
352
+ if (skippedFiles > 0) {
353
+ this.log(`Skipped ${skippedFiles} ${language} files of total size ${skippedSize} bytes due to exceeding the maximum zip size`);
354
+ }
355
+ return {
356
+ filePath: zipPath,
357
+ relativePath: path.join(workspaceFolder.name, subDirectory, `files.zip`),
358
+ language,
359
+ contentLength: stats.size,
360
+ lastModified: stats.mtimeMs,
361
+ content: zipBuffer,
362
+ workspaceFolder: workspaceFolder,
363
+ };
364
+ }
365
+ async createZipForFile(workspaceFolder, language, files, subDirectory = '') {
366
+ const zipDirectoryPath = path.join(this.tempDirPath, workspaceFolder.name, subDirectory);
367
+ this.createFolderIfNotExist(zipDirectoryPath);
368
+ const zipPath = path.join(zipDirectoryPath, `files.zip`);
369
+ const zip = new JSZip();
370
+ for (const file of files) {
371
+ zip.file(path.basename(file.relativePath), file.content);
372
+ }
373
+ const zipBuffer = await zip.generateAsync({ type: 'nodebuffer' });
374
+ await fs.promises.writeFile(zipPath, zipBuffer);
375
+ const stats = fs.statSync(zipPath);
376
+ return {
377
+ filePath: zipPath,
378
+ relativePath: path.join(workspaceFolder.name, subDirectory, 'files.zip'),
379
+ language,
380
+ contentLength: stats.size,
381
+ lastModified: stats.mtimeMs,
382
+ content: zipBuffer,
383
+ workspaceFolder: workspaceFolder,
384
+ };
385
+ }
386
+ async createZipBuffer(files) {
387
+ const zip = new JSZip();
388
+ // Common compressed file extensions
389
+ const compressedExtensions = new Set(['.jar', '.zip', '.gz', '.bz2', '.7z', '.rar', '.war', '.ear', '.apk']);
390
+ for (const file of files) {
391
+ const fileExt = path.extname(file.relativePath).toLowerCase();
392
+ if (compressedExtensions.has(fileExt)) {
393
+ // Store already compressed files without additional compression
394
+ zip.file(file.relativePath, file.content, {
395
+ compression: 'STORE', // No compression, just store
396
+ });
397
+ }
398
+ else {
399
+ // Use default compression for other files
400
+ zip.file(file.relativePath, file.content, {
401
+ compression: 'DEFLATE',
402
+ compressionOptions: {
403
+ level: 9, // Maximum compression (0-9)
404
+ },
405
+ });
406
+ }
407
+ }
408
+ return await zip.generateAsync({ type: 'nodebuffer' });
409
+ }
410
+ findWorkspaceFolder(workspace) {
411
+ for (const [existingWorkspace] of this.filesByWorkspaceFolderAndLanguage) {
412
+ if (existingWorkspace.uri === workspace.uri) {
413
+ return existingWorkspace;
414
+ }
415
+ }
416
+ return undefined;
417
+ }
418
+ async updateWorkspaceFiles(workspaceFolder, filesByLanguage) {
419
+ // Find existing workspace folder or use current one
420
+ const workspaceKey = this.findWorkspaceFolder(workspaceFolder) || workspaceFolder;
421
+ // Initialize map for new workspace folders
422
+ if (!this.filesByWorkspaceFolderAndLanguage.has(workspaceKey)) {
423
+ this.filesByWorkspaceFolderAndLanguage.set(workspaceKey, new Map());
424
+ }
425
+ const workspaceMap = this.filesByWorkspaceFolderAndLanguage.get(workspaceKey);
426
+ for (const [language, files] of filesByLanguage.entries()) {
427
+ if (!workspaceMap.has(language)) {
428
+ workspaceMap.set(language, []);
429
+ }
430
+ workspaceMap.get(language).push(...files);
431
+ }
432
+ }
433
+ async processWorkspaceFolders(workspaceFolders) {
434
+ const startTime = performance.now();
435
+ let zipFileMetadata = [];
436
+ for (const workspaceFolder of workspaceFolders) {
437
+ const workspacePath = vscode_uri_1.URI.parse(workspaceFolder.uri).path;
438
+ try {
439
+ const filesByLanguage = await this.processDirectory(workspaceFolder, workspacePath);
440
+ const fileMetadata = await this.processFilesByLanguage(workspaceFolder, filesByLanguage);
441
+ zipFileMetadata.push(...fileMetadata);
442
+ }
443
+ catch (error) {
444
+ this.logging.warn(`Error processing workspace folder ${workspacePath}: ${error}`);
445
+ }
446
+ }
447
+ const totalTime = performance.now() - startTime;
448
+ this.log(`Creating workspace source code artifacts took: ${totalTime.toFixed(2)}ms`);
449
+ return zipFileMetadata;
450
+ }
451
+ async processFilesByLanguage(workspaceFolder, filesByLanguage, relativePath) {
452
+ const zipFileMetadata = [];
453
+ await this.updateWorkspaceFiles(workspaceFolder, filesByLanguage);
454
+ for (const [language, files] of filesByLanguage.entries()) {
455
+ // Genrate java .classpath and .project files
456
+ const processedFiles = language === 'java' ? await this.processJavaProjectConfig(workspaceFolder, files) : files;
457
+ const zipMetadata = await this.createZipForLanguage(workspaceFolder, language, processedFiles, relativePath);
458
+ this.log(`Created zip for language ${language} out of ${processedFiles.length} files in ${workspaceFolder.name}`);
459
+ zipFileMetadata.push(zipMetadata);
460
+ }
461
+ return zipFileMetadata;
462
+ }
463
+ createFolderIfNotExist(dir) {
464
+ if (!fs.existsSync(dir)) {
465
+ fs.mkdirSync(dir, { recursive: true });
466
+ }
467
+ }
468
+ log(...messages) {
469
+ this.logging.log(messages.join(' '));
470
+ }
471
+ async processJavaProjectConfig(workspaceFolder, files) {
472
+ const workspacePath = vscode_uri_1.URI.parse(workspaceFolder.uri).path;
473
+ const hasJavaFiles = files.some(file => file.language === 'java');
474
+ if (!hasJavaFiles) {
475
+ return files;
476
+ }
477
+ const additionalFiles = [];
478
+ // Generate Eclipse configuration files
479
+ const javaManager = new javaManager_1.JavaProjectAnalyzer(workspacePath);
480
+ const structure = await javaManager.analyze();
481
+ const generator = new javaManager_1.EclipseConfigGenerator(workspaceFolder, this.logging);
482
+ // Generate and add .classpath file
483
+ const classpathFiles = await generator.generateDotClasspath(structure);
484
+ for (const classpathFile of classpathFiles) {
485
+ additionalFiles.push(classpathFile);
486
+ }
487
+ // Generate and add .project file
488
+ const projectFiles = await generator.generateDotProject(path.basename(workspacePath), structure);
489
+ for (const projectFile of projectFiles) {
490
+ additionalFiles.push(projectFile);
491
+ }
492
+ return [...files, ...additionalFiles];
493
+ }
494
+ }
495
+ exports.ArtifactManager = ArtifactManager;
496
+ //# sourceMappingURL=artifactManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifactManager.js","sourceRoot":"","sources":["../../../src/language-server/workspaceContext/artifactManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { CredentialsProvider, Logging } from '@aws/language-server-runtimes/server-interface';
2
+ export type WebSocketReadyState = 'CONNECTING' | 'OPEN' | 'CLOSING' | 'CLOSED';
3
+ export declare class WebSocketClient {
4
+ private ws;
5
+ private logging;
6
+ private credentialsProvider;
7
+ private readonly url;
8
+ private reconnectAttempts;
9
+ private readonly maxReconnectAttempts;
10
+ private messageQueue;
11
+ private readonly messageThrottleDelay;
12
+ constructor(url: string, logging: Logging, credentialsProvider: CredentialsProvider);
13
+ private connect;
14
+ private attachEventListeners;
15
+ private handleDisconnect;
16
+ private flushMessageQueue;
17
+ private queueMessage;
18
+ isConnected(): boolean;
19
+ getWebsocketReadyState(): WebSocketReadyState;
20
+ send(message: string): Promise<void>;
21
+ disconnect(): void;
22
+ destroyClient(): void;
23
+ }