@loop_ouroboros/mcp-hub-lite 1.0.2 → 1.1.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 (333) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/client/assets/{HomeView-7rMg9C6t.js → HomeView-Bu2joUvW.js} +1 -1
  3. package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
  4. package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
  5. package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
  6. package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
  7. package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
  8. package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
  9. package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
  10. package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
  11. package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
  12. package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
  13. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
  14. package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
  15. package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
  16. package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
  17. package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
  18. package/dist/client/assets/{_baseClone-5q1b0P3O.js → _baseClone-Bp9Rjwd7.js} +1 -1
  19. package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
  20. package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
  21. package/dist/client/assets/el-input-99gMrutP.js +1 -0
  22. package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
  23. package/dist/client/assets/{el-loading-H85n3BUC.js → el-loading-CIQ5pD5u.js} +1 -1
  24. package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
  25. package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
  26. package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
  27. package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
  28. package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
  29. package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
  30. package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
  31. package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
  32. package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
  33. package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
  34. package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
  35. package/dist/client/assets/index-C2V-ZGji.js +1 -0
  36. package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
  37. package/dist/client/assets/index-vhkqgpmN.js +2 -0
  38. package/dist/client/assets/{omit-DPsOVNIJ.js → omit-CqPQN3XP.js} +1 -1
  39. package/dist/client/assets/{raf-DY5mgbuB.js → raf-C2wXzaVU.js} +1 -1
  40. package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
  41. package/dist/client/index.html +3 -3
  42. package/dist/server/shared/models/resource.model.d.ts +2 -1
  43. package/dist/server/shared/models/resource.model.d.ts.map +1 -1
  44. package/dist/server/shared/models/server.model.d.ts +362 -5
  45. package/dist/server/shared/models/server.model.d.ts.map +1 -1
  46. package/dist/server/shared/models/server.model.js +220 -1
  47. package/dist/server/shared/models/session.model.d.ts +1 -57
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +1 -55
  50. package/dist/server/shared/models/tool.model.d.ts +4 -2
  51. package/dist/server/shared/models/tool.model.d.ts.map +1 -1
  52. package/dist/server/shared/types/session-context.types.d.ts +0 -2
  53. package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  55. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  56. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  57. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  58. package/dist/server/src/api/mcp/gateway.js +19 -50
  59. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  60. package/dist/server/src/api/mcp/session-context-extractor.js +5 -14
  61. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  62. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  63. package/dist/server/src/api/web/hub-tools.js +3 -54
  64. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  65. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  66. package/dist/server/src/api/web/mcp-status.js +71 -30
  67. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  68. package/dist/server/src/api/web/resources.js +28 -22
  69. package/dist/server/src/api/web/search.d.ts +2 -16
  70. package/dist/server/src/api/web/search.d.ts.map +1 -1
  71. package/dist/server/src/api/web/search.js +24 -45
  72. package/dist/server/src/api/web/servers.d.ts +3 -3
  73. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  74. package/dist/server/src/api/web/servers.js +70 -25
  75. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  76. package/dist/server/src/api/ws/ws-handler.js +4 -2
  77. package/dist/server/src/app.d.ts.map +1 -1
  78. package/dist/server/src/app.js +0 -2
  79. package/dist/server/src/cli/commands/list.js +2 -2
  80. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  81. package/dist/server/src/cli/commands/status.js +41 -30
  82. package/dist/server/src/cli/index.d.ts.map +1 -1
  83. package/dist/server/src/cli/index.js +2 -1
  84. package/dist/server/src/cli/server.d.ts +11 -2
  85. package/dist/server/src/cli/server.d.ts.map +1 -1
  86. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  87. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  88. package/dist/server/src/config/config-change-logger.js +135 -11
  89. package/dist/server/src/config/config-loader.d.ts +6 -5
  90. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  91. package/dist/server/src/config/config-loader.js +54 -16
  92. package/dist/server/src/config/config-manager.d.ts +51 -43
  93. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  94. package/dist/server/src/config/config-manager.js +84 -66
  95. package/dist/server/src/config/config-migrator.d.ts +82 -0
  96. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  97. package/dist/server/src/config/config-migrator.js +348 -0
  98. package/dist/server/src/config/config-saver.d.ts +2 -0
  99. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  100. package/dist/server/src/config/config-saver.js +8 -2
  101. package/dist/server/src/config/config.schema.d.ts +10 -104
  102. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  103. package/dist/server/src/config/config.schema.js +15 -99
  104. package/dist/server/src/config/path-validator.d.ts +27 -0
  105. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  106. package/dist/server/src/config/path-validator.js +53 -0
  107. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  108. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  109. package/dist/server/src/config/server-config-manager.js +222 -66
  110. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  111. package/dist/server/src/config/type-converter.js +3 -2
  112. package/dist/server/src/models/event.model.d.ts +17 -10
  113. package/dist/server/src/models/event.model.d.ts.map +1 -1
  114. package/dist/server/src/models/server.model.d.ts +17 -3
  115. package/dist/server/src/models/server.model.d.ts.map +1 -1
  116. package/dist/server/src/models/server.model.js +2 -1
  117. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  118. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  119. package/dist/server/src/models/system-tools.constants.js +4 -8
  120. package/dist/server/src/pid/manager.d.ts.map +1 -1
  121. package/dist/server/src/pid/manager.js +2 -1
  122. package/dist/server/src/server/dev-server.js +34 -20
  123. package/dist/server/src/server/runner.d.ts.map +1 -1
  124. package/dist/server/src/server/runner.js +41 -26
  125. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  126. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  127. package/dist/server/src/services/connection/connection-manager.js +286 -241
  128. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  129. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  130. package/dist/server/src/services/connection/tool-cache.js +50 -55
  131. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  132. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  133. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  134. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  135. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  136. package/dist/server/src/services/gateway/global-transport.js +42 -0
  137. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  138. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  139. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  140. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  141. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  142. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  143. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  144. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +10 -81
  145. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  146. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  147. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  148. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  150. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  151. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  152. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  153. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  154. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  155. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  156. package/dist/server/src/services/gateway/types.d.ts +2 -1
  157. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  158. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  159. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  160. package/dist/server/src/services/hub-manager.service.js +89 -267
  161. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  162. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  163. package/dist/server/src/services/hub-tools/index.js +1 -2
  164. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  165. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  166. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  167. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  168. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  169. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  170. package/dist/server/src/services/hub-tools/resource-generator.d.ts +24 -1
  171. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  172. package/dist/server/src/services/hub-tools/resource-generator.js +259 -39
  173. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  174. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  175. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  176. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  177. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  178. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  179. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  180. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  181. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  182. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  183. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  184. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  185. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  186. package/dist/server/src/services/hub-tools.service.js +185 -110
  187. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  188. package/dist/server/src/services/search/search-core.service.js +11 -11
  189. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  190. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  191. package/dist/server/src/services/session/session-manager.js +23 -585
  192. package/dist/server/src/services/session-tracker.service.d.ts +2 -10
  193. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -1
  194. package/dist/server/src/services/session-tracker.service.js +2 -53
  195. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  196. package/dist/server/src/services/system-tool-handler.js +7 -17
  197. package/dist/server/src/utils/composite-key.d.ts +29 -0
  198. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  199. package/dist/server/src/utils/composite-key.js +39 -0
  200. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  201. package/dist/server/src/utils/error-handler.js +3 -2
  202. package/dist/server/src/utils/index.d.ts +2 -0
  203. package/dist/server/src/utils/index.d.ts.map +1 -1
  204. package/dist/server/src/utils/index.js +2 -0
  205. package/dist/server/src/utils/instance-id.d.ts +22 -0
  206. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  207. package/dist/server/src/utils/instance-id.js +59 -0
  208. package/dist/server/src/utils/json-utils.d.ts +4 -4
  209. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  210. package/dist/server/src/utils/json-utils.js +4 -4
  211. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  212. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  213. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  214. package/dist/server/src/utils/logger/log-formatter.js +82 -5
  215. package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
  216. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  217. package/dist/server/src/utils/logger/log-modules.js +8 -6
  218. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  219. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  220. package/dist/server/src/utils/parameter-validator.js +53 -0
  221. package/dist/server/src/utils/process-tree.d.ts +49 -0
  222. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  223. package/dist/server/src/utils/process-tree.js +285 -0
  224. package/dist/server/src/utils/request-context.d.ts +0 -18
  225. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  226. package/dist/server/src/utils/request-context.js +0 -20
  227. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  228. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  229. package/dist/server/src/utils/sort-utils.js +131 -0
  230. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  231. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  232. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  233. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  234. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  235. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  236. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  237. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  238. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  239. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  240. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  241. package/dist/server/src/utils/transports/transport-factory.js +31 -11
  242. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  243. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  244. package/dist/server/src/utils/version.d.ts +11 -0
  245. package/dist/server/src/utils/version.d.ts.map +1 -0
  246. package/dist/server/src/utils/version.js +57 -0
  247. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  248. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  249. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  250. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  251. package/dist/server/tests/integration/api/gateway.test.js +2 -2
  252. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  253. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  254. package/dist/server/tests/server.test.js +27 -16
  255. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  256. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  257. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  258. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  259. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  260. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  261. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  262. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  263. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  264. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  265. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  266. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  267. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  268. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  269. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  270. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  271. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  272. package/dist/server/tests/unit/server/runner.test.js +86 -62
  273. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  274. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  275. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  276. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  277. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  278. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  279. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  280. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  281. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  282. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  283. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  284. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -320
  285. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  286. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  287. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  288. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  289. package/dist/server/tests/unit/utils/config.test.js +88 -186
  290. package/dist/server/tests/unit/utils/json-utils.test.js +18 -18
  291. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  292. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  293. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  294. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  295. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  296. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  297. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  298. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  300. package/dist/server/tests/unit/utils/request-context.test.js +5 -24
  301. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  302. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  303. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  304. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  305. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  306. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  307. package/package.json +1 -1
  308. package/dist/client/assets/ResourceDetailView-Bf-1ffbk.js +0 -1
  309. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  310. package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
  311. package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
  312. package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
  313. package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
  314. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  315. package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
  316. package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
  317. package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
  318. package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
  319. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  320. package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
  321. package/dist/client/assets/el-input-CDnuSKVZ.js +0 -1
  322. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  323. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  324. package/dist/client/assets/el-overlay-CzMkXyYy.js +0 -1
  325. package/dist/client/assets/el-select-DvjGddk_.js +0 -1
  326. package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
  327. package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
  328. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  329. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  330. package/dist/client/assets/el-tag-npbwux4f.js +0 -1
  331. package/dist/client/assets/index-CCnAxNF8.js +0 -2
  332. package/dist/client/assets/index-d1DZeSfz.js +0 -1
  333. package/dist/client/assets/vnode-CHomNjgN.js +0 -1
