@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,108 @@
|
|
|
1
|
+
import { SearchResult, SearchOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Core search service that provides fuzzy search functionality across all available MCP tools.
|
|
4
|
+
*
|
|
5
|
+
* This service handles searching through tools from multiple MCP servers with intelligent
|
|
6
|
+
* scoring, caching, and pagination support. It automatically refreshes its cache when
|
|
7
|
+
* server configurations change to ensure search results remain up-to-date.
|
|
8
|
+
*
|
|
9
|
+
* The search algorithm uses a weighted scoring system that prioritizes:
|
|
10
|
+
* 1. Exact name matches (highest priority)
|
|
11
|
+
* 2. Name prefix matches
|
|
12
|
+
* 3. Name substring matches
|
|
13
|
+
* 4. Description matches (lower weight)
|
|
14
|
+
*
|
|
15
|
+
* Usage scenarios include:
|
|
16
|
+
* - Tool discovery in the web UI
|
|
17
|
+
* - Command-line tool search
|
|
18
|
+
* - API-based tool lookup
|
|
19
|
+
* - Integration with other services requiring tool search capabilities
|
|
20
|
+
*/
|
|
21
|
+
export declare class SearchCoreService {
|
|
22
|
+
private cacheService;
|
|
23
|
+
private scorer;
|
|
24
|
+
/**
|
|
25
|
+
* Initializes the search core service and sets up event listeners for cache invalidation.
|
|
26
|
+
*
|
|
27
|
+
* Subscribes to server lifecycle events (SERVER_UPDATED, SERVER_ADDED, SERVER_DELETED)
|
|
28
|
+
* to automatically clear the search cache when server configurations change, ensuring
|
|
29
|
+
* that search results always reflect the current state of available tools.
|
|
30
|
+
*/
|
|
31
|
+
constructor();
|
|
32
|
+
/**
|
|
33
|
+
* Performs a fuzzy search across all available tools from connected MCP servers.
|
|
34
|
+
*
|
|
35
|
+
* This method supports both empty queries (returns all tools) and search queries
|
|
36
|
+
* with fuzzy matching. Results are scored based on relevance and returned in
|
|
37
|
+
* descending order of score.
|
|
38
|
+
*
|
|
39
|
+
* @param query - The search query string. Empty or whitespace-only queries return all tools.
|
|
40
|
+
* @param options - Optional search configuration including filters, pagination, and search mode.
|
|
41
|
+
* @returns A promise that resolves to an array of SearchResult objects containing tools and their relevance scores.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* // Search for tools containing "list"
|
|
45
|
+
* const results = await searchCoreService.search("list");
|
|
46
|
+
*
|
|
47
|
+
* // Get all tools with pagination
|
|
48
|
+
* const allTools = await searchCoreService.search("", { limit: 20, offset: 0 });
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* - Results are automatically cached to improve performance on subsequent identical searches
|
|
52
|
+
* - Cache is invalidated when server configurations change
|
|
53
|
+
* - Empty queries return all tools with a score of 1
|
|
54
|
+
* - Non-empty queries perform fuzzy matching with weighted scoring
|
|
55
|
+
* - Results are automatically sorted by score (highest first) and paginated
|
|
56
|
+
*/
|
|
57
|
+
search(query: string, options?: Partial<SearchOptions>): Promise<SearchResult[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieves all available tools with caching support.
|
|
60
|
+
*
|
|
61
|
+
* This method first checks if tools are available in the cache. If cached data exists,
|
|
62
|
+
* it returns the cached tools immediately. Otherwise, it fetches tools from all connected
|
|
63
|
+
* MCP servers, applies server-level filtering based on allowedTools configuration,
|
|
64
|
+
* caches the result, and returns the filtered tools.
|
|
65
|
+
*
|
|
66
|
+
* @returns A promise that resolves to an array of Tool objects from all connected servers.
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* - Tools are filtered based on each server's allowedTools configuration
|
|
70
|
+
* - If allowedTools is null or undefined, all tools from that server are included
|
|
71
|
+
* - If allowedTools is an empty array, no tools from that server are included
|
|
72
|
+
* - Tools are filtered using strict name matching against the allowedTools list
|
|
73
|
+
*/
|
|
74
|
+
private getToolsWithCache;
|
|
75
|
+
/**
|
|
76
|
+
* Applies search filters to the provided tools array.
|
|
77
|
+
*
|
|
78
|
+
* Currently, this method serves as a placeholder for future filter implementation.
|
|
79
|
+
* The comment indicates that serverId and status fields have been removed from the
|
|
80
|
+
* Tool interface, so alternative filtering methods will be needed in the future.
|
|
81
|
+
*
|
|
82
|
+
* @param tools - The array of tools to filter
|
|
83
|
+
* @param filters - Optional filter criteria from SearchOptions
|
|
84
|
+
* @returns The filtered array of tools (currently returns input unchanged)
|
|
85
|
+
*
|
|
86
|
+
* @todo Implement actual filtering logic once the Tool interface is updated
|
|
87
|
+
*/
|
|
88
|
+
private applyFilters;
|
|
89
|
+
/**
|
|
90
|
+
* Performs fuzzy search on the provided tools array using the configured scorer.
|
|
91
|
+
*
|
|
92
|
+
* This method iterates through all tools and calculates a relevance score for each
|
|
93
|
+
* tool against the search query using the SearchScorer. Only tools with a score
|
|
94
|
+
* greater than 0 are included in the results.
|
|
95
|
+
*
|
|
96
|
+
* @param tools - The array of tools to search through
|
|
97
|
+
* @param query - The normalized search query string (lowercase, trimmed)
|
|
98
|
+
* @returns An array of SearchResult objects containing tools with positive scores
|
|
99
|
+
*
|
|
100
|
+
* @remarks
|
|
101
|
+
* - The query parameter should already be normalized (lowercase and trimmed)
|
|
102
|
+
* - Tools with a score of 0 or less are excluded from results
|
|
103
|
+
* - Scoring is handled by the SearchScorer instance with weighted field matching
|
|
104
|
+
*/
|
|
105
|
+
private performFuzzySearch;
|
|
106
|
+
}
|
|
107
|
+
export declare const searchCoreService: SearchCoreService;
|
|
108
|
+
//# sourceMappingURL=search-core.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-core.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/search/search-core.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,MAAM,CAAsB;IAEpC;;;;;;OAMG;;IAoBH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IA8BtF;;;;;;;;;;;;;;;OAeG;YACW,iBAAiB;IAwB/B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,YAAY;IAUpB;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,kBAAkB;CAgB3B;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { mcpConnectionManager } from '../mcp-connection-manager.js';
|
|
2
|
+
import { hubManager } from '../hub-manager.service.js';
|
|
3
|
+
import { SearchScorer } from './search-scorer.js';
|
|
4
|
+
import { SearchCacheService } from './search-cache.js';
|
|
5
|
+
import { eventBus, EventTypes } from '../event-bus.service.js';
|
|
6
|
+
import { logger, LOG_MODULES } from '../../utils/logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Core search service that provides fuzzy search functionality across all available MCP tools.
|
|
9
|
+
*
|
|
10
|
+
* This service handles searching through tools from multiple MCP servers with intelligent
|
|
11
|
+
* scoring, caching, and pagination support. It automatically refreshes its cache when
|
|
12
|
+
* server configurations change to ensure search results remain up-to-date.
|
|
13
|
+
*
|
|
14
|
+
* The search algorithm uses a weighted scoring system that prioritizes:
|
|
15
|
+
* 1. Exact name matches (highest priority)
|
|
16
|
+
* 2. Name prefix matches
|
|
17
|
+
* 3. Name substring matches
|
|
18
|
+
* 4. Description matches (lower weight)
|
|
19
|
+
*
|
|
20
|
+
* Usage scenarios include:
|
|
21
|
+
* - Tool discovery in the web UI
|
|
22
|
+
* - Command-line tool search
|
|
23
|
+
* - API-based tool lookup
|
|
24
|
+
* - Integration with other services requiring tool search capabilities
|
|
25
|
+
*/
|
|
26
|
+
export class SearchCoreService {
|
|
27
|
+
cacheService = new SearchCacheService();
|
|
28
|
+
scorer = new SearchScorer();
|
|
29
|
+
/**
|
|
30
|
+
* Initializes the search core service and sets up event listeners for cache invalidation.
|
|
31
|
+
*
|
|
32
|
+
* Subscribes to server lifecycle events (SERVER_UPDATED, SERVER_ADDED, SERVER_DELETED)
|
|
33
|
+
* to automatically clear the search cache when server configurations change, ensuring
|
|
34
|
+
* that search results always reflect the current state of available tools.
|
|
35
|
+
*/
|
|
36
|
+
constructor() {
|
|
37
|
+
// Listen for server update events and clear search cache to ensure results are up-to-date
|
|
38
|
+
eventBus.subscribe(EventTypes.SERVER_UPDATED, () => {
|
|
39
|
+
logger.debug('Server updated event received, clearing search cache', LOG_MODULES.SEARCH);
|
|
40
|
+
this.cacheService.invalidate();
|
|
41
|
+
});
|
|
42
|
+
// Listen for server add/delete events and also clear cache
|
|
43
|
+
eventBus.subscribe(EventTypes.SERVER_ADDED, () => {
|
|
44
|
+
logger.debug('Server added event received, clearing search cache', LOG_MODULES.SEARCH);
|
|
45
|
+
this.cacheService.invalidate();
|
|
46
|
+
});
|
|
47
|
+
eventBus.subscribe(EventTypes.SERVER_DELETED, () => {
|
|
48
|
+
logger.debug('Server deleted event received, clearing search cache', LOG_MODULES.SEARCH);
|
|
49
|
+
this.cacheService.invalidate();
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Performs a fuzzy search across all available tools from connected MCP servers.
|
|
54
|
+
*
|
|
55
|
+
* This method supports both empty queries (returns all tools) and search queries
|
|
56
|
+
* with fuzzy matching. Results are scored based on relevance and returned in
|
|
57
|
+
* descending order of score.
|
|
58
|
+
*
|
|
59
|
+
* @param query - The search query string. Empty or whitespace-only queries return all tools.
|
|
60
|
+
* @param options - Optional search configuration including filters, pagination, and search mode.
|
|
61
|
+
* @returns A promise that resolves to an array of SearchResult objects containing tools and their relevance scores.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* // Search for tools containing "list"
|
|
65
|
+
* const results = await searchCoreService.search("list");
|
|
66
|
+
*
|
|
67
|
+
* // Get all tools with pagination
|
|
68
|
+
* const allTools = await searchCoreService.search("", { limit: 20, offset: 0 });
|
|
69
|
+
*
|
|
70
|
+
* @remarks
|
|
71
|
+
* - Results are automatically cached to improve performance on subsequent identical searches
|
|
72
|
+
* - Cache is invalidated when server configurations change
|
|
73
|
+
* - Empty queries return all tools with a score of 1
|
|
74
|
+
* - Non-empty queries perform fuzzy matching with weighted scoring
|
|
75
|
+
* - Results are automatically sorted by score (highest first) and paginated
|
|
76
|
+
*/
|
|
77
|
+
async search(query, options) {
|
|
78
|
+
const startTime = Date.now();
|
|
79
|
+
const tools = await this.getToolsWithCache();
|
|
80
|
+
const filteredTools = this.applyFilters(tools, options?.filters);
|
|
81
|
+
let results = [];
|
|
82
|
+
if (!query.trim()) {
|
|
83
|
+
results = filteredTools.map((tool) => ({
|
|
84
|
+
tool,
|
|
85
|
+
score: 1
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
results = this.performFuzzySearch(filteredTools, query.trim().toLowerCase());
|
|
90
|
+
}
|
|
91
|
+
const sortedResults = results.sort((a, b) => b.score - a.score);
|
|
92
|
+
const limit = options?.limit || 50;
|
|
93
|
+
const offset = options?.offset || 0;
|
|
94
|
+
const paginatedResults = sortedResults.slice(offset, offset + limit);
|
|
95
|
+
const processingTime = Date.now() - startTime;
|
|
96
|
+
logger.debug(`Search completed in ${processingTime}ms`, LOG_MODULES.SEARCH);
|
|
97
|
+
return paginatedResults;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Retrieves all available tools with caching support.
|
|
101
|
+
*
|
|
102
|
+
* This method first checks if tools are available in the cache. If cached data exists,
|
|
103
|
+
* it returns the cached tools immediately. Otherwise, it fetches tools from all connected
|
|
104
|
+
* MCP servers, applies server-level filtering based on allowedTools configuration,
|
|
105
|
+
* caches the result, and returns the filtered tools.
|
|
106
|
+
*
|
|
107
|
+
* @returns A promise that resolves to an array of Tool objects from all connected servers.
|
|
108
|
+
*
|
|
109
|
+
* @remarks
|
|
110
|
+
* - Tools are filtered based on each server's allowedTools configuration
|
|
111
|
+
* - If allowedTools is null or undefined, all tools from that server are included
|
|
112
|
+
* - If allowedTools is an empty array, no tools from that server are included
|
|
113
|
+
* - Tools are filtered using strict name matching against the allowedTools list
|
|
114
|
+
*/
|
|
115
|
+
async getToolsWithCache() {
|
|
116
|
+
const cached = this.cacheService.get();
|
|
117
|
+
if (cached) {
|
|
118
|
+
return cached;
|
|
119
|
+
}
|
|
120
|
+
// Use new server name-level cache to get all tools
|
|
121
|
+
const tools = mcpConnectionManager.getAllToolsByServerName();
|
|
122
|
+
// Get configuration based on server name and apply allowedTools filtering
|
|
123
|
+
const filteredTools = tools.filter((tool) => {
|
|
124
|
+
const serverConfig = hubManager.getServerByName(tool.serverName);
|
|
125
|
+
if (!serverConfig)
|
|
126
|
+
return true;
|
|
127
|
+
const allowed = serverConfig.allowedTools;
|
|
128
|
+
if (allowed == null)
|
|
129
|
+
return true; // No allowedTools configured, show all tools
|
|
130
|
+
if (allowed.length === 0)
|
|
131
|
+
return false; // Empty array, don't show any tools
|
|
132
|
+
return allowed.includes(tool.name); // Strict filtering
|
|
133
|
+
});
|
|
134
|
+
this.cacheService.set(filteredTools);
|
|
135
|
+
return filteredTools;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Applies search filters to the provided tools array.
|
|
139
|
+
*
|
|
140
|
+
* Currently, this method serves as a placeholder for future filter implementation.
|
|
141
|
+
* The comment indicates that serverId and status fields have been removed from the
|
|
142
|
+
* Tool interface, so alternative filtering methods will be needed in the future.
|
|
143
|
+
*
|
|
144
|
+
* @param tools - The array of tools to filter
|
|
145
|
+
* @param filters - Optional filter criteria from SearchOptions
|
|
146
|
+
* @returns The filtered array of tools (currently returns input unchanged)
|
|
147
|
+
*
|
|
148
|
+
* @todo Implement actual filtering logic once the Tool interface is updated
|
|
149
|
+
*/
|
|
150
|
+
applyFilters(tools, filters) {
|
|
151
|
+
if (!filters)
|
|
152
|
+
return tools;
|
|
153
|
+
const filtered = tools;
|
|
154
|
+
// serverId and status fields have been removed from Tool interface, use other methods for server or status filtering
|
|
155
|
+
return filtered;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Performs fuzzy search on the provided tools array using the configured scorer.
|
|
159
|
+
*
|
|
160
|
+
* This method iterates through all tools and calculates a relevance score for each
|
|
161
|
+
* tool against the search query using the SearchScorer. Only tools with a score
|
|
162
|
+
* greater than 0 are included in the results.
|
|
163
|
+
*
|
|
164
|
+
* @param tools - The array of tools to search through
|
|
165
|
+
* @param query - The normalized search query string (lowercase, trimmed)
|
|
166
|
+
* @returns An array of SearchResult objects containing tools with positive scores
|
|
167
|
+
*
|
|
168
|
+
* @remarks
|
|
169
|
+
* - The query parameter should already be normalized (lowercase and trimmed)
|
|
170
|
+
* - Tools with a score of 0 or less are excluded from results
|
|
171
|
+
* - Scoring is handled by the SearchScorer instance with weighted field matching
|
|
172
|
+
*/
|
|
173
|
+
performFuzzySearch(tools, query) {
|
|
174
|
+
const results = [];
|
|
175
|
+
for (const tool of tools) {
|
|
176
|
+
const score = this.scorer.scoreTool(tool, query);
|
|
177
|
+
if (score > 0) {
|
|
178
|
+
results.push({
|
|
179
|
+
tool,
|
|
180
|
+
score
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return results;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export const searchCoreService = new SearchCoreService();
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { Tool } from '../../../shared/models/tool.model.js';
|
|
2
|
+
/**
|
|
3
|
+
* SearchScorer class provides relevance scoring functionality for search results.
|
|
4
|
+
* It calculates weighted scores for tools based on how well their fields (name, description)
|
|
5
|
+
* match against a given search query using different matching strategies.
|
|
6
|
+
*
|
|
7
|
+
* The scoring algorithm prioritizes matches in the following order:
|
|
8
|
+
* 1. Exact name matches (highest priority)
|
|
9
|
+
* 2. Name prefix matches (second highest priority)
|
|
10
|
+
* 3. Partial matches in name or description (lower priority)
|
|
11
|
+
*
|
|
12
|
+
* Each field has configurable weights that determine its importance in the final score.
|
|
13
|
+
* The name field typically has a higher weight than the description field to ensure
|
|
14
|
+
* that tools with relevant names appear higher in search results.
|
|
15
|
+
*
|
|
16
|
+
* This class is used by the SearchCoreService to rank and sort search results
|
|
17
|
+
* based on relevance to provide better user experience in tool discovery.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SearchScorer {
|
|
20
|
+
/**
|
|
21
|
+
* Calculates the relevance score for a tool against a search query.
|
|
22
|
+
*
|
|
23
|
+
* The scoring logic ensures proper ranking by:
|
|
24
|
+
* - Giving exact name matches the highest possible score (120 points)
|
|
25
|
+
* - Ensuring name prefix matches have higher scores than any combination of
|
|
26
|
+
* partial matches in other fields
|
|
27
|
+
* - Combining scores from multiple fields while maintaining proper priorities
|
|
28
|
+
*
|
|
29
|
+
* @param tool - The Tool object to score against the query
|
|
30
|
+
* @param query - The search query string to match against tool fields
|
|
31
|
+
* @returns A numerical score representing the relevance of the tool to the query
|
|
32
|
+
* Higher scores indicate better matches
|
|
33
|
+
*/
|
|
34
|
+
scoreTool(tool: Tool, query: string): number;
|
|
35
|
+
/**
|
|
36
|
+
* Calculates the score for a single text field against a search query.
|
|
37
|
+
*
|
|
38
|
+
* The scoring uses three levels of matching with decreasing priority:
|
|
39
|
+
* 1. Exact match: Returns 10 * weight (highest score)
|
|
40
|
+
* 2. Prefix match: Returns 5 * weight (medium score)
|
|
41
|
+
* 3. Contains match: Returns 3 * weight (lowest score)
|
|
42
|
+
* 4. No match: Returns 0
|
|
43
|
+
*
|
|
44
|
+
* This method performs case-insensitive matching by converting both
|
|
45
|
+
* the input text and query to lowercase before comparison.
|
|
46
|
+
*
|
|
47
|
+
* @param text - The text field to evaluate (e.g., tool name or description)
|
|
48
|
+
* @param query - The lowercase search query to match against
|
|
49
|
+
* @param weight - The importance weight for this field (higher = more important)
|
|
50
|
+
* @returns A numerical score based on the match type multiplied by the field weight
|
|
51
|
+
*/
|
|
52
|
+
private scoreField;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=search-scorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-scorer.d.ts","sourceRoot":"","sources":["../../../../../src/services/search/search-scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAyB5C;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,UAAU;CAiBnB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SearchScorer class provides relevance scoring functionality for search results.
|
|
3
|
+
* It calculates weighted scores for tools based on how well their fields (name, description)
|
|
4
|
+
* match against a given search query using different matching strategies.
|
|
5
|
+
*
|
|
6
|
+
* The scoring algorithm prioritizes matches in the following order:
|
|
7
|
+
* 1. Exact name matches (highest priority)
|
|
8
|
+
* 2. Name prefix matches (second highest priority)
|
|
9
|
+
* 3. Partial matches in name or description (lower priority)
|
|
10
|
+
*
|
|
11
|
+
* Each field has configurable weights that determine its importance in the final score.
|
|
12
|
+
* The name field typically has a higher weight than the description field to ensure
|
|
13
|
+
* that tools with relevant names appear higher in search results.
|
|
14
|
+
*
|
|
15
|
+
* This class is used by the SearchCoreService to rank and sort search results
|
|
16
|
+
* based on relevance to provide better user experience in tool discovery.
|
|
17
|
+
*/
|
|
18
|
+
export class SearchScorer {
|
|
19
|
+
/**
|
|
20
|
+
* Calculates the relevance score for a tool against a search query.
|
|
21
|
+
*
|
|
22
|
+
* The scoring logic ensures proper ranking by:
|
|
23
|
+
* - Giving exact name matches the highest possible score (120 points)
|
|
24
|
+
* - Ensuring name prefix matches have higher scores than any combination of
|
|
25
|
+
* partial matches in other fields
|
|
26
|
+
* - Combining scores from multiple fields while maintaining proper priorities
|
|
27
|
+
*
|
|
28
|
+
* @param tool - The Tool object to score against the query
|
|
29
|
+
* @param query - The search query string to match against tool fields
|
|
30
|
+
* @returns A numerical score representing the relevance of the tool to the query
|
|
31
|
+
* Higher scores indicate better matches
|
|
32
|
+
*/
|
|
33
|
+
scoreTool(tool, query) {
|
|
34
|
+
const lowerQuery = query.toLowerCase();
|
|
35
|
+
// Calculate scores for each field
|
|
36
|
+
const nameScore = this.scoreField(tool.name, lowerQuery, 12);
|
|
37
|
+
const descScore = this.scoreField(tool.description || '', lowerQuery, 3);
|
|
38
|
+
// Ensure exact name match has the highest score
|
|
39
|
+
if (nameScore === 120) {
|
|
40
|
+
// 10 * 12 = 120 indicates exact name match
|
|
41
|
+
return nameScore;
|
|
42
|
+
}
|
|
43
|
+
// If no exact name match, ensure name prefix match score is higher than other combined scores
|
|
44
|
+
if (nameScore === 60) {
|
|
45
|
+
// 5 * 12 = 60 indicates name prefix match
|
|
46
|
+
// Limit description score to ensure it doesn't exceed name prefix match score
|
|
47
|
+
const additionalScore = Math.min(descScore, 55);
|
|
48
|
+
return nameScore + additionalScore;
|
|
49
|
+
}
|
|
50
|
+
// For other cases, return the sum of scores from all fields
|
|
51
|
+
return nameScore + descScore;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Calculates the score for a single text field against a search query.
|
|
55
|
+
*
|
|
56
|
+
* The scoring uses three levels of matching with decreasing priority:
|
|
57
|
+
* 1. Exact match: Returns 10 * weight (highest score)
|
|
58
|
+
* 2. Prefix match: Returns 5 * weight (medium score)
|
|
59
|
+
* 3. Contains match: Returns 3 * weight (lowest score)
|
|
60
|
+
* 4. No match: Returns 0
|
|
61
|
+
*
|
|
62
|
+
* This method performs case-insensitive matching by converting both
|
|
63
|
+
* the input text and query to lowercase before comparison.
|
|
64
|
+
*
|
|
65
|
+
* @param text - The text field to evaluate (e.g., tool name or description)
|
|
66
|
+
* @param query - The lowercase search query to match against
|
|
67
|
+
* @param weight - The importance weight for this field (higher = more important)
|
|
68
|
+
* @returns A numerical score based on the match type multiplied by the field weight
|
|
69
|
+
*/
|
|
70
|
+
scoreField(text, query, weight) {
|
|
71
|
+
const lowerText = text.toLowerCase();
|
|
72
|
+
if (lowerText === query) {
|
|
73
|
+
return 10 * weight;
|
|
74
|
+
}
|
|
75
|
+
if (lowerText.startsWith(query)) {
|
|
76
|
+
return 5 * weight;
|
|
77
|
+
}
|
|
78
|
+
if (lowerText.includes(query)) {
|
|
79
|
+
return 3 * weight;
|
|
80
|
+
}
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Tool } from '../../../shared/models/tool.model.js';
|
|
2
|
+
export interface SearchResult {
|
|
3
|
+
tool: Tool;
|
|
4
|
+
score: number;
|
|
5
|
+
}
|
|
6
|
+
export interface SearchOptions {
|
|
7
|
+
mode: 'fuzzy';
|
|
8
|
+
filters?: {
|
|
9
|
+
serverId?: string;
|
|
10
|
+
tags?: Record<string, string>;
|
|
11
|
+
};
|
|
12
|
+
limit?: number;
|
|
13
|
+
offset?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface SearchQuery {
|
|
16
|
+
original: string;
|
|
17
|
+
tokens: string[];
|
|
18
|
+
filters?: Record<string, never>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/services/search/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/session/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC"}
|