@machina.ai/cell-cli-core 1.0.17-rc1 → 1.0.21-rc1

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 (399) hide show
  1. package/dist/index.d.ts +3 -0
  2. package/dist/index.js +3 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +9 -2
  5. package/dist/src/code_assist/converter.d.ts +4 -2
  6. package/dist/src/code_assist/converter.js +2 -1
  7. package/dist/src/code_assist/converter.js.map +1 -1
  8. package/dist/src/code_assist/converter.test.js +48 -1
  9. package/dist/src/code_assist/converter.test.js.map +1 -1
  10. package/dist/src/code_assist/oauth2.d.ts +1 -0
  11. package/dist/src/code_assist/oauth2.js +38 -21
  12. package/dist/src/code_assist/oauth2.js.map +1 -1
  13. package/dist/src/code_assist/oauth2.test.js +51 -8
  14. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  15. package/dist/src/code_assist/server.js +1 -1
  16. package/dist/src/code_assist/server.js.map +1 -1
  17. package/dist/src/code_assist/server.test.js +4 -1
  18. package/dist/src/code_assist/server.test.js.map +1 -1
  19. package/dist/src/code_assist/setup.js +48 -17
  20. package/dist/src/code_assist/setup.js.map +1 -1
  21. package/dist/src/code_assist/setup.test.js +114 -8
  22. package/dist/src/code_assist/setup.test.js.map +1 -1
  23. package/dist/src/config/config.d.ts +41 -11
  24. package/dist/src/config/config.js +85 -27
  25. package/dist/src/config/config.js.map +1 -1
  26. package/dist/src/config/config.test.js +117 -3
  27. package/dist/src/config/config.test.js.map +1 -1
  28. package/dist/src/config/flashFallback.test.js +0 -4
  29. package/dist/src/config/flashFallback.test.js.map +1 -1
  30. package/dist/src/core/client.d.ts +12 -16
  31. package/dist/src/core/client.js +218 -135
  32. package/dist/src/core/client.js.map +1 -1
  33. package/dist/src/core/client.test.js +636 -37
  34. package/dist/src/core/client.test.js.map +1 -1
  35. package/dist/src/core/contentGenerator.js +23 -21
  36. package/dist/src/core/contentGenerator.js.map +1 -1
  37. package/dist/src/core/contentGenerator.test.js +30 -126
  38. package/dist/src/core/contentGenerator.test.js.map +1 -1
  39. package/dist/src/core/coreToolScheduler.d.ts +23 -8
  40. package/dist/src/core/coreToolScheduler.js +179 -64
  41. package/dist/src/core/coreToolScheduler.js.map +1 -1
  42. package/dist/src/core/coreToolScheduler.test.js +250 -97
  43. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  44. package/dist/src/core/geminiChat.d.ts +7 -6
  45. package/dist/src/core/geminiChat.js +43 -43
  46. package/dist/src/core/geminiChat.js.map +1 -1
  47. package/dist/src/core/logger.d.ts +23 -1
  48. package/dist/src/core/logger.js +115 -11
  49. package/dist/src/core/logger.js.map +1 -1
  50. package/dist/src/core/logger.test.js +112 -17
  51. package/dist/src/core/logger.test.js.map +1 -1
  52. package/dist/src/core/loggingContentGenerator.d.ts +25 -0
  53. package/dist/src/core/loggingContentGenerator.js +95 -0
  54. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  55. package/dist/src/core/nonInteractiveToolExecutor.js +28 -1
  56. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  57. package/dist/src/core/nonInteractiveToolExecutor.test.js +85 -62
  58. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  59. package/dist/src/core/prompts.js +4 -4
  60. package/dist/src/core/prompts.js.map +1 -1
  61. package/dist/src/core/subagent.d.ts +230 -0
  62. package/dist/src/core/subagent.js +447 -0
  63. package/dist/src/core/subagent.js.map +1 -0
  64. package/dist/src/core/subagent.test.d.ts +6 -0
  65. package/dist/src/core/subagent.test.js +515 -0
  66. package/dist/src/core/subagent.test.js.map +1 -0
  67. package/dist/src/core/turn.js +1 -0
  68. package/dist/src/core/turn.js.map +1 -1
  69. package/dist/src/core/turn.test.js +4 -0
  70. package/dist/src/core/turn.test.js.map +1 -1
  71. package/dist/src/generated/git-commit.d.ts +7 -0
  72. package/dist/src/generated/git-commit.js +10 -0
  73. package/dist/src/generated/git-commit.js.map +1 -0
  74. package/dist/src/ide/constants.d.ts +6 -0
  75. package/dist/src/ide/constants.js +7 -0
  76. package/dist/src/ide/constants.js.map +1 -0
  77. package/dist/src/ide/detect-ide.d.ts +12 -2
  78. package/dist/src/ide/detect-ide.js +64 -5
  79. package/dist/src/ide/detect-ide.js.map +1 -1
  80. package/dist/src/ide/detect-ide.test.d.ts +6 -0
  81. package/dist/src/ide/detect-ide.test.js +65 -0
  82. package/dist/src/ide/detect-ide.test.js.map +1 -0
  83. package/dist/src/ide/ide-client.d.ts +34 -11
  84. package/dist/src/ide/ide-client.js +230 -62
  85. package/dist/src/ide/ide-client.js.map +1 -1
  86. package/dist/src/ide/ide-client.test.d.ts +6 -0
  87. package/dist/src/ide/ide-client.test.js +43 -0
  88. package/dist/src/ide/ide-client.test.js.map +1 -0
  89. package/dist/src/ide/ide-installer.js +23 -34
  90. package/dist/src/ide/ide-installer.js.map +1 -1
  91. package/dist/src/ide/ide-installer.test.js +6 -8
  92. package/dist/src/ide/ide-installer.test.js.map +1 -1
  93. package/dist/src/ide/ideContext.d.ts +97 -2
  94. package/dist/src/ide/ideContext.js +45 -0
  95. package/dist/src/ide/ideContext.js.map +1 -1
  96. package/dist/src/ide/process-utils.d.ts +14 -0
  97. package/dist/src/ide/process-utils.js +57 -0
  98. package/dist/src/ide/process-utils.js.map +1 -0
  99. package/dist/src/index.d.ts +7 -1
  100. package/dist/src/index.js +7 -1
  101. package/dist/src/index.js.map +1 -1
  102. package/dist/src/mcp/google-auth-provider.js +9 -0
  103. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  104. package/dist/src/mcp/google-auth-provider.test.js +45 -10
  105. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  106. package/dist/src/mcp/oauth-provider.d.ts +1 -1
  107. package/dist/src/mcp/oauth-provider.js +185 -59
  108. package/dist/src/mcp/oauth-provider.js.map +1 -1
  109. package/dist/src/mcp/oauth-provider.test.js +134 -62
  110. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  111. package/dist/src/mcp/oauth-utils.d.ts +3 -1
  112. package/dist/src/mcp/oauth-utils.js +50 -12
  113. package/dist/src/mcp/oauth-utils.js.map +1 -1
  114. package/dist/src/mcp/oauth-utils.test.js +17 -2
  115. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  116. package/dist/src/mocks/msw.d.ts +6 -0
  117. package/dist/src/mocks/msw.js +8 -0
  118. package/dist/src/mocks/msw.js.map +1 -0
  119. package/dist/src/prompts/prompt-registry.d.ts +8 -0
  120. package/dist/src/prompts/prompt-registry.js +16 -0
  121. package/dist/src/prompts/prompt-registry.js.map +1 -1
  122. package/dist/src/services/chatRecordingService.d.ts +150 -0
  123. package/dist/src/services/chatRecordingService.js +318 -0
  124. package/dist/src/services/chatRecordingService.js.map +1 -0
  125. package/dist/src/services/chatRecordingService.test.d.ts +6 -0
  126. package/dist/src/services/chatRecordingService.test.js +288 -0
  127. package/dist/src/services/chatRecordingService.test.js.map +1 -0
  128. package/dist/src/services/fileSystemService.d.ts +31 -0
  129. package/dist/src/services/fileSystemService.js +18 -0
  130. package/dist/src/services/fileSystemService.js.map +1 -0
  131. package/dist/src/services/fileSystemService.test.d.ts +6 -0
  132. package/dist/src/services/fileSystemService.test.js +41 -0
  133. package/dist/src/services/fileSystemService.test.js.map +1 -0
  134. package/dist/src/services/loopDetectionService.js +19 -16
  135. package/dist/src/services/loopDetectionService.js.map +1 -1
  136. package/dist/src/services/loopDetectionService.test.js +191 -0
  137. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  138. package/dist/src/services/shellExecutionService.js +29 -9
  139. package/dist/src/services/shellExecutionService.js.map +1 -1
  140. package/dist/src/services/shellExecutionService.test.js +21 -3
  141. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  142. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +78 -9
  143. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +316 -205
  144. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  145. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +17 -0
  146. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +342 -0
  147. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
  148. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +14 -2
  149. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +32 -9
  150. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  151. package/dist/src/telemetry/constants.d.ts +2 -0
  152. package/dist/src/telemetry/constants.js +2 -0
  153. package/dist/src/telemetry/constants.js.map +1 -1
  154. package/dist/src/telemetry/index.d.ts +2 -2
  155. package/dist/src/telemetry/index.js +2 -2
  156. package/dist/src/telemetry/index.js.map +1 -1
  157. package/dist/src/telemetry/integration.test.circular.js +1 -0
  158. package/dist/src/telemetry/integration.test.circular.js.map +1 -1
  159. package/dist/src/telemetry/loggers.d.ts +4 -1
  160. package/dist/src/telemetry/loggers.js +55 -6
  161. package/dist/src/telemetry/loggers.js.map +1 -1
  162. package/dist/src/telemetry/loggers.test.circular.js +7 -2
  163. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  164. package/dist/src/telemetry/loggers.test.js +43 -8
  165. package/dist/src/telemetry/loggers.test.js.map +1 -1
  166. package/dist/src/telemetry/metrics.d.ts +7 -2
  167. package/dist/src/telemetry/metrics.js +26 -6
  168. package/dist/src/telemetry/metrics.js.map +1 -1
  169. package/dist/src/telemetry/metrics.test.js +81 -1
  170. package/dist/src/telemetry/metrics.test.js.map +1 -1
  171. package/dist/src/telemetry/sdk.d.ts +1 -1
  172. package/dist/src/telemetry/sdk.js +77 -41
  173. package/dist/src/telemetry/sdk.js.map +1 -1
  174. package/dist/src/telemetry/sdk.test.d.ts +6 -0
  175. package/dist/src/telemetry/sdk.test.js +82 -0
  176. package/dist/src/telemetry/sdk.test.js.map +1 -0
  177. package/dist/src/telemetry/telemetry.test.js +2 -4
  178. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  179. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  180. package/dist/src/telemetry/tool-call-decision.js +29 -0
  181. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  182. package/dist/src/telemetry/types.d.ts +55 -21
  183. package/dist/src/telemetry/types.js +83 -43
  184. package/dist/src/telemetry/types.js.map +1 -1
  185. package/dist/src/telemetry/uiTelemetry.d.ts +8 -1
  186. package/dist/src/telemetry/uiTelemetry.js +17 -2
  187. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  188. package/dist/src/telemetry/uiTelemetry.test.js +57 -10
  189. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  190. package/dist/src/test-utils/config.d.ts +16 -0
  191. package/dist/src/test-utils/config.js +32 -0
  192. package/dist/src/test-utils/config.js.map +1 -0
  193. package/dist/src/test-utils/tools.d.ts +44 -0
  194. package/dist/src/test-utils/tools.js +105 -0
  195. package/dist/src/test-utils/tools.js.map +1 -0
  196. package/dist/src/tools/diffOptions.d.ts +2 -0
  197. package/dist/src/tools/diffOptions.js +28 -0
  198. package/dist/src/tools/diffOptions.js.map +1 -1
  199. package/dist/src/tools/diffOptions.test.d.ts +6 -0
  200. package/dist/src/tools/diffOptions.test.js +119 -0
  201. package/dist/src/tools/diffOptions.test.js.map +1 -0
  202. package/dist/src/tools/edit.d.ts +10 -34
  203. package/dist/src/tools/edit.js +152 -136
  204. package/dist/src/tools/edit.js.map +1 -1
  205. package/dist/src/tools/edit.test.js +125 -51
  206. package/dist/src/tools/edit.test.js.map +1 -1
  207. package/dist/src/tools/glob.d.ts +4 -11
  208. package/dist/src/tools/glob.js +87 -91
  209. package/dist/src/tools/glob.js.map +1 -1
  210. package/dist/src/tools/glob.test.js +42 -12
  211. package/dist/src/tools/glob.test.js.map +1 -1
  212. package/dist/src/tools/grep.d.ts +4 -36
  213. package/dist/src/tools/grep.js +107 -84
  214. package/dist/src/tools/grep.js.map +1 -1
  215. package/dist/src/tools/grep.test.js +40 -23
  216. package/dist/src/tools/grep.test.js.map +1 -1
  217. package/dist/src/tools/ls.d.ts +4 -23
  218. package/dist/src/tools/ls.js +77 -79
  219. package/dist/src/tools/ls.js.map +1 -1
  220. package/dist/src/tools/ls.test.js +62 -34
  221. package/dist/src/tools/ls.test.js.map +1 -1
  222. package/dist/src/tools/mcp-client-manager.d.ts +38 -0
  223. package/dist/src/tools/mcp-client-manager.js +74 -0
  224. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  225. package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  226. package/dist/src/tools/mcp-client-manager.test.js +39 -0
  227. package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
  228. package/dist/src/tools/mcp-client.d.ts +57 -3
  229. package/dist/src/tools/mcp-client.js +235 -10
  230. package/dist/src/tools/mcp-client.js.map +1 -1
  231. package/dist/src/tools/mcp-client.test.js +234 -87
  232. package/dist/src/tools/mcp-client.test.js.map +1 -1
  233. package/dist/src/tools/mcp-tool.d.ts +6 -13
  234. package/dist/src/tools/mcp-tool.js +62 -34
  235. package/dist/src/tools/mcp-tool.js.map +1 -1
  236. package/dist/src/tools/mcp-tool.test.js +118 -59
  237. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  238. package/dist/src/tools/memoryTool.d.ts +10 -14
  239. package/dist/src/tools/memoryTool.js +123 -121
  240. package/dist/src/tools/memoryTool.js.map +1 -1
  241. package/dist/src/tools/memoryTool.test.js +38 -18
  242. package/dist/src/tools/memoryTool.test.js.map +1 -1
  243. package/dist/src/tools/modifiable-tool.d.ts +9 -6
  244. package/dist/src/tools/modifiable-tool.js +6 -3
  245. package/dist/src/tools/modifiable-tool.js.map +1 -1
  246. package/dist/src/tools/modifiable-tool.test.js +12 -12
  247. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  248. package/dist/src/tools/read-file.d.ts +4 -6
  249. package/dist/src/tools/read-file.js +95 -50
  250. package/dist/src/tools/read-file.js.map +1 -1
  251. package/dist/src/tools/read-file.test.js +199 -129
  252. package/dist/src/tools/read-file.test.js.map +1 -1
  253. package/dist/src/tools/read-many-files.d.ts +3 -5
  254. package/dist/src/tools/read-many-files.js +204 -138
  255. package/dist/src/tools/read-many-files.js.map +1 -1
  256. package/dist/src/tools/read-many-files.test.js +197 -33
  257. package/dist/src/tools/read-many-files.test.js.map +1 -1
  258. package/dist/src/tools/shell.d.ts +4 -6
  259. package/dist/src/tools/shell.js +112 -102
  260. package/dist/src/tools/shell.js.map +1 -1
  261. package/dist/src/tools/shell.test.js +55 -28
  262. package/dist/src/tools/shell.test.js.map +1 -1
  263. package/dist/src/tools/tool-error.d.ts +5 -0
  264. package/dist/src/tools/tool-error.js +5 -0
  265. package/dist/src/tools/tool-error.js.map +1 -1
  266. package/dist/src/tools/tool-registry.d.ts +25 -22
  267. package/dist/src/tools/tool-registry.js +100 -116
  268. package/dist/src/tools/tool-registry.js.map +1 -1
  269. package/dist/src/tools/tool-registry.test.js +29 -212
  270. package/dist/src/tools/tool-registry.test.js.map +1 -1
  271. package/dist/src/tools/tools.d.ts +137 -92
  272. package/dist/src/tools/tools.js +188 -61
  273. package/dist/src/tools/tools.js.map +1 -1
  274. package/dist/src/tools/tools.test.d.ts +6 -0
  275. package/dist/src/tools/tools.test.js +206 -0
  276. package/dist/src/tools/tools.test.js.map +1 -0
  277. package/dist/src/tools/web-fetch.d.ts +4 -7
  278. package/dist/src/tools/web-fetch.js +58 -64
  279. package/dist/src/tools/web-fetch.js.map +1 -1
  280. package/dist/src/tools/web-fetch.test.js +8 -4
  281. package/dist/src/tools/web-fetch.test.js.map +1 -1
  282. package/dist/src/tools/web-search.d.ts +4 -5
  283. package/dist/src/tools/web-search.js +47 -51
  284. package/dist/src/tools/web-search.js.map +1 -1
  285. package/dist/src/tools/web-search.test.d.ts +6 -0
  286. package/dist/src/tools/web-search.test.js +139 -0
  287. package/dist/src/tools/web-search.test.js.map +1 -0
  288. package/dist/src/tools/write-file.d.ts +20 -11
  289. package/dist/src/tools/write-file.js +197 -142
  290. package/dist/src/tools/write-file.js.map +1 -1
  291. package/dist/src/tools/write-file.test.js +156 -96
  292. package/dist/src/tools/write-file.test.js.map +1 -1
  293. package/dist/src/utils/bfsFileSearch.test.js +28 -56
  294. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  295. package/dist/src/utils/browser.js +4 -3
  296. package/dist/src/utils/browser.js.map +1 -1
  297. package/dist/src/utils/editCorrector.js +21 -22
  298. package/dist/src/utils/editCorrector.js.map +1 -1
  299. package/dist/src/utils/editor.d.ts +1 -1
  300. package/dist/src/utils/editor.js +14 -6
  301. package/dist/src/utils/editor.js.map +1 -1
  302. package/dist/src/utils/editor.test.js +48 -16
  303. package/dist/src/utils/editor.test.js.map +1 -1
  304. package/dist/src/utils/environmentContext.d.ts +21 -0
  305. package/dist/src/utils/environmentContext.js +90 -0
  306. package/dist/src/utils/environmentContext.js.map +1 -0
  307. package/dist/src/utils/environmentContext.test.d.ts +6 -0
  308. package/dist/src/utils/environmentContext.test.js +140 -0
  309. package/dist/src/utils/environmentContext.test.js.map +1 -0
  310. package/dist/src/utils/errorParsing.d.ts +8 -0
  311. package/dist/src/utils/errorParsing.js +93 -0
  312. package/dist/src/utils/errorParsing.js.map +1 -0
  313. package/dist/src/utils/errorParsing.test.d.ts +6 -0
  314. package/dist/src/utils/errorParsing.test.js +172 -0
  315. package/dist/src/utils/errorParsing.test.js.map +1 -0
  316. package/dist/src/utils/fileUtils.d.ts +9 -1
  317. package/dist/src/utils/fileUtils.js +18 -15
  318. package/dist/src/utils/fileUtils.js.map +1 -1
  319. package/dist/src/utils/fileUtils.test.js +24 -22
  320. package/dist/src/utils/fileUtils.test.js.map +1 -1
  321. package/dist/src/utils/filesearch/crawlCache.d.ts +25 -0
  322. package/dist/src/utils/filesearch/crawlCache.js +57 -0
  323. package/dist/src/utils/filesearch/crawlCache.js.map +1 -0
  324. package/dist/src/utils/filesearch/crawlCache.test.d.ts +6 -0
  325. package/dist/src/utils/filesearch/crawlCache.test.js +103 -0
  326. package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -0
  327. package/dist/src/utils/filesearch/crawler.d.ts +15 -0
  328. package/dist/src/utils/filesearch/crawler.js +50 -0
  329. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  330. package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
  331. package/dist/src/utils/filesearch/crawler.test.js +468 -0
  332. package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
  333. package/dist/src/utils/filesearch/fileSearch.d.ts +37 -0
  334. package/dist/src/utils/filesearch/fileSearch.js +186 -0
  335. package/dist/src/utils/filesearch/fileSearch.js.map +1 -0
  336. package/dist/src/utils/filesearch/fileSearch.test.d.ts +6 -0
  337. package/dist/src/utils/filesearch/fileSearch.test.js +552 -0
  338. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -0
  339. package/dist/src/utils/filesearch/ignore.d.ts +42 -0
  340. package/dist/src/utils/filesearch/ignore.js +106 -0
  341. package/dist/src/utils/filesearch/ignore.js.map +1 -0
  342. package/dist/src/utils/filesearch/ignore.test.d.ts +6 -0
  343. package/dist/src/utils/filesearch/ignore.test.js +144 -0
  344. package/dist/src/utils/filesearch/ignore.test.js.map +1 -0
  345. package/dist/src/utils/filesearch/result-cache.d.ts +33 -0
  346. package/dist/src/utils/filesearch/result-cache.js +59 -0
  347. package/dist/src/utils/filesearch/result-cache.js.map +1 -0
  348. package/dist/src/utils/filesearch/result-cache.test.d.ts +6 -0
  349. package/dist/src/utils/filesearch/result-cache.test.js +46 -0
  350. package/dist/src/utils/filesearch/result-cache.test.js.map +1 -0
  351. package/dist/src/utils/flashFallback.integration.test.js +0 -2
  352. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  353. package/dist/src/utils/memoryDiscovery.js +7 -4
  354. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  355. package/dist/src/utils/memoryDiscovery.test.js +3 -2
  356. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  357. package/dist/src/utils/memoryImportProcessor.js +3 -7
  358. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  359. package/dist/src/utils/memoryImportProcessor.test.js +17 -20
  360. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  361. package/dist/src/utils/nextSpeakerChecker.js +5 -6
  362. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  363. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  364. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  365. package/dist/src/utils/paths.d.ts +7 -0
  366. package/dist/src/utils/paths.js +15 -0
  367. package/dist/src/utils/paths.js.map +1 -1
  368. package/dist/src/utils/paths.test.js +74 -2
  369. package/dist/src/utils/paths.test.js.map +1 -1
  370. package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
  371. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  372. package/dist/src/utils/schemaValidator.d.ts +1 -8
  373. package/dist/src/utils/schemaValidator.js +1 -32
  374. package/dist/src/utils/schemaValidator.js.map +1 -1
  375. package/dist/src/utils/secure-browser-launcher.js +4 -3
  376. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  377. package/dist/src/utils/shell-utils.d.ts +39 -0
  378. package/dist/src/utils/shell-utils.js +72 -2
  379. package/dist/src/utils/shell-utils.js.map +1 -1
  380. package/dist/src/utils/shell-utils.test.js +132 -4
  381. package/dist/src/utils/shell-utils.test.js.map +1 -1
  382. package/dist/src/utils/systemEncoding.js +1 -1
  383. package/dist/src/utils/systemEncoding.js.map +1 -1
  384. package/dist/src/utils/systemEncoding.test.js +23 -23
  385. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  386. package/dist/src/utils/user_account.js +58 -48
  387. package/dist/src/utils/user_account.js.map +1 -1
  388. package/dist/src/utils/user_account.test.js +76 -9
  389. package/dist/src/utils/user_account.test.js.map +1 -1
  390. package/dist/src/utils/workspaceContext.d.ts +22 -7
  391. package/dist/src/utils/workspaceContext.js +81 -55
  392. package/dist/src/utils/workspaceContext.js.map +1 -1
  393. package/dist/src/utils/workspaceContext.test.js +221 -137
  394. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  395. package/dist/tsconfig.tsbuildinfo +1 -1
  396. package/package.json +13 -3
  397. package/dist/src/core/modelCheck.d.ts +0 -14
  398. package/dist/src/core/modelCheck.js +0 -62
  399. package/dist/src/core/modelCheck.js.map +0 -1
