@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.
Files changed (265) hide show
  1. package/.env.example +14 -0
  2. package/LICENSE +21 -0
  3. package/README.md +376 -0
  4. package/dist/client/endpoints/analyze-printability.d.ts +5 -0
  5. package/dist/client/endpoints/analyze-printability.d.ts.map +1 -0
  6. package/dist/client/endpoints/analyze-printability.js +7 -0
  7. package/dist/client/endpoints/analyze-printability.js.map +1 -0
  8. package/dist/client/endpoints/animate.d.ts +6 -0
  9. package/dist/client/endpoints/animate.d.ts.map +1 -0
  10. package/dist/client/endpoints/animate.js +8 -0
  11. package/dist/client/endpoints/animate.js.map +1 -0
  12. package/dist/client/endpoints/balance.d.ts +9 -0
  13. package/dist/client/endpoints/balance.d.ts.map +1 -0
  14. package/dist/client/endpoints/balance.js +27 -0
  15. package/dist/client/endpoints/balance.js.map +1 -0
  16. package/dist/client/endpoints/base.d.ts +24 -0
  17. package/dist/client/endpoints/base.d.ts.map +1 -0
  18. package/dist/client/endpoints/base.js +87 -0
  19. package/dist/client/endpoints/base.js.map +1 -0
  20. package/dist/client/endpoints/convert.d.ts +5 -0
  21. package/dist/client/endpoints/convert.d.ts.map +1 -0
  22. package/dist/client/endpoints/convert.js +7 -0
  23. package/dist/client/endpoints/convert.js.map +1 -0
  24. package/dist/client/endpoints/image-to-3d.d.ts +5 -0
  25. package/dist/client/endpoints/image-to-3d.d.ts.map +1 -0
  26. package/dist/client/endpoints/image-to-3d.js +7 -0
  27. package/dist/client/endpoints/image-to-3d.js.map +1 -0
  28. package/dist/client/endpoints/image-to-image.d.ts +5 -0
  29. package/dist/client/endpoints/image-to-image.d.ts.map +1 -0
  30. package/dist/client/endpoints/image-to-image.js +7 -0
  31. package/dist/client/endpoints/image-to-image.js.map +1 -0
  32. package/dist/client/endpoints/multi-color-print.d.ts +5 -0
  33. package/dist/client/endpoints/multi-color-print.d.ts.map +1 -0
  34. package/dist/client/endpoints/multi-color-print.js +7 -0
  35. package/dist/client/endpoints/multi-color-print.js.map +1 -0
  36. package/dist/client/endpoints/multi-image-to-3d.d.ts +5 -0
  37. package/dist/client/endpoints/multi-image-to-3d.d.ts.map +1 -0
  38. package/dist/client/endpoints/multi-image-to-3d.js +7 -0
  39. package/dist/client/endpoints/multi-image-to-3d.js.map +1 -0
  40. package/dist/client/endpoints/remesh.d.ts +5 -0
  41. package/dist/client/endpoints/remesh.d.ts.map +1 -0
  42. package/dist/client/endpoints/remesh.js +7 -0
  43. package/dist/client/endpoints/remesh.js.map +1 -0
  44. package/dist/client/endpoints/repair-printability.d.ts +5 -0
  45. package/dist/client/endpoints/repair-printability.d.ts.map +1 -0
  46. package/dist/client/endpoints/repair-printability.js +7 -0
  47. package/dist/client/endpoints/repair-printability.js.map +1 -0
  48. package/dist/client/endpoints/resize.d.ts +5 -0
  49. package/dist/client/endpoints/resize.d.ts.map +1 -0
  50. package/dist/client/endpoints/resize.js +7 -0
  51. package/dist/client/endpoints/resize.js.map +1 -0
  52. package/dist/client/endpoints/retexture.d.ts +5 -0
  53. package/dist/client/endpoints/retexture.d.ts.map +1 -0
  54. package/dist/client/endpoints/retexture.js +7 -0
  55. package/dist/client/endpoints/retexture.js.map +1 -0
  56. package/dist/client/endpoints/rigging.d.ts +6 -0
  57. package/dist/client/endpoints/rigging.d.ts.map +1 -0
  58. package/dist/client/endpoints/rigging.js +8 -0
  59. package/dist/client/endpoints/rigging.js.map +1 -0
  60. package/dist/client/endpoints/text-to-3d.d.ts +6 -0
  61. package/dist/client/endpoints/text-to-3d.d.ts.map +1 -0
  62. package/dist/client/endpoints/text-to-3d.js +8 -0
  63. package/dist/client/endpoints/text-to-3d.js.map +1 -0
  64. package/dist/client/endpoints/text-to-image.d.ts +5 -0
  65. package/dist/client/endpoints/text-to-image.d.ts.map +1 -0
  66. package/dist/client/endpoints/text-to-image.js +7 -0
  67. package/dist/client/endpoints/text-to-image.js.map +1 -0
  68. package/dist/client/errors.d.ts +23 -0
  69. package/dist/client/errors.d.ts.map +1 -0
  70. package/dist/client/errors.js +82 -0
  71. package/dist/client/errors.js.map +1 -0
  72. package/dist/client/index.d.ts +48 -0
  73. package/dist/client/index.d.ts.map +1 -0
  74. package/dist/client/index.js +147 -0
  75. package/dist/client/index.js.map +1 -0
  76. package/dist/client/types.d.ts +298 -0
  77. package/dist/client/types.d.ts.map +1 -0
  78. package/dist/client/types.js +97 -0
  79. package/dist/client/types.js.map +1 -0
  80. package/dist/cmd/analyze-printability.d.ts +8 -0
  81. package/dist/cmd/analyze-printability.d.ts.map +1 -0
  82. package/dist/cmd/analyze-printability.js +34 -0
  83. package/dist/cmd/analyze-printability.js.map +1 -0
  84. package/dist/cmd/animate.d.ts +9 -0
  85. package/dist/cmd/animate.d.ts.map +1 -0
  86. package/dist/cmd/animate.js +51 -0
  87. package/dist/cmd/animate.js.map +1 -0
  88. package/dist/cmd/api.d.ts +9 -0
  89. package/dist/cmd/api.d.ts.map +1 -0
  90. package/dist/cmd/api.js +50 -0
  91. package/dist/cmd/api.js.map +1 -0
  92. package/dist/cmd/auth.d.ts +19 -0
  93. package/dist/cmd/auth.d.ts.map +1 -0
  94. package/dist/cmd/auth.js +583 -0
  95. package/dist/cmd/auth.js.map +1 -0
  96. package/dist/cmd/balance.d.ts +6 -0
  97. package/dist/cmd/balance.d.ts.map +1 -0
  98. package/dist/cmd/balance.js +14 -0
  99. package/dist/cmd/balance.js.map +1 -0
  100. package/dist/cmd/convert.d.ts +8 -0
  101. package/dist/cmd/convert.d.ts.map +1 -0
  102. package/dist/cmd/convert.js +40 -0
  103. package/dist/cmd/convert.js.map +1 -0
  104. package/dist/cmd/delete.d.ts +7 -0
  105. package/dist/cmd/delete.d.ts.map +1 -0
  106. package/dist/cmd/delete.js +19 -0
  107. package/dist/cmd/delete.js.map +1 -0
  108. package/dist/cmd/image-to-3d.d.ts +12 -0
  109. package/dist/cmd/image-to-3d.d.ts.map +1 -0
  110. package/dist/cmd/image-to-3d.js +97 -0
  111. package/dist/cmd/image-to-3d.js.map +1 -0
  112. package/dist/cmd/image-to-image.d.ts +5 -0
  113. package/dist/cmd/image-to-image.d.ts.map +1 -0
  114. package/dist/cmd/image-to-image.js +56 -0
  115. package/dist/cmd/image-to-image.js.map +1 -0
  116. package/dist/cmd/make.d.ts +31 -0
  117. package/dist/cmd/make.d.ts.map +1 -0
  118. package/dist/cmd/make.js +195 -0
  119. package/dist/cmd/make.js.map +1 -0
  120. package/dist/cmd/multi-color-print.d.ts +6 -0
  121. package/dist/cmd/multi-color-print.d.ts.map +1 -0
  122. package/dist/cmd/multi-color-print.js +44 -0
  123. package/dist/cmd/multi-color-print.js.map +1 -0
  124. package/dist/cmd/multi-image-to-3d.d.ts +5 -0
  125. package/dist/cmd/multi-image-to-3d.d.ts.map +1 -0
  126. package/dist/cmd/multi-image-to-3d.js +72 -0
  127. package/dist/cmd/multi-image-to-3d.js.map +1 -0
  128. package/dist/cmd/remesh.d.ts +8 -0
  129. package/dist/cmd/remesh.d.ts.map +1 -0
  130. package/dist/cmd/remesh.js +49 -0
  131. package/dist/cmd/remesh.js.map +1 -0
  132. package/dist/cmd/repair-printability.d.ts +7 -0
  133. package/dist/cmd/repair-printability.d.ts.map +1 -0
  134. package/dist/cmd/repair-printability.js +32 -0
  135. package/dist/cmd/repair-printability.js.map +1 -0
  136. package/dist/cmd/resize.d.ts +8 -0
  137. package/dist/cmd/resize.d.ts.map +1 -0
  138. package/dist/cmd/resize.js +51 -0
  139. package/dist/cmd/resize.js.map +1 -0
  140. package/dist/cmd/resources.d.ts +18 -0
  141. package/dist/cmd/resources.d.ts.map +1 -0
  142. package/dist/cmd/resources.js +59 -0
  143. package/dist/cmd/resources.js.map +1 -0
  144. package/dist/cmd/retexture.d.ts +5 -0
  145. package/dist/cmd/retexture.d.ts.map +1 -0
  146. package/dist/cmd/retexture.js +64 -0
  147. package/dist/cmd/retexture.js.map +1 -0
  148. package/dist/cmd/rigging.d.ts +6 -0
  149. package/dist/cmd/rigging.d.ts.map +1 -0
  150. package/dist/cmd/rigging.js +40 -0
  151. package/dist/cmd/rigging.js.map +1 -0
  152. package/dist/cmd/text-to-3d.d.ts +14 -0
  153. package/dist/cmd/text-to-3d.d.ts.map +1 -0
  154. package/dist/cmd/text-to-3d.js +76 -0
  155. package/dist/cmd/text-to-3d.js.map +1 -0
  156. package/dist/cmd/text-to-image.d.ts +5 -0
  157. package/dist/cmd/text-to-image.d.ts.map +1 -0
  158. package/dist/cmd/text-to-image.js +53 -0
  159. package/dist/cmd/text-to-image.js.map +1 -0
  160. package/dist/index.d.ts +6 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +46 -0
  163. package/dist/index.js.map +1 -0
  164. package/dist/internal/config.d.ts +46 -0
  165. package/dist/internal/config.d.ts.map +1 -0
  166. package/dist/internal/config.js +94 -0
  167. package/dist/internal/config.js.map +1 -0
  168. package/dist/internal/credentials.d.ts +106 -0
  169. package/dist/internal/credentials.d.ts.map +1 -0
  170. package/dist/internal/credentials.js +297 -0
  171. package/dist/internal/credentials.js.map +1 -0
  172. package/dist/internal/device-state.d.ts +45 -0
  173. package/dist/internal/device-state.d.ts.map +1 -0
  174. package/dist/internal/device-state.js +180 -0
  175. package/dist/internal/device-state.js.map +1 -0
  176. package/dist/internal/device.d.ts +79 -0
  177. package/dist/internal/device.d.ts.map +1 -0
  178. package/dist/internal/device.js +374 -0
  179. package/dist/internal/device.js.map +1 -0
  180. package/dist/internal/download.d.ts +34 -0
  181. package/dist/internal/download.d.ts.map +1 -0
  182. package/dist/internal/download.js +283 -0
  183. package/dist/internal/download.js.map +1 -0
  184. package/dist/internal/errors.d.ts +66 -0
  185. package/dist/internal/errors.d.ts.map +1 -0
  186. package/dist/internal/errors.js +169 -0
  187. package/dist/internal/errors.js.map +1 -0
  188. package/dist/internal/file-input.d.ts +24 -0
  189. package/dist/internal/file-input.d.ts.map +1 -0
  190. package/dist/internal/file-input.js +164 -0
  191. package/dist/internal/file-input.js.map +1 -0
  192. package/dist/internal/flags.d.ts +9 -0
  193. package/dist/internal/flags.d.ts.map +1 -0
  194. package/dist/internal/flags.js +31 -0
  195. package/dist/internal/flags.js.map +1 -0
  196. package/dist/internal/global-options.d.ts +16 -0
  197. package/dist/internal/global-options.d.ts.map +1 -0
  198. package/dist/internal/global-options.js +57 -0
  199. package/dist/internal/global-options.js.map +1 -0
  200. package/dist/internal/headless.d.ts +69 -0
  201. package/dist/internal/headless.d.ts.map +1 -0
  202. package/dist/internal/headless.js +101 -0
  203. package/dist/internal/headless.js.map +1 -0
  204. package/dist/internal/image-models.d.ts +20 -0
  205. package/dist/internal/image-models.d.ts.map +1 -0
  206. package/dist/internal/image-models.js +40 -0
  207. package/dist/internal/image-models.js.map +1 -0
  208. package/dist/internal/logger.d.ts +14 -0
  209. package/dist/internal/logger.d.ts.map +1 -0
  210. package/dist/internal/logger.js +42 -0
  211. package/dist/internal/logger.js.map +1 -0
  212. package/dist/internal/make-plan.d.ts +41 -0
  213. package/dist/internal/make-plan.d.ts.map +1 -0
  214. package/dist/internal/make-plan.js +67 -0
  215. package/dist/internal/make-plan.js.map +1 -0
  216. package/dist/internal/oauth.d.ts +95 -0
  217. package/dist/internal/oauth.d.ts.map +1 -0
  218. package/dist/internal/oauth.js +365 -0
  219. package/dist/internal/oauth.js.map +1 -0
  220. package/dist/internal/output.d.ts +15 -0
  221. package/dist/internal/output.d.ts.map +1 -0
  222. package/dist/internal/output.js +66 -0
  223. package/dist/internal/output.js.map +1 -0
  224. package/dist/internal/payload.d.ts +9 -0
  225. package/dist/internal/payload.d.ts.map +1 -0
  226. package/dist/internal/payload.js +42 -0
  227. package/dist/internal/payload.js.map +1 -0
  228. package/dist/internal/poll.d.ts +17 -0
  229. package/dist/internal/poll.d.ts.map +1 -0
  230. package/dist/internal/poll.js +27 -0
  231. package/dist/internal/poll.js.map +1 -0
  232. package/dist/internal/pricing.d.ts +23 -0
  233. package/dist/internal/pricing.d.ts.map +1 -0
  234. package/dist/internal/pricing.js +24 -0
  235. package/dist/internal/pricing.js.map +1 -0
  236. package/dist/internal/report.d.ts +40 -0
  237. package/dist/internal/report.d.ts.map +1 -0
  238. package/dist/internal/report.js +48 -0
  239. package/dist/internal/report.js.map +1 -0
  240. package/dist/internal/runtime.d.ts +66 -0
  241. package/dist/internal/runtime.d.ts.map +1 -0
  242. package/dist/internal/runtime.js +160 -0
  243. package/dist/internal/runtime.js.map +1 -0
  244. package/dist/internal/task-command.d.ts +39 -0
  245. package/dist/internal/task-command.d.ts.map +1 -0
  246. package/dist/internal/task-command.js +189 -0
  247. package/dist/internal/task-command.js.map +1 -0
  248. package/dist/internal/update-notifier.d.ts +160 -0
  249. package/dist/internal/update-notifier.d.ts.map +1 -0
  250. package/dist/internal/update-notifier.js +445 -0
  251. package/dist/internal/update-notifier.js.map +1 -0
  252. package/dist/internal/user-agent.d.ts +6 -0
  253. package/dist/internal/user-agent.d.ts.map +1 -0
  254. package/dist/internal/user-agent.js +7 -0
  255. package/dist/internal/user-agent.js.map +1 -0
  256. package/dist/internal/version.d.ts +2 -0
  257. package/dist/internal/version.d.ts.map +1 -0
  258. package/dist/internal/version.js +11 -0
  259. package/dist/internal/version.js.map +1 -0
  260. package/dist/root.d.ts +13 -0
  261. package/dist/root.d.ts.map +1 -0
  262. package/dist/root.js +148 -0
  263. package/dist/root.js.map +1 -0
  264. package/package.json +65 -0
  265. package/skills/meshy-cli/SKILL.md +99 -0
