@1mcp/agent 0.28.1 → 0.29.0-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/build/auth/sessionTypes.d.ts +19 -0
  2. package/build/auth/sessionTypes.d.ts.map +1 -1
  3. package/build/commands/app/backups.d.ts.map +1 -1
  4. package/build/commands/app/backups.js +52 -42
  5. package/build/commands/app/backups.js.map +1 -1
  6. package/build/commands/app/consolidate.d.ts.map +1 -1
  7. package/build/commands/app/consolidate.js +66 -55
  8. package/build/commands/app/consolidate.js.map +1 -1
  9. package/build/commands/app/discover.d.ts.map +1 -1
  10. package/build/commands/app/discover.js +32 -25
  11. package/build/commands/app/discover.js.map +1 -1
  12. package/build/commands/app/index.d.ts.map +1 -1
  13. package/build/commands/app/index.js +2 -1
  14. package/build/commands/app/index.js.map +1 -1
  15. package/build/commands/app/list.d.ts.map +1 -1
  16. package/build/commands/app/list.js +35 -28
  17. package/build/commands/app/list.js.map +1 -1
  18. package/build/commands/app/restore.d.ts.map +1 -1
  19. package/build/commands/app/restore.js +74 -63
  20. package/build/commands/app/restore.js.map +1 -1
  21. package/build/commands/app/status.d.ts.map +1 -1
  22. package/build/commands/app/status.js +51 -43
  23. package/build/commands/app/status.js.map +1 -1
  24. package/build/commands/mcp/add.d.ts.map +1 -1
  25. package/build/commands/mcp/add.js +29 -23
  26. package/build/commands/mcp/add.js.map +1 -1
  27. package/build/commands/mcp/enable.d.ts.map +1 -1
  28. package/build/commands/mcp/enable.js +16 -15
  29. package/build/commands/mcp/enable.js.map +1 -1
  30. package/build/commands/mcp/index.d.ts.map +1 -1
  31. package/build/commands/mcp/index.js +2 -1
  32. package/build/commands/mcp/index.js.map +1 -1
  33. package/build/commands/mcp/install.d.ts.map +1 -1
  34. package/build/commands/mcp/install.js +44 -46
  35. package/build/commands/mcp/install.js.map +1 -1
  36. package/build/commands/mcp/list.d.ts.map +1 -1
  37. package/build/commands/mcp/list.js +51 -37
  38. package/build/commands/mcp/list.js.map +1 -1
  39. package/build/commands/mcp/remove.d.ts.map +1 -1
  40. package/build/commands/mcp/remove.js +23 -16
  41. package/build/commands/mcp/remove.js.map +1 -1
  42. package/build/commands/mcp/status.d.ts.map +1 -1
  43. package/build/commands/mcp/status.js +81 -73
  44. package/build/commands/mcp/status.js.map +1 -1
  45. package/build/commands/mcp/tokens.d.ts.map +1 -1
  46. package/build/commands/mcp/tokens.js +46 -47
  47. package/build/commands/mcp/tokens.js.map +1 -1
  48. package/build/commands/mcp/uninstall.d.ts.map +1 -1
  49. package/build/commands/mcp/uninstall.js +8 -6
  50. package/build/commands/mcp/uninstall.js.map +1 -1
  51. package/build/commands/mcp/update.d.ts.map +1 -1
  52. package/build/commands/mcp/update.js +11 -8
  53. package/build/commands/mcp/update.js.map +1 -1
  54. package/build/commands/mcp/utils/installWizard.d.ts.map +1 -1
  55. package/build/commands/mcp/utils/installWizard.js +3 -2
  56. package/build/commands/mcp/utils/installWizard.js.map +1 -1
  57. package/build/commands/mcp/utils/serverUtils.d.ts +8 -4
  58. package/build/commands/mcp/utils/serverUtils.d.ts.map +1 -1
  59. package/build/commands/mcp/utils/serverUtils.js +0 -3
  60. package/build/commands/mcp/utils/serverUtils.js.map +1 -1
  61. package/build/commands/mcp/wizard/components/serverDetailsDisplay.d.ts.map +1 -1
  62. package/build/commands/mcp/wizard/components/serverDetailsDisplay.js +4 -3
  63. package/build/commands/mcp/wizard/components/serverDetailsDisplay.js.map +1 -1
  64. package/build/commands/mcp/wizard/components/stepIndicator.d.ts.map +1 -1
  65. package/build/commands/mcp/wizard/components/stepIndicator.js +3 -2
  66. package/build/commands/mcp/wizard/components/stepIndicator.js.map +1 -1
  67. package/build/commands/mcp/wizard/components/welcomeScreen.d.ts.map +1 -1
  68. package/build/commands/mcp/wizard/components/welcomeScreen.js +2 -1
  69. package/build/commands/mcp/wizard/components/welcomeScreen.js.map +1 -1
  70. package/build/commands/mcp/wizard/configuration.d.ts.map +1 -1
  71. package/build/commands/mcp/wizard/configuration.js +10 -9
  72. package/build/commands/mcp/wizard/configuration.js.map +1 -1
  73. package/build/commands/mcp/wizard/display.d.ts.map +1 -1
  74. package/build/commands/mcp/wizard/display.js +9 -8
  75. package/build/commands/mcp/wizard/display.js.map +1 -1
  76. package/build/commands/mcp/wizard/search.d.ts.map +1 -1
  77. package/build/commands/mcp/wizard/search.js +4 -3
  78. package/build/commands/mcp/wizard/search.js.map +1 -1
  79. package/build/commands/preset/create.d.ts.map +1 -1
  80. package/build/commands/preset/create.js +7 -6
  81. package/build/commands/preset/create.js.map +1 -1
  82. package/build/commands/preset/delete.d.ts.map +1 -1
  83. package/build/commands/preset/delete.js +4 -2
  84. package/build/commands/preset/delete.js.map +1 -1
  85. package/build/commands/preset/edit.d.ts.map +1 -1
  86. package/build/commands/preset/edit.js +8 -5
  87. package/build/commands/preset/edit.js.map +1 -1
  88. package/build/commands/preset/interactive.d.ts.map +1 -1
  89. package/build/commands/preset/interactive.js +24 -15
  90. package/build/commands/preset/interactive.js.map +1 -1
  91. package/build/commands/preset/list.d.ts.map +1 -1
  92. package/build/commands/preset/list.js +12 -10
  93. package/build/commands/preset/list.js.map +1 -1
  94. package/build/commands/preset/show.d.ts.map +1 -1
  95. package/build/commands/preset/show.js +3 -2
  96. package/build/commands/preset/show.js.map +1 -1
  97. package/build/commands/preset/test.d.ts.map +1 -1
  98. package/build/commands/preset/test.js +2 -1
  99. package/build/commands/preset/test.js.map +1 -1
  100. package/build/commands/preset/url.d.ts.map +1 -1
  101. package/build/commands/preset/url.js +2 -1
  102. package/build/commands/preset/url.js.map +1 -1
  103. package/build/commands/proxy/index.d.ts.map +1 -1
  104. package/build/commands/proxy/index.js +5 -0
  105. package/build/commands/proxy/index.js.map +1 -1
  106. package/build/commands/proxy/proxy.d.ts.map +1 -1
  107. package/build/commands/proxy/proxy.js +1 -0
  108. package/build/commands/proxy/proxy.js.map +1 -1
  109. package/build/commands/registry/index.d.ts.map +1 -1
  110. package/build/commands/registry/index.js +2 -1
  111. package/build/commands/registry/index.js.map +1 -1
  112. package/build/commands/registry/search.d.ts.map +1 -1
  113. package/build/commands/registry/search.js +42 -37
  114. package/build/commands/registry/search.js.map +1 -1
  115. package/build/commands/registry/show.d.ts.map +1 -1
  116. package/build/commands/registry/show.js +8 -7
  117. package/build/commands/registry/show.js.map +1 -1
  118. package/build/commands/registry/status.d.ts.map +1 -1
  119. package/build/commands/registry/status.js +26 -16
  120. package/build/commands/registry/status.js.map +1 -1
  121. package/build/commands/registry/versions.d.ts.map +1 -1
  122. package/build/commands/registry/versions.js +8 -7
  123. package/build/commands/registry/versions.js.map +1 -1
  124. package/build/config/configChangeDetector.d.ts +8 -0
  125. package/build/config/configChangeDetector.d.ts.map +1 -0
  126. package/build/config/configChangeDetector.js +49 -0
  127. package/build/config/configChangeDetector.js.map +1 -0
  128. package/build/config/configLoader.d.ts +16 -0
  129. package/build/config/configLoader.d.ts.map +1 -0
  130. package/build/config/configLoader.js +155 -0
  131. package/build/config/configLoader.js.map +1 -0
  132. package/build/config/configManager.d.ts +49 -86
  133. package/build/config/configManager.d.ts.map +1 -1
  134. package/build/config/configManager.js +188 -301
  135. package/build/config/configManager.js.map +1 -1
  136. package/build/config/configWatcher.d.ts +18 -0
  137. package/build/config/configWatcher.d.ts.map +1 -0
  138. package/build/config/configWatcher.js +78 -0
  139. package/build/config/configWatcher.js.map +1 -0
  140. package/build/config/projectConfigTypes.d.ts +40 -0
  141. package/build/config/projectConfigTypes.d.ts.map +1 -1
  142. package/build/config/projectConfigTypes.js +21 -0
  143. package/build/config/projectConfigTypes.js.map +1 -1
  144. package/build/config/templateProcessor.d.ts +14 -0
  145. package/build/config/templateProcessor.d.ts.map +1 -0
  146. package/build/config/templateProcessor.js +102 -0
  147. package/build/config/templateProcessor.js.map +1 -0
  148. package/build/config/types.d.ts +36 -0
  149. package/build/config/types.d.ts.map +1 -0
  150. package/build/config/types.js +14 -0
  151. package/build/config/types.js.map +1 -0
  152. package/build/constants/mcp.d.ts +1 -1
  153. package/build/constants/mcp.d.ts.map +1 -1
  154. package/build/constants/mcp.js +1 -1
  155. package/build/constants/mcp.js.map +1 -1
  156. package/build/core/client/clientFactory.d.ts +7 -0
  157. package/build/core/client/clientFactory.d.ts.map +1 -0
  158. package/build/core/client/clientFactory.js +36 -0
  159. package/build/core/client/clientFactory.js.map +1 -0
  160. package/build/core/client/clientManager.d.ts +13 -101
  161. package/build/core/client/clientManager.d.ts.map +1 -1
  162. package/build/core/client/clientManager.js +115 -418
  163. package/build/core/client/clientManager.js.map +1 -1
  164. package/build/core/client/connectionHandler.d.ts +8 -0
  165. package/build/core/client/connectionHandler.d.ts.map +1 -0
  166. package/build/core/client/connectionHandler.js +80 -0
  167. package/build/core/client/connectionHandler.js.map +1 -0
  168. package/build/core/client/oauthFlowHandler.d.ts +10 -0
  169. package/build/core/client/oauthFlowHandler.d.ts.map +1 -0
  170. package/build/core/client/oauthFlowHandler.js +81 -0
  171. package/build/core/client/oauthFlowHandler.js.map +1 -0
  172. package/build/core/client/transportRecreator.d.ts +5 -0
  173. package/build/core/client/transportRecreator.d.ts.map +1 -0
  174. package/build/core/client/transportRecreator.js +23 -0
  175. package/build/core/client/transportRecreator.js.map +1 -0
  176. package/build/core/client/types.d.ts +7 -0
  177. package/build/core/client/types.d.ts.map +1 -0
  178. package/build/core/client/types.js +11 -0
  179. package/build/core/client/types.js.map +1 -0
  180. package/build/core/configChangeHandler.d.ts.map +1 -1
  181. package/build/core/configChangeHandler.js +11 -5
  182. package/build/core/configChangeHandler.js.map +1 -1
  183. package/build/core/context/globalContextManager.d.ts +58 -0
  184. package/build/core/context/globalContextManager.d.ts.map +1 -0
  185. package/build/core/context/globalContextManager.js +190 -0
  186. package/build/core/context/globalContextManager.js.map +1 -0
  187. package/build/core/filtering/clientFiltering.d.ts +1 -2
  188. package/build/core/filtering/clientFiltering.d.ts.map +1 -1
  189. package/build/core/filtering/clientTemplateTracker.d.ts +116 -0
  190. package/build/core/filtering/clientTemplateTracker.d.ts.map +1 -0
  191. package/build/core/filtering/clientTemplateTracker.js +286 -0
  192. package/build/core/filtering/clientTemplateTracker.js.map +1 -0
  193. package/build/core/filtering/filterCache.d.ts +121 -0
  194. package/build/core/filtering/filterCache.d.ts.map +1 -0
  195. package/build/core/filtering/filterCache.js +359 -0
  196. package/build/core/filtering/filterCache.js.map +1 -0
  197. package/build/core/filtering/index.d.ts +16 -0
  198. package/build/core/filtering/index.d.ts.map +1 -0
  199. package/build/core/filtering/index.js +16 -0
  200. package/build/core/filtering/index.js.map +1 -0
  201. package/build/core/filtering/templateFilteringService.d.ts +72 -0
  202. package/build/core/filtering/templateFilteringService.d.ts.map +1 -0
  203. package/build/core/filtering/templateFilteringService.js +293 -0
  204. package/build/core/filtering/templateFilteringService.js.map +1 -0
  205. package/build/core/filtering/templateIndex.d.ts +132 -0
  206. package/build/core/filtering/templateIndex.d.ts.map +1 -0
  207. package/build/core/filtering/templateIndex.js +368 -0
  208. package/build/core/filtering/templateIndex.js.map +1 -0
  209. package/build/core/flags/flagManager.d.ts +8 -4
  210. package/build/core/flags/flagManager.d.ts.map +1 -1
  211. package/build/core/flags/flagManager.js.map +1 -1
  212. package/build/core/protocol/requestHandlers.d.ts.map +1 -1
  213. package/build/core/protocol/requestHandlers.js +208 -46
  214. package/build/core/protocol/requestHandlers.js.map +1 -1
  215. package/build/core/server/clientInstancePool.d.ts +146 -0
  216. package/build/core/server/clientInstancePool.d.ts.map +1 -0
  217. package/build/core/server/clientInstancePool.js +407 -0
  218. package/build/core/server/clientInstancePool.js.map +1 -0
  219. package/build/core/server/connectionManager.d.ts +70 -0
  220. package/build/core/server/connectionManager.d.ts.map +1 -0
  221. package/build/core/server/connectionManager.js +240 -0
  222. package/build/core/server/connectionManager.js.map +1 -0
  223. package/build/core/server/mcpServerLifecycleManager.d.ts +55 -0
  224. package/build/core/server/mcpServerLifecycleManager.d.ts.map +1 -0
  225. package/build/core/server/mcpServerLifecycleManager.js +272 -0
  226. package/build/core/server/mcpServerLifecycleManager.js.map +1 -0
  227. package/build/core/server/serverManager.d.ts +56 -56
  228. package/build/core/server/serverManager.d.ts.map +1 -1
  229. package/build/core/server/serverManager.js +160 -431
  230. package/build/core/server/serverManager.js.map +1 -1
  231. package/build/core/server/templateConfigurationManager.d.ts +51 -0
  232. package/build/core/server/templateConfigurationManager.d.ts.map +1 -0
  233. package/build/core/server/templateConfigurationManager.js +160 -0
  234. package/build/core/server/templateConfigurationManager.js.map +1 -0
  235. package/build/core/server/templateServerManager.d.ts +92 -0
  236. package/build/core/server/templateServerManager.d.ts.map +1 -0
  237. package/build/core/server/templateServerManager.js +367 -0
  238. package/build/core/server/templateServerManager.js.map +1 -0
  239. package/build/core/tools/handlers/serverManagementHandler.d.ts +51 -1
  240. package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
  241. package/build/core/tools/handlers/serverManagementHandler.js +42 -0
  242. package/build/core/tools/handlers/serverManagementHandler.js.map +1 -1
  243. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +11 -1
  244. package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -1
  245. package/build/core/tools/internal/adapters/installation/types.d.ts +2 -4
  246. package/build/core/tools/internal/adapters/installation/types.d.ts.map +1 -1
  247. package/build/core/tools/internal/adapters/installationAdapter.d.ts +2 -4
  248. package/build/core/tools/internal/adapters/installationAdapter.d.ts.map +1 -1
  249. package/build/core/tools/internal/adapters/installationAdapter.js.map +1 -1
  250. package/build/core/tools/internal/adapters/management/managementAdapter.d.ts +2 -5
  251. package/build/core/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -1
  252. package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -1
  253. package/build/core/tools/internal/adapters/management/types.d.ts +8 -4
  254. package/build/core/tools/internal/adapters/management/types.d.ts.map +1 -1
  255. package/build/core/tools/internal/index.d.ts +0 -31
  256. package/build/core/tools/internal/index.d.ts.map +1 -1
  257. package/build/core/tools/internal/index.js +4 -3
  258. package/build/core/tools/internal/index.js.map +1 -1
  259. package/build/core/tools/internal/schemas/index.d.ts +3 -3
  260. package/build/core/tools/internal/schemas/management.d.ts +3 -3
  261. package/build/core/types/server.d.ts +19 -0
  262. package/build/core/types/server.d.ts.map +1 -1
  263. package/build/core/types/server.js.map +1 -1
  264. package/build/core/types/transport.d.ts +178 -0
  265. package/build/core/types/transport.d.ts.map +1 -1
  266. package/build/core/types/transport.js +34 -0
  267. package/build/core/types/transport.js.map +1 -1
  268. package/build/core/validation/CustomJsonSchemaValidator.d.ts.map +1 -1
  269. package/build/core/validation/CustomJsonSchemaValidator.js +4 -3
  270. package/build/core/validation/CustomJsonSchemaValidator.js.map +1 -1
  271. package/build/domains/discovery/appPresets.d.ts.map +1 -1
  272. package/build/domains/discovery/appPresets.js +9 -7
  273. package/build/domains/discovery/appPresets.js.map +1 -1
  274. package/build/domains/installation/configurators/cliArgsConfigurator.d.ts.map +1 -1
  275. package/build/domains/installation/configurators/cliArgsConfigurator.js +8 -4
  276. package/build/domains/installation/configurators/cliArgsConfigurator.js.map +1 -1
  277. package/build/domains/installation/configurators/envVarConfigurator.d.ts.map +1 -1
  278. package/build/domains/installation/configurators/envVarConfigurator.js +8 -4
  279. package/build/domains/installation/configurators/envVarConfigurator.js.map +1 -1
  280. package/build/domains/installation/configurators/tagsConfigurator.d.ts +2 -4
  281. package/build/domains/installation/configurators/tagsConfigurator.d.ts.map +1 -1
  282. package/build/domains/installation/configurators/tagsConfigurator.js +4 -7
  283. package/build/domains/installation/configurators/tagsConfigurator.js.map +1 -1
  284. package/build/domains/installation/validators/conflictDetector.d.ts +6 -4
  285. package/build/domains/installation/validators/conflictDetector.d.ts.map +1 -1
  286. package/build/domains/installation/validators/conflictDetector.js +0 -3
  287. package/build/domains/installation/validators/conflictDetector.js.map +1 -1
  288. package/build/domains/preset/manager/presetManager.js +1 -1
  289. package/build/domains/preset/manager/presetManager.js.map +1 -1
  290. package/build/domains/preset/parsers/tagQueryEvaluator.d.ts +8 -4
  291. package/build/domains/preset/parsers/tagQueryEvaluator.d.ts.map +1 -1
  292. package/build/domains/preset/parsers/tagQueryEvaluator.js.map +1 -1
  293. package/build/domains/preset/services/presetErrorHandler.d.ts +0 -7
  294. package/build/domains/preset/services/presetErrorHandler.d.ts.map +1 -1
  295. package/build/domains/preset/services/presetErrorHandler.js +10 -37
  296. package/build/domains/preset/services/presetErrorHandler.js.map +1 -1
  297. package/build/domains/registry/cacheManager.d.ts +11 -1
  298. package/build/domains/registry/cacheManager.d.ts.map +1 -1
  299. package/build/domains/registry/cacheManager.js +21 -3
  300. package/build/domains/registry/cacheManager.js.map +1 -1
  301. package/build/domains/registry/formatters/serverDetailFormatter.d.ts.map +1 -1
  302. package/build/domains/registry/formatters/serverDetailFormatter.js +57 -8
  303. package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -1
  304. package/build/domains/registry/formatters/versionsFormatter.d.ts.map +1 -1
  305. package/build/domains/registry/formatters/versionsFormatter.js +8 -3
  306. package/build/domains/registry/formatters/versionsFormatter.js.map +1 -1
  307. package/build/logger/logger.d.ts +8 -4
  308. package/build/logger/logger.d.ts.map +1 -1
  309. package/build/logger/logger.js.map +1 -1
  310. package/build/server.d.ts +2 -1
  311. package/build/server.d.ts.map +1 -1
  312. package/build/server.js +16 -7
  313. package/build/server.js.map +1 -1
  314. package/build/template/handlebarsTemplateRenderer.d.ts +34 -0
  315. package/build/template/handlebarsTemplateRenderer.d.ts.map +1 -0
  316. package/build/template/handlebarsTemplateRenderer.js +92 -0
  317. package/build/template/handlebarsTemplateRenderer.js.map +1 -0
  318. package/build/template/index.d.ts +2 -0
  319. package/build/template/index.d.ts.map +1 -0
  320. package/build/template/index.js +3 -0
  321. package/build/template/index.js.map +1 -0
  322. package/build/transport/http/middlewares/securityMiddleware.js +1 -1
  323. package/build/transport/http/middlewares/securityMiddleware.js.map +1 -1
  324. package/build/transport/http/restorableStreamableTransport.d.ts +8 -4
  325. package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -1
  326. package/build/transport/http/restorableStreamableTransport.js.map +1 -1
  327. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  328. package/build/transport/http/routes/sseRoutes.js +15 -0
  329. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  330. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  331. package/build/transport/http/routes/streamableHttpRoutes.js +88 -12
  332. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  333. package/build/transport/http/server.d.ts +1 -0
  334. package/build/transport/http/server.d.ts.map +1 -1
  335. package/build/transport/http/server.js +1 -0
  336. package/build/transport/http/server.js.map +1 -1
  337. package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -1
  338. package/build/transport/http/storage/streamableSessionRepository.js +2 -0
  339. package/build/transport/http/storage/streamableSessionRepository.js.map +1 -1
  340. package/build/transport/http/utils/contextExtractor.d.ts +23 -0
  341. package/build/transport/http/utils/contextExtractor.d.ts.map +1 -0
  342. package/build/transport/http/utils/contextExtractor.js +58 -0
  343. package/build/transport/http/utils/contextExtractor.js.map +1 -0
  344. package/build/transport/restartableStdioTransport.d.ts +8 -4
  345. package/build/transport/restartableStdioTransport.d.ts.map +1 -1
  346. package/build/transport/restartableStdioTransport.js.map +1 -1
  347. package/build/transport/stdioProxyTransport.d.ts +29 -0
  348. package/build/transport/stdioProxyTransport.d.ts.map +1 -1
  349. package/build/transport/stdioProxyTransport.js +236 -53
  350. package/build/transport/stdioProxyTransport.js.map +1 -1
  351. package/build/transport/transportFactory.d.ts +8 -0
  352. package/build/transport/transportFactory.d.ts.map +1 -1
  353. package/build/transport/transportFactory.js +47 -0
  354. package/build/transport/transportFactory.js.map +1 -1
  355. package/build/types/context.d.ts +120 -0
  356. package/build/types/context.d.ts.map +1 -0
  357. package/build/types/context.js +4 -0
  358. package/build/types/context.js.map +1 -0
  359. package/build/types/validation.d.ts +30 -0
  360. package/build/types/validation.d.ts.map +1 -0
  361. package/build/types/validation.js +5 -0
  362. package/build/types/validation.js.map +1 -0
  363. package/build/utils/client/clientInfoExtractor.d.ts +26 -0
  364. package/build/utils/client/clientInfoExtractor.d.ts.map +1 -0
  365. package/build/utils/client/clientInfoExtractor.js +65 -0
  366. package/build/utils/client/clientInfoExtractor.js.map +1 -0
  367. package/build/utils/core/errorHandling.d.ts +9 -5
  368. package/build/utils/core/errorHandling.d.ts.map +1 -1
  369. package/build/utils/core/errorHandling.js.map +1 -1
  370. package/build/utils/core/parsing.d.ts +8 -4
  371. package/build/utils/core/parsing.d.ts.map +1 -1
  372. package/build/utils/core/parsing.js.map +1 -1
  373. package/build/utils/crypto.d.ts +10 -0
  374. package/build/utils/crypto.d.ts.map +1 -0
  375. package/build/utils/crypto.js +20 -0
  376. package/build/utils/crypto.js.map +1 -0
  377. package/build/utils/ui/interactiveSelector.d.ts +16 -6
  378. package/build/utils/ui/interactiveSelector.d.ts.map +1 -1
  379. package/build/utils/ui/interactiveSelector.js +7 -31
  380. package/build/utils/ui/interactiveSelector.js.map +1 -1
  381. package/build/utils/ui/pagination.d.ts +6 -2
  382. package/build/utils/ui/pagination.d.ts.map +1 -1
  383. package/build/utils/ui/pagination.js.map +1 -1
  384. package/build/utils/ui/printer.d.ts +76 -0
  385. package/build/utils/ui/printer.d.ts.map +1 -0
  386. package/build/utils/ui/printer.js +172 -0
  387. package/build/utils/ui/printer.js.map +1 -0
  388. package/build/utils/ui/spinner.d.ts +19 -0
  389. package/build/utils/ui/spinner.d.ts.map +1 -0
  390. package/build/utils/ui/spinner.js +51 -0
  391. package/build/utils/ui/spinner.js.map +1 -0
  392. package/build/utils/ui/table.d.ts +16 -0
  393. package/build/utils/ui/table.d.ts.map +1 -0
  394. package/build/utils/ui/table.js +70 -0
  395. package/build/utils/ui/table.js.map +1 -0
  396. package/build/utils/validation/validationHelpers.d.ts +7 -3
  397. package/build/utils/validation/validationHelpers.d.ts.map +1 -1
  398. package/build/utils/validation/validationHelpers.js.map +1 -1
  399. package/package.json +2 -1
