1use oxi_ai::CompactedContext as AiCompactedContext;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub enum CompactionEvent {
8 Triggered {
10 context_tokens: usize,
12 iteration: usize,
14 },
15 Started {
17 message_count: usize,
19 },
20 Completed {
22 result: CompactedContext,
24 duration_ms: u64,
26 },
27 Skipped {
29 reason: String,
31 },
32 Failed {
34 error: String,
36 },
37}
38
39#[derive(Debug, Clone, Serialize, Deserialize)]
40pub struct CompactedContext {
42 pub summary: String,
44 pub kept_messages: Vec<oxi_ai::Message>,
46 pub compacted_count: usize,
48}
49
50impl From<AiCompactedContext> for CompactedContext {
51 fn from(ctx: AiCompactedContext) -> Self {
52 Self {
53 summary: ctx.summary,
54 kept_messages: ctx.kept_messages,
55 compacted_count: ctx.compacted_count,
56 }
57 }
58}