1use aether_auth::OAuthError;
2use aether_project::SettingsError;
3use aether_telemetry::TelemetryInitError;
4use std::io;
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum CliError {
9 #[error("No prompt provided. Pass a prompt as an argument or pipe via stdin.")]
10 NoPrompt,
11 #[error("{0}")]
12 ConflictingArgs(String),
13 #[error("Invalid --options-json: {0}")]
14 InvalidOptionsJson(#[source] serde_json::Error),
15 #[error(transparent)]
16 ConflictingSettingsSources(#[from] crate::settings_args::ConflictingSettingsSources),
17 #[error("Failed to load settings: {0}")]
18 Settings(#[from] SettingsError),
19 #[error("Failed to initialize telemetry: {0}")]
20 Telemetry(#[from] TelemetryInitError),
21 #[error("Model error: {0}")]
22 ModelError(String),
23 #[error("MCP error: {0}")]
24 McpError(String),
25 #[error("IO error: {0}")]
26 IoError(#[from] io::Error),
27 #[error("Agent error: {0}")]
28 AgentError(String),
29 #[error("Credential store error: {0}")]
30 CredentialStore(#[from] OAuthError),
31}