@vibeframe/mcp-server 0.115.0 → 0.115.1
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 +64 -18
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -272230,10 +272230,29 @@ async function executeSceneBuild(opts) {
|
|
|
272230
272230
|
});
|
|
272231
272231
|
warnings.push(...buildPlan.warnings);
|
|
272232
272232
|
retryWith.push(...buildPlan.retryWith);
|
|
272233
|
-
const finishBuildResult = (result) =>
|
|
272234
|
-
|
|
272235
|
-
|
|
272236
|
-
|
|
272233
|
+
const finishBuildResult = async (result) => {
|
|
272234
|
+
const withResolution = {
|
|
272235
|
+
providerResolution: buildPlan.providerResolution,
|
|
272236
|
+
...result
|
|
272237
|
+
};
|
|
272238
|
+
let reportResult = withResolution;
|
|
272239
|
+
if (opts.beatId && result.beats?.length) {
|
|
272240
|
+
try {
|
|
272241
|
+
const parsedAll = parseStoryboard(await loadStoryboardMarkdown(projectDir));
|
|
272242
|
+
reportResult = {
|
|
272243
|
+
...withResolution,
|
|
272244
|
+
beats: mergeBeatOutcomes(
|
|
272245
|
+
collectExistingBeatOutcomes(parsedAll.beats, projectDir),
|
|
272246
|
+
result.beats
|
|
272247
|
+
),
|
|
272248
|
+
beatSummary: void 0
|
|
272249
|
+
// recomputed from the merged beats
|
|
272250
|
+
};
|
|
272251
|
+
} catch {
|
|
272252
|
+
}
|
|
272253
|
+
}
|
|
272254
|
+
return finalizeBuildResult(projectDir, startedAt, withResolution, reportResult);
|
|
272255
|
+
};
|
|
272237
272256
|
if (shouldRunStage(selectedStage, "assets") || shouldRunStage(selectedStage, "sync")) {
|
|
272238
272257
|
if (!ffmpegToolsAvailable()) {
|
|
272239
272258
|
return finishBuildResult({
|
|
@@ -274045,26 +274064,30 @@ async function apiKeyForVideoProvider(provider, projectDir) {
|
|
|
274045
274064
|
const providerKey = provider === "seedance" ? "fal" : provider === "grok" ? "xai" : provider === "veo" ? "google" : provider;
|
|
274046
274065
|
return getApiKeyFromConfig(providerKey, { cwd: projectDir });
|
|
274047
274066
|
}
|
|
274048
|
-
async function finalizeBuildResult(projectDir, startedAt, result) {
|
|
274067
|
+
async function finalizeBuildResult(projectDir, startedAt, result, reportResult = result) {
|
|
274049
274068
|
const reportPath = join65(projectDir, "build-report.json");
|
|
274050
|
-
|
|
274051
|
-
|
|
274052
|
-
|
|
274069
|
+
for (const source3 of /* @__PURE__ */ new Set([result, reportResult])) {
|
|
274070
|
+
if (source3.stageReports) {
|
|
274071
|
+
for (const report of Object.values(source3.stageReports)) {
|
|
274072
|
+
if (report.status === "pending") report.status = "skipped";
|
|
274073
|
+
}
|
|
274053
274074
|
}
|
|
274054
274075
|
}
|
|
274055
|
-
const
|
|
274056
|
-
...
|
|
274057
|
-
status:
|
|
274058
|
-
currentStage:
|
|
274059
|
-
beatSummary:
|
|
274060
|
-
sceneRepair:
|
|
274076
|
+
const decorate = (base2) => ({
|
|
274077
|
+
...base2,
|
|
274078
|
+
status: base2.status ?? buildWorkflowStatus(base2),
|
|
274079
|
+
currentStage: base2.currentStage ?? buildCurrentStage(base2),
|
|
274080
|
+
beatSummary: base2.beatSummary ?? summarizeBuildBeats(projectDir, base2.beats),
|
|
274081
|
+
sceneRepair: base2.sceneRepair ?? skippedSceneRepairSummary(),
|
|
274061
274082
|
reportPath,
|
|
274062
274083
|
totalLatencyMs: Date.now() - startedAt
|
|
274063
|
-
};
|
|
274084
|
+
});
|
|
274085
|
+
const withMeta = decorate(result);
|
|
274086
|
+
const reportMeta = reportResult === result ? withMeta : decorate(reportResult);
|
|
274064
274087
|
try {
|
|
274065
274088
|
await writeFile19(
|
|
274066
274089
|
reportPath,
|
|
274067
|
-
JSON.stringify(toBuildReport(projectDir,
|
|
274090
|
+
JSON.stringify(toBuildReport(projectDir, reportMeta), null, 2) + "\n",
|
|
274068
274091
|
"utf-8"
|
|
274069
274092
|
);
|
|
274070
274093
|
} catch {
|
|
@@ -283619,9 +283642,12 @@ Examples:
|
|
|
283619
283642
|
outputPath = resolve66(process.cwd(), options.output);
|
|
283620
283643
|
await writeFile39(outputPath, buffer);
|
|
283621
283644
|
}
|
|
283645
|
+
const cost = realRunCost(provider, options);
|
|
283622
283646
|
outputSuccess({
|
|
283623
283647
|
command: "generate video",
|
|
283624
283648
|
startedAt,
|
|
283649
|
+
costUsd: cost.costUsd,
|
|
283650
|
+
warnings: cost.warnings,
|
|
283625
283651
|
data: {
|
|
283626
283652
|
provider,
|
|
283627
283653
|
taskId: result?.id,
|
|
@@ -283658,6 +283684,26 @@ Examples:
|
|
|
283658
283684
|
}
|
|
283659
283685
|
});
|
|
283660
283686
|
}
|
|
283687
|
+
function realRunCost(provider, options) {
|
|
283688
|
+
if (provider === "seedance" || provider === "fal") {
|
|
283689
|
+
return {
|
|
283690
|
+
costUsd: estimateSeedanceVideoCostUsd({
|
|
283691
|
+
durationSec: Number(options.duration) || 5,
|
|
283692
|
+
resolution: options.resolution,
|
|
283693
|
+
aspectRatio: options.ratio,
|
|
283694
|
+
fast: options.seedanceModel === "fast",
|
|
283695
|
+
hasVideoReference: Boolean(options.refVideos)
|
|
283696
|
+
}),
|
|
283697
|
+
warnings: []
|
|
283698
|
+
};
|
|
283699
|
+
}
|
|
283700
|
+
return {
|
|
283701
|
+
costUsd: lookupCostEstimateUpperBound("generate video") ?? 5,
|
|
283702
|
+
warnings: [
|
|
283703
|
+
`costUsd is the tier upper bound for ${provider} - actual provider billing is typically lower and is not metered here.`
|
|
283704
|
+
]
|
|
283705
|
+
};
|
|
283706
|
+
}
|
|
283661
283707
|
async function prepareSeedanceReferences2(opts) {
|
|
283662
283708
|
const references = [];
|
|
283663
283709
|
for (const sourcePath of opts.refImages ?? []) {
|
|
@@ -314489,7 +314535,7 @@ function handleCliFlags(argv, version2) {
|
|
|
314489
314535
|
}
|
|
314490
314536
|
|
|
314491
314537
|
// src/index.ts
|
|
314492
|
-
if (handleCliFlags(process.argv.slice(2), "0.115.
|
|
314538
|
+
if (handleCliFlags(process.argv.slice(2), "0.115.1")) {
|
|
314493
314539
|
process.exit(0);
|
|
314494
314540
|
}
|
|
314495
314541
|
console.log = (...args) => console.error(...args);
|
|
@@ -314502,7 +314548,7 @@ var server = new Server(
|
|
|
314502
314548
|
{
|
|
314503
314549
|
name: "vibeframe",
|
|
314504
314550
|
// Stamped with the package version by build.js at bundle time.
|
|
314505
|
-
version: "0.115.
|
|
314551
|
+
version: "0.115.1"
|
|
314506
314552
|
},
|
|
314507
314553
|
{
|
|
314508
314554
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.115.
|
|
3
|
+
"version": "0.115.1",
|
|
4
4
|
"description": "VibeFrame MCP Server - frontier AI video generation for agents (Seedance, Runway, Veo, Kling) on your own keys, behind a hard cost cap",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
"tsx": "^4.21.0",
|
|
67
67
|
"typescript": "^5.3.3",
|
|
68
68
|
"vitest": "^1.2.2",
|
|
69
|
-
"@vibeframe/
|
|
70
|
-
"@vibeframe/
|
|
69
|
+
"@vibeframe/core": "0.115.1",
|
|
70
|
+
"@vibeframe/cli": "0.115.1"
|
|
71
71
|
},
|
|
72
72
|
"engines": {
|
|
73
73
|
"node": ">=20"
|