@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
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 2026-03-04
|
|
4
|
+
|
|
5
|
+
- **CLI Fix**: Ensure CLI commands exit properly after execution
|
|
6
|
+
- **CLI/Logger Fix**: Fix server startup and log ANSI color issues
|
|
7
|
+
- **CLI Enhancement**: Enhance status command with formatted output
|
|
8
|
+
- **UI Enhancement**: Improve settings page UI and dev mode handling
|
|
9
|
+
- **Logging Refactor**: Improve MCP gateway logging
|
|
10
|
+
- **Logging Refactor**: Unify dev mode detection, remove devLogFile config
|
|
11
|
+
- **Logging Enhancement**: Enhance stdio transport with log store integration
|
|
12
|
+
|
|
13
|
+
## 2026-03-03
|
|
14
|
+
|
|
15
|
+
- **Test Update**: Update tests for new log config system
|
|
16
|
+
- **Logging Fix**: Use getMcpCommDebugSetting() in connection-manager
|
|
17
|
+
- **Logging Refactor**: Unify logging configuration system
|
|
18
|
+
- **Config Enhancement**: Extend config schema with new log options
|
|
19
|
+
- **UI Enhancement**: Add new logging config options in settings
|
|
20
|
+
- **Logging Refactor**: Extract and unify MCP notification message handling
|
|
21
|
+
- **Logging Fix**: Improve stderr log level detection logic
|
|
22
|
+
- **Logging Refactor**: Use MCP_COMM_DEBUG environment variable for communication logs
|
|
23
|
+
- **Gateway Refactor**: Remove SSE connection timestamp tracking
|
|
24
|
+
- **Session Enhancement**: Count expired sessions and use configured flush interval
|
|
25
|
+
- **Logging Enhancement**: Filter binary image data in MCP response logs
|
|
26
|
+
- **UI Styling**: Remove trailing semicolon in SettingsView style
|
|
27
|
+
- **Refactor**: Improve type handling and SSE logging
|
|
28
|
+
- **Documentation**: Update project documentation
|
|
29
|
+
- **UI Refactor**: Implement Element Plus auto-import
|
|
30
|
+
- **UI Fix**: Fix el-input-number width issue in SettingsView
|
|
31
|
+
|
|
32
|
+
## 2026-03-02
|
|
33
|
+
|
|
34
|
+
- **Session Enhancement**: Skip expired sessions during recovery
|
|
35
|
+
- **Telemetry Removal**: Remove OpenTelemetry and telemetry features
|
|
36
|
+
- **Styling**: Format codebase with prettier
|
|
37
|
+
- **SSE Enhancement**: Add connection timeout config and reconnection detection
|
|
38
|
+
- **Logging Enhancement**: Enhance JSON pretty-printing with newline handling
|
|
39
|
+
- **Logging Styling**: Unify LOG_MODULES format as PascalCase
|
|
40
|
+
- **Session Refactor**: Simplify session matching logic
|
|
41
|
+
|
|
42
|
+
## 2026-03-01
|
|
43
|
+
|
|
44
|
+
- **Logging Refactor**: Change log file naming to timestamp-based format
|
|
45
|
+
- **Refactor**: Add LOG_MODULES context and update hub-manager service tests
|
|
46
|
+
- **Session Enhancement**: Enhance sessionId extraction with header support and improved fallback logic
|
|
47
|
+
- **Session Refactor**: Extract session manager to modular structure
|
|
48
|
+
- **Connection Refactor**: Extract connection manager to modular structure
|
|
49
|
+
|
|
50
|
+
## 2026-02-28
|
|
51
|
+
|
|
52
|
+
- **Documentation**: Update CLAUDE.md with project initialization summary
|
|
53
|
+
- **Logging Refactor**: Rename subModule to module, add LOG_MODULES constants
|
|
54
|
+
- **Hub-Tools Refactor**: Extract hub-tools.service.ts to modular structure
|
|
55
|
+
- **Gateway Refactor**: Extract gateway.service.ts to modular structure
|
|
56
|
+
- **API/MCP Refactor**: Extract gateway module to separate files
|
|
57
|
+
- **Config Refactor**: Split config-manager to modular structure
|
|
58
|
+
- **Logging Refactor**: Add missing subModule context to log statements
|
|
59
|
+
- **Logging Refactor**: Split monolithic logger to modular structure
|
|
60
|
+
- **Gateway Fix**: Add missing uri field in ReadMcpResourceTool response
|
|
61
|
+
|
|
62
|
+
## 2026-02-27
|
|
63
|
+
|
|
64
|
+
- **Gateway Refactor**: Enhance SSE stream management and response logging
|
|
65
|
+
- **Refactor**: Remove duplicate debug logging in gateway
|
|
66
|
+
- **Refactor**: Resolve config-logger circular dependency with config getter pattern
|
|
67
|
+
- **Logging Fix**: Use stringifyForLogging for gateway header, improve rawHeaders readability
|
|
68
|
+
|
|
69
|
+
## 2026-02-26
|
|
70
|
+
|
|
71
|
+
- **Refactor**: Fix ESM imports and optimize CLI startup performance
|
|
72
|
+
- **Frontend Enhancement**: Add type safety for JsonSchema in frontend ToolsView
|
|
73
|
+
- **Documentation**: Update docs for config path and logging
|
|
74
|
+
- **Enhancement**: Enhance dev server startup logging
|
|
75
|
+
- **Refactor**: Optimize logging verbosity
|
|
76
|
+
- **Enhancement**: Add rawHeaders operation for session header propagation
|
|
77
|
+
- **Enhancement**: Enhance session persistence and cleanup logic
|
|
78
|
+
- **Enhancement**: Introduce unified system tools processor and prefix tool name support
|
|
79
|
+
- **Enhancement**: Enhance session management with consistency check and request header handling
|
|
80
|
+
- **Refactor**: Optimize logger options extraction
|
|
81
|
+
- **Enhancement**: Improve tool call dialog and system tools display
|
|
82
|
+
|
|
83
|
+
## 2026-02-25
|
|
84
|
+
|
|
85
|
+
- **Enhancement**: Enhance documentation and system configuration
|
|
86
|
+
- **MCP Connection Manager Refactor**: Optimize getTools/getResources logging with cache hit indicator and resource cache improvements
|
|
87
|
+
- **Refactor**: Extract common stderr handling logic to reduce code duplication
|
|
88
|
+
- **Enhancement**: Add server description field and resource detail improvements
|
|
89
|
+
|
|
90
|
+
## 2026-02-15
|
|
91
|
+
|
|
92
|
+
- **Session Persistence Feature**: Implement session state persistence to disk with dirty tracking and batch flushing
|
|
93
|
+
- **Graceful Shutdown Handling**: Add graceful shutdown handler for session state flushing
|
|
94
|
+
- **Session Management API**: Add session management API endpoints (list, get, delete)
|
|
95
|
+
- **Session Recovery Logic**: Enhance session recovery logic with clientName matching
|
|
96
|
+
- **Settings Page Enhancement**: Add time unit selector (seconds/minutes/hours/days)
|
|
97
|
+
- **Logging System Improvements**: Support subModule context and tools/list response simplification
|
|
98
|
+
- **Log Directory Optimization**: Move log directory to ~/.mcp-hub-lite/logs
|
|
99
|
+
- **Full Check Command**: Add `npm run full:check` command for simplified complete project checking
|
|
100
|
+
- **Unit Test Coverage**: Add comprehensive unit tests for session manager
|
|
101
|
+
|
|
102
|
+
## 2026-02-14
|
|
103
|
+
|
|
104
|
+
- **Session Persistence Implementation**: Implement session persistence and configuration management
|
|
105
|
+
- **CLI Unit Tests**: Add comprehensive unit tests for CLI commands
|
|
106
|
+
- **Session Timeout Configuration**: Add configurable session timeout for MCP gateway
|
|
107
|
+
- **Type Safety Improvements**: Comprehensive eslint no-explicit-any fixes and type safety enhancements
|
|
108
|
+
|
|
109
|
+
## 2026-02-13
|
|
110
|
+
|
|
111
|
+
- **CLI Command Tests**: Add comprehensive unit tests for CLI commands
|
|
112
|
+
- **Session Timeout Configuration**: Add configurable session timeout for MCP gateway
|
|
113
|
+
- **Type Safety Fixes**: Comprehensive eslint no-explicit-any fixes and type safety improvements
|
|
114
|
+
|
|
115
|
+
## 2026-02-11
|
|
116
|
+
|
|
117
|
+
- **Frontend i18n Support**: Update server status tags and tool call dialog components with i18n support
|
|
118
|
+
- **ESLint Configuration Fix**: Fix lint:log command and ESLint configuration
|
|
119
|
+
- **Frontend Resource View**: Improve resource view with table layout
|
|
120
|
+
- **Type System Refactor**: Establish shared type system for frontend-backend integration
|
|
121
|
+
- **WebSocket Types**: Establish client and WebSocket type system
|
|
122
|
+
- **Config Manager Optimization**: Prevent test pollution with lazy initialization for ConfigManager
|
|
123
|
+
- **System Tools Optimization**: Enhance system tools type safety and naming
|
|
124
|
+
- **MCP Resource Support**: Add MCP resource support with UI and API endpoints
|
|
125
|
+
- **Client Tracking Enhancement**: Enhance client tracking and connection management
|
|
126
|
+
- **Tool Call Dialog**: Improve tool call dialog with i18n and response display
|
|
127
|
+
- **Search Functionality Optimization**: Implement comprehensive search functionality across MCP servers
|
|
128
|
+
|
|
129
|
+
## 2026-02-10
|
|
130
|
+
|
|
131
|
+
- **Fix config.test.ts Intermittent Test Failure**: Resolve "should save config to file" intermittent test failure
|
|
132
|
+
- **Root Cause Analysis**: ConfigManager singleton pattern caused test state pollution and temporary file path conflicts
|
|
133
|
+
- **Fix Solution**:
|
|
134
|
+
- Modify getConfigManager() to create new instances in test environment for isolation
|
|
135
|
+
- Generate unique temporary file paths for each test with timestamp and random suffix
|
|
136
|
+
- Enhance file cleanup logic with retry mechanism to handle Windows file system permissions
|
|
137
|
+
- **Validation Results**: 100 sequential tests, 50 parallel tests (2 concurrency), 200 parallel tests (5 concurrency) all passed
|
|
138
|
+
- **Documentation**: Add A3 problem analysis report and detailed technical fix report
|
|
139
|
+
|
|
140
|
+
## 2026-01-31
|
|
141
|
+
|
|
142
|
+
- **Frontend UI Enhancement**: Enhance server card and interaction
|
|
143
|
+
- **Configuration Backup Optimization**: Optimize backup system with caching and compilation phase handling
|
|
144
|
+
- **Tool Call Dialog**: Enhance tool call dialog with i18n and response display
|
|
145
|
+
- **System Tools Simplification**: Simplify system tools API and improve type safety
|
|
146
|
+
- **MCP Connection Optimization**: Optimize connection management logic
|
|
147
|
+
- **Path Alias System**: Enhance path alias system with module-specific aliases
|
|
148
|
+
- **Server Status Tags**: Add server status tags component with i18n support
|
|
149
|
+
- **Search Functionality Optimization**: Implement comprehensive search functionality across MCP servers
|
|
150
|
+
|
|
151
|
+
## 2026-01-30
|
|
152
|
+
|
|
153
|
+
- **Config Manager Optimization**: Optimize backup logic and implement lazy initialization
|
|
154
|
+
- **Test Coverage Optimization**: Add temporary directory to test coverage paths
|
|
155
|
+
- **Logging System Refactor**: Extract common log method to eliminate code duplication
|
|
156
|
+
- **Test Fix**: Fix missing logger.setLevel method and system.logging property mock configuration in runner.test.ts
|
|
157
|
+
- **PID Formatting Optimization**: Increase PID formatting width to 8 characters
|
|
158
|
+
- **TypeScript Fix**: Resolve TypeScript type errors in unit tests
|
|
159
|
+
- **Server Optimization**: Optimize batch import with single save and concurrent startup
|
|
160
|
+
- **Configuration Optimization**: Skip backup creation for default configuration
|
|
161
|
+
|
|
162
|
+
## 2026-01-27
|
|
163
|
+
|
|
164
|
+
- **Server Fix**: Fix auto-start not working and sidebar display issues
|
|
165
|
+
- **Temporary File Cleanup**: Remove temporary files
|
|
166
|
+
- **Frontend Layout Refactor**: Update App.vue with new layout structure
|
|
167
|
+
- **Dependency Update**: Update package dependencies and Vite configuration
|
|
168
|
+
- **Test Updates**: Update tests for new features and services
|
|
169
|
+
- **Server Runtime Optimization**: Optimize server runtime and CLI commands
|
|
170
|
+
- **Service Enhancement**: Add Hub Manager and Search Core services
|
|
171
|
+
- **API Enhancement**: Enhance MCP gateway and web API endpoints
|
|
172
|
+
- **Frontend Features**: Add tool calls store and WebSocket utilities
|
|
173
|
+
- **Multi-language Support**: Add multi-language support and update UI components
|
|
174
|
+
|
|
175
|
+
## 2026-01-26
|
|
176
|
+
|
|
177
|
+
- **WebSocket Functionality**: Implement real-time log streaming via WebSocket
|
|
178
|
+
- **Client Management**: Add client management functionality
|
|
179
|
+
- **Branch Merge**: Merge branch 'feat/client-management' into 003-DEV
|
|
180
|
+
|
|
181
|
+
## 2026-01-21
|
|
182
|
+
|
|
183
|
+
- **Logging Optimization**: Optimize logging for tools/list responses
|
|
184
|
+
- **Client Management**: Add client management functionality
|
|
185
|
+
|
|
186
|
+
## 2026-02-01
|
|
187
|
+
|
|
188
|
+
- **Project Summary Update**: Execute "root-level concise + module-level detailed" hybrid strategy update
|
|
189
|
+
- **File Statistics**: Identify complete project structure and modules
|
|
190
|
+
- **Module Coverage**: All major modules have been identified and CLAUDE.md documents created/updated
|
|
191
|
+
- **Coverage Rate**: 100% module coverage, complete file scanning finished
|
|
192
|
+
- **Enhance Module Structure Diagram**: Update Mermaid structure diagram, ensure all module links are correct
|
|
193
|
+
- **Update Module Index**: Include all submodules
|
|
194
|
+
|
|
195
|
+
### 2026-01-29
|
|
196
|
+
|
|
197
|
+
- **Project Index Update**: Execute complete scan, update project documentation index
|
|
198
|
+
- **File Statistics**: Identify 94 source code files (47 backend + 27 frontend + 20 tests)
|
|
199
|
+
- **Module Coverage**: All 16 modules have been identified and CLAUDE.md documents created
|
|
200
|
+
- **Coverage Rate**: 100% module coverage, 100% file scanning completed
|
|
201
|
+
- **Enhance Module Structure Diagram**: Add missing module links (including CONTRACT module)
|
|
202
|
+
- **Update Module Index**: Include all submodules
|
|
203
|
+
|
|
204
|
+
### 2026-01-28
|
|
205
|
+
|
|
206
|
+
- Update summary
|
|
207
|
+
- Improve module structure diagram, add missing module links (including CONTRACT module)
|
|
208
|
+
- Create detailed CLAUDE.md documents for src/server and src/pid modules
|
|
209
|
+
- Create detailed CLAUDE.md documents for frontend/router and frontend/i18n modules
|
|
210
|
+
- Create detailed CLAUDE.md documents for tests/contract module
|
|
211
|
+
- Update module index, include all submodules
|
|
212
|
+
- **Add Frontend Test Coverage**: Add unit tests for Dashboard component, ToolCard component, and Server Store
|
|
213
|
+
- **Update Test Configuration**: Configure Vue Test Utils and JSDOM environment for frontend component testing
|
|
214
|
+
- **Update Project Documentation**: Reflect improvements in frontend test status
|
|
215
|
+
- **Add Server Runtime Tests**: Add complete unit test coverage for src/server/runner.ts
|
|
216
|
+
- **Update Test Documentation**: Add server module test documentation in tests/unit/CLAUDE.md
|
|
217
|
+
|
|
218
|
+
### 2026-01-20
|
|
219
|
+
|
|
220
|
+
- Optimize HubTools call logic, replace serverName parameter with serverId in all methods, directly use server unique identifier for operations, avoiding the overhead of finding servers by name
|
|
221
|
+
- Add HubToolsService documentation
|
|
222
|
+
- Update project architecture documentation
|
|
223
|
+
|
|
224
|
+
### 2026-01-19
|
|
225
|
+
|
|
226
|
+
- Initialize project AI context documentation
|
|
227
|
+
- Generate module structure diagram and index
|
|
228
|
+
- Integrate architecture specifications and development processes
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 MCP Hub Lite
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
# MCP-HUB-LITE
|
|
2
|
+
|
|
3
|
+
[![License][license-src]][license-href]
|
|
4
|
+
[![Node.js][node-src]][node-href]
|
|
5
|
+
[![TypeScript][typescript-src]][typescript-href]
|
|
6
|
+
[![Vitest][vitest-src]][vitest-href]
|
|
7
|
+
[![Fastify][fastify-src]][fastify-href]
|
|
8
|
+
[![Vue.js][vue-src]][vue-href]
|
|
9
|
+
[![Claude Code][claude-code-src]][claude-code-href]
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
[中文文档](./README_zh.md)
|
|
14
|
+
|
|
15
|
+
A lightweight MCP management platform designed for independent developers, providing MCP server gateway, grouping, fuzzy search, and MCP HttpStream protocol interface.
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
MCP-HUB-LITE is an MCP server gateway designed specifically for independent developers. It acts as a proxy between your frontend and multiple backend MCP servers, providing a unified access interface with support for the MCP JSON-RPC 2.0 protocol.
|
|
20
|
+
|
|
21
|
+
### Dashboard
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
### Core Features
|
|
26
|
+
|
|
27
|
+
- **MCP Gateway Service**: Unified proxy interface for multiple backend MCP servers
|
|
28
|
+
- **Server Management**: Manage multiple MCP servers through a web interface
|
|
29
|
+
- **Tool Search**: Fuzzy search and tool discovery across all servers
|
|
30
|
+
- **Process Management**: Launch and manage MCP server processes via npx/uvx
|
|
31
|
+
- **Session Management**: Session state management with persistence and recovery
|
|
32
|
+
- **Tag System**: Organize multiple MCP servers by environment, category, function, etc.
|
|
33
|
+
- **Fault Tolerance**: System continues to operate when individual servers fail
|
|
34
|
+
- **Bilingual Interface**: Support for Chinese/English interface switching
|
|
35
|
+
- **Configuration Management**: Support for hot-reloading and maintenance of `.mcp-hub.json`
|
|
36
|
+
|
|
37
|
+
## Tech Stack
|
|
38
|
+
|
|
39
|
+
- **TypeScript 5.x** + Node.js 22.x
|
|
40
|
+
- **Fastify**: High-performance HTTP server
|
|
41
|
+
- **MCP SDK**: Official MCP protocol support (@modelcontextprotocol/sdk)
|
|
42
|
+
- **Vitest**: Unit testing framework
|
|
43
|
+
- **Zod**: Data validation
|
|
44
|
+
- **Vue 3**: Frontend UI framework
|
|
45
|
+
- **Pinia**: Frontend state management
|
|
46
|
+
- **Element Plus**: UI component library
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
### System Requirements
|
|
51
|
+
|
|
52
|
+
- Node.js 22.x or higher
|
|
53
|
+
- npm or yarn
|
|
54
|
+
- Windows, macOS, or Linux
|
|
55
|
+
|
|
56
|
+
### Installation
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Install dependencies
|
|
60
|
+
npm install
|
|
61
|
+
|
|
62
|
+
# Run in development mode (frontend and backend hot reload)
|
|
63
|
+
npm run dev
|
|
64
|
+
|
|
65
|
+
# Build production version
|
|
66
|
+
npm run build
|
|
67
|
+
|
|
68
|
+
# Full check (build + tests + code check)
|
|
69
|
+
npm run full:check
|
|
70
|
+
|
|
71
|
+
# Run production version
|
|
72
|
+
npm start
|
|
73
|
+
|
|
74
|
+
# Check status
|
|
75
|
+
npm run status
|
|
76
|
+
|
|
77
|
+
# Open UI interface
|
|
78
|
+
npm run ui
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The server will start at http://localhost:7788.
|
|
82
|
+
|
|
83
|
+
## Server Management
|
|
84
|
+
|
|
85
|
+

