@machina.ai/cell-cli-core 1.6.1-rc2 → 1.10.0-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 (358) hide show
  1. package/dist/index.d.ts +4 -3
  2. package/dist/index.js +4 -3
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +1 -1
  5. package/dist/src/agents/codebase-investigator.d.ts +46 -0
  6. package/dist/src/agents/codebase-investigator.js +135 -0
  7. package/dist/src/agents/codebase-investigator.js.map +1 -0
  8. package/dist/src/agents/executor.d.ts +92 -0
  9. package/dist/src/agents/executor.js +579 -0
  10. package/dist/src/agents/executor.js.map +1 -0
  11. package/dist/src/agents/executor.test.d.ts +6 -0
  12. package/dist/src/agents/executor.test.js +680 -0
  13. package/dist/src/agents/executor.test.js.map +1 -0
  14. package/dist/src/agents/invocation.d.ts +46 -0
  15. package/dist/src/agents/invocation.js +102 -0
  16. package/dist/src/agents/invocation.js.map +1 -0
  17. package/dist/src/agents/invocation.test.d.ts +6 -0
  18. package/dist/src/agents/invocation.test.js +215 -0
  19. package/dist/src/agents/invocation.test.js.map +1 -0
  20. package/dist/src/agents/registry.d.ts +36 -0
  21. package/dist/src/agents/registry.js +81 -0
  22. package/dist/src/agents/registry.js.map +1 -0
  23. package/dist/src/agents/registry.test.d.ts +6 -0
  24. package/dist/src/agents/registry.test.js +146 -0
  25. package/dist/src/agents/registry.test.js.map +1 -0
  26. package/dist/src/agents/schema-utils.d.ts +39 -0
  27. package/dist/src/agents/schema-utils.js +57 -0
  28. package/dist/src/agents/schema-utils.js.map +1 -0
  29. package/dist/src/agents/schema-utils.test.d.ts +6 -0
  30. package/dist/src/agents/schema-utils.test.js +144 -0
  31. package/dist/src/agents/schema-utils.test.js.map +1 -0
  32. package/dist/src/agents/subagent-tool-wrapper.d.ts +38 -0
  33. package/dist/src/agents/subagent-tool-wrapper.js +48 -0
  34. package/dist/src/agents/subagent-tool-wrapper.js.map +1 -0
  35. package/dist/src/agents/subagent-tool-wrapper.test.d.ts +6 -0
  36. package/dist/src/agents/subagent-tool-wrapper.test.js +112 -0
  37. package/dist/src/agents/subagent-tool-wrapper.test.js.map +1 -0
  38. package/dist/src/agents/types.d.ts +145 -0
  39. package/dist/src/agents/types.js +18 -0
  40. package/dist/src/agents/types.js.map +1 -0
  41. package/dist/src/agents/utils.d.ts +15 -0
  42. package/dist/src/agents/utils.js +29 -0
  43. package/dist/src/agents/utils.js.map +1 -0
  44. package/dist/src/agents/utils.test.d.ts +6 -0
  45. package/dist/src/agents/utils.test.js +87 -0
  46. package/dist/src/agents/utils.test.js.map +1 -0
  47. package/dist/src/code_assist/oauth-credential-storage.js +1 -1
  48. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  49. package/dist/src/code_assist/oauth-credential-storage.test.js +1 -1
  50. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  51. package/dist/src/code_assist/oauth2.test.js +14 -13
  52. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  53. package/dist/src/code_assist/setup.js +4 -2
  54. package/dist/src/code_assist/setup.js.map +1 -1
  55. package/dist/src/config/config.d.ts +61 -15
  56. package/dist/src/config/config.js +132 -28
  57. package/dist/src/config/config.js.map +1 -1
  58. package/dist/src/config/config.test.js +67 -3
  59. package/dist/src/config/config.test.js.map +1 -1
  60. package/dist/src/config/constants.d.ts +11 -0
  61. package/dist/src/config/constants.js +16 -0
  62. package/dist/src/config/constants.js.map +1 -0
  63. package/dist/src/config/storage.d.ts +0 -1
  64. package/dist/src/config/storage.js +2 -2
  65. package/dist/src/config/storage.js.map +1 -1
  66. package/dist/src/config/storage.test.js +7 -6
  67. package/dist/src/config/storage.test.js.map +1 -1
  68. package/dist/src/core/baseLlmClient.d.ts +4 -0
  69. package/dist/src/core/baseLlmClient.js +24 -23
  70. package/dist/src/core/baseLlmClient.js.map +1 -1
  71. package/dist/src/core/baseLlmClient.test.js +76 -13
  72. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  73. package/dist/src/core/client.d.ts +6 -3
  74. package/dist/src/core/client.js +103 -64
  75. package/dist/src/core/client.js.map +1 -1
  76. package/dist/src/core/client.test.js +470 -118
  77. package/dist/src/core/client.test.js.map +1 -1
  78. package/dist/src/core/contentGenerator.js +3 -1
  79. package/dist/src/core/contentGenerator.js.map +1 -1
  80. package/dist/src/core/coreToolScheduler.js +12 -12
  81. package/dist/src/core/coreToolScheduler.js.map +1 -1
  82. package/dist/src/core/coreToolScheduler.test.js +260 -23
  83. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  84. package/dist/src/core/geminiChat.d.ts +11 -14
  85. package/dist/src/core/geminiChat.js +80 -124
  86. package/dist/src/core/geminiChat.js.map +1 -1
  87. package/dist/src/core/geminiChat.test.js +316 -239
  88. package/dist/src/core/geminiChat.test.js.map +1 -1
  89. package/dist/src/core/logger.test.js +16 -16
  90. package/dist/src/core/logger.test.js.map +1 -1
  91. package/dist/src/core/nonInteractiveToolExecutor.d.ts +3 -2
  92. package/dist/src/core/nonInteractiveToolExecutor.js +2 -2
  93. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  94. package/dist/src/core/nonInteractiveToolExecutor.test.js +19 -19
  95. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  96. package/dist/src/core/prompts.d.ts +2 -1
  97. package/dist/src/core/prompts.js +53 -111
  98. package/dist/src/core/prompts.js.map +1 -1
  99. package/dist/src/core/prompts.test.js +83 -29
  100. package/dist/src/core/prompts.test.js.map +1 -1
  101. package/dist/src/core/subagent.js +1 -1
  102. package/dist/src/core/subagent.js.map +1 -1
  103. package/dist/src/core/subagent.test.js +38 -12
  104. package/dist/src/core/subagent.test.js.map +1 -1
  105. package/dist/src/core/turn.d.ts +15 -6
  106. package/dist/src/core/turn.js +14 -13
  107. package/dist/src/core/turn.js.map +1 -1
  108. package/dist/src/core/turn.test.js +14 -2
  109. package/dist/src/core/turn.test.js.map +1 -1
  110. package/dist/src/generated/git-commit.d.ts +2 -2
  111. package/dist/src/generated/git-commit.js +2 -2
  112. package/dist/src/generated/git-commit.js.map +1 -1
  113. package/dist/src/ide/detect-ide.d.ts +45 -14
  114. package/dist/src/ide/detect-ide.js +32 -69
  115. package/dist/src/ide/detect-ide.js.map +1 -1
  116. package/dist/src/ide/detect-ide.test.js +40 -46
  117. package/dist/src/ide/detect-ide.test.js.map +1 -1
  118. package/dist/src/ide/ide-client.d.ts +4 -4
  119. package/dist/src/ide/ide-client.js +33 -32
  120. package/dist/src/ide/ide-client.js.map +1 -1
  121. package/dist/src/ide/ide-client.test.js +12 -25
  122. package/dist/src/ide/ide-client.test.js.map +1 -1
  123. package/dist/src/ide/ide-installer.d.ts +2 -2
  124. package/dist/src/ide/ide-installer.js +8 -10
  125. package/dist/src/ide/ide-installer.js.map +1 -1
  126. package/dist/src/ide/ide-installer.test.js +33 -14
  127. package/dist/src/ide/ide-installer.test.js.map +1 -1
  128. package/dist/src/ide/process-utils.js +85 -75
  129. package/dist/src/ide/process-utils.js.map +1 -1
  130. package/dist/src/ide/process-utils.test.js +83 -90
  131. package/dist/src/ide/process-utils.test.js.map +1 -1
  132. package/dist/src/index.d.ts +7 -2
  133. package/dist/src/index.js +7 -2
  134. package/dist/src/index.js.map +1 -1
  135. package/dist/src/mcp/oauth-provider.d.ts +4 -1
  136. package/dist/src/mcp/oauth-provider.js +31 -25
  137. package/dist/src/mcp/oauth-provider.js.map +1 -1
  138. package/dist/src/mcp/sa-impersonation-provider.d.ts +33 -0
  139. package/dist/src/mcp/sa-impersonation-provider.js +130 -0
  140. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -0
  141. package/dist/src/mcp/sa-impersonation-provider.test.d.ts +6 -0
  142. package/dist/src/mcp/sa-impersonation-provider.test.js +117 -0
  143. package/dist/src/mcp/sa-impersonation-provider.test.js.map +1 -0
  144. package/dist/src/mcp/token-storage/file-token-storage.js +2 -1
  145. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -1
  146. package/dist/src/mcp/token-storage/file-token-storage.test.js +4 -3
  147. package/dist/src/mcp/token-storage/file-token-storage.test.js.map +1 -1
  148. package/dist/src/policy/policy-engine.js +11 -2
  149. package/dist/src/policy/policy-engine.js.map +1 -1
  150. package/dist/src/policy/policy-engine.test.js +45 -0
  151. package/dist/src/policy/policy-engine.test.js.map +1 -1
  152. package/dist/src/routing/strategies/compositeStrategy.js +4 -3
  153. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -1
  154. package/dist/src/services/chatRecordingService.d.ts +3 -2
  155. package/dist/src/services/chatRecordingService.js +3 -2
  156. package/dist/src/services/chatRecordingService.js.map +1 -1
  157. package/dist/src/services/fileSystemService.d.ts +9 -0
  158. package/dist/src/services/fileSystemService.js +11 -0
  159. package/dist/src/services/fileSystemService.js.map +1 -1
  160. package/dist/src/services/shellExecutionService.d.ts +3 -0
  161. package/dist/src/services/shellExecutionService.js +165 -49
  162. package/dist/src/services/shellExecutionService.js.map +1 -1
  163. package/dist/src/services/shellExecutionService.test.js +74 -5
  164. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  165. package/dist/src/telemetry/activity-detector.d.ts +41 -0
  166. package/dist/src/telemetry/activity-detector.js +61 -0
  167. package/dist/src/telemetry/activity-detector.js.map +1 -0
  168. package/dist/src/telemetry/activity-detector.test.d.ts +6 -0
  169. package/dist/src/telemetry/activity-detector.test.js +136 -0
  170. package/dist/src/telemetry/activity-detector.test.js.map +1 -0
  171. package/dist/src/telemetry/activity-types.d.ts +19 -0
  172. package/dist/src/telemetry/activity-types.js +21 -0
  173. package/dist/src/telemetry/activity-types.js.map +1 -0
  174. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +18 -2
  175. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +257 -108
  176. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  177. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +1 -0
  178. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +258 -33
  179. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  180. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +118 -100
  181. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +146 -103
  182. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  183. package/dist/src/telemetry/config.d.ts +31 -0
  184. package/dist/src/telemetry/config.js +74 -0
  185. package/dist/src/telemetry/config.js.map +1 -0
  186. package/dist/src/telemetry/config.test.d.ts +6 -0
  187. package/dist/src/telemetry/config.test.js +124 -0
  188. package/dist/src/telemetry/config.test.js.map +1 -0
  189. package/dist/src/telemetry/constants.d.ts +0 -34
  190. package/dist/src/telemetry/constants.js +0 -34
  191. package/dist/src/telemetry/constants.js.map +1 -1
  192. package/dist/src/telemetry/index.d.ts +9 -3
  193. package/dist/src/telemetry/index.js +19 -2
  194. package/dist/src/telemetry/index.js.map +1 -1
  195. package/dist/src/telemetry/loggers.d.ts +10 -2
  196. package/dist/src/telemetry/loggers.js +206 -273
  197. package/dist/src/telemetry/loggers.js.map +1 -1
  198. package/dist/src/telemetry/loggers.test.circular.js +3 -3
  199. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  200. package/dist/src/telemetry/loggers.test.js +316 -13
  201. package/dist/src/telemetry/loggers.test.js.map +1 -1
  202. package/dist/src/telemetry/memory-monitor.d.ts +149 -0
  203. package/dist/src/telemetry/memory-monitor.js +335 -0
  204. package/dist/src/telemetry/memory-monitor.js.map +1 -0
  205. package/dist/src/telemetry/memory-monitor.test.d.ts +6 -0
  206. package/dist/src/telemetry/memory-monitor.test.js +472 -0
  207. package/dist/src/telemetry/memory-monitor.test.js.map +1 -0
  208. package/dist/src/telemetry/metrics.d.ts +436 -11
  209. package/dist/src/telemetry/metrics.js +600 -110
  210. package/dist/src/telemetry/metrics.js.map +1 -1
  211. package/dist/src/telemetry/metrics.test.js +898 -16
  212. package/dist/src/telemetry/metrics.test.js.map +1 -1
  213. package/dist/src/telemetry/sdk.js +1 -1
  214. package/dist/src/telemetry/sdk.js.map +1 -1
  215. package/dist/src/telemetry/sdk.test.js +13 -0
  216. package/dist/src/telemetry/sdk.test.js.map +1 -1
  217. package/dist/src/telemetry/telemetryAttributes.d.ts +8 -0
  218. package/dist/src/telemetry/telemetryAttributes.js +18 -0
  219. package/dist/src/telemetry/telemetryAttributes.js.map +1 -0
  220. package/dist/src/telemetry/types.d.ts +168 -5
  221. package/dist/src/telemetry/types.js +696 -34
  222. package/dist/src/telemetry/types.js.map +1 -1
  223. package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
  224. package/dist/src/telemetry/uiTelemetry.js +3 -4
  225. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  226. package/dist/src/telemetry/uiTelemetry.test.js +14 -14
  227. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  228. package/dist/src/test-utils/mock-tool.d.ts +28 -3
  229. package/dist/src/test-utils/mock-tool.js +71 -1
  230. package/dist/src/test-utils/mock-tool.js.map +1 -1
  231. package/dist/src/tools/glob.js +4 -2
  232. package/dist/src/tools/glob.js.map +1 -1
  233. package/dist/src/tools/ls.js +1 -1
  234. package/dist/src/tools/ls.js.map +1 -1
  235. package/dist/src/tools/mcp-client.d.ts +5 -14
  236. package/dist/src/tools/mcp-client.js +51 -98
  237. package/dist/src/tools/mcp-client.js.map +1 -1
  238. package/dist/src/tools/mcp-client.test.js +175 -157
  239. package/dist/src/tools/mcp-client.test.js.map +1 -1
  240. package/dist/src/tools/memoryTool.d.ts +1 -1
  241. package/dist/src/tools/memoryTool.js +1 -2
  242. package/dist/src/tools/memoryTool.js.map +1 -1
  243. package/dist/src/tools/memoryTool.test.js +9 -8
  244. package/dist/src/tools/memoryTool.test.js.map +1 -1
  245. package/dist/src/tools/message-bus-integration.test.d.ts +6 -0
  246. package/dist/src/tools/message-bus-integration.test.js +183 -0
  247. package/dist/src/tools/message-bus-integration.test.js.map +1 -0
  248. package/dist/src/tools/shell.js +60 -4
  249. package/dist/src/tools/shell.js.map +1 -1
  250. package/dist/src/tools/shell.test.js +2 -1
  251. package/dist/src/tools/shell.test.js.map +1 -1
  252. package/dist/src/tools/smart-edit.d.ts +1 -1
  253. package/dist/src/tools/smart-edit.js +116 -12
  254. package/dist/src/tools/smart-edit.js.map +1 -1
  255. package/dist/src/tools/smart-edit.test.js +91 -29
  256. package/dist/src/tools/smart-edit.test.js.map +1 -1
  257. package/dist/src/tools/tool-error.d.ts +22 -0
  258. package/dist/src/tools/tool-error.js +28 -0
  259. package/dist/src/tools/tool-error.js.map +1 -1
  260. package/dist/src/tools/tool-names.d.ts +9 -0
  261. package/dist/src/tools/tool-names.js +18 -0
  262. package/dist/src/tools/tool-names.js.map +1 -0
  263. package/dist/src/tools/tool-registry.test.js +10 -10
  264. package/dist/src/tools/tool-registry.test.js.map +1 -1
  265. package/dist/src/tools/tools.d.ts +11 -3
  266. package/dist/src/tools/tools.js +94 -3
  267. package/dist/src/tools/tools.js.map +1 -1
  268. package/dist/src/tools/web-fetch.d.ts +7 -0
  269. package/dist/src/tools/web-fetch.js +42 -10
  270. package/dist/src/tools/web-fetch.js.map +1 -1
  271. package/dist/src/tools/web-fetch.test.js +127 -8
  272. package/dist/src/tools/web-fetch.test.js.map +1 -1
  273. package/dist/src/tools/web-search.js +2 -1
  274. package/dist/src/tools/web-search.js.map +1 -1
  275. package/dist/src/tools/write-file.js +2 -1
  276. package/dist/src/tools/write-file.js.map +1 -1
  277. package/dist/src/tools/write-todos.d.ts +25 -0
  278. package/dist/src/tools/write-todos.js +151 -0
  279. package/dist/src/tools/write-todos.js.map +1 -0
  280. package/dist/src/tools/write-todos.test.d.ts +6 -0
  281. package/dist/src/tools/write-todos.test.js +89 -0
  282. package/dist/src/tools/write-todos.test.js.map +1 -0
  283. package/dist/src/utils/bfsFileSearch.d.ts +1 -1
  284. package/dist/src/utils/editCorrector.js +2 -2
  285. package/dist/src/utils/editCorrector.js.map +1 -1
  286. package/dist/src/utils/editor.js +1 -0
  287. package/dist/src/utils/editor.js.map +1 -1
  288. package/dist/src/utils/editor.test.js +1 -0
  289. package/dist/src/utils/editor.test.js.map +1 -1
  290. package/dist/src/utils/flashFallback.test.js +2 -2
  291. package/dist/src/utils/flashFallback.test.js.map +1 -1
  292. package/dist/src/utils/formatters.d.ts +1 -0
  293. package/dist/src/utils/formatters.js +2 -1
  294. package/dist/src/utils/formatters.js.map +1 -1
  295. package/dist/src/utils/formatters.test.d.ts +6 -0
  296. package/dist/src/utils/formatters.test.js +26 -0
  297. package/dist/src/utils/formatters.test.js.map +1 -0
  298. package/dist/src/utils/getFolderStructure.d.ts +1 -1
  299. package/dist/src/utils/getFolderStructure.js +1 -1
  300. package/dist/src/utils/getFolderStructure.js.map +1 -1
  301. package/dist/src/utils/getFolderStructure.test.js +7 -6
  302. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  303. package/dist/src/utils/installationManager.test.js +2 -1
  304. package/dist/src/utils/installationManager.test.js.map +1 -1
  305. package/dist/src/utils/llm-edit-fixer.js +14 -4
  306. package/dist/src/utils/llm-edit-fixer.js.map +1 -1
  307. package/dist/src/utils/llm-edit-fixer.test.js +81 -0
  308. package/dist/src/utils/llm-edit-fixer.test.js.map +1 -1
  309. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  310. package/dist/src/utils/memoryDiscovery.js +3 -2
  311. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  312. package/dist/src/utils/memoryDiscovery.test.js +99 -21
  313. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  314. package/dist/src/utils/memoryImportProcessor.js +13 -20
  315. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  316. package/dist/src/utils/memoryImportProcessor.test.js +14 -0
  317. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  318. package/dist/src/utils/pathCorrector.d.ts +25 -0
  319. package/dist/src/utils/pathCorrector.js +33 -0
  320. package/dist/src/utils/pathCorrector.js.map +1 -0
  321. package/dist/src/utils/pathCorrector.test.d.ts +6 -0
  322. package/dist/src/utils/pathCorrector.test.js +83 -0
  323. package/dist/src/utils/pathCorrector.test.js.map +1 -0
  324. package/dist/src/utils/retry.d.ts +4 -1
  325. package/dist/src/utils/retry.js +40 -17
  326. package/dist/src/utils/retry.js.map +1 -1
  327. package/dist/src/utils/retry.test.js +104 -31
  328. package/dist/src/utils/retry.test.js.map +1 -1
  329. package/dist/src/utils/schemaValidator.js +11 -1
  330. package/dist/src/utils/schemaValidator.js.map +1 -1
  331. package/dist/src/utils/schemaValidator.test.d.ts +6 -0
  332. package/dist/src/utils/schemaValidator.test.js +113 -0
  333. package/dist/src/utils/schemaValidator.test.js.map +1 -0
  334. package/dist/src/utils/shell-utils.d.ts +1 -0
  335. package/dist/src/utils/shell-utils.js +6 -2
  336. package/dist/src/utils/shell-utils.js.map +1 -1
  337. package/dist/src/utils/shell-utils.test.js +5 -0
  338. package/dist/src/utils/shell-utils.test.js.map +1 -1
  339. package/dist/src/utils/terminalSerializer.d.ts +1 -4
  340. package/dist/src/utils/terminalSerializer.js +3 -3
  341. package/dist/src/utils/terminalSerializer.js.map +1 -1
  342. package/dist/src/utils/thoughtUtils.d.ts +21 -0
  343. package/dist/src/utils/thoughtUtils.js +39 -0
  344. package/dist/src/utils/thoughtUtils.js.map +1 -0
  345. package/dist/src/utils/thoughtUtils.test.d.ts +6 -0
  346. package/dist/src/utils/thoughtUtils.test.js +78 -0
  347. package/dist/src/utils/thoughtUtils.test.js.map +1 -0
  348. package/dist/src/utils/tool-utils.js +2 -2
  349. package/dist/src/utils/tool-utils.js.map +1 -1
  350. package/dist/src/utils/tool-utils.test.js +8 -0
  351. package/dist/src/utils/tool-utils.test.js.map +1 -1
  352. package/dist/src/utils/userAccountManager.test.js +2 -1
  353. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  354. package/dist/tsconfig.tsbuildinfo +1 -1
  355. package/package.json +2 -2
  356. package/dist/src/test-utils/tools.d.ts +0 -45
  357. package/dist/src/test-utils/tools.js +0 -105
  358. package/dist/src/test-utils/tools.js.map +0 -1
