UNPKG

@reliverse/rse-sdk

Version:

@reliverse/rse-sdk allows you to create new plugins for @reliverse/rse CLI, interact with reliverse.org, and even extend your own CLI functionality (you may also try @reliverse/dler-sdk for this case).

81 lines (80 loc) 2.39 kB
import { openai } from "@ai-sdk/openai"; import { relinka } from "@reliverse/relinka"; import { defineCommand } from "@reliverse/rempts"; import { experimental_generateImage as generateImage } from "ai"; import { Buffer } from "buffer"; import ora from "ora"; import { uploadToProvider } from "../../../upload/providers/providers-mod.js"; export default defineCommand({ meta: { name: "generate", description: "AI Image Generation & Upload" }, args: { prompt: { type: "positional", description: "Image generation prompt", required: true }, model: { type: "string", alias: "m", description: "AI model (e.g., dall-e-3)", default: "dall-e-3" }, provider: { type: "string", alias: "p", description: "Which provider to use for upload" }, size: { type: "string", description: "Image dimensions (e.g. 1024x1024)", default: "1024x1024" }, quality: { type: "string", description: "Image quality (standard/hd)", default: "standard" } }, run: async ({ args }) => { const spinner = ora( `Generating image with prompt: "${args.prompt}"` ).start(); try { const { image } = await generateImage({ model: openai.image(args.model), prompt: args.prompt, providerOptions: { openai: { size: args.size, quality: args.quality } } }); spinner.text = "Uploading generated image..."; const buffer = Buffer.from(image.uint8Array); const filename = `ai-gen-${Date.now()}.png`; const [result] = await uploadToProvider( [{ name: filename, data: buffer, type: "image/png" }], args.provider ); if (!result) { throw new Error("Failed to upload image: No result returned"); } spinner.succeed("Generation & upload complete!"); relinka("info", "\nGenerated Image Results:"); relinka("info", `File: ${result.name}`); relinka("info", `URL: ${result.url}`); if ("key" in result && result.key) relinka("info", `Key: ${result.key}`); if ("uuid" in result && result.uuid) relinka("info", `UUID: ${result.uuid} `); } catch (error) { spinner.fail("Image generation failed"); relinka("error", String(error)); process.exit(1); } } });