weshop-cli 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/2d-to-3d-image-converter.js +8 -25
- package/dist/commands/2d-to-3d-image-converter.js.map +1 -1
- package/dist/commands/ai-3d-rendering.js +8 -25
- package/dist/commands/ai-3d-rendering.js.map +1 -1
- package/dist/commands/ai-action-figure-generators.js +8 -29
- package/dist/commands/ai-action-figure-generators.js.map +1 -1
- package/dist/commands/ai-aging.js +8 -33
- package/dist/commands/ai-aging.js.map +1 -1
- package/dist/commands/ai-babe.js +9 -26
- package/dist/commands/ai-babe.js.map +1 -1
- package/dist/commands/ai-bikini-model.js +12 -30
- package/dist/commands/ai-bikini-model.js.map +1 -1
- package/dist/commands/ai-bikini-photo-editor.js +9 -26
- package/dist/commands/ai-bikini-photo-editor.js.map +1 -1
- package/dist/commands/ai-bikini-video.js +10 -28
- package/dist/commands/ai-bikini-video.js.map +1 -1
- package/dist/commands/ai-christmas-photo.js +8 -28
- package/dist/commands/ai-christmas-photo.js.map +1 -1
- package/dist/commands/ai-clothes-changer.js +11 -32
- package/dist/commands/ai-clothes-changer.js.map +1 -1
- package/dist/commands/ai-collage-maker.js +11 -32
- package/dist/commands/ai-collage-maker.js.map +1 -1
- package/dist/commands/ai-dog.js +8 -35
- package/dist/commands/ai-dog.js.map +1 -1
- package/dist/commands/ai-elf.js +8 -25
- package/dist/commands/ai-elf.js.map +1 -1
- package/dist/commands/ai-face-merge.js +11 -40
- package/dist/commands/ai-face-merge.js.map +1 -1
- package/dist/commands/ai-feet.js +8 -25
- package/dist/commands/ai-feet.js.map +1 -1
- package/dist/commands/ai-flag-generator.js +8 -29
- package/dist/commands/ai-flag-generator.js.map +1 -1
- package/dist/commands/ai-generated-bikini-girls.js +11 -29
- package/dist/commands/ai-generated-bikini-girls.js.map +1 -1
- package/dist/commands/ai-generated-perfect-female-body.js +11 -29
- package/dist/commands/ai-generated-perfect-female-body.js.map +1 -1
- package/dist/commands/ai-ghost-mannequin-generator.js +12 -30
- package/dist/commands/ai-ghost-mannequin-generator.js.map +1 -1
- package/dist/commands/ai-group-photo-generator.js +11 -32
- package/dist/commands/ai-group-photo-generator.js.map +1 -1
- package/dist/commands/ai-hair-color-changer.js +8 -28
- package/dist/commands/ai-hair-color-changer.js.map +1 -1
- package/dist/commands/ai-hairstyle-changer.js +8 -29
- package/dist/commands/ai-hairstyle-changer.js.map +1 -1
- package/dist/commands/ai-hot-girl-image.js +11 -29
- package/dist/commands/ai-hot-girl-image.js.map +1 -1
- package/dist/commands/ai-image-animation.js +13 -34
- package/dist/commands/ai-image-animation.js.map +1 -1
- package/dist/commands/ai-image-combiner.js +11 -35
- package/dist/commands/ai-image-combiner.js.map +1 -1
- package/dist/commands/ai-landscape-design-free.js +15 -35
- package/dist/commands/ai-landscape-design-free.js.map +1 -1
- package/dist/commands/ai-lingerie-models.js +11 -29
- package/dist/commands/ai-lingerie-models.js.map +1 -1
- package/dist/commands/ai-photoshoot.js +21 -43
- package/dist/commands/ai-photoshoot.js.map +1 -1
- package/dist/commands/ai-poster-from-images.js +19 -44
- package/dist/commands/ai-poster-from-images.js.map +1 -1
- package/dist/commands/ai-poster.js +22 -42
- package/dist/commands/ai-poster.js.map +1 -1
- package/dist/commands/ai-room-planner.js +8 -29
- package/dist/commands/ai-room-planner.js.map +1 -1
- package/dist/commands/ai-selfie.js +8 -25
- package/dist/commands/ai-selfie.js.map +1 -1
- package/dist/commands/ai-sexy-portrait.js +11 -29
- package/dist/commands/ai-sexy-portrait.js.map +1 -1
- package/dist/commands/ai-sexy-teens.js +11 -29
- package/dist/commands/ai-sexy-teens.js.map +1 -1
- package/dist/commands/ai-spray-paint.js +8 -29
- package/dist/commands/ai-spray-paint.js.map +1 -1
- package/dist/commands/ai-swimsuit-model.js +8 -25
- package/dist/commands/ai-swimsuit-model.js.map +1 -1
- package/dist/commands/ai-tattoo-generator.js +8 -29
- package/dist/commands/ai-tattoo-generator.js.map +1 -1
- package/dist/commands/ai-text-remover-from-video.js +6 -22
- package/dist/commands/ai-text-remover-from-video.js.map +1 -1
- package/dist/commands/ai-translate.js +8 -33
- package/dist/commands/ai-translate.js.map +1 -1
- package/dist/commands/ai-video-enhancer.js +8 -28
- package/dist/commands/ai-video-enhancer.js.map +1 -1
- package/dist/commands/ai-werewolf.js +14 -32
- package/dist/commands/ai-werewolf.js.map +1 -1
- package/dist/commands/ai-xray-clothes.js +8 -25
- package/dist/commands/ai-xray-clothes.js.map +1 -1
- package/dist/commands/ai-zombie.js +8 -25
- package/dist/commands/ai-zombie.js.map +1 -1
- package/dist/commands/anime-image-converter.js +8 -25
- package/dist/commands/anime-image-converter.js.map +1 -1
- package/dist/commands/baby-face-generator.js +15 -35
- package/dist/commands/baby-face-generator.js.map +1 -1
- package/dist/commands/bald-filter.js +8 -28
- package/dist/commands/bald-filter.js.map +1 -1
- package/dist/commands/bangs-filter.js +8 -25
- package/dist/commands/bangs-filter.js.map +1 -1
- package/dist/commands/bikini-contest-photos.js +11 -29
- package/dist/commands/bikini-contest-photos.js.map +1 -1
- package/dist/commands/bikini-try-on.js +8 -25
- package/dist/commands/bikini-try-on.js.map +1 -1
- package/dist/commands/braces-filter.js +8 -25
- package/dist/commands/braces-filter.js.map +1 -1
- package/dist/commands/brat-generator.js +8 -29
- package/dist/commands/brat-generator.js.map +1 -1
- package/dist/commands/buzz-cut-ai.js +8 -33
- package/dist/commands/buzz-cut-ai.js.map +1 -1
- package/dist/commands/celeb-ai.js +11 -32
- package/dist/commands/celeb-ai.js.map +1 -1
- package/dist/commands/chibi-maker.js +8 -33
- package/dist/commands/chibi-maker.js.map +1 -1
- package/dist/commands/clothing-magic-remover.js +9 -26
- package/dist/commands/clothing-magic-remover.js.map +1 -1
- package/dist/commands/custom-bikini.js +11 -29
- package/dist/commands/custom-bikini.js.map +1 -1
- package/dist/commands/cute-anime-girl-ai-bikini.js +11 -29
- package/dist/commands/cute-anime-girl-ai-bikini.js.map +1 -1
- package/dist/commands/demon-slayer-oc-maker.js +8 -29
- package/dist/commands/demon-slayer-oc-maker.js.map +1 -1
- package/dist/commands/dress-remover-magic-eraser.js +9 -26
- package/dist/commands/dress-remover-magic-eraser.js.map +1 -1
- package/dist/commands/face-forge.js +20 -50
- package/dist/commands/face-forge.js.map +1 -1
- package/dist/commands/fat-ai.js +8 -33
- package/dist/commands/fat-ai.js.map +1 -1
- package/dist/commands/firered-image-edit.js +14 -39
- package/dist/commands/firered-image-edit.js.map +1 -1
- package/dist/commands/flat-lay.js +13 -36
- package/dist/commands/flat-lay.js.map +1 -1
- package/dist/commands/free-4k-video-upscaler.js +8 -24
- package/dist/commands/free-4k-video-upscaler.js.map +1 -1
- package/dist/commands/free-ai-girlfriend-generator.js +8 -29
- package/dist/commands/free-ai-girlfriend-generator.js.map +1 -1
- package/dist/commands/free-online-video-quality-enhancer.js +8 -24
- package/dist/commands/free-online-video-quality-enhancer.js.map +1 -1
- package/dist/commands/free-sexy-ai-generator.js +11 -29
- package/dist/commands/free-sexy-ai-generator.js.map +1 -1
- package/dist/commands/futuristic-elegance.js +8 -33
- package/dist/commands/futuristic-elegance.js.map +1 -1
- package/dist/commands/gemini-watermark-remover.js +6 -22
- package/dist/commands/gemini-watermark-remover.js.map +1 -1
- package/dist/commands/gender-swap.js +8 -33
- package/dist/commands/gender-swap.js.map +1 -1
- package/dist/commands/ghibli-art-create.js +8 -29
- package/dist/commands/ghibli-art-create.js.map +1 -1
- package/dist/commands/grok-imagine-video.js +12 -30
- package/dist/commands/grok-imagine-video.js.map +1 -1
- package/dist/commands/grok-imagine.js +8 -29
- package/dist/commands/grok-imagine.js.map +1 -1
- package/dist/commands/hair-color-try-on.js +8 -28
- package/dist/commands/hair-color-try-on.js.map +1 -1
- package/dist/commands/happy-woman-bikini-ai-pic.js +11 -29
- package/dist/commands/happy-woman-bikini-ai-pic.js.map +1 -1
- package/dist/commands/hot-bikini-models.js +11 -29
- package/dist/commands/hot-bikini-models.js.map +1 -1
- package/dist/commands/image-mixer.js +11 -35
- package/dist/commands/image-mixer.js.map +1 -1
- package/dist/commands/image-to-sketch.js +8 -25
- package/dist/commands/image-to-sketch.js.map +1 -1
- package/dist/commands/improve-video-quality-online-free.js +8 -24
- package/dist/commands/improve-video-quality-online-free.js.map +1 -1
- package/dist/commands/kling.js +16 -43
- package/dist/commands/kling.js.map +1 -1
- package/dist/commands/logo-remover-from-video.js +6 -22
- package/dist/commands/logo-remover-from-video.js.map +1 -1
- package/dist/commands/midjourney.js +10 -31
- package/dist/commands/midjourney.js.map +1 -1
- package/dist/commands/mugshot-creator.js +8 -25
- package/dist/commands/mugshot-creator.js.map +1 -1
- package/dist/commands/murder-drones-oc.js +8 -29
- package/dist/commands/murder-drones-oc.js.map +1 -1
- package/dist/commands/outfit-generator.js +8 -33
- package/dist/commands/outfit-generator.js.map +1 -1
- package/dist/commands/personalized-swimsuit.js +11 -29
- package/dist/commands/personalized-swimsuit.js.map +1 -1
- package/dist/commands/photo-to-bikini-ai.js +8 -25
- package/dist/commands/photo-to-bikini-ai.js.map +1 -1
- package/dist/commands/pregnant-ai.js +10 -33
- package/dist/commands/pregnant-ai.js.map +1 -1
- package/dist/commands/ps2-filter.js +8 -25
- package/dist/commands/ps2-filter.js.map +1 -1
- package/dist/commands/qwen-image-edit.js +11 -44
- package/dist/commands/qwen-image-edit.js.map +1 -1
- package/dist/commands/random-animal-generator.js +8 -29
- package/dist/commands/random-animal-generator.js.map +1 -1
- package/dist/commands/remove-filter-from-photo.js +8 -29
- package/dist/commands/remove-filter-from-photo.js.map +1 -1
- package/dist/commands/remove-subtitles-from-video-online-free.js +6 -22
- package/dist/commands/remove-subtitles-from-video-online-free.js.map +1 -1
- package/dist/commands/remove-text-from-video-online-free.js +6 -22
- package/dist/commands/remove-text-from-video-online-free.js.map +1 -1
- package/dist/commands/replace-face-in-video-online-free.js +9 -31
- package/dist/commands/replace-face-in-video-online-free.js.map +1 -1
- package/dist/commands/see-through-clothes-fitler.js +8 -25
- package/dist/commands/see-through-clothes-fitler.js.map +1 -1
- package/dist/commands/seedance.js +14 -32
- package/dist/commands/seedance.js.map +1 -1
- package/dist/commands/seedream.js +19 -51
- package/dist/commands/seedream.js.map +1 -1
- package/dist/commands/sex-ai-generator.js +11 -29
- package/dist/commands/sex-ai-generator.js.map +1 -1
- package/dist/commands/sexy-ai-pics.js +9 -26
- package/dist/commands/sexy-ai-pics.js.map +1 -1
- package/dist/commands/skin-color-changer.js +8 -28
- package/dist/commands/skin-color-changer.js.map +1 -1
- package/dist/commands/sonic-oc.js +8 -29
- package/dist/commands/sonic-oc.js.map +1 -1
- package/dist/commands/sora-2.js +12 -30
- package/dist/commands/sora-2.js.map +1 -1
- package/dist/commands/sprunki-oc-maker.js +8 -29
- package/dist/commands/sprunki-oc-maker.js.map +1 -1
- package/dist/commands/square-face-icon-generator.js +8 -29
- package/dist/commands/square-face-icon-generator.js.map +1 -1
- package/dist/commands/stardew-valley-portrait-maker.js +8 -29
- package/dist/commands/stardew-valley-portrait-maker.js.map +1 -1
- package/dist/commands/string-bikini-beauty-contest.js +11 -29
- package/dist/commands/string-bikini-beauty-contest.js.map +1 -1
- package/dist/commands/swimsuit-try-on-haul.js +11 -29
- package/dist/commands/swimsuit-try-on-haul.js.map +1 -1
- package/dist/commands/video-resolution-enhancer-online-free.js +8 -24
- package/dist/commands/video-resolution-enhancer-online-free.js.map +1 -1
- package/dist/commands/video-upscaler-online-free.js +8 -24
- package/dist/commands/video-upscaler-online-free.js.map +1 -1
- package/dist/commands/video-watermark-remover.js +8 -27
- package/dist/commands/video-watermark-remover.js.map +1 -1
- package/dist/commands/wan-ai.js +11 -29
- package/dist/commands/wan-ai.js.map +1 -1
- package/dist/commands/wild-graffiti.js +8 -29
- package/dist/commands/wild-graffiti.js.map +1 -1
- package/dist/commands/z-image.js +11 -32
- package/dist/commands/z-image.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/run-helper.d.ts +7 -1
- package/dist/run-helper.js +33 -4
- package/dist/run-helper.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "Please don't change any elements that I provide. Generate a chaotic and creative multi-media collage with a completely randomized aesthetic. Combine a wide array of contrasting elements: vintage magazine cutouts, neon-colored glitch art, 19th-century botanical illustrations, and sharp vector geometric shapes. The composition should be an experimental mix of textures—including torn glossy paper, rough cardboard, transparent celluloid film, and metallic foil. Incorporate a clashing color palette that shifts randomly across the canvas. Features an unpredictable focal point, layered with 3D drop shadows to create a sense of physical depth. High resolution, maximalist detail, eclectic and avant-garde style.";
|
|
5
4
|
export const aiGroupPhotoGeneratorCmd = new Command("ai-group-photo-generator")
|
|
6
5
|
.summary("AI group photo generator — create a creative group photo or collage from up to 10 images")
|
|
@@ -18,37 +17,17 @@ export const aiGroupPhotoGeneratorCmd = new Command("ai-group-photo-generator")
|
|
|
18
17
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
18
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
19
|
.action(async (opts) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
console.error("[error]\n message: Maximum 10 images allowed");
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
const urls = [];
|
|
28
|
-
for (const img of imageList) {
|
|
29
|
-
const { url } = await resolveImage(img);
|
|
30
|
-
urls.push(url);
|
|
31
|
-
}
|
|
32
|
-
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: urls };
|
|
33
|
-
if (opts.batch != null)
|
|
34
|
-
params.batchCount = opts.batch;
|
|
35
|
-
const input = { originalImage: urls[0] };
|
|
36
|
-
if (opts.taskName)
|
|
37
|
-
input.taskName = opts.taskName;
|
|
38
|
-
const body = { agent: { name: "ai-group-photo-generator", version: "v1.0" }, input, params };
|
|
39
|
-
const { executionId } = await submitRun(body);
|
|
40
|
-
printSubmitted(executionId);
|
|
41
|
-
if (opts.wait !== false) {
|
|
42
|
-
printPollResult(await waitForCompletion(executionId));
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
console.log("[info]");
|
|
46
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch (err) {
|
|
50
|
-
printError(err);
|
|
20
|
+
const imageList = opts.image;
|
|
21
|
+
if (imageList.length > 10) {
|
|
22
|
+
console.error("[error]\n message: Maximum 10 images allowed");
|
|
51
23
|
process.exit(1);
|
|
52
24
|
}
|
|
25
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
26
|
+
if (opts.batch != null)
|
|
27
|
+
params.batchCount = opts.batch;
|
|
28
|
+
const extraInput = {};
|
|
29
|
+
if (opts.taskName)
|
|
30
|
+
extraInput.taskName = opts.taskName;
|
|
31
|
+
await executeRun("ai-group-photo-generator", "v1.0", { images: imageList, wait: opts.wait }, params, extraInput);
|
|
53
32
|
});
|
|
54
33
|
//# sourceMappingURL=ai-group-photo-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-group-photo-generator.js","sourceRoot":"","sources":["../../src/commands/ai-group-photo-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-group-photo-generator.js","sourceRoot":"","sources":["../../src/commands/ai-group-photo-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,ysBAAysB,CAAC;AAE5sB,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC;KAC5E,OAAO,CAAC,0FAA0F,CAAC;KACnG,WAAW,CACV,4FAA4F;IAC5F,mDAAmD;IACnD,oFAAoF;IACpF,gEAAgE;IAChE,aAAa;IACb,oGAAoG;IACpG,+GAA+G;IAC/G,mFAAmF,CACpF;KACA,cAAc,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;KACjG,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;IACvC,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC/G,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACnH,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "Change hair color naturally. choose whatever suit the person's skin tone or randomly between Rose Gold/Pinkish Brown/Dark Blue. Don't change hair style or other details.";
|
|
5
4
|
export const aiHairColorChangerCmd = new Command("ai-hair-color-changer")
|
|
6
5
|
.summary("AI hair color changer — change a person's hair color while preserving hairstyle and details")
|
|
@@ -18,31 +17,12 @@ export const aiHairColorChangerCmd = new Command("ai-hair-color-changer")
|
|
|
18
17
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
18
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
19
|
.action(async (opts) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
params.batchCount = opts.batch;
|
|
29
|
-
const input = { originalImage: imageUrl };
|
|
30
|
-
if (opts.taskName)
|
|
31
|
-
input.taskName = opts.taskName;
|
|
32
|
-
const body = { agent: { name: "ai-hair-color-changer", version: "v1.0" }, input, params };
|
|
33
|
-
const { executionId } = await submitRun(body);
|
|
34
|
-
printSubmitted(executionId);
|
|
35
|
-
if (opts.wait !== false) {
|
|
36
|
-
printPollResult(await waitForCompletion(executionId));
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
console.log("[info]");
|
|
40
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
printError(err);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
20
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
21
|
+
if (opts.batch != null)
|
|
22
|
+
params.batchCount = opts.batch;
|
|
23
|
+
const extraInput = {};
|
|
24
|
+
if (opts.taskName)
|
|
25
|
+
extraInput.taskName = opts.taskName;
|
|
26
|
+
await executeRun("ai-hair-color-changer", "v1.0", { image: opts.image, wait: opts.wait }, params, extraInput);
|
|
47
27
|
});
|
|
48
28
|
//# sourceMappingURL=ai-hair-color-changer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-hair-color-changer.js","sourceRoot":"","sources":["../../src/commands/ai-hair-color-changer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-hair-color-changer.js","sourceRoot":"","sources":["../../src/commands/ai-hair-color-changer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,2KAA2K,CAAC;AAE9K,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,uBAAuB,CAAC;KACtE,OAAO,CAAC,6FAA6F,CAAC;KACtG,WAAW,CACV,oEAAoE;IACpE,6DAA6D;IAC7D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,uDAAuD;IACvD,iGAAiG;IACjG,+DAA+D,CAChE;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,wEAAwE,CAAC;KACnG,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,uBAAuB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAChH,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "Change to [short hair]";
|
|
5
4
|
export const aiHairstyleChangerCmd = new Command("ai-hairstyle-changer")
|
|
6
5
|
.summary("AI hairstyle changer — change a person's hairstyle from a photo or text description")
|
|
@@ -17,32 +16,12 @@ export const aiHairstyleChangerCmd = new Command("ai-hairstyle-changer")
|
|
|
17
16
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
18
17
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
19
18
|
.action(async (opts) => {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
if (opts.image) {
|
|
28
|
-
const { url: imageUrl } = await resolveImage(opts.image);
|
|
29
|
-
params.images = [imageUrl];
|
|
30
|
-
input.originalImage = imageUrl;
|
|
31
|
-
}
|
|
32
|
-
const body = { agent: { name: "ai-hairstyle-changer", version: "v1.0" }, input, params };
|
|
33
|
-
const { executionId } = await submitRun(body);
|
|
34
|
-
printSubmitted(executionId);
|
|
35
|
-
if (opts.wait !== false) {
|
|
36
|
-
printPollResult(await waitForCompletion(executionId));
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
console.log("[info]");
|
|
40
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (err) {
|
|
44
|
-
printError(err);
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
19
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
20
|
+
if (opts.batch != null)
|
|
21
|
+
params.batchCount = opts.batch;
|
|
22
|
+
const extraInput = {};
|
|
23
|
+
if (opts.taskName)
|
|
24
|
+
extraInput.taskName = opts.taskName;
|
|
25
|
+
await executeRun("ai-hairstyle-changer", "v1.0", { image: opts.image, wait: opts.wait }, params, extraInput);
|
|
47
26
|
});
|
|
48
27
|
//# sourceMappingURL=ai-hairstyle-changer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-hairstyle-changer.js","sourceRoot":"","sources":["../../src/commands/ai-hairstyle-changer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-hairstyle-changer.js","sourceRoot":"","sources":["../../src/commands/ai-hairstyle-changer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAAG,wBAAwB,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,sBAAsB,CAAC;KACrE,OAAO,CAAC,qFAAqF,CAAC;KAC9F,WAAW,CACV,8DAA8D;IAC9D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,sDAAsD;IACtD,sGAAsG;IACtG,yGAAyG,CAC1G;KACA,MAAM,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAC1F,MAAM,CAAC,iBAAiB,EAAE,sDAAsD,CAAC;KACjF,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,sBAAsB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/G,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
|
|
5
4
|
export const aiHotGirlImageCmd = new Command("ai-hot-girl-image")
|
|
6
5
|
.summary("AI hot girl image — transform a person photo into a bikini model image or video")
|
|
@@ -21,32 +20,15 @@ export const aiHotGirlImageCmd = new Command("ai-hot-girl-image")
|
|
|
21
20
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
22
21
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
23
22
|
.action(async (opts) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (opts.taskName)
|
|
35
|
-
input.taskName = opts.taskName;
|
|
36
|
-
const body = { agent: { name: "ai-hot-girl-image", version: "v1.0" }, input, params };
|
|
37
|
-
const { executionId } = await submitRun(body);
|
|
38
|
-
printSubmitted(executionId);
|
|
39
|
-
if (opts.wait !== false) {
|
|
40
|
-
printPollResult(await waitForCompletion(executionId));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.log("[info]");
|
|
44
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
printError(err);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
23
|
+
const params = {
|
|
24
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
25
|
+
generatedType: opts.generatedType ?? "video",
|
|
26
|
+
};
|
|
27
|
+
if (opts.batch != null)
|
|
28
|
+
params.batchCount = opts.batch;
|
|
29
|
+
const extraInput = {};
|
|
30
|
+
if (opts.taskName)
|
|
31
|
+
extraInput.taskName = opts.taskName;
|
|
32
|
+
await executeRun("ai-hot-girl-image", "v1.0", { image: opts.image, wait: opts.wait }, params, extraInput);
|
|
51
33
|
});
|
|
52
34
|
//# sourceMappingURL=ai-hot-girl-image.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-hot-girl-image.js","sourceRoot":"","sources":["../../src/commands/ai-hot-girl-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-hot-girl-image.js","sourceRoot":"","sources":["../../src/commands/ai-hot-girl-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,qIAAqI,CAAC;AAExI,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;KAC9D,OAAO,CAAC,iFAAiF,CAAC;KAC1F,WAAW,CACV,iFAAiF;IACjF,sCAAsC;IACtC,8CAA8C;IAC9C,sCAAsC;IACtC,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,sFAAsF;IACtF,oFAAoF;IACpF,kFAAkF,CACnF;KACA,cAAc,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAClG,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B;QACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;QAC9C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;KAC7C,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC5G,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
-
const DEFAULT_PROMPT = "Turn static image into dynamic video";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
5
3
|
export const aiImageAnimationCmd = new Command("ai-image-animation")
|
|
6
4
|
.summary("AI image animation — animate a static image into a dynamic video using Kling")
|
|
7
5
|
.description("Animate a static image into a dynamic video. Results come back in video[N].url.\n\n" +
|
|
@@ -12,8 +10,6 @@ export const aiImageAnimationCmd = new Command("ai-image-animation")
|
|
|
12
10
|
" Kling_3_0: 3s, 4s, 5s, 6s, 7s, 8s, 9s, 10s, 11s, 12s, 13s, 14s, 15s (default: 5s)\n" +
|
|
13
11
|
" Kling_2_6: 5s, 10s (default: 5s)\n\n" +
|
|
14
12
|
"Generate audio (--generate-audio): true or false (default: true)\n\n" +
|
|
15
|
-
"Default prompt (used when --prompt is omitted):\n" +
|
|
16
|
-
` "${DEFAULT_PROMPT}"\n\n` +
|
|
17
13
|
"Examples:\n" +
|
|
18
14
|
" weshop ai-image-animation --image ./photo.png --prompt 'Gentle breeze, leaves rustling'\n" +
|
|
19
15
|
" weshop ai-image-animation --image ./portrait.png --prompt 'Person slowly turns and smiles' --model Kling_3_0 --duration 8s\n" +
|
|
@@ -27,34 +23,17 @@ export const aiImageAnimationCmd = new Command("ai-image-animation")
|
|
|
27
23
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
28
24
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
29
25
|
.action(async (opts) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (opts.taskName)
|
|
43
|
-
input.taskName = opts.taskName;
|
|
44
|
-
const body = { agent: { name: "ai-image-animation", version: "v1.0" }, input, params };
|
|
45
|
-
const { executionId } = await submitRun(body);
|
|
46
|
-
printSubmitted(executionId);
|
|
47
|
-
if (opts.wait !== false) {
|
|
48
|
-
printPollResult(await waitForCompletion(executionId));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
console.log("[info]");
|
|
52
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch (err) {
|
|
56
|
-
printError(err);
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
26
|
+
const params = {
|
|
27
|
+
textDescription: opts.prompt,
|
|
28
|
+
modelName: opts.model ?? "Kling_3_0",
|
|
29
|
+
duration: opts.duration ?? "5s",
|
|
30
|
+
generateAudio: opts.generateAudio ?? "true",
|
|
31
|
+
};
|
|
32
|
+
if (opts.batch != null)
|
|
33
|
+
params.batchCount = opts.batch;
|
|
34
|
+
const extraInput = {};
|
|
35
|
+
if (opts.taskName)
|
|
36
|
+
extraInput.taskName = opts.taskName;
|
|
37
|
+
await executeRun("ai-image-animation", "v1.0", { image: opts.image, wait: opts.wait }, params, extraInput);
|
|
59
38
|
});
|
|
60
39
|
//# sourceMappingURL=ai-image-animation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-image-animation.js","sourceRoot":"","sources":["../../src/commands/ai-image-animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-image-animation.js","sourceRoot":"","sources":["../../src/commands/ai-image-animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KACjE,OAAO,CAAC,8EAA8E,CAAC;KACvF,WAAW,CACV,qFAAqF;IACrF,oBAAoB;IACpB,gEAAgE;IAChE,yDAAyD;IACzD,0BAA0B;IAC1B,yFAAyF;IACzF,0CAA0C;IAC1C,sEAAsE;IACtE,aAAa;IACb,6FAA6F;IAC7F,gIAAgI;IAChI,mGAAmG,CACpG;KACA,cAAc,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;KACvF,cAAc,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KAC7E,MAAM,CAAC,gBAAgB,EAAE,+CAA+C,CAAC;KACzE,MAAM,CAAC,mBAAmB,EAAE,4CAA4C,CAAC;KACzE,MAAM,CAAC,yBAAyB,EAAE,yCAAyC,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B;QACtC,eAAe,EAAE,IAAI,CAAC,MAAM;QAC5B,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,WAAW;QACpC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,MAAM;KAC5C,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IAEvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEvD,MAAM,UAAU,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "Merge these two photos together naturally. Don't simply put element on the another image, try to generate a merged photo.";
|
|
5
4
|
export const aiImageCombinerCmd = new Command("ai-image-combiner")
|
|
6
5
|
.summary("AI image combiner — naturally merge two photos into a single cohesive image")
|
|
@@ -18,40 +17,17 @@ export const aiImageCombinerCmd = new Command("ai-image-combiner")
|
|
|
18
17
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
18
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
19
|
.action(async (opts) => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
console.error("[error]\n message: Exactly 2 images required for ai-image-combiner");
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
const urls = [];
|
|
28
|
-
for (const img of imageList) {
|
|
29
|
-
const { url } = await resolveImage(img);
|
|
30
|
-
urls.push(url);
|
|
31
|
-
}
|
|
32
|
-
const params = {
|
|
33
|
-
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
34
|
-
images: urls,
|
|
35
|
-
};
|
|
36
|
-
if (opts.batch != null)
|
|
37
|
-
params.batchCount = opts.batch;
|
|
38
|
-
const input = { originalImage: urls[0] };
|
|
39
|
-
if (opts.taskName)
|
|
40
|
-
input.taskName = opts.taskName;
|
|
41
|
-
const body = { agent: { name: "ai-image-combiner", version: "v1.0" }, input, params };
|
|
42
|
-
const { executionId } = await submitRun(body);
|
|
43
|
-
printSubmitted(executionId);
|
|
44
|
-
if (opts.wait !== false) {
|
|
45
|
-
printPollResult(await waitForCompletion(executionId));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
console.log("[info]");
|
|
49
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch (err) {
|
|
53
|
-
printError(err);
|
|
20
|
+
const imageList = opts.image;
|
|
21
|
+
if (imageList.length !== 2) {
|
|
22
|
+
console.error("[error]\n message: Exactly 2 images required for ai-image-combiner");
|
|
54
23
|
process.exit(1);
|
|
55
24
|
}
|
|
25
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
26
|
+
if (opts.batch != null)
|
|
27
|
+
params.batchCount = opts.batch;
|
|
28
|
+
const extraInput = {};
|
|
29
|
+
if (opts.taskName)
|
|
30
|
+
extraInput.taskName = opts.taskName;
|
|
31
|
+
await executeRun("ai-image-combiner", "v1.0", { images: imageList, wait: opts.wait }, params, extraInput);
|
|
56
32
|
});
|
|
57
33
|
//# sourceMappingURL=ai-image-combiner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-image-combiner.js","sourceRoot":"","sources":["../../src/commands/ai-image-combiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-image-combiner.js","sourceRoot":"","sources":["../../src/commands/ai-image-combiner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,2HAA2H,CAAC;AAE9H,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;KAC/D,OAAO,CAAC,6EAA6E,CAAC;KACtF,WAAW,CACV,oEAAoE;IACpE,0FAA0F;IAC1F,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,wEAAwE;IACxE,yIAAyI;IACzI,sEAAsE,CACvE;KACA,cAAc,CAAC,uBAAuB,EAAE,uEAAuE,CAAC;KAChH,MAAM,CAAC,iBAAiB,EAAE,iEAAiE,CAAC;KAC5F,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;IACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC5G,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "You are a professional landscape designer. Your task is to create a new [Modern style] landscape design for this yard. You need to retain the materials and core structure of the yard while upgrading the landscape to make it modern, beautiful, and practical. *If image2 exists, you should integrate the style of image2.";
|
|
5
4
|
export const aiLandscapeDesignFreeCmd = new Command("ai-landscape-design-free")
|
|
6
5
|
.summary("AI landscape designer — redesign a yard or outdoor space with a new landscape style")
|
|
@@ -20,41 +19,22 @@ export const aiLandscapeDesignFreeCmd = new Command("ai-landscape-design-free")
|
|
|
20
19
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
21
20
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
22
21
|
.action(async (opts) => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
const urls = [];
|
|
37
|
-
for (const img of imageList) {
|
|
38
|
-
const { url } = await resolveImage(img);
|
|
39
|
-
urls.push(url);
|
|
40
|
-
}
|
|
41
|
-
params.images = urls;
|
|
42
|
-
input.originalImage = urls[0];
|
|
43
|
-
}
|
|
44
|
-
const body = { agent: { name: "ai-landscape-design-free", version: "v1.0" }, input, params };
|
|
45
|
-
const { executionId } = await submitRun(body);
|
|
46
|
-
printSubmitted(executionId);
|
|
47
|
-
if (opts.wait !== false) {
|
|
48
|
-
printPollResult(await waitForCompletion(executionId));
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
console.log("[info]");
|
|
52
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
22
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
23
|
+
if (opts.batch != null)
|
|
24
|
+
params.batchCount = opts.batch;
|
|
25
|
+
const extraInput = {};
|
|
26
|
+
if (opts.taskName)
|
|
27
|
+
extraInput.taskName = opts.taskName;
|
|
28
|
+
if (opts.image && opts.image.length > 0) {
|
|
29
|
+
const imageList = opts.image;
|
|
30
|
+
if (imageList.length > 2) {
|
|
31
|
+
console.error("[error]\n message: Maximum 2 images allowed");
|
|
32
|
+
process.exit(1);
|
|
53
33
|
}
|
|
34
|
+
await executeRun("ai-landscape-design-free", "v1.0", { images: imageList, wait: opts.wait }, params, extraInput);
|
|
54
35
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
process.exit(1);
|
|
36
|
+
else {
|
|
37
|
+
await executeRun("ai-landscape-design-free", "v1.0", { wait: opts.wait }, params, extraInput);
|
|
58
38
|
}
|
|
59
39
|
});
|
|
60
40
|
//# sourceMappingURL=ai-landscape-design-free.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-landscape-design-free.js","sourceRoot":"","sources":["../../src/commands/ai-landscape-design-free.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-landscape-design-free.js","sourceRoot":"","sources":["../../src/commands/ai-landscape-design-free.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,iUAAiU,CAAC;AAEpU,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC;KAC5E,OAAO,CAAC,qFAAqF,CAAC;KAC9F,WAAW,CACV,yFAAyF;IACzF,mCAAmC;IACnC,mDAAmD;IACnD,8DAA8D;IAC9D,mDAAmD;IACnD,sGAAsG;IACtG,aAAa;IACb,wDAAwD;IACxD,qHAAqH;IACrH,kEAAkE,CACnE;KACA,MAAM,CAAC,uBAAuB,EAAE,8EAA8E,CAAC;KAC/G,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,iDAAiD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACvG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;IAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC7G,MAAM,UAAU,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACnH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,CAAC,0BAA0B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChG,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
const DEFAULT_PROMPT = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
|
|
5
4
|
export const aiLingerieModelsCmd = new Command("ai-lingerie-models")
|
|
6
5
|
.summary("AI lingerie models — transform a person photo into a bikini model image or video")
|
|
@@ -21,32 +20,15 @@ export const aiLingerieModelsCmd = new Command("ai-lingerie-models")
|
|
|
21
20
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
22
21
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
23
22
|
.action(async (opts) => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
if (opts.taskName)
|
|
35
|
-
input.taskName = opts.taskName;
|
|
36
|
-
const body = { agent: { name: "ai-lingerie-models", version: "v1.0" }, input, params };
|
|
37
|
-
const { executionId } = await submitRun(body);
|
|
38
|
-
printSubmitted(executionId);
|
|
39
|
-
if (opts.wait !== false) {
|
|
40
|
-
printPollResult(await waitForCompletion(executionId));
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
console.log("[info]");
|
|
44
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
printError(err);
|
|
49
|
-
process.exit(1);
|
|
50
|
-
}
|
|
23
|
+
const params = {
|
|
24
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
25
|
+
generatedType: opts.generatedType ?? "video",
|
|
26
|
+
};
|
|
27
|
+
if (opts.batch != null)
|
|
28
|
+
params.batchCount = opts.batch;
|
|
29
|
+
const extraInput = {};
|
|
30
|
+
if (opts.taskName)
|
|
31
|
+
extraInput.taskName = opts.taskName;
|
|
32
|
+
await executeRun("ai-lingerie-models", "v1.0", { image: opts.image, wait: opts.wait }, params, extraInput);
|
|
51
33
|
});
|
|
52
34
|
//# sourceMappingURL=ai-lingerie-models.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-lingerie-models.js","sourceRoot":"","sources":["../../src/commands/ai-lingerie-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-lingerie-models.js","sourceRoot":"","sources":["../../src/commands/ai-lingerie-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,cAAc,GAClB,qIAAqI,CAAC;AAExI,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KACjE,OAAO,CAAC,kFAAkF,CAAC;KAC3F,WAAW,CACV,iFAAiF;IACjF,sCAAsC;IACtC,8CAA8C;IAC9C,sCAAsC;IACtC,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,uFAAuF;IACvF,qFAAqF;IACrF,mFAAmF,CACpF;KACA,cAAc,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAClG,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,yBAAyB,EAAE,uCAAuC,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;KACxG,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAA4B;QACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;QAC9C,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;KAC7C,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;QAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;IACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAC/C,IAAI,IAAI,CAAC,QAAQ;QAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IACvD,MAAM,UAAU,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
3
|
-
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
2
|
+
import { executeRun } from "../run-helper.js";
|
|
4
3
|
export const aiPhotoshootCmd = new Command("ai-photoshoot")
|
|
5
4
|
.summary("AI photoshoot — generate a professional photoshoot by combining a character photo and a reference scene")
|
|
6
5
|
.description("Generate a professional photoshoot by combining two images:\n" +
|
|
@@ -33,49 +32,28 @@ export const aiPhotoshootCmd = new Command("ai-photoshoot")
|
|
|
33
32
|
.option("--task-name <name>", "Human-readable label for this run")
|
|
34
33
|
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
35
34
|
.action(async (opts) => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
process.exit(1);
|
|
41
|
-
}
|
|
42
|
-
if (imageList.length > 2) {
|
|
43
|
-
console.error("[error]\n message: Maximum 2 images allowed for ai-photoshoot");
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
const urls = [];
|
|
47
|
-
for (const img of imageList) {
|
|
48
|
-
const { url } = await resolveImage(img);
|
|
49
|
-
urls.push(url);
|
|
50
|
-
}
|
|
51
|
-
const params = {
|
|
52
|
-
images: urls,
|
|
53
|
-
modelName: opts.model ?? "qwen",
|
|
54
|
-
aspectRatio: opts.aspectRatio ?? "auto",
|
|
55
|
-
};
|
|
56
|
-
if (opts.prompt)
|
|
57
|
-
params.textDescription = opts.prompt;
|
|
58
|
-
if (opts.imageSize)
|
|
59
|
-
params.imageSize = opts.imageSize;
|
|
60
|
-
if (opts.batch != null)
|
|
61
|
-
params.batchCount = opts.batch;
|
|
62
|
-
const input = { originalImage: urls[0] };
|
|
63
|
-
if (opts.taskName)
|
|
64
|
-
input.taskName = opts.taskName;
|
|
65
|
-
const body = { agent: { name: "ai-photoshoot", version: "v1.0" }, input, params };
|
|
66
|
-
const { executionId } = await submitRun(body);
|
|
67
|
-
printSubmitted(executionId);
|
|
68
|
-
if (opts.wait !== false) {
|
|
69
|
-
printPollResult(await waitForCompletion(executionId));
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
console.log("[info]");
|
|
73
|
-
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
74
|
-
}
|
|
35
|
+
const imageList = opts.image;
|
|
36
|
+
if (imageList.length < 2) {
|
|
37
|
+
console.error("[error]\n message: ai-photoshoot requires exactly 2 images: character (image 1) and reference scene (image 2)");
|
|
38
|
+
process.exit(1);
|
|
75
39
|
}
|
|
76
|
-
|
|
77
|
-
|
|
40
|
+
if (imageList.length > 2) {
|
|
41
|
+
console.error("[error]\n message: Maximum 2 images allowed for ai-photoshoot");
|
|
78
42
|
process.exit(1);
|
|
79
43
|
}
|
|
44
|
+
const params = {
|
|
45
|
+
modelName: opts.model ?? "qwen",
|
|
46
|
+
aspectRatio: opts.aspectRatio ?? "auto",
|
|
47
|
+
};
|
|
48
|
+
if (opts.prompt)
|
|
49
|
+
params.textDescription = opts.prompt;
|
|
50
|
+
if (opts.imageSize)
|
|
51
|
+
params.imageSize = opts.imageSize;
|
|
52
|
+
if (opts.batch != null)
|
|
53
|
+
params.batchCount = opts.batch;
|
|
54
|
+
const extraInput = {};
|
|
55
|
+
if (opts.taskName)
|
|
56
|
+
extraInput.taskName = opts.taskName;
|
|
57
|
+
await executeRun("ai-photoshoot", "v1.0", { images: imageList, wait: opts.wait }, params, extraInput);
|
|
80
58
|
});
|
|
81
59
|
//# sourceMappingURL=ai-photoshoot.js.map
|