@office-ai/aioncli-core 0.1.21 → 0.2.3

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 (352) 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/src/code_assist/converter.d.ts +3 -2
  5. package/dist/src/code_assist/converter.js +1 -0
  6. package/dist/src/code_assist/converter.js.map +1 -1
  7. package/dist/src/code_assist/oauth2.d.ts +2 -0
  8. package/dist/src/code_assist/oauth2.js +47 -25
  9. package/dist/src/code_assist/oauth2.js.map +1 -1
  10. package/dist/src/code_assist/oauth2.test.js +99 -8
  11. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  12. package/dist/src/code_assist/server.js +1 -1
  13. package/dist/src/code_assist/server.js.map +1 -1
  14. package/dist/src/code_assist/setup.js +48 -17
  15. package/dist/src/code_assist/setup.js.map +1 -1
  16. package/dist/src/code_assist/setup.test.js +114 -8
  17. package/dist/src/code_assist/setup.test.js.map +1 -1
  18. package/dist/src/config/config.d.ts +27 -8
  19. package/dist/src/config/config.js +56 -25
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +109 -1
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/core/client.d.ts +18 -15
  24. package/dist/src/core/client.js +275 -63
  25. package/dist/src/core/client.js.map +1 -1
  26. package/dist/src/core/client.test.js +631 -36
  27. package/dist/src/core/client.test.js.map +1 -1
  28. package/dist/src/core/contentGenerator.js +20 -12
  29. package/dist/src/core/contentGenerator.js.map +1 -1
  30. package/dist/src/core/contentGenerator.test.js +39 -15
  31. package/dist/src/core/contentGenerator.test.js.map +1 -1
  32. package/dist/src/core/coreToolScheduler.d.ts +2 -1
  33. package/dist/src/core/coreToolScheduler.js +26 -4
  34. package/dist/src/core/coreToolScheduler.js.map +1 -1
  35. package/dist/src/core/coreToolScheduler.test.js +230 -71
  36. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  37. package/dist/src/core/geminiChat.d.ts +11 -1
  38. package/dist/src/core/geminiChat.js +85 -11
  39. package/dist/src/core/geminiChat.js.map +1 -1
  40. package/dist/src/core/logger.d.ts +22 -1
  41. package/dist/src/core/logger.js +103 -17
  42. package/dist/src/core/logger.js.map +1 -1
  43. package/dist/src/core/logger.test.js +86 -20
  44. package/dist/src/core/logger.test.js.map +1 -1
  45. package/dist/src/core/loggingContentGenerator.d.ts +1 -0
  46. package/dist/src/core/loggingContentGenerator.js +7 -1
  47. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  48. package/dist/src/core/nonInteractiveToolExecutor.d.ts +2 -2
  49. package/dist/src/core/nonInteractiveToolExecutor.js +11 -3
  50. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  51. package/dist/src/core/nonInteractiveToolExecutor.test.js +95 -46
  52. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  53. package/dist/src/core/openaiContentGenerator.js +71 -25
  54. package/dist/src/core/openaiContentGenerator.js.map +1 -1
  55. package/dist/src/core/openaiContentGenerator.test.js +1 -1
  56. package/dist/src/core/openaiContentGenerator.test.js.map +1 -1
  57. package/dist/src/core/prompts.js +4 -4
  58. package/dist/src/core/prompts.js.map +1 -1
  59. package/dist/src/core/subagent.js +5 -5
  60. package/dist/src/core/subagent.js.map +1 -1
  61. package/dist/src/core/subagent.test.js +3 -3
  62. package/dist/src/core/subagent.test.js.map +1 -1
  63. package/dist/src/generated/git-commit.d.ts +7 -0
  64. package/dist/src/generated/git-commit.js +10 -0
  65. package/dist/src/generated/git-commit.js.map +1 -0
  66. package/dist/src/ide/constants.d.ts +6 -0
  67. package/dist/src/ide/constants.js +7 -0
  68. package/dist/src/ide/constants.js.map +1 -0
  69. package/dist/src/ide/detect-ide.d.ts +12 -2
  70. package/dist/src/ide/detect-ide.js +64 -5
  71. package/dist/src/ide/detect-ide.js.map +1 -1
  72. package/dist/src/ide/detect-ide.test.d.ts +6 -0
  73. package/dist/src/ide/detect-ide.test.js +65 -0
  74. package/dist/src/ide/detect-ide.test.js.map +1 -0
  75. package/dist/src/ide/ide-client.d.ts +9 -1
  76. package/dist/src/ide/ide-client.js +113 -30
  77. package/dist/src/ide/ide-client.js.map +1 -1
  78. package/dist/src/ide/ide-client.test.d.ts +6 -0
  79. package/dist/src/ide/ide-client.test.js +43 -0
  80. package/dist/src/ide/ide-client.test.js.map +1 -0
  81. package/dist/src/ide/ide-installer.js +23 -34
  82. package/dist/src/ide/ide-installer.js.map +1 -1
  83. package/dist/src/ide/ide-installer.test.js +6 -8
  84. package/dist/src/ide/ide-installer.test.js.map +1 -1
  85. package/dist/src/ide/ideContext.d.ts +42 -42
  86. package/dist/src/ide/process-utils.d.ts +19 -0
  87. package/dist/src/ide/process-utils.js +140 -0
  88. package/dist/src/ide/process-utils.js.map +1 -0
  89. package/dist/src/index.d.ts +6 -1
  90. package/dist/src/index.js +6 -1
  91. package/dist/src/index.js.map +1 -1
  92. package/dist/src/mcp/google-auth-provider.js +9 -0
  93. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  94. package/dist/src/mcp/google-auth-provider.test.js +45 -10
  95. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  96. package/dist/src/mcp/oauth-provider.d.ts +0 -1
  97. package/dist/src/mcp/oauth-provider.js +176 -59
  98. package/dist/src/mcp/oauth-provider.js.map +1 -1
  99. package/dist/src/mcp/oauth-provider.test.js +132 -62
  100. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  101. package/dist/src/mcp/oauth-utils.d.ts +3 -1
  102. package/dist/src/mcp/oauth-utils.js +50 -12
  103. package/dist/src/mcp/oauth-utils.js.map +1 -1
  104. package/dist/src/mcp/oauth-utils.test.js +17 -2
  105. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  106. package/dist/src/mocks/msw.d.ts +6 -0
  107. package/dist/src/mocks/msw.js +8 -0
  108. package/dist/src/mocks/msw.js.map +1 -0
  109. package/dist/src/services/chatRecordingService.d.ts +150 -0
  110. package/dist/src/services/chatRecordingService.js +318 -0
  111. package/dist/src/services/chatRecordingService.js.map +1 -0
  112. package/dist/src/services/chatRecordingService.test.d.ts +6 -0
  113. package/dist/src/services/chatRecordingService.test.js +288 -0
  114. package/dist/src/services/chatRecordingService.test.js.map +1 -0
  115. package/dist/src/services/fileSystemService.d.ts +31 -0
  116. package/dist/src/services/fileSystemService.js +18 -0
  117. package/dist/src/services/fileSystemService.js.map +1 -0
  118. package/dist/src/services/fileSystemService.test.d.ts +6 -0
  119. package/dist/src/services/fileSystemService.test.js +41 -0
  120. package/dist/src/services/fileSystemService.test.js.map +1 -0
  121. package/dist/src/services/loopDetectionService.js +9 -10
  122. package/dist/src/services/loopDetectionService.js.map +1 -1
  123. package/dist/src/services/loopDetectionService.test.js +52 -0
  124. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  125. package/dist/src/services/shellExecutionService.d.ts +8 -10
  126. package/dist/src/services/shellExecutionService.js +289 -133
  127. package/dist/src/services/shellExecutionService.js.map +1 -1
  128. package/dist/src/services/shellExecutionService.test.js +274 -30
  129. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  130. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +61 -17
  131. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +211 -233
  132. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  133. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +11 -0
  134. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +250 -94
  135. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  136. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +9 -2
  137. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +19 -9
  138. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  139. package/dist/src/telemetry/constants.d.ts +1 -0
  140. package/dist/src/telemetry/constants.js +1 -0
  141. package/dist/src/telemetry/constants.js.map +1 -1
  142. package/dist/src/telemetry/index.d.ts +2 -2
  143. package/dist/src/telemetry/index.js +2 -2
  144. package/dist/src/telemetry/index.js.map +1 -1
  145. package/dist/src/telemetry/integration.test.circular.js +1 -0
  146. package/dist/src/telemetry/integration.test.circular.js.map +1 -1
  147. package/dist/src/telemetry/loggers.d.ts +3 -1
  148. package/dist/src/telemetry/loggers.js +39 -6
  149. package/dist/src/telemetry/loggers.js.map +1 -1
  150. package/dist/src/telemetry/loggers.test.js +37 -7
  151. package/dist/src/telemetry/loggers.test.js.map +1 -1
  152. package/dist/src/telemetry/metrics.d.ts +5 -1
  153. package/dist/src/telemetry/metrics.js +23 -9
  154. package/dist/src/telemetry/metrics.js.map +1 -1
  155. package/dist/src/telemetry/metrics.test.js +31 -1
  156. package/dist/src/telemetry/metrics.test.js.map +1 -1
  157. package/dist/src/telemetry/sdk.d.ts +1 -1
  158. package/dist/src/telemetry/sdk.js +80 -44
  159. package/dist/src/telemetry/sdk.js.map +1 -1
  160. package/dist/src/telemetry/sdk.test.d.ts +6 -0
  161. package/dist/src/telemetry/sdk.test.js +82 -0
  162. package/dist/src/telemetry/sdk.test.js.map +1 -0
  163. package/dist/src/telemetry/telemetry.test.js +2 -2
  164. package/dist/src/telemetry/telemetry.test.js.map +1 -1
  165. package/dist/src/telemetry/types.d.ts +41 -14
  166. package/dist/src/telemetry/types.js +52 -23
  167. package/dist/src/telemetry/types.js.map +1 -1
  168. package/dist/src/telemetry/uiTelemetry.d.ts +4 -0
  169. package/dist/src/telemetry/uiTelemetry.js +14 -1
  170. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  171. package/dist/src/telemetry/uiTelemetry.test.js +45 -9
  172. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  173. package/dist/src/test-utils/config.d.ts +16 -0
  174. package/dist/src/test-utils/config.js +32 -0
  175. package/dist/src/test-utils/config.js.map +1 -0
  176. package/dist/src/test-utils/tools.d.ts +29 -8
  177. package/dist/src/test-utils/tools.js +80 -16
  178. package/dist/src/test-utils/tools.js.map +1 -1
  179. package/dist/src/tools/edit.d.ts +1 -1
  180. package/dist/src/tools/edit.js +23 -19
  181. package/dist/src/tools/edit.js.map +1 -1
  182. package/dist/src/tools/edit.test.js +11 -3
  183. package/dist/src/tools/edit.test.js.map +1 -1
  184. package/dist/src/tools/glob.d.ts +1 -1
  185. package/dist/src/tools/glob.js +15 -16
  186. package/dist/src/tools/glob.js.map +1 -1
  187. package/dist/src/tools/glob.test.js +20 -0
  188. package/dist/src/tools/glob.test.js.map +1 -1
  189. package/dist/src/tools/grep.d.ts +1 -1
  190. package/dist/src/tools/grep.js +7 -13
  191. package/dist/src/tools/grep.js.map +1 -1
  192. package/dist/src/tools/ls.d.ts +4 -23
  193. package/dist/src/tools/ls.js +77 -79
  194. package/dist/src/tools/ls.js.map +1 -1
  195. package/dist/src/tools/ls.test.js +62 -34
  196. package/dist/src/tools/ls.test.js.map +1 -1
  197. package/dist/src/tools/mcp-client-manager.d.ts +38 -0
  198. package/dist/src/tools/mcp-client-manager.js +74 -0
  199. package/dist/src/tools/mcp-client-manager.js.map +1 -0
  200. package/dist/src/tools/mcp-client-manager.test.d.ts +6 -0
  201. package/dist/src/tools/mcp-client-manager.test.js +39 -0
  202. package/dist/src/tools/mcp-client-manager.test.js.map +1 -0
  203. package/dist/src/tools/mcp-client.d.ts +43 -0
  204. package/dist/src/tools/mcp-client.js +157 -11
  205. package/dist/src/tools/mcp-client.js.map +1 -1
  206. package/dist/src/tools/mcp-client.test.js +62 -276
  207. package/dist/src/tools/mcp-client.test.js.map +1 -1
  208. package/dist/src/tools/mcp-tool.d.ts +6 -13
  209. package/dist/src/tools/mcp-tool.js +62 -34
  210. package/dist/src/tools/mcp-tool.js.map +1 -1
  211. package/dist/src/tools/mcp-tool.test.js +118 -59
  212. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  213. package/dist/src/tools/memoryTool.d.ts +9 -13
  214. package/dist/src/tools/memoryTool.js +122 -121
  215. package/dist/src/tools/memoryTool.js.map +1 -1
  216. package/dist/src/tools/memoryTool.test.js +38 -18
  217. package/dist/src/tools/memoryTool.test.js.map +1 -1
  218. package/dist/src/tools/read-file.d.ts +1 -1
  219. package/dist/src/tools/read-file.js +20 -18
  220. package/dist/src/tools/read-file.js.map +1 -1
  221. package/dist/src/tools/read-file.test.js +8 -0
  222. package/dist/src/tools/read-file.test.js.map +1 -1
  223. package/dist/src/tools/read-many-files.d.ts +3 -5
  224. package/dist/src/tools/read-many-files.js +121 -105
  225. package/dist/src/tools/read-many-files.js.map +1 -1
  226. package/dist/src/tools/read-many-files.test.js +94 -37
  227. package/dist/src/tools/read-many-files.test.js.map +1 -1
  228. package/dist/src/tools/shell.d.ts +4 -6
  229. package/dist/src/tools/shell.js +120 -124
  230. package/dist/src/tools/shell.js.map +1 -1
  231. package/dist/src/tools/shell.test.js +63 -65
  232. package/dist/src/tools/shell.test.js.map +1 -1
  233. package/dist/src/tools/tool-error.d.ts +1 -0
  234. package/dist/src/tools/tool-error.js +1 -0
  235. package/dist/src/tools/tool-error.js.map +1 -1
  236. package/dist/src/tools/tool-registry.d.ts +14 -18
  237. package/dist/src/tools/tool-registry.js +73 -106
  238. package/dist/src/tools/tool-registry.js.map +1 -1
  239. package/dist/src/tools/tool-registry.test.js +24 -192
  240. package/dist/src/tools/tool-registry.test.js.map +1 -1
  241. package/dist/src/tools/tools.d.ts +33 -89
  242. package/dist/src/tools/tools.js +76 -119
  243. package/dist/src/tools/tools.js.map +1 -1
  244. package/dist/src/tools/tools.test.js +91 -2
  245. package/dist/src/tools/tools.test.js.map +1 -1
  246. package/dist/src/tools/web-fetch.d.ts +4 -7
  247. package/dist/src/tools/web-fetch.js +58 -64
  248. package/dist/src/tools/web-fetch.js.map +1 -1
  249. package/dist/src/tools/web-fetch.test.js +8 -4
  250. package/dist/src/tools/web-fetch.test.js.map +1 -1
  251. package/dist/src/tools/web-search.d.ts +4 -5
  252. package/dist/src/tools/web-search.js +47 -51
  253. package/dist/src/tools/web-search.js.map +1 -1
  254. package/dist/src/tools/web-search.test.d.ts +6 -0
  255. package/dist/src/tools/web-search.test.js +139 -0
  256. package/dist/src/tools/web-search.test.js.map +1 -0
  257. package/dist/src/tools/write-file.d.ts +15 -10
  258. package/dist/src/tools/write-file.js +134 -145
  259. package/dist/src/tools/write-file.js.map +1 -1
  260. package/dist/src/tools/write-file.test.js +82 -127
  261. package/dist/src/tools/write-file.test.js.map +1 -1
  262. package/dist/src/utils/browser.js +4 -3
  263. package/dist/src/utils/browser.js.map +1 -1
  264. package/dist/src/utils/editCorrector.js +21 -22
  265. package/dist/src/utils/editCorrector.js.map +1 -1
  266. package/dist/src/utils/editor.js +1 -1
  267. package/dist/src/utils/editor.js.map +1 -1
  268. package/dist/src/utils/editor.test.js +10 -10
  269. package/dist/src/utils/editor.test.js.map +1 -1
  270. package/dist/src/utils/environmentContext.js +2 -2
  271. package/dist/src/utils/environmentContext.js.map +1 -1
  272. package/dist/src/utils/environmentContext.test.js +3 -2
  273. package/dist/src/utils/environmentContext.test.js.map +1 -1
  274. package/dist/src/utils/errorParsing.d.ts +8 -0
  275. package/dist/src/utils/errorParsing.js +93 -0
  276. package/dist/src/utils/errorParsing.js.map +1 -0
  277. package/dist/src/utils/errorParsing.test.d.ts +6 -0
  278. package/dist/src/utils/errorParsing.test.js +172 -0
  279. package/dist/src/utils/errorParsing.test.js.map +1 -0
  280. package/dist/src/utils/fileUtils.d.ts +2 -1
  281. package/dist/src/utils/fileUtils.js +3 -3
  282. package/dist/src/utils/fileUtils.js.map +1 -1
  283. package/dist/src/utils/fileUtils.test.js +18 -17
  284. package/dist/src/utils/fileUtils.test.js.map +1 -1
  285. package/dist/src/utils/filesearch/crawler.d.ts +15 -0
  286. package/dist/src/utils/filesearch/crawler.js +50 -0
  287. package/dist/src/utils/filesearch/crawler.js.map +1 -0
  288. package/dist/src/utils/filesearch/crawler.test.d.ts +6 -0
  289. package/dist/src/utils/filesearch/crawler.test.js +468 -0
  290. package/dist/src/utils/filesearch/crawler.test.js.map +1 -0
  291. package/dist/src/utils/filesearch/fileSearch.d.ts +9 -53
  292. package/dist/src/utils/filesearch/fileSearch.js +63 -118
  293. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  294. package/dist/src/utils/filesearch/fileSearch.test.js +95 -197
  295. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  296. package/dist/src/utils/filesearch/ignore.d.ts +7 -0
  297. package/dist/src/utils/filesearch/ignore.js +25 -0
  298. package/dist/src/utils/filesearch/ignore.js.map +1 -1
  299. package/dist/src/utils/filesearch/ignore.test.js +89 -2
  300. package/dist/src/utils/filesearch/ignore.test.js.map +1 -1
  301. package/dist/src/utils/filesearch/result-cache.d.ts +1 -2
  302. package/dist/src/utils/filesearch/result-cache.js +1 -3
  303. package/dist/src/utils/filesearch/result-cache.js.map +1 -1
  304. package/dist/src/utils/filesearch/result-cache.test.js +3 -4
  305. package/dist/src/utils/filesearch/result-cache.test.js.map +1 -1
  306. package/dist/src/utils/getPty.d.ts +19 -0
  307. package/dist/src/utils/getPty.js +23 -0
  308. package/dist/src/utils/getPty.js.map +1 -0
  309. package/dist/src/utils/memoryDiscovery.js +3 -3
  310. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  311. package/dist/src/utils/memoryDiscovery.test.js +3 -2
  312. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  313. package/dist/src/utils/memoryImportProcessor.js +3 -7
  314. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  315. package/dist/src/utils/memoryImportProcessor.test.js +17 -20
  316. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  317. package/dist/src/utils/nextSpeakerChecker.js +3 -4
  318. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  319. package/dist/src/utils/paths.d.ts +7 -0
  320. package/dist/src/utils/paths.js +15 -0
  321. package/dist/src/utils/paths.js.map +1 -1
  322. package/dist/src/utils/paths.test.js +74 -2
  323. package/dist/src/utils/paths.test.js.map +1 -1
  324. package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
  325. package/dist/src/utils/quotaErrorDetection.js.map +1 -1
  326. package/dist/src/utils/retry.js +40 -0
  327. package/dist/src/utils/retry.js.map +1 -1
  328. package/dist/src/utils/schemaValidator.d.ts +1 -8
  329. package/dist/src/utils/schemaValidator.js +1 -32
  330. package/dist/src/utils/schemaValidator.js.map +1 -1
  331. package/dist/src/utils/secure-browser-launcher.js +4 -3
  332. package/dist/src/utils/secure-browser-launcher.js.map +1 -1
  333. package/dist/src/utils/shell-utils.d.ts +39 -0
  334. package/dist/src/utils/shell-utils.js +72 -2
  335. package/dist/src/utils/shell-utils.js.map +1 -1
  336. package/dist/src/utils/shell-utils.test.js +132 -4
  337. package/dist/src/utils/shell-utils.test.js.map +1 -1
  338. package/dist/src/utils/systemEncoding.js +1 -1
  339. package/dist/src/utils/systemEncoding.js.map +1 -1
  340. package/dist/src/utils/systemEncoding.test.js +23 -23
  341. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  342. package/dist/src/utils/user_account.js +58 -48
  343. package/dist/src/utils/user_account.js.map +1 -1
  344. package/dist/src/utils/user_account.test.js +76 -9
  345. package/dist/src/utils/user_account.test.js.map +1 -1
  346. package/dist/src/utils/workspaceContext.d.ts +22 -7
  347. package/dist/src/utils/workspaceContext.js +81 -55
  348. package/dist/src/utils/workspaceContext.js.map +1 -1
  349. package/dist/src/utils/workspaceContext.test.js +221 -137
  350. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  351. package/dist/tsconfig.tsbuildinfo +1 -1
  352. package/package.json +21 -8
