@vibeframe/mcp-server 0.113.27 → 0.113.29
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 +99 -100
- package/package.json +13 -7
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @vibeframe/mcp-server
|
|
2
2
|
|
|
3
|
-
The MCP (Model Context Protocol) **server** for [VibeFrame](https://github.com/vericontext/vibeframe). This package is _only_ the MCP adapter
|
|
3
|
+
The MCP (Model Context Protocol) **server** for [VibeFrame](https://github.com/vericontext/vibeframe), the frontier-video-generation layer for coding agents: generate video assets on your own provider keys (Seedance, Runway, Veo, Kling), behind dry runs and a hard `--max-cost` ceiling. This package is _only_ the MCP adapter - it exposes VibeFrame's operations as typed MCP tools so an MCP-capable host can call them by natural language.
|
|
4
4
|
|
|
5
5
|
VibeFrame is CLI-first, not terminal-only. The CLI is the stable runtime; MCP is the app-host surface for clients that prefer typed tools over shell commands.
|
|
6
6
|
|
package/dist/index.js
CHANGED
|
@@ -26064,12 +26064,12 @@ colors:
|
|
|
26064
26064
|
---
|
|
26065
26065
|
|
|
26066
26066
|
`;
|
|
26067
|
-
const intro = style ? `Visual identity for **${name}**, scaffolded from the **${style.name}** style (after ${style.designer}). Customise freely
|
|
26068
|
-
const moodLine = style ? `**Mood:** ${style.mood} \xB7 **Best for:** ${style.bestFor}` : `**Mood:** _(one line
|
|
26067
|
+
const intro = style ? `Visual identity for **${name}**, scaffolded from the **${style.name}** style (after ${style.designer}). Customise freely - this file is the single source of truth for every scene's palette, typography, and motion.` : `Visual identity for **${name}**. Fill the sections below before authoring any scene HTML or generating any backdrop. Pick a named style with \`vibe scene list-styles\` if you want a credible starting point.`;
|
|
26068
|
+
const moodLine = style ? `**Mood:** ${style.mood} \xB7 **Best for:** ${style.bestFor}` : `**Mood:** _(one line - what should the viewer FEEL?)_`;
|
|
26069
26069
|
const palette = style ? `${style.palette.map((c2) => `- \`${c2}\``).join("\n")}
|
|
26070
26070
|
|
|
26071
|
-
${style.paletteNotes}` : `- _hex_
|
|
26072
|
-
- _hex_
|
|
26071
|
+
${style.paletteNotes}` : `- _hex_ - primary
|
|
26072
|
+
- _hex_ - accent
|
|
26073
26073
|
|
|
26074
26074
|
_2\u20133 colours max. Declare explicit hex values; never name colours abstractly._`;
|
|
26075
26075
|
const typography = style ? style.typography : `_One family, two weights. State the role of each (headline / label / body)._`;
|
|
@@ -26083,7 +26083,7 @@ _2\u20133 colours max. Declare explicit hex values; never name colours abstractl
|
|
|
26083
26083
|
const avoid = style ? style.avoid.map((a4) => `- ${a4}`).join("\n") : `- _anti-pattern 1_
|
|
26084
26084
|
- _anti-pattern 2_
|
|
26085
26085
|
- _anti-pattern 3_`;
|
|
26086
|
-
return `${frontmatter}# ${name}
|
|
26086
|
+
return `${frontmatter}# ${name} - Design
|
|
26087
26087
|
|
|
26088
26088
|
> **Hard-gate (BUILD flow only).** This file is the visual contract for
|
|
26089
26089
|
> the scene-project flow (\`vibe build\`, \`vibe scene ...\`, composition
|
|
@@ -26131,8 +26131,8 @@ ${style ? `_This file was seeded by \`vibe scene init --visual-style "${style.na
|
|
|
26131
26131
|
`;
|
|
26132
26132
|
}
|
|
26133
26133
|
function buildScriptMd(name, kind3 = DEFAULT_SCENE_KIND) {
|
|
26134
|
-
const intent = kind3 === "product" ? "Product walkthrough
|
|
26135
|
-
return `# ${name}
|
|
26134
|
+
const intent = kind3 === "product" ? "Product walkthrough - what each section demonstrates, in order." : kind3 === "motion" ? "Motion piece - the message and the beats of on-screen text/graphics." : kind3 === "aivideo" ? "AI-video script - the spoken/voiced narrative the generated shots illustrate." : "Narrative script - scene-by-scene story, dialogue, and voiceover.";
|
|
26135
|
+
return `# ${name} - Script
|
|
26136
26136
|
|
|
26137
26137
|
> **Authoring order:** SCRIPT.md (this file) \u2192 STORYBOARD.md (beats + cues)${kindHasCast(kind3) ? " \u2192 CHARACTERS.md (cast bible)" : ""}.
|
|
26138
26138
|
> ${intent}
|
|
@@ -26160,7 +26160,7 @@ Voiceover / on-screen: \u2026
|
|
|
26160
26160
|
`;
|
|
26161
26161
|
}
|
|
26162
26162
|
function buildCharactersMd(name) {
|
|
26163
|
-
return `# ${name}
|
|
26163
|
+
return `# ${name} - Characters
|
|
26164
26164
|
|
|
26165
26165
|
> Each character is referenced from STORYBOARD beats via the \`characters:\` cue.
|
|
26166
26166
|
> The reference sheet + identity block keep keyframes and image-to-video on-model
|
|
@@ -26169,8 +26169,8 @@ function buildCharactersMd(name) {
|
|
|
26169
26169
|
## hero
|
|
26170
26170
|
|
|
26171
26171
|
- **Reference sheet:** \`assets/characters/hero.png\` (a clean, front-lit full-body
|
|
26172
|
-
or portrait sheet
|
|
26173
|
-
- **Identity:** one paragraph of fixed, on-model traits
|
|
26172
|
+
or portrait sheet - the identity anchor for keyframe edits).
|
|
26173
|
+
- **Identity:** one paragraph of fixed, on-model traits - age, build, hair,
|
|
26174
26174
|
wardrobe, palette. Keep this stable across every beat.
|
|
26175
26175
|
- **Range:** expressions / poses this character should hit.
|
|
26176
26176
|
|
|
@@ -26188,14 +26188,14 @@ tts: auto
|
|
|
26188
26188
|
imageProvider: openai
|
|
26189
26189
|
---
|
|
26190
26190
|
|
|
26191
|
-
# ${name}
|
|
26191
|
+
# ${name} - Storyboard
|
|
26192
26192
|
|
|
26193
26193
|
Edit these beats before running \`vibe build\`. Each beat starts with
|
|
26194
26194
|
YAML cues that drive narration, backdrop generation, and timing.
|
|
26195
26195
|
Pacing: keep beats 6-15 seconds (split longer ones); a 90s video should
|
|
26196
26196
|
have 6-8 beats, not 3 long ones.
|
|
26197
26197
|
|
|
26198
|
-
## Beat hook
|
|
26198
|
+
## Beat hook - Hook
|
|
26199
26199
|
|
|
26200
26200
|
\`\`\`yaml
|
|
26201
26201
|
narration: "Introduce the promise in one crisp sentence."
|
|
@@ -26206,7 +26206,7 @@ duration: 4
|
|
|
26206
26206
|
Show the core visual identity immediately. Keep copy short enough for one
|
|
26207
26207
|
screen and one spoken breath.
|
|
26208
26208
|
|
|
26209
|
-
## Beat proof
|
|
26209
|
+
## Beat proof - Proof
|
|
26210
26210
|
|
|
26211
26211
|
\`\`\`yaml
|
|
26212
26212
|
narration: "Show the mechanism or proof point that makes the promise believable."
|
|
@@ -26217,7 +26217,7 @@ duration: 4
|
|
|
26217
26217
|
Use this beat for the concrete differentiator: command, workflow, metric, or
|
|
26218
26218
|
before/after.
|
|
26219
26219
|
|
|
26220
|
-
## Beat close
|
|
26220
|
+
## Beat close - Close
|
|
26221
26221
|
|
|
26222
26222
|
\`\`\`yaml
|
|
26223
26223
|
narration: "Close with the action the viewer should remember."
|
|
@@ -26230,7 +26230,7 @@ final beat.
|
|
|
26230
26230
|
`;
|
|
26231
26231
|
}
|
|
26232
26232
|
function buildProjectAgentsMd(name) {
|
|
26233
|
-
return `# ${name}
|
|
26233
|
+
return `# ${name} - Scene Authoring Project
|
|
26234
26234
|
|
|
26235
26235
|
This is the canonical cross-agent guidance file for this scene project.
|
|
26236
26236
|
Claude Code imports it through \`CLAUDE.md\`; Codex, Cursor, Aider,
|
|
@@ -26269,7 +26269,7 @@ contradict DESIGN.md are rejected by the Hyperframes \`hyperframes\`
|
|
|
26269
26269
|
skill.
|
|
26270
26270
|
|
|
26271
26271
|
Single-asset requests (\`vibe generate image|video|speech|...\`) do NOT
|
|
26272
|
-
consult this file
|
|
26272
|
+
consult this file - run the generate command directly.
|
|
26273
26273
|
|
|
26274
26274
|
Browse named styles: \`vibe scene list-styles\`. Re-seed from one with
|
|
26275
26275
|
\`vibe scene init . --visual-style "Swiss Pulse"\` (idempotent).
|
|
@@ -26284,8 +26284,9 @@ after init, those two files are the working source of truth.
|
|
|
26284
26284
|
Use \`media/\` for user-provided source files: product photos, screenshots,
|
|
26285
26285
|
logos, B-roll, recorded narration, or reference clips. Keep those inputs
|
|
26286
26286
|
inside this project so build references stay project-relative. Do not put user
|
|
26287
|
-
media in \`references/\`;
|
|
26288
|
-
rules
|
|
26287
|
+
media in \`references/\`; older VibeFrame versions vendored composition rules
|
|
26288
|
+
there, and current installs keep the rules under \`.agents/skills/hyperframes/\`
|
|
26289
|
+
via \`vibe scene install-skill\`.
|
|
26289
26290
|
|
|
26290
26291
|
When a beat should reuse a local file, reference it from \`STORYBOARD.md\`
|
|
26291
26292
|
with a project-relative path:
|
|
@@ -26341,7 +26342,7 @@ project-level agent loop; it provides \`--json\` commands, dry runs, cost caps,
|
|
|
26341
26342
|
\`requiresConfirmation\`, \`fixOwner\`, deterministic repair, and render
|
|
26342
26343
|
inspection for the host agent to reason over.
|
|
26343
26344
|
|
|
26344
|
-
Copy-paste agent prompts
|
|
26345
|
+
Copy-paste agent prompts - plain prompts, not a built-in command:
|
|
26345
26346
|
|
|
26346
26347
|
\`\`\`text
|
|
26347
26348
|
Build this VibeFrame project into renders/final.mp4. Use --json for every
|
|
@@ -26369,13 +26370,13 @@ target duration/aspect ratio, clean render inspection, any AI review score >= 90
|
|
|
26369
26370
|
no unresolved unacknowledged host-agent issues.
|
|
26370
26371
|
\`\`\`
|
|
26371
26372
|
|
|
26372
|
-
## Skills
|
|
26373
|
+
## Skills - USE THESE FIRST
|
|
26373
26374
|
|
|
26374
|
-
**Load the \`hyperframes\` skill before authoring scenes**
|
|
26375
|
+
**Load the \`hyperframes\` skill before authoring scenes** - it encodes the
|
|
26375
26376
|
composition rules, motion principles, type system, and visual-identity gate.
|
|
26376
26377
|
If your agent has it installed globally it is already available; otherwise run
|
|
26377
|
-
\`vibe scene install-skill
|
|
26378
|
-
|
|
26378
|
+
\`vibe scene install-skill\`, which runs upstream's installer and writes
|
|
26379
|
+
\`.agents/skills/hyperframes/SKILL.md\`. Read that file before authoring.
|
|
26379
26380
|
|
|
26380
26381
|
**Always invoke the relevant skill before authoring scenes.** Skills encode
|
|
26381
26382
|
framework-specific patterns (GSAP timeline registration, data-attribute
|
|
@@ -26383,7 +26384,7 @@ semantics, VibeFrame pipeline conventions) that are NOT in generic web docs.
|
|
|
26383
26384
|
|
|
26384
26385
|
| Skill | Command | When to use |
|
|
26385
26386
|
| ----------------- | ---------------- | ------------------------------------------------------------------------------------- |
|
|
26386
|
-
| **hyperframes** | \`/hyperframes\` | Cinematic-quality composition
|
|
26387
|
+
| **hyperframes** | \`/hyperframes\` | Cinematic-quality composition - DESIGN.md hard-gate, named styles, motion principles |
|
|
26387
26388
|
| **vibe-scene** | \`/vibe-scene\` | VibeFrame's authoring loop, AI assets, lint feedback, pipeline integration |
|
|
26388
26389
|
| **gsap** | \`/gsap\` | GSAP tweens, timelines, easing |
|
|
26389
26390
|
|
|
@@ -26394,22 +26395,22 @@ npx skills add heygen-com/hyperframes
|
|
|
26394
26395
|
\`\`\`
|
|
26395
26396
|
|
|
26396
26397
|
Restart your agent session (or reload the skill list) after installing.
|
|
26397
|
-
If skills aren't available, follow the **Key Rules** below
|
|
26398
|
+
If skills aren't available, follow the **Key Rules** below - they cover
|
|
26398
26399
|
the framework-level minimum, not the cinematic craft layer.
|
|
26399
26400
|
|
|
26400
26401
|
## Project structure
|
|
26401
26402
|
|
|
26402
|
-
- \`DESIGN.md\`
|
|
26403
|
-
- \`STORYBOARD.md\`
|
|
26404
|
-
- \`media/\`
|
|
26405
|
-
- \`index.html\`
|
|
26406
|
-
- \`compositions/scene-*.html\`
|
|
26407
|
-
- \`assets/\`
|
|
26408
|
-
-
|
|
26409
|
-
- \`transcript.json\`
|
|
26410
|
-
- \`hyperframes.json\`
|
|
26411
|
-
- \`vibe.config.json\`
|
|
26412
|
-
- \`renders/\`
|
|
26403
|
+
- \`DESIGN.md\` - visual identity contract (palette, type, motion, transitions)
|
|
26404
|
+
- \`STORYBOARD.md\` - per-beat narration/backdrop/duration cues for \`vibe build\`
|
|
26405
|
+
- \`media/\` - user-provided source files (photos, logos, clips, voice recordings)
|
|
26406
|
+
- \`index.html\` - root composition (timeline)
|
|
26407
|
+
- \`compositions/scene-*.html\` - per-scene HTML authored by you or the agent
|
|
26408
|
+
- \`assets/\` - generated/canonical build media (narration audio, images, video)
|
|
26409
|
+
- \`.agents/skills/hyperframes/\` - upstream composition rules, when installed here rather than globally
|
|
26410
|
+
- \`transcript.json\` - Whisper word-level transcript (if narration exists)
|
|
26411
|
+
- \`hyperframes.json\` - HF registry config (speak to both toolchains)
|
|
26412
|
+
- \`vibe.config.json\` - canonical VibeFrame config (providers, budget)
|
|
26413
|
+
- \`renders/\` - output MP4s
|
|
26413
26414
|
|
|
26414
26415
|
## Commands
|
|
26415
26416
|
|
|
@@ -26419,7 +26420,7 @@ vibe build # STORYBOARD.md \u219
|
|
|
26419
26420
|
vibe scene lint # Validate scenes (in-process HF linter)
|
|
26420
26421
|
vibe render # Render to MP4
|
|
26421
26422
|
|
|
26422
|
-
# Hyperframes CLI (if installed
|
|
26423
|
+
# Hyperframes CLI (if installed - works in this project too)
|
|
26423
26424
|
npx hyperframes preview
|
|
26424
26425
|
npx hyperframes render
|
|
26425
26426
|
\`\`\`
|
|
@@ -26427,7 +26428,7 @@ npx hyperframes render
|
|
|
26427
26428
|
## Key Rules (for hand-authored scene HTML)
|
|
26428
26429
|
|
|
26429
26430
|
1. Every timed element needs \`data-start\`, \`data-duration\`, and \`data-track-index\`.
|
|
26430
|
-
2. Elements with timing **MUST** have \`class="clip"\`
|
|
26431
|
+
2. Elements with timing **MUST** have \`class="clip"\` - the framework uses this for visibility control.
|
|
26431
26432
|
3. Timelines must be paused and registered on \`window.__timelines\`:
|
|
26432
26433
|
\`\`\`js
|
|
26433
26434
|
window.__timelines = window.__timelines || {};
|
|
@@ -26439,12 +26440,12 @@ npx hyperframes render
|
|
|
26439
26440
|
\`filter\` tweens to \`.scene-content\` or any ancestor containing live text.
|
|
26440
26441
|
Animate background/media layers instead; text/cards should enter briefly and
|
|
26441
26442
|
then hold still at their final CSS positions.
|
|
26442
|
-
7. Only deterministic logic
|
|
26443
|
+
7. Only deterministic logic - no \`Date.now()\`, \`Math.random()\`, or network fetches.
|
|
26443
26444
|
|
|
26444
|
-
## Linting
|
|
26445
|
+
## Linting - run after changes
|
|
26445
26446
|
|
|
26446
26447
|
\`\`\`bash
|
|
26447
|
-
vibe scene lint # preferred
|
|
26448
|
+
vibe scene lint # preferred - in-process, no network
|
|
26448
26449
|
vibe scene lint --fix # auto-fix mechanical issues
|
|
26449
26450
|
vibe scene lint --json # structured output for agent loops
|
|
26450
26451
|
\`\`\`
|
|
@@ -26453,7 +26454,7 @@ vibe scene lint --json # structured output for agent loops
|
|
|
26453
26454
|
function buildProjectClaudeMd(name) {
|
|
26454
26455
|
return `@AGENTS.md
|
|
26455
26456
|
|
|
26456
|
-
# ${name}
|
|
26457
|
+
# ${name} - Claude Code Overrides
|
|
26457
26458
|
|
|
26458
26459
|
This file imports \`AGENTS.md\`; keep cross-agent VibeFrame and
|
|
26459
26460
|
Hyperframes instructions there so Codex, Cursor, Aider, Gemini CLI, and
|
|
@@ -26462,15 +26463,16 @@ only when this project needs them.
|
|
|
26462
26463
|
`;
|
|
26463
26464
|
}
|
|
26464
26465
|
function buildSceneGitignore() {
|
|
26465
|
-
return `# VibeFrame
|
|
26466
|
+
return `# VibeFrame - caches, checkpoints, and project-scope config.yaml (may contain API keys)
|
|
26466
26467
|
.vibeframe/
|
|
26467
26468
|
|
|
26468
26469
|
# Render outputs
|
|
26469
26470
|
renders/*.mp4
|
|
26470
26471
|
tmp/
|
|
26471
26472
|
|
|
26472
|
-
#
|
|
26473
|
-
#
|
|
26473
|
+
# Hyperframes skill copies left by older VibeFrame versions. Nothing writes
|
|
26474
|
+
# these now - upstream's installer owns the rules and puts them under
|
|
26475
|
+
# .agents/skills/hyperframes/, which is yours to commit or ignore.
|
|
26474
26476
|
/SKILL.md
|
|
26475
26477
|
/references/
|
|
26476
26478
|
/.claude/skills/hyperframes/
|
|
@@ -26508,12 +26510,7 @@ function describeSceneScaffold(opts) {
|
|
|
26508
26510
|
];
|
|
26509
26511
|
}
|
|
26510
26512
|
if (profile === "agent" || profile === "full") {
|
|
26511
|
-
groups.agent = [
|
|
26512
|
-
resolve8(dir, "AGENTS.md"),
|
|
26513
|
-
resolve8(dir, "SKILL.md"),
|
|
26514
|
-
resolve8(dir, "references"),
|
|
26515
|
-
resolve8(dir, "CLAUDE.md")
|
|
26516
|
-
];
|
|
26513
|
+
groups.agent = [resolve8(dir, "AGENTS.md"), resolve8(dir, "CLAUDE.md")];
|
|
26517
26514
|
}
|
|
26518
26515
|
return groups;
|
|
26519
26516
|
}
|
|
@@ -306834,7 +306831,7 @@ var sceneComposePromptsTool = defineTool({
|
|
|
306834
306831
|
cost: "free",
|
|
306835
306832
|
title: "Get Scene Authoring Prompts",
|
|
306836
306833
|
annotations: { readOnly: true, openWorld: false },
|
|
306837
|
-
description: "Emit the per-beat compose plan for the host agent to author scene HTML itself. Reads STORYBOARD.md + DESIGN.md and returns each beat's outputPath + userPrompt + cues + body, plus
|
|
306834
|
+
description: "Emit the per-beat compose plan for the host agent to author scene HTML itself. Reads STORYBOARD.md + DESIGN.md and returns each beat's outputPath + userPrompt + cues + body, plus the path to the Hyperframes rules (skillReference) and DESIGN.md (visual identity). The host agent writes each compositions/scene-<id>.html file directly \u2014 VibeFrame makes NO LLM call here, and there is no internal-LLM fallback: authoring is always the host agent's job. Hosts that cannot write files (e.g. Claude Desktop) submit each authored beat with scene_submit instead. Pairs with scene_install_skill, which fetches the rules from upstream when the agent does not already have them.",
|
|
306838
306835
|
schema: sceneComposePromptsSchema,
|
|
306839
306836
|
async execute(args, ctx) {
|
|
306840
306837
|
const projectDir = resolve40(ctx.workingDirectory, args.projectDir);
|
|
@@ -314673,13 +314670,15 @@ import { z as z17 } from "zod";
|
|
|
314673
314670
|
var SCENE_WALKTHROUGH = `# Scene authoring with vibe
|
|
314674
314671
|
|
|
314675
314672
|
A scene project is a directory that is **bilingual**: it works with both
|
|
314676
|
-
\`vibe\` and \`npx hyperframes\`.
|
|
314677
|
-
|
|
314673
|
+
\`vibe\` and \`npx hyperframes\`. Scene composition is Hyperframes' job:
|
|
314674
|
+
each scene is one HTML file with scoped CSS and a paused GSAP timeline,
|
|
314675
|
+
authored to upstream's composition rules (install them with
|
|
314676
|
+
\`vibe scene install-skill\`). Cheap to edit, cheap to lint, expensive only
|
|
314678
314677
|
at render.
|
|
314679
314678
|
|
|
314680
|
-
\`vibe build\`
|
|
314681
|
-
|
|
314682
|
-
|
|
314679
|
+
\`vibe build\` is the supported one-shot driver from a written storyboard
|
|
314680
|
+
to an MP4. The host agent authors the per-beat HTML - the CLI makes no
|
|
314681
|
+
internal LLM call.
|
|
314683
314682
|
|
|
314684
314683
|
## Three authoring paths
|
|
314685
314684
|
|
|
@@ -314694,20 +314693,20 @@ narration / backdrop intent.
|
|
|
314694
314693
|
|
|
314695
314694
|
## High-craft path
|
|
314696
314695
|
|
|
314697
|
-
1. \`vibe init my-promo --visual-style "Swiss Pulse"\`
|
|
314696
|
+
1. \`vibe init my-promo --visual-style "Swiss Pulse"\` - seeds
|
|
314698
314697
|
\`DESIGN.md\` (palette, typography, motion, transitions) plus the
|
|
314699
314698
|
\`vibe.config.json\` / \`hyperframes.json\` / \`index.html\` scaffold.
|
|
314700
|
-
|
|
314701
|
-
|
|
314702
|
-
|
|
314703
|
-
|
|
314704
|
-
2. Read
|
|
314699
|
+
It does **not** install the composition rules; if your agent does not
|
|
314700
|
+
already have the \`hyperframes\` skill, run
|
|
314701
|
+
\`vibe scene install-skill\` to fetch them from upstream into
|
|
314702
|
+
\`.agents/skills/hyperframes/\`.
|
|
314703
|
+
2. Read \`.agents/skills/hyperframes/SKILL.md\` (or your global copy) -
|
|
314705
314704
|
framework rules, motion principles, type system, transition recipes.
|
|
314706
|
-
3. Read \`DESIGN.md\`
|
|
314705
|
+
3. Read \`DESIGN.md\` - project-specific palette / typography / motion
|
|
314707
314706
|
signature (visual identity hard-gate).
|
|
314708
314707
|
4. Author each scene HTML directly under \`compositions/scene-<id>.html\`
|
|
314709
314708
|
using the rules from steps 2 and 3. The skill enforces the visual
|
|
314710
|
-
identity contract
|
|
314709
|
+
identity contract - scenes that contradict DESIGN.md fail lint.
|
|
314711
314710
|
5. \`vibe scene lint --fix\` for mechanical issues, \`vibe render my-promo\`
|
|
314712
314711
|
to MP4.
|
|
314713
314712
|
|
|
@@ -314721,16 +314720,16 @@ vibe scene lint
|
|
|
314721
314720
|
vibe render my-promo
|
|
314722
314721
|
\`\`\`
|
|
314723
314722
|
|
|
314724
|
-
\`vibe init\` is **idempotent**
|
|
314723
|
+
\`vibe init\` is **idempotent** - running it on an existing Hyperframes
|
|
314725
314724
|
directory merges \`hyperframes.json\` instead of clobbering it. Safe to
|
|
314726
314725
|
invoke on user-provided projects.
|
|
314727
314726
|
|
|
314728
314727
|
## Subcommands
|
|
314729
314728
|
|
|
314730
314729
|
\`\`\`bash
|
|
314731
|
-
# Project flow (top-level
|
|
314730
|
+
# Project flow (top-level - preferred entry points)
|
|
314732
314731
|
vibe init <dir> [-r 16:9|9:16|1:1|4:5] [-d <sec>] [--visual-style "<name>"]
|
|
314733
|
-
vibe build [<dir>] [--
|
|
314732
|
+
vibe build [<dir>] [--composer template] # agent authors scenes by default
|
|
314734
314733
|
vibe render [<dir>] [--fps 30] [--quality standard] [--format mp4]
|
|
314735
314734
|
|
|
314736
314735
|
# Lower-level scene authoring
|
|
@@ -314743,11 +314742,11 @@ vibe scene lint [<root>] [--json] [--fix]
|
|
|
314743
314742
|
|
|
314744
314743
|
## Style presets (for \`vibe scene add --style\`)
|
|
314745
314744
|
|
|
314746
|
-
- **simple**
|
|
314747
|
-
- **announcement**
|
|
314748
|
-
- **explainer**
|
|
314749
|
-
- **kinetic-type**
|
|
314750
|
-
- **product-shot**
|
|
314745
|
+
- **simple** - backdrop + bottom caption (default)
|
|
314746
|
+
- **announcement** - single huge headline, gradient text
|
|
314747
|
+
- **explainer** - kicker + title + subtitle stack
|
|
314748
|
+
- **kinetic-type** - words animate in word-by-word
|
|
314749
|
+
- **product-shot** - corner label + bottom headline + slow zoom
|
|
314751
314750
|
|
|
314752
314751
|
All presets accept \`--narration <text|file>\`, \`--visuals <prompt>\`,
|
|
314753
314752
|
\`--headline\`, \`--kicker\`. With \`--narration\`, scene duration auto-derives
|
|
@@ -314757,21 +314756,19 @@ from the generated TTS audio.
|
|
|
314757
314756
|
|
|
314758
314757
|
\`\`\`bash
|
|
314759
314758
|
vibe init my-promo --visual-style "Swiss Pulse" -d 12
|
|
314760
|
-
# (edit STORYBOARD.md with per-beat YAML cues
|
|
314759
|
+
# (edit STORYBOARD.md with per-beat YAML cues - narration, backdrop, duration)
|
|
314761
314760
|
vibe build my-promo
|
|
314762
314761
|
\`\`\`
|
|
314763
314762
|
|
|
314764
314763
|
\`vibe build\` reads the STORYBOARD frontmatter + per-beat cues,
|
|
314765
314764
|
dispatches TTS + image-gen per beat, then either:
|
|
314766
314765
|
|
|
314767
|
-
-
|
|
314768
|
-
\`
|
|
314769
|
-
|
|
314770
|
-
|
|
314771
|
-
- **\`--
|
|
314772
|
-
|
|
314773
|
-
|
|
314774
|
-
\`VIBE_BUILD_MODE\` env var overrides the auto-resolve.
|
|
314766
|
+
- **Agent authoring** (default) - emits a \`needs-author\` plan via
|
|
314767
|
+
\`vibe scene compose-prompts\`. The host agent authors each
|
|
314768
|
+
\`compositions/scene-<id>.html\` itself, then re-invoking \`vibe build\`
|
|
314769
|
+
proceeds to lint + render. The CLI makes no internal LLM call.
|
|
314770
|
+
- **\`--composer template\`** - the deterministic no-model composer
|
|
314771
|
+
(concat background + lower-thirds), for when no agent is available.
|
|
314775
314772
|
|
|
314776
314773
|
## Lint feedback loop
|
|
314777
314774
|
|
|
@@ -314781,7 +314778,7 @@ vibe scene lint --json --fix
|
|
|
314781
314778
|
|
|
314782
314779
|
Returns structured findings. The recommended loop: 1) run lint with
|
|
314783
314780
|
\`--fix\` (mechanical fixes applied), 2) if \`errorCount > 0\`, edit the
|
|
314784
|
-
scene HTML, 3) re-lint. Cap retries at 3
|
|
314781
|
+
scene HTML, 3) re-lint. Cap retries at 3 - if errors persist, fall back
|
|
314785
314782
|
to a template preset (\`vibe scene add <id> --style simple --force\`)
|
|
314786
314783
|
and surface the error to the user.
|
|
314787
314784
|
|
|
@@ -314857,9 +314854,9 @@ The full set lives in \`packages/cli/src/pipeline/executor.ts\`.
|
|
|
314857
314854
|
|
|
314858
314855
|
## Variable references
|
|
314859
314856
|
|
|
314860
|
-
- \`$<step-id>.output\`
|
|
314861
|
-
- \`$<step-id>.result.<field>\`
|
|
314862
|
-
- \`\${ENV_VAR}\`
|
|
314857
|
+
- \`$<step-id>.output\` - previous step's output path
|
|
314858
|
+
- \`$<step-id>.result.<field>\` - structured field from JSON result
|
|
314859
|
+
- \`\${ENV_VAR}\` - environment variable
|
|
314863
314860
|
- Values can be templated: \`"\${SCRIPT_TITLE} - Episode \${EPISODE}"\`
|
|
314864
314861
|
|
|
314865
314862
|
## Running
|
|
@@ -314876,12 +314873,12 @@ Checkpoints land next to the YAML: \`pipeline.yaml.checkpoint.json\`.
|
|
|
314876
314873
|
|
|
314877
314874
|
## Authoring tips
|
|
314878
314875
|
|
|
314879
|
-
1. **Start from a tiny YAML**
|
|
314876
|
+
1. **Start from a tiny YAML** - keep it in your project directory and run
|
|
314880
314877
|
\`vibe run pipeline.yaml --dry-run\` before spending provider budget.
|
|
314881
|
-
2. **Dry-run first**
|
|
314878
|
+
2. **Dry-run first** - you see estimated cost and resolved variable
|
|
314882
314879
|
graph before spending API credits.
|
|
314883
314880
|
3. **Keep step ids short and descriptive** (\`intro\`, \`scene1\`, \`voice\`,
|
|
314884
|
-
\`bgm\`)
|
|
314881
|
+
\`bgm\`) - they appear in logs and variable refs.
|
|
314885
314882
|
4. **Name outputs** with extensions matching the action (\`.mp4\`, \`.mp3\`,
|
|
314886
314883
|
\`.png\`, \`.json\`).
|
|
314887
314884
|
5. **Declare \`budget:\`** on expensive pipelines:
|
|
@@ -314905,9 +314902,9 @@ When the user has a working shell sequence, extract steps:
|
|
|
314905
314902
|
- Wrap the entire chain in a \`name:\` + \`steps:\` skeleton
|
|
314906
314903
|
|
|
314907
314904
|
The \`compose\` action is the catch-all assembly step (audio mux, video
|
|
314908
|
-
overlay, etc.)
|
|
314905
|
+
overlay, etc.) - useful at the tail of a pipeline.
|
|
314909
314906
|
`;
|
|
314910
|
-
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run
|
|
314907
|
+
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run - when to pick which
|
|
314911
314908
|
|
|
314912
314909
|
The CLI has three orchestrating commands that coordinate other primitives:
|
|
314913
314910
|
\`vibe agent\`, \`vibe build\`, \`vibe run\`. New users routinely ask which one
|
|
@@ -314936,14 +314933,14 @@ built-in fallback when you do not already have an agent host.
|
|
|
314936
314933
|
- "I have a finished script + visual identity" \u2192 \`vibe build\`
|
|
314937
314934
|
- "I want this to run again next month" \u2192 \`vibe run\`
|
|
314938
314935
|
|
|
314939
|
-
If two seem to fit, pick the rightmost one
|
|
314936
|
+
If two seem to fit, pick the rightmost one - more reproducible, less surprise.
|
|
314940
314937
|
|
|
314941
314938
|
## Cost-tier awareness (v0.83+)
|
|
314942
314939
|
|
|
314943
314940
|
Every primitive subcommand carries a cost tier (\`free\` / \`low\` / \`high\` /
|
|
314944
314941
|
\`very-high\`). \`vibe schema --list\` exposes the tier as JSON, and each
|
|
314945
314942
|
\`vibe <group> <sub> --help\` page shows it as a colored footer. Use
|
|
314946
|
-
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator
|
|
314943
|
+
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator -
|
|
314947
314944
|
a single bad key wastes time and money.
|
|
314948
314945
|
|
|
314949
314946
|
## Cross-command primitives
|
|
@@ -315031,9 +315028,10 @@ var META = {
|
|
|
315031
315028
|
title: "Scene authoring with vibe",
|
|
315032
315029
|
summary: "Author per-scene HTML compositions and render to MP4 (BUILD flow)",
|
|
315033
315030
|
steps: [
|
|
315034
|
-
'Run `vibe init <dir> --visual-style "<style name>"` to scaffold the project
|
|
315031
|
+
'Run `vibe init <dir> --visual-style "<style name>"` to scaffold the project.',
|
|
315032
|
+
"Run `vibe scene install-skill` unless your agent already has the `hyperframes` skill; `vibe doctor` tells you which.",
|
|
315035
315033
|
"Edit `STORYBOARD.md` with per-beat YAML cues (narration / backdrop / duration).",
|
|
315036
|
-
"Read
|
|
315034
|
+
"Read `.agents/skills/hyperframes/SKILL.md` for the framework rules and `DESIGN.md` for the visual-identity hard-gate.",
|
|
315037
315035
|
"Run `vibe build <dir>`. With an agent host detected, the CLI emits a `needs-author` plan; the host agent authors each `compositions/scene-<id>.html` and re-invokes to render.",
|
|
315038
315036
|
"Run `vibe build <dir> --stage sync` to assemble index.html, `vibe scene lint <dir> --fix` to validate, then `vibe render <dir>` to produce the MP4."
|
|
315039
315037
|
],
|
|
@@ -315052,7 +315050,7 @@ var META = {
|
|
|
315052
315050
|
title: "YAML pipelines (Video as Code)",
|
|
315053
315051
|
summary: "Author and run reproducible multi-step video workflows",
|
|
315054
315052
|
steps: [
|
|
315055
|
-
"Sketch the workflow as YAML
|
|
315053
|
+
"Sketch the workflow as YAML - `name`, `description`, then `steps:` with `id` + `action` + inputs/outputs.",
|
|
315056
315054
|
"Reference previous step outputs via `$<step-id>.output` (or `$<step-id>.result.<field>` for structured returns).",
|
|
315057
315055
|
"Run `vibe run pipeline.yaml --dry-run` to see the resolved graph + cost estimate before spending API budget.",
|
|
315058
315056
|
"Add a `budget:` block (tokens / cost_usd / max_tool_errors) to cap expensive runs.",
|
|
@@ -316036,9 +316034,10 @@ function usage3(version2) {
|
|
|
316036
316034
|
return [
|
|
316037
316035
|
`VibeFrame MCP Server v${version2}`,
|
|
316038
316036
|
"",
|
|
316039
|
-
"AI
|
|
316037
|
+
"AI video generation and editing exposed over the Model Context Protocol",
|
|
316038
|
+
"(stdio), on your own provider keys and behind dry runs and cost caps.",
|
|
316040
316039
|
"It is launched by an MCP client (Claude Desktop, Cursor, Claude Code), not",
|
|
316041
|
-
"run directly
|
|
316040
|
+
"run directly - there is normally nothing to interact with on the terminal.",
|
|
316042
316041
|
"",
|
|
316043
316042
|
"Add it to your client config:",
|
|
316044
316043
|
"",
|
|
@@ -316071,7 +316070,7 @@ function handleCliFlags(argv, version2) {
|
|
|
316071
316070
|
}
|
|
316072
316071
|
|
|
316073
316072
|
// src/index.ts
|
|
316074
|
-
if (handleCliFlags(process.argv.slice(2), "0.113.
|
|
316073
|
+
if (handleCliFlags(process.argv.slice(2), "0.113.29")) {
|
|
316075
316074
|
process.exit(0);
|
|
316076
316075
|
}
|
|
316077
316076
|
console.log = (...args) => console.error(...args);
|
|
@@ -316084,7 +316083,7 @@ var server = new Server(
|
|
|
316084
316083
|
{
|
|
316085
316084
|
name: "vibeframe",
|
|
316086
316085
|
// Stamped with the package version by build.js at bundle time.
|
|
316087
|
-
version: "0.113.
|
|
316086
|
+
version: "0.113.29"
|
|
316088
316087
|
},
|
|
316089
316088
|
{
|
|
316090
316089
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.113.
|
|
4
|
-
"description": "VibeFrame MCP Server - AI
|
|
3
|
+
"version": "0.113.29",
|
|
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": {
|
|
7
7
|
"vibeframe-mcp": "./dist/index.js"
|
|
@@ -15,8 +15,14 @@
|
|
|
15
15
|
"mcp",
|
|
16
16
|
"model-context-protocol",
|
|
17
17
|
"vibeframe",
|
|
18
|
-
"video
|
|
19
|
-
"
|
|
18
|
+
"ai-video",
|
|
19
|
+
"video-generation",
|
|
20
|
+
"text-to-video",
|
|
21
|
+
"image-to-video",
|
|
22
|
+
"seedance",
|
|
23
|
+
"runway",
|
|
24
|
+
"veo",
|
|
25
|
+
"kling",
|
|
20
26
|
"claude-desktop",
|
|
21
27
|
"cursor"
|
|
22
28
|
],
|
|
@@ -30,7 +36,7 @@
|
|
|
30
36
|
"bugs": {
|
|
31
37
|
"url": "https://github.com/vericontext/vibeframe/issues"
|
|
32
38
|
},
|
|
33
|
-
"homepage": "https://
|
|
39
|
+
"homepage": "https://vibeframe.ai",
|
|
34
40
|
"dependencies": {
|
|
35
41
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
36
42
|
"zod": "^3.22.4"
|
|
@@ -60,8 +66,8 @@
|
|
|
60
66
|
"tsx": "^4.21.0",
|
|
61
67
|
"typescript": "^5.3.3",
|
|
62
68
|
"vitest": "^1.2.2",
|
|
63
|
-
"@vibeframe/cli": "0.113.
|
|
64
|
-
"@vibeframe/core": "0.113.
|
|
69
|
+
"@vibeframe/cli": "0.113.29",
|
|
70
|
+
"@vibeframe/core": "0.113.29"
|
|
65
71
|
},
|
|
66
72
|
"engines": {
|
|
67
73
|
"node": ">=20"
|