#![allow(clippy::expect_used, clippy::doc_markdown)]
use std::sync::Arc;
use loopctl::config::LoopConfig;
use loopctl::engine::BareLoop;
use loopctl::engine::loop_core::Loop;
use loopctl::testing::MockApiClient;
use loopctl::tool::ToolRegistry;
#[tokio::main]
async fn main() {
let client = MockApiClient::new("hello-model").with_text_response("Hello, world!");
let tools = ToolRegistry::new();
let config = LoopConfig::default();
let mut agent = BareLoop::new(Arc::new(client), tools, config);
let result = agent
.run("Say hello!")
.await
.expect("session should succeed");
println!("Turns: {}", result.total_turns);
println!("Output: {}", result.final_output.unwrap_or_default());
}