Skip to main content

seher/codexbar/
errors.rs

1//! Errors raised while invoking the external `codexbar` binary.
2//!
3//! Mirrors `seher-ts/packages/sdk/src/codexbar/errors.ts`. The resolver treats
4//! every variant as "provider is available" so a missing/erroring codexbar never
5//! permanently drops a provider from the candidate list.
6
7use thiserror::Error;
8
9#[derive(Debug, Error)]
10pub enum CodexBarError {
11    #[error(
12        "codexbar binary not found at {bin}. Install CodexBar or set bin_path/SEHER_CODEXBAR_BIN."
13    )]
14    NotFound { bin: String },
15
16    #[error("failed to spawn codexbar: {0}")]
17    Spawn(String),
18
19    #[error("codexbar usage timed out after {ms}ms (provider={provider})")]
20    Timeout { provider: String, ms: u128 },
21
22    #[error("codexbar usage exited with code {code:?} (provider={provider}): {stderr}")]
23    Exited {
24        code: Option<i32>,
25        provider: String,
26        stderr: String,
27    },
28
29    #[error("failed to parse codexbar JSON output: {0}")]
30    Parse(String),
31
32    #[error("codexbar returned a non-array JSON payload (provider={0})")]
33    NonArray(String),
34
35    #[error("codexbar returned no entry for provider={0}")]
36    NoEntry(String),
37}