@loop_ouroboros/mcp-hub-lite 1.0.1 → 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 (374) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/dist/client/assets/{HomeView-Cr1jX73N.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-Bp9Rjwd7.js +1 -0
  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-Csv24uBk.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-CqPQN3XP.js +1 -0
  39. package/dist/client/assets/{raf-DDfJOMYh.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 +363 -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 +2 -56
  48. package/dist/server/shared/models/session.model.d.ts.map +1 -1
  49. package/dist/server/shared/models/session.model.js +2 -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/client.types.d.ts +4 -32
  53. package/dist/server/shared/types/client.types.d.ts.map +1 -1
  54. package/dist/server/shared/types/client.types.js +3 -2
  55. package/dist/server/shared/types/index.d.ts +3 -3
  56. package/dist/server/shared/types/index.d.ts.map +1 -1
  57. package/dist/server/shared/types/index.js +3 -3
  58. package/dist/server/shared/types/session-context.types.d.ts +35 -0
  59. package/dist/server/shared/types/session-context.types.d.ts.map +1 -0
  60. package/dist/server/shared/types/session-context.types.js +5 -0
  61. package/dist/server/shared/types/websocket.types.d.ts +17 -10
  62. package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
  63. package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -1
  64. package/dist/server/src/api/mcp/debug-response-wrapper.js +26 -1
  65. package/dist/server/src/api/mcp/gateway.d.ts +1 -3
  66. package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
  67. package/dist/server/src/api/mcp/gateway.js +34 -61
  68. package/dist/server/src/api/mcp/session-context-extractor.d.ts +5 -5
  69. package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
  70. package/dist/server/src/api/mcp/session-context-extractor.js +15 -39
  71. package/dist/server/src/api/web/clients.js +2 -2
  72. package/dist/server/src/api/web/hub-tools.d.ts +2 -2
  73. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  74. package/dist/server/src/api/web/hub-tools.js +3 -54
  75. package/dist/server/src/api/web/mcp-status.d.ts +1 -1
  76. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  77. package/dist/server/src/api/web/mcp-status.js +71 -30
  78. package/dist/server/src/api/web/resources.d.ts.map +1 -1
  79. package/dist/server/src/api/web/resources.js +28 -22
  80. package/dist/server/src/api/web/search.d.ts +2 -16
  81. package/dist/server/src/api/web/search.d.ts.map +1 -1
  82. package/dist/server/src/api/web/search.js +24 -45
  83. package/dist/server/src/api/web/servers.d.ts +3 -3
  84. package/dist/server/src/api/web/servers.d.ts.map +1 -1
  85. package/dist/server/src/api/web/servers.js +70 -25
  86. package/dist/server/src/api/web/sessions.js +1 -1
  87. package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
  88. package/dist/server/src/api/ws/ws-handler.js +4 -2
  89. package/dist/server/src/app.d.ts.map +1 -1
  90. package/dist/server/src/app.js +0 -4
  91. package/dist/server/src/cli/commands/list.js +2 -2
  92. package/dist/server/src/cli/commands/status.d.ts.map +1 -1
  93. package/dist/server/src/cli/commands/status.js +41 -30
  94. package/dist/server/src/cli/index.d.ts.map +1 -1
  95. package/dist/server/src/cli/index.js +2 -1
  96. package/dist/server/src/cli/server.d.ts +11 -2
  97. package/dist/server/src/cli/server.d.ts.map +1 -1
  98. package/dist/server/src/config/config-change-logger.d.ts +22 -0
  99. package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
  100. package/dist/server/src/config/config-change-logger.js +135 -11
  101. package/dist/server/src/config/config-loader.d.ts +6 -5
  102. package/dist/server/src/config/config-loader.d.ts.map +1 -1
  103. package/dist/server/src/config/config-loader.js +54 -16
  104. package/dist/server/src/config/config-manager.d.ts +51 -43
  105. package/dist/server/src/config/config-manager.d.ts.map +1 -1
  106. package/dist/server/src/config/config-manager.js +84 -66
  107. package/dist/server/src/config/config-migrator.d.ts +82 -0
  108. package/dist/server/src/config/config-migrator.d.ts.map +1 -0
  109. package/dist/server/src/config/config-migrator.js +348 -0
  110. package/dist/server/src/config/config-saver.d.ts +2 -0
  111. package/dist/server/src/config/config-saver.d.ts.map +1 -1
  112. package/dist/server/src/config/config-saver.js +8 -2
  113. package/dist/server/src/config/config.schema.d.ts +10 -102
  114. package/dist/server/src/config/config.schema.d.ts.map +1 -1
  115. package/dist/server/src/config/config.schema.js +15 -98
  116. package/dist/server/src/config/path-validator.d.ts +27 -0
  117. package/dist/server/src/config/path-validator.d.ts.map +1 -0
  118. package/dist/server/src/config/path-validator.js +53 -0
  119. package/dist/server/src/config/server-config-manager.d.ts +37 -31
  120. package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
  121. package/dist/server/src/config/server-config-manager.js +222 -66
  122. package/dist/server/src/config/type-converter.d.ts.map +1 -1
  123. package/dist/server/src/config/type-converter.js +3 -2
  124. package/dist/server/src/index.js +1 -1
  125. package/dist/server/src/models/event.model.d.ts +17 -10
  126. package/dist/server/src/models/event.model.d.ts.map +1 -1
  127. package/dist/server/src/models/server.model.d.ts +17 -3
  128. package/dist/server/src/models/server.model.d.ts.map +1 -1
  129. package/dist/server/src/models/server.model.js +2 -1
  130. package/dist/server/src/models/system-tools.constants.d.ts +10 -27
  131. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  132. package/dist/server/src/models/system-tools.constants.js +4 -8
  133. package/dist/server/src/pid/manager.d.ts.map +1 -1
  134. package/dist/server/src/pid/manager.js +2 -1
  135. package/dist/server/src/server/dev-server.js +34 -20
  136. package/dist/server/src/server/runner.d.ts.map +1 -1
  137. package/dist/server/src/server/runner.js +41 -26
  138. package/dist/server/src/services/client-tracker.service.d.ts +3 -128
  139. package/dist/server/src/services/client-tracker.service.d.ts.map +1 -1
  140. package/dist/server/src/services/client-tracker.service.js +4 -200
  141. package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
  142. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  143. package/dist/server/src/services/connection/connection-manager.js +286 -241
  144. package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
  145. package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
  146. package/dist/server/src/services/connection/tool-cache.js +50 -55
  147. package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
  148. package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
  149. package/dist/server/src/services/gateway/gateway.service.js +15 -19
  150. package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
  151. package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
  152. package/dist/server/src/services/gateway/global-transport.js +42 -0
  153. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
  154. package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
  155. package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
  156. package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
  157. package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
  158. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
  159. package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
  160. package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +16 -55
  161. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
  162. package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
  163. package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
  164. package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
  165. package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
  166. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  167. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
  168. package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
  169. package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
  170. package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
  171. package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
  172. package/dist/server/src/services/gateway/types.d.ts +2 -1
  173. package/dist/server/src/services/gateway/types.d.ts.map +1 -1
  174. package/dist/server/src/services/hub-manager.service.d.ts +32 -238
  175. package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
  176. package/dist/server/src/services/hub-manager.service.js +89 -267
  177. package/dist/server/src/services/hub-tools/index.d.ts +1 -3
  178. package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
  179. package/dist/server/src/services/hub-tools/index.js +1 -2
  180. package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
  181. package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
  182. package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
  183. package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
  184. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
  185. package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
  186. package/dist/server/src/services/hub-tools/resource-generator.d.ts +25 -5
  187. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  188. package/dist/server/src/services/hub-tools/resource-generator.js +259 -64
  189. package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
  190. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  191. package/dist/server/src/services/hub-tools/server-selector.js +44 -37
  192. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
  193. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  194. package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
  195. package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
  196. package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
  197. package/dist/server/src/services/hub-tools/tool-search.js +10 -4
  198. package/dist/server/src/services/hub-tools/types.d.ts +2 -2
  199. package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
  200. package/dist/server/src/services/hub-tools.service.d.ts +43 -72
  201. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  202. package/dist/server/src/services/hub-tools.service.js +185 -110
  203. package/dist/server/src/services/search/search-cache.d.ts +0 -19
  204. package/dist/server/src/services/search/search-cache.d.ts.map +1 -1
  205. package/dist/server/src/services/search/search-cache.js +0 -24
  206. package/dist/server/src/services/search/search-core.service.d.ts +5 -5
  207. package/dist/server/src/services/search/search-core.service.js +11 -11
  208. package/dist/server/src/services/session/session-manager.d.ts +12 -256
  209. package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
  210. package/dist/server/src/services/session/session-manager.js +23 -583
  211. package/dist/server/src/services/session-tracker.service.d.ts +124 -0
  212. package/dist/server/src/services/session-tracker.service.d.ts.map +1 -0
  213. package/dist/server/src/services/session-tracker.service.js +176 -0
  214. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  215. package/dist/server/src/services/system-tool-handler.js +7 -17
  216. package/dist/server/src/utils/composite-key.d.ts +29 -0
  217. package/dist/server/src/utils/composite-key.d.ts.map +1 -0
  218. package/dist/server/src/utils/composite-key.js +39 -0
  219. package/dist/server/src/utils/error-handler.d.ts.map +1 -1
  220. package/dist/server/src/utils/error-handler.js +3 -2
  221. package/dist/server/src/utils/index.d.ts +2 -0
  222. package/dist/server/src/utils/index.d.ts.map +1 -1
  223. package/dist/server/src/utils/index.js +2 -0
  224. package/dist/server/src/utils/instance-id.d.ts +22 -0
  225. package/dist/server/src/utils/instance-id.d.ts.map +1 -0
  226. package/dist/server/src/utils/instance-id.js +59 -0
  227. package/dist/server/src/utils/json-utils.d.ts +4 -4
  228. package/dist/server/src/utils/json-utils.d.ts.map +1 -1
  229. package/dist/server/src/utils/json-utils.js +10 -4
  230. package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
  231. package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
  232. package/dist/server/src/utils/logger/log-colors.d.ts +1 -0
  233. package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -1
  234. package/dist/server/src/utils/logger/log-colors.js +2 -1
  235. package/dist/server/src/utils/logger/log-context.d.ts +1 -0
  236. package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
  237. package/dist/server/src/utils/logger/log-formatter.d.ts +28 -0
  238. package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
  239. package/dist/server/src/utils/logger/log-formatter.js +287 -5
  240. package/dist/server/src/utils/logger/log-modules.d.ts +15 -12
  241. package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
  242. package/dist/server/src/utils/logger/log-modules.js +8 -8
  243. package/dist/server/src/utils/logger/log-output.d.ts +2 -2
  244. package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
  245. package/dist/server/src/utils/logger/log-output.js +27 -6
  246. package/dist/server/src/utils/logger/logger.d.ts +13 -0
  247. package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
  248. package/dist/server/src/utils/logger/logger.js +42 -7
  249. package/dist/server/src/utils/parameter-validator.d.ts +10 -0
  250. package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
  251. package/dist/server/src/utils/parameter-validator.js +53 -0
  252. package/dist/server/src/utils/process-tree.d.ts +49 -0
  253. package/dist/server/src/utils/process-tree.d.ts.map +1 -0
  254. package/dist/server/src/utils/process-tree.js +285 -0
  255. package/dist/server/src/utils/request-context.d.ts +12 -30
  256. package/dist/server/src/utils/request-context.d.ts.map +1 -1
  257. package/dist/server/src/utils/request-context.js +10 -30
  258. package/dist/server/src/utils/sort-utils.d.ts +40 -0
  259. package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
  260. package/dist/server/src/utils/sort-utils.js +131 -0
  261. package/dist/server/src/utils/tool-args-parser.d.ts +0 -4
  262. package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -1
  263. package/dist/server/src/utils/tool-args-parser.js +0 -7
  264. package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
  265. package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
  266. package/dist/server/src/utils/transports/sse-transport.js +55 -9
  267. package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
  268. package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
  269. package/dist/server/src/utils/transports/stdio-transport.js +66 -247
  270. package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
  271. package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
  272. package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
  273. package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
  274. package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
  275. package/dist/server/src/utils/transports/transport-factory.js +33 -13
  276. package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
  277. package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
  278. package/dist/server/src/utils/version.d.ts +11 -0
  279. package/dist/server/src/utils/version.d.ts.map +1 -0
  280. package/dist/server/src/utils/version.js +57 -0
  281. package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
  282. package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
  283. package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
  284. package/dist/server/tests/evaluation/evaluation.test.js +10 -9
  285. package/dist/server/tests/integration/api/gateway.test.js +24 -39
  286. package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
  287. package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
  288. package/dist/server/tests/server.test.js +27 -16
  289. package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
  290. package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
  291. package/dist/server/tests/temp/temp-run-docling.js +53 -0
  292. package/dist/server/tests/temp/test-stack.d.ts +6 -0
  293. package/dist/server/tests/temp/test-stack.d.ts.map +1 -0
  294. package/dist/server/tests/temp/test-stack.js +40 -0
  295. package/dist/server/tests/types/test-helpers.d.ts +1 -2
  296. package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
  297. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
  298. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
  299. package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
  300. package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
  301. package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
  302. package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
  303. package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
  304. package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
  305. package/dist/server/tests/unit/config/config-saver.test.js +200 -0
  306. package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
  307. package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
  308. package/dist/server/tests/unit/config/config.schema.test.js +347 -0
  309. package/dist/server/tests/unit/server/runner.test.js +86 -62
  310. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
  311. package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
  312. package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
  313. package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
  314. package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
  315. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
  316. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
  317. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
  318. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
  319. package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
  320. package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
  321. package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -334
  322. package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
  323. package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
  324. package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
  325. package/dist/server/tests/unit/services/session-manager.test.js +26 -436
  326. package/dist/server/tests/unit/utils/config.test.js +88 -186
  327. package/dist/server/tests/unit/utils/json-utils.test.js +107 -13
  328. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
  329. package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
  330. package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
  331. package/dist/server/tests/unit/utils/logger.test.js +101 -0
  332. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
  333. package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
  334. package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
  335. package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
  336. package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
  337. package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
  338. package/dist/server/tests/unit/utils/request-context.test.js +9 -28
  339. package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
  340. package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
  341. package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
  342. package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
  343. package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
  344. package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
  345. package/package.json +1 -1
  346. package/dist/client/assets/ResourceDetailView-BQ49hk0c.js +0 -1
  347. package/dist/client/assets/ResourcesView-BYZfWtia.js +0 -1
  348. package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
  349. package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +0 -1
  350. package/dist/client/assets/ServerDashboard-DHcxwKeh.js +0 -2
  351. package/dist/client/assets/ServerListView-DralUL71.js +0 -30
  352. package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
  353. package/dist/client/assets/SessionsView-BCGRTqem.js +0 -1
  354. package/dist/client/assets/SettingsView-BLfxa6PZ.js +0 -1
  355. package/dist/client/assets/ToolCallDialog-DQ0OQ1mD.js +0 -1
  356. package/dist/client/assets/ToolsView-BLB6x3tC.js +0 -1
  357. package/dist/client/assets/_baseClone-Bo5mBgsT.js +0 -1
  358. package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
  359. package/dist/client/assets/el-form-item-BmeJKVSi.js +0 -12
  360. package/dist/client/assets/el-input-CeZiq23m.js +0 -1
  361. package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
  362. package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
  363. package/dist/client/assets/el-overlay-iw_hrrlC.js +0 -1
  364. package/dist/client/assets/el-select-B73uRP_Y.js +0 -1
  365. package/dist/client/assets/el-tab-pane-BgOTBn4X.js +0 -1
  366. package/dist/client/assets/el-table-column-Ld4GSD3x.js +0 -1
  367. package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
  368. package/dist/client/assets/el-tag-DYmSo8Bx.js +0 -1
  369. package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
  370. package/dist/client/assets/index-COYaYRbH.js +0 -1
  371. package/dist/client/assets/index-Cfcvxyee.js +0 -2
  372. package/dist/client/assets/index-PhuI36Zi.js +0 -1
  373. package/dist/client/assets/omit-7EL6VJO4.js +0 -1
  374. package/dist/client/assets/vnode-upjuIlvm.js +0 -1
@@ -11,7 +11,8 @@ export const COLORS = {
11
11
  red: '\x1b[31m',
12
12
  gray: '\x1b[90m',
13
13
  brightCyan: '\x1b[96m',
14
- brightMagenta: '\x1b[95m'
14
+ brightMagenta: '\x1b[95m',
15
+ brightBlue: '\x1b[94m'
15
16
  };
16
17
  /**
17
18
  * Get color code for a specific log level.
@@ -8,6 +8,7 @@ export interface LogContext {
8
8
  module?: string;
9
9
  traceId?: string;
10
10
  spanId?: string;
11
+ caller?: string;
11
12
  }
12
13
  export type LogOptions = Omit<LogContext, 'pid' | 'serverName'>;
13
14
  //# sourceMappingURL=log-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"log-context.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,GAAG,YAAY,CAAC,CAAC"}
@@ -4,6 +4,34 @@
4
4
  */
5
5
  import type { LogLevel } from '../../../shared/types/common.types.js';
6
6
  import type { LogContext } from './log-context.js';
7
+ /**
8
+ * Caller information extracted from stack trace.
9
+ */
10
+ export interface CallerInfo {
11
+ fileName: string;
12
+ lineNumber: number;
13
+ columnNumber: number;
14
+ }
15
+ /**
16
+ * Get caller information from stack trace.
17
+ * Extracts the file name, line number, and column number from the call stack.
18
+ * This method traverses the stack to find the first project source file (in src/),
19
+ * skipping external dependencies and Node.js internals.
20
+ *
21
+ * In tsx (development) mode: Parses default stack string for accurate .ts line numbers
22
+ * In production mode: Shows .ts file names but without line numbers (inaccurate)
23
+ *
24
+ * @param skipFrames - Number of stack frames to skip before starting the search (default: 3 to skip logger internal frames)
25
+ * @returns CallerInfo with fileName, lineNumber, columnNumber or null if cannot be determined
26
+ */
27
+ export declare function getCallerInfo(skipFrames?: number): CallerInfo | null;
28
+ /**
29
+ * Format caller information for display.
30
+ *
31
+ * @param callerInfo - Caller info to format
32
+ * @returns Formatted string like "file.ts:123" or just "file.ts" in production
33
+ */
34
+ export declare function formatCallerInfo(callerInfo: CallerInfo): string;
7
35
  /**
8
36
  * Format a timestamp for logging.
9
37
  * @param date - The date to format
@@ -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;;;;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,CAiCR;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAyB/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"}
@@ -6,6 +6,204 @@ import { stringifyForLogging } from '../json-utils.js';
6
6
  import { getColorCodeForLevel, getResetColor, COLORS } from './log-colors.js';
7
7
  // PID formatting configuration
8
8
  const PID_WIDTH = 8;
9
+ /**
10
+ * Check if we're running via tsx (development mode).
11
+ * In tsx mode, stack traces already show TypeScript file names and line numbers.
12
+ *
13
+ * @returns true if running via tsx
14
+ */
15
+ function isTsxMode() {
16
+ return (process.argv.some((arg) => arg.includes('tsx')) ||
17
+ process.execArgv.some((arg) => arg.includes('tsx')) ||
18
+ !!process.env.TSX ||
19
+ (process.mainModule?.filename.includes('tsx') ?? false));
20
+ }
21
+ /**
22
+ * Check if a file path is a project source file.
23
+ *
24
+ * @param filePath - The file path to check
25
+ * @returns true if the file is within the project's src directory
26
+ */
27
+ function isProjectSourceFile(filePath) {
28
+ return filePath.includes('/src/') || filePath.includes('\\src\\');
29
+ }
30
+ /**
31
+ * Clean up a file path to make it more readable.
32
+ * Extracts the relative path from the src directory if present.
33
+ * In tsx mode, keeps the .ts extension; in compiled mode, converts .js to .ts.
34
+ *
35
+ * @param filePath - The full file path to clean
36
+ * @returns Cleaned file path
37
+ */
38
+ function cleanFilePath(filePath) {
39
+ let cleanFileName = filePath;
40
+ // If it's a full path, try to extract just the file name or relative path
41
+ if (cleanFileName.includes('/')) {
42
+ // Extract everything after the last /src/ if present
43
+ const srcIndex = cleanFileName.lastIndexOf('/src/');
44
+ if (srcIndex !== -1) {
45
+ cleanFileName = 'src' + cleanFileName.substring(srcIndex + 4);
46
+ }
47
+ else {
48
+ // Otherwise just take the base name
49
+ cleanFileName = cleanFileName.substring(cleanFileName.lastIndexOf('/') + 1);
50
+ }
51
+ }
52
+ else if (cleanFileName.includes('\\')) {
53
+ // Handle Windows paths
54
+ const srcIndex = cleanFileName.lastIndexOf('\\src\\');
55
+ if (srcIndex !== -1) {
56
+ cleanFileName = 'src' + cleanFileName.substring(srcIndex + 4);
57
+ }
58
+ else {
59
+ cleanFileName = cleanFileName.substring(cleanFileName.lastIndexOf('\\') + 1);
60
+ }
61
+ }
62
+ // In non-tsx mode (compiled JS), convert .js to .ts for TypeScript source files
63
+ if (!isTsxMode() && cleanFileName.endsWith('.js')) {
64
+ // Check if there's likely a .ts source file
65
+ // For our project, all .js files in src/ are compiled from .ts
66
+ if (cleanFileName.startsWith('src/') || cleanFileName.startsWith('src\\')) {
67
+ cleanFileName = cleanFileName.replace(/\.js$/, '.ts');
68
+ }
69
+ }
70
+ return cleanFileName;
71
+ }
72
+ /**
73
+ * Get caller information from stack trace.
74
+ * Extracts the file name, line number, and column number from the call stack.
75
+ * This method traverses the stack to find the first project source file (in src/),
76
+ * skipping external dependencies and Node.js internals.
77
+ *
78
+ * In tsx (development) mode: Parses default stack string for accurate .ts line numbers
79
+ * In production mode: Shows .ts file names but without line numbers (inaccurate)
80
+ *
81
+ * @param skipFrames - Number of stack frames to skip before starting the search (default: 3 to skip logger internal frames)
82
+ * @returns CallerInfo with fileName, lineNumber, columnNumber or null if cannot be determined
83
+ */
84
+ export function getCallerInfo(skipFrames = 3) {
85
+ // In tsx mode, parse the default stack string for accurate line numbers
86
+ if (isTsxMode()) {
87
+ return getCallerInfoFromStackString(skipFrames);
88
+ }
89
+ // In production mode, use structured stack frames but without line numbers
90
+ return getCallerInfoFromStructuredStack(skipFrames);
91
+ }
92
+ /**
93
+ * Parse caller information from default stack string (for tsx mode).
94
+ * In tsx mode, the default stack string already contains accurate TypeScript
95
+ * file names and line numbers, so we parse it directly.
96
+ *
97
+ * @param skipFrames - Number of stack frames to skip
98
+ * @returns CallerInfo or null if cannot be determined
99
+ */
100
+ function getCallerInfoFromStackString(skipFrames) {
101
+ const err = new Error();
102
+ const stackStr = err.stack;
103
+ if (!stackStr)
104
+ return null;
105
+ const lines = stackStr.split('\n').slice(1); // Skip first line ("Error")
106
+ // Find the first project source file in the stack
107
+ for (let i = skipFrames; i < lines.length; i++) {
108
+ const line = lines[i];
109
+ if (!line)
110
+ continue;
111
+ // Match patterns like:
112
+ // at ... (file:///D:/path/src/file.ts:123:45)
113
+ // at ... (D:\path\src\file.ts:123:45)
114
+ // at file:///D:/path/src/file.ts:123:45
115
+ const match = line.match(/(?:\(|at\s+)([^:\s]+\/src\/[^:\s)]+|\S+\\src\\[^:\s)]+):(\d+)(?::(\d+))?/);
116
+ if (match) {
117
+ let filePath = match[1];
118
+ const lineNumber = parseInt(match[2], 10) || 0;
119
+ const columnNumber = match[3] ? parseInt(match[3], 10) : 0;
120
+ // Remove file:// prefix if present
121
+ if (filePath.startsWith('file://')) {
122
+ filePath = filePath.replace('file://', '');
123
+ // On Windows, file:///D:/path becomes /D:/path - fix that
124
+ if (filePath.startsWith('/') && filePath.length > 2 && filePath[2] === ':') {
125
+ filePath = filePath.substring(1);
126
+ }
127
+ }
128
+ const cleanFileName = cleanFilePath(filePath);
129
+ return {
130
+ fileName: cleanFileName,
131
+ lineNumber,
132
+ columnNumber
133
+ };
134
+ }
135
+ }
136
+ return null;
137
+ }
138
+ /**
139
+ * Get caller information from structured stack frames (for production mode).
140
+ * In production mode, we show the .ts file name but without line numbers
141
+ * since they would be inaccurate.
142
+ *
143
+ * @param skipFrames - Number of stack frames to skip
144
+ * @returns CallerInfo or null if cannot be determined
145
+ */
146
+ function getCallerInfoFromStructuredStack(skipFrames) {
147
+ const originalPrepareStackTrace = Error.prepareStackTrace;
148
+ let callerInfo = null;
149
+ try {
150
+ // Override prepareStackTrace to get structured stack frames
151
+ Error.prepareStackTrace = (_err, stack) => stack;
152
+ const err = new Error();
153
+ const stack = err.stack;
154
+ if (stack && stack.length > skipFrames) {
155
+ let selectedFrame = null;
156
+ // Traverse stack frames starting from skipFrames
157
+ // Look for the first project source file (contains /src/ or \src\)
158
+ for (let i = skipFrames; i < stack.length; i++) {
159
+ const frame = stack[i];
160
+ if (!frame)
161
+ continue;
162
+ const fileName = frame.getFileName() || '';
163
+ // If this is a project source file, use it
164
+ if (isProjectSourceFile(fileName)) {
165
+ selectedFrame = frame;
166
+ break;
167
+ }
168
+ }
169
+ // If no project source file found, fall back to the original skipFrames approach
170
+ if (!selectedFrame) {
171
+ selectedFrame = stack[skipFrames] || null;
172
+ }
173
+ if (selectedFrame) {
174
+ const fileName = selectedFrame.getFileName() || 'unknown';
175
+ // Clean up file path to make it more readable
176
+ const cleanFileName = cleanFilePath(fileName);
177
+ // In production mode, line numbers are inaccurate - don't show them
178
+ callerInfo = {
179
+ fileName: cleanFileName,
180
+ lineNumber: 0,
181
+ columnNumber: 0
182
+ };
183
+ }
184
+ }
185
+ }
186
+ catch {
187
+ // Ignore errors - caller info is best effort
188
+ }
189
+ finally {
190
+ // Restore original prepareStackTrace
191
+ Error.prepareStackTrace = originalPrepareStackTrace;
192
+ }
193
+ return callerInfo;
194
+ }
195
+ /**
196
+ * Format caller information for display.
197
+ *
198
+ * @param callerInfo - Caller info to format
199
+ * @returns Formatted string like "file.ts:123" or just "file.ts" in production
200
+ */
201
+ export function formatCallerInfo(callerInfo) {
202
+ if (callerInfo.lineNumber > 0) {
203
+ return `${callerInfo.fileName}:${callerInfo.lineNumber}`;
204
+ }
205
+ return callerInfo.fileName;
206
+ }
9
207
  /**
10
208
  * Format a timestamp for logging.
11
209
  * @param date - The date to format
@@ -71,6 +269,7 @@ export function createColoredLogMessage(level, message, context) {
71
269
  const serverColor = COLORS.brightCyan;
72
270
  const moduleColor = COLORS.brightMagenta;
73
271
  const traceColor = COLORS.yellow;
272
+ const callerColor = COLORS.brightBlue;
74
273
  const resetColor = getResetColor();
75
274
  let result = `${timestampColor}[${timestamp}]${resetColor} ${levelColor}[${formattedLevel}]${resetColor} ${pidColor}[${formattedPid}]${resetColor}`;
76
275
  if (context?.traceId) {
@@ -83,6 +282,9 @@ export function createColoredLogMessage(level, message, context) {
83
282
  if (context?.module) {
84
283
  result += ` ${moduleColor}[${context.module}]${resetColor}`;
85
284
  }
285
+ if (context?.caller) {
286
+ result += ` ${callerColor}[${context.caller}]${resetColor}`;
287
+ }
86
288
  result += ` ${message}`;
87
289
  return result;
88
290
  }
@@ -110,6 +312,9 @@ export function createLogMessage(level, message, context) {
110
312
  if (context?.module) {
111
313
  result += ` [${context.module}]`;
112
314
  }
315
+ if (context?.caller) {
316
+ result += ` [${context.caller}]`;
317
+ }
113
318
  result += ` ${message}`;
114
319
  return result;
115
320
  }
@@ -119,25 +324,102 @@ export function createLogMessage(level, message, context) {
119
324
  * @returns Formatted error string
120
325
  */
121
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
+ }
122
360
  if (error instanceof Error) {
123
- 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
124
375
  if (error.stack) {
125
376
  const stackLines = error.stack.split('\n').slice(1, 6);
126
377
  if (stackLines.length > 0) {
127
378
  result += '\n' + stackLines.join('\n');
128
379
  }
129
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
+ }
130
398
  return result;
131
399
  }