@@ -47,8 +47,6 @@ declare class SessionTrackerService {
47
47
  * @param context.clientName - Optional name of the client application
48
48
  * @param context.clientVersion - Optional version of the client application
49
49
  * @param context.protocolVersion - Optional MCP protocol version
50
- * @param context.project - Optional project identifier
51
- * @param context.cwd - Optional current working directory
52
50
  * @param context.userAgent - Optional user agent string
53
51
  * @param context.ip - Optional session IP address
54
52
  *
@@ -56,8 +54,7 @@ declare class SessionTrackerService {
56
54
  * sessionTrackerService.updateSession({
57
55
  * sessionId: 'session-123',
58
56
  * clientName: 'VS Code',
59
- * clientVersion: '1.85.0',
60
- * cwd: '/home/user/project'
57
+ * clientVersion: '1.85.0'
61
58
  * });
62
59
  */
63
60
  updateSession(context: SessionContext): void;
@@ -65,12 +62,7 @@ declare class SessionTrackerService {
65
62
  * Updates the workspace roots for a specific session.
66
63
  *
67
64
  * This method is typically called when a session provides its workspace root
68
- * directories, which helps determine the session's working directory context.
69
- * If the session doesn't have a current working directory (cwd) set, it will
70
- * attempt to infer one from the first root URI in the list.
71
- *
72
- * For file:// URIs, it converts them to local file paths using Node.js's
73
- * fileURLToPath utility. For other URI schemes, it uses the URI directly.
65
+ * directories.
74
66
  *
75
67
  * @param sessionId - The unique session identifier for the session
76
68
  * @param roots - Array of session root objects containing URI information
@@ -1 +1 @@
1
- {"version":3,"file":"session-tracker.service.d.ts","sourceRoot":"","sources":["../../../../src/services/session-tracker.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,WAAW,EACZ,MAAM,wCAAwC,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,QAAQ,CAAuC;IAEvD,OAAO,KAAK,UAAU,GAErB;IAED;;;;;OAKG;;IAMH;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACI,aAAa,CAAC,OAAO,EAAE,cAAc;IA4B5C;;;;;;;;;;;;;;;;;;;OAmBG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAoDjE;;;;;;;;;;;;OAYG;IACI,WAAW,IAAI,WAAW,EAAE;IAInC;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,OAAO;CAkBhB;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
1
+ {"version":3,"file":"session-tracker.service.d.ts","sourceRoot":"","sources":["../../../../src/services/session-tracker.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,WAAW,EACZ,MAAM,wCAAwC,CAAC;AAMhD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,cAAM,qBAAqB;IACzB,OAAO,CAAC,QAAQ,CAAuC;IAEvD,OAAO,KAAK,UAAU,GAErB;IAED;;;;;OAKG;;IAMH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,aAAa,CAAC,OAAO,EAAE,cAAc;IA0B5C;;;;;;;;;;;;;;OAcG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE;IAQjE;;;;;;;;;;;;OAYG;IACI,WAAW,IAAI,WAAW,EAAE;IAInC;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7D;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,OAAO;CAkBhB;AAED,eAAO,MAAM,qBAAqB,uBAA8B,CAAC;AAEjE,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { logger, LOG_MODULES } from '../utils/logger.js';
2
2
  import { eventBus } from './event-bus.service.js';
3
- import { fileURLToPath } from 'node:url';
4
3
  import { configManager } from '../config/config-manager.js';
5
4
  import { formatDuration } from '../utils/format-utils.js';
6
5
  /**
@@ -57,8 +56,6 @@ class SessionTrackerService {
57
56
  * @param context.clientName - Optional name of the client application
58
57
  * @param context.clientVersion - Optional version of the client application
59
58
  * @param context.protocolVersion - Optional MCP protocol version
60
- * @param context.project - Optional project identifier
61
- * @param context.cwd - Optional current working directory
62
59
  * @param context.userAgent - Optional user agent string
63
60
  * @param context.ip - Optional session IP address
64
61
  *
@@ -66,8 +63,7 @@ class SessionTrackerService {
66
63
  * sessionTrackerService.updateSession({
67
64
  * sessionId: 'session-123',
68
65
  * clientName: 'VS Code',
69
- * clientVersion: '1.85.0',
70
- * cwd: '/home/user/project'
66
+ * clientVersion: '1.85.0'
71
67
  * });
72
68
  */
73
69
  updateSession(context) {
@@ -79,8 +75,6 @@ class SessionTrackerService {
79
75
  clientVersion: context.clientVersion || existing?.clientVersion,
80
76
  protocolVersion: context.protocolVersion || existing?.protocolVersion,
81
77
  capabilities: context.capabilities || existing?.capabilities,
82
- project: context.project || existing?.project,
83
- cwd: context.cwd || existing?.cwd, // Preserve CWD if not provided in new request (e.g. inferred from roots)
84
78
  userAgent: context.userAgent || existing?.userAgent,
85
79
  ip: context.ip || existing?.ip,
86
80
  lastSeen: Date.now(),
@@ -99,12 +93,7 @@ class SessionTrackerService {
99
93
  * Updates the workspace roots for a specific session.
100
94
  *
101
95
  * This method is typically called when a session provides its workspace root
102
- * directories, which helps determine the session's working directory context.
103
- * If the session doesn't have a current working directory (cwd) set, it will
104
- * attempt to infer one from the first root URI in the list.
105
- *
106
- * For file:// URIs, it converts them to local file paths using Node.js's
107
- * fileURLToPath utility. For other URI schemes, it uses the URI directly.
96
+ * directories.
108
97
  *
109
98
  * @param sessionId - The unique session identifier for the session
110
99
  * @param roots - Array of session root objects containing URI information
@@ -120,46 +109,6 @@ class SessionTrackerService {
120
109
  if (session) {
121
110
  session.roots = roots;
122
111
  session.lastSeen = Date.now();
123
- // If CWD is missing, try to infer from roots
124
- if (!session.cwd && roots.length > 0) {
125
- // Convert file:// uri to path if possible, or just use URI
126
- const root = roots[0];
127
- if (root.uri.startsWith('file://')) {
128
- try {
129
- session.cwd = fileURLToPath(root.uri);
130
- }
131
- catch {
132
- session.cwd = root.uri;
133
- }
134
- }
135
- else {
136
- session.cwd = root.uri;
137
- }
138
- logger.debug(`Inferred CWD for session ${sessionId} from roots: ${session.cwd}`, LOG_MODULES.SESSION_TRACKER);
139
- }
140
- // If project is missing, try to infer from roots (use name or last path segment)
141
- if (!session.project && roots.length > 0) {
142
- const root = roots[0];
143
- if (root.name) {
144
- session.project = root.name;
145
- }
146
- else if (root.uri.startsWith('file://')) {
147
- try {
148
- const localPath = fileURLToPath(root.uri);
149
- const pathSegments = localPath.split(/[/\\]/);
150
- const lastSegment = pathSegments.filter(Boolean).pop();
151
- if (lastSegment) {
152
- session.project = lastSegment;
153
- }
154
- }
155
- catch {
156
- // If path parsing fails, don't set project
157
- }
158
- }
159
- if (session.project) {
160
- logger.debug(`Inferred project for session ${sessionId} from roots: ${session.project}`, LOG_MODULES.SESSION_TRACKER);
161
- }
162
- }
163
112
  }
164
113
  }
165
114
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"system-tool-handler.d.ts","sourceRoot":"","sources":["../../../../src/services/system-tool-handler.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,oBAAoB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC;CAwEpB"}
1
+ {"version":3,"file":"system-tool-handler.d.ts","sourceRoot":"","sources":["../../../../src/services/system-tool-handler.ts"],"names":[],"mappings":"AAoBA;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;OAEG;WACU,oBAAoB,CAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,OAAO,CAAC;CA8DpB"}
@@ -1,7 +1,7 @@
1
1
  import { hubToolsService } from './hub-tools.service.js';
2
2
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
3
3
  import { logger, LOG_MODULES } from '../utils/logger.js';
4
- import { 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, MCP_HUB_LITE_SERVER } from '../models/system-tools.constants.js';
4
+ import { LIST_SERVERS_TOOL, LIST_TOOLS_IN_SERVER_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL, MCP_HUB_LITE_SERVER } from '../models/system-tools.constants.js';
5
5
  import { stringifyForLogging } from '../utils/json-utils.js';
6
6
  /**
7
7
  * Unified system tool call handler
@@ -18,19 +18,9 @@ export class SystemToolHandler {
18
18
  case LIST_SERVERS_TOOL:
19
19
  result = await hubToolsService.listServers();
20
20
  break;
21
- case FIND_SERVERS_TOOL: {
22
- const findServersArgs = toolArgs;
23
- result = await hubToolsService.findServers(findServersArgs);
24
- break;
25
- }
26
- case LIST_ALL_TOOLS_IN_SERVER_TOOL: {
27
- const listAllToolsArgs = toolArgs;
28
- result = await hubToolsService.listAllToolsInServer(listAllToolsArgs);
29
- break;
30
- }
31
- case FIND_TOOLS_IN_SERVER_TOOL: {
32
- const findToolsInServerArgs = toolArgs;
33
- result = await hubToolsService.findToolsInServer(findToolsInServerArgs);
21
+ case LIST_TOOLS_IN_SERVER_TOOL: {
22
+ const listToolsArgs = toolArgs;
23
+ result = await hubToolsService.listToolsInServer(listToolsArgs);
34
24
  break;
35
25
  }
36
26
  case GET_TOOL_TOOL: {
@@ -50,9 +40,9 @@ export class SystemToolHandler {
50
40
  });
51
41
  break;
52
42
  }
53
- case FIND_TOOLS_TOOL: {
54
- const findToolsArgs = toolArgs;
55
- result = await hubToolsService.findTools(findToolsArgs);
43
+ case UPDATE_SERVER_DESCRIPTION_TOOL: {
44
+ const updateDescArgs = toolArgs;
45
+ result = await hubToolsService.updateServerDescription(updateDescArgs);
56
46
  break;
57
47
  }
58
48
  default:
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Composite key utilities for server instance identification
3
+ *
4
+ * This module provides utilities for generating and parsing composite keys
5
+ * that uniquely identify a server instance across multiple instances
6
+ * of the same server name.
7
+ *
8
+ * Format: `${serverName}-${serverIndex}`
9
+ * Example: 'my-server-0', 'my-server-1', 'test-server-0'
10
+ */
11
+ /**
12
+ * Generates a composite key from serverName and serverIndex
13
+ * @param serverName - The server name
14
+ * @param serverIndex - The instance index
15
+ * @returns Composite key string
16
+ * @example getCompositeKey('my-server', 0) => 'my-server-0'
17
+ */
18
+ export declare function getCompositeKey(serverName: string, serverIndex: number): string;
19
+ /**
20
+ * Parses a composite key back into serverName and serverIndex
21
+ * @param key - The composite key to parse
22
+ * @returns Object with serverName and serverIndex, or null if invalid
23
+ * @example parseCompositeKey('my-server-0') => { serverName: 'my-server', serverIndex: 0 }
24
+ */
25
+ export declare function parseCompositeKey(key: string): {
26
+ serverName: string;
27
+ serverIndex: number;
28
+ } | null;
29
+ //# sourceMappingURL=composite-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite-key.d.ts","sourceRoot":"","sources":["../../../../src/utils/composite-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAYjG"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Composite key utilities for server instance identification
3
+ *
4
+ * This module provides utilities for generating and parsing composite keys
5
+ * that uniquely identify a server instance across multiple instances
6
+ * of the same server name.
7
+ *
8
+ * Format: `${serverName}-${serverIndex}`
9
+ * Example: 'my-server-0', 'my-server-1', 'test-server-0'
10
+ */
11
+ /**
12
+ * Generates a composite key from serverName and serverIndex
13
+ * @param serverName - The server name
14
+ * @param serverIndex - The instance index
15
+ * @returns Composite key string
16
+ * @example getCompositeKey('my-server', 0) => 'my-server-0'
17
+ */
18
+ export function getCompositeKey(serverName, serverIndex) {
19
+ return `${serverName}-${serverIndex}`;
20
+ }
21
+ /**
22
+ * Parses a composite key back into serverName and serverIndex
23
+ * @param key - The composite key to parse
24
+ * @returns Object with serverName and serverIndex, or null if invalid
25
+ * @example parseCompositeKey('my-server-0') => { serverName: 'my-server', serverIndex: 0 }
26
+ */
27
+ export function parseCompositeKey(key) {
28
+ const lastDashIndex = key.lastIndexOf('-');
29
+ if (lastDashIndex === -1) {
30
+ return null;
31
+ }
32
+ const serverName = key.slice(0, lastDashIndex);
33
+ const serverIndexPart = key.slice(lastDashIndex + 1);
34
+ const serverIndex = parseInt(serverIndexPart, 10);
35
+ if (isNaN(serverIndex)) {
36
+ return null;
37
+ }
38
+ return { serverName, serverIndex };
39
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/utils/error-handler.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IAgBrE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IA6BzF;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK;CAWlE"}
1
+ {"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../../../src/utils/error-handler.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IAgBrE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK;IA6BzF;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK;CAWlE"}
@@ -1,5 +1,6 @@
1
1
  import { McpError } from '@modelcontextprotocol/sdk/types.js';
2
- import { logger, LOG_MODULES } from './logger.js';
2
+ import { logger } from './logger.js';
3
+ import { LOG_MODULES } from './logger/log-modules.js';
3
4
  /**
4
5
  * Unified error handler
5
6
  */
@@ -45,7 +46,7 @@ export class ErrorHandler {
45
46
  * Handles general errors
46
47
  */
47
48
  static handleGeneralError(error, message) {
48
- logger.error(message, error);
49
+ logger.error(message, error, LOG_MODULES.ERROR_HANDLER);
49
50
  if (error instanceof McpError) {
50
51
  throw error;
51
52
  }
@@ -1,2 +1,4 @@
1
1
  export { logger, LOG_MODULES } from './logger.js';
2
+ export * from './sort-utils.js';
3
+ export * from './version.js';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClD,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -1 +1,3 @@
1
1
  export { logger, LOG_MODULES } from './logger.js';
2
+ export * from './sort-utils.js';
3
+ export * from './version.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Instance ID generation utilities using content-based hashing.
3
+ */
4
+ import type { ServerInstance } from '../config/config.schema.js';
5
+ /**
6
+ * Generates a stable 8-character hash from an object.
7
+ * Uses SHA-256 and returns the first 8 hex characters.
8
+ *
9
+ * @param obj - The object to hash
10
+ * @returns An 8-character hex string
11
+ */
12
+ export declare function generateInstanceHash(obj: Record<string, unknown>): string;
13
+ /**
14
+ * Generates a deterministic instance ID based on server name and instance configuration.
15
+ * The ID format is: ${serverName}-${hash}
16
+ *
17
+ * @param serverName - Name of the server
18
+ * @param instanceConfig - Partial instance configuration
19
+ * @returns A deterministic instance ID
20
+ */
21
+ export declare function generateInstanceId(serverName: string, instanceConfig: Partial<ServerInstance>): string;
22
+ //# sourceMappingURL=instance-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-id.d.ts","sourceRoot":"","sources":["../../../../src/utils/instance-id.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAyBzE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,GACtC,MAAM,CAiBR"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Instance ID generation utilities using content-based hashing.
3
+ */
4
+ import { createHash } from 'node:crypto';
5
+ /**
6
+ * Generates a stable 8-character hash from an object.
7
+ * Uses SHA-256 and returns the first 8 hex characters.
8
+ *
9
+ * @param obj - The object to hash
10
+ * @returns An 8-character hex string
11
+ */
12
+ export function generateInstanceHash(obj) {
13
+ function stableStringify(value) {
14
+ if (value === null || typeof value !== 'object') {
15
+ return JSON.stringify(value);
16
+ }
17
+ if (Array.isArray(value)) {
18
+ return '[' + value.map(stableStringify).join(',') + ']';
19
+ }
20
+ const sortedObj = {};
21
+ for (const key of Object.keys(value).sort()) {
22
+ sortedObj[key] = value[key];
23
+ }
24
+ return ('{' +
25
+ Object.keys(sortedObj)
26
+ .map((key) => JSON.stringify(key) + ':' + stableStringify(sortedObj[key]))
27
+ .join(',') +
28
+ '}');
29
+ }
30
+ const stableString = stableStringify(obj);
31
+ const hash = createHash('sha256');
32
+ hash.update(stableString);
33
+ return hash.digest('hex').slice(0, 8);
34
+ }
35
+ /**
36
+ * Generates a deterministic instance ID based on server name and instance configuration.
37
+ * The ID format is: ${serverName}-${hash}
38
+ *
39
+ * @param serverName - Name of the server
40
+ * @param instanceConfig - Partial instance configuration
41
+ * @returns A deterministic instance ID
42
+ */
43
+ export function generateInstanceId(serverName, instanceConfig) {
44
+ const hashableContent = {};
45
+ if (instanceConfig.args && instanceConfig.args.length > 0) {
46
+ hashableContent.args = instanceConfig.args;
47
+ }
48
+ if (instanceConfig.env) {
49
+ hashableContent.env = instanceConfig.env;
50
+ }
51
+ if (instanceConfig.headers) {
52
+ hashableContent.headers = instanceConfig.headers;
53
+ }
54
+ if (instanceConfig.tags && Object.keys(instanceConfig.tags).length > 0) {
55
+ hashableContent.tags = instanceConfig.tags;
56
+ }
57
+ const hash = generateInstanceHash(hashableContent);
58
+ return `${serverName}-${hash}`;
59
+ }
@@ -23,7 +23,7 @@ type ConfigGetter = () => {
23
23
  logging: {
24
24
  jsonPretty: boolean;
25
25
  mcpCommDebug: boolean;
26
- sessionDebug: boolean;
26
+ apiDebug: boolean;
27
27
  };
28
28
  };
29
29
  };
@@ -60,11 +60,11 @@ export declare function getJsonPrettySetting(): boolean;
60
60
  */
61
61
  export declare function getMcpCommDebugSetting(): boolean;
62
62
  /**
63
- * Get session debug setting from config getter.
63
+ * Get API debug setting from config getter.
64
64
  *
65
- * @returns boolean indicating whether to enable session debug logging
65
+ * @returns boolean indicating whether to enable API debug logging
66
66
  */
67
- export declare function getSessionDebugSetting(): boolean;
67
+ export declare function getApiDebugSetting(): boolean;
68
68
  /**
69
69
  * Stringify object for logging with dynamic pretty formatting based on LOG_JSON_PRETTY environment variable
70
70
  * @param obj Object to stringify
@@ -1 +1 @@
1
- {"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/json-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAiED;;GAEG;AACH,KAAK,YAAY,GAAG,MAAM;IACxB,MAAM,EAAE;QACN,OAAO,EAAE;YACP,UAAU,EAAE,OAAO,CAAC;YACpB,YAAY,EAAE,OAAO,CAAC;YACtB,YAAY,EAAE,OAAO,CAAC;SACvB,CAAC;KACH,CAAC;CACH,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/E;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAUhD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAUhD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,GAClD,MAAM,CAOR"}
1
+ {"version":3,"file":"json-utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/json-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAiED;;GAEG;AACH,KAAK,YAAY,GAAG,MAAM;IACxB,MAAM,EAAE;QACN,OAAO,EAAE;YACP,UAAU,EAAE,OAAO,CAAC;YACpB,YAAY,EAAE,OAAO,CAAC;YACtB,QAAQ,EAAE,OAAO,CAAC;SACnB,CAAC;KACH,CAAC;CACH,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAE3E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU/E;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAG1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAiB9C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAUhD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAU5C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,GAClD,MAAM,CAOR"}
@@ -165,15 +165,15 @@ export function getMcpCommDebugSetting() {
165
165
  return getDefaultForDevMode(false);
166
166
  }
167
167
  /**
168
- * Get session debug setting from config getter.
168
+ * Get API debug setting from config getter.
169
169
  *
170
- * @returns boolean indicating whether to enable session debug logging
170
+ * @returns boolean indicating whether to enable API debug logging
171
171
  */
172
- export function getSessionDebugSetting() {
172
+ export function getApiDebugSetting() {
173
173
  if (_configGetter) {
174
174
  try {
175
175
  const config = _configGetter();
176
- return config.system.logging.sessionDebug;
176
+ return config.system.logging.apiDebug;
177
177
  }
178
178
  catch {
179
179
  // Fall through to default if config getter fails
@@ -3,7 +3,8 @@
3
3
  * This file contains development log initialization and management.
4
4
  */
5
5
  import fs from 'fs';
6
- import { LogRotator, type RotatorConfig } from '../log-rotator.js';
6
+ import { LogRotator } from '../log-rotator.js';
7
+ import type { RotatorConfig } from '../log-rotator.js';
7
8
  /**
8
9
  * Development logger configuration and setup.
9
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"dev-logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/dev-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA2B;IAEhD;;OAEG;IACH,IAAI,MAAM,IAAI,EAAE,CAAC,WAAW,GAAG,IAAI,CAElC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,UAAU,GAAG,IAAI,CAE/B;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAoB/F;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"dev-logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/dev-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,aAAa,CAA2B;IAEhD;;OAEG;IACH,IAAI,MAAM,IAAI,EAAE,CAAC,WAAW,GAAG,IAAI,CAElC;IAED;;;OAGG;IACH,IAAI,OAAO,IAAI,UAAU,GAAG,IAAI,CAE/B;IAED;;;;;;;;;;OAUG;IACH,YAAY,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAoB/F;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
@@ -1 +1 @@
1
- {"version":3,"file":"log-formatter.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAsED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,UAAU,SAAI,GAAG,UAAU,GAAG,IAAI,CAQ/D;AA2HD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAK/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CASlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAatD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,UAAU,GACnB,MAAM,CAsCR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CA6B/F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiClD"}
1
+ {"version":3,"file":"log-formatter.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-formatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAMnD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAsED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,UAAU,SAAI,GAAG,UAAU,GAAG,IAAI,CAQ/D;AA2HD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAK/D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CASlD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAatD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,UAAU,GACnB,MAAM,CAsCR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CA6B/F;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAyHlD"}
@@ -324,25 +324,102 @@ export function createLogMessage(level, message, context) {
324
324
  * @returns Formatted error string
325
325
  */
326
326
  export function formatError(error) {
327
+ // Special case: handle arrays that might contain errors
328
+ if (Array.isArray(error)) {
329
+ if (error.length === 0) {
330
+ return '';
331
+ }
332
+ // If it's a single-element array, unwrap it and format the element
333
+ if (error.length === 1) {
334
+ const element = error[0];
335
+ // Skip empty objects that are likely log context
336
+ if (typeof element === 'object' &&
337
+ element !== null &&
338
+ !Array.isArray(element) &&
339
+ ('module' in element || 'traceId' in element || 'spanId' in element)) {
340
+ return '';
341
+ }
342
+ // Otherwise format the single element
343
+ return formatError(element);
344
+ }
345
+ // For multi-element arrays, format each element
346
+ const formattedElements = error
347
+ .map((elem) => {
348
+ const formatted = formatError(elem);
349
+ return formatted || '[skipped]';
350
+ })
351
+ .filter((f) => f !== '[skipped]');
352
+ if (formattedElements.length === 0) {
353
+ return '';
354
+ }
355
+ if (formattedElements.length === 1) {
356
+ return formattedElements[0];
357
+ }
358
+ return `[ ${formattedElements.join(', ')} ]`;
359
+ }
327
360
  if (error instanceof Error) {
328
- let result = error.message;
361
+ let result = '';
362
+ // Include error name if available
363
+ if (error.name) {
364
+ result += error.name;
365
+ }
366
+ // Include error message if available
367
+ if (error.message) {
368
+ result += result ? `: ${error.message}` : error.message;
369
+ }
370
+ // If no name and message, try string representation
371
+ if (!result) {
372
+ result = String(error);
373
+ }
374
+ // Include stack trace if available
329
375
  if (error.stack) {
330
376
  const stackLines = error.stack.split('\n').slice(1, 6);
331
377
  if (stackLines.length > 0) {
332
378
  result += '\n' + stackLines.join('\n');
333
379
  }
334
380
  }
381
+ // Check for non-enumerable properties using Object.getOwnPropertyNames
382
+ const ownProps = Object.getOwnPropertyNames(error);
383
+ const extraProps = [];
384
+ for (const prop of ownProps) {
385
+ if (prop !== 'name' && prop !== 'message' && prop !== 'stack') {
386
+ try {
387
+ const value = error[prop];
388
+ extraProps.push(`${prop}: ${stringifyForLogging(value)}`);
389
+ }
390
+ catch {
391
+ extraProps.push(`${prop}: [could not serialize]`);
392
+ }
393
+ }
394
+ }
395
+ if (extraProps.length > 0) {
396
+ result += '\n Additional properties: ' + extraProps.join(', ');
397
+ }
335
398
  return result;
336
399
  }
337
400
  if (typeof error === 'object' && error !== null) {
338
401
  if ('module' in error || 'traceId' in error || 'spanId' in error) {
339
402
  return '';
340
403
  }
341
- if (Array.isArray(error) && error.length === 0) {
342
- return '';
404
+ // Check for empty object (both enumerable and non-enumerable properties)
405
+ const enumKeys = Object.keys(error);
406
+ const allProps = Object.getOwnPropertyNames(error);
407
+ if (enumKeys.length === 0 && allProps.length === 0) {
408
+ return '[empty object]';
343
409
  }
344
- if (Object.keys(error).length === 0) {
345
- return '';
410
+ // If only non-enumerable properties, show them
411
+ if (enumKeys.length === 0 && allProps.length > 0) {
412
+ const props = [];
413
+ for (const prop of allProps) {
414
+ try {
415
+ const value = error[prop];
416
+ props.push(`${prop}: ${stringifyForLogging(value)}`);
417
+ }
418
+ catch {
419
+ props.push(`${prop}: [could not serialize]`);
420
+ }
421
+ }
422
+ return `{ ${props.join(', ')} }`;
346
423
  }
347
424
  try {
348
425
  return stringifyForLogging(error);
@@ -24,25 +24,22 @@ export declare const LOG_MODULES: {
24
24
  readonly DEV_SERVER: {
25
25
  module: string;
26
26
  };
27
- readonly CONFIG_MANAGER: {
28
- module: string;
29
- };
30
- readonly CONFIG_LOADER: {
27
+ readonly RUNNER: {
31
28
  module: string;
32
29
  };
33
- readonly CONFIG_CHANGES: {
30
+ readonly CONFIG_MANAGER: {
34
31
  module: string;
35
32
  };
36
- readonly SESSION_MANAGER: {
33
+ readonly CONFIG_LOADER: {
37
34
  module: string;
38
35
  };
39
- readonly SESSION: {
36
+ readonly CONFIG_SAVER: {
40
37
  module: string;
41
38
  };
42
- readonly SESSION_API: {
39
+ readonly CONFIG_CHANGES: {
43
40
  module: string;
44
41
  };
45
- readonly SESSION_TRACKER: {
42
+ readonly SERVER_CONFIG_MANAGER: {
46
43
  module: string;
47
44
  };
48
45
  readonly CONNECTION_MANAGER: {
@@ -51,6 +48,9 @@ export declare const LOG_MODULES: {
51
48
  readonly HUB_MANAGER: {
52
49
  module: string;
53
50
  };
51
+ readonly SERVER_SELECTOR: {
52
+ module: string;
53
+ };
54
54
  readonly GATEWAY: {
55
55
  module: string;
56
56
  };
@@ -66,6 +66,9 @@ export declare const LOG_MODULES: {
66
66
  readonly TOOL_LIST: {
67
67
  module: string;
68
68
  };
69
+ readonly TOOL_LIST_GENERATOR: {
70
+ module: string;
71
+ };
69
72
  readonly INITIALIZE_HANDLER: {
70
73
  module: string;
71
74
  };
@@ -81,6 +84,9 @@ export declare const LOG_MODULES: {
81
84
  readonly SEARCH: {
82
85
  module: string;
83
86
  };
87
+ readonly ERROR_HANDLER: {
88
+ module: string;
89
+ };
84
90
  readonly COMMUNICATION: {
85
91
  module: string;
86
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"log-modules.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA4DtB;;;;;;;;;;;OAWG;mCACmB,MAAM;;;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"log-modules.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8DtB;;;;;;;;;;;OAWG;mCACmB,MAAM;;;CACpB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,WAAW,EAAE,SAAS,CAAC,CAAC;AAErE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC"}