1use std::fmt::Debug;
2
3use crate::types::skill::SkillPermission;
4
5#[derive(Debug, thiserror::Error)]
7pub enum SkillError {
8 #[error("Skill not found: {0}")]
9 NotFound(String),
10
11 #[error("Execution timed out ({0}ms)")]
12 Timeout(u64),
13
14 #[error("Insufficient permissions: requires {required:?}")]
15 PermissionDenied {
16 required: Vec<SkillPermission>,
17 },
18
19 #[error("Tool execution failed: {0}")]
20 ToolExecution(String),
21
22 #[error("WASM error: {0}")]
23 Wasm(String),
24
25 #[error("Configuration validation failed: {0}")]
26 ConfigValidation(String),
27
28 #[error("Version mismatch: skill requires >= {required}")]
29 VersionMismatch { required: String },
30
31 #[error("Preflight check failed: {0}")]
32 PreflightFailed(String),
33
34 #[error("Skill is disabled: {0}")]
35 Disabled(String),
36
37 #[error("IO error: {0}")]
38 Io(#[from] std::io::Error),
39
40 #[error("YAML parse error: {0}")]
41 Yaml(String),
42
43 #[error("HTTP error: {0}")]
44 Http(String),
45}