codex-mobile-bridge 0.3.14

Remote bridge and service manager for codex-mobile.
Documentation
use super::*;

pub(super) fn build_thread_list_request_payload(
    cursor: Option<&str>,
    limit: usize,
    archived: bool,
    search_term: Option<&str>,
) -> Value {
    let mut payload = Map::new();
    payload.insert("limit".to_string(), json!(limit));
    payload.insert("archived".to_string(), json!(archived));
    if let Some(cursor) = cursor {
        payload.insert("cursor".to_string(), json!(cursor));
    }
    if let Some(search_term) = search_term {
        payload.insert("searchTerm".to_string(), json!(search_term));
    }
    Value::Object(payload)
}

pub(super) fn build_thread_start_request_payload(cwd: &str, model: Option<&str>) -> Value {
    let mut payload = Map::new();
    payload.insert("cwd".to_string(), json!(cwd));
    payload.insert("experimentalRawEvents".to_string(), json!(false));
    payload.insert("persistExtendedHistory".to_string(), json!(true));
    payload.insert("ephemeral".to_string(), json!(false));
    if let Some(model) = model.filter(|value| !value.trim().is_empty()) {
        payload.insert("model".to_string(), json!(model));
    }
    Value::Object(payload)
}

pub(super) fn build_turn_start_request_payload(
    thread_id: &str,
    input_items: Vec<Value>,
    cwd: Option<String>,
) -> Value {
    let mut payload = Map::new();
    payload.insert("threadId".to_string(), json!(thread_id));
    payload.insert("input".to_string(), json!(input_items));
    if let Some(cwd) = cwd {
        payload.insert("cwd".to_string(), json!(cwd));
    }
    Value::Object(payload)
}

pub(super) fn build_turn_interrupt_request_payload(
    thread_id: &str,
    turn_id: Option<&str>,
) -> Value {
    let mut payload = Map::new();
    payload.insert("threadId".to_string(), json!(thread_id));
    if let Some(turn_id) = turn_id {
        payload.insert("turnId".to_string(), json!(turn_id));
    }
    Value::Object(payload)
}