use std::iter;
use systemprompt_identifiers::ProviderId;
use systemprompt_manifest::services::ProviderRegistry;
use systemprompt_manifest::services::gateway::GatewayRoute;
use systemprompt_wire::WireProtocol;
pub fn route_needs_thought_signatures(providers: &ProviderRegistry, route: &GatewayRoute) -> bool {
let scoped = route
.by_scope
.iter()
.flat_map(|scoped| scoped.chains.values())
.flat_map(|chain| {
iter::once(&chain.provider).chain(
chain
.fallbacks
.iter()
.chain(&chain.context_fallbacks)
.map(|d| &d.provider),
)
});
iter::once(&route.provider)
.chain(
route
.fallbacks
.iter()
.chain(&route.context_fallbacks)
.map(|d| &d.provider),
)
.chain(scoped)
.any(|provider: &ProviderId| {
providers
.find_provider(provider.as_str())
.is_some_and(|entry| entry.wire == WireProtocol::Gemini)
})
}