codex-mobile-bridge 0.2.6

Remote bridge and service manager for codex-mobile.
Documentation
use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct ThreadStatusInfo {
    pub kind: String,
    pub reason: Option<String>,
    pub raw: Value,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct ThreadTokenUsage {
    pub input_tokens: Option<i64>,
    pub cached_input_tokens: Option<i64>,
    pub output_tokens: Option<i64>,
    pub reasoning_tokens: Option<i64>,
    pub total_tokens: Option<i64>,
    pub raw: Value,
    pub updated_at_ms: i64,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct ThreadSummary {
    pub id: String,
    pub runtime_id: String,
    pub name: Option<String>,
    pub note: Option<String>,
    pub preview: String,
    pub cwd: String,
    pub status: String,
    pub status_info: ThreadStatusInfo,
    pub token_usage: Option<ThreadTokenUsage>,
    pub model_provider: String,
    pub source: String,
    pub created_at: i64,
    pub updated_at: i64,
    pub is_loaded: bool,
    pub is_active: bool,
    pub archived: bool,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TimelineEntry {
    pub id: String,
    pub runtime_id: String,
    pub thread_id: String,
    pub turn_id: Option<String>,
    pub item_id: Option<String>,
    pub entry_type: String,
    pub title: Option<String>,
    pub text: String,
    pub status: Option<String>,
    #[serde(default)]
    pub metadata: Value,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct PendingServerRequestOption {
    pub label: String,
    pub description: Option<String>,
    pub value: Option<Value>,
    pub is_other: bool,
    pub raw: Value,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct PendingServerRequestQuestion {
    pub id: String,
    pub header: Option<String>,
    pub question: Option<String>,
    pub required: bool,
    pub options: Vec<PendingServerRequestOption>,
    pub raw: Value,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[serde(default)]
pub struct PendingServerRequestRecord {
    pub request_id: String,
    pub runtime_id: String,
    pub rpc_request_id: Value,
    pub request_type: String,
    pub thread_id: Option<String>,
    pub turn_id: Option<String>,
    pub item_id: Option<String>,
    pub title: Option<String>,
    pub reason: Option<String>,
    pub command: Option<String>,
    pub cwd: Option<String>,
    pub grant_root: Option<String>,
    pub tool_name: Option<String>,
    pub arguments: Option<Value>,
    #[serde(default)]
    pub questions: Vec<PendingServerRequestQuestion>,
    pub proposed_execpolicy_amendment: Option<Value>,
    pub network_approval_context: Option<Value>,
    pub schema: Option<Value>,
    #[serde(default)]
    pub available_decisions: Vec<String>,
    pub raw_payload: Value,
    pub created_at_ms: i64,
}