@@ -5,6 +5,6 @@
5
5
  */
6
6
  // This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
7
7
  // Do not edit this file manually.
8
- export const GIT_COMMIT_INFO = '1a6c2371f';
9
- export const CLI_VERSION = '1.6.1-rc2';
8
+ export const GIT_COMMIT_INFO = 'bfcb2c946';
9
+ export const CLI_VERSION = '1.10.0-rc1';
10
10
  //# sourceMappingURL=git-commit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC"}
@@ -3,23 +3,54 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare enum DetectedIde {
7
- Devin = "devin",
8
- Replit = "replit",
9
- Cursor = "cursor",
10
- CloudShell = "cloudshell",
11
- Codespaces = "codespaces",
12
- FirebaseStudio = "firebasestudio",
13
- Trae = "trae",
14
- VSCode = "vscode",
15
- VSCodeFork = "vscodefork"
16
- }
6
+ export declare const IDE_DEFINITIONS: {
7
+ readonly devin: {
8
+ readonly name: "devin";
9
+ readonly displayName: "Devin";
10
+ };
11
+ readonly replit: {
12
+ readonly name: "replit";
13
+ readonly displayName: "Replit";
14
+ };
15
+ readonly cursor: {
16
+ readonly name: "cursor";
17
+ readonly displayName: "Cursor";
18
+ };
19
+ readonly cloudshell: {
20
+ readonly name: "cloudshell";
21
+ readonly displayName: "Cloud Shell";
22
+ };
23
+ readonly codespaces: {
24
+ readonly name: "codespaces";
25
+ readonly displayName: "GitHub Codespaces";
26
+ };
27
+ readonly firebasestudio: {
28
+ readonly name: "firebasestudio";
29
+ readonly displayName: "Firebase Studio";
30
+ };
31
+ readonly trae: {
32
+ readonly name: "trae";
33
+ readonly displayName: "Trae";
34
+ };
35
+ readonly vscode: {
36
+ readonly name: "vscode";
37
+ readonly displayName: "VS Code";
38
+ };
39
+ readonly vscodefork: {
40
+ readonly name: "vscodefork";
41
+ readonly displayName: "IDE";
42
+ };
43
+ };
17
44
  export interface IdeInfo {
45
+ name: string;
18
46
  displayName: string;
19
47
  }
