pub struct CompressionPipeline { /* private fields */ }Expand description
Compression pipeline that orchestrates all modules.
Implementations§
Source§impl CompressionPipeline
impl CompressionPipeline
Sourcepub fn new_rule_only(config: CompressionConfig) -> Self
pub fn new_rule_only(config: CompressionConfig) -> Self
Create a new pipeline without AI assistance.
Sourcepub fn new_with_ai(
config: CompressionConfig,
fast_model: Box<dyn Provider>,
) -> Self
pub fn new_with_ai( config: CompressionConfig, fast_model: Box<dyn Provider>, ) -> Self
Create a new pipeline with AI assistance.
Sourcepub fn new_with_full_ai(
config: CompressionConfig,
fast_model: Box<dyn Provider>,
main_model: Box<dyn Provider>,
) -> Self
pub fn new_with_full_ai( config: CompressionConfig, fast_model: Box<dyn Provider>, main_model: Box<dyn Provider>, ) -> Self
Create a new pipeline with full AI support.
Sourcepub fn should_compress(
&self,
token_usage: u32,
context_window: u32,
) -> (bool, ThresholdLevel)
pub fn should_compress( &self, token_usage: u32, context_window: u32, ) -> (bool, ThresholdLevel)
Check if compression should run (threshold check).
Sourcepub fn should_time_based_clear(messages: &[Message]) -> bool
pub fn should_time_based_clear(messages: &[Message]) -> bool
Check if time-based microcompact should trigger. When gap since last assistant exceeds threshold, cache has expired.
Sourcepub fn time_based_microcompact(messages: &[Message]) -> Vec<Message>
pub fn time_based_microcompact(messages: &[Message]) -> Vec<Message>
Execute time-based microcompact: clear old tool results.
Sourcepub fn strip_thinking(messages: &[Message]) -> Vec<Message>
pub fn strip_thinking(messages: &[Message]) -> Vec<Message>
Strip thinking blocks from messages (zero-cost compression). Thinking blocks consume significant tokens and can often be removed for context continuity.
Sourcepub fn is_compactable_tool(tool_name: &str) -> bool
pub fn is_compactable_tool(tool_name: &str) -> bool
Check if a tool name is compactable.
Sourcepub fn clear_tool_results(
messages: &[Message],
_tool_names: &[&str],
) -> Vec<Message>
pub fn clear_tool_results( messages: &[Message], _tool_names: &[&str], ) -> Vec<Message>
Clear specific tool types (more targeted than time-based).
Sourcepub fn full_microcompact(messages: &[Message]) -> Vec<Message>
pub fn full_microcompact(messages: &[Message]) -> Vec<Message>
Combined microcompact: clear all compactable tool results + strip thinking blocks.
Sourcepub fn validate_compression(
messages: &[Message],
_original_deps: &DependencyGraph,
) -> Vec<ValidationError>
pub fn validate_compression( messages: &[Message], _original_deps: &DependencyGraph, ) -> Vec<ValidationError>
Validate compressed messages for integrity.
Sourcepub fn is_valid_compression(
messages: &[Message],
original_deps: &DependencyGraph,
) -> bool
pub fn is_valid_compression( messages: &[Message], original_deps: &DependencyGraph, ) -> bool
Check if compression is valid (no errors).
Sourcepub async fn execute(
&mut self,
messages: &[Message],
ai_mode: AiCompressionMode,
token_usage: u32,
context_window: u32,
) -> Result<CompressionOutcome>
pub async fn execute( &mut self, messages: &[Message], ai_mode: AiCompressionMode, token_usage: u32, context_window: u32, ) -> Result<CompressionOutcome>
Execute the full compression pipeline.
Sourcepub async fn execute_with_circuit_breaker(
&mut self,
messages: &[Message],
ai_mode: AiCompressionMode,
token_usage: u32,
context_window: u32,
) -> Result<CompressionOutcome>
pub async fn execute_with_circuit_breaker( &mut self, messages: &[Message], ai_mode: AiCompressionMode, token_usage: u32, context_window: u32, ) -> Result<CompressionOutcome>
Execute with error handling and circuit breaker.
Sourcepub fn execute_sync(&self, messages: &[Message]) -> Result<Vec<Message>>
pub fn execute_sync(&self, messages: &[Message]) -> Result<Vec<Message>>
Execute compression synchronously (rule-only mode).
Sourcepub fn score_only(&self, messages: &[Message]) -> Vec<ScoredMessage>
pub fn score_only(&self, messages: &[Message]) -> Vec<ScoredMessage>
Score messages without compressing.