@vibeframe/mcp-server 0.48.2 → 0.48.4

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 +12 -2
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -426900,9 +426900,11 @@ var init_GeminiProvider = __esm({
426900
426900
  "9:16": "9:16",
426901
426901
  "1:1": "1:1"
426902
426902
  };
426903
+ const requestedDuration = typeof veoOpts.duration === "number" ? veoOpts.duration : 8;
426904
+ const veoDuration = requestedDuration <= 5 ? 4 : requestedDuration <= 7 ? 6 : 8;
426903
426905
  const parameters = {
426904
426906
  aspectRatio: aspectRatioMap[veoOpts.aspectRatio || "16:9"] || "16:9",
426905
- durationSeconds: Math.max(4, Math.min(8, veoOpts.duration || 8))
426907
+ durationSeconds: veoDuration
426906
426908
  };
426907
426909
  if (veoOpts.negativePrompt) {
426908
426910
  parameters.negativePrompt = veoOpts.negativePrompt;
@@ -431686,7 +431688,7 @@ var init_GrokProvider = __esm({
431686
431688
  };
431687
431689
  }
431688
431690
  try {
431689
- const duration = Math.min(15, Math.max(1, options?.duration || 5));
431691
+ const duration = Math.round(Math.min(15, Math.max(1, options?.duration || 5)));
431690
431692
  const body = {
431691
431693
  model: DEFAULT_MODEL4,
431692
431694
  prompt: prompt3,
@@ -444011,6 +444013,7 @@ async function executeScriptToVideo(options) {
444011
444013
  if (!existsSync25(absOutputDir)) {
444012
444014
  await mkdir9(absOutputDir, { recursive: true });
444013
444015
  }
444016
+ options.onProgress?.(`Analyzing script with ${storyboardProvider}...`);
444014
444017
  let segments;
444015
444018
  const creativityOpts = { creativity: options.creativity };
444016
444019
  if (storyboardProvider === "openai") {
@@ -444044,6 +444047,7 @@ async function executeScriptToVideo(options) {
444044
444047
  failedNarrations: []
444045
444048
  };
444046
444049
  if (!options.noVoiceover && elevenlabsApiKey) {
444050
+ options.onProgress?.(`Generating ${segments.length} voiceover(s) with ElevenLabs...`);
444047
444051
  const elevenlabs = new ElevenLabsProvider();
444048
444052
  await elevenlabs.initialize({ apiKey: elevenlabsApiKey });
444049
444053
  for (let i = 0; i < segments.length; i++) {
@@ -444093,6 +444097,7 @@ async function executeScriptToVideo(options) {
444093
444097
  }
444094
444098
  await writeFile10(storyboardPath, (0, import_yaml2.stringify)({ scenes: segments }, { indent: 2 }), "utf-8");
444095
444099
  }
444100
+ options.onProgress?.(`Generating ${segments.length} scene image(s) with ${imageProvider}...`);
444096
444101
  const dalleImageSizes = {
444097
444102
  "16:9": "1536x1024",
444098
444103
  "9:16": "1024x1536",
@@ -444175,6 +444180,7 @@ async function executeScriptToVideo(options) {
444175
444180
  const videoPaths = [];
444176
444181
  const maxRetries = options.retries ?? DEFAULT_VIDEO_RETRIES;
444177
444182
  if (!options.imagesOnly && videoApiKey) {
444183
+ options.onProgress?.(`Generating ${segments.length} scene video(s) with ${options.generator || "grok"}...`);
444178
444184
  if (options.generator === "grok") {
444179
444185
  const grok = new GrokProvider();
444180
444186
  await grok.initialize({ apiKey: videoApiKey });
@@ -444375,6 +444381,8 @@ async function executeScriptToVideo(options) {
444375
444381
  }
444376
444382
  }
444377
444383
  if (!options.noTextOverlay) {
444384
+ const overlayCount = segments.filter((s, i) => s.textOverlays?.length && videoPaths[i]).length;
444385
+ if (overlayCount > 0) options.onProgress?.(`Applying text overlays to ${overlayCount} scene(s)...`);
444378
444386
  for (let i = 0; i < segments.length; i++) {
444379
444387
  const segment = segments[i];
444380
444388
  if (segment.textOverlays && segment.textOverlays.length > 0 && videoPaths[i] && videoPaths[i] !== "") {
@@ -444394,6 +444402,7 @@ async function executeScriptToVideo(options) {
444394
444402
  }
444395
444403
  }
444396
444404
  }
444405
+ options.onProgress?.("Assembling project...");
444397
444406
  const project = new Project("Script-to-Video Output");
444398
444407
  project.setAspectRatio(options.aspectRatio || "16:9");
444399
444408
  const defaultTracks = project.getTracks();
@@ -444470,6 +444479,7 @@ async function executeScriptToVideo(options) {
444470
444479
  result.projectPath = projectPath;
444471
444480
  result.totalDuration = currentTime;
444472
444481
  if (options.review) {
444482
+ options.onProgress?.("Reviewing video with Gemini AI...");
444473
444483
  try {
444474
444484
  const storyboardYaml = resolve20(absOutputDir, "storyboard.yaml");
444475
444485
  const storyboardJson = resolve20(absOutputDir, "storyboard.json");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/mcp-server",
3
- "version": "0.48.2",
3
+ "version": "0.48.4",
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/core": "0.48.2",
61
- "@vibeframe/cli": "0.48.2"
60
+ "@vibeframe/cli": "0.48.4",
61
+ "@vibeframe/core": "0.48.4"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=20"