@meshy-ai/cli 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/.env.example +8 -2
  2. package/README.md +343 -108
  3. package/dist/client/endpoints/animation-catalog.d.ts +37 -0
  4. package/dist/client/endpoints/animation-catalog.d.ts.map +1 -0
  5. package/dist/client/endpoints/animation-catalog.js +55 -0
  6. package/dist/client/endpoints/animation-catalog.js.map +1 -0
  7. package/dist/client/endpoints/balance.d.ts +5 -0
  8. package/dist/client/endpoints/balance.d.ts.map +1 -1
  9. package/dist/client/endpoints/balance.js +5 -1
  10. package/dist/client/endpoints/balance.js.map +1 -1
  11. package/dist/client/endpoints/base.d.ts +41 -7
  12. package/dist/client/endpoints/base.d.ts.map +1 -1
  13. package/dist/client/endpoints/base.js +61 -40
  14. package/dist/client/endpoints/base.js.map +1 -1
  15. package/dist/client/endpoints/showcases.d.ts +31 -0
  16. package/dist/client/endpoints/showcases.d.ts.map +1 -0
  17. package/dist/client/endpoints/showcases.js +49 -0
  18. package/dist/client/endpoints/showcases.js.map +1 -0
  19. package/dist/client/errors.d.ts +1 -0
  20. package/dist/client/errors.d.ts.map +1 -1
  21. package/dist/client/errors.js +1 -1
  22. package/dist/client/errors.js.map +1 -1
  23. package/dist/client/index.d.ts +47 -38
  24. package/dist/client/index.d.ts.map +1 -1
  25. package/dist/client/index.js +89 -120
  26. package/dist/client/index.js.map +1 -1
  27. package/dist/client/resource-registry.d.ts +97 -0
  28. package/dist/client/resource-registry.d.ts.map +1 -0
  29. package/dist/client/resource-registry.js +157 -0
  30. package/dist/client/resource-registry.js.map +1 -0
  31. package/dist/client/transport.d.ts +99 -0
  32. package/dist/client/transport.d.ts.map +1 -0
  33. package/dist/client/transport.js +320 -0
  34. package/dist/client/transport.js.map +1 -0
  35. package/dist/client/types.d.ts +17 -6
  36. package/dist/client/types.d.ts.map +1 -1
  37. package/dist/client/types.js +28 -6
  38. package/dist/client/types.js.map +1 -1
  39. package/dist/cmd/animation-catalog.d.ts +26 -0
  40. package/dist/cmd/animation-catalog.d.ts.map +1 -0
  41. package/dist/cmd/animation-catalog.js +80 -0
  42. package/dist/cmd/animation-catalog.js.map +1 -0
  43. package/dist/cmd/api.d.ts +3 -2
  44. package/dist/cmd/api.d.ts.map +1 -1
  45. package/dist/cmd/api.js +22 -8
  46. package/dist/cmd/api.js.map +1 -1
  47. package/dist/cmd/auth.d.ts.map +1 -1
  48. package/dist/cmd/auth.js +5 -0
  49. package/dist/cmd/auth.js.map +1 -1
  50. package/dist/cmd/balance.d.ts.map +1 -1
  51. package/dist/cmd/balance.js +10 -6
  52. package/dist/cmd/balance.js.map +1 -1
  53. package/dist/cmd/creative-lab.d.ts +26 -0
  54. package/dist/cmd/creative-lab.d.ts.map +1 -0
  55. package/dist/cmd/creative-lab.js +256 -0
  56. package/dist/cmd/creative-lab.js.map +1 -0
  57. package/dist/cmd/delete.d.ts.map +1 -1
  58. package/dist/cmd/delete.js +6 -7
  59. package/dist/cmd/delete.js.map +1 -1
  60. package/dist/cmd/doctor.d.ts +23 -0
  61. package/dist/cmd/doctor.d.ts.map +1 -0
  62. package/dist/cmd/doctor.js +61 -0
  63. package/dist/cmd/doctor.js.map +1 -0
  64. package/dist/cmd/download.d.ts +17 -0
  65. package/dist/cmd/download.d.ts.map +1 -0
  66. package/dist/cmd/download.js +436 -0
  67. package/dist/cmd/download.js.map +1 -0
  68. package/dist/cmd/inspect.d.ts +63 -0
  69. package/dist/cmd/inspect.d.ts.map +1 -0
  70. package/dist/cmd/inspect.js +179 -0
  71. package/dist/cmd/inspect.js.map +1 -0
  72. package/dist/cmd/make.d.ts +13 -3
  73. package/dist/cmd/make.d.ts.map +1 -1
  74. package/dist/cmd/make.js +240 -36
  75. package/dist/cmd/make.js.map +1 -1
  76. package/dist/cmd/mesh.d.ts +13 -0
  77. package/dist/cmd/mesh.d.ts.map +1 -0
  78. package/dist/cmd/mesh.js +67 -0
  79. package/dist/cmd/mesh.js.map +1 -0
  80. package/dist/cmd/project.d.ts +16 -0
  81. package/dist/cmd/project.d.ts.map +1 -0
  82. package/dist/cmd/project.js +136 -0
  83. package/dist/cmd/project.js.map +1 -0
  84. package/dist/cmd/resources.d.ts +5 -0
  85. package/dist/cmd/resources.d.ts.map +1 -1
  86. package/dist/cmd/resources.js +38 -10
  87. package/dist/cmd/resources.js.map +1 -1
  88. package/dist/cmd/showcases.d.ts +10 -0
  89. package/dist/cmd/showcases.d.ts.map +1 -0
  90. package/dist/cmd/showcases.js +63 -0
  91. package/dist/cmd/showcases.js.map +1 -0
  92. package/dist/cmd/slicer.d.ts +12 -0
  93. package/dist/cmd/slicer.d.ts.map +1 -0
  94. package/dist/cmd/slicer.js +46 -0
  95. package/dist/cmd/slicer.js.map +1 -0
  96. package/dist/cmd/uv-unwrap.d.ts +16 -0
  97. package/dist/cmd/uv-unwrap.d.ts.map +1 -0
  98. package/dist/cmd/uv-unwrap.js +52 -0
  99. package/dist/cmd/uv-unwrap.js.map +1 -0
  100. package/dist/index.d.ts +13 -1
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +141 -8
  103. package/dist/index.js.map +1 -1
  104. package/dist/internal/artifacts.d.ts +97 -0
  105. package/dist/internal/artifacts.d.ts.map +1 -0
  106. package/dist/internal/artifacts.js +280 -0
  107. package/dist/internal/artifacts.js.map +1 -0
  108. package/dist/internal/atomic-file.d.ts +39 -0
  109. package/dist/internal/atomic-file.d.ts.map +1 -0
  110. package/dist/internal/atomic-file.js +160 -0
  111. package/dist/internal/atomic-file.js.map +1 -0
  112. package/dist/internal/command-helpers.d.ts +46 -0
  113. package/dist/internal/command-helpers.d.ts.map +1 -0
  114. package/dist/internal/command-helpers.js +61 -0
  115. package/dist/internal/command-helpers.js.map +1 -0
  116. package/dist/internal/config.d.ts +48 -5
  117. package/dist/internal/config.d.ts.map +1 -1
  118. package/dist/internal/config.js +95 -6
  119. package/dist/internal/config.js.map +1 -1
  120. package/dist/internal/context.d.ts +25 -0
  121. package/dist/internal/context.d.ts.map +1 -0
  122. package/dist/internal/context.js +37 -0
  123. package/dist/internal/context.js.map +1 -0
  124. package/dist/internal/credentials.d.ts +11 -0
  125. package/dist/internal/credentials.d.ts.map +1 -1
  126. package/dist/internal/credentials.js +2 -0
  127. package/dist/internal/credentials.js.map +1 -1
  128. package/dist/internal/doctor.d.ts +94 -0
  129. package/dist/internal/doctor.d.ts.map +1 -0
  130. package/dist/internal/doctor.js +280 -0
  131. package/dist/internal/doctor.js.map +1 -0
  132. package/dist/internal/download.d.ts +147 -13
  133. package/dist/internal/download.d.ts.map +1 -1
  134. package/dist/internal/download.js +735 -142
  135. package/dist/internal/download.js.map +1 -1
  136. package/dist/internal/env-file.d.ts +29 -0
  137. package/dist/internal/env-file.d.ts.map +1 -0
  138. package/dist/internal/env-file.js +95 -0
  139. package/dist/internal/env-file.js.map +1 -0
  140. package/dist/internal/errors.d.ts +74 -1
  141. package/dist/internal/errors.d.ts.map +1 -1
  142. package/dist/internal/errors.js +173 -1
  143. package/dist/internal/errors.js.map +1 -1
  144. package/dist/internal/file-input.d.ts +52 -12
  145. package/dist/internal/file-input.d.ts.map +1 -1
  146. package/dist/internal/file-input.js +162 -33
  147. package/dist/internal/file-input.js.map +1 -1
  148. package/dist/internal/global-options.d.ts +6 -4
  149. package/dist/internal/global-options.d.ts.map +1 -1
  150. package/dist/internal/global-options.js +19 -4
  151. package/dist/internal/global-options.js.map +1 -1
  152. package/dist/internal/image-models.d.ts +9 -2
  153. package/dist/internal/image-models.d.ts.map +1 -1
  154. package/dist/internal/image-models.js +24 -12
  155. package/dist/internal/image-models.js.map +1 -1
  156. package/dist/internal/inspect.d.ts +67 -0
  157. package/dist/internal/inspect.d.ts.map +1 -0
  158. package/dist/internal/inspect.js +111 -0
  159. package/dist/internal/inspect.js.map +1 -0
  160. package/dist/internal/lock.d.ts +19 -0
  161. package/dist/internal/lock.d.ts.map +1 -0
  162. package/dist/internal/lock.js +66 -0
  163. package/dist/internal/lock.js.map +1 -0
  164. package/dist/internal/material-links.d.ts +115 -0
  165. package/dist/internal/material-links.d.ts.map +1 -0
  166. package/dist/internal/material-links.js +577 -0
  167. package/dist/internal/material-links.js.map +1 -0
  168. package/dist/internal/obj-transform.d.ts +115 -0
  169. package/dist/internal/obj-transform.d.ts.map +1 -0
  170. package/dist/internal/obj-transform.js +649 -0
  171. package/dist/internal/obj-transform.js.map +1 -0
  172. package/dist/internal/operation-store.d.ts +123 -0
  173. package/dist/internal/operation-store.d.ts.map +1 -0
  174. package/dist/internal/operation-store.js +229 -0
  175. package/dist/internal/operation-store.js.map +1 -0
  176. package/dist/internal/output.d.ts +20 -2
  177. package/dist/internal/output.d.ts.map +1 -1
  178. package/dist/internal/output.js +32 -4
  179. package/dist/internal/output.js.map +1 -1
  180. package/dist/internal/paths.d.ts +89 -0
  181. package/dist/internal/paths.d.ts.map +1 -0
  182. package/dist/internal/paths.js +168 -0
  183. package/dist/internal/paths.js.map +1 -0
  184. package/dist/internal/payload.d.ts +15 -0
  185. package/dist/internal/payload.d.ts.map +1 -1
  186. package/dist/internal/payload.js +50 -3
  187. package/dist/internal/payload.js.map +1 -1
  188. package/dist/internal/poll.d.ts +30 -4
  189. package/dist/internal/poll.d.ts.map +1 -1
  190. package/dist/internal/poll.js +99 -16
  191. package/dist/internal/poll.js.map +1 -1
  192. package/dist/internal/project-store.d.ts +197 -0
  193. package/dist/internal/project-store.d.ts.map +1 -0
  194. package/dist/internal/project-store.js +467 -0
  195. package/dist/internal/project-store.js.map +1 -0
  196. package/dist/internal/result.d.ts +50 -0
  197. package/dist/internal/result.d.ts.map +1 -0
  198. package/dist/internal/result.js +41 -0
  199. package/dist/internal/result.js.map +1 -0
  200. package/dist/internal/runtime.d.ts +35 -5
  201. package/dist/internal/runtime.d.ts.map +1 -1
  202. package/dist/internal/runtime.js +68 -18
  203. package/dist/internal/runtime.js.map +1 -1
  204. package/dist/internal/slicers.d.ts +117 -0
  205. package/dist/internal/slicers.d.ts.map +1 -0
  206. package/dist/internal/slicers.js +314 -0
  207. package/dist/internal/slicers.js.map +1 -0
  208. package/dist/internal/stream.d.ts +58 -0
  209. package/dist/internal/stream.d.ts.map +1 -0
  210. package/dist/internal/stream.js +280 -0
  211. package/dist/internal/stream.js.map +1 -0
  212. package/dist/internal/task-command.d.ts +128 -11
  213. package/dist/internal/task-command.d.ts.map +1 -1
  214. package/dist/internal/task-command.js +991 -111
  215. package/dist/internal/task-command.js.map +1 -1
  216. package/dist/internal/task-view.d.ts +56 -0
  217. package/dist/internal/task-view.d.ts.map +1 -0
  218. package/dist/internal/task-view.js +95 -0
  219. package/dist/internal/task-view.js.map +1 -0
  220. package/dist/internal/update-notifier.d.ts +5 -1
  221. package/dist/internal/update-notifier.d.ts.map +1 -1
  222. package/dist/internal/update-notifier.js +7 -3
  223. package/dist/internal/update-notifier.js.map +1 -1
  224. package/dist/root.d.ts +10 -0
  225. package/dist/root.d.ts.map +1 -1
  226. package/dist/root.js +75 -10
  227. package/dist/root.js.map +1 -1
  228. package/package.json +3 -2
  229. package/skills/meshy-cli/SKILL.md +140 -59
  230. package/dist/client/endpoints/analyze-printability.d.ts +0 -5
  231. package/dist/client/endpoints/analyze-printability.d.ts.map +0 -1
  232. package/dist/client/endpoints/analyze-printability.js +0 -7
  233. package/dist/client/endpoints/analyze-printability.js.map +0 -1
  234. package/dist/client/endpoints/animate.d.ts +0 -6
  235. package/dist/client/endpoints/animate.d.ts.map +0 -1
  236. package/dist/client/endpoints/animate.js +0 -8
  237. package/dist/client/endpoints/animate.js.map +0 -1
  238. package/dist/client/endpoints/convert.d.ts +0 -5
  239. package/dist/client/endpoints/convert.d.ts.map +0 -1
  240. package/dist/client/endpoints/convert.js +0 -7
  241. package/dist/client/endpoints/convert.js.map +0 -1
  242. package/dist/client/endpoints/image-to-3d.d.ts +0 -5
  243. package/dist/client/endpoints/image-to-3d.d.ts.map +0 -1
  244. package/dist/client/endpoints/image-to-3d.js +0 -7
  245. package/dist/client/endpoints/image-to-3d.js.map +0 -1
  246. package/dist/client/endpoints/image-to-image.d.ts +0 -5
  247. package/dist/client/endpoints/image-to-image.d.ts.map +0 -1
  248. package/dist/client/endpoints/image-to-image.js +0 -7
  249. package/dist/client/endpoints/image-to-image.js.map +0 -1
  250. package/dist/client/endpoints/multi-color-print.d.ts +0 -5
  251. package/dist/client/endpoints/multi-color-print.d.ts.map +0 -1
  252. package/dist/client/endpoints/multi-color-print.js +0 -7
  253. package/dist/client/endpoints/multi-color-print.js.map +0 -1
  254. package/dist/client/endpoints/multi-image-to-3d.d.ts +0 -5
  255. package/dist/client/endpoints/multi-image-to-3d.d.ts.map +0 -1
  256. package/dist/client/endpoints/multi-image-to-3d.js +0 -7
  257. package/dist/client/endpoints/multi-image-to-3d.js.map +0 -1
  258. package/dist/client/endpoints/remesh.d.ts +0 -5
  259. package/dist/client/endpoints/remesh.d.ts.map +0 -1
  260. package/dist/client/endpoints/remesh.js +0 -7
  261. package/dist/client/endpoints/remesh.js.map +0 -1
  262. package/dist/client/endpoints/repair-printability.d.ts +0 -5
  263. package/dist/client/endpoints/repair-printability.d.ts.map +0 -1
  264. package/dist/client/endpoints/repair-printability.js +0 -7
  265. package/dist/client/endpoints/repair-printability.js.map +0 -1
  266. package/dist/client/endpoints/resize.d.ts +0 -5
  267. package/dist/client/endpoints/resize.d.ts.map +0 -1
  268. package/dist/client/endpoints/resize.js +0 -7
  269. package/dist/client/endpoints/resize.js.map +0 -1
  270. package/dist/client/endpoints/retexture.d.ts +0 -5
  271. package/dist/client/endpoints/retexture.d.ts.map +0 -1
  272. package/dist/client/endpoints/retexture.js +0 -7
  273. package/dist/client/endpoints/retexture.js.map +0 -1
  274. package/dist/client/endpoints/rigging.d.ts +0 -6
  275. package/dist/client/endpoints/rigging.d.ts.map +0 -1
  276. package/dist/client/endpoints/rigging.js +0 -8
  277. package/dist/client/endpoints/rigging.js.map +0 -1
  278. package/dist/client/endpoints/text-to-3d.d.ts +0 -6
  279. package/dist/client/endpoints/text-to-3d.d.ts.map +0 -1
  280. package/dist/client/endpoints/text-to-3d.js +0 -8
  281. package/dist/client/endpoints/text-to-3d.js.map +0 -1
  282. package/dist/client/endpoints/text-to-image.d.ts +0 -5
  283. package/dist/client/endpoints/text-to-image.d.ts.map +0 -1
  284. package/dist/client/endpoints/text-to-image.js +0 -7
  285. package/dist/client/endpoints/text-to-image.js.map +0 -1
  286. package/dist/client/endpoints/text-to-motion.d.ts +0 -6
  287. package/dist/client/endpoints/text-to-motion.d.ts.map +0 -1
  288. package/dist/client/endpoints/text-to-motion.js +0 -8
  289. package/dist/client/endpoints/text-to-motion.js.map +0 -1
