@meshy-ai/cli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +14 -0
- package/LICENSE +21 -0
- package/README.md +376 -0
- package/dist/client/endpoints/analyze-printability.d.ts +5 -0
- package/dist/client/endpoints/analyze-printability.d.ts.map +1 -0
- package/dist/client/endpoints/analyze-printability.js +7 -0
- package/dist/client/endpoints/analyze-printability.js.map +1 -0
- package/dist/client/endpoints/animate.d.ts +6 -0
- package/dist/client/endpoints/animate.d.ts.map +1 -0
- package/dist/client/endpoints/animate.js +8 -0
- package/dist/client/endpoints/animate.js.map +1 -0
- package/dist/client/endpoints/balance.d.ts +9 -0
- package/dist/client/endpoints/balance.d.ts.map +1 -0
- package/dist/client/endpoints/balance.js +27 -0
- package/dist/client/endpoints/balance.js.map +1 -0
- package/dist/client/endpoints/base.d.ts +24 -0
- package/dist/client/endpoints/base.d.ts.map +1 -0
- package/dist/client/endpoints/base.js +87 -0
- package/dist/client/endpoints/base.js.map +1 -0
- package/dist/client/endpoints/convert.d.ts +5 -0
- package/dist/client/endpoints/convert.d.ts.map +1 -0
- package/dist/client/endpoints/convert.js +7 -0
- package/dist/client/endpoints/convert.js.map +1 -0
- package/dist/client/endpoints/image-to-3d.d.ts +5 -0
- package/dist/client/endpoints/image-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/image-to-3d.js +7 -0
- package/dist/client/endpoints/image-to-3d.js.map +1 -0
- package/dist/client/endpoints/image-to-image.d.ts +5 -0
- package/dist/client/endpoints/image-to-image.d.ts.map +1 -0
- package/dist/client/endpoints/image-to-image.js +7 -0
- package/dist/client/endpoints/image-to-image.js.map +1 -0
- package/dist/client/endpoints/multi-color-print.d.ts +5 -0
- package/dist/client/endpoints/multi-color-print.d.ts.map +1 -0
- package/dist/client/endpoints/multi-color-print.js +7 -0
- package/dist/client/endpoints/multi-color-print.js.map +1 -0
- package/dist/client/endpoints/multi-image-to-3d.d.ts +5 -0
- package/dist/client/endpoints/multi-image-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/multi-image-to-3d.js +7 -0
- package/dist/client/endpoints/multi-image-to-3d.js.map +1 -0
- package/dist/client/endpoints/remesh.d.ts +5 -0
- package/dist/client/endpoints/remesh.d.ts.map +1 -0
- package/dist/client/endpoints/remesh.js +7 -0
- package/dist/client/endpoints/remesh.js.map +1 -0
- package/dist/client/endpoints/repair-printability.d.ts +5 -0
- package/dist/client/endpoints/repair-printability.d.ts.map +1 -0
- package/dist/client/endpoints/repair-printability.js +7 -0
- package/dist/client/endpoints/repair-printability.js.map +1 -0
- package/dist/client/endpoints/resize.d.ts +5 -0
- package/dist/client/endpoints/resize.d.ts.map +1 -0
- package/dist/client/endpoints/resize.js +7 -0
- package/dist/client/endpoints/resize.js.map +1 -0
- package/dist/client/endpoints/retexture.d.ts +5 -0
- package/dist/client/endpoints/retexture.d.ts.map +1 -0
- package/dist/client/endpoints/retexture.js +7 -0
- package/dist/client/endpoints/retexture.js.map +1 -0
- package/dist/client/endpoints/rigging.d.ts +6 -0
- package/dist/client/endpoints/rigging.d.ts.map +1 -0
- package/dist/client/endpoints/rigging.js +8 -0
- package/dist/client/endpoints/rigging.js.map +1 -0
- package/dist/client/endpoints/text-to-3d.d.ts +6 -0
- package/dist/client/endpoints/text-to-3d.d.ts.map +1 -0
- package/dist/client/endpoints/text-to-3d.js +8 -0
- package/dist/client/endpoints/text-to-3d.js.map +1 -0
- package/dist/client/endpoints/text-to-image.d.ts +5 -0
- package/dist/client/endpoints/text-to-image.d.ts.map +1 -0
- package/dist/client/endpoints/text-to-image.js +7 -0
- package/dist/client/endpoints/text-to-image.js.map +1 -0
- package/dist/client/errors.d.ts +23 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +82 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +48 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +147 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +298 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +97 -0
- package/dist/client/types.js.map +1 -0
- package/dist/cmd/analyze-printability.d.ts +8 -0
- package/dist/cmd/analyze-printability.d.ts.map +1 -0
- package/dist/cmd/analyze-printability.js +34 -0
- package/dist/cmd/analyze-printability.js.map +1 -0
- package/dist/cmd/animate.d.ts +9 -0
- package/dist/cmd/animate.d.ts.map +1 -0
- package/dist/cmd/animate.js +51 -0
- package/dist/cmd/animate.js.map +1 -0
- package/dist/cmd/api.d.ts +9 -0
- package/dist/cmd/api.d.ts.map +1 -0
- package/dist/cmd/api.js +50 -0
- package/dist/cmd/api.js.map +1 -0
- package/dist/cmd/auth.d.ts +19 -0
- package/dist/cmd/auth.d.ts.map +1 -0
- package/dist/cmd/auth.js +583 -0
- package/dist/cmd/auth.js.map +1 -0
- package/dist/cmd/balance.d.ts +6 -0
- package/dist/cmd/balance.d.ts.map +1 -0
- package/dist/cmd/balance.js +14 -0
- package/dist/cmd/balance.js.map +1 -0
- package/dist/cmd/convert.d.ts +8 -0
- package/dist/cmd/convert.d.ts.map +1 -0
- package/dist/cmd/convert.js +40 -0
- package/dist/cmd/convert.js.map +1 -0
- package/dist/cmd/delete.d.ts +7 -0
- package/dist/cmd/delete.d.ts.map +1 -0
- package/dist/cmd/delete.js +19 -0
- package/dist/cmd/delete.js.map +1 -0
- package/dist/cmd/image-to-3d.d.ts +12 -0
- package/dist/cmd/image-to-3d.d.ts.map +1 -0
- package/dist/cmd/image-to-3d.js +97 -0
- package/dist/cmd/image-to-3d.js.map +1 -0
- package/dist/cmd/image-to-image.d.ts +5 -0
- package/dist/cmd/image-to-image.d.ts.map +1 -0
- package/dist/cmd/image-to-image.js +56 -0
- package/dist/cmd/image-to-image.js.map +1 -0
- package/dist/cmd/make.d.ts +31 -0
- package/dist/cmd/make.d.ts.map +1 -0
- package/dist/cmd/make.js +195 -0
- package/dist/cmd/make.js.map +1 -0
- package/dist/cmd/multi-color-print.d.ts +6 -0
- package/dist/cmd/multi-color-print.d.ts.map +1 -0
- package/dist/cmd/multi-color-print.js +44 -0
- package/dist/cmd/multi-color-print.js.map +1 -0
- package/dist/cmd/multi-image-to-3d.d.ts +5 -0
- package/dist/cmd/multi-image-to-3d.d.ts.map +1 -0
- package/dist/cmd/multi-image-to-3d.js +72 -0
- package/dist/cmd/multi-image-to-3d.js.map +1 -0
- package/dist/cmd/remesh.d.ts +8 -0
- package/dist/cmd/remesh.d.ts.map +1 -0
- package/dist/cmd/remesh.js +49 -0
- package/dist/cmd/remesh.js.map +1 -0
- package/dist/cmd/repair-printability.d.ts +7 -0
- package/dist/cmd/repair-printability.d.ts.map +1 -0
- package/dist/cmd/repair-printability.js +32 -0
- package/dist/cmd/repair-printability.js.map +1 -0
- package/dist/cmd/resize.d.ts +8 -0
- package/dist/cmd/resize.d.ts.map +1 -0
- package/dist/cmd/resize.js +51 -0
- package/dist/cmd/resize.js.map +1 -0
- package/dist/cmd/resources.d.ts +18 -0
- package/dist/cmd/resources.d.ts.map +1 -0
- package/dist/cmd/resources.js +59 -0
- package/dist/cmd/resources.js.map +1 -0
- package/dist/cmd/retexture.d.ts +5 -0
- package/dist/cmd/retexture.d.ts.map +1 -0
- package/dist/cmd/retexture.js +64 -0
- package/dist/cmd/retexture.js.map +1 -0
- package/dist/cmd/rigging.d.ts +6 -0
- package/dist/cmd/rigging.d.ts.map +1 -0
- package/dist/cmd/rigging.js +40 -0
- package/dist/cmd/rigging.js.map +1 -0
- package/dist/cmd/text-to-3d.d.ts +14 -0
- package/dist/cmd/text-to-3d.d.ts.map +1 -0
- package/dist/cmd/text-to-3d.js +76 -0
- package/dist/cmd/text-to-3d.js.map +1 -0
- package/dist/cmd/text-to-image.d.ts +5 -0
- package/dist/cmd/text-to-image.d.ts.map +1 -0
- package/dist/cmd/text-to-image.js +53 -0
- package/dist/cmd/text-to-image.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/config.d.ts +46 -0
- package/dist/internal/config.d.ts.map +1 -0
- package/dist/internal/config.js +94 -0
- package/dist/internal/config.js.map +1 -0
- package/dist/internal/credentials.d.ts +106 -0
- package/dist/internal/credentials.d.ts.map +1 -0
- package/dist/internal/credentials.js +297 -0
- package/dist/internal/credentials.js.map +1 -0
- package/dist/internal/device-state.d.ts +45 -0
- package/dist/internal/device-state.d.ts.map +1 -0
- package/dist/internal/device-state.js +180 -0
- package/dist/internal/device-state.js.map +1 -0
- package/dist/internal/device.d.ts +79 -0
- package/dist/internal/device.d.ts.map +1 -0
- package/dist/internal/device.js +374 -0
- package/dist/internal/device.js.map +1 -0
- package/dist/internal/download.d.ts +34 -0
- package/dist/internal/download.d.ts.map +1 -0
- package/dist/internal/download.js +283 -0
- package/dist/internal/download.js.map +1 -0
- package/dist/internal/errors.d.ts +66 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +169 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/file-input.d.ts +24 -0
- package/dist/internal/file-input.d.ts.map +1 -0
- package/dist/internal/file-input.js +164 -0
- package/dist/internal/file-input.js.map +1 -0
- package/dist/internal/flags.d.ts +9 -0
- package/dist/internal/flags.d.ts.map +1 -0
- package/dist/internal/flags.js +31 -0
- package/dist/internal/flags.js.map +1 -0
- package/dist/internal/global-options.d.ts +16 -0
- package/dist/internal/global-options.d.ts.map +1 -0
- package/dist/internal/global-options.js +57 -0
- package/dist/internal/global-options.js.map +1 -0
- package/dist/internal/headless.d.ts +69 -0
- package/dist/internal/headless.d.ts.map +1 -0
- package/dist/internal/headless.js +101 -0
- package/dist/internal/headless.js.map +1 -0
- package/dist/internal/image-models.d.ts +20 -0
- package/dist/internal/image-models.d.ts.map +1 -0
- package/dist/internal/image-models.js +40 -0
- package/dist/internal/image-models.js.map +1 -0
- package/dist/internal/logger.d.ts +14 -0
- package/dist/internal/logger.d.ts.map +1 -0
- package/dist/internal/logger.js +42 -0
- package/dist/internal/logger.js.map +1 -0
- package/dist/internal/make-plan.d.ts +41 -0
- package/dist/internal/make-plan.d.ts.map +1 -0
- package/dist/internal/make-plan.js +67 -0
- package/dist/internal/make-plan.js.map +1 -0
- package/dist/internal/oauth.d.ts +95 -0
- package/dist/internal/oauth.d.ts.map +1 -0
- package/dist/internal/oauth.js +365 -0
- package/dist/internal/oauth.js.map +1 -0
- package/dist/internal/output.d.ts +15 -0
- package/dist/internal/output.d.ts.map +1 -0
- package/dist/internal/output.js +66 -0
- package/dist/internal/output.js.map +1 -0
- package/dist/internal/payload.d.ts +9 -0
- package/dist/internal/payload.d.ts.map +1 -0
- package/dist/internal/payload.js +42 -0
- package/dist/internal/payload.js.map +1 -0
- package/dist/internal/poll.d.ts +17 -0
- package/dist/internal/poll.d.ts.map +1 -0
- package/dist/internal/poll.js +27 -0
- package/dist/internal/poll.js.map +1 -0
- package/dist/internal/pricing.d.ts +23 -0
- package/dist/internal/pricing.d.ts.map +1 -0
- package/dist/internal/pricing.js +24 -0
- package/dist/internal/pricing.js.map +1 -0
- package/dist/internal/report.d.ts +40 -0
- package/dist/internal/report.d.ts.map +1 -0
- package/dist/internal/report.js +48 -0
- package/dist/internal/report.js.map +1 -0
- package/dist/internal/runtime.d.ts +66 -0
- package/dist/internal/runtime.d.ts.map +1 -0
- package/dist/internal/runtime.js +160 -0
- package/dist/internal/runtime.js.map +1 -0
- package/dist/internal/task-command.d.ts +39 -0
- package/dist/internal/task-command.d.ts.map +1 -0
- package/dist/internal/task-command.js +189 -0
- package/dist/internal/task-command.js.map +1 -0
- package/dist/internal/update-notifier.d.ts +160 -0
- package/dist/internal/update-notifier.d.ts.map +1 -0
- package/dist/internal/update-notifier.js +445 -0
- package/dist/internal/update-notifier.js.map +1 -0
- package/dist/internal/user-agent.d.ts +6 -0
- package/dist/internal/user-agent.d.ts.map +1 -0
- package/dist/internal/user-agent.js +7 -0
- package/dist/internal/user-agent.js.map +1 -0
- package/dist/internal/version.d.ts +2 -0
- package/dist/internal/version.d.ts.map +1 -0
- package/dist/internal/version.js +11 -0
- package/dist/internal/version.js.map +1 -0
- package/dist/root.d.ts +13 -0
- package/dist/root.d.ts.map +1 -0
- package/dist/root.js +148 -0
- package/dist/root.js.map +1 -0
- package/package.json +65 -0
- package/skills/meshy-cli/SKILL.md +99 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* text-to-image — https://docs.meshy.ai/en/api/text-to-image
|
|
3
|
+
*/
|
|
4
|
+
import { Option } from "commander";
|
|
5
|
+
import { parseBool } from "../internal/flags.js";
|
|
6
|
+
import { UsageError } from "../internal/errors.js";
|
|
7
|
+
import { ASPECT_RATIOS, ASPECT_RATIO_HELP, DEFAULT_IMAGE_MODEL, IMAGE_MODELS, IMAGE_MODEL_HELP, checkImageCombo, } from "../internal/image-models.js";
|
|
8
|
+
import { buildResourceCommand } from "../internal/task-command.js";
|
|
9
|
+
const spec = {
|
|
10
|
+
name: "text-to-image",
|
|
11
|
+
description: "Generate a 2D image from a text prompt. For edits based on existing images use " +
|
|
12
|
+
"image-to-image instead",
|
|
13
|
+
create: {
|
|
14
|
+
description: "Create a text-to-image task",
|
|
15
|
+
configure(cmd) {
|
|
16
|
+
return cmd
|
|
17
|
+
.addOption(new Option("--ai-model <model>", IMAGE_MODEL_HELP).choices([...IMAGE_MODELS]))
|
|
18
|
+
.option("--prompt <text>", "required — image description; be descriptive for best results")
|
|
19
|
+
.option("--generate-multi-view <bool>", "generate multi-angle views of the subject (feeds multi-image-to-3d); mutually exclusive with --aspect-ratio", parseBool)
|
|
20
|
+
.addOption(new Option("--pose-mode <pose>", "a-pose | t-pose character pose preset").choices([
|
|
21
|
+
"a-pose",
|
|
22
|
+
"t-pose",
|
|
23
|
+
]))
|
|
24
|
+
.addOption(new Option("--aspect-ratio <ratio>", ASPECT_RATIO_HELP).choices([...ASPECT_RATIOS]));
|
|
25
|
+
},
|
|
26
|
+
toPayload(opts) {
|
|
27
|
+
if (!opts.prompt && !opts.data) {
|
|
28
|
+
throw new UsageError("--prompt is required");
|
|
29
|
+
}
|
|
30
|
+
checkImageCombo({
|
|
31
|
+
// With --data in play an unset flag may be supplied there; leave the
|
|
32
|
+
// ratio check to the server rather than validating against a model
|
|
33
|
+
// the request won't use.
|
|
34
|
+
aiModel: opts.aiModel ?? (opts.data ? undefined : DEFAULT_IMAGE_MODEL),
|
|
35
|
+
aspectRatio: opts.aspectRatio,
|
|
36
|
+
generateMultiView: opts.generateMultiView,
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
ai_model: opts.aiModel,
|
|
40
|
+
prompt: opts.prompt,
|
|
41
|
+
generate_multi_view: opts.generateMultiView,
|
|
42
|
+
pose_mode: opts.poseMode,
|
|
43
|
+
aspect_ratio: opts.aspectRatio,
|
|
44
|
+
};
|
|
45
|
+
},
|
|
46
|
+
toDefaults() {
|
|
47
|
+
return { ai_model: DEFAULT_IMAGE_MODEL };
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
endpointOf: (c) => c.textToImage,
|
|
51
|
+
};
|
|
52
|
+
export const textToImageCommand = buildResourceCommand(spec);
|
|
53
|
+
//# sourceMappingURL=text-to-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-to-image.js","sourceRoot":"","sources":["../../src/cmd/text-to-image.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,oBAAoB,EAA4B,MAAM,6BAA6B,CAAC;AAE7F,MAAM,IAAI,GAAwB;IAChC,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,iFAAiF;QACjF,wBAAwB;IAC1B,MAAM,EAAE;QACN,WAAW,EAAE,6BAA6B;QAC1C,SAAS,CAAC,GAAG;YACX,OAAO,GAAG;iBACP,SAAS,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;iBACxF,MAAM,CAAC,iBAAiB,EAAE,+DAA+D,CAAC;iBAC1F,MAAM,CACL,8BAA8B,EAC9B,6GAA6G,EAC7G,SAAS,CACV;iBACA,SAAS,CACR,IAAI,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,CAAC,CAAC,OAAO,CAAC;gBAChF,QAAQ;gBACR,QAAQ;aACT,CAAC,CACH;iBACA,SAAS,CAAC,IAAI,MAAM,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,SAAS,CAAC,IAAI;YACZ,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC/B,MAAM,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;YAC/C,CAAC;YACD,eAAe,CAAC;gBACd,qEAAqE;gBACrE,mEAAmE;gBACnE,yBAAyB;gBACzB,OAAO,EAAG,IAAI,CAAC,OAA8B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBAC9F,WAAW,EAAE,IAAI,CAAC,WAAiC;gBACnD,iBAAiB,EAAE,IAAI,CAAC,iBAAwC;aACjE,CAAC,CAAC;YACH,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,mBAAmB,EAAE,IAAI,CAAC,iBAAiB;gBAC3C,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,YAAY,EAAE,IAAI,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC;QACD,UAAU;YACR,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAC3C,CAAC;KACF;IACD,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* meshy-cli entry point.
|
|
4
|
+
*/
|
|
5
|
+
import { buildRootCommand } from "./root.js";
|
|
6
|
+
import { exitCodeFor, reportError } from "./internal/errors.js";
|
|
7
|
+
import { refreshCache } from "./internal/update-notifier.js";
|
|
8
|
+
async function main() {
|
|
9
|
+
refreshCache(); // fire-and-forget; internally guarded; never throws
|
|
10
|
+
const program = buildRootCommand();
|
|
11
|
+
try {
|
|
12
|
+
await program.parseAsync(process.argv);
|
|
13
|
+
const code = process.exitCode ?? 0;
|
|
14
|
+
return typeof code === "number" ? code : 1;
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
const fmt = resolveErrorFormat(program);
|
|
18
|
+
reportError(err, fmt);
|
|
19
|
+
return exitCodeFor(err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolve the output format for the error path.
|
|
24
|
+
*
|
|
25
|
+
* Mirrors the same --json override that readGlobalFlags applies on the success
|
|
26
|
+
* path: --json (or --json combined with --format pretty) must still emit JSON
|
|
27
|
+
* on stdout so machine consumers get a parseable error payload.
|
|
28
|
+
*
|
|
29
|
+
* The program tree is read directly here because the error may have been
|
|
30
|
+
* thrown before any subcommand action ran (e.g. unknown flag), so
|
|
31
|
+
* readGlobalFlags (which requires a fully-parsed Command) is not safe to
|
|
32
|
+
* call. --json may be typed at ANY command level (global flags are mirrored
|
|
33
|
+
* to descendants, and --json has no default, so a truthy value always means
|
|
34
|
+
* the user passed it) — scanning only root opts would miss
|
|
35
|
+
* `meshy --format pretty auth login --json`.
|
|
36
|
+
*/
|
|
37
|
+
function resolveErrorFormat(program) {
|
|
38
|
+
const anyJson = (cmd) => Boolean(cmd.opts()["json"]) || cmd.commands.some(anyJson);
|
|
39
|
+
if (anyJson(program))
|
|
40
|
+
return "json";
|
|
41
|
+
const raw = program.opts()["format"];
|
|
42
|
+
const v = (typeof raw === "string" ? raw : "json").toLowerCase();
|
|
43
|
+
return v === "pretty" || v === "ndjson" ? v : "json";
|
|
44
|
+
}
|
|
45
|
+
main().then((code) => process.exit(code));
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,KAAK,UAAU,IAAI;IACjB,YAAY,EAAE,CAAC,CAAC,oDAAoD;IACpE,MAAM,OAAO,GAAG,gBAAgB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;QACnC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACxC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,kBAAkB,CACzB,OAAgB;IAEhB,MAAM,OAAO,GAAG,CAAC,GAAY,EAAW,EAAE,CACxC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IACpC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IACjE,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACvD,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve config in this priority order:
|
|
3
|
+
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --verbose)
|
|
4
|
+
* 2. Environment variables (MESHY_*)
|
|
5
|
+
* 3. The active profile in the credentials file (written by `meshy auth login`)
|
|
6
|
+
* 4. Built-in defaults
|
|
7
|
+
*
|
|
8
|
+
* The env var keeps priority over the stored credential on purpose: CI and
|
|
9
|
+
* containers export MESHY_API_KEY and must not be silently overridden by
|
|
10
|
+
* whatever a developer once logged into on that machine.
|
|
11
|
+
*
|
|
12
|
+
* Fail-fast on a missing/placeholder credential — with the command that fixes
|
|
13
|
+
* it attached, not just a complaint.
|
|
14
|
+
*/
|
|
15
|
+
import { type CredentialKind } from "./credentials.js";
|
|
16
|
+
import { type LogLevel } from "./logger.js";
|
|
17
|
+
/** Where the credential in use came from — surfaced by `meshy auth status`. */
|
|
18
|
+
export type CredentialSource = "flag" | "env" | "file";
|
|
19
|
+
export interface MeshyConfig {
|
|
20
|
+
apiKey: string;
|
|
21
|
+
baseUrlV1: string;
|
|
22
|
+
baseUrlV2: string;
|
|
23
|
+
connectTimeoutMs: number;
|
|
24
|
+
readTimeoutMs: number;
|
|
25
|
+
pollIntervalMs: number;
|
|
26
|
+
logLevel: LogLevel;
|
|
27
|
+
credentialSource: CredentialSource;
|
|
28
|
+
/** Set only when credentialSource === "file". */
|
|
29
|
+
credentialProfile?: string;
|
|
30
|
+
/** The credentials file consulted for this invocation, whether or not it exists. */
|
|
31
|
+
credentialsFile: string;
|
|
32
|
+
/**
|
|
33
|
+
* The kind of credential in use — "oauth" for browser-login tokens, "api_key" for static keys.
|
|
34
|
+
* "api_key" when credentialSource is "flag" or "env" (those paths only accept static keys).
|
|
35
|
+
* Derived from the stored profile kind when credentialSource is "file".
|
|
36
|
+
*/
|
|
37
|
+
credentialKind: CredentialKind;
|
|
38
|
+
}
|
|
39
|
+
export interface ConfigOverrides {
|
|
40
|
+
apiKey?: string;
|
|
41
|
+
baseUrlV1?: string;
|
|
42
|
+
baseUrlV2?: string;
|
|
43
|
+
logLevel?: LogLevel;
|
|
44
|
+
}
|
|
45
|
+
export declare function loadConfig(overrides?: ConfigOverrides): MeshyConfig;
|
|
46
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA4C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIzD,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAyBD,wBAAgB,UAAU,CAAC,SAAS,GAAE,eAAoB,GAAG,WAAW,CA4DvE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve config in this priority order:
|
|
3
|
+
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --verbose)
|
|
4
|
+
* 2. Environment variables (MESHY_*)
|
|
5
|
+
* 3. The active profile in the credentials file (written by `meshy auth login`)
|
|
6
|
+
* 4. Built-in defaults
|
|
7
|
+
*
|
|
8
|
+
* The env var keeps priority over the stored credential on purpose: CI and
|
|
9
|
+
* containers export MESHY_API_KEY and must not be silently overridden by
|
|
10
|
+
* whatever a developer once logged into on that machine.
|
|
11
|
+
*
|
|
12
|
+
* Fail-fast on a missing/placeholder credential — with the command that fixes
|
|
13
|
+
* it attached, not just a complaint.
|
|
14
|
+
*/
|
|
15
|
+
import { credentialsPath, resolveStoredCredential } from "./credentials.js";
|
|
16
|
+
import { authRequiredError } from "./errors.js";
|
|
17
|
+
import { setLogLevel } from "./logger.js";
|
|
18
|
+
const PLACEHOLDER_KEYS = new Set(["", "YOUR_MESHY_API_KEY_HERE"]);
|
|
19
|
+
function readNumber(name, fallback) {
|
|
20
|
+
const raw = process.env[name];
|
|
21
|
+
if (raw === undefined || raw === "")
|
|
22
|
+
return fallback;
|
|
23
|
+
const n = Number(raw);
|
|
24
|
+
if (!Number.isFinite(n) || n < 0) {
|
|
25
|
+
throw new Error(`${name} must be a non-negative number (got ${JSON.stringify(raw)})`);
|
|
26
|
+
}
|
|
27
|
+
return n;
|
|
28
|
+
}
|
|
29
|
+
function readLogLevel(fallback) {
|
|
30
|
+
const raw = (process.env.MESHY_LOG_LEVEL || "").toLowerCase();
|
|
31
|
+
if (!raw)
|
|
32
|
+
return fallback;
|
|
33
|
+
if (raw === "debug" || raw === "info" || raw === "warn" || raw === "error" || raw === "silent") {
|
|
34
|
+
return raw;
|
|
35
|
+
}
|
|
36
|
+
return fallback;
|
|
37
|
+
}
|
|
38
|
+
function stripTrail(s) {
|
|
39
|
+
return s.replace(/\/+$/, "");
|
|
40
|
+
}
|
|
41
|
+
export function loadConfig(overrides = {}) {
|
|
42
|
+
// Base URLs resolve first: they decide which credentials file applies
|
|
43
|
+
// (production vs. a staging override).
|
|
44
|
+
const baseUrlV1 = stripTrail(overrides.baseUrlV1 ?? process.env.MESHY_BASE_URL_V1 ?? "https://api.meshy.ai/openapi/v1");
|
|
45
|
+
const baseUrlV2 = stripTrail(overrides.baseUrlV2 ?? process.env.MESHY_BASE_URL_V2 ?? "https://api.meshy.ai/openapi/v2");
|
|
46
|
+
const credFile = credentialsPath(baseUrlV1);
|
|
47
|
+
const flagKey = overrides.apiKey?.trim() ?? "";
|
|
48
|
+
const envKey = process.env.MESHY_API_KEY?.trim() ?? "";
|
|
49
|
+
let apiKey = "";
|
|
50
|
+
let credentialSource = "flag";
|
|
51
|
+
let credentialProfile;
|
|
52
|
+
let credentialKind = "api_key";
|
|
53
|
+
if (!PLACEHOLDER_KEYS.has(flagKey)) {
|
|
54
|
+
apiKey = flagKey;
|
|
55
|
+
credentialSource = "flag";
|
|
56
|
+
credentialKind = "api_key";
|
|
57
|
+
}
|
|
58
|
+
else if (!PLACEHOLDER_KEYS.has(envKey)) {
|
|
59
|
+
apiKey = envKey;
|
|
60
|
+
credentialSource = "env";
|
|
61
|
+
credentialKind = "api_key";
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// A corrupt credentials file throws out of resolveStoredCredential rather
|
|
65
|
+
// than being swallowed into "not logged in" — see credentials.ts.
|
|
66
|
+
const stored = resolveStoredCredential(credFile);
|
|
67
|
+
const secret = stored?.apiKey ?? stored?.accessToken ?? "";
|
|
68
|
+
if (stored && !PLACEHOLDER_KEYS.has(secret)) {
|
|
69
|
+
apiKey = secret;
|
|
70
|
+
credentialSource = "file";
|
|
71
|
+
credentialProfile = stored.profile;
|
|
72
|
+
credentialKind = stored.kind;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw authRequiredError("No credentials found. Pass --api-key, export MESHY_API_KEY, or log in.");
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const cfg = {
|
|
79
|
+
apiKey,
|
|
80
|
+
baseUrlV1,
|
|
81
|
+
baseUrlV2,
|
|
82
|
+
connectTimeoutMs: readNumber("MESHY_CONNECT_TIMEOUT_MS", 10_000),
|
|
83
|
+
readTimeoutMs: readNumber("MESHY_READ_TIMEOUT_MS", 120_000),
|
|
84
|
+
pollIntervalMs: readNumber("MESHY_POLL_INTERVAL_MS", 3_000),
|
|
85
|
+
logLevel: overrides.logLevel ?? readLogLevel("warn"),
|
|
86
|
+
credentialSource,
|
|
87
|
+
credentialProfile,
|
|
88
|
+
credentialsFile: credFile,
|
|
89
|
+
credentialKind,
|
|
90
|
+
};
|
|
91
|
+
setLogLevel(cfg.logLevel);
|
|
92
|
+
return cfg;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential store — the on-disk half of `meshy auth`.
|
|
3
|
+
*
|
|
4
|
+
* Layout: ~/.config/meshy/credentials.json, one file holding named profiles so
|
|
5
|
+
* a user can keep several accounts side by side. `~/.config` is used on every
|
|
6
|
+
* platform (including macOS, where the native spot would be Application
|
|
7
|
+
* Support) because the file is meant to be scriptable and dotfile-friendly.
|
|
8
|
+
*
|
|
9
|
+
* Non-production hosts get their own file — credentials.dev.json — so pointing
|
|
10
|
+
* MESHY_BASE_URL_V1 at staging cannot overwrite the production login, and
|
|
11
|
+
* logging out of one leaves the other alone.
|
|
12
|
+
*
|
|
13
|
+
* Every mutation runs under a cross-process lock and lands via a temp file +
|
|
14
|
+
* rename, because several agents driving this CLI in parallel is the normal
|
|
15
|
+
* case, not the exception.
|
|
16
|
+
*
|
|
17
|
+
* This module deliberately knows nothing about config.ts — it takes the base
|
|
18
|
+
* URL it needs as an argument, so config can depend on it and not vice versa.
|
|
19
|
+
*/
|
|
20
|
+
export declare const AUTH_VERSION = 1;
|
|
21
|
+
export declare const DEFAULT_PROFILE = "default";
|
|
22
|
+
export declare const PROD_API_HOST = "api.meshy.ai";
|
|
23
|
+
export type CredentialKind = "api_key" | "oauth";
|
|
24
|
+
export interface CredentialProfile {
|
|
25
|
+
kind: CredentialKind;
|
|
26
|
+
/** Present when kind === "api_key". */
|
|
27
|
+
api_key?: string;
|
|
28
|
+
/** Present when kind === "oauth" (CLI-4 writes these; nothing reads them yet). */
|
|
29
|
+
access_token?: string;
|
|
30
|
+
refresh_token?: string;
|
|
31
|
+
/** Unix epoch millis. */
|
|
32
|
+
expires_at?: number;
|
|
33
|
+
user_id?: string;
|
|
34
|
+
created_at?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface CredentialsFile {
|
|
37
|
+
auth_version: number;
|
|
38
|
+
active_profile: string;
|
|
39
|
+
profiles: Record<string, CredentialProfile>;
|
|
40
|
+
}
|
|
41
|
+
/** Thrown when the file exists but cannot be understood — never on a missing file. */
|
|
42
|
+
export declare class CredentialsFileError extends Error {
|
|
43
|
+
readonly path: string;
|
|
44
|
+
constructor(path: string, detail: string);
|
|
45
|
+
}
|
|
46
|
+
/** Root config directory. MESHY_CONFIG_DIR wins when set. */
|
|
47
|
+
export declare function configDir(env?: NodeJS.ProcessEnv): string;
|
|
48
|
+
/**
|
|
49
|
+
* True when the given v1 base URL points somewhere other than production.
|
|
50
|
+
* An unparseable URL counts as non-production: a typo should not be able to
|
|
51
|
+
* touch the production credential file.
|
|
52
|
+
*/
|
|
53
|
+
export declare function isNonProdBaseUrl(baseUrlV1: string | undefined): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Resolves the credentials file path.
|
|
56
|
+
*
|
|
57
|
+
* MESHY_CREDENTIALS_PATH is absolute and wins over everything, including the
|
|
58
|
+
* prod/dev split — a caller that names a file gets that exact file.
|
|
59
|
+
*/
|
|
60
|
+
export declare function credentialsPath(baseUrlV1?: string, env?: NodeJS.ProcessEnv): string;
|
|
61
|
+
/**
|
|
62
|
+
* Runs `fn` while holding an exclusive lock keyed to `file`.
|
|
63
|
+
*
|
|
64
|
+
* O_EXCL creation is the atomic primitive here — `flock` is not exposed by
|
|
65
|
+
* Node's fs module. A lock whose mtime is older than LOCK_STALE_MS is treated
|
|
66
|
+
* as abandoned and broken, so a killed process cannot wedge the CLI forever.
|
|
67
|
+
*/
|
|
68
|
+
export declare function withCredentialsLock<T>(file: string, fn: () => T): T;
|
|
69
|
+
/**
|
|
70
|
+
* Reads the credentials file. Returns null when it does not exist — that is
|
|
71
|
+
* "not logged in", not an error. A file that exists but is unreadable throws
|
|
72
|
+
* CredentialsFileError so the user hears about it instead of silently falling
|
|
73
|
+
* back to "no credentials".
|
|
74
|
+
*/
|
|
75
|
+
export declare function readCredentials(file: string): CredentialsFile | null;
|
|
76
|
+
/**
|
|
77
|
+
* Writes the file with 0600 via a temp file + rename, so a crash mid-write
|
|
78
|
+
* cannot leave a half-written credentials file behind. Callers that mutate
|
|
79
|
+
* existing state must hold the lock; see updateCredentials.
|
|
80
|
+
*/
|
|
81
|
+
export declare function writeCredentials(state: CredentialsFile, file: string): void;
|
|
82
|
+
/** Read-modify-write under the lock. The mutator may return a new state or mutate in place. */
|
|
83
|
+
export declare function updateCredentials(file: string, mutate: (state: CredentialsFile) => CredentialsFile | void): CredentialsFile;
|
|
84
|
+
export declare function saveProfile(file: string, name: string, profile: CredentialProfile, opts?: {
|
|
85
|
+
makeActive?: boolean;
|
|
86
|
+
}): CredentialsFile;
|
|
87
|
+
/** Removes one profile. Returns false when it was not there to begin with. */
|
|
88
|
+
export declare function removeProfile(file: string, name: string): boolean;
|
|
89
|
+
export declare function setActiveProfile(file: string, name: string): void;
|
|
90
|
+
/** Deletes the whole file. Returns false when there was nothing to delete. */
|
|
91
|
+
export declare function deleteCredentialsFile(file: string): boolean;
|
|
92
|
+
export interface ResolvedStoredCredential {
|
|
93
|
+
profile: string;
|
|
94
|
+
kind: CredentialKind;
|
|
95
|
+
apiKey?: string;
|
|
96
|
+
accessToken?: string;
|
|
97
|
+
expiresAt?: number;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Returns the usable secret from the active profile, or null when there is no
|
|
101
|
+
* file, no active profile, or the profile carries nothing usable.
|
|
102
|
+
*/
|
|
103
|
+
export declare function resolveStoredCredential(file: string): ResolvedStoredCredential | null;
|
|
104
|
+
/** `msy_abcd…wxyz` — enough to tell two keys apart, not enough to use one. */
|
|
105
|
+
export declare function maskSecret(secret: string): string;
|
|
106
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/internal/credentials.ts"],"names":[],"mappings":"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"}
|