@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
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach } from 'vitest';
2
- import { stringifyForLogging, stringifyForLoggingWithReplacer, setJsonPrettyConfigGetter, rawHeadersToObject, stringifyRawHeadersForLogging, getJsonPrettySetting, getMcpCommDebugSetting, getSessionDebugSetting } from '../../../src/utils/json-utils.js';
2
+ import { stringifyForLogging, stringifyForLoggingWithReplacer, setJsonPrettyConfigGetter, rawHeadersToObject, stringifyRawHeadersForLogging, getJsonPrettySetting, getMcpCommDebugSetting, getApiDebugSetting } from '../../../src/utils/json-utils.js';
3
3
  describe('json-utils', () => {
4
4
  beforeEach(() => {
5
5
  // Reset config getter
@@ -13,7 +13,7 @@ describe('json-utils', () => {
13
13
  logging: {
14
14
  jsonPretty: true,
15
15
  mcpCommDebug: false,
16
- sessionDebug: false
16
+ apiDebug: false
17
17
  }
18
18
  }
19
19
  }));
@@ -35,7 +35,7 @@ describe('json-utils', () => {
35
35
  logging: {
36
36
  jsonPretty: true,
37
37
  mcpCommDebug: false,
38
- sessionDebug: false
38
+ apiDebug: false
39
39
  }
40
40
  }
41
41
  }));
@@ -53,7 +53,7 @@ describe('json-utils', () => {
53
53
  logging: {
54
54
  jsonPretty: true,
55
55
  mcpCommDebug: false,
56
- sessionDebug: false
56
+ apiDebug: false
57
57
  }
58
58
  }
59
59
  }));
@@ -72,7 +72,7 @@ describe('json-utils', () => {
72
72
  logging: {
73
73
  jsonPretty: true,
74
74
  mcpCommDebug: false,
75
- sessionDebug: false
75
+ apiDebug: false
76
76
  }
77
77
  }
78
78
  }));
@@ -102,7 +102,7 @@ describe('json-utils', () => {
102
102
  logging: {
103
103
  jsonPretty: false,
104
104
  mcpCommDebug: false,
105
- sessionDebug: false
105
+ apiDebug: false
106
106
  }
107
107
  }
108
108
  }));
@@ -182,7 +182,7 @@ describe('json-utils', () => {
182
182
  logging: {
183
183
  jsonPretty: false,
184
184
  mcpCommDebug: false,
185
- sessionDebug: false
185
+ apiDebug: false
186
186
  }
187
187
  }
188
188
  }));
@@ -192,7 +192,7 @@ describe('json-utils', () => {
192
192
  logging: {
193
193
  jsonPretty: true,
194
194
  mcpCommDebug: false,
195
- sessionDebug: false
195
+ apiDebug: false
196
196
  }
197
197
  }
198
198
  }));
@@ -212,7 +212,7 @@ describe('json-utils', () => {
212
212
  logging: {
213
213
  jsonPretty: false, // Config says false, but env should override
214
214
  mcpCommDebug: false,
215
- sessionDebug: false
215
+ apiDebug: false
216
216
  }
217
217
  }
218
218
  }));
@@ -231,7 +231,7 @@ describe('json-utils', () => {
231
231
  logging: {
232
232
  jsonPretty: false, // Config says false, but env should override
233
233
  mcpCommDebug: false,
234
- sessionDebug: false
234
+ apiDebug: false
235
235
  }
236
236
  }
237
237
  }));
@@ -250,7 +250,7 @@ describe('json-utils', () => {
250
250
  logging: {
251
251
  jsonPretty: true, // Config says true, but env should override
252
252
  mcpCommDebug: false,
253
- sessionDebug: false
253
+ apiDebug: false
254
254
  }
255
255
  }
256
256
  }));
@@ -269,7 +269,7 @@ describe('json-utils', () => {
269
269
  logging: {
270
270
  jsonPretty: true, // Config says true, but env should override
271
271
  mcpCommDebug: false,
272
- sessionDebug: false
272
+ apiDebug: false
273
273
  }
274
274
  }
275
275
  }));
