agent-team-mail-core 1.1.2

Daemon-free core library for local agent team mail workflows.
Documentation
use crate::text::truncate;

const SUMMARY_LIMIT: usize = 100;

pub fn build_summary(message: &str, explicit_summary: Option<String>) -> String {
    if let Some(summary) = explicit_summary.filter(|value| !value.trim().is_empty()) {
        return summary;
    }

    let trimmed = message.trim();
    if trimmed.chars().count() <= SUMMARY_LIMIT {
        return trimmed.to_string();
    }

    let slice = truncate(trimmed, SUMMARY_LIMIT);
    match slice.rfind(char::is_whitespace) {
        Some(index) => format!("{}...", slice[..index].trim_end()),
        None => format!("{slice}..."),
    }
}