makaron-cli 0.14.6 → 0.14.8

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.14.6",
3
+ "version": "0.14.8",
4
4
  "description": "Give Claude Code a creative agent. Pass complete creative requests and source media to Makaron Chat.",
5
5
  "author": {
6
6
  "name": "Versa AI",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makaron-cli",
3
- "version": "0.14.6",
3
+ "version": "0.14.8",
4
4
  "description": "Give Codex a creative agent. Pass complete creative requests and source media to Makaron Chat.",
5
5
  "author": {
6
6
  "name": "Versa AI",
@@ -9,7 +9,14 @@
9
9
  },
10
10
  "homepage": "https://www.makaron.app/agent",
11
11
  "license": "MIT",
12
- "keywords": ["creative-production", "image-editing", "video-generation", "music", "agent", "cli"],
12
+ "keywords": [
13
+ "creative-production",
14
+ "image-editing",
15
+ "video-generation",
16
+ "music",
17
+ "agent",
18
+ "cli"
19
+ ],
13
20
  "skills": "./skills/",
14
21
  "interface": {
15
22
  "displayName": "Makaron Creative Studio",
@@ -17,7 +24,10 @@
17
24
  "longDescription": "Pass any complete creative request and source media to Makaron Chat. Makaron plans and produces images, video, music, and motion design in a persistent project that a human can continue editing in makaron.app.",
18
25
  "developerName": "Versa AI",
19
26
  "category": "Creative Tools",
20
- "capabilities": ["Read", "Write"],
27
+ "capabilities": [
28
+ "Read",
29
+ "Write"
30
+ ],
21
31
  "websiteURL": "https://www.makaron.app/agent",
22
32
  "privacyPolicyURL": "https://www.makaron.app/privacy",
23
33
  "defaultPrompt": [
package/README.md CHANGED
@@ -367,7 +367,9 @@ npx makaron-cli edit --image photo.jpg --out result.jpg "make it dramatic"
367
367
  npx makaron-cli edit --image-model openai --background transparent --out sticker.png "a magenta star sticker"
368
368
  ```
369
369
 
370
- Options: `--image`, `--image-model gemini|gemini-lite|qwen|openai|pony|wai`, `--ref <file>` (up to 3), `--aspect <ratio>`, `--background auto|opaque|transparent`, `--out <path>`. Transparent output routes strictly to GPT Image 2 and is returned only when the provider supplies real PNG/WebP alpha.
370
+ Options: `--image`, `--image-model gemini|gemini-lite|qwen|openai|wan2.7-image|pony|wai`, `--ref <file>` (up to 3), `--aspect <ratio>`, `--background auto|opaque|transparent`, `--out <path>`. Transparent output routes strictly to GPT Image 2 and is returned only when the provider supplies real PNG/WebP alpha.
371
+
372
+ `wan2.7-image` uses Alibaba international for fast, approximately 1K generation and editing (default 6 credits/image). Failed or timed-out Wan requests are not automatically retried or switched to another model. Face identity can change. Example: `makaron edit --image portrait.jpg --image-model wan2.7-image --aspect 16:9 --out stadium.jpg "Place this woman in a baseball stadium, preserving her face."`
371
373
 
372
374
  ### `video` — Standalone video tools (no project timeline)
373
375
 
@@ -384,7 +386,7 @@ npx makaron-cli video create --script "Shot 1 (5s): <<<image_1>>> slow cinematic
384
386
  npx makaron-cli video create --script "Keep both subjects recognizable as they enter the same studio" --image https://...jpg --image https://...webp --duration 5 --video-model grok --video-resolution 720p
385
387
  npx makaron-cli video create --script "Shot 1 (15s): <<<image_1>>> and <<<image_2>>> build a neon one-person studio" --image https://...jpg --image https://...webp --duration 15 --video-model seedance-mini --video-resolution 480p --aspect 9:16
386
388
 
387
- # 3b. Native SeeDance, Wan 3.0, MiniMax H3, or H3 Max Turbo text-to-video (no image required)
389
+ # 3b. Native SeeDance, Wan 3.0, MiniMax H3, or fal H3 Turbo text-to-video (no image required)
388
390
  npx makaron-cli video create --script "Shot 1 (5s): A neon one-person studio wakes at dawn" --duration 5 --video-model seedance-fast --aspect 16:9
389
391
  npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --aspect 16:9
390
392
  npx makaron-cli video create --script "Shot 1 (5s): A tiny robot runs through a sunlit studio" --duration 5 --video-model minimax-h3-max
@@ -406,9 +408,9 @@ For project/timeline video editing, use:
406
408
  npx makaron-cli chat --project <id|auto> --video input.mp4 -b "make it funny"
407
409
  ```
408
410
 
409
- Options for `video create`: `--script "..."`, `--script-file <path>`, `--image <url>` (repeatable, up to the selected model limit), `--video <file|url>` and `--audio <file|url>` (repeatable where supported), `--voice <xai-preset-id>` (repeatable, Grok only), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|wan-3.0|wan-3.0-prime|kling|grok|google-omni|minimax-h3|minimax-h3-max|sync-lipsync-v3`, `--video-resolution auto|480p|720p|768p|1080p|2k|4k`. Default model is `seedance-fast`. SeeDance accepts native text-to-video with no image and integer output duration 4-15s (default 5s); every Seedance image input is submitted through reference-to-video, including one image. `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests. Wan 3.0 and Wan 3.0 Prime both expose 480p/720p/1080p/2K/4K; 2K/4K automatically use the matching FlashVSR endpoint. MiniMax H3 accepts native text-to-video, 4-15s output, public 768p/2k resolution, and up to 9 image, up to 3 video, and up to 3 audio feature references through Makaron Agent/chat; a single image keeps the `reference_image` role. `sync-lipsync-v3` requires exactly one video plus one MP3/WAV and preserves that replacement audio while aligning the mouth. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s. Grok generation uses `grok-imagine-video-1.5`: text-only generation supports 480p/720p/1080p, while any 1-7 image or preset voice input uses reference-to-video and is capped at 720p. Grok edit/extend uses `grok-imagine-video` internally under the same `grok` selector. Gemini Omni supports 3-10s fast image/video generation and editing with native generated audio; every image-only generation request uses `reference_to_video`, including a single image, with up to 6 images when no video reference is provided.
411
+ Options for `video create`: `--script "..."`, `--script-file <path>`, `--image <url>` (repeatable, up to the selected model limit), `--video <file|url>` and `--audio <file|url>` (repeatable where supported), `--voice <xai-preset-id>` (repeatable, Grok only), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|wan-3.0|wan-3.0-prime|kling|grok|google-omni|minimax-h3|minimax-h3-max|fal-h3-max|sync-lipsync-v3`, `--video-resolution auto|480p|720p|768p|1080p|2k|4k`. Default model is FAL H3 Max (`fal-h3-max`) at 768p (480p/1080p optional): native text-to-video or image/video/audio reference-to-video, integer 5-15s, up to 9 images + 3 videos + 3 audios (12 total). SeeDance accepts native text-to-video with no image and integer output duration 4-15s (default 5s); every Seedance image input is submitted through reference-to-video, including one image. `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests. Wan 3.0 and Wan 3.0 Prime both expose 480p/720p/1080p/2K/4K; 2K/4K automatically use the matching FlashVSR endpoint. MiniMax H3 accepts native text-to-video, 4-15s output, public 768p/2k resolution, and up to 9 image, up to 3 video, and up to 3 audio feature references through Makaron Agent/chat; a single image keeps the `reference_image` role. `sync-lipsync-v3` requires exactly one video plus one MP3/WAV and preserves that replacement audio while aligning the mouth. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s. Grok generation uses `grok-imagine-video-1.5`: text-only generation supports 480p/720p/1080p, while any 1-7 image or preset voice input uses reference-to-video and is capped at 720p. Grok edit/extend uses `grok-imagine-video` internally under the same `grok` selector. Gemini Omni supports 3-10s fast image/video generation and editing with native generated audio; every image-only generation request uses `reference_to_video`, including a single image, with up to 6 images when no video reference is provided.
410
412
 
411
- MiniMax H3 Max Turbo: use `--video-model minimax-h3-max` for faster-than-real-time generation. It supports exactly 5/10/15 seconds at 480p/768p and defaults to native 768p, with no image for T2V or exactly one `--image` for I2V. It does not accept reference video/audio or multiple images.
413
+ fal H3 Turbo: use `--video-model minimax-h3-max` for faster-than-real-time generation. It supports exactly 5/10/15 seconds at 480p/768p and defaults to native 768p, with no image for T2V or exactly one `--image` for I2V. It does not accept reference video/audio or multiple images.
412
414
 
413
415
  Seedance 2.5: use `--video-model seedance-2.5` for 4-30 second output at 480p/720p. `--image` accepts local files or URLs (up to 30), while repeatable `--video` and `--audio` accept up to 10 each. Use `--video-operation generate|edit|extend`, `--extend-direction forward|backward`, `--output-format mp4|mov`, `--web-search`, `--generated-audio` / `--no-generated-audio`, and `--relaxed-content-filter`. Edit/extend require a video reference. The Evolink route does not currently expose 4K output.
414
416
 
@@ -530,7 +532,7 @@ send_message "All done!"
530
532
  - One project = one conversation thread. All history is preserved.
531
533
  - One active Agent Run at a time per project. A new message received while it is active is appended to that same Agent Run and processed at a durable work-unit boundary; it does not interrupt the execution or create a second owner for an in-progress Studio workflow.
532
534
  - Multi-image: `create --image a.jpg --image b.jpg` or `chat --image ref.jpg`.
533
- - Provider-generated videos can take 3-5 minutes; current Grok generation/edit probes are usually around 15-60 seconds; Gemini Omni is usually around 30-70 seconds plus Storage handoff. Remotion compositions should be converted with `materialize` / `responses get --materialize`, and timing should be read from `duration_seconds`, `render_seconds`, and `realtime_ratio`.
535
+ - Video timing depends on the selected model: fal H3 Turbo and fal H3 Max usually finish in tens of seconds; Max with video references may take around 1-2 minutes. Queue and saving time can vary; other providers may take 3-5 minutes; current Grok generation/edit probes are usually around 15-60 seconds; Gemini Omni is usually around 30-70 seconds plus Storage handoff. Remotion compositions should be converted with `materialize` / `responses get --materialize`, and timing should be read from `duration_seconds`, `render_seconds`, and `realtime_ratio`.
534
536
  - Music takes ~60 seconds. Appears in output when done.
535
537
  - Images are typically ready in 15-30 seconds.
536
538
  - stdout is always machine-readable JSON/text. Human-friendly logs go to stderr.
@@ -652,3 +654,5 @@ npx makaron-cli admin fetch-skill https://www.makaron.app/s/4c4cbd57
652
654
  - 16:9 images will be severely cropped — resize or stack two 16:9 images vertically
653
655
  - Video covers (`.mp4`) are supported — auto-play in the card
654
656
  - Before photo should match the person in the cover (hair, clothing, accessories)
657
+
658
+ FAL video models: **fal H3 Turbo** uses `minimax-h3-max` for single-start-frame I2V/T2V. **FAL H3 Max** uses the new selector `fal-h3-max`: native T2V or image/video/audio reference-to-video, default 768p, optional 480p/1080p, integer 5–15s; at most 9 images / 3 videos / 3 audios / 12 total. Reference video/audio each 2–15s and each modality totals at most 15s. Source-video modifications use generation with feature references, not typed edit/extend. Reference input tokens are billed in addition to output video; query current pricing.
package/bin/makaron.mjs CHANGED
@@ -1468,6 +1468,10 @@ async function callMcpTool(baseUrl, headers, toolName, args) {
1468
1468
  if (!res.ok) { console.error(`MCP error ${res.status}:`, await res.text()); process.exit(1); }
1469
1469
  const data = await res.json();
1470
1470
  if (data.error) { console.error(`MCP error:`, data.error.message); process.exit(1); }
1471
+ if (data.result?.isError) {
1472
+ console.error('MCP tool failed:', data.result.content?.filter(c => c.type === 'text').map(c => c.text).join('\n') || 'Unknown tool error');
1473
+ process.exit(1);
1474
+ }
1471
1475
  return data.result;
1472
1476
  }
1473
1477
 
@@ -1875,7 +1879,7 @@ Usage:
1875
1879
  Options:
1876
1880
  --image <file|url> Base image to edit. Omit for text-to-image.
1877
1881
  --ref <file|url> Additional reference image. Repeatable, up to 3.
1878
- --image-model <id> gemini, gemini-lite, qwen, openai, pony, or wai.
1882
+ --image-model <id> gemini, gemini-lite, qwen, openai, wan2.7-image, pony, or wai.
1879
1883
  --skill <id> enhance, creative, wild, or captions.
1880
1884
  --aspect <ratio> Output aspect ratio, for example 1:1, 16:9, or 9:16.
1881
1885
  --background <mode> auto, opaque, or transparent.
@@ -1910,7 +1914,7 @@ Inputs:
1910
1914
  Generation options:
1911
1915
  --video-model <id> seedance-fast, seedance-mini, seedance, seedance-2.5,
1912
1916
  wan-3.0, wan-3.0-prime, kling, grok, google-omni,
1913
- minimax-h3, minimax-h3-max, or sync-lipsync-v3.
1917
+ minimax-h3, minimax-h3-max, fal-h3-max, or sync-lipsync-v3.
1914
1918
  --duration <seconds> Output duration supported by the selected model.
1915
1919
  --video-resolution <res> auto, 480p, 720p, 768p, 1080p, 2k, or 4k.
1916
1920
  --aspect <ratio> 9:16, 16:9, 1:1, or another supported ratio.
@@ -1925,7 +1929,9 @@ Generation options:
1925
1929
  --help, -h Show this help.
1926
1930
 
1927
1931
  Recent model choices:
1928
- minimax-h3-max H3 Max Turbo faster-than-real-time T2V or one-start-image I2V;
1932
+ fal-h3-max FAL H3 Max (default, 768p) reference-to-video: images, videos and audio;
1933
+ integer 5–15s, 480p/768p/1080p, default 768p. Reference inputs cost extra.
1934
+ minimax-h3-max fal H3 Turbo faster-than-real-time T2V or one-start-image I2V;
1929
1935
  5/10/15s; native 768p default or 480p; no video/audio/multi-image references.
1930
1936
  wan-3.0-prime Faster Wan 3.0 tier; 2-30s; 480p through 4k; multimodal refs.
1931
1937
  wan-3.0 Wan standard tier with the same public duration/resolution range.
@@ -2924,7 +2930,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2924
2930
  else promptParts.push(args[i]);
2925
2931
  }
2926
2932
  editArgs.editPrompt = promptParts.join(' ');
2927
- if (!editArgs.editPrompt) { console.error('Usage: makaron edit [--image <file|url>] [--image-model gemini|gemini-lite|qwen|openai|pony|wai] [--ref <file>] [--aspect <ratio>] [--background auto|opaque|transparent] [--out <file>] "prompt"'); process.exit(1); }
2933
+ if (!editArgs.editPrompt) { console.error('Usage: makaron edit [--image <file|url>] [--image-model gemini|gemini-lite|qwen|openai|wan2.7-image|pony|wai] [--ref <file>] [--aspect <ratio>] [--background auto|opaque|transparent] [--out <file>] "prompt"'); process.exit(1); }
2928
2934
  process.stderr.write('🎨 Generating...\n');
2929
2935
  const result = await callMcpTool(baseUrl, headers, 'makaron_edit_image', editArgs);
2930
2936
  saveMcpImage(result, outputPath);
@@ -2996,26 +3002,30 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
2996
3002
  }
2997
3003
  else if (args[i] === '--wait') wait = true;
2998
3004
  }
