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,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool registry pattern for extensible tool registration
|
|
3
|
+
*
|
|
4
|
+
* Provides a plugin-style API for registering MCP tools without modifying
|
|
5
|
+
* the core registration code.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Register built-in tools
|
|
10
|
+
* const registry = new ToolRegistry(container);
|
|
11
|
+
* registry.register(FluxTool);
|
|
12
|
+
* registry.register(ScoutTool);
|
|
13
|
+
*
|
|
14
|
+
* // Register custom tool
|
|
15
|
+
* registry.register(CustomTool);
|
|
16
|
+
*
|
|
17
|
+
* // Apply to MCP server
|
|
18
|
+
* registry.registerAll(server);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
22
|
+
import type { z } from "zod";
|
|
23
|
+
import type { ServiceContainer } from "../services/container.js";
|
|
24
|
+
/**
|
|
25
|
+
* Tool definition interface - implement this to create a new tool
|
|
26
|
+
*/
|
|
27
|
+
export interface ToolDefinition {
|
|
28
|
+
/** Unique tool name (must be unique across all registered tools) */
|
|
29
|
+
name: string;
|
|
30
|
+
/** Human-readable tool title */
|
|
31
|
+
title: string;
|
|
32
|
+
/** Tool description (if not provided, extracted from schema) */
|
|
33
|
+
description?: string;
|
|
34
|
+
/** Zod schema for input validation */
|
|
35
|
+
inputSchema: z.ZodTypeAny;
|
|
36
|
+
/** Optional Zod schema for MCP tool advertising (client-side input schema) */
|
|
37
|
+
mcpInputSchema?: z.ZodTypeAny;
|
|
38
|
+
/** Tool annotations for MCP SDK */
|
|
39
|
+
annotations?: {
|
|
40
|
+
readOnlyHint?: boolean;
|
|
41
|
+
destructiveHint?: boolean;
|
|
42
|
+
idempotentHint?: boolean;
|
|
43
|
+
openWorldHint?: boolean;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Tool handler function - implement your tool logic here
|
|
47
|
+
*
|
|
48
|
+
* @param params - Validated input parameters
|
|
49
|
+
* @param container - Service container for dependency injection
|
|
50
|
+
* @returns Tool output string (markdown or JSON)
|
|
51
|
+
*/
|
|
52
|
+
handler: (params: unknown, container: ServiceContainer) => Promise<string>;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Tool registry for managing tool registration
|
|
56
|
+
*
|
|
57
|
+
* Maintains collection of tools and provides registration API for MCP server.
|
|
58
|
+
* Supports plugin-style extension by allowing registration of custom tools.
|
|
59
|
+
*/
|
|
60
|
+
export declare class ToolRegistry {
|
|
61
|
+
private container;
|
|
62
|
+
private tools;
|
|
63
|
+
constructor(container: ServiceContainer);
|
|
64
|
+
/**
|
|
65
|
+
* Register a tool definition
|
|
66
|
+
*
|
|
67
|
+
* @param tool - Tool definition to register
|
|
68
|
+
* @throws {Error} If tool name conflicts with existing tool
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* registry.register({
|
|
73
|
+
* name: "my-tool",
|
|
74
|
+
* title: "My Custom Tool",
|
|
75
|
+
* inputSchema: MySchema,
|
|
76
|
+
* handler: async (params, container) => {
|
|
77
|
+
* // Your tool implementation
|
|
78
|
+
* return "Tool output";
|
|
79
|
+
* }
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
register(tool: ToolDefinition): void;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a tool is registered
|
|
86
|
+
*
|
|
87
|
+
* @param name - Tool name to check
|
|
88
|
+
* @returns True if tool is registered
|
|
89
|
+
*/
|
|
90
|
+
has(name: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Get registered tool definition
|
|
93
|
+
*
|
|
94
|
+
* @param name - Tool name to get
|
|
95
|
+
* @returns Tool definition or undefined if not found
|
|
96
|
+
*/
|
|
97
|
+
get(name: string): ToolDefinition | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* Get all registered tool names
|
|
100
|
+
*
|
|
101
|
+
* @returns Array of tool names
|
|
102
|
+
*/
|
|
103
|
+
getToolNames(): string[];
|
|
104
|
+
/**
|
|
105
|
+
* Register all tools with MCP server
|
|
106
|
+
*
|
|
107
|
+
* Iterates through all registered tools and registers them with the MCP server
|
|
108
|
+
* using the SDK 1.25.1 API. Wraps handlers with error logging.
|
|
109
|
+
*
|
|
110
|
+
* @param server - MCP server instance
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const registry = new ToolRegistry(container);
|
|
115
|
+
* registry.register(FluxTool);
|
|
116
|
+
* registry.register(ScoutTool);
|
|
117
|
+
* registry.registerAll(server);
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
registerAll(server: McpServer): void;
|
|
121
|
+
/**
|
|
122
|
+
* Unregister a tool
|
|
123
|
+
*
|
|
124
|
+
* @param name - Tool name to unregister
|
|
125
|
+
* @returns True if tool was removed, false if it didn't exist
|
|
126
|
+
*/
|
|
127
|
+
unregister(name: string): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Clear all registered tools
|
|
130
|
+
*
|
|
131
|
+
* Useful for testing or rebuilding registry from scratch.
|
|
132
|
+
*/
|
|
133
|
+
clear(): void;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IAEb,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IAEd,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sCAAsC;IACtC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;IAE1B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC;IAE9B,mCAAmC;IACnC,WAAW,CAAC,EAAE;QACZ,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IAEF;;;;;;OAMG;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5E;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,SAAS;IAF7B,OAAO,CAAC,KAAK,CAA0C;gBAEnC,SAAS,EAAE,gBAAgB;IAE/C;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAOpC;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C;;;;OAIG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAoCpC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool registry pattern for extensible tool registration
|
|
3
|
+
*
|
|
4
|
+
* Provides a plugin-style API for registering MCP tools without modifying
|
|
5
|
+
* the core registration code.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Register built-in tools
|
|
10
|
+
* const registry = new ToolRegistry(container);
|
|
11
|
+
* registry.register(FluxTool);
|
|
12
|
+
* registry.register(ScoutTool);
|
|
13
|
+
*
|
|
14
|
+
* // Register custom tool
|
|
15
|
+
* registry.register(CustomTool);
|
|
16
|
+
*
|
|
17
|
+
* // Apply to MCP server
|
|
18
|
+
* registry.registerAll(server);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
import { getSchemaDescription } from "@modelcontextprotocol/sdk/server/zod-compat.js";
|
|
22
|
+
import { logError, sanitizeParams } from "../utils/errors.js";
|
|
23
|
+
/**
|
|
24
|
+
* Tool registry for managing tool registration
|
|
25
|
+
*
|
|
26
|
+
* Maintains collection of tools and provides registration API for MCP server.
|
|
27
|
+
* Supports plugin-style extension by allowing registration of custom tools.
|
|
28
|
+
*/
|
|
29
|
+
export class ToolRegistry {
|
|
30
|
+
container;
|
|
31
|
+
tools = new Map();
|
|
32
|
+
constructor(container) {
|
|
33
|
+
this.container = container;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register a tool definition
|
|
37
|
+
*
|
|
38
|
+
* @param tool - Tool definition to register
|
|
39
|
+
* @throws {Error} If tool name conflicts with existing tool
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* registry.register({
|
|
44
|
+
* name: "my-tool",
|
|
45
|
+
* title: "My Custom Tool",
|
|
46
|
+
* inputSchema: MySchema,
|
|
47
|
+
* handler: async (params, container) => {
|
|
48
|
+
* // Your tool implementation
|
|
49
|
+
* return "Tool output";
|
|
50
|
+
* }
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
register(tool) {
|
|
55
|
+
if (this.tools.has(tool.name)) {
|
|
56
|
+
throw new Error(`Tool "${tool.name}" is already registered`);
|
|
57
|
+
}
|
|
58
|
+
this.tools.set(tool.name, tool);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a tool is registered
|
|
62
|
+
*
|
|
63
|
+
* @param name - Tool name to check
|
|
64
|
+
* @returns True if tool is registered
|
|
65
|
+
*/
|
|
66
|
+
has(name) {
|
|
67
|
+
return this.tools.has(name);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get registered tool definition
|
|
71
|
+
*
|
|
72
|
+
* @param name - Tool name to get
|
|
73
|
+
* @returns Tool definition or undefined if not found
|
|
74
|
+
*/
|
|
75
|
+
get(name) {
|
|
76
|
+
return this.tools.get(name);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get all registered tool names
|
|
80
|
+
*
|
|
81
|
+
* @returns Array of tool names
|
|
82
|
+
*/
|
|
83
|
+
getToolNames() {
|
|
84
|
+
return Array.from(this.tools.keys());
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Register all tools with MCP server
|
|
88
|
+
*
|
|
89
|
+
* Iterates through all registered tools and registers them with the MCP server
|
|
90
|
+
* using the SDK 1.25.1 API. Wraps handlers with error logging.
|
|
91
|
+
*
|
|
92
|
+
* @param server - MCP server instance
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const registry = new ToolRegistry(container);
|
|
97
|
+
* registry.register(FluxTool);
|
|
98
|
+
* registry.register(ScoutTool);
|
|
99
|
+
* registry.registerAll(server);
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
registerAll(server) {
|
|
103
|
+
for (const [name, tool] of this.tools.entries()) {
|
|
104
|
+
server.registerTool(name, {
|
|
105
|
+
title: tool.title,
|
|
106
|
+
description: tool.description ?? getSchemaDescription(tool.inputSchema) ?? `${tool.title}`,
|
|
107
|
+
inputSchema: tool.mcpInputSchema ?? tool.inputSchema,
|
|
108
|
+
annotations: tool.annotations ?? {
|
|
109
|
+
readOnlyHint: false,
|
|
110
|
+
destructiveHint: false,
|
|
111
|
+
idempotentHint: false,
|
|
112
|
+
openWorldHint: true,
|
|
113
|
+
},
|
|
114
|
+
}, async (params) => {
|
|
115
|
+
try {
|
|
116
|
+
const result = await tool.handler(params, this.container);
|
|
117
|
+
return { content: [{ type: "text", text: result }] };
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
logError(error, {
|
|
121
|
+
operation: `${name}:handler`,
|
|
122
|
+
metadata: {
|
|
123
|
+
message: `${tool.title} execution failed`,
|
|
124
|
+
params: sanitizeParams(params),
|
|
125
|
+
container: { type: this.container.constructor.name },
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Unregister a tool
|
|
135
|
+
*
|
|
136
|
+
* @param name - Tool name to unregister
|
|
137
|
+
* @returns True if tool was removed, false if it didn't exist
|
|
138
|
+
*/
|
|
139
|
+
unregister(name) {
|
|
140
|
+
return this.tools.delete(name);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Clear all registered tools
|
|
144
|
+
*
|
|
145
|
+
* Useful for testing or rebuilding registry from scratch.
|
|
146
|
+
*/
|
|
147
|
+
clear() {
|
|
148
|
+
this.tools.clear();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/scout.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import type { ServiceContainer } from
|
|
1
|
+
import type { ServiceContainer } from "../services/container.js";
|
|
2
2
|
/**
|
|
3
|
-
* Scout tool
|
|
3
|
+
* Handle all Scout tool requests - SSH remote operations.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - Nested with subactions:
|
|
8
|
-
* - zfs: 3 (pools, datasets, snapshots)
|
|
9
|
-
* - logs: 4 (syslog, journal, dmesg, auth)
|
|
5
|
+
* Routes incoming requests to specialized handlers based on action type.
|
|
6
|
+
* Validates input against Scout schema before dispatching.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
8
|
+
* @param input - Unvalidated user input to process
|
|
9
|
+
* @param container - Service container with dependencies
|
|
10
|
+
* @returns Formatted response string (markdown or JSON)
|
|
11
|
+
* @throws {Error} When validation fails or action is unknown
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const result = await handleScoutTool(
|
|
16
|
+
* { action: 'peek', target: 'host1:/etc/hosts' },
|
|
17
|
+
* container
|
|
18
|
+
* );
|
|
19
|
+
* ```
|
|
12
20
|
*/
|
|
13
21
|
export declare function handleScoutTool(input: unknown, container: ServiceContainer): Promise<string>;
|
|
14
22
|
//# sourceMappingURL=scout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scout.d.ts","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
|
package/dist/tools/scout.js
CHANGED
|
@@ -1,96 +1,54 @@
|
|
|
1
1
|
// src/tools/scout.ts
|
|
2
|
-
import { ScoutSchema } from
|
|
3
|
-
import {
|
|
2
|
+
import { ScoutSchema } from "../schemas/scout/index.js";
|
|
3
|
+
import { handleHelpAction } from "../utils/help-handler.js";
|
|
4
|
+
import { handleLogsAction } from "./handlers/scout-logs.js";
|
|
5
|
+
import { handleScoutSimpleAction } from "./handlers/scout-simple.js";
|
|
6
|
+
import { handleZfsAction } from "./handlers/scout-zfs.js";
|
|
4
7
|
/**
|
|
5
|
-
* Scout tool
|
|
8
|
+
* Handle all Scout tool requests - SSH remote operations.
|
|
6
9
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - Nested with subactions:
|
|
10
|
-
* - zfs: 3 (pools, datasets, snapshots)
|
|
11
|
-
* - logs: 4 (syslog, journal, dmesg, auth)
|
|
10
|
+
* Routes incoming requests to specialized handlers based on action type.
|
|
11
|
+
* Validates input against Scout schema before dispatching.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
13
|
+
* @param input - Unvalidated user input to process
|
|
14
|
+
* @param container - Service container with dependencies
|
|
15
|
+
* @returns Formatted response string (markdown or JSON)
|
|
16
|
+
* @throws {Error} When validation fails or action is unknown
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const result = await handleScoutTool(
|
|
21
|
+
* { action: 'peek', target: 'host1:/etc/hosts' },
|
|
22
|
+
* container
|
|
23
|
+
* );
|
|
24
|
+
* ```
|
|
14
25
|
*/
|
|
15
26
|
export async function handleScoutTool(input, container) {
|
|
16
|
-
// Handle help action before schema validation
|
|
17
|
-
if (typeof input === 'object' && input !== null && 'action' in input && input.action === 'help') {
|
|
18
|
-
const helpInput = input;
|
|
19
|
-
const entries = generateHelp(ScoutSchema, helpInput.topic);
|
|
20
|
-
if (helpInput.format === 'json') {
|
|
21
|
-
return formatHelpJson(entries);
|
|
22
|
-
}
|
|
23
|
-
return formatHelpMarkdown(entries);
|
|
24
|
-
}
|
|
25
27
|
// Validate input against Scout schema
|
|
26
28
|
const validated = ScoutSchema.parse(input);
|
|
27
29
|
// Route to appropriate handler based on action
|
|
28
30
|
switch (validated.action) {
|
|
29
|
-
case
|
|
30
|
-
return
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
case
|
|
34
|
-
|
|
35
|
-
case
|
|
36
|
-
|
|
37
|
-
case
|
|
38
|
-
|
|
39
|
-
case
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
case
|
|
44
|
-
return handlePsAction(validated, container);
|
|
45
|
-
case 'df':
|
|
46
|
-
return handleDfAction(validated, container);
|
|
47
|
-
case 'zfs':
|
|
31
|
+
case "help":
|
|
32
|
+
return handleHelpAction(validated, ScoutSchema);
|
|
33
|
+
// Simple actions (9) - handled by scout-simple handler
|
|
34
|
+
case "nodes":
|
|
35
|
+
case "peek":
|
|
36
|
+
case "exec":
|
|
37
|
+
case "find":
|
|
38
|
+
case "delta":
|
|
39
|
+
case "emit":
|
|
40
|
+
case "beam":
|
|
41
|
+
case "ps":
|
|
42
|
+
case "df":
|
|
43
|
+
return handleScoutSimpleAction(validated, container);
|
|
44
|
+
// Nested actions with subactions
|
|
45
|
+
case "zfs":
|
|
48
46
|
return handleZfsAction(validated, container);
|
|
49
|
-
case
|
|
47
|
+
case "logs":
|
|
50
48
|
return handleLogsAction(validated, container);
|
|
51
49
|
default:
|
|
52
50
|
// Zod validation should prevent reaching here
|
|
53
51
|
throw new Error(`Unknown action: ${validated.action}`);
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
|
-
// Placeholder handlers - will be implemented in Tasks 20-22
|
|
57
|
-
function handleNodesAction(_input, _container) {
|
|
58
|
-
throw new Error('Handler not implemented: nodes');
|
|
59
|
-
}
|
|
60
|
-
function handlePeekAction(_input, _container) {
|
|
61
|
-
throw new Error('Handler not implemented: peek');
|
|
62
|
-
}
|
|
63
|
-
function handleExecAction(_input, _container) {
|
|
64
|
-
throw new Error('Handler not implemented: exec');
|
|
65
|
-
}
|
|
66
|
-
function handleFindAction(_input, _container) {
|
|
67
|
-
throw new Error('Handler not implemented: find');
|
|
68
|
-
}
|
|
69
|
-
function handleDeltaAction(_input, _container) {
|
|
70
|
-
throw new Error('Handler not implemented: delta');
|
|
71
|
-
}
|
|
72
|
-
function handleEmitAction(_input, _container) {
|
|
73
|
-
throw new Error('Handler not implemented: emit');
|
|
74
|
-
}
|
|
75
|
-
function handleBeamAction(_input, _container) {
|
|
76
|
-
throw new Error('Handler not implemented: beam');
|
|
77
|
-
}
|
|
78
|
-
function handlePsAction(_input, _container) {
|
|
79
|
-
throw new Error('Handler not implemented: ps');
|
|
80
|
-
}
|
|
81
|
-
function handleDfAction(_input, _container) {
|
|
82
|
-
throw new Error('Handler not implemented: df');
|
|
83
|
-
}
|
|
84
|
-
function handleZfsAction(input, _container) {
|
|
85
|
-
if (input.action !== 'zfs') {
|
|
86
|
-
throw new Error(`Invalid action for zfs handler: ${input.action}`);
|
|
87
|
-
}
|
|
88
|
-
throw new Error(`Handler not implemented: zfs:${input.subaction}`);
|
|
89
|
-
}
|
|
90
|
-
function handleLogsAction(input, _container) {
|
|
91
|
-
if (input.action !== 'logs') {
|
|
92
|
-
throw new Error(`Invalid action for logs handler: ${input.action}`);
|
|
93
|
-
}
|
|
94
|
-
throw new Error(`Handler not implemented: logs:${input.subaction}`);
|
|
95
|
-
}
|
|
96
54
|
//# sourceMappingURL=scout.js.map
|
package/dist/tools/scout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"scout.js","sourceRoot":"","sources":["../../src/tools/scout.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,OAAO,EAAmB,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAkB,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAc,EACd,SAA2B;IAE3B,sCAAsC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAe,CAAC;IAEzD,+CAA+C;IAC/C,QAAQ,SAAS,CAAC,MAAM,EAAE,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,SAAsB,EAAE,WAAW,CAAC,CAAC;QAE/D,uDAAuD;QACvD,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,IAAI;YACP,OAAO,uBAAuB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAEvD,iCAAiC;QACjC,KAAK,KAAK;YACR,OAAO,eAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC/C,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD;YACE,8CAA8C;YAC9C,MAAM,IAAI,KAAK,CAAC,mBAAoB,SAAgC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|