1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum SettingsError {
8 #[error("Failed to parse settings file: {0}")]
10 ParseError(String),
11
12 #[error("Invalid model '{model}' for agent '{agent}': {error}")]
14 InvalidModel { agent: String, model: String, error: String },
15
16 #[error("Invalid reasoningEffort '{effort}' for agent '{agent}': {error}")]
18 InvalidReasoningEffort { agent: String, effort: String, error: String },
19
20 #[error("Agent '{agent}' is missing required field: {field}")]
22 MissingField { agent: String, field: String },
23
24 #[error("Agent at index {index} has an empty name")]
26 EmptyAgentName { index: usize },
27
28 #[error("Agent name '{name}' is reserved and cannot be used")]
30 ReservedAgentName { name: String },
31
32 #[error("Duplicate agent name: '{name}'")]
34 DuplicateAgentName { name: String },
35
36 #[error("Agent '{agent}' must have at least one invocation flag (userInvocable or agentInvocable)")]
38 NoInvocationSurface { agent: String },
39
40 #[error("Invalid glob pattern '{pattern}' for agent '{agent}': {error}")]
42 InvalidGlobPattern { agent: String, pattern: String, error: String },
43
44 #[error("Invalid inherited glob pattern '{pattern}': {error}")]
46 InvalidInheritedGlobPattern { pattern: String, error: String },
47
48 #[error("Prompt entry '{pattern}' for agent '{agent}' resolves to no files")]
50 ZeroMatchPrompt { agent: String, pattern: String },
51
52 #[error("Inherited prompt entry '{pattern}' resolves to no files")]
54 ZeroMatchInheritedPrompt { pattern: String },
55
56 #[error("Agent '{agent}' has no prompts after inheritance (neither inherited nor local)")]
58 NoPrompts { agent: String },
59
60 #[error("MCP config path '{path}' does not exist or is not a file")]
62 InvalidMcpConfigPath { path: String },
63
64 #[error("I/O error: {0}")]
66 IoError(String),
67
68 #[error("Agent '{name}' not found")]
70 AgentNotFound { name: String },
71
72 #[error("Duplicate prompt name: '{name}'")]
74 DuplicatePromptName { name: String },
75}