lean-ctx 3.9.17

Context Runtime for AI Agents with CCP. 71 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%.
Documentation
#[cfg(test)]
mod tests {
    use std::sync::MutexGuard;

    use crate::core::context_kernel::{
        ctx_read_dedup, envelope_wiring, kernel_config, list_tools_opt, live_dashboard, mcp_bridge,
        proxy_bridge, startup,
    };

    fn isolated() -> MutexGuard<'static, ()> {
        let guard = kernel_config::KERNEL_TEST_LOCK
            .lock()
            .unwrap_or_else(std::sync::PoisonError::into_inner);
        kernel_config::reset_features();
        crate::core::context_kernel::dedup_wiring::reset_dedup();
        crate::core::context_kernel::schema_wiring::reset_schema_state();
        envelope_wiring::reset_evidence();
        proxy_bridge::reset_state();
        mcp_bridge::reset_mcp_state();
        startup::reset();
        crate::core::context_kernel::ctx_read_dedup::reset();
        list_tools_opt::reset();
        guard
    }

    fn long_content() -> String {
        "pub fn wired_context() -> &'static str { \"context\" }\n".repeat(100)
    }

    fn tools() -> Vec<(String, String, usize)> {
        (0..10)
            .map(|index| (format!("tool_{index}"), "d".repeat(4_000), 1_000))
            .collect()
    }

    fn proxy_data() -> proxy_bridge::ProxyRequestData {
        proxy_bridge::ProxyRequestData {
            input_tokens: 100,
            output_tokens: 20,
            tokens_saved: 40,
            request_count: 1,
            ..proxy_bridge::ProxyRequestData::default()
        }
    }

    fn mcp_data(call_number: usize) -> mcp_bridge::McpCallData {
        mcp_bridge::McpCallData {
            tool_name: "ctx_read".to_owned(),
            input_tokens: 80,
            output_tokens: 20,
            call_number,
            ..mcp_bridge::McpCallData::default()
        }
    }

    fn process_proxy() {
        let data = proxy_data();
        let result = proxy_bridge::process_proxy_request(&data);
        envelope_wiring::process_proxy_evidence(&data, &result);
    }

    fn process_mcp(call_number: usize) {
        let data = mcp_data(call_number);
        mcp_bridge::record_mcp_call(&data);
        envelope_wiring::process_mcp_evidence(&data);
    }

    #[test]
    fn startup_initializes_kernel() {
        let _guard = isolated();

        startup::initialize();

        assert!(startup::is_initialized());
        assert!(kernel_config::is_enabled());
    }

    #[test]
    fn dedup_hook_detects_repeated_content() {
        let _guard = isolated();
        let content = long_content();

        assert_eq!(ctx_read_dedup::try_dedup("a.rs", &content, false), None);
        let stub = ctx_read_dedup::try_dedup("a.rs", &content, false)
            .expect("repeated content should produce a deduplication stub");

        assert!(stub.len() < content.len());
    }

    #[test]
    fn schema_opt_works_for_cursor() {
        let _guard = isolated();
        let original = tools();
        let before: usize = original.iter().map(|tool| tool.1.len()).sum();

        let optimized = list_tools_opt::optimize_descriptions(original, "cursor");
        let after: usize = optimized.iter().map(|tool| tool.1.len()).sum();

        assert!(optimized.len() <= 10, "should not exceed original count");
        assert!(after < before);
        assert_eq!(
            list_tools_opt::schema_opt_summary().optimizations_applied,
            1
        );
    }

    #[test]
    fn kernel_disabled_all_hooks_noop() {
        let _guard = isolated();
        let features = kernel_config::KernelFeatures {
            enabled: false,
            ..kernel_config::KernelFeatures::default()
        };
        kernel_config::update_features(features);
        let content = long_content();

        assert_eq!(
            ctx_read_dedup::try_dedup("disabled.rs", &content, false),
            None
        );
        assert_eq!(
            ctx_read_dedup::try_dedup("disabled.rs", &content, false),
            None
        );
        assert!(!list_tools_opt::should_optimize_for_client("cursor"));
        process_proxy();
        process_mcp(1);
        assert_eq!(
            envelope_wiring::evidence_summary(),
            envelope_wiring::EvidenceSummary::default()
        );
    }

    #[test]
    fn evidence_records_after_activity() {
        let _guard = isolated();

        for _ in 0..3 {
            process_proxy();
        }
        for call_number in 1..=2 {
            process_mcp(call_number);
        }

        let summary = envelope_wiring::evidence_summary();
        assert_eq!(summary.proxy_requests, 3);
        assert_eq!(summary.mcp_calls, 2);
        assert_eq!(summary.total_envelopes, 5);
        assert_eq!(summary.chain_entries, 5);
    }

    #[test]
    fn full_lifecycle() {
        let _guard = isolated();
        startup::initialize();
        let content = long_content();

        assert_eq!(
            ctx_read_dedup::try_dedup("lifecycle.rs", &content, false),
            None
        );
        assert!(ctx_read_dedup::try_dedup("lifecycle.rs", &content, false).is_some());
        let optimized = list_tools_opt::optimize_descriptions(tools(), "cursor");
        process_proxy();
        process_mcp(1);

        let dashboard = live_dashboard::snapshot();
        assert!(optimized.len() <= 10, "should not exceed original count");
        assert!(dashboard.usage.total_requests > 0);
        assert!(dashboard.chain.total_entries > 0);
        assert!(!live_dashboard::format_summary().is_empty());
    }
}