2999
- const selectedVideoModel = ['h3 max', 'h3-max', 'h3max', 'h3 max turbo', 'h3-max-turbo', 'h3maxturbo', 'minimax-h3max', 'minimax-h3-max-turbo'].includes(videoModel)
3005
+ const selectedVideoModel = ['fal h3 turbo', 'h3 max', 'h3-max', 'h3max', 'h3 max turbo', 'h3-max-turbo', 'h3maxturbo', 'minimax-h3max', 'minimax-h3-max-turbo'].includes(videoModel)
3000
3006
  ? 'minimax-h3-max'
3007
+ : ['fal h3 max'].includes(videoModel) ? 'fal-h3-max'
3001
3008
  : ['wan3', 'wan3.0', 'wan30', 'wan-3', 'wan3-pro', 'wan3.0-pro', 'wan30-pro', 'wan-3-pro', 'berry-1.0-pro', 'w3.0-video-pro'].includes(videoModel)
3002
3009
  ? 'wan-3.0'
3003
3010
  : ['wan3-prime', 'wan3.0-prime', 'wan30-prime', 'wan-3-prime', 'w3.0-video-prime', 'w3.0-video-prime-pro', 'wan-3.0-prime-pro', 'prime'].includes(videoModel)
3004
3011
  ? 'wan-3.0-prime'