@@ -288,7 +288,7 @@ describe('json-utils', () => {
288
288
  logging: {
289
289
  jsonPretty: false,
290
290
  mcpCommDebug: false,
291
- sessionDebug: false
291
+ apiDebug: false
292
292
  }
293
293
  }
294
294
  }));
@@ -303,7 +303,7 @@ describe('json-utils', () => {
303
303
  it('should return correct defaults when no config getter is set', () => {
304
304
  expect(getJsonPrettySetting()).toBe(true);
305
305
  expect(getMcpCommDebugSetting()).toBe(false);
306
- expect(getSessionDebugSetting()).toBe(false);
306
+ expect(getApiDebugSetting()).toBe(false);
307
307
  });
308
308
  it('should return values from config getter when available', () => {
309
309
  setJsonPrettyConfigGetter(() => ({
@@ -311,13 +311,13 @@ describe('json-utils', () => {
311
311
  logging: {
312
312
  jsonPretty: false,
313
313
  mcpCommDebug: true,
314
- sessionDebug: true
314
+ apiDebug: true
315
315
  }
316
316
  }
317
317
  }));
318
318
  expect(getJsonPrettySetting()).toBe(false);
319
319
  expect(getMcpCommDebugSetting()).toBe(true);
320
- expect(getSessionDebugSetting()).toBe(true);
320
+ expect(getApiDebugSetting()).toBe(true);
321
321
  });
322
322
  it('should fall back to defaults when config getter fails', () => {
323
323
  setJsonPrettyConfigGetter(() => {
@@ -325,7 +325,7 @@ describe('json-utils', () => {
325
325
  });
326
326
  expect(getJsonPrettySetting()).toBe(true);
327
327
  expect(getMcpCommDebugSetting()).toBe(false);
328
- expect(getSessionDebugSetting()).toBe(false);
328
+ expect(getApiDebugSetting()).toBe(false);
329
329
  });
330
330
  });
331
331
  describe('rawHeadersToObject', () => {
@@ -364,7 +364,7 @@ describe('json-utils', () => {
364
364
  logging: {
365
365
  jsonPretty: true,
366
366
  mcpCommDebug: false,
367
- sessionDebug: false
367
+ apiDebug: false
368
368
  }
369
369
  }
370
370
  }));
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=logger-formatter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-formatter.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/utils/logger-formatter.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { formatError } from '../../../src/utils/logger/log-formatter.js';
3
+ describe('Logger Formatter - formatError', () => {
4
+ it('should return empty string for array containing exactly one empty object ([{}])', () => {
5
+ const error = [{}];
6
+ const result = formatError(error);
7
+ expect(result).toBe('');
8
+ });
9
+ it('should return formatted string for array containing multiple empty objects ([{}, {}, {}])', () => {
10
+ const error = [{}, {}, {}];
11
+ const result = formatError(error);
12
+ expect(result).toContain('{}');
13
+ });
14
+ it('should return formatted string for array containing non-empty objects', () => {
15
+ const error = [{ message: 'test' }];
16
+ const result = formatError(error);
17
+ expect(result).toContain('message');
18
+ expect(result).toContain('test');
19
+ });
20
+ it('should return formatted string for array containing mixed objects (empty and non-empty)', () => {
21
+ const error = [{}, { message: 'test' }, {}];
22
+ const result = formatError(error);
23
+ expect(result).toContain('message');
24
+ expect(result).toContain('test');
25
+ });
26
+ it('should return empty string for empty array', () => {
27
+ const error = [];
28
+ const result = formatError(error);
29
+ expect(result).toBe('');
30
+ });
31
+ it('should handle Error objects with message correctly', () => {
32
+ const error = new Error('Test error');
33
+ const result = formatError(error);
34
+ expect(result).toContain('Test error');
35
+ });
36
+ it('should handle Error objects without message correctly', () => {
37
+ const error = new Error();
38
+ const result = formatError(error);
39
+ expect(result).toContain('Error');
40
+ });
41
+ it('should handle Error objects with custom name correctly', () => {
42
+ const error = Object.assign(new Error(), { name: 'NetworkError' });
43
+ const result = formatError(error);
44
+ expect(result).toContain('NetworkError');
45
+ });
46
+ it('should handle string errors correctly', () => {
47
+ const error = 'string error';
48
+ const result = formatError(error);
49
+ expect(result).toBe('string error');
50
+ });
51
+ it('should handle empty objects correctly', () => {
52
+ const error = {};
53
+ const result = formatError(error);
54
+ expect(result).toBe('{}');
55
+ });
56
+ it('should handle null values correctly', () => {
57
+ const error = null;
58
+ const result = formatError(error);
59
+ expect(result).toBe('null');
60
+ });
61
+ it('should handle undefined values correctly', () => {
62
+ const error = undefined;
63
+ const result = formatError(error);
64
+ expect(result).toBe('undefined');
65
+ });
66
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=parameter-validator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameter-validator.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/utils/parameter-validator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { validateParameters } from '../../../src/utils/parameter-validator.js';
3
+ describe('Parameter Validator', () => {
4
+ it('should return null for valid parameters', () => {
5
+ const schema = {
6
+ type: 'object',
7
+ properties: {
8
+ name: { type: 'string' },
9
+ age: { type: 'number' }
10
+ },
11
+ required: ['name']
12
+ };
13
+ const args = { name: 'test', age: 25 };
14
+ const result = validateParameters(args, schema);
15
+ expect(result).toBeNull();
16
+ });
17
+ it('should return error for missing required parameter', () => {
18
+ const schema = {
19
+ type: 'object',
20
+ properties: {
21
+ name: { type: 'string' },
22
+ age: { type: 'number' }
23
+ },
24
+ required: ['name', 'age']
25
+ };
26
+ const args = { name: 'test' };
27
+ const result = validateParameters(args, schema);
28
+ expect(result).toContain('Missing required parameter');
29
+ expect(result).toContain('age');
30
+ });
31
+ it('should return error for invalid parameter type', () => {
32
+ const schema = {
33
+ type: 'object',
34
+ properties: {
35
+ name: { type: 'string' },
36
+ age: { type: 'number' }
37
+ }
38
+ };
39
+ const args = { name: 'test', age: '25' }; // age should be number, not string
40
+ const result = validateParameters(args, schema);
41
+ expect(result).toContain('Invalid type for parameter');
42
+ expect(result).toContain('Expected: number');
43
+ });
44
+ it('should handle schema without required fields', () => {
45
+ const schema = {
46
+ type: 'object',
47
+ properties: {
48
+ optionalField: { type: 'string' }
49
+ }
50
+ };
51
+ const args = {};
52
+ const result = validateParameters(args, schema);
53
+ expect(result).toBeNull();
54
+ });
55
+ it('should handle schema without properties', () => {
56
+ const schema = {
57
+ type: 'object'
58
+ };
59
+ const args = { any: 'value' };
60
+ const result = validateParameters(args, schema);
61
+ expect(result).toBeNull();
62
+ });
63
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=process-tree.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-tree.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/utils/process-tree.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { getChildren, getProcessTree, isAnyInTreeRunning, getWorkingProcessPid, killProcessTree } from '../../../src/utils/process-tree.js';
3
+ // Mock child_process module
4
+ vi.mock('child_process', () => ({
5
+ spawn: vi.fn()
6
+ }));
7
+ describe('process-tree (non-Windows platform)', () => {
8
+ // Save original platform
9
+ const originalPlatform = process.platform;
10
+ beforeEach(() => {
11
+ // Mock non-Windows platform
12
+ Object.defineProperty(process, 'platform', {
13
+ value: 'linux',
14
+ configurable: true
15
+ });
16
+ vi.clearAllMocks();
17
+ });
18
+ describe('getChildren', () => {
19
+ it('should return empty array on non-Windows platform', async () => {
20
+ const result = await getChildren(1234);
21
+ expect(result).toEqual([]);
22
+ });
23
+ });
24
+ describe('getProcessTree', () => {
25
+ it('should return array with just the original PID on non-Windows platform', async () => {
26
+ const result = await getProcessTree(1234);
27
+ expect(result).toEqual([1234]);
28
+ });
29
+ });
30
+ describe('getWorkingProcessPid', () => {
31
+ it('should return the original PID on non-Windows platform', async () => {
32
+ const result = await getWorkingProcessPid(1234);
33
+ expect(result).toEqual(1234);
34
+ });
35
+ });
36
+ describe('isAnyInTreeRunning', () => {
37
+ it('should check just the single process on non-Windows platform', async () => {
38
+ // Mock process.kill to return true (process running)
39
+ const originalKill = process.kill;
40
+ process.kill = vi.fn();
41
+ const result = await isAnyInTreeRunning(1234);
42
+ expect(result).toBeDefined();
43
+ // Restore original
44
+ process.kill = originalKill;
45
+ });
46
+ });
47
+ describe('killProcessTree', () => {
48
+ it('should just kill the single process on non-Windows platform', async () => {
49
+ // Mock process.kill
50
+ const originalKill = process.kill;
51
+ process.kill = vi.fn();
52
+ await killProcessTree(1234);
53
+ // Restore original
54
+ process.kill = originalKill;
55
+ });
56
+ });
57
+ // Restore original platform after all tests
58
+ afterAll(() => {
59
+ Object.defineProperty(process, 'platform', {
60
+ value: originalPlatform,
61
+ configurable: true
62
+ });
63
+ });
64
+ });
65
+ describe('process-tree (Windows platform)', () => {
66
+ // Save original platform
67
+ const originalPlatform = process.platform;
68
+ beforeEach(() => {
69
+ // Mock Windows platform
70
+ Object.defineProperty(process, 'platform', {
71
+ value: 'win32',
72
+ configurable: true
73
+ });
74
+ vi.clearAllMocks();
75
+ });
76
+ describe('isProcessRunning (internal helper behavior)', () => {
77
+ it('should handle process.kill correctly', async () => {
78
+ const originalKill = process.kill;
79
+ // isAnyInTreeRunning will call our mocked kill
80
+ // We'll test this indirectly
81
+ const pidToCheck = 99999; // A PID that doesn't exist
82
+ process.kill = vi.fn((checkPid, signal) => {
83
+ if (checkPid === pidToCheck && signal === 0) {
84
+ throw new Error('ESRCH');
85
+ }
86
+ return true;
87
+ });
88
+ const result = await isAnyInTreeRunning(pidToCheck);
89
+ expect(result !== undefined).toBe(true);
90
+ // Restore original
91
+ process.kill = originalKill;
92
+ });
93
+ });
94
+ describe('edge cases and error handling', () => {
95
+ it('should handle invalid PID gracefully', async () => {
96
+ const result = await getChildren(0);
97
+ expect(Array.isArray(result)).toBe(true);
98
+ });
99
+ it('should handle negative PID gracefully', async () => {
100
+ const result = await getProcessTree(-1);
101
+ expect(Array.isArray(result)).toBe(true);
102
+ });
103
+ it('should handle errors in getWorkingProcessPid gracefully', async () => {
104
+ const pid = 12345;
105
+ const result = await getWorkingProcessPid(pid);
106
+ // When PowerShell fails, it should fall back to returning the original PID
107
+ expect(result).toEqual(pid);
108
+ });
109
+ });
110
+ describe('killProcessTree error handling', () => {
111
+ it('should handle errors in killProcessTree gracefully', async () => {
112
+ const originalKill = process.kill;
113
+ process.kill = vi.fn(() => {
114
+ throw new Error('Access denied');
115
+ });
116
+ // This should not throw, errors should be caught
117
+ await expect(killProcessTree(1234)).resolves.not.toThrow();
118
+ // Restore original
119
+ process.kill = originalKill;
120
+ });
121
+ });
122
+ // Restore original platform after all tests
123
+ afterAll(() => {
124
+ Object.defineProperty(process, 'platform', {
125
+ value: originalPlatform,
126
+ configurable: true
127
+ });
128
+ });
129
+ });
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import { requestContext, getSessionContext, getSessionCwd } from '../../../src/utils/request-context.js';
2
+ import { requestContext, getSessionContext } from '../../../src/utils/request-context.js';
3
3
  describe('Request Context', () => {
4
4
  beforeEach(() => {
5
5
  // Clean up any existing context
@@ -11,14 +11,11 @@ describe('Request Context', () => {
11
11
  });
12
12
  it('should return undefined when no context is set', () => {
13
13
  expect(getSessionContext()).toBeUndefined();
14
- expect(getSessionCwd()).toBeUndefined();
15
14
  });
16
15
  it('should store and retrieve session context correctly', async () => {
17
16
  const testContext = {
18
17
  sessionId: 'test-session',
19
18
  clientName: 'Test Client',
20
- cwd: '/test/cwd',
21
- project: 'test-project',
22
19
  ip: '127.0.0.1',
23
20
  userAgent: 'test-agent',
24
21
  timestamp: Date.now()
@@ -26,8 +23,6 @@ describe('Request Context', () => {
26
23
  await requestContext.run(testContext, () => {
27
24
  const context = getSessionContext();
28
25
  expect(context).toEqual(testContext);
29
- const cwd = getSessionCwd();
30
- expect(cwd).toBe('/test/cwd');
31
26
  });
32
27
  });
33
28
  it('should handle partial context correctly', async () => {
@@ -38,19 +33,15 @@ describe('Request Context', () => {
38
33
  await requestContext.run(partialContext, () => {
39
34
  const context = getSessionContext();
40
35
  expect(context).toEqual(partialContext);
41
- const cwd = getSessionCwd();
42
- expect(cwd).toBeUndefined();
43
36
  });
44
37
  });
45
38
  it('should maintain context isolation between async operations', async () => {
46
39
  const context1 = {
47
40
  sessionId: 'session-1',
48
- cwd: '/path/1',
49
41
  timestamp: Date.now()
50
42
  };
51
43
  const context2 = {
52
44
  sessionId: 'session-2',
53
- cwd: '/path/2',
54
45
  timestamp: Date.now()
55
46
  };
56
47
  let result1;
@@ -58,25 +49,15 @@ describe('Request Context', () => {
58
49
  const operation1 = requestContext.run(context1, async () => {
59
50
  // Simulate async operation
60
51
  await new Promise((resolve) => setTimeout(resolve, 10));
61
- result1 = getSessionCwd();
52
+ result1 = getSessionContext();
62
53
  });
63
54
  const operation2 = requestContext.run(context2, async () => {
64
55
  // Simulate async operation
65
56
  await new Promise((resolve) => setTimeout(resolve, 5));
66
- result2 = getSessionCwd();
57
+ result2 = getSessionContext();
67
58
  });
68
59
  await Promise.all([operation1, operation2]);
69
- expect(result1).toBe('/path/1');
70
- expect(result2).toBe('/path/2');
71
- });
72
- it('should return undefined for getSessionCwd when cwd is not set', async () => {
73
- const contextWithoutCwd = {
74
- sessionId: 'no-cwd-session',
75
- timestamp: Date.now()
76
- };
77
- await requestContext.run(contextWithoutCwd, () => {
78
- const cwd = getSessionCwd();
79
- expect(cwd).toBeUndefined();
80
- });
60
+ expect(result1).toEqual(context1);
61
+ expect(result2).toEqual(context2);
81
62
  });
82
63
  });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sort-utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sort-utils.test.d.ts","sourceRoot":"","sources":["../../../../../tests/unit/utils/sort-utils.test.ts"],"names":[],"mappings":""}