tinyjuice 0.2.1

Pluggable token compression for OpenHuman.
Documentation
use serde::{Deserialize, Serialize};

use crate::{TinyJuiceError, TinyJuiceResult};

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct CompressionConfig {
    pub target_ratio: f32,
    pub preserve_system_instructions: bool,
}

impl CompressionConfig {
    pub fn validate(&self) -> TinyJuiceResult<()> {
        if self.target_ratio <= 0.0 || self.target_ratio > 1.0 {
            return Err(TinyJuiceError::InvalidTargetRatio);
        }

        Ok(())
    }
}

impl Default for CompressionConfig {
    fn default() -> Self {
        Self {
            target_ratio: 0.2,
            preserve_system_instructions: true,
        }
    }
}