magi-code 0.96.2

Repository-aware CLI coding agent for terminal work
Documentation
use crate::mcp::{McpError, McpResult};
use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
use std::collections::BTreeMap;

pub(crate) const REDACTED_HEADER_VALUE: &str = "[REDACTED]";

pub(crate) fn resolve_http_headers(headers: &BTreeMap<String, String>) -> McpResult<HeaderMap> {
    let mut resolved = HeaderMap::new();
    for (name, value) in headers {
        let header_name = HeaderName::from_bytes(name.as_bytes())
            .map_err(|_| McpError::Config(format!("invalid MCP HTTP header name '{name}'")))?;
        let header_value = HeaderValue::from_str(value)
            .map_err(|_| McpError::Config(format!("invalid MCP HTTP header value for '{name}'")))?;
        resolved.insert(header_name, header_value);
    }
    Ok(resolved)
}

pub(crate) fn redact_headers(headers: &BTreeMap<String, String>) -> BTreeMap<String, String> {
    headers
        .keys()
        .map(|name| (name.clone(), REDACTED_HEADER_VALUE.to_string()))
        .collect()
}