@1mcp/agent 0.28.0 → 0.29.0-beta1
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.
- package/build/auth/sessionTypes.d.ts +19 -0
- package/build/auth/sessionTypes.d.ts.map +1 -1
- package/build/commands/app/backups.d.ts.map +1 -1
- package/build/commands/app/backups.js +52 -42
- package/build/commands/app/backups.js.map +1 -1
- package/build/commands/app/consolidate.d.ts.map +1 -1
- package/build/commands/app/consolidate.js +66 -55
- package/build/commands/app/consolidate.js.map +1 -1
- package/build/commands/app/discover.d.ts.map +1 -1
- package/build/commands/app/discover.js +32 -25
- package/build/commands/app/discover.js.map +1 -1
- package/build/commands/app/index.d.ts.map +1 -1
- package/build/commands/app/index.js +2 -1
- package/build/commands/app/index.js.map +1 -1
- package/build/commands/app/list.d.ts.map +1 -1
- package/build/commands/app/list.js +35 -28
- package/build/commands/app/list.js.map +1 -1
- package/build/commands/app/restore.d.ts.map +1 -1
- package/build/commands/app/restore.js +74 -63
- package/build/commands/app/restore.js.map +1 -1
- package/build/commands/app/status.d.ts.map +1 -1
- package/build/commands/app/status.js +51 -43
- package/build/commands/app/status.js.map +1 -1
- package/build/commands/mcp/add.d.ts.map +1 -1
- package/build/commands/mcp/add.js +29 -23
- package/build/commands/mcp/add.js.map +1 -1
- package/build/commands/mcp/enable.d.ts.map +1 -1
- package/build/commands/mcp/enable.js +16 -15
- package/build/commands/mcp/enable.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +2 -1
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/mcp/install.d.ts.map +1 -1
- package/build/commands/mcp/install.js +44 -46
- package/build/commands/mcp/install.js.map +1 -1
- package/build/commands/mcp/list.d.ts.map +1 -1
- package/build/commands/mcp/list.js +51 -37
- package/build/commands/mcp/list.js.map +1 -1
- package/build/commands/mcp/remove.d.ts.map +1 -1
- package/build/commands/mcp/remove.js +23 -16
- package/build/commands/mcp/remove.js.map +1 -1
- package/build/commands/mcp/status.d.ts.map +1 -1
- package/build/commands/mcp/status.js +81 -73
- package/build/commands/mcp/status.js.map +1 -1
- package/build/commands/mcp/tokens.d.ts.map +1 -1
- package/build/commands/mcp/tokens.js +46 -47
- package/build/commands/mcp/tokens.js.map +1 -1
- package/build/commands/mcp/uninstall.d.ts.map +1 -1
- package/build/commands/mcp/uninstall.js +8 -6
- package/build/commands/mcp/uninstall.js.map +1 -1
- package/build/commands/mcp/update.d.ts.map +1 -1
- package/build/commands/mcp/update.js +11 -8
- package/build/commands/mcp/update.js.map +1 -1
- package/build/commands/mcp/utils/installWizard.d.ts.map +1 -1
- package/build/commands/mcp/utils/installWizard.js +3 -2
- package/build/commands/mcp/utils/installWizard.js.map +1 -1
- package/build/commands/mcp/utils/serverUtils.d.ts +8 -4
- package/build/commands/mcp/utils/serverUtils.d.ts.map +1 -1
- package/build/commands/mcp/utils/serverUtils.js +0 -3
- package/build/commands/mcp/utils/serverUtils.js.map +1 -1
- package/build/commands/mcp/wizard/components/serverDetailsDisplay.d.ts.map +1 -1
- package/build/commands/mcp/wizard/components/serverDetailsDisplay.js +4 -3
- package/build/commands/mcp/wizard/components/serverDetailsDisplay.js.map +1 -1
- package/build/commands/mcp/wizard/components/stepIndicator.d.ts.map +1 -1
- package/build/commands/mcp/wizard/components/stepIndicator.js +3 -2
- package/build/commands/mcp/wizard/components/stepIndicator.js.map +1 -1
- package/build/commands/mcp/wizard/components/welcomeScreen.d.ts.map +1 -1
- package/build/commands/mcp/wizard/components/welcomeScreen.js +2 -1
- package/build/commands/mcp/wizard/components/welcomeScreen.js.map +1 -1
- package/build/commands/mcp/wizard/configuration.d.ts.map +1 -1
- package/build/commands/mcp/wizard/configuration.js +10 -9
- package/build/commands/mcp/wizard/configuration.js.map +1 -1
- package/build/commands/mcp/wizard/display.d.ts.map +1 -1
- package/build/commands/mcp/wizard/display.js +9 -8
- package/build/commands/mcp/wizard/display.js.map +1 -1
- package/build/commands/mcp/wizard/search.d.ts.map +1 -1
- package/build/commands/mcp/wizard/search.js +4 -3
- package/build/commands/mcp/wizard/search.js.map +1 -1
- package/build/commands/preset/create.d.ts.map +1 -1
- package/build/commands/preset/create.js +7 -6
- package/build/commands/preset/create.js.map +1 -1
- package/build/commands/preset/delete.d.ts.map +1 -1
- package/build/commands/preset/delete.js +4 -2
- package/build/commands/preset/delete.js.map +1 -1
- package/build/commands/preset/edit.d.ts.map +1 -1
- package/build/commands/preset/edit.js +8 -5
- package/build/commands/preset/edit.js.map +1 -1
- package/build/commands/preset/interactive.d.ts.map +1 -1
- package/build/commands/preset/interactive.js +24 -15
- package/build/commands/preset/interactive.js.map +1 -1
- package/build/commands/preset/list.d.ts.map +1 -1
- package/build/commands/preset/list.js +12 -10
- package/build/commands/preset/list.js.map +1 -1
- package/build/commands/preset/show.d.ts.map +1 -1
- package/build/commands/preset/show.js +3 -2
- package/build/commands/preset/show.js.map +1 -1
- package/build/commands/preset/test.d.ts.map +1 -1
- package/build/commands/preset/test.js +2 -1
- package/build/commands/preset/test.js.map +1 -1
- package/build/commands/preset/url.d.ts.map +1 -1
- package/build/commands/preset/url.js +2 -1
- package/build/commands/preset/url.js.map +1 -1
- package/build/commands/proxy/index.d.ts.map +1 -1
- package/build/commands/proxy/index.js +5 -0
- package/build/commands/proxy/index.js.map +1 -1
- package/build/commands/proxy/proxy.d.ts.map +1 -1
- package/build/commands/proxy/proxy.js +1 -0
- package/build/commands/proxy/proxy.js.map +1 -1
- package/build/commands/registry/index.d.ts.map +1 -1
- package/build/commands/registry/index.js +2 -1
- package/build/commands/registry/index.js.map +1 -1
- package/build/commands/registry/search.d.ts.map +1 -1
- package/build/commands/registry/search.js +42 -37
- package/build/commands/registry/search.js.map +1 -1
- package/build/commands/registry/show.d.ts.map +1 -1
- package/build/commands/registry/show.js +8 -7
- package/build/commands/registry/show.js.map +1 -1
- package/build/commands/registry/status.d.ts.map +1 -1
- package/build/commands/registry/status.js +26 -16
- package/build/commands/registry/status.js.map +1 -1
- package/build/commands/registry/versions.d.ts.map +1 -1
- package/build/commands/registry/versions.js +8 -7
- package/build/commands/registry/versions.js.map +1 -1
- package/build/config/configChangeDetector.d.ts +8 -0
- package/build/config/configChangeDetector.d.ts.map +1 -0
- package/build/config/configChangeDetector.js +49 -0
- package/build/config/configChangeDetector.js.map +1 -0
- package/build/config/configLoader.d.ts +16 -0
- package/build/config/configLoader.d.ts.map +1 -0
- package/build/config/configLoader.js +155 -0
- package/build/config/configLoader.js.map +1 -0
- package/build/config/configManager.d.ts +49 -86
- package/build/config/configManager.d.ts.map +1 -1
- package/build/config/configManager.js +188 -301
- package/build/config/configManager.js.map +1 -1
- package/build/config/configWatcher.d.ts +18 -0
- package/build/config/configWatcher.d.ts.map +1 -0
- package/build/config/configWatcher.js +78 -0
- package/build/config/configWatcher.js.map +1 -0
- package/build/config/projectConfigTypes.d.ts +40 -0
- package/build/config/projectConfigTypes.d.ts.map +1 -1
- package/build/config/projectConfigTypes.js +21 -0
- package/build/config/projectConfigTypes.js.map +1 -1
- package/build/config/templateProcessor.d.ts +14 -0
- package/build/config/templateProcessor.d.ts.map +1 -0
- package/build/config/templateProcessor.js +102 -0
- package/build/config/templateProcessor.js.map +1 -0
- package/build/config/types.d.ts +36 -0
- package/build/config/types.d.ts.map +1 -0
- package/build/config/types.js +14 -0
- package/build/config/types.js.map +1 -0
- package/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.d.ts.map +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/constants/mcp.js.map +1 -1
- package/build/core/capabilities/capabilityManager.d.ts +3 -10
- package/build/core/capabilities/capabilityManager.d.ts.map +1 -1
- package/build/core/capabilities/internal/discoveryTools.d.ts.map +1 -1
- package/build/core/capabilities/internal/discoveryTools.js +25 -0
- package/build/core/capabilities/internal/discoveryTools.js.map +1 -1
- package/build/core/capabilities/internal/installationTools.d.ts.map +1 -1
- package/build/core/capabilities/internal/installationTools.js +14 -0
- package/build/core/capabilities/internal/installationTools.js.map +1 -1
- package/build/core/capabilities/internal/managementTools.d.ts.map +1 -1
- package/build/core/capabilities/internal/managementTools.js +25 -0
- package/build/core/capabilities/internal/managementTools.js.map +1 -1
- package/build/core/client/clientFactory.d.ts +7 -0
- package/build/core/client/clientFactory.d.ts.map +1 -0
- package/build/core/client/clientFactory.js +36 -0
- package/build/core/client/clientFactory.js.map +1 -0
- package/build/core/client/clientManager.d.ts +13 -101
- package/build/core/client/clientManager.d.ts.map +1 -1
- package/build/core/client/clientManager.js +115 -418
- package/build/core/client/clientManager.js.map +1 -1
- package/build/core/client/connectionHandler.d.ts +8 -0
- package/build/core/client/connectionHandler.d.ts.map +1 -0
- package/build/core/client/connectionHandler.js +80 -0
- package/build/core/client/connectionHandler.js.map +1 -0
- package/build/core/client/oauthFlowHandler.d.ts +10 -0
- package/build/core/client/oauthFlowHandler.d.ts.map +1 -0
- package/build/core/client/oauthFlowHandler.js +81 -0
- package/build/core/client/oauthFlowHandler.js.map +1 -0
- package/build/core/client/transportRecreator.d.ts +5 -0
- package/build/core/client/transportRecreator.d.ts.map +1 -0
- package/build/core/client/transportRecreator.js +23 -0
- package/build/core/client/transportRecreator.js.map +1 -0
- package/build/core/client/types.d.ts +7 -0
- package/build/core/client/types.d.ts.map +1 -0
- package/build/core/client/types.js +11 -0
- package/build/core/client/types.js.map +1 -0
- package/build/core/configChangeHandler.d.ts.map +1 -1
- package/build/core/configChangeHandler.js +11 -5
- package/build/core/configChangeHandler.js.map +1 -1
- package/build/core/context/globalContextManager.d.ts +58 -0
- package/build/core/context/globalContextManager.d.ts.map +1 -0
- package/build/core/context/globalContextManager.js +190 -0
- package/build/core/context/globalContextManager.js.map +1 -0
- package/build/core/filtering/clientFiltering.d.ts +1 -2
- package/build/core/filtering/clientFiltering.d.ts.map +1 -1
- package/build/core/filtering/clientTemplateTracker.d.ts +116 -0
- package/build/core/filtering/clientTemplateTracker.d.ts.map +1 -0
- package/build/core/filtering/clientTemplateTracker.js +286 -0
- package/build/core/filtering/clientTemplateTracker.js.map +1 -0
- package/build/core/filtering/filterCache.d.ts +121 -0
- package/build/core/filtering/filterCache.d.ts.map +1 -0
- package/build/core/filtering/filterCache.js +359 -0
- package/build/core/filtering/filterCache.js.map +1 -0
- package/build/core/filtering/index.d.ts +16 -0
- package/build/core/filtering/index.d.ts.map +1 -0
- package/build/core/filtering/index.js +16 -0
- package/build/core/filtering/index.js.map +1 -0
- package/build/core/filtering/templateFilteringService.d.ts +72 -0
- package/build/core/filtering/templateFilteringService.d.ts.map +1 -0
- package/build/core/filtering/templateFilteringService.js +293 -0
- package/build/core/filtering/templateFilteringService.js.map +1 -0
- package/build/core/filtering/templateIndex.d.ts +132 -0
- package/build/core/filtering/templateIndex.d.ts.map +1 -0
- package/build/core/filtering/templateIndex.js +368 -0
- package/build/core/filtering/templateIndex.js.map +1 -0
- package/build/core/flags/flagManager.d.ts +8 -4
- package/build/core/flags/flagManager.d.ts.map +1 -1
- package/build/core/flags/flagManager.js.map +1 -1
- package/build/core/protocol/requestHandlers.d.ts.map +1 -1
- package/build/core/protocol/requestHandlers.js +208 -46
- package/build/core/protocol/requestHandlers.js.map +1 -1
- package/build/core/server/clientInstancePool.d.ts +146 -0
- package/build/core/server/clientInstancePool.d.ts.map +1 -0
- package/build/core/server/clientInstancePool.js +407 -0
- package/build/core/server/clientInstancePool.js.map +1 -0
- package/build/core/server/connectionManager.d.ts +70 -0
- package/build/core/server/connectionManager.d.ts.map +1 -0
- package/build/core/server/connectionManager.js +240 -0
- package/build/core/server/connectionManager.js.map +1 -0
- package/build/core/server/mcpServerLifecycleManager.d.ts +55 -0
- package/build/core/server/mcpServerLifecycleManager.d.ts.map +1 -0
- package/build/core/server/mcpServerLifecycleManager.js +272 -0
- package/build/core/server/mcpServerLifecycleManager.js.map +1 -0
- package/build/core/server/serverManager.d.ts +56 -56
- package/build/core/server/serverManager.d.ts.map +1 -1
- package/build/core/server/serverManager.js +160 -431
- package/build/core/server/serverManager.js.map +1 -1
- package/build/core/server/templateConfigurationManager.d.ts +51 -0
- package/build/core/server/templateConfigurationManager.d.ts.map +1 -0
- package/build/core/server/templateConfigurationManager.js +160 -0
- package/build/core/server/templateConfigurationManager.js.map +1 -0
- package/build/core/server/templateServerManager.d.ts +92 -0
- package/build/core/server/templateServerManager.d.ts.map +1 -0
- package/build/core/server/templateServerManager.js +367 -0
- package/build/core/server/templateServerManager.js.map +1 -0
- package/build/core/tools/handlers/serverManagementHandler.d.ts +51 -1
- package/build/core/tools/handlers/serverManagementHandler.d.ts.map +1 -1
- package/build/core/tools/handlers/serverManagementHandler.js +42 -0
- package/build/core/tools/handlers/serverManagementHandler.js.map +1 -1
- package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts +11 -1
- package/build/core/tools/internal/adapters/helpers/configTransformers.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/installation/types.d.ts +2 -4
- package/build/core/tools/internal/adapters/installation/types.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/installationAdapter.d.ts +2 -4
- package/build/core/tools/internal/adapters/installationAdapter.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/installationAdapter.js.map +1 -1
- package/build/core/tools/internal/adapters/management/managementAdapter.d.ts +2 -5
- package/build/core/tools/internal/adapters/management/managementAdapter.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/management/managementAdapter.js.map +1 -1
- package/build/core/tools/internal/adapters/management/types.d.ts +8 -4
- package/build/core/tools/internal/adapters/management/types.d.ts.map +1 -1
- package/build/core/tools/internal/index.d.ts +0 -31
- package/build/core/tools/internal/index.d.ts.map +1 -1
- package/build/core/tools/internal/index.js +4 -3
- package/build/core/tools/internal/index.js.map +1 -1
- package/build/core/tools/internal/schemas/index.d.ts +3 -3
- package/build/core/tools/internal/schemas/management.d.ts +3 -3
- package/build/core/types/server.d.ts +19 -0
- package/build/core/types/server.d.ts.map +1 -1
- package/build/core/types/server.js.map +1 -1
- package/build/core/types/transport.d.ts +178 -0
- package/build/core/types/transport.d.ts.map +1 -1
- package/build/core/types/transport.js +34 -0
- package/build/core/types/transport.js.map +1 -1
- package/build/core/validation/CustomJsonSchemaValidator.d.ts.map +1 -1
- package/build/core/validation/CustomJsonSchemaValidator.js +4 -3
- package/build/core/validation/CustomJsonSchemaValidator.js.map +1 -1
- package/build/domains/discovery/appPresets.d.ts.map +1 -1
- package/build/domains/discovery/appPresets.js +9 -7
- package/build/domains/discovery/appPresets.js.map +1 -1
- package/build/domains/installation/configurators/cliArgsConfigurator.d.ts.map +1 -1
- package/build/domains/installation/configurators/cliArgsConfigurator.js +8 -4
- package/build/domains/installation/configurators/cliArgsConfigurator.js.map +1 -1
- package/build/domains/installation/configurators/envVarConfigurator.d.ts.map +1 -1
- package/build/domains/installation/configurators/envVarConfigurator.js +8 -4
- package/build/domains/installation/configurators/envVarConfigurator.js.map +1 -1
- package/build/domains/installation/configurators/tagsConfigurator.d.ts +2 -4
- package/build/domains/installation/configurators/tagsConfigurator.d.ts.map +1 -1
- package/build/domains/installation/configurators/tagsConfigurator.js +4 -7
- package/build/domains/installation/configurators/tagsConfigurator.js.map +1 -1
- package/build/domains/installation/validators/conflictDetector.d.ts +6 -4
- package/build/domains/installation/validators/conflictDetector.d.ts.map +1 -1
- package/build/domains/installation/validators/conflictDetector.js +0 -3
- package/build/domains/installation/validators/conflictDetector.js.map +1 -1
- package/build/domains/preset/manager/presetManager.js +1 -1
- package/build/domains/preset/manager/presetManager.js.map +1 -1
- package/build/domains/preset/parsers/tagQueryEvaluator.d.ts +8 -4
- package/build/domains/preset/parsers/tagQueryEvaluator.d.ts.map +1 -1
- package/build/domains/preset/parsers/tagQueryEvaluator.js.map +1 -1
- package/build/domains/preset/services/presetErrorHandler.d.ts +0 -7
- package/build/domains/preset/services/presetErrorHandler.d.ts.map +1 -1
- package/build/domains/preset/services/presetErrorHandler.js +10 -37
- package/build/domains/preset/services/presetErrorHandler.js.map +1 -1
- package/build/domains/registry/cacheManager.d.ts +11 -1
- package/build/domains/registry/cacheManager.d.ts.map +1 -1
- package/build/domains/registry/cacheManager.js +21 -3
- package/build/domains/registry/cacheManager.js.map +1 -1
- package/build/domains/registry/formatters/serverDetailFormatter.d.ts.map +1 -1
- package/build/domains/registry/formatters/serverDetailFormatter.js +57 -8
- package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -1
- package/build/domains/registry/formatters/versionsFormatter.d.ts.map +1 -1
- package/build/domains/registry/formatters/versionsFormatter.js +8 -3
- package/build/domains/registry/formatters/versionsFormatter.js.map +1 -1
- package/build/logger/logger.d.ts +8 -4
- package/build/logger/logger.d.ts.map +1 -1
- package/build/logger/logger.js.map +1 -1
- package/build/server.d.ts +2 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +16 -7
- package/build/server.js.map +1 -1
- package/build/template/handlebarsTemplateRenderer.d.ts +34 -0
- package/build/template/handlebarsTemplateRenderer.d.ts.map +1 -0
- package/build/template/handlebarsTemplateRenderer.js +92 -0
- package/build/template/handlebarsTemplateRenderer.js.map +1 -0
- package/build/template/index.d.ts +2 -0
- package/build/template/index.d.ts.map +1 -0
- package/build/template/index.js +3 -0
- package/build/template/index.js.map +1 -0
- package/build/transport/http/middlewares/securityMiddleware.js +1 -1
- package/build/transport/http/middlewares/securityMiddleware.js.map +1 -1
- package/build/transport/http/restorableStreamableTransport.d.ts +8 -4
- package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -1
- package/build/transport/http/restorableStreamableTransport.js.map +1 -1
- package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/sseRoutes.js +15 -0
- package/build/transport/http/routes/sseRoutes.js.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +88 -12
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts +1 -0
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +1 -0
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -1
- package/build/transport/http/storage/streamableSessionRepository.js +2 -0
- package/build/transport/http/storage/streamableSessionRepository.js.map +1 -1
- package/build/transport/http/utils/contextExtractor.d.ts +23 -0
- package/build/transport/http/utils/contextExtractor.d.ts.map +1 -0
- package/build/transport/http/utils/contextExtractor.js +58 -0
- package/build/transport/http/utils/contextExtractor.js.map +1 -0
- package/build/transport/restartableStdioTransport.d.ts +8 -4
- package/build/transport/restartableStdioTransport.d.ts.map +1 -1
- package/build/transport/restartableStdioTransport.js.map +1 -1
- package/build/transport/stdioProxyTransport.d.ts +15 -0
- package/build/transport/stdioProxyTransport.d.ts.map +1 -1
- package/build/transport/stdioProxyTransport.js +168 -35
- package/build/transport/stdioProxyTransport.js.map +1 -1
- package/build/transport/transportFactory.d.ts +8 -0
- package/build/transport/transportFactory.d.ts.map +1 -1
- package/build/transport/transportFactory.js +47 -0
- package/build/transport/transportFactory.js.map +1 -1
- package/build/types/context.d.ts +120 -0
- package/build/types/context.d.ts.map +1 -0
- package/build/types/context.js +4 -0
- package/build/types/context.js.map +1 -0
- package/build/types/validation.d.ts +30 -0
- package/build/types/validation.d.ts.map +1 -0
- package/build/types/validation.js +5 -0
- package/build/types/validation.js.map +1 -0
- package/build/utils/client/clientInfoExtractor.d.ts +26 -0
- package/build/utils/client/clientInfoExtractor.d.ts.map +1 -0
- package/build/utils/client/clientInfoExtractor.js +65 -0
- package/build/utils/client/clientInfoExtractor.js.map +1 -0
- package/build/utils/core/errorHandling.d.ts +9 -5
- package/build/utils/core/errorHandling.d.ts.map +1 -1
- package/build/utils/core/errorHandling.js.map +1 -1
- package/build/utils/core/parsing.d.ts +8 -4
- package/build/utils/core/parsing.d.ts.map +1 -1
- package/build/utils/core/parsing.js.map +1 -1
- package/build/utils/crypto.d.ts +10 -0
- package/build/utils/crypto.d.ts.map +1 -0
- package/build/utils/crypto.js +20 -0
- package/build/utils/crypto.js.map +1 -0
- package/build/utils/ui/interactiveSelector.d.ts +16 -6
- package/build/utils/ui/interactiveSelector.d.ts.map +1 -1
- package/build/utils/ui/interactiveSelector.js +7 -31
- package/build/utils/ui/interactiveSelector.js.map +1 -1
- package/build/utils/ui/pagination.d.ts +6 -2
- package/build/utils/ui/pagination.d.ts.map +1 -1
- package/build/utils/ui/pagination.js.map +1 -1
- package/build/utils/ui/printer.d.ts +76 -0
- package/build/utils/ui/printer.d.ts.map +1 -0
- package/build/utils/ui/printer.js +172 -0
- package/build/utils/ui/printer.js.map +1 -0
- package/build/utils/ui/spinner.d.ts +19 -0
- package/build/utils/ui/spinner.d.ts.map +1 -0
- package/build/utils/ui/spinner.js +51 -0
- package/build/utils/ui/spinner.js.map +1 -0
- package/build/utils/ui/table.d.ts +16 -0
- package/build/utils/ui/table.d.ts.map +1 -0
- package/build/utils/ui/table.js +70 -0
- package/build/utils/ui/table.js.map +1 -0
- package/build/utils/validation/validationHelpers.d.ts +7 -3
- package/build/utils/validation/validationHelpers.d.ts.map +1 -1
- package/build/utils/validation/validationHelpers.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,31 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
17
|
-
transports
|
|
18
|
-
|
|
19
|
-
disconnectingIds = new Set();
|
|
22
|
+
outboundConns;
|
|
23
|
+
transports;
|
|
24
|
+
serverConfigData = null; // Cache the config data
|
|
20
25
|
instructionAggregator;
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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
|
-
*
|
|
77
|
+
* Set up context change listener for dynamic template processing
|
|
69
78
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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.
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
|
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
|
-
//
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
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
|
-
|
|
199
|
-
if (
|
|
200
|
-
this.
|
|
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.
|
|
169
|
+
return this.connectionManager.getTransport(sessionId);
|
|
229
170
|
}
|
|
230
171
|
getTransports() {
|
|
231
|
-
|
|
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.
|
|
184
|
+
return this.connectionManager.getActiveTransportsCount();
|
|
254
185
|
}
|
|
255
186
|
getServer(sessionId) {
|
|
256
|
-
return this.
|
|
187
|
+
return this.connectionManager.getServer(sessionId);
|
|
257
188
|
}
|
|
258
189
|
getInboundConnections() {
|
|
259
|
-
return this.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
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
|
-
|
|
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
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
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
|
-
*
|
|
246
|
+
* Clean up all resources (for shutdown)
|
|
489
247
|
*/
|
|
490
|
-
async
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
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
|