lean-ctx 3.9.19

Context Runtime for AI Agents with CCP. 79 MCP tools, 10 read modes, 95+ compression patterns, cross-session memory (CCP), persistent AI knowledge with temporal facts + contradiction detection, multi-agent context sharing, LITM-aware positioning, AAAK compact format, adaptive compression with Thompson Sampling bandits. Supports 24+ AI tools. Reduces LLM token consumption by up to 99%.
use std::path::PathBuf;

#[derive(Debug, Clone, PartialEq)]
pub struct TinyModelConfig {
    pub layers: usize,
    pub hidden_size: usize,
    pub attention_heads: usize,
    pub max_seq_len: usize,
    pub vocab_size: usize,
    pub quantization: String,
    pub target_size_mb: f64,
    pub languages: Vec<String>,
}

impl Default for TinyModelConfig {
    fn default() -> Self {
        Self {
            layers: 2,
            hidden_size: 128,
            attention_heads: 2,
            max_seq_len: 96,
            vocab_size: 8192,
            quantization: "int8".into(),
            target_size_mb: 5.0,
            languages: ["en", "de", "fr", "es"].map(String::from).to_vec(),
        }
    }
}

#[derive(Debug, Clone, PartialEq)]
pub struct ModelManifest {
    pub version: String,
    pub architecture: String,
    pub training_samples: usize,
    pub accuracy_baseline: f64,
    pub created_at: String,
}

pub fn model_pack_path() -> PathBuf {
    crate::core::paths::cache_dir()
        .unwrap_or_else(|_| PathBuf::from("."))
        .join("models/triage-tiny-v1")
}

pub fn manifest() -> ModelManifest {
    ModelManifest {
        version: "leanctx-triage-tiny-v1".into(),
        architecture: "transformer-2l-h128-a2-int8".into(),
        training_samples: 0,
        accuracy_baseline: 0.0,
        created_at: "pending-training".into(),
    }
}