Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
58 lines
1.7 KiB
TypeScript
58 lines
1.7 KiB
TypeScript
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<OpenRouterImagesProviderModule> | undefined;
|
|
|
|
function createLazyLoadErrorImages(model: ImageModel<ImageApi>, 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<OpenRouterImagesProviderModule> {
|
|
openRouterImagesProviderModulePromise ||= import("../../api/openrouter-images.ts").then(
|
|
(module) => module as OpenRouterImagesProviderModule,
|
|
);
|
|
return openRouterImagesProviderModulePromise;
|
|
}
|
|
|
|
export const generateImagesOpenRouter: ImagesFunction<ImagesOptions> = async (
|
|
model: ImageModel<ImageApi>,
|
|
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();
|