Skip to main content

bctx_forge/tracker/
metrics.rs

1use crate::budget::estimator::TokenEstimator;
2
3#[derive(Debug, Clone, Default)]
4pub struct SessionMetrics {
5    pub commands_run: usize,
6    pub tokens_before_total: usize,
7    pub tokens_after_total: usize,
8}
9
10impl SessionMetrics {
11    pub fn record(&mut self, tokens_before: usize, tokens_after: usize) {
12        self.commands_run += 1;
13        self.tokens_before_total += tokens_before;
14        self.tokens_after_total += tokens_after;
15    }
16
17    pub fn savings_pct(&self) -> f64 {
18        TokenEstimator::savings_pct(self.tokens_before_total, self.tokens_after_total)
19    }
20
21    pub fn tokens_saved(&self) -> usize {
22        self.tokens_before_total
23            .saturating_sub(self.tokens_after_total)
24    }
25}