@@ -4,10 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import * as fs from 'node:fs';
7
- import { detectIde, DetectedIde, getIdeDisplayName, } from '../ide/detect-ide.js';
7
+ import { isSubpath } from '../utils/paths.js';
8
+ import { detectIde, DetectedIde, getIdeInfo } from '../ide/detect-ide.js';
8
9
  import { ideContext, IdeContextNotificationSchema, IdeDiffAcceptedNotificationSchema, IdeDiffClosedNotificationSchema, CloseDiffResponseSchema, } from '../ide/ideContext.js';
10
+ import { getIdeProcessId } from './process-utils.js';
9
11
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
10
12
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
13
+ import * as os from 'node:os';
14
+ import * as path from 'node:path';
15
+ import { EnvHttpProxyAgent } from 'undici';
11
16
  const logger = {
12
17
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
18
  debug: (...args) => console.debug('[DEBUG] [IDEClient]', ...args),
@@ -43,10 +48,11 @@ export class IdeClient {
43
48
  currentIde;
44
49
  currentIdeDisplayName;
45
50
  diffResponses = new Map();
51
+ statusListeners = new Set();
46
52
  constructor() {
47
53
  this.currentIde = detectIde();
48
54
  if (this.currentIde) {
49
- this.currentIdeDisplayName = getIdeDisplayName(this.currentIde);
55
+ this.currentIdeDisplayName = getIdeInfo(this.currentIde).displayName;
50
56
  }
51
57
  }
52
58
  static getInstance() {
@@ -55,22 +61,43 @@ export class IdeClient {
55
61
  }
56
62
  return IdeClient.instance;
57
63
  }
64
+ addStatusChangeListener(listener) {
65
+ this.statusListeners.add(listener);
66
+ }
67
+ removeStatusChangeListener(listener) {
68
+ this.statusListeners.delete(listener);
69
+ }
58
70
  async connect() {
59
- this.setState(IDEConnectionStatus.Connecting);
60
71
  if (!this.currentIde || !this.currentIdeDisplayName) {
61
72
  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: ${Object.values(DetectedIde)
62
- .map((ide) => getIdeDisplayName(ide))
63
- .join(', ')}`, true);
73
+ .map((ide) => getIdeInfo(ide).displayName)
74
+ .join(', ')}`, false);
64
75
  return;
65
76
  }
66
- if (!this.validateWorkspacePath()) {
77
+ this.setState(IDEConnectionStatus.Connecting);
78
+ const ideInfoFromFile = await this.getIdeInfoFromFile();
79
+ const workspacePath = ideInfoFromFile.workspacePath ??
80
+ process.env['GEMINI_CLI_IDE_WORKSPACE_PATH'];
81
+ const { isValid, error } = IdeClient.validateWorkspacePath(workspacePath, this.currentIdeDisplayName, process.cwd());
82
+ if (!isValid) {
83
+ this.setState(IDEConnectionStatus.Disconnected, error, true);
67
84
  return;
68
85
  }
69
- const port = this.getPortFromEnv();
70
- if (!port) {
71
- return;
86
+ const portFromFile = ideInfoFromFile.port;
87
+ if (portFromFile) {
88
+ const connected = await this.establishConnection(portFromFile);
89
+ if (connected) {
90
+ return;
91
+ }
72
92
  }
73
- await this.establishConnection(port);
93
+ const portFromEnv = this.getPortFromEnv();
94
+ if (portFromEnv) {
95
+ const connected = await this.establishConnection(portFromEnv);
96
+ if (connected) {
97
+ return;
98
+ }
99
+ }
100
+ this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension for ${this.currentIdeDisplayName}. Please ensure the extension is running. To install the extension, run /ide install.`, true);
74
101
  }
75
102
  /**
76
103
  * A diff is accepted with any modifications if the user performs one of the
@@ -163,39 +190,95 @@ export class IdeClient {
163
190
  // disconnected, so that the first detail message is preserved.
164
191
  if (!isAlreadyDisconnected) {
165
192
  this.state = { status, details };
166
- if (logToConsole) {
167
- logger.error(details);
193
+ for (const listener of this.statusListeners) {
194
+ listener(this.state);
195
+ }
196
+ if (details) {
197
+ if (logToConsole) {
198
+ logger.error(details);
199
+ }
200
+ else {
201
+ // We only want to log disconnect messages to debug
202
+ // if they are not already being logged to the console.
203
+ logger.debug(details);
204
+ }
168
205
  }
169
206
  }
170
207
  if (status === IDEConnectionStatus.Disconnected) {
171
- logger.debug(details);
172
208
  ideContext.clearIdeContext();
173
209
  }
174
210
  }
175
- validateWorkspacePath() {
176
- const ideWorkspacePath = process.env['GEMINI_CLI_IDE_WORKSPACE_PATH'];
211
+ static validateWorkspacePath(ideWorkspacePath, currentIdeDisplayName, cwd) {
177
212
  if (ideWorkspacePath === undefined) {
178
- this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension for ${this.currentIdeDisplayName}. Please ensure the extension is running and try refreshing your terminal. To install the extension, run /ide install.`, true);
179
- return false;
213
+ return {
214
+ isValid: false,
215
+ error: `Failed to connect to IDE companion extension for ${currentIdeDisplayName}. Please ensure the extension is running. To install the extension, run /ide install.`,
216
+ };
180
217
  }
181
218
  if (ideWorkspacePath === '') {
182
- this.setState(IDEConnectionStatus.Disconnected, `To use this feature, please open a single workspace folder in ${this.currentIdeDisplayName} and try again.`, true);
183
- return false;
219
+ return {
220
+ isValid: false,
221
+ error: `To use this feature, please open a workspace folder in ${currentIdeDisplayName} and try again.`,
222
+ };
184
223
  }
185
- if (getRealPath(ideWorkspacePath) !== getRealPath(process.cwd())) {
186
- this.setState(IDEConnectionStatus.Disconnected, `Directory mismatch. Gemini CLI is running in a different location than the open workspace in ${this.currentIdeDisplayName}. Please run the CLI from the same directory as your project's root folder.`, true);
187
- return false;
224
+ const ideWorkspacePaths = ideWorkspacePath.split(path.delimiter);
225
+ const realCwd = getRealPath(cwd);
226
+ const isWithinWorkspace = ideWorkspacePaths.some((workspacePath) => {
227
+ const idePath = getRealPath(workspacePath);
228
+ return isSubpath(idePath, realCwd);
229
+ });
230
+ if (!isWithinWorkspace) {
231
+ return {
232
+ isValid: false,
233
+ 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(', ')}`,
234
+ };
188
235
  }
189
- return true;
236
+ return { isValid: true };
190
237
  }
191
238
  getPortFromEnv() {
192
239
  const port = process.env['GEMINI_CLI_IDE_SERVER_PORT'];
193
240
  if (!port) {
194
- this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension for ${this.currentIdeDisplayName}. Please ensure the extension is running and try refreshing your terminal. To install the extension, run /ide install.`, true);
195
241
  return undefined;
196
242
  }
197
243
  return port;
198
244
  }
245
+ async getIdeInfoFromFile() {
246
+ try {
247
+ const ideProcessId = await getIdeProcessId();
248
+ const portFile = path.join(os.tmpdir(), `gemini-ide-server-${ideProcessId}.json`);
249
+ const portFileContents = await fs.promises.readFile(portFile, 'utf8');
250
+ const ideInfo = JSON.parse(portFileContents);
251
+ return {
252
+ port: ideInfo?.port?.toString(),
253
+ workspacePath: ideInfo?.workspacePath,
254
+ };
255
+ }
256
+ catch (_) {
257
+ return {};
258
+ }
259
+ }
260
+ createProxyAwareFetch() {
261
+ // ignore proxy for 'localhost' by deafult to allow connecting to the ide mcp server
262
+ const existingNoProxy = process.env['NO_PROXY'] || '';
263
+ const agent = new EnvHttpProxyAgent({
264
+ noProxy: [existingNoProxy, 'localhost'].filter(Boolean).join(','),
265
+ });
266
+ const undiciPromise = import('undici');
267
+ return async (url, init) => {
268
+ const { fetch: fetchFn } = await undiciPromise;
269
+ const fetchOptions = {
270
+ ...init,
271
+ dispatcher: agent,
272
+ };
273
+ const options = fetchOptions;
274
+ const response = await fetchFn(url, options);
275
+ return new Response(response.body, {
276
+ status: response.status,
277
+ statusText: response.statusText,
278
+ headers: new Headers(response.headers),
279
+ });
280
+ };
281
+ }
199
282
  registerClientHandlers() {
200
283
  if (!this.client) {
201
284
  return;
@@ -240,13 +323,15 @@ export class IdeClient {
240
323
  // TODO(#3487): use the CLI version here.
241
324
  version: '1.0.0',
242
325
  });
243
- transport = new StreamableHTTPClientTransport(new URL(`http://${getIdeServerHost()}:${port}/mcp`));
326
+ transport = new StreamableHTTPClientTransport(new URL(`http://${getIdeServerHost()}:${port}/mcp`), {
327
+ fetch: this.createProxyAwareFetch(),
328
+ });
244
329
  await this.client.connect(transport);
245
330
  this.registerClientHandlers();
246
331
  this.setState(IDEConnectionStatus.Connected);
332
+ return true;
247
333
  }
248
334
  catch (_error) {
249
- this.setState(IDEConnectionStatus.Disconnected, `Failed to connect to IDE companion extension for ${this.currentIdeDisplayName}. Please ensure the extension is running and try refreshing your terminal. To install the extension, run /ide install.`, true);
250
335
  if (transport) {
251
336
  try {
252
337
  await transport.close();
@@ -255,14 +340,12 @@ export class IdeClient {
255
340
  logger.debug('Failed to close transport:', closeError);
256
341
  }
257
342
  }
343
+ return false;
258
344
  }
259
345
  }
260
346
  }
