bctx_forge/tracker/
metrics.rs1use 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}