voxora_engine/lib.rs
1//! Canonical adapter contract for voxora engine crates (ASR-specific).
2//!
3//! Every `voxora-<engine>` crate (voxora-whisper, voxora-qwen3asr,
4//! future voxora-parakeet, voxora-voxtral, …) builds on top of this
5//! crate so consumers see a uniform shape.
6//!
7//! Owns nothing engine-specific; only the dispatch and metadata glue
8//! that is identical across engines.
9//!
10//! ASR-specific: the adapter wraps an [`voxora_traits::AsrEngine`].
11//! There is no generic `Model` trait at this layer.
12//!
13//! The next planned engine family (parakeet, voxtral, …) lands as a
14//! new variant on [`EngineFamily`] in 0.2.0; consumers that
15//! exhaustively match today must add a wildcard arm.
16
17#![forbid(unsafe_code)]
18#![warn(missing_docs)]
19
20pub mod adapter;
21pub mod backend;
22pub mod family;
23pub mod info;
24pub mod testing;
25
26pub use adapter::{AnyEngine, EngineAdapter};
27pub use backend::{BackendDescriptor, BackendKind};
28pub use family::{EngineFamily, InvalidEngineFamily};
29pub use info::EngineInfo;
30pub use testing::MockAdapter;
31pub use voxora_traits::ModelCapabilities;
32pub use voxora_traits::{StreamingAsrEngine, StreamingOptions, StreamingResult, StreamingSession};
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn public_surface_lists_core_types() {
40 // Compile-time check that the re-exports stay in sync.
41 let _: EngineFamily = EngineFamily::Whisper;
42 let _: BackendKind = BackendKind::Cpu;
43 let _: BackendDescriptor = BackendDescriptor::CPU;
44 }
45}