@vibeframe/cli 0.57.0 → 0.57.2

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.
Files changed (2) hide show
  1. package/dist/index.js +38 -24
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -33587,7 +33587,7 @@ Run 'vibe setup --show' to check API key status.
33587
33587
  Run 'vibe schema generate.<command>' for structured parameter info.
33588
33588
  `
33589
33589
  );
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: gemini, openai, grok, runway (dalle is deprecated)", "gemini").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", `
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: 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
33591
  Examples:
33592
33592
  $ vibe generate image "a sunset over the ocean" -o sunset.png
33593
33593
  $ vibe gen img "logo design" -o logo.png -p openai
@@ -33609,22 +33609,28 @@ Examples:
33609
33609
  if (options.output) {
33610
33610
  validateOutputPath(options.output);
33611
33611
  }
33612
- let provider = options.provider.toLowerCase();
33613
33612
  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
33613
  const providerEnvMap = {
33618
33614
  gemini: "GOOGLE_API_KEY",
33619
33615
  openai: "OPENAI_API_KEY",
33620
33616
  grok: "XAI_API_KEY"
33621
33617
  };
33622
- if (providerEnvMap[provider] && !hasApiKey(providerEnvMap[provider]) && !options.apiKey) {
33623
- const resolved = resolveProvider("image");
33624
- if (resolved) {
33625
- log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
33626
- provider = resolved.name;
33618
+ let provider;
33619
+ if (options.provider) {
33620
+ provider = options.provider.toLowerCase();
33621
+ if (!validProviders.includes(provider)) {
33622
+ exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: openai, gemini, grok, runway`));
33623
+ }
33624
+ if (providerEnvMap[provider] && !hasApiKey(providerEnvMap[provider]) && !options.apiKey) {
33625
+ const resolved = resolveProvider("image");
33626
+ if (resolved) {
33627
+ log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
33628
+ provider = resolved.name;
33629
+ }
33627
33630
  }
33631
+ } else {
33632
+ const resolved = resolveProvider("image");
33633
+ provider = resolved?.name ?? "gemini";
33628
33634
  }
33629
33635
  if (provider === "dalle") {
33630
33636
  console.log(source_default.yellow('Warning: "dalle" is deprecated. Use "openai" instead.'));
@@ -33918,7 +33924,7 @@ Examples:
33918
33924
  exitWithError(apiError(`Image generation failed: ${error.message}`));
33919
33925
  }
33920
33926
  });
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: grok (default), kling, runway, veo, fal (Seedance 2.0)", "grok").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", `
33927
+ 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
33928
  Examples:
33923
33929
  $ vibe generate video "dancing cat" -o cat.mp4 # Grok (default)
33924
33930
  $ vibe gen vid "city timelapse" -o city.mp4 -p kling # Kling
@@ -33940,11 +33946,7 @@ Examples:
33940
33946
  if (options.output) {
33941
33947
  validateOutputPath(options.output);
33942
33948
  }
33943
- let provider = options.provider.toLowerCase();
33944
- const validProviders = ["runway", "kling", "veo", "grok"];
33945
- if (!validProviders.includes(provider)) {
33946
- exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: ${validProviders.join(", ")}`));
33947
- }
33949
+ const validProviders = ["runway", "kling", "veo", "grok", "fal"];
33948
33950
  const videoEnvMap = {
33949
33951
  grok: "XAI_API_KEY",
33950
33952
  veo: "GOOGLE_API_KEY",
@@ -33952,12 +33954,22 @@ Examples:
33952
33954
  runway: "RUNWAY_API_SECRET",
33953
33955
  fal: "FAL_KEY"
33954
33956
  };
33955
- if (videoEnvMap[provider] && !hasApiKey(videoEnvMap[provider]) && !options.apiKey) {
33956
- const resolved = resolveProvider("video");
33957
- if (resolved) {
33958
- log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
33959
- provider = resolved.name;
33957
+ let provider;
33958
+ if (options.provider) {
33959
+ provider = options.provider.toLowerCase();
33960
+ if (!validProviders.includes(provider)) {
33961
+ exitWithError(usageError(`Invalid provider: ${provider}`, `Available providers: ${validProviders.join(", ")}`));
33962
+ }
33963
+ if (videoEnvMap[provider] && !hasApiKey(videoEnvMap[provider]) && !options.apiKey) {
33964
+ const resolved = resolveProvider("video");
33965
+ if (resolved) {
33966
+ log(source_default.dim(` ${provider} key not found. Using ${resolved.label} instead.`));
33967
+ provider = resolved.name;
33968
+ }
33960
33969
  }
33970
+ } else {
33971
+ const resolved = resolveProvider("video");
33972
+ provider = resolved?.name ?? "grok";
33961
33973
  }
33962
33974
  let referenceImage;
33963
33975
  let isImageToVideo = false;
@@ -34005,13 +34017,15 @@ Examples:
34005
34017
  runway: "RUNWAY_API_SECRET",
34006
34018
  kling: "KLING_API_KEY",
34007
34019
  veo: "GOOGLE_API_KEY",
34008
- grok: "XAI_API_KEY"
34020
+ grok: "XAI_API_KEY",
34021
+ fal: "FAL_KEY"
34009
34022
  };
34010
34023
  const providerNameMap = {
34011
34024
  runway: "Runway",
34012
34025
  kling: "Kling",
34013
34026
  veo: "Veo",
34014
- grok: "Grok"
34027
+ grok: "Grok",
34028
+ fal: "fal.ai (Seedance 2.0)"
34015
34029
  };
34016
34030
  const envKey = envKeyMap[provider];
34017
34031
  const providerName = providerNameMap[provider];
@@ -57523,7 +57537,7 @@ init_source();
57523
57537
  // package.json
57524
57538
  var package_default = {
57525
57539
  name: "@vibeframe/cli",
57526
- version: "0.57.0",
57540
+ version: "0.57.2",
57527
57541
  description: "VibeFrame CLI - natural language video editing from the terminal",
57528
57542
  private: false,
57529
57543
  license: "MIT",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/cli",
3
- "version": "0.57.0",
3
+ "version": "0.57.2",
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.0",
153
- "@vibeframe/core": "0.57.0"
152
+ "@vibeframe/ai-providers": "0.57.2",
153
+ "@vibeframe/core": "0.57.2"
154
154
  },
155
155
  "engines": {
156
156
  "node": ">=20"