chat-mlx 0.0.0

Local-inference chat-rs provider (and CLI) for MiniCPM5 / Llama / Qwen models on Apple Silicon via MLX.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
pub mod json;
pub mod reasoning;
pub mod structured;
pub mod tool;

/// Length of the longest suffix of `s` that is a proper prefix of `marker`.
/// Lets incremental scanners hold back a partial marker split across chunk
/// boundaries (e.g. `<tool_ca` then `ll>`).
pub(crate) fn partial_suffix_len(s: &str, marker: &str) -> usize {
    let max = marker.len().min(s.len());
    for k in (1..=max).rev() {
        let start = s.len() - k;
        if s.is_char_boundary(start) && marker.as_bytes().starts_with(&s.as_bytes()[start..]) {
            return k;
        }
    }
    0
}