| use super::shared::v2_enum_from_core; |
| use super::turn::CyberAccessProgram; |
| use crate::JsonSchema; |
| use crate::TS; |
| use codex_protocol::openai_models::InputModality; |
| use codex_protocol::openai_models::ModelAccessPrograms as CoreModelAccessPrograms; |
| use codex_protocol::openai_models::ModelAvailabilityNux as CoreModelAvailabilityNux; |
| use codex_protocol::openai_models::ReasoningEffort; |
| use codex_protocol::openai_models::default_input_modalities; |
| use codex_protocol::protocol::ModelRerouteReason as CoreModelRerouteReason; |
| use codex_protocol::protocol::ModelVerification as CoreModelVerification; |
| use codex_protocol::protocol::MultiAgentVersion as CoreMultiAgentVersion; |
| use serde::Deserialize; |
| use serde::Serialize; |
| use serde_json::Value as JsonValue; |
|
|
| v2_enum_from_core!( |
| pub enum ModelRerouteReason from CoreModelRerouteReason { |
| HighRiskCyberActivity |
| } |
| ); |
|
|
| v2_enum_from_core!( |
| pub enum ModelVerification from CoreModelVerification { |
| TrustedAccessForCyber |
| } |
| ); |
|
|
| v2_enum_from_core!( |
| |
| pub enum MultiAgentVersion from CoreMultiAgentVersion { |
| Disabled, |
| V1, |
| V2 |
| } |
| ); |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelProviderCapabilitiesReadParams {} |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelProviderCapabilitiesReadResponse { |
| pub namespace_tools: bool, |
| pub image_generation: bool, |
| pub web_search: bool, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelListParams { |
| |
| #[ts(optional = nullable)] |
| pub cursor: Option<String>, |
| |
| #[ts(optional = nullable)] |
| pub limit: Option<u32>, |
| |
| #[ts(optional = nullable)] |
| pub include_hidden: Option<bool>, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelAvailabilityNux { |
| pub message: String, |
| } |
|
|
| impl From<CoreModelAvailabilityNux> for ModelAvailabilityNux { |
| fn from(value: CoreModelAvailabilityNux) -> Self { |
| Self { |
| message: value.message, |
| } |
| } |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelServiceTier { |
| pub id: String, |
| pub name: String, |
| pub description: String, |
| } |
|
|
| |
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelAccessPrograms { |
| |
| pub cyber: Vec<CyberAccessProgram>, |
| } |
|
|
| impl From<CoreModelAccessPrograms> for ModelAccessPrograms { |
| fn from(value: CoreModelAccessPrograms) -> Self { |
| Self { |
| cyber: value.cyber.into_iter().map(Into::into).collect(), |
| } |
| } |
| } |
|
|
| impl From<ModelAccessPrograms> for CoreModelAccessPrograms { |
| fn from(value: ModelAccessPrograms) -> Self { |
| Self { |
| cyber: value.cyber.into_iter().map(Into::into).collect(), |
| } |
| } |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct Model { |
| pub id: String, |
| pub model: String, |
| pub upgrade: Option<String>, |
| pub upgrade_info: Option<ModelUpgradeInfo>, |
| pub availability_nux: Option<ModelAvailabilityNux>, |
| pub display_name: String, |
| pub description: String, |
| #[serde(default)] |
| pub model_specialty: Option<String>, |
| pub hidden: bool, |
| pub supported_reasoning_efforts: Vec<ReasoningEffortOption>, |
| pub default_reasoning_effort: ReasoningEffort, |
| #[serde(default = "default_input_modalities")] |
| pub input_modalities: Vec<InputModality>, |
| |
| #[serde(default)] |
| pub supports_personality: bool, |
| |
| pub multi_agent_version: Option<MultiAgentVersion>, |
| |
| #[serde(default)] |
| pub additional_speed_tiers: Vec<String>, |
| #[serde(default)] |
| pub service_tiers: Vec<ModelServiceTier>, |
| |
| #[serde(default)] |
| pub default_service_tier: Option<String>, |
| |
| #[serde(default)] |
| pub available_access_programs: Option<ModelAccessPrograms>, |
| |
| pub is_default: bool, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelUpgradeInfo { |
| pub model: String, |
| pub upgrade_copy: Option<String>, |
| pub model_link: Option<String>, |
| pub migration_markdown: Option<String>, |
| |
| #[ts(type = "number | null")] |
| pub retirement_at: Option<i64>, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ReasoningEffortOption { |
| pub reasoning_effort: ReasoningEffort, |
| pub description: String, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelListResponse { |
| pub data: Vec<Model>, |
| |
| |
| pub next_cursor: Option<String>, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelReroutedNotification { |
| pub thread_id: String, |
| pub turn_id: String, |
| pub from_model: String, |
| pub to_model: String, |
| pub reason: ModelRerouteReason, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelVerificationNotification { |
| pub thread_id: String, |
| pub turn_id: String, |
| pub verifications: Vec<ModelVerification>, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct TurnModerationMetadataNotification { |
| pub thread_id: String, |
| pub turn_id: String, |
| pub metadata: JsonValue, |
| } |
|
|
| #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, JsonSchema, TS)] |
| #[serde(rename_all = "camelCase")] |
| #[ts(export_to = "v2/")] |
| pub struct ModelSafetyBufferingUpdatedNotification { |
| pub thread_id: String, |
| pub turn_id: String, |
| pub model: String, |
| pub use_cases: Vec<String>, |
| pub reasons: Vec<String>, |
| pub show_buffering_ui: bool, |
| pub faster_model: Option<String>, |
| } |
|
|