@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.
- package/CHANGELOG.md +47 -0
- package/dist/client/assets/{HomeView-Cr1jX73N.js → HomeView-Bu2joUvW.js} +1 -1
- package/dist/client/assets/ResourceDetailView-BvrhDCD1.js +1 -0
- package/dist/client/assets/ResourceDetailView-DUJZbegl.css +1 -0
- package/dist/client/assets/ResourcesView-Cc8RHtia.css +1 -0
- package/dist/client/assets/ResourcesView-LjqioF_s.js +1 -0
- package/dist/client/assets/ServerDashboard-BfLeFDGw.css +1 -0
- package/dist/client/assets/ServerDashboard-FhHJFvUi.js +1 -0
- package/dist/client/assets/ServerDetail-BKV-M4qT.js +2 -0
- package/dist/client/assets/ServerDetail-CtnNKJGx.css +1 -0
- package/dist/client/assets/{ServerListView-Bws09jNR.css → ServerListView-B-bPljsO.css} +1 -1
- package/dist/client/assets/ServerListView-BXgtDyt3.js +36 -0
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-D-ooYNdN.js +1 -0
- package/dist/client/assets/SettingsView-CMFG91Z4.js +1 -0
- package/dist/client/assets/SettingsView-GkBOKL0V.css +1 -0
- package/dist/client/assets/ToolCallDialog-Bf4Xe4gH.js +1 -0
- package/dist/client/assets/ToolsView-DFpha1z0.js +1 -0
- package/dist/client/assets/_baseClone-Bp9Rjwd7.js +1 -0
- package/dist/client/assets/el-form-item-B4LbJ6OO.css +1 -0
- package/dist/client/assets/el-form-item-DdSUWYsl.js +12 -0
- package/dist/client/assets/el-input-99gMrutP.js +1 -0
- package/dist/client/assets/el-input-BH4BZKnG.css +1 -0
- package/dist/client/assets/{el-loading-Csv24uBk.js → el-loading-CIQ5pD5u.js} +1 -1
- package/dist/client/assets/el-overlay-BVM6msGX.js +1 -0
- package/dist/client/assets/{el-select-C0U_l4IZ.css → el-overlay-CBvdpA69.css} +1 -1
- package/dist/client/assets/{ResourceDetailView-BdOaL_-o.css → el-radio-group-B0bauIRR.css} +1 -1
- package/dist/client/assets/el-radio-group-DhXWy7ry.js +1 -0
- package/dist/client/assets/el-skeleton-item-BLY1jEuR.css +1 -0
- package/dist/client/assets/el-skeleton-item-DJz-Us12.js +1 -0
- package/dist/client/assets/el-switch-BBrS-_6y.css +1 -0
- package/dist/client/assets/el-switch-Bu8AQ5uM.js +1 -0
- package/dist/client/assets/el-tab-pane-BnGMaV56.js +1 -0
- package/dist/client/assets/el-table-column-BMWOaLS_.js +1 -0
- package/dist/client/assets/el-table-column-BdvRS9Y2.css +1 -0
- package/dist/client/assets/index-C2V-ZGji.js +1 -0
- package/dist/client/assets/{index-BsDWtoIl.css → index-DpH6ZSbs.css} +1 -1
- package/dist/client/assets/index-vhkqgpmN.js +2 -0
- package/dist/client/assets/omit-CqPQN3XP.js +1 -0
- package/dist/client/assets/{raf-DDfJOMYh.js → raf-C2wXzaVU.js} +1 -1
- package/dist/client/assets/{vue-vendor-6ny5zj9i.js → vue-vendor-BLHLXXJK.js} +1 -1
- package/dist/client/index.html +3 -3
- package/dist/server/shared/models/resource.model.d.ts +2 -1
- package/dist/server/shared/models/resource.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.d.ts +363 -5
- package/dist/server/shared/models/server.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.js +220 -1
- package/dist/server/shared/models/session.model.d.ts +2 -56
- package/dist/server/shared/models/session.model.d.ts.map +1 -1
- package/dist/server/shared/models/session.model.js +2 -55
- package/dist/server/shared/models/tool.model.d.ts +4 -2
- package/dist/server/shared/models/tool.model.d.ts.map +1 -1
- package/dist/server/shared/types/client.types.d.ts +4 -32
- package/dist/server/shared/types/client.types.d.ts.map +1 -1
- package/dist/server/shared/types/client.types.js +3 -2
- package/dist/server/shared/types/index.d.ts +3 -3
- package/dist/server/shared/types/index.d.ts.map +1 -1
- package/dist/server/shared/types/index.js +3 -3
- package/dist/server/shared/types/session-context.types.d.ts +35 -0
- package/dist/server/shared/types/session-context.types.d.ts.map +1 -0
- package/dist/server/shared/types/session-context.types.js +5 -0
- package/dist/server/shared/types/websocket.types.d.ts +17 -10
- package/dist/server/shared/types/websocket.types.d.ts.map +1 -1
- package/dist/server/src/api/mcp/debug-response-wrapper.d.ts.map +1 -1
- package/dist/server/src/api/mcp/debug-response-wrapper.js +26 -1
- package/dist/server/src/api/mcp/gateway.d.ts +1 -3
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
- package/dist/server/src/api/mcp/gateway.js +34 -61
- package/dist/server/src/api/mcp/session-context-extractor.d.ts +5 -5
- package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
- package/dist/server/src/api/mcp/session-context-extractor.js +15 -39
- package/dist/server/src/api/web/clients.js +2 -2
- package/dist/server/src/api/web/hub-tools.d.ts +2 -2
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
- package/dist/server/src/api/web/hub-tools.js +3 -54
- package/dist/server/src/api/web/mcp-status.d.ts +1 -1
- package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
- package/dist/server/src/api/web/mcp-status.js +71 -30
- package/dist/server/src/api/web/resources.d.ts.map +1 -1
- package/dist/server/src/api/web/resources.js +28 -22
- package/dist/server/src/api/web/search.d.ts +2 -16
- package/dist/server/src/api/web/search.d.ts.map +1 -1
- package/dist/server/src/api/web/search.js +24 -45
- package/dist/server/src/api/web/servers.d.ts +3 -3
- package/dist/server/src/api/web/servers.d.ts.map +1 -1
- package/dist/server/src/api/web/servers.js +70 -25
- package/dist/server/src/api/web/sessions.js +1 -1
- package/dist/server/src/api/ws/ws-handler.d.ts.map +1 -1
- package/dist/server/src/api/ws/ws-handler.js +4 -2
- package/dist/server/src/app.d.ts.map +1 -1
- package/dist/server/src/app.js +0 -4
- package/dist/server/src/cli/commands/list.js +2 -2
- package/dist/server/src/cli/commands/status.d.ts.map +1 -1
- package/dist/server/src/cli/commands/status.js +41 -30
- package/dist/server/src/cli/index.d.ts.map +1 -1
- package/dist/server/src/cli/index.js +2 -1
- package/dist/server/src/cli/server.d.ts +11 -2
- package/dist/server/src/cli/server.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.d.ts +22 -0
- package/dist/server/src/config/config-change-logger.d.ts.map +1 -1
- package/dist/server/src/config/config-change-logger.js +135 -11
- package/dist/server/src/config/config-loader.d.ts +6 -5
- package/dist/server/src/config/config-loader.d.ts.map +1 -1
- package/dist/server/src/config/config-loader.js +54 -16
- package/dist/server/src/config/config-manager.d.ts +51 -43
- package/dist/server/src/config/config-manager.d.ts.map +1 -1
- package/dist/server/src/config/config-manager.js +84 -66
- package/dist/server/src/config/config-migrator.d.ts +82 -0
- package/dist/server/src/config/config-migrator.d.ts.map +1 -0
- package/dist/server/src/config/config-migrator.js +348 -0
- package/dist/server/src/config/config-saver.d.ts +2 -0
- package/dist/server/src/config/config-saver.d.ts.map +1 -1
- package/dist/server/src/config/config-saver.js +8 -2
- package/dist/server/src/config/config.schema.d.ts +10 -102
- package/dist/server/src/config/config.schema.d.ts.map +1 -1
- package/dist/server/src/config/config.schema.js +15 -98
- package/dist/server/src/config/path-validator.d.ts +27 -0
- package/dist/server/src/config/path-validator.d.ts.map +1 -0
- package/dist/server/src/config/path-validator.js +53 -0
- package/dist/server/src/config/server-config-manager.d.ts +37 -31
- package/dist/server/src/config/server-config-manager.d.ts.map +1 -1
- package/dist/server/src/config/server-config-manager.js +222 -66
- package/dist/server/src/config/type-converter.d.ts.map +1 -1
- package/dist/server/src/config/type-converter.js +3 -2
- package/dist/server/src/index.js +1 -1
- package/dist/server/src/models/event.model.d.ts +17 -10
- package/dist/server/src/models/event.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.d.ts +17 -3
- package/dist/server/src/models/server.model.d.ts.map +1 -1
- package/dist/server/src/models/server.model.js +2 -1
- package/dist/server/src/models/system-tools.constants.d.ts +10 -27
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
- package/dist/server/src/models/system-tools.constants.js +4 -8
- package/dist/server/src/pid/manager.d.ts.map +1 -1
- package/dist/server/src/pid/manager.js +2 -1
- package/dist/server/src/server/dev-server.js +34 -20
- package/dist/server/src/server/runner.d.ts.map +1 -1
- package/dist/server/src/server/runner.js +41 -26
- package/dist/server/src/services/client-tracker.service.d.ts +3 -128
- package/dist/server/src/services/client-tracker.service.d.ts.map +1 -1
- package/dist/server/src/services/client-tracker.service.js +4 -200
- package/dist/server/src/services/connection/connection-manager.d.ts +85 -103
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
- package/dist/server/src/services/connection/connection-manager.js +286 -241
- package/dist/server/src/services/connection/tool-cache.d.ts +27 -25
- package/dist/server/src/services/connection/tool-cache.d.ts.map +1 -1
- package/dist/server/src/services/connection/tool-cache.js +50 -55
- package/dist/server/src/services/gateway/gateway.service.d.ts +2 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
- package/dist/server/src/services/gateway/gateway.service.js +15 -19
- package/dist/server/src/services/gateway/global-transport.d.ts +10 -0
- package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -0
- package/dist/server/src/services/gateway/global-transport.js +42 -0
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/call-tool-handler.js +67 -65
- package/dist/server/src/services/gateway/request-handlers/index.d.ts +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/index.js +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts +1 -4
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +16 -55
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts +35 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.d.ts.map +1 -0
- package/dist/server/src/services/gateway/request-handlers/initialize.constants.js +44 -0
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -4
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +32 -77
- package/dist/server/src/services/gateway/request-handlers/tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/tools-handler.js +4 -3
- package/dist/server/src/services/gateway/tool-list-generator.d.ts.map +1 -1
- package/dist/server/src/services/gateway/tool-list-generator.js +37 -16
- package/dist/server/src/services/gateway/types.d.ts +2 -1
- package/dist/server/src/services/gateway/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.d.ts +32 -238
- package/dist/server/src/services/hub-manager.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-manager.service.js +89 -267
- package/dist/server/src/services/hub-tools/index.d.ts +1 -3
- package/dist/server/src/services/hub-tools/index.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/index.js +1 -2
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts +62 -0
- package/dist/server/src/services/hub-tools/instance-matcher.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-matcher.js +132 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts +29 -0
- package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -0
- package/dist/server/src/services/hub-tools/instance-selector.js +103 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +25 -5
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/resource-generator.js +259 -64
- package/dist/server/src/services/hub-tools/server-selector.d.ts +26 -13
- package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/server-selector.js +44 -37
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts +1 -4
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +17 -80
- package/dist/server/src/services/hub-tools/tool-search.d.ts +7 -7
- package/dist/server/src/services/hub-tools/tool-search.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/tool-search.js +10 -4
- package/dist/server/src/services/hub-tools/types.d.ts +2 -2
- package/dist/server/src/services/hub-tools/types.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.d.ts +43 -72
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.js +185 -110
- package/dist/server/src/services/search/search-cache.d.ts +0 -19
- package/dist/server/src/services/search/search-cache.d.ts.map +1 -1
- package/dist/server/src/services/search/search-cache.js +0 -24
- package/dist/server/src/services/search/search-core.service.d.ts +5 -5
- package/dist/server/src/services/search/search-core.service.js +11 -11
- package/dist/server/src/services/session/session-manager.d.ts +12 -256
- package/dist/server/src/services/session/session-manager.d.ts.map +1 -1
- package/dist/server/src/services/session/session-manager.js +23 -583
- package/dist/server/src/services/session-tracker.service.d.ts +124 -0
- package/dist/server/src/services/session-tracker.service.d.ts.map +1 -0
- package/dist/server/src/services/session-tracker.service.js +176 -0
- package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
- package/dist/server/src/services/system-tool-handler.js +7 -17
- package/dist/server/src/utils/composite-key.d.ts +29 -0
- package/dist/server/src/utils/composite-key.d.ts.map +1 -0
- package/dist/server/src/utils/composite-key.js +39 -0
- package/dist/server/src/utils/error-handler.d.ts.map +1 -1
- package/dist/server/src/utils/error-handler.js +3 -2
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/utils/index.js +2 -0
- package/dist/server/src/utils/instance-id.d.ts +22 -0
- package/dist/server/src/utils/instance-id.d.ts.map +1 -0
- package/dist/server/src/utils/instance-id.js +59 -0
- package/dist/server/src/utils/json-utils.d.ts +4 -4
- package/dist/server/src/utils/json-utils.d.ts.map +1 -1
- package/dist/server/src/utils/json-utils.js +10 -4
- package/dist/server/src/utils/logger/dev-logger.d.ts +2 -1
- package/dist/server/src/utils/logger/dev-logger.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-colors.d.ts +1 -0
- package/dist/server/src/utils/logger/log-colors.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-colors.js +2 -1
- package/dist/server/src/utils/logger/log-context.d.ts +1 -0
- package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.d.ts +28 -0
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.js +287 -5
- package/dist/server/src/utils/logger/log-modules.d.ts +15 -12
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-modules.js +8 -8
- package/dist/server/src/utils/logger/log-output.d.ts +2 -2
- package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-output.js +27 -6
- package/dist/server/src/utils/logger/logger.d.ts +13 -0
- package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
- package/dist/server/src/utils/logger/logger.js +42 -7
- package/dist/server/src/utils/parameter-validator.d.ts +10 -0
- package/dist/server/src/utils/parameter-validator.d.ts.map +1 -0
- package/dist/server/src/utils/parameter-validator.js +53 -0
- package/dist/server/src/utils/process-tree.d.ts +49 -0
- package/dist/server/src/utils/process-tree.d.ts.map +1 -0
- package/dist/server/src/utils/process-tree.js +285 -0
- package/dist/server/src/utils/request-context.d.ts +12 -30
- package/dist/server/src/utils/request-context.d.ts.map +1 -1
- package/dist/server/src/utils/request-context.js +10 -30
- package/dist/server/src/utils/sort-utils.d.ts +40 -0
- package/dist/server/src/utils/sort-utils.d.ts.map +1 -0
- package/dist/server/src/utils/sort-utils.js +131 -0
- package/dist/server/src/utils/tool-args-parser.d.ts +0 -4
- package/dist/server/src/utils/tool-args-parser.d.ts.map +1 -1
- package/dist/server/src/utils/tool-args-parser.js +0 -7
- package/dist/server/src/utils/transports/sse-transport.d.ts +16 -1
- package/dist/server/src/utils/transports/sse-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/sse-transport.js +55 -9
- package/dist/server/src/utils/transports/stdio-transport.d.ts +24 -53
- package/dist/server/src/utils/transports/stdio-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/stdio-transport.js +66 -247
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts +24 -1
- package/dist/server/src/utils/transports/streamable-http-transport.d.ts.map +1 -1
- package/dist/server/src/utils/transports/streamable-http-transport.js +68 -8
- package/dist/server/src/utils/transports/transport-factory.d.ts +9 -4
- package/dist/server/src/utils/transports/transport-factory.d.ts.map +1 -1
- package/dist/server/src/utils/transports/transport-factory.js +33 -13
- package/dist/server/src/utils/transports/transport.interface.d.ts +6 -0
- package/dist/server/src/utils/transports/transport.interface.d.ts.map +1 -1
- package/dist/server/src/utils/version.d.ts +11 -0
- package/dist/server/src/utils/version.d.ts.map +1 -0
- package/dist/server/src/utils/version.js +57 -0
- package/dist/server/tests/contract/mcp-protocol/initialize.test.js +24 -24
- package/dist/server/tests/contract/mcp-protocol/tools-call.test.js +49 -45
- package/dist/server/tests/contract/mcp-protocol/tools-list.test.js +35 -36
- package/dist/server/tests/evaluation/evaluation.test.js +10 -9
- package/dist/server/tests/integration/api/gateway.test.js +24 -39
- package/dist/server/tests/integration/gateway/fault-tolerance.test.js +65 -25
- package/dist/server/tests/integration/gateway/mcp-connection.test.js +53 -61
- package/dist/server/tests/server.test.js +27 -16
- package/dist/server/tests/temp/temp-run-docling.d.ts +2 -0
- package/dist/server/tests/temp/temp-run-docling.d.ts.map +1 -0
- package/dist/server/tests/temp/temp-run-docling.js +53 -0
- package/dist/server/tests/temp/test-stack.d.ts +6 -0
- package/dist/server/tests/temp/test-stack.d.ts.map +1 -0
- package/dist/server/tests/temp/test-stack.js +40 -0
- package/dist/server/tests/types/test-helpers.d.ts +1 -2
- package/dist/server/tests/types/test-helpers.d.ts.map +1 -1
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-loader-automatic-migration.test.js +199 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-migrator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-migrator.test.js +316 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config-saver.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config-saver.test.js +200 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts +2 -0
- package/dist/server/tests/unit/config/config.schema.test.d.ts.map +1 -0
- package/dist/server/tests/unit/config/config.schema.test.js +347 -0
- package/dist/server/tests/unit/server/runner.test.js +86 -62
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts +2 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/connection/connection-manager.test.js +112 -0
- package/dist/server/tests/unit/services/hub-manager-service.test.js +112 -46
- package/dist/server/tests/unit/services/hub-manager.test.js +25 -15
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +195 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts +2 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/hub-tools/server-selector.test.js +190 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +560 -334
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts +2 -0
- package/dist/server/tests/unit/services/instance-matcher.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/instance-matcher.test.js +256 -0
- package/dist/server/tests/unit/services/session-manager.test.js +26 -436
- package/dist/server/tests/unit/utils/config.test.js +88 -186
- package/dist/server/tests/unit/utils/json-utils.test.js +107 -13
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/logger-formatter.test.js +66 -0
- package/dist/server/tests/unit/utils/logger.test.js +101 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/parameter-validator.test.js +63 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/process-tree.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/process-tree.test.js +129 -0
- package/dist/server/tests/unit/utils/request-context.test.js +9 -28
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/sort-utils.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/sort-utils.test.js +220 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/transport-factory.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/transport-factory.test.js +55 -0
- package/package.json +1 -1
- package/dist/client/assets/ResourceDetailView-BQ49hk0c.js +0 -1
- package/dist/client/assets/ResourcesView-BYZfWtia.js +0 -1
- package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
- package/dist/client/assets/ServerDashboard-7_8Og9JJ.css +0 -1
- package/dist/client/assets/ServerDashboard-DHcxwKeh.js +0 -2
- package/dist/client/assets/ServerListView-DralUL71.js +0 -30
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
- package/dist/client/assets/SessionsView-BCGRTqem.js +0 -1
- package/dist/client/assets/SettingsView-BLfxa6PZ.js +0 -1
- package/dist/client/assets/ToolCallDialog-DQ0OQ1mD.js +0 -1
- package/dist/client/assets/ToolsView-BLB6x3tC.js +0 -1
- package/dist/client/assets/_baseClone-Bo5mBgsT.js +0 -1
- package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
- package/dist/client/assets/el-form-item-BmeJKVSi.js +0 -12
- package/dist/client/assets/el-input-CeZiq23m.js +0 -1
- package/dist/client/assets/el-input-CmuHb8HS.css +0 -1
- package/dist/client/assets/el-overlay-B2ZKM6Up.css +0 -1
- package/dist/client/assets/el-overlay-iw_hrrlC.js +0 -1
- package/dist/client/assets/el-select-B73uRP_Y.js +0 -1
- package/dist/client/assets/el-tab-pane-BgOTBn4X.js +0 -1
- package/dist/client/assets/el-table-column-Ld4GSD3x.js +0 -1
- package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
- package/dist/client/assets/el-tag-DYmSo8Bx.js +0 -1
- package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
- package/dist/client/assets/index-COYaYRbH.js +0 -1
- package/dist/client/assets/index-Cfcvxyee.js +0 -2
- package/dist/client/assets/index-PhuI36Zi.js +0 -1
- package/dist/client/assets/omit-7EL6VJO4.js +0 -1
- package/dist/client/assets/vnode-upjuIlvm.js +0 -1
|
@@ -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,
|
|
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 =
|
|
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
|
-
|
|
137
|
-
|
|
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
|
-
|
|
140
|
-
|
|
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
|
|
27
|
+
readonly RUNNER: {
|
|
28
28
|
module: string;
|
|
29
29
|
};
|
|
30
|
-
readonly
|
|
30
|
+
readonly CONFIG_MANAGER: {
|
|
31
31
|
module: string;
|
|
32
32
|
};
|
|
33
|
-
readonly
|
|
33
|
+
readonly CONFIG_LOADER: {
|
|
34
34
|
module: string;
|
|
35
35
|
};
|
|
36
|
-
readonly
|
|
36
|
+
readonly CONFIG_SAVER: {
|
|
37
37
|
module: string;
|
|
38
38
|
};
|
|
39
|
-
readonly
|
|
39
|
+
readonly CONFIG_CHANGES: {
|
|
40
40
|
module: string;
|
|
41
41
|
};
|
|
42
|
-
readonly
|
|
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
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
337
|
+
// Parsing failed, don't simplify
|
|
318
338
|
}
|
|
319
|
-
|
|
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
|
|
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"}
|