//! Couche d'inférence **model-agnostic** (VISION §5.5). La consolidation
//! (épisodes → faits) suppose un LLM, mais BaseMyAI ne s'y couple pas : ce trait
//! abstrait le fournisseur, exactement comme l'[`Embedder`](basemyai_core::Embedder)
//! abstrait le modèle d'embedding.
//!
//! **Mécanisme au consommateur du sens, choix du modèle à l'utilisateur** (esprit
//! ADR-003/010) : le *mécanisme* d'appel est neutre ici ; le *choix* du modèle
//! (local de préférence, *privacy-first* ; distant en option explicite) est une
//! décision produit, fournie par injection via `Box<dyn LlmInference>`.
//!
//! Aucune implémentation concrète n'est livrée en V1 : un fournisseur local
//! (llama.cpp, Ollama…) se branche derrière ce trait sans toucher au pipeline.
use crateResult;
/// Fournisseur d'inférence textuelle, injecté dans la consolidation.
///
/// Object-safe : consommé via `&dyn LlmInference`.