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,76 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { HostConfig } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Zod schema for validating HostConfig objects from config files and environment variables.
|
|
5
|
+
*
|
|
6
|
+
* Security: Prevents CWE-20 (Improper Input Validation) by validating all config fields
|
|
7
|
+
* before use. This prevents injection attacks via malformed config files.
|
|
8
|
+
* @see https://cwe.mitre.org/data/definitions/20.html
|
|
9
|
+
*
|
|
10
|
+
* Validates:
|
|
11
|
+
* - name: Must match safe identifier pattern (alphanumeric, dots, underscores, hyphens)
|
|
12
|
+
* - host: Required string (hostname or IP)
|
|
13
|
+
* - port: Optional number between 1-65535
|
|
14
|
+
* - protocol: Must be one of: "http", "https", "ssh"
|
|
15
|
+
* - sshUser: Optional string
|
|
16
|
+
* - sshKeyPath: Optional string (file path)
|
|
17
|
+
* - dockerSocketPath: Optional string (socket path)
|
|
18
|
+
* - tags: Optional array of strings
|
|
19
|
+
* - composeSearchPaths: Optional array of strings (directory paths)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const config = {
|
|
24
|
+
* name: "my-host",
|
|
25
|
+
* host: "192.168.1.100",
|
|
26
|
+
* protocol: "ssh",
|
|
27
|
+
* sshUser: "admin"
|
|
28
|
+
* };
|
|
29
|
+
* const validated = HostConfigSchema.parse(config); // Throws on invalid
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare const HostConfigSchema: z.ZodObject<{
|
|
33
|
+
name: z.ZodString;
|
|
34
|
+
host: z.ZodString;
|
|
35
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
36
|
+
protocol: z.ZodEnum<{
|
|
37
|
+
http: "http";
|
|
38
|
+
https: "https";
|
|
39
|
+
ssh: "ssh";
|
|
40
|
+
}>;
|
|
41
|
+
sshUser: z.ZodOptional<z.ZodString>;
|
|
42
|
+
sshKeyPath: z.ZodOptional<z.ZodString>;
|
|
43
|
+
dockerSocketPath: z.ZodOptional<z.ZodString>;
|
|
44
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
45
|
+
composeSearchPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
46
|
+
}, z.core.$strict>;
|
|
47
|
+
/**
|
|
48
|
+
* Validates an array of host configurations.
|
|
49
|
+
*
|
|
50
|
+
* @param configs - Array of host configurations to validate
|
|
51
|
+
* @returns Validated array of HostConfig objects
|
|
52
|
+
* @throws {Error} If any configuration is invalid, with detailed error message
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const configs = [
|
|
56
|
+
* { name: "host1", host: "192.168.1.100", protocol: "ssh" },
|
|
57
|
+
* { name: "host2", host: "192.168.1.101", protocol: "http", port: 2375 }
|
|
58
|
+
* ];
|
|
59
|
+
* const validated = validateHostConfigs(configs);
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function validateHostConfigs(configs: unknown[]): HostConfig[];
|
|
63
|
+
/**
|
|
64
|
+
* Validates a single host configuration.
|
|
65
|
+
*
|
|
66
|
+
* @param config - Host configuration to validate
|
|
67
|
+
* @returns Validated HostConfig object
|
|
68
|
+
* @throws {Error} If configuration is invalid, with detailed error message
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const config = { name: "host1", host: "192.168.1.100", protocol: "ssh" };
|
|
72
|
+
* const validated = validateHostConfig(config);
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export declare function validateHostConfig(config: unknown): HostConfig;
|
|
76
|
+
//# sourceMappingURL=host-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-config.d.ts","sourceRoot":"","sources":["../../src/schemas/host-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;kBAiClB,CAAC;AAEZ;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAkBpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,CAY9D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema for validating HostConfig objects from config files and environment variables.
|
|
4
|
+
*
|
|
5
|
+
* Security: Prevents CWE-20 (Improper Input Validation) by validating all config fields
|
|
6
|
+
* before use. This prevents injection attacks via malformed config files.
|
|
7
|
+
* @see https://cwe.mitre.org/data/definitions/20.html
|
|
8
|
+
*
|
|
9
|
+
* Validates:
|
|
10
|
+
* - name: Must match safe identifier pattern (alphanumeric, dots, underscores, hyphens)
|
|
11
|
+
* - host: Required string (hostname or IP)
|
|
12
|
+
* - port: Optional number between 1-65535
|
|
13
|
+
* - protocol: Must be one of: "http", "https", "ssh"
|
|
14
|
+
* - sshUser: Optional string
|
|
15
|
+
* - sshKeyPath: Optional string (file path)
|
|
16
|
+
* - dockerSocketPath: Optional string (socket path)
|
|
17
|
+
* - tags: Optional array of strings
|
|
18
|
+
* - composeSearchPaths: Optional array of strings (directory paths)
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const config = {
|
|
23
|
+
* name: "my-host",
|
|
24
|
+
* host: "192.168.1.100",
|
|
25
|
+
* protocol: "ssh",
|
|
26
|
+
* sshUser: "admin"
|
|
27
|
+
* };
|
|
28
|
+
* const validated = HostConfigSchema.parse(config); // Throws on invalid
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const HostConfigSchema = z
|
|
32
|
+
.object({
|
|
33
|
+
name: z
|
|
34
|
+
.string()
|
|
35
|
+
.min(1, "Host name cannot be empty")
|
|
36
|
+
.regex(/^[a-zA-Z0-9._-]+$/, "Host name must contain only alphanumeric characters, dots, underscores, and hyphens"),
|
|
37
|
+
host: z.string().min(1, "Host address cannot be empty"),
|
|
38
|
+
port: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.min(1, "Port must be between 1 and 65535")
|
|
42
|
+
.max(65535, "Port must be between 1 and 65535")
|
|
43
|
+
.optional(),
|
|
44
|
+
protocol: z.enum(["http", "https", "ssh"], {
|
|
45
|
+
message: "Protocol must be one of: http, https, ssh",
|
|
46
|
+
}),
|
|
47
|
+
sshUser: z.string().optional(),
|
|
48
|
+
sshKeyPath: z.string().optional(),
|
|
49
|
+
dockerSocketPath: z.string().optional(),
|
|
50
|
+
tags: z.array(z.string()).optional(),
|
|
51
|
+
composeSearchPaths: z.array(z.string()).optional(),
|
|
52
|
+
})
|
|
53
|
+
.strict(); // Reject extra properties to prevent injection via unknown fields
|
|
54
|
+
/**
|
|
55
|
+
* Validates an array of host configurations.
|
|
56
|
+
*
|
|
57
|
+
* @param configs - Array of host configurations to validate
|
|
58
|
+
* @returns Validated array of HostConfig objects
|
|
59
|
+
* @throws {Error} If any configuration is invalid, with detailed error message
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const configs = [
|
|
63
|
+
* { name: "host1", host: "192.168.1.100", protocol: "ssh" },
|
|
64
|
+
* { name: "host2", host: "192.168.1.101", protocol: "http", port: 2375 }
|
|
65
|
+
* ];
|
|
66
|
+
* const validated = validateHostConfigs(configs);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export function validateHostConfigs(configs) {
|
|
70
|
+
const validated = [];
|
|
71
|
+
for (let i = 0; i < configs.length; i++) {
|
|
72
|
+
const result = HostConfigSchema.safeParse(configs[i]);
|
|
73
|
+
if (!result.success) {
|
|
74
|
+
const errorDetails = result.error.issues
|
|
75
|
+
.map((issue) => `${issue.path.join(".")}: ${issue.message}`)
|
|
76
|
+
.join("; ");
|
|
77
|
+
throw new Error(`Invalid host configuration at index ${i}: ${errorDetails}`);
|
|
78
|
+
}
|
|
79
|
+
validated.push(result.data);
|
|
80
|
+
}
|
|
81
|
+
return validated;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Validates a single host configuration.
|
|
85
|
+
*
|
|
86
|
+
* @param config - Host configuration to validate
|
|
87
|
+
* @returns Validated HostConfig object
|
|
88
|
+
* @throws {Error} If configuration is invalid, with detailed error message
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const config = { name: "host1", host: "192.168.1.100", protocol: "ssh" };
|
|
92
|
+
* const validated = validateHostConfig(config);
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export function validateHostConfig(config) {
|
|
96
|
+
const result = HostConfigSchema.safeParse(config);
|
|
97
|
+
if (!result.success) {
|
|
98
|
+
const errorDetails = result.error.issues
|
|
99
|
+
.map((issue) => `${issue.path.join(".")}: ${issue.message}`)
|
|
100
|
+
.join("; ");
|
|
101
|
+
throw new Error(`Invalid host configuration: ${errorDetails}`);
|
|
102
|
+
}
|
|
103
|
+
return result.data;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=host-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-config.js","sourceRoot":"","sources":["../../src/schemas/host-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,EAAE,2BAA2B,CAAC;SACnC,KAAK,CACJ,mBAAmB,EACnB,qFAAqF,CACtF;IAEH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,8BAA8B,CAAC;IAEvD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,EAAE,kCAAkC,CAAC;SAC1C,GAAG,CAAC,KAAK,EAAE,kCAAkC,CAAC;SAC9C,QAAQ,EAAE;IAEb,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE;QACzC,OAAO,EAAE,2CAA2C;KACrD,CAAC;IAEF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAE9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEjC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAEpC,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC;KACD,MAAM,EAAE,CAAC,CAAC,kEAAkE;AAE/E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAkB;IACpD,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;iBACrC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,KAAK,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aACrC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,IAAI,KAAK,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
/**
|
|
3
3
|
* Scout Tool Schema - SSH remote operations
|
|
4
4
|
*
|
|
5
|
-
* Actions:
|
|
5
|
+
* Actions: 12 total
|
|
6
|
+
* Help: 1 (auto-generated documentation)
|
|
6
7
|
* Simple: 9 (nodes, peek, exec, find, delta, emit, beam, ps, df)
|
|
7
8
|
* Nested: 2 with subactions
|
|
8
9
|
* - zfs: 3 subactions (pools, datasets, snapshots)
|
|
@@ -16,43 +17,72 @@ import { z } from 'zod';
|
|
|
16
17
|
* Nested actions use 'subaction' as secondary discriminator
|
|
17
18
|
*/
|
|
18
19
|
export declare const ScoutSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
20
|
+
action: z.ZodLiteral<"help">;
|
|
21
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
22
|
+
format: z.ZodOptional<z.ZodEnum<{
|
|
23
|
+
json: "json";
|
|
24
|
+
markdown: "markdown";
|
|
25
|
+
}>>;
|
|
26
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
19
27
|
action: z.ZodLiteral<"nodes">;
|
|
20
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
28
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
29
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
30
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
31
|
+
}>>;
|
|
21
32
|
}, z.core.$strip>, z.ZodObject<{
|
|
22
33
|
action: z.ZodLiteral<"peek">;
|
|
23
34
|
target: z.ZodString;
|
|
24
35
|
tree: z.ZodDefault<z.ZodBoolean>;
|
|
25
36
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
26
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
37
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
38
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
39
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
40
|
+
}>>;
|
|
27
41
|
}, z.core.$strip>, z.ZodObject<{
|
|
28
42
|
action: z.ZodLiteral<"exec">;
|
|
29
43
|
target: z.ZodString;
|
|
30
44
|
command: z.ZodString;
|
|
31
45
|
timeout: z.ZodDefault<z.ZodNumber>;
|
|
32
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
46
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
47
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
48
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
49
|
+
}>>;
|
|
33
50
|
}, z.core.$strip>, z.ZodObject<{
|
|
34
51
|
action: z.ZodLiteral<"find">;
|
|
35
52
|
target: z.ZodString;
|
|
36
53
|
pattern: z.ZodString;
|
|
37
54
|
depth: z.ZodDefault<z.ZodNumber>;
|
|
38
55
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
39
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
56
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
57
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
58
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
59
|
+
}>>;
|
|
40
60
|
}, z.core.$strip>, z.ZodObject<{
|
|
41
61
|
action: z.ZodLiteral<"delta">;
|
|
42
62
|
source: z.ZodString;
|
|
43
63
|
target: z.ZodOptional<z.ZodString>;
|
|
44
64
|
content: z.ZodOptional<z.ZodString>;
|
|
45
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
65
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
66
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
67
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
68
|
+
}>>;
|
|
46
69
|
}, z.core.$strip>, z.ZodObject<{
|
|
47
70
|
action: z.ZodLiteral<"emit">;
|
|
48
71
|
targets: z.ZodArray<z.ZodString>;
|
|
49
72
|
command: z.ZodOptional<z.ZodString>;
|
|
50
|
-
|
|
73
|
+
timeout: z.ZodDefault<z.ZodNumber>;
|
|
74
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
75
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
76
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
77
|
+
}>>;
|
|
51
78
|
}, z.core.$strip>, z.ZodObject<{
|
|
52
79
|
action: z.ZodLiteral<"beam">;
|
|
53
80
|
source: z.ZodString;
|
|
54
81
|
destination: z.ZodString;
|
|
55
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
82
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
83
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
84
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
85
|
+
}>>;
|
|
56
86
|
}, z.core.$strip>, z.ZodObject<{
|
|
57
87
|
action: z.ZodLiteral<"ps">;
|
|
58
88
|
host: z.ZodString;
|
|
@@ -60,18 +90,24 @@ export declare const ScoutSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
60
90
|
user: z.ZodOptional<z.ZodString>;
|
|
61
91
|
sort: z.ZodDefault<z.ZodEnum<{
|
|
62
92
|
cpu: "cpu";
|
|
93
|
+
time: "time";
|
|
63
94
|
mem: "mem";
|
|
64
95
|
pid: "pid";
|
|
65
|
-
time: "time";
|
|
66
96
|
}>>;
|
|
67
97
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
68
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
98
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
99
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
100
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
101
|
+
}>>;
|
|
69
102
|
}, z.core.$strip>, z.ZodObject<{
|
|
70
103
|
action: z.ZodLiteral<"df">;
|
|
71
104
|
host: z.ZodString;
|
|
72
105
|
path: z.ZodOptional<z.ZodString>;
|
|
73
106
|
human_readable: z.ZodDefault<z.ZodBoolean>;
|
|
74
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
107
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
108
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
109
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
110
|
+
}>>;
|
|
75
111
|
}, z.core.$strip>, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
76
112
|
action: z.ZodLiteral<"zfs">;
|
|
77
113
|
subaction: z.ZodLiteral<"pools">;
|
|
@@ -82,18 +118,24 @@ export declare const ScoutSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
82
118
|
degraded: "degraded";
|
|
83
119
|
faulted: "faulted";
|
|
84
120
|
}>>;
|
|
85
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
121
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
122
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
123
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
124
|
+
}>>;
|
|
86
125
|
}, z.core.$strip>, z.ZodObject<{
|
|
87
126
|
action: z.ZodLiteral<"zfs">;
|
|
88
127
|
subaction: z.ZodLiteral<"datasets">;
|
|
89
128
|
host: z.ZodString;
|
|
90
129
|
pool: z.ZodOptional<z.ZodString>;
|
|
91
130
|
type: z.ZodOptional<z.ZodEnum<{
|
|
92
|
-
filesystem: "filesystem";
|
|
93
131
|
volume: "volume";
|
|
132
|
+
filesystem: "filesystem";
|
|
94
133
|
}>>;
|
|
95
134
|
recursive: z.ZodDefault<z.ZodBoolean>;
|
|
96
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
135
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
136
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
137
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
138
|
+
}>>;
|
|
97
139
|
}, z.core.$strip>, z.ZodObject<{
|
|
98
140
|
action: z.ZodLiteral<"zfs">;
|
|
99
141
|
subaction: z.ZodLiteral<"snapshots">;
|
|
@@ -101,14 +143,20 @@ export declare const ScoutSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
101
143
|
pool: z.ZodOptional<z.ZodString>;
|
|
102
144
|
dataset: z.ZodOptional<z.ZodString>;
|
|
103
145
|
limit: z.ZodOptional<z.ZodNumber>;
|
|
104
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
146
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
147
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
148
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
149
|
+
}>>;
|
|
105
150
|
}, z.core.$strip>], "subaction">, z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
106
151
|
action: z.ZodLiteral<"logs">;
|
|
107
152
|
subaction: z.ZodLiteral<"syslog">;
|
|
108
153
|
host: z.ZodString;
|
|
109
154
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
110
155
|
grep: z.ZodOptional<z.ZodString>;
|
|
111
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
156
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
157
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
158
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
159
|
+
}>>;
|
|
112
160
|
}, z.core.$strip>, z.ZodObject<{
|
|
113
161
|
action: z.ZodLiteral<"logs">;
|
|
114
162
|
subaction: z.ZodLiteral<"journal">;
|
|
@@ -128,24 +176,33 @@ export declare const ScoutSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
128
176
|
debug: "debug";
|
|
129
177
|
}>>;
|
|
130
178
|
grep: z.ZodOptional<z.ZodString>;
|
|
131
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
179
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
180
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
181
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
182
|
+
}>>;
|
|
132
183
|
}, z.core.$strip>, z.ZodObject<{
|
|
133
184
|
action: z.ZodLiteral<"logs">;
|
|
134
185
|
subaction: z.ZodLiteral<"dmesg">;
|
|
135
186
|
host: z.ZodString;
|
|
136
187
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
137
188
|
grep: z.ZodOptional<z.ZodString>;
|
|
138
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
189
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
190
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
191
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
192
|
+
}>>;
|
|
139
193
|
}, z.core.$strip>, z.ZodObject<{
|
|
140
194
|
action: z.ZodLiteral<"logs">;
|
|
141
195
|
subaction: z.ZodLiteral<"auth">;
|
|
142
196
|
host: z.ZodString;
|
|
143
197
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
144
198
|
grep: z.ZodOptional<z.ZodString>;
|
|
145
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
199
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
200
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
201
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
202
|
+
}>>;
|
|
146
203
|
}, z.core.$strip>], "subaction">]>;
|
|
147
204
|
export type ScoutInput = z.infer<typeof ScoutSchema>;
|
|
148
|
-
export * from
|
|
149
|
-
export * from
|
|
150
|
-
export * from
|
|
205
|
+
export * from "./logs.js";
|
|
206
|
+
export * from "./simple.js";
|
|
207
|
+
export * from "./zfs.js";
|
|
151
208
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/scout/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/scout/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0BxB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAmBmD,CAAC;AAE5E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,cAAc,WAAW,CAAC;AAE1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
// src/schemas/scout/index.ts
|
|
2
|
-
import { z } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { scoutLogsSchema } from "./logs.js";
|
|
4
|
+
import { scoutBeamSchema, scoutDeltaSchema, scoutDfSchema, scoutEmitSchema, scoutExecSchema, scoutFindSchema, scoutNodesSchema, scoutPeekSchema, scoutPsSchema, } from "./simple.js";
|
|
5
|
+
import { scoutZfsSchema } from "./zfs.js";
|
|
6
|
+
/**
|
|
7
|
+
* Help schema - provides auto-generated documentation
|
|
8
|
+
*/
|
|
9
|
+
const helpSchema = z
|
|
10
|
+
.object({
|
|
11
|
+
action: z.literal("help").describe("Show auto-generated documentation"),
|
|
12
|
+
topic: z.string().optional().describe("Optional: filter to specific topic (e.g., 'zfs:pools')"),
|
|
13
|
+
format: z.enum(["markdown", "json"]).optional().describe("Output format (default: markdown)"),
|
|
14
|
+
})
|
|
15
|
+
.describe("Get auto-generated help documentation for scout tool");
|
|
6
16
|
/**
|
|
7
17
|
* Scout Tool Schema - SSH remote operations
|
|
8
18
|
*
|
|
9
|
-
* Actions:
|
|
19
|
+
* Actions: 12 total
|
|
20
|
+
* Help: 1 (auto-generated documentation)
|
|
10
21
|
* Simple: 9 (nodes, peek, exec, find, delta, emit, beam, ps, df)
|
|
11
22
|
* Nested: 2 with subactions
|
|
12
23
|
* - zfs: 3 subactions (pools, datasets, snapshots)
|
|
@@ -19,7 +30,10 @@ import { scoutLogsSchema } from './logs.js';
|
|
|
19
30
|
* Simple actions use literal 'action' discriminator
|
|
20
31
|
* Nested actions use 'subaction' as secondary discriminator
|
|
21
32
|
*/
|
|
22
|
-
export const ScoutSchema = z
|
|
33
|
+
export const ScoutSchema = z
|
|
34
|
+
.union([
|
|
35
|
+
// Help action (1)
|
|
36
|
+
helpSchema,
|
|
23
37
|
// Simple actions (9)
|
|
24
38
|
scoutNodesSchema,
|
|
25
39
|
scoutPeekSchema,
|
|
@@ -32,10 +46,11 @@ export const ScoutSchema = z.union([
|
|
|
32
46
|
scoutDfSchema,
|
|
33
47
|
// Nested discriminators (2) - these are already discriminated unions
|
|
34
48
|
scoutZfsSchema,
|
|
35
|
-
scoutLogsSchema
|
|
36
|
-
])
|
|
49
|
+
scoutLogsSchema,
|
|
50
|
+
])
|
|
51
|
+
.describe("SSH remote operations - file, process, and system inspection");
|
|
52
|
+
export * from "./logs.js";
|
|
37
53
|
// Re-export all schemas for individual use
|
|
38
|
-
export * from
|
|
39
|
-
export * from
|
|
40
|
-
export * from './logs.js';
|
|
54
|
+
export * from "./simple.js";
|
|
55
|
+
export * from "./zfs.js";
|
|
41
56
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/scout/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/scout/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;IAC/F,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC9F,CAAC;KACD,QAAQ,CAAC,sDAAsD,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,KAAK,CAAC;IACL,kBAAkB;IAClB,UAAU;IACV,qBAAqB;IACrB,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,aAAa;IACb,aAAa;IAEb,qEAAqE;IACrE,cAAc;IACd,eAAe;CAChB,CAAC;KACD,QAAQ,CAAC,8DAA8D,CAAC,CAAC;AAI5E,cAAc,WAAW,CAAC;AAC1B,2CAA2C;AAC3C,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
/**
|
|
3
3
|
* Scout logs nested discriminator (4 subactions)
|
|
4
4
|
* Uses standard discriminatedUnion on 'subaction'
|
|
@@ -9,7 +9,10 @@ export declare const scoutLogsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
9
9
|
host: z.ZodString;
|
|
10
10
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
11
11
|
grep: z.ZodOptional<z.ZodString>;
|
|
12
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
12
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
13
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
14
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
15
|
+
}>>;
|
|
13
16
|
}, z.core.$strip>, z.ZodObject<{
|
|
14
17
|
action: z.ZodLiteral<"logs">;
|
|
15
18
|
subaction: z.ZodLiteral<"journal">;
|
|
@@ -29,20 +32,29 @@ export declare const scoutLogsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
29
32
|
debug: "debug";
|
|
30
33
|
}>>;
|
|
31
34
|
grep: z.ZodOptional<z.ZodString>;
|
|
32
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
35
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
36
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
37
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
38
|
+
}>>;
|
|
33
39
|
}, z.core.$strip>, z.ZodObject<{
|
|
34
40
|
action: z.ZodLiteral<"logs">;
|
|
35
41
|
subaction: z.ZodLiteral<"dmesg">;
|
|
36
42
|
host: z.ZodString;
|
|
37
43
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
38
44
|
grep: z.ZodOptional<z.ZodString>;
|
|
39
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
45
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
46
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
47
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
48
|
+
}>>;
|
|
40
49
|
}, z.core.$strip>, z.ZodObject<{
|
|
41
50
|
action: z.ZodLiteral<"logs">;
|
|
42
51
|
subaction: z.ZodLiteral<"auth">;
|
|
43
52
|
host: z.ZodString;
|
|
44
53
|
lines: z.ZodDefault<z.ZodNumber>;
|
|
45
54
|
grep: z.ZodOptional<z.ZodString>;
|
|
46
|
-
response_format: z.ZodDefault<z.ZodEnum<
|
|
55
|
+
response_format: z.ZodDefault<z.ZodEnum<{
|
|
56
|
+
json: import("../../types.js").ResponseFormat.JSON;
|
|
57
|
+
markdown: import("../../types.js").ResponseFormat.MARKDOWN;
|
|
58
|
+
}>>;
|
|
47
59
|
}, z.core.$strip>], "subaction">;
|
|
48
60
|
//# sourceMappingURL=logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/schemas/scout/logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/schemas/scout/logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAkD1B,CAAC"}
|
|
@@ -1,47 +1,57 @@
|
|
|
1
1
|
// src/schemas/scout/logs.ts
|
|
2
|
-
import { z } from
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { DEFAULT_LOG_LINES, MAX_LOG_LINES } from "../../constants.js";
|
|
4
|
+
import { hostSchema, jsFilterSchema, responseFormatSchema } from "../common.js";
|
|
5
5
|
/**
|
|
6
6
|
* Scout logs nested discriminator (4 subactions)
|
|
7
7
|
* Uses standard discriminatedUnion on 'subaction'
|
|
8
8
|
*/
|
|
9
|
-
export const scoutLogsSchema = z.discriminatedUnion(
|
|
10
|
-
z
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export const scoutLogsSchema = z.discriminatedUnion("subaction", [
|
|
10
|
+
z
|
|
11
|
+
.object({
|
|
12
|
+
action: z.literal("logs"),
|
|
13
|
+
subaction: z.literal("syslog"),
|
|
13
14
|
host: hostSchema,
|
|
14
15
|
lines: z.number().int().min(1).max(MAX_LOG_LINES).default(DEFAULT_LOG_LINES),
|
|
15
|
-
grep:
|
|
16
|
-
response_format: responseFormatSchema
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
grep: jsFilterSchema.optional(),
|
|
17
|
+
response_format: responseFormatSchema,
|
|
18
|
+
})
|
|
19
|
+
.describe("Access system log files (/var/log)"),
|
|
20
|
+
z
|
|
21
|
+
.object({
|
|
22
|
+
action: z.literal("logs"),
|
|
23
|
+
subaction: z.literal("journal"),
|
|
21
24
|
host: hostSchema,
|
|
22
25
|
lines: z.number().int().min(1).max(MAX_LOG_LINES).default(DEFAULT_LOG_LINES),
|
|
23
|
-
since: z.string().optional().describe(
|
|
26
|
+
since: z.string().optional().describe("ISO 8601 timestamp or relative time"),
|
|
24
27
|
until: z.string().optional(),
|
|
25
|
-
unit: z.string().optional().describe(
|
|
26
|
-
priority: z
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
unit: z.string().optional().describe("Systemd unit name to filter"),
|
|
29
|
+
priority: z
|
|
30
|
+
.enum(["emerg", "alert", "crit", "err", "warning", "notice", "info", "debug"])
|
|
31
|
+
.optional(),
|
|
32
|
+
grep: jsFilterSchema.optional(),
|
|
33
|
+
response_format: responseFormatSchema,
|
|
34
|
+
})
|
|
35
|
+
.describe("Access systemd journal logs"),
|
|
36
|
+
z
|
|
37
|
+
.object({
|
|
38
|
+
action: z.literal("logs"),
|
|
39
|
+
subaction: z.literal("dmesg"),
|
|
33
40
|
host: hostSchema,
|
|
34
41
|
lines: z.number().int().min(1).max(MAX_LOG_LINES).default(DEFAULT_LOG_LINES),
|
|
35
|
-
grep:
|
|
36
|
-
response_format: responseFormatSchema
|
|
37
|
-
})
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
42
|
+
grep: jsFilterSchema.optional(),
|
|
43
|
+
response_format: responseFormatSchema,
|
|
44
|
+
})
|
|
45
|
+
.describe("Access kernel ring buffer logs"),
|
|
46
|
+
z
|
|
47
|
+
.object({
|
|
48
|
+
action: z.literal("logs"),
|
|
49
|
+
subaction: z.literal("auth"),
|
|
41
50
|
host: hostSchema,
|
|
42
51
|
lines: z.number().int().min(1).max(MAX_LOG_LINES).default(DEFAULT_LOG_LINES),
|
|
43
|
-
grep:
|
|
44
|
-
response_format: responseFormatSchema
|
|
45
|
-
})
|
|
52
|
+
grep: jsFilterSchema.optional(),
|
|
53
|
+
response_format: responseFormatSchema,
|
|
54
|
+
})
|
|
55
|
+
.describe("Access authentication logs"),
|
|
46
56
|
]);
|
|
47
57
|
//# sourceMappingURL=logs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/schemas/scout/logs.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../../src/schemas/scout/logs.ts"],"names":[],"mappings":"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"}
|