@@ -1,24 +1,64 @@
1
1
  /**
2
- * Resolve user-supplied image and model inputs into something Meshy accepts.
2
+ * Media inputs: turn what the user typed into what the API accepts.
3
3
  *
4
- * Accepted inputs (both images and 3D models):
5
- * - http(s) URLs — preflighted with HEAD so unreachable sources fail fast.
6
- * - Local file paths (absolute or relative to cwd) — read, MIME-sniffed,
7
- * and inlined as data URIs. Users don't have to host files themselves.
4
+ * Accepted for every declared media field (see resource-registry mediaFields):
5
+ * - http(s) URLs — preflighted with an unauthenticated HEAD (GET fallback,
6
+ * aborted right after the headers) so unreachable sources fail before a
7
+ * billable POST. The API credential is never attached to a preflight.
8
+ * - data: URIs — validated (base64, sane MIME, size cap) and passed through.
9
+ * - Local file paths (absolute or relative to cwd) — must be regular files
10
+ * under the size cap and of an accepted format; read, MIME-sniffed and
11
+ * inlined as data URIs.
8
12
  *
9
- * Base64 data URIs on the command line aren't accepted — the whole point of
10
- * local-path support is to spare the user from encoding them manually.
13
+ * Normalisation runs on the *final merged payload* (defaults < --data <
14
+ * flags), so a path inside `--data '{"texture_image_url":"./tex.png"}'` is
15
+ * handled exactly like the typed flag. Only fields the resource declares are
16
+ * touched — no string that merely looks like a path is ever read.
11
17
  */
