synapse-mcp 1.0.0 → 1.0.2
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/README.md +1820 -147
- package/dist/constants.d.ts +10 -4
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +18 -8
- package/dist/constants.js.map +1 -1
- package/dist/events/emitter.d.ts +63 -0
- package/dist/events/emitter.d.ts.map +1 -0
- package/dist/events/emitter.js +112 -0
- package/dist/events/emitter.js.map +1 -0
- package/dist/events/index.d.ts +3 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +51 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +3 -0
- package/dist/events/types.js.map +1 -0
- package/dist/formatters/compose.d.ts +185 -0
- package/dist/formatters/compose.d.ts.map +1 -0
- package/dist/formatters/compose.js +397 -0
- package/dist/formatters/compose.js.map +1 -0
- package/dist/formatters/container.d.ts +84 -0
- package/dist/formatters/container.d.ts.map +1 -0
- package/dist/formatters/container.js +323 -0
- package/dist/formatters/container.js.map +1 -0
- package/dist/formatters/diagnostics.d.ts +20 -0
- package/dist/formatters/diagnostics.d.ts.map +1 -0
- package/dist/formatters/diagnostics.js +73 -0
- package/dist/formatters/diagnostics.js.map +1 -0
- package/dist/formatters/docker.d.ts +139 -0
- package/dist/formatters/docker.d.ts.map +1 -0
- package/dist/formatters/docker.js +216 -0
- package/dist/formatters/docker.js.map +1 -0
- package/dist/formatters/host.d.ts +137 -0
- package/dist/formatters/host.d.ts.map +1 -0
- package/dist/formatters/host.js +198 -0
- package/dist/formatters/host.js.map +1 -0
- package/dist/formatters/index.d.ts +17 -270
- package/dist/formatters/index.d.ts.map +1 -1
- package/dist/formatters/index.js +21 -456
- package/dist/formatters/index.js.map +1 -1
- package/dist/formatters/scout.d.ts +424 -0
- package/dist/formatters/scout.d.ts.map +1 -0
- package/dist/formatters/scout.js +687 -0
- package/dist/formatters/scout.js.map +1 -0
- package/dist/formatters/strategy.d.ts +105 -0
- package/dist/formatters/strategy.d.ts.map +1 -0
- package/dist/formatters/strategy.js +120 -0
- package/dist/formatters/strategy.js.map +1 -0
- package/dist/formatters/utils.d.ts +84 -0
- package/dist/formatters/utils.d.ts.map +1 -0
- package/dist/formatters/utils.js +129 -0
- package/dist/formatters/utils.js.map +1 -0
- package/dist/health-rate-limiter.d.ts +59 -0
- package/dist/health-rate-limiter.d.ts.map +1 -0
- package/dist/health-rate-limiter.js +159 -0
- package/dist/health-rate-limiter.js.map +1 -0
- package/dist/index.js +61 -100
- package/dist/index.js.map +1 -1
- package/dist/middleware/async-handler.d.ts +62 -0
- package/dist/middleware/async-handler.d.ts.map +1 -0
- package/dist/middleware/async-handler.js +58 -0
- package/dist/middleware/async-handler.js.map +1 -0
- package/dist/middleware/auth.d.ts +32 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +63 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/csrf-protection.d.ts +58 -0
- package/dist/middleware/csrf-protection.d.ts.map +1 -0
- package/dist/middleware/csrf-protection.js +123 -0
- package/dist/middleware/csrf-protection.js.map +1 -0
- package/dist/middleware/error-handler.d.ts +49 -0
- package/dist/middleware/error-handler.d.ts.map +1 -0
- package/dist/middleware/error-handler.js +90 -0
- package/dist/middleware/error-handler.js.map +1 -0
- package/dist/middleware/error-mapper.d.ts +44 -0
- package/dist/middleware/error-mapper.d.ts.map +1 -0
- package/dist/middleware/error-mapper.js +127 -0
- package/dist/middleware/error-mapper.js.map +1 -0
- package/dist/middleware/index.d.ts +13 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +13 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/request-id.d.ts +22 -0
- package/dist/middleware/request-id.d.ts.map +1 -0
- package/dist/middleware/request-id.js +31 -0
- package/dist/middleware/request-id.js.map +1 -0
- package/dist/middleware/types.d.ts +33 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/schemas/common.d.ts +205 -8
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +290 -17
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/flux/compose.d.ts +307 -44
- package/dist/schemas/flux/compose.d.ts.map +1 -1
- package/dist/schemas/flux/compose.js +74 -48
- package/dist/schemas/flux/compose.js.map +1 -1
- package/dist/schemas/flux/container.d.ts +423 -56
- package/dist/schemas/flux/container.d.ts.map +1 -1
- package/dist/schemas/flux/container.js +83 -61
- package/dist/schemas/flux/container.js.map +1 -1
- package/dist/schemas/flux/docker.d.ts +254 -37
- package/dist/schemas/flux/docker.d.ts.map +1 -1
- package/dist/schemas/flux/docker.js +69 -39
- package/dist/schemas/flux/docker.js.map +1 -1
- package/dist/schemas/flux/host.d.ts +312 -29
- package/dist/schemas/flux/host.d.ts.map +1 -1
- package/dist/schemas/flux/host.js +74 -31
- package/dist/schemas/flux/host.js.map +1 -1
- package/dist/schemas/flux/index.d.ts +503 -11
- package/dist/schemas/flux/index.d.ts.map +1 -1
- package/dist/schemas/flux/index.js +34 -70
- package/dist/schemas/flux/index.js.map +1 -1
- package/dist/schemas/host-config.d.ts +76 -0
- package/dist/schemas/host-config.d.ts.map +1 -0
- package/dist/schemas/host-config.js +105 -0
- package/dist/schemas/host-config.js.map +1 -0
- package/dist/schemas/scout/index.d.ts +80 -23
- package/dist/schemas/scout/index.d.ts.map +1 -1
- package/dist/schemas/scout/index.js +26 -11
- package/dist/schemas/scout/index.js.map +1 -1
- package/dist/schemas/scout/logs.d.ts +17 -5
- package/dist/schemas/scout/logs.d.ts.map +1 -1
- package/dist/schemas/scout/logs.js +41 -31
- package/dist/schemas/scout/logs.js.map +1 -1
- package/dist/schemas/scout/simple.d.ts +126 -11
- package/dist/schemas/scout/simple.d.ts.map +1 -1
- package/dist/schemas/scout/simple.js +112 -57
- package/dist/schemas/scout/simple.js.map +1 -1
- package/dist/schemas/scout/zfs.d.ts +17 -5
- package/dist/schemas/scout/zfs.d.ts.map +1 -1
- package/dist/schemas/scout/zfs.js +34 -25
- package/dist/schemas/scout/zfs.js.map +1 -1
- package/dist/services/cache-layer.d.ts +160 -0
- package/dist/services/cache-layer.d.ts.map +1 -0
- package/dist/services/cache-layer.js +138 -0
- package/dist/services/cache-layer.js.map +1 -0
- package/dist/services/compose-cache.d.ts +75 -0
- package/dist/services/compose-cache.d.ts.map +1 -0
- package/dist/services/compose-cache.js +178 -0
- package/dist/services/compose-cache.js.map +1 -0
- package/dist/services/compose-discovery.d.ts +46 -0
- package/dist/services/compose-discovery.d.ts.map +1 -0
- package/dist/services/compose-discovery.js +219 -0
- package/dist/services/compose-discovery.js.map +1 -0
- package/dist/services/compose-project-lister.d.ts +27 -0
- package/dist/services/compose-project-lister.d.ts.map +1 -0
- package/dist/services/compose-project-lister.js +71 -0
- package/dist/services/compose-project-lister.js.map +1 -0
- package/dist/services/compose-scanner.d.ts +63 -0
- package/dist/services/compose-scanner.d.ts.map +1 -0
- package/dist/services/compose-scanner.js +253 -0
- package/dist/services/compose-scanner.js.map +1 -0
- package/dist/services/compose.d.ts +64 -28
- package/dist/services/compose.d.ts.map +1 -1
- package/dist/services/compose.js +220 -98
- package/dist/services/compose.js.map +1 -1
- package/dist/services/config-loader.d.ts +23 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +124 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/config-service.d.ts +38 -0
- package/dist/services/config-service.d.ts.map +1 -0
- package/dist/services/config-service.js +225 -0
- package/dist/services/config-service.js.map +1 -0
- package/dist/services/container-host-map-cache.d.ts +121 -0
- package/dist/services/container-host-map-cache.d.ts.map +1 -0
- package/dist/services/container-host-map-cache.js +188 -0
- package/dist/services/container-host-map-cache.js.map +1 -0
- package/dist/services/container.d.ts +194 -6
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +386 -11
- package/dist/services/container.js.map +1 -1
- package/dist/services/diagnostics.d.ts +57 -0
- package/dist/services/diagnostics.d.ts.map +1 -0
- package/dist/services/diagnostics.js +271 -0
- package/dist/services/diagnostics.js.map +1 -0
- package/dist/services/docker/container-service.d.ts +123 -0
- package/dist/services/docker/container-service.d.ts.map +1 -0
- package/dist/services/docker/container-service.js +347 -0
- package/dist/services/docker/container-service.js.map +1 -0
- package/dist/services/docker/image-service.d.ts +82 -0
- package/dist/services/docker/image-service.d.ts.map +1 -0
- package/dist/services/docker/image-service.js +193 -0
- package/dist/services/docker/image-service.js.map +1 -0
- package/dist/services/docker/index.d.ts +80 -0
- package/dist/services/docker/index.d.ts.map +1 -0
- package/dist/services/docker/index.js +103 -0
- package/dist/services/docker/index.js.map +1 -0
- package/dist/services/docker/network-service.d.ts +22 -0
- package/dist/services/docker/network-service.d.ts.map +1 -0
- package/dist/services/docker/network-service.js +43 -0
- package/dist/services/docker/network-service.js.map +1 -0
- package/dist/services/docker/system-service.d.ts +49 -0
- package/dist/services/docker/system-service.d.ts.map +1 -0
- package/dist/services/docker/system-service.js +215 -0
- package/dist/services/docker/system-service.js.map +1 -0
- package/dist/services/docker/utils/client-factory.d.ts +56 -0
- package/dist/services/docker/utils/client-factory.d.ts.map +1 -0
- package/dist/services/docker/utils/client-factory.js +139 -0
- package/dist/services/docker/utils/client-factory.js.map +1 -0
- package/dist/services/docker/utils/client-manager.d.ts +88 -0
- package/dist/services/docker/utils/client-manager.d.ts.map +1 -0
- package/dist/services/docker/utils/client-manager.js +124 -0
- package/dist/services/docker/utils/client-manager.js.map +1 -0
- package/dist/services/docker/utils/exec-handler.d.ts +94 -0
- package/dist/services/docker/utils/exec-handler.d.ts.map +1 -0
- package/dist/services/docker/utils/exec-handler.js +197 -0
- package/dist/services/docker/utils/exec-handler.js.map +1 -0
- package/dist/services/docker/utils/formatters.d.ts +13 -0
- package/dist/services/docker/utils/formatters.d.ts.map +1 -0
- package/dist/services/docker/utils/formatters.js +33 -0
- package/dist/services/docker/utils/formatters.js.map +1 -0
- package/dist/services/docker/utils/log-parser.d.ts +10 -0
- package/dist/services/docker/utils/log-parser.d.ts.map +1 -0
- package/dist/services/docker/utils/log-parser.js +48 -0
- package/dist/services/docker/utils/log-parser.js.map +1 -0
- package/dist/services/docker/utils/stats-calculator.d.ts +68 -0
- package/dist/services/docker/utils/stats-calculator.d.ts.map +1 -0
- package/dist/services/docker/utils/stats-calculator.js +61 -0
- package/dist/services/docker/utils/stats-calculator.js.map +1 -0
- package/dist/services/docker/volume-service.d.ts +22 -0
- package/dist/services/docker/volume-service.d.ts.map +1 -0
- package/dist/services/docker/volume-service.js +48 -0
- package/dist/services/docker/volume-service.js.map +1 -0
- package/dist/services/docker-interfaces.d.ts +283 -0
- package/dist/services/docker-interfaces.d.ts.map +1 -0
- package/dist/services/docker-interfaces.js +13 -0
- package/dist/services/docker-interfaces.js.map +1 -0
- package/dist/services/docker.d.ts +42 -5
- package/dist/services/docker.d.ts.map +1 -1
- package/dist/services/docker.js +335 -127
- package/dist/services/docker.js.map +1 -1
- package/dist/services/file-service.d.ts +6 -2
- package/dist/services/file-service.d.ts.map +1 -1
- package/dist/services/file-service.js +156 -52
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/host-config-repository.d.ts +133 -0
- package/dist/services/host-config-repository.d.ts.map +1 -0
- package/dist/services/host-config-repository.js +323 -0
- package/dist/services/host-config-repository.js.map +1 -0
- package/dist/services/host-resolver.d.ts +49 -0
- package/dist/services/host-resolver.d.ts.map +1 -0
- package/dist/services/host-resolver.js +176 -0
- package/dist/services/host-resolver.js.map +1 -0
- package/dist/services/interfaces.d.ts +61 -194
- package/dist/services/interfaces.d.ts.map +1 -1
- package/dist/services/local-executor.d.ts +31 -0
- package/dist/services/local-executor.d.ts.map +1 -0
- package/dist/services/local-executor.js +71 -0
- package/dist/services/local-executor.js.map +1 -0
- package/dist/services/ssh-config-loader.d.ts +35 -0
- package/dist/services/ssh-config-loader.d.ts.map +1 -0
- package/dist/services/ssh-config-loader.js +218 -0
- package/dist/services/ssh-config-loader.js.map +1 -0
- package/dist/services/ssh-pool.d.ts +26 -1
- package/dist/services/ssh-pool.d.ts.map +1 -1
- package/dist/services/ssh-pool.js +166 -25
- package/dist/services/ssh-pool.js.map +1 -1
- package/dist/services/ssh-service.d.ts +3 -0
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +53 -31
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/ssh.d.ts +2 -6
- package/dist/services/ssh.d.ts.map +1 -1
- package/dist/services/ssh.js +9 -40
- package/dist/services/ssh.js.map +1 -1
- package/dist/tools/definitions/flux.d.ts +13 -0
- package/dist/tools/definitions/flux.d.ts.map +1 -0
- package/dist/tools/definitions/flux.js +101 -0
- package/dist/tools/definitions/flux.js.map +1 -0
- package/dist/tools/definitions/index.d.ts +8 -0
- package/dist/tools/definitions/index.d.ts.map +1 -0
- package/dist/tools/definitions/index.js +8 -0
- package/dist/tools/definitions/index.js.map +1 -0
- package/dist/tools/definitions/scout.d.ts +13 -0
- package/dist/tools/definitions/scout.d.ts.map +1 -0
- package/dist/tools/definitions/scout.js +78 -0
- package/dist/tools/definitions/scout.js.map +1 -0
- package/dist/tools/flux.d.ts +16 -8
- package/dist/tools/flux.d.ts.map +1 -1
- package/dist/tools/flux.js +27 -66
- package/dist/tools/flux.js.map +1 -1
- package/dist/tools/handlers/base-handler.d.ts +172 -0
- package/dist/tools/handlers/base-handler.d.ts.map +1 -0
- package/dist/tools/handlers/base-handler.js +234 -0
- package/dist/tools/handlers/base-handler.js.map +1 -0
- package/dist/tools/handlers/compose-handlers.d.ts +108 -0
- package/dist/tools/handlers/compose-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/compose-handlers.js +293 -0
- package/dist/tools/handlers/compose-handlers.js.map +1 -0
- package/dist/tools/handlers/compose-utils.d.ts +35 -0
- package/dist/tools/handlers/compose-utils.d.ts.map +1 -0
- package/dist/tools/handlers/compose-utils.js +76 -0
- package/dist/tools/handlers/compose-utils.js.map +1 -0
- package/dist/tools/handlers/compose.d.ts +23 -0
- package/dist/tools/handlers/compose.d.ts.map +1 -0
- package/dist/tools/handlers/compose.js +125 -0
- package/dist/tools/handlers/compose.js.map +1 -0
- package/dist/tools/handlers/container.d.ts +23 -0
- package/dist/tools/handlers/container.d.ts.map +1 -0
- package/dist/tools/handlers/container.js +333 -0
- package/dist/tools/handlers/container.js.map +1 -0
- package/dist/tools/handlers/docker.d.ts +24 -0
- package/dist/tools/handlers/docker.d.ts.map +1 -0
- package/dist/tools/handlers/docker.js +155 -0
- package/dist/tools/handlers/docker.js.map +1 -0
- package/dist/tools/handlers/host.d.ts +23 -0
- package/dist/tools/handlers/host.d.ts.map +1 -0
- package/dist/tools/handlers/host.js +196 -0
- package/dist/tools/handlers/host.js.map +1 -0
- package/dist/tools/handlers/scout-logs.d.ts +24 -0
- package/dist/tools/handlers/scout-logs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-logs.js +119 -0
- package/dist/tools/handlers/scout-logs.js.map +1 -0
- package/dist/tools/handlers/scout-simple.d.ts +23 -0
- package/dist/tools/handlers/scout-simple.d.ts.map +1 -0
- package/dist/tools/handlers/scout-simple.js +286 -0
- package/dist/tools/handlers/scout-simple.js.map +1 -0
- package/dist/tools/handlers/scout-zfs.d.ts +23 -0
- package/dist/tools/handlers/scout-zfs.d.ts.map +1 -0
- package/dist/tools/handlers/scout-zfs.js +82 -0
- package/dist/tools/handlers/scout-zfs.js.map +1 -0
- package/dist/tools/index.d.ts +32 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +41 -35
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +135 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +151 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/scout.d.ts +16 -8
- package/dist/tools/scout.d.ts.map +1 -1
- package/dist/tools/scout.js +36 -78
- package/dist/tools/scout.js.map +1 -1
- package/dist/types.d.ts +629 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/command-security.d.ts +82 -0
- package/dist/utils/command-security.d.ts.map +1 -0
- package/dist/utils/command-security.js +122 -0
- package/dist/utils/command-security.js.map +1 -0
- package/dist/utils/error-sanitization.d.ts +77 -0
- package/dist/utils/error-sanitization.d.ts.map +1 -0
- package/dist/utils/error-sanitization.js +107 -0
- package/dist/utils/error-sanitization.js.map +1 -0
- package/dist/utils/errors.d.ts +30 -6
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +91 -12
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/help-handler.d.ts +23 -0
- package/dist/utils/help-handler.d.ts.map +1 -0
- package/dist/utils/help-handler.js +21 -0
- package/dist/utils/help-handler.js.map +1 -0
- package/dist/utils/help.d.ts +1 -1
- package/dist/utils/help.d.ts.map +1 -1
- package/dist/utils/help.js +57 -16
- package/dist/utils/help.js.map +1 -1
- package/dist/utils/host-utils.d.ts +31 -0
- package/dist/utils/host-utils.d.ts.map +1 -0
- package/dist/utils/host-utils.js +80 -0
- package/dist/utils/host-utils.js.map +1 -0
- package/dist/utils/index.d.ts +8 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/init-detection.d.ts +36 -0
- package/dist/utils/init-detection.d.ts.map +1 -0
- package/dist/utils/init-detection.js +79 -0
- package/dist/utils/init-detection.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +32 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pagination.d.ts +20 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +29 -0
- package/dist/utils/pagination.js.map +1 -0
- package/dist/utils/path-security.d.ts +132 -18
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js +164 -35
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/sorting.d.ts +33 -0
- package/dist/utils/sorting.d.ts.map +1 -0
- package/dist/utils/sorting.js +57 -0
- package/dist/utils/sorting.js.map +1 -0
- package/dist/utils/text-filters.d.ts +13 -0
- package/dist/utils/text-filters.d.ts.map +1 -0
- package/dist/utils/text-filters.js +18 -0
- package/dist/utils/text-filters.js.map +1 -0
- package/dist/utils/time.d.ts +11 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +13 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +25 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +56 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +45 -19
- package/dist/schemas/discriminator.d.ts +0 -20
- package/dist/schemas/discriminator.d.ts.map +0 -1
- package/dist/schemas/discriminator.js +0 -25
- package/dist/schemas/discriminator.js.map +0 -1
- package/dist/schemas/unified.d.ts +0 -674
- package/dist/schemas/unified.d.ts.map +0 -1
- package/dist/schemas/unified.js +0 -453
- package/dist/schemas/unified.js.map +0 -1
- package/dist/tools/unified.d.ts +0 -7
- package/dist/tools/unified.d.ts.map +0 -1
- package/dist/tools/unified.js +0 -827
- package/dist/tools/unified.js.map +0 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
// src/services/diagnostics.ts
|
|
2
|
+
/**
|
|
3
|
+
* Diagnostic checks for host health monitoring
|
|
4
|
+
*
|
|
5
|
+
* Provides actionable health checks for Docker hosts:
|
|
6
|
+
* - Resources: CPU/memory/disk thresholds
|
|
7
|
+
* - Containers: Exited/unhealthy container detection
|
|
8
|
+
* - Logs: Recent error pattern scanning
|
|
9
|
+
* - Processes: Zombie/defunct process detection
|
|
10
|
+
* - Docker: Daemon health verification
|
|
11
|
+
* - Network: Connectivity testing
|
|
12
|
+
*/
|
|
13
|
+
import { logError } from "../utils/errors.js";
|
|
14
|
+
const RESOURCE_THRESHOLD = 80; // Warn if CPU/memory/disk > 80%
|
|
15
|
+
const HIGH_LATENCY_MS = 1000; // Warn if ping > 1000ms
|
|
16
|
+
/**
|
|
17
|
+
* Check host resources (CPU, memory, disk)
|
|
18
|
+
* Warns if any resource exceeds 80% usage
|
|
19
|
+
*/
|
|
20
|
+
export async function checkResources(host, sshService) {
|
|
21
|
+
try {
|
|
22
|
+
const resources = await sshService.getHostResources(host);
|
|
23
|
+
const issues = [];
|
|
24
|
+
const recommendations = [];
|
|
25
|
+
// Check CPU usage
|
|
26
|
+
if (resources.cpu.usagePercent > RESOURCE_THRESHOLD) {
|
|
27
|
+
issues.push(`CPU usage high: ${resources.cpu.usagePercent}%`);
|
|
28
|
+
recommendations.push("Identify CPU-intensive processes with `top` or `htop`");
|
|
29
|
+
}
|
|
30
|
+
// Check memory usage
|
|
31
|
+
if (resources.memory.usagePercent > RESOURCE_THRESHOLD) {
|
|
32
|
+
issues.push(`Memory usage high: ${resources.memory.usagePercent}%`);
|
|
33
|
+
recommendations.push("Check for memory leaks or reduce container memory limits");
|
|
34
|
+
}
|
|
35
|
+
// Check disk usage
|
|
36
|
+
for (const disk of resources.disk) {
|
|
37
|
+
if (disk.usagePercent > RESOURCE_THRESHOLD) {
|
|
38
|
+
issues.push(`Disk usage high on ${disk.mount}: ${disk.usagePercent}%`);
|
|
39
|
+
recommendations.push("Free up disk space or expand storage capacity");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (issues.length === 0) {
|
|
43
|
+
return {
|
|
44
|
+
status: "pass",
|
|
45
|
+
message: "Resources within normal thresholds",
|
|
46
|
+
details: `CPU: ${resources.cpu.usagePercent}%, Memory: ${resources.memory.usagePercent}%, Disk: ${resources.disk.map((d) => `${d.mount} ${d.usagePercent}%`).join(", ")}`
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
status: "warn",
|
|
51
|
+
message: issues.join("; "),
|
|
52
|
+
details: `Load: ${resources.loadAverage.join(", ")} | CPU: ${resources.cpu.cores} cores @ ${resources.cpu.usagePercent}% | Memory: ${resources.memory.usedMB}MB / ${resources.memory.totalMB}MB`,
|
|
53
|
+
recommendations: recommendations.join("\n")
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
logError(error, {
|
|
58
|
+
operation: "checkResources",
|
|
59
|
+
metadata: { host: host.name }
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
status: "fail",
|
|
63
|
+
message: "Failed to check resources",
|
|
64
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
65
|
+
recommendations: "Verify SSH connectivity and host availability"
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Check container health
|
|
71
|
+
* Finds exited or unhealthy containers
|
|
72
|
+
*/
|
|
73
|
+
export async function checkContainers(host, dockerService) {
|
|
74
|
+
try {
|
|
75
|
+
const containers = await dockerService.listContainers([host]);
|
|
76
|
+
const exited = containers.filter((c) => c.state === "exited");
|
|
77
|
+
const unhealthy = containers.filter((c) => c.status?.toLowerCase().includes("unhealthy"));
|
|
78
|
+
const issues = [];
|
|
79
|
+
const recommendations = [];
|
|
80
|
+
if (exited.length > 0) {
|
|
81
|
+
issues.push(`Found ${exited.length} exited containers: ${exited.map((c) => c.name).join(", ")}`);
|
|
82
|
+
recommendations.push("Check container logs with `docker logs <container>`");
|
|
83
|
+
recommendations.push("Restart containers with `docker start <container>`");
|
|
84
|
+
}
|
|
85
|
+
if (unhealthy.length > 0) {
|
|
86
|
+
issues.push(`Found ${unhealthy.length} unhealthy containers: ${unhealthy.map((c) => c.name).join(", ")}`);
|
|
87
|
+
recommendations.push("Review health check configuration in docker-compose.yml");
|
|
88
|
+
recommendations.push("Inspect container health with `docker inspect <container>`");
|
|
89
|
+
}
|
|
90
|
+
if (issues.length === 0) {
|
|
91
|
+
return {
|
|
92
|
+
status: "pass",
|
|
93
|
+
message: "All containers healthy",
|
|
94
|
+
details: `${containers.length} total containers, ${containers.filter((c) => c.state === "running").length} running`
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
status: "warn",
|
|
99
|
+
message: issues.join("; "),
|
|
100
|
+
details: exited.map((c) => `${c.name}: ${c.status}`).join("\n") +
|
|
101
|
+
"\n" +
|
|
102
|
+
unhealthy.map((c) => `${c.name}: ${c.status}`).join("\n"),
|
|
103
|
+
recommendations: recommendations.join("\n")
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
logError(error, {
|
|
108
|
+
operation: "checkContainers",
|
|
109
|
+
metadata: { host: host.name }
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
status: "fail",
|
|
113
|
+
message: "Failed to check containers",
|
|
114
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
115
|
+
recommendations: "Verify Docker daemon is running and accessible"
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Check system logs for error patterns
|
|
121
|
+
* Scans journalctl for recent errors/warnings
|
|
122
|
+
*/
|
|
123
|
+
export async function checkLogs(host, sshService) {
|
|
124
|
+
try {
|
|
125
|
+
// Get last 100 lines from journalctl (last 1 hour)
|
|
126
|
+
const logs = await sshService.executeSSHCommand(host, "journalctl", [
|
|
127
|
+
"--since",
|
|
128
|
+
"1 hour ago",
|
|
129
|
+
"--no-pager",
|
|
130
|
+
"-n",
|
|
131
|
+
"100"
|
|
132
|
+
]);
|
|
133
|
+
// Count error patterns (case-insensitive)
|
|
134
|
+
const errorPattern = /error|failed|fatal|critical/gi;
|
|
135
|
+
const warningPattern = /warn|warning/gi;
|
|
136
|
+
const errorMatches = logs.match(errorPattern) || [];
|
|
137
|
+
const warningMatches = logs.match(warningPattern) || [];
|
|
138
|
+
if (errorMatches.length === 0 && warningMatches.length === 0) {
|
|
139
|
+
return {
|
|
140
|
+
status: "pass",
|
|
141
|
+
message: "No critical errors in recent logs",
|
|
142
|
+
details: "Scanned last 100 log entries from past hour"
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
status: "warn",
|
|
147
|
+
message: "Found error patterns in logs",
|
|
148
|
+
details: `${errorMatches.length} error mentions, ${warningMatches.length} warning mentions in last hour`,
|
|
149
|
+
recommendations: "Review application logs with `journalctl -xe` or `docker logs <container>`"
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
logError(error, {
|
|
154
|
+
operation: "checkLogs",
|
|
155
|
+
metadata: { host: host.name }
|
|
156
|
+
});
|
|
157
|
+
return {
|
|
158
|
+
status: "fail",
|
|
159
|
+
message: "Failed to check logs",
|
|
160
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
161
|
+
recommendations: "Verify journalctl is available or check permissions"
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Check for zombie or defunct processes
|
|
167
|
+
* Detects processes that failed to clean up properly
|
|
168
|
+
*/
|
|
169
|
+
export async function checkProcesses(host, sshService) {
|
|
170
|
+
try {
|
|
171
|
+
// Find zombie/defunct processes
|
|
172
|
+
const output = await sshService.executeSSHCommand(host, "ps", ["aux"]);
|
|
173
|
+
// Parse for defunct/zombie processes - split on newlines
|
|
174
|
+
const lines = output.split("\n").filter((line) => line.trim().length > 0);
|
|
175
|
+
const zombies = lines.filter((line) => line.includes("defunct") ||
|
|
176
|
+
line.includes("zombie") ||
|
|
177
|
+
line.includes("Z+") ||
|
|
178
|
+
line.includes("<defunct>"));
|
|
179
|
+
if (zombies.length === 0) {
|
|
180
|
+
return {
|
|
181
|
+
status: "pass",
|
|
182
|
+
message: "No zombie or defunct processes",
|
|
183
|
+
details: "All processes in healthy state"
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
status: "warn",
|
|
188
|
+
message: `Found ${zombies.length} zombie/defunct processes`,
|
|
189
|
+
details: zombies.slice(0, 10).join("\n"),
|
|
190
|
+
recommendations: "Investigate parent processes with `ps -ef` and consider restarting affected services"
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
logError(error, {
|
|
195
|
+
operation: "checkProcesses",
|
|
196
|
+
metadata: { host: host.name }
|
|
197
|
+
});
|
|
198
|
+
return {
|
|
199
|
+
status: "fail",
|
|
200
|
+
message: "Failed to check processes",
|
|
201
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
202
|
+
recommendations: "Verify SSH access and ps command availability"
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Check Docker daemon health
|
|
208
|
+
* Verifies Docker API connectivity and version
|
|
209
|
+
*/
|
|
210
|
+
export async function checkDocker(host, dockerService) {
|
|
211
|
+
try {
|
|
212
|
+
const info = await dockerService.getDockerInfo(host);
|
|
213
|
+
return {
|
|
214
|
+
status: "pass",
|
|
215
|
+
message: "Docker daemon healthy",
|
|
216
|
+
details: `Version: ${info.dockerVersion}, API: ${info.apiVersion}, ${info.containersRunning}/${info.containersTotal} containers running`,
|
|
217
|
+
recommendations: undefined
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
logError(error, {
|
|
222
|
+
operation: "checkDocker",
|
|
223
|
+
metadata: { host: host.name }
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
status: "fail",
|
|
227
|
+
message: "Docker daemon unreachable",
|
|
228
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
229
|
+
recommendations: "Check Docker service status with `systemctl status docker`\nRestart Docker with `systemctl restart docker`"
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Check network connectivity
|
|
235
|
+
* Tests external connectivity and measures latency
|
|
236
|
+
*/
|
|
237
|
+
export async function checkNetwork(host, sshService) {
|
|
238
|
+
try {
|
|
239
|
+
// Ping google.com with 1 packet
|
|
240
|
+
const output = await sshService.executeSSHCommand(host, "ping", ["-c", "1", "google.com"]);
|
|
241
|
+
// Extract latency from ping output
|
|
242
|
+
const timeMatch = output.match(/time=(\d+\.?\d*)\s*ms/);
|
|
243
|
+
const latency = timeMatch ? parseFloat(timeMatch[1]) : 0;
|
|
244
|
+
if (latency > HIGH_LATENCY_MS) {
|
|
245
|
+
return {
|
|
246
|
+
status: "warn",
|
|
247
|
+
message: "Network latency high",
|
|
248
|
+
details: `Ping latency: ${latency.toFixed(1)}ms (threshold: ${HIGH_LATENCY_MS}ms)`,
|
|
249
|
+
recommendations: "Check network configuration and routing\nVerify DNS resolution with `dig google.com`"
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
status: "pass",
|
|
254
|
+
message: "Network connectivity OK",
|
|
255
|
+
details: `Ping latency: ${latency.toFixed(1)}ms`
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
logError(error, {
|
|
260
|
+
operation: "checkNetwork",
|
|
261
|
+
metadata: { host: host.name }
|
|
262
|
+
});
|
|
263
|
+
return {
|
|
264
|
+
status: "fail",
|
|
265
|
+
message: "Network check failed",
|
|
266
|
+
details: error instanceof Error ? error.message : "Unknown error",
|
|
267
|
+
recommendations: "Verify network connectivity and DNS resolution\nCheck firewall rules with `iptables -L`"
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/services/diagnostics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { ContainerExecResult, ContainerInfo, ContainerProcessList, ContainerStats, DockerRawContainerInfo, DockerRawContainerInspectInfo, HostConfig, LogEntry } from "../../types.js";
|
|
2
|
+
import type { ClientManager } from "./utils/client-manager.js";
|
|
3
|
+
/**
|
|
4
|
+
* Service for Docker container operations.
|
|
5
|
+
* Handles container lifecycle, monitoring, and execution.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ContainerService {
|
|
8
|
+
private clientManager;
|
|
9
|
+
constructor(clientManager: ClientManager);
|
|
10
|
+
private matchesContainerIdentifier;
|
|
11
|
+
/**
|
|
12
|
+
* List containers across multiple hosts with filtering and pagination.
|
|
13
|
+
*
|
|
14
|
+
* @param hosts - List of Docker hosts to query
|
|
15
|
+
* @param options - Filtering and pagination options
|
|
16
|
+
* @param options.state - Filter by container state
|
|
17
|
+
* @param options.nameFilter - Filter by container name (partial match)
|
|
18
|
+
* @param options.imageFilter - Filter by image name (partial match)
|
|
19
|
+
* @param options.labelFilter - Filter by label (format: "key=value")
|
|
20
|
+
* @param options.limit - Maximum number of containers to return
|
|
21
|
+
* @param options.offset - Number of containers to skip before returning results
|
|
22
|
+
* @returns Promise resolving to array of container information
|
|
23
|
+
*/
|
|
24
|
+
listContainers(hosts: HostConfig[], options?: {
|
|
25
|
+
state?: "all" | "running" | "stopped" | "paused";
|
|
26
|
+
nameFilter?: string;
|
|
27
|
+
imageFilter?: string;
|
|
28
|
+
labelFilter?: string;
|
|
29
|
+
limit?: number;
|
|
30
|
+
offset?: number;
|
|
31
|
+
}): Promise<ContainerInfo[]>;
|
|
32
|
+
/**
|
|
33
|
+
* List containers on a single host (internal helper).
|
|
34
|
+
*/
|
|
35
|
+
private listContainersOnHost;
|
|
36
|
+
/**
|
|
37
|
+
* Find which host a container is on.
|
|
38
|
+
* Performs parallel scan across hosts for optimal performance.
|
|
39
|
+
*
|
|
40
|
+
* Note: For cache-optimized lookups, use DockerService.findContainerHost() with
|
|
41
|
+
* ContainerHostMapCache instead. The cache requires client-provider capability
|
|
42
|
+
* and is integrated at the facade level.
|
|
43
|
+
*
|
|
44
|
+
* @param containerId - Container ID, name, or ID prefix
|
|
45
|
+
* @param hosts - List of hosts to search
|
|
46
|
+
* @returns Host and container info if found, null otherwise
|
|
47
|
+
*/
|
|
48
|
+
findContainerHost(containerId: string, hosts: HostConfig[]): Promise<{
|
|
49
|
+
host: HostConfig;
|
|
50
|
+
container: DockerRawContainerInfo;
|
|
51
|
+
} | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Perform action on container.
|
|
54
|
+
*
|
|
55
|
+
* @param containerId - Container ID or name
|
|
56
|
+
* @param action - Action to perform
|
|
57
|
+
* @param host - Host configuration
|
|
58
|
+
*/
|
|
59
|
+
containerAction(containerId: string, action: "start" | "stop" | "restart" | "pause" | "unpause", host: HostConfig): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Get container by ID or name.
|
|
62
|
+
*/
|
|
63
|
+
private getContainer;
|
|
64
|
+
/**
|
|
65
|
+
* Get container logs.
|
|
66
|
+
*
|
|
67
|
+
* @param containerId - Container ID or name
|
|
68
|
+
* @param host - Host configuration
|
|
69
|
+
* @param options - Log filtering options
|
|
70
|
+
* @returns Promise resolving to array of log entries
|
|
71
|
+
*/
|
|
72
|
+
getContainerLogs(containerId: string, host: HostConfig, options?: {
|
|
73
|
+
lines?: number;
|
|
74
|
+
since?: string;
|
|
75
|
+
until?: string;
|
|
76
|
+
stream?: "all" | "stdout" | "stderr";
|
|
77
|
+
}): Promise<LogEntry[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Get container stats.
|
|
80
|
+
*
|
|
81
|
+
* @param containerId - Container ID or name
|
|
82
|
+
* @param host - Host configuration
|
|
83
|
+
* @param containerName - Optional container name (avoids redundant inspect() call)
|
|
84
|
+
* @returns Promise resolving to container resource usage stats
|
|
85
|
+
*/
|
|
86
|
+
getContainerStats(containerId: string, host: HostConfig, containerName?: string): Promise<ContainerStats>;
|
|
87
|
+
/**
|
|
88
|
+
* Execute a command inside a container.
|
|
89
|
+
*
|
|
90
|
+
* @param containerId - Container ID or name
|
|
91
|
+
* @param host - Host configuration
|
|
92
|
+
* @param options - Execution options
|
|
93
|
+
* @param options.command - Shell command to execute
|
|
94
|
+
* @param options.user - Optional user to run as
|
|
95
|
+
* @param options.workdir - Optional working directory
|
|
96
|
+
* @param options.timeout - Optional timeout in ms (default 30s, max 5min)
|
|
97
|
+
* @returns Promise resolving to stdout, stderr, and exit code
|
|
98
|
+
* @throws Error if timeout exceeded or buffer limit exceeded
|
|
99
|
+
*/
|
|
100
|
+
execContainer(containerId: string, host: HostConfig, options: {
|
|
101
|
+
command: string;
|
|
102
|
+
user?: string;
|
|
103
|
+
workdir?: string;
|
|
104
|
+
timeout?: number;
|
|
105
|
+
}): Promise<ContainerExecResult>;
|
|
106
|
+
/**
|
|
107
|
+
* List running processes inside a container.
|
|
108
|
+
*
|
|
109
|
+
* @param containerId - Container ID or name
|
|
110
|
+
* @param host - Host configuration
|
|
111
|
+
* @returns Promise resolving to process list with titles and data
|
|
112
|
+
*/
|
|
113
|
+
getContainerProcesses(containerId: string, host: HostConfig): Promise<ContainerProcessList>;
|
|
114
|
+
/**
|
|
115
|
+
* Inspect a container to get detailed information.
|
|
116
|
+
*
|
|
117
|
+
* @param containerId - Container ID or name
|
|
118
|
+
* @param host - Host configuration
|
|
119
|
+
* @returns Promise resolving to Docker container inspection data
|
|
120
|
+
*/
|
|
121
|
+
inspectContainer(containerId: string, host: HostConfig): Promise<DockerRawContainerInspectInfo>;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=container-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-service.d.ts","sourceRoot":"","sources":["../../../src/services/docker/container-service.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,6BAA6B,EAC7B,UAAU,EACV,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAIxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAQ/D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD,OAAO,CAAC,0BAA0B;IAalC;;;;;;;;;;;;OAYG;IACG,cAAc,CAClB,KAAK,EAAE,UAAU,EAAE,EACnB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;QACjD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GACL,OAAO,CAAC,aAAa,EAAE,CAAC;IA0B3B;;OAEG;YACW,oBAAoB;IAqElC;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,UAAU,EAAE,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC;QAAC,SAAS,EAAE,sBAAsB,CAAA;KAAE,GAAG,IAAI,CAAC;IA8C1E;;;;;;OAMG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,EAC1D,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;YACW,YAAY;IAK1B;;;;;;;OAOG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;KACjC,GACL,OAAO,CAAC,QAAQ,EAAE,CAAC;IA8BtB;;;;;;;OAOG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC;IA4D1B;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,mBAAmB,CAAC;IAyB/B;;;;;;OAMG;IACG,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,oBAAoB,CAAC;IAUhC;;;;;;OAMG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,6BAA6B,CAAC;CAI1C"}
|