macro_rules! dispatch_stream_fn {
(
match $value:expr ;
$enum:ident ( $bind:ident ) => $model:expr ,
tools = $tools:expr ,
timeout = $timeout:expr ,
provider = $provider:expr ,
filter = $filter:expr $(,)?
) => {{
use $crate::agent::agent_loop::rig_stream_fn_from_model_with_filter as __stream_fn;
match $value {
$enum::OpenRouter($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::OpenAI($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::ChatGptOpenAI($bind) => {
__stream_fn($model, $tools, $timeout, $provider, $filter)
}
$enum::Anthropic($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::Gemini($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::DeepSeek($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::Glm($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::Ollama($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
$enum::Custom($bind) => __stream_fn($model, $tools, $timeout, $provider, $filter),
}
}};
}
pub(crate) use dispatch_stream_fn;