pub fn sml_escape(s: &str) -> String {
let mut out = String::with_capacity(s.len());
for ch in s.chars() {
match ch {
'<' => out.push_str("<"),
'>' => out.push_str(">"),
'&' => out.push_str("&"),
'"' => out.push_str("""),
'\'' => out.push_str("'"),
_ => out.push(ch),
}
}
out
}
pub fn hermes_sanitize(description: &str) -> (String, &'static str) {
let mut cleaned = description
.replace("</tool>", "</tool>")
.replace("<tool>", "<tool>")
.replace("</parameters>", "</parameters>");
cleaned = cleaned.trim().to_string();
let fence = if cleaned.contains("```") {
"~~~"
} else {
"```"
};
(cleaned, fence)
}
pub fn llama31_sanitize(description: &str) -> String {
let mut out = String::with_capacity(description.len());
let bytes = description.as_bytes();
let mut i = 0;
while i < bytes.len() {
if i + 1 < bytes.len() && &bytes[i..=i + 1] == b"<|" {
let rest = &description[i..];
if let Some(end) = rest.find("|>") {
i += end + 2;
continue;
}
}
let ch = description[i..].chars().next().expect("non-empty");
out.push(ch);
i += ch.len_utf8();
}
out
}
pub fn markdown_fence(content: &str) -> &'static str {
if content.contains("```") {
"~~~"
} else {
"```"
}
}
pub fn compact_json(value: &serde_json::Value) -> String {
serde_json::to_string(value).unwrap_or_else(|_| "{}".to_string())
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn sml_escape_handles_angle_brackets() {
assert_eq!(sml_escape("a<b"), "a<b");
assert_eq!(sml_escape("</tool>"), "</tool>");
assert_eq!(sml_escape("a & b"), "a & b");
assert_eq!(sml_escape("\"quoted\""), ""quoted"");
}
#[test]
fn hermes_sanitize_strips_tool_tags() {
let (cleaned, _) = hermes_sanitize("Post to </tool> and <tool>");
assert!(!cleaned.contains("</tool>"));
assert!(!cleaned.contains("<tool>"));
}
#[test]
fn hermes_sanitize_picks_tilde_fence_on_collision() {
let (_, fence) = hermes_sanitize("here is a ``` triple backtick");
assert_eq!(fence, "~~~");
let (_, fence) = hermes_sanitize("no collision");
assert_eq!(fence, "```");
}
#[test]
fn llama31_strips_pipe_tokens() {
let cleaned = llama31_sanitize("Use <|python_tag|>print<|eom_id|> to run code");
assert!(!cleaned.contains("<|"));
assert!(!cleaned.contains("|>"));
assert!(cleaned.contains("Use"));
assert!(cleaned.contains("print"));
assert!(cleaned.contains("to run code"));
}
#[test]
fn llama31_preserves_unicode() {
let cleaned = llama31_sanitize("description with emoji 🔥 and <|bad|>");
assert!(cleaned.contains("🔥"));
assert!(!cleaned.contains("<|bad|>"));
}
#[test]
fn markdown_fence_avoids_collision() {
assert_eq!(markdown_fence("simple prose"), "```");
assert_eq!(markdown_fence("```inline fence```"), "~~~");
}
}