20
- export declare function getIdeInfo(ide: DetectedIde): IdeInfo;
21
- export declare function detectIdeFromEnv(): DetectedIde;
48
+ export declare function isCloudShell(): boolean;
49
+ export declare function detectIdeFromEnv(): IdeInfo;
22
50
  export declare function detectIde(ideProcessInfo: {
23
51
  pid: number;
24
52
  command: string;
25
- }): DetectedIde | undefined;
53
+ }, ideInfoFromFile?: {
54
+ name?: string;
55
+ displayName?: string;
56
+ }): IdeInfo | undefined;
@@ -3,97 +3,60 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export var DetectedIde;
7
- (function (DetectedIde) {
8
- DetectedIde["Devin"] = "devin";
9
- DetectedIde["Replit"] = "replit";
10
- DetectedIde["Cursor"] = "cursor";
11
- DetectedIde["CloudShell"] = "cloudshell";
12
- DetectedIde["Codespaces"] = "codespaces";
13
- DetectedIde["FirebaseStudio"] = "firebasestudio";
14
- DetectedIde["Trae"] = "trae";
15
- DetectedIde["VSCode"] = "vscode";
16
- DetectedIde["VSCodeFork"] = "vscodefork";
17
- })(DetectedIde || (DetectedIde = {}));
18
- export function getIdeInfo(ide) {
19
- switch (ide) {
20
- case DetectedIde.Devin:
21
- return {
22
- displayName: 'Devin',
23
- };
24
- case DetectedIde.Replit:
25
- return {
26
- displayName: 'Replit',
27
- };
28
- case DetectedIde.Cursor:
29
- return {
30
- displayName: 'Cursor',
31
- };
32
- case DetectedIde.CloudShell:
33
- return {
34
- displayName: 'Cloud Shell',
35
- };
36
- case DetectedIde.Codespaces:
37
- return {
38
- displayName: 'GitHub Codespaces',
39
- };
40
- case DetectedIde.FirebaseStudio:
41
- return {
42
- displayName: 'Firebase Studio',
43
- };
44
- case DetectedIde.Trae:
45
- return {
46
- displayName: 'Trae',
47
- };
48
- case DetectedIde.VSCode:
49
- return {
50
- displayName: 'VS Code',
51
- };
52
- case DetectedIde.VSCodeFork:
53
- return {
54
- displayName: 'IDE',
55
- };
56
- default: {
57
- // This ensures that if a new IDE is added to the enum, we get a compile-time error.
58
- const exhaustiveCheck = ide;
59
- return exhaustiveCheck;
60
- }
61
- }
6
+ export const IDE_DEFINITIONS = {
7
+ devin: { name: 'devin', displayName: 'Devin' },
8
+ replit: { name: 'replit', displayName: 'Replit' },
9
+ cursor: { name: 'cursor', displayName: 'Cursor' },
10
+ cloudshell: { name: 'cloudshell', displayName: 'Cloud Shell' },
11
+ codespaces: { name: 'codespaces', displayName: 'GitHub Codespaces' },
12
+ firebasestudio: { name: 'firebasestudio', displayName: 'Firebase Studio' },
13
+ trae: { name: 'trae', displayName: 'Trae' },
14
+ vscode: { name: 'vscode', displayName: 'VS Code' },
15
+ vscodefork: { name: 'vscodefork', displayName: 'IDE' },
16
+ };
17
+ export function isCloudShell() {
18
+ return !!(process.env['EDITOR_IN_CLOUD_SHELL'] || process.env['CLOUD_SHELL']);
62
19
  }
63
20
  export function detectIdeFromEnv() {
64
21
  if (process.env['__COG_BASHRC_SOURCED']) {
65
- return DetectedIde.Devin;
22
+ return IDE_DEFINITIONS.devin;
66
23
  }
67
24
  if (process.env['REPLIT_USER']) {
68
- return DetectedIde.Replit;
25
+ return IDE_DEFINITIONS.replit;
69
26
  }
70
27
  if (process.env['CURSOR_TRACE_ID']) {
71
- return DetectedIde.Cursor;
28
+ return IDE_DEFINITIONS.cursor;
72
29
  }
73
30
  if (process.env['CODESPACES']) {
74
- return DetectedIde.Codespaces;
31
+ return IDE_DEFINITIONS.codespaces;
75
32
  }
76
- if (process.env['EDITOR_IN_CLOUD_SHELL'] || process.env['CLOUD_SHELL']) {
77
- return DetectedIde.CloudShell;
33
+ if (isCloudShell()) {
34
+ return IDE_DEFINITIONS.cloudshell;
78
35
  }
79
36
  if (process.env['TERM_PRODUCT'] === 'Trae') {
80
- return DetectedIde.Trae;
37
+ return IDE_DEFINITIONS.trae;
81
38
  }
82
39
  if (process.env['MONOSPACE_ENV']) {
83
- return DetectedIde.FirebaseStudio;
40
+ return IDE_DEFINITIONS.firebasestudio;
84
41
  }
85
- return DetectedIde.VSCode;
42
+ return IDE_DEFINITIONS.vscode;
86
43
  }
87
44
  function verifyVSCode(ide, ideProcessInfo) {
88
- if (ide !== DetectedIde.VSCode) {
45
+ if (ide.name !== IDE_DEFINITIONS.vscode.name) {
89
46
  return ide;
90
47
  }
91
48
  if (ideProcessInfo.command.toLowerCase().includes('code')) {
92
- return DetectedIde.VSCode;
49
+ return IDE_DEFINITIONS.vscode;
93
50
  }
94
- return DetectedIde.VSCodeFork;
51
+ return IDE_DEFINITIONS.vscodefork;
95
52
  }
96
- export function detectIde(ideProcessInfo) {
53
+ export function detectIde(ideProcessInfo, ideInfoFromFile) {
54
+ if (ideInfoFromFile?.name && ideInfoFromFile.displayName) {
55
+ return {
56
+ name: ideInfoFromFile.name,
57
+ displayName: ideInfoFromFile.displayName,
58
+ };
59
+ }
97
60
  // Only VSCode-based integrations are currently supported.
98
61
  if (process.env['TERM_PROGRAM'] !== 'vscode') {
99
62
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"detect-ide.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-ide.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.ts"],"names":[],"mappings":"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"}
@@ -4,12 +4,14 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { describe, it, expect, vi, afterEach } from 'vitest';
7
- import { detectIde, DetectedIde, getIdeInfo } from './detect-ide.js';
7
+ import { detectIde, IDE_DEFINITIONS } from './detect-ide.js';
8
8
  describe('detectIde', () => {
9
9
  const ideProcessInfo = { pid: 123, command: 'some/path/to/code' };
10
10
  const ideProcessInfoNoCode = { pid: 123, command: 'some/path/to/fork' };
11
11
  afterEach(() => {
12
12
  vi.unstubAllEnvs();
13
+ // Clear Cursor-specific environment variables that might interfere with tests
14
+ delete process.env['CURSOR_TRACE_ID'];
13
15
  });
14
16
  it('should return undefined if TERM_PROGRAM is not vscode', () => {
15
17
  vi.stubEnv('TERM_PROGRAM', '');
@@ -18,92 +20,84 @@ describe('detectIde', () => {
18
20
  it('should detect Devin', () => {
19
21
  vi.stubEnv('TERM_PROGRAM', 'vscode');
20
22
  vi.stubEnv('__COG_BASHRC_SOURCED', '1');
21
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Devin);
23
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.devin);
22
24
  });
23
25
  it('should detect Replit', () => {
24
26
  vi.stubEnv('TERM_PROGRAM', 'vscode');
25
27
  vi.stubEnv('REPLIT_USER', 'testuser');
26
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Replit);
28
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.replit);
27
29
  });
28
30
  it('should detect Cursor', () => {
29
31
  vi.stubEnv('TERM_PROGRAM', 'vscode');
30
32
  vi.stubEnv('CURSOR_TRACE_ID', 'some-id');
31
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Cursor);
33
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cursor);
32
34
  });
33
35
  it('should detect Codespaces', () => {
34
36
  vi.stubEnv('TERM_PROGRAM', 'vscode');
35
37
  vi.stubEnv('CODESPACES', 'true');
36
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Codespaces);
38
+ vi.stubEnv('CURSOR_TRACE_ID', '');
39
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.codespaces);
37
40
  });
38
41
  it('should detect Cloud Shell via EDITOR_IN_CLOUD_SHELL', () => {
39
42
  vi.stubEnv('TERM_PROGRAM', 'vscode');
40
43
  vi.stubEnv('EDITOR_IN_CLOUD_SHELL', 'true');
41
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.CloudShell);
44
+ vi.stubEnv('CURSOR_TRACE_ID', '');
45
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
42
46
  });
43
47
  it('should detect Cloud Shell via CLOUD_SHELL', () => {
44
48
  vi.stubEnv('TERM_PROGRAM', 'vscode');
45
49
  vi.stubEnv('CLOUD_SHELL', 'true');
46
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.CloudShell);
50
+ vi.stubEnv('CURSOR_TRACE_ID', '');
51
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.cloudshell);
47
52
  });
