use oxi_ai::CompactedContext as AiCompactedContext;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum CompactionEvent {
Triggered { context_tokens: usize, iteration: usize },
Started { message_count: usize },
Completed { result: CompactedContext, duration_ms: u64 },
Skipped { reason: String },
Failed { error: String },
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CompactedContext {
pub summary: String,
pub kept_messages: Vec<oxi_ai::Message>,
pub compacted_count: usize,
}
impl From<AiCompactedContext> for CompactedContext {
fn from(ctx: AiCompactedContext) -> Self {
Self {
summary: ctx.summary,
kept_messages: ctx.kept_messages,
compacted_count: ctx.compacted_count,
}
}
}