Skip to main content

phi_core/context/
mod.rs

1//! Context window management — smart truncation and token counting.
2//!
3//! This module provides:
4//! - Token estimation (fast, no external deps)
5//! - Tiered compaction (tool output truncation → turn summarization → full summary)
6//! - Non-destructive compaction overlays (CompactionBlock on LoopRecord)
7//! - Execution limits (max turns, tokens, duration)
8//!
9//! Sub-modules:
10//! - [`token`] — Token estimation functions
11//! - [`config`] — ContextConfig, CompactionConfig, CompactionScope
12//! - [`tracker`] — ContextTracker (hybrid real+estimated tracking)
13//! - [`compaction`] — CompactionBlock, CompactedSection, TurnRange, TurnMap
14//! - [`strategy`] — CompactionStrategy, BlockCompactionStrategy, DefaultBlockCompaction
15//! - [`compact_messages`] — Legacy tiered compaction (level 1/2/3)
16//! - [`execution`] — ExecutionLimits, ExecutionTracker
17//! - [`orchestration`] — compact_session_loops, build_context_from_session
18
19pub mod compact_messages;
20pub mod compaction;
21pub mod config;
22pub mod execution;
23pub mod orchestration;
24pub mod skills;
25pub mod strategy;
26pub mod token;
27pub mod tracker;
28
29// ── Re-exports ─────────────────────────────────────────────────────────────
30// All public items re-exported so `use phi_core::context::Foo` continues to work.
31
32pub use compact_messages::{compact_messages, compact_messages_with_counter};
33pub use compaction::{CompactedSection, CompactionBlock, TurnMap, TurnRange};
34pub use config::{CompactionConfig, CompactionScope, ContextConfig};
35pub use execution::{ExecutionLimits, ExecutionTracker};
36pub use orchestration::{build_context_from_session, compact_session_loops};
37pub use skills::SkillSet;
38pub use strategy::{
39    BlockCompactionStrategy, CompactionStrategy, DefaultBlockCompaction, DefaultCompaction,
40};
41pub use token::{estimate_tokens, total_tokens, HeuristicTokenCounter, TokenCounter};
42pub use tracker::ContextTracker;
43
44// truncate_text_head_tail is pub(super) in compact_messages — available
45// within context/ submodules (strategy.rs uses it). Not re-exported at crate root.
46
47#[cfg(test)]
48mod tests;