pub async fn query(
prompt: &str,
options: ClaudeAgentOptions,
) -> Result<ReceiverStream<Result<Message>>>Expand description
Execute a one-shot query against the Claude CLI and return a stream of messages.
This is the simplest API - it handles connection, init handshake, sending the prompt, and returns a stream of messages until the result message arrives.
ยงExample
use claude_code_rs::{ClaudeAgentOptions, Message};
use claude_code_rs::query_fn::query;
use tokio_stream::StreamExt;
let options = ClaudeAgentOptions {
max_turns: Some(3),
..Default::default()
};
let mut stream = query("What is 2+2?", options).await?;
while let Some(msg) = stream.next().await {
match msg? {
Message::Assistant { message } => {
if let Some(text) = message.content.iter()
.find_map(|b| b.as_text()) {
print!("{text}");
}
}
Message::Result { result } => {
println!("\n[done, cost: {:?}]", result.total_cost_usd);
break;
}
_ => {}
}
}