llman 0.0.30

A tool for managing LLM application rules(prompts) ...
Documentation
#[derive(Debug, Default, Clone)]
pub struct SecretSet {
    secrets: Vec<String>,
}

impl SecretSet {
    pub fn new() -> Self {
        Self {
            secrets: Vec::new(),
        }
    }

    pub fn push(&mut self, secret: String) {
        if secret.trim().is_empty() {
            return;
        }
        if !self.secrets.contains(&secret) {
            self.secrets.push(secret);
        }
    }

    pub fn redact(&self, input: &str) -> String {
        let mut out = input.to_string();
        for s in &self.secrets {
            if s.is_empty() {
                continue;
            }
            out = out.replace(s, "[REDACTED]");
        }
        out
    }

    pub fn max_len(&self) -> usize {
        self.secrets.iter().map(|s| s.len()).max().unwrap_or(0)
    }
}