use crate::core::config::MergeMode;
use crate::heuristics::{StructuredCallMode, StructuredInput, StructuredThresholds, choose_call_mode};
pub trait StructuredPolicy: Send + Sync + 'static {
fn choose_call_mode(&self, input: &StructuredInput) -> StructuredCallMode;
fn thresholds(&self) -> &StructuredThresholds;
fn merge_mode(&self) -> MergeMode;
}
#[derive(Debug, Default, Clone)]
pub struct DefaultStructuredPolicy {
thresholds: StructuredThresholds,
merge_mode: MergeMode,
}
impl StructuredPolicy for DefaultStructuredPolicy {
fn choose_call_mode(&self, input: &StructuredInput) -> StructuredCallMode {
choose_call_mode(input, &self.thresholds)
}
fn thresholds(&self) -> &StructuredThresholds {
&self.thresholds
}
fn merge_mode(&self) -> MergeMode {
self.merge_mode
}
}