48
53
  it('should detect Trae', () => {
49
54
  vi.stubEnv('TERM_PROGRAM', 'vscode');
50
55
  vi.stubEnv('TERM_PRODUCT', 'Trae');
51
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Trae);
56
+ vi.stubEnv('CURSOR_TRACE_ID', '');
57
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.trae);
52
58
  });
53
59
  it('should detect Firebase Studio via MONOSPACE_ENV', () => {
54
60
  vi.stubEnv('TERM_PROGRAM', 'vscode');
55
61
  vi.stubEnv('MONOSPACE_ENV', 'true');
56
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.FirebaseStudio);
62
+ vi.stubEnv('CURSOR_TRACE_ID', '');
63
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.firebasestudio);
57
64
  });
58
65
  it('should detect VSCode when no other IDE is detected and command includes "code"', () => {
59
66
  vi.stubEnv('TERM_PROGRAM', 'vscode');
60
67
  vi.stubEnv('MONOSPACE_ENV', '');
61
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.VSCode);
68
+ vi.stubEnv('CURSOR_TRACE_ID', '');
69
+ expect(detectIde(ideProcessInfo)).toBe(IDE_DEFINITIONS.vscode);
62
70
  });
63
71
  it('should detect VSCodeFork when no other IDE is detected and command does not include "code"', () => {
64
72
  vi.stubEnv('TERM_PROGRAM', 'vscode');
65
73
  vi.stubEnv('MONOSPACE_ENV', '');
66
- expect(detectIde(ideProcessInfoNoCode)).toBe(DetectedIde.VSCodeFork);
67
- });
68
- it('should prioritize other IDEs over VSCode detection', () => {
69
- vi.stubEnv('TERM_PROGRAM', 'vscode');
70
- vi.stubEnv('REPLIT_USER', 'testuser');
71
- expect(detectIde(ideProcessInfo)).toBe(DetectedIde.Replit);
74
+ vi.stubEnv('CURSOR_TRACE_ID', '');
75
+ expect(detectIde(ideProcessInfoNoCode)).toBe(IDE_DEFINITIONS.vscodefork);
72
76
  });
