Spaces:
Sleeping
Sleeping
File size: 3,350 Bytes
2415446 a1bab2d 2415446 a1bab2d 2415446 a1bab2d 0a54372 a1bab2d 0a54372 a1bab2d 0a54372 a1bab2d 2415446 0a54372 2415446 0a54372 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | """Provider configuration status for the Admin UI."""
from collections.abc import Mapping
from typing import Any
from free_claude_code.config.provider_catalog import (
PROVIDER_CATALOG,
ProviderAuthKind,
)
from .manifest import FIELDS
def provider_config_status(
state: Mapping[str, Mapping[str, Any]],
) -> list[dict[str, Any]]:
"""Return provider configuration status without making network calls."""
statuses: list[dict[str, Any]] = []
for provider_id, descriptor in PROVIDER_CATALOG.items():
if descriptor.auth_kind is ProviderAuthKind.CONNECTED_ACCOUNT:
statuses.append(
{
"provider_id": provider_id,
"display_name": descriptor.display_name,
"kind": "connected_account",
"status": "disconnected",
"label": "Not connected",
}
)
continue
if descriptor.local:
base_url = ""
if descriptor.base_url_attr is not None:
base_url = _value_for_settings_attr(state, descriptor.base_url_attr)
statuses.append(
{
"provider_id": provider_id,
"display_name": descriptor.display_name,
"kind": "local",
"status": "missing_url" if not base_url.strip() else "unknown",
"label": "Missing URL" if not base_url.strip() else "Not checked",
"base_url": base_url or descriptor.default_base_url or "",
}
)
continue
configuration_attrs = descriptor.configuration_attrs()
missing_attrs = tuple(
attr
for attr in configuration_attrs
if not _value_for_settings_attr(state, attr).strip()
)
configured = not missing_attrs
configuration = " + ".join(
_field_key_for_settings_attr(attr) for attr in configuration_attrs
)
missing_key = descriptor.credential_attr in missing_attrs
statuses.append(
{
"provider_id": provider_id,
"display_name": descriptor.display_name,
"kind": "remote",
"status": (
"configured"
if configured
else "missing_key"
if missing_key
else "missing_config"
),
"label": (
"Configured"
if configured
else "Missing key"
if missing_key
else "Missing configuration"
),
"configuration": configuration,
}
)
return statuses
def _value_for_settings_attr(
state: Mapping[str, Mapping[str, Any]], settings_attr: str
) -> str:
for field in FIELDS:
if field.settings_attr == settings_attr:
return str(state.get(field.key, {}).get("value", field.default))
return ""
def _field_key_for_settings_attr(settings_attr: str) -> str:
for field in FIELDS:
if field.settings_attr == settings_attr:
return field.key
raise AssertionError(f"No admin field owns settings attribute {settings_attr!r}")
|