UNPKG

@devvai/devv-code-backend

Version:

Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities

62 lines (61 loc) 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DevvImageGen = void 0; const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); /** * DevvImageGen - AI-powered image generation * * Text-to-Image generation using Flux Schnell model * Documentation: https://replicate.com/black-forest-labs/flux-schnell * * Usage: * ```typescript * const imageGen = new DevvImageGen(); * const result = await imageGen.textToImage({ * prompt: "a red cat", * num_outputs: 2, * aspect_ratio: "16:9", * output_format: "png" * }); * ``` */ class DevvImageGen { async textToImage(options) { if (!options.prompt) { throw new Error('Prompt is required for text-to-image generation'); } // Set default values const requestBody = { prompt: options.prompt, num_outputs: options.num_outputs ?? 1, ...(options.aspect_ratio && { aspect_ratio: options.aspect_ratio }), ...(options.output_format && { output_format: options.output_format }) }; // Validate num_outputs range if (requestBody.num_outputs < 1 || requestBody.num_outputs > 4) { throw new Error('num_outputs must be between 1 and 4'); } const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); const headers = { 'Content-Type': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } const response = await fetch(`${constants_1.BASE_URL}api/v1/text-to-image`, { method: 'POST', headers, body: JSON.stringify(requestBody) }); if (!response.ok) { const error = await response.json().catch(() => ({ error: 'Text-to-image generation failed' })); throw new Error(error.error || `Failed to generate image (Status: ${response.status})`); } return await response.json(); } } exports.DevvImageGen = DevvImageGen;