from __future__ import annotations from pydantic import ( BaseModel, SecretStr, ) from openhands.core.config.mcp_config import MCPConfig from openhands.integrations.provider import CustomSecret, ProviderToken from openhands.integrations.service_types import ProviderType from openhands.storage.data_models.settings import Settings class POSTProviderModel(BaseModel): """ Settings for POST requests """ mcp_config: MCPConfig | None = None provider_tokens: dict[ProviderType, ProviderToken] = {} class POSTCustomSecrets(BaseModel): """ Adding new custom secret """ custom_secrets: dict[str, CustomSecret] = {} class GETSettingsModel(Settings): """ Settings with additional token data for the frontend """ provider_tokens_set: dict[ProviderType, str | None] | None = ( None # provider + base_domain key-value pair ) llm_api_key_set: bool search_api_key_set: bool = False model_config = {'use_enum_values': True} class CustomSecretWithoutValueModel(BaseModel): """ Custom secret model without value """ name: str description: str | None = None class CustomSecretModel(CustomSecretWithoutValueModel): """ Custom secret model with value """ value: SecretStr class GETCustomSecrets(BaseModel): """ Custom secrets names """ custom_secrets: list[CustomSecretWithoutValueModel] | None = None