@vibeframe/cli 0.57.1 → 0.57.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.
- package/dist/index.js +56 -36
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -25210,6 +25210,7 @@ var init_schema = __esm({
|
|
|
25210
25210
|
elevenlabs: "ELEVENLABS_API_KEY",
|
|
25211
25211
|
runway: "RUNWAY_API_SECRET",
|
|
25212
25212
|
kling: "KLING_API_KEY",
|
|
25213
|
+
fal: "FAL_KEY",
|
|
25213
25214
|
imgbb: "IMGBB_API_KEY",
|
|
25214
25215
|
replicate: "REPLICATE_API_TOKEN",
|
|
25215
25216
|
xai: "XAI_API_KEY",
|
|
@@ -33587,7 +33588,7 @@ Run 'vibe setup --show' to check API key status.
|
|
|
33587
33588
|
Run 'vibe schema generate.<command>' for structured parameter info.
|
|
33588
33589
|
`
|
|
33589
33590
|
);
|
|
33590
|
-
generateCommand.command("image").alias("img").description("Generate image using AI (Gemini, DALL-E, or Runway)").argument("[prompt]", "Image description prompt (interactive if omitted)").option("-p, --provider <provider>", "Provider:
|
|
33591
|
+
generateCommand.command("image").alias("img").description("Generate image using AI (Gemini, DALL-E, or Runway)").argument("[prompt]", "Image description prompt (interactive if omitted)").option("-p, --provider <provider>", "Provider: openai (default when OPENAI_API_KEY set), gemini, grok, runway (dalle is deprecated)").option("-k, --api-key <key>", "API key (or set env: OPENAI_API_KEY, GOOGLE_API_KEY)").option("-o, --output <path>", "Output file path (downloads image)").option("-s, --size <size>", "Image size (openai: 1024x1024, 1536x1024, 1024x1536)", "1024x1024").option("-r, --ratio <ratio>", "Aspect ratio (gemini: 1:1, 1:4, 1:8, 4:1, 8:1, 16:9, 9:16, 3:4, 4:3, etc.)", "1:1").option("-q, --quality <quality>", "Quality: standard, hd (openai only)", "standard").option("--style <style>", "Style: vivid, natural (openai only)", "vivid").option("-n, --count <n>", "Number of images to generate", "1").option("-m, --model <model>", "Model. Gemini: flash, 3.1-flash, latest, pro. OpenAI: 1.5 (default), 2 (gpt-image-2)").option("--dry-run", "Preview parameters without executing").addHelpText("after", `
|
|
33591
33592
|
Examples:
|
|
33592
33593
|
$ vibe generate image "a sunset over the ocean" -o sunset.png
|
|
33593
33594
|
$ vibe gen img "logo design" -o logo.png -p openai
|
|
@@ -33609,22 +33610,28 @@ Examples:
|
|
|
33609
33610
|
if (options.output) {
|
|
33610
33611
|
validateOutputPath(options.output);
|
|
33611
33612
|
}
|
|
33612
|
-
let provider = options.provider.toLowerCase();
|
|
33613
33613
|
const validProviders = ["openai", "dalle", "gemini", "grok", "runway"];
|
|
33614
|
-
if (!validProviders.includes(provider)) {
|
|
33615
|
-
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: openai, gemini, grok, runway`));
|
|
33616
|
-
}
|
|
33617
33614
|
const providerEnvMap = {
|
|
33618
33615
|
gemini: "GOOGLE_API_KEY",
|
|
33619
33616
|
openai: "OPENAI_API_KEY",
|
|
33620
33617
|
grok: "XAI_API_KEY"
|
|
33621
33618
|
};
|
|
33622
|
-
|
|
33623
|
-
|
|
33624
|
-
|
|
33625
|
-
|
|
33626
|
-
provider
|
|
33619
|
+
let provider;
|
|
33620
|
+
if (options.provider) {
|
|
33621
|
+
provider = options.provider.toLowerCase();
|
|
33622
|
+
if (!validProviders.includes(provider)) {
|
|
33623
|
+
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: openai, gemini, grok, runway`));
|
|
33624
|
+
}
|
|
33625
|
+
if (providerEnvMap[provider] && !hasApiKey(providerEnvMap[provider]) && !options.apiKey) {
|
|
33626
|
+
const resolved = resolveProvider("image");
|
|
33627
|
+
if (resolved) {
|
|
33628
|
+
log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
|
|
33629
|
+
provider = resolved.name;
|
|
33630
|
+
}
|
|
33627
33631
|
}
|
|
33632
|
+
} else {
|
|
33633
|
+
const resolved = resolveProvider("image");
|
|
33634
|
+
provider = resolved?.name ?? "gemini";
|
|
33628
33635
|
}
|
|
33629
33636
|
if (provider === "dalle") {
|
|
33630
33637
|
console.log(source_default.yellow('Warning: "dalle" is deprecated. Use "openai" instead.'));
|
|
@@ -33918,7 +33925,7 @@ Examples:
|
|
|
33918
33925
|
exitWithError(apiError(`Image generation failed: ${error.message}`));
|
|
33919
33926
|
}
|
|
33920
33927
|
});
|
|
33921
|
-
generateCommand.command("video").alias("vid").description("Generate video using AI (Kling, Runway, Veo, or Grok)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider:
|
|
33928
|
+
generateCommand.command("video").alias("vid").description("Generate video using AI (Kling, Runway, Veo, or Grok)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider: fal (Seedance 2.0, default when FAL_KEY set), grok, kling, runway, veo").option("-k, --api-key <key>", "API key (or set XAI_API_KEY / RUNWAY_API_SECRET / KLING_API_KEY / GOOGLE_API_KEY env)").option("-o, --output <path>", "Output file path (downloads video)").option("-i, --image <path>", "Reference image for image-to-video").option("-d, --duration <sec>", "Duration: 5 or 10 seconds", "5").option("-r, --ratio <ratio>", "Aspect ratio: 16:9, 9:16, or 1:1 (auto-detected from image if omitted)").option("-s, --seed <number>", "Random seed for reproducibility (Runway only)").option("-m, --mode <mode>", "Generation mode: std or pro (Kling only)", "std").option("-n, --negative <prompt>", "Negative prompt - what to avoid (Kling/Veo)").option("--resolution <res>", "Video resolution: 720p, 1080p, 4k (Veo only)").option("--last-frame <path>", "Last frame image for frame interpolation (Veo only)").option("--ref-images <paths...>", "Reference images for character consistency (Veo 3.1 only, max 3)").option("--person <mode>", "Person generation: allow_all, allow_adult (Veo only)").option("--veo-model <model>", "Veo model: 3.0, 3.1, 3.1-fast (default: 3.1-fast)", "3.1-fast").option("--runway-model <model>", "Runway model: gen4.5 (default, text+image-to-video), gen4_turbo (image-to-video only)", "gen4.5").option("--no-wait", "Start generation and return task ID without waiting").option("--dry-run", "Preview parameters without executing").addHelpText("after", `
|
|
33922
33929
|
Examples:
|
|
33923
33930
|
$ vibe generate video "dancing cat" -o cat.mp4 # Grok (default)
|
|
33924
33931
|
$ vibe gen vid "city timelapse" -o city.mp4 -p kling # Kling
|
|
@@ -33940,11 +33947,7 @@ Examples:
|
|
|
33940
33947
|
if (options.output) {
|
|
33941
33948
|
validateOutputPath(options.output);
|
|
33942
33949
|
}
|
|
33943
|
-
let provider = options.provider.toLowerCase();
|
|
33944
33950
|
const validProviders = ["runway", "kling", "veo", "grok", "fal"];
|
|
33945
|
-
if (!validProviders.includes(provider)) {
|
|
33946
|
-
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: ${validProviders.join(", ")}`));
|
|
33947
|
-
}
|
|
33948
33951
|
const videoEnvMap = {
|
|
33949
33952
|
grok: "XAI_API_KEY",
|
|
33950
33953
|
veo: "GOOGLE_API_KEY",
|
|
@@ -33952,12 +33955,22 @@ Examples:
|
|
|
33952
33955
|
runway: "RUNWAY_API_SECRET",
|
|
33953
33956
|
fal: "FAL_KEY"
|
|
33954
33957
|
};
|
|
33955
|
-
|
|
33956
|
-
|
|
33957
|
-
|
|
33958
|
-
|
|
33959
|
-
provider
|
|
33958
|
+
let provider;
|
|
33959
|
+
if (options.provider) {
|
|
33960
|
+
provider = options.provider.toLowerCase();
|
|
33961
|
+
if (!validProviders.includes(provider)) {
|
|
33962
|
+
exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: ${validProviders.join(", ")}`));
|
|
33963
|
+
}
|
|
33964
|
+
if (videoEnvMap[provider] && !hasApiKey(videoEnvMap[provider]) && !options.apiKey) {
|
|
33965
|
+
const resolved = resolveProvider("video");
|
|
33966
|
+
if (resolved) {
|
|
33967
|
+
log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
|
|
33968
|
+
provider = resolved.name;
|
|
33969
|
+
}
|
|
33960
33970
|
}
|
|
33971
|
+
} else {
|
|
33972
|
+
const resolved = resolveProvider("video");
|
|
33973
|
+
provider = resolved?.name ?? "grok";
|
|
33961
33974
|
}
|
|
33962
33975
|
let referenceImage;
|
|
33963
33976
|
let isImageToVideo = false;
|
|
@@ -57525,7 +57538,7 @@ init_source();
|
|
|
57525
57538
|
// package.json
|
|
57526
57539
|
var package_default = {
|
|
57527
57540
|
name: "@vibeframe/cli",
|
|
57528
|
-
version: "0.57.
|
|
57541
|
+
version: "0.57.3",
|
|
57529
57542
|
description: "VibeFrame CLI - natural language video editing from the terminal",
|
|
57530
57543
|
private: false,
|
|
57531
57544
|
license: "MIT",
|
|
@@ -65233,25 +65246,25 @@ var AI_FEATURES = [
|
|
|
65233
65246
|
{
|
|
65234
65247
|
label: "Images",
|
|
65235
65248
|
desc: "generate + edit",
|
|
65236
|
-
defaultProvider: "
|
|
65237
|
-
alsoAvailable: "
|
|
65238
|
-
keys: [{ configKey: "
|
|
65249
|
+
defaultProvider: "OpenAI gpt-image-2 (Artificial Analysis #1, since v0.56)",
|
|
65250
|
+
alsoAvailable: "Gemini Nano Banana, Grok Imagine",
|
|
65251
|
+
keys: [{ configKey: "openai", envVar: "OPENAI_API_KEY", name: "OpenAI", url: "https://platform.openai.com/api-keys", what: "gpt-image-2 image generation + editing (also Whisper, Agent)" }],
|
|
65239
65252
|
tryCommand: 'vibe generate image "a sunset over mountains" -o test.png'
|
|
65240
65253
|
},
|
|
65241
65254
|
{
|
|
65242
65255
|
label: "Videos",
|
|
65243
65256
|
desc: "generate + extend",
|
|
65244
|
-
defaultProvider: "
|
|
65245
|
-
alsoAvailable: "Kling, Runway Gen-4.5, Google Veo",
|
|
65246
|
-
keys: [{ configKey: "
|
|
65257
|
+
defaultProvider: "fal.ai Seedance 2.0 (Artificial Analysis #2 t2v + i2v, since v0.57)",
|
|
65258
|
+
alsoAvailable: "Grok Imagine, Kling, Runway Gen-4.5, Google Veo",
|
|
65259
|
+
keys: [{ configKey: "fal", envVar: "FAL_KEY", name: "fal.ai", url: "https://fal.ai/dashboard/keys", what: "ByteDance Seedance 2.0 text-to-video and image-to-video" }],
|
|
65247
65260
|
tryCommand: 'vibe generate video "ocean waves" -o waves.mp4'
|
|
65248
65261
|
},
|
|
65249
65262
|
{
|
|
65250
65263
|
label: "Audio",
|
|
65251
65264
|
desc: "TTS, SFX, music, voice clone",
|
|
65252
|
-
defaultProvider: "ElevenLabs",
|
|
65265
|
+
defaultProvider: "ElevenLabs (paid, premium quality) \u2014 falls back to local Kokoro when no key (free, since v0.54)",
|
|
65253
65266
|
alsoAvailable: "Replicate MusicGen (music only)",
|
|
65254
|
-
keys: [{ configKey: "elevenlabs", envVar: "ELEVENLABS_API_KEY", name: "ElevenLabs", url: "https://elevenlabs.io/app/settings/api-keys", what: "Text-to-speech, sound effects, music, voice cloning" }],
|
|
65267
|
+
keys: [{ configKey: "elevenlabs", envVar: "ELEVENLABS_API_KEY", name: "ElevenLabs", url: "https://elevenlabs.io/app/settings/api-keys", what: "Text-to-speech, sound effects, music, voice cloning (skip to use local Kokoro)" }],
|
|
65255
65268
|
tryCommand: 'vibe generate speech "Hello world" -o hello.mp3'
|
|
65256
65269
|
},
|
|
65257
65270
|
{
|
|
@@ -65303,9 +65316,9 @@ async function runSetupWizard(fullSetup = false) {
|
|
|
65303
65316
|
config2.llm.provider = "claude";
|
|
65304
65317
|
const pipelineKeys = [
|
|
65305
65318
|
{ configKey: "anthropic", envVar: "ANTHROPIC_API_KEY", name: "Anthropic", url: "https://console.anthropic.com/settings/keys", what: "Claude \u2014 storyboard generation + reasoning" },
|
|
65306
|
-
{ configKey: "
|
|
65307
|
-
{ configKey: "
|
|
65308
|
-
{ configKey: "
|
|
65319
|
+
{ configKey: "openai", envVar: "OPENAI_API_KEY", name: "OpenAI", url: "https://platform.openai.com/api-keys", what: "gpt-image-2 image generation (default since v0.56) + Whisper word-level transcribe" },
|
|
65320
|
+
{ configKey: "fal", envVar: "FAL_KEY", name: "fal.ai", url: "https://fal.ai/dashboard/keys", what: "Seedance 2.0 \u2014 video generation, default since v0.57" },
|
|
65321
|
+
{ configKey: "elevenlabs", envVar: "ELEVENLABS_API_KEY", name: "ElevenLabs", url: "https://elevenlabs.io/app/settings/api-keys", what: "Text-to-speech narration + music (skip to use local Kokoro)" }
|
|
65309
65322
|
];
|
|
65310
65323
|
console.log(source_default.dim("Step 2 of 2"));
|
|
65311
65324
|
console.log(source_default.bold("Pipeline requires these API keys:"));
|
|
@@ -65436,11 +65449,12 @@ async function runCustomSetup(config2) {
|
|
|
65436
65449
|
console.log(source_default.dim(" Press Enter to skip any provider you don't need."));
|
|
65437
65450
|
console.log();
|
|
65438
65451
|
const allProviders = [
|
|
65452
|
+
{ key: "openai", name: "OpenAI", env: "OPENAI_API_KEY", desc: "gpt-image-2 image gen ($, default since v0.56), Whisper transcribe, Agent" },
|
|
65439
65453
|
{ key: "anthropic", name: "Anthropic", env: "ANTHROPIC_API_KEY", desc: "Claude \u2014 storyboard, color grade, reframe, Agent ($)" },
|
|
65440
|
-
{ key: "
|
|
65454
|
+
{ key: "fal", name: "fal.ai", env: "FAL_KEY", desc: "Seedance 2.0 video gen ($$, default since v0.57)" },
|
|
65441
65455
|
{ key: "google", name: "Google", env: "GOOGLE_API_KEY", desc: "Gemini \u2014 image gen (free tier), video analysis ($), Veo ($$)" },
|
|
65442
65456
|
{ key: "xai", name: "xAI", env: "XAI_API_KEY", desc: "Grok \u2014 video gen with audio ($$), image ($), Agent" },
|
|
65443
|
-
{ key: "elevenlabs", name: "ElevenLabs", env: "ELEVENLABS_API_KEY", desc: "TTS ($), SFX, music, voice clone, dubbing" },
|
|
65457
|
+
{ key: "elevenlabs", name: "ElevenLabs", env: "ELEVENLABS_API_KEY", desc: "TTS ($), SFX, music, voice clone, dubbing \u2014 skip to use local Kokoro" },
|
|
65444
65458
|
{ key: "runway", name: "Runway", env: "RUNWAY_API_SECRET", desc: "Gen-4.5 video generation ($$)" },
|
|
65445
65459
|
{ key: "kling", name: "Kling", env: "KLING_API_KEY", desc: "v2.5/v3 video \u2014 std ($$) and pro ($$$) modes" },
|
|
65446
65460
|
{ key: "openrouter", name: "OpenRouter", env: "OPENROUTER_API_KEY", desc: "300+ models via one key \u2014 Agent only (pay per model)" },
|
|
@@ -65554,6 +65568,7 @@ async function showConfig() {
|
|
|
65554
65568
|
{ key: "openai", name: "OpenAI", env: "OPENAI_API_KEY" },
|
|
65555
65569
|
{ key: "google", name: "Google", env: "GOOGLE_API_KEY" },
|
|
65556
65570
|
{ key: "xai", name: "xAI", env: "XAI_API_KEY" },
|
|
65571
|
+
{ key: "fal", name: "fal.ai", env: "FAL_KEY" },
|
|
65557
65572
|
{ key: "elevenlabs", name: "ElevenLabs", env: "ELEVENLABS_API_KEY" },
|
|
65558
65573
|
{ key: "runway", name: "Runway", env: "RUNWAY_API_SECRET" },
|
|
65559
65574
|
{ key: "kling", name: "Kling", env: "KLING_API_KEY" },
|
|
@@ -65630,9 +65645,14 @@ var COMMAND_KEY_MAP = {
|
|
|
65630
65645
|
XAI_API_KEY: [
|
|
65631
65646
|
"agent -p xai",
|
|
65632
65647
|
"generate image -p grok",
|
|
65633
|
-
"generate video",
|
|
65648
|
+
"generate video -p grok",
|
|
65634
65649
|
"edit image -p grok"
|
|
65635
65650
|
],
|
|
65651
|
+
FAL_KEY: [
|
|
65652
|
+
"generate video -p fal (Seedance 2.0 \u2014 default since v0.57)",
|
|
65653
|
+
"generate video -p fal -m fast (lower-latency variant)",
|
|
65654
|
+
"generate video -p fal -i <image> (image-to-video)"
|
|
65655
|
+
],
|
|
65636
65656
|
ELEVENLABS_API_KEY: [
|
|
65637
65657
|
"generate speech",
|
|
65638
65658
|
"generate sound-effect",
|
|
@@ -65644,7 +65664,7 @@ var COMMAND_KEY_MAP = {
|
|
|
65644
65664
|
KLING_API_KEY: ["generate video -p kling"],
|
|
65645
65665
|
RUNWAY_API_SECRET: ["generate video -p runway"],
|
|
65646
65666
|
REPLICATE_API_TOKEN: ["generate music -p replicate"],
|
|
65647
|
-
IMGBB_API_KEY: ["generate video -p kling (image-to-video)"]
|
|
65667
|
+
IMGBB_API_KEY: ["generate video -p kling/fal (image-to-video upload host)"]
|
|
65648
65668
|
};
|
|
65649
65669
|
var FREE_COMMANDS = [
|
|
65650
65670
|
"edit silence-cut",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/cli",
|
|
3
|
-
"version": "0.57.
|
|
3
|
+
"version": "0.57.3",
|
|
4
4
|
"description": "VibeFrame CLI - natural language video editing from the terminal",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -149,8 +149,8 @@
|
|
|
149
149
|
"tsx": "^4.21.0",
|
|
150
150
|
"typescript": "^5.3.3",
|
|
151
151
|
"vitest": "^1.2.2",
|
|
152
|
-
"@vibeframe/ai-providers": "0.57.
|
|
153
|
-
"@vibeframe/core": "0.57.
|
|
152
|
+
"@vibeframe/ai-providers": "0.57.3",
|
|
153
|
+
"@vibeframe/core": "0.57.3"
|
|
154
154
|
},
|
|
155
155
|
"engines": {
|
|
156
156
|
"node": ">=20"
|