@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.
- package/.env.example +8 -2
- package/README.md +343 -108
- package/dist/client/endpoints/animation-catalog.d.ts +37 -0
- package/dist/client/endpoints/animation-catalog.d.ts.map +1 -0
- package/dist/client/endpoints/animation-catalog.js +55 -0
- package/dist/client/endpoints/animation-catalog.js.map +1 -0
- package/dist/client/endpoints/balance.d.ts +5 -0
- package/dist/client/endpoints/balance.d.ts.map +1 -1
- package/dist/client/endpoints/balance.js +5 -1
- package/dist/client/endpoints/balance.js.map +1 -1
- package/dist/client/endpoints/base.d.ts +41 -7
- package/dist/client/endpoints/base.d.ts.map +1 -1
- package/dist/client/endpoints/base.js +61 -40
- package/dist/client/endpoints/base.js.map +1 -1
- package/dist/client/endpoints/showcases.d.ts +31 -0
- package/dist/client/endpoints/showcases.d.ts.map +1 -0
- package/dist/client/endpoints/showcases.js +49 -0
- package/dist/client/endpoints/showcases.js.map +1 -0
- package/dist/client/errors.d.ts +1 -0
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +1 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +47 -38
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +89 -120
- package/dist/client/index.js.map +1 -1
- package/dist/client/resource-registry.d.ts +97 -0
- package/dist/client/resource-registry.d.ts.map +1 -0
- package/dist/client/resource-registry.js +157 -0
- package/dist/client/resource-registry.js.map +1 -0
- package/dist/client/transport.d.ts +99 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +320 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/types.d.ts +17 -6
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js +28 -6
- package/dist/client/types.js.map +1 -1
- package/dist/cmd/animation-catalog.d.ts +26 -0
- package/dist/cmd/animation-catalog.d.ts.map +1 -0
- package/dist/cmd/animation-catalog.js +80 -0
- package/dist/cmd/animation-catalog.js.map +1 -0
- package/dist/cmd/api.d.ts +3 -2
- package/dist/cmd/api.d.ts.map +1 -1
- package/dist/cmd/api.js +22 -8
- package/dist/cmd/api.js.map +1 -1
- package/dist/cmd/auth.d.ts.map +1 -1
- package/dist/cmd/auth.js +5 -0
- package/dist/cmd/auth.js.map +1 -1
- package/dist/cmd/balance.d.ts.map +1 -1
- package/dist/cmd/balance.js +10 -6
- package/dist/cmd/balance.js.map +1 -1
- package/dist/cmd/creative-lab.d.ts +26 -0
- package/dist/cmd/creative-lab.d.ts.map +1 -0
- package/dist/cmd/creative-lab.js +256 -0
- package/dist/cmd/creative-lab.js.map +1 -0
- package/dist/cmd/delete.d.ts.map +1 -1
- package/dist/cmd/delete.js +6 -7
- package/dist/cmd/delete.js.map +1 -1
- package/dist/cmd/doctor.d.ts +23 -0
- package/dist/cmd/doctor.d.ts.map +1 -0
- package/dist/cmd/doctor.js +61 -0
- package/dist/cmd/doctor.js.map +1 -0
- package/dist/cmd/download.d.ts +17 -0
- package/dist/cmd/download.d.ts.map +1 -0
- package/dist/cmd/download.js +436 -0
- package/dist/cmd/download.js.map +1 -0
- package/dist/cmd/inspect.d.ts +63 -0
- package/dist/cmd/inspect.d.ts.map +1 -0
- package/dist/cmd/inspect.js +179 -0
- package/dist/cmd/inspect.js.map +1 -0
- package/dist/cmd/make.d.ts +13 -3
- package/dist/cmd/make.d.ts.map +1 -1
- package/dist/cmd/make.js +240 -36
- package/dist/cmd/make.js.map +1 -1
- package/dist/cmd/mesh.d.ts +13 -0
- package/dist/cmd/mesh.d.ts.map +1 -0
- package/dist/cmd/mesh.js +67 -0
- package/dist/cmd/mesh.js.map +1 -0
- package/dist/cmd/project.d.ts +16 -0
- package/dist/cmd/project.d.ts.map +1 -0
- package/dist/cmd/project.js +136 -0
- package/dist/cmd/project.js.map +1 -0
- package/dist/cmd/resources.d.ts +5 -0
- package/dist/cmd/resources.d.ts.map +1 -1
- package/dist/cmd/resources.js +38 -10
- package/dist/cmd/resources.js.map +1 -1
- package/dist/cmd/showcases.d.ts +10 -0
- package/dist/cmd/showcases.d.ts.map +1 -0
- package/dist/cmd/showcases.js +63 -0
- package/dist/cmd/showcases.js.map +1 -0
- package/dist/cmd/slicer.d.ts +12 -0
- package/dist/cmd/slicer.d.ts.map +1 -0
- package/dist/cmd/slicer.js +46 -0
- package/dist/cmd/slicer.js.map +1 -0
- package/dist/cmd/uv-unwrap.d.ts +16 -0
- package/dist/cmd/uv-unwrap.d.ts.map +1 -0
- package/dist/cmd/uv-unwrap.js +52 -0
- package/dist/cmd/uv-unwrap.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/artifacts.d.ts +97 -0
- package/dist/internal/artifacts.d.ts.map +1 -0
- package/dist/internal/artifacts.js +280 -0
- package/dist/internal/artifacts.js.map +1 -0
- package/dist/internal/atomic-file.d.ts +39 -0
- package/dist/internal/atomic-file.d.ts.map +1 -0
- package/dist/internal/atomic-file.js +160 -0
- package/dist/internal/atomic-file.js.map +1 -0
- package/dist/internal/command-helpers.d.ts +46 -0
- package/dist/internal/command-helpers.d.ts.map +1 -0
- package/dist/internal/command-helpers.js +61 -0
- package/dist/internal/command-helpers.js.map +1 -0
- package/dist/internal/config.d.ts +48 -5
- package/dist/internal/config.d.ts.map +1 -1
- package/dist/internal/config.js +95 -6
- package/dist/internal/config.js.map +1 -1
- package/dist/internal/context.d.ts +25 -0
- package/dist/internal/context.d.ts.map +1 -0
- package/dist/internal/context.js +37 -0
- package/dist/internal/context.js.map +1 -0
- package/dist/internal/credentials.d.ts +11 -0
- package/dist/internal/credentials.d.ts.map +1 -1
- package/dist/internal/credentials.js +2 -0
- package/dist/internal/credentials.js.map +1 -1
- package/dist/internal/doctor.d.ts +94 -0
- package/dist/internal/doctor.d.ts.map +1 -0
- package/dist/internal/doctor.js +280 -0
- package/dist/internal/doctor.js.map +1 -0
- package/dist/internal/download.d.ts +147 -13
- package/dist/internal/download.d.ts.map +1 -1
- package/dist/internal/download.js +735 -142
- package/dist/internal/download.js.map +1 -1
- package/dist/internal/env-file.d.ts +29 -0
- package/dist/internal/env-file.d.ts.map +1 -0
- package/dist/internal/env-file.js +95 -0
- package/dist/internal/env-file.js.map +1 -0
- package/dist/internal/errors.d.ts +74 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +173 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/file-input.d.ts +52 -12
- package/dist/internal/file-input.d.ts.map +1 -1
- package/dist/internal/file-input.js +162 -33
- package/dist/internal/file-input.js.map +1 -1
- package/dist/internal/global-options.d.ts +6 -4
- package/dist/internal/global-options.d.ts.map +1 -1
- package/dist/internal/global-options.js +19 -4
- package/dist/internal/global-options.js.map +1 -1
- package/dist/internal/image-models.d.ts +9 -2
- package/dist/internal/image-models.d.ts.map +1 -1
- package/dist/internal/image-models.js +24 -12
- package/dist/internal/image-models.js.map +1 -1
- package/dist/internal/inspect.d.ts +67 -0
- package/dist/internal/inspect.d.ts.map +1 -0
- package/dist/internal/inspect.js +111 -0
- package/dist/internal/inspect.js.map +1 -0
- package/dist/internal/lock.d.ts +19 -0
- package/dist/internal/lock.d.ts.map +1 -0
- package/dist/internal/lock.js +66 -0
- package/dist/internal/lock.js.map +1 -0
- package/dist/internal/material-links.d.ts +115 -0
- package/dist/internal/material-links.d.ts.map +1 -0
- package/dist/internal/material-links.js +577 -0
- package/dist/internal/material-links.js.map +1 -0
- package/dist/internal/obj-transform.d.ts +115 -0
- package/dist/internal/obj-transform.d.ts.map +1 -0
- package/dist/internal/obj-transform.js +649 -0
- package/dist/internal/obj-transform.js.map +1 -0
- package/dist/internal/operation-store.d.ts +123 -0
- package/dist/internal/operation-store.d.ts.map +1 -0
- package/dist/internal/operation-store.js +229 -0
- package/dist/internal/operation-store.js.map +1 -0
- package/dist/internal/output.d.ts +20 -2
- package/dist/internal/output.d.ts.map +1 -1
- package/dist/internal/output.js +32 -4
- package/dist/internal/output.js.map +1 -1
- package/dist/internal/paths.d.ts +89 -0
- package/dist/internal/paths.d.ts.map +1 -0
- package/dist/internal/paths.js +168 -0
- package/dist/internal/paths.js.map +1 -0
- package/dist/internal/payload.d.ts +15 -0
- package/dist/internal/payload.d.ts.map +1 -1
- package/dist/internal/payload.js +50 -3
- package/dist/internal/payload.js.map +1 -1
- package/dist/internal/poll.d.ts +30 -4
- package/dist/internal/poll.d.ts.map +1 -1
- package/dist/internal/poll.js +99 -16
- package/dist/internal/poll.js.map +1 -1
- package/dist/internal/project-store.d.ts +197 -0
- package/dist/internal/project-store.d.ts.map +1 -0
- package/dist/internal/project-store.js +467 -0
- package/dist/internal/project-store.js.map +1 -0
- package/dist/internal/result.d.ts +50 -0
- package/dist/internal/result.d.ts.map +1 -0
- package/dist/internal/result.js +41 -0
- package/dist/internal/result.js.map +1 -0
- package/dist/internal/runtime.d.ts +35 -5
- package/dist/internal/runtime.d.ts.map +1 -1
- package/dist/internal/runtime.js +68 -18
- package/dist/internal/runtime.js.map +1 -1
- package/dist/internal/slicers.d.ts +117 -0
- package/dist/internal/slicers.d.ts.map +1 -0
- package/dist/internal/slicers.js +314 -0
- package/dist/internal/slicers.js.map +1 -0
- package/dist/internal/stream.d.ts +58 -0
- package/dist/internal/stream.d.ts.map +1 -0
- package/dist/internal/stream.js +280 -0
- package/dist/internal/stream.js.map +1 -0
- package/dist/internal/task-command.d.ts +128 -11
- package/dist/internal/task-command.d.ts.map +1 -1
- package/dist/internal/task-command.js +991 -111
- package/dist/internal/task-command.js.map +1 -1
- package/dist/internal/task-view.d.ts +56 -0
- package/dist/internal/task-view.d.ts.map +1 -0
- package/dist/internal/task-view.js +95 -0
- package/dist/internal/task-view.js.map +1 -0
- package/dist/internal/update-notifier.d.ts +5 -1
- package/dist/internal/update-notifier.d.ts.map +1 -1
- package/dist/internal/update-notifier.js +7 -3
- package/dist/internal/update-notifier.js.map +1 -1
- package/dist/root.d.ts +10 -0
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +75 -10
- package/dist/root.js.map +1 -1
- package/package.json +3 -2
- package/skills/meshy-cli/SKILL.md +140 -59
- package/dist/client/endpoints/analyze-printability.d.ts +0 -5
- package/dist/client/endpoints/analyze-printability.d.ts.map +0 -1
- package/dist/client/endpoints/analyze-printability.js +0 -7
- package/dist/client/endpoints/analyze-printability.js.map +0 -1
- package/dist/client/endpoints/animate.d.ts +0 -6
- package/dist/client/endpoints/animate.d.ts.map +0 -1
- package/dist/client/endpoints/animate.js +0 -8
- package/dist/client/endpoints/animate.js.map +0 -1
- package/dist/client/endpoints/convert.d.ts +0 -5
- package/dist/client/endpoints/convert.d.ts.map +0 -1
- package/dist/client/endpoints/convert.js +0 -7
- package/dist/client/endpoints/convert.js.map +0 -1
- package/dist/client/endpoints/image-to-3d.d.ts +0 -5
- package/dist/client/endpoints/image-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/image-to-3d.js +0 -7
- package/dist/client/endpoints/image-to-3d.js.map +0 -1
- package/dist/client/endpoints/image-to-image.d.ts +0 -5
- package/dist/client/endpoints/image-to-image.d.ts.map +0 -1
- package/dist/client/endpoints/image-to-image.js +0 -7
- package/dist/client/endpoints/image-to-image.js.map +0 -1
- package/dist/client/endpoints/multi-color-print.d.ts +0 -5
- package/dist/client/endpoints/multi-color-print.d.ts.map +0 -1
- package/dist/client/endpoints/multi-color-print.js +0 -7
- package/dist/client/endpoints/multi-color-print.js.map +0 -1
- package/dist/client/endpoints/multi-image-to-3d.d.ts +0 -5
- package/dist/client/endpoints/multi-image-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/multi-image-to-3d.js +0 -7
- package/dist/client/endpoints/multi-image-to-3d.js.map +0 -1
- package/dist/client/endpoints/remesh.d.ts +0 -5
- package/dist/client/endpoints/remesh.d.ts.map +0 -1
- package/dist/client/endpoints/remesh.js +0 -7
- package/dist/client/endpoints/remesh.js.map +0 -1
- package/dist/client/endpoints/repair-printability.d.ts +0 -5
- package/dist/client/endpoints/repair-printability.d.ts.map +0 -1
- package/dist/client/endpoints/repair-printability.js +0 -7
- package/dist/client/endpoints/repair-printability.js.map +0 -1
- package/dist/client/endpoints/resize.d.ts +0 -5
- package/dist/client/endpoints/resize.d.ts.map +0 -1
- package/dist/client/endpoints/resize.js +0 -7
- package/dist/client/endpoints/resize.js.map +0 -1
- package/dist/client/endpoints/retexture.d.ts +0 -5
- package/dist/client/endpoints/retexture.d.ts.map +0 -1
- package/dist/client/endpoints/retexture.js +0 -7
- package/dist/client/endpoints/retexture.js.map +0 -1
- package/dist/client/endpoints/rigging.d.ts +0 -6
- package/dist/client/endpoints/rigging.d.ts.map +0 -1
- package/dist/client/endpoints/rigging.js +0 -8
- package/dist/client/endpoints/rigging.js.map +0 -1
- package/dist/client/endpoints/text-to-3d.d.ts +0 -6
- package/dist/client/endpoints/text-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-3d.js +0 -8
- package/dist/client/endpoints/text-to-3d.js.map +0 -1
- package/dist/client/endpoints/text-to-image.d.ts +0 -5
- package/dist/client/endpoints/text-to-image.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-image.js +0 -7
- package/dist/client/endpoints/text-to-image.js.map +0 -1
- package/dist/client/endpoints/text-to-motion.d.ts +0 -6
- package/dist/client/endpoints/text-to-motion.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-motion.js +0 -8
- package/dist/client/endpoints/text-to-motion.js.map +0 -1
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* creative-lab — https://docs.meshy.ai/en/api/creative-lab-{figure,lamp,keychain,fridge-magnet}
|
|
3
|
+
*
|
|
4
|
+
* Four products × two stages, each its own registered resource with the same
|
|
5
|
+
* create/get/list/wait/stream/delete verbs. Nothing here builds a path from a
|
|
6
|
+
* user string: product and stage are resolved through the registry.
|
|
7
|
+
*
|
|
8
|
+
* Stage meanings differ by product and are not generalised:
|
|
9
|
+
* figure / keychain / fridge-magnet prototype → a styled concept image
|
|
10
|
+
* lamp prototype → concept image + lampshade GLB
|
|
11
|
+
* figure build → GLB, OBJ, MTL, base-color texture
|
|
12
|
+
* lamp build → lamp_stl (+ base_stl) or bundle_zip
|
|
13
|
+
* keychain / fridge-magnet build → glb, obj (a ZIP bundle) or bundle_zip
|
|
14
|
+
*
|
|
15
|
+
* Build options are validated per product with the ranges the API documents
|
|
16
|
+
* so a bad value fails before a billable POST; unknown option keys are passed
|
|
17
|
+
* through (the server is the final validator). `options` and `output` are
|
|
18
|
+
* declared as nested-merge keys, so `--data '{"options":{…}}'`, `--options`
|
|
19
|
+
* and the typed flags compose field by field (typed flags win) instead of the
|
|
20
|
+
* later layer deleting the earlier one's settings.
|
|
21
|
+
*/
|
|
22
|
+
import { Command, Option } from "commander";
|
|
23
|
+
import { z } from "zod";
|
|
24
|
+
import { CREATIVE_LAB_PRODUCTS } from "../client/resource-registry.js";
|
|
25
|
+
import { UsageError } from "../internal/errors.js";
|
|
26
|
+
import { parseJsonFlag } from "../internal/payload.js";
|
|
27
|
+
import { buildResourceCommand } from "../internal/task-command.js";
|
|
28
|
+
const NAME_MAX = 100;
|
|
29
|
+
const lampOptionsSchema = z
|
|
30
|
+
.object({
|
|
31
|
+
diameter_mm: z.number().min(50).max(400).optional(),
|
|
32
|
+
thickness_mm: z.number().gt(0).max(10).optional(),
|
|
33
|
+
cut_amount_percent: z.number().min(1).max(100).optional(),
|
|
34
|
+
light_source_preset: z.enum(["bambu_mh001_60mm", "none"]).optional(),
|
|
35
|
+
fixture_offset_x_mm: z.number().min(-80).max(80).optional(),
|
|
36
|
+
fixture_offset_z_mm: z.number().min(-80).max(80).optional(),
|
|
37
|
+
rotate_x_deg: z.number().min(-360).max(360).optional(),
|
|
38
|
+
rotate_y_deg: z.number().min(-360).max(360).optional(),
|
|
39
|
+
rotate_z_deg: z.number().min(-360).max(360).optional(),
|
|
40
|
+
include_result_json: z.boolean().optional(),
|
|
41
|
+
})
|
|
42
|
+
.passthrough();
|
|
43
|
+
const reliefOptionsSchema = z
|
|
44
|
+
.object({
|
|
45
|
+
badge_shape: z.enum(["circle", "rounded-rect", "hexagon", "shield", "star"]).optional(),
|
|
46
|
+
size_mm: z.number().gt(0).max(400).optional(),
|
|
47
|
+
relief_height_mm: z.number().min(0).max(20).optional(),
|
|
48
|
+
relief_offset_mm: z.number().min(0).max(20).optional(),
|
|
49
|
+
base_thickness_mm: z.number().min(0).max(20).optional(),
|
|
50
|
+
has_closed_back: z.boolean().optional(),
|
|
51
|
+
relief_curve: z.enum(["linear", "gamma", "s-curve"]).optional(),
|
|
52
|
+
curve_param: z.number().gt(0).max(10).optional(),
|
|
53
|
+
invert_depth: z.boolean().optional(),
|
|
54
|
+
smoothing: z.number().min(0).max(10).optional(),
|
|
55
|
+
relief_scale: z.number().gt(0).max(10).optional(),
|
|
56
|
+
depth_threshold: z.number().min(0).max(1).optional(),
|
|
57
|
+
remove_background: z.boolean().optional(),
|
|
58
|
+
export_resolution: z.number().int().min(64).max(2048).optional(),
|
|
59
|
+
})
|
|
60
|
+
.passthrough();
|
|
61
|
+
const PRODUCTS = {
|
|
62
|
+
figure: {
|
|
63
|
+
product: "figure",
|
|
64
|
+
label: "figure",
|
|
65
|
+
prototypeMeaning: "styled concept image of the figure",
|
|
66
|
+
buildMeaning: "textured figure: GLB, OBJ + MTL and a base-color texture",
|
|
67
|
+
hasBuildOptions: false,
|
|
68
|
+
},
|
|
69
|
+
lamp: {
|
|
70
|
+
product: "lamp",
|
|
71
|
+
label: "lamp",
|
|
72
|
+
prototypeMeaning: "concept image plus a hollow matte-white lampshade GLB",
|
|
73
|
+
buildMeaning: "printable lamp parts: lamp_stl (+ base_stl with a light-source preset) or bundle_zip",
|
|
74
|
+
prototypeExtra: (cmd) => cmd.addOption(new Option("--image-subject <kind>", "what the photo shows (default: character)").choices(["character", "landscape"])),
|
|
75
|
+
prototypeExtraPayload: (opts) => ({ image_subject: opts.imageSubject }),
|
|
76
|
+
validatePrototype: (payload) => {
|
|
77
|
+
if ("text" in payload) {
|
|
78
|
+
throw new UsageError("lamp prototype: the `text` input is deprecated and not accepted by this CLI; provide --image-url (a photo) instead");
|
|
79
|
+
}
|
|
80
|
+
if (payload.image_subject !== undefined && payload.image_subject !== "character" && payload.image_subject !== "landscape") {
|
|
81
|
+
throw new UsageError("image_subject must be 'character' or 'landscape'");
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
buildFormats: ["stl", "zip"],
|
|
85
|
+
optionsSchema: lampOptionsSchema,
|
|
86
|
+
hasBuildOptions: true,
|
|
87
|
+
validateBuild: (payload) => {
|
|
88
|
+
const options = (payload.options ?? {});
|
|
89
|
+
const output = (payload.output ?? {});
|
|
90
|
+
if (options.include_result_json === true && output.format !== "zip") {
|
|
91
|
+
throw new UsageError("lamp build: include_result_json=true requires --model-format zip (the STL output has no place for result.json)");
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
keychain: {
|
|
96
|
+
product: "keychain",
|
|
97
|
+
label: "keychain",
|
|
98
|
+
prototypeMeaning: "styled concept image of the keychain",
|
|
99
|
+
buildMeaning: "relief keychain: glb, obj (a ZIP bundle with model.obj/model.mtl/texture.png) or bundle_zip",
|
|
100
|
+
buildFormats: ["glb", "obj", "zip"],
|
|
101
|
+
optionsSchema: reliefOptionsSchema,
|
|
102
|
+
hasBuildOptions: true,
|
|
103
|
+
},
|
|
104
|
+
"fridge-magnet": {
|
|
105
|
+
product: "fridge-magnet",
|
|
106
|
+
label: "fridge magnet",
|
|
107
|
+
prototypeMeaning: "styled concept image of the magnet",
|
|
108
|
+
buildMeaning: "relief fridge magnet: glb, obj (a ZIP bundle with model.obj/model.mtl/texture.png) or bundle_zip",
|
|
109
|
+
buildFormats: ["glb", "obj", "zip"],
|
|
110
|
+
optionsSchema: reliefOptionsSchema,
|
|
111
|
+
hasBuildOptions: true,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
function checkName(payload) {
|
|
115
|
+
if (payload.name === undefined || payload.name === null)
|
|
116
|
+
return;
|
|
117
|
+
if (typeof payload.name !== "string")
|
|
118
|
+
throw new UsageError("name must be a string");
|
|
119
|
+
if (payload.name.length > NAME_MAX)
|
|
120
|
+
throw new UsageError(`name must be at most ${NAME_MAX} characters (got ${payload.name.length})`);
|
|
121
|
+
}
|
|
122
|
+
function prototypeSpec(p) {
|
|
123
|
+
return {
|
|
124
|
+
name: `creative-lab.${p.product}.prototype`,
|
|
125
|
+
commandName: "prototype",
|
|
126
|
+
defaultSchema: "v1",
|
|
127
|
+
description: `Creative Lab ${p.label} — prototype stage: photo → ${p.prototypeMeaning}`,
|
|
128
|
+
create: {
|
|
129
|
+
description: `Create a ${p.label} prototype from a photo`,
|
|
130
|
+
configure(cmd) {
|
|
131
|
+
const base = cmd
|
|
132
|
+
.option("--image-url <src>", "photo as http(s) URL, data: URI or local jpg/jpeg/png/webp path (required)")
|
|
133
|
+
.option("--name <text>", `optional name, at most ${NAME_MAX} characters`)
|
|
134
|
+
.option("--remove-background", "return the concept image as a transparent RGBA PNG (default: false)");
|
|
135
|
+
return p.prototypeExtra ? p.prototypeExtra(base) : base;
|
|
136
|
+
},
|
|
137
|
+
toPayload(opts) {
|
|
138
|
+
return {
|
|
139
|
+
image_url: opts.imageUrl,
|
|
140
|
+
name: opts.name,
|
|
141
|
+
remove_background: opts.removeBackground === true ? true : undefined,
|
|
142
|
+
...(p.prototypeExtraPayload ? p.prototypeExtraPayload(opts) : {}),
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
validatePayload(payload) {
|
|
146
|
+
if (payload.image_url === undefined || payload.image_url === null || payload.image_url === "") {
|
|
147
|
+
throw new UsageError("provide --image-url (a photo URL, data: URI or local file)");
|
|
148
|
+
}
|
|
149
|
+
checkName(payload);
|
|
150
|
+
if (payload.remove_background !== undefined && typeof payload.remove_background !== "boolean") {
|
|
151
|
+
throw new UsageError("remove_background must be a boolean");
|
|
152
|
+
}
|
|
153
|
+
p.validatePrototype?.(payload);
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function buildSpec(p) {
|
|
159
|
+
return {
|
|
160
|
+
name: `creative-lab.${p.product}.build`,
|
|
161
|
+
commandName: "build",
|
|
162
|
+
defaultSchema: "v1",
|
|
163
|
+
description: `Creative Lab ${p.label} — build stage: SUCCEEDED prototype → ${p.buildMeaning}`,
|
|
164
|
+
create: {
|
|
165
|
+
description: `Create a ${p.label} build from a prototype task created through this API`,
|
|
166
|
+
nestedObjectKeys: ["options", "output"],
|
|
167
|
+
configure(cmd) {
|
|
168
|
+
cmd
|
|
169
|
+
.option("--input-task-id <id>", "SUCCEEDED prototype task of the same product created with the same API key (required)")
|
|
170
|
+
.option("--name <text>", `optional name, at most ${NAME_MAX} characters`);
|
|
171
|
+
if (p.hasBuildOptions) {
|
|
172
|
+
cmd.option("--options <json>", "product-specific build options as JSON (or @file.json); merged into payload.options, typed flags win");
|
|
173
|
+
if (p.buildFormats) {
|
|
174
|
+
cmd.addOption(new Option("--model-format <fmt>", `output.format (default: ${p.buildFormats[0]})`).choices([...p.buildFormats]));
|
|
175
|
+
}
|
|
176
|
+
if (p.product === "lamp") {
|
|
177
|
+
cmd.option("--include-result-json", "include result.json in the bundle (requires --model-format zip)");
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return cmd;
|
|
181
|
+
},
|
|
182
|
+
toPayload(opts) {
|
|
183
|
+
const payload = {
|
|
184
|
+
input_task_id: opts.inputTaskId,
|
|
185
|
+
name: opts.name,
|
|
186
|
+
};
|
|
187
|
+
if (p.hasBuildOptions) {
|
|
188
|
+
const optionsFlag = parseJsonFlag(opts.options, "--options");
|
|
189
|
+
const options = { ...optionsFlag };
|
|
190
|
+
if (p.product === "lamp" && opts.includeResultJson === true)
|
|
191
|
+
options.include_result_json = true;
|
|
192
|
+
if (Object.keys(options).length > 0)
|
|
193
|
+
payload.options = options;
|
|
194
|
+
if (opts.modelFormat)
|
|
195
|
+
payload.output = { format: opts.modelFormat };
|
|
196
|
+
}
|
|
197
|
+
return payload;
|
|
198
|
+
},
|
|
199
|
+
validatePayload(payload) {
|
|
200
|
+
if (payload.input_task_id === undefined || payload.input_task_id === null || payload.input_task_id === "") {
|
|
201
|
+
throw new UsageError("provide --input-task-id (the SUCCEEDED prototype task)");
|
|
202
|
+
}
|
|
203
|
+
if (typeof payload.input_task_id !== "string")
|
|
204
|
+
throw new UsageError("input_task_id must be a string");
|
|
205
|
+
checkName(payload);
|
|
206
|
+
if (!p.hasBuildOptions) {
|
|
207
|
+
if (payload.options !== undefined || payload.output !== undefined) {
|
|
208
|
+
throw new UsageError(`${p.label} build has no options/output parameters; remove them from --data`);
|
|
209
|
+
}
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (payload.options !== undefined) {
|
|
213
|
+
if (!payload.options || typeof payload.options !== "object" || Array.isArray(payload.options)) {
|
|
214
|
+
throw new UsageError("options must be a JSON object");
|
|
215
|
+
}
|
|
216
|
+
const parsed = p.optionsSchema.safeParse(payload.options);
|
|
217
|
+
if (!parsed.success) {
|
|
218
|
+
const issue = parsed.error.issues[0];
|
|
219
|
+
throw new UsageError(`${p.label} build options invalid: ${issue ? `${issue.path.join(".")}: ${issue.message}` : parsed.error.message}`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
if (payload.output !== undefined) {
|
|
223
|
+
const out = payload.output;
|
|
224
|
+
if (!out || typeof out !== "object" || Array.isArray(out))
|
|
225
|
+
throw new UsageError("output must be a JSON object");
|
|
226
|
+
if (out.format !== undefined && !(p.buildFormats ?? []).includes(String(out.format))) {
|
|
227
|
+
throw new UsageError(`${p.label} build output.format must be one of ${(p.buildFormats ?? []).join(" | ")}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
p.validateBuild?.(payload);
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function productCommand(product) {
|
|
236
|
+
const p = PRODUCTS[product];
|
|
237
|
+
const cmd = new Command(product).description(`Creative Lab ${p.label}: prototype (${p.prototypeMeaning}) then build (${p.buildMeaning})`);
|
|
238
|
+
cmd.addCommand(buildResourceCommand(prototypeSpec(p)));
|
|
239
|
+
cmd.addCommand(buildResourceCommand(buildSpec(p)));
|
|
240
|
+
return cmd;
|
|
241
|
+
}
|
|
242
|
+
export const creativeLabCommand = new Command("creative-lab")
|
|
243
|
+
.description("Creative Lab physical products from a photo: figure | lamp | keychain | fridge-magnet, each with prototype and build stages")
|
|
244
|
+
.addHelpText("after", `
|
|
245
|
+
Stages differ per product — prototype is a concept image (lamp also yields a lampshade GLB);
|
|
246
|
+
build consumes a SUCCEEDED prototype created through this API with the same key. Web-app
|
|
247
|
+
prototypes are rejected by the server (404). Build never re-runs a prototype.
|
|
248
|
+
|
|
249
|
+
meshy creative-lab figure prototype create --image-url ./photo.png --name demo --async
|
|
250
|
+
meshy creative-lab figure build create --input-task-id <prototype-id> --async
|
|
251
|
+
meshy creative-lab lamp build create --input-task-id <id> --model-format zip --options '{"diameter_mm":180}'
|
|
252
|
+
`);
|
|
253
|
+
for (const product of CREATIVE_LAB_PRODUCTS)
|
|
254
|
+
creativeLabCommand.addCommand(productCommand(product));
|
|
255
|
+
export const CREATIVE_LAB_STAGE_NAMES = ["prototype", "build"];
|
|
256
|
+
//# sourceMappingURL=creative-lab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creative-lab.js","sourceRoot":"","sources":["../../src/cmd/creative-lab.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd/delete.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/cmd/delete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../src/cmd/delete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,aAAa,SActB,CAAC"}
|
package/dist/cmd/delete.js
CHANGED
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
* lookup (v2 /text-to-3d/<id>) so the caller doesn't need to know the type.
|
|
4
4
|
*/
|
|
5
5
|
import { Command } from "commander";
|
|
6
|
-
import {
|
|
7
|
-
import { buildRuntime
|
|
6
|
+
import { emitResult, openCommand, rejectOutputFlagForV1 } from "../internal/command-helpers.js";
|
|
7
|
+
import { buildRuntime } from "../internal/runtime.js";
|
|
8
8
|
export const deleteCommand = new Command("delete")
|
|
9
9
|
.description("Delete any task by id")
|
|
10
10
|
.argument("<task-id>", "Meshy task id")
|
|
11
11
|
.action(async (taskId, _opts, thisCmd) => {
|
|
12
|
-
const
|
|
12
|
+
const opened = openCommand(thisCmd, "delete", "legacy");
|
|
13
|
+
rejectOutputFlagForV1(opened, undefined);
|
|
14
|
+
const runtime = await buildRuntime(opened.flags);
|
|
13
15
|
await runtime.client.textTo3d.delete(taskId);
|
|
14
|
-
|
|
15
|
-
format: runtime.flags.format,
|
|
16
|
-
file: runtime.flags.output,
|
|
17
|
-
});
|
|
16
|
+
await emitResult(opened, { task_id: taskId, deleted: true }, { task_id: taskId, resource: null, endpoint: "/openapi/v2/text-to-3d", deleted: true }, { legacyFile: opened.flags.output });
|
|
18
17
|
});
|
|
19
18
|
//# sourceMappingURL=delete.js.map
|
package/dist/cmd/delete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/cmd/delete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/cmd/delete.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,uBAAuB,CAAC;KACpC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,KAA8B,EAAE,OAAgB,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,qBAAqB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,UAAU,CACd,MAAM,EACN,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAClC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,IAAI,EAAE,EACtF,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CACpC,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* doctor — environment diagnosis with a strictly local default.
|
|
3
|
+
*
|
|
4
|
+
* Exit policy: the default run always exits 0, whatever it finds — a warning
|
|
5
|
+
* about a missing credential *is* the diagnosis, not a failure of the command.
|
|
6
|
+
* `--check-api` is different: the caller asked whether the account works, so
|
|
7
|
+
* a credential that cannot be resolved or is rejected exits 3 and a transport
|
|
8
|
+
* failure exits 7, each with the full report kept in `result` (D-024).
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from "commander";
|
|
11
|
+
import { type DoctorApiFailure } from "../internal/doctor.js";
|
|
12
|
+
import { CliError } from "../internal/errors.js";
|
|
13
|
+
/**
|
|
14
|
+
* Map a --check-api failure onto the exit contract. Anything that stops a
|
|
15
|
+
* credential from being resolved (none found, unusable key file, corrupt
|
|
16
|
+
* profile store) is `auth`; a rejected credential stays `auth`; a transport
|
|
17
|
+
* failure stays `network`; other API answers keep their own classification.
|
|
18
|
+
*/
|
|
19
|
+
export declare function apiCheckFailure(failure: DoctorApiFailure, result: Record<string, unknown>): CliError;
|
|
20
|
+
/** Build a fresh `doctor` command (tests parse a new tree per run). */
|
|
21
|
+
export declare function buildDoctorCommand(): Command;
|
|
22
|
+
export declare const doctorCommand: Command;
|
|
23
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cmd/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAiB,QAAQ,EAAqB,MAAM,uBAAuB,CAAC;AASnF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAapG;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,IAAI,OAAO,CAyB5C;AAED,eAAO,MAAM,aAAa,SAAuB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* doctor — environment diagnosis with a strictly local default.
|
|
3
|
+
*
|
|
4
|
+
* Exit policy: the default run always exits 0, whatever it finds — a warning
|
|
5
|
+
* about a missing credential *is* the diagnosis, not a failure of the command.
|
|
6
|
+
* `--check-api` is different: the caller asked whether the account works, so
|
|
7
|
+
* a credential that cannot be resolved or is rejected exits 3 and a transport
|
|
8
|
+
* failure exits 7, each with the full report kept in `result` (D-024).
|
|
9
|
+
*/
|
|
10
|
+
import { Command } from "commander";
|
|
11
|
+
import { emitResult, openCommand, rejectOutputFlagForV1, saveRawJson } from "../internal/command-helpers.js";
|
|
12
|
+
import { runDoctorDetailed } from "../internal/doctor.js";
|
|
13
|
+
import { classifyError, CliError } from "../internal/errors.js";
|
|
14
|
+
import { buildLocalRuntime } from "../internal/runtime.js";
|
|
15
|
+
/**
|
|
16
|
+
* Map a --check-api failure onto the exit contract. Anything that stops a
|
|
17
|
+
* credential from being resolved (none found, unusable key file, corrupt
|
|
18
|
+
* profile store) is `auth`; a rejected credential stays `auth`; a transport
|
|
19
|
+
* failure stays `network`; other API answers keep their own classification.
|
|
20
|
+
*/
|
|
21
|
+
export function apiCheckFailure(failure, result) {
|
|
22
|
+
const classified = classifyError(failure.error);
|
|
23
|
+
const code = failure.stage === "credentials" ? "auth" : classified.code;
|
|
24
|
+
return new CliError({
|
|
25
|
+
code,
|
|
26
|
+
message: `--check-api failed: ${classified.message}`,
|
|
27
|
+
httpStatus: classified.httpStatus,
|
|
28
|
+
retryable: classified.retryable,
|
|
29
|
+
recovery: classified.recovery,
|
|
30
|
+
hint: classified.hint,
|
|
31
|
+
result,
|
|
32
|
+
cause: failure.error,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/** Build a fresh `doctor` command (tests parse a new tree per run). */
|
|
36
|
+
export function buildDoctorCommand() {
|
|
37
|
+
return new Command("doctor")
|
|
38
|
+
.description("Diagnose the local environment: versions, credential sources (presence only, values never read), base URLs, workspace. " +
|
|
39
|
+
"No network by default; --check-api makes one free GET /balance, --check-slicers runs slicer detection")
|
|
40
|
+
.option("--check-api", "resolve the credential like an API command and call GET /balance once (free); exit 3 if no credential works, 7 if unreachable")
|
|
41
|
+
.option("--check-slicers", "detect installed slicers (local only)")
|
|
42
|
+
.option("--save-json <file>", "save the report to this file (never overwrites)")
|
|
43
|
+
.action(async (opts, thisCmd) => {
|
|
44
|
+
const opened = openCommand(thisCmd, "doctor", "v1");
|
|
45
|
+
rejectOutputFlagForV1(opened, opts.saveJson);
|
|
46
|
+
buildLocalRuntime(opened.flags);
|
|
47
|
+
const { report, apiFailure } = await runDoctorDetailed({
|
|
48
|
+
flags: opened.flags,
|
|
49
|
+
checkApi: Boolean(opts.checkApi),
|
|
50
|
+
checkSlicers: Boolean(opts.checkSlicers),
|
|
51
|
+
});
|
|
52
|
+
const saved = opts.saveJson ? saveRawJson(opts.saveJson, report, { workspace: opened.flags.workspaceRoot }) : null;
|
|
53
|
+
const result = { ...report, saved_json: saved };
|
|
54
|
+
if (opts.checkApi && report.api_ready !== true) {
|
|
55
|
+
throw apiCheckFailure(apiFailure ?? { stage: "balance", error: new Error("--check-api did not complete") }, result);
|
|
56
|
+
}
|
|
57
|
+
await emitResult(opened, result, result);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
export const doctorCommand = buildDoctorCommand();
|
|
61
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cmd/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAyB,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ3D;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB,EAAE,MAA+B;IACxF,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,IAAI,GAAiB,OAAO,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;IACtF,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI;QACJ,OAAO,EAAE,uBAAuB,UAAU,CAAC,OAAO,EAAE;QACpD,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC;SACzB,WAAW,CACV,yHAAyH;QACvH,uGAAuG,CAC1G;SACA,MAAM,CAAC,aAAa,EAAE,+HAA+H,CAAC;SACtJ,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;SAClE,MAAM,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,OAAgB,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QACpD,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,iBAAiB,CAAC;YACrD,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAChC,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;SACzC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnH,MAAM,MAAM,GAA4B,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YAC/C,MAAM,eAAe,CAAC,UAAU,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,8BAA8B,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* download — selective asset download for a task.
|
|
3
|
+
*
|
|
4
|
+
* Sources (exactly one): --task-json <file> (API task, legacy meta.json or a
|
|
5
|
+
* v1 envelope/result), --url <asset-url>, or --resource <id> --task-id <id>
|
|
6
|
+
* (one GET, then the assets). Selection (at most one): --asset <key>…,
|
|
7
|
+
* --model-format <fmt>, --kind <kind>, --all; with several assets and no
|
|
8
|
+
* selector the command lists the candidates and exits 2 instead of guessing.
|
|
9
|
+
*
|
|
10
|
+
* Output: --output <file> for exactly one asset, --output-dir <dir> otherwise.
|
|
11
|
+
* Files are published exclusively; --overwrite replaces atomically. Nothing
|
|
12
|
+
* is extracted, nothing is re-generated: an expired URL from a task JSON is
|
|
13
|
+
* reported as such, an API-sourced task is refreshed once.
|
|
14
|
+
*/
|
|
15
|
+
import { Command } from "commander";
|
|
16
|
+
export declare const downloadCommand: Command;
|
|
17
|
+
//# sourceMappingURL=download.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/cmd/download.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA+E5C,eAAO,MAAM,eAAe,SAmOxB,CAAC"}
|