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