3005
- : (videoModel || 'seedance-fast');
3012
+ : (videoModel || 'fal-h3-max');
3006
3013
  const isSeedance25 = selectedVideoModel === 'seedance-2.5';
3007
3014
  const isWan30 = selectedVideoModel === 'wan-3.0' || selectedVideoModel === 'wan-3.0-prime';
3008
3015
  const isSeedanceModel = selectedVideoModel === 'seedance-fast' || selectedVideoModel === 'seedance-mini' || selectedVideoModel === 'seedance' || isSeedance25;
3009
3016
  const isMinimaxH3 = selectedVideoModel === 'minimax-h3';
3010
3017
  const isFalH3Max = selectedVideoModel === 'minimax-h3-max';
3018
+ const isFalReference = selectedVideoModel === 'fal-h3-max';
3011
3019
  const isGrok = selectedVideoModel === 'grok';
3012
3020
  const isGoogleOmni = selectedVideoModel === 'google-omni';
3013
3021
  const isSyncLipsync = selectedVideoModel === 'sync-lipsync-v3';
3014
- const supportsNativeTextToVideo = isSeedanceModel || isWan30 || isMinimaxH3 || isFalH3Max || isGrok || isGoogleOmni;
3022
+ const supportsNativeTextToVideo = isSeedanceModel || isWan30 || isMinimaxH3 || isFalH3Max || isFalReference || isGrok || isGoogleOmni;
3015
3023
  if (!script || (!images.length && !videos.length && !audios.length && !referenceVoices.length && !supportsNativeTextToVideo)) {
3016
3024
  console.error('Usage: makaron video create --script "..." [--image <url>] [--video <file|url>] [--audio <file|url>] [--duration 30] [--video-model seedance-2.5|wan-3.0|wan-3.0-prime|minimax-h3|minimax-h3-max]');
3017
3025
  process.exit(1);
3018
3026
  }
