Skip to main content

awaken_contract/
error.rs

1use thiserror::Error;
2
3use crate::model::Phase;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq)]
6pub enum UnknownKeyPolicy {
7    Error,
8    Skip,
9}
10
11#[derive(Debug, Error, Clone, PartialEq, Eq)]
12pub enum StateError {
13    #[error("revision conflict: expected {expected}, actual {actual}")]
14    RevisionConflict { expected: u64, actual: u64 },
15    #[error("patch base revision mismatch: {left} vs {right}")]
16    MutationBaseRevisionMismatch { left: u64, right: u64 },
17    #[error("plugin already installed: {name}")]
18    PluginAlreadyInstalled { name: String },
19    #[error("plugin not installed: {type_name}")]
20    PluginNotInstalled { type_name: &'static str },
21    #[error("key already registered: {key}")]
22    KeyAlreadyRegistered { key: String },
23    #[error("unknown key: {key}")]
24    UnknownKey { key: String },
25    #[error("failed to decode key {key}: {message}")]
26    KeyDecode { key: String, message: String },
27    #[error("failed to encode key {key}: {message}")]
28    KeyEncode { key: String, message: String },
29    #[error("scheduled action handler already registered: {key}")]
30    HandlerAlreadyRegistered { key: String },
31    #[error("effect handler already registered: {key}")]
32    EffectHandlerAlreadyRegistered { key: String },
33    #[error("phase {phase:?} did not converge after {max_rounds} rounds")]
34    PhaseRunLoopExceeded { phase: Phase, max_rounds: usize },
35    #[error("no scheduled action handler registered for {key}")]
36    UnknownScheduledActionHandler { key: String },
37    #[error("no effect handler registered for {key}")]
38    UnknownEffectHandler { key: String },
39    #[error("parallel merge conflict on exclusive key: {key}")]
40    ParallelMergeConflict { key: String },
41    #[error("tool already registered: {tool_id}")]
42    ToolAlreadyRegistered { tool_id: String },
43    #[error("operation cancelled")]
44    Cancelled,
45}