Skip to main content

lattice_ai/acp/
error.rs

1//! Error surface for the `lattice-ai` ACP client.
2
3/// Errors surfaced by the ACP client (transport, protocol, process lifecycle).
4#[derive(Debug, thiserror::Error)]
5pub enum AiError {
6    /// The provider process failed to spawn or exited unexpectedly.
7    #[error("provider process error: {0}")]
8    Process(String),
9    /// A transport-level failure (stdio closed, framing error).
10    #[error("transport error: {0}")]
11    Transport(String),
12    /// The agent returned a JSON-RPC error or an unexpected frame.
13    #[error("protocol error: {0}")]
14    Protocol(String),
15}
16
17/// Convenience alias.
18pub type Result<T> = std::result::Result<T, AiError>;
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23
24    #[test]
25    fn error_display_is_prefixed() {
26        let e = AiError::Transport("eof".into());
27        assert_eq!(e.to_string(), "transport error: eof");
28    }
29}