Skip to main content

gradatum_engine/
lib.rs

1//! # gradatum-engine
2//!
3//! Superviseur Rust d'un sous-process `llama-server` natif — axum OpenAI-compat.
4//!
5//! ## Architecture PIVOT v2
6//!
7//! `gradatum-engine` est un superviseur qui :
8//! 1. **spawn** `llama-server` via `tokio::process::Command` (jamais via shell).
9//! 2. **wait-ready** : poll `GET /health` enfant jusqu'à 200.
10//! 3. **proxy** : handlers `/v1/chat/completions` + `/v1/embeddings` → reqwest vers l'enfant.
11//! 4. **supervise** : restart-on-failure borné + shutdown gracieux.
12//!
13//! L'engine ne charge plus de modèle lui-même (zéro duplication VRAM/RAM).
14//!
15//! ## Stability
16//!
17//! `0.x` — aucune garantie de stabilité API. Voir `docs/internal/`.
18//!
19//! ## Feature gates
20//!
21//! - `serve` : compile le serveur axum + superviseur llama-server.
22//!
23//! Sans feature : crate stub (seule `VERSION` est exposée).
24//!
25//! ## Anti-cycle invariant
26//!
27//! `gradatum-engine` peut dépendre de `gradatum-core` et `gradatum-dto`.
28//! `gradatum-core` et `gradatum-dto` ne doivent JAMAIS dépendre de `gradatum-engine`.
29
30#![forbid(unsafe_code)]
31#![warn(missing_docs)]
32#![warn(rust_2018_idioms)]
33
34/// Version du crate (depuis `workspace.package.version`).
35pub const VERSION: &str = env!("CARGO_PKG_VERSION");
36
37#[cfg(feature = "serve")]
38pub mod config;
39
40#[cfg(feature = "serve")]
41pub mod error;
42
43#[cfg(feature = "serve")]
44pub mod health;
45
46#[cfg(feature = "serve")]
47pub mod metrics;
48
49#[cfg(feature = "serve")]
50pub mod runtime;
51
52#[cfg(feature = "serve")]
53pub mod server;
54
55#[cfg(feature = "serve")]
56pub mod sink;
57
58#[cfg(feature = "serve")]
59pub mod supervisor;
60
61#[cfg(test)]
62mod tests {
63    use super::*;
64
65    #[test]
66    fn version_is_set() {
67        assert!(!VERSION.is_empty());
68    }
69}