magi-code 0.63.4

Repository-aware CLI coding agent for terminal work
Documentation
pub(crate) mod client;
pub(crate) mod headers;
pub(crate) mod http;
pub(crate) mod jsonrpc;
pub(crate) mod manager;
pub(crate) mod oauth;
pub(crate) mod protocol;
pub(crate) mod sse;
pub(crate) mod stdio;
pub(crate) mod tool_schema;

pub(crate) use client::McpClient;
pub(crate) use protocol::{CallToolResult, ContentBlock, InitializeResult, Tool};

#[derive(Debug, thiserror::Error, Clone)]
pub(crate) enum McpError {
    #[error("MCP transport error: {0}")]
    Transport(String),
    #[error("MCP protocol error {code}: {message}")]
    Protocol { code: i64, message: String },
    #[error("MCP request timed out after {seconds}s")]
    Timeout { seconds: u64 },
    #[error("MCP config error: {0}")]
    Config(String),
}

impl McpError {
    pub(crate) fn transport(error: impl std::fmt::Display) -> Self {
        Self::Transport(error.to_string())
    }
}

pub(crate) type McpResult<T> = Result<T, McpError>;