3027
+ if (isFalReference && (images.length > 9 || videos.length > 3 || audios.length > 3 || images.length + videos.length + audios.length > 12)) { console.error('FAL H3 Max accepts at most 9 images, 3 videos, 3 audios, 12 total.'); process.exit(1); }
3028
+ if (isFalReference && duration != null && (!Number.isInteger(duration) || duration < 5 || duration > 15)) { console.error('FAL H3 Max output duration must be an integer from 5 to 15 seconds.'); process.exit(1); }
3019
3029
  if (isSeedance25 && images.length > 30) { console.error('Seedance 2.5 supports at most 30 image references.'); process.exit(1); }
3020
3030
  if (isSeedance25 && videos.length > 10) { console.error('Seedance 2.5 supports at most 10 video references.'); process.exit(1); }
3021
3031
  if (isSeedance25 && audios.length > 10) { console.error('Seedance 2.5 supports at most 10 audio references.'); process.exit(1); }
@@ -3115,7 +3125,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
3115
3125
  ? { script, images, videoUrls, audioUrls, videoModel: selectedVideoModel, videoResolution }
3116
3126
  : isSeedance25 || isWan30 || isGrok
3117
3127
  ? { script, images, videoUrls, audioUrls, referenceVoiceIds: referenceVoices, videoModel: selectedVideoModel, videoResolution, operation: resolvedOperation, extendDirection, outputFormat, generateAudio, contentFilter, webSearch }
