@machina.ai/cell-cli-core 1.5.5-rc1 → 1.6.1-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 (347) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.js +4 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +5 -1
  5. package/dist/src/code_assist/converter.d.ts +1 -0
  6. package/dist/src/code_assist/converter.js +1 -0
  7. package/dist/src/code_assist/converter.js.map +1 -1
  8. package/dist/src/code_assist/converter.test.js +10 -0
  9. package/dist/src/code_assist/converter.test.js.map +1 -1
  10. package/dist/src/code_assist/oauth-credential-storage.d.ts +5 -7
  11. package/dist/src/code_assist/oauth-credential-storage.js +8 -11
  12. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  13. package/dist/src/code_assist/oauth-credential-storage.test.js +35 -33
  14. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  15. package/dist/src/code_assist/oauth2.js +28 -2
  16. package/dist/src/code_assist/oauth2.js.map +1 -1
  17. package/dist/src/code_assist/oauth2.test.js +674 -536
  18. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  19. package/dist/src/config/config.d.ts +37 -1
  20. package/dist/src/config/config.js +73 -16
  21. package/dist/src/config/config.js.map +1 -1
  22. package/dist/src/config/config.test.js +104 -16
  23. package/dist/src/config/config.test.js.map +1 -1
  24. package/dist/src/config/models.d.ts +15 -0
  25. package/dist/src/config/models.js +27 -0
  26. package/dist/src/config/models.js.map +1 -1
  27. package/dist/src/config/models.test.d.ts +6 -0
  28. package/dist/src/config/models.test.js +55 -0
  29. package/dist/src/config/models.test.js.map +1 -0
  30. package/dist/src/confirmation-bus/index.d.ts +7 -0
  31. package/dist/src/confirmation-bus/index.js +8 -0
  32. package/dist/src/confirmation-bus/index.js.map +1 -0
  33. package/dist/src/confirmation-bus/message-bus.d.ts +17 -0
  34. package/dist/src/confirmation-bus/message-bus.js +81 -0
  35. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  36. package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
  37. package/dist/src/confirmation-bus/message-bus.test.js +164 -0
  38. package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
  39. package/dist/src/confirmation-bus/types.d.ts +38 -0
  40. package/dist/src/confirmation-bus/types.js +15 -0
  41. package/dist/src/confirmation-bus/types.js.map +1 -0
  42. package/dist/src/core/baseLlmClient.d.ts +1 -0
  43. package/dist/src/core/baseLlmClient.js +24 -0
  44. package/dist/src/core/baseLlmClient.js.map +1 -1
  45. package/dist/src/core/baseLlmClient.test.js +63 -0
  46. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  47. package/dist/src/core/client.d.ts +4 -3
  48. package/dist/src/core/client.js +76 -151
  49. package/dist/src/core/client.js.map +1 -1
  50. package/dist/src/core/client.test.js +218 -220
  51. package/dist/src/core/client.test.js.map +1 -1
  52. package/dist/src/core/contentGenerator.d.ts +0 -1
  53. package/dist/src/core/contentGenerator.js +0 -4
  54. package/dist/src/core/contentGenerator.js.map +1 -1
  55. package/dist/src/core/contentGenerator.test.js +0 -3
  56. package/dist/src/core/contentGenerator.test.js.map +1 -1
  57. package/dist/src/core/coreToolScheduler.d.ts +4 -3
  58. package/dist/src/core/coreToolScheduler.js +54 -8
  59. package/dist/src/core/coreToolScheduler.js.map +1 -1
  60. package/dist/src/core/coreToolScheduler.test.js +142 -0
  61. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  62. package/dist/src/core/geminiChat.d.ts +13 -30
  63. package/dist/src/core/geminiChat.js +88 -233
  64. package/dist/src/core/geminiChat.js.map +1 -1
  65. package/dist/src/core/geminiChat.test.js +268 -489
  66. package/dist/src/core/geminiChat.test.js.map +1 -1
  67. package/dist/src/core/loggingContentGenerator.js +5 -5
  68. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  69. package/dist/src/core/nonInteractiveToolExecutor.test.js +49 -0
  70. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  71. package/dist/src/core/subagent.js +1 -1
  72. package/dist/src/core/subagent.js.map +1 -1
  73. package/dist/src/core/subagent.test.js +9 -8
  74. package/dist/src/core/subagent.test.js.map +1 -1
  75. package/dist/src/core/turn.d.ts +2 -1
  76. package/dist/src/core/turn.js +2 -2
  77. package/dist/src/core/turn.js.map +1 -1
  78. package/dist/src/core/turn.test.js +18 -18
  79. package/dist/src/core/turn.test.js.map +1 -1
  80. package/dist/src/generated/git-commit.d.ts +2 -2
  81. package/dist/src/generated/git-commit.js +2 -2
  82. package/dist/src/ide/constants.d.ts +1 -0
  83. package/dist/src/ide/constants.js +1 -0
  84. package/dist/src/ide/constants.js.map +1 -1
  85. package/dist/src/ide/ide-client.d.ts +51 -13
  86. package/dist/src/ide/ide-client.js +184 -37
  87. package/dist/src/ide/ide-client.js.map +1 -1
  88. package/dist/src/ide/ide-client.test.js +86 -15
  89. package/dist/src/ide/ide-client.test.js.map +1 -1
  90. package/dist/src/ide/ide-installer.js +8 -2
  91. package/dist/src/ide/ide-installer.js.map +1 -1
  92. package/dist/src/ide/ide-installer.test.js +13 -2
  93. package/dist/src/ide/ide-installer.test.js.map +1 -1
  94. package/dist/src/ide/ideContext.d.ts +34 -113
  95. package/dist/src/ide/ideContext.js +20 -78
  96. package/dist/src/ide/ideContext.js.map +1 -1
  97. package/dist/src/ide/ideContext.test.js +37 -39
  98. package/dist/src/ide/ideContext.test.js.map +1 -1
  99. package/dist/src/ide/types.d.ts +141 -0
  100. package/dist/src/ide/types.js +73 -0
  101. package/dist/src/ide/types.js.map +1 -1
  102. package/dist/src/index.d.ts +3 -1
  103. package/dist/src/index.js +3 -1
  104. package/dist/src/index.js.map +1 -1
  105. package/dist/src/mcp/oauth-provider.d.ts +1 -0
  106. package/dist/src/mcp/oauth-provider.js +19 -14
  107. package/dist/src/mcp/oauth-provider.js.map +1 -1
  108. package/dist/src/mcp/oauth-provider.test.js +137 -1
  109. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  110. package/dist/src/mcp/oauth-token-storage.d.ts +2 -0
  111. package/dist/src/mcp/oauth-token-storage.js +25 -0
  112. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  113. package/dist/src/mcp/oauth-token-storage.test.js +251 -160
  114. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  115. package/dist/src/mcp/oauth-utils.js +1 -0
  116. package/dist/src/mcp/oauth-utils.js.map +1 -1
  117. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  118. package/dist/src/mcp/token-storage/index.js +12 -0
  119. package/dist/src/mcp/token-storage/index.js.map +1 -0
  120. package/dist/src/output/json-formatter.d.ts +11 -0
  121. package/dist/src/output/json-formatter.js +30 -0
  122. package/dist/src/output/json-formatter.js.map +1 -0
  123. package/dist/src/output/json-formatter.test.d.ts +6 -0
  124. package/dist/src/output/json-formatter.test.js +266 -0
  125. package/dist/src/output/json-formatter.test.js.map +1 -0
  126. package/dist/src/output/types.d.ts +20 -0
  127. package/dist/src/output/types.js +11 -0
  128. package/dist/src/output/types.js.map +1 -0
  129. package/dist/src/policy/index.d.ts +7 -0
  130. package/dist/src/policy/index.js +8 -0
  131. package/dist/src/policy/index.js.map +1 -0
  132. package/dist/src/policy/policy-engine.d.ts +30 -0
  133. package/dist/src/policy/policy-engine.js +83 -0
  134. package/dist/src/policy/policy-engine.js.map +1 -0
  135. package/dist/src/policy/policy-engine.test.d.ts +6 -0
  136. package/dist/src/policy/policy-engine.test.js +470 -0
  137. package/dist/src/policy/policy-engine.test.js.map +1 -0
  138. package/dist/src/policy/stable-stringify.d.ts +58 -0
  139. package/dist/src/policy/stable-stringify.js +122 -0
  140. package/dist/src/policy/stable-stringify.js.map +1 -0
  141. package/dist/src/policy/types.d.ts +47 -0
  142. package/dist/src/policy/types.js +12 -0
  143. package/dist/src/policy/types.js.map +1 -0
  144. package/dist/src/routing/modelRouterService.d.ts +23 -0
  145. package/dist/src/routing/modelRouterService.js +70 -0
  146. package/dist/src/routing/modelRouterService.js.map +1 -0
  147. package/dist/src/routing/modelRouterService.test.d.ts +6 -0
  148. package/dist/src/routing/modelRouterService.test.js +98 -0
  149. package/dist/src/routing/modelRouterService.test.js.map +1 -0
  150. package/dist/src/routing/routingStrategy.d.ts +62 -0
  151. package/dist/src/routing/routingStrategy.js +7 -0
  152. package/dist/src/routing/routingStrategy.js.map +1 -0
  153. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  154. package/dist/src/routing/strategies/classifierStrategy.js +173 -0
  155. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  156. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
  157. package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
  158. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
  159. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  160. package/dist/src/routing/strategies/compositeStrategy.js +67 -0
  161. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  162. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
  163. package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
  164. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
  165. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  166. package/dist/src/routing/strategies/defaultStrategy.js +20 -0
  167. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  168. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
  169. package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
  170. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
  171. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  172. package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
  173. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  174. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
  175. package/dist/src/routing/strategies/fallbackStrategy.test.js +55 -0
  176. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
  177. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  178. package/dist/src/routing/strategies/overrideStrategy.js +28 -0
  179. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  180. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
  181. package/dist/src/routing/strategies/overrideStrategy.test.js +42 -0
  182. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
  183. package/dist/src/services/chatRecordingService.d.ts +2 -1
  184. package/dist/src/services/chatRecordingService.js +3 -3
  185. package/dist/src/services/chatRecordingService.js.map +1 -1
  186. package/dist/src/services/chatRecordingService.test.js +8 -3
  187. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  188. package/dist/src/services/fileDiscoveryService.d.ts +10 -0
  189. package/dist/src/services/fileDiscoveryService.js +31 -17
  190. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  191. package/dist/src/services/gitService.js +9 -12
  192. package/dist/src/services/gitService.js.map +1 -1
  193. package/dist/src/services/gitService.test.js +10 -20
  194. package/dist/src/services/gitService.test.js.map +1 -1
  195. package/dist/src/services/loopDetectionService.d.ts +5 -0
  196. package/dist/src/services/loopDetectionService.js +36 -20
  197. package/dist/src/services/loopDetectionService.js.map +1 -1
  198. package/dist/src/services/loopDetectionService.test.js +41 -12
  199. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  200. package/dist/src/services/shellExecutionService.d.ts +34 -2
  201. package/dist/src/services/shellExecutionService.js +192 -43
  202. package/dist/src/services/shellExecutionService.js.map +1 -1
  203. package/dist/src/services/shellExecutionService.test.js +184 -55
  204. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  205. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +12 -2
  206. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +100 -5
  207. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  208. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +63 -5
  209. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  210. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +13 -2
  211. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +33 -2
  212. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  213. package/dist/src/telemetry/constants.d.ts +6 -0
  214. package/dist/src/telemetry/constants.js +6 -0
  215. package/dist/src/telemetry/constants.js.map +1 -1
  216. package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
  217. package/dist/src/telemetry/gcp-exporters.js +117 -0
  218. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  219. package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
  220. package/dist/src/telemetry/gcp-exporters.test.js +318 -0
  221. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
  222. package/dist/src/telemetry/index.d.ts +3 -2
  223. package/dist/src/telemetry/index.js +3 -2
  224. package/dist/src/telemetry/index.js.map +1 -1
  225. package/dist/src/telemetry/loggers.d.ts +7 -1
  226. package/dist/src/telemetry/loggers.js +97 -7
  227. package/dist/src/telemetry/loggers.js.map +1 -1
  228. package/dist/src/telemetry/loggers.test.js +171 -37
  229. package/dist/src/telemetry/loggers.test.js.map +1 -1
  230. package/dist/src/telemetry/metrics.d.ts +3 -1
  231. package/dist/src/telemetry/metrics.js +32 -3
  232. package/dist/src/telemetry/metrics.js.map +1 -1
  233. package/dist/src/telemetry/metrics.test.js +42 -0
  234. package/dist/src/telemetry/metrics.test.js.map +1 -1
  235. package/dist/src/telemetry/sdk.js +19 -1
  236. package/dist/src/telemetry/sdk.js.map +1 -1
  237. package/dist/src/telemetry/sdk.test.js +95 -0
  238. package/dist/src/telemetry/sdk.test.js.map +1 -1
  239. package/dist/src/telemetry/types.d.ts +54 -3
  240. package/dist/src/telemetry/types.js +79 -3
  241. package/dist/src/telemetry/types.js.map +1 -1
  242. package/dist/src/tools/edit.js +12 -5
  243. package/dist/src/tools/edit.js.map +1 -1
  244. package/dist/src/tools/edit.test.js +120 -9
  245. package/dist/src/tools/edit.test.js.map +1 -1
  246. package/dist/src/tools/glob.d.ts +5 -1
  247. package/dist/src/tools/glob.js +24 -17
  248. package/dist/src/tools/glob.js.map +1 -1
  249. package/dist/src/tools/glob.test.js +51 -0
  250. package/dist/src/tools/glob.test.js.map +1 -1
  251. package/dist/src/tools/ls.js +19 -32
  252. package/dist/src/tools/ls.js.map +1 -1
  253. package/dist/src/tools/ls.test.js +140 -280
  254. package/dist/src/tools/ls.test.js.map +1 -1
  255. package/dist/src/tools/mcp-tool.js +30 -2
  256. package/dist/src/tools/mcp-tool.js.map +1 -1
  257. package/dist/src/tools/mcp-tool.test.js +117 -0
  258. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  259. package/dist/src/tools/read-many-files.d.ts +1 -1
  260. package/dist/src/tools/read-many-files.js +17 -49
  261. package/dist/src/tools/read-many-files.js.map +1 -1
  262. package/dist/src/tools/ripGrep.d.ts +4 -0
  263. package/dist/src/tools/ripGrep.js +11 -1
  264. package/dist/src/tools/ripGrep.js.map +1 -1
  265. package/dist/src/tools/ripGrep.test.js +51 -1
  266. package/dist/src/tools/ripGrep.test.js.map +1 -1
  267. package/dist/src/tools/shell.d.ts +12 -2
  268. package/dist/src/tools/shell.js +20 -27
  269. package/dist/src/tools/shell.js.map +1 -1
  270. package/dist/src/tools/shell.test.js +33 -68
  271. package/dist/src/tools/shell.test.js.map +1 -1
  272. package/dist/src/tools/smart-edit.d.ts +0 -1
  273. package/dist/src/tools/smart-edit.js +11 -18
  274. package/dist/src/tools/smart-edit.js.map +1 -1
  275. package/dist/src/tools/smart-edit.test.js +63 -9
  276. package/dist/src/tools/smart-edit.test.js.map +1 -1
  277. package/dist/src/tools/tool-registry.js +1 -0
  278. package/dist/src/tools/tool-registry.js.map +1 -1
  279. package/dist/src/tools/tools.d.ts +8 -5
  280. package/dist/src/tools/tools.js +9 -2
  281. package/dist/src/tools/tools.js.map +1 -1
  282. package/dist/src/tools/write-file.js +4 -5
  283. package/dist/src/tools/write-file.js.map +1 -1
  284. package/dist/src/tools/write-file.test.js +94 -10
  285. package/dist/src/tools/write-file.test.js.map +1 -1
  286. package/dist/src/utils/bfsFileSearch.js +11 -5
  287. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  288. package/dist/src/utils/editCorrector.d.ts +7 -6
  289. package/dist/src/utils/editCorrector.js +61 -18
  290. package/dist/src/utils/editCorrector.js.map +1 -1
  291. package/dist/src/utils/editCorrector.test.js +30 -79
  292. package/dist/src/utils/editCorrector.test.js.map +1 -1
  293. package/dist/src/utils/editor.js +31 -44
  294. package/dist/src/utils/editor.js.map +1 -1
  295. package/dist/src/utils/editor.test.js +61 -75
  296. package/dist/src/utils/editor.test.js.map +1 -1
  297. package/dist/src/utils/errorParsing.js +2 -2
  298. package/dist/src/utils/errorParsing.js.map +1 -1
  299. package/dist/src/utils/errorParsing.test.js +7 -7
  300. package/dist/src/utils/errorParsing.test.js.map +1 -1
  301. package/dist/src/utils/errors.d.ts +6 -0
  302. package/dist/src/utils/errors.js +10 -0
  303. package/dist/src/utils/errors.js.map +1 -1
  304. package/dist/src/utils/fileUtils.test.js +17 -8
  305. package/dist/src/utils/fileUtils.test.js.map +1 -1
  306. package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
  307. package/dist/src/utils/geminiIgnoreParser.js +61 -0
  308. package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
  309. package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
  310. package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
  311. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
  312. package/dist/src/utils/gitIgnoreParser.d.ts +3 -9
  313. package/dist/src/utils/gitIgnoreParser.js +60 -69
  314. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  315. package/dist/src/utils/gitIgnoreParser.test.js +18 -53
  316. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  317. package/dist/src/utils/installationManager.test.js +1 -1
  318. package/dist/src/utils/installationManager.test.js.map +1 -1
  319. package/dist/src/utils/memoryDiscovery.test.js +12 -6
  320. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  321. package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
  322. package/dist/src/utils/nextSpeakerChecker.js +8 -2
  323. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  324. package/dist/src/utils/nextSpeakerChecker.test.js +40 -33
  325. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  326. package/dist/src/utils/shell-utils.d.ts +5 -0
  327. package/dist/src/utils/shell-utils.js +23 -0
  328. package/dist/src/utils/shell-utils.js.map +1 -1
  329. package/dist/src/utils/terminalSerializer.d.ts +28 -0
  330. package/dist/src/utils/terminalSerializer.js +432 -0
  331. package/dist/src/utils/terminalSerializer.js.map +1 -0
  332. package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
  333. package/dist/src/utils/terminalSerializer.test.js +176 -0
  334. package/dist/src/utils/terminalSerializer.test.js.map +1 -0
  335. package/dist/src/utils/textUtils.d.ts +5 -0
  336. package/dist/src/utils/textUtils.js +14 -0
  337. package/dist/src/utils/textUtils.js.map +1 -1
  338. package/dist/src/utils/textUtils.test.d.ts +6 -0
  339. package/dist/src/utils/textUtils.test.js +59 -0
  340. package/dist/src/utils/textUtils.test.js.map +1 -0
  341. package/dist/src/utils/userAccountManager.test.js +1 -1
  342. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  343. package/dist/tsconfig.tsbuildinfo +1 -1
  344. package/package.json +5 -1
  345. package/dist/src/utils/ide-trust.d.ts +0 -10
  346. package/dist/src/utils/ide-trust.js +0 -14
  347. package/dist/src/utils/ide-trust.js.map +0 -1
