Skip to main content

bamboo_compression/
lib.rs

1//! Token budget management for LLM conversations.
2//!
3//! This module provides token budget management to prevent context window overflow
4//! while maintaining conversation continuity. It implements a hybrid approach
5//! combining rolling summary with recent message windowing.
6//!
7//! # Key Components
8//!
9//! - [`types`]: Core types like `TokenBudget`, `BudgetStrategy`, `PreparedContext`
10//! - [`counter`]: Token counting via BPE tokenizer (tiktoken) or heuristic estimation
11//! - [`segmenter`]: Message segmentation preserving tool-call atomicity
12//! - [`limits`]: Model context window limits registry
13//! - [`preparation`]: Context preparation with budget enforcement
14//! - [`summarizer`]: Conversation summarization for context preservation
15
16pub mod compression_tooling;
17pub mod counter;
18pub mod limits;
19pub mod preparation;
20pub mod retrieval_window;
21pub mod segmenter;
22mod skill_history;
23pub mod summarizer;
24pub mod types;
25
26pub use compression_tooling::{
27    active_messages_for_budget, apply_compression_plan, build_compression_plan_with_summary,
28    build_forced_compression_candidate_plan,
29    build_forced_compression_candidate_plan_with_fixed_tokens,
30    build_forced_compression_plan_with_summary,
31    build_message_summary_candidate_plan_with_fixed_tokens, build_summary_prompt,
32    compression_summary_message, context_window_usage_percent,
33    estimate_context_compression_exposure, estimate_context_compression_exposure_with_fixed_tokens,
34    finalize_compression_candidate_plan, normalized_summary_target_ratio,
35    normalized_trigger_percent, summary_source_messages, CompressionCandidatePlan, CompressionPlan,
36    CompressionPlanError, ContextCompressionExposure, DEFAULT_SUMMARY_TARGET_RATIO,
37};
38pub use counter::{
39    HeuristicTokenCounter, ProviderVisibleToolEstimate, TiktokenTokenCounter, TokenCounter,
40};
41pub use limits::{create_budget_for_model, ModelLimitsRegistry};
42pub use preparation::{
43    estimate_prompt_cache_savings, estimate_prompt_cache_savings_with_fixed_tokens,
44    prepare_hybrid_context, prepare_hybrid_context_with_fixed_tokens,
45};
46pub use retrieval_window::{
47    apply_retrieval_window_plan, apply_retrieval_window_plan_with_trigger,
48    build_retrieval_window_candidate_plan, build_retrieval_window_candidate_plan_with_fixed_tokens,
49    build_retrieval_window_candidate_plan_with_token_accounting,
50    build_retrieval_window_critical_overflow_plan_with_token_accounting,
51    effective_retrieval_window_target_tokens, RetrievalWindowApplyError,
52    RetrievalWindowApplyResult, RetrievalWindowCandidatePlan, RetrievalWindowPlanError,
53    RetrievalWindowPolicy, RetrievalWindowTokenAccounting,
54};
55pub use segmenter::MessageSegmenter;
56pub use summarizer::{HeuristicSummarizer, Summarizer, SummaryManager, SummaryTrigger};
57pub use types::{BudgetError, BudgetStrategy, PreparedContext, TokenBudget, TokenUsageBreakdown};