@@ -1,31 +1,45 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
- import { processEnvironment } from '../../config/envProcessor.js';
3
- import { setupCapabilities } from '../../core/capabilities/capabilityManager.js';
4
- import { ClientManager } from '../../core/client/clientManager.js';
5
- import { ServerStatus, } from '../../core/types/index.js';
6
- import { PresetNotificationService, } from '../../domains/preset/services/presetNotificationService.js';
1
+ import { ConfigManager } from '../../config/configManager.js';
2
+ import { getGlobalContextManager } from '../../core/context/globalContextManager.js';
3
+ import { getFilterCache } from '../../core/filtering/index.js';
4
+ import { ConnectionManager } from '../../core/server/connectionManager.js';
5
+ import { MCPServerLifecycleManager } from '../../core/server/mcpServerLifecycleManager.js';
6
+ import { TemplateConfigurationManager } from '../../core/server/templateConfigurationManager.js';
7
+ import { TemplateServerManager } from '../../core/server/templateServerManager.js';
7
8
  import logger, { debugIf } from '../../logger/logger.js';
8
- import { enhanceServerWithLogging } from '../../logger/mcpLoggingEnhancer.js';
9
- import { createTransports, inferTransportType } from '../../transport/transportFactory.js';
10
- import { executeOperation } from '../../utils/core/operationExecution.js';
9
+ /**
10
+ * Refactored ServerManager that coordinates various server management components
11
+ *
12
+ * This class acts as a facade that delegates to specialized managers:
13
+ * - ConnectionManager: Handles transport connection lifecycle
14
+ * - TemplateServerManager: Manages template-based server instances
15
+ * - MCPServerLifecycleManager: Manages MCP server start/stop/restart operations
16
+ * - ConfigurationManager: Handles configuration reprocessing with circuit breaker
17
+ */
11
18
  export class ServerManager {
12
19
  static instance;
13
- inboundConns = new Map();
14
20
  serverConfig;
15
21
  serverCapabilities;
16
- outboundConns = new Map();
17
- transports = {};
18
- connectionSemaphore = new Map();
19
- disconnectingIds = new Set();
22
+ outboundConns;
23
+ transports;
24
+ serverConfigData = null; // Cache the config data
20
25
  instructionAggregator;
21
- clientManager;
22
- mcpServers = new Map();
26
+ // Component managers
27
+ connectionManager;
28
+ templateServerManager;
29
+ mcpServerLifecycleManager;
30
+ templateConfigurationManager;
31
+ // Filtering cache (kept separate as it's a shared resource)
32
+ filterCache = getFilterCache();
23
33
  constructor(config, capabilities, outboundConns, transports) {
24
34
  this.serverConfig = config;
25
35
  this.serverCapabilities = capabilities;
26
36
  this.outboundConns = outboundConns;
27
37
  this.transports = transports;
28
- this.clientManager = ClientManager.getOrCreateInstance();
38
+ // Initialize component managers
39
+ this.connectionManager = new ConnectionManager(config, capabilities, outboundConns);
40
+ this.templateServerManager = new TemplateServerManager();
41
+ this.mcpServerLifecycleManager = new MCPServerLifecycleManager();
42
+ this.templateConfigurationManager = new TemplateConfigurationManager();
29
43
  }
30
44
  static getOrCreateInstance(config, capabilities, outboundConns, transports) {
31
45
  if (!ServerManager.instance) {
@@ -40,21 +54,14 @@ export class ServerManager {
40
54
  return ServerManager.instance;
41
55
  }
42
56
  // Test utility method to reset singleton state
43
- static resetInstance() {
57
+ static async resetInstance() {
44
58
  if (ServerManager.instance) {
45
- // Clean up existing connections with forced close
46
- for (const [sessionId] of ServerManager.instance.inboundConns) {
47
- ServerManager.instance.disconnectTransport(sessionId, true);
48
- }
49
- ServerManager.instance.inboundConns.clear();
50
- ServerManager.instance.connectionSemaphore.clear();
51
- ServerManager.instance.disconnectingIds.clear();
59
+ await ServerManager.instance.cleanup();
60
+ ServerManager.instance = undefined;
52
61
  }
53
- ServerManager.instance = undefined;
54
62
  }
55
63
  /**
56
64
  * Set the instruction aggregator instance
57
- * @param aggregator The instruction aggregator to use
58
65
  */
59
66
  setInstructionAggregator(aggregator) {
60
67
  this.instructionAggregator = aggregator;
@@ -62,179 +69,107 @@ export class ServerManager {
62
69
  aggregator.on('instructions-changed', () => {
63
70
  this.updateServerInstructions();
64
71
  });
72
+ // Set up context change listener for template processing
73
+ this.setupContextChangeListener();
65
74
  debugIf('Instruction aggregator set for ServerManager');
66
75
  }
67
76
  /**
68
- * Update all server instances with new aggregated instructions
77
+ * Set up context change listener for dynamic template processing
69
78
  */
70
- updateServerInstructions() {
71
- logger.info(`Server instructions have changed. Active sessions: ${this.inboundConns.size}`);
72
- for (const [sessionId, _inboundConn] of this.inboundConns) {
79
+ setupContextChangeListener() {
80
+ const globalContextManager = getGlobalContextManager();
81
+ globalContextManager.on('context-changed', async (data) => {
82
+ logger.info('Context changed, reprocessing templates', {
83
+ sessionId: data.newContext?.sessionId,
84
+ sessionChanged: data.sessionIdChanged,
85
+ });
73
86
  try {
74
- // Note: The MCP SDK doesn't provide a direct way to update instructions
75
- // on an existing server instance. Instructions are set during server construction.
76
- // For now, we'll log this for future server instances.
77
- debugIf(() => ({ message: `Instructions changed notification for session ${sessionId}`, meta: { sessionId } }));
87
+ await this.templateConfigurationManager.reprocessTemplatesWithNewContext(data.newContext, async (newConfig) => {
88
+ try {
89
+ await this.templateConfigurationManager.updateServersWithNewConfig(newConfig, this.getCurrentServerConfigs(), (serverName, config) => this.startServer(serverName, config), (serverName) => this.stopServer(serverName), (serverName, config) => this.restartServer(serverName, config));
90
+ }
91
+ catch (updateError) {
92
+ logger.error('Failed to update all servers with new config, attempting individual updates:', updateError);
93
+ await this.templateConfigurationManager.updateServersIndividually(newConfig, (serverName, config) => this.updateServerMetadata(serverName, config));
94
+ }
95
+ });
78
96
  }
79
97
  catch (error) {
80
- logger.warn(`Failed to process instruction change for session ${sessionId}: ${error}`);
98
+ logger.error('Failed to reprocess templates after context change:', error);
81
99
  }
82
- }
100
+ });
101
+ debugIf('Context change listener set up for ServerManager');
83
102
  }
84
- async connectTransport(transport, sessionId, opts) {
85
- // Check if a connection is already in progress for this session
86
- const existingConnection = this.connectionSemaphore.get(sessionId);
87
- if (existingConnection) {
88
- logger.warn(`Connection already in progress for session ${sessionId}, waiting...`);
89
- await existingConnection;
90
- return;
91
- }
92
- // Check if transport is already connected
93
- if (this.inboundConns.has(sessionId)) {
94
- logger.warn(`Transport already connected for session ${sessionId}`);
95
- return;
96
- }
97
- // Create connection promise to prevent race conditions
98
- const connectionPromise = this.performConnection(transport, sessionId, opts);
99
- this.connectionSemaphore.set(sessionId, connectionPromise);
100
- try {
101
- await connectionPromise;
102
- }
103
- finally {
104
- // Clean up the semaphore entry
105
- this.connectionSemaphore.delete(sessionId);
103
+ /**
104
+ * Get current server configurations
105
+ */
106
+ getCurrentServerConfigs() {
107
+ const configs = new Map();
108
+ const status = this.mcpServerLifecycleManager.getMcpServerStatus();
109
+ for (const [serverName, serverInfo] of status) {
110
+ if (serverInfo.running) {
111
+ configs.set(serverName, serverInfo.config);
112
+ }
106
113
  }
114
+ return configs;
107
115
  }
108
- async performConnection(transport, sessionId, opts) {
109
- // Set connection timeout
110
- const connectionTimeoutMs = 30000; // 30 seconds
111
- const timeoutPromise = new Promise((_, reject) => {
112
- setTimeout(() => reject(new Error(`Connection timeout for session ${sessionId}`)), connectionTimeoutMs);
113
- });
114
- try {
115
- await Promise.race([this.doConnect(transport, sessionId, opts), timeoutPromise]);
116
- }
117
- catch (error) {
118
- // Update status to Error if connection exists
119
- const connection = this.inboundConns.get(sessionId);
120
- if (connection) {
121
- connection.status = ServerStatus.Error;
122
- connection.lastError = error instanceof Error ? error : new Error(String(error));
116
+ /**
117
+ * Update all server instances with new aggregated instructions
118
+ */
119
+ updateServerInstructions() {
120
+ const inboundConns = this.connectionManager.getInboundConnections();
121
+ logger.info(`Server instructions have changed. Active sessions: ${inboundConns.size}`);
122
+ for (const [sessionId, _inboundConn] of inboundConns) {
123
+ try {
124
+ debugIf(() => ({
125
+ message: `Instructions changed notification for session ${sessionId}`,
126
+ meta: { sessionId },
127
+ }));
128
+ }
129
+ catch (error) {
130
+ logger.warn(`Failed to process instruction change for session ${sessionId}: ${error}`);
123
131
  }
124
- logger.error(`Failed to connect transport for session ${sessionId}:`, error);
125
- throw error;
126
132
  }
127
133
  }
128
- async doConnect(transport, sessionId, opts) {
134
+ async connectTransport(transport, sessionId, opts, context) {
129
135
  // Get filtered instructions based on client's filter criteria using InstructionAggregator
130
136
  const filteredInstructions = this.instructionAggregator?.getFilteredInstructions(opts, this.outboundConns) || '';
131
- // Create server capabilities with filtered instructions
132
- const serverOptionsWithInstructions = {
133
- ...this.serverCapabilities,
134
- instructions: filteredInstructions || undefined,
135
- };
136
- // Create a new server instance for this transport
137
- const server = new Server(this.serverConfig, serverOptionsWithInstructions);
138
- // Create server info object first
139
- const serverInfo = {
140
- server,
141
- status: ServerStatus.Connecting,
142
- connectedAt: new Date(),
143
- ...opts,
144
- };
145
- // Enhance server with logging middleware
146
- enhanceServerWithLogging(server);
147
- // Set up capabilities for this server instance
148
- await setupCapabilities(this.outboundConns, serverInfo);
149
- // Update the configuration reload service with server info
150
- // Config reload service removed - handled by ConfigChangeHandler
151
- // Store the server instance
152
- this.inboundConns.set(sessionId, serverInfo);
153
- // Connect the transport to the new server instance
154
- await server.connect(transport);
155
- // Update status to Connected after successful connection
156
- serverInfo.status = ServerStatus.Connected;
157
- serverInfo.lastConnected = new Date();
158
- // Register client with preset notification service if preset is used
159
- if (opts.presetName) {
160
- const notificationService = PresetNotificationService.getInstance();
161
- const clientConnection = {
162
- id: sessionId,
163
- presetName: opts.presetName,
164
- sendNotification: async (method, params) => {
165
- try {
166
- if (serverInfo.status === ServerStatus.Connected && serverInfo.server.transport) {
167
- await serverInfo.server.notification({ method, params: params || {} });
168
- debugIf(() => ({ message: 'Sent notification to client', meta: { sessionId, method } }));
169
- }
170
- else {
171
- logger.warn('Cannot send notification to disconnected client', { sessionId, method });
172
- }
173
- }
174
- catch (error) {
175
- logger.error('Failed to send notification to client', {
176
- sessionId,
177
- method,
178
- error: error instanceof Error ? error.message : 'Unknown error',
179
- });
180
- throw error;
181
- }
182
- },
183
- isConnected: () => serverInfo.status === ServerStatus.Connected && !!serverInfo.server.transport,
137
+ // Load configuration data
138
+ // Always process templates when context is available to ensure context-specific rendering
139
+ const configManager = ConfigManager.getInstance();
140
+ if (!this.serverConfigData) {
141
+ // First load - static servers only (templates processed separately per context)
142
+ const { staticServers } = await configManager.loadConfigWithTemplates(undefined);
143
+ this.serverConfigData = {
144
+ mcpServers: staticServers,
145
+ mcpTemplates: {}, // Will be populated per context
184
146
  };
185
- notificationService.trackClient(clientConnection, opts.presetName);
186
- logger.info('Registered client for preset notifications', {
187
- sessionId,
188
- presetName: opts.presetName,
189
- });
190
147
  }
191
- logger.info(`Connected transport for session ${sessionId}`);
192
- }
193
- disconnectTransport(sessionId, forceClose = false) {
194
- // Prevent recursive disconnection calls
195
- if (this.disconnectingIds.has(sessionId)) {
196
- return;
148
+ // Always process templates with current context when context is available
149
+ if (context) {
150
+ const { templateServers } = await configManager.loadConfigWithTemplates(context);
151
+ this.serverConfigData.mcpTemplates = templateServers;
152
+ // Note: ConfigManager.loadConfigWithTemplates already handles conflict detection
153
+ // by filtering out static servers that conflict with template servers
197
154
  }
198
- const server = this.inboundConns.get(sessionId);
199
- if (server) {
200
- this.disconnectingIds.add(sessionId);
201
- try {
202
- // Update status to Disconnected
203
- server.status = ServerStatus.Disconnected;
204
- // Only close the transport if explicitly requested (e.g., during shutdown)
205
- // Don't close if this is called from an onclose handler to avoid recursion
206
- if (forceClose && server.server.transport) {
207
- try {
208
- server.server.transport.close();
209
- }
210
- catch (error) {
211
- logger.error(`Error closing transport for session ${sessionId}:`, error);
212
- }
213
- }
214
- // Untrack client from preset notification service
215
- const notificationService = PresetNotificationService.getInstance();
216
- notificationService.untrackClient(sessionId);
217
- debugIf(() => ({ message: 'Untracked client from preset notifications', meta: { sessionId } }));
218
- this.inboundConns.delete(sessionId);
219
- // Config reload service removed - handled by ConfigChangeHandler
220
- logger.info(`Disconnected transport for session ${sessionId}`);
221
- }
222
- finally {
223
- this.disconnectingIds.delete(sessionId);
224
- }
155
+ // If we have context, create template-based servers
156
+ if (context && this.serverConfigData.mcpTemplates) {
157
+ await this.templateServerManager.createTemplateBasedServers(sessionId, context, opts, this.serverConfigData, this.outboundConns, this.transports);
225
158
  }
159
+ // Connect the transport
160
+ await this.connectionManager.connectTransport(transport, sessionId, opts, context, filteredInstructions);
161
+ }
162
+ async disconnectTransport(sessionId, forceClose = false) {
163
+ // Clean up template-based servers for this client
164
+ await this.templateServerManager.cleanupTemplateServers(sessionId, this.outboundConns, this.transports);
165
+ // Disconnect the transport
166
+ await this.connectionManager.disconnectTransport(sessionId, forceClose);
226
167
  }
227
168
  getTransport(sessionId) {
228
- return this.inboundConns.get(sessionId)?.server.transport;
169
+ return this.connectionManager.getTransport(sessionId);
229
170
  }
230
171
  getTransports() {
231
- const transports = new Map();
232
- for (const [id, server] of this.inboundConns.entries()) {
233
- if (server.server.transport) {
234
- transports.set(id, server.server.transport);
235
- }
236
- }
237
- return transports;
172
+ return this.connectionManager.getTransports();
238
173
  }
239
174
  getClientTransports() {
240
175
  return this.transports;
@@ -242,290 +177,84 @@ export class ServerManager {
242
177
  getClients() {
243
178
  return this.outboundConns;
244
179
  }
245
- /**
246
- * Safely get a client by name. Returns undefined if not found or not an own property.
247
- * Encapsulates access to prevent prototype pollution and accidental key collisions.
248
- */
249
180
  getClient(serverName) {
250
181
  return this.outboundConns.get(serverName);
251
182
  }
252
183
  getActiveTransportsCount() {
253
- return this.inboundConns.size;
184
+ return this.connectionManager.getActiveTransportsCount();
254
185
  }
255
186
  getServer(sessionId) {
256
- return this.inboundConns.get(sessionId);
187
+ return this.connectionManager.getServer(sessionId);
257
188
  }
258
189
  getInboundConnections() {
259
- return this.inboundConns;
190
+ return this.connectionManager.getInboundConnections();
191
+ }
192
+ getTemplateServerManager() {
193
+ return this.templateServerManager;
260
194
  }
261
195
  updateClientsAndTransports(newClients, newTransports) {
262
196
  this.outboundConns = newClients;
263
197
  this.transports = newTransports;
264
198
  }
265
- /**
266
- * Executes a server operation with error handling and retry logic
267
- * @param inboundConn The inbound connection to execute the operation on
268
- * @param operation The operation to execute
269
- * @param options Operation options including timeout and retry settings
270
- */
271
199
  async executeServerOperation(inboundConn, operation, options = {}) {
272
- // Check connection status before executing operation
273
- if (inboundConn.status !== ServerStatus.Connected || !inboundConn.server.transport) {
274
- throw new Error(`Cannot execute operation: server status is ${inboundConn.status}`);
275
- }
276
- return executeOperation(() => operation(inboundConn), 'server', options);
200
+ return this.connectionManager.executeServerOperation(inboundConn, operation, options);
277
201
  }
278
- /**
279
- * Start a new MCP server instance
280
- */
281
202
  async startServer(serverName, config) {
282
- try {
283
- logger.info(`Starting MCP server: ${serverName}`);
284
- // Check if server is already running
285
- if (this.mcpServers.has(serverName)) {
286
- logger.warn(`Server ${serverName} is already running`);
287
- return;
288
- }
289
- // Skip disabled servers
290
- if (config.disabled) {
291
- logger.info(`Server ${serverName} is disabled, skipping start`);
292
- return;
293
- }
294
- // Process environment variables in config
295
- const processedConfig = this.processServerConfig(config);
296
- // Infer transport type if not specified
297
- const configWithType = inferTransportType(processedConfig, serverName);
298
- // Create transport for the server
299
- const transport = await this.createServerTransport(serverName, configWithType);
300
- // Store server info
301
- this.mcpServers.set(serverName, {
302
- transport,
303
- config: configWithType,
304
- });
305
- // Create client connection to the server using ClientManager
306
- await this.connectToServer(serverName, transport, configWithType);
307
- logger.info(`Successfully started MCP server: ${serverName}`);
308
- }
309
- catch (error) {
310
- logger.error(`Failed to start MCP server ${serverName}:`, error);
311
- throw error;
312
- }
203
+ await this.mcpServerLifecycleManager.startServer(serverName, config, this.outboundConns, this.transports);
313
204
  }
314
- /**
315
- * Stop a server instance
316
- */
317
205
  async stopServer(serverName) {
318
- try {
319
- logger.info(`Stopping MCP server: ${serverName}`);
320
- // Check if server is running
321
- const serverInfo = this.mcpServers.get(serverName);
322
- if (!serverInfo) {
323
- logger.warn(`Server ${serverName} is not running`);
324
- return;
325
- }
326
- // Disconnect client from the server using ClientManager
327
- await this.disconnectFromServer(serverName);
328
- // Clean up transport
329
- const { transport } = serverInfo;
330
- try {
331
- if (transport.close) {
332
- await transport.close();
333
- }
334
- }
335
- catch (error) {
336
- logger.warn(`Error closing transport for server ${serverName}:`, error);
337
- }
338
- // Remove from tracking
339
- this.mcpServers.delete(serverName);
340
- logger.info(`Successfully stopped MCP server: ${serverName}`);
341
- }
342
- catch (error) {
343
- logger.error(`Failed to stop MCP server ${serverName}:`, error);
344
- throw error;
345
- }
206
+ await this.mcpServerLifecycleManager.stopServer(serverName, this.outboundConns, this.transports);
346
207
  }
347
- /**
348
- * Restart a server instance
349
- */
350
208
  async restartServer(serverName, config) {
351
- try {
352
- logger.info(`Restarting MCP server: ${serverName}`);
353
- // Check if server is currently running and stop it
354
- const isCurrentlyRunning = this.mcpServers.has(serverName);
355
- if (isCurrentlyRunning) {
356
- logger.info(`Stopping existing server ${serverName} before restart`);
357
- await this.stopServer(serverName);
358
- }
359
- // Start the server with new configuration
360
- await this.startServer(serverName, config);
361
- logger.info(`Successfully restarted MCP server: ${serverName}`);
362
- }
363
- catch (error) {
364
- logger.error(`Failed to restart MCP server ${serverName}:`, error);
365
- throw error;
366
- }
209
+ await this.mcpServerLifecycleManager.restartServer(serverName, config, this.outboundConns, this.transports);
367
210
  }
368
- /**
369
- * Process server configuration to handle environment variables
370
- */
371
- processServerConfig(config) {
372
- try {
373
- // Create a mutable copy for processing
374
- const processedConfig = { ...config };
375
- // Process environment variables if enabled - only pass env-related fields
376
- const envConfig = {
377
- inheritParentEnv: config.inheritParentEnv,
378
- envFilter: config.envFilter,
379
- env: config.env,
380
- };
381
- const processedEnv = processEnvironment(envConfig);
382
- // Replace environment variables in the config while preserving all other fields
383
- if (processedEnv.processedEnv && Object.keys(processedEnv.processedEnv).length > 0) {
384
- processedConfig.env = processedEnv.processedEnv;
385
- }
386
- return processedConfig;
387
- }
388
- catch (error) {
389
- logger.warn(`Failed to process environment variables for server config:`, error);
390
- return config;
391
- }
211
+ getMcpServerStatus() {
212
+ return this.mcpServerLifecycleManager.getMcpServerStatus();
392
213
  }
393
- /**
394
- * Create a transport for the given server configuration
395
- */
396
- async createServerTransport(serverName, config) {
397
- try {
398
- debugIf(() => ({
399
- message: `Creating transport for server ${serverName}`,
400
- meta: { serverName, type: config.type, command: config.command, url: config.url },
401
- }));
402
- // Create transport using the factory pattern
403
- const transports = createTransports({ [serverName]: config });
404
- const transport = transports[serverName];
405
- if (!transport) {
406
- throw new Error(`Failed to create transport for server ${serverName}`);
407
- }
408
- debugIf(() => ({
409
- message: `Successfully created transport for server ${serverName}`,
410
- meta: { serverName, transportType: config.type },
411
- }));
412
- return transport;
413
- }
414
- catch (error) {
415
- logger.error(`Failed to create transport for server ${serverName}:`, error);
416
- throw error;
417
- }
214
+ isMcpServerRunning(serverName) {
215
+ return this.mcpServerLifecycleManager.isMcpServerRunning(serverName);
418
216
  }
419
- /**
420
- * Connect to a server using ClientManager
421
- */
422
- async connectToServer(serverName, transport, _config) {
423
- try {
424
- if (!this.clientManager) {
425
- throw new Error('ClientManager not initialized');
426
- }
427
- // Create client connection using the existing ClientManager infrastructure
428
- const clients = await this.clientManager.createClients({ [serverName]: transport });
429
- // Update our local outbound connections
430
- const newClient = clients.get(serverName);
431
- if (newClient) {
432
- this.outboundConns.set(serverName, newClient);
433
- this.transports[serverName] = transport;
434
- }
435
- debugIf(() => ({
436
- message: `Successfully connected to server ${serverName}`,
437
- meta: { serverName, status: newClient?.status },
438
- }));
439
- }
440
- catch (error) {
441
- logger.error(`Failed to connect to server ${serverName}:`, error);
442
- throw error;
443
- }
217
+ async updateServerMetadata(serverName, newConfig) {
218
+ await this.mcpServerLifecycleManager.updateServerMetadata(serverName, newConfig, this.outboundConns);
444
219
  }
445
- /**
446
- * Disconnect from a server using ClientManager
447
- */
448
- async disconnectFromServer(serverName) {
449
- try {
450
- if (!this.clientManager) {
451
- throw new Error('ClientManager not initialized');
452
- }
453
- // Remove from outbound connections
454
- this.outboundConns.delete(serverName);
455
- delete this.transports[serverName];
456
- // ClientManager doesn't have explicit disconnect method, so we clean up our references
457
- // The actual transport cleanup happens in stopServer
458
- debugIf(() => ({
459
- message: `Successfully disconnected from server ${serverName}`,
460
- meta: { serverName },
461
- }));
462
- }
463
- catch (error) {
464
- logger.error(`Failed to disconnect from server ${serverName}:`, error);
465
- throw error;
466
- }
220
+ getFilteringStats() {
221
+ const stats = this.templateServerManager.getFilteringStats();
222
+ return {
223
+ tracker: stats.tracker,
224
+ cache: this.filterCache.getStats(),
225
+ index: stats.index,
226
+ enabled: stats.enabled,
227
+ };
467
228
  }
468
- /**
469
- * Get the status of all managed MCP servers
470
- */
471
- getMcpServerStatus() {
472
- const status = new Map();
473
- for (const [serverName, serverInfo] of this.mcpServers.entries()) {
474
- status.set(serverName, {
475
- running: true,
476
- config: serverInfo.config,
477
- });
478
- }
479
- return status;
229
+ getClientTemplateInfo() {
230
+ return this.templateServerManager.getClientTemplateInfo();
480
231
  }
481
- /**
482
- * Check if a specific MCP server is running
483
- */
484
- isMcpServerRunning(serverName) {
485
- return this.mcpServers.has(serverName);
232
+ rebuildTemplateIndex() {
233
+ this.templateServerManager.rebuildTemplateIndex(this.serverConfigData || undefined);
234
+ }
235
+ clearFilterCache() {
236
+ this.filterCache.clear();
237
+ logger.info('Filter cache cleared');
238
+ }
239
+ getIdleTemplateInstances(idleTimeoutMs = 10 * 60 * 1000) {
240
+ return this.templateServerManager.getIdleTemplateInstances(idleTimeoutMs);
241
+ }
242
+ async cleanupIdleInstances() {
243
+ return this.templateServerManager.cleanupIdleInstances();
486
244
  }
487
245
  /**
488
- * Update metadata for a running server without restarting it
246
+ * Clean up all resources (for shutdown)
489
247
  */
490
- async updateServerMetadata(serverName, newConfig) {
491
- try {
492
- const serverInfo = this.mcpServers.get(serverName);
493
- if (!serverInfo) {
494
- logger.warn(`Cannot update metadata for ${serverName}: server not running`);
495
- return;
496
- }
497
- debugIf(() => ({
498
- message: `Updating metadata for server ${serverName}`,
499
- meta: {
500
- oldConfig: serverInfo.config,
501
- newConfig,
502
- },
503
- }));
504
- // Update the stored configuration with new metadata
505
- serverInfo.config = { ...serverInfo.config, ...newConfig };
506
- // Update transport metadata if supported
507
- const { transport } = serverInfo;
508
- if (transport && 'tags' in transport) {
509
- // Update tags and other metadata on transport
510
- if (newConfig.tags) {
511
- transport.tags = newConfig.tags;
512
- }
513
- }
514
- // Update outbound connections metadata
515
- const outboundConn = this.outboundConns.get(serverName);
516
- if (outboundConn && outboundConn.transport && 'tags' in outboundConn.transport) {
517
- // Update tags in the outbound connection
518
- outboundConn.transport.tags = newConfig.tags;
519
- }
520
- debugIf(() => ({
521
- message: `Successfully updated metadata for server ${serverName}`,
522
- meta: { newTags: newConfig.tags },
523
- }));
524
- }
525
- catch (error) {
526
- logger.error(`Failed to update metadata for server ${serverName}:`, error);
527
- throw error;
528
- }
248
+ async cleanup() {
249
+ // Clean up all connections
250
+ await this.connectionManager.cleanup();
251
+ // Clean up template server manager
252
+ this.templateServerManager.cleanup();
253
+ // Clean up configuration manager
254
+ this.templateConfigurationManager.cleanup();
255
+ // Clear cache
256
+ this.filterCache.clear();
257
+ logger.info('ServerManager cleanup completed');
529
258
  }
530
259
  }
531
260
  //# sourceMappingURL=serverManager.js.map