pub fn format_agent_id(agent_name: &str, team_name: &str) -> String {
format!("{}@{}", agent_name, team_name)
}
pub fn parse_agent_id(agent_id: &str) -> Option<(String, String)> {
let at_index = agent_id.find('@')?;
Some((
agent_id[..at_index].to_string(),
agent_id[at_index + 1..].to_string(),
))
}
pub fn generate_request_id(request_type: &str, agent_id: &str) -> String {
let timestamp = std::time::SystemTime::now()
.duration_since(std::time::UNIX_EPOCH)
.unwrap()
.as_millis();
format!("{}-{}@{}", request_type, timestamp, agent_id)
}
pub fn parse_request_id(request_id: &str) -> Option<(String, u64, String)> {
let at_index = request_id.rfind('@')?;
let agent_id = request_id[at_index + 1..].to_string();
let prefix = &request_id[..at_index];
let last_dash_index = prefix.rfind('-')?;
let request_type = prefix[..last_dash_index].to_string();
let timestamp_str = prefix[last_dash_index + 1..].to_string();
let timestamp: u64 = timestamp_str.parse().ok()?;
Some((request_type, timestamp, agent_id))
}