use thiserror::Error;
#[derive(Debug, Error)]
pub enum CompactionError {
#[error("token estimation failed")]
TokenEstimationFailed,
#[error("compaction failed: {0}")]
CompactionFailed(String),
#[error("circuit breaker tripped after repeated compaction failures")]
CircuitBreakerTripped,
#[error("provider error: {0}")]
ProviderError(String),
}
pub type CompactionResult<T> = Result<T, CompactionError>;
#[derive(Debug, Clone, PartialEq)]
pub enum CompactionStatus {
Applied {
layers_applied: Vec<&'static str>,
tokens_before: u32,
tokens_after: u32,
},
Skipped {
reason: &'static str,
tokens_current: u32,
},
Failed {
error: String,
},
}