1use thiserror::Error;
4
5pub type RuntimeResult<T> = std::result::Result<T, RuntimeError>;
7
8#[derive(Debug, Error)]
10pub enum RuntimeError {
11 #[error(transparent)]
13 Core(#[from] fluers_core::CoreError),
14
15 #[error("invalid skill: {0}")]
17 InvalidSkill(String),
18
19 #[error("session not found: {0}")]
21 SessionNotFound(String),
22
23 #[error("persistence error: {0}")]
25 Persistence(String),
26
27 #[error("tool name conflict: {0}")]
29 ToolNameConflict(String),
30
31 #[error("sandbox error: {0}")]
33 Sandbox(String),
34
35 #[error(transparent)]
37 Io(#[from] std::io::Error),
38
39 #[error("file `{path}` is {size} bytes, exceeds max {max} bytes")]
44 FileTooLarge {
45 path: String,
47 size: usize,
49 max: usize,
51 },
52}
53
54impl From<crate::persistence::PersistenceError> for RuntimeError {
55 fn from(error: crate::persistence::PersistenceError) -> Self {
56 match error {
57 crate::persistence::PersistenceError::Backend(message) => Self::Persistence(message),
58 }
59 }
60}