@@ -6,15 +6,18 @@
6
6
  import * as fs from 'node:fs';
7
7
  import { isSubpath } from '../utils/paths.js';
8
8
  import { detectIde, getIdeInfo } from '../ide/detect-ide.js';
9
- import { ideContext, IdeDiffAcceptedNotificationSchema, IdeDiffClosedNotificationSchema, CloseDiffResponseSchema, } from './ideContext.js';
10
- import { IdeContextNotificationSchema } from './types.js';
9
+ import { ideContextStore } from './ideContext.js';
10
+ import { IdeContextNotificationSchema, IdeDiffAcceptedNotificationSchema, IdeDiffClosedNotificationSchema, IdeDiffRejectedNotificationSchema, } from './types.js';
11
11
  import { getIdeProcessInfo } from './process-utils.js';
12
12
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
13
13
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
14
14
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
15
+ import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
15
16
  import * as os from 'node:os';
16
17
  import * as path from 'node:path';
17
18
  import { EnvHttpProxyAgent } from 'undici';
19
+ import { ListToolsResultSchema } from '@modelcontextprotocol/sdk/types.js';
20
+ import { IDE_REQUEST_TIMEOUT_MS } from './constants.js';
18
21
  const logger = {
19
22
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
23
  debug: (...args) => console.debug('[DEBUG] [IDEClient]', ...args),
@@ -50,9 +53,17 @@ export class IdeClient {
50
53
  currentIde;
51
54
  currentIdeDisplayName;
52
55
  ideProcessInfo;
56
+ authToken;
53
57
  diffResponses = new Map();
54
58
  statusListeners = new Set();
55
59
  trustChangeListeners = new Set();
60
+ availableTools = [];
61
+ /**
62
+ * A mutex to ensure that only one diff view is open in the IDE at a time.
63
+ * This prevents race conditions and UI issues in IDEs like VSCode that
64
+ * can't handle multiple diff views being opened simultaneously.
65
+ */
66
+ diffMutex = Promise.resolve();
56
67
  constructor() { }
57
68
  static getInstance() {
58
69
  if (!IdeClient.instancePromise) {
@@ -87,6 +98,9 @@ export class IdeClient {
87
98
  }
88
99
  this.setState(IDEConnectionStatus.Connecting);
89
100
  const configFromFile = await this.getConnectionConfigFromFile();
101
+ if (configFromFile?.authToken) {
102
+ this.authToken = configFromFile.authToken;
103
+ }
90
104
  const workspacePath = configFromFile?.workspacePath ??
91
105
  process.env['CELL_CLI_IDE_WORKSPACE_PATH'];
92
106
  const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath, this.currentIdeDisplayName, process.cwd());
@@ -125,54 +139,131 @@ export class IdeClient {
125
139
  this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension in ${this.currentIdeDisplayName}. Please ensure the extension is running. To install the extension, run /ide install.`, true);
126
140
  }
127
141
  /**
128
- * A diff is accepted with any modifications if the user performs one of the
129
- * following actions:
130
- * - Clicks the checkbox icon in the IDE to accept
131
- * - Runs `command+shift+p` > "Gemini CLI: Accept Diff in IDE" to accept
132
- * - Selects "accept" in the CLI UI
133
- * - Saves the file via `ctrl/command+s`
142
+ * Opens a diff view in the IDE, allowing the user to review and accept or
143
+ * reject changes.
144
+ *
145
+ * This method sends a request to the IDE to display a diff between the
146
+ * current content of a file and the new content provided. It then waits for
147
+ * a notification from the IDE indicating that the user has either accepted
148
+ * (potentially with manual edits) or rejected the diff.
134
149
  *
135
- * A diff is rejected if the user performs one of the following actions:
136
- * - Clicks the "x" icon in the IDE
137
- * - Runs "Gemini CLI: Close Diff in IDE"
138
- * - Selects "no" in the CLI UI
139
- * - Closes the file
150
+ * A mutex ensures that only one diff view can be open at a time to prevent
151
+ * race conditions.
152
+ *
153
+ * @param filePath The absolute path to the file to be diffed.
154
+ * @param newContent The proposed new content for the file.
155
+ * @returns A promise that resolves with a `DiffUpdateResult`, indicating
156
+ * whether the diff was 'accepted' or 'rejected' and including the final
157
+ * content if accepted.
140
158
  */
141
159
  async openDiff(filePath, newContent) {
142
- return new Promise((resolve, reject) => {
160
+ const release = await this.acquireMutex();
161
+ const promise = new Promise((resolve, reject) => {
162
+ if (!this.client) {
163
+ // The promise will be rejected, and the finally block below will release the mutex.
164
+ return reject(new Error('IDE client is not connected.'));
165
+ }
143
166
  this.diffResponses.set(filePath, resolve);
144
167
  this.client
145
- ?.callTool({
146
- name: `openDiff`,
147
- arguments: {
148
- filePath,
149
- newContent,
168
+ .request({
169
+ method: 'tools/call',
170
+ params: {
171
+ name: `openDiff`,
172
+ arguments: {
173
+ filePath,
174
+ newContent,
175
+ },
150
176
  },
177
+ }, CallToolResultSchema, { timeout: IDE_REQUEST_TIMEOUT_MS })
178
+ .then((parsedResultData) => {
179
+ if (parsedResultData.isError) {
180
+ const textPart = parsedResultData.content.find((part) => part.type === 'text');
181
+ const errorMessage = textPart?.text ?? `Tool 'openDiff' reported an error.`;
182
+ logger.debug(`Request for openDiff ${filePath} failed with isError:`, errorMessage);
183
+ this.diffResponses.delete(filePath);
184
+ reject(new Error(errorMessage));
185
+ }
151
186
  })
152
187
  .catch((err) => {
153
- logger.debug(`callTool for ${filePath} failed:`, err);
188
+ logger.debug(`Request for openDiff ${filePath} failed:`, err);
189
+ this.diffResponses.delete(filePath);
154
190
  reject(err);
155
191
  });
156
192
  });
193
+ // Ensure the mutex is released only after the diff interaction is complete.
194
+ promise.finally(release);
195
+ return promise;
196
+ }
197
+ /**
198
+ * Acquires a lock to ensure sequential execution of critical sections.
199
+ *
200
+ * This method implements a promise-based mutex. It works by chaining promises.
201
+ * Each call to `acquireMutex` gets the current `diffMutex` promise. It then
202
+ * creates a *new* promise (`newMutex`) that will be resolved when the caller
203
+ * invokes the returned `release` function. The `diffMutex` is immediately
204
+ * updated to this `newMutex`.
205
+ *
206
+ * The method returns a promise that resolves with the `release` function only
207
+ * *after* the *previous* `diffMutex` promise has resolved. This creates a
208
+ * queue where each subsequent operation must wait for the previous one to release
209
+ * the lock.
210
+ *
211
+ * @returns A promise that resolves to a function that must be called to
212
+ * release the lock.
213
+ */
214
+ acquireMutex() {
215
+ let release;
216
+ const newMutex = new Promise((resolve) => {
217
+ release = resolve;
218
+ });
219
+ const oldMutex = this.diffMutex;
220
+ this.diffMutex = newMutex;
221
+ return oldMutex.then(() => release);
157
222
  }
158
223
  async closeDiff(filePath, options) {
159
224
  try {
160
- const result = await this.client?.callTool({
161
- name: `closeDiff`,
162
- arguments: {
163
- filePath,
164
- suppressNotification: options?.suppressNotification,
225
+ if (!this.client) {
226
+ return undefined;
227
+ }
228
+ const resultData = await this.client.request({
229
+ method: 'tools/call',
230
+ params: {
231
+ name: `closeDiff`,
232
+ arguments: {
233
+ filePath,
234
+ suppressNotification: options?.suppressNotification,
235
+ },
165
236
  },
166
- });
167
- if (result) {
168
- const parsed = CloseDiffResponseSchema.parse(result);
169
- return parsed.content;
237
+ }, CallToolResultSchema, { timeout: IDE_REQUEST_TIMEOUT_MS });
238
+ if (!resultData) {
239
+ return undefined;
240
+ }
241
+ if (resultData.isError) {
242
+ const textPart = resultData.content.find((part) => part.type === 'text');
243
+ const errorMessage = textPart?.text ?? `Tool 'closeDiff' reported an error.`;
244
+ logger.debug(`Request for closeDiff ${filePath} failed with isError:`, errorMessage);
245
+ return undefined;
246
+ }
247
+ const textPart = resultData.content.find((part) => part.type === 'text');
248
+ if (textPart?.text) {
249
+ try {
250
+ const parsedJson = JSON.parse(textPart.text);
251
+ if (parsedJson && typeof parsedJson.content === 'string') {
252
+ return parsedJson.content;
253
+ }
254
+ if (parsedJson && parsedJson.content === null) {
255
+ return undefined;
256
+ }
257
+ }
258
+ catch (_e) {
259
+ logger.debug(`Invalid JSON in closeDiff response for ${filePath}:`, textPart.text);
260
+ }
170
261
  }
171
262
  }
172
263
  catch (err) {
173
- logger.debug(`callTool for ${filePath} failed:`, err);
264
+ logger.debug(`Request for closeDiff ${filePath} failed:`, err);
174
265
  }
175
- return;
266
+ return undefined;
176
267
  }
177
268
  // Closes the diff. Instead of waiting for a notification,
178
269
  // manually resolves the diff resolver as the desired outcome.
@@ -213,6 +304,41 @@ export class IdeClient {
213
304
  getDetectedIdeDisplayName() {
214
305
  return this.currentIdeDisplayName;
215
306
  }
307
+ isDiffingEnabled() {
308
+ return (!!this.client &&
309
+ this.state.status === IDEConnectionStatus.Connected &&
310
+ this.availableTools.includes('openDiff') &&
311
+ this.availableTools.includes('closeDiff'));
312
+ }
313
+ async discoverTools() {
314
+ if (!this.client) {
315
+ return;
316
+ }
317
+ try {
318
+ logger.debug('Discovering tools from IDE...');
319
+ const response = await this.client.request({ method: 'tools/list', params: {} }, ListToolsResultSchema);
320
+ // Map the array of tool objects to an array of tool names (strings)
321
+ this.availableTools = response.tools.map((tool) => tool.name);
322
+ if (this.availableTools.length > 0) {
323
+ logger.debug(`Discovered ${this.availableTools.length} tools from IDE: ${this.availableTools.join(', ')}`);
324
+ }
325
+ else {
326
+ logger.debug('IDE supports tool discovery, but no tools are available.');
327
+ }
328
+ }
329
+ catch (error) {
330
+ // It's okay if this fails, the IDE might not support it.
331
+ // Don't log an error if the method is not found, which is a common case.
332
+ if (error instanceof Error &&
333
+ !error.message?.includes('Method not found')) {
334
+ logger.error(`Error discovering tools from IDE: ${error.message}`);
335
+ }
336
+ else {
337
+ logger.debug('IDE does not support tool discovery.');
338
+ }
339
+ this.availableTools = [];
340
+ }
341
+ }
216
342
  setState(status, details, logToConsole = false) {
217
343
  const isAlreadyDisconnected = this.state.status === IDEConnectionStatus.Disconnected &&
218
344
  status === IDEConnectionStatus.Disconnected;
@@ -235,7 +361,7 @@ export class IdeClient {
235
361
  }
236
362
  }
237
363
  if (status === IDEConnectionStatus.Disconnected) {
238
- ideContext.clearIdeContext();
364
+ ideContextStore.clear();
239
365
  }
240
366
  }
241
367
  static validateWorkspacePath(ideWorkspacePath, currentIdeDisplayName, cwd) {
@@ -307,7 +433,7 @@ export class IdeClient {
307
433
  }
308
434
  catch (_) {
309
435
  // For newer extension versions, the file name matches the pattern
310
- // /^gemini-ide-server-${pid}-\d+\.json$/. If multiple IDE
436
+ // /^cell-ide-server-${pid}-\d+\.json$/. If multiple IDE
311
437
  // windows are open, multiple files matching the pattern are expected to
312
438
  // exist.
313
439
  }
@@ -320,7 +446,7 @@ export class IdeClient {
320
446
  logger.debug('Failed to read IDE connection directory:', e);
321
447
  return undefined;
322
448
  }
323
- const fileRegex = new RegExp(`^gemini-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`);
449
+ const fileRegex = new RegExp(`^cell-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`);
324
450
  const matchingFiles = portFiles
325
451
  .filter((file) => fileRegex.test(file))
326
452
  .sort();
@@ -393,7 +519,7 @@ export class IdeClient {
393
519
  return;
394
520
  }
395
521
  this.client.setNotificationHandler(IdeContextNotificationSchema, (notification) => {
396
- ideContext.setIdeContext(notification.params);
522
+ ideContextStore.set(notification.params);
397
523
  const isTrusted = notification.params.workspaceState?.isTrusted;
398
524
  if (isTrusted !== undefined) {
399
525
  for (const listener of this.trustChangeListeners) {
@@ -402,10 +528,11 @@ export class IdeClient {
402
528
  }
403
529
  });
404
530
  this.client.onerror = (_error) => {
405
- this.setState(IDEConnectionStatus.Disconnected, `IDE connection error. The connection was lost unexpectedly. Please try reconnecting by running /ide enable`, true);
531
+ const errorMessage = _error instanceof Error ? _error.message : `_error`;
532
+ this.setState(IDEConnectionStatus.Disconnected, `IDE connection error. The connection was lost unexpectedly. Please try reconnecting by running /ide enable\n${errorMessage}`, true);
406
533
  };
407
534
  this.client.onclose = () => {
408
- this.setState(IDEConnectionStatus.Disconnected, `IDE connection error. The connection was lost unexpectedly. Please try reconnecting by running /ide enable`, true);
535
+ this.setState(IDEConnectionStatus.Disconnected, `IDE connection closed. To reconnect, run /ide enable.`, true);
409
536
  };
410
537
  this.client.setNotificationHandler(IdeDiffAcceptedNotificationSchema, (notification) => {
411
538
  const { filePath, content } = notification.params;
@@ -418,6 +545,19 @@ export class IdeClient {
418
545
  logger.debug(`No resolver found for ${filePath}`);
419
546
  }
420
547
  });
548
+ this.client.setNotificationHandler(IdeDiffRejectedNotificationSchema, (notification) => {
549
+ const { filePath } = notification.params;
550
+ const resolver = this.diffResponses.get(filePath);
551
+ if (resolver) {
552
+ resolver({ status: 'rejected', content: undefined });
553
+ this.diffResponses.delete(filePath);
554
+ }
555
+ else {
556
+ logger.debug(`No resolver found for ${filePath}`);
557
+ }
558
+ });
559
+ // For backwards compatability. Newer extension versions will only send
560
+ // IdeDiffRejectedNotificationSchema.
421
561
  this.client.setNotificationHandler(IdeDiffClosedNotificationSchema, (notification) => {
422
562
  const { filePath } = notification.params;
423
563
  const resolver = this.diffResponses.get(filePath);
@@ -441,9 +581,15 @@ export class IdeClient {
441
581
  });
442
582
  transport = new StreamableHTTPClientTransport(new URL(`http://${getIdeServerHost()}:${port}/mcp`), {
443
583
  fetch: this.createProxyAwareFetch(),
584
+ requestInit: {
585
+ headers: this.authToken
586
+ ? { Authorization: `Bearer ${this.authToken}` }
587
+ : {},
588
+ },
444
589
  });
445
590
  await this.client.connect(transport);
446
591
  this.registerClientHandlers();
592
+ await this.discoverTools();
447
593
  this.setState(IDEConnectionStatus.Connected);
448
594
  return true;
449
595
  }
@@ -474,6 +620,7 @@ export class IdeClient {
474
620
  });
