pub fn format_prefix(token: &str) -> String {
format!("<system-reminder-{token}>\nThe user sent a new message while you were working:\n")
}
pub fn format_suffix(token: &str) -> String {
format!("\n\n</system-reminder-{token}>\n\n")
}
pub fn extract_tokens(text: &str) -> Vec<String> {
static RE: std::sync::OnceLock<regex::Regex> = std::sync::OnceLock::new();
let re = RE.get_or_init(|| {
regex::Regex::new(
r"<system-reminder-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})>",
)
.expect("static regex pattern is well-formed")
});
re.captures_iter(text)
.map(|c| c.get(1).expect("group 1 is present in pattern").as_str().to_string())
.collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn format_and_extract_round_trip() {
let token = "12345678-1234-1234-1234-1234567890ab";
let prefix = format_prefix(token);
let extracted = extract_tokens(&prefix);
assert_eq!(extracted, vec![token.to_string()]);
}
#[test]
fn no_match_on_unrelated_text() {
assert!(extract_tokens("plain old tool output").is_empty());
assert!(extract_tokens("(id: bogus)").is_empty());
assert!(extract_tokens("<system-reminder>\nDifferent text\n").is_empty());
}
#[test]
fn extracts_multiple_tokens() {
let t1 = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa";
let t2 = "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb";
let body = format!(
"{p1}block one{s1}{p2}block two{s2}",
p1 = format_prefix(t1),
p2 = format_prefix(t2),
s1 = format_suffix(t1),
s2 = format_suffix(t2),
);
let tokens = extract_tokens(&body);
assert_eq!(tokens, vec![t1.to_string(), t2.to_string()]);
}
#[test]
fn closing_tag_token_is_not_extracted() {
let token = "12345678-1234-1234-1234-1234567890ab";
let body =
format!("{}body{}", format_prefix(token), format_suffix(token));
assert_eq!(extract_tokens(&body), vec![token.to_string()]);
}
#[test]
fn uppercase_hex_does_not_match() {
let prefix = "<system-reminder-ABCDEF01-1234-1234-1234-1234567890AB>";
assert!(extract_tokens(prefix).is_empty());
}
}