use codex_cli_sdk::{Codex, CodexConfig, ThreadOptions};
#[tokio::main]
async fn main() -> codex_cli_sdk::Result<()> {
let codex = Codex::new(CodexConfig::default())?;
println!("=== Turn 1 ===");
let mut thread = codex.start_thread(ThreadOptions::default());
let turn = thread
.run(
"Create a file called hello.py with a hello world program",
Default::default(),
)
.await?;
println!("{}", turn.final_response);
let thread_id = thread
.id()
.expect("thread ID should be set after the first turn");
println!("\nThread ID: {thread_id}");
println!("\n=== Turn 2 ===");
let mut thread = codex.resume_thread(&thread_id, ThreadOptions::default());
let turn = thread
.run("Now add argument parsing to hello.py", Default::default())
.await?;
println!("{}", turn.final_response);
println!("\n=== Turn 3 ===");
let mut thread = codex.resume_thread(&thread_id, ThreadOptions::default());
let turn = thread
.run("Add a --version flag that prints 1.0.0", Default::default())
.await?;
println!("{}", turn.final_response);
Ok(())
}