1use anyhow::Result;
8use cortex_rs_core::{Db, CortexConfig};
9use cortex_rs_memory::MemoryStore;
10use cortex_rs_miner::PatternMiner;
11use tracing::info;
12
13pub fn run_background_jobs(config: &CortexConfig) -> Result<()> {
16 let db_path = config.daemon.db_path();
17
18 let decay_db = Db::open(&db_path)?;
19 let memory = MemoryStore::with_config(
20 decay_db,
21 config.memory.hot_limit,
22 config.memory.cold_threshold_days,
23 config.memory.cold_confidence_max,
24 config.memory.decay_lambda,
25 );
26 let report = memory.decay_pass()?;
27 info!(
28 promoted = report.promoted_to_hot,
29 demoted = report.demoted_to_cold,
30 "decay pass complete"
31 );
32
33 let miner_db = Db::open(&db_path)?;
34 let miner = PatternMiner::new(miner_db);
35 let mine_report = miner.mine_patterns()?;
36 info!(
37 inserted = mine_report.patterns_inserted,
38 updated = mine_report.patterns_updated,
39 "pattern mining complete"
40 );
41
42 Ok(())
43}