free-claude-code/api/admin_urls.py
2026-05-10 01:45:04 -07:00

34 lines
1.1 KiB
Python

"""Helpers for presenting local admin URLs."""
from __future__ import annotations
from config.settings import Settings
def _browser_host_for_local_urls(settings: Settings) -> str:
"""Host fragment for URLs shown to humans on the same machine as the server."""
host = settings.host.strip() if settings.host else "127.0.0.1"
if host in {"0.0.0.0", "::", "[::]"}:
host = "127.0.0.1"
if ":" in host and not host.startswith("["):
host = f"[{host}]"
return host
def local_proxy_root_url(settings: Settings) -> str:
"""Return the proxy root URL (no path) for clients on the same machine."""
return f"http://{_browser_host_for_local_urls(settings)}:{settings.port}"
def local_admin_url(settings: Settings) -> str:
"""Return a browser-friendly URL for the localhost-only admin UI."""
return f"{local_proxy_root_url(settings)}/admin"
def admin_launch_message(settings: Settings) -> str:
"""Return the startup message shown by supported launch commands."""
return f"Admin UI: {local_admin_url(settings)} (local-only)"