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)
}