1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! Unified error types for hisab.
use thiserror::Error;
/// Top-level error type for hisab operations.
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum HisabError {
/// Invalid transform parameters.
#[error("invalid transform: {0}")]
InvalidTransform(String),
/// Matrix is singular and cannot be inverted.
#[error("singular matrix — cannot invert")]
SingularMatrix,
/// Value is outside the acceptable range.
#[error("value out of range: {0}")]
OutOfRange(String),
/// Division by zero.
#[error("division by zero")]
DivisionByZero,
/// Degenerate geometry (e.g. zero-length edge, coincident points).
#[error("degenerate geometry: {0}")]
Degenerate(String),
/// Integration/differentiation interval is invalid.
#[error("invalid interval: a must be less than b")]
InvalidInterval,
/// Step count must be positive.
#[error("step count must be positive")]
ZeroSteps,
/// Iterative solver did not converge.
#[error("no convergence after {0} iterations")]
NoConvergence(usize),
/// Pivot element is zero during elimination.
#[error("singular matrix — pivot is zero")]
SingularPivot,
/// Invalid input to a numerical method.
#[error("invalid input: {0}")]
InvalidInput(String),
/// Daimon/hoosh AI client error.
#[cfg(feature = "ai")]
#[error("daimon: {0}")]
Daimon(#[from] DaimonError),
}
/// Errors from daimon/hoosh interaction.
#[cfg(feature = "ai")]
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum DaimonError {
/// HTTP request failed.
#[error("HTTP request failed: {0}")]
Http(#[from] reqwest::Error),
/// Agent registration failed.
#[error("registration failed: {0}")]
Registration(String),
/// Heartbeat failed.
#[error("heartbeat failed: {0}")]
Heartbeat(String),
/// Hoosh (LLM gateway) query failed.
#[error("hoosh query failed: {0}")]
HooshQuery(String),
}