pub fn default_llm_user_agent() -> String {
let raw = env!("CARGO_PKG_VERSION");
let mut parts = raw.split('.');
let major = parts.next().unwrap_or(raw);
let minor = parts.next().unwrap_or("0");
format!("MicroClaw/{major}.{minor}")
}
pub fn llm_user_agent(configured: &str) -> String {
let trimmed = configured.trim();
if trimmed.is_empty() {
default_llm_user_agent()
} else {
trimmed.to_string()
}
}
#[cfg(test)]
mod tests {
use super::{default_llm_user_agent, llm_user_agent};
#[test]
fn test_llm_user_agent_default() {
let ua = default_llm_user_agent();
assert!(ua.starts_with("MicroClaw/"));
}
#[test]
fn test_llm_user_agent_uses_configured_value() {
assert_eq!(llm_user_agent("OpenClaw/0.1.0"), "OpenClaw/0.1.0");
}
#[test]
fn test_llm_user_agent_empty_uses_default() {
assert_eq!(llm_user_agent(" "), default_llm_user_agent());
}
}