use std::collections::HashMap; use std::path::Path; use std::sync::LazyLock; use codex_utils_image::PromptImageMode; use codex_utils_image::load_for_prompt_bytes; use codex_utils_template::Template; use serde::Deserialize; use serde::Deserializer; use serde::Serialize; use serde::ser::Serializer; use ts_rs::TS; use crate::config_types::ApprovalsReviewer; use crate::config_types::CollaborationMode; use crate::config_types::SandboxMode; use crate::protocol::AskForApproval; use crate::protocol::COLLABORATION_MODE_CLOSE_TAG; use crate::protocol::COLLABORATION_MODE_OPEN_TAG; use crate::protocol::GranularApprovalConfig; use crate::protocol::NetworkAccess; use crate::protocol::REALTIME_CONVERSATION_CLOSE_TAG; use crate::protocol::REALTIME_CONVERSATION_OPEN_TAG; use crate::protocol::SandboxPolicy; use crate::protocol::WritableRoot; use crate::user_input::UserInput; use codex_execpolicy::Policy; use codex_git_utils::GhostCommit; use codex_utils_absolute_path::AbsolutePathBuf; use codex_utils_image::ImageProcessingError; use schemars::JsonSchema; use crate::mcp::CallToolResult; static SANDBOX_MODE_DANGER_FULL_ACCESS_TEMPLATE: LazyLock