use codex_utils_absolute_path::AbsolutePathBuf; use schemars::JsonSchema; use serde::Deserialize; use serde::Serialize; use crate::config_toml::ToolsToml; use crate::types::AnalyticsConfigToml; use crate::types::ApprovalsReviewer; use crate::types::Personality; use crate::types::SessionPickerViewMode; use crate::types::WindowsToml; use codex_features::FeaturesToml; use codex_protocol::config_types::ReasoningSummary; use codex_protocol::config_types::SandboxMode; use codex_protocol::config_types::Verbosity; use codex_protocol::config_types::WebSearchMode; use codex_protocol::openai_models::ReasoningEffort; use codex_protocol::protocol::AskForApproval; /// Collection of common configuration options that a user can define as a unit /// in `config.toml`. #[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize, JsonSchema)] #[schemars(deny_unknown_fields)] pub struct ConfigProfile { pub model: Option, /// Optional explicit service tier request id for new turns (for example /// `default`, `priority`, or `flex`; legacy `fast` also works). pub service_tier: Option, /// The key in the `model_providers` map identifying the /// [`ModelProviderInfo`] to use. pub model_provider: Option, pub approval_policy: Option, pub approvals_reviewer: Option, pub sandbox_mode: Option, pub model_reasoning_effort: Option, pub plan_mode_reasoning_effort: Option, pub model_reasoning_summary: Option, pub model_verbosity: Option, /// Optional path to a JSON model catalog (applied on startup only). pub model_catalog_json: Option, pub personality: Option, pub chatgpt_base_url: Option, /// Optional path to a file containing model instructions. pub model_instructions_file: Option, /// Deprecated: ignored. #[schemars(skip)] pub js_repl_node_path: Option, /// Deprecated: ignored. #[schemars(skip)] pub js_repl_node_module_dirs: Option>, pub experimental_compact_prompt_file: Option, pub include_permissions_instructions: Option, pub include_apps_instructions: Option, pub include_collaboration_mode_instructions: Option, pub include_environment_context: Option, pub experimental_use_unified_exec_tool: Option, pub tools: Option, pub web_search: Option, pub analytics: Option, /// TUI settings scoped to this profile. #[serde(default)] pub tui: Option, #[serde(default)] pub windows: Option, /// Optional feature toggles scoped to this profile. #[serde(default)] // Injects known feature keys into the schema and forbids unknown keys. #[schemars(schema_with = "crate::schema::features_schema")] pub features: Option, pub oss_provider: Option, } /// TUI settings supported inside a named profile. #[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize, JsonSchema)] #[serde(deny_unknown_fields)] #[schemars(deny_unknown_fields)] pub struct ProfileTui { /// Preferred layout for resume/fork session picker results. #[serde(default)] pub session_picker_view: Option, }