@vibeframe/mcp-server 0.73.0 → 0.74.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 (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +26 -13
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -194,7 +194,7 @@ Tool names are MCP-side. Your host typically prefixes them (e.g. Claude shows th
194
194
  |------|-------------|
195
195
  | `walkthrough` | Cross-host guides for scene and pipeline workflows |
196
196
 
197
- > **CLI ↔ MCP sync**: `packages/mcp-server/src/tools/cli-sync.test.ts` is a vitest hook that fails CI when a CLI subcommand is added/removed/renamed without the matching MCP change. Open the test file to see the live mapping table — `null` rows mark CLI-only commands (e.g. `vibe audio voices`, `vibe project set`) that are intentionally not exposed via MCP.
197
+ > **CLI ↔ MCP sync**: `packages/mcp-server/src/tools/cli-sync.test.ts` is a vitest hook that fails CI when a CLI subcommand is added/removed/renamed without the matching MCP change. Open the test file to see the live mapping table — `null` rows mark CLI-only commands (e.g. `vibe audio list-voices`, `vibe project set`) that are intentionally not exposed via MCP.
198
198
 
199
199
  ## Resources
200
200
 
package/dist/index.js CHANGED
@@ -449755,8 +449755,10 @@ var output_exports = {};
449755
449755
  __export(output_exports, {
449756
449756
  COST_ESTIMATES: () => COST_ESTIMATES,
449757
449757
  ExitCode: () => ExitCode,
449758
+ _resetDeprecationMemoryForTesting: () => _resetDeprecationMemoryForTesting,
449758
449759
  apiError: () => apiError,
449759
449760
  authError: () => authError,
449761
+ emitDeprecationWarning: () => emitDeprecationWarning,
449760
449762
  exitWithError: () => exitWithError,
449761
449763
  generalError: () => generalError,
449762
449764
  isJsonMode: () => isJsonMode,
@@ -449901,6 +449903,19 @@ function suggestNext(tip) {
449901
449903
  Tip: ${tip}`));
449902
449904
  }
449903
449905
  }
449906
+ function emitDeprecationWarning(oldName, newName, removeIn) {
449907
+ if (isJsonMode() || isQuietMode()) return;
449908
+ if (!process.stderr.isTTY) return;
449909
+ const key2 = `${oldName}\u2192${newName}`;
449910
+ if (_seenDeprecations.has(key2)) return;
449911
+ _seenDeprecations.add(key2);
449912
+ process.stderr.write(
449913
+ source_default.yellow(`[deprecated] '${oldName}' is deprecated; use '${newName}' instead. Alias will be removed in ${removeIn}.`) + "\n"
449914
+ );
449915
+ }
449916
+ function _resetDeprecationMemoryForTesting() {
449917
+ _seenDeprecations.clear();
449918
+ }
449904
449919
  function outputError(error, details) {
449905
449920
  if (isJsonMode()) {
449906
449921
  console.error(JSON.stringify({ success: false, error, ...details }, null, 2));
@@ -449908,7 +449923,7 @@ function outputError(error, details) {
449908
449923
  console.error(error);
449909
449924
  }
449910
449925
  }
449911
- var ExitCode, PROVIDER_ERROR_HINTS, COST_ESTIMATES;
449926
+ var ExitCode, PROVIDER_ERROR_HINTS, COST_ESTIMATES, _seenDeprecations;
449912
449927
  var init_output = __esm({
449913
449928
  "../cli/src/commands/output.ts"() {
449914
449929
  "use strict";
@@ -449943,7 +449958,7 @@ var init_output = __esm({
449943
449958
  { pattern: /context_length_exceeded|maximum.*context.*length|token.*limit.*exceeded|prompt.*too.*long/i, suggestion: "Input exceeds the model's context window. Shorten the prompt, or use a model with larger context (run 'vibe schema <command>' for options).", retryable: false },
449944
449959
  { pattern: /model.*not.*found|invalid.*model|unknown.*model|model_not_found/i, suggestion: "The specified model is unavailable. Check 'vibe schema <command>' for valid model options.", retryable: false },
449945
449960
  // Provider-specific
449946
- { pattern: /voice.*not.*found|voice_not_found|invalid.*voice.?id/i, suggestion: "Voice ID not found. Run 'vibe audio voices' to list available voices, then pass --voice <id>.", retryable: false },
449961
+ { pattern: /voice.*not.*found|voice_not_found|invalid.*voice.?id/i, suggestion: "Voice ID not found. Run 'vibe audio list-voices' to list available voices, then pass --voice <id>.", retryable: false },
449947
449962
  { pattern: /character.*(count|limit).*exceeded|invalid_character_count/i, suggestion: "Text exceeds the TTS provider's character limit. Shorten the text or split into chunks.", retryable: false },
449948
449963
  { pattern: /invalid.*aspect.*ratio|unsupported.*aspect.*ratio|unsupported.*resolution/i, suggestion: "This aspect ratio or resolution isn't supported by the chosen model. Check 'vibe schema <command>' for supported values.", retryable: false },
449949
449964
  { pattern: /invalid.*file.*format|unsupported.*(format|codec)|unsupported.*media.?type/i, suggestion: "Input file format not supported. Convert to MP4/MP3/PNG first with 'vibe export' or 'ffmpeg'.", retryable: false },
@@ -449994,6 +450009,7 @@ var init_output = __esm({
449994
450009
  // pre-flight). Range covers a 1-beat preview to a 10-beat long-form.
449995
450010
  "compose scenes with skills": { min: 0.05, max: 1.5, unit: "per pipeline" }
449996
450011
  };
450012
+ _seenDeprecations = /* @__PURE__ */ new Set();
449997
450013
  }
449998
450014
  });
449999
450015
 
@@ -462021,10 +462037,8 @@ function formatSceneInitProfile(profile) {
462021
462037
  if (profile === "agent") return "authoring files plus local composition rules for host agents";
462022
462038
  return "complete authoring, agent, and render scaffold";
462023
462039
  }
462024
- var sceneCommand = new Command("scene").description("Advanced scene commands for VibeFrame video projects").addHelpText("after", `
462040
+ var sceneCommand = new Command("scene").description("Lower-level scene authoring (add, lint, styles). For project flow use `vibe init` / `vibe build` / `vibe render`.").addHelpText("after", `
462025
462041
  Examples:
462026
- $ vibe scene init my-video # Scaffold a new project
462027
- $ vibe scene init my-video -r 9:16 -d 30 # Vertical 30s project
462028
462042
  $ vibe scene add intro --style announcement \\
462029
462043
  --headline "Welcome to VibeFrame" # Headline-only scene
462030
462044
  $ vibe scene add overview --narration "VibeFrame turns scripts into video." \\
@@ -462032,14 +462046,13 @@ Examples:
462032
462046
  $ vibe scene lint # Validate every scene against composition rules
462033
462047
  $ vibe scene lint --fix # Auto-fix mechanical issues (e.g. missing class="clip")
462034
462048
  $ vibe scene lint --json # Structured output for agent loops
462035
- $ vibe scene render # Render to renders/<name>-<timestamp>.mp4
462036
- $ vibe scene render -o demo.mp4 --quality high # Custom output path + quality
462037
- $ vibe scene render --fps 60 --format webm # 60fps WebM render
462049
+ $ vibe scene styles # Browse seed visual styles for DESIGN.md
462038
462050
 
462039
- Most users can start with \`vibe init\`, \`vibe build\`, and \`vibe render\`.
462040
- This namespace exposes lower-level scene authoring and rendering controls.
462051
+ For the project flow (init / build / render), use the top-level commands.
462052
+ The \`scene init\`, \`scene build\`, and \`scene render\` legacy aliases
462053
+ are still callable but hidden from this help \u2014 they will be removed in v1.0.
462041
462054
  Run 'vibe schema scene.<command>' for structured parameter info.`);
462042
- sceneCommand.command("init").description("Scaffold a new scene project (or safely augment an existing project)").argument("<dir>", "Project directory (created if it doesn't exist)").option("-n, --name <name>", "Project name (defaults to directory basename)").option("-r, --ratio <ratio>", "Aspect ratio: 16:9, 9:16, 1:1, 4:5", "16:9").option("-d, --duration <sec>", "Default root composition duration (seconds)", "10").option("--visual-style <name>", `Seed DESIGN.md from a named style (browse via \`vibe scene styles\`). E.g. "Swiss Pulse"`).option("--profile <profile>", "Scene profile: minimal (storyboard/design only), agent (recommended), full (render scaffold upfront)", "agent").option("--dry-run", "Preview parameters without writing files").action(async (dir, options) => {
462055
+ sceneCommand.command("init", { hidden: true }).description("Scaffold a new scene project (or safely augment an existing project) [legacy \u2014 prefer `vibe init`]").argument("<dir>", "Project directory (created if it doesn't exist)").option("-n, --name <name>", "Project name (defaults to directory basename)").option("-r, --ratio <ratio>", "Aspect ratio: 16:9, 9:16, 1:1, 4:5", "16:9").option("-d, --duration <sec>", "Default root composition duration (seconds)", "10").option("--visual-style <name>", `Seed DESIGN.md from a named style (browse via \`vibe scene styles\`). E.g. "Swiss Pulse"`).option("--profile <profile>", "Scene profile: minimal (storyboard/design only), agent (recommended), full (render scaffold upfront)", "agent").option("--dry-run", "Preview parameters without writing files").action(async (dir, options) => {
462043
462056
  const startedAt = Date.now();
462044
462057
  const aspect = validateAspect(options.ratio);
462045
462058
  const duration = validateDuration(options.duration);
@@ -462810,7 +462823,7 @@ function validateWorkers(value) {
462810
462823
  }
462811
462824
  return n;
462812
462825
  }
462813
- sceneCommand.command("render").description("Render a scene project to MP4/WebM/MOV via the Hyperframes producer (requires Chrome)").argument("[root]", "Root composition file relative to --project", "index.html").option("--project <dir>", "Project directory", ".").option("-o, --out <path>", "Output file (default: renders/<name>-<timestamp>.<format>)").option("--fps <n>", `Frames per second: ${VALID_FPS.join("|")}`, "30").option("--quality <q>", `Quality preset: ${VALID_QUALITIES.join("|")}`, "standard").option("--format <f>", `Output container: ${VALID_FORMATS.join("|")}`, "mp4").option("--workers <n>", "Capture workers (1-16, default 1)", "1").option("--dry-run", "Preview parameters without rendering").action(async (root2, options) => {
462826
+ sceneCommand.command("render", { hidden: true }).description("Render a scene project to MP4/WebM/MOV via the Hyperframes producer (requires Chrome) [legacy \u2014 prefer `vibe render`]").argument("[root]", "Root composition file relative to --project", "index.html").option("--project <dir>", "Project directory", ".").option("-o, --out <path>", "Output file (default: renders/<name>-<timestamp>.<format>)").option("--fps <n>", `Frames per second: ${VALID_FPS.join("|")}`, "30").option("--quality <q>", `Quality preset: ${VALID_QUALITIES.join("|")}`, "standard").option("--format <f>", `Output container: ${VALID_FORMATS.join("|")}`, "mp4").option("--workers <n>", "Capture workers (1-16, default 1)", "1").option("--dry-run", "Preview parameters without rendering").action(async (root2, options) => {
462814
462827
  const startedAt = Date.now();
462815
462828
  const fps = validateFps(options.fps);
462816
462829
  const quality = validateQuality(options.quality);
@@ -462886,7 +462899,7 @@ sceneCommand.command("render").description("Render a scene project to MP4/WebM/M
462886
462899
  }
462887
462900
  }
462888
462901
  });
462889
- sceneCommand.command("build").description("One-shot: read STORYBOARD.md cues, dispatch TTS + image-gen per beat, compose, render to MP4 (v0.60)").argument("[project-dir]", "Project directory containing STORYBOARD.md", ".").option("--mode <mode>", "Build mode: agent (host-agent authors HTML) | batch (CLI's internal LLM authors HTML) | auto (agent if any host detected) [Plan H \u2014 Phase 3]", "auto").option("--effort <level>", "Compose effort tier (batch mode only): low|medium|high", "medium").option("--composer <provider>", "LLM that composes scene HTML in batch mode: claude|openai|gemini (default: auto-resolve from available API keys, claude > gemini > openai)").option("--skip-narration", "Don't dispatch TTS even when beats declare narration cues").option("--skip-backdrop", "Don't dispatch image-gen even when beats declare backdrop cues").option("--skip-render", "Compose only \u2014 don't render to MP4").option("--tts <provider>", "TTS provider: auto|elevenlabs|kokoro (overrides frontmatter)").option("--voice <id>", "Voice id (provider-specific \u2014 overrides frontmatter)").option("--image-provider <name>", "Image provider: openai (only one supported in v0.60)").option("--quality <q>", "Image quality: standard|hd", "hd").option("--image-size <s>", "Image size: 1024x1024|1536x1024|1024x1536", "1536x1024").option("--force", "Re-dispatch primitives even when assets already exist").option("--dry-run", "Preview parameters without dispatching").action(async (projectDirArg, options) => {
462902
+ sceneCommand.command("build", { hidden: true }).description("One-shot: read STORYBOARD.md cues, dispatch TTS + image-gen per beat, compose, render to MP4 [legacy \u2014 prefer `vibe build`]").argument("[project-dir]", "Project directory containing STORYBOARD.md", ".").option("--mode <mode>", "Build mode: agent (host-agent authors HTML) | batch (CLI's internal LLM authors HTML) | auto (agent if any host detected) [Plan H \u2014 Phase 3]", "auto").option("--effort <level>", "Compose effort tier (batch mode only): low|medium|high", "medium").option("--composer <provider>", "LLM that composes scene HTML in batch mode: claude|openai|gemini (default: auto-resolve from available API keys, claude > gemini > openai)").option("--skip-narration", "Don't dispatch TTS even when beats declare narration cues").option("--skip-backdrop", "Don't dispatch image-gen even when beats declare backdrop cues").option("--skip-render", "Compose only \u2014 don't render to MP4").option("--tts <provider>", "TTS provider: auto|elevenlabs|kokoro (overrides frontmatter)").option("--voice <id>", "Voice id (provider-specific \u2014 overrides frontmatter)").option("--image-provider <name>", "Image provider: openai (only one supported in v0.60)").option("--quality <q>", "Image quality: standard|hd", "hd").option("--image-size <s>", "Image size: 1024x1024|1536x1024|1024x1536", "1536x1024").option("--force", "Re-dispatch primitives even when assets already exist").option("--dry-run", "Preview parameters without dispatching").action(async (projectDirArg, options) => {
462890
462903
  const startedAt = Date.now();
462891
462904
  const projectDir = resolve21(projectDirArg);
462892
462905
  if (options.dryRun) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/mcp-server",
3
- "version": "0.73.0",
3
+ "version": "0.74.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.73.0",
61
- "@vibeframe/core": "0.73.0"
60
+ "@vibeframe/core": "0.74.0",
61
+ "@vibeframe/cli": "0.74.0"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=20"