use super::rule::{
absorb_layer_matches, merged_provider_defaults, resolve_rule_chain, RuleResolution,
};
use super::{CapabilitiesFile, ProviderDefaults};
const MOCK_SPOOF_LAYERS: [&str; 3] = ["anthropic", "openai", "gemini"];
pub(super) fn resolve_route(
user: Option<&CapabilitiesFile>,
builtin: &CapabilitiesFile,
provider: &str,
model: &str,
) -> (RuleResolution, ProviderDefaults, Option<&'static str>) {
if provider == "mock" {
for layer in std::iter::once("mock").chain(MOCK_SPOOF_LAYERS) {
let defaults = merged_provider_defaults(user, builtin, layer);
let mut resolution = RuleResolution::default();
absorb_layer_matches(user, builtin, layer, model, &mut resolution);
if resolution.merged.is_some() {
return (resolution, defaults, Some(layer));
}
}
return (RuleResolution::default(), ProviderDefaults::default(), None);
}
let (resolution, defaults) = resolve_rule_chain(user, builtin, provider, model);
(resolution, defaults, None)
}