@google/gemini-cli-core 0.1.13 → 0.1.15-nightly.250731.0c6f7884

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 (304) hide show
  1. package/README.md +50 -1
  2. package/dist/google-gemini-cli-core-0.1.15.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.js +2 -2
  4. package/dist/src/code_assist/codeAssist.js.map +1 -1
  5. package/dist/src/code_assist/oauth2.js +9 -2
  6. package/dist/src/code_assist/oauth2.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.test.js +99 -7
  8. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  9. package/dist/src/code_assist/server.d.ts +4 -6
  10. package/dist/src/code_assist/server.js +4 -69
  11. package/dist/src/code_assist/server.js.map +1 -1
  12. package/dist/src/code_assist/setup.d.ts +6 -1
  13. package/dist/src/code_assist/setup.js +4 -1
  14. package/dist/src/code_assist/setup.js.map +1 -1
  15. package/dist/src/code_assist/setup.test.js +4 -1
  16. package/dist/src/code_assist/setup.test.js.map +1 -1
  17. package/dist/src/code_assist/types.d.ts +2 -2
  18. package/dist/src/config/config.d.ts +43 -11
  19. package/dist/src/config/config.js +79 -27
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +34 -23
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/config/flashFallback.test.js +24 -48
  24. package/dist/src/config/flashFallback.test.js.map +1 -1
  25. package/dist/src/config/models.d.ts +1 -0
  26. package/dist/src/config/models.js +1 -0
  27. package/dist/src/config/models.js.map +1 -1
  28. package/dist/src/core/client.d.ts +5 -2
  29. package/dist/src/core/client.js +64 -22
  30. package/dist/src/core/client.js.map +1 -1
  31. package/dist/src/core/client.test.js +199 -2
  32. package/dist/src/core/client.test.js.map +1 -1
  33. package/dist/src/core/contentGenerator.d.ts +1 -1
  34. package/dist/src/core/contentGenerator.js +1 -1
  35. package/dist/src/core/contentGenerator.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.d.ts +1 -3
  37. package/dist/src/core/coreToolScheduler.js +1 -3
  38. package/dist/src/core/coreToolScheduler.js.map +1 -1
  39. package/dist/src/core/coreToolScheduler.test.js +76 -1
  40. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  41. package/dist/src/core/geminiChat.d.ts +4 -3
  42. package/dist/src/core/geminiChat.js +9 -11
  43. package/dist/src/core/geminiChat.js.map +1 -1
  44. package/dist/src/core/geminiRequest.js +2 -37
  45. package/dist/src/core/geminiRequest.js.map +1 -1
  46. package/dist/src/core/logger.d.ts +1 -0
  47. package/dist/src/core/logger.js +24 -4
  48. package/dist/src/core/logger.js.map +1 -1
  49. package/dist/src/core/logger.test.js +61 -10
  50. package/dist/src/core/logger.test.js.map +1 -1
  51. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -5
  52. package/dist/src/core/prompts.js +43 -19
  53. package/dist/src/core/prompts.js.map +1 -1
  54. package/dist/src/core/prompts.test.js +121 -4
  55. package/dist/src/core/prompts.test.js.map +1 -1
  56. package/dist/src/core/tokenLimits.js +1 -0
  57. package/dist/src/core/tokenLimits.js.map +1 -1
  58. package/dist/src/core/turn.d.ts +7 -2
  59. package/dist/src/core/turn.js +9 -0
  60. package/dist/src/core/turn.js.map +1 -1
  61. package/dist/src/core/turn.test.js +129 -0
  62. package/dist/src/core/turn.test.js.map +1 -1
  63. package/dist/src/ide/detect-ide.d.ts +10 -0
  64. package/dist/src/ide/detect-ide.js +24 -0
  65. package/dist/src/ide/detect-ide.js.map +1 -0
  66. package/dist/src/ide/ide-client.d.ts +40 -0
  67. package/dist/src/ide/ide-client.js +152 -0
  68. package/dist/src/ide/ide-client.js.map +1 -0
  69. package/dist/src/ide/ide-installer.d.ts +15 -0
  70. package/dist/src/ide/ide-installer.js +111 -0
  71. package/dist/src/ide/ide-installer.js.map +1 -0
  72. package/dist/src/ide/ide-installer.test.js +78 -0
  73. package/dist/src/ide/ide-installer.test.js.map +1 -0
  74. package/dist/src/ide/ideContext.d.ts +279 -0
  75. package/dist/src/ide/ideContext.js +102 -0
  76. package/dist/src/ide/ideContext.js.map +1 -0
  77. package/dist/src/ide/ideContext.test.js +265 -0
  78. package/dist/src/ide/ideContext.test.js.map +1 -0
  79. package/dist/src/index.d.ts +11 -1
  80. package/dist/src/index.js +14 -1
  81. package/dist/src/index.js.map +1 -1
  82. package/dist/src/mcp/google-auth-provider.d.ts +23 -0
  83. package/dist/src/mcp/google-auth-provider.js +63 -0
  84. package/dist/src/mcp/google-auth-provider.js.map +1 -0
  85. package/dist/src/mcp/google-auth-provider.test.d.ts +6 -0
  86. package/dist/src/mcp/google-auth-provider.test.js +54 -0
  87. package/dist/src/mcp/google-auth-provider.test.js.map +1 -0
  88. package/dist/src/mcp/oauth-provider.d.ts +5 -1
  89. package/dist/src/mcp/oauth-provider.js +36 -11
  90. package/dist/src/mcp/oauth-provider.js.map +1 -1
  91. package/dist/src/mcp/oauth-provider.test.js +2 -2
  92. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  93. package/dist/src/mcp/oauth-token-storage.d.ts +3 -1
  94. package/dist/src/mcp/oauth-token-storage.js +3 -1
  95. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  96. package/dist/src/mcp/oauth-utils.js +2 -2
  97. package/dist/src/mcp/oauth-utils.js.map +1 -1
  98. package/dist/src/mcp/oauth-utils.test.js +1 -1
  99. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  100. package/dist/src/prompts/mcp-prompts.d.ts +8 -0
  101. package/dist/src/prompts/mcp-prompts.js +13 -0
  102. package/dist/src/prompts/mcp-prompts.js.map +1 -0
  103. package/dist/src/prompts/prompt-registry.d.ts +26 -0
  104. package/dist/src/prompts/prompt-registry.js +47 -0
  105. package/dist/src/prompts/prompt-registry.js.map +1 -0
  106. package/dist/src/services/fileDiscoveryService.test.js +101 -60
  107. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  108. package/dist/src/services/gitService.test.js +67 -86
  109. package/dist/src/services/gitService.test.js.map +1 -1
  110. package/dist/src/services/loopDetectionService.d.ts +51 -5
  111. package/dist/src/services/loopDetectionService.js +140 -36
  112. package/dist/src/services/loopDetectionService.js.map +1 -1
  113. package/dist/src/services/loopDetectionService.test.js +105 -99
  114. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  115. package/dist/src/services/shellExecutionService.d.ts +70 -0
  116. package/dist/src/services/shellExecutionService.js +152 -0
  117. package/dist/src/services/shellExecutionService.js.map +1 -0
  118. package/dist/src/services/shellExecutionService.test.d.ts +6 -0
  119. package/dist/src/services/shellExecutionService.test.js +258 -0
  120. package/dist/src/services/shellExecutionService.test.js.map +1 -0
  121. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -1
  122. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +75 -33
  123. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  124. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +3 -1
  125. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +7 -0
  126. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  127. package/dist/src/telemetry/constants.d.ts +2 -0
  128. package/dist/src/telemetry/constants.js +2 -0
  129. package/dist/src/telemetry/constants.js.map +1 -1
  130. package/dist/src/telemetry/file-exporters.d.ts +28 -0
  131. package/dist/src/telemetry/file-exporters.js +62 -0
  132. package/dist/src/telemetry/file-exporters.js.map +1 -0
  133. package/dist/src/telemetry/index.d.ts +2 -2
  134. package/dist/src/telemetry/index.js +2 -2
  135. package/dist/src/telemetry/index.js.map +1 -1
  136. package/dist/src/telemetry/loggers.d.ts +3 -1
  137. package/dist/src/telemetry/loggers.js +33 -1
  138. package/dist/src/telemetry/loggers.js.map +1 -1
  139. package/dist/src/telemetry/sdk.js +17 -6
  140. package/dist/src/telemetry/sdk.js.map +1 -1
  141. package/dist/src/telemetry/telemetry.test.js +2 -0
  142. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  143. package/dist/src/telemetry/types.d.ts +16 -2
  144. package/dist/src/telemetry/types.js +25 -1
  145. package/dist/src/telemetry/types.js.map +1 -1
  146. package/dist/src/test-utils/mockWorkspaceContext.d.ts +13 -0
  147. package/dist/src/test-utils/mockWorkspaceContext.js +24 -0
  148. package/dist/src/test-utils/mockWorkspaceContext.js.map +1 -0
  149. package/dist/src/tools/edit.js +14 -7
  150. package/dist/src/tools/edit.js.map +1 -1
  151. package/dist/src/tools/edit.test.js +37 -1
  152. package/dist/src/tools/edit.test.js.map +1 -1
  153. package/dist/src/tools/glob.js +53 -17
  154. package/dist/src/tools/glob.js.map +1 -1
  155. package/dist/src/tools/glob.test.js +32 -6
  156. package/dist/src/tools/glob.test.js.map +1 -1
  157. package/dist/src/tools/grep.d.ts +1 -1
  158. package/dist/src/tools/grep.js +81 -29
  159. package/dist/src/tools/grep.js.map +1 -1
  160. package/dist/src/tools/grep.test.js +77 -10
  161. package/dist/src/tools/grep.test.js.map +1 -1
  162. package/dist/src/tools/ls.d.ts +5 -2
  163. package/dist/src/tools/ls.js +43 -13
  164. package/dist/src/tools/ls.js.map +1 -1
  165. package/dist/src/tools/ls.test.d.ts +6 -0
  166. package/dist/src/tools/ls.test.js +356 -0
  167. package/dist/src/tools/ls.test.js.map +1 -0
  168. package/dist/src/tools/mcp-client.d.ts +31 -3
  169. package/dist/src/tools/mcp-client.js +467 -38
  170. package/dist/src/tools/mcp-client.js.map +1 -1
  171. package/dist/src/tools/mcp-client.test.js +99 -7
  172. package/dist/src/tools/mcp-client.test.js.map +1 -1
  173. package/dist/src/tools/mcp-tool.js +1 -1
  174. package/dist/src/tools/mcp-tool.js.map +1 -1
  175. package/dist/src/tools/mcp-tool.test.js +34 -0
  176. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  177. package/dist/src/tools/memoryTool.d.ts +17 -2
  178. package/dist/src/tools/memoryTool.js +130 -13
  179. package/dist/src/tools/memoryTool.js.map +1 -1
  180. package/dist/src/tools/memoryTool.test.js +88 -3
  181. package/dist/src/tools/memoryTool.test.js.map +1 -1
  182. package/dist/src/tools/modifiable-tool.test.js +51 -62
  183. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  184. package/dist/src/tools/read-file.js +8 -6
  185. package/dist/src/tools/read-file.js.map +1 -1
  186. package/dist/src/tools/read-file.test.js +125 -68
  187. package/dist/src/tools/read-file.test.js.map +1 -1
  188. package/dist/src/tools/read-many-files.d.ts +5 -3
  189. package/dist/src/tools/read-many-files.js +83 -33
  190. package/dist/src/tools/read-many-files.js.map +1 -1
  191. package/dist/src/tools/read-many-files.test.js +40 -4
  192. package/dist/src/tools/read-many-files.test.js.map +1 -1
  193. package/dist/src/tools/shell.d.ts +3 -23
  194. package/dist/src/tools/shell.js +173 -300
  195. package/dist/src/tools/shell.js.map +1 -1
  196. package/dist/src/tools/shell.test.js +278 -384
  197. package/dist/src/tools/shell.test.js.map +1 -1
  198. package/dist/src/tools/tool-registry.d.ts +13 -1
  199. package/dist/src/tools/tool-registry.js +46 -2
  200. package/dist/src/tools/tool-registry.js.map +1 -1
  201. package/dist/src/tools/tool-registry.test.js +13 -5
  202. package/dist/src/tools/tool-registry.test.js.map +1 -1
  203. package/dist/src/tools/write-file.js +5 -3
  204. package/dist/src/tools/write-file.js.map +1 -1
  205. package/dist/src/tools/write-file.test.js +36 -2
  206. package/dist/src/tools/write-file.test.js.map +1 -1
  207. package/dist/src/utils/bfsFileSearch.d.ts +2 -0
  208. package/dist/src/utils/bfsFileSearch.js +51 -24
  209. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  210. package/dist/src/utils/bfsFileSearch.test.js +163 -103
  211. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  212. package/dist/src/utils/editCorrector.js +4 -4
  213. package/dist/src/utils/editCorrector.js.map +1 -1
  214. package/dist/src/utils/editCorrector.test.js +1 -1
  215. package/dist/src/utils/editor.js +16 -10
  216. package/dist/src/utils/editor.js.map +1 -1
  217. package/dist/src/utils/editor.test.js +128 -28
  218. package/dist/src/utils/editor.test.js.map +1 -1
  219. package/dist/src/utils/errorReporting.d.ts +1 -1
  220. package/dist/src/utils/errorReporting.js +2 -2
  221. package/dist/src/utils/errorReporting.js.map +1 -1
  222. package/dist/src/utils/errorReporting.test.js +44 -38
  223. package/dist/src/utils/errorReporting.test.js.map +1 -1
  224. package/dist/src/utils/fileUtils.d.ts +4 -4
  225. package/dist/src/utils/fileUtils.js +31 -15
  226. package/dist/src/utils/fileUtils.js.map +1 -1
  227. package/dist/src/utils/fileUtils.test.js +37 -37
  228. package/dist/src/utils/fileUtils.test.js.map +1 -1
  229. package/dist/src/utils/flashFallback.integration.test.js +8 -0
  230. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  231. package/dist/src/utils/formatters.d.ts +6 -0
  232. package/dist/src/utils/formatters.js +16 -0
  233. package/dist/src/utils/formatters.js.map +1 -0
  234. package/dist/src/utils/getFolderStructure.d.ts +3 -2
  235. package/dist/src/utils/getFolderStructure.js +27 -28
  236. package/dist/src/utils/getFolderStructure.js.map +1 -1
  237. package/dist/src/utils/getFolderStructure.test.js +169 -187
  238. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  239. package/dist/src/utils/gitIgnoreParser.js +4 -7
  240. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  241. package/dist/src/utils/gitIgnoreParser.test.js +70 -61
  242. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  243. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  244. package/dist/src/utils/memoryDiscovery.js +11 -5
  245. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  246. package/dist/src/utils/memoryDiscovery.test.js +160 -371
  247. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  248. package/dist/src/utils/nextSpeakerChecker.js +2 -2
  249. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  250. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  251. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  252. package/dist/src/utils/partUtils.d.ts +14 -0
  253. package/dist/src/utils/partUtils.js +65 -0
  254. package/dist/src/utils/partUtils.js.map +1 -0
  255. package/dist/src/utils/partUtils.test.d.ts +6 -0
  256. package/dist/src/utils/partUtils.test.js +130 -0
  257. package/dist/src/utils/partUtils.test.js.map +1 -0
  258. package/dist/src/utils/paths.d.ts +11 -0
  259. package/dist/src/utils/paths.js +17 -1
  260. package/dist/src/utils/paths.js.map +1 -1
  261. package/dist/src/utils/quotaErrorDetection.js +0 -2
  262. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  263. package/dist/src/utils/retry.d.ts +3 -0
  264. package/dist/src/utils/retry.js +1 -1
  265. package/dist/src/utils/retry.js.map +1 -1
  266. package/dist/src/utils/retry.test.js.map +1 -1
  267. package/dist/src/utils/schemaValidator.d.ts +1 -1
  268. package/dist/src/utils/schemaValidator.js +6 -3
  269. package/dist/src/utils/schemaValidator.js.map +1 -1
  270. package/dist/src/utils/shell-utils.d.ts +78 -0
  271. package/dist/src/utils/shell-utils.js +306 -0
  272. package/dist/src/utils/shell-utils.js.map +1 -0
  273. package/dist/src/utils/shell-utils.test.d.ts +6 -0
  274. package/dist/src/utils/shell-utils.test.js +200 -0
  275. package/dist/src/utils/shell-utils.test.js.map +1 -0
  276. package/dist/src/utils/summarizer.js +1 -30
  277. package/dist/src/utils/summarizer.js.map +1 -1
  278. package/dist/src/utils/systemEncoding.d.ts +40 -0
  279. package/dist/src/utils/systemEncoding.js +149 -0
  280. package/dist/src/utils/systemEncoding.js.map +1 -0
  281. package/dist/src/utils/systemEncoding.test.d.ts +6 -0
  282. package/dist/src/utils/systemEncoding.test.js +368 -0
  283. package/dist/src/utils/systemEncoding.test.js.map +1 -0
  284. package/dist/src/utils/textUtils.d.ts +13 -0
  285. package/dist/src/utils/textUtils.js +28 -0
  286. package/dist/src/utils/textUtils.js.map +1 -0
  287. package/dist/src/utils/workspaceContext.d.ts +47 -0
  288. package/dist/src/utils/workspaceContext.js +106 -0
  289. package/dist/src/utils/workspaceContext.js.map +1 -0
  290. package/dist/src/utils/workspaceContext.test.d.ts +6 -0
  291. package/dist/src/utils/workspaceContext.test.js +209 -0
  292. package/dist/src/utils/workspaceContext.test.js.map +1 -0
  293. package/dist/tsconfig.tsbuildinfo +1 -1
  294. package/package.json +2 -1
  295. package/dist/google-gemini-cli-core-0.1.12.tgz +0 -0
  296. package/dist/src/core/geminiRequest.test.js +0 -72
  297. package/dist/src/core/geminiRequest.test.js.map +0 -1
  298. package/dist/src/services/ideContext.d.ts +0 -126
  299. package/dist/src/services/ideContext.js +0 -98
  300. package/dist/src/services/ideContext.js.map +0 -1
  301. package/dist/src/services/ideContext.test.js +0 -111
  302. package/dist/src/services/ideContext.test.js.map +0 -1
  303. /package/dist/src/{core/geminiRequest.test.d.ts → ide/ide-installer.test.d.ts} +0 -0
  304. /package/dist/src/{services → ide}/ideContext.test.d.ts +0 -0
