use crate::error::Result;
pub fn validate_url(url: &str) -> Result<String> {
let parsed = url::Url::parse(url)
.map_err(|e| crate::error::Error::Translation(format!("Invalid URL: {}", e)))?;
if parsed.scheme().is_empty() || parsed.host_str().is_none() {
return Err(crate::error::Error::Translation("URL must have a scheme and host".into()));
}
Ok(parsed.to_string())
}
pub fn extract_tool_name(method: &str) -> Option<String> {
method.split(':').last().map(|s| s.to_string())
}
pub fn extract_agent_url(method: &str) -> Option<String> {
method.split(':').next().map(|s| s.to_string())
}
pub fn normalize_task_id(task_id: &str) -> String {
if uuid::Uuid::parse_str(task_id).is_err() {
return uuid::Uuid::new_v4().to_string();
}
task_id.to_string()
}