@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.
Files changed (499) hide show
  1. package/CHANGELOG.md +228 -0
  2. package/LICENSE +21 -0
  3. package/README.md +354 -0
  4. package/dist/client/assets/HomeView-f901HeKw.js +1 -0
  5. package/dist/client/assets/ResourceDetailView-BdOaL_-o.css +1 -0
  6. package/dist/client/assets/ResourceDetailView-Bz66ZjfY.js +1 -0
  7. package/dist/client/assets/ResourcesView-CjMklkyv.css +1 -0
  8. package/dist/client/assets/ResourcesView-lI_fItfA.js +1 -0
  9. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +1 -0
  10. package/dist/client/assets/ServerDashboard-Bgx8WVkx.js +2 -0
  11. package/dist/client/assets/ServerListView-Bws09jNR.css +1 -0
  12. package/dist/client/assets/ServerListView-CP6Ffkfx.js +30 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +1 -0
  14. package/dist/client/assets/SessionsView-D68qKR4D.js +1 -0
  15. package/dist/client/assets/SettingsView-BPYfO9BE.js +1 -0
  16. package/dist/client/assets/ToolCallDialog-Br8FNebN.js +1 -0
  17. package/dist/client/assets/ToolCallDialog-C7eh7jHE.css +1 -0
  18. package/dist/client/assets/ToolsView-B6hUiR43.js +1 -0
  19. package/dist/client/assets/ToolsView-BLnU8cV6.css +1 -0
  20. package/dist/client/assets/_baseClone-DCmK847M.js +1 -0
  21. package/dist/client/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
  22. package/dist/client/assets/el-form-item-BVMLpmVC.css +1 -0
  23. package/dist/client/assets/el-form-item-DM0q2hmO.js +12 -0
  24. package/dist/client/assets/el-input-BtI9NECe.js +1 -0
  25. package/dist/client/assets/el-input-CmuHb8HS.css +1 -0
  26. package/dist/client/assets/el-loading-CChNmKeI.js +1 -0
  27. package/dist/client/assets/el-loading-bpKhqqQq.css +1 -0
  28. package/dist/client/assets/el-overlay-B2ZKM6Up.css +1 -0
  29. package/dist/client/assets/el-overlay-lZZbPmsX.js +1 -0
  30. package/dist/client/assets/el-select-BXztu2b5.js +1 -0
  31. package/dist/client/assets/el-select-C0U_l4IZ.css +1 -0
  32. package/dist/client/assets/el-tab-pane-CnNoQHsR.css +1 -0
  33. package/dist/client/assets/el-tab-pane-Dy9ruaEX.js +1 -0
  34. package/dist/client/assets/el-table-column-98UyVgBH.js +1 -0
  35. package/dist/client/assets/el-table-column-T_mV9jNw.css +1 -0
  36. package/dist/client/assets/el-tag-B5lLT51E.js +1 -0
  37. package/dist/client/assets/el-tag-DjxZVOpb.css +1 -0
  38. package/dist/client/assets/event-BB_Ol6Sd.js +1 -0
  39. package/dist/client/assets/index-BgKcmWJr.js +1 -0
  40. package/dist/client/assets/index-BsDWtoIl.css +1 -0
  41. package/dist/client/assets/index-BzQXG7no.js +1 -0
  42. package/dist/client/assets/index-CSTs2jYk.js +2 -0
  43. package/dist/client/assets/omit-Bx5HJNV_.js +1 -0
  44. package/dist/client/assets/raf-B9VDMtMF.js +1 -0
  45. package/dist/client/assets/typescript-Bp3YSIOJ.js +1 -0
  46. package/dist/client/assets/vnode-B8aJx8u4.js +1 -0
  47. package/dist/client/assets/vue-vendor-6ny5zj9i.js +3 -0
  48. package/dist/client/index.html +15 -0
  49. package/dist/server/shared/index.d.ts +3 -0
  50. package/dist/server/shared/index.d.ts.map +1 -0
  51. package/dist/server/shared/index.js +2 -0
  52. package/dist/server/shared/models/index.d.ts +4 -0
  53. package/dist/server/shared/models/index.d.ts.map +1 -0
  54. package/dist/server/shared/models/index.js +3 -0
  55. package/dist/server/shared/models/resource.model.d.ts +8 -0
  56. package/dist/server/shared/models/resource.model.d.ts.map +1 -0
  57. package/dist/server/shared/models/resource.model.js +1 -0
  58. package/dist/server/shared/models/server.model.d.ts +57 -0
  59. package/dist/server/shared/models/server.model.d.ts.map +1 -0
  60. package/dist/server/shared/models/server.model.js +1 -0
  61. package/dist/server/shared/models/session.model.d.ts +73 -0
  62. package/dist/server/shared/models/session.model.d.ts.map +1 -0
  63. package/dist/server/shared/models/session.model.js +70 -0
  64. package/dist/server/shared/models/tool.model.d.ts +22 -0
  65. package/dist/server/shared/models/tool.model.d.ts.map +1 -0
  66. package/dist/server/shared/models/tool.model.js +1 -0
  67. package/dist/server/shared/types/client.types.d.ts +35 -0
  68. package/dist/server/shared/types/client.types.d.ts.map +1 -0
  69. package/dist/server/shared/types/client.types.js +5 -0
  70. package/dist/server/shared/types/common.types.d.ts +5 -0
  71. package/dist/server/shared/types/common.types.d.ts.map +1 -0
  72. package/dist/server/shared/types/common.types.js +2 -0
  73. package/dist/server/shared/types/index.d.ts +4 -0
  74. package/dist/server/shared/types/index.d.ts.map +1 -0
  75. package/dist/server/shared/types/index.js +3 -0
  76. package/dist/server/shared/types/session.types.d.ts +15 -0
  77. package/dist/server/shared/types/session.types.d.ts.map +1 -0
  78. package/dist/server/shared/types/session.types.js +5 -0
  79. package/dist/server/shared/types/websocket.types.d.ts +177 -0
  80. package/dist/server/shared/types/websocket.types.d.ts.map +1 -0
  81. package/dist/server/shared/types/websocket.types.js +25 -0
  82. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts +13 -0
  83. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -0
  84. package/dist/server/src/api/mcp/debug-response-wrapper.js +271 -0
  85. package/dist/server/src/api/mcp/gateway.d.ts +14 -0
  86. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -0
  87. package/dist/server/src/api/mcp/gateway.js +116 -0
  88. package/dist/server/src/api/mcp/session-context-extractor.d.ts +47 -0
  89. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -0
  90. package/dist/server/src/api/mcp/session-context-extractor.js +127 -0
  91. package/dist/server/src/api/mcp/sse-stream-manager.d.ts +13 -0
  92. package/dist/server/src/api/mcp/sse-stream-manager.d.ts.map +1 -0
  93. package/dist/server/src/api/mcp/sse-stream-manager.js +40 -0
  94. package/dist/server/src/api/web/clients.d.ts +30 -0
  95. package/dist/server/src/api/web/clients.d.ts.map +1 -0
  96. package/dist/server/src/api/web/clients.js +41 -0
  97. package/dist/server/src/api/web/config.d.ts +21 -0
  98. package/dist/server/src/api/web/config.d.ts.map +1 -0
  99. package/dist/server/src/api/web/config.js +119 -0
  100. package/dist/server/src/api/web/health.d.ts +21 -0
  101. package/dist/server/src/api/web/health.d.ts.map +1 -0
  102. package/dist/server/src/api/web/health.js +24 -0
  103. package/dist/server/src/api/web/hub-tools.d.ts +30 -0
  104. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -0
  105. package/dist/server/src/api/web/hub-tools.js +202 -0
  106. package/dist/server/src/api/web/logs.d.ts +30 -0
  107. package/dist/server/src/api/web/logs.d.ts.map +1 -0
  108. package/dist/server/src/api/web/logs.js +141 -0
  109. package/dist/server/src/api/web/mcp-status.d.ts +29 -0
  110. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -0
  111. package/dist/server/src/api/web/mcp-status.js +126 -0
  112. package/dist/server/src/api/web/resources.d.ts +28 -0
  113. package/dist/server/src/api/web/resources.d.ts.map +1 -0
  114. package/dist/server/src/api/web/resources.js +93 -0
  115. package/dist/server/src/api/web/search.d.ts +26 -0
  116. package/dist/server/src/api/web/search.d.ts.map +1 -0
  117. package/dist/server/src/api/web/search.js +62 -0
  118. package/dist/server/src/api/web/servers.d.ts +33 -0
  119. package/dist/server/src/api/web/servers.d.ts.map +1 -0
  120. package/dist/server/src/api/web/servers.js +235 -0
  121. package/dist/server/src/api/web/sessions.d.ts +29 -0
  122. package/dist/server/src/api/web/sessions.d.ts.map +1 -0
  123. package/dist/server/src/api/web/sessions.js +104 -0
  124. package/dist/server/src/api/ws/events.d.ts +29 -0
  125. package/dist/server/src/api/ws/events.d.ts.map +1 -0
  126. package/dist/server/src/api/ws/events.js +44 -0
  127. package/dist/server/src/api/ws/ws-handler.d.ts +83 -0
  128. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -0
  129. package/dist/server/src/api/ws/ws-handler.js +217 -0
  130. package/dist/server/src/app.d.ts +24 -0
  131. package/dist/server/src/app.d.ts.map +1 -0
  132. package/dist/server/src/app.js +108 -0
  133. package/dist/server/src/cli/commands/list.d.ts +71 -0
  134. package/dist/server/src/cli/commands/list.d.ts.map +1 -0
  135. package/dist/server/src/cli/commands/list.js +97 -0
  136. package/dist/server/src/cli/commands/restart.d.ts +42 -0
  137. package/dist/server/src/cli/commands/restart.d.ts.map +1 -0
  138. package/dist/server/src/cli/commands/restart.js +61 -0
  139. package/dist/server/src/cli/commands/start.d.ts +43 -0
  140. package/dist/server/src/cli/commands/start.d.ts.map +1 -0
  141. package/dist/server/src/cli/commands/start.js +160 -0
  142. package/dist/server/src/cli/commands/status.d.ts +39 -0
  143. package/dist/server/src/cli/commands/status.d.ts.map +1 -0
  144. package/dist/server/src/cli/commands/status.js +164 -0
  145. package/dist/server/src/cli/commands/stop.d.ts +34 -0
  146. package/dist/server/src/cli/commands/stop.d.ts.map +1 -0
  147. package/dist/server/src/cli/commands/stop.js +47 -0
  148. package/dist/server/src/cli/commands/ui.d.ts +44 -0
  149. package/dist/server/src/cli/commands/ui.d.ts.map +1 -0
  150. package/dist/server/src/cli/commands/ui.js +95 -0
  151. package/dist/server/src/cli/index.d.ts +62 -0
  152. package/dist/server/src/cli/index.d.ts.map +1 -0
  153. package/dist/server/src/cli/index.js +88 -0
  154. package/dist/server/src/cli/parse-args.d.ts +108 -0
  155. package/dist/server/src/cli/parse-args.d.ts.map +1 -0
  156. package/dist/server/src/cli/parse-args.js +131 -0
  157. package/dist/server/src/cli/server.d.ts +171 -0
  158. package/dist/server/src/cli/server.d.ts.map +1 -0
  159. package/dist/server/src/cli/server.js +246 -0
  160. package/dist/server/src/config/config-change-logger.d.ts +16 -0
  161. package/dist/server/src/config/config-change-logger.d.ts.map +1 -0
  162. package/dist/server/src/config/config-change-logger.js +43 -0
  163. package/dist/server/src/config/config-loader.d.ts +22 -0
  164. package/dist/server/src/config/config-loader.d.ts.map +1 -0
  165. package/dist/server/src/config/config-loader.js +66 -0
  166. package/dist/server/src/config/config-manager.d.ts +158 -0
  167. package/dist/server/src/config/config-manager.d.ts.map +1 -0
  168. package/dist/server/src/config/config-manager.js +246 -0
  169. package/dist/server/src/config/config-saver.d.ts +16 -0
  170. package/dist/server/src/config/config-saver.d.ts.map +1 -0
  171. package/dist/server/src/config/config-saver.js +28 -0
  172. package/dist/server/src/config/config.schema.d.ts +108 -0
  173. package/dist/server/src/config/config.schema.d.ts.map +1 -0
  174. package/dist/server/src/config/config.schema.js +103 -0
  175. package/dist/server/src/config/server-config-manager.d.ts +74 -0
  176. package/dist/server/src/config/server-config-manager.d.ts.map +1 -0
  177. package/dist/server/src/config/server-config-manager.js +157 -0
  178. package/dist/server/src/config/type-converter.d.ts +13 -0
  179. package/dist/server/src/config/type-converter.d.ts.map +1 -0
  180. package/dist/server/src/config/type-converter.js +37 -0
  181. package/dist/server/src/index.d.ts +3 -0
  182. package/dist/server/src/index.d.ts.map +1 -0
  183. package/dist/server/src/index.js +352 -0
  184. package/dist/server/src/models/event.model.d.ts +106 -0
  185. package/dist/server/src/models/event.model.d.ts.map +1 -0
  186. package/dist/server/src/models/event.model.js +5 -0
  187. package/dist/server/src/models/server.model.d.ts +19 -0
  188. package/dist/server/src/models/server.model.d.ts.map +1 -0
  189. package/dist/server/src/models/server.model.js +1 -0
  190. package/dist/server/src/models/system-tools.constants.d.ts +73 -0
  191. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -0
  192. package/dist/server/src/models/system-tools.constants.js +31 -0
  193. package/dist/server/src/models/types.d.ts +84 -0
  194. package/dist/server/src/models/types.d.ts.map +1 -0
  195. package/dist/server/src/models/types.js +67 -0
  196. package/dist/server/src/pid/file.d.ts +26 -0
  197. package/dist/server/src/pid/file.d.ts.map +1 -0
  198. package/dist/server/src/pid/file.js +68 -0
  199. package/dist/server/src/pid/manager.d.ts +98 -0
  200. package/dist/server/src/pid/manager.d.ts.map +1 -0
  201. package/dist/server/src/pid/manager.js +158 -0
  202. package/dist/server/src/pid/types.d.ts +13 -0
  203. package/dist/server/src/pid/types.d.ts.map +1 -0
  204. package/dist/server/src/pid/types.js +4 -0
  205. package/dist/server/src/server/dev-server.d.ts +2 -0
  206. package/dist/server/src/server/dev-server.d.ts.map +1 -0
  207. package/dist/server/src/server/dev-server.js +171 -0
  208. package/dist/server/src/server/runner.d.ts +57 -0
  209. package/dist/server/src/server/runner.d.ts.map +1 -0
  210. package/dist/server/src/server/runner.js +163 -0
  211. package/dist/server/src/services/client-tracker.service.d.ts +132 -0
  212. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/client-tracker.service.js +203 -0
  214. package/dist/server/src/services/connection/connection-manager.d.ts +478 -0
  215. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -0
  216. package/dist/server/src/services/connection/connection-manager.js +929 -0
  217. package/dist/server/src/services/connection/index.d.ts +6 -0
  218. package/dist/server/src/services/connection/index.d.ts.map +1 -0
  219. package/dist/server/src/services/connection/index.js +4 -0
  220. package/dist/server/src/services/connection/tool-cache.d.ts +122 -0
  221. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -0
  222. package/dist/server/src/services/connection/tool-cache.js +202 -0
  223. package/dist/server/src/services/connection/types.d.ts +30 -0
  224. package/dist/server/src/services/connection/types.d.ts.map +1 -0
  225. package/dist/server/src/services/connection/types.js +1 -0
  226. package/dist/server/src/services/event-bus.service.d.ts +169 -0
  227. package/dist/server/src/services/event-bus.service.d.ts.map +1 -0
  228. package/dist/server/src/services/event-bus.service.js +200 -0
  229. package/dist/server/src/services/gateway/gateway.service.d.ts +61 -0
  230. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -0
  231. package/dist/server/src/services/gateway/gateway.service.js +107 -0
  232. package/dist/server/src/services/gateway/index.d.ts +8 -0
  233. package/dist/server/src/services/gateway/index.d.ts.map +1 -0
  234. package/dist/server/src/services/gateway/index.js +6 -0
  235. package/dist/server/src/services/gateway/log-formatter.d.ts +26 -0
  236. package/dist/server/src/services/gateway/log-formatter.d.ts.map +1 -0
  237. package/dist/server/src/services/gateway/log-formatter.js +66 -0
  238. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts +13 -0
  239. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -0
  240. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +131 -0
  241. package/dist/server/src/services/gateway/request-handlers/index.d.ts +9 -0
  242. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -0
  243. package/dist/server/src/services/gateway/request-handlers/index.js +8 -0
  244. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +11 -0
  245. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -0
  246. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +85 -0
  247. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts +11 -0
  248. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -0
  249. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +56 -0
  250. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts +11 -0
  251. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -0
  252. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +228 -0
  253. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts +11 -0
  254. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -0
  255. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +79 -0
  256. package/dist/server/src/services/gateway/tool-list-generator.d.ts +23 -0
  257. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -0
  258. package/dist/server/src/services/gateway/tool-list-generator.js +115 -0
  259. package/dist/server/src/services/gateway/types.d.ts +27 -0
  260. package/dist/server/src/services/gateway/types.d.ts.map +1 -0
  261. package/dist/server/src/services/gateway/types.js +4 -0
  262. package/dist/server/src/services/gateway.service.d.ts +7 -0
  263. package/dist/server/src/services/gateway.service.d.ts.map +1 -0
  264. package/dist/server/src/services/gateway.service.js +6 -0
  265. package/dist/server/src/services/hub-manager.service.d.ts +299 -0
  266. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -0
  267. package/dist/server/src/services/hub-manager.service.js +413 -0
  268. package/dist/server/src/services/hub-tools/index.d.ts +10 -0
  269. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -0
  270. package/dist/server/src/services/hub-tools/index.js +6 -0
  271. package/dist/server/src/services/hub-tools/resource-generator.d.ts +63 -0
  272. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -0
  273. package/dist/server/src/services/hub-tools/resource-generator.js +141 -0
  274. package/dist/server/src/services/hub-tools/server-selector.d.ts +63 -0
  275. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -0
  276. package/dist/server/src/services/hub-tools/server-selector.js +108 -0
  277. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +47 -0
  278. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -0
  279. package/dist/server/src/services/hub-tools/system-tool-definitions.js +225 -0
  280. package/dist/server/src/services/hub-tools/tool-search.d.ts +85 -0
  281. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -0
  282. package/dist/server/src/services/hub-tools/tool-search.js +115 -0
  283. package/dist/server/src/services/hub-tools/types.d.ts +42 -0
  284. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -0
  285. package/dist/server/src/services/hub-tools/types.js +1 -0
  286. package/dist/server/src/services/hub-tools.service.d.ts +235 -0
  287. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -0
  288. package/dist/server/src/services/hub-tools.service.js +457 -0
  289. package/dist/server/src/services/log-storage.service.d.ts +177 -0
  290. package/dist/server/src/services/log-storage.service.d.ts.map +1 -0
  291. package/dist/server/src/services/log-storage.service.js +243 -0
  292. package/dist/server/src/services/mcp-connection-manager.d.ts +7 -0
  293. package/dist/server/src/services/mcp-connection-manager.d.ts.map +1 -0
  294. package/dist/server/src/services/mcp-connection-manager.js +6 -0
  295. package/dist/server/src/services/mcp-session-manager.d.ts +6 -0
  296. package/dist/server/src/services/mcp-session-manager.d.ts.map +1 -0
  297. package/dist/server/src/services/mcp-session-manager.js +4 -0
  298. package/dist/server/src/services/search/index.d.ts +5 -0
  299. package/dist/server/src/services/search/index.d.ts.map +1 -0
  300. package/dist/server/src/services/search/index.js +5 -0
  301. package/dist/server/src/services/search/search-cache.d.ts +132 -0
  302. package/dist/server/src/services/search/search-cache.d.ts.map +1 -0
  303. package/dist/server/src/services/search/search-cache.js +151 -0
  304. package/dist/server/src/services/search/search-core.service.d.ts +108 -0
  305. package/dist/server/src/services/search/search-core.service.d.ts.map +1 -0
  306. package/dist/server/src/services/search/search-core.service.js +187 -0
  307. package/dist/server/src/services/search/search-scorer.d.ts +54 -0
  308. package/dist/server/src/services/search/search-scorer.d.ts.map +1 -0
  309. package/dist/server/src/services/search/search-scorer.js +83 -0
  310. package/dist/server/src/services/search/types.d.ts +20 -0
  311. package/dist/server/src/services/search/types.d.ts.map +1 -0
  312. package/dist/server/src/services/search/types.js +1 -0
  313. package/dist/server/src/services/session/index.d.ts +6 -0
  314. package/dist/server/src/services/session/index.d.ts.map +1 -0
  315. package/dist/server/src/services/session/index.js +4 -0
  316. package/dist/server/src/services/session/session-manager.d.ts +352 -0
  317. package/dist/server/src/services/session/session-manager.d.ts.map +1 -0
  318. package/dist/server/src/services/session/session-manager.js +835 -0
  319. package/dist/server/src/services/session/types.d.ts +32 -0
  320. package/dist/server/src/services/session/types.d.ts.map +1 -0
  321. package/dist/server/src/services/session/types.js +1 -0
  322. package/dist/server/src/services/simple-search.service.d.ts +67 -0
  323. package/dist/server/src/services/simple-search.service.d.ts.map +1 -0
  324. package/dist/server/src/services/simple-search.service.js +82 -0
  325. package/dist/server/src/services/system-tool-handler.d.ts +10 -0
  326. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -0
  327. package/dist/server/src/services/system-tool-handler.js +77 -0
  328. package/dist/server/src/utils/error-handler.d.ts +18 -0
  329. package/dist/server/src/utils/error-handler.d.ts.map +1 -0
  330. package/dist/server/src/utils/error-handler.js +59 -0
  331. package/dist/server/src/utils/format-utils.d.ts +23 -0
  332. package/dist/server/src/utils/format-utils.d.ts.map +1 -0
  333. package/dist/server/src/utils/format-utils.js +58 -0
  334. package/dist/server/src/utils/index.d.ts +2 -0
  335. package/dist/server/src/utils/index.d.ts.map +1 -0
  336. package/dist/server/src/utils/index.js +1 -0
  337. package/dist/server/src/utils/json-utils.d.ts +82 -0
  338. package/dist/server/src/utils/json-utils.d.ts.map +1 -0
  339. package/dist/server/src/utils/json-utils.js +204 -0
  340. package/dist/server/src/utils/log-rotator.d.ts +223 -0
  341. package/dist/server/src/utils/log-rotator.d.ts.map +1 -0
  342. package/dist/server/src/utils/log-rotator.js +306 -0
  343. package/dist/server/src/utils/logger/dev-logger.d.ts +39 -0
  344. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -0
  345. package/dist/server/src/utils/logger/dev-logger.js +63 -0
  346. package/dist/server/src/utils/logger/index.d.ts +36 -0
  347. package/dist/server/src/utils/logger/index.d.ts.map +1 -0
  348. package/dist/server/src/utils/logger/index.js +46 -0
  349. package/dist/server/src/utils/logger/log-colors.d.ts +27 -0
  350. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -0
  351. package/dist/server/src/utils/logger/log-colors.js +41 -0
  352. package/dist/server/src/utils/logger/log-context.d.ts +13 -0
  353. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -0
  354. package/dist/server/src/utils/logger/log-context.js +5 -0
  355. package/dist/server/src/utils/logger/log-formatter.d.ts +47 -0
  356. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -0
  357. package/dist/server/src/utils/logger/log-formatter.js +150 -0
  358. package/dist/server/src/utils/logger/log-modules.d.ts +141 -0
  359. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -0
  360. package/dist/server/src/utils/logger/log-modules.js +81 -0
  361. package/dist/server/src/utils/logger/log-output.d.ts +68 -0
  362. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -0
  363. package/dist/server/src/utils/logger/log-output.js +320 -0
  364. package/dist/server/src/utils/logger/logger.d.ts +190 -0
  365. package/dist/server/src/utils/logger/logger.d.ts.map +1 -0
  366. package/dist/server/src/utils/logger/logger.js +350 -0
  367. package/dist/server/src/utils/logger.d.ts +12 -0
  368. package/dist/server/src/utils/logger.d.ts.map +1 -0
  369. package/dist/server/src/utils/logger.js +12 -0
  370. package/dist/server/src/utils/mcp-error-handler.d.ts +162 -0
  371. package/dist/server/src/utils/mcp-error-handler.d.ts.map +1 -0
  372. package/dist/server/src/utils/mcp-error-handler.js +270 -0
  373. package/dist/server/src/utils/port-checker.d.ts +16 -0
  374. package/dist/server/src/utils/port-checker.d.ts.map +1 -0
  375. package/dist/server/src/utils/port-checker.js +242 -0
  376. package/dist/server/src/utils/request-context.d.ts +71 -0
  377. package/dist/server/src/utils/request-context.d.ts.map +1 -0
  378. package/dist/server/src/utils/request-context.js +73 -0
  379. package/dist/server/src/utils/tool-args-parser.d.ts +17 -0
  380. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -0
  381. package/dist/server/src/utils/tool-args-parser.js +34 -0
  382. package/dist/server/src/utils/transports/sse-transport.d.ts +104 -0
  383. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -0
  384. package/dist/server/src/utils/transports/sse-transport.js +189 -0
  385. package/dist/server/src/utils/transports/stdio-transport.d.ts +122 -0
  386. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -0
  387. package/dist/server/src/utils/transports/stdio-transport.js +324 -0
  388. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +146 -0
  389. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -0
  390. package/dist/server/src/utils/transports/streamable-http-transport.js +212 -0
  391. package/dist/server/src/utils/transports/transport-factory.d.ts +26 -0
  392. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -0
  393. package/dist/server/src/utils/transports/transport-factory.js +104 -0
  394. package/dist/server/src/utils/transports/transport.interface.d.ts +35 -0
  395. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -0
  396. package/dist/server/src/utils/transports/transport.interface.js +1 -0
  397. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts +2 -0
  398. package/dist/server/tests/contract/mcp-protocol/initialize.test.d.ts.map +1 -0
  399. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +103 -0
  400. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts +2 -0
  401. package/dist/server/tests/contract/mcp-protocol/tools-call.test.d.ts.map +1 -0
  402. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +181 -0
  403. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts +2 -0
  404. package/dist/server/tests/contract/mcp-protocol/tools-list.test.d.ts.map +1 -0
  405. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +155 -0
  406. package/dist/server/tests/evaluation/evaluation.test.d.ts +2 -0
  407. package/dist/server/tests/evaluation/evaluation.test.d.ts.map +1 -0
  408. package/dist/server/tests/evaluation/evaluation.test.js +102 -0
  409. package/dist/server/tests/helpers/sdk-test-helpers.d.ts +32 -0
  410. package/dist/server/tests/helpers/sdk-test-helpers.d.ts.map +1 -0
  411. package/dist/server/tests/helpers/sdk-test-helpers.js +82 -0
  412. package/dist/server/tests/integration/api/gateway.test.d.ts +2 -0
  413. package/dist/server/tests/integration/api/gateway.test.d.ts.map +1 -0
  414. package/dist/server/tests/integration/api/gateway.test.js +366 -0
  415. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts +2 -0
  416. package/dist/server/tests/integration/gateway/fault-tolerance.test.d.ts.map +1 -0
  417. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +109 -0
  418. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts +2 -0
  419. package/dist/server/tests/integration/gateway/mcp-connection.test.d.ts.map +1 -0
  420. package/dist/server/tests/integration/gateway/mcp-connection.test.js +149 -0
  421. package/dist/server/tests/server.test.d.ts +2 -0
  422. package/dist/server/tests/server.test.d.ts.map +1 -0
  423. package/dist/server/tests/server.test.js +95 -0
  424. package/dist/server/tests/setup.d.ts +7 -0
  425. package/dist/server/tests/setup.d.ts.map +1 -0
  426. package/dist/server/tests/setup.js +53 -0
  427. package/dist/server/tests/types/logger-test-helpers.d.ts +17 -0
  428. package/dist/server/tests/types/logger-test-helpers.d.ts.map +1 -0
  429. package/dist/server/tests/types/logger-test-helpers.js +4 -0
  430. package/dist/server/tests/types/test-helpers.d.ts +27 -0
  431. package/dist/server/tests/types/test-helpers.d.ts.map +1 -0
  432. package/dist/server/tests/types/test-helpers.js +4 -0
  433. package/dist/server/tests/unit/cli/basic-cli.test.d.ts +2 -0
  434. package/dist/server/tests/unit/cli/basic-cli.test.d.ts.map +1 -0
  435. package/dist/server/tests/unit/cli/basic-cli.test.js +33 -0
  436. package/dist/server/tests/unit/cli/cli.test.d.ts +2 -0
  437. package/dist/server/tests/unit/cli/cli.test.d.ts.map +1 -0
  438. package/dist/server/tests/unit/cli/cli.test.js +17 -0
  439. package/dist/server/tests/unit/cli/commands.test.d.ts +2 -0
  440. package/dist/server/tests/unit/cli/commands.test.d.ts.map +1 -0
  441. package/dist/server/tests/unit/cli/commands.test.js +75 -0
  442. package/dist/server/tests/unit/cli/server.test.d.ts +2 -0
  443. package/dist/server/tests/unit/cli/server.test.d.ts.map +1 -0
  444. package/dist/server/tests/unit/cli/server.test.js +68 -0
  445. package/dist/server/tests/unit/server/runner.test.d.ts +2 -0
  446. package/dist/server/tests/unit/server/runner.test.d.ts.map +1 -0
  447. package/dist/server/tests/unit/server/runner.test.js +488 -0
  448. package/dist/server/tests/unit/server/setup.d.ts +2 -0
  449. package/dist/server/tests/unit/server/setup.d.ts.map +1 -0
  450. package/dist/server/tests/unit/server/setup.js +21 -0
  451. package/dist/server/tests/unit/services/gateway-logging.test.d.ts +2 -0
  452. package/dist/server/tests/unit/services/gateway-logging.test.d.ts.map +1 -0
  453. package/dist/server/tests/unit/services/gateway-logging.test.js +47 -0
  454. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts +2 -0
  455. package/dist/server/tests/unit/services/hub-manager-service.test.d.ts.map +1 -0
  456. package/dist/server/tests/unit/services/hub-manager-service.test.js +140 -0
  457. package/dist/server/tests/unit/services/hub-manager.test.d.ts +2 -0
  458. package/dist/server/tests/unit/services/hub-manager.test.d.ts.map +1 -0
  459. package/dist/server/tests/unit/services/hub-manager.test.js +98 -0
  460. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts +2 -0
  461. package/dist/server/tests/unit/services/hub-tools.service.test.d.ts.map +1 -0
  462. package/dist/server/tests/unit/services/hub-tools.service.test.js +674 -0
  463. package/dist/server/tests/unit/services/search/search-cache.test.d.ts +2 -0
  464. package/dist/server/tests/unit/services/search/search-cache.test.d.ts.map +1 -0
  465. package/dist/server/tests/unit/services/search/search-cache.test.js +58 -0
  466. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts +2 -0
  467. package/dist/server/tests/unit/services/search/search-core.service.test.d.ts.map +1 -0
  468. package/dist/server/tests/unit/services/search/search-core.service.test.js +84 -0
  469. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts +2 -0
  470. package/dist/server/tests/unit/services/search/search-scorer.test.d.ts.map +1 -0
  471. package/dist/server/tests/unit/services/search/search-scorer.test.js +97 -0
  472. package/dist/server/tests/unit/services/session-manager.test.d.ts +2 -0
  473. package/dist/server/tests/unit/services/session-manager.test.d.ts.map +1 -0
  474. package/dist/server/tests/unit/services/session-manager.test.js +481 -0
  475. package/dist/server/tests/unit/utils/config.test.d.ts +2 -0
  476. package/dist/server/tests/unit/utils/config.test.d.ts.map +1 -0
  477. package/dist/server/tests/unit/utils/config.test.js +634 -0
  478. package/dist/server/tests/unit/utils/json-utils.test.d.ts +2 -0
  479. package/dist/server/tests/unit/utils/json-utils.test.d.ts.map +1 -0
  480. package/dist/server/tests/unit/utils/json-utils.test.js +296 -0
  481. package/dist/server/tests/unit/utils/log-rotator.test.d.ts +2 -0
  482. package/dist/server/tests/unit/utils/log-rotator.test.d.ts.map +1 -0
  483. package/dist/server/tests/unit/utils/log-rotator.test.js +296 -0
  484. package/dist/server/tests/unit/utils/logger.test.d.ts +2 -0
  485. package/dist/server/tests/unit/utils/logger.test.d.ts.map +1 -0
  486. package/dist/server/tests/unit/utils/logger.test.js +462 -0
  487. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts +2 -0
  488. package/dist/server/tests/unit/utils/mcp-error-handler.test.d.ts.map +1 -0
  489. package/dist/server/tests/unit/utils/mcp-error-handler.test.js +163 -0
  490. package/dist/server/tests/unit/utils/request-context.test.d.ts +2 -0
  491. package/dist/server/tests/unit/utils/request-context.test.d.ts.map +1 -0
  492. package/dist/server/tests/unit/utils/request-context.test.js +82 -0
  493. package/dist/server/vite.config.d.ts +3 -0
  494. package/dist/server/vite.config.d.ts.map +1 -0
  495. package/dist/server/vite.config.js +160 -0
  496. package/dist/server/vitest.config.d.ts +3 -0
  497. package/dist/server/vitest.config.d.ts.map +1 -0
  498. package/dist/server/vitest.config.js +53 -0
  499. 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,6 @@
1
+ /**
2
+ * Session service module index.
3
+ */
4
+ export { McpSessionManager, mcpSessionManager } from './session-manager.js';
5
+ export type { TransportWithWebStandard, Session } from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Session service module index.
3
+ */
4
+ export { McpSessionManager, mcpSessionManager } from './session-manager.js';