From bb7efb8fd66eacf1e470c565667f6dfdb07570bf Mon Sep 17 00:00:00 2001 From: DoronGenzelHass Date: Mon, 22 Jun 2026 12:02:46 +0300 Subject: [PATCH] feat: wire model-downloader routes and feature flags into the server Register the routes at PromptServer startup and advertise the server_side_model_downloads and hf_auth_eligible capability flags so the frontend can detect support and gate the HF login UI. Co-Authored-By: Claude Opus 4.8 (1M context) --- comfy_api/feature_flags.py | 12 ++++++++++++ server.py | 2 ++ 2 files changed, 14 insertions(+) diff --git a/comfy_api/feature_flags.py b/comfy_api/feature_flags.py index 0f30608a9..92d013386 100644 --- a/comfy_api/feature_flags.py +++ b/comfy_api/feature_flags.py @@ -98,12 +98,24 @@ def _parse_cli_feature_flags() -> dict[str, Any]: # Default server capabilities +def _hf_auth_eligible_at_startup() -> bool: + """Snapshot eligibility once at feature-flag init time. + + Imports lazily because the flags module loads very early in the + server boot sequence — earlier than the model_downloader package. + """ + from app.model_downloader.hf_auth.eligibility import is_hf_auth_eligible + return is_hf_auth_eligible() + + _CORE_FEATURE_FLAGS: dict[str, Any] = { "supports_preview_metadata": True, "max_upload_size": args.max_upload_size * 1024 * 1024, # Convert MB to bytes "extension": {"manager": {"supports_v4": True}}, "node_replacements": True, "assets": args.enable_assets, + "server_side_model_downloads": True, + "hf_auth_eligible": _hf_auth_eligible_at_startup(), } # CLI-provided flags cannot overwrite core flags diff --git a/server.py b/server.py index 361850f38..1a6850b87 100644 --- a/server.py +++ b/server.py @@ -47,6 +47,7 @@ from app.assets.seeder import asset_seeder from app.assets.api.routes import register_assets_routes from app.assets.services.ingest import register_file_in_place from app.assets.services.asset_management import resolve_hash_to_path +from app.model_downloader.api.routes import register_routes as register_model_downloader_routes from app.user_manager import UserManager from app.model_manager import ModelFileManager @@ -256,6 +257,7 @@ class PromptServer(): else: register_assets_routes(self.app) asset_seeder.disable() + register_model_downloader_routes(self.app) routes = web.RouteTableDef() self.routes = routes self.last_node_id = None