@@ -30,71 +30,171 @@ describe('editor utils', () => {
30
30
  });
31
31
  describe('checkHasEditorType', () => {
32
32
  const testCases = [
33
- { editor: 'vscode', command: 'code', win32Command: 'code.cmd' },
34
- { editor: 'vscodium', command: 'codium', win32Command: 'codium.cmd' },
35
- { editor: 'windsurf', command: 'windsurf', win32Command: 'windsurf' },
36
- { editor: 'cursor', command: 'cursor', win32Command: 'cursor' },
37
- { editor: 'vim', command: 'vim', win32Command: 'vim' },
38
- { editor: 'neovim', command: 'nvim', win32Command: 'nvim' },
39
- { editor: 'zed', command: 'zed', win32Command: 'zed' },
33
+ { editor: 'vscode', commands: ['code'], win32Commands: ['code.cmd'] },
34
+ {
35
+ editor: 'vscodium',
36
+ commands: ['codium'],
37
+ win32Commands: ['codium.cmd'],
38
+ },
39
+ {
40
+ editor: 'windsurf',
41
+ commands: ['windsurf'],
42
+ win32Commands: ['windsurf'],
43
+ },
44
+ { editor: 'cursor', commands: ['cursor'], win32Commands: ['cursor'] },
45
+ { editor: 'vim', commands: ['vim'], win32Commands: ['vim'] },
46
+ { editor: 'neovim', commands: ['nvim'], win32Commands: ['nvim'] },
47
+ { editor: 'zed', commands: ['zed', 'zeditor'], win32Commands: ['zed'] },
40
48
  ];
41
- for (const { editor, command, win32Command } of testCases) {
49
+ for (const { editor, commands, win32Commands } of testCases) {
42
50
  describe(`${editor}`, () => {
43
- it(`should return true if "${command}" command exists on non-windows`, () => {
51
+ // Non-windows tests
52
+ it(`should return true if first command "${commands[0]}" exists on non-windows`, () => {
44
53
  Object.defineProperty(process, 'platform', { value: 'linux' });
45
- execSync.mockReturnValue(Buffer.from(`/usr/bin/${command}`));
54
+ execSync.mockReturnValue(Buffer.from(`/usr/bin/${commands[0]}`));
46
55
  expect(checkHasEditorType(editor)).toBe(true);
47
- expect(execSync).toHaveBeenCalledWith(`command -v ${command}`, {
56
+ expect(execSync).toHaveBeenCalledWith(`command -v ${commands[0]}`, {
48
57
  stdio: 'ignore',
49
58
  });
50
59
  });
51
- it(`should return false if "${command}" command does not exist on non-windows`, () => {
60
+ if (commands.length > 1) {
61
+ it(`should return true if first command doesn't exist but second command "${commands[1]}" exists on non-windows`, () => {
62
+ Object.defineProperty(process, 'platform', { value: 'linux' });
63
+ execSync
64
+ .mockImplementationOnce(() => {
65
+ throw new Error(); // first command not found
66
+ })
67
+ .mockReturnValueOnce(Buffer.from(`/usr/bin/${commands[1]}`)); // second command found
68
+ expect(checkHasEditorType(editor)).toBe(true);
69
+ expect(execSync).toHaveBeenCalledTimes(2);
70
+ });
71
+ }
72
+ it(`should return false if none of the commands exist on non-windows`, () => {
52
73
  Object.defineProperty(process, 'platform', { value: 'linux' });
53
74
  execSync.mockImplementation(() => {
54
- throw new Error();
75
+ throw new Error(); // all commands not found
55
76
  });
56
77
  expect(checkHasEditorType(editor)).toBe(false);
78
+ expect(execSync).toHaveBeenCalledTimes(commands.length);
57
79
  });
58
- it(`should return true if "${win32Command}" command exists on windows`, () => {
80
+ // Windows tests
81
+ it(`should return true if first command "${win32Commands[0]}" exists on windows`, () => {
59
82
  Object.defineProperty(process, 'platform', { value: 'win32' });
60
- execSync.mockReturnValue(Buffer.from(`C:\\Program Files\\...\\${win32Command}`));
83
+ execSync.mockReturnValue(Buffer.from(`C:\\Program Files\\...\\${win32Commands[0]}`));
61
84
  expect(checkHasEditorType(editor)).toBe(true);
62
- expect(execSync).toHaveBeenCalledWith(`where.exe ${win32Command}`, {
85
+ expect(execSync).toHaveBeenCalledWith(`where.exe ${win32Commands[0]}`, {
63
86
  stdio: 'ignore',
64
87
  });
65
88
  });
66
- it(`should return false if "${win32Command}" command does not exist on windows`, () => {
89
+ if (win32Commands.length > 1) {
90
+ it(`should return true if first command doesn't exist but second command "${win32Commands[1]}" exists on windows`, () => {
91
+ Object.defineProperty(process, 'platform', { value: 'win32' });
92
+ execSync
93
+ .mockImplementationOnce(() => {
94
+ throw new Error(); // first command not found
95
+ })
96
+ .mockReturnValueOnce(Buffer.from(`C:\\Program Files\\...\\${win32Commands[1]}`)); // second command found
97
+ expect(checkHasEditorType(editor)).toBe(true);
98
+ expect(execSync).toHaveBeenCalledTimes(2);
99
+ });
100
+ }
101
+ it(`should return false if none of the commands exist on windows`, () => {
67
102
  Object.defineProperty(process, 'platform', { value: 'win32' });
68
103
  execSync.mockImplementation(() => {
69
- throw new Error();
104
+ throw new Error(); // all commands not found
70
105
  });
71
106
  expect(checkHasEditorType(editor)).toBe(false);
107
+ expect(execSync).toHaveBeenCalledTimes(win32Commands.length);
72
108
  });
73
109
  });
74
110
  }
75
111
  });
76
112
  describe('getDiffCommand', () => {
77
113
  const guiEditors = [
78
- { editor: 'vscode', command: 'code', win32Command: 'code.cmd' },
79
- { editor: 'vscodium', command: 'codium', win32Command: 'codium.cmd' },
80
- { editor: 'windsurf', command: 'windsurf', win32Command: 'windsurf' },
81
- { editor: 'cursor', command: 'cursor', win32Command: 'cursor' },
82
- { editor: 'zed', command: 'zed', win32Command: 'zed' },
114
+ { editor: 'vscode', commands: ['code'], win32Commands: ['code.cmd'] },
115
+ {
116
+ editor: 'vscodium',
117
+ commands: ['codium'],
118
+ win32Commands: ['codium.cmd'],
119
+ },
120
+ {
121
+ editor: 'windsurf',
122
+ commands: ['windsurf'],
123
+ win32Commands: ['windsurf'],
124
+ },
125
+ { editor: 'cursor', commands: ['cursor'], win32Commands: ['cursor'] },
126
+ { editor: 'zed', commands: ['zed', 'zeditor'], win32Commands: ['zed'] },
83
127
  ];
84
- for (const { editor, command, win32Command } of guiEditors) {
85
- it(`should return the correct command for ${editor} on non-windows`, () => {
128
+ for (const { editor, commands, win32Commands } of guiEditors) {
129
+ // Non-windows tests
130
+ it(`should use first command "${commands[0]}" when it exists on non-windows`, () => {
86
131
  Object.defineProperty(process, 'platform', { value: 'linux' });
132
+ execSync.mockReturnValue(Buffer.from(`/usr/bin/${commands[0]}`));
87
133
  const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
88
134
  expect(diffCommand).toEqual({
89
- command,
135
+ command: commands[0],
90
136
  args: ['--wait', '--diff', 'old.txt', 'new.txt'],
91
137
  });
92
138
  });
93
- it(`should return the correct command for ${editor} on windows`, () => {
139
+ if (commands.length > 1) {
140
+ it(`should use second command "${commands[1]}" when first doesn't exist on non-windows`, () => {
141
+ Object.defineProperty(process, 'platform', { value: 'linux' });
142
+ execSync
143
+ .mockImplementationOnce(() => {
144
+ throw new Error(); // first command not found
145
+ })
146
+ .mockReturnValueOnce(Buffer.from(`/usr/bin/${commands[1]}`)); // second command found
147
+ const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
148
+ expect(diffCommand).toEqual({
149
+ command: commands[1],
150
+ args: ['--wait', '--diff', 'old.txt', 'new.txt'],
151
+ });
152
+ });
153
+ }
154
+ it(`should fall back to last command "${commands[commands.length - 1]}" when none exist on non-windows`, () => {
155
+ Object.defineProperty(process, 'platform', { value: 'linux' });
156
+ execSync.mockImplementation(() => {
157
+ throw new Error(); // all commands not found
158
+ });
159
+ const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
160
+ expect(diffCommand).toEqual({
161
+ command: commands[commands.length - 1],
162
+ args: ['--wait', '--diff', 'old.txt', 'new.txt'],
163
+ });
164
+ });
165
+ // Windows tests
166
+ it(`should use first command "${win32Commands[0]}" when it exists on windows`, () => {
94
167
  Object.defineProperty(process, 'platform', { value: 'win32' });
168
+ execSync.mockReturnValue(Buffer.from(`C:\\Program Files\\...\\${win32Commands[0]}`));
169
+ const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
170
+ expect(diffCommand).toEqual({
171
+ command: win32Commands[0],
172
+ args: ['--wait', '--diff', 'old.txt', 'new.txt'],
173
+ });
174
+ });
175
+ if (win32Commands.length > 1) {
176
+ it(`should use second command "${win32Commands[1]}" when first doesn't exist on windows`, () => {
177
+ Object.defineProperty(process, 'platform', { value: 'win32' });
178
+ execSync
179
+ .mockImplementationOnce(() => {
180
+ throw new Error(); // first command not found
181
+ })
182
+ .mockReturnValueOnce(Buffer.from(`C:\\Program Files\\...\\${win32Commands[1]}`)); // second command found
183
+ const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
184
+ expect(diffCommand).toEqual({
185
+ command: win32Commands[1],
186
+ args: ['--wait', '--diff', 'old.txt', 'new.txt'],
187
+ });
188
+ });
189
+ }
190
+ it(`should fall back to last command "${win32Commands[win32Commands.length - 1]}" when none exist on windows`, () => {
191
+ Object.defineProperty(process, 'platform', { value: 'win32' });
192
+ execSync.mockImplementation(() => {
193
+ throw new Error(); // all commands not found
194
+ });
95
195
  const diffCommand = getDiffCommand('old.txt', 'new.txt', editor);
96
196
  expect(diffCommand).toEqual({
97
- command: win32Command,
197
+ command: win32Commands[win32Commands.length - 1],
98
198
  args: ['--wait', '--diff', 'old.txt', 'new.txt'],
99
199
  });
100
200
  });
@@ -1 +1 @@
1
- {"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../../src/utils/editor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.test.js","sourceRoot":"","sources":["../../../src/utils/editor.test.ts"],"names":[],"mappings":"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"}
@@ -11,4 +11,4 @@ import { Content } from '@google/genai';
11
11
  * @param type A string to identify the type of error (e.g., 'startChat', 'generateJson-api').
12
12
  * @param baseMessage The initial message to log to console.error before the report path.
13
13
  */
14
- export declare function reportError(error: Error | unknown, baseMessage: string, context?: Content[] | Record<string, unknown> | unknown[], type?: string): Promise<void>;
14
+ export declare function reportError(error: Error | unknown, baseMessage: string, context?: Content[] | Record<string, unknown> | unknown[], type?: string, reportingDir?: string): Promise<void>;
@@ -13,10 +13,10 @@ import path from 'node:path';
13
13
  * @param type A string to identify the type of error (e.g., 'startChat', 'generateJson-api').
14
14
  * @param baseMessage The initial message to log to console.error before the report path.
15
15
  */
16
- export async function reportError(error, baseMessage, context, type = 'general') {
16
+ export async function reportError(error, baseMessage, context, type = 'general', reportingDir = os.tmpdir()) {
17
17
  const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
18
18
  const reportFileName = `gemini-client-error-${type}-${timestamp}.json`;
19
- const reportPath = path.join(os.tmpdir(), reportFileName);
19
+ const reportPath = path.join(reportingDir, reportFileName);
20
20
  let errorToReport;
21
21
  if (error instanceof Error) {
22
22
  errorToReport = { message: error.message, stack: error.stack };
@@ -1 +1 @@
1
- {"version":3,"file":"errorReporting.js","sourceRoot":"","sources":["../../../src/utils/errorReporting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errorReporting.js","sourceRoot":"","sources":["../../../src/utils/errorReporting.ts"],"names":[],"mappings":"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"}
@@ -4,26 +4,27 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
- import { reportError } from './errorReporting.js';
8
7
  import fs from 'node:fs/promises';
9
8
  import os from 'node:os';
10
- // Mock dependencies
11
- vi.mock('node:fs/promises');
12
- vi.mock('node:os');
9
+ import path from 'node:path';
10
+ import { reportError } from './errorReporting.js';
13
11
  describe('reportError', () => {
14
12
  let consoleErrorSpy;
15
- const MOCK_TMP_DIR = '/tmp';
13
+ let testDir;
16
14
  const MOCK_TIMESTAMP = '2025-01-01T00-00-00-000Z';
17
- beforeEach(() => {
15
+ beforeEach(async () => {
16
+ // Create a temporary directory for logs
17
+ testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'gemini-report-test-'));
18
18
  vi.resetAllMocks();
19
19
  consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
20
- os.tmpdir.mockReturnValue(MOCK_TMP_DIR);
21
20
  vi.spyOn(Date.prototype, 'toISOString').mockReturnValue(MOCK_TIMESTAMP);
22
21
  });
23
- afterEach(() => {
22
+ afterEach(async () => {
24
23
  vi.restoreAllMocks();
24
+ // Clean up the temporary directory
25
+ await fs.rm(testDir, { recursive: true, force: true });
25
26
  });
26
- const getExpectedReportPath = (type) => `${MOCK_TMP_DIR}/gemini-client-error-${type}-${MOCK_TIMESTAMP}.json`;
27
+ const getExpectedReportPath = (type) => path.join(testDir, `gemini-client-error-${type}-${MOCK_TIMESTAMP}.json`);
27
28
  it('should generate a report and log the path', async () => {
28
29
  const error = new Error('Test error');
29
30
  error.stack = 'Test stack';
@@ -31,13 +32,15 @@ describe('reportError', () => {
31
32
  const context = { data: 'test context' };
32
33
  const type = 'test-type';
33
34
  const expectedReportPath = getExpectedReportPath(type);
34
- fs.writeFile.mockResolvedValue(undefined);
35
- await reportError(error, baseMessage, context, type);
36
- expect(os.tmpdir).toHaveBeenCalledTimes(1);
37
- expect(fs.writeFile).toHaveBeenCalledWith(expectedReportPath, JSON.stringify({
38
- error: { message: 'Test error', stack: error.stack },
35
+ await reportError(error, baseMessage, context, type, testDir);
36
+ // Verify the file was written
37
+ const reportContent = await fs.readFile(expectedReportPath, 'utf-8');
38
+ const parsedReport = JSON.parse(reportContent);
39
+ expect(parsedReport).toEqual({
40
+ error: { message: 'Test error', stack: 'Test stack' },
39
41
  context,
40
- }, null, 2));
42
+ });
43
+ // Verify the console log
41
44
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Full report available at: ${expectedReportPath}`);
42
45
  });
43
46
  it('should handle errors that are plain objects with a message property', async () => {
@@ -45,11 +48,12 @@ describe('reportError', () => {
45
48
  const baseMessage = 'Another error.';
46
49
  const type = 'general';
47
50
  const expectedReportPath = getExpectedReportPath(type);
48
- fs.writeFile.mockResolvedValue(undefined);
49
- await reportError(error, baseMessage);
50
- expect(fs.writeFile).toHaveBeenCalledWith(expectedReportPath, JSON.stringify({
51
+ await reportError(error, baseMessage, undefined, type, testDir);
52
+ const reportContent = await fs.readFile(expectedReportPath, 'utf-8');
53
+ const parsedReport = JSON.parse(reportContent);
54
+ expect(parsedReport).toEqual({
51
55
  error: { message: 'Test plain object error' },
52
- }, null, 2));
56
+ });
53
57
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Full report available at: ${expectedReportPath}`);
54
58
  });
55
59
  it('should handle string errors', async () => {
@@ -57,24 +61,22 @@ describe('reportError', () => {
57
61
  const baseMessage = 'String error occurred.';
58
62
  const type = 'general';
59
63
  const expectedReportPath = getExpectedReportPath(type);
60
- fs.writeFile.mockResolvedValue(undefined);
61
- await reportError(error, baseMessage);
62
- expect(fs.writeFile).toHaveBeenCalledWith(expectedReportPath, JSON.stringify({
64
+ await reportError(error, baseMessage, undefined, type, testDir);
65
+ const reportContent = await fs.readFile(expectedReportPath, 'utf-8');
66
+ const parsedReport = JSON.parse(reportContent);
67
+ expect(parsedReport).toEqual({
63
68
  error: { message: 'Just a string error' },
64
- }, null, 2));
69
+ });
65
70
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Full report available at: ${expectedReportPath}`);
66
71
  });
67
72
  it('should log fallback message if writing report fails', async () => {
68
73
  const error = new Error('Main error');
69
74
  const baseMessage = 'Failed operation.';
70
- const writeError = new Error('Failed to write file');
71
75
  const context = ['some context'];
72
76
  const type = 'general';
73
- const expectedReportPath = getExpectedReportPath(type);
74
- fs.writeFile.mockRejectedValue(writeError);
75
- await reportError(error, baseMessage, context, type);
76
- expect(fs.writeFile).toHaveBeenCalledWith(expectedReportPath, expect.any(String)); // It still tries to write
77
- expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Additionally, failed to write detailed error report:`, writeError);
77
+ const nonExistentDir = path.join(testDir, 'non-existent-dir');
78
+ await reportError(error, baseMessage, context, type, nonExistentDir);
79
+ expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Additionally, failed to write detailed error report:`, expect.any(Error));
78
80
  expect(consoleErrorSpy).toHaveBeenCalledWith('Original error that triggered report generation:', error);
79
81
  expect(consoleErrorSpy).toHaveBeenCalledWith('Original context:', context);
80
82
  });
@@ -98,13 +100,16 @@ describe('reportError', () => {
98
100
  // Subsequent calls (for minimal report) should succeed
99
101
  return originalJsonStringify(value, replacer, space);
100
102
  });
101
- fs.writeFile.mockResolvedValue(undefined); // Mock for the minimal report write
102
- await reportError(error, baseMessage, context, type);
103
+ await reportError(error, baseMessage, context, type, testDir);
103
104
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Could not stringify report content (likely due to context):`, stringifyError);
104
105
  expect(consoleErrorSpy).toHaveBeenCalledWith('Original error that triggered report generation:', error);
105
106
  expect(consoleErrorSpy).toHaveBeenCalledWith('Original context could not be stringified or included in report.');
106
- // Check that it attempts to write a minimal report
107
- expect(fs.writeFile).toHaveBeenCalledWith(expectedMinimalReportPath, originalJsonStringify({ error: { message: error.message, stack: error.stack } }, null, 2));
107
+ // Check that it writes a minimal report
108
+ const reportContent = await fs.readFile(expectedMinimalReportPath, 'utf-8');
109
+ const parsedReport = JSON.parse(reportContent);
110
+ expect(parsedReport).toEqual({
111
+ error: { message: error.message, stack: error.stack },
112
+ });
108
113
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Partial report (excluding context) available at: ${expectedMinimalReportPath}`);
109
114
  });
110
115
  it('should generate a report without context if context is not provided', async () => {
@@ -113,11 +118,12 @@ describe('reportError', () => {
113
118
  const baseMessage = 'Simple error.';
114
119
  const type = 'general';
115
120
  const expectedReportPath = getExpectedReportPath(type);
116
- fs.writeFile.mockResolvedValue(undefined);
117
- await reportError(error, baseMessage, undefined, type);
118
- expect(fs.writeFile).toHaveBeenCalledWith(expectedReportPath, JSON.stringify({
119
- error: { message: 'Error without context', stack: error.stack },
120
- }, null, 2));
121
+ await reportError(error, baseMessage, undefined, type, testDir);
122
+ const reportContent = await fs.readFile(expectedReportPath, 'utf-8');
123
+ const parsedReport = JSON.parse(reportContent);
124
+ expect(parsedReport).toEqual({
125
+ error: { message: 'Error without context', stack: 'No context stack' },
126
+ });
121
127
  expect(consoleErrorSpy).toHaveBeenCalledWith(`${baseMessage} Full report available at: ${expectedReportPath}`);
122
128
  });
123
129
  });
@@ -1 +1 @@
1
- {"version":3,"file":"errorReporting.test.js","sourceRoot":"","sources":["../../../src/utils/errorReporting.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errorReporting.test.js","sourceRoot":"","sources":["../../../src/utils/errorReporting.test.ts"],"names":[],"mappings":"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"}
@@ -21,15 +21,15 @@ export declare function isWithinRoot(pathToCheck: string, rootDirectory: string)
21
21
  /**
22
22
  * Determines if a file is likely binary based on content sampling.
23
23
  * @param filePath Path to the file.
24
- * @returns True if the file appears to be binary.
24
+ * @returns Promise that resolves to true if the file appears to be binary.
25
25
  */
26
- export declare function isBinaryFile(filePath: string): boolean;
26
+ export declare function isBinaryFile(filePath: string): Promise<boolean>;
27
27
  /**
28
28
  * Detects the type of file based on extension and content.
29
29
  * @param filePath Path to the file.
30
- * @returns 'text', 'image', 'pdf', 'audio', 'video', or 'binary'.
30
+ * @returns Promise that resolves to 'text', 'image', 'pdf', 'audio', 'video', 'binary' or 'svg'.
31
31
  */
32
- export declare function detectFileType(filePath: string): 'text' | 'image' | 'pdf' | 'audio' | 'video' | 'binary' | 'svg';
32
+ export declare function detectFileType(filePath: string): Promise<'text' | 'image' | 'pdf' | 'audio' | 'video' | 'binary' | 'svg'>;
33
33
  export interface ProcessedFileReadResult {
34
34
  llmContent: PartUnion;
35
35
  returnDisplay: string;
@@ -3,8 +3,8 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import fs from 'fs';
7
- import path from 'path';
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
8
  import mime from 'mime-types';
9
9
  // Constants for text file processing
10
10
  const DEFAULT_MAX_LINES_TEXT_FILE = 2000;
@@ -41,22 +41,23 @@ export function isWithinRoot(pathToCheck, rootDirectory) {
41
41
  /**
42
42
  * Determines if a file is likely binary based on content sampling.
43
43
  * @param filePath Path to the file.
44
- * @returns True if the file appears to be binary.
44
+ * @returns Promise that resolves to true if the file appears to be binary.
45
45
  */
46
- export function isBinaryFile(filePath) {
46
+ export async function isBinaryFile(filePath) {
47
+ let fileHandle;
47
48
  try {
48
- const fd = fs.openSync(filePath, 'r');
49
+ fileHandle = await fs.promises.open(filePath, 'r');
49
50
  // Read up to 4KB or file size, whichever is smaller
50
- const fileSize = fs.fstatSync(fd).size;
51
+ const stats = await fileHandle.stat();
52
+ const fileSize = stats.size;
51
53
  if (fileSize === 0) {
52
54
  // Empty file is not considered binary for content checking
53
- fs.closeSync(fd);
54
55
  return false;
55
56
  }
56
57
  const bufferSize = Math.min(4096, fileSize);
57
58
  const buffer = Buffer.alloc(bufferSize);
58
- const bytesRead = fs.readSync(fd, buffer, 0, buffer.length, 0);
59
- fs.closeSync(fd);
59
+ const result = await fileHandle.read(buffer, 0, buffer.length, 0);
60
+ const bytesRead = result.bytesRead;
60
61
  if (bytesRead === 0)
61
62
  return false;
62
63
  let nonPrintableCount = 0;
@@ -70,18 +71,33 @@ export function isBinaryFile(filePath) {
70
71
  // If >30% non-printable characters, consider it binary
71
72
  return nonPrintableCount / bytesRead > 0.3;
72
73
  }
73
- catch {
74
+ catch (error) {
75
+ // Log error for debugging while maintaining existing behavior
76
+ console.warn(`Failed to check if file is binary: ${filePath}`, error instanceof Error ? error.message : String(error));
74
77
  // If any error occurs (e.g. file not found, permissions),
75
78
  // treat as not binary here; let higher-level functions handle existence/access errors.
76
79
  return false;
77
80
  }
81
+ finally {
82
+ // Safely close the file handle if it was successfully opened
83
+ if (fileHandle) {
84
+ try {
85
+ await fileHandle.close();
86
+ }
87
+ catch (closeError) {
88
+ // Log close errors for debugging while continuing with cleanup
89
+ console.warn(`Failed to close file handle for: ${filePath}`, closeError instanceof Error ? closeError.message : String(closeError));
90
+ // The important thing is that we attempted to clean up
91
+ }
92
+ }
93
+ }
78
94
  }
79
95
  /**
80
96
  * Detects the type of file based on extension and content.
81
97
  * @param filePath Path to the file.
82
- * @returns 'text', 'image', 'pdf', 'audio', 'video', or 'binary'.
98
+ * @returns Promise that resolves to 'text', 'image', 'pdf', 'audio', 'video', 'binary' or 'svg'.
83
99
  */
84
- export function detectFileType(filePath) {
100
+ export async function detectFileType(filePath) {
85
101
  const ext = path.extname(filePath).toLowerCase();
86
102
  // The mimetype for "ts" is MPEG transport stream (a video format) but we want
87
103
  // to assume these are typescript files instead.
@@ -140,9 +156,9 @@ export function detectFileType(filePath) {
140
156
  ].includes(ext)) {
141
157
  return 'binary';
142
158
  }
143
- // Fallback to content-based check if mime type wasn't conclusive for image/pdf
159
+ // Fall back to content-based check if mime type wasn't conclusive for image/pdf
144
160
  // and it's not a known binary extension.
145
- if (isBinaryFile(filePath)) {
161
+ if (await isBinaryFile(filePath)) {
146
162
  return 'binary';
147
163
  }
148
164
  return 'text';
@@ -180,7 +196,7 @@ export async function processSingleFileContent(filePath, rootDirectory, offset,
180
196
  throw new Error(`File size exceeds the 20MB limit: ${filePath} (${(fileSizeInBytes /
181
197
  (1024 * 1024)).toFixed(2)}MB)`);
182
198
  }
183
- const fileType = detectFileType(filePath);
199
+ const fileType = await detectFileType(filePath);
184
200
  const relativePathForDisplay = path
185
201
  .relative(rootDirectory, filePath)
186
202
  .replace(/\\/g, '/');