use std::sync::Arc;
use uuid::Uuid;
use crate::provider::Provider;
use crate::session::SessionBus;
pub use codetether_rlm::router::ProcessProgress;
pub use codetether_rlm::router::RoutingContext;
pub use codetether_rlm::router::RoutingResult;
pub struct AutoProcessContext<'a> {
pub tool_id: &'a str,
pub tool_args: serde_json::Value,
pub session_id: &'a str,
pub abort: Option<tokio::sync::watch::Receiver<bool>>,
pub on_progress: Option<Box<dyn Fn(ProcessProgress) + Send + Sync>>,
pub provider: Arc<dyn Provider>,
pub model: String,
pub bus: Option<SessionBus>,
pub trace_id: Option<Uuid>,
pub subcall_provider: Option<Arc<dyn Provider>>,
pub subcall_model: Option<String>,
}