@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.
Files changed (2) hide show
  1. package/dist/index.js +64 -18
  2. 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) => finalizeBuildResult(projectDir, startedAt, {
272234
- providerResolution: buildPlan.providerResolution,
272235
- ...result
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
- if (result.stageReports) {
274051
- for (const report of Object.values(result.stageReports)) {
274052
- if (report.status === "pending") report.status = "skipped";
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 withMeta = {
274056
- ...result,
274057
- status: result.status ?? buildWorkflowStatus(result),
274058
- currentStage: result.currentStage ?? buildCurrentStage(result),
274059
- beatSummary: result.beatSummary ?? summarizeBuildBeats(projectDir, result.beats),
274060
- sceneRepair: result.sceneRepair ?? skippedSceneRepairSummary(),
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, withMeta), null, 2) + "\n",
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.0")) {
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.0"
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.0",
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/cli": "0.115.0",
70
- "@vibeframe/core": "0.115.0"
69
+ "@vibeframe/core": "0.115.1",
70
+ "@vibeframe/cli": "0.115.1"
71
71
  },
72
72
  "engines": {
73
73
  "node": ">=20"