mirror of
https://github.com/openai/codex.git
synced 2026-04-24 22:54:54 +00:00
We continue the separation between `codex app-server` and `codex mcp-server`. In particular, we introduce a new crate, `codex-app-server-protocol`, and migrate `codex-rs/protocol/src/mcp_protocol.rs` into it, renaming it `codex-rs/app-server-protocol/src/protocol.rs`. Because `ConversationId` was defined in `mcp_protocol.rs`, we move it into its own file, `codex-rs/protocol/src/conversation_id.rs`, and because it is referenced in a ton of places, we have to touch a lot of files as part of this PR. We also decide to get away from proper JSON-RPC 2.0 semantics, so we also introduce `codex-rs/app-server-protocol/src/jsonrpc_lite.rs`, which is basically the same `JSONRPCMessage` type defined in `mcp-types` except with all of the `"jsonrpc": "2.0"` removed. Getting rid of `"jsonrpc": "2.0"` makes our serialization logic considerably simpler, as we can lean heavier on serde to serialize directly into the wire format that we use now.
74 lines
2.3 KiB
Rust
74 lines
2.3 KiB
Rust
use codex_app_server_protocol::AuthMode;
|
|
use codex_core::protocol_config_types::ReasoningEffort;
|
|
|
|
/// A simple preset pairing a model slug with a reasoning effort.
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct ModelPreset {
|
|
/// Stable identifier for the preset.
|
|
pub id: &'static str,
|
|
/// Display label shown in UIs.
|
|
pub label: &'static str,
|
|
/// Short human description shown next to the label in UIs.
|
|
pub description: &'static str,
|
|
/// Model slug (e.g., "gpt-5").
|
|
pub model: &'static str,
|
|
/// Reasoning effort to apply for this preset.
|
|
pub effort: Option<ReasoningEffort>,
|
|
}
|
|
|
|
const PRESETS: &[ModelPreset] = &[
|
|
ModelPreset {
|
|
id: "gpt-5-codex-low",
|
|
label: "gpt-5-codex low",
|
|
description: "",
|
|
model: "gpt-5-codex",
|
|
effort: Some(ReasoningEffort::Low),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-codex-medium",
|
|
label: "gpt-5-codex medium",
|
|
description: "",
|
|
model: "gpt-5-codex",
|
|
effort: Some(ReasoningEffort::Medium),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-codex-high",
|
|
label: "gpt-5-codex high",
|
|
description: "",
|
|
model: "gpt-5-codex",
|
|
effort: Some(ReasoningEffort::High),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-minimal",
|
|
label: "gpt-5 minimal",
|
|
description: "— fastest responses with limited reasoning; ideal for coding, instructions, or lightweight tasks",
|
|
model: "gpt-5",
|
|
effort: Some(ReasoningEffort::Minimal),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-low",
|
|
label: "gpt-5 low",
|
|
description: "— balances speed with some reasoning; useful for straightforward queries and short explanations",
|
|
model: "gpt-5",
|
|
effort: Some(ReasoningEffort::Low),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-medium",
|
|
label: "gpt-5 medium",
|
|
description: "— default setting; provides a solid balance of reasoning depth and latency for general-purpose tasks",
|
|
model: "gpt-5",
|
|
effort: Some(ReasoningEffort::Medium),
|
|
},
|
|
ModelPreset {
|
|
id: "gpt-5-high",
|
|
label: "gpt-5 high",
|
|
description: "— maximizes reasoning depth for complex or ambiguous problems",
|
|
model: "gpt-5",
|
|
effort: Some(ReasoningEffort::High),
|
|
},
|
|
];
|
|
|
|
pub fn builtin_model_presets(_auth_mode: Option<AuthMode>) -> Vec<ModelPreset> {
|
|
PRESETS.to_vec()
|
|
}
|