miyabi_approval/
lib.rs

1//! Miyabi Approval System - Human-in-the-Loop workflow approval gates
2//!
3//! This crate provides approval gate functionality for workflows, enabling:
4//! - Multi-approver support
5//! - Approval state persistence
6//! - Timeout and escalation handling
7//! - Notification system integration
8//!
9//! # Example
10//!
11//! ```rust
12//! use miyabi_approval::{ApprovalGate, ApprovalStore};
13//!
14//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
15//! let gate = ApprovalGate::builder("deploy-production")
16//!     .required_approvers(vec!["tech-lead".to_string(), "ciso".to_string()])
17//!     .timeout_seconds(86400) // 24 hours
18//!     .build()?;
19//!
20//! // Pause workflow at approval gate
21//! let approval_id = gate.create_approval("workflow-123").await?;
22//!
23//! // Later: approve the workflow
24//! gate.approve(&approval_id, "tech-lead", Some("LGTM".to_string())).await?;
25//! # Ok(())
26//! # }
27//! ```
28
29pub mod error;
30pub mod gate;
31pub mod notifications;
32pub mod state;
33pub mod store;
34
35pub use error::{ApprovalError, Result};
36pub use gate::{ApprovalGate, ApprovalGateBuilder};
37pub use notifications::{
38    ApprovalRequest, DiscordEmbed, DiscordNotifier, MessageFormatter, Notifier, SlackBlock,
39    SlackNotifier, WorkflowStatusUpdate,
40};
41pub use state::{ApprovalResponse, ApprovalState, ApprovalStatus};
42pub use store::ApprovalStore;