makaron-cli 0.13.6 → 0.13.7
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/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/README.md +8 -3
- package/bin/makaron.mjs +54 -8
- package/package.json +1 -1
- package/skills/makaron/SKILL.md +7 -3
package/README.md
CHANGED
|
@@ -98,7 +98,12 @@ npx makaron-cli chat --project auto --image photo.jpg --json -b "make it cinemat
|
|
|
98
98
|
npx makaron-cli chat --project auto --image img1.jpg --image img2.jpg --json -b "combine these"
|
|
99
99
|
```
|
|
100
100
|
|
|
101
|
-
`chat`
|
|
101
|
+
`chat` routes image and video models automatically, but you may select the Agent LLM with `--agent-model`. Accepted values are exactly `auto`, `gpt-5.6-terra`, `gpt-5.6-sol`, `gpt-5.6-luna`, `grok-4.5`, and `deepseek-v4-pro`; `auto` currently resolves to `gpt-5.6-terra`. This flag changes only the reasoning/tool-calling Agent LLM. The CLI still rejects `--image-model`, `--video-model`, and the legacy `--model` flag before starting a chat run, so image/video model names cannot be mistaken for Agent models.
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Explicit lower-cost Agent LLM for a controlled comparison
|
|
105
|
+
npx makaron-cli chat --project auto --agent-model deepseek-v4-pro --json -b "make a 20s badminton video"
|
|
106
|
+
```
|
|
102
107
|
|
|
103
108
|
Returns immediately:
|
|
104
109
|
```json
|
|
@@ -342,7 +347,7 @@ npx makaron-cli video create --script "Shot 1 (15s): <<<image_1>>> and <<<image_
|
|
|
342
347
|
|
|
343
348
|
# 3b. Native SeeDance or MiniMax H3 text-to-video (no image required)
|
|
344
349
|
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
|
|
345
|
-
npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --
|
|
350
|
+
npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --aspect 16:9
|
|
346
351
|
|
|
347
352
|
# 3c. Edit a video from a local file or public URL
|
|
348
353
|
npx makaron-cli video create --script "make it funny" --video input.mp4 --duration 5 --video-model seedance-fast
|
|
@@ -358,7 +363,7 @@ For project/timeline video editing, use:
|
|
|
358
363
|
npx makaron-cli chat --project <id|auto> --video input.mp4 -b "make it funny"
|
|
359
364
|
```
|
|
360
365
|
|
|
361
|
-
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), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|grok|google-omni|minimax-h3`, `--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); `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests; MiniMax H3 accepts native text-to-video, 4-15s output, and up to 9 image, up to 3 video, and up to 3 audio references through Makaron Agent/chat. H3 defaults to
|
|
366
|
+
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), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|grok|google-omni|minimax-h3`, `--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); `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests; 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 references through Makaron Agent/chat. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s; Grok 1.5 supports 1-15s single-image-to-video only; Gemini Omni supports 3-10s fast 720p image/video generation and editing with native generated audio, including up to 6 image references when no video reference is provided. For `--video-model grok`, forced `--aspect` is ignored to avoid xAI stretching the source image; pad/create the image at the target shape first or use another model.
|
|
362
367
|
|
|
363
368
|
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.
|
|
364
369
|
|
package/bin/makaron.mjs
CHANGED
|
@@ -28,6 +28,14 @@ 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
30
|
const AGENT_WAIT_TIMEOUT_SECONDS = Math.max(900, Number(process.env.MAKARON_AGENT_WAIT_TIMEOUT_SECONDS || 10_800));
|
|
31
|
+
const CHAT_AGENT_MODELS = [
|
|
32
|
+
'auto',
|
|
33
|
+
'gpt-5.6-terra',
|
|
34
|
+
'gpt-5.6-sol',
|
|
35
|
+
'gpt-5.6-luna',
|
|
36
|
+
'grok-4.5',
|
|
37
|
+
'deepseek-v4-pro',
|
|
38
|
+
];
|
|
31
39
|
|
|
32
40
|
// Public anon key (safe to embed — only enables auth, not data access)
|
|
33
41
|
const SUPABASE_URL = 'https://sdyrtztrjgmmpnirswxt.supabase.co';
|
|
@@ -59,6 +67,16 @@ function warnLegacyModelFlag(replacement) {
|
|
|
59
67
|
process.stderr.write(`⚠️ --model is deprecated here; use ${replacement}.\n`);
|
|
60
68
|
}
|
|
61
69
|
|
|
70
|
+
function validateChatAgentModel(value) {
|
|
71
|
+
if (!value || !CHAT_AGENT_MODELS.includes(value)) {
|
|
72
|
+
process.stderr.write(`❌ Unknown Agent LLM: ${value || '(missing value)'}\n`);
|
|
73
|
+
process.stderr.write(`Choose one of: ${CHAT_AGENT_MODELS.join(', ')}\n`);
|
|
74
|
+
process.stderr.write('--agent-model selects only the Agent LLM. Put image/video model preferences in the chat prompt, or use the explicit edit/video commands.\n');
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
return value;
|
|
78
|
+
}
|
|
79
|
+
|
|
62
80
|
function getCliVersion() {
|
|
63
81
|
try {
|
|
64
82
|
const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
|
|
@@ -351,13 +369,15 @@ Options:
|
|
|
351
369
|
--audio <file|url> Attach a song, beat, or voice reference. MP3/WAV, repeatable.
|
|
352
370
|
--media-manifest <file|-> Import source_url + start + end + description clips before this run.
|
|
353
371
|
--skill <id|label|name> Use an installed skill or auto-install a matched marketplace skill.
|
|
372
|
+
--agent-model <id> Agent LLM only: auto, gpt-5.6-terra, gpt-5.6-sol,
|
|
373
|
+
gpt-5.6-luna, grok-4.5, or deepseek-v4-pro.
|
|
354
374
|
--background, -b Submit and print a runId.
|
|
355
375
|
--json Output structured JSON.
|
|
356
376
|
--stream Legacy live SSE stream.
|
|
357
377
|
--help, -h Show this help.
|
|
358
378
|
|
|
359
|
-
|
|
360
|
-
--video-model,
|
|
379
|
+
Agent LLM defaults to auto (currently gpt-5.6-terra). Image/video model routing
|
|
380
|
+
stays automatic in chat; --image-model, --video-model, and --model are rejected.
|
|
361
381
|
|
|
362
382
|
What you can ask:
|
|
363
383
|
Image edit
|
|
@@ -381,6 +401,9 @@ What you can ask:
|
|
|
381
401
|
Agent-to-agent source-range handoff
|
|
382
402
|
makaron chat --project auto --media-manifest set-01.json -b --json "make a 30s vertical video"
|
|
383
403
|
|
|
404
|
+
Compare Agent LLMs with identical inputs
|
|
405
|
+
makaron chat --project auto --agent-model deepseek-v4-pro -b --json "make a 20s badminton video"
|
|
406
|
+
|
|
384
407
|
Music
|
|
385
408
|
makaron chat --project <id> "add calm piano background music"
|
|
386
409
|
|
|
@@ -422,6 +445,7 @@ async function streamAgent(baseUrl, headers, projectId, prompt, opts = {}) {
|
|
|
422
445
|
projectId,
|
|
423
446
|
prompt,
|
|
424
447
|
headless: true,
|
|
448
|
+
...(opts.agentModel ? { agentModel: opts.agentModel } : {}),
|
|
425
449
|
...(opts.uploadedVideoCount ? { uploadedVideoCount: opts.uploadedVideoCount } : {}),
|
|
426
450
|
...(opts.turnMediaCount ? { turnMediaCount: opts.turnMediaCount } : {}),
|
|
427
451
|
}),
|
|
@@ -530,6 +554,7 @@ async function streamAgent(baseUrl, headers, projectId, prompt, opts = {}) {
|
|
|
530
554
|
|
|
531
555
|
async function submitRun(baseUrl, headers, projectId, prompt, opts = {}) {
|
|
532
556
|
const body = { projectId, prompt };
|
|
557
|
+
if (opts.agentModel) body.agentModel = opts.agentModel;
|
|
533
558
|
if (opts.currentSnapshotIndex != null) body.currentSnapshotIndex = opts.currentSnapshotIndex;
|
|
534
559
|
if (opts.isNsfw) body.isNsfw = opts.isNsfw;
|
|
535
560
|
if (opts.audioAttachments?.length) body.audioAttachments = opts.audioAttachments;
|
|
@@ -1693,6 +1718,8 @@ Commands:
|
|
|
1693
1718
|
|
|
1694
1719
|
chat --project <id> "message" Chat (non-blocking, polls for result)
|
|
1695
1720
|
chat --project <id> --skill <id> Use a built-in or marketplace skill
|
|
1721
|
+
chat --project <id> --agent-model <id> "message"
|
|
1722
|
+
Select only the Agent LLM (strict allowlist)
|
|
1696
1723
|
chat --project <id> --video <file> Attach video to conversation
|
|
1697
1724
|
chat --project <id> --audio <file> Attach song/beat/voice reference
|
|
1698
1725
|
chat --project auto --media-manifest <file> "message"
|
|
@@ -1726,7 +1753,8 @@ Examples:
|
|
|
1726
1753
|
makaron chat --project <id> "turn this into a short video"
|
|
1727
1754
|
|
|
1728
1755
|
Run makaron <command> --help for command-specific options.
|
|
1729
|
-
Chat
|
|
1756
|
+
Chat defaults the Agent LLM automatically; --agent-model can select an exact
|
|
1757
|
+
Agent LLM. Image and video model routing remains automatic in chat.
|
|
1730
1758
|
|
|
1731
1759
|
Environment:
|
|
1732
1760
|
MAKARON_API_KEY API key (mk_live_xxx) — recommended for agents
|
|
@@ -1854,7 +1882,7 @@ Use with chat:
|
|
|
1854
1882
|
else console.log(`Video commands:
|
|
1855
1883
|
video script --image <file> [--image <file>] "direction" Write video script
|
|
1856
1884
|
video create --script "..." --video-model seedance-fast Native text-to-video (no image required)
|
|
1857
|
-
video create --script "..." --video-model minimax-h3
|
|
1885
|
+
video create --script "..." --video-model minimax-h3 MiniMax H3 text-to-video (default 768P)
|
|
1858
1886
|
video create --script "..." --image <url> [--duration 10] Submit video task
|
|
1859
1887
|
video create --script "..." --video <public-url> [--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|google-omni|minimax-h3] Edit/reference a video (Grok does not support video refs)
|
|
1860
1888
|
video status <taskId> Check video status
|
|
@@ -1968,6 +1996,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
1968
1996
|
let jsonOutput = false;
|
|
1969
1997
|
let activeSkill = undefined;
|
|
1970
1998
|
let mediaManifestPath = undefined;
|
|
1999
|
+
let agentModel = undefined;
|
|
1971
2000
|
for (let i = 1; i < args.length; i++) {
|
|
1972
2001
|
if (args[i] === '--project' && args[i + 1]) projectId = args[++i];
|
|
1973
2002
|
else if (args[i] === '--image' && args[i + 1]) chatImages.push(args[++i]);
|
|
@@ -1983,6 +2012,21 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
1983
2012
|
else if (args[i].startsWith('--media-manifest=')) mediaManifestPath = args[i].slice('--media-manifest='.length);
|
|
1984
2013
|
else if (args[i] === '--skill' && args[i + 1]) activeSkill = args[++i];
|
|
1985
2014
|
else if (args[i].startsWith('--skill=')) activeSkill = args[i].slice('--skill='.length);
|
|
2015
|
+
else if (args[i] === '--agent-model') {
|
|
2016
|
+
if (agentModel !== undefined) {
|
|
2017
|
+
process.stderr.write('❌ Pass --agent-model only once per chat run.\n');
|
|
2018
|
+
process.exit(1);
|
|
2019
|
+
}
|
|
2020
|
+
if (!args[i + 1] || args[i + 1].startsWith('--')) validateChatAgentModel('');
|
|
2021
|
+
agentModel = validateChatAgentModel(args[++i]);
|
|
2022
|
+
}
|
|
2023
|
+
else if (args[i].startsWith('--agent-model=')) {
|
|
2024
|
+
if (agentModel !== undefined) {
|
|
2025
|
+
process.stderr.write('❌ Pass --agent-model only once per chat run.\n');
|
|
2026
|
+
process.exit(1);
|
|
2027
|
+
}
|
|
2028
|
+
agentModel = validateChatAgentModel(args[i].slice('--agent-model='.length));
|
|
2029
|
+
}
|
|
1986
2030
|
else if (args[i] === '--stream') useStream = true;
|
|
1987
2031
|
else if (args[i] === '--background' || args[i] === '-b') background = true;
|
|
1988
2032
|
else if (args[i] === '--json') jsonOutput = true;
|
|
@@ -1991,11 +2035,11 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
1991
2035
|
process.exit(1);
|
|
1992
2036
|
}
|
|
1993
2037
|
else if (
|
|
1994
|
-
['--
|
|
1995
|
-
|| ['--
|
|
2038
|
+
['--image-model', '--video-model', '--model'].includes(args[i])
|
|
2039
|
+
|| ['--image-model=', '--video-model=', '--model='].some(prefix => args[i].startsWith(prefix))
|
|
1996
2040
|
) {
|
|
1997
2041
|
const flag = args[i].split('=')[0];
|
|
1998
|
-
process.stderr.write(`❌ makaron chat
|
|
2042
|
+
process.stderr.write(`❌ ${flag} is not valid for makaron chat. Only --agent-model may select the Agent LLM; image/video routing stays automatic. Remove ${flag} and retry.\n`);
|
|
1999
2043
|
process.exit(1);
|
|
2000
2044
|
}
|
|
2001
2045
|
else promptParts.push(args[i]);
|
|
@@ -2222,6 +2266,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
2222
2266
|
if (useStream) {
|
|
2223
2267
|
// Legacy SSE mode
|
|
2224
2268
|
const { results } = await streamAgent(baseUrl, headers, projectId, finalPrompt, {
|
|
2269
|
+
agentModel,
|
|
2225
2270
|
uploadedVideoCount: uploadedTurnVideoCount,
|
|
2226
2271
|
turnMediaCount: uploadedTurnMediaCount,
|
|
2227
2272
|
});
|
|
@@ -2234,6 +2279,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
2234
2279
|
} else {
|
|
2235
2280
|
// Default: fire-and-forget + poll
|
|
2236
2281
|
const { runId } = await submitRun(baseUrl, headers, projectId, finalPrompt, {
|
|
2282
|
+
agentModel,
|
|
2237
2283
|
audioAttachments,
|
|
2238
2284
|
uploadedVideoCount: uploadedTurnVideoCount,
|
|
2239
2285
|
turnMediaCount: uploadedTurnMediaCount,
|
|
@@ -2776,7 +2822,7 @@ if (!command || command === '--help' || command === '-h' || command === 'help')
|
|
|
2776
2822
|
console.log(`Video commands:
|
|
2777
2823
|
video script --image <file> [--image <file>] "direction" Write video script
|
|
2778
2824
|
video create --script "..." --video-model seedance-fast Native text-to-video (no image required)
|
|
2779
|
-
video create --script "..." --video-model minimax-h3
|
|
2825
|
+
video create --script "..." --video-model minimax-h3 MiniMax H3 text-to-video (default 768P)
|
|
2780
2826
|
video create --script "..." --image <url> [--duration 10] Submit video task
|
|
2781
2827
|
video create --script "..." --video <public-url> [--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|google-omni|minimax-h3] Edit/reference a video (Grok does not support video refs)
|
|
2782
2828
|
video status <taskId> Check video status
|
package/package.json
CHANGED
package/skills/makaron/SKILL.md
CHANGED
|
@@ -85,7 +85,11 @@ npx makaron-cli chat --project auto --image photo.jpg --json -b "make it cinemat
|
|
|
85
85
|
npx makaron-cli chat --project auto --image img1.jpg --image img2.jpg --json -b "combine these"
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
`chat`
|
|
88
|
+
`chat` routes image and video models automatically. Use `--agent-model` only when the user explicitly asks to select or compare the reasoning/tool-calling Agent LLM. Accepted values are exactly `auto`, `gpt-5.6-terra`, `gpt-5.6-sol`, `gpt-5.6-luna`, `grok-4.5`, and `deepseek-v4-pro`; `auto` currently resolves to `gpt-5.6-terra`. Never put an image or video model ID in `--agent-model`. The CLI rejects unknown Agent IDs plus `--image-model`, `--video-model`, and legacy `--model` before starting a chat run.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npx makaron-cli chat --project auto --agent-model deepseek-v4-pro --json -b "make a 20s badminton video"
|
|
92
|
+
```
|
|
89
93
|
|
|
90
94
|
Returns immediately:
|
|
91
95
|
```json
|
|
@@ -280,7 +284,7 @@ npx makaron-cli video create --script "Shot 1 (15s): <<<image_1>>> and <<<image_
|
|
|
280
284
|
|
|
281
285
|
# 3b. Native SeeDance or MiniMax H3 text-to-video (no image required)
|
|
282
286
|
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
|
|
283
|
-
npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --
|
|
287
|
+
npx makaron-cli video create --script "Shot 1 (15s): A premium creative editor comes alive" --duration 15 --video-model minimax-h3 --aspect 16:9
|
|
284
288
|
|
|
285
289
|
# 3c. Edit a video from a local file or public URL
|
|
286
290
|
npx makaron-cli video create --script "make it funny" --video input.mp4 --duration 5 --video-model seedance-fast
|
|
@@ -296,7 +300,7 @@ npx makaron-cli video status <taskId>
|
|
|
296
300
|
npx makaron-cli chat --project <id|auto> --video input.mp4 -b "make it funny"
|
|
297
301
|
```
|
|
298
302
|
|
|
299
|
-
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), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|grok|google-omni|minimax-h3`, `--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); `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests; MiniMax H3 accepts native text-to-video, 4-15s output, and up to 9 image, up to 3 video, and up to 3 audio references through Makaron Agent/chat. H3 defaults to
|
|
303
|
+
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), `--duration <seconds>`, `--aspect 9:16|16:9|1:1`, `--video-model seedance-fast|seedance-mini|seedance|seedance-2.5|kling|grok|google-omni|minimax-h3`, `--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); `seedance-mini` supports 480p/720p and is best for cheaper drafts/multi-size tests; 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 references through Makaron Agent/chat. H3 defaults to 768p; request 2k explicitly for maximum/final quality. Kling supports 5-15s; Grok 1.5 supports 1-15s single-image-to-video only; Gemini Omni supports 3-10s fast 720p image/video generation and editing with native generated audio, including up to 6 image references when no video reference is provided. For `--video-model grok`, forced `--aspect` is ignored to avoid xAI stretching the source image; pad/create the image at the target shape first or use another model.
|
|
300
304
|
|
|
301
305
|
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.
|
|
302
306
|
|