@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.
- package/dist/index.js +23 -24
- 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-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 ?
|
|
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
|
-
|
|
446515
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
61
|
-
"@vibeframe/core": "0.
|
|
60
|
+
"@vibeframe/cli": "0.56.0",
|
|
61
|
+
"@vibeframe/core": "0.56.0"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=20"
|