import { ConfigurationError } from "@pipedream/platform";
import { parseObject } from "../../common/utils.mjs";
import letzai from "../../letzai.app.mjs";
export default {
key: "letzai-create-image-edit",
name: "Create Image Edit",
description: "Creates an image edit task that modifies an existing image using inpainting or outpainting in LetzAI. [See the documentation](https://api.letz.ai/doc#/image-edit/image_edit_create)",
version: "0.0.1",
type: "action",
props: {
letzai,
mode: {
propDefinition: [
letzai,
"mode",
],
reloadProps: true,
},
originalImageCompletionId: {
propDefinition: [
letzai,
"originalImageCompletionId",
],
optional: true,
},
imageUrl: {
propDefinition: [
letzai,
"imageUrl",
],
optional: true,
},
prompt: {
propDefinition: [
letzai,
"promptEdit",
],
optional: true,
},
mask: {
propDefinition: [
letzai,
"mask",
],
optional: true,
},
width: {
propDefinition: [
letzai,
"width",
],
optional: true,
},
height: {
propDefinition: [
letzai,
"height",
],
optional: true,
},
imageCompletionsCount: {
propDefinition: [
letzai,
"imageCompletionsCount",
],
optional: true,
},
settings: {
propDefinition: [
letzai,
"settings",
],
optional: true,
},
webhookUrl: {
propDefinition: [
letzai,
"webhookUrl",
],
optional: true,
},
},
async additionalProps(props) {
if (this.mode === "in") {
props.mask.optional = false;
}
return {};
},
async run({ $ }) {
if (!this.originalImageCompletionId && !this.imageUrl) {
throw new ConfigurationError("Please provide either an original image completion ID or an image URL.");
}
const {
letzai,
settings,
...data
} = this;
const response = await letzai.createImageEditTask({
$,
data: {
...data,
settings: settings && parseObject(settings),
},
});
$.export("$summary", `Image edit task created successfully with request ID: ${response.id}`);
return response;
},
};