3118
- : isMinimaxH3
3128
+ : isMinimaxH3 || isFalReference
3119
3129
  ? { script, images, videoUrls, audioUrls, videoModel: selectedVideoModel, videoResolution }
3120
3130
  : isFalH3Max
3121
3131
  ? { script, images, videoModel: selectedVideoModel, videoResolution }
@@ -3127,7 +3137,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
3127
3137
  if (effectiveDuration) vArgs.duration = effectiveDuration;
3128
3138
  if (aspectRatio) vArgs.aspectRatio = aspectRatio;
3129
3139
  if (keepOriginalSound && videoUrls.length && !isSeedance25) vArgs.keepOriginalSound = true;
3130
- const result = await callMcpTool(baseUrl, headers, videoUrls.length && !isSeedance25 && !isWan30 && !isGrok && !isMinimaxH3 && !isSyncLipsync ? 'makaron_edit_video' : 'makaron_create_video', vArgs);
3140
+ const result = await callMcpTool(baseUrl, headers, videoUrls.length && !isSeedance25 && !isWan30 && !isGrok && !isMinimaxH3 && !isFalReference && !isSyncLipsync ? 'makaron_edit_video' : 'makaron_create_video', vArgs);
3131
3141
  const text = result?.content?.find(c => c.type === 'text')?.text;
