//! Pure-Rust core for ragdrift.
//!
//! This crate computes drift scores between a baseline and a current sample
//! across five dimensions used in RAG monitoring: data, embedding, response,
//! confidence, and query-pattern.
//!
//! The crate is split into two layers:
//!
//! - [`stats`] holds the underlying statistical primitives
//!   (Kolmogorov-Smirnov, PSI, MMD, Wasserstein).
//! - [`detectors`] composes the primitives into batch detectors that take
//!   baseline and current samples and return a [`DriftScore`].
//!
//! ```rust
//! use ndarray::Array1;
//! use ragdrift_core::detectors::ConfidenceDriftDetector;
//!
//! let baseline = Array1::from(vec![0.9, 0.85, 0.92, 0.88, 0.91]);
//! let current = Array1::from(vec![0.6, 0.55, 0.62, 0.58, 0.61]);
//! let detector = ConfidenceDriftDetector::default();
//! let score = detector.detect(&baseline.view(), &current.view()).unwrap();
//! assert!(score.exceeded);
//! ```

#![deny(missing_docs)]
#![deny(unsafe_code)]
#![warn(rust_2018_idioms)]

pub mod detectors;
pub mod error;
pub mod stats;
pub mod types;

pub use error::{RagDriftError, Result};
pub use types::{BaselineSnapshot, DriftDimension, DriftReport, DriftScore};
