1use std::path::PathBuf;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8pub enum Error {
9 #[error("Failed to connect to spn daemon at {path}: {source}")]
11 ConnectionFailed {
12 path: PathBuf,
13 #[source]
14 source: std::io::Error,
15 },
16
17 #[error("Not connected to spn daemon")]
19 NotConnected,
20
21 #[error("Secret not found for provider '{provider}': {details}")]
23 SecretNotFound { provider: String, details: String },
24
25 #[error("Daemon error: {0}")]
27 DaemonError(String),
28
29 #[error("Unexpected response from daemon")]
31 UnexpectedResponse,
32
33 #[error("Response too large: {0} bytes")]
35 ResponseTooLarge(usize),
36
37 #[error("IO error: {0}")]
39 IoError(#[from] std::io::Error),
40
41 #[error("Failed to serialize request: {0}")]
43 SerializationError(#[source] serde_json::Error),
44
45 #[error("Failed to deserialize response: {0}")]
47 DeserializationError(#[source] serde_json::Error),
48
49 #[error("Configuration error: {0}")]
51 Configuration(String),
52
53 #[error("Request timed out after {0} seconds")]
55 Timeout(u64),
56
57 #[error("Protocol version mismatch: client v{client}, daemon v{daemon}")]
59 ProtocolMismatch { client: u32, daemon: u32 },
60}