helpers/settings.py.dox.md
settings.py helper module.settings.py because this directory is intentionally flat.settings.py owns the runtime implementation.settings.py.dox.md owns durable notes about responsibilities, contracts, side effects, and verification for that implementation.Settings (TypedDict)PartialSettings (Settings)FieldOption (TypedDict)SettingsField (TypedDict)SettingsSection (TypedDict)ModelProvider (ProvidersFO)SettingsOutputAdditional (TypedDict)SettingsOutput (TypedDict)get_default_value(name: str, value: T) -> T: Load setting value from .env with A0_SET_ prefix, falling back to default._ensure_option_present(options: list[OptionT] | None, current_value: str | None) -> list[OptionT]: Ensure the currently selected value exists in a dropdown options list._is_valid_timezone(value: str) -> bool_normalize_timezone_setting(value: Any, default: str=...) -> str_normalize_time_format(value: Any, default: str=...) -> str_normalize_ui_control_visibility(value: Any) -> dict[str, dict[str, bool]]_resolve_runtime_timezone(setting_value: str, browser_timezone: str | None=...) -> str_timezone_options() -> list[FieldOption]convert_out(settings: Settings) -> SettingsOutput_get_api_key_field(settings: Settings, provider: str, title: str) -> SettingsFieldconvert_in(settings: Settings) -> Settingsget_settings() -> Settingsreload_settings() -> Settingsset_runtime_settings_snapshot(settings: Settings) -> Noneset_settings(settings: Settings, apply: bool=..., browser_timezone: str | None=...)set_settings_delta(delta: dict, apply: bool=...)merge_settings(original: Settings, delta: dict) -> Settingsnormalize_settings(settings: Settings) -> Settings_adjust_to_version(settings: Settings, default: Settings)_load_sensitive_settings(settings: Settings)_read_settings_file() -> Settings | None_write_settings_file(settings: Settings)_remove_sensitive_settings(settings: Settings)_write_sensitive_settings(settings: Settings)get_default_settings() -> Settings_apply_timezone_setting(previous: Settings | None, browser_timezone: str | None=...) -> None_apply_settings(previous: Settings | None, browser_timezone: str | None=...)_env_to_dict(data: str)_dict_to_env(data_dict)set_root_password(password: str)get_runtime_config(set: Settings)T, PASSWORD_PLACEHOLDER, API_KEY_PLACEHOLDER, TIMEZONE_AUTO, TIME_FORMAT_12H, TIME_FORMAT_24H, UI_CONTROL_VISIBILITY_DEFAULTS, SETTINGS_FILE.base64, hashlib, helpers, helpers.notification, helpers.print_style, helpers.providers, helpers.secrets, json, models, os, pytz, re, subprocess, typing.TypeVar, files.get_abs_path, dotenv.get_dotenv_value, opts.insert, str.strip, _is_valid_timezone, str.strip.lower, _normalize_timezone_setting, SettingsOutput, get_default_settings, _ensure_option_present, _resolve_runtime_timezone, get_default_secrets_manager, get_settings, normalize_settings, _load_sensitive_settings, settings.copy, _write_settings_file, reload_settings, set_settings, initialize_agent.MCPConfig.update(...) with the current mcp_servers string when global MCP server settings change.max_consecutive_unusable_responses defaults to 2 and controls the cost circuit breaker for malformed or repeated main-model outputs.ui_control_visibility stores validated mobile and desktop visibility flags for the project selector, clock, connection status, and right canvas rail; missing or malformed values fall back per device.tests/test_browser_agent_regressions.pytests/test_document_query_plugin.pytests/test_download_toast_regressions.pytests/test_fasta2a_client.pytests/test_mcp_handler_multimodal.pytests/test_model_config_api_keys.pytests/test_model_config_project_presets.pytests/test_oauth_static.pytests/test_subagent_profiles.pyNo child DOX files.