tripo-cli 0.6.0 → 0.6.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/README.md CHANGED
@@ -35,7 +35,7 @@ Works with both Tripo regions from the same install — international (`openapi.
35
35
  | `tripo login / logout / whoami / use` | device flow: browser approves, key arrives automatically (paste fallback); stored 0600 in `~/.tripo/config.json`; `use` switches accounts |
36
36
  | `tripo topup / balance / usage` | open the billing page + detect the credits arriving; check spend |
37
37
  | `tripo generate <endpoint>` | deterministic access to all 8 generation endpoints |
38
- | `tripo model / anim / mesh <step>` | refine, texture, stylize, convert, import, rig-check, rig, retarget, segment, complete, decimate, uv, smartsegment |
38
+ | `tripo model / anim / mesh <step>` | refine, texture, convert, import, rig-check, rig, retarget, segment, complete, decimate, uv, smartsegment |
39
39
  | `tripo task get/list/watch` | query and stream task progress (NDJSON in `--json` mode) |
40
40
  | `tripo files upload` | upload a file, print the `file_token` |
41
41
  | `tripo batch run <manifest.yaml>` | bulk pipelines with concurrency, retries, and resume |
@@ -32,7 +32,7 @@ const SPECIALIST_PROMPTS = {
32
32
  print: `You are a 3D-printing engineer. Geometry only (texture=false,pbr=false), watertight meshes, flatten_bottom for FDM, STL or colored 3MF via convert, real-world sizing via scale_factor/auto_size.`,
33
33
  'ar-web': `You are a realtime AR/Web 3D engineer. Keep faces <= 20000 via decimate, 2K textures, deliver GLB + USDZ (iOS QuickLook).`,
34
34
  anim: `You are a character animation TD. Chain: rig-check → rig (v2.5 rig, spec tripo|mixamo) → retarget (<=5 preset animations, billed per animation). Mixamo/Unity Humanoid → spec=mixamo.`,
35
- toy: `You are a stylized collectible designer. P1 low-poly or stylize steps (lego/voxel/voronoi/minecraft). STL via convert for physical prints.`,
35
+ toy: `You are a stylized collectible designer. P1 low-poly. STL via convert for physical prints.`,
36
36
  };
37
37
  function specialistSystem(scenarioId) {
38
38
  const persona = SPECIALIST_PROMPTS[scenarioId] ?? SPECIALIST_PROMPTS['game-mobile'];
@@ -9,7 +9,7 @@ const COMMANDS = [
9
9
  ];
10
10
  const SUBS = {
11
11
  generate: ['text-to-model', 'image-to-model', 'multiview-to-model', 'text-to-image', 'image-to-image', 'image-to-multiview', 'edit-multiview', 'image-to-splat'],
12
- model: ['refine', 'texture', 'stylize', 'convert', 'import'],
12
+ model: ['refine', 'texture', 'convert', 'import'],
13
13
  anim: ['check', 'rig', 'retarget'],
14
14
  mesh: ['segment', 'complete', 'decimate', 'uv', ...(isMeshEditEnabled() ? ['edit'] : []), 'smartsegment'],
15
15
  task: ['get', 'list', 'watch'],
@@ -70,8 +70,6 @@ function collectStepArgs(step, flags) {
70
70
  return pick(['format', 'texture_size', 'texture_format', 'face_limit', 'quad', 'flatten_bottom', 'fbx_preset', 'export_orientation', 'scale_factor', 'auto_size', 'pivot_to_center_bottom', 'export_vertex_colors']);
71
71
  case 'texture':
72
72
  return pick(['model', 'texture_quality', 'texture_alignment', 'pbr']);
73
- case 'stylize':
74
- return pick(['style', 'block_size']);
75
73
  case 'rig':
76
74
  return pick(['model', 'rig_type', 'spec', 'out_format']);
77
75
  case 'retarget':
@@ -94,18 +92,13 @@ function collectStepArgs(step, flags) {
94
92
  }
95
93
  export function registerProcessCommands(program) {
96
94
  // ---- tripo model ----
97
- const model = program.command('model').description('model processing: refine / texture / stylize / convert / import');
95
+ const model = program.command('model').description('model processing: refine / texture / convert / import');
98
96
  withTaskOptions(model.command('refine [input]').description('refine a draft text-to-model task (task id / @last)')).action(makeStepAction('refine'));
99
97
  withTaskOptions(model
100
98
  .command('texture [input]')
101
99
  .description('re-texture a model (task/@last/file/url)')
102
100
  .option('--texture-quality <q>', 'standard|detailed|extreme')
103
101
  .option('--texture-alignment <a>', 'original_image|geometry')).action(makeStepAction('texture'));
104
- withTaskOptions(model
105
- .command('stylize [input]')
106
- .description('stylize a model (lego/voxel/voronoi/minecraft)')
107
- .option('--style <style>', 'lego|voxel|voronoi|minecraft')
108
- .option('--block-size <n>', 'minecraft block size 32-128', (v) => Number(v))).action(makeStepAction('stylize'));
109
102
  withTaskOptions(model
110
103
  .command('convert [input]')
111
104
  .description('convert format (GLTF/USDZ/FBX/OBJ/STL/3MF)')
@@ -165,12 +165,6 @@ export function buildStepRequest(stepName, input, args) {
165
165
  }
166
166
  break;
167
167
  }
168
- case 'stylize': {
169
- if (typeof params.style !== 'string') {
170
- throw new UsageError('stylize requires style (lego/voxel/voronoi/minecraft)');
171
- }
172
- break;
173
- }
174
168
  case 'smartsegment': {
175
169
  if (params.seg_type === undefined)
176
170
  params.seg_type = 'model';
@@ -24,7 +24,6 @@ export const MODEL_PRODUCING_TYPES = new Set([
24
24
  export const STEPS = [
25
25
  { name: 'refine', endpoint: '/v3/models/refine', produces: 'refine_model', accepts: ['text_to_model'], acceptsFile: false, describe: { zh: '精修文生模型的几何细节', en: 'refine geometry of a text-to-model result' } },
26
26
  { name: 'texture', endpoint: '/v3/models/texture', produces: 'texture_model', accepts: 'any-model', acceptsFile: true, describe: { zh: '重新生成贴图 / PBR 材质', en: 'regenerate textures / PBR materials' } },
27
- { name: 'stylize', endpoint: '/v3/models/stylize', produces: 'stylize_model', accepts: 'any-model', acceptsFile: true, describe: { zh: '按风格重塑模型(lego/voxel/...)', en: 'restyle the model (lego/voxel/...)' } },
28
27
  { name: 'convert', endpoint: '/v3/models/convert', produces: 'convert_model', accepts: 'any-model', acceptsFile: true, describe: { zh: '转换输出格式 / 贴图尺寸 / 朝向', en: 'convert format / texture size / orientation' } },
29
28
  { name: 'import', endpoint: '/v3/models/import', produces: 'import_model', accepts: [], acceptsFile: true, describe: { zh: '导入本地模型文件作为加工起点', en: 'import a local model file as the chain source' } },
30
29
  { name: 'rig-check', endpoint: '/v3/animations/rig-check', produces: 'animate_prerigcheck', accepts: 'any-model', acceptsFile: true, passthrough: true, aliases: ['check', 'rigcheck'], describe: { zh: '检查是否可绑骨(不产出模型,不可绑则止损)', en: 'check riggability (no model output; stops the chain if not riggable)' } },
@@ -71,7 +70,7 @@ export function getStep(name) {
71
70
  * Parse a --then expression: "texture,rig,convert:fbx" or
72
71
  * "convert:format=fbx,texture_size=2048". A bare value after ":" is sugar for
73
72
  * the step's primary argument (convert→format, retarget→animation,
74
- * stylize→style, decimate→face_limit).
73
+ * decimate→face_limit).
75
74
  */
76
75
  export function parseThenExpression(expr) {
77
76
  const out = [];
@@ -116,7 +115,6 @@ function applyPrimaryArg(step, args, value) {
116
115
  const primary = {
117
116
  convert: 'format',
118
117
  retarget: 'animation',
119
- stylize: 'style',
120
118
  decimate: 'face_limit',
121
119
  texture: 'texture_quality',
122
120
  rig: 'rig_type',
@@ -139,7 +139,6 @@ export const TEXTURE_FORMATS = [
139
139
  ];
140
140
  export const FBX_PRESETS = ['blender', '3dsmax', 'mixamo'];
141
141
  export const EXPORT_ORIENTATIONS = ['+x', '-x', '+y', '-y'];
142
- export const STYLIZE_STYLES = ['lego', 'voxel', 'voronoi', 'minecraft'];
143
142
  export const TEXTURE_QUALITIES = ['standard', 'detailed', 'extreme'];
144
143
  /** Normalize any accepted alias to the canonical wire value; unknown values pass through. */
145
144
  export function normalizeModel(input) {
@@ -92,14 +92,14 @@ export const SCENARIOS = [
92
92
  {
93
93
  id: 'toy',
94
94
  label: { zh: '风格化摆件', en: 'Stylized toy / desk piece' },
95
- description: { zh: '低模可爱风或积木/体素风格化', en: 'Cute low-poly or brick/voxel stylization' },
95
+ description: { zh: '低模可爱风摆件', en: 'Cute low-poly desk piece' },
96
96
  model: MODEL_P1,
97
97
  genParams: { texture: true, pbr: true, face_limit: 20000 },
98
98
  chain: [],
99
99
  deliverables: ['GLB', 'STL via convert'],
100
100
  notes: {
101
- zh: ['P1 出干净低模', '积木/体素风追加 --then stylize:lego 或 stylize:voxel', '要打印实物追加 --then convert:stl'],
102
- en: ['P1 produces clean low-poly', 'append --then stylize:lego or stylize:voxel for brick/voxel looks', 'append --then convert:stl to print it'],
101
+ zh: ['P1 出干净低模', '要打印实物追加 --then convert:stl'],
102
+ en: ['P1 produces clean low-poly', 'append --then convert:stl to print it'],
103
103
  },
104
104
  },
105
105
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tripo-cli",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Tripo 3D intelligent CLI — turn a prompt or an image into engine-ready 3D assets from your terminal (Tripo V3 API)",
5
5
  "keywords": [
6
6
  "tripo",
package/skill/SKILL.md CHANGED
@@ -50,8 +50,8 @@ tripo make @last --then convert:fbx --json --yes # continue from last t
50
50
  ```
51
51
 
52
52
  - `--for` scenario presets: `game-mobile` `game-pc` `film` `print` `ar-web` `anim` `toy`
53
- - `--then` chain steps: `refine texture stylize convert import rig-check rig retarget segment complete decimate uv smartsegment`
54
- - step args: `convert:format=FBX,texture_size=2048` (bare value = primary arg: `convert:fbx`, `stylize:lego`, `decimate:5000`)
53
+ - `--then` chain steps: `refine texture convert import rig-check rig retarget segment complete decimate uv smartsegment`
54
+ - step args: `convert:format=FBX,texture_size=2048` (bare value = primary arg: `convert:fbx`, `decimate:5000`)
55
55
  - Output JSON: `{"task_id","type","status","credits_consumed","output_dir","files",["model_file"],["preview"],["chain"],["credits_breakdown"]}` — with `--then`, `credits_consumed` is the **total** for the run and `credits_breakdown` itemizes every task (`[{task_id,type,credits_consumed}]`, generation first)
56
56
 
57
57
  ## Pipes (composing steps yourself)
@@ -40,7 +40,7 @@ In a TTY it then asks `Run this plan?`; answering no exits 0 with `cancelled; no
40
40
  ## Options
41
41
 
42
42
  - `--for <scenario>` — `game-mobile` `game-pc` `film` `print` `ar-web` `anim` `toy`. Sets model+params+chain+format from the domain knowledge base.
43
- - `--then <steps>` — processing chain, comma-separated. Steps: `refine texture stylize convert import rig-check rig retarget segment complete decimate uv smartsegment`. Args: `step:key=value,...`; bare value maps to the step's primary arg (`convert:fbx` → format, `stylize:lego` → style, `decimate:5000` → face_limit, `retarget:preset:walk` → animation). Overrides the scenario chain.
43
+ - `--then <steps>` — processing chain, comma-separated. Steps: `refine texture convert import rig-check rig retarget segment complete decimate uv smartsegment`. Args: `step:key=value,...`; bare value maps to the step's primary arg (`convert:fbx` → format, `decimate:5000` → face_limit, `retarget:preset:walk` → animation). Overrides the scenario chain.
44
44
  - `--model <m>` — force `tripo-v3.1` (high fidelity, default), `tripo-p1` (low-poly; face_limit 50–20000; quad/parts/geometry_quality unsupported and stripped) or `tripo-p2` (P-series preview; adds quad, face_limit 48–50000 tri / 48–25000 quad; never auto-selected). The CLI normalizes these aliases to the wire versions (`v3.1-20260211` / `P1-20260311` / `P2-20260801`) the server actually accepts. Full table with status (GA / Preview / Legacy) and official links: `tripo docs --topic commands/generate` → "Models & Versions".
45
45
  - `-n, --candidates <n>` — up to 4 parallel candidates with different seeds (interactive pick when chaining).
46
46
  - `--seed <n>` — fixed model_seed for reproducible geometry.
@@ -9,7 +9,6 @@ Any API parameter without a first-class flag can be passed with `-p key=value` (
9
9
  ```bash
10
10
  tripo model refine [input] # only accepts text_to_model tasks
11
11
  tripo model texture [input] --texture-quality detailed --texture-alignment geometry [-p pbr=true]
12
- tripo model stylize [input] --style lego|voxel|voronoi|minecraft [--block-size 80]
13
12
  tripo model convert [input] --format GLTF|USDZ|FBX|OBJ|STL|3MF \
14
13
  [--texture-size 2048] [--texture-format JPEG|PNG|OPEN_EXR|...] [--face-limit N] \
15
14
  [--quad] [--flatten-bottom] [--fbx-preset blender|3dsmax|mixamo] \
@@ -22,7 +21,6 @@ tripo model import <file-or-url> # GLB/GLTF/FBX/OBJ/STL ≤150MB
22
21
  | --- | --- | --- |
23
22
  | `refine` | successful `text_to_model` task only | `model` (default `tripo-v3.1`) |
24
23
  | `texture` | task / file / URL (file/URL is imported implicitly) | `model` `v3.0-20250812` (default) / `v2.5-20250123`; `texture_quality` standard/detailed/extreme; `pbr` (default true); `texture_seed`; `texture_alignment` original_image/geometry |
25
- | `stylize` | task / file (no URL) | `style` lego/voxel/voronoi/minecraft; `block_size` 32–128 (minecraft only, default 80) |
26
24
  | `convert` | task / file | see table below; `format` required |
27
25
  | `import` | file / URL | GLB / GLTF / FBX / OBJ / STL ≤150 MB. `.gltf` references external files, so it only works as a URL — upload `.glb` |
28
26