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.
Files changed (363) hide show
  1. package/README.md +169 -7
  2. package/dist/client.d.ts +2 -0
  3. package/dist/client.js +1 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/commands/2d-to-3d-image-converter.d.ts +2 -0
  6. package/dist/commands/2d-to-3d-image-converter.js +44 -0
  7. package/dist/commands/2d-to-3d-image-converter.js.map +1 -0
  8. package/dist/commands/ai-3d-rendering.d.ts +2 -0
  9. package/dist/commands/ai-3d-rendering.js +46 -0
  10. package/dist/commands/ai-3d-rendering.js.map +1 -0
  11. package/dist/commands/ai-action-figure-generators.d.ts +2 -0
  12. package/dist/commands/ai-action-figure-generators.js +49 -0
  13. package/dist/commands/ai-action-figure-generators.js.map +1 -0
  14. package/dist/commands/ai-aging.d.ts +2 -0
  15. package/dist/commands/ai-aging.js +52 -0
  16. package/dist/commands/ai-aging.js.map +1 -0
  17. package/dist/commands/ai-babe.d.ts +2 -0
  18. package/dist/commands/ai-babe.js +43 -0
  19. package/dist/commands/ai-babe.js.map +1 -0
  20. package/dist/commands/ai-bikini-model.d.ts +2 -0
  21. package/dist/commands/ai-bikini-model.js +54 -0
  22. package/dist/commands/ai-bikini-model.js.map +1 -0
  23. package/dist/commands/ai-bikini-photo-editor.d.ts +2 -0
  24. package/dist/commands/ai-bikini-photo-editor.js +43 -0
  25. package/dist/commands/ai-bikini-photo-editor.js.map +1 -0
  26. package/dist/commands/ai-bikini-video.d.ts +2 -0
  27. package/dist/commands/ai-bikini-video.js +48 -0
  28. package/dist/commands/ai-bikini-video.js.map +1 -0
  29. package/dist/commands/ai-christmas-photo.d.ts +2 -0
  30. package/dist/commands/ai-christmas-photo.js +49 -0
  31. package/dist/commands/ai-christmas-photo.js.map +1 -0
  32. package/dist/commands/ai-clothes-changer.d.ts +2 -0
  33. package/dist/commands/ai-clothes-changer.js +56 -0
  34. package/dist/commands/ai-clothes-changer.js.map +1 -0
  35. package/dist/commands/ai-collage-maker.d.ts +2 -0
  36. package/dist/commands/ai-collage-maker.js +54 -0
  37. package/dist/commands/ai-collage-maker.js.map +1 -0
  38. package/dist/commands/ai-dog.d.ts +2 -0
  39. package/dist/commands/ai-dog.js +57 -0
  40. package/dist/commands/ai-dog.js.map +1 -0
  41. package/dist/commands/ai-elf.d.ts +2 -0
  42. package/dist/commands/ai-elf.js +45 -0
  43. package/dist/commands/ai-elf.js.map +1 -0
  44. package/dist/commands/ai-face-merge.d.ts +2 -0
  45. package/dist/commands/ai-face-merge.js +63 -0
  46. package/dist/commands/ai-face-merge.js.map +1 -0
  47. package/dist/commands/ai-feet.d.ts +2 -0
  48. package/dist/commands/ai-feet.js +44 -0
  49. package/dist/commands/ai-feet.js.map +1 -0
  50. package/dist/commands/ai-flag-generator.d.ts +2 -0
  51. package/dist/commands/ai-flag-generator.js +49 -0
  52. package/dist/commands/ai-flag-generator.js.map +1 -0
  53. package/dist/commands/ai-generated-bikini-girls.d.ts +2 -0
  54. package/dist/commands/ai-generated-bikini-girls.js +52 -0
  55. package/dist/commands/ai-generated-bikini-girls.js.map +1 -0
  56. package/dist/commands/ai-generated-perfect-female-body.d.ts +2 -0
  57. package/dist/commands/ai-generated-perfect-female-body.js +52 -0
  58. package/dist/commands/ai-generated-perfect-female-body.js.map +1 -0
  59. package/dist/commands/ai-ghost-mannequin-generator.d.ts +2 -0
  60. package/dist/commands/ai-ghost-mannequin-generator.js +56 -0
  61. package/dist/commands/ai-ghost-mannequin-generator.js.map +1 -0
  62. package/dist/commands/ai-group-photo-generator.d.ts +2 -0
  63. package/dist/commands/ai-group-photo-generator.js +54 -0
  64. package/dist/commands/ai-group-photo-generator.js.map +1 -0
  65. package/dist/commands/ai-hair-color-changer.d.ts +2 -0
  66. package/dist/commands/ai-hair-color-changer.js +48 -0
  67. package/dist/commands/ai-hair-color-changer.js.map +1 -0
  68. package/dist/commands/ai-hairstyle-changer.d.ts +2 -0
  69. package/dist/commands/ai-hairstyle-changer.js +48 -0
  70. package/dist/commands/ai-hairstyle-changer.js.map +1 -0
  71. package/dist/commands/ai-hot-girl-image.d.ts +2 -0
  72. package/dist/commands/ai-hot-girl-image.js +52 -0
  73. package/dist/commands/ai-hot-girl-image.js.map +1 -0
  74. package/dist/commands/ai-image-animation.d.ts +2 -0
  75. package/dist/commands/ai-image-animation.js +60 -0
  76. package/dist/commands/ai-image-animation.js.map +1 -0
  77. package/dist/commands/ai-image-combiner.d.ts +2 -0
  78. package/dist/commands/ai-image-combiner.js +57 -0
  79. package/dist/commands/ai-image-combiner.js.map +1 -0
  80. package/dist/commands/ai-landscape-design-free.d.ts +2 -0
  81. package/dist/commands/ai-landscape-design-free.js +60 -0
  82. package/dist/commands/ai-landscape-design-free.js.map +1 -0
  83. package/dist/commands/ai-lingerie-models.d.ts +2 -0
  84. package/dist/commands/ai-lingerie-models.js +52 -0
  85. package/dist/commands/ai-lingerie-models.js.map +1 -0
  86. package/dist/commands/ai-photoshoot.d.ts +2 -0
  87. package/dist/commands/ai-photoshoot.js +81 -0
  88. package/dist/commands/ai-photoshoot.js.map +1 -0
  89. package/dist/commands/ai-poster-from-images.d.ts +2 -0
  90. package/dist/commands/ai-poster-from-images.js +73 -0
  91. package/dist/commands/ai-poster-from-images.js.map +1 -0
  92. package/dist/commands/ai-poster.d.ts +2 -0
  93. package/dist/commands/ai-poster.js +73 -0
  94. package/dist/commands/ai-poster.js.map +1 -0
  95. package/dist/commands/ai-room-planner.d.ts +2 -0
  96. package/dist/commands/ai-room-planner.js +49 -0
  97. package/dist/commands/ai-room-planner.js.map +1 -0
  98. package/dist/commands/ai-selfie.d.ts +2 -0
  99. package/dist/commands/ai-selfie.js +44 -0
  100. package/dist/commands/ai-selfie.js.map +1 -0
  101. package/dist/commands/ai-sexy-portrait.d.ts +2 -0
  102. package/dist/commands/ai-sexy-portrait.js +52 -0
  103. package/dist/commands/ai-sexy-portrait.js.map +1 -0
  104. package/dist/commands/ai-sexy-teens.d.ts +2 -0
  105. package/dist/commands/ai-sexy-teens.js +52 -0
  106. package/dist/commands/ai-sexy-teens.js.map +1 -0
  107. package/dist/commands/ai-spray-paint.d.ts +2 -0
  108. package/dist/commands/ai-spray-paint.js +49 -0
  109. package/dist/commands/ai-spray-paint.js.map +1 -0
  110. package/dist/commands/ai-swimsuit-model.d.ts +2 -0
  111. package/dist/commands/ai-swimsuit-model.js +44 -0
  112. package/dist/commands/ai-swimsuit-model.js.map +1 -0
  113. package/dist/commands/ai-tattoo-generator.d.ts +2 -0
  114. package/dist/commands/ai-tattoo-generator.js +48 -0
  115. package/dist/commands/ai-tattoo-generator.js.map +1 -0
  116. package/dist/commands/ai-text-remover-from-video.d.ts +2 -0
  117. package/dist/commands/ai-text-remover-from-video.js +37 -0
  118. package/dist/commands/ai-text-remover-from-video.js.map +1 -0
  119. package/dist/commands/ai-translate.d.ts +2 -0
  120. package/dist/commands/ai-translate.js +53 -0
  121. package/dist/commands/ai-translate.js.map +1 -0
  122. package/dist/commands/ai-video-enhancer.d.ts +2 -0
  123. package/dist/commands/ai-video-enhancer.js +49 -0
  124. package/dist/commands/ai-video-enhancer.js.map +1 -0
  125. package/dist/commands/ai-werewolf.d.ts +2 -0
  126. package/dist/commands/ai-werewolf.js +61 -0
  127. package/dist/commands/ai-werewolf.js.map +1 -0
  128. package/dist/commands/ai-xray-clothes.d.ts +2 -0
  129. package/dist/commands/ai-xray-clothes.js +45 -0
  130. package/dist/commands/ai-xray-clothes.js.map +1 -0
  131. package/dist/commands/ai-zombie.d.ts +2 -0
  132. package/dist/commands/ai-zombie.js +45 -0
  133. package/dist/commands/ai-zombie.js.map +1 -0
  134. package/dist/commands/aimodel.js +2 -2
  135. package/dist/commands/aimodel.js.map +1 -1
  136. package/dist/commands/aipose.js +2 -2
  137. package/dist/commands/aipose.js.map +1 -1
  138. package/dist/commands/aiproduct.js +2 -2
  139. package/dist/commands/aiproduct.js.map +1 -1
  140. package/dist/commands/anime-image-converter.d.ts +2 -0
  141. package/dist/commands/anime-image-converter.js +44 -0
  142. package/dist/commands/anime-image-converter.js.map +1 -0
  143. package/dist/commands/baby-face-generator.d.ts +2 -0
  144. package/dist/commands/baby-face-generator.js +59 -0
  145. package/dist/commands/baby-face-generator.js.map +1 -0
  146. package/dist/commands/bald-filter.d.ts +2 -0
  147. package/dist/commands/bald-filter.js +47 -0
  148. package/dist/commands/bald-filter.js.map +1 -0
  149. package/dist/commands/bangs-filter.d.ts +2 -0
  150. package/dist/commands/bangs-filter.js +45 -0
  151. package/dist/commands/bangs-filter.js.map +1 -0
  152. package/dist/commands/bikini-contest-photos.d.ts +2 -0
  153. package/dist/commands/bikini-contest-photos.js +52 -0
  154. package/dist/commands/bikini-contest-photos.js.map +1 -0
  155. package/dist/commands/bikini-try-on.d.ts +2 -0
  156. package/dist/commands/bikini-try-on.js +44 -0
  157. package/dist/commands/bikini-try-on.js.map +1 -0
  158. package/dist/commands/braces-filter.d.ts +2 -0
  159. package/dist/commands/braces-filter.js +44 -0
  160. package/dist/commands/braces-filter.js.map +1 -0
  161. package/dist/commands/brat-generator.d.ts +2 -0
  162. package/dist/commands/brat-generator.js +48 -0
  163. package/dist/commands/brat-generator.js.map +1 -0
  164. package/dist/commands/buzz-cut-ai.d.ts +2 -0
  165. package/dist/commands/buzz-cut-ai.js +52 -0
  166. package/dist/commands/buzz-cut-ai.js.map +1 -0
  167. package/dist/commands/celeb-ai.d.ts +2 -0
  168. package/dist/commands/celeb-ai.js +54 -0
  169. package/dist/commands/celeb-ai.js.map +1 -0
  170. package/dist/commands/chibi-maker.d.ts +2 -0
  171. package/dist/commands/chibi-maker.js +52 -0
  172. package/dist/commands/chibi-maker.js.map +1 -0
  173. package/dist/commands/clothing-magic-remover.d.ts +2 -0
  174. package/dist/commands/clothing-magic-remover.js +44 -0
  175. package/dist/commands/clothing-magic-remover.js.map +1 -0
  176. package/dist/commands/custom-bikini.d.ts +2 -0
  177. package/dist/commands/custom-bikini.js +52 -0
  178. package/dist/commands/custom-bikini.js.map +1 -0
  179. package/dist/commands/cute-anime-girl-ai-bikini.d.ts +2 -0
  180. package/dist/commands/cute-anime-girl-ai-bikini.js +52 -0
  181. package/dist/commands/cute-anime-girl-ai-bikini.js.map +1 -0
  182. package/dist/commands/demon-slayer-oc-maker.d.ts +2 -0
  183. package/dist/commands/demon-slayer-oc-maker.js +50 -0
  184. package/dist/commands/demon-slayer-oc-maker.js.map +1 -0
  185. package/dist/commands/dress-remover-magic-eraser.d.ts +2 -0
  186. package/dist/commands/dress-remover-magic-eraser.js +44 -0
  187. package/dist/commands/dress-remover-magic-eraser.js.map +1 -0
  188. package/dist/commands/expandimage.js +2 -2
  189. package/dist/commands/expandimage.js.map +1 -1
  190. package/dist/commands/face-forge.d.ts +2 -0
  191. package/dist/commands/face-forge.js +86 -0
  192. package/dist/commands/face-forge.js.map +1 -0
  193. package/dist/commands/fat-ai.d.ts +2 -0
  194. package/dist/commands/fat-ai.js +53 -0
  195. package/dist/commands/fat-ai.js.map +1 -0
  196. package/dist/commands/firered-image-edit.d.ts +2 -0
  197. package/dist/commands/firered-image-edit.js +61 -0
  198. package/dist/commands/firered-image-edit.js.map +1 -0
  199. package/dist/commands/flat-lay.d.ts +2 -0
  200. package/dist/commands/flat-lay.js +65 -0
  201. package/dist/commands/flat-lay.js.map +1 -0
  202. package/dist/commands/free-4k-video-upscaler.d.ts +2 -0
  203. package/dist/commands/free-4k-video-upscaler.js +42 -0
  204. package/dist/commands/free-4k-video-upscaler.js.map +1 -0
  205. package/dist/commands/free-ai-girlfriend-generator.d.ts +2 -0
  206. package/dist/commands/free-ai-girlfriend-generator.js +48 -0
  207. package/dist/commands/free-ai-girlfriend-generator.js.map +1 -0
  208. package/dist/commands/free-online-video-quality-enhancer.d.ts +2 -0
  209. package/dist/commands/free-online-video-quality-enhancer.js +42 -0
  210. package/dist/commands/free-online-video-quality-enhancer.js.map +1 -0
  211. package/dist/commands/free-sexy-ai-generator.d.ts +2 -0
  212. package/dist/commands/free-sexy-ai-generator.js +52 -0
  213. package/dist/commands/free-sexy-ai-generator.js.map +1 -0
  214. package/dist/commands/futuristic-elegance.d.ts +2 -0
  215. package/dist/commands/futuristic-elegance.js +54 -0
  216. package/dist/commands/futuristic-elegance.js.map +1 -0
  217. package/dist/commands/gemini-watermark-remover.d.ts +2 -0
  218. package/dist/commands/gemini-watermark-remover.js +37 -0
  219. package/dist/commands/gemini-watermark-remover.js.map +1 -0
  220. package/dist/commands/gender-swap.d.ts +2 -0
  221. package/dist/commands/gender-swap.js +53 -0
  222. package/dist/commands/gender-swap.js.map +1 -0
  223. package/dist/commands/ghibli-art-create.d.ts +2 -0
  224. package/dist/commands/ghibli-art-create.js +48 -0
  225. package/dist/commands/ghibli-art-create.js.map +1 -0
  226. package/dist/commands/grok-imagine-video.d.ts +2 -0
  227. package/dist/commands/grok-imagine-video.js +53 -0
  228. package/dist/commands/grok-imagine-video.js.map +1 -0
  229. package/dist/commands/grok-imagine.d.ts +2 -0
  230. package/dist/commands/grok-imagine.js +46 -0
  231. package/dist/commands/grok-imagine.js.map +1 -0
  232. package/dist/commands/hair-color-try-on.d.ts +2 -0
  233. package/dist/commands/hair-color-try-on.js +48 -0
  234. package/dist/commands/hair-color-try-on.js.map +1 -0
  235. package/dist/commands/happy-woman-bikini-ai-pic.d.ts +2 -0
  236. package/dist/commands/happy-woman-bikini-ai-pic.js +52 -0
  237. package/dist/commands/happy-woman-bikini-ai-pic.js.map +1 -0
  238. package/dist/commands/hot-bikini-models.d.ts +2 -0
  239. package/dist/commands/hot-bikini-models.js +52 -0
  240. package/dist/commands/hot-bikini-models.js.map +1 -0
  241. package/dist/commands/image-mixer.d.ts +2 -0
  242. package/dist/commands/image-mixer.js +57 -0
  243. package/dist/commands/image-mixer.js.map +1 -0
  244. package/dist/commands/image-to-sketch.d.ts +2 -0
  245. package/dist/commands/image-to-sketch.js +44 -0
  246. package/dist/commands/image-to-sketch.js.map +1 -0
  247. package/dist/commands/improve-video-quality-online-free.d.ts +2 -0
  248. package/dist/commands/improve-video-quality-online-free.js +42 -0
  249. package/dist/commands/improve-video-quality-online-free.js.map +1 -0
  250. package/dist/commands/kling.d.ts +2 -0
  251. package/dist/commands/kling.js +75 -0
  252. package/dist/commands/kling.js.map +1 -0
  253. package/dist/commands/logo-remover-from-video.d.ts +2 -0
  254. package/dist/commands/logo-remover-from-video.js +37 -0
  255. package/dist/commands/logo-remover-from-video.js.map +1 -0
  256. package/dist/commands/midjourney.d.ts +2 -0
  257. package/dist/commands/midjourney.js +54 -0
  258. package/dist/commands/midjourney.js.map +1 -0
  259. package/dist/commands/mugshot-creator.d.ts +2 -0
  260. package/dist/commands/mugshot-creator.js +45 -0
  261. package/dist/commands/mugshot-creator.js.map +1 -0
  262. package/dist/commands/murder-drones-oc.d.ts +2 -0
  263. package/dist/commands/murder-drones-oc.js +50 -0
  264. package/dist/commands/murder-drones-oc.js.map +1 -0
  265. package/dist/commands/outfit-generator.d.ts +2 -0
  266. package/dist/commands/outfit-generator.js +54 -0
  267. package/dist/commands/outfit-generator.js.map +1 -0
  268. package/dist/commands/personalized-swimsuit.d.ts +2 -0
  269. package/dist/commands/personalized-swimsuit.js +52 -0
  270. package/dist/commands/personalized-swimsuit.js.map +1 -0
  271. package/dist/commands/photo-to-bikini-ai.d.ts +2 -0
  272. package/dist/commands/photo-to-bikini-ai.js +44 -0
  273. package/dist/commands/photo-to-bikini-ai.js.map +1 -0
  274. package/dist/commands/pregnant-ai.d.ts +2 -0
  275. package/dist/commands/pregnant-ai.js +54 -0
  276. package/dist/commands/pregnant-ai.js.map +1 -0
  277. package/dist/commands/ps2-filter.d.ts +2 -0
  278. package/dist/commands/ps2-filter.js +45 -0
  279. package/dist/commands/ps2-filter.js.map +1 -0
  280. package/dist/commands/qwen-image-edit.d.ts +2 -0
  281. package/dist/commands/qwen-image-edit.js +64 -0
  282. package/dist/commands/qwen-image-edit.js.map +1 -0
  283. package/dist/commands/random-animal-generator.d.ts +2 -0
  284. package/dist/commands/random-animal-generator.js +49 -0
  285. package/dist/commands/random-animal-generator.js.map +1 -0
  286. package/dist/commands/remove-filter-from-photo.d.ts +2 -0
  287. package/dist/commands/remove-filter-from-photo.js +48 -0
  288. package/dist/commands/remove-filter-from-photo.js.map +1 -0
  289. package/dist/commands/remove-subtitles-from-video-online-free.d.ts +2 -0
  290. package/dist/commands/remove-subtitles-from-video-online-free.js +37 -0
  291. package/dist/commands/remove-subtitles-from-video-online-free.js.map +1 -0
  292. package/dist/commands/remove-text-from-video-online-free.d.ts +2 -0
  293. package/dist/commands/remove-text-from-video-online-free.js +37 -0
  294. package/dist/commands/remove-text-from-video-online-free.js.map +1 -0
  295. package/dist/commands/removebg.js +2 -2
  296. package/dist/commands/removebg.js.map +1 -1
  297. package/dist/commands/replace-face-in-video-online-free.d.ts +2 -0
  298. package/dist/commands/replace-face-in-video-online-free.js +56 -0
  299. package/dist/commands/replace-face-in-video-online-free.js.map +1 -0
  300. package/dist/commands/see-through-clothes-fitler.d.ts +2 -0
  301. package/dist/commands/see-through-clothes-fitler.js +45 -0
  302. package/dist/commands/see-through-clothes-fitler.js.map +1 -0
  303. package/dist/commands/seedance.d.ts +2 -0
  304. package/dist/commands/seedance.js +65 -0
  305. package/dist/commands/seedance.js.map +1 -0
  306. package/dist/commands/seedream.d.ts +2 -0
  307. package/dist/commands/seedream.js +85 -0
  308. package/dist/commands/seedream.js.map +1 -0
  309. package/dist/commands/sex-ai-generator.d.ts +2 -0
  310. package/dist/commands/sex-ai-generator.js +52 -0
  311. package/dist/commands/sex-ai-generator.js.map +1 -0
  312. package/dist/commands/sexy-ai-pics.d.ts +2 -0
  313. package/dist/commands/sexy-ai-pics.js +43 -0
  314. package/dist/commands/sexy-ai-pics.js.map +1 -0
  315. package/dist/commands/skin-color-changer.d.ts +2 -0
  316. package/dist/commands/skin-color-changer.js +48 -0
  317. package/dist/commands/skin-color-changer.js.map +1 -0
  318. package/dist/commands/sonic-oc.d.ts +2 -0
  319. package/dist/commands/sonic-oc.js +49 -0
  320. package/dist/commands/sonic-oc.js.map +1 -0
  321. package/dist/commands/sora-2.d.ts +2 -0
  322. package/dist/commands/sora-2.js +53 -0
  323. package/dist/commands/sora-2.js.map +1 -0
  324. package/dist/commands/sprunki-oc-maker.d.ts +2 -0
  325. package/dist/commands/sprunki-oc-maker.js +50 -0
  326. package/dist/commands/sprunki-oc-maker.js.map +1 -0
  327. package/dist/commands/square-face-icon-generator.d.ts +2 -0
  328. package/dist/commands/square-face-icon-generator.js +51 -0
  329. package/dist/commands/square-face-icon-generator.js.map +1 -0
  330. package/dist/commands/stardew-valley-portrait-maker.d.ts +2 -0
  331. package/dist/commands/stardew-valley-portrait-maker.js +49 -0
  332. package/dist/commands/stardew-valley-portrait-maker.js.map +1 -0
  333. package/dist/commands/string-bikini-beauty-contest.d.ts +2 -0
  334. package/dist/commands/string-bikini-beauty-contest.js +52 -0
  335. package/dist/commands/string-bikini-beauty-contest.js.map +1 -0
  336. package/dist/commands/swimsuit-try-on-haul.d.ts +2 -0
  337. package/dist/commands/swimsuit-try-on-haul.js +52 -0
  338. package/dist/commands/swimsuit-try-on-haul.js.map +1 -0
  339. package/dist/commands/video-resolution-enhancer-online-free.d.ts +2 -0
  340. package/dist/commands/video-resolution-enhancer-online-free.js +42 -0
  341. package/dist/commands/video-resolution-enhancer-online-free.js.map +1 -0
  342. package/dist/commands/video-upscaler-online-free.d.ts +2 -0
  343. package/dist/commands/video-upscaler-online-free.js +42 -0
  344. package/dist/commands/video-upscaler-online-free.js.map +1 -0
  345. package/dist/commands/video-watermark-remover.d.ts +2 -0
  346. package/dist/commands/video-watermark-remover.js +45 -0
  347. package/dist/commands/video-watermark-remover.js.map +1 -0
  348. package/dist/commands/virtualtryon.js +2 -2
  349. package/dist/commands/virtualtryon.js.map +1 -1
  350. package/dist/commands/wan-ai.d.ts +2 -0
  351. package/dist/commands/wan-ai.js +49 -0
  352. package/dist/commands/wan-ai.js.map +1 -0
  353. package/dist/commands/wild-graffiti.d.ts +2 -0
  354. package/dist/commands/wild-graffiti.js +49 -0
  355. package/dist/commands/wild-graffiti.js.map +1 -0
  356. package/dist/commands/z-image.d.ts +2 -0
  357. package/dist/commands/z-image.js +51 -0
  358. package/dist/commands/z-image.js.map +1 -0
  359. package/dist/index.js +231 -2
  360. package/dist/index.js.map +1 -1
  361. package/dist/printer.js +13 -3
  362. package/dist/printer.js.map +1 -1
  363. package/package.json +1 -1
