diff options
Diffstat (limited to 'src/mcp_sd15/config.py')
| -rw-r--r-- | src/mcp_sd15/config.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mcp_sd15/config.py b/src/mcp_sd15/config.py index 1a5a71d..df2da34 100644 --- a/src/mcp_sd15/config.py +++ b/src/mcp_sd15/config.py @@ -12,6 +12,7 @@ from .errors import ConfigError VALID_SIZES = frozenset({"square_512", "landscape_512", "portrait_512"}) VALID_SCHEDULERS = frozenset({"dpmpp_2m_karras", "dpmpp_2m_sde_karras", "euler_a", "ddim", "lcm"}) +VALID_TRANSPORTS = frozenset({"stdio", "streamable-http"}) @dataclass(frozen=True) @@ -72,11 +73,19 @@ class OutputConfig: @dataclass(frozen=True) +class ServerConfig: + transport: str = "stdio" + host: str = "127.0.0.1" + port: int = 8000 + + +@dataclass(frozen=True) class AppConfig: model: ModelConfig generation: GenerationConfig controlnet: ControlNetConfig output: OutputConfig + server: ServerConfig = ServerConfig() def controlnet_path(self, mode: str) -> Path: item = self.controlnet.for_mode(mode) @@ -208,11 +217,25 @@ def load_config(path: str | Path, *, validate_paths: bool = True) -> AppConfig: if not output_dir.is_absolute(): output_dir = config_path.parent / output_dir + server_raw = _table(raw, "server") + transport = _string(server_raw, "transport") or "stdio" + if transport not in VALID_TRANSPORTS: + raise ConfigError(f"unsupported transport: {transport}") + host = _string(server_raw, "host") or "127.0.0.1" + port_value = server_raw.get("port", 8000) + if ( + isinstance(port_value, bool) + or not isinstance(port_value, int) + or not 1 <= port_value <= 65535 + ): + raise ConfigError("server.port must be an integer between 1 and 65535") + config = AppConfig( model=ModelConfig(root, checkpoint, vae, tuple(loras)), generation=GenerationConfig(steps_value, cfg_scale, scheduler, default_size), controlnet=controlnet, output=OutputConfig(output_dir.resolve(), _bool(output_raw, "enabled", False)), + server=ServerConfig(transport, host, port_value), ) if validate_paths: validate_model_paths(config) |
