Skip to main content

oxios_kernel/kernel_handle/
compression_api.rs

1//! CompressionApi — facade for session context compression.
2
3use std::sync::Arc;
4
5use crate::compression::CompressionService;
6use crate::state_store::Session;
7
8/// Facade for session context compression (LLM summaries).
9#[derive(Clone)]
10pub struct CompressionApi {
11    service: Arc<CompressionService>,
12}
13
14impl CompressionApi {
15    /// Create from a shared CompressionService.
16    pub fn new(service: Arc<CompressionService>) -> Self {
17        Self { service }
18    }
19
20    /// Trigger background compression for a session.
21    pub fn spawn_compress(&self, session_id: String) {
22        self.service.spawn_compress(session_id)
23    }
24
25    /// Check if a session needs compression.
26    pub fn should_compress(&self, session: &Session) -> bool {
27        self.service.should_compress(session)
28    }
29
30    /// Run compression synchronously (for testing / manual trigger).
31    pub async fn compress_now(&self, session_id: &str) -> anyhow::Result<()> {
32        self.service.compress(session_id).await
33    }
34}