omni_dev/claude/
error.rs

1//! Claude-specific error handling
2
3use thiserror::Error;
4
5/// Claude API specific errors
6#[derive(Error, Debug)]
7pub enum ClaudeError {
8    /// API key not found in environment variables
9    #[error(
10        "Claude API key not found. Set CLAUDE_API_KEY or ANTHROPIC_API_KEY environment variable"
11    )]
12    ApiKeyNotFound,
13
14    /// Claude API request failed with error message
15    #[error("Claude API request failed: {0}")]
16    ApiRequestFailed(String),
17
18    /// Invalid response format from Claude API
19    #[error("Invalid response format from Claude API: {0}")]
20    InvalidResponseFormat(String),
21
22    /// Failed to parse amendments from Claude response
23    #[error("Failed to parse amendments from Claude response: {0}")]
24    AmendmentParsingFailed(String),
25
26    /// Rate limit exceeded for Claude API
27    #[error("Rate limit exceeded. Please try again later")]
28    RateLimitExceeded,
29
30    /// Network connectivity error
31    #[error("Network error: {0}")]
32    NetworkError(String),
33}
34
35// Note: anyhow already has a blanket impl for thiserror::Error types