Skip to main content

bamboo_engine/session_app/
errors.rs

1//! Error types for session use cases.
2
3/// Errors that can occur when loading a session.
4#[derive(Debug, thiserror::Error)]
5pub enum SessionLoadError {
6    #[error("session not found: {0}")]
7    NotFound(String),
8    #[error("storage error: {0}")]
9    StorageError(String),
10}
11
12/// Errors that can occur when saving a session.
13#[derive(Debug, thiserror::Error)]
14pub enum SessionSaveError {
15    #[error("storage error: {0}")]
16    StorageError(String),
17}
18
19/// Errors from the chat use case.
20#[derive(Debug, thiserror::Error)]
21pub enum ChatError {
22    #[error("session load failed: {0}")]
23    LoadFailed(#[from] SessionLoadError),
24    #[error("session save failed: {0}")]
25    SaveFailed(#[from] SessionSaveError),
26    #[error("invalid model: {0}")]
27    InvalidModel(String),
28    #[error("invalid workflow selection: {0}")]
29    InvalidWorkflowSelection(String),
30    #[error("session carries an invalid Project identity '{raw}': {message}")]
31    InvalidProjectIdentity { raw: String, message: String },
32    #[error(
33        "session Project membership changed while preparing chat (expected {expected:?}, actual {actual:?})"
34    )]
35    ProjectIdentityConflict {
36        expected: Option<bamboo_domain::ProjectId>,
37        actual: Option<bamboo_domain::ProjectId>,
38    },
39}
40
41/// Errors from the execute preparation use case.
42#[derive(Debug, thiserror::Error)]
43pub enum ExecutePreparationError {
44    #[error("session not found: {0}")]
45    NotFound(String),
46    #[error("session load failed: {0}")]
47    LoadFailed(#[from] SessionLoadError),
48    #[error("session save failed: {0}")]
49    SaveFailed(#[from] SessionSaveError),
50    #[error("invalid model: model is required")]
51    ModelRequired,
52    #[error("invalid image fallback configuration: {0}")]
53    ImageFallbackError(String),
54}
55
56/// Errors from the respond use case.
57#[derive(Debug, thiserror::Error)]
58pub enum RespondError {
59    #[error("session not found: {0}")]
60    NotFound(String),
61    #[error("session load failed: {0}")]
62    LoadFailed(#[from] SessionLoadError),
63    #[error("session save failed: {0}")]
64    SaveFailed(#[from] SessionSaveError),
65    #[error("no pending question waiting for response")]
66    NoPendingQuestion,
67    #[error("invalid response: {0}")]
68    InvalidResponse(String),
69}