73
77
  });
74
- describe('getIdeInfo', () => {
75
- it('should return correct info for Devin', () => {
76
- expect(getIdeInfo(DetectedIde.Devin)).toEqual({ displayName: 'Devin' });
77
- });
78
- it('should return correct info for Replit', () => {
79
- expect(getIdeInfo(DetectedIde.Replit)).toEqual({ displayName: 'Replit' });
80
- });
81
- it('should return correct info for Cursor', () => {
82
- expect(getIdeInfo(DetectedIde.Cursor)).toEqual({ displayName: 'Cursor' });
83
- });
84
- it('should return correct info for CloudShell', () => {
85
- expect(getIdeInfo(DetectedIde.CloudShell)).toEqual({
86
- displayName: 'Cloud Shell',
87
- });
88
- });
89
- it('should return correct info for Codespaces', () => {
90
- expect(getIdeInfo(DetectedIde.Codespaces)).toEqual({
91
- displayName: 'GitHub Codespaces',
92
- });
93
- });
94
- it('should return correct info for FirebaseStudio', () => {
95
- expect(getIdeInfo(DetectedIde.FirebaseStudio)).toEqual({
96
- displayName: 'Firebase Studio',
97
- });
78
+ describe('detectIde with ideInfoFromFile', () => {
79
+ const ideProcessInfo = { pid: 123, command: 'some/path/to/code' };
80
+ afterEach(() => {
81
+ vi.unstubAllEnvs();
98
82
  });
99
- it('should return correct info for Trae', () => {
100
- expect(getIdeInfo(DetectedIde.Trae)).toEqual({ displayName: 'Trae' });
83
+ it('should use the name and displayName from the file', () => {
84
+ const ideInfoFromFile = {
85
+ name: 'custom-ide',
86
+ displayName: 'Custom IDE',
87
+ };
88
+ expect(detectIde(ideProcessInfo, ideInfoFromFile)).toEqual(ideInfoFromFile);
101
89
  });
102
- it('should return correct info for VSCode', () => {
103
- expect(getIdeInfo(DetectedIde.VSCode)).toEqual({ displayName: 'VS Code' });
90
+ it('should fall back to env detection if name is missing', () => {
91
+ const ideInfoFromFile = { displayName: 'Custom IDE' };
92
+ vi.stubEnv('TERM_PROGRAM', 'vscode');
93
+ vi.stubEnv('CURSOR_TRACE_ID', '');
94
+ expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(IDE_DEFINITIONS.vscode);
104
95
  });
105
- it('should return correct info for VSCodeFork', () => {
106
- expect(getIdeInfo(DetectedIde.VSCodeFork)).toEqual({ displayName: 'IDE' });
96
+ it('should fall back to env detection if displayName is missing', () => {
97
+ const ideInfoFromFile = { name: 'custom-ide' };
98
+ vi.stubEnv('TERM_PROGRAM', 'vscode');
99
+ vi.stubEnv('CURSOR_TRACE_ID', '');
100
+ expect(detectIde(ideProcessInfo, ideInfoFromFile)).toBe(IDE_DEFINITIONS.vscode);
107
101
  });
108
102
  });
109
103
  //# sourceMappingURL=detect-ide.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect-ide.test.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-ide.test.js","sourceRoot":"","sources":["../../../src/ide/detect-ide.test.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { type DetectedIde } from '../ide/detect-ide.js';
6
+ import { type IdeInfo } from '../ide/detect-ide.js';
7
7
  export type DiffUpdateResult = {
8
8
  status: 'accepted';
9
9
  content?: string;
@@ -28,8 +28,8 @@ export declare class IdeClient {
28
28
  private client;
29
29
  private state;
30
30
  private currentIde;
31
- private currentIdeDisplayName;
32
31
  private ideProcessInfo;
32
+ private connectionConfig;
33
33
  private authToken;
34
34
  private diffResponses;
35
35
  private statusListeners;
@@ -90,13 +90,13 @@ export declare class IdeClient {
90
90
  }): Promise<string | undefined>;
91
91
  resolveDiffFromCli(filePath: string, outcome: 'accepted' | 'rejected'): Promise<void>;
92
92
  disconnect(): Promise<void>;
93
- getCurrentIde(): DetectedIde | undefined;
93
+ getCurrentIde(): IdeInfo | undefined;
94
94
  getConnectionStatus(): IDEConnectionState;
95
95
  getDetectedIdeDisplayName(): string | undefined;
96
96
  isDiffingEnabled(): boolean;
97
97
  private discoverTools;
98
98
  private setState;
99
- static validateWorkspacePath(ideWorkspacePath: string | undefined, currentIdeDisplayName: string | undefined, cwd: string): {
99
+ static validateWorkspacePath(ideWorkspacePath: string | undefined, cwd: string): {
100
100
  isValid: boolean;
101
101
  error?: string;
102
102
  };
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import * as fs from 'node:fs';
7
7
  import { isSubpath } from '../utils/paths.js';
8
- import { detectIde, getIdeInfo } from '../ide/detect-ide.js';
8
+ import { detectIde } from '../ide/detect-ide.js';
9
9
  import { ideContextStore } from './ideContext.js';
10
10
  import { IdeContextNotificationSchema, IdeDiffAcceptedNotificationSchema, IdeDiffClosedNotificationSchema, IdeDiffRejectedNotificationSchema, } from './types.js';
11
11
  import { getIdeProcessInfo } from './process-utils.js';
@@ -51,8 +51,8 @@ export class IdeClient {
51
51
  details: 'IDE integration is currently disabled. To enable it, run /ide enable.',
52
52
  };
53
53
  currentIde;
54
- currentIdeDisplayName;
55
54
  ideProcessInfo;
55
+ connectionConfig;
56
56
  authToken;
57
57
  diffResponses = new Map();
58
58
  statusListeners = new Set();
@@ -70,10 +70,8 @@ export class IdeClient {
70
70
  IdeClient.instancePromise = (async () => {
71
71
  const client = new IdeClient();
72
72
  client.ideProcessInfo = await getIdeProcessInfo();
73
- client.currentIde = detectIde(client.ideProcessInfo);
74
- if (client.currentIde) {
75
- client.currentIdeDisplayName = getIdeInfo(client.currentIde).displayName;
76
- }
73
+ client.connectionConfig = await client.getConnectionConfigFromFile();
74
+ client.currentIde = detectIde(client.ideProcessInfo, client.connectionConfig?.ideInfo);
77
75
  return client;
78
76
  })();
79
77
  }
@@ -92,31 +90,31 @@ export class IdeClient {
92
90
  this.trustChangeListeners.delete(listener);
93
91
  }
94
92
  async connect() {
95
- if (!this.currentIde || !this.currentIdeDisplayName) {
93
+ if (!this.currentIde) {
96
94
  this.setState(IDEConnectionStatus.Disconnected, `IDE integration is not supported in your current environment. To use this feature, run Gemini CLI in one of these supported IDEs: VS Code or VS Code forks`, false);
97
95
  return;
98
96
  }
99
97
  this.setState(IDEConnectionStatus.Connecting);
100
- const configFromFile = await this.getConnectionConfigFromFile();
101
- if (configFromFile?.authToken) {
102
- this.authToken = configFromFile.authToken;
98
+ this.connectionConfig = await this.getConnectionConfigFromFile();
99
+ if (this.connectionConfig?.authToken) {
100
+ this.authToken = this.connectionConfig.authToken;
103
101
  }
104
- const workspacePath = configFromFile?.workspacePath ??
102
+ const workspacePath = this.connectionConfig?.workspacePath ??
105
103
  process.env['CELL_CLI_IDE_WORKSPACE_PATH'];
106
- const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath, this.currentIdeDisplayName, process.cwd());
104
+ const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath, process.cwd());
107
105
  if (!isValid) {
108
106
  this.setState(IDEConnectionStatus.Disconnected, error, true);
109
107
  return;
110
108
  }
111
- if (configFromFile) {
112
- if (configFromFile.port) {
113
- const connected = await this.establishHttpConnection(configFromFile.port);
109
+ if (this.connectionConfig) {
110
+ if (this.connectionConfig.port) {
111
+ const connected = await this.establishHttpConnection(this.connectionConfig.port);
114
112
  if (connected) {
115
113
  return;
116
114
  }
117
115
  }
118
- if (configFromFile.stdio) {
119
- const connected = await this.establishStdioConnection(configFromFile.stdio);
116
+ if (this.connectionConfig.stdio) {
117
+ const connected = await this.establishStdioConnection(this.connectionConfig.stdio);
120
118
  if (connected) {
121
119
  return;
122
120
  }
@@ -136,7 +134,7 @@ export class IdeClient {
136
134
  return;
137
135
  }
138
136
  }
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);
137
+ this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension in ${this.currentIde.displayName}. Please ensure the extension is running. To install the extension, run /ide install.`, true);
140
138
  }
141
139
  /**
142
140
  * Opens a diff view in the IDE, allowing the user to review and accept or
@@ -302,7 +300,7 @@ export class IdeClient {
302
300
  return this.state;
303
301
  }
304
302
  getDetectedIdeDisplayName() {
305
- return this.currentIdeDisplayName;
303
+ return this.currentIde?.displayName;
306
304
  }
307
305
  isDiffingEnabled() {
308
306
  return (!!this.client &&
@@ -364,17 +362,17 @@ export class IdeClient {
364
362
  ideContextStore.clear();
365
363
  }
366
364
  }
367
- static validateWorkspacePath(ideWorkspacePath, currentIdeDisplayName, cwd) {
365
+ static validateWorkspacePath(ideWorkspacePath, cwd) {
368
366
  if (ideWorkspacePath === undefined) {
369
367
  return {
370
368
  isValid: false,
371
- error: `Failed to connect to IDE companion extension in ${currentIdeDisplayName}. Please ensure the extension is running. To install the extension, run /ide install.`,
369
+ error: `Failed to connect to IDE companion extension. Please ensure the extension is running. To install the extension, run /ide install.`,
372
370
  };
373
371
  }
374
372
  if (ideWorkspacePath === '') {
375
373
  return {
376
374
  isValid: false,
377
- error: `To use this feature, please open a workspace folder in ${currentIdeDisplayName} and try again.`,
375
+ error: `To use this feature, please open a workspace folder in your IDE and try again.`,
378
376
  };
379
377
  }
380
378
  const ideWorkspacePaths = ideWorkspacePath.split(path.delimiter);
@@ -386,7 +384,7 @@ export class IdeClient {
386
384
  if (!isWithinWorkspace) {
387
385
  return {
388
386
  isValid: false,
389
- error: `Directory mismatch. Gemini CLI is running in a different location than the open workspace in ${currentIdeDisplayName}. Please run the CLI from one of the following directories: ${ideWorkspacePaths.join(', ')}`,
387
+ error: `Directory mismatch. Gemini CLI is running in a different location than the open workspace in the IDE. Please run the CLI from one of the following directories: ${ideWorkspacePaths.join(', ')}`,
390
388
  };
391
389
  }
392
390
  return { isValid: true };
@@ -399,11 +397,11 @@ export class IdeClient {
399
397
  return port;
400
398
  }
401
399
  getStdioConfigFromEnv() {
402
- const command = process.env['GEMINI_CLI_IDE_SERVER_STDIO_COMMAND'];
400
+ const command = process.env['CELL_CLI_IDE_SERVER_STDIO_COMMAND'];
403
401
  if (!command) {
404
402
  return undefined;
405
403
  }
406
- const argsStr = process.env['GEMINI_CLI_IDE_SERVER_STDIO_ARGS'];
404
+ const argsStr = process.env['CELL_CLI_IDE_SERVER_STDIO_ARGS'];
407
405
  let args = [];
408
406
  if (argsStr) {
409
407
  try {
@@ -412,11 +410,11 @@ export class IdeClient {
412
410
  args = parsedArgs;
413
411
  }
414
412
  else {
415
- logger.error('GEMINI_CLI_IDE_SERVER_STDIO_ARGS must be a JSON array string.');
413
+ logger.error('CELL_CLI_IDE_SERVER_STDIO_ARGS must be a JSON array string.');
416
414
  }
417
415
  }
418
416
  catch (e) {
419
- logger.error('Failed to parse GEMINI_CLI_IDE_SERVER_STDIO_ARGS:', e);
417
+ logger.error('Failed to parse CELL_CLI_IDE_SERVER_STDIO_ARGS:', e);
420
418
  }
421
419
  }
422
420
  return { command, args };
@@ -446,6 +444,9 @@ export class IdeClient {
446
444
  logger.debug('Failed to read IDE connection directory:', e);
447
445
  return undefined;
448
446
  }
447
+ if (!portFiles) {
448
+ return undefined;
449
+ }
449
450
  const fileRegex = new RegExp(`^cell-ide-server-${this.ideProcessInfo.pid}-\\d+\\.json$`);
450
451
  const matchingFiles = portFiles
451
452
  .filter((file) => fileRegex.test(file))
@@ -474,7 +475,7 @@ export class IdeClient {
474
475
  if (!content) {
475
476
  return false;
476
477
  }
477
- const { isValid } = IdeClient.validateWorkspacePath(content.workspacePath, this.currentIdeDisplayName, process.cwd());
478
+ const { isValid } = IdeClient.validateWorkspacePath(content.workspacePath, process.cwd());
478
479
  return isValid;
479
480
  });
480
481
  if (validWorkspaces.length === 0) {
@@ -493,10 +494,10 @@ export class IdeClient {
493
494
  return validWorkspaces[0];
494
495
  }
495
496
  createProxyAwareFetch() {
496
- // ignore proxy for 'localhost' by deafult to allow connecting to the ide mcp server
497
+ // ignore proxy for '127.0.0.1' by deafult to allow connecting to the ide mcp server
497
498
  const existingNoProxy = process.env['NO_PROXY'] || '';
498
499
  const agent = new EnvHttpProxyAgent({
499
- noProxy: [existingNoProxy, 'localhost'].filter(Boolean).join(','),
500
+ noProxy: [existingNoProxy, '127.0.0.1'].filter(Boolean).join(','),
500
501
  });
501
502
  const undiciPromise = import('undici');
502
503
  return async (url, init) => {
@@ -510,7 +511,7 @@ export class IdeClient {
510
511
  return new Response(response.body, {
511
512
  status: response.status,
512
513
  statusText: response.statusText,
513
- headers: response.headers,
514
+ headers: [...response.headers.entries()],
514
515
  });
515
516
  };
516
517
  }
@@ -639,6 +640,6 @@ export class IdeClient {
639
640
  }
640
641
  function getIdeServerHost() {
641
642
  const isInContainer = fs.existsSync('/.dockerenv') || fs.existsSync('/run/.containerenv');
642
- return isInContainer ? 'host.docker.internal' : 'localhost';
643
+ return isInContainer ? 'host.docker.internal' : '127.0.0.1';
643
644
  }
644
645
  //# sourceMappingURL=ide-client.js.map