@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
@@ -58,29 +58,33 @@ describe('LSTool', () => {
58
58
  const params = {
59
59
  path: '/home/user/project/src',
60
60
  };
61
- const error = lsTool.validateToolParams(params);
62
- expect(error).toBeNull();
61
+ vi.mocked(fs.statSync).mockReturnValue({
62
+ isDirectory: () => true,
63
+ });
64
+ const invocation = lsTool.build(params);
65
+ expect(invocation).toBeDefined();
63
66
  });
64
67
  it('should reject relative paths', () => {
65
68
  const params = {
66
69
  path: './src',
67
70
  };
68
- const error = lsTool.validateToolParams(params);
69
- expect(error).toBe('Path must be absolute: ./src');
71
+ expect(() => lsTool.build(params)).toThrow('Path must be absolute: ./src');
70
72
  });
71
73
  it('should reject paths outside workspace with clear error message', () => {
72
74
  const params = {
73
75
  path: '/etc/passwd',
74
76
  };
75
- const error = lsTool.validateToolParams(params);
76
- expect(error).toBe('Path must be within one of the workspace directories: /home/user/project, /home/user/other-project');
77
+ expect(() => lsTool.build(params)).toThrow('Path must be within one of the workspace directories: /home/user/project, /home/user/other-project');
77
78
  });
78
79
  it('should accept paths in secondary workspace directory', () => {
79
80
  const params = {
80
81
  path: '/home/user/other-project/lib',
81
82
  };
82
- const error = lsTool.validateToolParams(params);
83
- expect(error).toBeNull();
83
+ vi.mocked(fs.statSync).mockReturnValue({
84
+ isDirectory: () => true,
85
+ });
86
+ const invocation = lsTool.build(params);
87
+ expect(invocation).toBeDefined();
84
88
  });
85
89
  });
86
90
  describe('execute', () => {
@@ -104,7 +108,8 @@ describe('LSTool', () => {
104
108
  return { ...mockStats, isDirectory: () => false };
105
109
  });
106
110
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
107
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
111
+ const invocation = lsTool.build({ path: testPath });
112
+ const result = await invocation.execute(new AbortController().signal);
108
113
  expect(result.llmContent).toContain('[DIR] subdir');
109
114
  expect(result.llmContent).toContain('file1.ts');
110
115
  expect(result.llmContent).toContain('file2.ts');
@@ -124,7 +129,8 @@ describe('LSTool', () => {
124
129
  };
125
130
  });
126
131
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
127
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
132
+ const invocation = lsTool.build({ path: testPath });
133
+ const result = await invocation.execute(new AbortController().signal);
128
134
  expect(result.llmContent).toContain('module1.js');
129
135
  expect(result.llmContent).toContain('module2.js');
130
136
  expect(result.returnDisplay).toBe('Listed 2 item(s).');
@@ -135,7 +141,8 @@ describe('LSTool', () => {
135
141
  isDirectory: () => true,
136
142
  });
137
143
  vi.mocked(fs.readdirSync).mockReturnValue([]);
138
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
144
+ const invocation = lsTool.build({ path: testPath });
145
+ const result = await invocation.execute(new AbortController().signal);
139
146
  expect(result.llmContent).toBe('Directory /home/user/project/empty is empty.');
140
147
  expect(result.returnDisplay).toBe('Directory is empty.');
141
148
  });
@@ -154,7 +161,11 @@ describe('LSTool', () => {
154
161
  };
155
162
  });
156
163
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
157
- const result = await lsTool.execute({ path: testPath, ignore: ['*.spec.js'] }, new AbortController().signal);
164
+ const invocation = lsTool.build({
165
+ path: testPath,
166
+ ignore: ['*.spec.js'],
167
+ });
168
+ const result = await invocation.execute(new AbortController().signal);
158
169
  expect(result.llmContent).toContain('test.js');
159
170
  expect(result.llmContent).toContain('index.js');
160
171
  expect(result.llmContent).not.toContain('test.spec.js');
@@ -176,7 +187,8 @@ describe('LSTool', () => {
176
187
  });
177
188
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
178
189
  mockFileService.shouldGitIgnoreFile.mockImplementation((path) => path.includes('ignored.js'));
