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, get_settings_for_prompt, normalize_settings, _load_sensitive_settings, deepcopy, 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.get_settings() retains normalize-on-read behavior. Prompt-building callers
explicitly use get_settings_for_prompt() to reuse one task-local snapshot
within each Agent.prepare_prompt() call.max_consecutive_unusable_responses defaults to 5 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, context-window usage indicator, and right canvas rail; missing or malformed values fall back per device.default utility profile is never offered as a selectable option.default utility profile normalize
to agent0, so newly created chats always start with a selectable profile.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.