@@ -4,7 +4,8 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, beforeEach, afterEach, vi, } from 'vitest';
7
- import { WriteFileTool } from './write-file.js';
7
+ import { getCorrectedFileContent, WriteFileTool, } from './write-file.js';
8
+ import { ToolErrorType } from './tool-error.js';
8
9
  import { ToolConfirmationOutcome, } from './tools.js';
9
10
  import { ApprovalMode } from '../config/config.js';
10
11
  import path from 'path';
@@ -13,6 +14,7 @@ import os from 'os';
13
14
  import { GeminiClient } from '../core/client.js';
14
15
  import { ensureCorrectEdit, ensureCorrectFileContent, } from '../utils/editCorrector.js';
15
16
  import { createMockWorkspaceContext } from '../test-utils/mockWorkspaceContext.js';
17
+ import { StandardFileSystemService } from '../services/fileSystemService.js';
16
18
  const rootDir = path.resolve(os.tmpdir(), 'gemini-cli-test-root');
17
19
  // --- MOCKS ---
18
20
  vi.mock('../core/client.js');
@@ -24,11 +26,15 @@ const mockEnsureCorrectFileContent = vi.fn();
24
26
  vi.mocked(ensureCorrectEdit).mockImplementation(mockEnsureCorrectEdit);
25
27
  vi.mocked(ensureCorrectFileContent).mockImplementation(mockEnsureCorrectFileContent);
