14 lines
788 B
TypeScript
14 lines
788 B
TypeScript
import type { LanguageModel } from "ai";
|
|
import { AgentModelProtocolError, createAgentModelFailover, type AgentCircuitStore, type AgentModelEntry } from "./agent-model-failover";
|
|
|
|
export type AgentVisionExecutor = <T>(execute: (model: LanguageModel, signal: AbortSignal) => Promise<T>, signal?: AbortSignal) => Promise<T>;
|
|
export function createAgentVisionExecutor(entries: AgentModelEntry[], circuit: AgentCircuitStore,
|
|
resolve: (id: string) => Promise<LanguageModel | null>): 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);
|
|
}
|