codex-app-server-sdk 0.5.1

Tokio Rust SDK for Codex App Server
Documentation
use codex_app_server_sdk::api::{Codex, ThreadOptions, TurnOptions};
use codex_app_server_sdk::{JsonSchema, OpenAiSerializable, StdioConfig};
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize, JsonSchema, OpenAiSerializable)]
struct SchemaConstrainedReply {
    answer: String,
}

#[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 turn_options = TurnOptions::builder()
        .output_schema_for::<SchemaConstrainedReply>()
        .build();

    let turn = thread
        .run(
            "Respond with strict JSON only, using one field named answer with value ok.",
            turn_options,
        )
        .await?;

    let value: serde_json::Value = serde_json::from_str(&turn.final_response)?;
    let reply = SchemaConstrainedReply::from_openai_value(value)?;
    println!("answer: {}", reply.answer);

    Ok(())
}