use crate::config::Config;
use crate::session::chat::session::ChatSession;
pub struct ContinuationParams<'a> {
pub chat_session: &'a mut ChatSession,
pub config: &'a Config,
pub current_tokens: usize,
}
impl<'a> ContinuationParams<'a> {
pub fn new(
chat_session: &'a mut ChatSession,
config: &'a Config,
current_tokens: usize,
) -> Self {
Self {
chat_session,
config,
current_tokens,
}
}
}
pub fn should_trigger_continuation(params: &ContinuationParams) -> bool {
if params.config.max_session_tokens_threshold == 0 || params.chat_session.continuation_pending {
return false;
}
if params.chat_session.continuation_disabled {
return false;
}
let effective_threshold =
crate::session::chat::context_truncation::calculate_effective_threshold(
params.chat_session,
params.config,
);
params.current_tokens >= effective_threshold
}
pub fn is_continuation_in_progress(chat_session: &ChatSession) -> bool {
chat_session.continuation_pending
}