package/dist/root.js ADDED
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Root command. Wires global flags and attaches every subcommand.
3
+ *
4
+ * The per-endpoint commands are registered but hidden from the root help.
5
+ * They remain fully supported — `meshy resources` indexes them and
6
+ * `meshy <resource> --help` documents each one. The root help leads with the
7
+ * short list instead, because it is read on every invocation (an agent pays
8
+ * for the whole surface each time it runs `--help`), and because a caller who
9
+ * wants one model should not have to pick an endpoint first.
10
+ */
11
+ import { Command } from "commander";
12
+ import { VERSION } from "./internal/version.js";
13
+ import { REFRESH_COMMAND, runRefreshCommand } from "./internal/update-notifier.js";
14
+ import { mirrorGlobalOptionsToDescendants, registerRootGlobalOptions, } from "./internal/global-options.js";
15
+ import { analyzePrintabilityCommand } from "./cmd/analyze-printability.js";
16
+ import { animateCommand } from "./cmd/animate.js";
17
+ import { apiCommand } from "./cmd/api.js";
18
+ import { authCommand } from "./cmd/auth.js";
19
+ import { balanceCommand } from "./cmd/balance.js";
20
+ import { convertCommand } from "./cmd/convert.js";
21
+ import { deleteCommand } from "./cmd/delete.js";
22
+ import { imageTo3dCommand } from "./cmd/image-to-3d.js";
23
+ import { imageToImageCommand } from "./cmd/image-to-image.js";
24
+ import { makeCommand } from "./cmd/make.js";
25
+ import { multiColorPrintCommand } from "./cmd/multi-color-print.js";
26
+ import { multiImageTo3dCommand } from "./cmd/multi-image-to-3d.js";
27
+ import { remeshCommand } from "./cmd/remesh.js";
28
+ import { repairPrintabilityCommand } from "./cmd/repair-printability.js";
29
+ import { resizeCommand } from "./cmd/resize.js";
30
+ import { resourcesCommand } from "./cmd/resources.js";
31
+ import { retextureCommand } from "./cmd/retexture.js";
32
+ import { riggingCommand } from "./cmd/rigging.js";
33
+ import { textTo3dCommand } from "./cmd/text-to-3d.js";
34
+ import { textToImageCommand } from "./cmd/text-to-image.js";
35
+ const ROOT_LONG = `meshy-cli — command-line interface for the Meshy AI API.
36
+
37
+ USAGE:
38
+ meshy make <prompt | image> [-o <path>] # the short path to a model
39
+ meshy <resource> <action> [flags] # one endpoint at a time — meshy resources
40
+ meshy api <METHOD> <PATH> [--data <json>]
41
+
42
+ EXAMPLES:
43
+ # one command, one model (sync: returns when the model is done)
44
+ meshy make "a red sports car" -o car.glb
45
+ meshy make ./cat.png -o out/cat/
46
+ meshy make "a red sports car" --dry-run # steps + estimate, no spend
47
+ meshy make "a red sports car" --max-credits 25 # refuse if the estimate is over
48
+
49
+ # every endpoint, one at a time
50
+ meshy resources # index of the 16 commands
51
+ meshy text-to-3d create --mode preview --prompt "a red sports car"
52
+ meshy image-to-3d get <task-id>
53
+ meshy delete <task-id> # unified: works for any task
54
+
55
+ # escape hatch for endpoints without a dedicated subcommand
56
+ meshy api GET /balance
57
+ meshy api POST /text-to-3d --data '{"mode":"preview","prompt":"car"}'
58
+
59
+ AUTHENTICATION:
60
+ auth login open the browser for OAuth login (loopback + PKCE)
61
+ auth login --with-key msy_... paste an existing API key instead of the browser flow
62
+ auth status which credential is in effect, and does it work
63
+ auth list stored profiles
64
+ auth use <profile> switch the active profile
65
+ auth logout [--all] forget the stored credential
66
+
67
+ Resolution order: --api-key > MESHY_API_KEY > stored profile. The env var
68
+ stays ahead of the stored credential so CI is never overridden by whatever
69
+ a developer logged into on that machine. Non-production --base-url-v1 uses a
70
+ separate credentials.dev.json, so staging cannot clobber a production login.
71
+
72
+ RESOURCE COMMANDS:
73
+ All 16 endpoint commands stay available and stay supported — they are
74
+ indexed by \`meshy resources\` instead of listed here, so this help does not
75
+ grow with the API. \`meshy resources --help\` also carries the shared
76
+ create/get/list/wait/delete verb contract.
77
+
78
+ GLOBAL FLAGS (accepted at any position in the command line):
79
+ --api-key <key> override MESHY_API_KEY
80
+ --base-url-v1 <url> override MESHY_BASE_URL_V1
81
+ --base-url-v2 <url> override MESHY_BASE_URL_V2
82
+ --format <fmt> json (default) | pretty | ndjson
83
+ --output, -o <path> download task artifacts to a file or directory,
84
+ write meta.json alongside, and replace stdout
85
+ with a status report (without -o: stdout keeps
86
+ the JSON summary).
87
+ --verbose, -v enable debug logging to stderr
88
+ --log-level <level> debug | info | warn | error | silent
89
+
90
+ ENVIRONMENT:
91
+ MESHY_API_KEY required unless a profile is stored
92
+ MESHY_CONFIG_DIR default: ~/.config/meshy
93
+ MESHY_CREDENTIALS_PATH exact credentials file (wins over the above)
94
+ MESHY_BASE_URL_V1 default: https://api.meshy.ai/openapi/v1
95
+ MESHY_BASE_URL_V2 default: https://api.meshy.ai/openapi/v2
96
+ MESHY_OAUTH_AUTHORIZE_URL override the OAuth authorize page (staging/testing)
97
+ MESHY_CLI_NO_BROWSER set to 1 to skip browser open (headless/agent use)
98
+ MESHY_POLL_INTERVAL_MS default: 3000
99
+ MESHY_READ_TIMEOUT_MS default: 120000
100
+ MESHY_LOG_LEVEL default: warn
101
+ MESHY_CLI_NO_UPDATE_NOTIFIER set to disable update checks
102
+
103
+ Docs: https://docs.meshy.ai/`;
104
+ export function buildRootCommand() {
105
+ const program = new Command();
106
+ program
107
+ .name("meshy-cli")
108
+ .description(ROOT_LONG)
109
+ .version(VERSION, "-V, --version")
110
+ .showHelpAfterError();
111
+ registerRootGlobalOptions(program);
112
+ // Listed in the root help.
113
+ program.addCommand(makeCommand);
114
+ program.addCommand(authCommand);
115
+ program.addCommand(balanceCommand);
116
+ program.addCommand(resourcesCommand);
117
+ program.addCommand(apiCommand);
118
+ // Registered and supported, but indexed by `meshy resources` rather than
119
+ // printed on every --help. Hiding is a help-text decision only: these keep
120
+ // working exactly as before, and the surface tests walk them either way.
121
+ for (const cmd of [
122
+ textTo3dCommand,
123
+ imageTo3dCommand,
124
+ multiImageTo3dCommand,
125
+ remeshCommand,
126
+ convertCommand,
127
+ resizeCommand,
128
+ riggingCommand,
129
+ animateCommand,
130
+ retextureCommand,
131
+ textToImageCommand,
132
+ imageToImageCommand,
133
+ multiColorPrintCommand,
134
+ analyzePrintabilityCommand,
135
+ repairPrintabilityCommand,
136
+ deleteCommand,
137
+ ]) {
138
+ program.addCommand(cmd, { hidden: true });
139
+ }
140
+ // Hidden self-command used by the detached background cache-refresh child.
141
+ // commander v13: .command(name, { hidden: true }) with NO description arg.
142
+ program.command(REFRESH_COMMAND, { hidden: true }).action(async () => {
143
+ await runRefreshCommand();
144
+ });
145
+ mirrorGlobalOptionsToDescendants(program);
146
+ return program;
147
+ }
148
+ //# sourceMappingURL=root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@meshy-ai/cli",
3
+ "version": "0.1.0",
4
+ "description": "Official command-line interface for the Meshy AI API — text-to-3D, image-to-3D, remesh, rigging, animate, retexture, 2D images, multi-color print, balance.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "packageManager": "pnpm@11.18.0",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/meshy-dev/meshy-cli.git"
11
+ },
12
+ "homepage": "https://github.com/meshy-dev/meshy-cli#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/meshy-dev/meshy-cli/issues"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "keywords": [
20
+ "meshy",
21
+ "meshy-ai",
22
+ "cli",
23
+ "3d",
24
+ "text-to-3d",
25
+ "image-to-3d",
26
+ "rigging",
27
+ "animation"
28
+ ],
29
+ "bin": {
30
+ "meshy-cli": "./dist/index.js",
31
+ "meshy": "./dist/index.js"
32
+ },
33
+ "main": "dist/index.js",
34
+ "types": "dist/index.d.ts",
35
+ "files": [
36
+ "dist",
37
+ "README.md",
38
+ "LICENSE",
39
+ ".env.example",
40
+ "skills"
41
+ ],
42
+ "engines": {
43
+ "node": ">=20"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "clean": "rm -rf dist",
48
+ "dev": "tsx src/index.ts",
49
+ "start": "node dist/index.js",
50
+ "test": "tsx --test tests/**/*.test.ts",
51
+ "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.test.json",
52
+ "prepare": "test -f dist/index.js || npm run build",
53
+ "prepublishOnly": "npm run clean && npm run build"
54
+ },
55
+ "dependencies": {
56
+ "commander": "^13.0.0",
57
+ "sharp": "^0.34.5",
58
+ "zod": "^3.23.8"
59
+ },
60
+ "devDependencies": {
61
+ "@types/node": "^22.9.0",
62
+ "tsx": "^4.19.2",
63
+ "typescript": "^5.6.3"
64
+ }
65
+ }
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: meshy-cli
3
+ description: "Generate 3D models and 2D images with the Meshy API through the meshy-cli command — text-to-3D, image-to-3D, remesh, rigging, animation, retexture, printability. Use for any Meshy asset request."
4
+ license: MIT
5
+ compatibility: Requires meshy-cli on PATH and a stored credential or MESHY_API_KEY; network access to api.meshy.ai
6
+ metadata:
7
+ version: "1.0.0"
8
+ cli-help: "meshy --help"
9
+ ---
10
+
11
+ # meshy-cli
12
+
13
+ ## Setup
14
+
15
+ `npm i -g meshy-cli`, then `meshy auth login` (browser) or
16
+ `meshy auth login --with-key msy_...`. `MESHY_API_KEY` also works and wins over
17
+ a stored profile, which is what CI wants. Never echo the key back or write it
18
+ into a shell profile.
19
+
20
+ ## One model, one command
21
+
22
+ ```bash
23
+ meshy make "a red sports car" -o car.glb # prompt → text-to-3d preview → refine
24
+ meshy make ./cat.png -o out/cat/ # image → image-to-3d, textured
25
+ meshy make "a red sports car" --dry-run # planned steps + estimate, no spend
26
+ meshy make "..." --max-credits 25 # refuse to start over budget
27
+ ```
28
+
29
+ The input decides the chain and nothing else does. If step 2 fails, the error's
30
+ `hint` is the command that resumes from step 1's task — run it verbatim rather
31
+ than starting over, or the finished step is paid for twice.
32
+
33
+ ## Everything else
34
+
35
+ `meshy resources` indexes the 16 endpoint commands; each carries the same verbs:
36
+
37
+ ```bash
38
+ meshy <resource> create [flags] [--data '<json>'] [--async] [--timeout <s>]
39
+ meshy <resource> get|wait|delete <task-id>
40
+ meshy <resource> list [--page-size <n>]
41
+ ```
42
+
43
+ `create` blocks until the task is terminal; `--async` returns the id instead.
44
+ `-o <path>` downloads artifacts (a directory for multi-file results) and writes
45
+ a `meta.json` sidecar; without `-o`, stdout is the task JSON — parse ids from
46
+ there, never from text shown in chat. `--data '<json>'` reaches any field the
47
+ CLI has no flag for, and `meshy api <METHOD> <PATH>` reaches any endpoint it has
48
+ no command for.
49
+
50
+ ## Constraints that will bite
51
+
52
+ These are API rules, not preferences — ignoring them produces failed tasks:
53
+
54
+ - **`refine` only works on a `text-to-3d` preview** (it consumes that task's
55
+ latents). Uploaded models, `image-to-3d` output and remeshed meshes are
56
+ textured with `retexture` instead.
57
+ - **`rigging` needs a textured biped GLB** under 300k faces, with clear limbs —
58
+ not props, quadrupeds or untextured drafts. Too dense? `remesh` first. A
59
+ successful rigging task already bundles walking and running clips, so check
60
+ its result before calling `animate`.
61
+ - **`animate` takes a rigging task id**, not a model task id, plus an integer
62
+ `--action-id`.
63
+ - **`repair-printability` drops textures and invalidates UVs.** Run it before
64
+ texturing, or re-`retexture` afterwards.
65
+ - **`multi-image-to-3d` is beta**; use `image-to-3d` unless multi-view input was
66
+ explicitly asked for.
67
+ - `image-to-3d` defaults to an untextured draft mesh; `--should-texture true`
68
+ (what `make` uses) produces a textured model in one task.
69
+
70
+ ## Finding an animation id
71
+
72
+ `--action-id` is an integer from Meshy's animation library. Look it up from the
73
+ public catalog — no key required:
74
+
75
+ ```bash
76
+ curl -s "https://api.meshy.ai/web/public/animations/resources" \
77
+ | jq -r '.result.list[] | select(.category=="Fighting") | "\(.id)\t\(.name)"'
78
+ ```
79
+
80
+ Categories: WalkAndRun, BodyMovements, DailyActions, Fighting, Dancing.
81
+ `?category=Fighting` narrows the response; other query parameters are ignored.
82
+
83
+ ## When something fails
84
+
85
+ Exit codes: `0` ok · `2` usage · `3` auth · `4` validation · `5` not found ·
86
+ `6` rate limit · `7` network · `8` timed out · `9` out of credits.
87
+
88
+ - Exit 9 → run `meshy balance`, relay the number, do not retry.
89
+ - Exit 6 → back off; the CLI does not retry for you.
90
+ - A `FAILED` task → relay `task_error.message` verbatim; do not guess a cause.
91
+ - Any error payload may carry `hint` — a command to run. Prefer it over
92
+ improvising.
93
+
94
+ JSON object output may also carry `_notice.update` when a newer meshy-cli
95
+ exists; pass its `command` on to the user.
96
+
97
+ ## Docs
98
+
99
+ Endpoint reference and pricing: https://docs.meshy.ai/en/api/