use std::sync::Arc;
use codex_wrapper::{Codex, ExecCommand, SandboxMode, Session};
#[tokio::main]
async fn main() -> codex_wrapper::Result<()> {
let codex = Arc::new(Codex::builder().build()?);
let mut session = Session::new(Arc::clone(&codex));
session
.execute(
ExecCommand::new("Remember the number 41. Reply with just: stored")
.sandbox(SandboxMode::ReadOnly)
.skip_git_repo_check(),
)
.await?;
session
.send("Add one to the number you stored. Reply with digits only.")
.await?;
println!("thread: {:?}", session.id());
println!("turns: {}", session.total_turns());
println!(
"last answer: {:?}",
session.last_result().map(|r| &r.result)
);
println!("tokens: {}", session.total_tokens());
let missing = session.turns_missing_usage();
if missing > 0 {
println!(" ({missing} turn(s) reported no usage)");
}
Ok(())
}