179
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
190
+ const invocation = lsTool.build({ path: testPath });
191
+ const result = await invocation.execute(new AbortController().signal);
180
192
  expect(result.llmContent).toContain('file1.js');
181
193
  expect(result.llmContent).toContain('file2.js');
182
194
  expect(result.llmContent).not.toContain('ignored.js');
@@ -198,7 +210,8 @@ describe('LSTool', () => {
198
210
  });
199
211
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
200
212
  mockFileService.shouldGeminiIgnoreFile.mockImplementation((path) => path.includes('private.js'));
201
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
213
+ const invocation = lsTool.build({ path: testPath });
214
+ const result = await invocation.execute(new AbortController().signal);
202
215
  expect(result.llmContent).toContain('file1.js');
203
216
  expect(result.llmContent).toContain('file2.js');
204
217
  expect(result.llmContent).not.toContain('private.js');
@@ -209,7 +222,8 @@ describe('LSTool', () => {
209
222
  vi.mocked(fs.statSync).mockReturnValue({
210
223
  isDirectory: () => false,
211
224
  });
212
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
225
+ const invocation = lsTool.build({ path: testPath });
226
+ const result = await invocation.execute(new AbortController().signal);
213
227
  expect(result.llmContent).toContain('Path is not a directory');
214
228
  expect(result.returnDisplay).toBe('Error: Path is not a directory.');
215
229
  });
@@ -218,7 +232,8 @@ describe('LSTool', () => {
218
232
  vi.mocked(fs.statSync).mockImplementation(() => {
219
233
  throw new Error('ENOENT: no such file or directory');
220
234
  });
221
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
235
+ const invocation = lsTool.build({ path: testPath });
236
+ const result = await invocation.execute(new AbortController().signal);
222
237
  expect(result.llmContent).toContain('Error listing directory');
223
238
  expect(result.returnDisplay).toBe('Error: Failed to list directory.');
224
239
  });
@@ -243,7 +258,8 @@ describe('LSTool', () => {
243
258
  };
244
259
  });
245
260
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
246
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
261
+ const invocation = lsTool.build({ path: testPath });
262
+ const result = await invocation.execute(new AbortController().signal);
247
263
  const lines = (typeof result.llmContent === 'string' ? result.llmContent : '').split('\n');
248
264
  const entries = lines.slice(1).filter((line) => line.trim()); // Skip header
249
265
  expect(entries[0]).toBe('[DIR] a-dir');
@@ -259,15 +275,14 @@ describe('LSTool', () => {
259
275
  vi.mocked(fs.readdirSync).mockImplementation(() => {
260
276
  throw new Error('EACCES: permission denied');
261
277
  });
262
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
278
+ const invocation = lsTool.build({ path: testPath });
279
+ const result = await invocation.execute(new AbortController().signal);
263
280
  expect(result.llmContent).toContain('Error listing directory');
264
281
  expect(result.llmContent).toContain('permission denied');
265
282
  expect(result.returnDisplay).toBe('Error: Failed to list directory.');
266
283
  });
