@vibeframe/mcp-server 0.55.1 → 0.56.0

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 +23 -24
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -432888,7 +432888,7 @@ var DEFAULT_MODEL, OpenAIImageProvider, openaiImageProvider;
432888
432888
  var init_OpenAIImageProvider = __esm({
432889
432889
  "../ai-providers/dist/openai-image/OpenAIImageProvider.js"() {
432890
432890
  "use strict";
432891
- DEFAULT_MODEL = "gpt-image-1.5";
432891
+ DEFAULT_MODEL = "gpt-image-2";
432892
432892
  OpenAIImageProvider = class {
432893
432893
  constructor() {
432894
432894
  this.id = "openai-image";
@@ -442768,9 +442768,7 @@ async function getApiKey(envVar, providerName, optionValue) {
442768
442768
  }
442769
442769
  function hasApiKey(envVar) {
442770
442770
  loadEnv();
442771
- if (process.env[envVar]) return true;
442772
- const key2 = getApiKeyFromConfig(envVar);
442773
- return !!key2;
442771
+ return !!process.env[envVar];
442774
442772
  }
442775
442773
  async function requireApiKey(envVar, providerName, cliOverride) {
442776
442774
  const key2 = await getApiKey(envVar, providerName, cliOverride);
@@ -443993,7 +443991,7 @@ async function executeSilenceCut(options) {
443993
443991
  return { success: false, error: `Video not found: ${videoPath}` };
443994
443992
  }
443995
443993
  if (!commandExists("ffmpeg")) {
443996
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
443994
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
443997
443995
  }
443998
443996
  const method = useGemini ? "gemini" : "ffmpeg";
443999
443997
  try {
@@ -444143,7 +444141,7 @@ async function executeJumpCut(options) {
444143
444141
  return { success: false, error: `Video not found: ${videoPath}` };
444144
444142
  }
444145
444143
  if (!commandExists("ffmpeg")) {
444146
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
444144
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
444147
444145
  }
444148
444146
  const openaiKey = apiKey || process.env.OPENAI_API_KEY;
444149
444147
  if (!openaiKey) {
@@ -444288,7 +444286,7 @@ async function executeCaption(options) {
444288
444286
  return { success: false, error: `Video not found: ${videoPath}` };
444289
444287
  }
444290
444288
  if (!commandExists("ffmpeg")) {
444291
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
444289
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
444292
444290
  }
444293
444291
  const openaiKey = apiKey || process.env.OPENAI_API_KEY;
444294
444292
  if (!openaiKey) {
@@ -444426,7 +444424,7 @@ async function executeNoiseReduce(options) {
444426
444424
  return { success: false, error: `File not found: ${inputPath}` };
444427
444425
  }
444428
444426
  if (!commandExists("ffmpeg")) {
444429
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
444427
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
444430
444428
  }
444431
444429
  try {
444432
444430
  const inputDuration = await getVideoDuration(inputPath);
@@ -444480,7 +444478,7 @@ async function executeFade(options) {
444480
444478
  return { success: false, error: `Video not found: ${videoPath}` };
444481
444479
  }
444482
444480
  if (!commandExists("ffmpeg")) {
444483
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
444481
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
444484
444482
  }
444485
444483
  try {
444486
444484
  const totalDuration = await getVideoDuration(videoPath);
@@ -444706,7 +444704,7 @@ async function applyTextOverlays(options) {
444706
444704
  return { success: false, error: `Video not found: ${absVideoPath}` };
444707
444705
  }
444708
444706
  if (!commandExists("ffmpeg")) {
444709
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
444707
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
444710
444708
  }
444711
444709
  let hasDrawtext = true;
444712
444710
  try {
@@ -445608,7 +445606,7 @@ function _registerImageCommands(aiCommand) {
445608
445606
  exitWithError(notFoundError(absVideoPath));
445609
445607
  }
445610
445608
  if (!commandExists("ffmpeg")) {
445611
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
445609
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
445612
445610
  }
445613
445611
  const apiKey2 = await getApiKey("GOOGLE_API_KEY", "Google", options.apiKey);
445614
445612
  if (!apiKey2) {
@@ -446067,7 +446065,7 @@ async function executeThumbnailBestFrame(options) {
446067
446065
  return { success: false, error: `Video not found: ${videoPath}` };
446068
446066
  }
446069
446067
  if (!commandExists("ffmpeg")) {
446070
- return { success: false, error: "FFmpeg not found. Please install FFmpeg." };
446068
+ return { success: false, error: "FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details." };
446071
446069
  }
446072
446070
  const googleKey = apiKey || process.env.GOOGLE_API_KEY;
446073
446071
  if (!googleKey) {
@@ -446461,9 +446459,7 @@ function buildPreset(input3) {
446461
446459
  const captionInner = useWordSync ? renderTranscriptSpans(transcript) : esc(captionText);
446462
446460
  const wordCss = useWordSync ? `
446463
446461
  ${scope} .caption .word { display: inline-block; opacity: 0; }` : "";
446464
- const timeline = useWordSync ? `${buildTranscriptTweens(transcript, `${scope} .caption .word`)}
446465
- tl.to('${scope} .caption', { opacity: 0, duration: 0.4, ease: 'power2.in' }, ${(dur - 0.4).toFixed(2)});` : `tl.from('${scope} .caption', { opacity: 0, y: 28, duration: 0.6, ease: 'power2.out' }, 0.1);
446466
- tl.to('${scope} .caption', { opacity: 0, duration: 0.4, ease: 'power2.in' }, ${(dur - 0.4).toFixed(2)});`;
446462
+ const timeline = useWordSync ? buildTranscriptTweens(transcript, `${scope} .caption .word`) : `tl.from('${scope} .caption', { opacity: 0, y: 28, duration: 0.45, ease: 'power3.out' }, 0.05);`;
446467
446463
  return {
446468
446464
  css: `${scope} {
446469
446465
  position: absolute; inset: 0; width: 100%; height: 100%;
@@ -446511,8 +446507,11 @@ function buildPreset(input3) {
446511
446507
  }`,
446512
446508
  body: `${backdropMarkup}
446513
446509
  <div class="announce"><h1 id="headline">${esc(headline)}</h1></div>`,
446514
- timeline: `tl.from('${scope} #headline', { opacity: 0, scale: 0.8, duration: 0.9, ease: 'back.out(1.6)' }, 0.15);
446515
- tl.to('${scope} #headline', { opacity: 0, duration: 0.4, ease: 'power2.in' }, ${(dur - 0.4).toFixed(2)});`
446510
+ // Faster, snappier entrance and no tail fade-out see the
446511
+ // matching note in the `simple` case above. The headline stays
446512
+ // on screen until the producer cuts to the next clip; the next
446513
+ // scene's own fade-in handles the visual transition.
446514
+ timeline: `tl.from('${scope} #headline', { opacity: 0, scale: 0.92, duration: 0.55, ease: 'power3.out' }, 0.05);`
446516
446515
  };
446517
446516
  }
446518
446517
  case "explainer": {
@@ -450362,8 +450361,8 @@ var init_provider_resolver = __esm({
450362
450361
  "use strict";
450363
450362
  init_api_key();
450364
450363
  IMAGE_PROVIDERS = [
450365
- { name: "gemini", envVar: "GOOGLE_API_KEY", label: "Gemini" },
450366
450364
  { name: "openai", envVar: "OPENAI_API_KEY", label: "OpenAI" },
450365
+ { name: "gemini", envVar: "GOOGLE_API_KEY", label: "Gemini" },
450367
450366
  { name: "grok", envVar: "XAI_API_KEY", label: "Grok" }
450368
450367
  ];
450369
450368
  VIDEO_PROVIDERS = [
@@ -452446,7 +452445,7 @@ No API key needed (FFmpeg only). Use --use-gemini for smart detection (requires
452446
452445
  exitWithError(notFoundError(absVideoPath));
452447
452446
  }
452448
452447
  if (!commandExists("ffmpeg")) {
452449
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
452448
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
452450
452449
  }
452451
452450
  const ext = extname10(videoPath);
452452
452451
  const name = basename12(videoPath, ext);
@@ -452540,7 +452539,7 @@ Requires: OPENAI_API_KEY (Whisper transcription) + FFmpeg`).action(async (videoP
452540
452539
  exitWithError(notFoundError(absVideoPath));
452541
452540
  }
452542
452541
  if (!commandExists("ffmpeg")) {
452543
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
452542
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
452544
452543
  }
452545
452544
  if (options.dryRun) {
452546
452545
  outputResult({
@@ -452614,7 +452613,7 @@ Requires: OPENAI_API_KEY (Whisper transcription) + FFmpeg`).action(async (videoP
452614
452613
  exitWithError(notFoundError(absInputPath));
452615
452614
  }
452616
452615
  if (!commandExists("ffmpeg")) {
452617
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
452616
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
452618
452617
  }
452619
452618
  if (options.dryRun) {
452620
452619
  outputResult({
@@ -452673,7 +452672,7 @@ Requires: OPENAI_API_KEY (Whisper transcription) + FFmpeg`).action(async (videoP
452673
452672
  exitWithError(notFoundError(absVideoPath));
452674
452673
  }
452675
452674
  if (!commandExists("ffmpeg")) {
452676
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
452675
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
452677
452676
  }
452678
452677
  if (options.dryRun) {
452679
452678
  outputResult({
@@ -452810,7 +452809,7 @@ Requires: OPENAI_API_KEY (Whisper transcription) + FFmpeg`).action(async (videoP
452810
452809
  exitWithError(notFoundError(absVideoPath));
452811
452810
  }
452812
452811
  if (!commandExists("ffmpeg")) {
452813
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
452812
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
452814
452813
  }
452815
452814
  if (options.dryRun) {
452816
452815
  const fillers2 = options.fillers ? options.fillers.split(",").map((f) => f.trim()) : void 0;
@@ -454818,7 +454817,7 @@ ${segmentTexts}`,
454818
454817
  return;
454819
454818
  }
454820
454819
  if (!commandExists("ffmpeg")) {
454821
- exitWithError(generalError("FFmpeg not found. Please install FFmpeg."));
454820
+ exitWithError(generalError("FFmpeg not found. Install with: brew install ffmpeg (macOS) or apt install ffmpeg (Linux). Run `vibe doctor` for details."));
454822
454821
  }
454823
454822
  const spinner2 = ora("Processing audio ducking...").start();
454824
454823
  const absMusic = resolve33(process.cwd(), musicPath);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/mcp-server",
3
- "version": "0.55.1",
3
+ "version": "0.56.0",
4
4
  "description": "VibeFrame MCP Server - AI-native video editing via Model Context Protocol",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,8 +57,8 @@
57
57
  "tsx": "^4.21.0",
58
58
  "typescript": "^5.3.3",
59
59
  "vitest": "^1.2.2",
60
- "@vibeframe/cli": "0.55.1",
61
- "@vibeframe/core": "0.55.1"
60
+ "@vibeframe/cli": "0.56.0",
61
+ "@vibeframe/core": "0.56.0"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=20"