@vibeframe/cli 0.113.28 → 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/CONTEXT.md +11 -9
- package/dist/commands/_shared/init-templates.d.ts +5 -5
- package/dist/commands/_shared/scene-project.d.ts +10 -10
- package/dist/commands/_shared/walkthroughs/walkthroughs.d.ts +3 -3
- package/dist/index.js +171 -167
- package/dist/tools/manifest/index.js +80 -79
- package/package.json +16 -8
|
@@ -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((c) => `- \`${c}\``).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((a) => `- ${a}`).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, kind = DEFAULT_SCENE_KIND) {
|
|
26134
|
-
const intent = kind === "product" ? "Product walkthrough
|
|
26135
|
-
return `# ${name}
|
|
26134
|
+
const intent = kind === "product" ? "Product walkthrough - what each section demonstrates, in order." : kind === "motion" ? "Motion piece - the message and the beats of on-screen text/graphics." : kind === "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(kind) ? " \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,9 +26370,9 @@ 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
26378
|
\`vibe scene install-skill\`, which runs upstream's installer and writes
|
|
@@ -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
|
-
- \`.agents/skills/hyperframes/\`
|
|
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,7 +26463,7 @@ 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
|
|
@@ -62544,13 +62545,15 @@ var agentOnlyTools = [
|
|
|
62544
62545
|
var SCENE_WALKTHROUGH = `# Scene authoring with vibe
|
|
62545
62546
|
|
|
62546
62547
|
A scene project is a directory that is **bilingual**: it works with both
|
|
62547
|
-
\`vibe\` and \`npx hyperframes\`.
|
|
62548
|
-
|
|
62548
|
+
\`vibe\` and \`npx hyperframes\`. Scene composition is Hyperframes' job:
|
|
62549
|
+
each scene is one HTML file with scoped CSS and a paused GSAP timeline,
|
|
62550
|
+
authored to upstream's composition rules (install them with
|
|
62551
|
+
\`vibe scene install-skill\`). Cheap to edit, cheap to lint, expensive only
|
|
62549
62552
|
at render.
|
|
62550
62553
|
|
|
62551
|
-
\`vibe build\`
|
|
62552
|
-
|
|
62553
|
-
|
|
62554
|
+
\`vibe build\` is the supported one-shot driver from a written storyboard
|
|
62555
|
+
to an MP4. The host agent authors the per-beat HTML - the CLI makes no
|
|
62556
|
+
internal LLM call.
|
|
62554
62557
|
|
|
62555
62558
|
## Three authoring paths
|
|
62556
62559
|
|
|
@@ -62565,20 +62568,20 @@ narration / backdrop intent.
|
|
|
62565
62568
|
|
|
62566
62569
|
## High-craft path
|
|
62567
62570
|
|
|
62568
|
-
1. \`vibe init my-promo --visual-style "Swiss Pulse"\`
|
|
62571
|
+
1. \`vibe init my-promo --visual-style "Swiss Pulse"\` - seeds
|
|
62569
62572
|
\`DESIGN.md\` (palette, typography, motion, transitions) plus the
|
|
62570
62573
|
\`vibe.config.json\` / \`hyperframes.json\` / \`index.html\` scaffold.
|
|
62571
62574
|
It does **not** install the composition rules; if your agent does not
|
|
62572
62575
|
already have the \`hyperframes\` skill, run
|
|
62573
62576
|
\`vibe scene install-skill\` to fetch them from upstream into
|
|
62574
62577
|
\`.agents/skills/hyperframes/\`.
|
|
62575
|
-
2. Read \`.agents/skills/hyperframes/SKILL.md\` (or your global copy)
|
|
62578
|
+
2. Read \`.agents/skills/hyperframes/SKILL.md\` (or your global copy) -
|
|
62576
62579
|
framework rules, motion principles, type system, transition recipes.
|
|
62577
|
-
3. Read \`DESIGN.md\`
|
|
62580
|
+
3. Read \`DESIGN.md\` - project-specific palette / typography / motion
|
|
62578
62581
|
signature (visual identity hard-gate).
|
|
62579
62582
|
4. Author each scene HTML directly under \`compositions/scene-<id>.html\`
|
|
62580
62583
|
using the rules from steps 2 and 3. The skill enforces the visual
|
|
62581
|
-
identity contract
|
|
62584
|
+
identity contract - scenes that contradict DESIGN.md fail lint.
|
|
62582
62585
|
5. \`vibe scene lint --fix\` for mechanical issues, \`vibe render my-promo\`
|
|
62583
62586
|
to MP4.
|
|
62584
62587
|
|
|
@@ -62592,16 +62595,16 @@ vibe scene lint
|
|
|
62592
62595
|
vibe render my-promo
|
|
62593
62596
|
\`\`\`
|
|
62594
62597
|
|
|
62595
|
-
\`vibe init\` is **idempotent**
|
|
62598
|
+
\`vibe init\` is **idempotent** - running it on an existing Hyperframes
|
|
62596
62599
|
directory merges \`hyperframes.json\` instead of clobbering it. Safe to
|
|
62597
62600
|
invoke on user-provided projects.
|
|
62598
62601
|
|
|
62599
62602
|
## Subcommands
|
|
62600
62603
|
|
|
62601
62604
|
\`\`\`bash
|
|
62602
|
-
# Project flow (top-level
|
|
62605
|
+
# Project flow (top-level - preferred entry points)
|
|
62603
62606
|
vibe init <dir> [-r 16:9|9:16|1:1|4:5] [-d <sec>] [--visual-style "<name>"]
|
|
62604
|
-
vibe build [<dir>] [--
|
|
62607
|
+
vibe build [<dir>] [--composer template] # agent authors scenes by default
|
|
62605
62608
|
vibe render [<dir>] [--fps 30] [--quality standard] [--format mp4]
|
|
62606
62609
|
|
|
62607
62610
|
# Lower-level scene authoring
|
|
@@ -62614,11 +62617,11 @@ vibe scene lint [<root>] [--json] [--fix]
|
|
|
62614
62617
|
|
|
62615
62618
|
## Style presets (for \`vibe scene add --style\`)
|
|
62616
62619
|
|
|
62617
|
-
- **simple**
|
|
62618
|
-
- **announcement**
|
|
62619
|
-
- **explainer**
|
|
62620
|
-
- **kinetic-type**
|
|
62621
|
-
- **product-shot**
|
|
62620
|
+
- **simple** - backdrop + bottom caption (default)
|
|
62621
|
+
- **announcement** - single huge headline, gradient text
|
|
62622
|
+
- **explainer** - kicker + title + subtitle stack
|
|
62623
|
+
- **kinetic-type** - words animate in word-by-word
|
|
62624
|
+
- **product-shot** - corner label + bottom headline + slow zoom
|
|
62622
62625
|
|
|
62623
62626
|
All presets accept \`--narration <text|file>\`, \`--visuals <prompt>\`,
|
|
62624
62627
|
\`--headline\`, \`--kicker\`. With \`--narration\`, scene duration auto-derives
|
|
@@ -62628,21 +62631,19 @@ from the generated TTS audio.
|
|
|
62628
62631
|
|
|
62629
62632
|
\`\`\`bash
|
|
62630
62633
|
vibe init my-promo --visual-style "Swiss Pulse" -d 12
|
|
62631
|
-
# (edit STORYBOARD.md with per-beat YAML cues
|
|
62634
|
+
# (edit STORYBOARD.md with per-beat YAML cues - narration, backdrop, duration)
|
|
62632
62635
|
vibe build my-promo
|
|
62633
62636
|
\`\`\`
|
|
62634
62637
|
|
|
62635
62638
|
\`vibe build\` reads the STORYBOARD frontmatter + per-beat cues,
|
|
62636
62639
|
dispatches TTS + image-gen per beat, then either:
|
|
62637
62640
|
|
|
62638
|
-
-
|
|
62639
|
-
\`
|
|
62640
|
-
|
|
62641
|
-
|
|
62642
|
-
- **\`--
|
|
62643
|
-
|
|
62644
|
-
|
|
62645
|
-
\`VIBE_BUILD_MODE\` env var overrides the auto-resolve.
|
|
62641
|
+
- **Agent authoring** (default) - emits a \`needs-author\` plan via
|
|
62642
|
+
\`vibe scene compose-prompts\`. The host agent authors each
|
|
62643
|
+
\`compositions/scene-<id>.html\` itself, then re-invoking \`vibe build\`
|
|
62644
|
+
proceeds to lint + render. The CLI makes no internal LLM call.
|
|
62645
|
+
- **\`--composer template\`** - the deterministic no-model composer
|
|
62646
|
+
(concat background + lower-thirds), for when no agent is available.
|
|
62646
62647
|
|
|
62647
62648
|
## Lint feedback loop
|
|
62648
62649
|
|
|
@@ -62652,7 +62653,7 @@ vibe scene lint --json --fix
|
|
|
62652
62653
|
|
|
62653
62654
|
Returns structured findings. The recommended loop: 1) run lint with
|
|
62654
62655
|
\`--fix\` (mechanical fixes applied), 2) if \`errorCount > 0\`, edit the
|
|
62655
|
-
scene HTML, 3) re-lint. Cap retries at 3
|
|
62656
|
+
scene HTML, 3) re-lint. Cap retries at 3 - if errors persist, fall back
|
|
62656
62657
|
to a template preset (\`vibe scene add <id> --style simple --force\`)
|
|
62657
62658
|
and surface the error to the user.
|
|
62658
62659
|
|
|
@@ -62728,9 +62729,9 @@ The full set lives in \`packages/cli/src/pipeline/executor.ts\`.
|
|
|
62728
62729
|
|
|
62729
62730
|
## Variable references
|
|
62730
62731
|
|
|
62731
|
-
- \`$<step-id>.output\`
|
|
62732
|
-
- \`$<step-id>.result.<field>\`
|
|
62733
|
-
- \`\${ENV_VAR}\`
|
|
62732
|
+
- \`$<step-id>.output\` - previous step's output path
|
|
62733
|
+
- \`$<step-id>.result.<field>\` - structured field from JSON result
|
|
62734
|
+
- \`\${ENV_VAR}\` - environment variable
|
|
62734
62735
|
- Values can be templated: \`"\${SCRIPT_TITLE} - Episode \${EPISODE}"\`
|
|
62735
62736
|
|
|
62736
62737
|
## Running
|
|
@@ -62747,12 +62748,12 @@ Checkpoints land next to the YAML: \`pipeline.yaml.checkpoint.json\`.
|
|
|
62747
62748
|
|
|
62748
62749
|
## Authoring tips
|
|
62749
62750
|
|
|
62750
|
-
1. **Start from a tiny YAML**
|
|
62751
|
+
1. **Start from a tiny YAML** - keep it in your project directory and run
|
|
62751
62752
|
\`vibe run pipeline.yaml --dry-run\` before spending provider budget.
|
|
62752
|
-
2. **Dry-run first**
|
|
62753
|
+
2. **Dry-run first** - you see estimated cost and resolved variable
|
|
62753
62754
|
graph before spending API credits.
|
|
62754
62755
|
3. **Keep step ids short and descriptive** (\`intro\`, \`scene1\`, \`voice\`,
|
|
62755
|
-
\`bgm\`)
|
|
62756
|
+
\`bgm\`) - they appear in logs and variable refs.
|
|
62756
62757
|
4. **Name outputs** with extensions matching the action (\`.mp4\`, \`.mp3\`,
|
|
62757
62758
|
\`.png\`, \`.json\`).
|
|
62758
62759
|
5. **Declare \`budget:\`** on expensive pipelines:
|
|
@@ -62776,9 +62777,9 @@ When the user has a working shell sequence, extract steps:
|
|
|
62776
62777
|
- Wrap the entire chain in a \`name:\` + \`steps:\` skeleton
|
|
62777
62778
|
|
|
62778
62779
|
The \`compose\` action is the catch-all assembly step (audio mux, video
|
|
62779
|
-
overlay, etc.)
|
|
62780
|
+
overlay, etc.) - useful at the tail of a pipeline.
|
|
62780
62781
|
`;
|
|
62781
|
-
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run
|
|
62782
|
+
var ARCHITECTURE_WALKTHROUGH = `# vibe agent / build / run - when to pick which
|
|
62782
62783
|
|
|
62783
62784
|
The CLI has three orchestrating commands that coordinate other primitives:
|
|
62784
62785
|
\`vibe agent\`, \`vibe build\`, \`vibe run\`. New users routinely ask which one
|
|
@@ -62807,14 +62808,14 @@ built-in fallback when you do not already have an agent host.
|
|
|
62807
62808
|
- "I have a finished script + visual identity" \u2192 \`vibe build\`
|
|
62808
62809
|
- "I want this to run again next month" \u2192 \`vibe run\`
|
|
62809
62810
|
|
|
62810
|
-
If two seem to fit, pick the rightmost one
|
|
62811
|
+
If two seem to fit, pick the rightmost one - more reproducible, less surprise.
|
|
62811
62812
|
|
|
62812
62813
|
## Cost-tier awareness (v0.83+)
|
|
62813
62814
|
|
|
62814
62815
|
Every primitive subcommand carries a cost tier (\`free\` / \`low\` / \`high\` /
|
|
62815
62816
|
\`very-high\`). \`vibe schema --list\` exposes the tier as JSON, and each
|
|
62816
62817
|
\`vibe <group> <sub> --help\` page shows it as a colored footer. Use
|
|
62817
|
-
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator
|
|
62818
|
+
\`vibe doctor --test-keys\` before kicking off any high-cost orchestrator -
|
|
62818
62819
|
a single bad key wastes time and money.
|
|
62819
62820
|
|
|
62820
62821
|
## Cross-command primitives
|
|
@@ -62924,7 +62925,7 @@ var META = {
|
|
|
62924
62925
|
title: "YAML pipelines (Video as Code)",
|
|
62925
62926
|
summary: "Author and run reproducible multi-step video workflows",
|
|
62926
62927
|
steps: [
|
|
62927
|
-
"Sketch the workflow as YAML
|
|
62928
|
+
"Sketch the workflow as YAML - `name`, `description`, then `steps:` with `id` + `action` + inputs/outputs.",
|
|
62928
62929
|
"Reference previous step outputs via `$<step-id>.output` (or `$<step-id>.result.<field>` for structured returns).",
|
|
62929
62930
|
"Run `vibe run pipeline.yaml --dry-run` to see the resolved graph + cost estimate before spending API budget.",
|
|
62930
62931
|
"Add a `budget:` block (tokens / cost_usd / max_tool_errors) to cap expensive runs.",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/cli",
|
|
3
|
-
"version": "0.113.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.113.29",
|
|
4
|
+
"description": "Frontier AI video generation for coding agents - Seedance, Runway, Veo, and Kling on your own keys, behind a hard cost cap",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -12,13 +12,21 @@
|
|
|
12
12
|
"bugs": {
|
|
13
13
|
"url": "https://github.com/vericontext/vibeframe/issues"
|
|
14
14
|
},
|
|
15
|
+
"homepage": "https://vibeframe.ai",
|
|
15
16
|
"keywords": [
|
|
16
17
|
"vibeframe",
|
|
17
18
|
"cli",
|
|
18
|
-
"video
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
19
|
+
"ai-video",
|
|
20
|
+
"video-generation",
|
|
21
|
+
"text-to-video",
|
|
22
|
+
"image-to-video",
|
|
23
|
+
"seedance",
|
|
24
|
+
"runway",
|
|
25
|
+
"veo",
|
|
26
|
+
"kling",
|
|
27
|
+
"ai-agent",
|
|
28
|
+
"mcp",
|
|
29
|
+
"ffmpeg"
|
|
22
30
|
],
|
|
23
31
|
"type": "module",
|
|
24
32
|
"bin": {
|
|
@@ -83,8 +91,8 @@
|
|
|
83
91
|
"tsx": "^4.21.0",
|
|
84
92
|
"typescript": "^5.3.3",
|
|
85
93
|
"vitest": "^1.2.2",
|
|
86
|
-
"@vibeframe/ai-providers": "0.113.
|
|
87
|
-
"@vibeframe/core": "0.113.
|
|
94
|
+
"@vibeframe/ai-providers": "0.113.29",
|
|
95
|
+
"@vibeframe/core": "0.113.29"
|
|
88
96
|
},
|
|
89
97
|
"engines": {
|
|
90
98
|
"node": ">=20"
|