3132
3142
  if (text) {
3133
3143
  console.log(text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "makaron-cli",
3
- "version": "0.14.6",
3
+ "version": "0.14.8",
4
4
  "description": "Talk to Makaron Agent from the terminal — create projects, edit images, generate videos",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -304,7 +304,7 @@ npx makaron-cli edit --image photo.jpg --out result.jpg "make it dramatic"
304
304
  npx makaron-cli edit --image-model openai --background transparent --out sticker.png "a magenta star sticker"
305
305
  ```
306
306
 
307
- Options: `--image`, `--image-model gemini|gemini-lite|qwen|openai|pony|wai`, `--ref <file>` (up to 3), `--aspect <ratio>`, `--background auto|opaque|transparent`, `--out <path>`. Transparent output routes strictly to GPT Image 2 and fails instead of returning an opaque fallback.
307
+ Options: `--image`, `--image-model gemini|gemini-lite|qwen|openai|wan2.7-image|pony|wai`, `--ref <file>` (up to 3), `--aspect <ratio>`, `--background auto|opaque|transparent`, `--out <path>`. Transparent output routes strictly to GPT Image 2 and fails instead of returning an opaque fallback. Wan 2.7 Image is an explicit fast ~1K route; do not automatically retry failures/timeouts, and do not promise exact face preservation.
308
308
 
309
309
  ### `video` — Standalone video tools (no project timeline)
310
310
 
@@ -319,7 +319,7 @@ npx makaron-cli analyze --video input.mp4 "describe the key actions and pacing"
319
319
  npx makaron-cli video create --script "Shot 1 (5s): <<<image_1>>> ..." --image https://...jpg --duration 5 --video-model kling
320
320
  npx makaron-cli video create --script "Shot 1 (15s): <<<image_1>>> and <<<image_2>>> build a neon one-person studio" --image https://...jpg --image https://...webp --duration 15 --video-model seedance-mini --video-resolution 480p --aspect 9:16
321
321
 
322
- # 3b. Native SeeDance, Wan 3.0, MiniMax H3, or H3 Max Turbo text-to-video (no image required)
322
+ # 3b. Native SeeDance, Wan 3.0, MiniMax H3, or fal H3 Turbo text-to-video (no image required)
323
323
  npx makaron-cli video create --script "Shot 1 (5s): A neon one-person studio wakes at dawn" --duration 5 --video-model seedance-fast --aspect 16:9
324
324
  npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --aspect 16:9
325
325
  npx makaron-cli video create --script "Shot 1 (5s): A tiny robot runs through a sunlit studio" --duration 5 --video-model minimax-h3-max
@@ -338,11 +338,11 @@ npx makaron-cli video status <taskId>
338
338
  npx makaron-cli chat --project <id|auto> --video input.mp4 -b "make it funny"
339
339
  ```
340
340
 
341
- Options for `video create`: `--script "..."`, `--script-file <path>`, `--image <url>` (repeatable, up to the selected model limit), `--video <file|url>` and `--audio <file|url>` (repeatable where supported), `--voice <xai-preset-id>` (repeatable, Grok only), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|wan-3.0|wan-3.0-prime|kling|grok|google-omni|minimax-h3|minimax-h3-max|sync-lipsync-v3`, `--video-resolution auto|480p|720p|768p|1080p|2k|4k`. Default model is `seedance-fast`. SeeDance accepts native text-to-video with no image and integer output duration 4-15s (default 5s); every Seedance image input uses reference-to-video, including one image. `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests. Wan 3.0 and Wan 3.0 Prime both expose 480p/720p/1080p/2K/4K; 2K/4K automatically use the matching FlashVSR endpoint. MiniMax H3 accepts native text-to-video, 4-15s output, public 768p/2k resolution, and up to 9 image, up to 3 video, and up to 3 audio feature references through Makaron Agent/chat; a single image keeps the `reference_image` role. H3 Max accepts native text-to-video or exactly one start image for image-to-video, exact 5/10/15s duration, and 480p/768p; it does not accept reference video/audio or multiple images. `sync-lipsync-v3` requires exactly one video plus one MP3/WAV and preserves that replacement audio while aligning the mouth. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s. Grok text-only generation supports 480p/720p/1080p; any 1-7 image or preset voice input uses reference-to-video and is capped at 720p. Grok edit/extend uses `grok-imagine-video` internally. Gemini Omni image-only generation always uses `reference_to_video`, including one image, with up to 6 images when no video reference is provided.
341
+ Options for `video create`: `--script "..."`, `--script-file <path>`, `--image <url>` (repeatable, up to the selected model limit), `--video <file|url>` and `--audio <file|url>` (repeatable where supported), `--voice <xai-preset-id>` (repeatable, Grok only), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|wan-3.0|wan-3.0-prime|kling|grok|google-omni|minimax-h3|minimax-h3-max|fal-h3-max|sync-lipsync-v3`, `--video-resolution auto|480p|720p|768p|1080p|2k|4k`. Default model is FAL H3 Max (`fal-h3-max`) at 768p (480p/1080p optional): native text-to-video or image/video/audio reference-to-video, integer 5-15s, up to 9 images + 3 videos + 3 audios (12 total). SeeDance accepts native text-to-video with no image and integer output duration 4-15s (default 5s); every Seedance image input uses reference-to-video, including one image. `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests. Wan 3.0 and Wan 3.0 Prime both expose 480p/720p/1080p/2K/4K; 2K/4K automatically use the matching FlashVSR endpoint. MiniMax H3 accepts native text-to-video, 4-15s output, public 768p/2k resolution, and up to 9 image, up to 3 video, and up to 3 audio feature references through Makaron Agent/chat; a single image keeps the `reference_image` role. fal H3 Turbo (`minimax-h3-max`) accepts native text-to-video or exactly one start image for image-to-video, exact 5/10/15s duration, and 480p/768p; it does not accept reference video/audio or multiple images. `sync-lipsync-v3` requires exactly one video plus one MP3/WAV and preserves that replacement audio while aligning the mouth. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s. Grok text-only generation supports 480p/720p/1080p; any 1-7 image or preset voice input uses reference-to-video and is capped at 720p. Grok edit/extend uses `grok-imagine-video` internally. Gemini Omni image-only generation always uses `reference_to_video`, including one image, with up to 6 images when no video reference is provided.
342
342
 
343
343
  Provider integration contract: every image passed to video generation is a feature reference by default, even when there is exactly one image. Never infer image-to-video/first-frame mode from image count. The sole current exception is explicitly selected `minimax-h3-max`, whose declared capability maps exactly one selected image to native image-to-video; it does not accept reference video/audio or multiple images.
344
344
 
345
- MiniMax H3 Max Turbo uses the `minimax-h3-max` selector, supports exactly 5/10/15 seconds at 480p/768p, and defaults to native 768p for faster-than-real-time T2V or one-start-image I2V.
345
+ fal H3 Turbo uses the `minimax-h3-max` selector, supports exactly 5/10/15 seconds at 480p/768p, and defaults to native 768p for faster-than-real-time T2V or one-start-image I2V.
346
346
 
347
347
  Seedance 2.5 uses `--video-model seedance-2.5` and supports 4-30s at 480p/720p, up to 30 images + 10 videos + 10 audios, repeatable local/URL references, `--video-operation generate|edit|extend`, `--extend-direction`, `--output-format mp4|mov`, and `--web-search`. The Evolink route does not currently expose 4K output.
348
348
 
@@ -482,9 +482,11 @@ send_message "All done!"
482
482
  - One project = one conversation thread. All history is preserved.
483
483
  - One active Agent Run at a time per project. A new message received while it is active is appended to that same Agent Run and processed at a durable work-unit boundary; it does not interrupt the execution or create a second owner for an in-progress Studio workflow.
484
484
  - Multi-image: `create --image a.jpg --image b.jpg` or `chat --image ref.jpg`.
485
- - Provider-generated videos can take 3-5 minutes; current Grok generation/edit probes are usually around 15-60 seconds; Gemini Omni is usually around 30-70 seconds plus Storage handoff. Remotion compositions should be converted with `materialize` / `responses get --materialize`, and timing should be read from `duration_seconds`, `render_seconds`, and `realtime_ratio`.
485
+ - Video timing depends on the selected model: fal H3 Turbo and fal H3 Max usually finish in tens of seconds; Max with video references may take around 1-2 minutes. Queue and saving time can vary; other providers may take 3-5 minutes; current Grok generation/edit probes are usually around 15-60 seconds; Gemini Omni is usually around 30-70 seconds plus Storage handoff. Remotion compositions should be converted with `materialize` / `responses get --materialize`, and timing should be read from `duration_seconds`, `render_seconds`, and `realtime_ratio`.
486
486
  - Music takes ~60 seconds. Appears in output when done.
487
487
  - Images are typically ready in 15-30 seconds.
488
488
  - stdout is always machine-readable JSON/text. Human-friendly logs go to stderr.
489
489
  - Always use `chat` as the primary interface — even for single image edits.
490
490
  - `edit`/`video`/`music` are fallback tools for when `chat` is unavailable or you need raw model access without project context.
491
+
492
+ FAL video models: **fal H3 Turbo** uses `minimax-h3-max` for single-start-frame I2V/T2V. **FAL H3 Max** uses the new selector `fal-h3-max`: native T2V or image/video/audio reference-to-video, default 768p, optional 480p/1080p, integer 5–15s; at most 9 images / 3 videos / 3 audios / 12 total. Reference video/audio each 2–15s and each modality totals at most 15s. Source-video modifications use generation with feature references, not typed edit/extend. Reference input tokens are billed in addition to output video; query current pricing.