mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-06-22 15:59:45 +08:00
47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
"""Runtime config the frontend reads from /features to follow --comfy-api-base.
|
|
|
|
For a non-prod comfy.org backend (staging or an ephemeral preview env), "/features" exposes the api and
|
|
platform base so the frontend talks to it without a rebuild; the frontend picks the Firebase project from the api base.
|
|
Prod bases are left alone and keep their build-time defaults.
|
|
"""
|
|
|
|
from typing import Any
|
|
from urllib.parse import urlparse
|
|
|
|
from comfy.cli_args import args
|
|
|
|
# Staging and the ephemeral preview envs ("testenvs") are one tier: same dev Firebase project and platform.
|
|
_STAGING_API_HOST = "stagingapi.comfy.org"
|
|
_TESTENV_HOST_SUFFIX = ".testenvs.comfy.org"
|
|
_STAGING_PLATFORM_BASE_URL = "https://stagingplatform.comfy.org"
|
|
|
|
|
|
def _is_staging_tier(host: str) -> bool:
|
|
return host == _STAGING_API_HOST or host.endswith(_TESTENV_HOST_SUFFIX)
|
|
|
|
|
|
def normalize_comfy_api_base(url: str) -> str:
|
|
"""Rewrite a testenv's friendly main host to its comfy-api '-registry' sibling."""
|
|
parsed = urlparse(url)
|
|
host = parsed.hostname or ""
|
|
if not host.endswith(_TESTENV_HOST_SUFFIX):
|
|
return url
|
|
label = host[: -len(_TESTENV_HOST_SUFFIX)]
|
|
if label.endswith("-registry"):
|
|
return url
|
|
return f"{parsed.scheme or 'https'}://{label}-registry{_TESTENV_HOST_SUFFIX}"
|
|
|
|
|
|
def frontend_config_for_base(base_url: str) -> dict[str, Any] | None:
|
|
"""The /features overrides for a staging-tier base, or None for prod."""
|
|
if not _is_staging_tier(urlparse(base_url).hostname or ""):
|
|
return None
|
|
return {
|
|
"comfy_api_base_url": normalize_comfy_api_base(base_url).rstrip("/"),
|
|
"comfy_platform_base_url": _STAGING_PLATFORM_BASE_URL,
|
|
}
|
|
|
|
|
|
def get_frontend_config() -> dict[str, Any] | None:
|
|
return frontend_config_for_base(getattr(args, "comfy_api_base", "") or "")
|