12
- /** camelCase option names that hold image inputs. */
18
+ import type { MediaField } from "../client/resource-registry.js";
19
+ export declare const DEFAULT_MEDIA_LIMITS: {
20
+ /** 50 MiB — an engineering default, not a Meshy product limit. */
21
+ readonly maxFileBytes: number;
22
+ readonly preflightTimeoutMs: 10000;
23
+ };
24
+ export type MediaLimits = {
25
+ maxFileBytes: number;
26
+ preflightTimeoutMs: number;
27
+ };
28
+ export interface NormalizeOptions {
29
+ cwd?: string;
30
+ limits?: Partial<MediaLimits>;
31
+ fetchImpl?: typeof fetch;
32
+ signal?: AbortSignal;
33
+ }
34
+ export interface NormalizedMedia {
35
+ field: string;
36
+ index: number | null;
37
+ source: "url" | "data-uri" | "local-file";
38
+ mime: string | null;
39
+ bytes: number | null;
40
+ }
41
+ /** camelCase option names that hold image inputs (legacy flag-level API). */
13
42
  export declare const IMAGE_FIELDS: {
14
- scalar: readonly ["imageUrl", "imageStyleUrl"];
43
+ scalar: readonly ["imageUrl", "imageStyleUrl", "textureImageUrl"];
15
44
  list: readonly ["imageUrls", "referenceImageUrls", "multiviewImageUrls"];
16
45
  };
