@loop_ouroboros/mcp-hub-lite 1.0.0
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 +228 -0
- package/LICENSE +21 -0
- package/README.md +354 -0
- package/dist/client/assets/HomeView-f901HeKw.js +1 -0
- package/dist/client/assets/ResourceDetailView-BdOaL_-o.css +1 -0
- package/dist/client/assets/ResourceDetailView-Bz66ZjfY.js +1 -0
- package/dist/client/assets/ResourcesView-CjMklkyv.css +1 -0
- package/dist/client/assets/ResourcesView-lI_fItfA.js +1 -0
- package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +1 -0
- package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +2 -0
- package/dist/client/assets/ServerListView-Bws09jNR.css +1 -0
- package/dist/client/assets/ServerListView-CP6Ffkfx.js +30 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +1 -0
- package/dist/client/assets/SessionsView-D68qKR4D.js +1 -0
- package/dist/client/assets/SettingsView-BPYfO9BE.js +1 -0
- package/dist/client/assets/ToolCallDialog-Br8FNebN.js +1 -0
- package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +1 -0
- package/dist/client/assets/ToolsView-B6hUiR43.js +1 -0
- package/dist/client/assets/ToolsView-BLnU8cV6.css +1 -0
- package/dist/client/assets/_baseClone-DCmK847M.js +1 -0
- package/dist/client/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/client/assets/el-form-item-BVMLpmVC.css +1 -0
- package/dist/client/assets/el-form-item-DM0q2hmO.js +12 -0
- package/dist/client/assets/el-input-BtI9NECe.js +1 -0
- package/dist/client/assets/el-input-CmuHb8HS.css +1 -0
- package/dist/client/assets/el-loading-CChNmKeI.js +1 -0
- package/dist/client/assets/el-loading-bpKhqqQq.css +1 -0
- package/dist/client/assets/el-overlay-B2ZKM6Up.css +1 -0
- package/dist/client/assets/el-overlay-lZZbPmsX.js +1 -0
- package/dist/client/assets/el-select-BXztu2b5.js +1 -0
- package/dist/client/assets/el-select-C0U_l4IZ.css +1 -0
- package/dist/client/assets/el-tab-pane-CnNoQHsR.css +1 -0
- package/dist/client/assets/el-tab-pane-Dy9ruaEX.js +1 -0
- package/dist/client/assets/el-table-column-98UyVgBH.js +1 -0
- package/dist/client/assets/el-table-column-T_mV9jNw.css +1 -0
- package/dist/client/assets/el-tag-B5lLT51E.js +1 -0
- package/dist/client/assets/el-tag-DjxZVOpb.css +1 -0
- package/dist/client/assets/event-BB_Ol6Sd.js +1 -0
- package/dist/client/assets/index-BgKcmWJr.js +1 -0
- package/dist/client/assets/index-BsDWtoIl.css +1 -0
- package/dist/client/assets/index-BzQXG7no.js +1 -0
- package/dist/client/assets/index-CSTs2jYk.js +2 -0
- package/dist/client/assets/omit-Bx5HJNV_.js +1 -0
- package/dist/client/assets/raf-B9VDMtMF.js +1 -0
- package/dist/client/assets/typescript-Bp3YSIOJ.js +1 -0
- package/dist/client/assets/vnode-B8aJx8u4.js +1 -0
- package/dist/client/assets/vue-vendor-6ny5zj9i.js +3 -0
- package/dist/client/index.html +15 -0
- package/dist/server/shared/index.d.ts +3 -0
- package/dist/server/shared/index.d.ts.map +1 -0
- package/dist/server/shared/index.js +2 -0
- package/dist/server/shared/models/index.d.ts +4 -0
- package/dist/server/shared/models/index.d.ts.map +1 -0
- package/dist/server/shared/models/index.js +3 -0
- package/dist/server/shared/models/resource.model.d.ts +8 -0
- package/dist/server/shared/models/resource.model.d.ts.map +1 -0
- package/dist/server/shared/models/resource.model.js +1 -0
- package/dist/server/shared/models/server.model.d.ts +57 -0
- package/dist/server/shared/models/server.model.d.ts.map +1 -0
- package/dist/server/shared/models/server.model.js +1 -0
- package/dist/server/shared/models/session.model.d.ts +73 -0
- package/dist/server/shared/models/session.model.d.ts.map +1 -0
- package/dist/server/shared/models/session.model.js +70 -0
- package/dist/server/shared/models/tool.model.d.ts +22 -0
- package/dist/server/shared/models/tool.model.d.ts.map +1 -0
- package/dist/server/shared/models/tool.model.js +1 -0
- package/dist/server/shared/types/client.types.d.ts +35 -0
- package/dist/server/shared/types/client.types.d.ts.map +1 -0
- package/dist/server/shared/types/client.types.js +5 -0
- package/dist/server/shared/types/common.types.d.ts +5 -0
- package/dist/server/shared/types/common.types.d.ts.map +1 -0
- package/dist/server/shared/types/common.types.js +2 -0
- package/dist/server/shared/types/index.d.ts +4 -0
- package/dist/server/shared/types/index.d.ts.map +1 -0
- package/dist/server/shared/types/index.js +3 -0
- package/dist/server/shared/types/session.types.d.ts +15 -0
- package/dist/server/shared/types/session.types.d.ts.map +1 -0
- package/dist/server/shared/types/session.types.js +5 -0
- package/dist/server/shared/types/websocket.types.d.ts +177 -0
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -0
- package/dist/server/shared/types/websocket.types.js +25 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.d.ts +13 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -0
- package/dist/server/src/api/mcp/debug-response-wrapper.js +271 -0
- package/dist/server/src/api/mcp/gateway.d.ts +14 -0
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -0
- package/dist/server/src/api/mcp/gateway.js +116 -0
- package/dist/server/src/api/mcp/session-context-extractor.d.ts +47 -0
- package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -0
- package/dist/server/src/api/mcp/session-context-extractor.js +127 -0
- package/dist/server/src/api/mcp/sse-stream-manager.d.ts +13 -0
- package/dist/server/src/api/mcp/sse-stream-manager.d.ts.map +1 -0
- package/dist/server/src/api/mcp/sse-stream-manager.js +40 -0
- package/dist/server/src/api/web/clients.d.ts +30 -0
- package/dist/server/src/api/web/clients.d.ts.map +1 -0
- package/dist/server/src/api/web/clients.js +41 -0
- package/dist/server/src/api/web/config.d.ts +21 -0
- package/dist/server/src/api/web/config.d.ts.map +1 -0
- package/dist/server/src/api/web/config.js +119 -0
- package/dist/server/src/api/web/health.d.ts +21 -0
- package/dist/server/src/api/web/health.d.ts.map +1 -0
- package/dist/server/src/api/web/health.js +24 -0
- package/dist/server/src/api/web/hub-tools.d.ts +30 -0
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -0
- package/dist/server/src/api/web/hub-tools.js +202 -0
- package/dist/server/src/api/web/logs.d.ts +30 -0
- package/dist/server/src/api/web/logs.d.ts.map +1 -0
- package/dist/server/src/api/web/logs.js +141 -0
- package/dist/server/src/api/web/mcp-status.d.ts +29 -0
- package/dist/server/src/api/web/mcp-status.d.ts.map +1 -0
- package/dist/server/src/api/web/mcp-status.js +126 -0
- package/dist/server/src/api/web/resources.d.ts +28 -0
- package/dist/server/src/api/web/resources.d.ts.map +1 -0
- package/dist/server/src/api/web/resources.js +93 -0
- package/dist/server/src/api/web/search.d.ts +26 -0
- package/dist/server/src/api/web/search.d.ts.map +1 -0
- package/dist/server/src/api/web/search.js +62 -0
- package/dist/server/src/api/web/servers.d.ts +33 -0
- package/dist/server/src/api/web/servers.d.ts.map +1 -0
- package/dist/server/src/api/web/servers.js +235 -0
- package/dist/server/src/api/web/sessions.d.ts +29 -0
- package/dist/server/src/api/web/sessions.d.ts.map +1 -0
- package/dist/server/src/api/web/sessions.js +104 -0
- package/dist/server/src/api/ws/events.d.ts +29 -0
- package/dist/server/src/api/ws/events.d.ts.map +1 -0
- package/dist/server/src/api/ws/events.js +44 -0
- package/dist/server/src/api/ws/ws-handler.d.ts +83 -0
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -0
- package/dist/server/src/api/ws/ws-handler.js +217 -0
- package/dist/server/src/app.d.ts +24 -0
- package/dist/server/src/app.d.ts.map +1 -0
- package/dist/server/src/app.js +108 -0
- package/dist/server/src/cli/commands/list.d.ts +71 -0
- package/dist/server/src/cli/commands/list.d.ts.map +1 -0
- package/dist/server/src/cli/commands/list.js +97 -0
- package/dist/server/src/cli/commands/restart.d.ts +42 -0
- package/dist/server/src/cli/commands/restart.d.ts.map +1 -0
- package/dist/server/src/cli/commands/restart.js +61 -0
- package/dist/server/src/cli/commands/start.d.ts +43 -0
- package/dist/server/src/cli/commands/start.d.ts.map +1 -0
- package/dist/server/src/cli/commands/start.js +160 -0
- package/dist/server/src/cli/commands/status.d.ts +39 -0
- package/dist/server/src/cli/commands/status.d.ts.map +1 -0
- package/dist/server/src/cli/commands/status.js +164 -0
- package/dist/server/src/cli/commands/stop.d.ts +34 -0
- package/dist/server/src/cli/commands/stop.d.ts.map +1 -0
- package/dist/server/src/cli/commands/stop.js +47 -0
- package/dist/server/src/cli/commands/ui.d.ts +44 -0
- package/dist/server/src/cli/commands/ui.d.ts.map +1 -0
- package/dist/server/src/cli/commands/ui.js +95 -0
- package/dist/server/src/cli/index.d.ts +62 -0
- package/dist/server/src/cli/index.d.ts.map +1 -0
- package/dist/server/src/cli/index.js +88 -0
- package/dist/server/src/cli/parse-args.d.ts +108 -0
- package/dist/server/src/cli/parse-args.d.ts.map +1 -0
- package/dist/server/src/cli/parse-args.js +131 -0
- package/dist/server/src/cli/server.d.ts +171 -0
- package/dist/server/src/cli/server.d.ts.map +1 -0
- package/dist/server/src/cli/server.js +246 -0
- package/dist/server/src/config/config-change-logger.d.ts +16 -0
- package/dist/server/src/config/config-change-logger.d.ts.map +1 -0
- package/dist/server/src/config/config-change-logger.js +43 -0
- package/dist/server/src/config/config-loader.d.ts +22 -0
- package/dist/server/src/config/config-loader.d.ts.map +1 -0
- package/dist/server/src/config/config-loader.js +66 -0
- package/dist/server/src/config/config-manager.d.ts +158 -0
- package/dist/server/src/config/config-manager.d.ts.map +1 -0
- package/dist/server/src/config/config-manager.js +246 -0
- package/dist/server/src/config/config-saver.d.ts +16 -0
- package/dist/server/src/config/config-saver.d.ts.map +1 -0
- package/dist/server/src/config/config-saver.js +28 -0
- package/dist/server/src/config/config.schema.d.ts +108 -0
- package/dist/server/src/config/config.schema.d.ts.map +1 -0
- package/dist/server/src/config/config.schema.js +103 -0
- package/dist/server/src/config/server-config-manager.d.ts +74 -0
- package/dist/server/src/config/server-config-manager.d.ts.map +1 -0
- package/dist/server/src/config/server-config-manager.js +157 -0
- package/dist/server/src/config/type-converter.d.ts +13 -0
- package/dist/server/src/config/type-converter.d.ts.map +1 -0
- package/dist/server/src/config/type-converter.js +37 -0
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/server/src/index.js +352 -0
- package/dist/server/src/models/event.model.d.ts +106 -0
- package/dist/server/src/models/event.model.d.ts.map +1 -0
- package/dist/server/src/models/event.model.js +5 -0
- package/dist/server/src/models/server.model.d.ts +19 -0
- package/dist/server/src/models/server.model.d.ts.map +1 -0
- package/dist/server/src/models/server.model.js +1 -0
- package/dist/server/src/models/system-tools.constants.d.ts +73 -0
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -0
- package/dist/server/src/models/system-tools.constants.js +31 -0
- package/dist/server/src/models/types.d.ts +84 -0
- package/dist/server/src/models/types.d.ts.map +1 -0
- package/dist/server/src/models/types.js +67 -0
- package/dist/server/src/pid/file.d.ts +26 -0
- package/dist/server/src/pid/file.d.ts.map +1 -0
- package/dist/server/src/pid/file.js +68 -0
- package/dist/server/src/pid/manager.d.ts +98 -0
- package/dist/server/src/pid/manager.d.ts.map +1 -0
- package/dist/server/src/pid/manager.js +158 -0
- package/dist/server/src/pid/types.d.ts +13 -0
- package/dist/server/src/pid/types.d.ts.map +1 -0
- package/dist/server/src/pid/types.js +4 -0
- package/dist/server/src/server/dev-server.d.ts +2 -0
- package/dist/server/src/server/dev-server.d.ts.map +1 -0
- package/dist/server/src/server/dev-server.js +171 -0
- package/dist/server/src/server/runner.d.ts +57 -0
- package/dist/server/src/server/runner.d.ts.map +1 -0
- package/dist/server/src/server/runner.js +163 -0
- package/dist/server/src/services/client-tracker.service.d.ts +132 -0
- package/dist/server/src/services/client-tracker.service.d.ts.map +1 -0
- package/dist/server/src/services/client-tracker.service.js +203 -0
- package/dist/server/src/services/connection/connection-manager.d.ts +478 -0
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -0
- package/dist/server/src/services/connection/connection-manager.js +929 -0
- package/dist/server/src/services/connection/index.d.ts +6 -0
- package/dist/server/src/services/connection/index.d.ts.map +1 -0
- package/dist/server/src/services/connection/index.js +4 -0
- package/dist/server/src/services/connection/tool-cache.d.ts +122 -0
- package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -0
- package/dist/server/src/services/connection/tool-cache.js +202 -0
- package/dist/server/src/services/connection/types.d.ts +30 -0
- package/dist/server/src/services/connection/types.d.ts.map +1 -0
- package/dist/server/src/services/connection/types.js +1 -0
- package/dist/server/src/services/event-bus.service.d.ts +169 -0
- package/dist/server/src/services/event-bus.service.d.ts.map +1 -0
- package/dist/server/src/services/event-bus.service.js +200 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts +61 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -0
- package/dist/server/src/services/gateway/gateway.service.js +107 -0
- package/dist/server/src/services/gateway/index.d.ts +8 -0
- package/dist/server/src/services/gateway/index.d.ts.map +1 -0
- package/dist/server/src/services/gateway/index.js +6 -0
- package/dist/server/src/services/gateway/log-formatter.d.ts +26 -0
- package/dist/server/src/services/gateway/log-formatter.d.ts.map +1 -0
- package/dist/server/src/services/gateway/log-formatter.js +66 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +13 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +131 -0
- package/dist/server/src/services/gateway/request-handlers/index.d.ts +9 -0
- package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/index.js +8 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +85 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +56 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +228 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts +11 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/tools-handler.js +79 -0
- package/dist/server/src/services/gateway/tool-list-generator.d.ts +23 -0
- package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -0
- package/dist/server/src/services/gateway/tool-list-generator.js +115 -0
- package/dist/server/src/services/gateway/types.d.ts +27 -0
- package/dist/server/src/services/gateway/types.d.ts.map +1 -0
- package/dist/server/src/services/gateway/types.js +4 -0
- package/dist/server/src/services/gateway.service.d.ts +7 -0
- package/dist/server/src/services/gateway.service.d.ts.map +1 -0
- package/dist/server/src/services/gateway.service.js +6 -0
- package/dist/server/src/services/hub-manager.service.d.ts +299 -0
- package/dist/server/src/services/hub-manager.service.d.ts.map +1 -0
- package/dist/server/src/services/hub-manager.service.js +413 -0
- package/dist/server/src/services/hub-tools/index.d.ts +10 -0
- package/dist/server/src/services/hub-tools/index.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/index.js +6 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +63 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/resource-generator.js +141 -0
- package/dist/server/src/services/hub-tools/server-selector.d.ts +63 -0
- package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/server-selector.js +108 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +47 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +225 -0
- package/dist/server/src/services/hub-tools/tool-search.d.ts +85 -0
- package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/tool-search.js +115 -0
- package/dist/server/src/services/hub-tools/types.d.ts +42 -0
- package/dist/server/src/services/hub-tools/types.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/types.js +1 -0
- package/dist/server/src/services/hub-tools.service.d.ts +235 -0
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools.service.js +457 -0
- package/dist/server/src/services/log-storage.service.d.ts +177 -0
- package/dist/server/src/services/log-storage.service.d.ts.map +1 -0
- package/dist/server/src/services/log-storage.service.js +243 -0
- package/dist/server/src/services/mcp-connection-manager.d.ts +7 -0
- package/dist/server/src/services/mcp-connection-manager.d.ts.map +1 -0
- package/dist/server/src/services/mcp-connection-manager.js +6 -0
- package/dist/server/src/services/mcp-session-manager.d.ts +6 -0
- package/dist/server/src/services/mcp-session-manager.d.ts.map +1 -0
- package/dist/server/src/services/mcp-session-manager.js +4 -0
- package/dist/server/src/services/search/index.d.ts +5 -0
- package/dist/server/src/services/search/index.d.ts.map +1 -0
- package/dist/server/src/services/search/index.js +5 -0
- package/dist/server/src/services/search/search-cache.d.ts +132 -0
- package/dist/server/src/services/search/search-cache.d.ts.map +1 -0
- package/dist/server/src/services/search/search-cache.js +151 -0
- package/dist/server/src/services/search/search-core.service.d.ts +108 -0
- package/dist/server/src/services/search/search-core.service.d.ts.map +1 -0
- package/dist/server/src/services/search/search-core.service.js +187 -0
- package/dist/server/src/services/search/search-scorer.d.ts +54 -0
- package/dist/server/src/services/search/search-scorer.d.ts.map +1 -0
- package/dist/server/src/services/search/search-scorer.js +83 -0
- package/dist/server/src/services/search/types.d.ts +20 -0
- package/dist/server/src/services/search/types.d.ts.map +1 -0
- package/dist/server/src/services/search/types.js +1 -0
- package/dist/server/src/services/session/index.d.ts +6 -0
- package/dist/server/src/services/session/index.d.ts.map +1 -0
- package/dist/server/src/services/session/index.js +4 -0
- package/dist/server/src/services/session/session-manager.d.ts +352 -0
- package/dist/server/src/services/session/session-manager.d.ts.map +1 -0
- package/dist/server/src/services/session/session-manager.js +835 -0
- package/dist/server/src/services/session/types.d.ts +32 -0
- package/dist/server/src/services/session/types.d.ts.map +1 -0
- package/dist/server/src/services/session/types.js +1 -0
- package/dist/server/src/services/simple-search.service.d.ts +67 -0
- package/dist/server/src/services/simple-search.service.d.ts.map +1 -0
- package/dist/server/src/services/simple-search.service.js +82 -0
- package/dist/server/src/services/system-tool-handler.d.ts +10 -0
- package/dist/server/src/services/system-tool-handler.d.ts.map +1 -0
- package/dist/server/src/services/system-tool-handler.js +77 -0
- package/dist/server/src/utils/error-handler.d.ts +18 -0
- package/dist/server/src/utils/error-handler.d.ts.map +1 -0
- package/dist/server/src/utils/error-handler.js +59 -0
- package/dist/server/src/utils/format-utils.d.ts +23 -0
- package/dist/server/src/utils/format-utils.d.ts.map +1 -0
- package/dist/server/src/utils/format-utils.js +58 -0
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/server/src/utils/index.js +1 -0
- package/dist/server/src/utils/json-utils.d.ts +82 -0
- package/dist/server/src/utils/json-utils.d.ts.map +1 -0
- package/dist/server/src/utils/json-utils.js +204 -0
- package/dist/server/src/utils/log-rotator.d.ts +223 -0
- package/dist/server/src/utils/log-rotator.d.ts.map +1 -0
- package/dist/server/src/utils/log-rotator.js +306 -0
- package/dist/server/src/utils/logger/dev-logger.d.ts +39 -0
- package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger/dev-logger.js +63 -0
- package/dist/server/src/utils/logger/index.d.ts +36 -0
- package/dist/server/src/utils/logger/index.d.ts.map +1 -0
- package/dist/server/src/utils/logger/index.js +46 -0
- package/dist/server/src/utils/logger/log-colors.d.ts +27 -0
- package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-colors.js +41 -0
- package/dist/server/src/utils/logger/log-context.d.ts +13 -0
- package/dist/server/src/utils/logger/log-context.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-context.js +5 -0
- package/dist/server/src/utils/logger/log-formatter.d.ts +47 -0
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-formatter.js +150 -0
- package/dist/server/src/utils/logger/log-modules.d.ts +141 -0
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-modules.js +81 -0
- package/dist/server/src/utils/logger/log-output.d.ts +68 -0
- package/dist/server/src/utils/logger/log-output.d.ts.map +1 -0
- package/dist/server/src/utils/logger/log-output.js +320 -0
- package/dist/server/src/utils/logger/logger.d.ts +190 -0
- package/dist/server/src/utils/logger/logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger/logger.js +350 -0
- package/dist/server/src/utils/logger.d.ts +12 -0
- package/dist/server/src/utils/logger.d.ts.map +1 -0
- package/dist/server/src/utils/logger.js +12 -0
- package/dist/server/src/utils/mcp-error-handler.d.ts +162 -0
- package/dist/server/src/utils/mcp-error-handler.d.ts.map +1 -0
- package/dist/server/src/utils/mcp-error-handler.js +270 -0
- package/dist/server/src/utils/port-checker.d.ts +16 -0
- package/dist/server/src/utils/port-checker.d.ts.map +1 -0
- package/dist/server/src/utils/port-checker.js +242 -0
- package/dist/server/src/utils/request-context.d.ts +71 -0
- package/dist/server/src/utils/request-context.d.ts.map +1 -0
- package/dist/server/src/utils/request-context.js +73 -0
- package/dist/server/src/utils/tool-args-parser.d.ts +17 -0
- package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -0
- package/dist/server/src/utils/tool-args-parser.js +34 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts +104 -0
- package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/sse-transport.js +189 -0
- package/dist/server/src/utils/transports/stdio-transport.d.ts +122 -0
- package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/stdio-transport.js +324 -0
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +146 -0
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/server/src/utils/transports/streamable-http-transport.js +212 -0
- package/dist/server/src/utils/transports/transport-factory.d.ts +26 -0
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -0
- package/dist/server/src/utils/transports/transport-factory.js +104 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts +35 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -0
- package/dist/server/src/utils/transports/transport.interface.js +1 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.js +103 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +181 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts +2 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts.map +1 -0
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +155 -0
- package/dist/server/tests/evaluation/evaluation.test.d.ts +2 -0
- package/dist/server/tests/evaluation/evaluation.test.d.ts.map +1 -0
- package/dist/server/tests/evaluation/evaluation.test.js +102 -0
- package/dist/server/tests/helpers/sdk-test-helpers.d.ts +32 -0
- package/dist/server/tests/helpers/sdk-test-helpers.d.ts.map +1 -0
- package/dist/server/tests/helpers/sdk-test-helpers.js +82 -0
- package/dist/server/tests/integration/api/gateway.test.d.ts +2 -0
- package/dist/server/tests/integration/api/gateway.test.d.ts.map +1 -0
- package/dist/server/tests/integration/api/gateway.test.js +366 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts +2 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts.map +1 -0
- package/dist/server/tests/integration/gateway/fault-tolerance.test.js +109 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts +2 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts.map +1 -0
- package/dist/server/tests/integration/gateway/mcp-connection.test.js +149 -0
- package/dist/server/tests/server.test.d.ts +2 -0
- package/dist/server/tests/server.test.d.ts.map +1 -0
- package/dist/server/tests/server.test.js +95 -0
- package/dist/server/tests/setup.d.ts +7 -0
- package/dist/server/tests/setup.d.ts.map +1 -0
- package/dist/server/tests/setup.js +53 -0
- package/dist/server/tests/types/logger-test-helpers.d.ts +17 -0
- package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -0
- package/dist/server/tests/types/logger-test-helpers.js +4 -0
- package/dist/server/tests/types/test-helpers.d.ts +27 -0
- package/dist/server/tests/types/test-helpers.d.ts.map +1 -0
- package/dist/server/tests/types/test-helpers.js +4 -0
- package/dist/server/tests/unit/cli/basic-cli.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/basic-cli.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/basic-cli.test.js +33 -0
- package/dist/server/tests/unit/cli/cli.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/cli.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/cli.test.js +17 -0
- package/dist/server/tests/unit/cli/commands.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/commands.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/commands.test.js +75 -0
- package/dist/server/tests/unit/cli/server.test.d.ts +2 -0
- package/dist/server/tests/unit/cli/server.test.d.ts.map +1 -0
- package/dist/server/tests/unit/cli/server.test.js +68 -0
- package/dist/server/tests/unit/server/runner.test.d.ts +2 -0
- package/dist/server/tests/unit/server/runner.test.d.ts.map +1 -0
- package/dist/server/tests/unit/server/runner.test.js +488 -0
- package/dist/server/tests/unit/server/setup.d.ts +2 -0
- package/dist/server/tests/unit/server/setup.d.ts.map +1 -0
- package/dist/server/tests/unit/server/setup.js +21 -0
- package/dist/server/tests/unit/services/gateway-logging.test.d.ts +2 -0
- package/dist/server/tests/unit/services/gateway-logging.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/gateway-logging.test.js +47 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.js +140 -0
- package/dist/server/tests/unit/services/hub-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-manager.test.js +98 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +674 -0
- package/dist/server/tests/unit/services/search/search-cache.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-cache.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-cache.test.js +58 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-core.service.test.js +84 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.d.ts +2 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/search/search-scorer.test.js +97 -0
- package/dist/server/tests/unit/services/session-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/session-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/session-manager.test.js +481 -0
- package/dist/server/tests/unit/utils/config.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/config.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/config.test.js +634 -0
- package/dist/server/tests/unit/utils/json-utils.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/json-utils.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/json-utils.test.js +296 -0
- package/dist/server/tests/unit/utils/log-rotator.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/log-rotator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/log-rotator.test.js +296 -0
- package/dist/server/tests/unit/utils/logger.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/logger.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/logger.test.js +462 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/mcp-error-handler.test.js +163 -0
- package/dist/server/tests/unit/utils/request-context.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/request-context.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/request-context.test.js +82 -0
- package/dist/server/vite.config.d.ts +3 -0
- package/dist/server/vite.config.d.ts.map +1 -0
- package/dist/server/vite.config.js +160 -0
- package/dist/server/vitest.config.d.ts +3 -0
- package/dist/server/vitest.config.d.ts.map +1 -0
- package/dist/server/vitest.config.js +53 -0
- package/package.json +113 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* MCP Connection Status API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides real-time monitoring and management endpoints for MCP (Model Context Protocol) server connections.
|
|
6
|
+
* This module enables administrators to check the health of connected servers, manage connection states,
|
|
7
|
+
* and retrieve server capabilities including available tools and resources.
|
|
8
|
+
*
|
|
9
|
+
* The status API provides comprehensive information about each connected MCP server including:
|
|
10
|
+
* - Connection status (connected/disconnected)
|
|
11
|
+
* - Server performance metrics
|
|
12
|
+
* - Available tools and resources count
|
|
13
|
+
* - Process information (PID, start time)
|
|
14
|
+
* - Error conditions and recovery status
|
|
15
|
+
*
|
|
16
|
+
* Additionally, it provides active connection management capabilities to connect/disconnect
|
|
17
|
+
* servers programmatically, making it suitable for automated infrastructure management.
|
|
18
|
+
*
|
|
19
|
+
* @param fastify - The Fastify instance to register routes on
|
|
20
|
+
* @returns Promise that resolves when all routes are registered
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Register MCP status routes
|
|
25
|
+
* await webMcpStatusRoutes(app);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function webMcpStatusRoutes(fastify: FastifyInstance): Promise<void>;
|
|
29
|
+
//# sourceMappingURL=mcp-status.d.ts.map
|
|
@@ -0,0 +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;AAO1C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,iBAsHhE"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { hubManager } from '../../services/hub-manager.service.js';
|
|
2
|
+
import { mcpConnectionManager } from '../../services/mcp-connection-manager.js';
|
|
3
|
+
import { logger } from '../../utils/logger.js';
|
|
4
|
+
import { LOG_MODULES } from '../../utils/logger/log-modules.js';
|
|
5
|
+
/**
|
|
6
|
+
* MCP Connection Status API Routes
|
|
7
|
+
*
|
|
8
|
+
* Provides real-time monitoring and management endpoints for MCP (Model Context Protocol) server connections.
|
|
9
|
+
* This module enables administrators to check the health of connected servers, manage connection states,
|
|
10
|
+
* and retrieve server capabilities including available tools and resources.
|
|
11
|
+
*
|
|
12
|
+
* The status API provides comprehensive information about each connected MCP server including:
|
|
13
|
+
* - Connection status (connected/disconnected)
|
|
14
|
+
* - Server performance metrics
|
|
15
|
+
* - Available tools and resources count
|
|
16
|
+
* - Process information (PID, start time)
|
|
17
|
+
* - Error conditions and recovery status
|
|
18
|
+
*
|
|
19
|
+
* Additionally, it provides active connection management capabilities to connect/disconnect
|
|
20
|
+
* servers programmatically, making it suitable for automated infrastructure management.
|
|
21
|
+
*
|
|
22
|
+
* @param fastify - The Fastify instance to register routes on
|
|
23
|
+
* @returns Promise that resolves when all routes are registered
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* // Register MCP status routes
|
|
28
|
+
* await webMcpStatusRoutes(app);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export async function webMcpStatusRoutes(fastify) {
|
|
32
|
+
// GET /web/mcp/status - Get status of all MCP servers
|
|
33
|
+
fastify.get('/web/mcp/status', async (_request, reply) => {
|
|
34
|
+
try {
|
|
35
|
+
const servers = hubManager.getAllServers();
|
|
36
|
+
const serverInstances = hubManager.getServerInstances();
|
|
37
|
+
const statusList = [];
|
|
38
|
+
servers.forEach((server) => {
|
|
39
|
+
const instances = serverInstances[server.name] || [];
|
|
40
|
+
instances.forEach((instance) => {
|
|
41
|
+
statusList.push({
|
|
42
|
+
id: instance.id || '',
|
|
43
|
+
name: server.name,
|
|
44
|
+
type: server.config.type,
|
|
45
|
+
status: mcpConnectionManager.getStatus(instance.id || '') || {
|
|
46
|
+
connected: false,
|
|
47
|
+
lastCheck: Date.now(),
|
|
48
|
+
toolsCount: 0,
|
|
49
|
+
resourcesCount: 0,
|
|
50
|
+
pid: undefined
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
return statusList;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
logger.error('Failed to get MCP status:', error, LOG_MODULES.MCP_STATUS);
|
|
59
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// POST /web/mcp/servers/:id/connect - Connect to MCP server
|
|
63
|
+
fastify.post('/web/mcp/servers/:id/connect', async (request, reply) => {
|
|
64
|
+
try {
|
|
65
|
+
const server = hubManager.getServerById(request.params.id);
|
|
66
|
+
if (!server) {
|
|
67
|
+
return reply.code(404).send({ error: 'Server not found' });
|
|
68
|
+
}
|
|
69
|
+
const success = await mcpConnectionManager.connect({
|
|
70
|
+
...server.config,
|
|
71
|
+
...server.instance
|
|
72
|
+
});
|
|
73
|
+
if (!success) {
|
|
74
|
+
return reply.code(500).send({ error: 'Failed to connect to server' });
|
|
75
|
+
}
|
|
76
|
+
// Update enabled status in config - The enabled field now belongs to server configuration, not instance configuration
|
|
77
|
+
await hubManager.updateServer(server.name, { enabled: true });
|
|
78
|
+
return { success: true };
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
logger.error('Failed to connect MCP server:', error, LOG_MODULES.MCP_STATUS);
|
|
82
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
// POST /web/mcp/servers/:id/disconnect - Disconnect from MCP server
|
|
86
|
+
fastify.post('/web/mcp/servers/:id/disconnect', async (request, reply) => {
|
|
87
|
+
try {
|
|
88
|
+
await mcpConnectionManager.disconnect(request.params.id);
|
|
89
|
+
// Update enabled status in config to ensure it doesn't show as "starting"
|
|
90
|
+
// The enabled field now belongs to server configuration, not instance configuration
|
|
91
|
+
const server = hubManager.getServerById(request.params.id);
|
|
92
|
+
if (server) {
|
|
93
|
+
await hubManager.updateServer(server.name, { enabled: false });
|
|
94
|
+
}
|
|
95
|
+
return { success: true };
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logger.error('Failed to disconnect MCP server:', error, LOG_MODULES.MCP_STATUS);
|
|
99
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
// GET /web/mcp/servers/:id/tools - Get tools for a specific server
|
|
103
|
+
fastify.get('/web/mcp/servers/:id/tools', async (request, reply) => {
|
|
104
|
+
try {
|
|
105
|
+
logger.info(`API request tools for server: ${request.params.id}`, LOG_MODULES.MCP_STATUS);
|
|
106
|
+
const tools = mcpConnectionManager.getTools(request.params.id);
|
|
107
|
+
return tools;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger.error('Failed to get MCP tools:', error, LOG_MODULES.MCP_STATUS);
|
|
111
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
// GET /web/mcp/servers/:id/resources - Get resources for a specific server
|
|
115
|
+
fastify.get('/web/mcp/servers/:id/resources', async (request, reply) => {
|
|
116
|
+
try {
|
|
117
|
+
logger.info(`API request resources for server: ${request.params.id}`, LOG_MODULES.MCP_STATUS);
|
|
118
|
+
const resources = mcpConnectionManager.getResources(request.params.id);
|
|
119
|
+
return resources;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
logger.error('Failed to get MCP resources:', error, LOG_MODULES.MCP_STATUS);
|
|
123
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* MCP Resources API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides endpoints for discovering and accessing resources from connected MCP (Model Context Protocol) servers.
|
|
6
|
+
* This module enables clients to list available resources across all servers and read specific resource content.
|
|
7
|
+
*
|
|
8
|
+
* The resources API handles both system-level resources (provided by MCP Hub Lite itself) and server-specific
|
|
9
|
+
* resources from connected MCP servers. It provides a unified interface for resource discovery and access,
|
|
10
|
+
* abstracting away the underlying server implementation details.
|
|
11
|
+
*
|
|
12
|
+
* Key features include:
|
|
13
|
+
* - Cross-server resource listing with server categorization
|
|
14
|
+
* - Resource content reading with proper URI handling
|
|
15
|
+
* - System resource integration alongside server resources
|
|
16
|
+
* - Error handling for disconnected or unavailable servers
|
|
17
|
+
*
|
|
18
|
+
* @param fastify - The Fastify instance to register routes on
|
|
19
|
+
* @returns Promise that resolves when all routes are registered
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Register resource routes
|
|
24
|
+
* await webResourceRoutes(app);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function webResourceRoutes(fastify: FastifyInstance): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM1C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBA2E/D"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { mcpConnectionManager } from '../../services/mcp-connection-manager.js';
|
|
2
|
+
import { hubToolsService } from '../../services/hub-tools.service.js';
|
|
3
|
+
import { MCP_HUB_LITE_SERVER } from '../../models/system-tools.constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* MCP Resources API Routes
|
|
6
|
+
*
|
|
7
|
+
* Provides endpoints for discovering and accessing resources from connected MCP (Model Context Protocol) servers.
|
|
8
|
+
* This module enables clients to list available resources across all servers and read specific resource content.
|
|
9
|
+
*
|
|
10
|
+
* The resources API handles both system-level resources (provided by MCP Hub Lite itself) and server-specific
|
|
11
|
+
* resources from connected MCP servers. It provides a unified interface for resource discovery and access,
|
|
12
|
+
* abstracting away the underlying server implementation details.
|
|
13
|
+
*
|
|
14
|
+
* Key features include:
|
|
15
|
+
* - Cross-server resource listing with server categorization
|
|
16
|
+
* - Resource content reading with proper URI handling
|
|
17
|
+
* - System resource integration alongside server resources
|
|
18
|
+
* - Error handling for disconnected or unavailable servers
|
|
19
|
+
*
|
|
20
|
+
* @param fastify - The Fastify instance to register routes on
|
|
21
|
+
* @returns Promise that resolves when all routes are registered
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // Register resource routes
|
|
26
|
+
* await webResourceRoutes(app);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export async function webResourceRoutes(fastify) {
|
|
30
|
+
// GET /web/servers/:name/resources/read
|
|
31
|
+
fastify.get('/web/servers/:name/resources/read', async (request, reply) => {
|
|
32
|
+
try {
|
|
33
|
+
const { name } = request.params;
|
|
34
|
+
const { uri } = request.query;
|
|
35
|
+
if (!uri) {
|
|
36
|
+
return reply.code(400).send({ error: 'URI is required' });
|
|
37
|
+
}
|
|
38
|
+
// Handle system resources (mcp-hub-lite)
|
|
39
|
+
if (name === MCP_HUB_LITE_SERVER) {
|
|
40
|
+
const content = await hubToolsService.readResource(uri);
|
|
41
|
+
// Wrap content in MCP resource read format
|
|
42
|
+
return {
|
|
43
|
+
contents: [
|
|
44
|
+
{
|
|
45
|
+
uri,
|
|
46
|
+
mimeType: 'application/json',
|
|
47
|
+
text: JSON.stringify(content, null, 2)
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
// Find server ID
|
|
53
|
+
const serverId = mcpConnectionManager.getServerIdByName(name);
|
|
54
|
+
if (!serverId) {
|
|
55
|
+
// Try using name directly as ID (unlikely but for robustness)
|
|
56
|
+
if (mcpConnectionManager.getStatus(name)) {
|
|
57
|
+
const result = await mcpConnectionManager.readResource(name, uri);
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
return reply.code(404).send({ error: 'Server not connected or not found' });
|
|
61
|
+
}
|
|
62
|
+
const result = await mcpConnectionManager.readResource(serverId, uri);
|
|
63
|
+
return result;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const errorObj = error;
|
|
67
|
+
return reply.code(500).send({ error: errorObj.message || 'Failed to read resource' });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
fastify.get('/web/resources', async (_request, reply) => {
|
|
71
|
+
try {
|
|
72
|
+
const allResources = mcpConnectionManager.getAllResources();
|
|
73
|
+
// Add Hub System resources
|
|
74
|
+
const systemResources = await hubToolsService.listResources();
|
|
75
|
+
const resources = {};
|
|
76
|
+
// 1. Add Hub System resources first if they exist
|
|
77
|
+
if (systemResources && systemResources.length > 0) {
|
|
78
|
+
resources[MCP_HUB_LITE_SERVER] = systemResources;
|
|
79
|
+
}
|
|
80
|
+
// 2. Add other server resources, filtering out empty ones
|
|
81
|
+
for (const [serverName, serverResources] of Object.entries(allResources)) {
|
|
82
|
+
if (serverResources && serverResources.length > 0) {
|
|
83
|
+
resources[serverName] = serverResources;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { resources };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
const errorObj = error;
|
|
90
|
+
return reply.code(500).send({ error: errorObj.message || 'Failed to fetch resources' });
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* Tool Search API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides powerful fuzzy search capabilities for discovering tools across all connected MCP (Model Context Protocol) servers.
|
|
6
|
+
* This module enables users to quickly find relevant tools based on name, description, or other metadata using
|
|
7
|
+
* advanced search algorithms with pagination support.
|
|
8
|
+
*
|
|
9
|
+
* The search API supports flexible query parameters including result limits, offsets for pagination,
|
|
10
|
+
* and various search modes. It integrates with the core search service to provide fast and accurate
|
|
11
|
+
* tool discovery across the entire MCP ecosystem.
|
|
12
|
+
*
|
|
13
|
+
* Additionally includes a dedicated health check endpoint for monitoring the search service availability
|
|
14
|
+
* in production environments.
|
|
15
|
+
*
|
|
16
|
+
* @param fastify - The Fastify instance to register routes on
|
|
17
|
+
* @returns Promise that resolves when all routes are registered
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Register search routes
|
|
22
|
+
* await webSearchRoutes(app);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function webSearchRoutes(fastify: FastifyInstance): Promise<void>;
|
|
26
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI1C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA+C7D"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { searchCoreService } from '../../services/search/search-core.service.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tool Search API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides powerful fuzzy search capabilities for discovering tools across all connected MCP (Model Context Protocol) servers.
|
|
6
|
+
* This module enables users to quickly find relevant tools based on name, description, or other metadata using
|
|
7
|
+
* advanced search algorithms with pagination support.
|
|
8
|
+
*
|
|
9
|
+
* The search API supports flexible query parameters including result limits, offsets for pagination,
|
|
10
|
+
* and various search modes. It integrates with the core search service to provide fast and accurate
|
|
11
|
+
* tool discovery across the entire MCP ecosystem.
|
|
12
|
+
*
|
|
13
|
+
* Additionally includes a dedicated health check endpoint for monitoring the search service availability
|
|
14
|
+
* in production environments.
|
|
15
|
+
*
|
|
16
|
+
* @param fastify - The Fastify instance to register routes on
|
|
17
|
+
* @returns Promise that resolves when all routes are registered
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Register search routes
|
|
22
|
+
* await webSearchRoutes(app);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export async function webSearchRoutes(fastify) {
|
|
26
|
+
// GET /web/search - Search for tools with query and optional filters
|
|
27
|
+
fastify.get('/web/search', async (request) => {
|
|
28
|
+
const { q, limit, offset } = request.query;
|
|
29
|
+
// Parse search options
|
|
30
|
+
const options = {
|
|
31
|
+
mode: 'fuzzy',
|
|
32
|
+
limit: limit ? Number(limit) : 50,
|
|
33
|
+
offset: offset ? Number(offset) : 0,
|
|
34
|
+
filters: {}
|
|
35
|
+
};
|
|
36
|
+
// Perform search
|
|
37
|
+
const results = await searchCoreService.search(q || '', options);
|
|
38
|
+
return {
|
|
39
|
+
results,
|
|
40
|
+
pagination: {
|
|
41
|
+
total: results.length,
|
|
42
|
+
limit: options.limit,
|
|
43
|
+
offset: options.offset,
|
|
44
|
+
hasMore: results.length >= options.limit
|
|
45
|
+
},
|
|
46
|
+
metadata: {
|
|
47
|
+
query: q,
|
|
48
|
+
filters: options.filters,
|
|
49
|
+
processingTime: 0, // To be implemented: measure processing time
|
|
50
|
+
cached: false // To be implemented: check cache status
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
// GET /web/search/health - Search service health check (for monitoring)
|
|
55
|
+
fastify.get('/web/search/health', async () => {
|
|
56
|
+
return {
|
|
57
|
+
status: 'healthy',
|
|
58
|
+
timestamp: new Date().toISOString(),
|
|
59
|
+
service: 'search-core-service'
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* MCP Server Management API Routes
|
|
4
|
+
*
|
|
5
|
+
* Provides comprehensive CRUD (Create, Read, Update, Delete) operations for managing MCP (Model Context Protocol) servers
|
|
6
|
+
* and their runtime instances within the MCP Hub Lite system. This module serves as the primary interface for
|
|
7
|
+
* server configuration management, process control, and bulk operations.
|
|
8
|
+
*
|
|
9
|
+
* The API supports both static server configuration (defining how servers should be configured) and dynamic
|
|
10
|
+
* instance management (controlling actual running server processes). It includes sophisticated validation
|
|
11
|
+
* using Zod schemas to ensure configuration integrity and provides detailed error handling with appropriate
|
|
12
|
+
* HTTP status codes.
|
|
13
|
+
*
|
|
14
|
+
* Key features include:
|
|
15
|
+
* - Full CRUD operations for server configurations
|
|
16
|
+
* - Instance-level management for running server processes
|
|
17
|
+
* - Batch import/export capabilities for server configurations
|
|
18
|
+
* - Automatic server startup based on enabled status
|
|
19
|
+
* - Comprehensive validation using Zod schemas
|
|
20
|
+
* - Detailed error handling with appropriate HTTP status codes
|
|
21
|
+
* - Support for multiple server types (stdio, sse, streamable-http)
|
|
22
|
+
*
|
|
23
|
+
* @param fastify - The Fastify instance to register routes on
|
|
24
|
+
* @returns Promise that resolves when all routes are registered
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // Register server management routes
|
|
29
|
+
* await webServerRoutes(app);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function webServerRoutes(fastify: FastifyInstance): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=servers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"servers.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/servers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAY1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA4O7D"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { hubManager } from '../../services/hub-manager.service.js';
|
|
3
|
+
import { ServerConfigSchema, ServerInstanceConfigSchema } from '../../config/config.schema.js';
|
|
4
|
+
import { logger } from '../../utils/logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* MCP Server Management API Routes
|
|
7
|
+
*
|
|
8
|
+
* Provides comprehensive CRUD (Create, Read, Update, Delete) operations for managing MCP (Model Context Protocol) servers
|
|
9
|
+
* and their runtime instances within the MCP Hub Lite system. This module serves as the primary interface for
|
|
10
|
+
* server configuration management, process control, and bulk operations.
|
|
11
|
+
*
|
|
12
|
+
* The API supports both static server configuration (defining how servers should be configured) and dynamic
|
|
13
|
+
* instance management (controlling actual running server processes). It includes sophisticated validation
|
|
14
|
+
* using Zod schemas to ensure configuration integrity and provides detailed error handling with appropriate
|
|
15
|
+
* HTTP status codes.
|
|
16
|
+
*
|
|
17
|
+
* Key features include:
|
|
18
|
+
* - Full CRUD operations for server configurations
|
|
19
|
+
* - Instance-level management for running server processes
|
|
20
|
+
* - Batch import/export capabilities for server configurations
|
|
21
|
+
* - Automatic server startup based on enabled status
|
|
22
|
+
* - Comprehensive validation using Zod schemas
|
|
23
|
+
* - Detailed error handling with appropriate HTTP status codes
|
|
24
|
+
* - Support for multiple server types (stdio, sse, streamable-http)
|
|
25
|
+
*
|
|
26
|
+
* @param fastify - The Fastify instance to register routes on
|
|
27
|
+
* @returns Promise that resolves when all routes are registered
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Register server management routes
|
|
32
|
+
* await webServerRoutes(app);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export async function webServerRoutes(fastify) {
|
|
36
|
+
// GET /web/servers
|
|
37
|
+
fastify.get('/web/servers', async () => {
|
|
38
|
+
return hubManager.getAllServers();
|
|
39
|
+
});
|
|
40
|
+
// GET /web/servers/name/:name
|
|
41
|
+
fastify.get('/web/servers/name/:name', async (request, reply) => {
|
|
42
|
+
const server = hubManager.getServerByName(request.params.name);
|
|
43
|
+
if (!server) {
|
|
44
|
+
return reply.code(404).send({ error: 'Server not found' });
|
|
45
|
+
}
|
|
46
|
+
return server;
|
|
47
|
+
});
|
|
48
|
+
// GET /web/server-instances
|
|
49
|
+
fastify.get('/web/server-instances', async () => {
|
|
50
|
+
return hubManager.getServerInstances();
|
|
51
|
+
});
|
|
52
|
+
// GET /web/server-instances/:name
|
|
53
|
+
fastify.get('/web/server-instances/:name', async (request, reply) => {
|
|
54
|
+
const instances = hubManager.getServerInstanceByName(request.params.name);
|
|
55
|
+
if (instances.length === 0) {
|
|
56
|
+
return reply.code(404).send({ error: 'Server instances not found' });
|
|
57
|
+
}
|
|
58
|
+
return instances;
|
|
59
|
+
});
|
|
60
|
+
// POST /web/servers
|
|
61
|
+
fastify.post('/web/servers', async (request, reply) => {
|
|
62
|
+
try {
|
|
63
|
+
// Accept server name and configuration as request body
|
|
64
|
+
const postSchema = z.object({
|
|
65
|
+
name: z.string().min(1).max(100),
|
|
66
|
+
config: ServerConfigSchema.partial()
|
|
67
|
+
});
|
|
68
|
+
const body = postSchema.parse(request.body);
|
|
69
|
+
const newServer = await hubManager.addServer(body.name, body.config);
|
|
70
|
+
// If auto-start is enabled, add server instance (addServerInstance will automatically check and handle startup)
|
|
71
|
+
if (newServer.enabled !== false && newServer.enabled !== undefined) {
|
|
72
|
+
try {
|
|
73
|
+
await hubManager.addServerInstance(body.name, {});
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
// Auto-start failure does not affect server addition operation
|
|
77
|
+
logger.warn(`Failed to auto-start server instance for ${body.name}:`, error);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return reply.code(201).send({ name: body.name, config: newServer });
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof z.ZodError) {
|
|
84
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
85
|
+
}
|
|
86
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
// POST /web/server-instances/:name
|
|
90
|
+
fastify.post('/web/server-instances/:name', async (request, reply) => {
|
|
91
|
+
try {
|
|
92
|
+
const instanceSchema = ServerInstanceConfigSchema.partial();
|
|
93
|
+
const body = instanceSchema.parse(request.body);
|
|
94
|
+
// Check if server exists
|
|
95
|
+
const server = hubManager.getServerByName(request.params.name);
|
|
96
|
+
if (!server) {
|
|
97
|
+
return reply.code(404).send({ error: 'Server not found' });
|
|
98
|
+
}
|
|
99
|
+
const newInstance = await hubManager.addServerInstance(request.params.name, body);
|
|
100
|
+
return reply.code(201).send(newInstance);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error instanceof z.ZodError) {
|
|
104
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
105
|
+
}
|
|
106
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
// PUT /web/servers/:name
|
|
110
|
+
fastify.put('/web/servers/:name', async (request, reply) => {
|
|
111
|
+
try {
|
|
112
|
+
const partialSchema = ServerConfigSchema.partial();
|
|
113
|
+
const body = partialSchema.parse(request.body);
|
|
114
|
+
const updatedServer = await hubManager.updateServer(request.params.name, body);
|
|
115
|
+
if (!updatedServer) {
|
|
116
|
+
return reply.code(404).send({ error: 'Server not found' });
|
|
117
|
+
}
|
|
118
|
+
return { name: request.params.name, config: updatedServer };
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
if (error instanceof z.ZodError) {
|
|
122
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
123
|
+
}
|
|
124
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
// PUT /web/server-instances/:name/:index
|
|
128
|
+
fastify.put('/web/server-instances/:name/:index', async (request, reply) => {
|
|
129
|
+
try {
|
|
130
|
+
const partialSchema = ServerInstanceConfigSchema.partial();
|
|
131
|
+
const body = partialSchema.parse(request.body);
|
|
132
|
+
await hubManager.updateServerInstance(request.params.name, request.params.index, body);
|
|
133
|
+
return reply.code(200).send({ message: 'Server instance updated' });
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error instanceof z.ZodError) {
|
|
137
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
138
|
+
}
|
|
139
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
// DELETE /web/servers/:name
|
|
143
|
+
fastify.delete('/web/servers/:name', async (request, reply) => {
|
|
144
|
+
const success = await hubManager.removeServer(request.params.name);
|
|
145
|
+
if (!success) {
|
|
146
|
+
return reply.code(404).send({ error: 'Server not found' });
|
|
147
|
+
}
|
|
148
|
+
return reply.code(204).send();
|
|
149
|
+
});
|
|
150
|
+
// DELETE /web/server-instances/:name/:index
|
|
151
|
+
fastify.delete('/web/server-instances/:name/:index', async (request, reply) => {
|
|
152
|
+
try {
|
|
153
|
+
await hubManager.removeServerInstance(request.params.name, request.params.index);
|
|
154
|
+
return reply.code(204).send();
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (error instanceof z.ZodError) {
|
|
158
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
159
|
+
}
|
|
160
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
// POST /web/servers/batch
|
|
164
|
+
fastify.post('/web/servers/batch', async (request, reply) => {
|
|
165
|
+
try {
|
|
166
|
+
// First parse the basic structure without strict validation of server configuration to allow preprocessing
|
|
167
|
+
const batchSchema = z.object({
|
|
168
|
+
mcpServers: z.array(z.object({
|
|
169
|
+
name: z.string().min(1).max(100),
|
|
170
|
+
config: ServerConfigSchema.partial()
|
|
171
|
+
}))
|
|
172
|
+
});
|
|
173
|
+
const body = batchSchema.parse(request.body);
|
|
174
|
+
const results = {
|
|
175
|
+
success: [],
|
|
176
|
+
errors: []
|
|
177
|
+
};
|
|
178
|
+
const existingServers = hubManager.getAllServers();
|
|
179
|
+
const existingNames = new Set(existingServers.map((server) => server.name.toLowerCase()));
|
|
180
|
+
const serversToAdd = [];
|
|
181
|
+
const serversToConnect = [];
|
|
182
|
+
// Phase 1: Collect and validate all servers
|
|
183
|
+
for (const { name, config: serverConfig } of body.mcpServers) {
|
|
184
|
+
try {
|
|
185
|
+
const processedName = name.toLowerCase();
|
|
186
|
+
// Check for duplicate names
|
|
187
|
+
if (existingNames.has(processedName)) {
|
|
188
|
+
results.errors.push({
|
|
189
|
+
name: name,
|
|
190
|
+
error: 'Server with this name already exists'
|
|
191
|
+
});
|
|
192
|
+
continue;
|
|
193
|
+
}
|
|
194
|
+
// Validate server configuration using Zod (now supports "http" type)
|
|
195
|
+
const validatedConfig = ServerConfigSchema.partial().parse(serverConfig);
|
|
196
|
+
serversToAdd.push({ name: processedName, config: validatedConfig });
|
|
197
|
+
if (validatedConfig.enabled !== false && validatedConfig.enabled !== undefined) {
|
|
198
|
+
serversToConnect.push(processedName);
|
|
199
|
+
}
|
|
200
|
+
results.success.push({ name: processedName, config: validatedConfig });
|
|
201
|
+
existingNames.add(processedName); // Prevent duplicates within the same batch
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
results.errors.push({
|
|
205
|
+
name: name,
|
|
206
|
+
error: error instanceof Error ? error.message : 'Unknown error'
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Phase 2: Batch save configuration (save only once)
|
|
211
|
+
if (serversToAdd.length > 0) {
|
|
212
|
+
await hubManager.addServersWithoutAutoStart(serversToAdd);
|
|
213
|
+
}
|
|
214
|
+
// Phase 3: Batch create server instances (without auto-connect)
|
|
215
|
+
if (serversToAdd.length > 0) {
|
|
216
|
+
await hubManager.addServerInstancesWithoutConnect(serversToAdd.map((s) => s.name));
|
|
217
|
+
}
|
|
218
|
+
// Phase 4: Concurrently start all server instances that need to be connected
|
|
219
|
+
if (serversToConnect.length > 0) {
|
|
220
|
+
await hubManager.connectServerInstances(serversToConnect);
|
|
221
|
+
}
|
|
222
|
+
return reply.code(200).send({
|
|
223
|
+
code: 200,
|
|
224
|
+
message: 'Servers imported successfully',
|
|
225
|
+
data: results
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
if (error instanceof z.ZodError) {
|
|
230
|
+
return reply.code(400).send({ error: 'Validation failed', details: error.issues });
|
|
231
|
+
}
|
|
232
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|