codex-app-server-sdk 0.5.1

Tokio Rust SDK for Codex App Server
Documentation
use codex_app_server_sdk::StdioConfig;
use codex_app_server_sdk::api::{Codex, ThreadEvent, ThreadOptions, TurnOptions};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let codex = Codex::spawn_stdio(StdioConfig::default()).await?;
    let mut thread = codex.start_thread(ThreadOptions::default());

    let mut streamed = thread
        .run_streamed("Reply with exactly: ok", TurnOptions::default())
        .await?;

    while let Some(event) = streamed.next_event().await {
        match event? {
            ThreadEvent::ThreadStarted { thread_id } => {
                println!("thread started: {thread_id}");
            }
            ThreadEvent::TurnStarted => {
                println!("turn started");
            }
            ThreadEvent::ItemUpdated { item }
            | ThreadEvent::ItemStarted { item }
            | ThreadEvent::ItemCompleted { item } => {
                println!("item event: {item:?}");
            }
            ThreadEvent::TurnCompleted { usage } => {
                println!("turn completed: usage={usage:?}");
                break;
            }
            ThreadEvent::TurnFailed { error } => {
                println!("turn failed: {}", error.message);
                break;
            }
            ThreadEvent::Error { message } => {
                println!("stream error: {message}");
            }
        }
    }

    Ok(())
}