@@ -0,0 +1,43 @@
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 aiBikiniPhotoEditorCmd = new Command("ai-bikini-photo-editor")
6
+ .summary("AI bikini photo editor — edit a person photo into a bikini scene with a required prompt")
7
+ .description("Edit a person photo into a bikini scene. Prompt is required.\n\n" +
8
+ "Default prompt (used when --prompt is omitted):\n" +
9
+ ` "${DEFAULT_PROMPT}"\n\n` +
10
+ "Examples:\n" +
11
+ " weshop ai-bikini-photo-editor --image ./person.png --prompt 'Bikini on a sunny beach'\n" +
12
+ " weshop ai-bikini-photo-editor --image ./person.png --prompt 'Colorful bikini, pool party setting' --batch 2")
13
+ .requiredOption("--image <path|url>", "Input person photo — local file path or URL")
14
+ .requiredOption("--prompt <text>", "Describe the desired bikini scene")
15
+ .option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
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 { url: imageUrl } = await resolveImage(opts.image);
21
+ const params = { textDescription: opts.prompt, images: [imageUrl] };
22
+ if (opts.batch != null)
23
+ params.batchCount = opts.batch;
24
+ const input = { originalImage: imageUrl };
25
+ if (opts.taskName)
26
+ input.taskName = opts.taskName;
27
+ const body = { agent: { name: "ai-bikini-photo-editor", version: "v1.0" }, input, params };
28
+ const { executionId } = await submitRun(body);
29
+ printSubmitted(executionId);
30
+ if (opts.wait !== false) {
31
+ printPollResult(await waitForCompletion(executionId));
32
+ }
33
+ else {
34
+ console.log("[info]");
35
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
36
+ }
37
+ }
38
+ catch (err) {
39
+ printError(err);
40
+ process.exit(1);
41
+ }
42
+ });
43
+ //# sourceMappingURL=ai-bikini-photo-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-bikini-photo-editor.js","sourceRoot":"","sources":["../../src/commands/ai-bikini-photo-editor.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,yFAAyF,CAAC;KAClG,WAAW,CACV,kEAAkE;IAClE,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,2FAA2F;IAC3F,+GAA+G,CAChH;KACA,cAAc,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KACnF,cAAc,CAAC,iBAAiB,EAAE,mCAAmC,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;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7F,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiBikiniVideoCmd: Command;
@@ -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 = "naturally undress and change the outfit into a thin bikini while keeping body proportions natural. Keep Model dancing tiktok dance.";
5
+ export const aiBikiniVideoCmd = new Command("ai-bikini-video")
6
+ .summary("AI bikini video generator — generate a bikini dance video from a person photo")
7
+ .description("Generate a short video of a person in a bikini from a portrait or full-body photo.\n" +
8
+ "Results come back as video URLs in video[N].url.\n\n" +
9
+ "Default prompt (used when --prompt is omitted):\n" +
10
+ ` "${DEFAULT_PROMPT}"\n\n` +
11
+ "Examples:\n" +
12
+ " weshop ai-bikini-video --image ./person.png\n" +
13
+ " weshop ai-bikini-video --image ./person.png --prompt 'Bikini model dancing on a beach'\n" +
14
+ " weshop ai-bikini-video --image ./person.png --no-wait")
15
+ .requiredOption("--image <path|url>", "Input person photo — local file path or URL")
16
+ .option("--prompt <text>", "Custom bikini video instruction")
17
+ .option("--batch <count>", "Number of videos 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 = { agent: { name: "ai-bikini-video", 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=ai-bikini-video.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-bikini-video.js","sourceRoot":"","sources":["../../src/commands/ai-bikini-video.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,gBAAgB,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC;KAC3D,OAAO,CAAC,+EAA+E,CAAC;KACxF,WAAW,CACV,sFAAsF;IACtF,sDAAsD;IACtD,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,iDAAiD;IACjD,4FAA4F;IAC5F,yDAAyD,CAC1D;KACA,cAAc,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KACnF,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,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;SACnB,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,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChG,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiChristmasPhotoCmd: Command;
@@ -0,0 +1,49 @@
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 = "Create a Christmas-themed portrait photo based on the provided image. The overall scene should convey a festive Christmas party atmosphere, incorporating classic Christmas decorative elements such as gift boxes, bells, apples, and snowmen. Must include a decorated Christmas tree with hanging ornaments, a small teddy bear plush placed nearby, and a large Santa Claus plush toy positioned in the background. In the foreground, golden confetti and falling snow should be visible, featuring motion blur effects to enhance the sense of movement and festivity. The photography style should use direct on-camera flash, creating a bold, frontal lighting effect. The overall aesthetic should evoke a vintage film look with subtle Y2K influences, featuring visible film grain and noise texture. Emphasize catchlights in the eyes as much as possible. The primary color palette should consist of vivid red, green, and white, with optional dark blue accents. The background vary between a white wall, a photo studio, a deep night sky filled with stars, or others as long as it aligns with a Christmas theme. The shot type can be randomly chosen between medium shot, full-body shot, or close-up. For wardrobe styling, select Christmas-themed outfits, such as Christmas sweaters, Santa hats, red scarves, or winter attire. The original facial details and body proportions of the subject must be strictly preserved.";
5
+ export const aiChristmasPhotoCmd = new Command("ai-christmas-photo")
6
+ .summary("AI Christmas photo generator — transform a portrait into a festive Christmas scene")
7
+ .description("Transform a portrait photo into a festive Christmas-themed scene with decorations,\n" +
8
+ "holiday outfits, and cinematic Y2K film aesthetics.\n\n" +
9
+ "Default prompt (used when --prompt is omitted):\n" +
10
+ " Festive Christmas party scene with tree, ornaments, Santa plush, golden confetti,\n" +
11
+ " falling snow, vintage film look, preserving original face and body proportions.\n\n" +
12
+ "Examples:\n" +
13
+ " weshop ai-christmas-photo --image ./person.png\n" +
14
+ " weshop ai-christmas-photo --image ./person.png --prompt 'Cozy Christmas morning scene by the fireplace'\n" +
15
+ " weshop ai-christmas-photo --image ./person.png --batch 4")
16
+ .requiredOption("--image <path|url>", "Input portrait image — local file path or URL")
17
+ .option("--prompt <text>", "Custom Christmas scene instruction")
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 = { agent: { name: "ai-christmas-photo", version: "v1.0" }, input, params };
34
+ const { executionId } = await submitRun(body);
35
+ printSubmitted(executionId);
36
+ if (opts.wait !== false) {
37
+ printPollResult(await waitForCompletion(executionId));
38
+ }
39
+ else {
40
+ console.log("[info]");
41
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
42
+ }
43
+ }
44
+ catch (err) {
45
+ printError(err);
46
+ process.exit(1);
47
+ }
48
+ });
49
+ //# sourceMappingURL=ai-christmas-photo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-christmas-photo.js","sourceRoot":"","sources":["../../src/commands/ai-christmas-photo.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,23CAA23C,CAAC;AAE93C,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KACjE,OAAO,CAAC,oFAAoF,CAAC;KAC7F,WAAW,CACV,sFAAsF;IACtF,yDAAyD;IACzD,mDAAmD;IACnD,uFAAuF;IACvF,uFAAuF;IACvF,aAAa;IACb,oDAAoD;IACpD,6GAA6G;IAC7G,4DAA4D,CAC7D;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;KAC/D,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;QACzD,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;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,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;YACxB,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,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;QAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiClothesChangerCmd: Command;
@@ -0,0 +1,56 @@
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 = "The person in Figure 1 is wearing the clothes shown in Figure 2";
5
+ export const aiClothesChangerCmd = new Command("ai-clothes-changer")
6
+ .summary("AI clothes changer — dress a person (image 1) in the garment shown in another photo (image 2)")
7
+ .description("Change the clothes on a person by providing two images:\n" +
8
+ " image 1 (--image, first): the person to dress\n" +
9
+ " image 2 (--image, second): the garment or outfit to apply\n\n" +
10
+ "Requires exactly 2 images. Reference them in your prompt as 'image 1' and 'image 2'.\n\n" +
11
+ "Default prompt (used when --prompt is omitted):\n" +
12
+ ` "${DEFAULT_PROMPT}"\n\n` +
13
+ "Examples:\n" +
14
+ " weshop ai-clothes-changer --image ./person.png --image ./garment.png\n" +
15
+ " weshop ai-clothes-changer --image ./model.png --image ./dress.png --prompt 'The person in image 1 wearing the dress from image 2'\n" +
16
+ " weshop ai-clothes-changer --image ./person.png --image ./outfit.png --batch 2")
17
+ .requiredOption("--image <path|url...>", "Two images: person (image 1) and garment (image 2) — local file paths or URLs")
18
+ .option("--prompt <text>", "Custom clothing instruction (default: person in image 1 wears clothes from image 2)")
19
+ .option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
20
+ .option("--task-name <name>", "Human-readable label for this run")
21
+ .option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
22
+ .action(async (opts) => {
23
+ try {
24
+ const imageList = opts.image;
25
+ if (imageList.length !== 2) {
26
+ console.error("[error]\n message: Exactly 2 images required: person (image 1) and garment (image 2)");
27
+ process.exit(1);
28
+ }
29
+ const urls = [];
30
+ for (const img of imageList) {
31
+ const { url } = await resolveImage(img);
32
+ urls.push(url);
33
+ }
34
+ const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: urls };
35
+ if (opts.batch != null)
36
+ params.batchCount = opts.batch;
37
+ const input = { originalImage: urls[0] };
38
+ if (opts.taskName)
39
+ input.taskName = opts.taskName;
40
+ const body = { agent: { name: "ai-clothes-changer", version: "v1.0" }, input, params };
41
+ const { executionId } = await submitRun(body);
42
+ printSubmitted(executionId);
43
+ if (opts.wait !== false) {
44
+ printPollResult(await waitForCompletion(executionId));
45
+ }
46
+ else {
47
+ console.log("[info]");
48
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
49
+ }
50
+ }
51
+ catch (err) {
52
+ printError(err);
53
+ process.exit(1);
54
+ }
55
+ });
56
+ //# sourceMappingURL=ai-clothes-changer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-clothes-changer.js","sourceRoot":"","sources":["../../src/commands/ai-clothes-changer.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,iEAAiE,CAAC;AAEzF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KACjE,OAAO,CAAC,+FAA+F,CAAC;KACxG,WAAW,CACV,2DAA2D;IAC3D,mDAAmD;IACnD,iEAAiE;IACjE,0FAA0F;IAC1F,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,0EAA0E;IAC1E,uIAAuI;IACvI,iFAAiF,CAClF;KACA,cAAc,CAAC,uBAAuB,EAAE,+EAA+E,CAAC;KACxH,MAAM,CAAC,iBAAiB,EAAE,qFAAqF,CAAC;KAChH,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,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;YACvG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QACzF,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiCollageMakerCmd: Command;
@@ -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 = "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
+ export const aiCollageMakerCmd = new Command("ai-collage-maker")
6
+ .summary("AI collage maker — create a chaotic multi-media collage from up to 10 images")
7
+ .description("Generate a creative multi-media collage from up to 10 reference images.\n\n" +
8
+ "Default prompt (used when --prompt is omitted):\n" +
9
+ " Chaotic avant-garde collage mixing vintage cutouts, neon glitch art, botanical\n" +
10
+ " illustrations, and geometric shapes with mixed textures.\n\n" +
11
+ "Examples:\n" +
12
+ " weshop ai-collage-maker --image ./photo1.png --image ./photo2.png --image ./photo3.png\n" +
13
+ " weshop ai-collage-maker --image ./a.png --image ./b.png --prompt 'Minimalist collage, pastel colors'\n" +
14
+ " weshop ai-collage-maker --image ./img1.png --image ./img2.png --batch 2")
15
+ .requiredOption("--image <path|url...>", "Reference images — local file paths or URLs (up to 10)")
16
+ .option("--prompt <text>", "Custom collage style 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 imageList = opts.image;
23
+ if (imageList.length > 10) {
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-collage-maker", 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);
51
+ process.exit(1);
52
+ }
53
+ });
54
+ //# sourceMappingURL=ai-collage-maker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-collage-maker.js","sourceRoot":"","sources":["../../src/commands/ai-collage-maker.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,ysBAAysB,CAAC;AAE5sB,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC;KAC7D,OAAO,CAAC,8EAA8E,CAAC;KACvF,WAAW,CACV,6EAA6E;IAC7E,mDAAmD;IACnD,oFAAoF;IACpF,gEAAgE;IAChE,aAAa;IACb,4FAA4F;IAC5F,0GAA0G;IAC1G,2EAA2E,CAC5E;KACA,cAAc,CAAC,uBAAuB,EAAE,wDAAwD,CAAC;KACjG,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,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,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC/G,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QACzF,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACzG,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClD,MAAM,IAAI,GAAe,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACjG,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiDogCmd: Command;
@@ -0,0 +1,57 @@
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 = "Pet taking a bath. Maintain realistic proportions including the number of limbs.";
5
+ export const aiDogCmd = new Command("ai-dog")
6
+ .summary("AI pet portrait generator — create or transform pet photos with a text prompt; image is optional")
7
+ .description("Generate or transform pet photos using AI. Can create a pet image from text alone,\n" +
8
+ "or transform an existing pet photo based on your prompt.\n\n" +
9
+ "Image is optional — when omitted, the agent generates a pet from the prompt alone.\n\n" +
10
+ "Default prompt (used when --prompt is omitted):\n" +
11
+ ` "${DEFAULT_PROMPT}"\n\n` +
12
+ "Examples:\n" +
13
+ " weshop ai-dog --prompt 'A golden retriever playing in the snow'\n" +
14
+ " weshop ai-dog --image ./my-dog.png --prompt 'My dog wearing a party hat'\n" +
15
+ " weshop ai-dog --image ./pet.png --batch 4\n" +
16
+ " weshop ai-dog --no-wait --prompt 'A cute corgi on a beach'")
17
+ .option("--image <path|url>", "Input pet photo — local file path or URL (optional)")
18
+ .option("--prompt <text>", "Describe the desired pet scene or transformation")
19
+ .option("--batch <count>", "Number of images to generate, 1-16 (default: 1)", (v) => parseInt(v, 10), 1)
20
+ .option("--task-name <name>", "Human-readable label for this run")
21
+ .option("--no-wait", "Return immediately after submission; use 'weshop status <id>' to check later")
22
+ .action(async (opts) => {
23
+ try {
24
+ const params = {
25
+ textDescription: opts.prompt ?? DEFAULT_PROMPT,
26
+ };
27
+ if (opts.batch != null)
28
+ params.batchCount = opts.batch;
29
+ const input = {};
30
+ if (opts.taskName)
31
+ input.taskName = opts.taskName;
32
+ if (opts.image) {
33
+ const { url: imageUrl } = await resolveImage(opts.image);
34
+ params.images = [imageUrl];
35
+ input.originalImage = imageUrl;
36
+ }
37
+ const body = {
38
+ agent: { name: "ai-dog", version: "v1.0" },
39
+ input,
40
+ params,
41
+ };
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);
54
+ process.exit(1);
55
+ }
56
+ });
57
+ //# sourceMappingURL=ai-dog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-dog.js","sourceRoot":"","sources":["../../src/commands/ai-dog.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,kFAAkF,CAAC;AAErF,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC1C,OAAO,CAAC,kGAAkG,CAAC;KAC3G,WAAW,CACV,sFAAsF;IACtF,8DAA8D;IAC9D,wFAAwF;IACxF,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,qEAAqE;IACrE,8EAA8E;IAC9E,+CAA+C;IAC/C,8DAA8D,CAC/D;KACA,MAAM,CAAC,oBAAoB,EAAE,qDAAqD,CAAC;KACnF,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,CAAC;KAC7E,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,IAAI,cAAc;SAC/C,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,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;QAED,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1C,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,eAAe,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiElfCmd: Command;
@@ -0,0 +1,45 @@
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 person into an elf";
5
+ export const aiElfCmd = new Command("ai-elf")
6
+ .summary("AI elf filter — transform a portrait into a fantasy elf character")
7
+ .description("Transform a portrait photo into a fantasy elf character with pointed ears and\n" +
8
+ "elven features while preserving the person's identity.\n\n" +
9
+ "Default prompt (used when --prompt is omitted):\n" +
10
+ ` "${DEFAULT_PROMPT}"\n\n` +
11
+ "Examples:\n" +
12
+ " weshop ai-elf --image ./person.png\n" +
13
+ " weshop ai-elf --image ./person.png --prompt 'High elf with silver hair and glowing eyes'\n" +
14
+ " weshop ai-elf --image ./person.png --batch 2")
15
+ .requiredOption("--image <path|url>", "Input portrait image — local file path or URL")
16
+ .option("--prompt <text>", "Custom elf 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 = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: [imageUrl] };
24
+ if (opts.batch != null)
25
+ params.batchCount = opts.batch;
26
+ const input = { originalImage: imageUrl };
27
+ if (opts.taskName)
28
+ input.taskName = opts.taskName;
29
+ const body = { agent: { name: "ai-elf", version: "v1.0" }, input, params };
30
+ const { executionId } = await submitRun(body);
31
+ printSubmitted(executionId);
32
+ if (opts.wait !== false) {
33
+ printPollResult(await waitForCompletion(executionId));
34
+ }
35
+ else {
36
+ console.log("[info]");
37
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
38
+ }
39
+ }
40
+ catch (err) {
41
+ printError(err);
42
+ process.exit(1);
43
+ }
44
+ });
45
+ //# sourceMappingURL=ai-elf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-elf.js","sourceRoot":"","sources":["../../src/commands/ai-elf.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,8BAA8B,CAAC;AAEtD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC1C,OAAO,CAAC,mEAAmE,CAAC;KAC5E,WAAW,CACV,iFAAiF;IACjF,4DAA4D;IAC5D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,wCAAwC;IACxC,8FAA8F;IAC9F,gDAAgD,CACjD;KACA,cAAc,CAAC,oBAAoB,EAAE,+CAA+C,CAAC;KACrF,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;KAClE,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;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/G,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,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACvF,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiFaceMergeCmd: Command;
@@ -0,0 +1,63 @@
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 = "Analyze the characteristics of these two faces, try imagine the person with both face features merged together. Don't simply put the face on the other image, try to generate a merged face. Keep Image 2 as the baseline.";
5
+ export const aiFaceMergeCmd = new Command("ai-face-merge")
6
+ .summary("AI face merge — blend two faces together into a single realistic portrait")
7
+ .description("Merge two face photos into a single portrait that combines features from both.\n" +
8
+ "Requires exactly 2 images. Image 2 is used as the baseline.\n\n" +
9
+ "In your --prompt, reference images as 'image 1' and 'image 2'.\n\n" +
10
+ "Default prompt (used when --prompt is omitted):\n" +
11
+ ` "${DEFAULT_PROMPT}"\n\n` +
12
+ "Examples:\n" +
13
+ " weshop ai-face-merge --image ./face1.png --image ./face2.png\n" +
14
+ " weshop ai-face-merge --image ./face1.png --image ./face2.png --prompt 'Merge image 1 and image 2, keep image 2 skin tone'\n" +
15
+ " weshop ai-face-merge --image ./a.png --image ./b.png --batch 2")
16
+ .requiredOption("--image <path|url...>", "Two face images — local file paths or URLs (exactly 2 required)")
17
+ .option("--prompt <text>", "Custom merge instruction (default: blend both faces, image 2 as baseline)")
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 imageList = opts.image;
24
+ if (imageList.length !== 2) {
25
+ console.error("[error]\n message: Exactly 2 images required for ai-face-merge");
26
+ process.exit(1);
27
+ }
28
+ const urls = [];
29
+ for (const img of imageList) {
30
+ const { url } = await resolveImage(img);
31
+ urls.push(url);
32
+ }
33
+ const params = {
34
+ textDescription: opts.prompt ?? DEFAULT_PROMPT,
35
+ images: urls,
36
+ };
37
+ if (opts.batch != null)
38
+ params.batchCount = opts.batch;
39
+ const input = { originalImage: urls[0] };
40
+ if (opts.taskName)
41
+ input.taskName = opts.taskName;
42
+ const body = {
43
+ agent: { name: "ai-face-merge", version: "v1.0" },
44
+ input,
45
+ params,
46
+ };
47
+ const { executionId } = await submitRun(body);
48
+ printSubmitted(executionId);
49
+ if (opts.wait !== false) {
50
+ const data = await waitForCompletion(executionId);
51
+ printPollResult(data);
52
+ }
53
+ else {
54
+ console.log("[info]");
55
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
56
+ }
57
+ }
58
+ catch (err) {
59
+ printError(err);
60
+ process.exit(1);
61
+ }
62
+ });
63
+ //# sourceMappingURL=ai-face-merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-face-merge.js","sourceRoot":"","sources":["../../src/commands/ai-face-merge.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,4NAA4N,CAAC;AAE/N,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;KACvD,OAAO,CAAC,2EAA2E,CAAC;KACpF,WAAW,CACV,kFAAkF;IAClF,iEAAiE;IACjE,oEAAoE;IACpE,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,kEAAkE;IAClE,+HAA+H;IAC/H,kEAAkE,CACnE;KACA,cAAc,CAAC,uBAAuB,EAAE,iEAAiE,CAAC;KAC1G,MAAM,CAAC,iBAAiB,EAAE,2EAA2E,CAAC;KACtG,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,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC;QAED,MAAM,MAAM,GAA4B;YACtC,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc;YAC9C,MAAM,EAAE,IAAI;SACb,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvD,MAAM,KAAK,GAA4B,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,IAAI,IAAI,CAAC,QAAQ;YAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAElD,MAAM,IAAI,GAAe;YACvB,KAAK,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE;YACjD,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiFeetCmd: Command;
@@ -0,0 +1,44 @@
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 = "Low angle view of the subject's bare feet with no shoes, while subject sits in an chair. Foreground focus on the soles, background focus on the subject, keep original body proportion and reasonable posture.";
5
+ export const aiFeetCmd = new Command("ai-feet")
6
+ .summary("AI feet generator — generate a realistic low-angle bare feet photo from a portrait")
7
+ .description("Generate a realistic low-angle bare feet photo from a portrait or full-body image.\n\n" +
8
+ "Default prompt (used when --prompt is omitted):\n" +
9
+ ` "${DEFAULT_PROMPT}"\n\n` +
10
+ "Examples:\n" +
11
+ " weshop ai-feet --image ./person.png\n" +
12
+ " weshop ai-feet --image ./person.png --prompt 'Close-up of bare feet on a sandy beach'\n" +
13
+ " weshop ai-feet --image ./person.png --batch 2")
14
+ .requiredOption("--image <path|url>", "Input portrait or full-body image — local file path or URL")
15
+ .option("--prompt <text>", "Custom feet scene 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 { url: imageUrl } = await resolveImage(opts.image);
22
+ const params = { textDescription: opts.prompt ?? DEFAULT_PROMPT, images: [imageUrl] };
23
+ if (opts.batch != null)
24
+ params.batchCount = opts.batch;
25
+ const input = { originalImage: imageUrl };
26
+ if (opts.taskName)
27
+ input.taskName = opts.taskName;
28
+ const body = { agent: { name: "ai-feet", version: "v1.0" }, input, params };
29
+ const { executionId } = await submitRun(body);
30
+ printSubmitted(executionId);
31
+ if (opts.wait !== false) {
32
+ printPollResult(await waitForCompletion(executionId));
33
+ }
34
+ else {
35
+ console.log("[info]");
36
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
37
+ }
38
+ }
39
+ catch (err) {
40
+ printError(err);
41
+ process.exit(1);
42
+ }
43
+ });
44
+ //# sourceMappingURL=ai-feet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-feet.js","sourceRoot":"","sources":["../../src/commands/ai-feet.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,gNAAgN,CAAC;AAEnN,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KAC5C,OAAO,CAAC,oFAAoF,CAAC;KAC7F,WAAW,CACV,wFAAwF;IACxF,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,yCAAyC;IACzC,2FAA2F;IAC3F,iDAAiD,CAClD;KACA,cAAc,CAAC,oBAAoB,EAAE,4DAA4D,CAAC;KAClG,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,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;QACzD,MAAM,MAAM,GAA4B,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/G,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,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxF,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,2 @@
1
+ import { Command } from "commander";
2
+ export declare const aiFlagGeneratorCmd: Command;
@@ -0,0 +1,49 @@
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 flag design with metallic insignia, realistic fabric folds, and suitable background.";
5
+ export const aiFlagGeneratorCmd = new Command("ai-flag-generator")
6
+ .summary("AI flag generator — create a custom flag design from text or a reference image")
7
+ .description("Generate a custom flag design with metallic insignia and realistic fabric folds.\n" +
8
+ "Image is optional — text-only generation is supported.\n\n" +
9
+ "Default prompt (used when --prompt is omitted):\n" +
10
+ ` "${DEFAULT_PROMPT}"\n\n` +
11
+ "Examples:\n" +
12
+ " weshop ai-flag-generator --prompt 'Flag of a fictional dragon kingdom, red and gold'\n" +
13
+ " weshop ai-flag-generator --image ./logo.png --prompt 'Flag featuring this logo on a blue background'\n" +
14
+ " weshop ai-flag-generator --prompt 'Minimalist tech company flag' --batch 4")
15
+ .option("--image <path|url>", "Reference image for the flag design — local file path or URL (optional)")
16
+ .option("--prompt <text>", "Describe the desired flag design")
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 = { textDescription: opts.prompt ?? DEFAULT_PROMPT };
23
+ if (opts.batch != null)
24
+ params.batchCount = opts.batch;
25
+ const input = {};
26
+ if (opts.taskName)
27
+ input.taskName = opts.taskName;
28
+ if (opts.image) {
29
+ const { url: imageUrl } = await resolveImage(opts.image);
30
+ params.images = [imageUrl];
31
+ input.originalImage = imageUrl;
32
+ }
33
+ const body = { agent: { name: "ai-flag-generator", version: "v1.0" }, input, params };
34
+ const { executionId } = await submitRun(body);
35
+ printSubmitted(executionId);
36
+ if (opts.wait !== false) {
37
+ printPollResult(await waitForCompletion(executionId));
38
+ }
39
+ else {
40
+ console.log("[info]");
41
+ console.log(` message: Use 'weshop status ${executionId}' to check progress`);
42
+ }
43
+ }
44
+ catch (err) {
45
+ printError(err);
46
+ process.exit(1);
47
+ }
48
+ });
49
+ //# sourceMappingURL=ai-flag-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-flag-generator.js","sourceRoot":"","sources":["../../src/commands/ai-flag-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,+FAA+F,CAAC;AAElG,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,OAAO,CAAC,mBAAmB,CAAC;KAC/D,OAAO,CAAC,gFAAgF,CAAC;KACzF,WAAW,CACV,oFAAoF;IACpF,4DAA4D;IAC5D,mDAAmD;IACnD,MAAM,cAAc,OAAO;IAC3B,aAAa;IACb,0FAA0F;IAC1F,0GAA0G;IAC1G,8EAA8E,CAC/E;KACA,MAAM,CAAC,oBAAoB,EAAE,yEAAyE,CAAC;KACvG,MAAM,CAAC,iBAAiB,EAAE,kCAAkC,CAAC;KAC7D,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"}