magi-code 0.63.1

Repository-aware CLI coding agent for terminal work
Documentation
use std::borrow::Cow;

pub(crate) fn next_sse_event_boundary(buffer: &str) -> Option<(usize, usize)> {
    ["\r\n\r\n", "\n\r\n", "\r\n\n", "\n\n"]
        .into_iter()
        .filter_map(|boundary| buffer.find(boundary).map(|index| (index, boundary.len())))
        .min_by_key(|(index, _)| *index)
}

pub(crate) fn sse_data(raw_event: &str) -> Option<Cow<'_, str>> {
    let mut lines = raw_event.lines().filter_map(|line| {
        line.strip_prefix("data:")
            .map(|payload| Cow::Borrowed(payload.strip_prefix(' ').unwrap_or(payload)))
    });
    let first = lines.next()?;
    let Some(second) = lines.next() else {
        return Some(first);
    };

    let mut data = String::with_capacity(first.len() + 1 + second.len());
    data.push_str(&first);
    data.push('\n');
    data.push_str(&second);
    for line in lines {
        data.push('\n');
        data.push_str(&line);
    }
    Some(Cow::Owned(data))
}

pub(crate) fn diagnostic_snippet(text: &str) -> String {
    let redacted = crate::output::redact_sensitive_text(text).replace('\n', "\\n");
    let mut snippet = redacted.chars().take(200).collect::<String>();
    if redacted.chars().count() > 200 {
        snippet.push_str("...");
    }
    snippet
}

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

    #[test]
    fn next_sse_event_boundary_accepts_lf_crlf_and_mixed_boundaries() {
        assert_eq!(next_sse_event_boundary("data: one\n\n"), Some((9, 2)));
        assert_eq!(next_sse_event_boundary("data: one\r\n\r\n"), Some((9, 4)));
        assert_eq!(next_sse_event_boundary("data: one\n\r\n"), Some((9, 3)));
        assert_eq!(next_sse_event_boundary("data: one\r\n\n"), Some((9, 3)));
        assert_eq!(next_sse_event_boundary("data: one"), None);
    }

    #[test]
    fn next_sse_event_boundary_returns_earliest_boundary() {
        assert_eq!(
            next_sse_event_boundary("data: a\n\ndata: b\r\n\r\n"),
            Some((7, 2))
        );
    }

    #[test]
    fn sse_data_collects_multiline_data_and_strips_one_optional_space() {
        assert_eq!(
            sse_data("event: ignored\ndata:  hello  \ndata:\tthere\t").as_deref(),
            Some(" hello  \n\tthere\t")
        );
    }

    #[test]
    fn sse_data_returns_none_when_event_has_no_data() {
        assert_eq!(sse_data("event: ping\nid: 1"), None);
    }

    #[test]
    fn diagnostic_snippet_redacts_truncates_and_escapes_newlines() {
        let text = format!("first\nsk-test-FAKE\n{}", "x".repeat(260));
        let snippet = diagnostic_snippet(&text);
        assert!(!snippet.contains("sk-test-FAKE"), "{snippet}");
        assert!(snippet.contains("\\n"), "{snippet}");
        assert!(snippet.ends_with("..."), "{snippet}");
        assert!(snippet.chars().count() <= 210, "{snippet}");
    }
}