makaron-cli 0.13.2 → 0.13.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makaron-cli",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "AI image editing, video generation, music creation, and marketplace skill workflows via CLI. Agents can self-register, install skills, create projects, and produce creative media.",
5
5
  "author": {
6
6
  "name": "Makaron AI",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makaron-cli",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "AI image editing, video generation, music creation, and marketplace skill workflows via CLI. Agents can self-register, install skills, create projects, and produce creative media.",
5
5
  "displayName": "Makaron",
6
6
  "shortDescription": "AI image/video/music creation from the terminal",
package/README.md CHANGED
@@ -96,12 +96,9 @@ npx makaron-cli chat --project <id> --json -b "<prompt>"
96
96
  # Auto-create project (with or without images)
97
97
  npx makaron-cli chat --project auto --image photo.jpg --json -b "make it cinematic"
98
98
  npx makaron-cli chat --project auto --image img1.jpg --image img2.jpg --json -b "combine these"
99
-
100
- # Choose each model role explicitly
101
- npx makaron-cli chat --project auto --agent-model deepseek-v4-pro --image-model qwen "design a product poster"
102
99
  ```
103
100
 
104
- Model flags are role-specific: `--agent-model` controls reasoning and tool use, `--image-model` controls image generation/editing, and `--video-model` controls video generation. `--agent-model` accepts `auto|gpt-5.6-terra|gpt-5.6-sol|gpt-5.6-luna|grok-4.5|deepseek-v4-pro`. `auto` currently uses GPT-5.6 Terra. `MAKARON_AGENT_MODEL` can set the default for automation; the command flag takes precedence. The legacy `--model` flag remains temporarily supported with a deprecation warning.
101
+ `chat` always routes agent, image, and video models automatically. Never pass `--agent-model`, `--image-model`, `--video-model`, or the legacy `--model` flag to `chat`; the CLI rejects them before starting a run. Model flags remain available only on explicit low-level commands such as `edit` and `video create`.
105
102
 
106
103
  Returns immediately:
107
104
  ```json
@@ -118,7 +115,7 @@ Returns immediately:
118
115
  | Fix one moment in a video from a screenshot | `npx makaron-cli chat --project <id> --image screenshot.png "@4 this frame should be Paris; only fix this moment"` |
119
116
  | Cut or assemble video | `npx makaron-cli chat --project <id> --video clip.mp4 "cut out the dead air and keep the best 20 seconds"` |
120
117
  | Add music | `npx makaron-cli chat --project <id> "add calm piano background music"` |
121
- | Beat-sync video from audio | `npx makaron-cli chat --project auto --audio beat.mp3 --video-model seedance-fast --video-resolution 480p "make a beat-synced video"` |
118
+ | Beat-sync video from audio | `npx makaron-cli chat --project auto --audio beat.mp3 --video-resolution 480p "make a beat-synced video"` |
122
119
  | Create motion design | `npx makaron-cli chat --project <id> "make an animated Instagram story with this image"` |
123
120
 
124
121
  ### Marketplace skills
@@ -219,7 +216,6 @@ Attach a short song, beat, or voice recording when the video should follow audio
219
216
  ```bash
220
217
  npx makaron-cli chat --project auto \
221
218
  --audio beat.mp3 \
222
- --video-model seedance-fast \
223
219
  --video-resolution 480p \
224
220
  -b "make a 15s beat-synced video"
225
221
  ```
package/bin/makaron.mjs CHANGED
@@ -27,7 +27,6 @@ const APP_URL = process.env.MAKARON_APP_URL || DEFAULT_URL;
27
27
  const NPM_PACKAGE_NAME = 'makaron-cli';
28
28
  const UPDATE_CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
29
29
  const UPDATE_CHECK_TIMEOUT_MS = 400;
30
- const AGENT_MODELS = ['auto', 'gpt-5.6-terra', 'gpt-5.6-sol', 'gpt-5.6-luna', 'grok-4.5', 'deepseek-v4-pro'];
31
30
  const AGENT_WAIT_TIMEOUT_SECONDS = Math.max(900, Number(process.env.MAKARON_AGENT_WAIT_TIMEOUT_SECONDS || 10_800));
32
31
 
33
32
  // Public anon key (safe to embed — only enables auth, not data access)
@@ -56,14 +55,6 @@ function warnLegacyModelFlag(replacement) {
56
55
  process.stderr.write(`⚠️ --model is deprecated here; use ${replacement}.\n`);
57
56
  }
58
57
 
59
- function validateAgentModel(value) {
60
- if (!AGENT_MODELS.includes(value)) {
61
- process.stderr.write(`❌ Unknown agent model: ${value}\nChoose one of: ${AGENT_MODELS.join(', ')}\n`);
62
- process.exit(1);
63
- }
64
- return value;
65
- }
66
-
67
58
  function getCliVersion() {
68
59
  try {
69
60
  const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
@@ -291,15 +282,15 @@ Options:
291
282
  --video <file|url> Attach a video to the project timeline. Repeatable.
292
283
  --audio <file|url> Attach a song, beat, or voice reference. MP3/WAV, repeatable.
293
284
  --skill <id|label|name> Use an installed skill or auto-install a matched marketplace skill.
294
- --image-model <name> Image model: gemini, gemini-lite, qwen, openai, pony, or wai.
295
- --video-model <name> Preferred video model: seedance-fast, seedance-mini, seedance, kling, grok, or google-omni.
296
- --agent-model <name> Agent model: auto, gpt-5.6-terra, gpt-5.6-sol, gpt-5.6-luna, grok-4.5, or deepseek-v4-pro.
297
285
  --video-resolution <res> Video resolution: auto, 480p, 720p, 1080p, or 4k.
298
286
  --background, -b Submit and print a runId.
299
287
  --json Output structured JSON.
300
288
  --stream Legacy live SSE stream.
301
289
  --help, -h Show this help.
302
290
 
291
+ Model routing is automatic in chat. Do not pass --agent-model, --image-model,
292
+ --video-model, or the legacy --model flag.
293
+
303
294
  What you can ask:
304
295
  Image edit
305
296
  makaron chat --project <id> --image photo.jpg "remove the person in the background"
@@ -323,7 +314,7 @@ What you can ask:
323
314
  makaron chat --project <id> "add calm piano background music"
324
315
 
325
316
  Reference audio / beat sync
326
- makaron chat --project auto --audio beat.mp3 --video-model seedance-fast --video-resolution 480p "用这个音乐做卡点视频"
317
+ makaron chat --project auto --audio beat.mp3 --video-resolution 480p "用这个音乐做卡点视频"
327
318
  makaron chat --project <id> --audio https://example.com/beat.mp3 "add this as the soundtrack"
328
319
 
329
320
  Motion design
@@ -360,10 +351,7 @@ async function streamAgent(baseUrl, headers, projectId, prompt, opts = {}) {
360
351
  projectId,
361
352
  prompt,
362
353
  headless: true,
363
- ...(opts.preferredModel ? { preferredModel: opts.preferredModel } : {}),
364
- ...(opts.videoModel ? { videoModel: opts.videoModel } : {}),
365
354
  ...(opts.videoResolution ? { videoResolution: opts.videoResolution } : {}),
366
- ...(opts.agentModel && opts.agentModel !== 'auto' ? { agentModel: opts.agentModel } : {}),
367
355
  ...(opts.uploadedVideoCount ? { uploadedVideoCount: opts.uploadedVideoCount } : {}),
368
356
  ...(opts.turnMediaCount ? { turnMediaCount: opts.turnMediaCount } : {}),
369
357
  }),
@@ -472,9 +460,6 @@ async function streamAgent(baseUrl, headers, projectId, prompt, opts = {}) {
472
460
 
473
461
  async function submitRun(baseUrl, headers, projectId, prompt, opts = {}) {
474
462
  const body = { projectId, prompt };
475
- if (opts.preferredModel) body.preferredModel = opts.preferredModel;
476
- if (opts.agentModel && opts.agentModel !== 'auto') body.agentModel = opts.agentModel;
477
- if (opts.videoModel) body.videoModel = opts.videoModel;
478
463
  if (opts.videoResolution) body.videoResolution = opts.videoResolution;
479
464
  if (opts.currentSnapshotIndex != null) body.currentSnapshotIndex = opts.currentSnapshotIndex;
480
465
  if (opts.isNsfw) body.isNsfw = opts.isNsfw;
@@ -1634,26 +1619,17 @@ Commands:
1634
1619
 
1635
1620
  admin Admin commands (skills, upload, set-admin)
1636
1621
 
1637
- Model selection:
1638
- --agent-model <name> Reasoning/tool model: auto, gpt-5.6-terra, gpt-5.6-sol,
1639
- gpt-5.6-luna, grok-4.5, or deepseek-v4-pro
1640
- --image-model <name> Image model: gemini, gemini-lite, qwen, openai,
1641
- pony, or wai
1642
- --video-model <name> Video model: seedance-fast, seedance-mini, seedance,
1643
- kling, grok, or google-omni
1644
-
1645
1622
  Examples:
1646
- makaron chat --project auto --agent-model deepseek-v4-pro "plan a launch poster"
1647
- makaron chat --project <id> --agent-model gpt-5.6-terra --image-model qwen "make it cinematic"
1648
- makaron chat --project <id> --video-model seedance-fast "turn this into a short video"
1623
+ makaron chat --project auto "plan a launch poster"
1624
+ makaron chat --project <id> "make it cinematic"
1625
+ makaron chat --project <id> "turn this into a short video"
1649
1626
 
1650
1627
  Run makaron <command> --help for command-specific options.
1651
- The legacy --model flag is deprecated; use the role-specific flags above.
1628
+ Chat chooses agent, image, and video models automatically.
1652
1629
 
1653
1630
  Environment:
1654
1631
  MAKARON_API_KEY API key (mk_live_xxx) — recommended for agents
1655
1632
  MAKARON_URL API base (default: ${DEFAULT_URL})
1656
- MAKARON_AGENT_MODEL Default Agent model; --agent-model takes precedence
1657
1633
  `);
1658
1634
  }
1659
1635
 
@@ -1744,8 +1720,6 @@ function printHelp(topic, subtopic) {
1744
1720
  else if (subtopic === 'install') console.log('Usage: makaron skills install <marketplace-id|label> [--json]');
1745
1721
  else console.log(`Skill commands:
1746
1722
  skills list --built-in List all built-in Makaron skills and Studio Run recipes
1747
- skills list --built-in --openmontage
1748
- List OpenMontage-native adapters only
1749
1723
  skills list List marketplace skills
1750
1724
  skills search <query> Search marketplace skills
1751
1725
  skills show <id|label> --built-in Show a built-in skill
@@ -1888,10 +1862,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
1888
1862
  let background = false;
1889
1863
  let jsonOutput = false;
1890
1864
  let activeSkill = undefined;
1891
- let videoModel = undefined;
1892
1865
  let videoResolution = undefined;
1893
- let preferredModel = undefined;
1894
- let agentModel = process.env.MAKARON_AGENT_MODEL || 'auto';
1895
1866
  for (let i = 1; i < args.length; i++) {
1896
1867
  if (args[i] === '--project' && args[i + 1]) projectId = args[++i];
1897
1868
  else if (args[i] === '--image' && args[i + 1]) chatImages.push(args[++i]);
@@ -1902,13 +1873,14 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
1902
1873
  else if (args[i] === '--stream') useStream = true;
1903
1874
  else if (args[i] === '--background' || args[i] === '-b') background = true;
1904
1875
  else if (args[i] === '--json') jsonOutput = true;
1905
- else if (args[i] === '--video-model' && args[i + 1]) videoModel = args[++i];
1906
1876
  else if (args[i] === '--video-resolution' && args[i + 1]) videoResolution = args[++i];
1907
- else if (args[i] === '--image-model' && args[i + 1]) preferredModel = args[++i];
1908
- else if (args[i] === '--agent-model' && args[i + 1]) agentModel = args[++i];
1909
- else if (args[i] === '--model' && args[i + 1]) {
1910
- warnLegacyModelFlag('--image-model');
1911
- preferredModel = args[++i];
1877
+ else if (
1878
+ ['--agent-model', '--image-model', '--video-model', '--model'].includes(args[i])
1879
+ || ['--agent-model=', '--image-model=', '--video-model=', '--model='].some(prefix => args[i].startsWith(prefix))
1880
+ ) {
1881
+ const flag = args[i].split('=')[0];
1882
+ process.stderr.write(`❌ makaron chat chooses agent, image, and video models automatically. Remove ${flag} and retry.\n`);
1883
+ process.exit(1);
1912
1884
  }
1913
1885
  else promptParts.push(args[i]);
1914
1886
  }
@@ -1918,7 +1890,6 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
1918
1890
  console.error('Run: makaron chat --help');
1919
1891
  process.exit(1);
1920
1892
  }
1921
- agentModel = validateAgentModel(agentModel);
1922
1893
  const { headers, baseUrl } = getAuth();
1923
1894
  // Split images into URLs vs local files
1924
1895
  const imageUrlList = chatImages.filter(p => p.startsWith('http://') || p.startsWith('https://'));
@@ -2108,10 +2079,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2108
2079
  if (useStream) {
2109
2080
  // Legacy SSE mode
2110
2081
  const { results } = await streamAgent(baseUrl, headers, projectId, finalPrompt, {
2111
- videoModel,
2112
2082
  videoResolution,
2113
- preferredModel,
2114
- agentModel,
2115
2083
  uploadedVideoCount: uploadedTurnVideoCount,
2116
2084
  turnMediaCount: uploadedTurnMediaCount,
2117
2085
  });
@@ -2124,10 +2092,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2124
2092
  } else {
2125
2093
  // Default: fire-and-forget + poll
2126
2094
  const { runId } = await submitRun(baseUrl, headers, projectId, finalPrompt, {
2127
- videoModel,
2128
2095
  videoResolution,
2129
- preferredModel,
2130
- agentModel,
2131
2096
  audioAttachments,
2132
2097
  uploadedVideoCount: uploadedTurnVideoCount,
2133
2098
  turnMediaCount: uploadedTurnMediaCount,
@@ -2320,10 +2285,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2320
2285
 
2321
2286
  if (sub === 'list') {
2322
2287
  const builtIn = args.includes('--built-in');
2323
- let skills = builtIn ? await fetchBuiltInSkills(baseUrl) : await fetchMarketplaceSkills(baseUrl);
2324
- if (builtIn && args.includes('--openmontage')) {
2325
- skills = skills.filter(skill => skill.sourceProject === 'openmontage');
2326
- }
2288
+ const skills = builtIn ? await fetchBuiltInSkills(baseUrl) : await fetchMarketplaceSkills(baseUrl);
2327
2289
  if (jsonOutput) console.log(JSON.stringify({ skills }, null, 2));
2328
2290
  else if (builtIn) printBuiltInSkills(skills);
2329
2291
  else printMarketplaceSkills(skills);
@@ -2365,8 +2327,6 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2365
2327
  } else {
2366
2328
  console.log(`Skill commands:
2367
2329
  skills list --built-in List all built-in Makaron skills and Studio Run recipes
2368
- skills list --built-in --openmontage
2369
- List OpenMontage-native adapters only
2370
2330
  skills list List marketplace skills
2371
2331
  skills search <query> Search marketplace skills
2372
2332
  skills show <id|label> --built-in Show a built-in skill
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makaron-cli",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "Talk to Makaron Agent from the terminal — create projects, edit images, generate videos",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -83,12 +83,9 @@ npx makaron-cli chat --project <id> --json -b "<prompt>"
83
83
  # Auto-create project (with or without images)
84
84
  npx makaron-cli chat --project auto --image photo.jpg --json -b "make it cinematic"
85
85
  npx makaron-cli chat --project auto --image img1.jpg --image img2.jpg --json -b "combine these"
86
-
87
- # Choose each model role explicitly
88
- npx makaron-cli chat --project auto --agent-model deepseek-v4-pro --image-model qwen "design a product poster"
89
86
  ```
90
87
 
91
- Model flags are role-specific: `--agent-model` controls reasoning and tool use, `--image-model` controls image generation/editing, and `--video-model` controls video generation. `--agent-model` accepts `auto|gpt-5.6-terra|gpt-5.6-sol|gpt-5.6-luna|grok-4.5|deepseek-v4-pro`. `auto` currently uses GPT-5.6 Terra. `MAKARON_AGENT_MODEL` can set the default for automation; the command flag takes precedence. The legacy `--model` flag remains temporarily supported with a deprecation warning.
88
+ `chat` always routes agent, image, and video models automatically. Never pass `--agent-model`, `--image-model`, `--video-model`, or the legacy `--model` flag to `chat`; the CLI rejects them before starting a run. Model flags remain available only on explicit low-level commands such as `edit` and `video create`.
92
89
 
93
90
  Returns immediately:
94
91
  ```json
@@ -105,7 +102,7 @@ Returns immediately:
105
102
  | Fix one moment in a video from a screenshot | `npx makaron-cli chat --project <id> --image screenshot.png "@4 this frame should be Paris; only fix this moment"` |
106
103
  | Cut or assemble video | `npx makaron-cli chat --project <id> --video clip.mp4 "cut out the dead air and keep the best 20 seconds"` |
107
104
  | Add music | `npx makaron-cli chat --project <id> "add calm piano background music"` |
108
- | Beat-sync video from audio | `npx makaron-cli chat --project auto --audio beat.mp3 --video-model seedance-fast --video-resolution 480p "make a beat-synced video"` |
105
+ | Beat-sync video from audio | `npx makaron-cli chat --project auto --audio beat.mp3 --video-resolution 480p "make a beat-synced video"` |
109
106
  | Create motion design | `npx makaron-cli chat --project <id> "make an animated Instagram story with this image"` |
110
107
 
111
108
  ### Marketplace skills
@@ -179,7 +176,6 @@ Attach a short song, beat, or voice recording when the video should follow audio
179
176
  ```bash
180
177
  npx makaron-cli chat --project auto \
181
178
  --audio beat.mp3 \
182
- --video-model seedance-fast \
183
179
  --video-resolution 480p \
184
180
  -b "make a 15s beat-synced video"
185
181
  ```