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}