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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
//! Framework error types
use thiserror::Error;
/// Core framework errors
#[derive(Error, Debug)]
pub enum FrameworkError {
/// Configuration error.
#[error("Configuration error: {0}")]
Config(String),
/// Provider error.
#[error("Provider error: {0}")]
Provider(String),
/// Provider authentication failure.
#[error("Provider authentication failed for {provider}: {message}")]
ProviderAuth {
/// Provider name that failed authentication.
provider: String,
/// Detailed error message.
message: String,
},
/// Provider model error.
#[error("Provider model error ({provider}/{model}): {message}")]
ProviderModel {
/// Provider name.
provider: String,
/// Model identifier.
model: String,
/// Detailed error message.
message: String,
},
/// Embedding dimension mismatch between expected and actual vectors.
#[error("Embedding dimension mismatch: expected {expected}, got {got}")]
EmbeddingDimension {
/// Expected dimension count.
expected: usize,
/// Actual dimension count received.
got: usize,
},
/// Tool execution error.
#[error("Tool execution error: {0}")]
ToolExecution(String),
/// Agent error.
#[error("Agent error: {0}")]
Agent(String),
/// Storage error.
#[error("Storage error: {0}")]
Storage(String),
/// Storage schema mismatch or migration error.
#[error("Storage schema error in {store}: {message}")]
StorageSchema {
/// Name of the storage store.
store: String,
/// Detailed error message.
message: String,
},
/// Training configuration error.
#[error("Training configuration error for {parameter}: {message}")]
TrainingConfig {
/// Parameter name that is invalid.
parameter: String,
/// Detailed error message.
message: String,
},
/// Permission denied error.
#[error("Permission denied: {0}")]
PermissionDenied(String),
/// JSON serialization/deserialization error.
#[error("Serialization error: {0}")]
Serialization(#[from] serde_json::Error),
/// Catch-all for other errors.
#[error("{0}")]
Other(#[from] anyhow::Error),
}
impl FrameworkError {
/// Create a provider authentication error
pub fn provider_auth(provider: impl Into<String>, message: impl Into<String>) -> Self {
Self::ProviderAuth {
provider: provider.into(),
message: message.into(),
}
}
/// Create a provider model error
pub fn provider_model(
provider: impl Into<String>,
model: impl Into<String>,
message: impl Into<String>,
) -> Self {
Self::ProviderModel {
provider: provider.into(),
model: model.into(),
message: message.into(),
}
}
/// Create an embedding dimension mismatch error
pub fn embedding_dimension(expected: usize, got: usize) -> Self {
Self::EmbeddingDimension { expected, got }
}
/// Create a storage schema error
pub fn storage_schema(store: impl Into<String>, message: impl Into<String>) -> Self {
Self::StorageSchema {
store: store.into(),
message: message.into(),
}
}
/// Create a training configuration error
pub fn training_config(parameter: impl Into<String>, message: impl Into<String>) -> Self {
Self::TrainingConfig {
parameter: parameter.into(),
message: message.into(),
}
}
}
/// Result type alias using FrameworkError
pub type FrameworkResult<T> = Result<T, FrameworkError>;