use crate::router::{
error::Result,
types::{ModelInfo, RoutingDecision},
};
pub trait RoutingStrategy: Send + Sync {
fn name(&self) -> &'static str;
fn route(
&self,
content: &str,
embedding: Option<&[f32]>,
models: &[ModelInfo],
) -> Result<RoutingDecision>;
}
pub mod embedding_threshold;
pub mod regex;
pub mod rorf;
pub mod round_robin;
pub mod weighted_random;
pub use embedding_threshold::EmbeddingThreshold;
pub use regex::RegexStrategy;
pub use rorf::RoRFStrategy;
pub use round_robin::RoundRobin;
pub use weighted_random::WeightedRandom;