use crate::error::Result;
use crate::llm::types::Message;
use futures::future::BoxFuture;
pub struct CompressionInput {
pub messages: Vec<Message>,
pub token_limit: usize,
pub current_query: Option<String>,
}
pub struct CompressionOutput {
pub messages: Vec<Message>,
pub evicted: Vec<Message>,
}
pub trait ContextCompressor: Send + Sync {
fn compress(&self, input: CompressionInput) -> BoxFuture<'_, Result<CompressionOutput>>;
}
impl ContextCompressor for Box<dyn ContextCompressor> {
fn compress(&self, input: CompressionInput) -> BoxFuture<'_, Result<CompressionOutput>> {
(**self).compress(input)
}
}