261
347
  function getIdeServerHost() {
262
- const isInContainer = fs.existsSync('/.dockerenv') ||
263
- fs.existsSync('/run/.containerenv') ||
264
- !!process.env.SANDBOX ||
265
- !!process.env.container;
348
+ const isInContainer = fs.existsSync('/.dockerenv') || fs.existsSync('/run/.containerenv');
266
349
  return isInContainer ? 'host.docker.internal' : 'localhost';
267
350
  }
268
351
  //# sourceMappingURL=ide-client.js.map
@@ -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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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import * as path from 'path';
8
+ import { IdeClient } from './ide-client.js';
9
+ describe('IdeClient.validateWorkspacePath', () => {
10
+ it('should return valid if cwd is a subpath of the IDE workspace path', () => {
11
+ const result = IdeClient.validateWorkspacePath('/Users/person/gemini-cli', 'VS Code', '/Users/person/gemini-cli/sub-dir');
12
+ expect(result.isValid).toBe(true);
13
+ });
14
+ it('should return invalid if GEMINI_CLI_IDE_WORKSPACE_PATH is undefined', () => {
15
+ const result = IdeClient.validateWorkspacePath(undefined, 'VS Code', '/Users/person/gemini-cli/sub-dir');
16
+ expect(result.isValid).toBe(false);
17
+ expect(result.error).toContain('Failed to connect');
18
+ });
19
+ it('should return invalid if GEMINI_CLI_IDE_WORKSPACE_PATH is empty', () => {
20
+ const result = IdeClient.validateWorkspacePath('', 'VS Code', '/Users/person/gemini-cli/sub-dir');
21
+ expect(result.isValid).toBe(false);
22
+ expect(result.error).toContain('please open a workspace folder');
23
+ });
24
+ it('should return invalid if cwd is not within the IDE workspace path', () => {
25
+ const result = IdeClient.validateWorkspacePath('/some/other/path', 'VS Code', '/Users/person/gemini-cli/sub-dir');
26
+ expect(result.isValid).toBe(false);
27
+ expect(result.error).toContain('Directory mismatch');
28
+ });
29
+ it('should handle multiple workspace paths and return valid', () => {
30
+ const result = IdeClient.validateWorkspacePath(['/some/other/path', '/Users/person/gemini-cli'].join(path.delimiter), 'VS Code', '/Users/person/gemini-cli/sub-dir');
31
+ expect(result.isValid).toBe(true);
32
+ });
33
+ it('should return invalid if cwd is not in any of the multiple workspace paths', () => {
34
+ const result = IdeClient.validateWorkspacePath(['/some/other/path', '/another/path'].join(path.delimiter), 'VS Code', '/Users/person/gemini-cli/sub-dir');
35
+ expect(result.isValid).toBe(false);
36
+ expect(result.error).toContain('Directory mismatch');
37
+ });
38
+ it.skipIf(process.platform !== 'win32')('should handle windows paths', () => {
39
+ const result = IdeClient.validateWorkspacePath('c:/some/other/path;d:/Users/person/gemini-cli', 'VS Code', 'd:/Users/person/gemini-cli/sub-dir');
40
+ expect(result.isValid).toBe(true);
41
+ });
42
+ });
43
+ //# sourceMappingURL=ide-client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide-client.test.js","sourceRoot":"","sources":["../../../src/ide/ide-client.test.ts"],"names":[],"mappings":"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"}
@@ -5,21 +5,32 @@
5
5
  */