17
- /** camelCase option names that hold 3D model inputs. */
46
+ /** camelCase option names that hold 3D model inputs (legacy flag-level API). */
18
47
  export declare const MODEL_FIELDS: {
19
48
  scalar: readonly ["modelUrl"];
20
49
  list: readonly [];
21
50
  };
22
- export declare function resolveImageFields(opts: Record<string, unknown>): Promise<void>;
23
- export declare function resolveModelFields(opts: Record<string, unknown>): Promise<void>;
51
+ export declare function resolveImageFields(opts: Record<string, unknown>, o?: NormalizeOptions): Promise<void>;
52
+ export declare function resolveModelFields(opts: Record<string, unknown>, o?: NormalizeOptions): Promise<void>;
53
+ /**
54
+ * Normalise every declared media field of a final payload in place-free
55
+ * fashion (a new object is returned). Non-string values are left untouched
56
+ * and reported by the endpoint schema instead.
57
+ */
58
+ export declare function normalizeMediaPayload(payload: Record<string, unknown>, fields: readonly MediaField[], o?: NormalizeOptions): Promise<{
59
+ payload: Record<string, unknown>;
60
+ media: NormalizedMedia[];
61
+ }>;
62
+ export declare function detectImageMime(buffer: Buffer, path: string): string;
63
+ export declare function detectModelMime(buffer: Buffer, path: string): string;
24
64
  //# sourceMappingURL=file-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.d.ts","sourceRoot":"","sources":["../../src/internal/file-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,qDAAqD;AACrD,eAAO,MAAM,YAAY;IACvB,MAAM,YACJ,UAAU,EACV,eAAe;IAEjB,IAAI,YACF,WAAW,EACX,oBAAoB,EACpB,oBAAoB;CAEvB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,YAAY;IACvB,MAAM,YAAG,UAAU;IACnB,IAAI;CACL,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAErF"}
