microloop 0.2.0

Ultra-fast runtime safety layer for autonomous agents — detects agent tool call loops before they burn API credits
Documentation
use alloc::string::String;
use alloc::string::ToString;
use alloc::vec::Vec;
use serde_json::Value;

pub fn strip_volatile_fields(value: &mut Value, paths: &[String]) {
    for path_str in paths {
        let segments = parse_json_path(path_str);
        if segments.is_empty() {
            continue;
        }
        let (last, parent_segs) = segments.split_last().unwrap();
        let parent_path = alloc::format!("/{}", parent_segs.join("/"));

        let target = if parent_segs.is_empty() {
            Some(&mut *value)
        } else {
            value.pointer_mut(&parent_path)
        };

        if let Some(Value::Object(map)) = target {
            map.remove(last);
        }
    }
}

fn parse_json_path(path: &str) -> Vec<String> {
    let s = if let Some(stripped) = path.strip_prefix("$.") {
        stripped
    } else {
        path
    };
    s.split('.').map(|p| p.to_string()).collect()
}