475
621
  await this.client.connect(transport);
476
622
  this.registerClientHandlers();
623
+ await this.discoverTools();
477
624
  this.setState(IDEConnectionStatus.Connected);
478
625
  return true;
479
626
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ide-client.js","sourceRoot":"","sources":["../../../src/ide/ide-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ide-client.js","sourceRoot":"","sources":["../../../src/ide/ide-client.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,7 @@ describe('IdeClient', () => {
62
62
  close: vi.fn(),
63
63
  setNotificationHandler: vi.fn(),
64
64
  callTool: vi.fn(),
65
+ request: vi.fn(),
65
66
  };
66
67
  mockHttpTransport = {
67
68
  close: vi.fn(),
@@ -190,7 +191,7 @@ describe('IdeClient', () => {
190
191
  it('should find and parse a single config file with the new naming scheme', async () => {
191
192
  const config = { port: '5678', workspacePath: '/test/workspace' };
192
193
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found')); // For old path
193
- vi.mocked(fs.promises.readdir).mockResolvedValue(['gemini-ide-server-12345-123.json']);
194
+ vi.mocked(fs.promises.readdir).mockResolvedValue(['cell-ide-server-12345-123.json']);
194
195
  vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
195
196
  vi.spyOn(IdeClient, 'validateWorkspacePath').mockReturnValue({
196
197
  isValid: true,
@@ -198,7 +199,7 @@ describe('IdeClient', () => {
198
199
  const ideClient = await IdeClient.getInstance();
199
200
  const result = await ideClient.getConnectionConfigFromFile();
200
201
  expect(result).toEqual(config);
201
- expect(fs.promises.readFile).toHaveBeenCalledWith(path.join('/tmp/gemini/ide', 'gemini-ide-server-12345-123.json'), 'utf8');
202
+ expect(fs.promises.readFile).toHaveBeenCalledWith(path.join('/tmp/gemini/ide', 'cell-ide-server-12345-123.json'), 'utf8');
202
203
  });
203
204
  it('should filter out configs with invalid workspace paths', async () => {
204
205
  const validConfig = {
@@ -211,8 +212,8 @@ describe('IdeClient', () => {
211
212
  };
212
213
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
213
214
  vi.mocked(fs.promises.readdir).mockResolvedValue([
214
- 'gemini-ide-server-12345-111.json',
215
- 'gemini-ide-server-12345-222.json',
215
+ 'cell-ide-server-12345-111.json',
216
+ 'cell-ide-server-12345-222.json',
216
217
  ]);
217
218
  vi.mocked(fs.promises.readFile)
218
219
  .mockResolvedValueOnce(JSON.stringify(invalidConfig))
@@ -232,8 +233,8 @@ describe('IdeClient', () => {
232
233
  const config2 = { port: '2222', workspacePath: '/test/workspace2' };
233
234
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
234
235
  vi.mocked(fs.promises.readdir).mockResolvedValue([
235
- 'gemini-ide-server-12345-111.json',
236
- 'gemini-ide-server-12345-222.json',
236
+ 'cell-ide-server-12345-111.json',
237
+ 'cell-ide-server-12345-222.json',
237
238
  ]);
238
239
  vi.mocked(fs.promises.readFile)
239
240
  .mockResolvedValueOnce(JSON.stringify(config1))
@@ -251,8 +252,8 @@ describe('IdeClient', () => {
251
252
  const config2 = { port: '2222', workspacePath: '/test/workspace2' };
252
253
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
253
254
  vi.mocked(fs.promises.readdir).mockResolvedValue([
254
- 'gemini-ide-server-12345-111.json',
255
- 'gemini-ide-server-12345-222.json',
255
+ 'cell-ide-server-12345-111.json',
256
+ 'cell-ide-server-12345-222.json',
256
257
  ]);
257
258
  vi.mocked(fs.promises.readFile)
258
259
  .mockResolvedValueOnce(JSON.stringify(config1))
@@ -268,8 +269,8 @@ describe('IdeClient', () => {
268
269
  const validConfig = { port: '2222', workspacePath: '/test/workspace' };
269
270
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
270
271
  vi.mocked(fs.promises.readdir).mockResolvedValue([
271
- 'gemini-ide-server-12345-111.json',
272
- 'gemini-ide-server-12345-222.json',
272
+ 'cell-ide-server-12345-111.json',
273
+ 'cell-ide-server-12345-222.json',
273
274
  ]);
274
275
  vi.mocked(fs.promises.readFile)
275
276
  .mockResolvedValueOnce('invalid json')
@@ -292,9 +293,9 @@ describe('IdeClient', () => {
292
293
  const validConfig = { port: '3333', workspacePath: '/test/workspace' };
293
294
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
294
295
  vi.mocked(fs.promises.readdir).mockResolvedValue([
295
- 'gemini-ide-server-12345-111.json', // valid
296
+ 'cell-ide-server-12345-111.json', // valid
296
297
  'not-a-config-file.txt', // invalid
297
- 'gemini-ide-server-asdf.json', // invalid
298
+ 'cell-ide-server-asdf.json', // invalid
298
299
  ]);
299
300
  vi.mocked(fs.promises.readFile).mockResolvedValueOnce(JSON.stringify(validConfig));
300
301
  vi.spyOn(IdeClient, 'validateWorkspacePath').mockReturnValue({
@@ -303,7 +304,7 @@ describe('IdeClient', () => {
303
304
  const ideClient = await IdeClient.getInstance();
304
305
  const result = await ideClient.getConnectionConfigFromFile();
305
306
  expect(result).toEqual(validConfig);
306
- expect(fs.promises.readFile).toHaveBeenCalledWith(path.join('/tmp/gemini/ide', 'gemini-ide-server-12345-111.json'), 'utf8');
307
+ expect(fs.promises.readFile).toHaveBeenCalledWith(path.join('/tmp/gemini/ide', 'cell-ide-server-12345-111.json'), 'utf8');
307
308
  expect(fs.promises.readFile).not.toHaveBeenCalledWith(path.join('/tmp/gemini/ide', 'not-a-config-file.txt'), 'utf8');
308
309
  });
309
310
  it('should match env port string to a number port in the config', async () => {
@@ -312,8 +313,8 @@ describe('IdeClient', () => {
312
313
  const config2 = { port: 3333, workspacePath: '/test/workspace2' };
313
314
  vi.mocked(fs.promises.readFile).mockRejectedValueOnce(new Error('not found'));
314
315
  vi.mocked(fs.promises.readdir).mockResolvedValue([
315
- 'gemini-ide-server-12345-111.json',
316
- 'gemini-ide-server-12345-222.json',
316
+ 'cell-ide-server-12345-111.json',
317
+ 'cell-ide-server-12345-222.json',
317
318
  ]);
318
319
  vi.mocked(fs.promises.readFile)
319
320
  .mockResolvedValueOnce(JSON.stringify(config1))
@@ -326,5 +327,75 @@ describe('IdeClient', () => {
326
327
  expect(result).toEqual(config2);
327
328
  });
328
329
  });
330
+ describe('isDiffingEnabled', () => {
331
+ it('should return false if not connected', async () => {
332
+ const ideClient = await IdeClient.getInstance();
333
+ expect(ideClient.isDiffingEnabled()).toBe(false);
334
+ });
335
+ it('should return false if tool discovery fails', async () => {
336
+ const config = { port: '8080' };
337
+ vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
338
+ vi.mocked(fs.promises.readdir).mockResolvedValue([]);
339
+ mockClient.request.mockRejectedValue(new Error('Method not found'));
340
+ const ideClient = await IdeClient.getInstance();
341
+ await ideClient.connect();
342
+ expect(ideClient.getConnectionStatus().status).toBe(IDEConnectionStatus.Connected);
343
+ expect(ideClient.isDiffingEnabled()).toBe(false);
344
+ });
345
+ it('should return false if diffing tools are not available', async () => {
346
+ const config = { port: '8080' };
347
+ vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
348
+ vi.mocked(fs.promises.readdir).mockResolvedValue([]);
349
+ mockClient.request.mockResolvedValue({
350
+ tools: [{ name: 'someOtherTool' }],
351
+ });
352
+ const ideClient = await IdeClient.getInstance();
353
+ await ideClient.connect();
354
+ expect(ideClient.getConnectionStatus().status).toBe(IDEConnectionStatus.Connected);
355
+ expect(ideClient.isDiffingEnabled()).toBe(false);
356
+ });
357
+ it('should return false if only openDiff tool is available', async () => {
358
+ const config = { port: '8080' };
359
+ vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
360
+ vi.mocked(fs.promises.readdir).mockResolvedValue([]);
361
+ mockClient.request.mockResolvedValue({
362
+ tools: [{ name: 'openDiff' }],
363
+ });
364
+ const ideClient = await IdeClient.getInstance();
365
+ await ideClient.connect();
366
+ expect(ideClient.getConnectionStatus().status).toBe(IDEConnectionStatus.Connected);
367
+ expect(ideClient.isDiffingEnabled()).toBe(false);
368
+ });
369
+ it('should return true if connected and diffing tools are available', async () => {
370
+ const config = { port: '8080' };
371
+ vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
372
+ vi.mocked(fs.promises.readdir).mockResolvedValue([]);
373
+ mockClient.request.mockResolvedValue({
374
+ tools: [{ name: 'openDiff' }, { name: 'closeDiff' }],
375
+ });
376
+ const ideClient = await IdeClient.getInstance();
377
+ await ideClient.connect();
378
+ expect(ideClient.getConnectionStatus().status).toBe(IDEConnectionStatus.Connected);
379
+ expect(ideClient.isDiffingEnabled()).toBe(true);
380
+ });
381
+ });
382
+ describe('authentication', () => {
383
+ it('should connect with an auth token if provided in the discovery file', async () => {
384
+ const authToken = 'test-auth-token';
385
+ const config = { port: '8080', authToken };
386
+ vi.mocked(fs.promises.readFile).mockResolvedValue(JSON.stringify(config));
387
+ vi.mocked(fs.promises.readdir).mockResolvedValue([]);
388
+ const ideClient = await IdeClient.getInstance();
389
+ await ideClient.connect();
390
+ expect(StreamableHTTPClientTransport).toHaveBeenCalledWith(new URL('http://localhost:8080/mcp'), expect.objectContaining({
391
+ requestInit: {
392
+ headers: {
393
+ Authorization: `Bearer ${authToken}`,
394
+ },
395
+ },
396
+ }));
397
+ expect(ideClient.getConnectionStatus().status).toBe(IDEConnectionStatus.Connected);
398
+ });
399
+ });
329
400
  });
330
401
  //# sourceMappingURL=ide-client.test.js.map