import type { LanguageModel } from "ai"; import { AgentModelProtocolError, createAgentModelFailover, type AgentCircuitStore, type AgentModelEntry } from "./agent-model-failover"; export type AgentVisionExecutor = (execute: (model: LanguageModel, signal: AbortSignal) => Promise, signal?: AbortSignal) => Promise; export function createAgentVisionExecutor(entries: AgentModelEntry[], circuit: AgentCircuitStore, resolve: (id: string) => Promise): AgentVisionExecutor { const run = createAgentModelFailover(entries, circuit); return (execute, signal) => run(async (entry, attemptSignal) => { const model = await resolve(entry.model.id); if (!model) throw new AgentModelProtocolError(); return execute(model, attemptSignal); }, signal); }