1use thiserror::Error;
2
3#[derive(Error, Debug, Clone, PartialEq, Eq)]
4pub enum MemoryError {
5 #[error("memory point field '{field}' cannot be empty")]
6 EmptyField { field: &'static str },
7
8 #[error("memory point not found: {point_id}")]
9 PointNotFound { point_id: String },
10
11 #[error("memory point parent not found: {parent_id}")]
12 ParentNotFound { parent_id: String },
13
14 #[error("memory point already exists: {point_id}")]
15 DuplicatePoint { point_id: String },
16
17 #[error("IO error: {0}")]
18 IoError(String),
19
20 #[error("JSON error: {0}")]
21 JsonError(String),
22
23 #[error("headless point cannot be modified: {operation}")]
24 HeadlessModification { operation: &'static str },
25
26 #[error("headless point cannot be inserted into an existing tree")]
27 CannotInsertHeadless,
28
29 #[error("non-headless point must have a parent")]
30 MissingParent,
31
32 #[error("headless point must not have storage, types, or parent")]
33 InvalidHeadlessPoint,
34
35 #[error("memory tree cycle detected when attaching '{point_id}' under '{parent_id}'")]
36 CycleDetected { point_id: String, parent_id: String },
37
38 #[error("invalid point kind for '{point_id}': expected {expected}")]
39 InvalidPointKind {
40 point_id: String,
41 expected: &'static str,
42 },
43
44 #[error("memory tree invariant failed: {message}")]
45 TreeInvariant { message: String },
46}