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
package/dist/constants.d.ts
CHANGED
|
@@ -5,19 +5,25 @@ export declare const DEFAULT_LOG_LINES = 50;
|
|
|
5
5
|
export declare const MAX_LOG_LINES = 500;
|
|
6
6
|
export declare const API_TIMEOUT = 30000;
|
|
7
7
|
export declare const STATS_TIMEOUT = 5000;
|
|
8
|
+
export declare const DEFAULT_COMPOSE_SCAN_CONCURRENCY = 10;
|
|
9
|
+
export declare const DEFAULT_CONTAINER_MAP_CONCURRENCY = 5;
|
|
10
|
+
export declare const PROGRESS_LOG_HOST_THRESHOLD = 5;
|
|
11
|
+
export declare const PROGRESS_LOG_CONTAINER_THRESHOLD = 50;
|
|
8
12
|
export declare const DEFAULT_DOCKER_SOCKET = "/var/run/docker.sock";
|
|
9
|
-
export declare const ENV_HOSTS_CONFIG = "
|
|
10
|
-
export declare const ENV_DEFAULT_HOST = "
|
|
13
|
+
export declare const ENV_HOSTS_CONFIG = "SYNAPSE_HOSTS_CONFIG";
|
|
14
|
+
export declare const ENV_DEFAULT_HOST = "SYNAPSE_DEFAULT_HOST";
|
|
11
15
|
export declare const DEFAULT_MAX_FILE_SIZE = 1048576;
|
|
12
16
|
export declare const MAX_FILE_SIZE_LIMIT = 10485760;
|
|
13
17
|
export declare const DEFAULT_COMMAND_TIMEOUT = 30000;
|
|
14
18
|
export declare const MAX_COMMAND_TIMEOUT = 300000;
|
|
19
|
+
export declare const DEFAULT_EXEC_TIMEOUT = 30000;
|
|
20
|
+
export declare const MAX_EXEC_TIMEOUT = 300000;
|
|
21
|
+
export declare const DEFAULT_EXEC_MAX_BUFFER = 10485760;
|
|
15
22
|
export declare const DEFAULT_TREE_DEPTH = 3;
|
|
16
23
|
export declare const MAX_TREE_DEPTH = 10;
|
|
17
24
|
export declare const DEFAULT_FIND_LIMIT = 100;
|
|
18
25
|
export declare const MAX_FIND_LIMIT = 1000;
|
|
19
26
|
export declare const DEFAULT_DIFF_CONTEXT_LINES = 3;
|
|
20
27
|
export declare const MAX_DIFF_CONTEXT_LINES = 50;
|
|
21
|
-
export declare const ALLOWED_COMMANDS:
|
|
22
|
-
export declare const ENV_ALLOW_ANY_COMMAND = "HOMELAB_ALLOW_ANY_COMMAND";
|
|
28
|
+
export declare const ALLOWED_COMMANDS: ReadonlySet<string>;
|
|
23
29
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,QAAQ,CAAC;AAGrC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,SAAS,MAAM,CAAC;AAG7B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAGjC,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,eAAO,MAAM,aAAa,OAAO,CAAC;AAGlC,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAG5D,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAKvD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,cAAc,KAAK,CAAC;AAGjC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,cAAc,OAAO,CAAC;AAGnC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,QAAQ,CAAC;AAGrC,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,SAAS,MAAM,CAAC;AAG7B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,aAAa,MAAM,CAAC;AAGjC,eAAO,MAAM,WAAW,QAAQ,CAAC;AACjC,eAAO,MAAM,aAAa,OAAO,CAAC;AAGlC,eAAO,MAAM,gCAAgC,KAAK,CAAC;AACnD,eAAO,MAAM,iCAAiC,IAAI,CAAC;AAGnD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,gCAAgC,KAAK,CAAC;AAGnD,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAG5D,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AACvD,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAKvD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAG5C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAGvC,eAAO,MAAM,uBAAuB,WAAW,CAAC;AAGhD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,cAAc,KAAK,CAAC;AAGjC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,cAAc,OAAO,CAAC;AAGnC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAIzC,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAuBhD,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -9,11 +9,17 @@ export const MAX_LOG_LINES = 500;
|
|
|
9
9
|
// Timeout settings (ms)
|
|
10
10
|
export const API_TIMEOUT = 30000;
|
|
11
11
|
export const STATS_TIMEOUT = 5000;
|
|
12
|
+
// Concurrency limits for batch operations
|
|
13
|
+
export const DEFAULT_COMPOSE_SCAN_CONCURRENCY = 10; // Max concurrent compose file parsing operations
|
|
14
|
+
export const DEFAULT_CONTAINER_MAP_CONCURRENCY = 5; // Max concurrent container host mapping operations
|
|
15
|
+
// Progress logging thresholds
|
|
16
|
+
export const PROGRESS_LOG_HOST_THRESHOLD = 5; // Log when querying >= 5 hosts
|
|
17
|
+
export const PROGRESS_LOG_CONTAINER_THRESHOLD = 50; // Log when processing >= 50 containers
|
|
12
18
|
// Default Docker socket path
|
|
13
19
|
export const DEFAULT_DOCKER_SOCKET = "/var/run/docker.sock";
|
|
14
20
|
// Environment variable names for config
|
|
15
|
-
export const ENV_HOSTS_CONFIG = "
|
|
16
|
-
export const ENV_DEFAULT_HOST = "
|
|
21
|
+
export const ENV_HOSTS_CONFIG = "SYNAPSE_HOSTS_CONFIG";
|
|
22
|
+
export const ENV_DEFAULT_HOST = "SYNAPSE_DEFAULT_HOST";
|
|
17
23
|
// ===== Scout File Operations Constants =====
|
|
18
24
|
// File size limits (bytes)
|
|
19
25
|
export const DEFAULT_MAX_FILE_SIZE = 1048576; // 1MB
|
|
@@ -21,6 +27,11 @@ export const MAX_FILE_SIZE_LIMIT = 10485760; // 10MB
|
|
|
21
27
|
// Command timeout limits (milliseconds)
|
|
22
28
|
export const DEFAULT_COMMAND_TIMEOUT = 30000; // 30s
|
|
23
29
|
export const MAX_COMMAND_TIMEOUT = 300000; // 300s (5 min)
|
|
30
|
+
// Container exec timeout limits (milliseconds)
|
|
31
|
+
export const DEFAULT_EXEC_TIMEOUT = 30000; // 30s
|
|
32
|
+
export const MAX_EXEC_TIMEOUT = 300000; // 300s (5 min)
|
|
33
|
+
// Container exec buffer limits (bytes)
|
|
34
|
+
export const DEFAULT_EXEC_MAX_BUFFER = 10485760; // 10MB per stream
|
|
24
35
|
// Tree depth limits
|
|
25
36
|
export const DEFAULT_TREE_DEPTH = 3;
|
|
26
37
|
export const MAX_TREE_DEPTH = 10;
|
|
@@ -30,8 +41,9 @@ export const MAX_FIND_LIMIT = 1000;
|
|
|
30
41
|
// Diff context lines limits
|
|
31
42
|
export const DEFAULT_DIFF_CONTEXT_LINES = 3;
|
|
32
43
|
export const MAX_DIFF_CONTEXT_LINES = 50;
|
|
33
|
-
//
|
|
34
|
-
|
|
44
|
+
// SECURITY (CWE-284): Immutable command allowlist for exec subaction (read-only operations)
|
|
45
|
+
// Object.freeze prevents runtime modification of the allowlist
|
|
46
|
+
export const ALLOWED_COMMANDS = Object.freeze(new Set([
|
|
35
47
|
"cat",
|
|
36
48
|
"head",
|
|
37
49
|
"tail",
|
|
@@ -51,8 +63,6 @@ export const ALLOWED_COMMANDS = new Set([
|
|
|
51
63
|
"pwd",
|
|
52
64
|
"hostname",
|
|
53
65
|
"uptime",
|
|
54
|
-
"whoami"
|
|
55
|
-
]);
|
|
56
|
-
// Environment variable to disable command allowlist
|
|
57
|
-
export const ENV_ALLOW_ANY_COMMAND = "HOMELAB_ALLOW_ANY_COMMAND";
|
|
66
|
+
"whoami",
|
|
67
|
+
]));
|
|
58
68
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAE5D,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,8CAA8C;AAE9C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,CAAC,MAAM;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,OAAO;AAEpD,wCAAwC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,MAAM;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,eAAe;AAE1D,oBAAoB;AACpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,yBAAyB;AACzB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAEjC,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAElC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC,CAAC,iDAAiD;AACrG,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,CAAC,mDAAmD;AAEvG,8BAA8B;AAC9B,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,CAAC,+BAA+B;AAC7E,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC,CAAC,uCAAuC;AAE3F,6BAA6B;AAC7B,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAE5D,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,8CAA8C;AAE9C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,CAAC,MAAM;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,OAAO;AAEpD,wCAAwC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,MAAM;AACpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,eAAe;AAE1D,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,MAAM;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,eAAe;AAEvD,uCAAuC;AACvC,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,CAAC,kBAAkB;AAEnE,oBAAoB;AACpB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC,4FAA4F;AAC5F,+DAA+D;AAC/D,MAAM,CAAC,MAAM,gBAAgB,GAAwB,MAAM,CAAC,MAAM,CAChE,IAAI,GAAG,CAAC;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,UAAU;IACV,QAAQ;IACR,QAAQ;CACT,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ApplicationEvent, EventListener, EventType } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Lightweight type-safe event emitter for application events.
|
|
4
|
+
*
|
|
5
|
+
* Provides pub-sub pattern for cross-cutting concerns:
|
|
6
|
+
* - Cache invalidation coordination
|
|
7
|
+
* - Audit logging for destructive operations
|
|
8
|
+
* - Metrics collection
|
|
9
|
+
* - Event-driven side effects
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const emitter = new EventEmitter();
|
|
14
|
+
*
|
|
15
|
+
* // Subscribe to specific event type
|
|
16
|
+
* emitter.on("cache_invalidated", (event) => {
|
|
17
|
+
* console.log(`Cache ${event.cache} invalidated: ${event.reason}`);
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Emit event
|
|
21
|
+
* emitter.emit({
|
|
22
|
+
* type: "cache_invalidated",
|
|
23
|
+
* cache: "container_host_map",
|
|
24
|
+
* reason: "Container state changed",
|
|
25
|
+
* timestamp: new Date().toISOString()
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class EventEmitter {
|
|
30
|
+
private listeners;
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to specific event type
|
|
33
|
+
* @param eventType - Event type to listen for
|
|
34
|
+
* @param listener - Callback function to execute when event occurs
|
|
35
|
+
* @returns Unsubscribe function
|
|
36
|
+
*/
|
|
37
|
+
on<T extends ApplicationEvent>(eventType: T["type"], listener: EventListener<T>): () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Subscribe to event type, auto-unsubscribe after first occurrence
|
|
40
|
+
* @param eventType - Event type to listen for
|
|
41
|
+
* @param listener - Callback function to execute once
|
|
42
|
+
* @returns Unsubscribe function
|
|
43
|
+
*/
|
|
44
|
+
once<T extends ApplicationEvent>(eventType: T["type"], listener: EventListener<T>): () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Emit event to all registered listeners for that event type
|
|
47
|
+
* Listeners are called asynchronously but errors are caught and logged
|
|
48
|
+
* @param event - Event payload to emit
|
|
49
|
+
*/
|
|
50
|
+
emit(event: ApplicationEvent): void;
|
|
51
|
+
/**
|
|
52
|
+
* Remove all listeners for specific event type, or all listeners if no type specified
|
|
53
|
+
* @param eventType - Optional event type to clear listeners for
|
|
54
|
+
*/
|
|
55
|
+
removeAllListeners(eventType?: EventType): void;
|
|
56
|
+
/**
|
|
57
|
+
* Get count of listeners for specific event type
|
|
58
|
+
* @param eventType - Event type to count listeners for
|
|
59
|
+
* @returns Number of registered listeners
|
|
60
|
+
*/
|
|
61
|
+
listenerCount(eventType: EventType): number;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE7E;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAiD;IAElE;;;;;OAKG;IACH,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAmB5F;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAa9F;;;;OAIG;IACH,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAenC;;;OAGG;IACH,kBAAkB,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IAQ/C;;;;OAIG;IACH,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;CAG5C"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// src/events/emitter.ts
|
|
2
|
+
import { logError } from "../utils/errors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Lightweight type-safe event emitter for application events.
|
|
5
|
+
*
|
|
6
|
+
* Provides pub-sub pattern for cross-cutting concerns:
|
|
7
|
+
* - Cache invalidation coordination
|
|
8
|
+
* - Audit logging for destructive operations
|
|
9
|
+
* - Metrics collection
|
|
10
|
+
* - Event-driven side effects
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const emitter = new EventEmitter();
|
|
15
|
+
*
|
|
16
|
+
* // Subscribe to specific event type
|
|
17
|
+
* emitter.on("cache_invalidated", (event) => {
|
|
18
|
+
* console.log(`Cache ${event.cache} invalidated: ${event.reason}`);
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* // Emit event
|
|
22
|
+
* emitter.emit({
|
|
23
|
+
* type: "cache_invalidated",
|
|
24
|
+
* cache: "container_host_map",
|
|
25
|
+
* reason: "Container state changed",
|
|
26
|
+
* timestamp: new Date().toISOString()
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export class EventEmitter {
|
|
31
|
+
listeners = new Map();
|
|
32
|
+
/**
|
|
33
|
+
* Subscribe to specific event type
|
|
34
|
+
* @param eventType - Event type to listen for
|
|
35
|
+
* @param listener - Callback function to execute when event occurs
|
|
36
|
+
* @returns Unsubscribe function
|
|
37
|
+
*/
|
|
38
|
+
on(eventType, listener) {
|
|
39
|
+
if (!this.listeners.has(eventType)) {
|
|
40
|
+
this.listeners.set(eventType, new Set());
|
|
41
|
+
}
|
|
42
|
+
const listenerSet = this.listeners.get(eventType);
|
|
43
|
+
// Cast is safe: we partition listeners by eventType, so when emitting
|
|
44
|
+
// we only call listeners registered for that specific event type.
|
|
45
|
+
const wrappedListener = (event) => listener(event);
|
|
46
|
+
if (listenerSet) {
|
|
47
|
+
listenerSet.add(wrappedListener);
|
|
48
|
+
}
|
|
49
|
+
// Return unsubscribe function
|
|
50
|
+
return () => {
|
|
51
|
+
this.listeners.get(eventType)?.delete(wrappedListener);
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Subscribe to event type, auto-unsubscribe after first occurrence
|
|
56
|
+
* @param eventType - Event type to listen for
|
|
57
|
+
* @param listener - Callback function to execute once
|
|
58
|
+
* @returns Unsubscribe function
|
|
59
|
+
*/
|
|
60
|
+
once(eventType, listener) {
|
|
61
|
+
let called = false;
|
|
62
|
+
const wrappedListener = (event) => {
|
|
63
|
+
if (called)
|
|
64
|
+
return;
|
|
65
|
+
called = true;
|
|
66
|
+
unsubscribe();
|
|
67
|
+
return listener(event);
|
|
68
|
+
};
|
|
69
|
+
const unsubscribe = this.on(eventType, wrappedListener);
|
|
70
|
+
return unsubscribe;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Emit event to all registered listeners for that event type
|
|
74
|
+
* Listeners are called asynchronously but errors are caught and logged
|
|
75
|
+
* @param event - Event payload to emit
|
|
76
|
+
*/
|
|
77
|
+
emit(event) {
|
|
78
|
+
const listeners = this.listeners.get(event.type);
|
|
79
|
+
if (!listeners || listeners.size === 0)
|
|
80
|
+
return;
|
|
81
|
+
// Execute all listeners asynchronously
|
|
82
|
+
// Errors in listeners don't block other listeners or the emitter
|
|
83
|
+
for (const listener of listeners) {
|
|
84
|
+
Promise.resolve()
|
|
85
|
+
.then(() => listener(event))
|
|
86
|
+
.catch((error) => {
|
|
87
|
+
logError(error, { operation: `EventEmitter:${event.type}` });
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Remove all listeners for specific event type, or all listeners if no type specified
|
|
93
|
+
* @param eventType - Optional event type to clear listeners for
|
|
94
|
+
*/
|
|
95
|
+
removeAllListeners(eventType) {
|
|
96
|
+
if (eventType) {
|
|
97
|
+
this.listeners.delete(eventType);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
this.listeners.clear();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get count of listeners for specific event type
|
|
105
|
+
* @param eventType - Event type to count listeners for
|
|
106
|
+
* @returns Number of registered listeners
|
|
107
|
+
*/
|
|
108
|
+
listenerCount(eventType) {
|
|
109
|
+
return this.listeners.get(eventType)?.size ?? 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=emitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/events/emitter.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG9C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,YAAY;IACf,SAAS,GAAuC,IAAI,GAAG,EAAE,CAAC;IAElE;;;;;OAKG;IACH,EAAE,CAA6B,SAAoB,EAAE,QAA0B;QAC7E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,sEAAsE;QACtE,kEAAkE;QAClE,MAAM,eAAe,GAAkB,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAU,CAAC,CAAC;QACvE,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QAED,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAA6B,SAAoB,EAAE,QAA0B;QAC/E,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,eAAe,GAAqB,CAAC,KAAK,EAAE,EAAE;YAClD,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,WAAW,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACxD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAC,KAAuB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAE/C,uCAAuC;QACvC,iEAAiE;QACjE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,OAAO,EAAE;iBACd,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,QAAQ,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,SAAqB;QACtC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,SAAoB;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { EventEmitter } from "./emitter.js";
|
|
2
|
+
export type { ApplicationEvent, CacheInvalidatedEvent, ComposeOperationEvent, ContainerStateChangedEvent, DestructiveOperationEvent, EventListener, EventType, ImageOperationEvent, } from "./types.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,aAAa,EACb,SAAS,EACT,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event payload types for application events
|
|
3
|
+
*/
|
|
4
|
+
export interface CacheInvalidatedEvent {
|
|
5
|
+
type: "cache_invalidated";
|
|
6
|
+
cache: "container_host_map" | "compose_project" | "host_config";
|
|
7
|
+
reason: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ContainerStateChangedEvent {
|
|
11
|
+
type: "container_state_changed";
|
|
12
|
+
containerId: string;
|
|
13
|
+
action: "start" | "stop" | "restart" | "pause" | "unpause" | "remove";
|
|
14
|
+
host: string;
|
|
15
|
+
timestamp: string;
|
|
16
|
+
}
|
|
17
|
+
export interface ComposeOperationEvent {
|
|
18
|
+
type: "compose_operation";
|
|
19
|
+
operation: "up" | "down" | "restart" | "build" | "pull" | "recreate";
|
|
20
|
+
project: string;
|
|
21
|
+
host: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DestructiveOperationEvent {
|
|
25
|
+
type: "destructive_operation";
|
|
26
|
+
operation: string;
|
|
27
|
+
target: string;
|
|
28
|
+
host: string;
|
|
29
|
+
confirmed: boolean;
|
|
30
|
+
timestamp: string;
|
|
31
|
+
}
|
|
32
|
+
export interface ImageOperationEvent {
|
|
33
|
+
type: "image_operation";
|
|
34
|
+
operation: "pull" | "build" | "remove" | "prune";
|
|
35
|
+
image?: string;
|
|
36
|
+
host: string;
|
|
37
|
+
timestamp: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Union type of all application events
|
|
41
|
+
*/
|
|
42
|
+
export type ApplicationEvent = CacheInvalidatedEvent | ContainerStateChangedEvent | ComposeOperationEvent | DestructiveOperationEvent | ImageOperationEvent;
|
|
43
|
+
/**
|
|
44
|
+
* Event listener function type
|
|
45
|
+
*/
|
|
46
|
+
export type EventListener<T extends ApplicationEvent = ApplicationEvent> = (event: T) => void | Promise<void>;
|
|
47
|
+
/**
|
|
48
|
+
* Event type discriminator for type-safe filtering
|
|
49
|
+
*/
|
|
50
|
+
export type EventType = ApplicationEvent["type"];
|
|
51
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAChE,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,yBAAyB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,0BAA0B,GAC1B,qBAAqB,GACrB,yBAAyB,GACzB,mBAAmB,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,CACzE,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"AAAA,sBAAsB"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Docker Compose formatting utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent markdown formatting for Compose project
|
|
5
|
+
* listing and status display.
|
|
6
|
+
* Follows docs/STYLE.md canonical output templates.
|
|
7
|
+
*/
|
|
8
|
+
import type { ComposeProject } from "../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Format compose project list as markdown following STYLE.md section 7.4
|
|
11
|
+
*/
|
|
12
|
+
export declare function formatComposeListMarkdown(projects: ComposeProject[], host: string, total?: number, offset?: number, hasMore?: boolean, filters?: Record<string, string | number | boolean>): string;
|
|
13
|
+
/**
|
|
14
|
+
* Format compose up operation result.
|
|
15
|
+
*
|
|
16
|
+
* Follows STYLE.md sections:
|
|
17
|
+
* - 3.1: Title format "Operation for project on host"
|
|
18
|
+
* - 3.2: Summary line with service count
|
|
19
|
+
* - 4.1: Canonical ● symbol for active services
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* formatComposeUpMarkdown(project, "host1", { servicesStarted: 3 })
|
|
23
|
+
* // Returns:
|
|
24
|
+
* // Compose Up for myapp on host1
|
|
25
|
+
* // Services started: 3
|
|
26
|
+
* //
|
|
27
|
+
* // ● myapp (3 services)
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatComposeUpMarkdown(projectData: ComposeProject, host: string, options: {
|
|
30
|
+
servicesStarted: number;
|
|
31
|
+
}): string;
|
|
32
|
+
/**
|
|
33
|
+
* Format compose project status as markdown following STYLE.md section 8.3
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatComposeStatusMarkdown(project: ComposeProject, totalServices?: number, offset?: number, hasMore?: boolean): string;
|
|
36
|
+
/**
|
|
37
|
+
* Format compose down operation result.
|
|
38
|
+
*
|
|
39
|
+
* Follows STYLE.md sections:
|
|
40
|
+
* - 3.1: Title format "Operation for project on host"
|
|
41
|
+
* - 3.2: Summary line with counts
|
|
42
|
+
* - 4.1: Canonical ○ symbol for stopped services
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* formatComposeDownMarkdown(project, "host1", { servicesStopped: 3, volumesRemoved: 2 })
|
|
46
|
+
* // Returns:
|
|
47
|
+
* // Compose Down for myapp on host1
|
|
48
|
+
* // Services stopped: 3 | Volumes removed: 2
|
|
49
|
+
* //
|
|
50
|
+
* // ○ myapp (3 services stopped)
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatComposeDownMarkdown(projectData: ComposeProject, host: string, options: {
|
|
53
|
+
servicesStopped: number;
|
|
54
|
+
volumesRemoved?: number;
|
|
55
|
+
}): string;
|
|
56
|
+
/**
|
|
57
|
+
* Format compose restart operation result.
|
|
58
|
+
*
|
|
59
|
+
* Follows STYLE.md sections:
|
|
60
|
+
* - 3.1: Title format "Operation for project on host"
|
|
61
|
+
* - 3.2: Summary line with count
|
|
62
|
+
* - 4.1: Canonical ◐ symbol for restarting services
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* formatComposeRestartMarkdown(project, "host1", { servicesRestarted: 3 })
|
|
66
|
+
* // Returns:
|
|
67
|
+
* // Compose Restart for myapp on host1
|
|
68
|
+
* // Services restarted: 3
|
|
69
|
+
* //
|
|
70
|
+
* // ◐ myapp (3 services restarted)
|
|
71
|
+
*/
|
|
72
|
+
export declare function formatComposeRestartMarkdown(projectData: ComposeProject, host: string, options: {
|
|
73
|
+
servicesRestarted: number;
|
|
74
|
+
}): string;
|
|
75
|
+
/**
|
|
76
|
+
* Format compose recreate operation result.
|
|
77
|
+
*
|
|
78
|
+
* Follows STYLE.md sections:
|
|
79
|
+
* - 3.1: Title format "Operation for project on host"
|
|
80
|
+
* - 3.2: Summary line with count
|
|
81
|
+
* - 4.1: Canonical ● symbol (recreated = running)
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* formatComposeRecreateMarkdown(project, "host1", { servicesRecreated: 3 })
|
|
85
|
+
* // Returns:
|
|
86
|
+
* // Compose Recreate for myapp on host1
|
|
87
|
+
* // Services recreated: 3
|
|
88
|
+
* //
|
|
89
|
+
* // ● myapp (3 services recreated)
|
|
90
|
+
*/
|
|
91
|
+
export declare function formatComposeRecreateMarkdown(projectData: ComposeProject, host: string, options: {
|
|
92
|
+
servicesRecreated: number;
|
|
93
|
+
}): string;
|
|
94
|
+
/**
|
|
95
|
+
* Format compose pull operation result.
|
|
96
|
+
*
|
|
97
|
+
* Follows STYLE.md sections:
|
|
98
|
+
* - 3.1: Title format "Operation for project on host"
|
|
99
|
+
* - 3.2: Summary with counts (conditional parts)
|
|
100
|
+
* - 4.1: Canonical ✓ symbol for success
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* formatComposePullMarkdown(project, "host1", { imagesPulled: 2, imagesUpToDate: 1 })
|
|
104
|
+
* // Returns:
|
|
105
|
+
* // Compose Pull for myapp on host1
|
|
106
|
+
* // Images pulled: 2 | Up-to-date: 1
|
|
107
|
+
* //
|
|
108
|
+
* // ✓ myapp (2 images updated, 1 already current)
|
|
109
|
+
*/
|
|
110
|
+
export declare function formatComposePullMarkdown(projectData: ComposeProject, host: string, options: {
|
|
111
|
+
imagesPulled: number;
|
|
112
|
+
imagesUpToDate: number;
|
|
113
|
+
}): string;
|
|
114
|
+
/**
|
|
115
|
+
* Format compose build operation result.
|
|
116
|
+
*
|
|
117
|
+
* Follows STYLE.md sections:
|
|
118
|
+
* - 3.1: Title format "Operation for project on host"
|
|
119
|
+
* - 3.2: Summary with counts and optional duration
|
|
120
|
+
* - 4.1: Canonical ✓ symbol for success
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* formatComposeBuildMarkdown(project, "host1", { servicesBuilt: 2, duration: 45 })
|
|
124
|
+
* // Returns:
|
|
125
|
+
* // Compose Build for myapp on host1
|
|
126
|
+
* // Services built: 2 | Duration: 45s
|
|
127
|
+
* //
|
|
128
|
+
* // ✓ myapp (2 services built in 45s)
|
|
129
|
+
*/
|
|
130
|
+
export declare function formatComposeBuildMarkdown(projectData: ComposeProject, host: string, options: {
|
|
131
|
+
servicesBuilt: number;
|
|
132
|
+
duration?: number;
|
|
133
|
+
}): string;
|
|
134
|
+
/**
|
|
135
|
+
* Format compose logs operation result.
|
|
136
|
+
*
|
|
137
|
+
* Follows STYLE.md sections:
|
|
138
|
+
* - 3.1: Title format "Container Logs for project on host"
|
|
139
|
+
* - 3.2: Summary with counts and flags
|
|
140
|
+
* - 7.5: Preview format (first 5 + last 5) for outputs >10 lines
|
|
141
|
+
* - 4.1: Stream labels [stdout]/[stderr]
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* formatComposeLogsMarkdown(project, "host1", {
|
|
145
|
+
* logs: [{ stream: 'stdout', message: 'line 1' }],
|
|
146
|
+
* requested: 10,
|
|
147
|
+
* truncated: false,
|
|
148
|
+
* follow: false
|
|
149
|
+
* })
|
|
150
|
+
* // Returns:
|
|
151
|
+
* // Container Logs for myapp on host1
|
|
152
|
+
* // Lines returned: 1 (requested: 10) | truncated: no | follow: no
|
|
153
|
+
* //
|
|
154
|
+
* // [stdout] line 1
|
|
155
|
+
*/
|
|
156
|
+
export declare function formatComposeLogsMarkdown(projectData: ComposeProject, host: string, options: {
|
|
157
|
+
logs: Array<{
|
|
158
|
+
stream: "stdout" | "stderr";
|
|
159
|
+
message: string;
|
|
160
|
+
}>;
|
|
161
|
+
requested: number;
|
|
162
|
+
truncated: boolean;
|
|
163
|
+
follow: boolean;
|
|
164
|
+
}): string;
|
|
165
|
+
/**
|
|
166
|
+
* Format compose refresh/discovery operation result.
|
|
167
|
+
*
|
|
168
|
+
* Follows STYLE.md sections:
|
|
169
|
+
* - 3.1: Title format "Operation on host"
|
|
170
|
+
* - 3.2: Summary with counts
|
|
171
|
+
* - 4.1: Canonical ✓ symbol for success
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* formatComposeRefreshMarkdown("host1", { discovered: 2, updated: 1 })
|
|
175
|
+
* // Returns:
|
|
176
|
+
* // Compose Refresh on host1
|
|
177
|
+
* // Discovered: 2 | Updated: 1
|
|
178
|
+
* //
|
|
179
|
+
* // ✓ Compose projects refreshed (2 discovered, 1 updated)
|
|
180
|
+
*/
|
|
181
|
+
export declare function formatComposeRefreshMarkdown(host: string, options: {
|
|
182
|
+
discovered: number;
|
|
183
|
+
updated: number;
|
|
184
|
+
}): string;
|
|
185
|
+
//# sourceMappingURL=compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/formatters/compose.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkBlD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAClD,MAAM,CAuFR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,GACnC,MAAM,CAYR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,cAAc,EACvB,aAAa,CAAC,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,CAyER;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,CAYR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACrC,MAAM,CAYR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACxD,MAAM,CAoBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,MAAM,CAqBR;AAKD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,IAAI,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,GACA,MAAM,CA2BR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/C,MAAM,CAYR"}
|