lha 1.0.6

Long-Horizon Agent command-line package that installs the lha binary.
Documentation
use super::StrategyOutput;
use crate::product::agent::input_slimming::InputSlimmingOptions;
use crate::product::agent::input_slimming::InputSlimmingStrategy;
use crate::product::agent::truncate::TruncationPolicy;
use crate::product::agent::truncate::truncate_text;

pub(super) fn plain_text_head_tail(
    text: &str,
    options: InputSlimmingOptions,
) -> Option<StrategyOutput> {
    let truncated = truncate_text(text, TruncationPolicy::Tokens(options.target_tokens));
    if truncated == text {
        return None;
    }
    Some(StrategyOutput {
        strategy: InputSlimmingStrategy::PlainTextHeadTail,
        body: truncated,
    })
}

#[cfg(test)]
mod tests {
    use super::*;
    use pretty_assertions::assert_eq;

    #[test]
    fn plain_text_strategy_emits_head_tail_body() {
        let text = "abcdef".repeat(2_000);

        let output =
            plain_text_head_tail(&text, InputSlimmingOptions::default()).expect("strategy output");

        assert_eq!(output.strategy, InputSlimmingStrategy::PlainTextHeadTail);
        assert!(output.body.contains("truncated"));
    }
}