use crate::rlm::RlmResult;
use super::summary_text::{clamp_tokens, strip_stats_header};
pub fn try_bounded_summary(result: &RlmResult, target_tokens: usize) -> Option<String> {
if !result.success {
return None;
}
if result.stats.output_tokens < degraded_floor(result.stats.input_tokens) {
return None;
}
let clean = strip_stats_header(&result.processed);
let trimmed = clean.trim();
if trimmed.is_empty() {
return None;
}
Some(clamp_tokens(trimmed, target_tokens))
}
pub(super) fn degraded_floor(input_tokens: usize) -> usize {
if input_tokens < 256 {
1
} else {
(input_tokens / 1000).max(50)
}
}