use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum PauseKind {
User,
BackOff,
NoProgress,
Verification,
Infra,
}
impl PauseKind {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::User => "user",
Self::BackOff => "back_off",
Self::NoProgress => "no_progress",
Self::Verification => "verification",
Self::Infra => "infra",
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "outcome", rename_all = "snake_case")]
#[non_exhaustive]
pub enum WorkflowOutcome {
Completed {
result: serde_json::Value,
},
Paused {
kind: PauseKind,
message: String,
},
BudgetExceeded {
message: String,
},
Cancelled,
Failed {
error: String,
},
}