@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.
- package/README.md +1 -1
- package/dist/index.js +26 -13
- 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("
|
|
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
|
|
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
|
-
|
|
462040
|
-
|
|
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
|
|
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.
|
|
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/
|
|
61
|
-
"@vibeframe/
|
|
60
|
+
"@vibeframe/core": "0.74.0",
|
|
61
|
+
"@vibeframe/cli": "0.74.0"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=20"
|