|
|
86
|
+
|
|
87
|
+
Manage all your MCP servers in one place. Add, edit, delete, connect, and disconnect servers through the intuitive web interface.
|
|
88
|
+
|
|
89
|
+
## Gateway & Tools
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+

|
|
94
|
+
|
|
95
|
+
Discover and call tools from all connected MCP servers through the unified gateway interface. The aggregated tools view provides a single place to search and use all available tools.
|
|
96
|
+
|
|
97
|
+
## Resources
|
|
98
|
+
|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
Browse and manage MCP resources from all connected servers.
|
|
102
|
+
|
|
103
|
+
## Sessions
|
|
104
|
+
|
|
105
|
+

|
|
106
|
+
|
|
107
|
+
Session management with persistence support. Sessions are automatically saved to disk and can be restored after service restart.
|
|
108
|
+
|
|
109
|
+
## Settings
|
|
110
|
+
|
|
111
|
+

|
|
112
|
+
|
|
113
|
+
Configure language, logging, and other settings through the settings page.
|
|
114
|
+
|
|
115
|
+
### Testing
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# Run all tests
|
|
119
|
+
npm test
|
|
120
|
+
|
|
121
|
+
# Unit tests
|
|
122
|
+
npm run test:unit
|
|
123
|
+
|
|
124
|
+
# Integration tests
|
|
125
|
+
npm run test:integration
|
|
126
|
+
|
|
127
|
+
# Contract tests
|
|
128
|
+
npm run test:contract
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## CLI Commands
|
|
132
|
+
|
|
133
|
+
MCP-HUB-LITE provides a command-line interface for managing the service.
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Start the service
|
|
137
|
+
npm start
|
|
138
|
+
# or
|
|
139
|
+
node dist/index.js start
|
|
140
|
+
|
|
141
|
+
# Check status
|
|
142
|
+
node dist/index.js status
|
|
143
|
+
|
|
144
|
+
# List all servers
|
|
145
|
+
node dist/index.js list
|
|
146
|
+
|
|
147
|
+
# Open web interface
|
|
148
|
+
node dist/index.js ui
|
|
149
|
+
|
|
150
|
+
# Help
|
|
151
|
+
node dist/index.js --help
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Configuration
|
|
155
|
+
|
|
156
|
+
MCP-HUB-LITE uses a `.mcp-hub.json` file for configuration. Configuration lookup priority:
|
|
157
|
+
|
|
158
|
+
1. Environment variable `MCP_HUB_CONFIG_PATH`
|
|
159
|
+
2. `~/.mcp-hub-lite/config/.mcp-hub.json` (hidden folder in user home directory)
|
|
160
|
+
|
|
161
|
+
### Configuration Example
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"version": "1.0.0",
|
|
166
|
+
"servers": [
|
|
167
|
+
{
|
|
168
|
+
"id": "server-1",
|
|
169
|
+
"name": "My MCP Server",
|
|
170
|
+
"description": "Example server",
|
|
171
|
+
"endpoint": "http://localhost:8080",
|
|
172
|
+
"transport": "http-stream",
|
|
173
|
+
"tags": {
|
|
174
|
+
"env": "development",
|
|
175
|
+
"category": "api-server",
|
|
176
|
+
"function": "http-api",
|
|
177
|
+
"priority": "medium"
|
|
178
|
+
},
|
|
179
|
+
"managedProcess": {
|
|
180
|
+
"command": "npx my-mcp-server",
|
|
181
|
+
"managedMode": "npx",
|
|
182
|
+
"processType": "http-stream"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
],
|
|
186
|
+
"settings": {
|
|
187
|
+
"language": {
|
|
188
|
+
"current": "en-US",
|
|
189
|
+
"autoDetect": true,
|
|
190
|
+
"fallback": "en-US"
|
|
191
|
+
},
|
|
192
|
+
"logging": {
|
|
193
|
+
"level": "info"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"gateway": {
|
|
197
|
+
"proxyTimeout": 30000,
|
|
198
|
+
"rateLimit": {
|
|
199
|
+
"enabled": true,
|
|
200
|
+
"maxRequests": 100,
|
|
201
|
+
"windowMs": 60000
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Usage Guide
|
|
208
|
+
|
|
209
|
+
### Adding MCP Servers
|
|
210
|
+
|
|
211
|
+
Through the web interface:
|
|
212
|
+
|
|
213
|
+
1. Open http://localhost:7788
|
|
214
|
+
2. Navigate to the "Servers" page
|
|
215
|
+
3. Click "Add Server"
|
|
216
|
+
4. Fill in server details and save
|
|
217
|
+
|
|
218
|
+
### MCP Protocol Usage
|
|
219
|
+
|
|
220
|
+
MCP-HUB-LITE exposes the MCP protocol interface on the same port:
|
|
221
|
+
|
|
222
|
+
#### List All Tools
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"jsonrpc": "2.0",
|
|
227
|
+
"method": "tools/list",
|
|
228
|
+
"params": {}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
#### Call a Tool
|
|
233
|
+
|
|
234
|
+
```json
|
|
235
|
+
{
|
|
236
|
+
"jsonrpc": "2.0",
|
|
237
|
+
"method": "tool/call",
|
|
238
|
+
"params": {
|
|
239
|
+
"toolId": "server1:example-tool",
|
|
240
|
+
"arguments": {}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
#### Get Server Status
|
|
246
|
+
|
|
247
|
+
```json
|
|
248
|
+
{
|
|
249
|
+
"jsonrpc": "2.0",
|
|
250
|
+
"method": "server/status",
|
|
251
|
+
"params": {
|
|
252
|
+
"serverId": "server-1"
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Process Management
|
|
258
|
+
|
|
259
|
+
MCP-HUB-LITE supports launching and managing MCP servers using your local environment:
|
|
260
|
+
|
|
261
|
+
### Supported Launch Methods
|
|
262
|
+
|
|
263
|
+
- **Node.js (npx)**: `npx package-name`
|
|
264
|
+
- **Python (uvx)**: `uvx package-name`
|
|
265
|
+
- **Direct Command**: Custom startup command
|
|
266
|
+
|
|
267
|
+
### Process Management Features
|
|
268
|
+
|
|
269
|
+
- Start/stop/restart MCP servers
|
|
270
|
+
- Monitor CPU and memory usage
|
|
271
|
+
- Crash detection and automatic restart
|
|
272
|
+
- PID tracking and health checks
|
|
273
|
+
|
|
274
|
+
## Development Guide
|
|
275
|
+
|
|
276
|
+
### Project Structure
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
src/
|
|
280
|
+
├── api/ # API implementations
|
|
281
|
+
│ ├── mcp-protocol/ # MCP protocol handlers
|
|
282
|
+
│ └── web-api/ # Web API routes
|
|
283
|
+
├── models/ # Data models
|
|
284
|
+
├── services/ # Core business logic
|
|
285
|
+
├── utils/ # Utility functions
|
|
286
|
+
├── config/ # Configuration
|
|
287
|
+
├── cli/ # CLI commands
|
|
288
|
+
├── pid/ # Process ID management
|
|
289
|
+
└── server/ # Server runtime
|
|
290
|
+
|
|
291
|
+
frontend/
|
|
292
|
+
├── src/
|
|
293
|
+
│ ├── components/ # Reusable UI components
|
|
294
|
+
│ ├── views/ # Page view components
|
|
295
|
+
│ ├── stores/ # Pinia state management
|
|
296
|
+
│ ├── router/ # Vue Router configuration
|
|
297
|
+
│ └── i18n/ # Internationalization
|
|
298
|
+
|
|
299
|
+
shared/
|
|
300
|
+
├── models/ # Shared models
|
|
301
|
+
└── types/ # Shared types
|
|
302
|
+
|
|
303
|
+
tests/
|
|
304
|
+
├── unit/ # Unit tests
|
|
305
|
+
├── integration/ # Integration tests
|
|
306
|
+
└── contract/ # Contract tests
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Adding New Features
|
|
310
|
+
|
|
311
|
+
1. Create models (models/)
|
|
312
|
+
2. Implement services (services/)
|
|
313
|
+
3. Add API routes (api/)
|
|
314
|
+
4. Write tests (tests/)
|
|
315
|
+
5. Update configuration files
|
|
316
|
+
|
|
317
|
+
## Constraints and Limits
|
|
318
|
+
|
|
319
|
+
- Maximum servers: 50
|
|
320
|
+
- Maximum memory usage: 4GB
|
|
321
|
+
- CPU usage threshold: 80%
|
|
322
|
+
- Search response time: <500ms (90%)
|
|
323
|
+
- Gateway latency: <100ms
|
|
324
|
+
|
|
325
|
+
## Detailed Technical Documentation
|
|
326
|
+
|
|
327
|
+
Complete project architecture, constraints, and design decisions can be found in:
|
|
328
|
+
|
|
329
|
+
- [CLAUDE.md](./CLAUDE.md) - Project AI context and module documentation
|
|
330
|
+
|
|
331
|
+
## License
|
|
332
|
+
|
|
333
|
+
MIT
|
|
334
|
+
|
|
335
|
+
## Contributing
|
|
336
|
+
|
|
337
|
+
Pull Requests and Issues are welcome!
|
|
338
|
+
|
|
339
|
+
<!-- Badges -->
|
|
340
|
+
|
|
341
|
+
[license-src]: https://img.shields.io/badge/license-MIT-080f12?style=flat&colorA=080f12&colorB=1fa669
|
|
342
|
+
[license-href]: ./LICENSE
|
|
343
|
+
[node-src]: https://img.shields.io/badge/Node.js-22.x-080f12?style=flat&logo=nodedotjs&logoColor=white&colorA=080f12&colorB=339933
|
|
344
|
+
[node-href]: https://nodejs.org/
|
|
345
|
+
[typescript-src]: https://img.shields.io/badge/TypeScript-5.x-080f12?style=flat&logo=typescript&logoColor=white&colorA=080f12&colorB=3178C6
|
|
346
|
+
[typescript-href]: https://www.typescriptlang.org/
|
|
347
|
+
[vitest-src]: https://img.shields.io/badge/Vitest-Testing-080f12?style=flat&logo=vitest&logoColor=white&colorA=080f12&colorB=6E9F18
|
|
348
|
+
[vitest-href]: https://vitest.dev/
|
|
349
|
+
[fastify-src]: https://img.shields.io/badge/Fastify-Web-080f12?style=flat&logo=fastify&logoColor=white&colorA=080f12&colorB=000000
|
|
350
|
+
[fastify-href]: https://fastify.io/
|
|
351
|
+
[vue-src]: https://img.shields.io/badge/Vue.js-3-080f12?style=flat&logo=vuedotjs&logoColor=white&colorA=080f12&colorB=4FC08D
|
|
352
|
+
[vue-href]: https://vuejs.org/
|
|
353
|
+
[claude-code-src]: https://img.shields.io/badge/Claude-Code-1fa669?style=flat&colorA=080f12&colorB=1fa669
|
|
354
|
+
[claude-code-href]: https://claude.ai/code
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as t}from"./index-CSTs2jYk.js";import{E as s}from"./index-BzQXG7no.js";import{t as a,f as n,w as c,A as i,C as l,O as f,a1 as m,y as _}from"./vue-vendor-6ny5zj9i.js";import"./typescript-Bp3YSIOJ.js";const u={class:"flex w-full h-full"},d={class:"flex-1 h-full overflow-hidden bg-gray-50 dark:bg-[#0f172a] relative transition-colors duration-300"},k=a({__name:"HomeView",setup(p){const o=t();return n(()=>{o.fetchServers()}),c(()=>o.error,e=>{e&&s.error(e)}),(e,h)=>{const r=m("router-view");return _(),i("div",u,[l("main",d,[f(r)])])}}});export{k as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{background-color:var(--el-color-white);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;transition:all .3s;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{border-radius:var(--el-radio-input-border-radius);content:"";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{inset:0;margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.resource-detail[data-v-41a7b24b]{height:calc(100vh - 64px)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{F as j,az as ee,ac as W,$ as Q,aE as X,aG as pe,aA as ve,a9 as fe,_ as T,I as q,ay as be,G as Y,f as _e,aC as ye,aH as ge,aF as he,aD as xe,ad as oe,J as ke,u as we,p as Re,c as Ve,aT as Ce,a as Be,aU as Ee,C as Se,w as Ie}from"./index-CSTs2jYk.js";import{v as $e}from"./el-loading-CChNmKeI.js";import{a as Z,r as $,i as Ne,c as m,t as z,A as x,y,C as t,H as M,ap as te,u as e,I as U,J as E,k as ae,v as O,a9 as P,$ as d,n as se,K as Ge,f as le,q as Pe,Q as De,ah as Ue,w as je,P as ze,ak as Ae,x as Fe,B as Le,V as Te,a6 as qe,a8 as Me,O as V,G as S,U as Oe,a7 as Ke}from"./vue-vendor-6ny5zj9i.js";import{C as K,U as H}from"./event-BB_Ol6Sd.js";import{o as He}from"./omit-Bx5HJNV_.js";import{_ as Je}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./_baseClone-DCmK847M.js";const re=j({modelValue:{type:[String,Number,Boolean],default:void 0},size:ee,disabled:{type:Boolean,default:void 0},label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),We=j({...re,border:Boolean}),ne={[H]:n=>Z(n)||W(n)||Q(n),[K]:n=>Z(n)||W(n)||Q(n)},ie=Symbol("radioGroupKey"),de=(n,_)=>{const r=$(),p=Ne(ie,void 0),o=m(()=>!!p),w=m(()=>X(n.value)?n.label:n.value),g=m({get(){return o.value?p.modelValue:n.modelValue},set(f){o.value?p.changeEvent(f):_&&_(H,f),r.value.checked=n.modelValue===w.value}}),u=pe(m(()=>p?.size)),s=ve(m(()=>p?.disabled)),b=$(!1),v=m(()=>s.value||o.value&&g.value!==w.value?-1:0);return fe({from:"label act as value",replacement:"value",version:"3.0.0",scope:"el-radio",ref:"https://element-plus.org/en-US/component/radio.html"},m(()=>o.value&&X(n.value))),{radioRef:r,isGroup:o,radioGroup:p,focus:b,size:u,disabled:s,tabIndex:v,modelValue:g,actualValue:w}},Qe=["value","name","disabled","checked"],Xe=z({name:"ElRadio",__name:"radio",props:We,emits:ne,setup(n,{emit:_}){const r=n,p=_,o=q("radio"),{radioRef:w,radioGroup:g,focus:u,size:s,disabled:b,modelValue:v,actualValue:f}=de(r,p);function i(){se(()=>p(K,v.value))}return(k,c)=>{var l;return y(),x("label",{class:E([e(o).b(),e(o).is("disabled",e(b)),e(o).is("focus",e(u)),e(o).is("bordered",k.border),e(o).is("checked",e(v)===e(f)),e(o).m(e(s))])},[t("span",{class:E([e(o).e("input"),e(o).is("disabled",e(b)),e(o).is("checked",e(v)===e(f))])},[M(t("input",{ref_key:"radioRef",ref:w,"onUpdate:modelValue":c[0]||(c[0]=h=>ae(v)?v.value=h:null),class:E(e(o).e("original")),value:e(f),name:k.name||((l=e(g))==null?void 0:l.name),disabled:e(b),checked:e(v)===e(f),type:"radio",onFocus:c[1]||(c[1]=h=>u.value=!0),onBlur:c[2]||(c[2]=h=>u.value=!1),onChange:i,onClick:c[3]||(c[3]=U(()=>{},["stop"]))},null,42,Qe),[[te,e(v)]]),t("span",{class:E(e(o).e("inner"))},null,2)],2),t("span",{class:E(e(o).e("label")),onKeydown:c[4]||(c[4]=U(()=>{},["stop"]))},[O(k.$slots,"default",{},()=>[P(d(k.label),1)])],34)],2)}}});var ue=T(Xe,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio.vue"]]);const Ye=j({...re}),Ze=["value","name","disabled"],eo=z({name:"ElRadioButton",__name:"radio-button",props:Ye,setup(n){const _=n,r=q("radio"),{radioRef:p,focus:o,size:w,disabled:g,modelValue:u,radioGroup:s,actualValue:b}=de(_),v=m(()=>({backgroundColor:s?.fill||"",borderColor:s?.fill||"",boxShadow:s?.fill?`-1px 0 0 0 ${s.fill}`:"",color:s?.textColor||""}));return(f,i)=>{var k;return y(),x("label",{class:E([e(r).b("button"),e(r).is("active",e(u)===e(b)),e(r).is("disabled",e(g)),e(r).is("focus",e(o)),e(r).bm("button",e(w))])},[M(t("input",{ref_key:"radioRef",ref:p,"onUpdate:modelValue":i[0]||(i[0]=c=>ae(u)?u.value=c:null),class:E(e(r).be("button","original-radio")),value:e(b),type:"radio",name:f.name||((k=e(s))==null?void 0:k.name),disabled:e(g),onFocus:i[1]||(i[1]=c=>o.value=!0),onBlur:i[2]||(i[2]=c=>o.value=!1),onClick:i[3]||(i[3]=U(()=>{},["stop"]))},null,42,Ze),[[te,e(u)]]),t("span",{class:E(e(r).be("button","inner")),style:Ge(e(u)===e(b)?v.value:{}),onKeydown:i[4]||(i[4]=U(()=>{},["stop"]))},[O(f.$slots,"default",{},()=>[P(d(f.label),1)])],38)],2)}}});var J=T(eo,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-button.vue"]]);const oo=j({id:{type:String,default:void 0},size:ee,disabled:{type:Boolean,default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:""},textColor:{type:String,default:""},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},options:{type:Y(Array)},props:{type:Y(Object),default:()=>ce},type:{type:String,values:["radio","button"],default:"radio"},...be(["ariaLabel"])}),to=ne,ce={label:"label",value:"value",disabled:"disabled"},ao=["id","aria-label","aria-labelledby"],so=z({name:"ElRadioGroup",__name:"radio-group",props:oo,emits:to,setup(n,{emit:_}){const r=n,p=_,o=q("radio"),w=_e(),g=$(),{formItem:u}=ye(),{inputId:s,isLabeledByFormItem:b}=ge(r,{formItemContext:u}),v=l=>{p(H,l),se(()=>p(K,l))};le(()=>{const l=g.value.querySelectorAll("[type=radio]"),h=l[0];!Array.from(l).some(C=>C.checked)&&h&&(h.tabIndex=0)});const f=m(()=>r.name||w.value),i=m(()=>({...ce,...r.props})),k=l=>{const{label:h,value:C,disabled:N}=i.value,A={label:l[h],value:l[C],disabled:l[N]};return{...He(l,[h,C,N]),...A}},c=m(()=>r.type==="button"?J:ue);return Pe(ie,De({...Ue(r),changeEvent:v,name:f})),je(()=>r.modelValue,(l,h)=>{r.validateEvent&&!he(l,h)&&u?.validate("change").catch(C=>xe())}),(l,h)=>(y(),x("div",{id:e(s),ref_key:"radioGroupRef",ref:g,class:E(e(o).b("group")),role:"radiogroup","aria-label":e(b)?void 0:l.ariaLabel||"radio-group","aria-labelledby":e(b)?e(u).labelId:void 0},[O(l.$slots,"default",{},()=>[(y(!0),x(ze,null,Ae(l.options,(C,N)=>(y(),Fe(Te(c.value),Le({key:N},{ref_for:!0},k(C)),null,16))),128))])],10,ao))}});var me=T(so,[["__file","/home/runner/work/element-plus/element-plus/packages/components/radio/src/radio-group.vue"]]);ke(ue,{RadioButton:J,RadioGroup:me});const lo=oe(me),ro=oe(J),no={class:"resource-detail py-6 px-4 sm:px-6 lg:px-8 max-w-7xl mx-auto w-full h-full flex flex-col overflow-hidden"},io={class:"flex items-center justify-between mb-6 shrink-0"},uo={class:"flex items-center gap-4"},co={class:"text-2xl font-bold text-gray-900 dark:text-white"},mo={class:"flex-1 flex flex-col gap-6 overflow-hidden"},po={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow p-6 shrink-0 border border-gray-200 dark:border-gray-700"},vo={class:"grid grid-cols-1 md:grid-cols-2 gap-6"},fo={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},bo={class:"font-mono text-sm break-all select-all"},_o={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},yo={class:"font-mono text-sm"},go={class:"md:col-span-2"},ho={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},xo={class:"text-sm"},ko={class:"md:col-span-2"},wo={class:"text-sm font-medium text-gray-500 dark:text-gray-400 mb-1"},Ro={class:"text-sm"},Vo={class:"bg-white dark:bg-[#1e1e1e] rounded-lg shadow flex-1 flex flex-col overflow-hidden border border-gray-200 dark:border-gray-700"},Co={class:"px-6 py-4 border-b border-gray-200 dark:border-gray-700 flex justify-between items-center bg-gray-50 dark:bg-[#2d2d2d]"},Bo={class:"font-medium"},Eo={class:"flex gap-2"},So={class:"flex-1 overflow-auto p-6 bg-gray-50 dark:bg-[#0f172a]"},Io={key:0,class:"mb-4 p-4 bg-blue-50 dark:bg-blue-900 rounded-lg border border-blue-200 dark:border-blue-800"},$o={class:"text-sm text-blue-700 dark:text-blue-300"},No={key:1,class:"h-full flex items-center justify-center text-gray-400"},Go={key:2,class:"h-full flex flex-col items-center justify-center text-red-500"},Po={key:3,class:"h-full"},Do={key:0,class:"h-full"},Uo={key:0,class:"h-full flex items-center justify-center"},jo=["src"],zo={key:1,class:"bg-white dark:bg-[#1e1e1e] p-4 rounded shadow-sm h-full overflow-auto font-mono text-sm whitespace-pre-wrap"},Ao={key:1,class:"h-full"},Fo={class:"bg-gray-900 text-gray-100 p-4 rounded-lg h-full overflow-auto font-mono text-sm"},Lo=z({__name:"ResourceDetailView",setup(n){const _=Me(),r=Ke(),p=we(),{t:o}=qe(),w=m(()=>_.params.name),g=m(()=>_.query.uri),u=m(()=>{if(_.query.name)return _.query.name;const a=_.query.uri;if(a){const B=a.split("/"),R=B[B.length-1];if(R&&R.length>0)return R}return"Unknown Resource"}),s=m(()=>_.query.mimeType||"application/octet-stream"),b=m(()=>_.query.description||o("resources.noDescription")),v=$(!1),f=$(null),i=$(null),k=$("preview"),c=m(()=>s.value.startsWith("image/")),l=m(()=>{if(!i.value)return"";const a=i.value;return a&&typeof a=="object"&&"text"in a&&typeof a.text=="string"?a.text:a&&typeof a=="object"&&"blob"in a?"[Binary Data]":""}),h=m(()=>{if(!c.value||!i.value)return"";const a=i.value;return a&&typeof a=="object"&&"blob"in a&&typeof a.blob=="string"?`data:${s.value};base64,${a.blob}`:""});function C(){r.back()}async function N(){v.value=!0,f.value=null;try{i.value=await p.readResource(w.value,g.value)}catch(a){f.value=a.message||"Failed to load resource content"}finally{v.value=!1}}function A(){const a=document.createElement("a"),B=new Blob([l.value],{type:s.value}),R=i.value;if(R&&typeof R=="object"&&"blob"in R&&typeof R.blob=="string"){const I=atob(R.blob),D=new Array(I.length);for(let G=0;G<I.length;G++)D[G]=I.charCodeAt(G);const F=new Uint8Array(D),L=new Blob([F],{type:s.value});a.href=URL.createObjectURL(L)}else a.href=URL.createObjectURL(B);a.download=u.value,document.body.appendChild(a),a.click(),document.body.removeChild(a)}return le(()=>{g.value&&N()}),(a,B)=>{const R=Ve,I=Be,D=ro,F=lo,L=$e;return y(),x("div",no,[t("div",io,[t("div",uo,[V(R,{icon:e(Re),plain:"",onClick:C,class:"shrink-0"},{default:S(()=>[P(d(e(o)("action.back")),1)]),_:1},8,["icon"]),t("h2",co," Resource Details: "+d(u.value),1)])]),M((y(),x("div",mo,[t("div",po,[t("div",vo,[t("div",null,[t("div",fo,d(e(o)("resources.uri")),1),t("div",bo,d(g.value),1)]),t("div",null,[t("div",_o,d(e(o)("resources.mimeType")),1),t("div",yo,d(s.value),1)]),t("div",go,[t("div",ho,d(e(o)("resources.description")),1),t("div",xo,d(b.value),1)]),t("div",ko,[t("div",wo,d(e(o)("resources.server")),1),t("div",Ro,d(w.value),1)])])]),t("div",Vo,[t("div",Co,[t("div",Bo,d(e(o)("resources.contentPreview")),1),t("div",Eo,[V(F,{modelValue:k.value,"onUpdate:modelValue":B[0]||(B[0]=G=>k.value=G),size:"small"},{default:S(()=>[V(D,{value:"preview"},{default:S(()=>[V(I,{class:"mr-1"},{default:S(()=>[V(e(Ee))]),_:1}),P(" "+d(e(o)("resources.preview")),1)]),_:1}),V(D,{value:"source"},{default:S(()=>[V(I,{class:"mr-1"},{default:S(()=>[V(e(Se))]),_:1}),P(" "+d(e(o)("resources.source")),1)]),_:1})]),_:1},8,["modelValue"]),V(R,{size:"small",icon:e(Ce),onClick:A},{default:S(()=>[P(d(e(o)("resources.download")),1)]),_:1},8,["icon"])])]),t("div",So,[b.value&&b.value!=="No description available"?(y(),x("div",Io,[B[1]||(B[1]=t("div",{class:"text-sm font-medium text-blue-900 dark:text-blue-100 mb-1"},"Description",-1)),t("div",$o,d(b.value),1)])):Oe("",!0),v.value?(y(),x("div",No,d(e(o)("resources.loadingContent")),1)):f.value?(y(),x("div",Go,[V(I,{class:"text-4xl mb-2"},{default:S(()=>[V(e(Ie))]),_:1}),t("div",null,d(f.value),1)])):(y(),x("div",Po,[k.value==="preview"?(y(),x("div",Do,[c.value?(y(),x("div",Uo,[t("img",{src:h.value,class:"max-w-full max-h-full object-contain rounded shadow-lg"},null,8,jo)])):(y(),x("div",zo,d(l.value),1))])):(y(),x("div",Ao,[t("pre",Fo,[t("code",null,d(l.value),1)])]))]))])])])),[[L,v.value]])])}}}),Wo=Je(Lo,[["__scopeId","data-v-41a7b24b"]]);export{Wo as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.custom-scrollbar[data-v-b769732e]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.dark .custom-scrollbar[data-v-b769732e]::-webkit-scrollbar-thumb{background-color:#4b556380}.animate-fade-in[data-v-b769732e]{animation:fadeIn-b769732e .3s ease-out}@keyframes fadeIn-b769732e{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
|