1
+ {"version":3,"file":"file-input.d.ts","sourceRoot":"","sources":["../../src/internal/file-input.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,gCAAgC,CAAC;AAK5E,eAAO,MAAM,oBAAoB;IAC/B,kEAAkE;aAClE,YAAY;aACZ,kBAAkB,EAAE,KAAM;CAClB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;IAC1C,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,6EAA6E;AAC7E,eAAO,MAAM,YAAY;IACvB,MAAM,YACJ,UAAU,EACV,eAAe,EACf,iBAAiB;IAEnB,IAAI,YACF,WAAW,EACX,oBAAoB,EACpB,oBAAoB;CAEvB,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,YAAY;IACvB,MAAM,YAAG,UAAU;IACnB,IAAI;CACL,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/G;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/G;AAoCD;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,CAAC,GAAE,gBAAqB,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CA4BzE;AAuJD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BpE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA2BpE"}
@@ -1,23 +1,36 @@
1
1
  /**
2
- * Resolve user-supplied image and model inputs into something Meshy accepts.
2
+ * Media inputs: turn what the user typed into what the API accepts.
3
3
  *
4
- * Accepted inputs (both images and 3D models):
5
- * - http(s) URLs — preflighted with HEAD so unreachable sources fail fast.
6
- * - Local file paths (absolute or relative to cwd) — read, MIME-sniffed,
7
- * and inlined as data URIs. Users don't have to host files themselves.
4
+ * Accepted for every declared media field (see resource-registry mediaFields):
5
+ * - http(s) URLs — preflighted with an unauthenticated HEAD (GET fallback,
6
+ * aborted right after the headers) so unreachable sources fail before a
7
+ * billable POST. The API credential is never attached to a preflight.
8
+ * - data: URIs — validated (base64, sane MIME, size cap) and passed through.
9
+ * - Local file paths (absolute or relative to cwd) — must be regular files
10
+ * under the size cap and of an accepted format; read, MIME-sniffed and
11
+ * inlined as data URIs.
8
12
  *
9
- * Base64 data URIs on the command line aren't accepted — the whole point of
10
- * local-path support is to spare the user from encoding them manually.
13
+ * Normalisation runs on the *final merged payload* (defaults < --data <
14
+ * flags), so a path inside `--data '{"texture_image_url":"./tex.png"}'` is
15
+ * handled exactly like the typed flag. Only fields the resource declares are
16
+ * touched — no string that merely looks like a path is ever read.
11
17
  */
12
18
  import { readFileSync, statSync } from "node:fs";
13
19
  import { extname, isAbsolute, resolve as resolvePath } from "node:path";
14
20
  import { UsageError } from "./errors.js";
15
21
  import { logger } from "./logger.js";
16
- /** camelCase option names that hold image inputs. */
22
+ import { USER_AGENT } from "./user-agent.js";
23
+ export const DEFAULT_MEDIA_LIMITS = {
24
+ /** 50 MiB — an engineering default, not a Meshy product limit. */
25
+ maxFileBytes: 50 * 1024 * 1024,
26
+ preflightTimeoutMs: 10_000,
27
+ };
28
+ /** camelCase option names that hold image inputs (legacy flag-level API). */
17
29
  export const IMAGE_FIELDS = {
18
30
  scalar: [
19
31
  "imageUrl", // image-to-3d
20
32
  "imageStyleUrl", // retexture
33
+ "textureImageUrl", // text-to-3d refine / rigging
21
34
  ],
22
35
  list: [
23
36
  "imageUrls", // multi-image-to-3d
@@ -25,22 +38,22 @@ export const IMAGE_FIELDS = {
25
38
  "multiviewImageUrls", // retexture
26
39
  ],
27
40
  };
28
- /** camelCase option names that hold 3D model inputs. */
41
+ /** camelCase option names that hold 3D model inputs (legacy flag-level API). */
29
42
  export const MODEL_FIELDS = {
30
- scalar: ["modelUrl"], // remesh, retexture, rigging
43
+ scalar: ["modelUrl"], // remesh, retexture, rigging, uv-unwrap …
31
44
  list: [],
32
45
  };
33
- export async function resolveImageFields(opts) {
34
- await resolveGroup(opts, IMAGE_FIELDS, detectImageMime, "image");
46
+ export async function resolveImageFields(opts, o = {}) {
47
+ await resolveGroup(opts, IMAGE_FIELDS, "image", o);
35
48
  }
36
- export async function resolveModelFields(opts) {
37
- await resolveGroup(opts, MODEL_FIELDS, detectModelMime, "3d model");
49
+ export async function resolveModelFields(opts, o = {}) {
50
+ await resolveGroup(opts, MODEL_FIELDS, "model", o);
38
51
  }
39
- async function resolveGroup(opts, fields, detect, kind) {
52
+ async function resolveGroup(opts, fields, kind, o) {
40
53
  for (const key of fields.scalar) {
41
54
  const v = opts[key];
42
55
  if (typeof v === "string" && v) {
43
- opts[key] = await resolveOne(v, `--${toFlag(key)}`, detect, kind);
56
+ opts[key] = (await resolveOne(v, `--${toFlag(key)}`, kind, undefined, o)).value;
44
57
  }
45
58
  }
46
59
  for (const key of fields.list) {
@@ -49,7 +62,7 @@ async function resolveGroup(opts, fields, detect, kind) {
49
62
  const resolved = [];
50
63
  for (const entry of v) {
51
64
  if (typeof entry === "string" && entry) {
52
- resolved.push(await resolveOne(entry, `--${toFlag(key)}`, detect, kind));
65
+ resolved.push((await resolveOne(entry, `--${toFlag(key)}`, kind, undefined, o)).value);
53
66
  }
54
67
  }
55
68
  opts[key] = resolved;
@@ -59,28 +72,118 @@ async function resolveGroup(opts, fields, detect, kind) {
59
72
  function toFlag(camel) {
60
73
  return camel.replace(/([A-Z])/g, "-$1").toLowerCase();
61
74
  }
62
- async function resolveOne(input, flagLabel, detect, kind) {
63
- if (input.startsWith("data:")) {
64
- throw new UsageError(`${flagLabel}: data: URIs aren't accepted on the command line — pass a local file path instead`);
75
+ function flagForField(path) {
76
+ return `--${path.replace(/_/g, "-")}`;
77
+ }
78
+ /**
79
+ * Normalise every declared media field of a final payload in place-free
80
+ * fashion (a new object is returned). Non-string values are left untouched
81
+ * and reported by the endpoint schema instead.
82
+ */
83
+ export async function normalizeMediaPayload(payload, fields, o = {}) {
84
+ const out = { ...payload };
85
+ const media = [];
86
+ for (const field of fields) {
87
+ const value = out[field.path];
88
+ if (value === undefined || value === null)
89
+ continue;
90
+ const label = flagForField(field.path);
91
+ if (field.many) {
92
+ if (!Array.isArray(value))
93
+ continue;
94
+ const resolved = [];
95
+ for (let i = 0; i < value.length; i++) {
96
+ const entry = value[i];
97
+ if (typeof entry !== "string" || !entry) {
98
+ resolved.push(entry);
99
+ continue;
100
+ }
101
+ const r = await resolveOne(entry, `${label}[${i}]`, field.kind, field.formats, o);
102
+ resolved.push(r.value);
103
+ media.push({ field: field.path, index: i, source: r.source, mime: r.mime, bytes: r.bytes });
104
+ }
105
+ out[field.path] = resolved;
106
+ }
107
+ else if (typeof value === "string" && value) {
108
+ const r = await resolveOne(value, label, field.kind, field.formats, o);
109
+ out[field.path] = r.value;
110
+ media.push({ field: field.path, index: null, source: r.source, mime: r.mime, bytes: r.bytes });
111
+ }
112
+ }
113
+ return { payload: out, media };
114
+ }
115
+ async function resolveOne(input, flagLabel, kind, formats, o) {
116
+ const limits = { ...DEFAULT_MEDIA_LIMITS, ...(o.limits ?? {}) };
117
+ if (/^data:/i.test(input)) {
118
+ return validateDataUri(input, flagLabel, kind, formats, limits);
65
119
  }
66
120
  if (/^https?:\/\//i.test(input)) {
67
- await preflightUrl(input, flagLabel);
68
- return input;
121
+ await preflightUrl(input, flagLabel, limits, o);
122
+ return { value: input, source: "url", mime: null, bytes: null };
123
+ }
124
+ if (/^[a-z][a-z0-9+.-]*:\/\//i.test(input)) {
125
+ throw new UsageError(`${flagLabel}: only http(s) URLs, data: URIs and local file paths are accepted (got ${input.split(":")[0]}: URL)`);
126
+ }
127
+ return loadLocalFile(input, flagLabel, kind, formats, limits, o.cwd ?? process.cwd());
128
+ }
129
+ const DATA_URI_RE = /^data:([a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+)((?:;[a-z0-9-]+=[^;,]*)*)(;base64)?,(.*)$/is;
130
+ function validateDataUri(input, flagLabel, kind, formats, limits) {
131
+ const m = DATA_URI_RE.exec(input);
132
+ if (!m)
133
+ throw new UsageError(`${flagLabel}: malformed data: URI (expected data:<mime>;base64,<payload>)`);
134
+ const mime = m[1].toLowerCase();
135
+ const isBase64 = Boolean(m[3]);
136
+ const body = m[4] ?? "";
137
+ if (!isBase64)
138
+ throw new UsageError(`${flagLabel}: data: URI must be base64-encoded`);
139
+ if (!/^[A-Za-z0-9+/=\s]*$/.test(body))
140
+ throw new UsageError(`${flagLabel}: data: URI payload is not valid base64`);
141
+ const bytes = Math.floor((body.replace(/\s+/g, "").length * 3) / 4);
142
+ if (bytes > limits.maxFileBytes) {
143
+ throw new UsageError(`${flagLabel}: inline data is ${bytes} bytes, above the ${limits.maxFileBytes}-byte limit`);
69
144
  }
70
- return loadLocalFile(input, flagLabel, detect, kind);
145
+ if (kind === "image" && !mime.startsWith("image/")) {
146
+ throw new UsageError(`${flagLabel}: expected an image data: URI, got ${mime}`);
147
+ }
148
+ if (kind === "model" && !(mime.startsWith("model/") || mime === "application/octet-stream")) {
149
+ throw new UsageError(`${flagLabel}: expected a 3D-model data: URI (model/* or application/octet-stream), got ${mime}`);
150
+ }
151
+ if (formats && formats.length > 0) {
152
+ const ext = extForMime(mime);
153
+ if (!ext || !formats.includes(ext)) {
154
+ throw new UsageError(`${flagLabel}: this field accepts ${formats.join("/")} only (data: URI is ${mime})`);
155
+ }
156
+ }
157
+ return { value: input, source: "data-uri", mime, bytes };
71
158
  }
72
- async function preflightUrl(url, flagLabel) {
159
+ async function preflightUrl(url, flagLabel, limits, o) {
160
+ let parsed;
161
+ try {
162
+ parsed = new URL(url);
163
+ }
164
+ catch {
165
+ throw new UsageError(`${flagLabel}: invalid URL ${url}`);
166
+ }
167
+ if (parsed.username || parsed.password)
168
+ throw new UsageError(`${flagLabel}: URLs with embedded credentials are not accepted`);
169
+ const fetchImpl = o.fetchImpl ?? globalThis.fetch;
170
+ const headers = { "User-Agent": USER_AGENT };
171
+ const timeout = AbortSignal.timeout(limits.preflightTimeoutMs);
172
+ const signal = o.signal ? AbortSignal.any([timeout, o.signal]) : timeout;
73
173
  let resp;
74
174
  try {
75
- resp = await fetch(url, { method: "HEAD", redirect: "follow" });
175
+ resp = await fetchImpl(url, { method: "HEAD", redirect: "follow", headers, signal });
76
176
  if (resp.status === 405 || resp.status === 501) {
77
177
  const controller = new AbortController();
78
- resp = await fetch(url, { method: "GET", signal: controller.signal, redirect: "follow" });
178
+ const getSignal = AbortSignal.any([controller.signal, signal]);
179
+ resp = await fetchImpl(url, { method: "GET", redirect: "follow", headers, signal: getSignal });
79
180
  controller.abort();
80
181
  }
81
182
  }
82
183
  catch (err) {
83
184
  const msg = err instanceof Error ? err.message : String(err);
185
+ if (timeout.aborted)
186
+ throw new UsageError(`${flagLabel}: preflight of ${url} timed out after ${limits.preflightTimeoutMs}ms`);
84
187
  throw new UsageError(`${flagLabel}: cannot reach ${url} (${msg})`);
85
188
  }
86
189
  if (!resp.ok) {
@@ -88,8 +191,8 @@ async function preflightUrl(url, flagLabel) {
88
191
  }
89
192
  logger.debug(`${flagLabel} preflight OK: ${url} (${resp.status})`);
90
193
  }
91
- function loadLocalFile(input, flagLabel, detect, kind) {
92
- const absPath = isAbsolute(input) ? input : resolvePath(process.cwd(), input);
194
+ function loadLocalFile(input, flagLabel, kind, formats, limits, cwd) {
195
+ const absPath = isAbsolute(input) ? input : resolvePath(cwd, input);
93
196
  let stat;
94
197
  try {
95
198
  stat = statSync(absPath);
@@ -100,15 +203,41 @@ function loadLocalFile(input, flagLabel, detect, kind) {
100
203
  if (!stat.isFile()) {
101
204
  throw new UsageError(`${flagLabel}: not a regular file: ${input}`);
102
205
  }
206
+ if (stat.size > limits.maxFileBytes) {
207
+ throw new UsageError(`${flagLabel}: ${input} is ${stat.size} bytes, above the ${limits.maxFileBytes}-byte limit`);
208
+ }
103
209
  const buffer = readFileSync(absPath);
104
- const mime = detect(buffer, absPath);
210
+ const mime = kind === "image" ? detectImageMime(buffer, absPath) : detectModelMime(buffer, absPath);
105
211
  if (!mime) {
106
- throw new UsageError(`${flagLabel}: could not detect ${kind} MIME type for ${absPath}`);
212
+ throw new UsageError(`${flagLabel}: could not detect ${kind === "image" ? "image" : "3d model"} MIME type for ${absPath}`);
213
+ }
214
+ if (formats && formats.length > 0) {
215
+ const ext = extForMime(mime) ?? extname(absPath).slice(1).toLowerCase();
216
+ if (!formats.includes(ext)) {
217
+ throw new UsageError(`${flagLabel}: this field accepts ${formats.join("/")} only (got ${ext || "unknown"})`);
218
+ }
107
219
  }
108
220
  logger.debug(`${flagLabel} inlined ${absPath} as ${mime} data URI (${buffer.length} bytes)`);
109
- return `data:${mime};base64,${buffer.toString("base64")}`;
221
+ return { value: `data:${mime};base64,${buffer.toString("base64")}`, source: "local-file", mime, bytes: buffer.length };
222
+ }
223
+ function extForMime(mime) {
224
+ const map = {
225
+ "image/jpeg": "jpg",
226
+ "image/png": "png",
227
+ "image/webp": "webp",
228
+ "image/gif": "gif",
229
+ "image/bmp": "bmp",
230
+ "model/gltf-binary": "glb",
231
+ "model/gltf+json": "gltf",
232
+ "model/obj": "obj",
233
+ "model/stl": "stl",
234
+ "model/vnd.usdz+zip": "usdz",
235
+ "model/3mf": "3mf",
236
+ "application/octet-stream": "fbx",
237
+ };
238
+ return map[mime] ?? null;
110
239
  }
111
- function detectImageMime(buffer, path) {
240
+ export function detectImageMime(buffer, path) {
112
241
  if (buffer.length >= 12) {
113
242
  if (buffer[0] === 0xff && buffer[1] === 0xd8 && buffer[2] === 0xff)
114
243
  return "image/jpeg";
@@ -136,7 +265,7 @@ function detectImageMime(buffer, path) {
136
265
  };
137
266
  return map[ext] ?? "";
138
267
  }
139
- function detectModelMime(buffer, path) {
268
+ export function detectModelMime(buffer, path) {
140
269
  // GLB: magic "glTF" at offset 0
141
270
  if (buffer.length >= 4 &&
142
271
  buffer[0] === 0x67 &&
@@ -1 +1 @@
1
- {"version":3,"file":"file-input.js","sourceRoot":"","sources":["../../src/internal/file-input.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-input.js","sourceRoot":"","sources":["../../src/internal/file-input.ts"],"names":[],"mappings":"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"}
@@ -3,14 +3,16 @@
3
3
  * regardless of position in argv (e.g. `meshy-cli balance --format pretty`
4
4
  * as well as `meshy-cli --format pretty balance`).
5
5
  *
6
- * We declare them once on the root with visible help + defaults, and mirror
7
- * them (hidden, no defaults) onto every descendant command. `optsWithGlobals`
8
- * then merges any set value — a flag on the innermost command wins, and
9
- * unset leaf options fall through to the parent's value or its default.
6
+ * Commander parses the root command's known options wherever they appear in
7
+ * argv (positional options are disabled), so a flag declared here is consumed
8
+ * by the root even when typed after the subcommand. The hidden mirrors on
9
+ * every descendant keep `optsWithGlobals()` uniform and make the flag visible
10
+ * to `<sub> --help` walkers.
10
11
  */
11
12
  import { Command } from "commander";
12
13
  /** Register the visible, default-carrying versions on the root command. */
13
14
  export declare function registerRootGlobalOptions(root: Command): void;
14
15
  /** Mirror the same flags onto every descendant, hidden from help. */
15
16
  export declare function mirrorGlobalOptionsToDescendants(root: Command): void;
17
+ export declare function walkCommands(cmd: Command, visit: (c: Command) => void): void;
16
18
  //# sourceMappingURL=global-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"global-options.d.ts","sourceRoot":"","sources":["../../src/internal/global-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA0B5C,2EAA2E;AAC3E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAO7D;AAED,qEAAqE;AACrE,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CASpE"}
1
+ {"version":3,"file":"global-options.d.ts","sourceRoot":"","sources":["../../src/internal/global-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAqD5C,2EAA2E;AAC3E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAO7D;AAED,qEAAqE;AACrE,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CASpE;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAE5E"}
@@ -3,19 +3,31 @@
3
3
  * regardless of position in argv (e.g. `meshy-cli balance --format pretty`
4
4
  * as well as `meshy-cli --format pretty balance`).
5
5
  *
6
- * We declare them once on the root with visible help + defaults, and mirror
7
- * them (hidden, no defaults) onto every descendant command. `optsWithGlobals`
8
- * then merges any set value — a flag on the innermost command wins, and
9
- * unset leaf options fall through to the parent's value or its default.
6
+ * Commander parses the root command's known options wherever they appear in
7
+ * argv (positional options are disabled), so a flag declared here is consumed
8
+ * by the root even when typed after the subcommand. The hidden mirrors on
9
+ * every descendant keep `optsWithGlobals()` uniform and make the flag visible
10
+ * to `<sub> --help` walkers.
10
11
  */
11
12
  import { Option } from "commander";
12
13
  const FACTORIES = [
13
14
  () => new Option("--api-key <key>", "Meshy API key (overrides MESHY_API_KEY)"),
14
15
  () => new Option("--base-url-v1 <url>", "override v1 base URL"),
15
16
  () => new Option("--base-url-v2 <url>", "override v2 base URL"),
17
+ () => new Option("--base-url-creative-lab <url>", "override the Creative Lab base URL (default: <v1 origin>/openapi/creative-lab)"),
16
18
  () => new Option("--format <fmt>", "output format").choices(["json", "pretty", "ndjson"]),
17
19
  () => new Option("--json", "output as JSON (alias for --format json)"),
20
+ () => new Option("--output-schema <schema>", "stdout data model: legacy (0.2.0-compatible, default for existing commands) | v1 (stable envelope; default for new commands)").choices(["legacy", "v1"]),
18
21
  () => new Option("-o, --output <path>", "download artifacts + write meta.json; switches stdout to a status report"),
22
+ () => new Option("--api-key-file <path>", "read MESHY_API_KEY from this dotenv-style file (only that key is read; parsed, never executed; no .env auto-discovery)"),
23
+ // Node.js itself scans the whole argv for `--env-file` — even after the
24
+ // script name — loads the entire file into process.env (NODE_OPTIONS
25
+ // included) and exits 9 when it is missing. The flag therefore cannot be
26
+ // offered safely; it is registered only so a habitual `--env-file` gets an
27
+ // explanation instead of a silent, Node-side environment load.
28
+ () => new Option("--env-file <path>", "(unsupported) use --api-key-file").hideHelp(),
29
+ () => new Option("--workspace <dir>", "restrict every file written by local tools and downloads to this directory"),
30
+ () => new Option("--no-update-check", "never query npm for a newer version in this process"),
19
31
  () => new Option("-v, --verbose", "debug logging"),
20
32
  () => new Option("--log-level <level>", "log level").choices([
21
33
  "debug",
@@ -49,6 +61,9 @@ export function mirrorGlobalOptionsToDescendants(root) {
49
61
  }
50
62
  });
51
63
  }
64
+ export function walkCommands(cmd, visit) {
65
+ walk(cmd, visit);
66
+ }
52
67
  function walk(cmd, visit) {
53
68
  visit(cmd);
54
69
  for (const sub of cmd.commands)
@@ -1 +1 @@
1
- {"version":3,"file":"global-options.js","sourceRoot":"","sources":["../../src/internal/global-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAI5C,MAAM,SAAS,GAAoB;IACjC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;IAC9E,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IAC/D,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;IAC/D,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzF,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,0CAA0C,CAAC;IACtE,GAAG,EAAE,CACH,IAAI,MAAM,CACR,qBAAqB,EACrB,0EAA0E,CAC3E;IACH,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC;IAClD,GAAG,EAAE,CACH,IAAI,MAAM,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC;QACrD,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAC;CACL,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,yBAAyB,CAAC,IAAa;IACrD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;YAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,gCAAgC,CAAC,IAAa;IAC5D,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;QACjB,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACzE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAC,GAAY,EAAE,KAA2B;IACrD,KAAK,CAAC,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ;QAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"global-options.js","sourceRoot":"","sources":["../../src/internal/global-options.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  /**
2
2
  * Shared model/aspect-ratio table for the 2D image commands, so text-to-image
3
3
  * and image-to-image can't drift apart as Meshy ships new models.
4
+ *
5
+ * The ratio rules mirror the server's own per-model check
6
+ * (meshyd pkg/server/api_image_generation_handlers.go): every GPT Image model
7
+ * accepts all seven ratios; the nano-banana family rejects 3:2 and 2:3.
4
8
  */
5
- export declare const IMAGE_MODELS: readonly ["gpt-image-2", "nano-banana-pro", "nano-banana-2", "nano-banana-2-lite", "nano-banana"];
9
+ export declare const IMAGE_MODELS: readonly ["gpt-image-2", "gpt-image-2-5-flare", "gpt-image-2-5-sunburst", "nano-banana-pro", "nano-banana-2", "nano-banana-2-lite"];
6
10
  export declare const DEFAULT_IMAGE_MODEL = "gpt-image-2";
11
+ /** OpenAI GPT Image models of any generation — the ones that take every aspect ratio. */
12
+ export declare const GPT_IMAGE_MODELS: readonly ["gpt-image-2", "gpt-image-2-5-flare", "gpt-image-2-5-sunburst"];
7
13
  export declare const IMAGE_MODEL_HELP: string;
8
14
  export declare const ASPECT_RATIOS: readonly ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"];
9
15
  export declare const ASPECT_RATIO_HELP: string;
16
+ export declare function isGptImageModel(model: string): boolean;
10
17
  /**
11
18
  * Cross-validate model × aspect-ratio × multi-view before any credits are
12
- * spent; the API's own 400 is less specific. When the model is unknown at
19
+ * spent, with a message that names the fix. When the model is unknown at
13
20
  * parse time (driven via --data), the ratio check is left to the server.
14
21
  */
15
22
  export declare function checkImageCombo(opts: {
@@ -1 +1 @@
1
- {"version":3,"file":"image-models.d.ts","sourceRoot":"","sources":["../../src/internal/image-models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,eAAO,MAAM,YAAY,YACvB,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,aAAa,CACL,CAAC;AAEX,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,eAAO,MAAM,gBAAgB,QAEoC,CAAC;AAElE,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE1F,eAAO,MAAM,iBAAiB,QAGmB,CAAC;AAKlD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAcP"}
1
+ {"version":3,"file":"image-models.d.ts","sourceRoot":"","sources":["../../src/internal/image-models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,eAAO,MAAM,YAAY,YACvB,aAAa,EACb,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,CACZ,CAAC;AAEX,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,YAAI,aAAa,EAAE,qBAAqB,EAAE,wBAAwB,CAAU,CAAC;AAE1G,eAAO,MAAM,gBAAgB,QAG6B,CAAC;AAE3D,eAAO,MAAM,aAAa,YAAI,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE1F,eAAO,MAAM,iBAAiB,QAGmB,CAAC;AAKlD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,IAAI,CAcP"}
@@ -1,27 +1,38 @@
1
1
  /**
2
2
  * Shared model/aspect-ratio table for the 2D image commands, so text-to-image
3
3
  * and image-to-image can't drift apart as Meshy ships new models.
4
+ *
5
+ * The ratio rules mirror the server's own per-model check
6
+ * (meshyd pkg/server/api_image_generation_handlers.go): every GPT Image model
7
+ * accepts all seven ratios; the nano-banana family rejects 3:2 and 2:3.
4
8
  */
5
9
  import { UsageError } from "./errors.js";
6
10
  export const IMAGE_MODELS = [
7
11
  "gpt-image-2",
12
+ "gpt-image-2-5-flare",
13
+ "gpt-image-2-5-sunburst",
8
14
  "nano-banana-pro",
9
15
  "nano-banana-2",
10
16
  "nano-banana-2-lite",
11
- "nano-banana",
12
17
  ];
13
18
  export const DEFAULT_IMAGE_MODEL = "gpt-image-2";
14
- export const IMAGE_MODEL_HELP = "gpt-image-2 (default, best; ratios 1:1|16:9|9:16|3:2|2:3) | nano-banana-pro | nano-banana-2 | " +
15
- "nano-banana-2-lite (fastest, cheapest) | nano-banana (legacy)";
19
+ /** OpenAI GPT Image models of any generation — the ones that take every aspect ratio. */
20
+ export const GPT_IMAGE_MODELS = ["gpt-image-2", "gpt-image-2-5-flare", "gpt-image-2-5-sunburst"];
21
+ export const IMAGE_MODEL_HELP = "gpt-image-2 (default) | gpt-image-2-5-flare (GPT Image 2.5, fast tier) | " +
22
+ "gpt-image-2-5-sunburst (GPT Image 2.5, precision-edit tier) | nano-banana-pro | " +
23
+ "nano-banana-2 | nano-banana-2-lite (fastest, cheapest)";
16
24
  export const ASPECT_RATIOS = ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"];
17
- export const ASPECT_RATIO_HELP = "default: 1:1. nano-banana*: 1:1|16:9|9:16|4:3|3:4. " +
18
- "gpt-image-2: 1:1|16:9|9:16|3:2|2:3. " +
25
+ export const ASPECT_RATIO_HELP = "default: 1:1. gpt-image-*: 1:1|16:9|9:16|4:3|3:4|3:2|2:3. " +
26
+ "nano-banana*: 1:1|16:9|9:16|4:3|3:4. " +
19
27
  "Mutually exclusive with --generate-multi-view";
20
- const GPT_IMAGE_2_RATIOS = new Set(["1:1", "16:9", "9:16", "3:2", "2:3"]);
28
+ const GPT_IMAGE_MODEL_SET = new Set(GPT_IMAGE_MODELS);
21
29
  const NANO_BANANA_RATIOS = new Set(["1:1", "16:9", "9:16", "4:3", "3:4"]);
30
+ export function isGptImageModel(model) {
31
+ return GPT_IMAGE_MODEL_SET.has(model);
32
+ }
22
33
  /**
23
34
  * Cross-validate model × aspect-ratio × multi-view before any credits are
24
- * spent; the API's own 400 is less specific. When the model is unknown at
35
+ * spent, with a message that names the fix. When the model is unknown at
25
36
  * parse time (driven via --data), the ratio check is left to the server.
26
37
  */
27
38
  export function checkImageCombo(opts) {
@@ -31,11 +42,12 @@ export function checkImageCombo(opts) {
31
42
  const ratio = opts.aspectRatio;
32
43
  if (!ratio || !opts.aiModel)
33
44
  return;
34
- const supported = opts.aiModel === "gpt-image-2" ? GPT_IMAGE_2_RATIOS : NANO_BANANA_RATIOS;
35
- if (!supported.has(ratio)) {
36
- throw new UsageError(opts.aiModel === "gpt-image-2"
37
- ? `--aspect-ratio ${ratio} is not supported by gpt-image-2 (use 1:1, 16:9, 9:16, 3:2, or 2:3)`
38
- : `--aspect-ratio ${ratio} is only supported by gpt-image-2`);
45
+ // GPT Image models (2 and 2.5) accept every ratio the flag offers; only the
46
+ // nano-banana family is narrower.
47
+ if (isGptImageModel(opts.aiModel))
48
+ return;
49
+ if (!NANO_BANANA_RATIOS.has(ratio)) {
50
+ throw new UsageError(`--aspect-ratio ${ratio} is only supported by the GPT Image models (${GPT_IMAGE_MODELS.join(", ")})`);
39
51
  }
40
52
  }
41
53
  //# sourceMappingURL=image-models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-models.js","sourceRoot":"","sources":["../../src/internal/image-models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,iBAAiB;IACjB,eAAe;IACf,oBAAoB;IACpB,aAAa;CACL,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAC3B,gGAAgG;IAChG,+DAA+D,CAAC;AAElE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE1F,MAAM,CAAC,MAAM,iBAAiB,GAC5B,qDAAqD;IACrD,sCAAsC;IACtC,+CAA+C,CAAC;AAElD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAE1E;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAI/B;IACC,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC3F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,UAAU,CAClB,IAAI,CAAC,OAAO,KAAK,aAAa;YAC5B,CAAC,CAAC,kBAAkB,KAAK,qEAAqE;YAC9F,CAAC,CAAC,kBAAkB,KAAK,mCAAmC,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"image-models.js","sourceRoot":"","sources":["../../src/internal/image-models.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,qBAAqB;IACrB,wBAAwB;IACxB,iBAAiB;IACjB,eAAe;IACf,oBAAoB;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEjD,yFAAyF;AACzF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,aAAa,EAAE,qBAAqB,EAAE,wBAAwB,CAAU,CAAC;AAE1G,MAAM,CAAC,MAAM,gBAAgB,GAC3B,2EAA2E;IAC3E,kFAAkF;IAClF,wDAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAE1F,MAAM,CAAC,MAAM,iBAAiB,GAC5B,4DAA4D;IAC5D,uCAAuC;IACvC,+CAA+C,CAAC;AAElD,MAAM,mBAAmB,GAAwB,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAE/F,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAI/B;IACC,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACxD,MAAM,IAAI,UAAU,CAAC,sEAAsE,CAAC,CAAC;IAC/F,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;IAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO;IACpC,4EAA4E;IAC5E,kCAAkC;IAClC,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO;IAC1C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAClB,kBAAkB,KAAK,+CAA+C,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrG,CAAC;IACJ,CAAC;AACH,CAAC"}