use crate::state::AppState;
use crw_monitor::config::MonitorConfig;
use crw_monitor::runner::EngineSource;
use crw_monitor::{Scheduler, Store};
use std::sync::Arc;
pub fn boot(state: &AppState, cfg: MonitorConfig) -> Result<tokio::task::JoinHandle<()>, String> {
let store = Store::open(&cfg.db_path).map_err(|e| e.to_string())?;
let store = Arc::new(store);
let source = Arc::new(EngineSource::new(
state.config.clone(),
state.renderer.clone(),
&cfg,
));
let default_llm = state.config.extraction.llm.clone();
let scheduler = Scheduler::new(store, source, cfg, default_llm);
Ok(scheduler.spawn())
}