@1mcp/agent 0.32.2 → 0.33.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/oauthAuthorizationFlow.d.ts +145 -0
- package/build/auth/oauthAuthorizationFlow.d.ts.map +1 -0
- package/build/auth/oauthAuthorizationFlow.js +257 -0
- package/build/auth/oauthAuthorizationFlow.js.map +1 -0
- package/build/auth/sdkOAuthServerProvider.d.ts +4 -0
- package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -1
- package/build/auth/sdkOAuthServerProvider.js +4 -0
- package/build/auth/sdkOAuthServerProvider.js.map +1 -1
- package/build/auth/storage/fileStorageService.d.ts.map +1 -1
- package/build/auth/storage/fileStorageService.js +9 -5
- package/build/auth/storage/fileStorageService.js.map +1 -1
- package/build/commands/cliSetup/setupFiles.d.ts +2 -4
- package/build/commands/cliSetup/setupFiles.d.ts.map +1 -1
- package/build/commands/cliSetup/setupFiles.js +8 -46
- package/build/commands/cliSetup/setupFiles.js.map +1 -1
- package/build/commands/inspect/inspect.d.ts +3 -0
- package/build/commands/inspect/inspect.d.ts.map +1 -1
- package/build/commands/inspect/inspect.js +90 -83
- package/build/commands/inspect/inspect.js.map +1 -1
- package/build/commands/instructions/instructions.d.ts.map +1 -1
- package/build/commands/instructions/instructions.js +11 -68
- package/build/commands/instructions/instructions.js.map +1 -1
- package/build/commands/mcp/install.d.ts.map +1 -1
- package/build/commands/mcp/install.js +62 -145
- package/build/commands/mcp/install.js.map +1 -1
- package/build/commands/mcp/installSource.d.ts +13 -0
- package/build/commands/mcp/installSource.d.ts.map +1 -0
- package/build/commands/mcp/installSource.js +69 -0
- package/build/commands/mcp/installSource.js.map +1 -0
- package/build/commands/mcp/uninstall.d.ts.map +1 -1
- package/build/commands/mcp/uninstall.js +20 -15
- package/build/commands/mcp/uninstall.js.map +1 -1
- package/build/commands/preset/edit.d.ts.map +1 -1
- package/build/commands/preset/edit.js +2 -0
- 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 +2 -0
- package/build/commands/preset/interactive.js.map +1 -1
- package/build/commands/preset/show.d.ts.map +1 -1
- package/build/commands/preset/show.js +2 -0
- 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 -0
- package/build/commands/preset/test.js.map +1 -1
- package/build/commands/proxy/proxy.d.ts.map +1 -1
- package/build/commands/proxy/proxy.js +11 -22
- package/build/commands/proxy/proxy.js.map +1 -1
- package/build/commands/registry/options.d.ts +14 -7
- package/build/commands/registry/options.d.ts.map +1 -1
- package/build/commands/registry/options.js +14 -7
- package/build/commands/registry/options.js.map +1 -1
- package/build/commands/run/run.d.ts +1 -0
- package/build/commands/run/run.d.ts.map +1 -1
- package/build/commands/run/run.js +124 -156
- package/build/commands/run/run.js.map +1 -1
- package/build/commands/serve/index.d.ts +5 -0
- package/build/commands/serve/index.d.ts.map +1 -1
- package/build/commands/serve/index.js +6 -1
- package/build/commands/serve/index.js.map +1 -1
- package/build/commands/serve/serve.d.ts +1 -0
- package/build/commands/serve/serve.d.ts.map +1 -1
- package/build/commands/serve/serve.js +5 -103
- package/build/commands/serve/serve.js.map +1 -1
- package/build/commands/serve/serveOptions.d.ts +6 -0
- package/build/commands/serve/serveOptions.d.ts.map +1 -0
- package/build/commands/serve/serveOptions.js +90 -0
- package/build/commands/serve/serveOptions.js.map +1 -0
- package/build/commands/shared/baseConfigUtils.d.ts +1 -25
- package/build/commands/shared/baseConfigUtils.d.ts.map +1 -1
- package/build/commands/shared/baseConfigUtils.js +3 -193
- package/build/commands/shared/baseConfigUtils.js.map +1 -1
- package/build/commands/shared/clientSurfaceAttachment.d.ts +131 -0
- package/build/commands/shared/clientSurfaceAttachment.d.ts.map +1 -0
- package/build/commands/shared/clientSurfaceAttachment.js +205 -0
- package/build/commands/shared/clientSurfaceAttachment.js.map +1 -0
- package/build/commands/shared/configParsingUtils.d.ts +9 -0
- package/build/commands/shared/configParsingUtils.d.ts.map +1 -0
- package/build/commands/shared/configParsingUtils.js +179 -0
- package/build/commands/shared/configParsingUtils.js.map +1 -0
- package/build/commands/shared/serveClient.d.ts.map +1 -1
- package/build/commands/shared/serveClient.js +35 -12
- package/build/commands/shared/serveClient.js.map +1 -1
- package/build/commands/shared/serveTargetResolver.d.ts.map +1 -1
- package/build/commands/shared/serveTargetResolver.js +42 -3
- package/build/commands/shared/serveTargetResolver.js.map +1 -1
- package/build/config/configLoader.d.ts +0 -1
- package/build/config/configLoader.d.ts.map +1 -1
- package/build/config/configLoader.js +12 -7
- package/build/config/configLoader.js.map +1 -1
- package/build/config/envProcessor.d.ts +3 -8
- package/build/config/envProcessor.d.ts.map +1 -1
- package/build/config/envProcessor.js +17 -34
- package/build/config/envProcessor.js.map +1 -1
- package/build/config/mcpConfigMerge.d.ts.map +1 -1
- package/build/config/mcpConfigMerge.js +15 -8
- package/build/config/mcpConfigMerge.js.map +1 -1
- 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/asyncLoadingOrchestrator.d.ts +2 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.js +3 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -1
- package/build/core/capabilities/capabilityCatalog.d.ts +88 -0
- package/build/core/capabilities/capabilityCatalog.d.ts.map +1 -0
- package/build/core/capabilities/capabilityCatalog.js +235 -0
- package/build/core/capabilities/capabilityCatalog.js.map +1 -0
- package/build/core/capabilities/capabilityNotificationFacts.d.ts +9 -0
- package/build/core/capabilities/capabilityNotificationFacts.d.ts.map +1 -0
- package/build/core/capabilities/capabilityNotificationFacts.js +11 -0
- package/build/core/capabilities/capabilityNotificationFacts.js.map +1 -0
- package/build/core/capabilities/metaToolProvider.d.ts +2 -0
- package/build/core/capabilities/metaToolProvider.d.ts.map +1 -1
- package/build/core/capabilities/metaToolProvider.js +37 -77
- package/build/core/capabilities/metaToolProvider.js.map +1 -1
- package/build/core/capabilities/toolRegistry.d.ts +2 -1
- package/build/core/capabilities/toolRegistry.d.ts.map +1 -1
- package/build/core/capabilities/toolRegistry.js +2 -0
- package/build/core/capabilities/toolRegistry.js.map +1 -1
- package/build/core/configChangeHandler.d.ts.map +1 -1
- package/build/core/configChangeHandler.js +33 -16
- package/build/core/configChangeHandler.js.map +1 -1
- package/build/core/filtering/filterSelection.d.ts +72 -0
- package/build/core/filtering/filterSelection.d.ts.map +1 -0
- package/build/core/filtering/filterSelection.js +262 -0
- package/build/core/filtering/filterSelection.js.map +1 -0
- package/build/core/instructions/instructionsDistribution.d.ts +52 -0
- package/build/core/instructions/instructionsDistribution.d.ts.map +1 -0
- package/build/core/instructions/instructionsDistribution.js +124 -0
- package/build/core/instructions/instructionsDistribution.js.map +1 -0
- package/build/core/protocol/notificationHandlers.js +2 -2
- package/build/core/protocol/notificationHandlers.js.map +1 -1
- package/build/core/protocol/promptRequestHandlers.d.ts +4 -0
- package/build/core/protocol/promptRequestHandlers.d.ts.map +1 -0
- package/build/core/protocol/promptRequestHandlers.js +64 -0
- package/build/core/protocol/promptRequestHandlers.js.map +1 -0
- package/build/core/protocol/requestHandlerUtils.d.ts +8 -0
- package/build/core/protocol/requestHandlerUtils.d.ts.map +1 -0
- package/build/core/protocol/requestHandlerUtils.js +48 -0
- package/build/core/protocol/requestHandlerUtils.js.map +1 -0
- package/build/core/protocol/requestHandlers.d.ts +2 -0
- package/build/core/protocol/requestHandlers.d.ts.map +1 -1
- package/build/core/protocol/requestHandlers.js +7 -391
- package/build/core/protocol/requestHandlers.js.map +1 -1
- package/build/core/protocol/resourceRequestHandlers.d.ts +3 -0
- package/build/core/protocol/resourceRequestHandlers.d.ts.map +1 -0
- package/build/core/protocol/resourceRequestHandlers.js +76 -0
- package/build/core/protocol/resourceRequestHandlers.js.map +1 -0
- package/build/core/protocol/toolRequestHandlers.d.ts +4 -0
- package/build/core/protocol/toolRequestHandlers.d.ts.map +1 -0
- package/build/core/protocol/toolRequestHandlers.js +132 -0
- package/build/core/protocol/toolRequestHandlers.js.map +1 -0
- package/build/core/server/adapters/TemplateServerAdapter.d.ts +0 -5
- package/build/core/server/adapters/TemplateServerAdapter.d.ts.map +1 -1
- package/build/core/server/adapters/TemplateServerAdapter.js +7 -30
- package/build/core/server/adapters/TemplateServerAdapter.js.map +1 -1
- package/build/core/server/clientInstanceFactory.d.ts +13 -0
- package/build/core/server/clientInstanceFactory.d.ts.map +1 -0
- package/build/core/server/clientInstanceFactory.js +32 -0
- package/build/core/server/clientInstanceFactory.js.map +1 -0
- package/build/core/server/clientInstancePool.d.ts +8 -49
- package/build/core/server/clientInstancePool.d.ts.map +1 -1
- package/build/core/server/clientInstancePool.js +61 -72
- package/build/core/server/clientInstancePool.js.map +1 -1
- package/build/core/server/clientInstancePoolTypes.d.ts +52 -0
- package/build/core/server/clientInstancePoolTypes.d.ts.map +1 -0
- package/build/core/server/clientInstancePoolTypes.js +10 -0
- package/build/core/server/clientInstancePoolTypes.js.map +1 -0
- package/build/core/server/connectionResolver.d.ts.map +1 -1
- package/build/core/server/connectionResolver.js +34 -31
- package/build/core/server/connectionResolver.js.map +1 -1
- package/build/core/server/requestContextPreparation.d.ts +38 -0
- package/build/core/server/requestContextPreparation.d.ts.map +1 -0
- package/build/core/server/requestContextPreparation.js +49 -0
- package/build/core/server/requestContextPreparation.js.map +1 -0
- package/build/core/server/serverManager.js +1 -1
- package/build/core/server/serverManager.js.map +1 -1
- package/build/core/server/templateIdentity.d.ts +44 -0
- package/build/core/server/templateIdentity.d.ts.map +1 -0
- package/build/core/server/templateIdentity.js +95 -0
- package/build/core/server/templateIdentity.js.map +1 -0
- package/build/core/server/templateServerCleanup.d.ts +23 -0
- package/build/core/server/templateServerCleanup.d.ts.map +1 -0
- package/build/core/server/templateServerCleanup.js +155 -0
- package/build/core/server/templateServerCleanup.js.map +1 -0
- package/build/core/server/templateServerManager.d.ts +12 -3
- package/build/core/server/templateServerManager.d.ts.map +1 -1
- package/build/core/server/templateServerManager.js +82 -127
- package/build/core/server/templateServerManager.js.map +1 -1
- package/build/core/tools/internal/adapters/installation/types.d.ts +16 -11
- package/build/core/tools/internal/adapters/installation/types.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/installationAdapter.d.ts +3 -13
- package/build/core/tools/internal/adapters/installationAdapter.d.ts.map +1 -1
- package/build/core/tools/internal/adapters/installationAdapter.js +85 -69
- package/build/core/tools/internal/adapters/installationAdapter.js.map +1 -1
- package/build/core/tools/internal/installationHandlers.d.ts.map +1 -1
- package/build/core/tools/internal/installationHandlers.js +10 -4
- package/build/core/tools/internal/installationHandlers.js.map +1 -1
- package/build/core/tools/internal/integration.domainMocks.testSetup.d.ts +2 -0
- package/build/core/tools/internal/integration.domainMocks.testSetup.d.ts.map +1 -0
- package/build/core/tools/internal/integration.domainMocks.testSetup.js +66 -0
- package/build/core/tools/internal/integration.domainMocks.testSetup.js.map +1 -0
- package/build/core/tools/internal/integration.testSetup.d.ts +2 -0
- package/build/core/tools/internal/integration.testSetup.d.ts.map +1 -0
- package/build/core/tools/internal/integration.testSetup.js +469 -0
- package/build/core/tools/internal/integration.testSetup.js.map +1 -0
- package/build/core/tools/internal/schemas/index.d.ts +6 -0
- package/build/core/tools/internal/schemas/index.d.ts.map +1 -1
- package/build/core/tools/internal/schemas/installation.d.ts +6 -0
- package/build/core/tools/internal/schemas/installation.d.ts.map +1 -1
- package/build/core/tools/internal/schemas/installation.js +13 -1
- package/build/core/tools/internal/schemas/installation.js.map +1 -1
- package/build/domains/config-change/backupRetention.d.ts +14 -0
- package/build/domains/config-change/backupRetention.d.ts.map +1 -0
- package/build/domains/config-change/backupRetention.js +36 -0
- package/build/domains/config-change/backupRetention.js.map +1 -0
- package/build/domains/config-change/configChange.d.ts +4 -0
- package/build/domains/config-change/configChange.d.ts.map +1 -0
- package/build/domains/config-change/configChange.js +346 -0
- package/build/domains/config-change/configChange.js.map +1 -0
- package/build/domains/config-change/configLock.d.ts +6 -0
- package/build/domains/config-change/configLock.d.ts.map +1 -0
- package/build/domains/config-change/configLock.js +62 -0
- package/build/domains/config-change/configLock.js.map +1 -0
- package/build/domains/config-change/types.d.ts +64 -0
- package/build/domains/config-change/types.d.ts.map +1 -0
- package/build/domains/config-change/types.js +2 -0
- package/build/domains/config-change/types.js.map +1 -0
- package/build/domains/installation/index.d.ts +4 -3
- package/build/domains/installation/index.d.ts.map +1 -1
- package/build/domains/installation/index.js +5 -3
- package/build/domains/installation/index.js.map +1 -1
- package/build/domains/installation/serverInstallationSourceResolution.d.ts +6 -0
- package/build/domains/installation/serverInstallationSourceResolution.d.ts.map +1 -0
- package/build/domains/installation/serverInstallationSourceResolution.js +210 -0
- package/build/domains/installation/serverInstallationSourceResolution.js.map +1 -0
- package/build/domains/installation/serverInstallationTypes.d.ts +105 -0
- package/build/domains/installation/serverInstallationTypes.d.ts.map +1 -0
- package/build/domains/installation/serverInstallationTypes.js +2 -0
- package/build/domains/installation/serverInstallationTypes.js.map +1 -0
- package/build/domains/installation/serverInstallationWorkflow.d.ts +4 -0
- package/build/domains/installation/serverInstallationWorkflow.d.ts.map +1 -0
- package/build/domains/installation/serverInstallationWorkflow.js +148 -0
- package/build/domains/installation/serverInstallationWorkflow.js.map +1 -0
- package/build/domains/preset/manager/presetManager.d.ts +0 -4
- package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
- package/build/domains/preset/manager/presetManager.js +19 -153
- package/build/domains/preset/manager/presetManager.js.map +1 -1
- package/build/domains/preset/manager/presetManagerCleanup.d.ts +15 -0
- package/build/domains/preset/manager/presetManagerCleanup.d.ts.map +1 -0
- package/build/domains/preset/manager/presetManagerCleanup.js +34 -0
- package/build/domains/preset/manager/presetManagerCleanup.js.map +1 -0
- package/build/domains/preset/manager/presetStorage.d.ts +4 -0
- package/build/domains/preset/manager/presetStorage.d.ts.map +1 -0
- package/build/domains/preset/manager/presetStorage.js +27 -0
- package/build/domains/preset/manager/presetStorage.js.map +1 -0
- package/build/domains/preset/manager/presetTesting.d.ts +8 -0
- package/build/domains/preset/manager/presetTesting.d.ts.map +1 -0
- package/build/domains/preset/manager/presetTesting.js +38 -0
- package/build/domains/preset/manager/presetTesting.js.map +1 -0
- package/build/domains/preset/manager/presetValidation.d.ts +3 -0
- package/build/domains/preset/manager/presetValidation.d.ts.map +1 -0
- package/build/domains/preset/manager/presetValidation.js +41 -0
- package/build/domains/preset/manager/presetValidation.js.map +1 -0
- package/build/domains/registry/cacheManager.d.ts.map +1 -1
- package/build/domains/registry/cacheManager.js +1 -0
- package/build/domains/registry/cacheManager.js.map +1 -1
- package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -1
- package/build/domains/registry/mcpRegistryClient.js +2 -1
- package/build/domains/registry/mcpRegistryClient.js.map +1 -1
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +3 -0
- package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -1
- package/build/transport/http/middlewares/scopeAuthMiddleware.js +18 -28
- package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -1
- package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -1
- package/build/transport/http/middlewares/tagsExtractor.js +46 -255
- package/build/transport/http/middlewares/tagsExtractor.js.map +1 -1
- package/build/transport/http/routes/cliTokenRoute.d.ts.map +1 -1
- package/build/transport/http/routes/cliTokenRoute.js +20 -14
- package/build/transport/http/routes/cliTokenRoute.js.map +1 -1
- package/build/transport/http/routes/inspectRequestContext.d.ts +5 -0
- package/build/transport/http/routes/inspectRequestContext.d.ts.map +1 -0
- package/build/transport/http/routes/inspectRequestContext.js +59 -0
- package/build/transport/http/routes/inspectRequestContext.js.map +1 -0
- package/build/transport/http/routes/inspectRoutes.d.ts +3 -3
- package/build/transport/http/routes/inspectRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/inspectRoutes.js +60 -83
- package/build/transport/http/routes/inspectRoutes.js.map +1 -1
- package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/oauthRoutes.js +99 -223
- package/build/transport/http/routes/oauthRoutes.js.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -2
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +39 -84
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/routes/toolRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/toolRoutes.js +138 -39
- package/build/transport/http/routes/toolRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +93 -0
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/http/streamableSessionLifecycle.d.ts +90 -0
- package/build/transport/http/streamableSessionLifecycle.d.ts.map +1 -0
- package/build/transport/http/streamableSessionLifecycle.js +348 -0
- package/build/transport/http/streamableSessionLifecycle.js.map +1 -0
- package/build/transport/http/utils/contextExtractor.d.ts +1 -1
- package/build/transport/http/utils/contextExtractor.d.ts.map +1 -1
- package/build/transport/http/utils/contextExtractor.js +1 -33
- package/build/transport/http/utils/contextExtractor.js.map +1 -1
- package/build/transport/stdioProxyTransport.d.ts +1 -0
- package/build/transport/stdioProxyTransport.d.ts.map +1 -1
- package/build/transport/stdioProxyTransport.js +3 -0
- package/build/transport/stdioProxyTransport.js.map +1 -1
- package/build/transport/transportFactory.d.ts +1 -2
- package/build/transport/transportFactory.d.ts.map +1 -1
- package/build/transport/transportFactory.js +54 -4
- package/build/transport/transportFactory.js.map +1 -1
- package/build/transport/transportFactory.testSetup.d.ts +2 -0
- package/build/transport/transportFactory.testSetup.d.ts.map +1 -0
- package/build/transport/transportFactory.testSetup.js +83 -0
- package/build/transport/transportFactory.testSetup.js.map +1 -0
- package/build/utils/context/sessionIdentity.d.ts +9 -0
- package/build/utils/context/sessionIdentity.d.ts.map +1 -0
- package/build/utils/context/sessionIdentity.js +39 -0
- package/build/utils/context/sessionIdentity.js.map +1 -0
- package/build/utils/ui/interactiveSelector.d.ts +0 -25
- package/build/utils/ui/interactiveSelector.d.ts.map +1 -1
- package/build/utils/ui/interactiveSelector.js +12 -329
- package/build/utils/ui/interactiveSelector.js.map +1 -1
- package/build/utils/ui/interactiveSelectorPrompts.d.ts +7 -0
- package/build/utils/ui/interactiveSelectorPrompts.d.ts.map +1 -0
- package/build/utils/ui/interactiveSelectorPrompts.js +60 -0
- package/build/utils/ui/interactiveSelectorPrompts.js.map +1 -0
- package/build/utils/ui/interactiveSelectorQuery.d.ts +5 -0
- package/build/utils/ui/interactiveSelectorQuery.d.ts.map +1 -0
- package/build/utils/ui/interactiveSelectorQuery.js +67 -0
- package/build/utils/ui/interactiveSelectorQuery.js.map +1 -0
- package/build/utils/ui/interactiveSelectorTagUi.d.ts +7 -0
- package/build/utils/ui/interactiveSelectorTagUi.d.ts.map +1 -0
- package/build/utils/ui/interactiveSelectorTagUi.js +129 -0
- package/build/utils/ui/interactiveSelectorTagUi.js.map +1 -0
- package/package.json +2 -2
- package/build/transport/http/utils/sessionService.d.ts +0 -106
- package/build/transport/http/utils/sessionService.d.ts.map +0 -1
- package/build/transport/http/utils/sessionService.js +0 -342
- package/build/transport/http/utils/sessionService.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MCPServerParams } from '../../core/types/transport.js';
|
|
2
|
+
import { TagSelection, TagState } from '../../domains/preset/parsers/tagQueryEvaluator.js';
|
|
3
|
+
import { PresetStrategy } from '../../domains/preset/types/presetTypes.js';
|
|
4
|
+
export declare function showTagSelection(tagSelections: TagSelection[], currentIndex: number, servers: Record<string, MCPServerParams>, strategy: PresetStrategy): void;
|
|
5
|
+
export declare function getTagStateColor(state: TagState): (text: string) => string;
|
|
6
|
+
export declare function showTagServerDetails(tagSelection: TagSelection, servers: Record<string, MCPServerParams>): void;
|
|
7
|
+
//# sourceMappingURL=interactiveSelectorTagUi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactiveSelectorTagUi.d.ts","sourceRoot":"","sources":["../../../src/utils/ui/interactiveSelectorTagUi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAqB,YAAY,EAAE,QAAQ,EAAE,MAAM,kDAAkD,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAK1E,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,YAAY,EAAE,EAC7B,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EACxC,QAAQ,EAAE,cAAc,GACvB,IAAI,CAKN;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAW1E;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,IAAI,CAqC/G"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { TagQueryEvaluator } from '../../domains/preset/parsers/tagQueryEvaluator.js';
|
|
2
|
+
import boxen from 'boxen';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
export function showTagSelection(tagSelections, currentIndex, servers, strategy) {
|
|
5
|
+
console.log(createTagSelectionHeader(strategy));
|
|
6
|
+
console.log(createTagList(tagSelections, currentIndex, servers));
|
|
7
|
+
console.log(createLivePreview(tagSelections, servers, strategy));
|
|
8
|
+
console.log(createStateLegend());
|
|
9
|
+
}
|
|
10
|
+
export function getTagStateColor(state) {
|
|
11
|
+
switch (state) {
|
|
12
|
+
case 'empty':
|
|
13
|
+
return chalk.gray;
|
|
14
|
+
case 'selected':
|
|
15
|
+
return chalk.green;
|
|
16
|
+
case 'not-selected':
|
|
17
|
+
return chalk.red;
|
|
18
|
+
default:
|
|
19
|
+
return chalk.reset;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export function showTagServerDetails(tagSelection, servers) {
|
|
23
|
+
const enabledServers = tagSelection.servers.filter((serverName) => servers[serverName]?.disabled !== true);
|
|
24
|
+
const disabledServers = tagSelection.servers.filter((serverName) => servers[serverName]?.disabled === true);
|
|
25
|
+
let content = chalk.blue.bold(`📋 Tag: ${tagSelection.tag}\n\n`);
|
|
26
|
+
if (enabledServers.length > 0) {
|
|
27
|
+
content += chalk.green.bold(`✅ Enabled Servers (${enabledServers.length}):\n`);
|
|
28
|
+
for (const serverName of enabledServers) {
|
|
29
|
+
content += formatServerDetailsLine(serverName, servers, chalk.green);
|
|
30
|
+
}
|
|
31
|
+
content += '\n';
|
|
32
|
+
}
|
|
33
|
+
if (disabledServers.length > 0) {
|
|
34
|
+
content += chalk.red.bold(`❌ Disabled Servers (${disabledServers.length}):\n`);
|
|
35
|
+
for (const serverName of disabledServers) {
|
|
36
|
+
content += formatServerDetailsLine(serverName, servers, chalk.red);
|
|
37
|
+
}
|
|
38
|
+
content += '\n';
|
|
39
|
+
}
|
|
40
|
+
if (tagSelection.servers.length === 0) {
|
|
41
|
+
content += chalk.yellow('No servers have this tag.\n\n');
|
|
42
|
+
}
|
|
43
|
+
content += chalk.gray('Press any key to return to tag selection...');
|
|
44
|
+
console.log(boxen(content, {
|
|
45
|
+
padding: 1,
|
|
46
|
+
borderStyle: 'round',
|
|
47
|
+
borderColor: 'blue',
|
|
48
|
+
title: `🔍 Server Details`,
|
|
49
|
+
titleAlignment: 'center',
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
function createTagSelectionHeader(strategy) {
|
|
53
|
+
return boxen(chalk.cyan.bold('🎯 Three-State Tag Selection\n\n') +
|
|
54
|
+
chalk.yellow(`Strategy: ${strategy === 'and' ? 'ALL' : 'ANY'} selected tags must match\n`) +
|
|
55
|
+
chalk.gray('Controls: ↑↓ Navigate Space Cycle states → Server details Enter Confirm ← Back Esc Cancel'), {
|
|
56
|
+
padding: 1,
|
|
57
|
+
borderStyle: 'double',
|
|
58
|
+
borderColor: 'cyan',
|
|
59
|
+
title: 'Tag Selection',
|
|
60
|
+
titleAlignment: 'center',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
function createTagList(tagSelections, currentIndex, servers) {
|
|
64
|
+
const tagListContent = tagSelections
|
|
65
|
+
.map((selection, index) => {
|
|
66
|
+
const symbol = TagQueryEvaluator.getTagStateSymbol(selection.state);
|
|
67
|
+
const stateColor = getTagStateColor(selection.state);
|
|
68
|
+
const isCurrentIndex = index === currentIndex;
|
|
69
|
+
const cursor = isCurrentIndex ? chalk.yellow.bold('►') : ' ';
|
|
70
|
+
const tagHighlight = isCurrentIndex ? chalk.bgGray.white.bold : chalk.white;
|
|
71
|
+
const enabledServers = selection.servers.filter((serverName) => servers[serverName]?.disabled !== true);
|
|
72
|
+
const disabledServers = selection.servers.filter((serverName) => servers[serverName]?.disabled === true);
|
|
73
|
+
const disabledText = disabledServers.length > 0 ? chalk.gray(`, ${chalk.red(disabledServers.length)} disabled`) : '';
|
|
74
|
+
const serverInfo = chalk.gray(`(${chalk.blue(enabledServers.length)} enabled`) + disabledText + chalk.gray(')');
|
|
75
|
+
return `${cursor} ${stateColor(symbol)} ${tagHighlight(selection.tag)} ${serverInfo}`;
|
|
76
|
+
})
|
|
77
|
+
.join('\n');
|
|
78
|
+
return boxen(tagListContent, {
|
|
79
|
+
padding: 1,
|
|
80
|
+
borderStyle: 'round',
|
|
81
|
+
borderColor: 'blue',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function createLivePreview(tagSelections, servers, strategy) {
|
|
85
|
+
const matchingServers = TagQueryEvaluator.getMatchingServers(tagSelections, servers, strategy);
|
|
86
|
+
const disabledServers = matchingServers.filter((serverName) => servers[serverName]?.disabled === true);
|
|
87
|
+
const enabledServers = matchingServers.filter((serverName) => servers[serverName]?.disabled !== true);
|
|
88
|
+
const matchColor = enabledServers.length === 0 ? chalk.red : enabledServers.length < 3 ? chalk.yellow : chalk.green;
|
|
89
|
+
const matchIcon = enabledServers.length === 0 ? '❌' : enabledServers.length < 3 ? '⚠️' : '✅';
|
|
90
|
+
let previewContent = chalk.blue.bold('Live Preview:\n') +
|
|
91
|
+
`${matchIcon} ${matchColor.bold(`${enabledServers.length} enabled servers`)} match your selection\n` +
|
|
92
|
+
(enabledServers.length > 0
|
|
93
|
+
? chalk.green(`Servers: ${TagQueryEvaluator.formatServerList(enabledServers, 3)}`)
|
|
94
|
+
: chalk.gray('No enabled servers match'));
|
|
95
|
+
if (disabledServers.length > 0) {
|
|
96
|
+
previewContent +=
|
|
97
|
+
'\n' +
|
|
98
|
+
chalk.red.bold(`⚠️ ${disabledServers.length} disabled servers also match: `) +
|
|
99
|
+
chalk.red(TagQueryEvaluator.formatServerList(disabledServers, 3));
|
|
100
|
+
}
|
|
101
|
+
return boxen(previewContent, {
|
|
102
|
+
padding: 1,
|
|
103
|
+
borderStyle: 'round',
|
|
104
|
+
borderColor: disabledServers.length > 0 ? 'yellow' : 'green',
|
|
105
|
+
title: '⚡ Live Preview',
|
|
106
|
+
titleAlignment: 'center',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function createStateLegend() {
|
|
110
|
+
const legend = chalk.gray('○ ') +
|
|
111
|
+
chalk.dim('Empty (ignored)') +
|
|
112
|
+
' ' +
|
|
113
|
+
chalk.green('✓ ') +
|
|
114
|
+
chalk.green('Selected (include)') +
|
|
115
|
+
' ' +
|
|
116
|
+
chalk.red('✗ ') +
|
|
117
|
+
chalk.red('Not selected (exclude)');
|
|
118
|
+
return boxen(legend, {
|
|
119
|
+
padding: 1,
|
|
120
|
+
borderStyle: 'single',
|
|
121
|
+
borderColor: 'gray',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
function formatServerDetailsLine(serverName, servers, color) {
|
|
125
|
+
const serverConfig = servers[serverName];
|
|
126
|
+
const allTags = (serverConfig.tags || []).join(', ');
|
|
127
|
+
return color(` • ${serverName}`) + chalk.gray(` - tags: ${allTags || 'none'}\n`);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=interactiveSelectorTagUi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactiveSelectorTagUi.js","sourceRoot":"","sources":["../../../src/utils/ui/interactiveSelectorTagUi.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@1mcp/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0-beta1",
|
|
4
4
|
"description": "One MCP server to aggregate them all - A unified Model Context Protocol server implementation",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
"@typescript-eslint/parser": "^8.27.0",
|
|
100
100
|
"@vitest/coverage-v8": "^4.1.8",
|
|
101
101
|
"archiver": "^7.0.1",
|
|
102
|
-
"concurrently": "^
|
|
102
|
+
"concurrently": "^10.0.3",
|
|
103
103
|
"cytoscape": "^3.32.1",
|
|
104
104
|
"cytoscape-cose-bilkent": "^4.1.0",
|
|
105
105
|
"dayjs": "^1.11.13",
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
2
|
-
import { InitializeResponseData } from '../../../auth/sessionTypes.js';
|
|
3
|
-
import { AsyncLoadingOrchestrator } from '../../../core/capabilities/asyncLoadingOrchestrator.js';
|
|
4
|
-
import { ServerManager } from '../../../core/server/serverManager.js';
|
|
5
|
-
import { InboundConnectionConfig } from '../../../core/types/index.js';
|
|
6
|
-
import { RestorableStreamableHTTPServerTransport } from '../../../transport/http/restorableStreamableTransport.js';
|
|
7
|
-
import { StreamableSessionRepository } from '../../../transport/http/storage/streamableSessionRepository.js';
|
|
8
|
-
import type { ContextData } from '../../../types/context.js';
|
|
9
|
-
/**
|
|
10
|
-
* Result type for session restoration operations.
|
|
11
|
-
*/
|
|
12
|
-
export interface SessionRestoreResult {
|
|
13
|
-
transport: RestorableStreamableHTTPServerTransport | null;
|
|
14
|
-
error?: string;
|
|
15
|
-
errorType?: 'not_found' | 'transport_failed' | 'connection_failed' | 'context_invalid';
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Result type for session creation operations.
|
|
19
|
-
* Indicates whether the session was successfully persisted to storage.
|
|
20
|
-
*/
|
|
21
|
-
export interface SessionCreateResult {
|
|
22
|
-
transport: StreamableHTTPServerTransport | RestorableStreamableHTTPServerTransport;
|
|
23
|
-
persisted: boolean;
|
|
24
|
-
persistenceError?: string;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Service to handle session management logic for Streamable HTTP transport.
|
|
28
|
-
* Encapsulates creation, restoration, and cleanup of sessions.
|
|
29
|
-
*/
|
|
30
|
-
export declare class SessionService {
|
|
31
|
-
private serverManager;
|
|
32
|
-
private sessionRepository;
|
|
33
|
-
private asyncOrchestrator?;
|
|
34
|
-
constructor(serverManager: ServerManager, sessionRepository: StreamableSessionRepository, asyncOrchestrator?: AsyncLoadingOrchestrator | undefined);
|
|
35
|
-
/**
|
|
36
|
-
* Retrieves an existing session transport or tries to restore it.
|
|
37
|
-
*
|
|
38
|
-
* @param sessionId - The session ID to retrieve
|
|
39
|
-
* @returns The transport if found or restored successfully, null otherwise
|
|
40
|
-
*/
|
|
41
|
-
getSession(sessionId: string): Promise<StreamableHTTPServerTransport | RestorableStreamableHTTPServerTransport | null>;
|
|
42
|
-
/**
|
|
43
|
-
* Stores initialize response data for a session to enable proper restoration.
|
|
44
|
-
*
|
|
45
|
-
* This data is used to replay the initialize handshake through the SDK's
|
|
46
|
-
* public API during session restoration, avoiding fragile private property access.
|
|
47
|
-
*
|
|
48
|
-
* @param sessionId - The session ID to update
|
|
49
|
-
* @param initializeResponse - The initialize response data to store
|
|
50
|
-
*/
|
|
51
|
-
storeInitializeResponse(sessionId: string, initializeResponse: InitializeResponseData): void;
|
|
52
|
-
/**
|
|
53
|
-
* Sets the SDK's internal initialized state directly.
|
|
54
|
-
*
|
|
55
|
-
* This is a simple approach that accesses SDK internals. If the SDK structure
|
|
56
|
-
* changes, this will fail gracefully and the session won't be marked as restored,
|
|
57
|
-
* allowing the client to re-initialize.
|
|
58
|
-
*
|
|
59
|
-
* @param transport - The transport to mark as initialized
|
|
60
|
-
* @param sessionId - The session ID to set
|
|
61
|
-
* @returns true if successful, false if SDK internals are inaccessible
|
|
62
|
-
*/
|
|
63
|
-
private setInitializedState;
|
|
64
|
-
/**
|
|
65
|
-
* Restores a session from persistent storage.
|
|
66
|
-
*
|
|
67
|
-
* The client won't send initialize again when reconnecting - they think the session
|
|
68
|
-
* is already initialized. We need to restore the SDK's initialized state internally
|
|
69
|
-
* using the stored initialize response data.
|
|
70
|
-
*
|
|
71
|
-
* @param sessionId - The session ID to restore
|
|
72
|
-
* @returns SessionRestoreResult with transport or error details
|
|
73
|
-
*/
|
|
74
|
-
restoreSession(sessionId: string): Promise<SessionRestoreResult>;
|
|
75
|
-
/**
|
|
76
|
-
* Creates a new session with the given configuration.
|
|
77
|
-
*
|
|
78
|
-
* @param config - The inbound connection configuration
|
|
79
|
-
* @param context - Optional context data for the session
|
|
80
|
-
* @param providedSessionId - Optional session ID to use instead of generating one
|
|
81
|
-
* @returns SessionCreateResult with transport and persistence status
|
|
82
|
-
* @throws Error if session creation fails (but not if persistence fails)
|
|
83
|
-
*/
|
|
84
|
-
createSession(config: InboundConnectionConfig, context?: Partial<ContextData>, providedSessionId?: string): Promise<SessionCreateResult>;
|
|
85
|
-
/**
|
|
86
|
-
* Deletes a session and cleans up resources.
|
|
87
|
-
*
|
|
88
|
-
* Best-effort deletion: client is disconnecting anyway, so we log but don't throw.
|
|
89
|
-
* The session will expire naturally via TTL if repository deletion fails.
|
|
90
|
-
*
|
|
91
|
-
* @param sessionId - The session ID to delete
|
|
92
|
-
*/
|
|
93
|
-
deleteSession(sessionId: string): Promise<void>;
|
|
94
|
-
/**
|
|
95
|
-
* Initializes async loading notifications for a session.
|
|
96
|
-
*
|
|
97
|
-
* This method should be called after connecting a transport to enable
|
|
98
|
-
* the async orchestrator to send capability updates to the client.
|
|
99
|
-
* Only applicable when async loading is enabled.
|
|
100
|
-
*
|
|
101
|
-
* @param sessionId - The session ID to initialize notifications for
|
|
102
|
-
*/
|
|
103
|
-
private initializeNotifications;
|
|
104
|
-
private setupTransportHandlers;
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=sessionService.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionService.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/utils/sessionService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAgB,MAAM,0BAA0B,CAAC;AAEjF,OAAO,EAAE,uCAAuC,EAAE,MAAM,sDAAsD,CAAC;AAC/G,OAAO,EAAE,2BAA2B,EAAE,MAAM,4DAA4D,CAAC;AAEzG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAazD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,uCAAuC,GAAG,IAAI,CAAC;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,WAAW,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC;CACxF;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,6BAA6B,GAAG,uCAAuC,CAAC;IACnF,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAYD;;;GAGG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,iBAAiB,CAAC;gBAFlB,aAAa,EAAE,aAAa,EAC5B,iBAAiB,EAAE,2BAA2B,EAC9C,iBAAiB,CAAC,EAAE,wBAAwB,YAAA;IAGtD;;;;;OAKG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,6BAA6B,GAAG,uCAAuC,GAAG,IAAI,CAAC;IA4B1F;;;;;;;;OAQG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,sBAAsB,GAAG,IAAI;IAI5F;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;IAuD3B;;;;;;;;;OASG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA4FtE;;;;;;;;OAQG;IACG,aAAa,CACjB,MAAM,EAAE,uBAAuB,EAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,mBAAmB,CAAC;IA6D/B;;;;;;;OAOG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrD;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,sBAAsB;CAmB/B"}
|
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
-
import { AUTH_CONFIG } from '../../../constants.js';
|
|
4
|
-
import { ServerStatus } from '../../../core/types/index.js';
|
|
5
|
-
import logger from '../../../logger/logger.js';
|
|
6
|
-
import { RestorableStreamableHTTPServerTransport } from '../../../transport/http/restorableStreamableTransport.js';
|
|
7
|
-
import { logError } from '../../../transport/http/utils/unifiedLogger.js';
|
|
8
|
-
/**
|
|
9
|
-
* Validates a session ID format.
|
|
10
|
-
*
|
|
11
|
-
* @param sessionId - The session ID to validate
|
|
12
|
-
* @returns true if the session ID is valid, false otherwise
|
|
13
|
-
*/
|
|
14
|
-
function isValidSessionId(sessionId) {
|
|
15
|
-
return typeof sessionId === 'string' && sessionId.trim().length > 0;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Service to handle session management logic for Streamable HTTP transport.
|
|
19
|
-
* Encapsulates creation, restoration, and cleanup of sessions.
|
|
20
|
-
*/
|
|
21
|
-
export class SessionService {
|
|
22
|
-
serverManager;
|
|
23
|
-
sessionRepository;
|
|
24
|
-
asyncOrchestrator;
|
|
25
|
-
constructor(serverManager, sessionRepository, asyncOrchestrator) {
|
|
26
|
-
this.serverManager = serverManager;
|
|
27
|
-
this.sessionRepository = sessionRepository;
|
|
28
|
-
this.asyncOrchestrator = asyncOrchestrator;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Retrieves an existing session transport or tries to restore it.
|
|
32
|
-
*
|
|
33
|
-
* @param sessionId - The session ID to retrieve
|
|
34
|
-
* @returns The transport if found or restored successfully, null otherwise
|
|
35
|
-
*/
|
|
36
|
-
async getSession(sessionId) {
|
|
37
|
-
// Validate sessionId
|
|
38
|
-
if (!isValidSessionId(sessionId)) {
|
|
39
|
-
logger.debug('Invalid sessionId provided to getSession');
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
const existingTransport = this.serverManager.getTransport(sessionId);
|
|
43
|
-
if (existingTransport) {
|
|
44
|
-
// Verify the transport is the correct type for this endpoint
|
|
45
|
-
if (existingTransport instanceof StreamableHTTPServerTransport ||
|
|
46
|
-
existingTransport instanceof RestorableStreamableHTTPServerTransport) {
|
|
47
|
-
// Update last accessed time for active sessions
|
|
48
|
-
this.sessionRepository.updateAccess(sessionId);
|
|
49
|
-
return existingTransport;
|
|
50
|
-
}
|
|
51
|
-
// Transport exists but is wrong type (e.g., STDIO), so it's not usable here
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
// Try to restore from persistent storage
|
|
55
|
-
const result = await this.restoreSession(sessionId);
|
|
56
|
-
return result.transport;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Stores initialize response data for a session to enable proper restoration.
|
|
60
|
-
*
|
|
61
|
-
* This data is used to replay the initialize handshake through the SDK's
|
|
62
|
-
* public API during session restoration, avoiding fragile private property access.
|
|
63
|
-
*
|
|
64
|
-
* @param sessionId - The session ID to update
|
|
65
|
-
* @param initializeResponse - The initialize response data to store
|
|
66
|
-
*/
|
|
67
|
-
storeInitializeResponse(sessionId, initializeResponse) {
|
|
68
|
-
this.sessionRepository.storeInitializeResponse(sessionId, initializeResponse);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Sets the SDK's internal initialized state directly.
|
|
72
|
-
*
|
|
73
|
-
* This is a simple approach that accesses SDK internals. If the SDK structure
|
|
74
|
-
* changes, this will fail gracefully and the session won't be marked as restored,
|
|
75
|
-
* allowing the client to re-initialize.
|
|
76
|
-
*
|
|
77
|
-
* @param transport - The transport to mark as initialized
|
|
78
|
-
* @param sessionId - The session ID to set
|
|
79
|
-
* @returns true if successful, false if SDK internals are inaccessible
|
|
80
|
-
*/
|
|
81
|
-
setInitializedState(transport, sessionId) {
|
|
82
|
-
try {
|
|
83
|
-
const internals = transport;
|
|
84
|
-
if (internals._webStandardTransport) {
|
|
85
|
-
// Validate that required properties exist before assignment
|
|
86
|
-
if (internals._webStandardTransport._initialized !== undefined &&
|
|
87
|
-
typeof internals._webStandardTransport._initialized !== 'boolean') {
|
|
88
|
-
logError('SDK internal property _initialized is not a boolean', {
|
|
89
|
-
method: 'setInitializedState',
|
|
90
|
-
path: 'sessionService',
|
|
91
|
-
sessionId,
|
|
92
|
-
phase: 'SDK internal validation',
|
|
93
|
-
context: { property: '_initialized', type: typeof internals._webStandardTransport._initialized },
|
|
94
|
-
});
|
|
95
|
-
return false;
|
|
96
|
-
}
|
|
97
|
-
if (internals._webStandardTransport.sessionId !== undefined &&
|
|
98
|
-
typeof internals._webStandardTransport.sessionId !== 'string') {
|
|
99
|
-
logError('SDK internal property sessionId is not a string', {
|
|
100
|
-
method: 'setInitializedState',
|
|
101
|
-
path: 'sessionService',
|
|
102
|
-
sessionId,
|
|
103
|
-
phase: 'SDK internal validation',
|
|
104
|
-
context: { property: 'sessionId', type: typeof internals._webStandardTransport.sessionId },
|
|
105
|
-
});
|
|
106
|
-
return false;
|
|
107
|
-
}
|
|
108
|
-
internals._webStandardTransport._initialized = true;
|
|
109
|
-
internals._webStandardTransport.sessionId = sessionId;
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
logError('SDK internal structure changed - _webStandardTransport not found', {
|
|
113
|
-
method: 'setInitializedState',
|
|
114
|
-
path: 'sessionService',
|
|
115
|
-
sessionId,
|
|
116
|
-
phase: 'SDK internal access',
|
|
117
|
-
context: { reason: '_webStandardTransport property missing' },
|
|
118
|
-
});
|
|
119
|
-
return false;
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
logError('Failed to set initialized state', {
|
|
123
|
-
method: 'setInitializedState',
|
|
124
|
-
path: 'sessionService',
|
|
125
|
-
sessionId,
|
|
126
|
-
phase: 'SDK internal mutation',
|
|
127
|
-
error,
|
|
128
|
-
});
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Restores a session from persistent storage.
|
|
134
|
-
*
|
|
135
|
-
* The client won't send initialize again when reconnecting - they think the session
|
|
136
|
-
* is already initialized. We need to restore the SDK's initialized state internally
|
|
137
|
-
* using the stored initialize response data.
|
|
138
|
-
*
|
|
139
|
-
* @param sessionId - The session ID to restore
|
|
140
|
-
* @returns SessionRestoreResult with transport or error details
|
|
141
|
-
*/
|
|
142
|
-
async restoreSession(sessionId) {
|
|
143
|
-
try {
|
|
144
|
-
// Get full session data including initializeResponse
|
|
145
|
-
const sessionData = this.sessionRepository.getSessionData(sessionId);
|
|
146
|
-
if (!sessionData) {
|
|
147
|
-
logger.debug(`No persisted session found for: ${sessionId}`);
|
|
148
|
-
return { transport: null, errorType: 'not_found' };
|
|
149
|
-
}
|
|
150
|
-
// Check if session has initialize response data
|
|
151
|
-
if (!sessionData.initializeResponse) {
|
|
152
|
-
logger.warn(`Session ${sessionId} exists but lacks initialize response data, cannot restore`);
|
|
153
|
-
return {
|
|
154
|
-
transport: null,
|
|
155
|
-
errorType: 'transport_failed',
|
|
156
|
-
error: 'Session data incompatible with current version. Please create a new session.',
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
// Parse session data to config
|
|
160
|
-
const config = this.sessionRepository.get(sessionId);
|
|
161
|
-
if (!config) {
|
|
162
|
-
logger.error(`Failed to parse session config for ${sessionId}`);
|
|
163
|
-
return { transport: null, errorType: 'transport_failed', error: 'Failed to parse session config' };
|
|
164
|
-
}
|
|
165
|
-
logger.info(`Restoring streamable session: ${sessionId}`);
|
|
166
|
-
// Create new transport with the original session ID
|
|
167
|
-
// The sessionIdGenerator callback is the SDK's public API for controlling session IDs
|
|
168
|
-
const transport = new RestorableStreamableHTTPServerTransport({
|
|
169
|
-
sessionIdGenerator: () => sessionId,
|
|
170
|
-
});
|
|
171
|
-
// Convert config context to ContextData format if available
|
|
172
|
-
const context = config.context;
|
|
173
|
-
const contextData = context
|
|
174
|
-
? {
|
|
175
|
-
project: context.project || { name: 'unknown' },
|
|
176
|
-
user: context.user || {},
|
|
177
|
-
environment: context.environment || {},
|
|
178
|
-
timestamp: context.timestamp || new Date().toISOString(),
|
|
179
|
-
sessionId: context.sessionId || sessionId,
|
|
180
|
-
version: context.version || 'unknown',
|
|
181
|
-
transport: context.transport || { type: 'unknown' },
|
|
182
|
-
}
|
|
183
|
-
: undefined;
|
|
184
|
-
// Reconnect with the original configuration and context
|
|
185
|
-
try {
|
|
186
|
-
await this.serverManager.connectTransport(transport, sessionId, config, contextData);
|
|
187
|
-
}
|
|
188
|
-
catch (connectError) {
|
|
189
|
-
const errorMessage = connectError instanceof Error ? connectError.message : String(connectError);
|
|
190
|
-
logger.error(`Failed to connect transport ${sessionId}:`, connectError);
|
|
191
|
-
return { transport: null, error: errorMessage, errorType: 'connection_failed' };
|
|
192
|
-
}
|
|
193
|
-
// Set SDK's internal initialized state directly
|
|
194
|
-
// This is simple but fragile - if SDK changes, client can re-initialize
|
|
195
|
-
const initialized = this.setInitializedState(transport, sessionId);
|
|
196
|
-
if (!initialized) {
|
|
197
|
-
logError('Could not set initialized state during session restoration', {
|
|
198
|
-
method: 'restoreSession',
|
|
199
|
-
path: 'sessionService',
|
|
200
|
-
sessionId,
|
|
201
|
-
phase: 'SDK initialization',
|
|
202
|
-
context: { reason: 'SDK internal structure inaccessible' },
|
|
203
|
-
});
|
|
204
|
-
// Continue anyway - client can re-initialize if needed
|
|
205
|
-
}
|
|
206
|
-
// Mark as restored
|
|
207
|
-
transport.markAsRestored();
|
|
208
|
-
// Initialize notifications
|
|
209
|
-
this.initializeNotifications(sessionId);
|
|
210
|
-
// Set up handlers
|
|
211
|
-
this.setupTransportHandlers(transport, sessionId);
|
|
212
|
-
// Update last accessed time
|
|
213
|
-
this.sessionRepository.updateAccess(sessionId);
|
|
214
|
-
logger.info(`Successfully restored streamable session: ${sessionId} (restored: ${transport.isRestored()})`);
|
|
215
|
-
return { transport };
|
|
216
|
-
}
|
|
217
|
-
catch (error) {
|
|
218
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
219
|
-
logger.error(`Failed to restore streamable session ${sessionId}:`, error);
|
|
220
|
-
return { transport: null, error: errorMessage, errorType: 'transport_failed' };
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Creates a new session with the given configuration.
|
|
225
|
-
*
|
|
226
|
-
* @param config - The inbound connection configuration
|
|
227
|
-
* @param context - Optional context data for the session
|
|
228
|
-
* @param providedSessionId - Optional session ID to use instead of generating one
|
|
229
|
-
* @returns SessionCreateResult with transport and persistence status
|
|
230
|
-
* @throws Error if session creation fails (but not if persistence fails)
|
|
231
|
-
*/
|
|
232
|
-
async createSession(config, context, providedSessionId) {
|
|
233
|
-
const sessionId = providedSessionId || AUTH_CONFIG.SERVER.STREAMABLE_SESSION.ID_PREFIX + randomUUID();
|
|
234
|
-
let transport;
|
|
235
|
-
try {
|
|
236
|
-
// Always use the standard transport - no special handling for providedSessionId
|
|
237
|
-
// The client's initialize request will be processed normally through handleRequest
|
|
238
|
-
transport = new StreamableHTTPServerTransport({
|
|
239
|
-
sessionIdGenerator: () => sessionId,
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
244
|
-
logger.error(`Failed to create transport for session ${sessionId}:`, error);
|
|
245
|
-
throw new Error(`Session creation failed: transport initialization error - ${errorMessage}`);
|
|
246
|
-
}
|
|
247
|
-
if (context && context.project?.name && context.sessionId) {
|
|
248
|
-
logger.info(`New session with context: ${context.project.name} (${context.sessionId})${providedSessionId ? ` (ID: ${providedSessionId})` : ''}`);
|
|
249
|
-
}
|
|
250
|
-
// Include full context in config for session persistence
|
|
251
|
-
const configWithContext = {
|
|
252
|
-
...config,
|
|
253
|
-
context: context || undefined,
|
|
254
|
-
};
|
|
255
|
-
// Pass context to ServerManager
|
|
256
|
-
const validContext = context && context.project && context.user && context.environment ? context : undefined;
|
|
257
|
-
try {
|
|
258
|
-
await this.serverManager.connectTransport(transport, sessionId, configWithContext, validContext);
|
|
259
|
-
}
|
|
260
|
-
catch (error) {
|
|
261
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
262
|
-
logger.error(`Failed to connect transport ${sessionId}:`, error);
|
|
263
|
-
throw new Error(`Session creation failed: connection error - ${errorMessage}`);
|
|
264
|
-
}
|
|
265
|
-
// Try to persist session to storage
|
|
266
|
-
let persisted = false;
|
|
267
|
-
let persistenceError;
|
|
268
|
-
try {
|
|
269
|
-
this.sessionRepository.create(sessionId, configWithContext);
|
|
270
|
-
persisted = true;
|
|
271
|
-
}
|
|
272
|
-
catch (error) {
|
|
273
|
-
persistenceError = error instanceof Error ? error.message : String(error);
|
|
274
|
-
logger.warn(`Failed to persist session ${sessionId} to repository: ${persistenceError}`);
|
|
275
|
-
// Continue anyway - transport is connected, just not persisted
|
|
276
|
-
}
|
|
277
|
-
// Initialize notifications
|
|
278
|
-
this.initializeNotifications(sessionId);
|
|
279
|
-
// Set up handlers
|
|
280
|
-
this.setupTransportHandlers(transport, sessionId);
|
|
281
|
-
return { transport, persisted, persistenceError };
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Deletes a session and cleans up resources.
|
|
285
|
-
*
|
|
286
|
-
* Best-effort deletion: client is disconnecting anyway, so we log but don't throw.
|
|
287
|
-
* The session will expire naturally via TTL if repository deletion fails.
|
|
288
|
-
*
|
|
289
|
-
* @param sessionId - The session ID to delete
|
|
290
|
-
*/
|
|
291
|
-
async deleteSession(sessionId) {
|
|
292
|
-
try {
|
|
293
|
-
this.sessionRepository.delete(sessionId);
|
|
294
|
-
}
|
|
295
|
-
catch (error) {
|
|
296
|
-
// Best-effort deletion: client is disconnecting, so we log but don't throw
|
|
297
|
-
// The session will expire naturally via TTL
|
|
298
|
-
logError('Session deletion failed', {
|
|
299
|
-
method: 'deleteSession',
|
|
300
|
-
path: 'sessionService',
|
|
301
|
-
sessionId,
|
|
302
|
-
phase: 'session cleanup',
|
|
303
|
-
error,
|
|
304
|
-
context: { reason: 'Repository delete failed - session will expire via TTL' },
|
|
305
|
-
});
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Initializes async loading notifications for a session.
|
|
310
|
-
*
|
|
311
|
-
* This method should be called after connecting a transport to enable
|
|
312
|
-
* the async orchestrator to send capability updates to the client.
|
|
313
|
-
* Only applicable when async loading is enabled.
|
|
314
|
-
*
|
|
315
|
-
* @param sessionId - The session ID to initialize notifications for
|
|
316
|
-
*/
|
|
317
|
-
initializeNotifications(sessionId) {
|
|
318
|
-
if (this.asyncOrchestrator) {
|
|
319
|
-
const inboundConnection = this.serverManager.getServer(sessionId);
|
|
320
|
-
if (inboundConnection) {
|
|
321
|
-
this.asyncOrchestrator.initializeNotifications(inboundConnection);
|
|
322
|
-
logger.debug(`Async loading notifications initialized for Streamable HTTP session ${sessionId}`);
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
setupTransportHandlers(transport, sessionId) {
|
|
327
|
-
transport.onclose = () => {
|
|
328
|
-
// Only disconnect the transport, don't delete the session
|
|
329
|
-
// Sessions persist across server restarts and are only deleted via explicit DELETE requests
|
|
330
|
-
this.serverManager.disconnectTransport(sessionId);
|
|
331
|
-
};
|
|
332
|
-
transport.onerror = (error) => {
|
|
333
|
-
logger.error(`Streamable HTTP transport error for session ${sessionId}:`, error);
|
|
334
|
-
const server = this.serverManager.getServer(sessionId);
|
|
335
|
-
if (server) {
|
|
336
|
-
server.status = ServerStatus.Error;
|
|
337
|
-
server.lastError = error instanceof Error ? error : new Error(String(error));
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
//# sourceMappingURL=sessionService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionService.js","sourceRoot":"","sources":["../../../../src/transport/http/utils/sessionService.ts"],"names":[],"mappings":"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"}
|