use claude_cli_sdk::{Client, ClientConfig};
use tokio_stream::StreamExt;
#[tokio::main]
async fn main() -> claude_cli_sdk::Result<()> {
let config = ClientConfig::builder().prompt("What is 2 + 2?").build();
let mut client = Client::new(config)?;
let session_info = client.connect().await?;
println!("Session: {}", session_info.session_id);
{
let stream = client.receive_messages()?;
tokio::pin!(stream);
while let Some(msg) = stream.next().await {
let msg = msg?;
if let Some(text) = msg.assistant_text() {
println!("Turn 1: {text}");
}
if matches!(msg, claude_cli_sdk::Message::Result(_)) {
break;
}
}
}
{
let stream2 = client.send("Now multiply that by 10")?;
tokio::pin!(stream2);
while let Some(msg) = stream2.next().await {
let msg = msg?;
if let Some(text) = msg.assistant_text() {
println!("Turn 2: {text}");
}
}
}
client.close().await?;
Ok(())
}