use anyhow::Result;
use clap::Parser;
use orcs_app::{NoOpResolver, OrcsApp};
use tracing_subscriber::{fmt, EnvFilter};
#[derive(Parser, Debug)]
#[command(name = "stop_resume")]
#[command(about = "Stop/Resume example for ORCS")]
struct Args {
#[arg(long)]
resume: Option<String>,
#[arg(short, long)]
debug: bool,
}
#[tokio::main]
async fn main() -> Result<()> {
let args = Args::parse();
let filter = if args.debug {
EnvFilter::new("debug")
} else {
EnvFilter::new("info")
};
fmt().with_env_filter(filter).with_target(false).init();
println!("=== ORCS Stop/Resume Example ===");
println!();
let mut builder = OrcsApp::builder(NoOpResolver);
if let Some(ref session_id) = args.resume {
println!("Resuming session: {}", session_id);
builder = builder.resume(session_id);
} else {
println!("Starting new session...");
}
let mut app = builder.build().await?;
println!("Session ID: {}", app.session_id());
println!();
println!("Commands:");
println!(" p / pause - Save session and exit");
println!(" q / quit - Exit without saving");
println!(" <text> - Echo with HIL approval");
println!();
app.run_interactive().await?;
Ok(())
}