weshop-cli 0.1.0 → 0.2.0
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/README.md +169 -7
- package/dist/client.d.ts +2 -0
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/commands/2d-to-3d-image-converter.d.ts +2 -0
- package/dist/commands/2d-to-3d-image-converter.js +44 -0
- package/dist/commands/2d-to-3d-image-converter.js.map +1 -0
- package/dist/commands/ai-3d-rendering.d.ts +2 -0
- package/dist/commands/ai-3d-rendering.js +46 -0
- package/dist/commands/ai-3d-rendering.js.map +1 -0
- package/dist/commands/ai-action-figure-generators.d.ts +2 -0
- package/dist/commands/ai-action-figure-generators.js +49 -0
- package/dist/commands/ai-action-figure-generators.js.map +1 -0
- package/dist/commands/ai-aging.d.ts +2 -0
- package/dist/commands/ai-aging.js +52 -0
- package/dist/commands/ai-aging.js.map +1 -0
- package/dist/commands/ai-babe.d.ts +2 -0
- package/dist/commands/ai-babe.js +43 -0
- package/dist/commands/ai-babe.js.map +1 -0
- package/dist/commands/ai-bikini-model.d.ts +2 -0
- package/dist/commands/ai-bikini-model.js +54 -0
- package/dist/commands/ai-bikini-model.js.map +1 -0
- package/dist/commands/ai-bikini-photo-editor.d.ts +2 -0
- package/dist/commands/ai-bikini-photo-editor.js +43 -0
- package/dist/commands/ai-bikini-photo-editor.js.map +1 -0
- package/dist/commands/ai-bikini-video.d.ts +2 -0
- package/dist/commands/ai-bikini-video.js +48 -0
- package/dist/commands/ai-bikini-video.js.map +1 -0
- package/dist/commands/ai-christmas-photo.d.ts +2 -0
- package/dist/commands/ai-christmas-photo.js +49 -0
- package/dist/commands/ai-christmas-photo.js.map +1 -0
- package/dist/commands/ai-clothes-changer.d.ts +2 -0
- package/dist/commands/ai-clothes-changer.js +56 -0
- package/dist/commands/ai-clothes-changer.js.map +1 -0
- package/dist/commands/ai-collage-maker.d.ts +2 -0
- package/dist/commands/ai-collage-maker.js +54 -0
- package/dist/commands/ai-collage-maker.js.map +1 -0
- package/dist/commands/ai-dog.d.ts +2 -0
- package/dist/commands/ai-dog.js +57 -0
- package/dist/commands/ai-dog.js.map +1 -0
- package/dist/commands/ai-elf.d.ts +2 -0
- package/dist/commands/ai-elf.js +45 -0
- package/dist/commands/ai-elf.js.map +1 -0
- package/dist/commands/ai-face-merge.d.ts +2 -0
- package/dist/commands/ai-face-merge.js +63 -0
- package/dist/commands/ai-face-merge.js.map +1 -0
- package/dist/commands/ai-feet.d.ts +2 -0
- package/dist/commands/ai-feet.js +44 -0
- package/dist/commands/ai-feet.js.map +1 -0
- package/dist/commands/ai-flag-generator.d.ts +2 -0
- package/dist/commands/ai-flag-generator.js +49 -0
- package/dist/commands/ai-flag-generator.js.map +1 -0
- package/dist/commands/ai-generated-bikini-girls.d.ts +2 -0
- package/dist/commands/ai-generated-bikini-girls.js +52 -0
- package/dist/commands/ai-generated-bikini-girls.js.map +1 -0
- package/dist/commands/ai-generated-perfect-female-body.d.ts +2 -0
- package/dist/commands/ai-generated-perfect-female-body.js +52 -0
- package/dist/commands/ai-generated-perfect-female-body.js.map +1 -0
- package/dist/commands/ai-ghost-mannequin-generator.d.ts +2 -0
- package/dist/commands/ai-ghost-mannequin-generator.js +56 -0
- package/dist/commands/ai-ghost-mannequin-generator.js.map +1 -0
- package/dist/commands/ai-group-photo-generator.d.ts +2 -0
- package/dist/commands/ai-group-photo-generator.js +54 -0
- package/dist/commands/ai-group-photo-generator.js.map +1 -0
- package/dist/commands/ai-hair-color-changer.d.ts +2 -0
- package/dist/commands/ai-hair-color-changer.js +48 -0
- package/dist/commands/ai-hair-color-changer.js.map +1 -0
- package/dist/commands/ai-hairstyle-changer.d.ts +2 -0
- package/dist/commands/ai-hairstyle-changer.js +48 -0
- package/dist/commands/ai-hairstyle-changer.js.map +1 -0
- package/dist/commands/ai-hot-girl-image.d.ts +2 -0
- package/dist/commands/ai-hot-girl-image.js +52 -0
- package/dist/commands/ai-hot-girl-image.js.map +1 -0
- package/dist/commands/ai-image-animation.d.ts +2 -0
- package/dist/commands/ai-image-animation.js +60 -0
- package/dist/commands/ai-image-animation.js.map +1 -0
- package/dist/commands/ai-image-combiner.d.ts +2 -0
- package/dist/commands/ai-image-combiner.js +57 -0
- package/dist/commands/ai-image-combiner.js.map +1 -0
- package/dist/commands/ai-landscape-design-free.d.ts +2 -0
- package/dist/commands/ai-landscape-design-free.js +60 -0
- package/dist/commands/ai-landscape-design-free.js.map +1 -0
- package/dist/commands/ai-lingerie-models.d.ts +2 -0
- package/dist/commands/ai-lingerie-models.js +52 -0
- package/dist/commands/ai-lingerie-models.js.map +1 -0
- package/dist/commands/ai-photoshoot.d.ts +2 -0
- package/dist/commands/ai-photoshoot.js +81 -0
- package/dist/commands/ai-photoshoot.js.map +1 -0
- package/dist/commands/ai-poster-from-images.d.ts +2 -0
- package/dist/commands/ai-poster-from-images.js +73 -0
- package/dist/commands/ai-poster-from-images.js.map +1 -0
- package/dist/commands/ai-poster.d.ts +2 -0
- package/dist/commands/ai-poster.js +73 -0
- package/dist/commands/ai-poster.js.map +1 -0
- package/dist/commands/ai-room-planner.d.ts +2 -0
- package/dist/commands/ai-room-planner.js +49 -0
- package/dist/commands/ai-room-planner.js.map +1 -0
- package/dist/commands/ai-selfie.d.ts +2 -0
- package/dist/commands/ai-selfie.js +44 -0
- package/dist/commands/ai-selfie.js.map +1 -0
- package/dist/commands/ai-sexy-portrait.d.ts +2 -0
- package/dist/commands/ai-sexy-portrait.js +52 -0
- package/dist/commands/ai-sexy-portrait.js.map +1 -0
- package/dist/commands/ai-sexy-teens.d.ts +2 -0
- package/dist/commands/ai-sexy-teens.js +52 -0
- package/dist/commands/ai-sexy-teens.js.map +1 -0
- package/dist/commands/ai-spray-paint.d.ts +2 -0
- package/dist/commands/ai-spray-paint.js +49 -0
- package/dist/commands/ai-spray-paint.js.map +1 -0
- package/dist/commands/ai-swimsuit-model.d.ts +2 -0
- package/dist/commands/ai-swimsuit-model.js +44 -0
- package/dist/commands/ai-swimsuit-model.js.map +1 -0
- package/dist/commands/ai-tattoo-generator.d.ts +2 -0
- package/dist/commands/ai-tattoo-generator.js +48 -0
- package/dist/commands/ai-tattoo-generator.js.map +1 -0
- package/dist/commands/ai-text-remover-from-video.d.ts +2 -0
- package/dist/commands/ai-text-remover-from-video.js +37 -0
- package/dist/commands/ai-text-remover-from-video.js.map +1 -0
- package/dist/commands/ai-translate.d.ts +2 -0
- package/dist/commands/ai-translate.js +53 -0
- package/dist/commands/ai-translate.js.map +1 -0
- package/dist/commands/ai-video-enhancer.d.ts +2 -0
- package/dist/commands/ai-video-enhancer.js +49 -0
- package/dist/commands/ai-video-enhancer.js.map +1 -0
- package/dist/commands/ai-werewolf.d.ts +2 -0
- package/dist/commands/ai-werewolf.js +61 -0
- package/dist/commands/ai-werewolf.js.map +1 -0
- package/dist/commands/ai-xray-clothes.d.ts +2 -0
- package/dist/commands/ai-xray-clothes.js +45 -0
- package/dist/commands/ai-xray-clothes.js.map +1 -0
- package/dist/commands/ai-zombie.d.ts +2 -0
- package/dist/commands/ai-zombie.js +45 -0
- package/dist/commands/ai-zombie.js.map +1 -0
- package/dist/commands/aimodel.js +2 -2
- package/dist/commands/aimodel.js.map +1 -1
- package/dist/commands/aipose.js +2 -2
- package/dist/commands/aipose.js.map +1 -1
- package/dist/commands/aiproduct.js +2 -2
- package/dist/commands/aiproduct.js.map +1 -1
- package/dist/commands/anime-image-converter.d.ts +2 -0
- package/dist/commands/anime-image-converter.js +44 -0
- package/dist/commands/anime-image-converter.js.map +1 -0
- package/dist/commands/baby-face-generator.d.ts +2 -0
- package/dist/commands/baby-face-generator.js +59 -0
- package/dist/commands/baby-face-generator.js.map +1 -0
- package/dist/commands/bald-filter.d.ts +2 -0
- package/dist/commands/bald-filter.js +47 -0
- package/dist/commands/bald-filter.js.map +1 -0
- package/dist/commands/bangs-filter.d.ts +2 -0
- package/dist/commands/bangs-filter.js +45 -0
- package/dist/commands/bangs-filter.js.map +1 -0
- package/dist/commands/bikini-contest-photos.d.ts +2 -0
- package/dist/commands/bikini-contest-photos.js +52 -0
- package/dist/commands/bikini-contest-photos.js.map +1 -0
- package/dist/commands/bikini-try-on.d.ts +2 -0
- package/dist/commands/bikini-try-on.js +44 -0
- package/dist/commands/bikini-try-on.js.map +1 -0
- package/dist/commands/braces-filter.d.ts +2 -0
- package/dist/commands/braces-filter.js +44 -0
- package/dist/commands/braces-filter.js.map +1 -0
- package/dist/commands/brat-generator.d.ts +2 -0
- package/dist/commands/brat-generator.js +48 -0
- package/dist/commands/brat-generator.js.map +1 -0
- package/dist/commands/buzz-cut-ai.d.ts +2 -0
- package/dist/commands/buzz-cut-ai.js +52 -0
- package/dist/commands/buzz-cut-ai.js.map +1 -0
- package/dist/commands/celeb-ai.d.ts +2 -0
- package/dist/commands/celeb-ai.js +54 -0
- package/dist/commands/celeb-ai.js.map +1 -0
- package/dist/commands/chibi-maker.d.ts +2 -0
- package/dist/commands/chibi-maker.js +52 -0
- package/dist/commands/chibi-maker.js.map +1 -0
- package/dist/commands/clothing-magic-remover.d.ts +2 -0
- package/dist/commands/clothing-magic-remover.js +44 -0
- package/dist/commands/clothing-magic-remover.js.map +1 -0
- package/dist/commands/custom-bikini.d.ts +2 -0
- package/dist/commands/custom-bikini.js +52 -0
- package/dist/commands/custom-bikini.js.map +1 -0
- package/dist/commands/cute-anime-girl-ai-bikini.d.ts +2 -0
- package/dist/commands/cute-anime-girl-ai-bikini.js +52 -0
- package/dist/commands/cute-anime-girl-ai-bikini.js.map +1 -0
- package/dist/commands/demon-slayer-oc-maker.d.ts +2 -0
- package/dist/commands/demon-slayer-oc-maker.js +50 -0
- package/dist/commands/demon-slayer-oc-maker.js.map +1 -0
- package/dist/commands/dress-remover-magic-eraser.d.ts +2 -0
- package/dist/commands/dress-remover-magic-eraser.js +44 -0
- package/dist/commands/dress-remover-magic-eraser.js.map +1 -0
- package/dist/commands/expandimage.js +2 -2
- package/dist/commands/expandimage.js.map +1 -1
- package/dist/commands/face-forge.d.ts +2 -0
- package/dist/commands/face-forge.js +86 -0
- package/dist/commands/face-forge.js.map +1 -0
- package/dist/commands/fat-ai.d.ts +2 -0
- package/dist/commands/fat-ai.js +53 -0
- package/dist/commands/fat-ai.js.map +1 -0
- package/dist/commands/firered-image-edit.d.ts +2 -0
- package/dist/commands/firered-image-edit.js +61 -0
- package/dist/commands/firered-image-edit.js.map +1 -0
- package/dist/commands/flat-lay.d.ts +2 -0
- package/dist/commands/flat-lay.js +65 -0
- package/dist/commands/flat-lay.js.map +1 -0
- package/dist/commands/free-4k-video-upscaler.d.ts +2 -0
- package/dist/commands/free-4k-video-upscaler.js +42 -0
- package/dist/commands/free-4k-video-upscaler.js.map +1 -0
- package/dist/commands/free-ai-girlfriend-generator.d.ts +2 -0
- package/dist/commands/free-ai-girlfriend-generator.js +48 -0
- package/dist/commands/free-ai-girlfriend-generator.js.map +1 -0
- package/dist/commands/free-online-video-quality-enhancer.d.ts +2 -0
- package/dist/commands/free-online-video-quality-enhancer.js +42 -0
- package/dist/commands/free-online-video-quality-enhancer.js.map +1 -0
- package/dist/commands/free-sexy-ai-generator.d.ts +2 -0
- package/dist/commands/free-sexy-ai-generator.js +52 -0
- package/dist/commands/free-sexy-ai-generator.js.map +1 -0
- package/dist/commands/futuristic-elegance.d.ts +2 -0
- package/dist/commands/futuristic-elegance.js +54 -0
- package/dist/commands/futuristic-elegance.js.map +1 -0
- package/dist/commands/gemini-watermark-remover.d.ts +2 -0
- package/dist/commands/gemini-watermark-remover.js +37 -0
- package/dist/commands/gemini-watermark-remover.js.map +1 -0
- package/dist/commands/gender-swap.d.ts +2 -0
- package/dist/commands/gender-swap.js +53 -0
- package/dist/commands/gender-swap.js.map +1 -0
- package/dist/commands/ghibli-art-create.d.ts +2 -0
- package/dist/commands/ghibli-art-create.js +48 -0
- package/dist/commands/ghibli-art-create.js.map +1 -0
- package/dist/commands/grok-imagine-video.d.ts +2 -0
- package/dist/commands/grok-imagine-video.js +53 -0
- package/dist/commands/grok-imagine-video.js.map +1 -0
- package/dist/commands/grok-imagine.d.ts +2 -0
- package/dist/commands/grok-imagine.js +46 -0
- package/dist/commands/grok-imagine.js.map +1 -0
- package/dist/commands/hair-color-try-on.d.ts +2 -0
- package/dist/commands/hair-color-try-on.js +48 -0
- package/dist/commands/hair-color-try-on.js.map +1 -0
- package/dist/commands/happy-woman-bikini-ai-pic.d.ts +2 -0
- package/dist/commands/happy-woman-bikini-ai-pic.js +52 -0
- package/dist/commands/happy-woman-bikini-ai-pic.js.map +1 -0
- package/dist/commands/hot-bikini-models.d.ts +2 -0
- package/dist/commands/hot-bikini-models.js +52 -0
- package/dist/commands/hot-bikini-models.js.map +1 -0
- package/dist/commands/image-mixer.d.ts +2 -0
- package/dist/commands/image-mixer.js +57 -0
- package/dist/commands/image-mixer.js.map +1 -0
- package/dist/commands/image-to-sketch.d.ts +2 -0
- package/dist/commands/image-to-sketch.js +44 -0
- package/dist/commands/image-to-sketch.js.map +1 -0
- package/dist/commands/improve-video-quality-online-free.d.ts +2 -0
- package/dist/commands/improve-video-quality-online-free.js +42 -0
- package/dist/commands/improve-video-quality-online-free.js.map +1 -0
- package/dist/commands/kling.d.ts +2 -0
- package/dist/commands/kling.js +75 -0
- package/dist/commands/kling.js.map +1 -0
- package/dist/commands/logo-remover-from-video.d.ts +2 -0
- package/dist/commands/logo-remover-from-video.js +37 -0
- package/dist/commands/logo-remover-from-video.js.map +1 -0
- package/dist/commands/midjourney.d.ts +2 -0
- package/dist/commands/midjourney.js +54 -0
- package/dist/commands/midjourney.js.map +1 -0
- package/dist/commands/mugshot-creator.d.ts +2 -0
- package/dist/commands/mugshot-creator.js +45 -0
- package/dist/commands/mugshot-creator.js.map +1 -0
- package/dist/commands/murder-drones-oc.d.ts +2 -0
- package/dist/commands/murder-drones-oc.js +50 -0
- package/dist/commands/murder-drones-oc.js.map +1 -0
- package/dist/commands/outfit-generator.d.ts +2 -0
- package/dist/commands/outfit-generator.js +54 -0
- package/dist/commands/outfit-generator.js.map +1 -0
- package/dist/commands/personalized-swimsuit.d.ts +2 -0
- package/dist/commands/personalized-swimsuit.js +52 -0
- package/dist/commands/personalized-swimsuit.js.map +1 -0
- package/dist/commands/photo-to-bikini-ai.d.ts +2 -0
- package/dist/commands/photo-to-bikini-ai.js +44 -0
- package/dist/commands/photo-to-bikini-ai.js.map +1 -0
- package/dist/commands/pregnant-ai.d.ts +2 -0
- package/dist/commands/pregnant-ai.js +54 -0
- package/dist/commands/pregnant-ai.js.map +1 -0
- package/dist/commands/ps2-filter.d.ts +2 -0
- package/dist/commands/ps2-filter.js +45 -0
- package/dist/commands/ps2-filter.js.map +1 -0
- package/dist/commands/qwen-image-edit.d.ts +2 -0
- package/dist/commands/qwen-image-edit.js +64 -0
- package/dist/commands/qwen-image-edit.js.map +1 -0
- package/dist/commands/random-animal-generator.d.ts +2 -0
- package/dist/commands/random-animal-generator.js +49 -0
- package/dist/commands/random-animal-generator.js.map +1 -0
- package/dist/commands/remove-filter-from-photo.d.ts +2 -0
- package/dist/commands/remove-filter-from-photo.js +48 -0
- package/dist/commands/remove-filter-from-photo.js.map +1 -0
- package/dist/commands/remove-subtitles-from-video-online-free.d.ts +2 -0
- package/dist/commands/remove-subtitles-from-video-online-free.js +37 -0
- package/dist/commands/remove-subtitles-from-video-online-free.js.map +1 -0
- package/dist/commands/remove-text-from-video-online-free.d.ts +2 -0
- package/dist/commands/remove-text-from-video-online-free.js +37 -0
- package/dist/commands/remove-text-from-video-online-free.js.map +1 -0
- package/dist/commands/removebg.js +2 -2
- package/dist/commands/removebg.js.map +1 -1
- package/dist/commands/replace-face-in-video-online-free.d.ts +2 -0
- package/dist/commands/replace-face-in-video-online-free.js +56 -0
- package/dist/commands/replace-face-in-video-online-free.js.map +1 -0
- package/dist/commands/see-through-clothes-fitler.d.ts +2 -0
- package/dist/commands/see-through-clothes-fitler.js +45 -0
- package/dist/commands/see-through-clothes-fitler.js.map +1 -0
- package/dist/commands/seedance.d.ts +2 -0
- package/dist/commands/seedance.js +65 -0
- package/dist/commands/seedance.js.map +1 -0
- package/dist/commands/seedream.d.ts +2 -0
- package/dist/commands/seedream.js +85 -0
- package/dist/commands/seedream.js.map +1 -0
- package/dist/commands/sex-ai-generator.d.ts +2 -0
- package/dist/commands/sex-ai-generator.js +52 -0
- package/dist/commands/sex-ai-generator.js.map +1 -0
- package/dist/commands/sexy-ai-pics.d.ts +2 -0
- package/dist/commands/sexy-ai-pics.js +43 -0
- package/dist/commands/sexy-ai-pics.js.map +1 -0
- package/dist/commands/skin-color-changer.d.ts +2 -0
- package/dist/commands/skin-color-changer.js +48 -0
- package/dist/commands/skin-color-changer.js.map +1 -0
- package/dist/commands/sonic-oc.d.ts +2 -0
- package/dist/commands/sonic-oc.js +49 -0
- package/dist/commands/sonic-oc.js.map +1 -0
- package/dist/commands/sora-2.d.ts +2 -0
- package/dist/commands/sora-2.js +53 -0
- package/dist/commands/sora-2.js.map +1 -0
- package/dist/commands/sprunki-oc-maker.d.ts +2 -0
- package/dist/commands/sprunki-oc-maker.js +50 -0
- package/dist/commands/sprunki-oc-maker.js.map +1 -0
- package/dist/commands/square-face-icon-generator.d.ts +2 -0
- package/dist/commands/square-face-icon-generator.js +51 -0
- package/dist/commands/square-face-icon-generator.js.map +1 -0
- package/dist/commands/stardew-valley-portrait-maker.d.ts +2 -0
- package/dist/commands/stardew-valley-portrait-maker.js +49 -0
- package/dist/commands/stardew-valley-portrait-maker.js.map +1 -0
- package/dist/commands/string-bikini-beauty-contest.d.ts +2 -0
- package/dist/commands/string-bikini-beauty-contest.js +52 -0
- package/dist/commands/string-bikini-beauty-contest.js.map +1 -0
- package/dist/commands/swimsuit-try-on-haul.d.ts +2 -0
- package/dist/commands/swimsuit-try-on-haul.js +52 -0
- package/dist/commands/swimsuit-try-on-haul.js.map +1 -0
- package/dist/commands/video-resolution-enhancer-online-free.d.ts +2 -0
- package/dist/commands/video-resolution-enhancer-online-free.js +42 -0
- package/dist/commands/video-resolution-enhancer-online-free.js.map +1 -0
- package/dist/commands/video-upscaler-online-free.d.ts +2 -0
- package/dist/commands/video-upscaler-online-free.js +42 -0
- package/dist/commands/video-upscaler-online-free.js.map +1 -0
- package/dist/commands/video-watermark-remover.d.ts +2 -0
- package/dist/commands/video-watermark-remover.js +45 -0
- package/dist/commands/video-watermark-remover.js.map +1 -0
- package/dist/commands/virtualtryon.js +2 -2
- package/dist/commands/virtualtryon.js.map +1 -1
- package/dist/commands/wan-ai.d.ts +2 -0
- package/dist/commands/wan-ai.js +49 -0
- package/dist/commands/wan-ai.js.map +1 -0
- package/dist/commands/wild-graffiti.d.ts +2 -0
- package/dist/commands/wild-graffiti.js +49 -0
- package/dist/commands/wild-graffiti.js.map +1 -0
- package/dist/commands/z-image.d.ts +2 -0
- package/dist/commands/z-image.js +51 -0
- package/dist/commands/z-image.js.map +1 -0
- package/dist/index.js +231 -2
- package/dist/index.js.map +1 -1
- package/dist/printer.js +13 -3
- package/dist/printer.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
export const fireredImageEditCmd = new Command("firered-image-edit")
|
|
5
|
+
.summary("FireRed image editor — edit or generate images with high fidelity using FireRed open-source model")
|
|
6
|
+
.description("Edit or generate images using the FireRed open-source AI model.\n" +
|
|
7
|
+
"Supports up to 3 reference images. Images are optional.\n\n" +
|
|
8
|
+
"Aspect ratio (--aspect-ratio):\n" +
|
|
9
|
+
" auto (default), 1:1, 2:3, 3:2, 4:3, 3:4, 16:9, 9:16\n\n" +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop firered-image-edit --prompt 'A photorealistic portrait of a woman in a garden'\n" +
|
|
12
|
+
" weshop firered-image-edit --image ./photo.png --prompt 'Change the background to a snowy mountain'\n" +
|
|
13
|
+
" weshop firered-image-edit --image ./a.png --image ./b.png --prompt 'Combine these two scenes' --aspect-ratio 16:9")
|
|
14
|
+
.option("--image <path|url...>", "Reference images — local file paths or URLs (up to 3, optional)")
|
|
15
|
+
.requiredOption("--prompt <text>", "Describe the desired edit or generation")
|
|
16
|
+
.option("--aspect-ratio <ratio>", "Output aspect ratio: auto (default), 1:1, 2:3, 3:2, 4:3, 3:4, 16:9, 9:16")
|
|
17
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
18
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
try {
|
|
22
|
+
const params = {
|
|
23
|
+
textDescription: opts.prompt,
|
|
24
|
+
aspectRatio: opts.aspectRatio ?? "auto",
|
|
25
|
+
};
|
|
26
|
+
if (opts.batch != null)
|
|
27
|
+
params.batchCount = opts.batch;
|
|
28
|
+
const input = {};
|
|
29
|
+
if (opts.taskName)
|
|
30
|
+
input.taskName = opts.taskName;
|
|
31
|
+
if (opts.image && opts.image.length > 0) {
|
|
32
|
+
const imageList = opts.image;
|
|
33
|
+
if (imageList.length > 3) {
|
|
34
|
+
console.error("[error]\n message: Maximum 3 images allowed");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const urls = [];
|
|
38
|
+
for (const img of imageList) {
|
|
39
|
+
const { url } = await resolveImage(img);
|
|
40
|
+
urls.push(url);
|
|
41
|
+
}
|
|
42
|
+
params.images = urls;
|
|
43
|
+
input.originalImage = urls[0];
|
|
44
|
+
}
|
|
45
|
+
const body = { agent: { name: "firered-image-edit", version: "v1.0" }, input, params };
|
|
46
|
+
const { executionId } = await submitRun(body);
|
|
47
|
+
printSubmitted(executionId);
|
|
48
|
+
if (opts.wait !== false) {
|
|
49
|
+
printPollResult(await waitForCompletion(executionId));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log("[info]");
|
|
53
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
printError(err);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=firered-image-edit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firered-image-edit.js","sourceRoot":"","sources":["../../src/commands/firered-image-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KACjE,OAAO,CAAC,mGAAmG,CAAC;KAC5G,WAAW,CACV,mEAAmE;IACnE,6DAA6D;IAC7D,kCAAkC;IAClC,2DAA2D;IAC3D,aAAa;IACb,2FAA2F;IAC3F,wGAAwG;IACxG,qHAAqH,CACtH;KACA,MAAM,CAAC,uBAAuB,EAAE,iEAAiE,CAAC;KAClG,cAAc,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KAC5E,MAAM,CAAC,wBAAwB,EAAE,0EAA0E,CAAC;KAC5G,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,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;SACxC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;YACvC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YAC7G,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;gBAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YACzF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
export const flatLayCmd = new Command("flat-lay")
|
|
5
|
+
.summary("AI flat-lay clothing generator — create professional flat-lay product images from a photo")
|
|
6
|
+
.description("Generate a professional flat-lay clothing image from a garment or model photo.\n" +
|
|
7
|
+
"Requires a prompt describing the desired output.\n\n" +
|
|
8
|
+
"Model (--model):\n" +
|
|
9
|
+
" nano2 Default model (default)\n" +
|
|
10
|
+
" nano Nano model\n\n" +
|
|
11
|
+
"Image size (--image-size):\n" +
|
|
12
|
+
" 1K 1K resolution (default)\n" +
|
|
13
|
+
" 2K 2K resolution\n" +
|
|
14
|
+
" 4K 4K resolution\n\n" +
|
|
15
|
+
"Aspect ratio (--aspect-ratio):\n" +
|
|
16
|
+
" 1:1, 2:3, 3:2, 3:4, 4:3, 9:16, 16:9, 21:9 (default: 1:1)\n\n" +
|
|
17
|
+
"Examples:\n" +
|
|
18
|
+
" weshop flat-lay --image ./jacket.png --prompt 'A flat-lay white background image of the jacket'\n" +
|
|
19
|
+
" weshop flat-lay --image ./outfit.png --prompt 'Flat-lay of the full outfit on marble surface' --model nano2 --image-size 2K\n" +
|
|
20
|
+
" weshop flat-lay --image ./shirt.png --prompt 'Flat-lay white background shirt' --aspect-ratio 3:4 --batch 2")
|
|
21
|
+
.requiredOption("--image <path|url>", "Input garment or model photo — local file path or URL")
|
|
22
|
+
.requiredOption("--prompt <text>", "Describe the desired flat-lay output")
|
|
23
|
+
.option("--model <name>", "Model to use: nano2 (default) or nano")
|
|
24
|
+
.option("--image-size <size>", "Output resolution: 1K (default), 2K, or 4K")
|
|
25
|
+
.option("--aspect-ratio <ratio>", "Output aspect ratio (default: 1:1)")
|
|
26
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
27
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
28
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
29
|
+
.action(async (opts) => {
|
|
30
|
+
try {
|
|
31
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
32
|
+
const params = {
|
|
33
|
+
textDescription: opts.prompt,
|
|
34
|
+
images: [imageUrl],
|
|
35
|
+
modelName: opts.model ?? "nano2",
|
|
36
|
+
imageSize: opts.imageSize ?? "1K",
|
|
37
|
+
aspectRatio: opts.aspectRatio ?? "1:1",
|
|
38
|
+
};
|
|
39
|
+
if (opts.batch != null)
|
|
40
|
+
params.batchCount = opts.batch;
|
|
41
|
+
const input = { originalImage: imageUrl };
|
|
42
|
+
if (opts.taskName)
|
|
43
|
+
input.taskName = opts.taskName;
|
|
44
|
+
const body = {
|
|
45
|
+
agent: { name: "flat-lay", version: "v1.0" },
|
|
46
|
+
input,
|
|
47
|
+
params,
|
|
48
|
+
};
|
|
49
|
+
const { executionId } = await submitRun(body);
|
|
50
|
+
printSubmitted(executionId);
|
|
51
|
+
if (opts.wait !== false) {
|
|
52
|
+
const data = await waitForCompletion(executionId);
|
|
53
|
+
printPollResult(data);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log("[info]");
|
|
57
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
printError(err);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
//# sourceMappingURL=flat-lay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flat-lay.js","sourceRoot":"","sources":["../../src/commands/flat-lay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAC9C,OAAO,CAAC,2FAA2F,CAAC;KACpG,WAAW,CACV,kFAAkF;IAClF,sDAAsD;IACtD,oBAAoB;IACpB,qCAAqC;IACrC,0BAA0B;IAC1B,8BAA8B;IAC9B,kCAAkC;IAClC,wBAAwB;IACxB,0BAA0B;IAC1B,kCAAkC;IAClC,iEAAiE;IACjE,aAAa;IACb,qGAAqG;IACrG,iIAAiI;IACjI,+GAA+G,CAChH;KACA,cAAc,CAAC,oBAAoB,EAAE,uDAAuD,CAAC;KAC7F,cAAc,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;KACzE,MAAM,CAAC,gBAAgB,EAAE,uCAAuC,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;KAC3E,MAAM,CAAC,wBAAwB,EAAE,oCAAoC,CAAC;KACtE,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,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM;YAC5B,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,OAAO;YAChC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;SACvC,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;YAC5C,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
export const free4kVideoUpscalerCmd = new Command("free-4k-video-upscaler")
|
|
5
|
+
.summary("Free 4K video upscaler — upscale video to 4K resolution using AI")
|
|
6
|
+
.description("Upscale and enhance video quality to 4K resolution using AI.\n\n" +
|
|
7
|
+
"Provide the video as a URL (--video). Local video files are not auto-uploaded;\n" +
|
|
8
|
+
"use 'weshop upload' first to get a hosted URL if needed.\n\n" +
|
|
9
|
+
"Video size (--video-size): target output resolution, e.g. 2K, 4K (default: 4K)\n\n" +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop free-4k-video-upscaler --video https://example.com/video.mp4\n" +
|
|
12
|
+
" weshop free-4k-video-upscaler --video https://example.com/video.mp4 --video-size 4K\n" +
|
|
13
|
+
" weshop free-4k-video-upscaler --video https://example.com/video.mp4 --no-wait")
|
|
14
|
+
.requiredOption("--video <url>", "Input video URL")
|
|
15
|
+
.option("--video-size <size>", "Target output resolution, e.g. 2K or 4K (default: 4K)")
|
|
16
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
17
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
try {
|
|
20
|
+
const params = { videos: [opts.video] };
|
|
21
|
+
if (opts.videoSize)
|
|
22
|
+
params.videoSize = opts.videoSize;
|
|
23
|
+
const input = { videos: [opts.video] };
|
|
24
|
+
if (opts.taskName)
|
|
25
|
+
input.taskName = opts.taskName;
|
|
26
|
+
const body = { agent: { name: "free-4k-video-upscaler", version: "v1.0" }, input, params };
|
|
27
|
+
const { executionId } = await submitRun(body);
|
|
28
|
+
printSubmitted(executionId);
|
|
29
|
+
if (opts.wait !== false) {
|
|
30
|
+
printPollResult(await waitForCompletion(executionId));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log("[info]");
|
|
34
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
printError(err);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=free-4k-video-upscaler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-4k-video-upscaler.js","sourceRoot":"","sources":["../../src/commands/free-4k-video-upscaler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC;KACxE,OAAO,CAAC,kEAAkE,CAAC;KAC3E,WAAW,CACV,kEAAkE;IAClE,kFAAkF;IAClF,8DAA8D;IAC9D,oFAAoF;IACpF,aAAa;IACb,yEAAyE;IACzE,yFAAyF;IACzF,iFAAiF,CAClF;KACA,cAAc,CAAC,eAAe,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,uDAAuD,CAAC;KACtF,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACtD,MAAM,KAAK,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "A random AI girlfriend portrait, beautiful young woman, {ethnicity}, {hairstyle}, {makeup}, {vibe}, gentle soft smile, natural skin texture, cinematic soft lighting, {scene}, shallow depth of field, realistic photography, emotional warm atmosphere, 50mm lens, f1.8, ultra-detailed, 4k, masterpiece.";
|
|
5
|
+
export const freeAiGirlfriendGeneratorCmd = new Command("free-ai-girlfriend-generator")
|
|
6
|
+
.summary("AI girlfriend generator — generate a realistic AI girlfriend portrait from text or reference image")
|
|
7
|
+
.description("Generate a photorealistic AI girlfriend portrait. Image is optional.\n\n" +
|
|
8
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
9
|
+
" Random AI girlfriend portrait with randomized ethnicity, hairstyle, makeup, vibe, and scene.\n\n" +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop free-ai-girlfriend-generator --prompt 'Asian woman, long black hair, casual vibe, coffee shop'\n" +
|
|
12
|
+
" weshop free-ai-girlfriend-generator --image ./reference.png --prompt 'Similar style, outdoor park setting'\n" +
|
|
13
|
+
" weshop free-ai-girlfriend-generator --batch 4")
|
|
14
|
+
.option("--image <path|url>", "Reference image — local file path or URL (optional)")
|
|
15
|
+
.option("--prompt <text>", "Describe the desired girlfriend portrait")
|
|
16
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
17
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
18
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
try {
|
|
21
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
22
|
+
if (opts.batch != null)
|
|
23
|
+
params.batchCount = opts.batch;
|
|
24
|
+
const input = {};
|
|
25
|
+
if (opts.taskName)
|
|
26
|
+
input.taskName = opts.taskName;
|
|
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: "free-ai-girlfriend-generator", 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
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=free-ai-girlfriend-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-ai-girlfriend-generator.js","sourceRoot":"","sources":["../../src/commands/free-ai-girlfriend-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,4SAA4S,CAAC;AAE/S,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,OAAO,CAAC,8BAA8B,CAAC;KACpF,OAAO,CAAC,oGAAoG,CAAC;KAC7G,WAAW,CACV,0EAA0E;IAC1E,mDAAmD;IACnD,oGAAoG;IACpG,aAAa;IACb,2GAA2G;IAC3G,gHAAgH;IAChH,iDAAiD,CAClD;KACA,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;KACnF,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,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,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC7G,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
export const freeOnlineVideoQualityEnhancerCmd = new Command("free-online-video-quality-enhancer")
|
|
5
|
+
.summary("Free online video quality enhancer — upscale and enhance video quality using AI")
|
|
6
|
+
.description("Upscale and enhance video quality using AI.\n\n" +
|
|
7
|
+
"Provide the video as a URL (--video). Local video files are not auto-uploaded;\n" +
|
|
8
|
+
"use 'weshop upload' first to get a hosted URL if needed.\n\n" +
|
|
9
|
+
"Video size (--video-size): target output resolution, e.g. 2K, 4K\n\n" +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop free-online-video-quality-enhancer --video https://example.com/video.mp4\n" +
|
|
12
|
+
" weshop free-online-video-quality-enhancer --video https://example.com/video.mp4 --video-size 4K\n" +
|
|
13
|
+
" weshop free-online-video-quality-enhancer --video https://example.com/video.mp4 --no-wait")
|
|
14
|
+
.requiredOption("--video <url>", "Input video URL")
|
|
15
|
+
.option("--video-size <size>", "Target output resolution, e.g. 2K or 4K")
|
|
16
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
17
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
18
|
+
.action(async (opts) => {
|
|
19
|
+
try {
|
|
20
|
+
const params = { videos: [opts.video] };
|
|
21
|
+
if (opts.videoSize)
|
|
22
|
+
params.videoSize = opts.videoSize;
|
|
23
|
+
const input = { videos: [opts.video] };
|
|
24
|
+
if (opts.taskName)
|
|
25
|
+
input.taskName = opts.taskName;
|
|
26
|
+
const body = { agent: { name: "free-online-video-quality-enhancer", version: "v1.0" }, input, params };
|
|
27
|
+
const { executionId } = await submitRun(body);
|
|
28
|
+
printSubmitted(executionId);
|
|
29
|
+
if (opts.wait !== false) {
|
|
30
|
+
printPollResult(await waitForCompletion(executionId));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
console.log("[info]");
|
|
34
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
printError(err);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=free-online-video-quality-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-online-video-quality-enhancer.js","sourceRoot":"","sources":["../../src/commands/free-online-video-quality-enhancer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,OAAO,CAAC,oCAAoC,CAAC;KAC/F,OAAO,CAAC,iFAAiF,CAAC;KAC1F,WAAW,CACV,iDAAiD;IACjD,kFAAkF;IAClF,8DAA8D;IAC9D,sEAAsE;IACtE,aAAa;IACb,qFAAqF;IACrF,qGAAqG;IACrG,6FAA6F,CAC9F;KACA,cAAc,CAAC,eAAe,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACtD,MAAM,KAAK,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,oCAAoC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
|
|
5
|
+
export const freeSexyAiGeneratorCmd = new Command("free-sexy-ai-generator")
|
|
6
|
+
.summary("Free sexy AI generator — transform a person photo into a bikini model image or video")
|
|
7
|
+
.description("Transform a portrait or full-body photo into a bikini model image or video.\n\n" +
|
|
8
|
+
"Generated type (--generated-type):\n" +
|
|
9
|
+
" video Generate a short video (default)\n" +
|
|
10
|
+
" image Generate a still image\n\n" +
|
|
11
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
12
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
13
|
+
"Examples:\n" +
|
|
14
|
+
" weshop free-sexy-ai-generator --image ./person.png --prompt 'Bikini model on a beach'\n" +
|
|
15
|
+
" weshop free-sexy-ai-generator --image ./person.png --generated-type image --batch 2\n" +
|
|
16
|
+
" weshop free-sexy-ai-generator --image ./person.png --generated-type video --no-wait")
|
|
17
|
+
.requiredOption("--image <path|url>", "Input portrait or full-body photo — local file path or URL")
|
|
18
|
+
.option("--prompt <text>", "Describe the desired bikini model scene")
|
|
19
|
+
.option("--generated-type <type>", "Output type: video (default) or image")
|
|
20
|
+
.option("--batch <count>", "Number of outputs to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
21
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
22
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
23
|
+
.action(async (opts) => {
|
|
24
|
+
try {
|
|
25
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
26
|
+
const params = {
|
|
27
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
28
|
+
images: [imageUrl],
|
|
29
|
+
generatedType: opts.generatedType ?? "video",
|
|
30
|
+
};
|
|
31
|
+
if (opts.batch != null)
|
|
32
|
+
params.batchCount = opts.batch;
|
|
33
|
+
const input = { originalImage: imageUrl };
|
|
34
|
+
if (opts.taskName)
|
|
35
|
+
input.taskName = opts.taskName;
|
|
36
|
+
const body = { agent: { name: "free-sexy-ai-generator", 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
|
+
}
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=free-sexy-ai-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"free-sexy-ai-generator.js","sourceRoot":"","sources":["../../src/commands/free-sexy-ai-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,qIAAqI,CAAC;AAExI,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC;KACxE,OAAO,CAAC,sFAAsF,CAAC;KAC/F,WAAW,CACV,iFAAiF;IACjF,sCAAsC;IACtC,8CAA8C;IAC9C,sCAAsC;IACtC,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,2FAA2F;IAC3F,yFAAyF;IACzF,uFAAuF,CACxF;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,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;YAC9C,MAAM,EAAE,CAAC,QAAQ,CAAC;YAClB,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO;SAC7C,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "Put this person in a dramatic cinematic scene with harajuku fashion with futuristic color PVC clothing, semi-transparent color vinyl, metalic prismatic, holographic, chromatic aberration, fashion illustration, masterpiece. slightly wide-angle lens, natural soft key lighting, realistic style. Make it look like an actual movie scene, but keep original aspect ratio.";
|
|
5
|
+
export const futuristicEleganceCmd = new Command("futuristic-elegance")
|
|
6
|
+
.summary("Dress a person in futuristic harajuku fashion — cinematic sci-fi outfit transformation")
|
|
7
|
+
.description("Transform a portrait photo into a dramatic cinematic scene with futuristic harajuku fashion.\n\n" +
|
|
8
|
+
"Applies holographic PVC clothing, prismatic materials, and cinematic lighting while\n" +
|
|
9
|
+
"preserving the person's face and body proportions.\n\n" +
|
|
10
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
11
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
12
|
+
"Examples:\n" +
|
|
13
|
+
" weshop futuristic-elegance --image ./person.png\n" +
|
|
14
|
+
" weshop futuristic-elegance --image ./person.png --prompt 'Cyberpunk neon outfit, rain-soaked street'\n" +
|
|
15
|
+
" weshop futuristic-elegance --image ./person.png --batch 4")
|
|
16
|
+
.requiredOption("--image <path|url>", "Input portrait image — local file path or URL")
|
|
17
|
+
.option("--prompt <text>", "Custom style instruction (default: futuristic harajuku cinematic scene)")
|
|
18
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
19
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
20
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
21
|
+
.action(async (opts) => {
|
|
22
|
+
try {
|
|
23
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
24
|
+
const params = {
|
|
25
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
26
|
+
images: [imageUrl],
|
|
27
|
+
};
|
|
28
|
+
if (opts.batch != null)
|
|
29
|
+
params.batchCount = opts.batch;
|
|
30
|
+
const input = { originalImage: imageUrl };
|
|
31
|
+
if (opts.taskName)
|
|
32
|
+
input.taskName = opts.taskName;
|
|
33
|
+
const body = {
|
|
34
|
+
agent: { name: "futuristic-elegance", version: "v1.0" },
|
|
35
|
+
input,
|
|
36
|
+
params,
|
|
37
|
+
};
|
|
38
|
+
const { executionId } = await submitRun(body);
|
|
39
|
+
printSubmitted(executionId);
|
|
40
|
+
if (opts.wait !== false) {
|
|
41
|
+
const data = await waitForCompletion(executionId);
|
|
42
|
+
printPollResult(data);
|
|
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);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=futuristic-elegance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"futuristic-elegance.js","sourceRoot":"","sources":["../../src/commands/futuristic-elegance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAClB,+WAA+W,CAAC;AAElX,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC;KACpE,OAAO,CAAC,wFAAwF,CAAC;KACjG,WAAW,CACV,kGAAkG;IAClG,uFAAuF;IACvF,wDAAwD;IACxD,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,qDAAqD;IACrD,0GAA0G;IAC1G,6DAA6D,CAC9D;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,yEAAyE,CAAC;KACpG,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,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;YAC9C,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE;YACvD,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
export const geminiWatermarkRemoverCmd = new Command("gemini-watermark-remover")
|
|
5
|
+
.summary("Gemini watermark remover — remove watermarks, logos, or text from a video")
|
|
6
|
+
.description("Remove watermarks, logos, subtitles, or text overlays from a video.\n\n" +
|
|
7
|
+
"Provide the video as a URL (--video). Local video files are not auto-uploaded;\n" +
|
|
8
|
+
"use 'weshop upload' first to get a hosted URL if needed.\n\n" +
|
|
9
|
+
"Examples:\n" +
|
|
10
|
+
" weshop gemini-watermark-remover --video https://example.com/video.mp4\n" +
|
|
11
|
+
" weshop gemini-watermark-remover --video https://example.com/video.mp4 --no-wait")
|
|
12
|
+
.requiredOption("--video <url>", "Input video URL")
|
|
13
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
14
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
15
|
+
.action(async (opts) => {
|
|
16
|
+
try {
|
|
17
|
+
const params = { videos: [opts.video], watermarkSelectType: "autoDetect" };
|
|
18
|
+
const input = { videos: [opts.video] };
|
|
19
|
+
if (opts.taskName)
|
|
20
|
+
input.taskName = opts.taskName;
|
|
21
|
+
const body = { agent: { name: "gemini-watermark-remover", version: "v1.0" }, input, params };
|
|
22
|
+
const { executionId } = await submitRun(body);
|
|
23
|
+
printSubmitted(executionId);
|
|
24
|
+
if (opts.wait !== false) {
|
|
25
|
+
printPollResult(await waitForCompletion(executionId));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log("[info]");
|
|
29
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
printError(err);
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=gemini-watermark-remover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini-watermark-remover.js","sourceRoot":"","sources":["../../src/commands/gemini-watermark-remover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,OAAO,CAAC,0BAA0B,CAAC;KAC7E,OAAO,CAAC,2EAA2E,CAAC;KACpF,WAAW,CACV,yEAAyE;IACzE,kFAAkF;IAClF,8DAA8D;IAC9D,aAAa;IACb,2EAA2E;IAC3E,mFAAmF,CACpF;KACA,cAAc,CAAC,eAAe,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,mCAAmC,CAAC;KACjE,MAAM,CAAC,WAAW,EAAE,8EAA8E,CAAC;KACnG,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC;QACpG,MAAM,KAAK,GAA4B,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "Change this person's gender to the opposite one.";
|
|
5
|
+
export const genderSwapCmd = new Command("gender-swap")
|
|
6
|
+
.summary("AI gender swap — transform a portrait to the opposite gender while preserving identity")
|
|
7
|
+
.description("Transform a portrait photo to show the person as the opposite gender.\n" +
|
|
8
|
+
"Preserves facial identity, features, and photo realism.\n\n" +
|
|
9
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
10
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
11
|
+
"Examples:\n" +
|
|
12
|
+
" weshop gender-swap --image ./person.png\n" +
|
|
13
|
+
" weshop gender-swap --image ./person.png --prompt 'Change to female, keep the hairstyle'\n" +
|
|
14
|
+
" weshop gender-swap --image ./person.png --batch 2")
|
|
15
|
+
.requiredOption("--image <path|url>", "Input portrait image — local file path or URL")
|
|
16
|
+
.option("--prompt <text>", "Custom gender transformation instruction")
|
|
17
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
18
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
19
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
20
|
+
.action(async (opts) => {
|
|
21
|
+
try {
|
|
22
|
+
const { url: imageUrl } = await resolveImage(opts.image);
|
|
23
|
+
const params = {
|
|
24
|
+
textDescription: opts.prompt ?? DEFAULT_PROMPT,
|
|
25
|
+
images: [imageUrl],
|
|
26
|
+
};
|
|
27
|
+
if (opts.batch != null)
|
|
28
|
+
params.batchCount = opts.batch;
|
|
29
|
+
const input = { originalImage: imageUrl };
|
|
30
|
+
if (opts.taskName)
|
|
31
|
+
input.taskName = opts.taskName;
|
|
32
|
+
const body = {
|
|
33
|
+
agent: { name: "gender-swap", version: "v1.0" },
|
|
34
|
+
input,
|
|
35
|
+
params,
|
|
36
|
+
};
|
|
37
|
+
const { executionId } = await submitRun(body);
|
|
38
|
+
printSubmitted(executionId);
|
|
39
|
+
if (opts.wait !== false) {
|
|
40
|
+
const data = await waitForCompletion(executionId);
|
|
41
|
+
printPollResult(data);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.log("[info]");
|
|
45
|
+
console.log(` message: Use 'weshop status ${executionId}' to check progress`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
printError(err);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=gender-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gender-swap.js","sourceRoot":"","sources":["../../src/commands/gender-swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAAG,kDAAkD,CAAC;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACpD,OAAO,CAAC,wFAAwF,CAAC;KACjG,WAAW,CACV,yEAAyE;IACzE,6DAA6D;IAC7D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,6CAA6C;IAC7C,6FAA6F;IAC7F,qDAAqD,CACtD;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,0CAA0C,CAAC;KACrE,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,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzD,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;YAC9C,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE;YAC/C,KAAK;YACL,MAAM;SACP,CAAC;QAEF,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClD,eAAe,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,CAAC,GAAG,CAAC,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { resolveImage, submitRun, waitForCompletion } from "../client.js";
|
|
3
|
+
import { printSubmitted, printPollResult, printError } from "../printer.js";
|
|
4
|
+
const DEFAULT_PROMPT = "Turn this image into ghibli style";
|
|
5
|
+
export const ghibliArtCreateCmd = new Command("ghibli-art-create")
|
|
6
|
+
.summary("AI Ghibli art creator — transform any photo into Studio Ghibli anime art style")
|
|
7
|
+
.description("Transform any photo into Studio Ghibli-style anime art. Image is optional.\n\n" +
|
|
8
|
+
"Default prompt (used when --prompt is omitted):\n" +
|
|
9
|
+
` "${DEFAULT_PROMPT}"\n\n` +
|
|
10
|
+
"Examples:\n" +
|
|
11
|
+
" weshop ghibli-art-create --image ./photo.png\n" +
|
|
12
|
+
" weshop ghibli-art-create --image ./landscape.png --prompt 'Ghibli style with soft watercolor and magical atmosphere'\n" +
|
|
13
|
+
" weshop ghibli-art-create --batch 2 --image ./portrait.png")
|
|
14
|
+
.option("--image <path|url>", "Input image — local file path or URL (optional)")
|
|
15
|
+
.option("--prompt <text>", "Custom Ghibli style instruction")
|
|
16
|
+
.option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
|
|
17
|
+
.option("--task-name <name>", "Human-readable label for this run")
|
|
18
|
+
.option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
try {
|
|
21
|
+
const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
|
|
22
|
+
if (opts.batch != null)
|
|
23
|
+
params.batchCount = opts.batch;
|
|
24
|
+
const input = {};
|
|
25
|
+
if (opts.taskName)
|
|
26
|
+
input.taskName = opts.taskName;
|
|
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: "ghibli-art-create", 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
|
+
}
|
|
47
|
+
});
|
|
48
|
+
//# sourceMappingURL=ghibli-art-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ghibli-art-create.js","sourceRoot":"","sources":["../../src/commands/ghibli-art-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAmB,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;KAC/D,OAAO,CAAC,gFAAgF,CAAC;KACzF,WAAW,CACV,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,kDAAkD;IAClD,0HAA0H;IAC1H,6DAA6D,CAC9D;KACA,MAAM,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;KAC5D,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,IAAI,CAAC;QACH,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3B,KAAK,CAAC,aAAa,GAAG,QAAQ,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAClG,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9E,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,qBAAqB,CAAC,CAAC;QAAC,CAAC;IACjH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|