6
6
  import * as child_process from 'child_process';
7
7
  import * as process from 'process';
8
- import { glob } from 'glob';
9
8
  import * as path from 'path';
10
9
  import * as fs from 'fs';
11
10
  import * as os from 'os';
12
- import { fileURLToPath } from 'url';
13
11
  import { DetectedIde } from './detect-ide.js';
12
+ import { GEMINI_CLI_COMPANION_EXTENSION_NAME } from './constants.js';
14
13
  const VSCODE_COMMAND = process.platform === 'win32' ? 'code.cmd' : 'code';
15
- const VSCODE_COMPANION_EXTENSION_FOLDER = 'vscode-ide-companion';
16
14
  async function findVsCodeCommand() {
17
15
  // 1. Check PATH first.
18
16
  try {
19
- child_process.execSync(process.platform === 'win32'
20
- ? `where.exe ${VSCODE_COMMAND}`
21
- : `command -v ${VSCODE_COMMAND}`, { stdio: 'ignore' });
22
- return VSCODE_COMMAND;
17
+ if (process.platform === 'win32') {
18
+ const result = child_process
19
+ .execSync(`where.exe ${VSCODE_COMMAND}`)
20
+ .toString()
21
+ .trim();
22
+ // `where.exe` can return multiple paths. Return the first one.
23
+ const firstPath = result.split(/\r?\n/)[0];
24
+ if (firstPath) {
25
+ return firstPath;
26
+ }
27
+ }
28
+ else {
29
+ child_process.execSync(`command -v ${VSCODE_COMMAND}`, {
30
+ stdio: 'ignore',
31
+ });
32
+ return VSCODE_COMMAND;
33
+ }
23
34
  }
24
35
  catch {
25
36
  // Not in PATH, continue to check common locations.
@@ -38,7 +49,7 @@ async function findVsCodeCommand() {
38
49
  }
39
50
  else if (platform === 'win32') {
40
51
  // Windows
41
- locations.push(path.join(process.env.ProgramFiles || 'C:\\Program Files', 'Microsoft VS Code', 'bin', 'code.cmd'), path.join(homeDir, 'AppData', 'Local', 'Programs', 'Microsoft VS Code', 'bin', 'code.cmd'));
52
+ locations.push(path.join(process.env['ProgramFiles'] || 'C:\\Program Files', 'Microsoft VS Code', 'bin', 'code.cmd'), path.join(homeDir, 'AppData', 'Local', 'Programs', 'Microsoft VS Code', 'bin', 'code.cmd'));
42
53
  }
43
54
  for (const location of locations) {
44
55
  if (fs.existsSync(location)) {
@@ -57,43 +68,21 @@ class VsCodeInstaller {
57
68
  if (!commandPath) {
58
69
  return {
59
70
  success: false,
60
- message: `VS Code CLI not found. Please ensure 'code' is in your system's PATH. For help, see https://code.visualstudio.com/docs/configure/command-line#_code-is-not-recognized-as-an-internal-or-external-command. You can also install the companion extension manually from the VS Code marketplace.`,
61
- };
62
- }
63
- const bundleDir = path.dirname(fileURLToPath(import.meta.url));
64
- // The VSIX file is copied to the bundle directory as part of the build.
65
- let vsixFiles = glob.sync(path.join(bundleDir, '*.vsix'));
66
- if (vsixFiles.length === 0) {
67
- // If the VSIX file is not in the bundle, it might be a dev
68
- // environment running with `npm start`. Look for it in the original
69
- // package location, relative to the bundle dir.
70
- const devPath = path.join(bundleDir, // .../packages/core/dist/src/ide
71
- '..', // .../packages/core/dist/src
72
- '..', // .../packages/core/dist
73
- '..', // .../packages/core
74
- '..', // .../packages
75
- VSCODE_COMPANION_EXTENSION_FOLDER, '*.vsix');
76
- vsixFiles = glob.sync(devPath);
77
- }
78
- if (vsixFiles.length === 0) {
79
- return {
80
- success: false,
81
- message: 'Could not find the required VS Code companion extension. Please file a bug via /bug.',
71
+ message: `VS Code CLI not found. Please ensure 'code' is in your system's PATH. For help, see https://code.visualstudio.com/docs/configure/command-line#_code-is-not-recognized-as-an-internal-or-external-command. You can also install the '${GEMINI_CLI_COMPANION_EXTENSION_NAME}' extension manually from the VS Code marketplace.`,
82
72
  };
83
73
  }
84
- const vsixPath = vsixFiles[0];
85
- const command = `"${commandPath}" --install-extension "${vsixPath}" --force`;
74
+ const command = `"${commandPath}" --install-extension google.gemini-cli-vscode-ide-companion --force`;
86
75
  try {
87
76
  child_process.execSync(command, { stdio: 'pipe' });
88
77
  return {
89
78
  success: true,
90
- message: 'VS Code companion extension was installed successfully. Please restart your terminal to complete the setup.',
79
+ message: 'VS Code companion extension was installed successfully.',
91
80
  };
92
81
  }
93
82
  catch (_error) {
94
83
  return {
95
84
  success: false,
96
- message: `Failed to install VS Code companion extension. Please try installing it manually from the VS Code marketplace.`,
85
+ message: `Failed to install VS Code companion extension. Please try installing '${GEMINI_CLI_COMPANION_EXTENSION_NAME}' manually from the VS Code extension marketplace.`,
97
86
  };
98
87
  }
99
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ide-installer.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ide-installer.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,12 @@ vi.mock('child_process');
13
13
  vi.mock('fs');
14
14
  vi.mock('os');
15
15
  describe('ide-installer', () => {
16
+ beforeEach(() => {
17
+ vi.spyOn(os, 'homedir').mockReturnValue('/home/user');
18
+ });
19
+ afterEach(() => {
20
+ vi.restoreAllMocks();
21
+ });
16
22
  describe('getIdeInstaller', () => {
17
23
  it('should return a VsCodeInstaller for "vscode"', () => {
18
24
  const installer = getIdeInstaller(DetectedIde.VSCode);
@@ -20,10 +26,6 @@ describe('ide-installer', () => {
20
26
  // A more specific check might be needed if we export the class
21
27
  expect(installer).toBeInstanceOf(Object);
22
28
  });
23
- it('should return null for an unknown IDE', () => {
24
- const installer = getIdeInstaller('unknown');
25
- expect(installer).toBeNull();
26
- });
27
29
  });
28
30
  describe('VsCodeInstaller', () => {
29
31
  let installer;
@@ -32,10 +34,6 @@ describe('ide-installer', () => {
32
34
  installer = getIdeInstaller(DetectedIde.VSCode);
33
35
  vi.spyOn(child_process, 'execSync').mockImplementation(() => '');
34
36
  vi.spyOn(fs, 'existsSync').mockReturnValue(false);
35
- vi.spyOn(os, 'homedir').mockReturnValue('/home/user');
36
- });
37
- afterEach(() => {
38
- vi.restoreAllMocks();
39
37
  });
40
38
  describe('install', () => {
41
39
  it('should return a failure message if VS Code is not installed', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ide-installer.test.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ide-installer.test.js","sourceRoot":"","sources":["../../../src/ide/ide-installer.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,eAAe,EAAgB,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,aAAa,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACzB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEd,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjC,+DAA+D;YAC/D,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,IAAI,SAAuB,CAAC;QAE5B,UAAU,CAAC,GAAG,EAAE;YACd,uEAAuE;YACvE,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAE,CAAC;YACjD,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;gBAC3E,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;oBAC1D,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAClD,0DAA0D;gBAC1D,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}