#[cfg(feature = "classifier")]
mod calibration;
#[cfg(feature = "classifier")]
pub mod download;
#[cfg(feature = "classifier")]
pub mod manifest;
#[cfg(feature = "classifier")]
mod model;
#[cfg(feature = "classifier")]
pub mod pool;
pub mod resolve;
#[cfg(feature = "classifier")]
mod tokenizer_wrapper;
#[cfg(feature = "classifier")]
pub use calibration::CalibrationParams;
#[cfg(feature = "classifier")]
pub use download::{Downloader, FileDownloader, UreqDownloader, ensure_model_in_cache};
#[cfg(feature = "classifier")]
pub use manifest::Manifest;
#[cfg(feature = "classifier")]
pub use model::{IntentClassifier, onnx_runtime_install_hint};
#[cfg(feature = "classifier")]
pub use pool::{ClassifierPool, POOL_DEFAULT, POOL_MAX, POOL_MIN, PoolGuard, resolve_pool_size};
pub use resolve::{DirsLike, RealDirs, ResolverLevel, TrustMode, resolve_model_dir};
#[cfg(feature = "classifier")]
pub use tokenizer_wrapper::SharedClassifier;
#[cfg(feature = "classifier")]
pub static BAKED_MANIFEST: std::sync::LazyLock<Manifest> = std::sync::LazyLock::new(|| {
Manifest::parse(include_str!("../../models/manifest.json"))
.expect("baked-in models/manifest.json must be valid JSON (build-time invariant)")
});
#[cfg(not(feature = "classifier"))]
use crate::error::ClassifierError;
#[cfg(not(feature = "classifier"))]
use crate::types::{ClassificationResult, Intent};
#[cfg(not(feature = "classifier"))]
pub struct IntentClassifier;
#[cfg(not(feature = "classifier"))]
impl IntentClassifier {
pub fn new() -> Result<Self, ClassifierError> {
Ok(Self)
}
pub fn classify(&self, _input: &str) -> Result<ClassificationResult, ClassifierError> {
Ok(ClassificationResult {
intent: Intent::Ambiguous,
confidence: 0.0,
all_probabilities: vec![0.0; Intent::NUM_CLASSES],
model_version: "stub".to_string(),
})
}
}
#[cfg(not(feature = "classifier"))]
impl Default for IntentClassifier {
fn default() -> Self {
Self
}
}