use thiserror::Error;
#[derive(Debug, Error)]
pub enum BitwError {
#[error(
"Bitwarden CLI `bw` not found on PATH — install it from https://bitwarden.com/help/cli/"
)]
CliNotFound,
#[error("bw login failed (exit {status}): {stderr}")]
LoginFailed { status: i32, stderr: String },
#[error("bw unlock failed (exit {status}): {stderr}")]
UnlockFailed { status: i32, stderr: String },
#[error("bw lock failed (exit {status}): {stderr}")]
LockFailed { status: i32, stderr: String },
#[error("bw list items failed (exit {status}): {stderr}")]
ListFailed { status: i32, stderr: String },
#[error("could not extract BW_SESSION token from `bw unlock` output")]
SessionTokenMissing,
#[error("failed to parse `bw list items` JSON: {0}")]
ParseError(String),
#[error("Bitwarden configuration error: {0}")]
Config(String),
}