@loop_ouroboros/mcp-hub-lite 1.0.2 → 1.1.1
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/CHANGELOG.md +32 -0
- package/dist/client/assets/{HomeView-7rMg9C6t.js → HomeView-BBwvy1oj.js} +1 -1
- package/dist/client/assets/ResourceDetailView-CZ2aB73w.js +1 -0
- package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
- package/dist/client/assets/ResourcesView-CN1NlhWs.js +1 -0
- package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
- package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
- package/dist/client/assets/ServerDashboard-k652Vw4Z.js +1 -0
- package/dist/client/assets/ServerDetail-BLQ-a4cO.js +2 -0
- package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
- package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
- package/dist/client/assets/ServerListView-BHrsFD5i.js +36 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHhwEuGe.js +1 -0
- package/dist/client/assets/SettingsView-CUOFNXrz.js +1 -0
- package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
- package/dist/client/assets/ToolCallDialog-BfPjLxfV.js +1 -0
- package/dist/client/assets/ToolsView-BxgXvPC3.css +1 -0
- package/dist/client/assets/ToolsView-CyuhYAE2.js +1 -0
- package/dist/client/assets/{_baseClone-5q1b0P3O.js → _baseClone-DO5qfalW.js} +1 -1
- package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
- package/dist/client/assets/el-form-item-CcGsD2K_.js +12 -0
- package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
- package/dist/client/assets/el-input-tYgeiaCT.js +1 -0
- package/dist/client/assets/{el-loading-H85n3BUC.js → el-loading-Dwl9E_Vr.js} +1 -1
- package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
- package/dist/client/assets/el-overlay-kqX_BABo.js +1 -0
- package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
- package/dist/client/assets/el-radio-group-D8aWBVOT.js +1 -0
- package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
- package/dist/client/assets/el-skeleton-item-BRwIFspE.js +1 -0
- package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
- package/dist/client/assets/el-switch-BF8c-xeU.js +1 -0
- package/dist/client/assets/el-tab-pane-C4Ep94cd.js +1 -0
- package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
- package/dist/client/assets/el-table-column-Cog6uCh-.js +1 -0
- package/dist/client/assets/index-ByNBhPAR.js +1 -0
- package/dist/client/assets/index-CTB6oe-9.js +2 -0
- package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
- package/dist/client/assets/omit-CUnDT6sS.js +1 -0
- package/dist/client/assets/{raf-DY5mgbuB.js → raf-CmzeRPMd.js} +1 -1
- package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-CbgVSHIh.js} +3 -3
- package/dist/client/index.html +3 -3
- package/dist/server/shared/models/resource.model.d.ts +2 -1
- package/dist/server/shared/models/resource.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.d.ts +362 -5
- package/dist/server/shared/models/server.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.js +220 -1
- package/dist/server/shared/models/session.model.d.ts +1 -57
- package/dist/server/shared/models/session.model.d.ts.map +1 -1
- package/dist/server/shared/models/session.model.js +1 -55
- package/dist/server/shared/models/tool.model.d.ts +4 -2
- package/dist/server/shared/models/tool.model.d.ts.map +1 -1
- package/dist/server/shared/types/session-context.types.d.ts +0 -2
- package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
- package/dist/server/shared/types/websocket.types.d.ts +17 -10
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
- package/dist/server/src/api/mcp/debug-response-wrapper.js +2 -2
- package/dist/server/src/api/mcp/gateway.d.ts +1 -3
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
- package/dist/server/src/api/mcp/gateway.js +32 -49
- package/dist/server/src/api/web/hub-tools.d.ts +2 -2
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
- package/dist/server/src/api/web/hub-tools.js +3 -54
- package/dist/server/src/api/web/mcp-status.d.ts +1 -1
- package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
- package/dist/server/src/api/web/mcp-status.js +71 -30
- package/dist/server/src/api/web/resources.d.ts.map +1 -1
- package/dist/server/src/api/web/resources.js +28 -22
- package/dist/server/src/api/web/search.d.ts +2 -16
- package/dist/server/src/api/web/search.d.ts.map +1 -1
- package/dist/server/src/api/web/search.js +24 -45
- package/dist/server/src/api/web/servers.d.ts +3 -3
- package/dist/server/src/api/web/servers.d.ts.map +1 -1
- package/dist/server/src/api/web/servers.js +70 -25
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
- package/dist/server/src/api/ws/ws-handler.js +4 -2
- package/dist/server/src/app.d.ts.map +1 -1
- package/dist/server/src/app.js +0 -2
- package/dist/server/src/cli/commands/list.js +2 -2
- package/dist/server/src/cli/commands/server.d.ts +57 -0
- package/dist/server/src/cli/commands/server.d.ts.map +1 -0
- package/dist/server/src/cli/commands/server.js +169 -0
- package/dist/server/src/cli/commands/status.d.ts.map +1 -1
- package/dist/server/src/cli/commands/status.js +41 -30
- package/dist/server/src/cli/index.d.ts.map +1 -1
- package/dist/server/src/cli/index.js +2 -1
- package/dist/server/src/cli/server.d.ts +11 -2
- package/dist/server/src/cli/server.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.d.ts +22 -0
- package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.js +135 -11
- package/dist/server/src/config/config-loader.d.ts +6 -5
- package/dist/server/src/config/config-loader.d.ts.map +1 -1
- package/dist/server/src/config/config-loader.js +54 -16
- package/dist/server/src/config/config-manager.d.ts +51 -43
- package/dist/server/src/config/config-manager.d.ts.map +1 -1
- package/dist/server/src/config/config-manager.js +84 -66
- package/dist/server/src/config/config-migrator.d.ts +82 -0
- package/dist/server/src/config/config-migrator.d.ts.map +1 -0
- package/dist/server/src/config/config-migrator.js +348 -0
- package/dist/server/src/config/config-saver.d.ts +2 -0
- package/dist/server/src/config/config-saver.d.ts.map +1 -1
- package/dist/server/src/config/config-saver.js +8 -2
- package/dist/server/src/config/config.schema.d.ts +10 -104
- package/dist/server/src/config/config.schema.d.ts.map +1 -1
- package/dist/server/src/config/config.schema.js +15 -99
- package/dist/server/src/config/path-validator.d.ts +27 -0
- package/dist/server/src/config/path-validator.d.ts.map +1 -0
- package/dist/server/src/config/path-validator.js +53 -0
- package/dist/server/src/config/server-config-manager.d.ts +37 -31
- package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
- package/dist/server/src/config/server-config-manager.js +222 -66
- package/dist/server/src/config/type-converter.d.ts.map +1 -1
- package/dist/server/src/config/type-converter.js +3 -2
- package/dist/server/src/models/event.model.d.ts +17 -10
- package/dist/server/src/models/event.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.d.ts +17 -3
- package/dist/server/src/models/server.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.js +2 -1
- package/dist/server/src/models/system-tools.constants.d.ts +10 -27
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
- package/dist/server/src/models/system-tools.constants.js +4 -8
- package/dist/server/src/pid/manager.d.ts.map +1 -1
- package/dist/server/src/pid/manager.js +2 -1
- package/dist/server/src/server/dev-server.js +34 -20
- package/dist/server/src/server/runner.d.ts.map +1 -1
- package/dist/server/src/server/runner.js +41 -26
- package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
- package/dist/server/src/services/connection/connection-manager.js +286 -241
- package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
- package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
- package/dist/server/src/services/connection/tool-cache.js +50 -55
- package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
- package/dist/server/src/services/gateway/gateway.service.js +53 -23
- package/dist/server/src/services/gateway/global-transport.d.ts +19 -0
- package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
- package/dist/server/src/services/gateway/global-transport.js +66 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
- package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +20 -80
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
- package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
- package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
- package/dist/server/src/services/gateway/types.d.ts +2 -1
- package/dist/server/src/services/gateway/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.d.ts +32 -238
- package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.js +89 -267
- package/dist/server/src/services/hub-tools/index.d.ts +1 -3
- package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/index.js +1 -2
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +24 -1
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/resource-generator.js +259 -39
- package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
- package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/server-selector.js +44 -37
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
- package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
- package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/tool-search.js +10 -4
- package/dist/server/src/services/hub-tools/types.d.ts +2 -2
- package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.d.ts +43 -72
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.js +185 -110
- package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/system-tool-handler.js +7 -17
- package/dist/server/src/utils/composite-key.d.ts +29 -0
- package/dist/server/src/utils/composite-key.d.ts.map +1 -0
- package/dist/server/src/utils/composite-key.js +39 -0
- package/dist/server/src/utils/error-handler.d.ts.map +1 -1
- package/dist/server/src/utils/error-handler.js +3 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/utils/index.js +2 -0
- package/dist/server/src/utils/instance-id.d.ts +22 -0
- package/dist/server/src/utils/instance-id.d.ts.map +1 -0
- package/dist/server/src/utils/instance-id.js +59 -0
- package/dist/server/src/utils/json-utils.d.ts +4 -4
- package/dist/server/src/utils/json-utils.d.ts.map +1 -1
- package/dist/server/src/utils/json-utils.js +4 -4
- package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
- package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.js +82 -5
- package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-modules.js +8 -6
- package/dist/server/src/utils/parameter-validator.d.ts +10 -0
- package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
- package/dist/server/src/utils/parameter-validator.js +53 -0
- package/dist/server/src/utils/process-tree.d.ts +49 -0
- package/dist/server/src/utils/process-tree.d.ts.map +1 -0
- package/dist/server/src/utils/process-tree.js +285 -0
- package/dist/server/src/utils/sort-utils.d.ts +40 -0
- package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
- package/dist/server/src/utils/sort-utils.js +131 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
- package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/sse-transport.js +55 -9
- package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
- package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/stdio-transport.js +66 -247
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
- package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
- package/dist/server/src/utils/transports/transport-factory.js +31 -11
- package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
- package/dist/server/src/utils/version.d.ts +11 -0
- package/dist/server/src/utils/version.d.ts.map +1 -0
- package/dist/server/src/utils/version.js +57 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
- package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
- package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
- package/dist/server/tests/server.test.js +27 -16
- package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
- package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
- package/dist/server/tests/temp/temp-run-docling.js +53 -0
- package/dist/server/tests/types/test-helpers.d.ts +1 -2
- package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-saver.test.js +200 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config.schema.test.js +347 -0
- package/dist/server/tests/unit/server/runner.test.js +86 -62
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
- package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -320
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
- package/dist/server/tests/unit/services/session-manager.test.js +26 -436
- package/dist/server/tests/unit/utils/config.test.js +88 -186
- package/dist/server/tests/unit/utils/json-utils.test.js +18 -18
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
- package/package.json +3 -1
- package/dist/client/assets/ResourceDetailView-Bf-1ffbk.js +0 -1
- package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
- package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
- package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
- package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
- package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
- package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
- package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
- package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
- package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
- package/dist/client/assets/ToolsView-E3Ps9c7i.css +0 -1
- package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
- package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
- package/dist/client/assets/el-input-CDnuSKVZ.js +0 -1
- package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
- package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
- package/dist/client/assets/el-overlay-CzMkXyYy.js +0 -1
- package/dist/client/assets/el-select-DvjGddk_.js +0 -1
- package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
- package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
- package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
- package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
- package/dist/client/assets/el-tag-npbwux4f.js +0 -1
- package/dist/client/assets/index-CCnAxNF8.js +0 -2
- package/dist/client/assets/index-d1DZeSfz.js +0 -1
- package/dist/client/assets/omit-DPsOVNIJ.js +0 -1
- package/dist/client/assets/vnode-CHomNjgN.js +0 -1
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
3
|
* Session State Schema
|
|
4
|
-
* Represents the
|
|
4
|
+
* Represents the state of a client session (in-memory only)
|
|
5
5
|
*/
|
|
6
6
|
export declare const SessionStateSchema: z.ZodObject<{
|
|
7
7
|
sessionId: z.ZodString;
|
|
8
8
|
clientName: z.ZodOptional<z.ZodString>;
|
|
9
9
|
clientVersion: z.ZodOptional<z.ZodString>;
|
|
10
10
|
protocolVersion: z.ZodOptional<z.ZodString>;
|
|
11
|
-
cwd: z.ZodOptional<z.ZodString>;
|
|
12
|
-
project: z.ZodOptional<z.ZodString>;
|
|
13
11
|
userAgent: z.ZodOptional<z.ZodString>;
|
|
14
12
|
ip: z.ZodOptional<z.ZodString>;
|
|
15
13
|
capabilities: z.ZodOptional<z.ZodAny>;
|
|
@@ -18,58 +16,4 @@ export declare const SessionStateSchema: z.ZodObject<{
|
|
|
18
16
|
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
19
17
|
}, z.core.$strip>;
|
|
20
18
|
export type SessionState = z.infer<typeof SessionStateSchema>;
|
|
21
|
-
/**
|
|
22
|
-
* Session Store Schema
|
|
23
|
-
* Container for all persisted sessions
|
|
24
|
-
*/
|
|
25
|
-
export declare const SessionStoreSchema: z.ZodObject<{
|
|
26
|
-
version: z.ZodDefault<z.ZodString>;
|
|
27
|
-
sessions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
28
|
-
sessionId: z.ZodString;
|
|
29
|
-
clientName: z.ZodOptional<z.ZodString>;
|
|
30
|
-
clientVersion: z.ZodOptional<z.ZodString>;
|
|
31
|
-
protocolVersion: z.ZodOptional<z.ZodString>;
|
|
32
|
-
cwd: z.ZodOptional<z.ZodString>;
|
|
33
|
-
project: z.ZodOptional<z.ZodString>;
|
|
34
|
-
userAgent: z.ZodOptional<z.ZodString>;
|
|
35
|
-
ip: z.ZodOptional<z.ZodString>;
|
|
36
|
-
capabilities: z.ZodOptional<z.ZodAny>;
|
|
37
|
-
createdAt: z.ZodNumber;
|
|
38
|
-
lastAccessedAt: z.ZodNumber;
|
|
39
|
-
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
40
|
-
}, z.core.$strip>>>;
|
|
41
|
-
}, z.core.$strip>;
|
|
42
|
-
export type SessionStore = z.infer<typeof SessionStoreSchema>;
|
|
43
|
-
/**
|
|
44
|
-
* Create a new empty session store
|
|
45
|
-
*/
|
|
46
|
-
export declare function createEmptySessionStore(): SessionStore;
|
|
47
|
-
/**
|
|
48
|
-
* Validates and normalizes session store data using Zod schema validation.
|
|
49
|
-
*
|
|
50
|
-
* This function takes raw session store data (typically parsed from JSON) and validates it
|
|
51
|
-
* against the SessionStoreSchema. If validation succeeds, it returns the validated and
|
|
52
|
-
* normalized data. If validation fails, it returns an empty session store with default values.
|
|
53
|
-
*
|
|
54
|
-
* The function uses safeParse to prevent exceptions during validation, making it safe to use
|
|
55
|
-
* with untrusted or potentially corrupted data sources like persisted JSON files.
|
|
56
|
-
*
|
|
57
|
-
* @param {unknown} data - Raw session store data to validate (typically from JSON.parse)
|
|
58
|
-
* @returns {SessionStore} Validated session store data, or an empty store if validation fails
|
|
59
|
-
*
|
|
60
|
-
* @example
|
|
61
|
-
* ```typescript
|
|
62
|
-
* // Validate data from a JSON file
|
|
63
|
-
* // Note: In practice, sessions are stored in a directory structure:
|
|
64
|
-
* // - sessions/index.json (contains session ID list)
|
|
65
|
-
* // - sessions/{sessionId}.json (individual session files)
|
|
66
|
-
* const validatedStore = validateSessionStore(rawData);
|
|
67
|
-
*
|
|
68
|
-
* // Use the validated store
|
|
69
|
-
* Object.keys(validatedStore.sessions).forEach(sessionId => {
|
|
70
|
-
* console.log(`Session: ${sessionId}`);
|
|
71
|
-
* });
|
|
72
|
-
* ```
|
|
73
|
-
*/
|
|
74
|
-
export declare function validateSessionStore(data: unknown): SessionStore;
|
|
75
19
|
//# sourceMappingURL=session.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/session.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"session.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/session.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAW7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
3
|
* Session State Schema
|
|
4
|
-
* Represents the
|
|
4
|
+
* Represents the state of a client session (in-memory only)
|
|
5
5
|
*/
|
|
6
6
|
export const SessionStateSchema = z.object({
|
|
7
7
|
sessionId: z.string(),
|
|
8
8
|
clientName: z.string().optional(),
|
|
9
9
|
clientVersion: z.string().optional(),
|
|
10
10
|
protocolVersion: z.string().optional(),
|
|
11
|
-
cwd: z.string().optional(),
|
|
12
|
-
project: z.string().optional(),
|
|
13
11
|
userAgent: z.string().optional(),
|
|
14
12
|
ip: z.string().optional(),
|
|
15
13
|
capabilities: z.any().optional(),
|
|
@@ -17,55 +15,3 @@ export const SessionStateSchema = z.object({
|
|
|
17
15
|
lastAccessedAt: z.number(),
|
|
18
16
|
metadata: z.record(z.string(), z.any()).default({})
|
|
19
17
|
});
|
|
20
|
-
/**
|
|
21
|
-
* Session Store Schema
|
|
22
|
-
* Container for all persisted sessions
|
|
23
|
-
*/
|
|
24
|
-
export const SessionStoreSchema = z.object({
|
|
25
|
-
version: z.string().default('1.0.0'),
|
|
26
|
-
sessions: z.record(z.string(), SessionStateSchema).default({})
|
|
27
|
-
});
|
|
28
|
-
/**
|
|
29
|
-
* Create a new empty session store
|
|
30
|
-
*/
|
|
31
|
-
export function createEmptySessionStore() {
|
|
32
|
-
return {
|
|
33
|
-
version: '1.0.0',
|
|
34
|
-
sessions: {}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Validates and normalizes session store data using Zod schema validation.
|
|
39
|
-
*
|
|
40
|
-
* This function takes raw session store data (typically parsed from JSON) and validates it
|
|
41
|
-
* against the SessionStoreSchema. If validation succeeds, it returns the validated and
|
|
42
|
-
* normalized data. If validation fails, it returns an empty session store with default values.
|
|
43
|
-
*
|
|
44
|
-
* The function uses safeParse to prevent exceptions during validation, making it safe to use
|
|
45
|
-
* with untrusted or potentially corrupted data sources like persisted JSON files.
|
|
46
|
-
*
|
|
47
|
-
* @param {unknown} data - Raw session store data to validate (typically from JSON.parse)
|
|
48
|
-
* @returns {SessionStore} Validated session store data, or an empty store if validation fails
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* // Validate data from a JSON file
|
|
53
|
-
* // Note: In practice, sessions are stored in a directory structure:
|
|
54
|
-
* // - sessions/index.json (contains session ID list)
|
|
55
|
-
* // - sessions/{sessionId}.json (individual session files)
|
|
56
|
-
* const validatedStore = validateSessionStore(rawData);
|
|
57
|
-
*
|
|
58
|
-
* // Use the validated store
|
|
59
|
-
* Object.keys(validatedStore.sessions).forEach(sessionId => {
|
|
60
|
-
* console.log(`Session: ${sessionId}`);
|
|
61
|
-
* });
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export function validateSessionStore(data) {
|
|
65
|
-
const result = SessionStoreSchema.safeParse(data);
|
|
66
|
-
if (result.success) {
|
|
67
|
-
return result.data;
|
|
68
|
-
}
|
|
69
|
-
// Return empty store if validation fails
|
|
70
|
-
return createEmptySessionStore();
|
|
71
|
-
}
|
|
@@ -12,11 +12,13 @@ export interface ToolAnnotations {
|
|
|
12
12
|
idempotentHint?: boolean;
|
|
13
13
|
openWorldHint?: boolean;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
15
|
+
export interface ToolSummary {
|
|
16
16
|
name: string;
|
|
17
17
|
description?: string;
|
|
18
|
-
inputSchema?: JsonSchema;
|
|
19
18
|
serverName: string;
|
|
19
|
+
}
|
|
20
|
+
export interface Tool extends ToolSummary {
|
|
21
|
+
inputSchema?: JsonSchema;
|
|
20
22
|
annotations?: ToolAnnotations;
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=tool.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/tool.model.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"tool.model.d.ts","sourceRoot":"","sources":["../../../../shared/models/tool.model.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-context.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/session-context.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"session-context.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/session-context.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;CACvB"}
|
|
@@ -39,7 +39,8 @@ export interface PingMessage {
|
|
|
39
39
|
}
|
|
40
40
|
export interface FetchLogsMessage {
|
|
41
41
|
type: 'fetch-logs';
|
|
42
|
-
|
|
42
|
+
serverName: string;
|
|
43
|
+
serverIndex: number;
|
|
43
44
|
limit?: number;
|
|
44
45
|
since?: number;
|
|
45
46
|
}
|
|
@@ -47,7 +48,8 @@ export type ClientMessage = SubscribeMessage | UnsubscribeMessage | PingMessage
|
|
|
47
48
|
export interface ServerStatusEvent {
|
|
48
49
|
type: 'server-status';
|
|
49
50
|
data: {
|
|
50
|
-
|
|
51
|
+
serverName: string;
|
|
52
|
+
serverIndex: number;
|
|
51
53
|
status: 'online' | 'offline' | 'error';
|
|
52
54
|
error?: string;
|
|
53
55
|
timestamp: number;
|
|
@@ -56,7 +58,8 @@ export interface ServerStatusEvent {
|
|
|
56
58
|
export interface LogEvent {
|
|
57
59
|
type: 'log';
|
|
58
60
|
data: {
|
|
59
|
-
|
|
61
|
+
serverName: string;
|
|
62
|
+
serverIndex: number;
|
|
60
63
|
logs: Array<{
|
|
61
64
|
level: LogLevel;
|
|
62
65
|
message: string;
|
|
@@ -67,14 +70,16 @@ export interface LogEvent {
|
|
|
67
70
|
export interface ToolsEvent {
|
|
68
71
|
type: 'tools';
|
|
69
72
|
data: {
|
|
70
|
-
|
|
73
|
+
serverName: string;
|
|
74
|
+
serverIndex: number;
|
|
71
75
|
tools: Tool[];
|
|
72
76
|
};
|
|
73
77
|
}
|
|
74
78
|
export interface ResourcesEvent {
|
|
75
79
|
type: 'resources';
|
|
76
80
|
data: {
|
|
77
|
-
|
|
81
|
+
serverName: string;
|
|
82
|
+
serverIndex: number;
|
|
78
83
|
resources: Resource[];
|
|
79
84
|
};
|
|
80
85
|
}
|
|
@@ -93,7 +98,8 @@ export interface ServerDeletedEvent {
|
|
|
93
98
|
export interface ServerConnectedEvent {
|
|
94
99
|
type: 'server-connected';
|
|
95
100
|
data: {
|
|
96
|
-
|
|
101
|
+
serverName: string;
|
|
102
|
+
serverIndex: number;
|
|
97
103
|
status: 'online';
|
|
98
104
|
timestamp: number;
|
|
99
105
|
};
|
|
@@ -101,7 +107,8 @@ export interface ServerConnectedEvent {
|
|
|
101
107
|
export interface ServerDisconnectedEvent {
|
|
102
108
|
type: 'server-disconnected';
|
|
103
109
|
data: {
|
|
104
|
-
|
|
110
|
+
serverName: string;
|
|
111
|
+
serverIndex: number;
|
|
105
112
|
status: 'offline';
|
|
106
113
|
timestamp: number;
|
|
107
114
|
};
|
|
@@ -114,8 +121,8 @@ export interface ToolCallStartedEvent {
|
|
|
114
121
|
type: 'tool-call-started';
|
|
115
122
|
data: {
|
|
116
123
|
requestId: string;
|
|
117
|
-
serverId: string;
|
|
118
124
|
serverName: string;
|
|
125
|
+
serverIndex: number;
|
|
119
126
|
toolName: string;
|
|
120
127
|
timestamp: number;
|
|
121
128
|
args: Record<string, unknown>;
|
|
@@ -125,8 +132,8 @@ export interface ToolCallCompletedEvent {
|
|
|
125
132
|
type: 'tool-call-completed';
|
|
126
133
|
data: {
|
|
127
134
|
requestId: string;
|
|
128
|
-
serverId: string;
|
|
129
135
|
serverName: string;
|
|
136
|
+
serverIndex: number;
|
|
130
137
|
toolName: string;
|
|
131
138
|
timestamp: number;
|
|
132
139
|
result: unknown;
|
|
@@ -136,8 +143,8 @@ export interface ToolCallErrorEvent {
|
|
|
136
143
|
type: 'tool-call-error';
|
|
137
144
|
data: {
|
|
138
145
|
requestId: string;
|
|
139
|
-
serverId: string;
|
|
140
146
|
serverName: string;
|
|
147
|
+
serverIndex: number;
|
|
141
148
|
toolName: string;
|
|
142
149
|
timestamp: number;
|
|
143
150
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;CAiBzB,CAAC;AAGX,eAAO,MAAM,oBAAoB,2SAAwC,CAAC;AAG1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMvE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"websocket.types.d.ts","sourceRoot":"","sources":["../../../../shared/types/websocket.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -269,10 +269,10 @@ export function wrapReplyForDebug(reply, sessionId) {
|
|
|
269
269
|
}
|
|
270
270
|
}
|
|
271
271
|
if (headers) {
|
|
272
|
-
logger.debug(`
|
|
272
|
+
logger.debug(`Full error response context - statusCode: ${statusCode}, statusMessage: ${statusMessage || 'none'}, headers: ${stringifyForLogging(headers)}`, LOG_MODULES.COMMUNICATION);
|
|
273
273
|
}
|
|
274
274
|
else {
|
|
275
|
-
logger.debug(`
|
|
275
|
+
logger.debug(`Full error response context - statusCode: ${statusCode}, statusMessage: ${statusMessage || 'none'}`, LOG_MODULES.COMMUNICATION);
|
|
276
276
|
}
|
|
277
277
|
}
|
|
278
278
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP Gateway endpoint using Streamable HTTP Transport
|
|
2
|
+
* MCP Gateway endpoint using Streamable HTTP Transport (stateless mode)
|
|
3
3
|
* Handles all MCP protocol requests at /mcp endpoint
|
|
4
|
-
*
|
|
5
|
-
* This is a thin wrapper around modular utilities for better maintainability.
|
|
6
4
|
*/
|
|
7
5
|
import type { FastifyInstance } from 'fastify';
|
|
8
6
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../../../src/api/mcp/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAM7E;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,eAAe,iBAqH9D"}
|
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MCP Gateway endpoint using Streamable HTTP Transport
|
|
2
|
+
* MCP Gateway endpoint using Streamable HTTP Transport (stateless mode)
|
|
3
3
|
* Handles all MCP protocol requests at /mcp endpoint
|
|
4
|
-
*
|
|
5
|
-
* This is a thin wrapper around modular utilities for better maintainability.
|
|
6
4
|
*/
|
|
7
|
-
import { logger, LOG_MODULES } from '../../utils/logger.js';
|
|
5
|
+
import { logger, LOG_MODULES } from '../../utils/logger/index.js';
|
|
8
6
|
import { stringifyForLogging, getMcpCommDebugSetting } from '../../utils/json-utils.js';
|
|
9
|
-
import { requestContext } from '../../utils/request-context.js';
|
|
10
|
-
import { sessionTrackerService } from '../../services/session-tracker.service.js';
|
|
11
|
-
import { mcpSessionManager } from '../../services/session/index.js';
|
|
12
|
-
import { cleanupStaleSseStreams } from './sse-stream-manager.js';
|
|
13
|
-
import { extractSessionContext } from './session-context-extractor.js';
|
|
14
7
|
import { wrapReplyForDebug } from './debug-response-wrapper.js';
|
|
8
|
+
import { createSessionTransport } from '../../services/gateway/global-transport.js';
|
|
15
9
|
/**
|
|
16
10
|
* MCP Gateway routes registration.
|
|
17
11
|
*
|
|
@@ -19,7 +13,7 @@ import { wrapReplyForDebug } from './debug-response-wrapper.js';
|
|
|
19
13
|
*/
|
|
20
14
|
export async function mcpGatewayRoutes(fastify) {
|
|
21
15
|
const handleMcpRequest = async (request, reply) => {
|
|
22
|
-
// First, log that we received the request
|
|
16
|
+
// First, log that we received the request
|
|
23
17
|
if (getMcpCommDebugSetting()) {
|
|
24
18
|
let initialLogMsg = `MCP Gateway ${request.method} ${request.url}`;
|
|
25
19
|
// Combine headers and body into one log block
|
|
@@ -35,58 +29,47 @@ export async function mcpGatewayRoutes(fastify) {
|
|
|
35
29
|
}
|
|
36
30
|
logger.debug(initialLogMsg, LOG_MODULES.COMMUNICATION);
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
sessionLogMsg += ` [Client: ${sessionContext.clientName}]`;
|
|
49
|
-
logger.debug(sessionLogMsg, LOG_MODULES.COMMUNICATION);
|
|
32
|
+
// Reject GET requests without Accept: text/event-stream (health-check hook compatibility)
|
|
33
|
+
const accept = request.raw.headers['accept'] || '';
|
|
34
|
+
if (request.method === 'GET' && !accept.includes('text/event-stream')) {
|
|
35
|
+
reply.raw.writeHead(400, { 'Content-Type': 'application/json' });
|
|
36
|
+
reply.raw.end(JSON.stringify({
|
|
37
|
+
jsonrpc: '2.0',
|
|
38
|
+
error: { code: -32000, message: 'Bad Request: Accept: text/event-stream required' },
|
|
39
|
+
id: null
|
|
40
|
+
}));
|
|
41
|
+
return;
|
|
50
42
|
}
|
|
51
43
|
reply.header('Content-Type', 'application/json');
|
|
52
|
-
|
|
53
|
-
request.headers['accept'] = 'application/json, text/event-stream';
|
|
54
|
-
}
|
|
55
|
-
wrapReplyForDebug(reply, sessionId);
|
|
44
|
+
wrapReplyForDebug(reply, '');
|
|
56
45
|
reply.hijack();
|
|
57
|
-
const startTime = Date.now();
|
|
58
46
|
try {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
logger.debug(`Proactive SSE stream cleanup for session ${sessionId} before handling request`, LOG_MODULES.GATEWAY);
|
|
71
|
-
cleanupStaleSseStreams(session.transport, sessionId);
|
|
47
|
+
logger.debug(`About to create session transport for MCP request`, LOG_MODULES.GATEWAY);
|
|
48
|
+
const { transport, server } = await createSessionTransport();
|
|
49
|
+
logger.debug(`Created session transport successfully, handling MCP request`, LOG_MODULES.GATEWAY);
|
|
50
|
+
try {
|
|
51
|
+
await transport.handleRequest(request.raw, reply.raw, request.body);
|
|
52
|
+
logger.debug(`Successfully handled MCP request with server: ${server.constructor.name}`, LOG_MODULES.GATEWAY);
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
// Resources will be automatically cleaned up by garbage collection
|
|
56
|
+
// since transport and server are local to this request scope
|
|
57
|
+
logger.debug(`Session transport request completed, resources will be GC'd`, LOG_MODULES.GATEWAY);
|
|
72
58
|
}
|
|
73
|
-
await requestContext.run(sessionContext, async () => {
|
|
74
|
-
await session.transport.handleRequest(request.raw, reply.raw, request.body);
|
|
75
|
-
});
|
|
76
|
-
const duration = Date.now() - startTime;
|
|
77
|
-
logger.info(`MCP Gateway response for ${sessionId}: handled in ${duration}ms`, LOG_MODULES.GATEWAY);
|
|
78
59
|
}
|
|
79
60
|
catch (error) {
|
|
80
61
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
81
|
-
|
|
62
|
+
const errorStack = error instanceof Error ? error.stack : 'No stack available';
|
|
63
|
+
logger.error(`Error handling MCP request: ${errorMessage}`, LOG_MODULES.GATEWAY);
|
|
64
|
+
logger.error(`Full error stack: ${errorStack}`, LOG_MODULES.GATEWAY);
|
|
65
|
+
logger.error(`Request body that caused error: ${JSON.stringify(request.body)}`, LOG_MODULES.GATEWAY);
|
|
82
66
|
if (!reply.raw.headersSent) {
|
|
83
67
|
reply.raw.writeHead(500, { 'Content-Type': 'application/json' });
|
|
84
68
|
reply.raw.end(JSON.stringify({
|
|
85
69
|
jsonrpc: '2.0',
|
|
86
70
|
error: {
|
|
87
71
|
code: -32000,
|
|
88
|
-
message: 'Internal Server Error'
|
|
89
|
-
data: { sessionId }
|
|
72
|
+
message: 'Internal Server Error'
|
|
90
73
|
},
|
|
91
74
|
id: null
|
|
92
75
|
}));
|
|
@@ -105,7 +88,7 @@ export async function mcpGatewayRoutes(fastify) {
|
|
|
105
88
|
},
|
|
106
89
|
handler: handleMcpRequest
|
|
107
90
|
});
|
|
108
|
-
// Handle any subpaths if client appends them
|
|
91
|
+
// Handle any subpaths if client appends them
|
|
109
92
|
fastify.all('/mcp/*', {
|
|
110
93
|
bodyLimit: 10 * 1024 * 1024, // 10MB limit
|
|
111
94
|
preHandler: (request, _reply, done) => {
|
|
@@ -7,12 +7,12 @@ import { FastifyInstance } from 'fastify';
|
|
|
7
7
|
* tool management and execution within the MCP Hub Lite system.
|
|
8
8
|
*
|
|
9
9
|
* The API supports both system-level tools (built into MCP Hub Lite) and server-specific tools
|
|
10
|
-
* from connected MCP servers. It enables
|
|
10
|
+
* from connected MCP servers. It enables tool listing, detailed tool inspection,
|
|
11
11
|
* and secure tool invocation with proper parameter validation.
|
|
12
12
|
*
|
|
13
13
|
* Key features include:
|
|
14
14
|
* - System tool discovery and execution
|
|
15
|
-
* - Cross-server tool listing
|
|
15
|
+
* - Cross-server tool listing
|
|
16
16
|
* - Server-specific tool management
|
|
17
17
|
* - Tool schema inspection and validation
|
|
18
18
|
* - Secure tool invocation with session context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoB1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAsJ/D"}
|
|
@@ -8,12 +8,12 @@ import { hubToolsService } from '../../services/hub-tools.service.js';
|
|
|
8
8
|
* tool management and execution within the MCP Hub Lite system.
|
|
9
9
|
*
|
|
10
10
|
* The API supports both system-level tools (built into MCP Hub Lite) and server-specific tools
|
|
11
|
-
* from connected MCP servers. It enables
|
|
11
|
+
* from connected MCP servers. It enables tool listing, detailed tool inspection,
|
|
12
12
|
* and secure tool invocation with proper parameter validation.
|
|
13
13
|
*
|
|
14
14
|
* Key features include:
|
|
15
15
|
* - System tool discovery and execution
|
|
16
|
-
* - Cross-server tool listing
|
|
16
|
+
* - Cross-server tool listing
|
|
17
17
|
* - Server-specific tool management
|
|
18
18
|
* - Tool schema inspection and validation
|
|
19
19
|
* - Secure tool invocation with session context
|
|
@@ -58,16 +58,6 @@ export async function webHubToolsRoutes(fastify) {
|
|
|
58
58
|
const servers = await hubToolsService.listServers();
|
|
59
59
|
return servers;
|
|
60
60
|
});
|
|
61
|
-
// GET /web/hub-tools/servers/find - Find servers matching a pattern
|
|
62
|
-
fastify.get('/web/hub-tools/servers/find', async (request) => {
|
|
63
|
-
const { pattern, searchIn = 'both', caseSensitive = 'false' } = request.query;
|
|
64
|
-
const servers = await hubToolsService.findServers({
|
|
65
|
-
pattern,
|
|
66
|
-
searchIn: searchIn,
|
|
67
|
-
caseSensitive: caseSensitive === 'true'
|
|
68
|
-
});
|
|
69
|
-
return servers;
|
|
70
|
-
});
|
|
71
61
|
// GET /web/hub-tools/servers/:serverName/tools - List all tools in a specific server
|
|
72
62
|
fastify.get('/web/hub-tools/servers/:serverName/tools', async (request, reply) => {
|
|
73
63
|
try {
|
|
@@ -77,7 +67,7 @@ export async function webHubToolsRoutes(fastify) {
|
|
|
77
67
|
sessionId,
|
|
78
68
|
tags: tags ? JSON.parse(tags) : undefined
|
|
79
69
|
};
|
|
80
|
-
const result = await hubToolsService.
|
|
70
|
+
const result = await hubToolsService.listToolsInServer({ serverName, requestOptions });
|
|
81
71
|
return result;
|
|
82
72
|
}
|
|
83
73
|
catch (error) {
|
|
@@ -87,37 +77,6 @@ export async function webHubToolsRoutes(fastify) {
|
|
|
87
77
|
});
|
|
88
78
|
}
|
|
89
79
|
});
|
|
90
|
-
// GET /web/hub-tools/servers/:serverName/tools/find - Find tools in a specific server
|
|
91
|
-
fastify.get('/web/hub-tools/servers/:serverName/tools/find', async (request, reply) => {
|
|
92
|
-
try {
|
|
93
|
-
const { serverName } = request.params;
|
|
94
|
-
const { pattern, searchIn = 'both', caseSensitive = 'false', sessionId, tags } = request.query;
|
|
95
|
-
const requestOptions = {
|
|
96
|
-
sessionId,
|
|
97
|
-
tags: tags ? JSON.parse(tags) : undefined
|
|
98
|
-
};
|
|
99
|
-
const result = await hubToolsService.findToolsInServer({
|
|
100
|
-
serverName,
|
|
101
|
-
pattern,
|
|
102
|
-
searchIn: searchIn,
|
|
103
|
-
caseSensitive: caseSensitive === 'true',
|
|
104
|
-
requestOptions
|
|
105
|
-
});
|
|
106
|
-
return result;
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
if (error instanceof Error && error.message.includes('not found')) {
|
|
110
|
-
return reply.code(404).send({
|
|
111
|
-
error: 'Server not found',
|
|
112
|
-
message: error.message
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
return reply.code(500).send({
|
|
116
|
-
error: 'Internal Server Error',
|
|
117
|
-
message: error instanceof Error ? error.message : 'Unknown error'
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
80
|
// GET /web/hub-tools/servers/:serverName/tools/:toolName - Get specific tool details
|
|
122
81
|
fastify.get('/web/hub-tools/servers/:serverName/tools/:toolName', async (request, reply) => {
|
|
123
82
|
try {
|
|
@@ -192,14 +151,4 @@ export async function webHubToolsRoutes(fastify) {
|
|
|
192
151
|
const allTools = await hubToolsService.listAllTools();
|
|
193
152
|
return allTools;
|
|
194
153
|
});
|
|
195
|
-
// GET /web/hub-tools/tools/find - Find tools matching a pattern across all servers
|
|
196
|
-
fastify.get('/web/hub-tools/tools/find', async (request) => {
|
|
197
|
-
const { pattern, searchIn = 'both', caseSensitive = 'false' } = request.query;
|
|
198
|
-
const tools = await hubToolsService.findTools({
|
|
199
|
-
pattern,
|
|
200
|
-
searchIn: searchIn,
|
|
201
|
-
caseSensitive: caseSensitive === 'true'
|
|
202
|
-
});
|
|
203
|
-
return tools;
|
|
204
|
-
});
|
|
205
154
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FastifyInstance } from 'fastify';
|
|
2
2
|
/**
|
|
3
|
-
* MCP Connection Status API Routes
|
|
3
|
+
* MCP Connection Status API Routes (v1.1 format)
|
|
4
4
|
*
|
|
5
5
|
* Provides real-time monitoring and management endpoints for MCP (Model Context Protocol) server connections.
|
|
6
6
|
* This module enables administrators to check the health of connected servers, manage connection states,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/mcp-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/mcp-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,iBAuKhE"}
|