vv-agent 0.6.0

VectorVein agent runtime, SDK, CLI, tools, and workspace backends
Documentation
use super::MemoryManager;
use crate::memory::microcompact::{microcompact, MicrocompactConfig};
use crate::types::Message;

impl MemoryManager {
    pub fn should_preemptive_microcompact(&self, message_length: u64) -> bool {
        let threshold = self.microcompact_trigger_threshold();
        threshold > 0 && message_length > threshold
    }

    pub fn microcompact_messages(
        &self,
        messages: &[Message],
        cycle_index: u32,
    ) -> (Vec<Message>, usize) {
        microcompact(
            messages,
            cycle_index,
            &MicrocompactConfig {
                trigger_ratio: self.config.microcompact_trigger_ratio,
                keep_recent_cycles: self.config.microcompact_keep_recent_cycles,
                min_result_length: self.config.microcompact_min_result_length,
                compactable_tools: self.config.microcompact_compactable_tools.clone(),
            },
        )
    }

    pub fn microcompact_trigger_threshold(&self) -> u64 {
        let ratio = self.config.microcompact_trigger_ratio.clamp(0.0, 1.0);
        (self.autocompact_threshold() as f64 * ratio).floor() as u64
    }
}