Codex Handbook
config/src/profile_toml.rs 81 lines
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<String>,    /// Optional explicit service tier request id for new turns (for example    /// `default`, `priority`, or `flex`; legacy `fast` also works).    pub service_tier: Option<String>,    /// The key in the `model_providers` map identifying the    /// [`ModelProviderInfo`] to use.    pub model_provider: Option<String>,    pub approval_policy: Option<AskForApproval>,    pub approvals_reviewer: Option<ApprovalsReviewer>,    pub sandbox_mode: Option<SandboxMode>,    pub model_reasoning_effort: Option<ReasoningEffort>,    pub plan_mode_reasoning_effort: Option<ReasoningEffort>,    pub model_reasoning_summary: Option<ReasoningSummary>,    pub model_verbosity: Option<Verbosity>,    /// Optional path to a JSON model catalog (applied on startup only).    pub model_catalog_json: Option<AbsolutePathBuf>,    pub personality: Option<Personality>,    pub chatgpt_base_url: Option<String>,    /// Optional path to a file containing model instructions.    pub model_instructions_file: Option<AbsolutePathBuf>,    /// Deprecated: ignored.    #[schemars(skip)]    pub js_repl_node_path: Option<AbsolutePathBuf>,    /// Deprecated: ignored.    #[schemars(skip)]    pub js_repl_node_module_dirs: Option<Vec<AbsolutePathBuf>>,    pub experimental_compact_prompt_file: Option<AbsolutePathBuf>,    pub include_permissions_instructions: Option<bool>,    pub include_apps_instructions: Option<bool>,    pub include_collaboration_mode_instructions: Option<bool>,    pub include_environment_context: Option<bool>,    pub experimental_use_unified_exec_tool: Option<bool>,    pub tools: Option<ToolsToml>,    pub web_search: Option<WebSearchMode>,    pub analytics: Option<AnalyticsConfigToml>,    /// TUI settings scoped to this profile.    #[serde(default)]    pub tui: Option<ProfileTui>,    #[serde(default)]    pub windows: Option<WindowsToml>,    /// 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<FeaturesToml>,    pub oss_provider: Option<String>,}/// 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<SessionPickerViewMode>,}