import type { generateImages as generateImagesOpenRouterFunction } from "../../api/openrouter-images.ts"; import { registerImagesApiProvider } from "../../images-api-registry.ts"; import type { AssistantImages, ImageApi, ImageModel, ImagesContext, ImagesFunction, ImagesOptions, } from "../../types.ts"; interface OpenRouterImagesProviderModule { generateImages: typeof generateImagesOpenRouterFunction; } let openRouterImagesProviderModulePromise: Promise | undefined; function createLazyLoadErrorImages(model: ImageModel, error: unknown): AssistantImages { return { api: model.api, provider: model.provider, model: model.id, output: [], stopReason: "error", errorMessage: error instanceof Error ? error.message : String(error), timestamp: Date.now(), }; } function loadOpenRouterImagesProviderModule(): Promise { openRouterImagesProviderModulePromise ||= import("../../api/openrouter-images.ts").then( (module) => module as OpenRouterImagesProviderModule, ); return openRouterImagesProviderModulePromise; } export const generateImagesOpenRouter: ImagesFunction = async ( model: ImageModel, context: ImagesContext, options?: ImagesOptions, ) => { try { const module = await loadOpenRouterImagesProviderModule(); return await module.generateImages(model, context, options); } catch (error) { return createLazyLoadErrorImages(model, error); } }; export function registerBuiltInImagesApiProviders(): void { registerImagesApiProvider({ api: "openrouter-images", generateImages: generateImagesOpenRouter, }); } registerBuiltInImagesApiProviders();