@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,63 @@
1
+ import type { RequestOptions, ServerInstanceInfo, ValidServer } from './types.js';
2
+ /**
3
+ * Type guard to validate that a server object has valid name and configuration.
4
+ *
5
+ * This function checks if the provided object is a valid server with both a non-empty
6
+ * name string and a configuration object, ensuring type safety for server operations.
7
+ *
8
+ * @param {unknown} server - Object to validate as a server
9
+ * @returns {boolean} True if the object is a valid server with name and config
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const server = { name: 'my-server', config: { type: 'stdio' } };
14
+ * if (hasValidId(server)) {
15
+ * // TypeScript knows server is properly typed
16
+ * console.log(server.name);
17
+ * }
18
+ * ```
19
+ */
20
+ export declare function hasValidId(server: unknown): server is ValidServer;
21
+ /**
22
+ * Selects the best server instance based on server name and request options.
23
+ *
24
+ * This function resolves a server name to its configuration and instance details,
25
+ * handling both single and multiple instance scenarios. Currently, it returns
26
+ * the first instance for multi-instance servers, but the architecture supports
27
+ * future extensions for intelligent instance selection based on session ID,
28
+ * tags, client ID, or load conditions.
29
+ *
30
+ * The function performs the following steps:
31
+ * 1. Retrieves all instances of the specified server name
32
+ * 2. Returns undefined if no instances are found
33
+ * 3. Gets the server configuration from the hub manager
34
+ * 4. For single-instance servers, returns the instance directly
35
+ * 5. For multi-instance servers, currently returns the first instance (with future extension support)
36
+ *
37
+ * Future extensions planned include:
38
+ * - Session-aware instance selection based on sessionId
39
+ * - Tag-based instance selection for matching specific requirements
40
+ * - Load-balancing across multiple instances
41
+ * - Client-specific instance assignment
42
+ *
43
+ * @param {string} serverName - Name of the server to select an instance for
44
+ * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
45
+ * @returns {{ name: string; config: ServerConfig; instance: ServerInstanceConfig & Record<string, unknown> } | undefined}
46
+ * Server information with configuration and instance details, or undefined if not found
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const serverInfo = selectBestInstance('my-mcp-server');
51
+ * if (serverInfo) {
52
+ * console.log(`Selected instance: ${serverInfo.instance.id}`);
53
+ * }
54
+ *
55
+ * // With request options (future extension)
56
+ * const serverInfoWithOptions = selectBestInstance('my-mcp-server', {
57
+ * sessionId: 'session-123',
58
+ * tags: { environment: 'production' }
59
+ * });
60
+ * ```
61
+ */
62
+ export declare function selectBestInstance(serverName: string, requestOptions?: RequestOptions): ServerInstanceInfo | undefined;
63
+ //# sourceMappingURL=server-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/server-selector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,GAC9B,kBAAkB,GAAG,SAAS,CA+ChC"}
@@ -0,0 +1,108 @@
1
+ import { hubManager } from '../hub-manager.service.js';
2
+ /**
3
+ * Type guard to validate that a server object has valid name and configuration.
4
+ *
5
+ * This function checks if the provided object is a valid server with both a non-empty
6
+ * name string and a configuration object, ensuring type safety for server operations.
7
+ *
8
+ * @param {unknown} server - Object to validate as a server
9
+ * @returns {boolean} True if the object is a valid server with name and config
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const server = { name: 'my-server', config: { type: 'stdio' } };
14
+ * if (hasValidId(server)) {
15
+ * // TypeScript knows server is properly typed
16
+ * console.log(server.name);
17
+ * }
18
+ * ```
19
+ */
20
+ export function hasValidId(server) {
21
+ if (typeof server !== 'object' || server === null) {
22
+ return false;
23
+ }
24
+ const s = server;
25
+ return typeof s.name === 'string' && s.name.length > 0 && typeof s.config === 'object';
26
+ }
27
+ /**
28
+ * Selects the best server instance based on server name and request options.
29
+ *
30
+ * This function resolves a server name to its configuration and instance details,
31
+ * handling both single and multiple instance scenarios. Currently, it returns
32
+ * the first instance for multi-instance servers, but the architecture supports
33
+ * future extensions for intelligent instance selection based on session ID,
34
+ * tags, client ID, or load conditions.
35
+ *
36
+ * The function performs the following steps:
37
+ * 1. Retrieves all instances of the specified server name
38
+ * 2. Returns undefined if no instances are found
39
+ * 3. Gets the server configuration from the hub manager
40
+ * 4. For single-instance servers, returns the instance directly
41
+ * 5. For multi-instance servers, currently returns the first instance (with future extension support)
42
+ *
43
+ * Future extensions planned include:
44
+ * - Session-aware instance selection based on sessionId
45
+ * - Tag-based instance selection for matching specific requirements
46
+ * - Load-balancing across multiple instances
47
+ * - Client-specific instance assignment
48
+ *
49
+ * @param {string} serverName - Name of the server to select an instance for
50
+ * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
51
+ * @returns {{ name: string; config: ServerConfig; instance: ServerInstanceConfig & Record<string, unknown> } | undefined}
52
+ * Server information with configuration and instance details, or undefined if not found
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const serverInfo = selectBestInstance('my-mcp-server');
57
+ * if (serverInfo) {
58
+ * console.log(`Selected instance: ${serverInfo.instance.id}`);
59
+ * }
60
+ *
61
+ * // With request options (future extension)
62
+ * const serverInfoWithOptions = selectBestInstance('my-mcp-server', {
63
+ * sessionId: 'session-123',
64
+ * tags: { environment: 'production' }
65
+ * });
66
+ * ```
67
+ */
68
+ export function selectBestInstance(serverName, requestOptions) {
69
+ // Get all instances of the server
70
+ const instances = hubManager.getServerInstanceByName(serverName);
71
+ if (instances.length === 0) {
72
+ return undefined;
73
+ }
74
+ // Get server configuration
75
+ const serverConfig = hubManager.getServerByName(serverName);
76
+ if (!serverConfig) {
77
+ return undefined;
78
+ }
79
+ // If there's only one instance, return it directly
80
+ if (instances.length === 1) {
81
+ return {
82
+ name: serverName,
83
+ config: serverConfig,
84
+ instance: instances[0]
85
+ };
86
+ }
87
+ // Multi-instance selection logic (for future extension)
88
+ // Currently simplified implementation: return the first instance
89
+ // Future extensions could support:
90
+ // - Selecting specific instance based on sessionId
91
+ // - Selecting optimal instance based on tags matching
92
+ // - Selecting dedicated instance based on client ID
93
+ // - Selecting instance based on load conditions
94
+ // Although requestOptions is not currently used, it's kept for future extension
95
+ if (requestOptions?.sessionId) {
96
+ // In the future, specific instance can be selected based on sessionId
97
+ // Currently return the first instance temporarily
98
+ }
99
+ if (requestOptions?.tags) {
100
+ // In the future, optimal instance can be selected based on tags matching
101
+ // Currently return the first instance temporarily
102
+ }
103
+ return {
104
+ name: serverName,
105
+ config: serverConfig,
106
+ instance: instances[0] // Will be extended to intelligent selection logic later
107
+ };
108
+ }
@@ -0,0 +1,47 @@
1
+ import type { JsonSchema } from '../../../shared/models/tool.model.js';
2
+ /**
3
+ * Tool annotation configuration.
4
+ */
5
+ export interface ToolAnnotations {
6
+ title?: string;
7
+ readOnlyHint?: boolean;
8
+ destructiveHint?: boolean;
9
+ idempotentHint?: boolean;
10
+ openWorldHint?: boolean;
11
+ }
12
+ /**
13
+ * System tool definition structure.
14
+ */
15
+ export interface SystemToolDefinition {
16
+ name: string;
17
+ description: string;
18
+ inputSchema: JsonSchema;
19
+ annotations?: ToolAnnotations;
20
+ }
21
+ /**
22
+ * Retrieves the complete list of system tools provided by this service.
23
+ *
24
+ * This method generates system tool configurations based on the SYSTEM_TOOL_NAMES constant,
25
+ * ensuring consistency with the defined system tool names. Each tool includes its name,
26
+ * description, input schema, and annotations for proper client-side rendering and behavior.
27
+ *
28
+ * The method implements all standard system tools:
29
+ * - list-servers: List all connected servers
30
+ * - find-servers: Find servers matching a pattern
31
+ * - list-all-tools-in-server: List tools from a specific server
32
+ * - find-tools-in-server: Find tools in a specific server
33
+ * - get-tool: Get complete tool schema
34
+ * - call-tool: Call a specific tool from a specific server
35
+ * - find-tools: Find tools across all servers
36
+ *
37
+ * @returns {Array<{ name: string; description: string; inputSchema: JsonSchema; annotations?: ToolAnnotations }>}
38
+ * Array of system tool configurations
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * const systemTools = getSystemTools();
43
+ * console.log(`Available system tools: ${systemTools.length}`);
44
+ * ```
45
+ */
46
+ export declare function getSystemTools(): SystemToolDefinition[];
47
+ //# sourceMappingURL=system-tool-definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-tool-definitions.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/system-tool-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAY/D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,EAAE,CAwMvD"}
@@ -0,0 +1,225 @@
1
+ import { SYSTEM_TOOL_NAMES, LIST_SERVERS_TOOL, FIND_SERVERS_TOOL, LIST_ALL_TOOLS_IN_SERVER_TOOL, FIND_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, FIND_TOOLS_TOOL } from '../../models/system-tools.constants.js';
2
+ /**
3
+ * Retrieves the complete list of system tools provided by this service.
4
+ *
5
+ * This method generates system tool configurations based on the SYSTEM_TOOL_NAMES constant,
6
+ * ensuring consistency with the defined system tool names. Each tool includes its name,
7
+ * description, input schema, and annotations for proper client-side rendering and behavior.
8
+ *
9
+ * The method implements all standard system tools:
10
+ * - list-servers: List all connected servers
11
+ * - find-servers: Find servers matching a pattern
12
+ * - list-all-tools-in-server: List tools from a specific server
13
+ * - find-tools-in-server: Find tools in a specific server
14
+ * - get-tool: Get complete tool schema
15
+ * - call-tool: Call a specific tool from a specific server
16
+ * - find-tools: Find tools across all servers
17
+ *
18
+ * @returns {Array<{ name: string; description: string; inputSchema: JsonSchema; annotations?: ToolAnnotations }>}
19
+ * Array of system tool configurations
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const systemTools = getSystemTools();
24
+ * console.log(`Available system tools: ${systemTools.length}`);
25
+ * ```
26
+ */
27
+ export function getSystemTools() {
28
+ const systemTools = [];
29
+ // Build system tools based on the constant array to ensure consistency
30
+ for (const toolName of SYSTEM_TOOL_NAMES) {
31
+ switch (toolName) {
32
+ case LIST_SERVERS_TOOL:
33
+ systemTools.push({
34
+ name: toolName,
35
+ description: 'List all connected servers',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {}
39
+ },
40
+ annotations: {
41
+ title: 'List Servers',
42
+ readOnlyHint: true,
43
+ destructiveHint: false,
44
+ idempotentHint: true,
45
+ openWorldHint: false
46
+ }
47
+ });
48
+ break;
49
+ case FIND_SERVERS_TOOL:
50
+ systemTools.push({
51
+ name: toolName,
52
+ description: 'Find servers matching a pattern',
53
+ inputSchema: {
54
+ type: 'object',
55
+ properties: {
56
+ pattern: { type: 'string', description: 'Regex pattern to search for' },
57
+ searchIn: {
58
+ type: 'string',
59
+ enum: ['name', 'description', 'both'],
60
+ default: 'both'
61
+ },
62
+ caseSensitive: { type: 'boolean', default: false }
63
+ },
64
+ required: ['pattern']
65
+ },
66
+ annotations: {
67
+ title: 'Find Servers',
68
+ readOnlyHint: true,
69
+ destructiveHint: false,
70
+ idempotentHint: true,
71
+ openWorldHint: false
72
+ }
73
+ });
74
+ break;
75
+ case LIST_ALL_TOOLS_IN_SERVER_TOOL:
76
+ systemTools.push({
77
+ name: toolName,
78
+ description: 'List all tools from a specific server',
79
+ inputSchema: {
80
+ type: 'object',
81
+ properties: {
82
+ serverName: { type: 'string', description: 'Name of the MCP server' },
83
+ requestOptions: {
84
+ type: 'object',
85
+ properties: {
86
+ sessionId: { type: 'string', description: 'Session ID for instance selection' },
87
+ tags: { type: 'object', description: 'Tags for instance selection' }
88
+ }
89
+ }
90
+ },
91
+ required: ['serverName']
92
+ },
93
+ annotations: {
94
+ title: 'List Tools in Server',
95
+ readOnlyHint: true,
96
+ destructiveHint: false,
97
+ idempotentHint: true,
98
+ openWorldHint: false
99
+ }
100
+ });
101
+ break;
102
+ case FIND_TOOLS_IN_SERVER_TOOL:
103
+ systemTools.push({
104
+ name: toolName,
105
+ description: 'Find tools matching a pattern in a specific server',
106
+ inputSchema: {
107
+ type: 'object',
108
+ properties: {
109
+ serverName: { type: 'string', description: 'Name of the MCP server' },
110
+ pattern: { type: 'string', description: 'Regex pattern to search for' },
111
+ searchIn: {
112
+ type: 'string',
113
+ enum: ['name', 'description', 'both'],
114
+ default: 'both'
115
+ },
116
+ caseSensitive: { type: 'boolean', default: false },
117
+ requestOptions: {
118
+ type: 'object',
119
+ properties: {
120
+ sessionId: { type: 'string', description: 'Session ID for instance selection' },
121
+ tags: { type: 'object', description: 'Tags for instance selection' }
122
+ }
123
+ }
124
+ },
125
+ required: ['serverName', 'pattern']
126
+ },
127
+ annotations: {
128
+ title: 'Find Tools in Server',
129
+ readOnlyHint: true,
130
+ destructiveHint: false,
131
+ idempotentHint: true,
132
+ openWorldHint: false
133
+ }
134
+ });
135
+ break;
136
+ case GET_TOOL_TOOL:
137
+ systemTools.push({
138
+ name: toolName,
139
+ description: 'Get complete schema for a specific tool from a specific server',
140
+ inputSchema: {
141
+ type: 'object',
142
+ properties: {
143
+ serverName: { type: 'string', description: 'Name of the MCP server' },
144
+ toolName: { type: 'string', description: 'Exact name of the tool' },
145
+ requestOptions: {
146
+ type: 'object',
147
+ properties: {
148
+ sessionId: { type: 'string', description: 'Session ID for instance selection' },
149
+ tags: { type: 'object', description: 'Tags for instance selection' }
150
+ }
151
+ }
152
+ },
153
+ required: ['serverName', 'toolName']
154
+ },
155
+ annotations: {
156
+ title: 'Get Tool Details',
157
+ readOnlyHint: true,
158
+ destructiveHint: false,
159
+ idempotentHint: true,
160
+ openWorldHint: false
161
+ }
162
+ });
163
+ break;
164
+ case CALL_TOOL_TOOL:
165
+ systemTools.push({
166
+ name: toolName,
167
+ description: 'Call a specific tool from a specific server',
168
+ inputSchema: {
169
+ type: 'object',
170
+ properties: {
171
+ serverName: { type: 'string', description: 'Name of the MCP server' },
172
+ toolName: { type: 'string', description: 'Name of the tool to call' },
173
+ toolArgs: { type: 'object', description: 'Arguments to pass to the tool' },
174
+ requestOptions: {
175
+ type: 'object',
176
+ properties: {
177
+ sessionId: { type: 'string', description: 'Session ID for instance selection' },
178
+ tags: { type: 'object', description: 'Tags for instance selection' }
179
+ }
180
+ }
181
+ },
182
+ required: ['serverName', 'toolName', 'toolArgs']
183
+ },
184
+ annotations: {
185
+ title: 'Call Tool',
186
+ readOnlyHint: false,
187
+ destructiveHint: false,
188
+ idempotentHint: false,
189
+ openWorldHint: true
190
+ }
191
+ });
192
+ break;
193
+ case FIND_TOOLS_TOOL:
194
+ systemTools.push({
195
+ name: toolName,
196
+ description: 'Find tools matching a pattern across all connected servers',
197
+ inputSchema: {
198
+ type: 'object',
199
+ properties: {
200
+ pattern: { type: 'string', description: 'Regex pattern to search for' },
201
+ searchIn: {
202
+ type: 'string',
203
+ enum: ['name', 'description', 'both'],
204
+ default: 'both'
205
+ },
206
+ caseSensitive: { type: 'boolean', default: false }
207
+ },
208
+ required: ['pattern']
209
+ },
210
+ annotations: {
211
+ title: 'Find Tools',
212
+ readOnlyHint: true,
213
+ destructiveHint: false,
214
+ idempotentHint: true,
215
+ openWorldHint: false
216
+ }
217
+ });
218
+ break;
219
+ default:
220
+ // This should never happen due to TypeScript type checking
221
+ throw new Error(`Unknown system tool: ${toolName}`);
222
+ }
223
+ }
224
+ return systemTools;
225
+ }
@@ -0,0 +1,85 @@
1
+ import type { Tool } from '../../../shared/models/tool.model.js';
2
+ import type { RequestOptions } from './types.js';
3
+ /**
4
+ * Search options for server searches.
5
+ */
6
+ export interface SearchOptions {
7
+ searchIn?: 'name' | 'description' | 'both';
8
+ caseSensitive?: boolean;
9
+ }
10
+ /**
11
+ * Finds servers matching a specified regex pattern.
12
+ *
13
+ * This method searches through all configured servers using the provided regex pattern,
14
+ * supporting flexible search options including case sensitivity and search scope
15
+ * (name, description, or both). It returns an array of matching server names.
16
+ *
17
+ * @param {string} pattern - Regex pattern to search for in server names and descriptions
18
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
19
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
20
+ * @returns {Promise<string[]>} Array of matching server names
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * // Find servers with 'api' in their name (case-insensitive)
25
+ * const apiServers = await findServers('api');
26
+ *
27
+ * // Find servers with exact case match
28
+ * const exactMatch = await findServers('^MyServer$', 'name', true);
29
+ * ```
30
+ */
31
+ export declare function findServers(pattern: string, searchIn?: 'name' | 'description' | 'both', caseSensitive?: boolean): Promise<string[]>;
32
+ /**
33
+ * Finds tools matching a pattern within a specific MCP server.
34
+ *
35
+ * This method searches through all tools available from the specified server using
36
+ * the provided regex pattern, supporting flexible search options including case
37
+ * sensitivity and search scope (name, description, or both). It returns matching
38
+ * tools grouped by server name.
39
+ *
40
+ * @param {string} serverName - Name of the MCP server to search tools in
41
+ * @param {string} pattern - Regex pattern to search for in tool names and descriptions
42
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
43
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
44
+ * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
45
+ * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
46
+ * @throws {Error} If the specified server is not found or not connected
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const result = await findToolsInServer('my-mcp-server', 'list');
51
+ * console.log(`Found ${result.tools.length} tools matching 'list'`);
52
+ * ```
53
+ */
54
+ export declare function findToolsInServer(serverName: string, pattern: string, searchIn?: 'name' | 'description' | 'both', caseSensitive?: boolean, requestOptions?: RequestOptions): Promise<{
55
+ serverName: string;
56
+ tools: Tool[];
57
+ }>;
58
+ /**
59
+ * Finds tools matching a pattern across all connected MCP servers.
60
+ *
61
+ * This method searches through all available tools from all connected servers using the
62
+ * provided regex pattern, supporting flexible search options including case sensitivity
63
+ * and search scope (name, description, or both). It returns matching tools grouped by
64
+ * their originating server names.
65
+ *
66
+ * @param {string} pattern - Regex pattern to search for in tool names and descriptions
67
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
68
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
69
+ * @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
70
+ * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const matchingTools = await findTools('list');
75
+ * Object.entries(matchingTools).forEach(([serverName, { tools }]) => {
76
+ * console.log(`${serverName}: ${tools.length} matching tools`);
77
+ * });
78
+ * ```
79
+ */
80
+ export declare function findTools(pattern: string, searchIn: "name" | "description" | "both" | undefined, caseSensitive: boolean | undefined, listAllToolsFn: () => Promise<Record<string, {
81
+ tools: Tool[];
82
+ }>>): Promise<Record<string, {
83
+ tools: Tool[];
84
+ }>>;
85
+ //# sourceMappingURL=tool-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-search.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/tool-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAYnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,aAAa,GAAG,MAAe,EAClD,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf,CAAC,CAqBD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,YAAS,EAClD,aAAa,EAAE,OAAO,YAAQ,EAC9B,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,GAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CAAC,CAAC,CAsB5C"}
@@ -0,0 +1,115 @@
1
+ import { hubManager } from '../hub-manager.service.js';
2
+ import { mcpConnectionManager } from '../mcp-connection-manager.js';
3
+ import { hasValidId, selectBestInstance } from './server-selector.js';
4
+ /**
5
+ * Finds servers matching a specified regex pattern.
6
+ *
7
+ * This method searches through all configured servers using the provided regex pattern,
8
+ * supporting flexible search options including case sensitivity and search scope
9
+ * (name, description, or both). It returns an array of matching server names.
10
+ *
11
+ * @param {string} pattern - Regex pattern to search for in server names and descriptions
12
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
13
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
14
+ * @returns {Promise<string[]>} Array of matching server names
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // Find servers with 'api' in their name (case-insensitive)
19
+ * const apiServers = await findServers('api');
20
+ *
21
+ * // Find servers with exact case match
22
+ * const exactMatch = await findServers('^MyServer$', 'name', true);
23
+ * ```
24
+ */
25
+ export async function findServers(pattern, searchIn = 'both', caseSensitive = false) {
26
+ const allServers = hubManager.getAllServers();
27
+ const validServers = allServers.filter(hasValidId);
28
+ const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
29
+ return validServers
30
+ .filter((server) => {
31
+ const matchName = searchIn !== 'description' && regex.test(server.name);
32
+ const matchDescription = searchIn !== 'name' && server.name && regex.test(server.name); // Using name as fallback if no description
33
+ return matchName || matchDescription;
34
+ })
35
+ .map((server) => server.name);
36
+ }
37
+ /**
38
+ * Finds tools matching a pattern within a specific MCP server.
39
+ *
40
+ * This method searches through all tools available from the specified server using
41
+ * the provided regex pattern, supporting flexible search options including case
42
+ * sensitivity and search scope (name, description, or both). It returns matching
43
+ * tools grouped by server name.
44
+ *
45
+ * @param {string} serverName - Name of the MCP server to search tools in
46
+ * @param {string} pattern - Regex pattern to search for in tool names and descriptions
47
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
48
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
49
+ * @param {RequestOptions} [requestOptions] - Optional request options for instance selection
50
+ * @returns {Promise<{ serverName: string; tools: Tool[] }>} Object containing server name and matching tools
51
+ * @throws {Error} If the specified server is not found or not connected
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * const result = await findToolsInServer('my-mcp-server', 'list');
56
+ * console.log(`Found ${result.tools.length} tools matching 'list'`);
57
+ * ```
58
+ */
59
+ export async function findToolsInServer(serverName, pattern, searchIn = 'both', caseSensitive = false, requestOptions) {
60
+ const serverInfo = selectBestInstance(serverName, requestOptions);
61
+ if (!serverInfo) {
62
+ throw new Error(`Server not found: ${serverName}`);
63
+ }
64
+ const tools = mcpConnectionManager.getTools(serverInfo.instance.id);
65
+ const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
66
+ const matchingTools = tools.filter((tool) => {
67
+ const matchName = searchIn !== 'description' && regex.test(tool.name);
68
+ const matchDescription = searchIn !== 'name' && tool.description && regex.test(tool.description);
69
+ return matchName || matchDescription;
70
+ });
71
+ return {
72
+ serverName: serverName,
73
+ tools: matchingTools
74
+ };
75
+ }
76
+ /**
77
+ * Finds tools matching a pattern across all connected MCP servers.
78
+ *
79
+ * This method searches through all available tools from all connected servers using the
80
+ * provided regex pattern, supporting flexible search options including case sensitivity
81
+ * and search scope (name, description, or both). It returns matching tools grouped by
82
+ * their originating server names.
83
+ *
84
+ * @param {string} pattern - Regex pattern to search for in tool names and descriptions
85
+ * @param {'name' | 'description' | 'both'} [searchIn='both'] - Where to perform the search
86
+ * @param {boolean} [caseSensitive=false] - Whether the search should be case-sensitive
87
+ * @param {() => Promise<Record<string, { tools: Tool[] }>>} listAllToolsFn - Function to list all tools
88
+ * @returns {Promise<Record<string, { tools: Tool[] }>>} Object mapping server names to matching tools
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * const matchingTools = await findTools('list');
93
+ * Object.entries(matchingTools).forEach(([serverName, { tools }]) => {
94
+ * console.log(`${serverName}: ${tools.length} matching tools`);
95
+ * });
96
+ * ```
97
+ */
98
+ export async function findTools(pattern, searchIn = 'both', caseSensitive = false, listAllToolsFn) {
99
+ const allTools = await listAllToolsFn();
100
+ const regex = new RegExp(pattern, caseSensitive ? '' : 'i');
101
+ const matchingTools = {};
102
+ for (const [serverName, serverData] of Object.entries(allTools)) {
103
+ const filteredTools = serverData.tools.filter((tool) => {
104
+ const matchName = searchIn !== 'description' && regex.test(tool.name);
105
+ const matchDescription = searchIn !== 'name' && tool.description && regex.test(tool.description);
106
+ return matchName || matchDescription;
107
+ });
108
+ if (filteredTools.length > 0) {
109
+ matchingTools[serverName] = {
110
+ tools: filteredTools
111
+ };
112
+ }
113
+ }
114
+ return matchingTools;
115
+ }