26
28
  // Mock Config
29
+ const fsService = new StandardFileSystemService();
27
30
  const mockConfigInternal = {
28
31
  getTargetDir: () => rootDir,
29
32
  getApprovalMode: vi.fn(() => ApprovalMode.DEFAULT),
30
33
  setApprovalMode: vi.fn(),
31
34
  getGeminiClient: vi.fn(), // Initialize as a plain mock function
35
+ getFileSystemService: () => fsService,
36
+ getIdeClient: vi.fn(),
37
+ getIdeMode: vi.fn(() => false),
32
38
  getWorkspaceContext: () => createMockWorkspaceContext(rootDir),
33
39
  getApiKey: () => 'test-key',
34
40
  getModel: () => 'test-model',
@@ -70,6 +76,14 @@ describe('WriteFileTool', () => {
70
76
  vi.mocked(ensureCorrectFileContent).mockImplementation(mockEnsureCorrectFileContent);
71
77
  // Now that mockGeminiClientInstance is initialized, set the mock implementation for getGeminiClient
72
78
  mockConfigInternal.getGeminiClient.mockReturnValue(mockGeminiClientInstance);
79
+ mockConfigInternal.getIdeClient.mockReturnValue({
80
+ openDiff: vi.fn(),
81
+ closeDiff: vi.fn(),
82
+ getIdeContext: vi.fn(),
83
+ subscribeToIdeContext: vi.fn(),
84
+ isCodeTrackerEnabled: vi.fn(),
85
+ getTrackedCode: vi.fn(),
86
+ });
73
87
  tool = new WriteFileTool(mockConfig);
74
88
  // Reset mocks before each test
75
89
  mockConfigInternal.getApprovalMode.mockReturnValue(ApprovalMode.DEFAULT);
@@ -104,58 +118,57 @@ describe('WriteFileTool', () => {
104
118
  }
105
119
  vi.clearAllMocks();
106
120
  });
107
- describe('validateToolParams', () => {
108
- it('should return null for valid absolute path within root', () => {
121
+ describe('build', () => {
122
+ it('should return an invocation for a valid absolute path within root', () => {
109
123
  const params = {
110
124
  file_path: path.join(rootDir, 'test.txt'),
111
125
  content: 'hello',
112
126
  };
113
- expect(tool.validateToolParams(params)).toBeNull();
127
+ const invocation = tool.build(params);
128
+ expect(invocation).toBeDefined();
129
+ expect(invocation.params).toEqual(params);
114
130
  });
115
- it('should return error for relative path', () => {
131
+ it('should throw an error for a relative path', () => {
116
132
  const params = { file_path: 'test.txt', content: 'hello' };
117
- expect(tool.validateToolParams(params)).toMatch(/File path must be absolute/);
133
+ expect(() => tool.build(params)).toThrow(/File path must be absolute/);
118
134
  });
119
- it('should return error for path outside root', () => {
135
+ it('should throw an error for a path outside root', () => {
120
136
  const outsidePath = path.resolve(tempDir, 'outside-root.txt');
121
137
  const params = {
122
138
  file_path: outsidePath,
123
139
  content: 'hello',
124
140
  };
125
- const error = tool.validateToolParams(params);
126
- expect(error).toContain('File path must be within one of the workspace directories');
141
+ expect(() => tool.build(params)).toThrow(/File path must be within one of the workspace directories/);
127
142
  });
128
- it('should return error if path is a directory', () => {
143
+ it('should throw an error if path is a directory', () => {
129
144
  const dirAsFilePath = path.join(rootDir, 'a_directory');
130
145
  fs.mkdirSync(dirAsFilePath);
131
146
  const params = {
132
147
  file_path: dirAsFilePath,
133
148
  content: 'hello',
134
149
  };
135
- expect(tool.validateToolParams(params)).toMatch(`Path is a directory, not a file: ${dirAsFilePath}`);
150
+ expect(() => tool.build(params)).toThrow(`Path is a directory, not a file: ${dirAsFilePath}`);
136
151
  });
137
- it('should return error if the content is null', () => {
152
+ it('should throw an error if the content is null', () => {
138
153
  const dirAsFilePath = path.join(rootDir, 'a_directory');
139
154
  fs.mkdirSync(dirAsFilePath);
140
155
  const params = {
141
156
  file_path: dirAsFilePath,
142
157
  content: null,
143
158
  }; // Intentionally non-conforming
144
- expect(tool.validateToolParams(params)).toMatch(`params/content must be string`);
159
+ expect(() => tool.build(params)).toThrow('params/content must be string');
145
160
  });
146
- });
147
- describe('getDescription', () => {
148
- it('should return error if the file_path is empty', () => {
161
+ it('should throw error if the file_path is empty', () => {
149
162
  const dirAsFilePath = path.join(rootDir, 'a_directory');
150
163
  fs.mkdirSync(dirAsFilePath);
151
164
  const params = {
152
165
  file_path: '',
153
166
  content: '',
154
167
  };
155
- expect(tool.getDescription(params)).toMatch(`Model did not provide valid parameters for write file tool, missing or empty "file_path"`);
168
+ expect(() => tool.build(params)).toThrow(`Missing or empty "file_path"`);
156
169
  });
157
170
  });
158
- describe('_getCorrectedFileContent', () => {
171
+ describe('getCorrectedFileContent', () => {
159
172
  it('should call ensureCorrectFileContent for a new file', async () => {
160
173
  const filePath = path.join(rootDir, 'new_corrected_file.txt');
161
174
  const proposedContent = 'Proposed new content.';
@@ -163,8 +176,7 @@ describe('WriteFileTool', () => {
163
176
  const abortSignal = new AbortController().signal;
164
177
  // Ensure the mock is set for this specific test case if needed, or rely on beforeEach
165
178
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent);
166
- // @ts-expect-error _getCorrectedFileContent is private
167
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
179
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
168
180
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
169
181
  expect(mockEnsureCorrectEdit).not.toHaveBeenCalled();
170
182
  expect(result.correctedContent).toBe(correctedContent);
@@ -188,8 +200,7 @@ describe('WriteFileTool', () => {
188
200
  },
189
201
  occurrences: 1,
190
202
  });
191
- // @ts-expect-error _getCorrectedFileContent is private
192
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
203
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
193
204
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, originalContent, {
194
205
  old_string: originalContent,
195
206
  new_string: proposedContent,
@@ -207,13 +218,9 @@ describe('WriteFileTool', () => {
207
218
  const abortSignal = new AbortController().signal;
208
219
  fs.writeFileSync(filePath, 'content', { mode: 0o000 });
209
220
  const readError = new Error('Permission denied');
210
- const originalReadFileSync = fs.readFileSync;
211
- vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
212
- throw readError;
213
- });
214
- // @ts-expect-error _getCorrectedFileContent is private
215
- const result = await tool._getCorrectedFileContent(filePath, proposedContent, abortSignal);
216
- expect(fs.readFileSync).toHaveBeenCalledWith(filePath, 'utf8');
221
+ vi.spyOn(fsService, 'readTextFile').mockImplementationOnce(() => Promise.reject(readError));
222
+ const result = await getCorrectedFileContent(mockConfig, filePath, proposedContent, abortSignal);
223
+ expect(fsService.readTextFile).toHaveBeenCalledWith(filePath);
217
224
  expect(mockEnsureCorrectEdit).not.toHaveBeenCalled();
218
225
  expect(mockEnsureCorrectFileContent).not.toHaveBeenCalled();
219
226
  expect(result.correctedContent).toBe(proposedContent);
@@ -223,35 +230,20 @@ describe('WriteFileTool', () => {
223
230
  message: 'Permission denied',
224
231
  code: undefined,
225
232
  });
226
- vi.spyOn(fs, 'readFileSync').mockImplementation(originalReadFileSync);
227
233
  fs.chmodSync(filePath, 0o600);
228
234
  });
229
235
  });
230
236
  describe('shouldConfirmExecute', () => {
231
237
  const abortSignal = new AbortController().signal;
232
- it('should return false if params are invalid (relative path)', async () => {
233
- const params = { file_path: 'relative.txt', content: 'test' };
234
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
235
- expect(confirmation).toBe(false);
236
- });
237
- it('should return false if params are invalid (outside root)', async () => {
238
- const outsidePath = path.resolve(tempDir, 'outside-root.txt');
239
- const params = { file_path: outsidePath, content: 'test' };
240
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
241
- expect(confirmation).toBe(false);
242
- });
243
238
  it('should return false if _getCorrectedFileContent returns an error', async () => {
244
239
  const filePath = path.join(rootDir, 'confirm_error_file.txt');
245
240
  const params = { file_path: filePath, content: 'test content' };
246
241
  fs.writeFileSync(filePath, 'original', { mode: 0o000 });
247
242
  const readError = new Error('Simulated read error for confirmation');
248
- const originalReadFileSync = fs.readFileSync;
249
- vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
250
- throw readError;
251
- });
252
- const confirmation = await tool.shouldConfirmExecute(params, abortSignal);
243
+ vi.spyOn(fsService, 'readTextFile').mockImplementationOnce(() => Promise.reject(readError));
244
+ const invocation = tool.build(params);
245
+ const confirmation = await invocation.shouldConfirmExecute(abortSignal);
253
246
  expect(confirmation).toBe(false);
254
- vi.spyOn(fs, 'readFileSync').mockImplementation(originalReadFileSync);
255
247
  fs.chmodSync(filePath, 0o600);
256
248
  });
257
249
  it('should request confirmation with diff for a new file (with corrected content)', async () => {
@@ -260,7 +252,8 @@ describe('WriteFileTool', () => {
260
252
  const correctedContent = 'Corrected new content for confirmation.';
261
253
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent); // Ensure this mock is active
262
254
  const params = { file_path: filePath, content: proposedContent };
263
- const confirmation = (await tool.shouldConfirmExecute(params, abortSignal));
255
+ const invocation = tool.build(params);
256
+ const confirmation = (await invocation.shouldConfirmExecute(abortSignal));
264
257
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
265
258
  expect(confirmation).toEqual(expect.objectContaining({
266
259
  title: `Confirm Write: ${path.basename(filePath)}`,
@@ -285,7 +278,8 @@ describe('WriteFileTool', () => {
285
278
  occurrences: 1,
286
279
  });
287
280
  const params = { file_path: filePath, content: proposedContent };
288
- const confirmation = (await tool.shouldConfirmExecute(params, abortSignal));
281
+ const invocation = tool.build(params);
282
+ const confirmation = (await invocation.shouldConfirmExecute(abortSignal));
289
283
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, originalContent, {
290
284
  old_string: originalContent,
291
285
  new_string: proposedContent,
@@ -301,32 +295,22 @@ describe('WriteFileTool', () => {
301
295
  });
302
296
  describe('execute', () => {
303
297
  const abortSignal = new AbortController().signal;
304
- it('should return error if params are invalid (relative path)', async () => {
305
- const params = { file_path: 'relative.txt', content: 'test' };
306
- const result = await tool.execute(params, abortSignal);
307
- expect(result.llmContent).toMatch(/Error: Invalid parameters provided/);
308
- expect(result.returnDisplay).toMatch(/Error: File path must be absolute/);
309
- });
310
- it('should return error if params are invalid (path outside root)', async () => {
311
- const outsidePath = path.resolve(tempDir, 'outside-root.txt');
312
- const params = { file_path: outsidePath, content: 'test' };
313
- const result = await tool.execute(params, abortSignal);
314
- expect(result.llmContent).toMatch(/Error: Invalid parameters provided/);
315
- expect(result.returnDisplay).toContain('Error: File path must be within one of the workspace directories');
316
- });
317
298
  it('should return error if _getCorrectedFileContent returns an error during execute', async () => {
318
299
  const filePath = path.join(rootDir, 'execute_error_file.txt');
319
300
  const params = { file_path: filePath, content: 'test content' };
320
301
  fs.writeFileSync(filePath, 'original', { mode: 0o000 });
321
- const readError = new Error('Simulated read error for execute');
322
- const originalReadFileSync = fs.readFileSync;
323
- vi.spyOn(fs, 'readFileSync').mockImplementationOnce(() => {
324
- throw readError;
302
+ vi.spyOn(fsService, 'readTextFile').mockImplementationOnce(() => {
303
+ const readError = new Error('Simulated read error for execute');
304
+ return Promise.reject(readError);
325
305
  });
326
- const result = await tool.execute(params, abortSignal);
327
- expect(result.llmContent).toMatch(/Error checking existing file/);
306
+ const invocation = tool.build(params);
307
+ const result = await invocation.execute(abortSignal);
308
+ expect(result.llmContent).toContain('Error checking existing file');
328
309
  expect(result.returnDisplay).toMatch(/Error checking existing file: Simulated read error for execute/);
329
- vi.spyOn(fs, 'readFileSync').mockImplementation(originalReadFileSync);
310
+ expect(result.error).toEqual({
311
+ message: 'Error checking existing file: Simulated read error for execute',
312
+ type: ToolErrorType.FILE_WRITE_FAILURE,
313
+ });
330
314
  fs.chmodSync(filePath, 0o600);
331
315
  });
332
316
  it('should write a new file with corrected content and return diff', async () => {
@@ -335,15 +319,19 @@ describe('WriteFileTool', () => {
335
319
  const correctedContent = 'Corrected new content for execute.';
336
320
  mockEnsureCorrectFileContent.mockResolvedValue(correctedContent);
337
321
  const params = { file_path: filePath, content: proposedContent };
338
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
339
- if (typeof confirmDetails === 'object' && confirmDetails.onConfirm) {
322
+ const invocation = tool.build(params);
323
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
324
+ if (typeof confirmDetails === 'object' &&
325
+ 'onConfirm' in confirmDetails &&
326
+ confirmDetails.onConfirm) {
340
327
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
341
328
  }
342
- const result = await tool.execute(params, abortSignal);
329
+ const result = await invocation.execute(abortSignal);
343
330
  expect(mockEnsureCorrectFileContent).toHaveBeenCalledWith(proposedContent, mockGeminiClientInstance, abortSignal);
344
331
  expect(result.llmContent).toMatch(/Successfully created and wrote to new file/);
345
332
  expect(fs.existsSync(filePath)).toBe(true);
346
- expect(fs.readFileSync(filePath, 'utf8')).toBe(correctedContent);
333
+ const writtenContent = await fsService.readTextFile(filePath);
334
+ expect(writtenContent).toBe(correctedContent);
347
335
  const display = result.returnDisplay;
348
336
  expect(display.fileName).toBe('execute_new_corrected_file.txt');
349
337
  expect(display.fileDiff).toMatch(/--- execute_new_corrected_file.txt\tOriginal/);
@@ -365,18 +353,22 @@ describe('WriteFileTool', () => {
365
353
  occurrences: 1,
366
354
  });
367
355
  const params = { file_path: filePath, content: proposedContent };
368
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
369
- if (typeof confirmDetails === 'object' && confirmDetails.onConfirm) {
356
+ const invocation = tool.build(params);
357
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
358
+ if (typeof confirmDetails === 'object' &&
359
+ 'onConfirm' in confirmDetails &&
360
+ confirmDetails.onConfirm) {
370
361
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
371
362
  }
372
- const result = await tool.execute(params, abortSignal);
363
+ const result = await invocation.execute(abortSignal);
373
364
  expect(mockEnsureCorrectEdit).toHaveBeenCalledWith(filePath, initialContent, {
374
365
  old_string: initialContent,
375
366
  new_string: proposedContent,
376
367
  file_path: filePath,
377
368
  }, mockGeminiClientInstance, abortSignal);
378
369
  expect(result.llmContent).toMatch(/Successfully overwrote file/);
379
- expect(fs.readFileSync(filePath, 'utf8')).toBe(correctedProposedContent);
370
+ const writtenContent = await fsService.readTextFile(filePath);
371
+ expect(writtenContent).toBe(correctedProposedContent);
380
372
  const display = result.returnDisplay;
381
373
  expect(display.fileName).toBe('execute_existing_corrected_file.txt');
382
374
  expect(display.fileDiff).toMatch(initialContent.replace(/[.*+?^${}()|[\\]\\]/g, '\\$&'));
@@ -388,12 +380,15 @@ describe('WriteFileTool', () => {
388
380
  const content = 'Content in new directory';
389
381
  mockEnsureCorrectFileContent.mockResolvedValue(content); // Ensure this mock is active
390
382
  const params = { file_path: filePath, content };
383
+ const invocation = tool.build(params);
391
384
  // Simulate confirmation if your logic requires it before execute, or remove if not needed for this path
392
- const confirmDetails = await tool.shouldConfirmExecute(params, abortSignal);
393
- if (typeof confirmDetails === 'object' && confirmDetails.onConfirm) {
385
+ const confirmDetails = await invocation.shouldConfirmExecute(abortSignal);
386
+ if (typeof confirmDetails === 'object' &&
387
+ 'onConfirm' in confirmDetails &&
388
+ confirmDetails.onConfirm) {
394
389
  await confirmDetails.onConfirm(ToolConfirmationOutcome.ProceedOnce);
395
390
  }
396
- await tool.execute(params, abortSignal);
391
+ await invocation.execute(abortSignal);
397
392
  expect(fs.existsSync(dirPath)).toBe(true);
398
393
  expect(fs.statSync(dirPath).isDirectory()).toBe(true);
399
394
  expect(fs.existsSync(filePath)).toBe(true);
@@ -408,7 +403,8 @@ describe('WriteFileTool', () => {
408
403
  content,
409
404
  modified_by_user: true,
410
405
  };
411
- const result = await tool.execute(params, abortSignal);
406
+ const invocation = tool.build(params);
407
+ const result = await invocation.execute(abortSignal);
412
408
  expect(result.llmContent).toMatch(/User modified the `content`/);
413
409
  });
414
410
  it('should not include modification message when proposed content is not modified', async () => {
@@ -420,7 +416,8 @@ describe('WriteFileTool', () => {
420
416
  content,
421
417
  modified_by_user: false,
422
418
  };
423
- const result = await tool.execute(params, abortSignal);
419
+ const invocation = tool.build(params);
420
+ const result = await invocation.execute(abortSignal);
424
421
  expect(result.llmContent).not.toMatch(/User modified the `content`/);
425
422
  });
426
423
  it('should not include modification message when modified_by_user is not provided', async () => {
@@ -431,7 +428,8 @@ describe('WriteFileTool', () => {
431
428
  file_path: filePath,
432
429
  content,
433
430
  };
434
- const result = await tool.execute(params, abortSignal);
431
+ const invocation = tool.build(params);
432
+ const result = await invocation.execute(abortSignal);
435
433
  expect(result.llmContent).not.toMatch(/User modified the `content`/);
436
434
  });
437
435
  });
@@ -441,26 +439,88 @@ describe('WriteFileTool', () => {
441
439
  file_path: path.join(rootDir, 'file.txt'),
442
440
  content: 'test content',
443
441
  };
444
- expect(tool.validateToolParams(params)).toBeNull();
442
+ expect(() => tool.build(params)).not.toThrow();
445
443
  });
446
444
  it('should reject paths outside workspace root', () => {
447
445
  const params = {
448
446
  file_path: '/etc/passwd',
449
447
  content: 'malicious',
450
448
  };
451
- const error = tool.validateToolParams(params);
452
- expect(error).toContain('File path must be within one of the workspace directories');
453
- expect(error).toContain(rootDir);
449
+ expect(() => tool.build(params)).toThrow(/File path must be within one of the workspace directories/);
454
450
  });
455
- it('should provide clear error message with workspace directories', () => {
456
- const outsidePath = path.join(tempDir, 'outside-root.txt');
457
- const params = {
458
- file_path: outsidePath,
459
- content: 'test',
460
- };
461
- const error = tool.validateToolParams(params);
462
- expect(error).toContain('File path must be within one of the workspace directories');
463
- expect(error).toContain(rootDir);
451
+ });
452
+ describe('specific error types for write failures', () => {
453
+ const abortSignal = new AbortController().signal;
454
+ it('should return PERMISSION_DENIED error when write fails with EACCES', async () => {
455
+ const filePath = path.join(rootDir, 'permission_denied_file.txt');
456
+ const content = 'test content';
457
+ // Mock FileSystemService writeTextFile to throw EACCES error
458
+ vi.spyOn(fsService, 'writeTextFile').mockImplementationOnce(() => {
459
+ const error = new Error('Permission denied');
460
+ error.code = 'EACCES';
461
+ return Promise.reject(error);
462
+ });
463
+ const params = { file_path: filePath, content };
464
+ const invocation = tool.build(params);
465
+ const result = await invocation.execute(abortSignal);
466
+ expect(result.error?.type).toBe(ToolErrorType.PERMISSION_DENIED);
467
+ expect(result.llmContent).toContain(`Permission denied writing to file: ${filePath} (EACCES)`);
468
+ expect(result.returnDisplay).toContain(`Permission denied writing to file: ${filePath} (EACCES)`);
469
+ });
470
+ it('should return NO_SPACE_LEFT error when write fails with ENOSPC', async () => {
471
+ const filePath = path.join(rootDir, 'no_space_file.txt');
472
+ const content = 'test content';
473
+ // Mock FileSystemService writeTextFile to throw ENOSPC error
474
+ vi.spyOn(fsService, 'writeTextFile').mockImplementationOnce(() => {
475
+ const error = new Error('No space left on device');
476
+ error.code = 'ENOSPC';
477
+ return Promise.reject(error);
478
+ });
479
+ const params = { file_path: filePath, content };
480
+ const invocation = tool.build(params);
481
+ const result = await invocation.execute(abortSignal);
482
+ expect(result.error?.type).toBe(ToolErrorType.NO_SPACE_LEFT);
483
+ expect(result.llmContent).toContain(`No space left on device: ${filePath} (ENOSPC)`);
484
+ expect(result.returnDisplay).toContain(`No space left on device: ${filePath} (ENOSPC)`);
485
+ });
486
+ it('should return TARGET_IS_DIRECTORY error when write fails with EISDIR', async () => {
487
+ const dirPath = path.join(rootDir, 'test_directory');
488
+ const content = 'test content';
489
+ // Mock fs.existsSync to return false to bypass validation
490
+ const originalExistsSync = fs.existsSync;
491
+ vi.spyOn(fs, 'existsSync').mockImplementation((path) => {
492
+ if (path === dirPath) {
493
+ return false; // Pretend directory doesn't exist to bypass validation
494
+ }
495
+ return originalExistsSync(path);
496
+ });
497
+ // Mock FileSystemService writeTextFile to throw EISDIR error
498
+ vi.spyOn(fsService, 'writeTextFile').mockImplementationOnce(() => {
499
+ const error = new Error('Is a directory');
500
+ error.code = 'EISDIR';
501
+ return Promise.reject(error);
502
+ });
503
+ const params = { file_path: dirPath, content };
504
+ const invocation = tool.build(params);
505
+ const result = await invocation.execute(abortSignal);
506
+ expect(result.error?.type).toBe(ToolErrorType.TARGET_IS_DIRECTORY);
507
+ expect(result.llmContent).toContain(`Target is a directory, not a file: ${dirPath} (EISDIR)`);
508
+ expect(result.returnDisplay).toContain(`Target is a directory, not a file: ${dirPath} (EISDIR)`);
509
+ vi.spyOn(fs, 'existsSync').mockImplementation(originalExistsSync);
510
+ });
511
+ it('should return FILE_WRITE_FAILURE for generic write errors', async () => {
512
+ const filePath = path.join(rootDir, 'generic_error_file.txt');
513
+ const content = 'test content';
514
+ // Ensure fs.existsSync is not mocked for this test
515
+ vi.restoreAllMocks();
516
+ // Mock FileSystemService writeTextFile to throw generic error
517
+ vi.spyOn(fsService, 'writeTextFile').mockImplementationOnce(() => Promise.reject(new Error('Generic write error')));
518
+ const params = { file_path: filePath, content };
519
+ const invocation = tool.build(params);
520
+ const result = await invocation.execute(abortSignal);
521
+ expect(result.error?.type).toBe(ToolErrorType.FILE_WRITE_FAILURE);
522
+ expect(result.llmContent).toContain('Error writing to file: Generic write error');
523
+ expect(result.returnDisplay).toContain('Error writing to file: Generic write error');
464
524
  });
465
525
  });
466
526
  });
@@ -1 +1 @@
1
- {"version":3,"file":"write-file.test.js","sourceRoot":"","sources":["../../../src/tools/write-file.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-file.test.js","sourceRoot":"","sources":["../../../src/tools/write-file.test.ts"],"names":[],"mappings":"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"}