@loop_ouroboros/mcp-hub-lite 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/dist/client/assets/{HomeView-7rMg9C6t.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-5q1b0P3O.js → _baseClone-Bp9Rjwd7.js} +1 -1
- 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-H85n3BUC.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-DPsOVNIJ.js → omit-CqPQN3XP.js} +1 -1
- package/dist/client/assets/{raf-DY5mgbuB.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 +362 -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 +1 -57
- package/dist/server/shared/models/session.model.d.ts.map +1 -1
- package/dist/server/shared/models/session.model.js +1 -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/session-context.types.d.ts +0 -2
- package/dist/server/shared/types/session-context.types.d.ts.map +1 -1
- 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/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 +19 -50
- package/dist/server/src/api/mcp/session-context-extractor.d.ts.map +1 -1
- package/dist/server/src/api/mcp/session-context-extractor.js +5 -14
- 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/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 -2
- 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 -104
- package/dist/server/src/config/config.schema.d.ts.map +1 -1
- package/dist/server/src/config/config.schema.js +15 -99
- 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/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/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 +10 -81
- 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 +24 -1
- 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 -39
- 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-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 -585
- package/dist/server/src/services/session-tracker.service.d.ts +2 -10
- package/dist/server/src/services/session-tracker.service.d.ts.map +1 -1
- package/dist/server/src/services/session-tracker.service.js +2 -53
- 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 +4 -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-formatter.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.js +82 -5
- package/dist/server/src/utils/logger/log-modules.d.ts +15 -9
- package/dist/server/src/utils/logger/log-modules.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-modules.js +8 -6
- 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 +0 -18
- package/dist/server/src/utils/request-context.d.ts.map +1 -1
- package/dist/server/src/utils/request-context.js +0 -20
- 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/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 +31 -11
- 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 +2 -2
- 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/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 -320
- 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 +18 -18
- 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/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 +5 -24
- 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-Bf-1ffbk.js +0 -1
- package/dist/client/assets/ResourcesView-CjMklkyv.css +0 -1
- package/dist/client/assets/ResourcesView-g5x4xCPh.js +0 -1
- package/dist/client/assets/ServerDashboard-Chpne8Q0.css +0 -1
- package/dist/client/assets/ServerDashboard-G8Wmp4hF.js +0 -2
- package/dist/client/assets/ServerListView-dV2XrPjo.js +0 -32
- package/dist/client/assets/ServerStatusTags.vue_vue_type_script_setup_true_lang-BHiTFM7-.js +0 -1
- package/dist/client/assets/SessionsView-Ckd38lj1.js +0 -1
- package/dist/client/assets/SettingsView-BJUdepEQ.js +0 -1
- package/dist/client/assets/ToolCallDialog-C_bTCpHC.js +0 -1
- package/dist/client/assets/ToolsView-0c2eputu.js +0 -1
- package/dist/client/assets/el-form-item-BVMLpmVC.css +0 -1
- package/dist/client/assets/el-form-item-ClFnj49k.js +0 -12
- package/dist/client/assets/el-input-CDnuSKVZ.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-CzMkXyYy.js +0 -1
- package/dist/client/assets/el-select-DvjGddk_.js +0 -1
- package/dist/client/assets/el-tab-pane-C_DQMcwe.js +0 -1
- package/dist/client/assets/el-table-column-CASRIbZM.js +0 -1
- package/dist/client/assets/el-table-column-T_mV9jNw.css +0 -1
- package/dist/client/assets/el-tag-DjxZVOpb.css +0 -1
- package/dist/client/assets/el-tag-npbwux4f.js +0 -1
- package/dist/client/assets/index-CCnAxNF8.js +0 -2
- package/dist/client/assets/index-d1DZeSfz.js +0 -1
- package/dist/client/assets/vnode-CHomNjgN.js +0 -1
|
@@ -31,9 +31,12 @@ export declare class SseTransport implements Transport {
|
|
|
31
31
|
private headers;
|
|
32
32
|
private reconnectInterval;
|
|
33
33
|
private maxReconnectAttempts;
|
|
34
|
+
private proxy?;
|
|
34
35
|
private eventSource;
|
|
35
36
|
private reconnectAttempts;
|
|
36
37
|
private isClosing;
|
|
38
|
+
private _serverName?;
|
|
39
|
+
private _compositeKey?;
|
|
37
40
|
onmessage?: (message: JSONRPCMessage) => void;
|
|
38
41
|
onerror?: (error: Error) => void;
|
|
39
42
|
onclose?: () => void;
|
|
@@ -44,8 +47,20 @@ export declare class SseTransport implements Transport {
|
|
|
44
47
|
* @param headers - Optional HTTP headers to include in the SSE connection request
|
|
45
48
|
* @param reconnectInterval - Time interval (in milliseconds) between reconnection attempts (default: 3000ms)
|
|
46
49
|
* @param maxReconnectAttempts - Maximum number of reconnection attempts before giving up (default: 5)
|
|
50
|
+
* @param proxy - Optional proxy configuration
|
|
51
|
+
* @param serverName - Optional server name for logging
|
|
52
|
+
* @param compositeKey - Optional composite key (serverName-serverIndex) for logging
|
|
47
53
|
*/
|
|
48
|
-
constructor(url: string, headers?: Record<string, string>, reconnectInterval?: number, maxReconnectAttempts?: number
|
|
54
|
+
constructor(url: string, headers?: Record<string, string>, reconnectInterval?: number, maxReconnectAttempts?: number, proxy?: {
|
|
55
|
+
url: string;
|
|
56
|
+
} | undefined, serverName?: string, compositeKey?: string);
|
|
57
|
+
/**
|
|
58
|
+
* Helper method to format log messages with server context.
|
|
59
|
+
*
|
|
60
|
+
* @param message - The base message
|
|
61
|
+
* @returns Formatted message with server context if available
|
|
62
|
+
*/
|
|
63
|
+
private formatLogMessage;
|
|
49
64
|
/**
|
|
50
65
|
* Initializes and starts the SSE connection to the specified URL.
|
|
51
66
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/sse-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"sse-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/sse-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAQ1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,YAAa,YAAW,SAAS;IAuB1C,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,KAAK,CAAC;IA1BhB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAS;IAExB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5B;;;;;;;;;;OAUG;gBAEO,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACpC,iBAAiB,GAAE,MAAa,EAChC,oBAAoB,GAAE,MAAU,EAChC,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,YAAA,EAC/B,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM;IAMvB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;;;OASG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyG5B;;;;;;;;OAQG;YACW,OAAO;IAOrB;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;;;OAQG;YACW,aAAa;IAQ3B;;;;;;;;;;;;OAYG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBnD"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { logger } from '../logger.js';
|
|
2
|
+
import { LOG_MODULES } from '../logger/log-modules.js';
|
|
3
|
+
import { ProxyAgent, fetch as undiciFetch } from 'undici';
|
|
2
4
|
// Use EventSource from the 'eventsource' package for Node.js compatibility
|
|
3
5
|
import { EventSource } from 'eventsource';
|
|
4
6
|
/**
|
|
@@ -32,9 +34,12 @@ export class SseTransport {
|
|
|
32
34
|
headers;
|
|
33
35
|
reconnectInterval;
|
|
34
36
|
maxReconnectAttempts;
|
|
37
|
+
proxy;
|
|
35
38
|
eventSource = null;
|
|
36
39
|
reconnectAttempts = 0;
|
|
37
40
|
isClosing = false;
|
|
41
|
+
_serverName;
|
|
42
|
+
_compositeKey;
|
|
38
43
|
onmessage;
|
|
39
44
|
onerror;
|
|
40
45
|
onclose;
|
|
@@ -45,12 +50,35 @@ export class SseTransport {
|
|
|
45
50
|
* @param headers - Optional HTTP headers to include in the SSE connection request
|
|
46
51
|
* @param reconnectInterval - Time interval (in milliseconds) between reconnection attempts (default: 3000ms)
|
|
47
52
|
* @param maxReconnectAttempts - Maximum number of reconnection attempts before giving up (default: 5)
|
|
53
|
+
* @param proxy - Optional proxy configuration
|
|
54
|
+
* @param serverName - Optional server name for logging
|
|
55
|
+
* @param compositeKey - Optional composite key (serverName-serverIndex) for logging
|
|
48
56
|
*/
|
|
49
|
-
constructor(url, headers = {}, reconnectInterval = 3000, maxReconnectAttempts = 5) {
|
|
57
|
+
constructor(url, headers = {}, reconnectInterval = 3000, maxReconnectAttempts = 5, proxy, serverName, compositeKey) {
|
|
50
58
|
this.url = url;
|
|
51
59
|
this.headers = headers;
|
|
52
60
|
this.reconnectInterval = reconnectInterval;
|
|
53
61
|
this.maxReconnectAttempts = maxReconnectAttempts;
|
|
62
|
+
this.proxy = proxy;
|
|
63
|
+
this._serverName = serverName;
|
|
64
|
+
this._compositeKey = compositeKey;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Helper method to format log messages with server context.
|
|
68
|
+
*
|
|
69
|
+
* @param message - The base message
|
|
70
|
+
* @returns Formatted message with server context if available
|
|
71
|
+
*/
|
|
72
|
+
formatLogMessage(message) {
|
|
73
|
+
if (this._compositeKey) {
|
|
74
|
+
return `${message} (compositeKey=${this._compositeKey}, url=${this.url})`;
|
|
75
|
+
}
|
|
76
|
+
else if (this._serverName) {
|
|
77
|
+
return `${message} (server=${this._serverName}, url=${this.url})`;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return `${message} (url=${this.url})`;
|
|
81
|
+
}
|
|
54
82
|
}
|
|
55
83
|
/**
|
|
56
84
|
* Initializes and starts the SSE connection to the specified URL.
|
|
@@ -75,6 +103,24 @@ export class SseTransport {
|
|
|
75
103
|
if (Object.keys(this.headers).length > 0) {
|
|
76
104
|
options.headers = this.headers;
|
|
77
105
|
}
|
|
106
|
+
const proxyInfo = this.proxy?.url ? `, proxy=${this.proxy.url}` : '';
|
|
107
|
+
logger.info(this.formatLogMessage(`Attempting to connect to SSE server${proxyInfo}`), LOG_MODULES.SSE_TRANSPORT);
|
|
108
|
+
// Add proxy support if configured
|
|
109
|
+
if (this.proxy?.url) {
|
|
110
|
+
const agent = new ProxyAgent(this.proxy.url);
|
|
111
|
+
// Create custom fetch function with proxy
|
|
112
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
113
|
+
const customFetch = (input, init) => {
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
115
|
+
const fetchOptions = {
|
|
116
|
+
...init,
|
|
117
|
+
dispatcher: agent
|
|
118
|
+
};
|
|
119
|
+
return undiciFetch(input, fetchOptions);
|
|
120
|
+
};
|
|
121
|
+
options.fetch = customFetch;
|
|
122
|
+
logger.info(this.formatLogMessage(`SSE transport configured with proxy: ${this.proxy.url}`), LOG_MODULES.SSE_TRANSPORT);
|
|
123
|
+
}
|
|
78
124
|
this.eventSource = new EventSource(this.url, options);
|
|
79
125
|
this.eventSource.onmessage = (event) => {
|
|
80
126
|
try {
|
|
@@ -83,34 +129,34 @@ export class SseTransport {
|
|
|
83
129
|
this.reconnectAttempts = 0; // Reset on successful message
|
|
84
130
|
}
|
|
85
131
|
catch (error) {
|
|
86
|
-
logger.error('Failed to parse SSE message
|
|
132
|
+
logger.error(this.formatLogMessage('Failed to parse SSE message'), error, LOG_MODULES.SSE_TRANSPORT);
|
|
87
133
|
this.onerror?.(new Error(`Invalid JSON in SSE message: ${event.data}`));
|
|
88
134
|
}
|
|
89
135
|
};
|
|
90
136
|
this.eventSource.onerror = () => {
|
|
91
137
|
const error = new Error(`SSE connection error for ${this.url}`);
|
|
92
|
-
logger.error('SSE connection error
|
|
138
|
+
logger.error(this.formatLogMessage('SSE connection error'), error, LOG_MODULES.SSE_TRANSPORT);
|
|
93
139
|
if (!this.isClosing) {
|
|
94
140
|
this.reconnectAttempts++;
|
|
95
141
|
if (this.reconnectAttempts <= this.maxReconnectAttempts) {
|
|
96
|
-
logger.info(`Attempting to reconnect SSE (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`);
|
|
142
|
+
logger.info(this.formatLogMessage(`Attempting to reconnect SSE (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`), LOG_MODULES.SSE_TRANSPORT);
|
|
97
143
|
setTimeout(() => {
|
|
98
144
|
this.restart();
|
|
99
145
|
}, this.reconnectInterval);
|
|
100
146
|
}
|
|
101
147
|
else {
|
|
102
|
-
logger.error('Max reconnection attempts reached for SSE');
|
|
148
|
+
logger.error(this.formatLogMessage('Max reconnection attempts reached for SSE'), LOG_MODULES.SSE_TRANSPORT);
|
|
103
149
|
this.onerror?.(error);
|
|
104
150
|
this.closeInternal();
|
|
105
151
|
}
|
|
106
152
|
}
|
|
107
153
|
};
|
|
108
154
|
this.eventSource.onopen = () => {
|
|
109
|
-
logger.info(
|
|
155
|
+
logger.info(this.formatLogMessage('SSE connection opened'), LOG_MODULES.SSE_TRANSPORT);
|
|
110
156
|
};
|
|
111
157
|
}
|
|
112
158
|
catch (error) {
|
|
113
|
-
logger.error('Failed to create SSE connection
|
|
159
|
+
logger.error(this.formatLogMessage('Failed to create SSE connection'), error, LOG_MODULES.SSE_TRANSPORT);
|
|
114
160
|
throw error;
|
|
115
161
|
}
|
|
116
162
|
}
|
|
@@ -180,10 +226,10 @@ export class SseTransport {
|
|
|
180
226
|
// Type-safe way to access message properties
|
|
181
227
|
const messageId = 'id' in message ? String(message.id) : 'unknown';
|
|
182
228
|
const method = 'method' in message ? String(message.method) : 'unknown';
|
|
183
|
-
logger.warn('Attempted to send message via SSE transport', {
|
|
229
|
+
logger.warn(this.formatLogMessage('Attempted to send message via SSE transport'), {
|
|
184
230
|
messageId,
|
|
185
231
|
method
|
|
186
|
-
});
|
|
232
|
+
}, LOG_MODULES.SSE_TRANSPORT);
|
|
187
233
|
throw error;
|
|
188
234
|
}
|
|
189
235
|
}
|
|
@@ -1,21 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
2
2
|
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
3
|
+
import { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
3
4
|
import type { LogStorageService } from '../../services/log-storage.service.js';
|
|
4
|
-
|
|
5
|
-
command: string;
|
|
6
|
-
args?: string[];
|
|
7
|
-
env?: NodeJS.ProcessEnv;
|
|
8
|
-
stderr?: 'inherit' | 'pipe' | 'ignore';
|
|
9
|
-
cwd?: string;
|
|
10
|
-
}
|
|
5
|
+
import { PassThrough } from 'stream';
|
|
11
6
|
export interface StdioTransportOptions {
|
|
12
|
-
|
|
7
|
+
compositeKey?: string;
|
|
13
8
|
logStorage?: LogStorageService;
|
|
14
9
|
}
|
|
15
10
|
/**
|
|
16
11
|
* A transport implementation for communicating with MCP (Model Context Protocol) servers
|
|
17
|
-
* via standard input/output streams. This transport
|
|
18
|
-
*
|
|
12
|
+
* via standard input/output streams. This transport wraps the official SDK's StdioClientTransport
|
|
13
|
+
* and provides consistent logging and integration with the MCP Hub Lite system.
|
|
19
14
|
*
|
|
20
15
|
* The StdioTransport handles:
|
|
21
16
|
* - Cross-platform process spawning (including Windows batch file compatibility)
|
|
@@ -30,19 +25,11 @@ export interface StdioTransportOptions {
|
|
|
30
25
|
* @implements {Transport}
|
|
31
26
|
*/
|
|
32
27
|
export declare class StdioTransport implements Transport {
|
|
33
|
-
private
|
|
34
|
-
private _readBuffer;
|
|
35
|
-
private _stderrStream;
|
|
36
|
-
private _serverParams;
|
|
28
|
+
private _transport;
|
|
37
29
|
private _serverName?;
|
|
38
|
-
private
|
|
30
|
+
private _compositeKey?;
|
|
39
31
|
private _logStorage?;
|
|
40
|
-
|
|
41
|
-
* Gets the process ID of the spawned child process.
|
|
42
|
-
*
|
|
43
|
-
* @returns {number | undefined} The PID of the child process, or undefined if not started
|
|
44
|
-
*/
|
|
45
|
-
get pid(): number | undefined;
|
|
32
|
+
private _stderrStream;
|
|
46
33
|
onclose?: () => void;
|
|
47
34
|
onerror?: (error: Error) => void;
|
|
48
35
|
onmessage?: (message: JSONRPCMessage) => void;
|
|
@@ -59,11 +46,11 @@ export declare class StdioTransport implements Transport {
|
|
|
59
46
|
/**
|
|
60
47
|
* Starts the transport by spawning the child process and establishing communication channels.
|
|
61
48
|
*
|
|
62
|
-
* This method
|
|
63
|
-
* -
|
|
64
|
-
* -
|
|
65
|
-
* -
|
|
66
|
-
* -
|
|
49
|
+
* This method delegates to the SDK's StdioClientTransport.start() method which handles:
|
|
50
|
+
* - Platform-specific process spawning (including Windows batch file compatibility)
|
|
51
|
+
* - Proper stdio configuration
|
|
52
|
+
* - Event listeners for process lifecycle events
|
|
53
|
+
* - Data flow for stdout and stderr handling
|
|
67
54
|
*
|
|
68
55
|
* @returns {Promise<void>} Resolves when the child process is successfully spawned
|
|
69
56
|
* @throws {Error} If the transport is already started
|
|
@@ -72,36 +59,23 @@ export declare class StdioTransport implements Transport {
|
|
|
72
59
|
/**
|
|
73
60
|
* Gets the stderr stream for the child process.
|
|
74
61
|
*
|
|
75
|
-
* Returns
|
|
76
|
-
* the actual stderr stream from the child process, or null if no stderr is available.
|
|
62
|
+
* Returns our PassThrough stream that captures stderr data.
|
|
77
63
|
*
|
|
78
|
-
* @returns {PassThrough |
|
|
64
|
+
* @returns {PassThrough | null} The stderr stream or null
|
|
79
65
|
*/
|
|
80
|
-
get stderr():
|
|
66
|
+
get stderr(): PassThrough | null;
|
|
81
67
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* This method continuously reads complete JSON-RPC messages from the buffer
|
|
85
|
-
* and dispatches them to the onmessage callback. It handles partial messages
|
|
86
|
-
* by leaving incomplete data in the buffer for future processing.
|
|
87
|
-
*
|
|
88
|
-
* The method uses a while loop to process all available complete messages
|
|
89
|
-
* in a single call, ensuring efficient message handling without blocking.
|
|
68
|
+
* Gets the process ID of the spawned child process.
|
|
90
69
|
*
|
|
91
|
-
* @
|
|
70
|
+
* @returns {number | undefined} The PID of the child process, or undefined if not started
|
|
92
71
|
*/
|
|
93
|
-
|
|
72
|
+
get pid(): number | undefined;
|
|
94
73
|
/**
|
|
95
74
|
* Closes the transport by gracefully terminating the child process.
|
|
96
75
|
*
|
|
97
|
-
* This method
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
* 3. Forces termination with SIGKILL if the process doesn't exit
|
|
101
|
-
* 4. Cleans up internal state and resolves the promise
|
|
102
|
-
*
|
|
103
|
-
* The method ensures proper cleanup of the read buffer and handles
|
|
104
|
-
* any errors that occur during the shutdown process.
|
|
76
|
+
* This method delegates to the SDK's StdioClientTransport.close() method which handles:
|
|
77
|
+
* - Graceful shutdown sequence with SIGTERM/SIGKILL
|
|
78
|
+
* - Proper cleanup of internal state
|
|
105
79
|
*
|
|
106
80
|
* @returns {Promise<void>} Resolves when the transport is fully closed
|
|
107
81
|
*/
|
|
@@ -109,13 +83,10 @@ export declare class StdioTransport implements Transport {
|
|
|
109
83
|
/**
|
|
110
84
|
* Sends a JSON-RPC message to the child process via stdin.
|
|
111
85
|
*
|
|
112
|
-
* This method
|
|
113
|
-
* and writes it to the child process's stdin stream. It validates that
|
|
114
|
-
* the transport is connected before attempting to send the message.
|
|
86
|
+
* This method delegates to the SDK's StdioClientTransport.send() method.
|
|
115
87
|
*
|
|
116
88
|
* @param {JSONRPCMessage} message - The JSON-RPC message to send
|
|
117
89
|
* @returns {Promise<void>} Resolves when the message is written to stdin
|
|
118
|
-
* @throws {Error} If the transport is not connected (no active child process)
|
|
119
90
|
*/
|
|
120
91
|
send(message: JSONRPCMessage): Promise<void>;
|
|
121
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/stdio-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stdio-transport.d.ts","sourceRoot":"","sources":["../../../../../src/utils/transports/stdio-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACtB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAoB;IACxC,OAAO,CAAC,aAAa,CAA4B;IAE1C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;;;;;OAMG;gBACS,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAiB/F;;;;;;;;;;;OAWG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B;;;;;;OAMG;IACH,IAAI,MAAM,uBAET;IAED;;;;OAIG;IACH,IAAW,GAAG,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAGnD"}
|