stakpak-agent-core 0.3.66

Stakpak: Your DevOps AI Agent. Generate infrastructure code, debug Kubernetes, configure CI/CD, automate deployments, without giving an LLM the keys to production.
Documentation
use crate::error::AgentError;
use async_trait::async_trait;
use stakai::{Message, Model};

#[derive(Debug, Clone)]
pub struct CompactionResult {
    pub messages: Vec<Message>,
    pub tokens_before: usize,
    pub tokens_after: usize,
    pub truncated: bool,
}

#[async_trait]
pub trait CompactionEngine: Send + Sync {
    async fn compact(
        &self,
        messages: Vec<Message>,
        model: &Model,
    ) -> Result<CompactionResult, AgentError>;
}

#[derive(Debug, Default)]
pub struct PassthroughCompactionEngine;

#[async_trait]
impl CompactionEngine for PassthroughCompactionEngine {
    async fn compact(
        &self,
        messages: Vec<Message>,
        _model: &Model,
    ) -> Result<CompactionResult, AgentError> {
        let token_like_count = messages
            .iter()
            .filter_map(stakai::Message::text)
            .map(|text| text.split_whitespace().count())
            .sum();

        Ok(CompactionResult {
            messages,
            tokens_before: token_like_count,
            tokens_after: token_like_count,
            truncated: false,
        })
    }
}