267
- it('should validate parameters and return error for invalid params', async () => {
268
- const result = await lsTool.execute({ path: '../outside' }, new AbortController().signal);
269
- expect(result.llmContent).toContain('Invalid parameters provided');
270
- expect(result.returnDisplay).toBe('Error: Failed to execute tool.');
284
+ it('should throw for invalid params at build time', async () => {
285
+ expect(() => lsTool.build({ path: '../outside' })).toThrow('Path must be absolute: ../outside');
271
286
  });
272
287
  it('should handle errors accessing individual files during listing', async () => {
273
288
  const testPath = '/home/user/project/src';
@@ -290,7 +305,8 @@ describe('LSTool', () => {
290
305
  const consoleErrorSpy = vi
291
306
  .spyOn(console, 'error')
292
307
  .mockImplementation(() => { });
293
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
308
+ const invocation = lsTool.build({ path: testPath });
309
+ const result = await invocation.execute(new AbortController().signal);
294
310
  // Should still list the accessible file
295
311
  expect(result.llmContent).toContain('accessible.ts');
296
312
  expect(result.llmContent).not.toContain('inaccessible.ts');
@@ -303,34 +319,45 @@ describe('LSTool', () => {
303
319
  describe('getDescription', () => {
304
320
  it('should return shortened relative path', () => {
305
321
  const params = {
306
- path: path.join(mockPrimaryDir, 'deeply', 'nested', 'directory'),
322
+ path: `${mockPrimaryDir}/deeply/nested/directory`,
307
323
  };
308
- const description = lsTool.getDescription(params);
324
+ vi.mocked(fs.statSync).mockReturnValue({
325
+ isDirectory: () => true,
326
+ });
327
+ const invocation = lsTool.build(params);
328
+ const description = invocation.getDescription();
309
329
  expect(description).toBe(path.join('deeply', 'nested', 'directory'));
310
330
  });
311
331
  it('should handle paths in secondary workspace', () => {
312
332
  const params = {
313
- path: path.join(mockSecondaryDir, 'lib'),
333
+ path: `${mockSecondaryDir}/lib`,
314
334
  };
315
- const description = lsTool.getDescription(params);
335
+ vi.mocked(fs.statSync).mockReturnValue({
336
+ isDirectory: () => true,
337
+ });
338
+ const invocation = lsTool.build(params);
339
+ const description = invocation.getDescription();
316
340
  expect(description).toBe(path.join('..', 'other-project', 'lib'));
317
341
  });
318
342
  });
319
343
  describe('workspace boundary validation', () => {
320
344
  it('should accept paths in primary workspace directory', () => {
321
345
  const params = { path: `${mockPrimaryDir}/src` };
322
- expect(lsTool.validateToolParams(params)).toBeNull();
346
+ vi.mocked(fs.statSync).mockReturnValue({
347
+ isDirectory: () => true,
348
+ });
349
+ expect(lsTool.build(params)).toBeDefined();
323
350
  });
324
351
  it('should accept paths in secondary workspace directory', () => {
325
352
  const params = { path: `${mockSecondaryDir}/lib` };
326
- expect(lsTool.validateToolParams(params)).toBeNull();
353
+ vi.mocked(fs.statSync).mockReturnValue({
354
+ isDirectory: () => true,
355
+ });
356
+ expect(lsTool.build(params)).toBeDefined();
327
357
  });
328
358
  it('should reject paths outside all workspace directories', () => {
329
359
  const params = { path: '/etc/passwd' };
330
- const error = lsTool.validateToolParams(params);
331
- expect(error).toContain('Path must be within one of the workspace directories');
332
- expect(error).toContain(mockPrimaryDir);
333
- expect(error).toContain(mockSecondaryDir);
360
+ expect(() => lsTool.build(params)).toThrow('Path must be within one of the workspace directories');
334
361
  });
335
362
  it('should list files from secondary workspace directory', async () => {
336
363
  const testPath = `${mockSecondaryDir}/tests`;
@@ -346,7 +373,8 @@ describe('LSTool', () => {
346
373
  };
347
374
  });
348
375
  vi.mocked(fs.readdirSync).mockReturnValue(mockFiles);
349
- const result = await lsTool.execute({ path: testPath }, new AbortController().signal);
376
+ const invocation = lsTool.build({ path: testPath });
377
+ const result = await invocation.execute(new AbortController().signal);
350
378
  expect(result.llmContent).toContain('test1.spec.ts');
351
379
  expect(result.llmContent).toContain('test2.spec.ts');
352
380
  expect(result.returnDisplay).toBe('Listed 2 item(s).');
@@ -1 +1 @@
1
- {"version":3,"file":"ls.test.js","sourceRoot":"","sources":["../../../src/tools/ls.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ls.test.js","sourceRoot":"","sources":["../../../src/tools/ls.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { MCPServerConfig } from '../config/config.js';
7
+ import { ToolRegistry } from './tool-registry.js';
8
+ import { PromptRegistry } from '../prompts/prompt-registry.js';
9
+ import { MCPDiscoveryState } from './mcp-client.js';
10
+ import { WorkspaceContext } from '../utils/workspaceContext.js';
11
+ /**
12
+ * Manages the lifecycle of multiple MCP clients, including local child processes.
13
+ * This class is responsible for starting, stopping, and discovering tools from
14
+ * a collection of MCP servers defined in the configuration.
15
+ */
16
+ export declare class McpClientManager {
17
+ private clients;
18
+ private readonly mcpServers;
19
+ private readonly mcpServerCommand;
20
+ private readonly toolRegistry;
21
+ private readonly promptRegistry;
22
+ private readonly debugMode;
23
+ private readonly workspaceContext;
24
+ private discoveryState;
25
+ constructor(mcpServers: Record<string, MCPServerConfig>, mcpServerCommand: string | undefined, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, debugMode: boolean, workspaceContext: WorkspaceContext);
26
+ /**
27
+ * Initiates the tool discovery process for all configured MCP servers.
28
+ * It connects to each server, discovers its available tools, and registers
29
+ * them with the `ToolRegistry`.
30
+ */
31
+ discoverAllMcpTools(): Promise<void>;
32
+ /**
33
+ * Stops all running local MCP servers and closes all client connections.
34
+ * This is the cleanup method to be called on application exit.
35
+ */
36
+ stop(): Promise<void>;
37
+ getDiscoveryState(): MCPDiscoveryState;
38
+ }
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { McpClient, MCPDiscoveryState, populateMcpServerCommand, } from './mcp-client.js';
7
+ import { getErrorMessage } from '../utils/errors.js';
8
+ /**
9
+ * Manages the lifecycle of multiple MCP clients, including local child processes.
10
+ * This class is responsible for starting, stopping, and discovering tools from
11
+ * a collection of MCP servers defined in the configuration.
12
+ */
13
+ export class McpClientManager {
14
+ clients = new Map();
15
+ mcpServers;
16
+ mcpServerCommand;
17
+ toolRegistry;
18
+ promptRegistry;
19
+ debugMode;
20
+ workspaceContext;
21
+ discoveryState = MCPDiscoveryState.NOT_STARTED;
22
+ constructor(mcpServers, mcpServerCommand, toolRegistry, promptRegistry, debugMode, workspaceContext) {
23
+ this.mcpServers = mcpServers;
24
+ this.mcpServerCommand = mcpServerCommand;
25
+ this.toolRegistry = toolRegistry;
26
+ this.promptRegistry = promptRegistry;
27
+ this.debugMode = debugMode;
28
+ this.workspaceContext = workspaceContext;
29
+ }
30
+ /**
31
+ * Initiates the tool discovery process for all configured MCP servers.
32
+ * It connects to each server, discovers its available tools, and registers
33
+ * them with the `ToolRegistry`.
34
+ */
35
+ async discoverAllMcpTools() {
36
+ await this.stop();
37
+ this.discoveryState = MCPDiscoveryState.IN_PROGRESS;
38
+ const servers = populateMcpServerCommand(this.mcpServers, this.mcpServerCommand);
39
+ const discoveryPromises = Object.entries(servers).map(async ([name, config]) => {
40
+ const client = new McpClient(name, config, this.toolRegistry, this.promptRegistry, this.workspaceContext, this.debugMode);
41
+ this.clients.set(name, client);
42
+ try {
43
+ await client.connect();
44
+ await client.discover();
45
+ }
46
+ catch (error) {
47
+ // Log the error but don't let a single failed server stop the others
48
+ console.error(`Error during discovery for server '${name}': ${getErrorMessage(error)}`);
49
+ }
50
+ });
51
+ await Promise.all(discoveryPromises);
52
+ this.discoveryState = MCPDiscoveryState.COMPLETED;
53
+ }
54
+ /**
55
+ * Stops all running local MCP servers and closes all client connections.
56
+ * This is the cleanup method to be called on application exit.
57
+ */
58
+ async stop() {
59
+ const disconnectionPromises = Array.from(this.clients.entries()).map(async ([name, client]) => {
60
+ try {
61
+ await client.disconnect();
62
+ }
63
+ catch (error) {
64
+ console.error(`Error stopping client '${name}': ${getErrorMessage(error)}`);
65
+ }
66
+ });
67
+ await Promise.all(disconnectionPromises);
68
+ this.clients.clear();
69
+ }
70
+ getDiscoveryState() {
71
+ return this.discoveryState;
72
+ }
73
+ }
74
+ //# sourceMappingURL=mcp-client-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.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,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { afterEach, describe, expect, it, vi } from 'vitest';
7
+ import { McpClientManager } from './mcp-client-manager.js';
8
+ import { McpClient } from './mcp-client.js';
9
+ vi.mock('./mcp-client.js', async () => {
10
+ const originalModule = await vi.importActual('./mcp-client.js');
11
+ return {
12
+ ...originalModule,
13
+ McpClient: vi.fn(),
14
+ populateMcpServerCommand: vi.fn(() => ({
15
+ 'test-server': {},
16
+ })),
17
+ };
18
+ });
19
+ describe('McpClientManager', () => {
20
+ afterEach(() => {
21
+ vi.restoreAllMocks();
22
+ });
23
+ it('should discover tools from all servers', async () => {
24
+ const mockedMcpClient = {
25
+ connect: vi.fn(),
26
+ discover: vi.fn(),
27
+ disconnect: vi.fn(),
28
+ getStatus: vi.fn(),
29
+ };
30
+ vi.mocked(McpClient).mockReturnValue(mockedMcpClient);
31
+ const manager = new McpClientManager({
32
+ 'test-server': {},
33
+ }, '', {}, {}, false, {});
34
+ await manager.discoverAllMcpTools();
35
+ expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
36
+ expect(mockedMcpClient.discover).toHaveBeenCalledOnce();
37
+ });
38
+ });
39
+ //# sourceMappingURL=mcp-client-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.test.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-manager.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAK5C,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAChE,OAAO;QACL,GAAG,cAAc;QACjB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;QAClB,wBAAwB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACrC,aAAa,EAAE,EAAE;SAClB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;SACnB,CAAC;QACF,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,eAAe,CAClC,eAAuC,CACxC,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAClC;YACE,aAAa,EAAE,EAAE;SAClB,EACD,EAAE,EACF,EAAkB,EAClB,EAAoB,EACpB,KAAK,EACL,EAAsB,CACvB,CAAC;QACF,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC;QACvD,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,oBAAoB,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -39,6 +39,45 @@ export declare enum MCPDiscoveryState {
39
39
  /** Discovery has completed (with or without errors) */
40
40
  COMPLETED = "completed"
41
41
  }
42
+ /**
43
+ * A client for a single MCP server.
44
+ *
45
+ * This class is responsible for connecting to, discovering tools from, and
46
+ * managing the state of a single MCP server.
47
+ */
48
+ export declare class McpClient {
49
+ private readonly serverName;
50
+ private readonly serverConfig;
51
+ private readonly toolRegistry;
52
+ private readonly promptRegistry;
53
+ private readonly workspaceContext;
54
+ private readonly debugMode;
55
+ private client;
56
+ private transport;
57
+ private status;
58
+ private isDisconnecting;
59
+ constructor(serverName: string, serverConfig: MCPServerConfig, toolRegistry: ToolRegistry, promptRegistry: PromptRegistry, workspaceContext: WorkspaceContext, debugMode: boolean);
60
+ /**
61
+ * Connects to the MCP server.
62
+ */
63
+ connect(): Promise<void>;
64
+ /**
65
+ * Discovers tools and prompts from the MCP server.
66
+ */
67
+ discover(): Promise<void>;
68
+ /**
69
+ * Disconnects from the MCP server.
70
+ */
71
+ disconnect(): Promise<void>;
72
+ /**
73
+ * Returns the current status of the client.
74
+ */
75
+ getStatus(): MCPServerStatus;
76
+ private updateStatus;
77
+ private createTransport;
78
+ private discoverTools;
79
+ private discoverPrompts;
80
+ }
42
81
  /**
43
82
  * Map to track which MCP servers have been discovered to require OAuth
44
83
  */
@@ -55,6 +94,10 @@ export declare function addMCPStatusChangeListener(listener: StatusChangeListene
55
94
  * Remove a listener for MCP server status changes
56
95
  */
57
96
  export declare function removeMCPStatusChangeListener(listener: StatusChangeListener): void;
97
+ /**
98
+ * Update the status of an MCP server
99
+ */
100
+ export declare function updateMCPServerStatus(serverName: string, status: MCPServerStatus): void;
58
101
  /**
59
102
  * Get the current status of an MCP server
60
103
  */