pub struct ContextManager {
pub budget: Option<ContextBudget>,
pub soft_compaction_threshold: f32,
pub hard_compaction_threshold: f32,
pub compaction_preserve_tail: usize,
pub prune_protect_tokens: usize,
pub compression: CompressionConfig,
pub routing: StoreRoutingConfig,
pub store_routing_provider: Option<Arc<AnyProvider>>,
/* private fields */
}Expand description
Per-session context lifecycle manager.
Holds the token budget, compaction lifecycle state, and routing configuration.
Callers in zeph-core drive the state machine via advance_turn, compaction_tier,
and related accessors; the assembler reads the budget via build_router and field access.
Fields§
§budget: Option<ContextBudget>Token budget for this session. None until configured via apply_budget_config.
soft_compaction_threshold: f32Soft compaction threshold (default 0.70): prune tool outputs + apply deferred summaries.
hard_compaction_threshold: f32Hard compaction threshold (default 0.90): full LLM-based summarization.
compaction_preserve_tail: usizeNumber of recent messages preserved during hard compaction.
prune_protect_tokens: usizeToken count protected from pruning during soft compaction.
compression: CompressionConfigCompression configuration for proactive compression.
routing: StoreRoutingConfigRouting configuration for query-aware memory routing.
store_routing_provider: Option<Arc<AnyProvider>>Resolved provider for LLM/hybrid routing. None when strategy is Heuristic
or when the named provider could not be resolved from the pool.
Implementations§
Source§impl ContextManager
impl ContextManager
Sourcepub fn apply_budget_config(
&mut self,
budget_tokens: usize,
reserve_ratio: f32,
hard_compaction_threshold: f32,
compaction_preserve_tail: usize,
prune_protect_tokens: usize,
soft_compaction_threshold: f32,
compaction_cooldown_turns: u8,
)
pub fn apply_budget_config( &mut self, budget_tokens: usize, reserve_ratio: f32, hard_compaction_threshold: f32, compaction_preserve_tail: usize, prune_protect_tokens: usize, soft_compaction_threshold: f32, compaction_cooldown_turns: u8, )
Apply budget and compaction thresholds from config.
Must be called once after config is resolved. Safe to call again when config reloads.
Sourcepub fn reset_compaction(&mut self)
pub fn reset_compaction(&mut self)
Reset compaction state for a new conversation.
Clears cooldown, exhaustion, and turn counters so the new conversation starts with a clean compaction slate.
Sourcepub fn compaction_tier(&self, cached_tokens: u64) -> CompactionTier
pub fn compaction_tier(&self, cached_tokens: u64) -> CompactionTier
Determine which compaction tier applies for the given token count.
Hardwhencached_tokens > budget * hard_compaction_thresholdSoftwhencached_tokens > budget * soft_compaction_thresholdNoneotherwise (or when no budget is set)
Sourcepub fn compaction_state(&self) -> CompactionState
pub fn compaction_state(&self) -> CompactionState
Check if proactive compression should fire for the current turn.
Returns Some((threshold_tokens, max_summary_tokens)) when proactive compression
should be triggered, None otherwise.
For CompressionStrategy::Focus, the threshold is the soft-compaction fraction
of the budget (same gate used by mid-iteration soft compaction). The
max_summary_tokens element is unused on the Focus path — the auto-consolidation
function uses FocusConfig.max_knowledge_tokens / 2 instead.
Returns the current compaction lifecycle state.
Sourcepub fn compaction_state_mut(&mut self) -> &mut CompactionState
pub fn compaction_state_mut(&mut self) -> &mut CompactionState
Returns a mutable reference to the compaction lifecycle state.
Sourcepub fn set_compaction_state(&mut self, state: CompactionState)
pub fn set_compaction_state(&mut self, state: CompactionState)
Replaces the compaction lifecycle state.
Sourcepub fn compaction_cooldown_turns(&self) -> u8
pub fn compaction_cooldown_turns(&self) -> u8
Returns the number of cooling turns enforced after a hard compaction.
Sourcepub fn set_compaction_cooldown_turns(&mut self, turns: u8)
pub fn set_compaction_cooldown_turns(&mut self, turns: u8)
Sets the number of cooling turns enforced after a hard compaction.
Sourcepub fn turns_since_last_hard_compaction(&self) -> Option<u64>
pub fn turns_since_last_hard_compaction(&self) -> Option<u64>
Returns the number of user-message turns since the last hard compaction, if any.
Sourcepub fn turns_since_last_hard_compaction_mut(&mut self) -> &mut Option<u64>
pub fn turns_since_last_hard_compaction_mut(&mut self) -> &mut Option<u64>
Returns a mutable reference to the turns-since-last-hard-compaction counter.
Sourcepub fn set_turns_since_last_hard_compaction(&mut self, value: Option<u64>)
pub fn set_turns_since_last_hard_compaction(&mut self, value: Option<u64>)
Sets the turns-since-last-hard-compaction counter.