132
400
  if (typeof error === 'object' && error !== null) {
133
401
  if ('module' in error || 'traceId' in error || 'spanId' in error) {
134
402
  return '';
135
403
  }
136
- if (Array.isArray(error) && error.length === 0) {
137
- 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]';
138
409
  }
139
- if (Object.keys(error).length === 0) {
140
- 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(', ')} }`;
141
423
  }
142
424
  try {
143
425
  return stringifyForLogging(error);
@@ -24,22 +24,22 @@ export declare const LOG_MODULES: {
24
24
  readonly DEV_SERVER: {
25
25
  module: string;
26
26
  };
27
- readonly CONFIG_MANAGER: {
27
+ readonly RUNNER: {
28
28
  module: string;
29
29
  };
30
- readonly CONFIG_LOADER: {
30
+ readonly CONFIG_MANAGER: {
31
31
  module: string;
32
32
  };
33
- readonly CONFIG_CHANGES: {
33
+ readonly CONFIG_LOADER: {
34
34
  module: string;
35
35
  };
36
- readonly SESSION_MANAGER: {
36
+ readonly CONFIG_SAVER: {
37
37
  module: string;
38
38
  };
39
- readonly SESSION: {
39
+ readonly CONFIG_CHANGES: {
40
40
  module: string;
41
41
  };
42
- readonly SESSION_API: {
42
+ readonly SERVER_CONFIG_MANAGER: {
43
43
  module: string;
44
44
  };
45
45
  readonly CONNECTION_MANAGER: {
@@ -48,6 +48,9 @@ export declare const LOG_MODULES: {
48
48
  readonly HUB_MANAGER: {
49
49
  module: string;
50
50
  };
51
+ readonly SERVER_SELECTOR: {
52
+ module: string;
53
+ };
51
54
  readonly GATEWAY: {
52
55
  module: string;
53
56
  };
@@ -63,6 +66,9 @@ export declare const LOG_MODULES: {
63
66
  readonly TOOL_LIST: {
64
67
  module: string;
65
68
  };
69
+ readonly TOOL_LIST_GENERATOR: {
70
+ module: string;
71
+ };
66
72
  readonly INITIALIZE_HANDLER: {
67
73
  module: string;
68
74
  };
@@ -78,6 +84,9 @@ export declare const LOG_MODULES: {
78
84
  readonly SEARCH: {
79
85
  module: string;
80
86
  };
87
+ readonly ERROR_HANDLER: {
88
+ module: string;
89
+ };
81
90
  readonly COMMUNICATION: {
82
91
  module: string;
83
92
  };
@@ -99,12 +108,6 @@ export declare const LOG_MODULES: {
99
108
  readonly PID_MANAGER: {
100
109
  module: string;
101
110
  };
102
- readonly CLIENT_TRACKER: {
103
- module: string;
104
- };
105
- readonly CLIENT_API: {
106
- module: string;
107
- };
108
111
  readonly SERVER_API: {
109
112
  module: string;
110
113
  };
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+DtB;;;;;;;;;;;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"}
@@ -21,17 +21,17 @@ export const LOG_MODULES = {
21
21
  // Core system modules
22
22
  SERVER: { module: 'Server' },
23
23
  DEV_SERVER: { module: 'DevServer' },
24
+ RUNNER: { module: 'Runner' },
24
25
  // Config management
25
26
  CONFIG_MANAGER: { module: 'ConfigManager' },
26
27
  CONFIG_LOADER: { module: 'ConfigLoader' },
27
- CONFIG_CHANGES: { module: 'System Config Changes' },
28
- // Session management
29
- SESSION_MANAGER: { module: 'SessionManager' },
30
- SESSION: { module: 'Session' },
31
- SESSION_API: { module: 'Session API' },
28
+ CONFIG_SAVER: { module: 'ConfigSaver' },
29
+ CONFIG_CHANGES: { module: 'SystemConfigManager' },
30
+ SERVER_CONFIG_MANAGER: { module: 'ServerConfigManager' },
32
31
  // Connection management
33
32
  CONNECTION_MANAGER: { module: 'ConnectionManager' },
34
33
  HUB_MANAGER: { module: 'HubManager' },
34
+ SERVER_SELECTOR: { module: 'ServerSelector' },
35
35
  // Gateway related
36
36
  GATEWAY: { module: 'Gateway' },
37
37
  GATEWAY_SERVICE: { module: 'GatewayService' },
@@ -39,6 +39,7 @@ export const LOG_MODULES = {
39
39
  HUB_TOOLS: { module: 'HubTools' },
40
40
  SYSTEM_TOOL: { module: 'SystemTool' },
41
41
  TOOL_LIST: { module: 'ToolList' },
42
+ TOOL_LIST_GENERATOR: { module: 'ToolListGenerator' },
42
43
  // Gateway request handlers
43
44
  INITIALIZE_HANDLER: { module: 'Initialize' },
44
45
  SYSTEM_TOOLS_HANDLER: { module: 'SystemTools' },
@@ -46,6 +47,8 @@ export const LOG_MODULES = {
46
47
  TOOLS_HANDLER: { module: 'Tools' },
47
48
  // Search service
48
49
  SEARCH: { module: 'Search' },
50
+ // Error handling
51
+ ERROR_HANDLER: { module: 'ErrorHandler' },
49
52
  // Communication
50
53
  COMMUNICATION: { module: 'Communication' },
51
54
  CONTEXT: { module: 'Context' },
@@ -57,9 +60,6 @@ export const LOG_MODULES = {
57
60
  SSE_TRANSPORT: { module: 'SSETransport' },
58
61
  // PID management
59
62
  PID_MANAGER: { module: 'PIDManager' },
60
- // Client tracking
61
- CLIENT_TRACKER: { module: 'ClientTracker' },
62
- CLIENT_API: { module: 'ClientAPI' },
63
63
  // Server API
64
64
  SERVER_API: { module: 'ServerAPI' },
65
65
  MCP_STATUS: { module: 'MCPStatus' },
@@ -61,8 +61,8 @@ export declare function isToolsListResponse(data: string): boolean;
61
61
  /**
62
62
  * Simplify tools/list response log information.
63
63
  * @param data - Complete response data
64
- * @returns Simplified log information
64
+ * @returns Simplified log information, or null if cannot be simplified
65
65
  */
66
- export declare function simplifyToolsListResponse(data: string): string;
66
+ export declare function simplifyToolsListResponse(data: string): string | null;
67
67
  export {};
68
68
  //# sourceMappingURL=log-output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-output.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,UAAU,yBAAyB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAMtF;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAiDjG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAsBnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgCrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAyCzD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAyE9D"}
1
+ {"version":3,"file":"log-output.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/log-output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;GAEG;AACH,UAAU,yBAAyB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,yBAAyB,CAAC;CACpC;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,mBAAmB,CAMtF;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAiDjG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA4BnE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAgCrD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqDzD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAyCzD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuFrE"}
@@ -99,7 +99,14 @@ export function formatMcpMessageForLogging(message) {
99
99
  const rawJson = JSON.stringify(message);
100
100
  let logMessage;
101
101
  if (isToolsListResponse(rawJson)) {
102
- logMessage = simplifyToolsListResponse(rawJson);
102
+ const simplified = simplifyToolsListResponse(rawJson);
103
+ if (simplified === null) {
104
+ // Could not simplify, use pretty JSON formatting
105
+ logMessage = stringifyForLogging(message);
106
+ }
107
+ else {
108
+ logMessage = simplified;
109
+ }
103
110
  }
104
111
  else if (hasImageContent(rawJson)) {
105
112
  const simplified = simplifyImageContent(rawJson);
@@ -256,7 +263,7 @@ export function isToolsListResponse(data) {
256
263
  /**
257
264
  * Simplify tools/list response log information.
258
265
  * @param data - Complete response data
259
- * @returns Simplified log information
266
+ * @returns Simplified log information, or null if cannot be simplified
260
267
  */
261
268
  export function simplifyToolsListResponse(data) {
262
269
  try {
@@ -266,6 +273,9 @@ export function simplifyToolsListResponse(data) {
266
273
  if (dataMatch) {
267
274
  const jsonData = dataMatch[1].trim();
268
275
  const simplified = simplifyToolsListResponse(jsonData);
276
+ if (simplified === null) {
277
+ return null;
278
+ }
269
279
  return `event: message\ndata: ${simplified}`;
270
280
  }
271
281
  }
@@ -277,11 +287,19 @@ export function simplifyToolsListResponse(data) {
277
287
  const result = msg.result;
278
288
  if ('tools' in result) {
279
289
  const toolsCount = Array.isArray(result.tools) ? result.tools.length : 0;
280
- return `Returned ${toolsCount} tools`;
290
+ if (toolsCount > 0) {
291
+ return `Returned ${toolsCount} tools`;
292
+ }
293
+ // No tools, don't simplify
294
+ return null;
281
295
  }
282
296
  if ('resources' in result) {
283
297
  const resourcesCount = Array.isArray(result.resources) ? result.resources.length : 0;
284
- return `Returned ${resourcesCount} resources`;
298
+ if (resourcesCount > 0) {
299
+ return `Returned ${resourcesCount} resources`;
300
+ }
301
+ // No resources, don't simplify
302
+ return null;
285
303
  }
286
304
  if ('capabilities' in result &&
287
305
  typeof result.capabilities === 'object' &&
@@ -308,13 +326,16 @@ export function simplifyToolsListResponse(data) {
308
326
  else if (resourcesCount > 0) {
309
327
  return `Returned ${resourcesCount} resources`;
310
328
  }
329
+ // No tools or resources, don't simplify
330
+ return null;
311
331
  }
312
332
  }
313
333
  }
314
334
  }
315
335
  }
316
336
  catch {
317
- // Parsing failed, return truncated version of original data
337
+ // Parsing failed, don't simplify
318
338
  }
319
- return data.length > 200 ? data.substring(0, 200) + '...' : data;
339
+ // Could not simplify
340
+ return null;
320
341
  }
@@ -10,6 +10,7 @@
10
10
  * - Error formatting with stack trace truncation to prevent overly verbose logs
11
11
  * - MCP server-specific logging with serverName context
12
12
  * - Log rotation with date-based file naming and automatic cleanup
13
+ * - Caller location information (file name and line number)
13
14
  *
14
15
  * The logger supports four log levels: debug, info, warn, and error, with configurable
15
16
  * minimum log level threshold.
@@ -33,8 +34,20 @@ export declare class Logger {
33
34
  private level;
34
35
  private useStderr;
35
36
  private useColor;
37
+ private showCaller;
36
38
  private devLogger;
37
39
  constructor(level?: LogLevel);
40
+ /**
41
+ * Enable or disable caller information in logs.
42
+ * When enabled, logs will show the file name and line number where the log was called.
43
+ *
44
+ * @param show - Whether to show caller information
45
+ * @example
46
+ * ```typescript
47
+ * logger.setShowCaller(false); // Disable caller info
48
+ * ```
49
+ */
50
+ setShowCaller(show: boolean): void;
38
51
  /**
39
52
  * Enables development logging mode with file output and enhanced debugging.
40
53
  *
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAY5C,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,SAAS,CAA8B;gBAEnC,KAAK,GAAE,QAAiB;IAcpC;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO5E,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;;;;;;OASG;IACI,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO;IAK1C;;OAEG;IACH,OAAO,CAAC,GAAG;IAgDX;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD,OAAO,CAAC,qBAAqB;IAkB7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GACvC,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIvF;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIhF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIvC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/B"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../../../src/utils/logger/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAc5C,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,SAAS,CAA8B;gBAEnC,KAAK,GAAE,QAAiB;IAoBpC;;;;;;;;;OASG;IACI,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAIzC;;;;;;;;;;;;OAYG;IACI,YAAY,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAO5E,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAIvC;;;;;;;;;OASG;IACI,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAItC;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO;IAK1C;;OAEG;IACH,OAAO,CAAC,GAAG;IAuDX;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK/C;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAKhD,OAAO,CAAC,qBAAqB;IAkB7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;;OAGG;IACH,SAAS,CACP,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,GACvC,IAAI;IAuBP;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAuD3B;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIvF;;;OAGG;IACH,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM;IAIhF;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAInC;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAInC;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIvC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAG/B"}