@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.
Files changed (3) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +99 -100
  3. 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 — it exposes VibeFrame's operations as typed MCP tools so an MCP-capable host can call them by natural language.
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 \u2014 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 \u2014 what should the viewer FEEL?)_`;
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_ \u2014 primary
26072
- - _hex_ \u2014 accent
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} \u2014 Design
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 \u2014 what each section demonstrates, in order." : kind3 === "motion" ? "Motion piece \u2014 the message and the beats of on-screen text/graphics." : kind3 === "aivideo" ? "AI-video script \u2014 the spoken/voiced narrative the generated shots illustrate." : "Narrative script \u2014 scene-by-scene story, dialogue, and voiceover.";
26135
- return `# ${name} \u2014 Script
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} \u2014 Characters
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 \u2014 the identity anchor for keyframe edits).
26173
- - **Identity:** one paragraph of fixed, on-model traits \u2014 age, build, hair,
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} \u2014 Storyboard
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 \u2014 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 \u2014 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 \u2014 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} \u2014 Scene Authoring Project
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 \u2014 run the generate command directly.
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/\`; that directory is reserved for local composition
26288
- rules installed by VibeFrame.
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 \u2014 plain prompts, not a built-in command:
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 \u2014 USE THESE FIRST
26373
+ ## Skills - USE THESE FIRST
26373
26374
 
26374
- **Load the \`hyperframes\` skill before authoring scenes** \u2014 it encodes the
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\` to eject a local, editable copy (\`SKILL.md\` +
26378
- \`references/\`, gitignored by default) and read \`SKILL.md\`.
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 \u2014 DESIGN.md hard-gate, named styles, motion principles |
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 \u2014 they cover
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\` \u2014 visual identity contract (palette, type, motion, transitions)
26403
- - \`STORYBOARD.md\` \u2014 per-beat narration/backdrop/duration cues for \`vibe build\`
26404
- - \`media/\` \u2014 user-provided source files (photos, logos, clips, voice recordings)
26405
- - \`index.html\` \u2014 root composition (timeline)
26406
- - \`compositions/scene-*.html\` \u2014 per-scene HTML authored by you or the agent
26407
- - \`assets/\` \u2014 generated/canonical build media (narration audio, images, video)
26408
- - \`references/\` \u2014 composition rule docs, only when ejected via \`vibe scene install-skill\` (not user media)
26409
- - \`transcript.json\` \u2014 Whisper word-level transcript (if narration exists)
26410
- - \`hyperframes.json\` \u2014 HF registry config (speak to both toolchains)
26411
- - \`vibe.config.json\` \u2014 canonical VibeFrame config (providers, budget)
26412
- - \`renders/\` \u2014 output MP4s
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 \u2014 works in this project too)
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"\` \u2014 the framework uses this for visibility control.
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 \u2014 no \`Date.now()\`, \`Math.random()\`, or network fetches.
26443
+ 7. Only deterministic logic - no \`Date.now()\`, \`Math.random()\`, or network fetches.
26443
26444
 
26444
- ## Linting \u2014 run after changes
26445
+ ## Linting - run after changes
26445
26446
 
26446
26447
  \`\`\`bash
26447
- vibe scene lint # preferred \u2014 in-process, no network
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} \u2014 Claude Code Overrides
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 \u2014 caches, checkpoints, and project-scope config.yaml (may contain API keys)
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
- # Vendored Hyperframes skill copies \u2014 regenerable via 'vibe scene install-skill'.
26473
- # Delete these lines if you eject and want to commit per-project customizations.
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 references to the project's SKILL.md (Hyperframes rules) and DESIGN.md (visual identity). The host agent writes each compositions/scene-<id>.html file directly \u2014 VibeFrame makes NO LLM call here. Hosts that cannot write files (e.g. Claude Desktop) submit each authored beat with scene_submit instead. Pairs with scene_install_skill (Phase H1). Phase H2 of the agentic-native composer plan; the internal-LLM batch path (build) remains as a fallback for non-agent contexts.",
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\`. Each scene is one HTML file with scoped CSS
314677
- and a paused GSAP timeline. Cheap to edit, cheap to lint, expensive only
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\` (v0.60+) is the supported one-shot driver from a
314681
- written storyboard to an MP4. Plan H (v0.70) added \`--mode agent\` so the
314682
- host agent itself authors the per-beat HTML \u2014 no internal LLM call.
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"\` \u2014 seeds
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
- In Plan H this **also installs local composition rules** at the
314701
- right place for your host (\`.claude/skills/hyperframes/\` for Claude
314702
- Code, \`.cursor/rules/hyperframes.mdc\` for Cursor, universal
314703
- \`SKILL.md\` for everyone else).
314704
- 2. Read \`SKILL.md\` (or the host-specific copy) \u2014 Hyperframes
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\` \u2014 project-specific palette / typography / motion
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 \u2014 scenes that contradict DESIGN.md fail lint.
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** \u2014 running it on an existing Hyperframes
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 \u2014 preferred entry points)
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>] [--mode agent|batch|auto] # H3 dispatch
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** \u2014 backdrop + bottom caption (default)
314747
- - **announcement** \u2014 single huge headline, gradient text
314748
- - **explainer** \u2014 kicker + title + subtitle stack
314749
- - **kinetic-type** \u2014 words animate in word-by-word
314750
- - **product-shot** \u2014 corner label + bottom headline + slow zoom
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 \u2014 narration, backdrop, duration)
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
- - **\`--mode agent\`** (default when an agent host is detected) \u2014 emits a
314768
- \`needs-author\` plan via \`vibe scene compose-prompts\`. The host agent
314769
- authors each \`compositions/scene-<id>.html\` itself, then re-invoking
314770
- \`vibe build\` proceeds to lint + render.
314771
- - **\`--mode batch\`** \u2014 VibeFrame runs an internal LLM (Claude / OpenAI /
314772
- Gemini) to compose the HTML, then renders.
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 \u2014 if errors persist, fall back
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\` \u2014 previous step's output path
314861
- - \`$<step-id>.result.<field>\` \u2014 structured field from JSON result
314862
- - \`\${ENV_VAR}\` \u2014 environment variable
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** \u2014 keep it in your project directory and run
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** \u2014 you see estimated cost and resolved variable
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\`) \u2014 they appear in logs and variable refs.
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.) \u2014 useful at the tail of a pipeline.
314905
+ overlay, etc.) - useful at the tail of a pipeline.
314909
314906
  `;
314910
- var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run \u2014 when to pick which
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 \u2014 more reproducible, less surprise.
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 \u2014
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 + install local composition rules.',
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 `SKILL.md` for the framework rules and `DESIGN.md` for the visual-identity hard-gate.",
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 \u2014 `name`, `description`, then `steps:` with `id` + `action` + inputs/outputs.",
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-native video editing exposed over the Model Context Protocol (stdio).",
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 \u2014 there is normally nothing to interact with on the terminal.",
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.27")) {
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.27"
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.27",
4
- "description": "VibeFrame MCP Server - AI-native video editing via Model Context Protocol",
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-editing",
19
- "ai",
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://github.com/vericontext/vibeframe#mcp-integration",
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.27",
64
- "@vibeframe/core": "0.113.27"
69
+ "@vibeframe/cli": "0.113.29",
70
+ "@vibeframe/core": "0.113.29"
65
71
  },
66
72
  "engines": {
67
73
  "node": ">=20"