@vibeframe/mcp-server 0.113.29 → 0.113.30
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/dist/index.js +34 -14
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -24010,6 +24010,9 @@ function exitWithError(err) {
|
|
|
24010
24010
|
if (err.suggestion) {
|
|
24011
24011
|
console.error(source_default.dim(` ${err.suggestion}`));
|
|
24012
24012
|
}
|
|
24013
|
+
if (err.retryWith && err.retryWith.length > 0) {
|
|
24014
|
+
console.error(source_default.dim(` Retry: ${err.retryWith[0]}`));
|
|
24015
|
+
}
|
|
24013
24016
|
console.error();
|
|
24014
24017
|
}
|
|
24015
24018
|
process.exit(err.exitCode);
|
|
@@ -26127,7 +26130,7 @@ ${avoid}
|
|
|
26127
26130
|
---
|
|
26128
26131
|
|
|
26129
26132
|
_Browse other named styles: \`vibe scene list-styles\`_
|
|
26130
|
-
${style ? `_This file was seeded by \`vibe
|
|
26133
|
+
${style ? `_This file was seeded by \`vibe init --visual-style "${style.name}"\`._` : `_Seed this file from a named style: \`vibe init <dir> --visual-style "<name>"\`._`}
|
|
26131
26134
|
`;
|
|
26132
26135
|
}
|
|
26133
26136
|
function buildScriptMd(name, kind3 = DEFAULT_SCENE_KIND) {
|
|
@@ -26272,7 +26275,7 @@ Single-asset requests (\`vibe generate image|video|speech|...\`) do NOT
|
|
|
26272
26275
|
consult this file - run the generate command directly.
|
|
26273
26276
|
|
|
26274
26277
|
Browse named styles: \`vibe scene list-styles\`. Re-seed from one with
|
|
26275
|
-
\`vibe
|
|
26278
|
+
\`vibe init . --visual-style "Swiss Pulse"\` (idempotent).
|
|
26276
26279
|
|
|
26277
26280
|
## Brief and local media
|
|
26278
26281
|
|
|
@@ -26427,9 +26430,21 @@ npx hyperframes render
|
|
|
26427
26430
|
|
|
26428
26431
|
## Key Rules (for hand-authored scene HTML)
|
|
26429
26432
|
|
|
26433
|
+
0. A scene file is a \`<template id="scene-<id>-template">\` wrapping ONE
|
|
26434
|
+
composition div - not a standalone \`<!doctype html>\` document:
|
|
26435
|
+
\`\`\`html
|
|
26436
|
+
<template id="scene-hook-template">
|
|
26437
|
+
<div data-composition-id="scene-hook" data-start="0" data-duration="3.3"
|
|
26438
|
+
data-width="1920" data-height="1080">\u2026</div>
|
|
26439
|
+
</template>
|
|
26440
|
+
\`\`\`
|
|
26441
|
+
The composition div **MUST** carry \`data-width\` and \`data-height\`.
|
|
26430
26442
|
1. Every timed element needs \`data-start\`, \`data-duration\`, and \`data-track-index\`.
|
|
26431
26443
|
2. Elements with timing **MUST** have \`class="clip"\` - the framework uses this for visibility control.
|
|
26432
|
-
3. Timelines must be paused and registered on \`window.__timelines
|
|
26444
|
+
3. Timelines must be paused and registered on \`window.__timelines\`, which is an
|
|
26445
|
+
OBJECT keyed by composition id - not an array, and \`.push()\` leaves the
|
|
26446
|
+
timeline undiscovered, which renders a black frame because \`gsap.from\` holds
|
|
26447
|
+
elements at their start state:
|
|
26433
26448
|
\`\`\`js
|
|
26434
26449
|
window.__timelines = window.__timelines || {};
|
|
26435
26450
|
window.__timelines["composition-id"] = gsap.timeline({ paused: true });
|
|
@@ -268804,10 +268819,10 @@ async function getComposePrompts(opts) {
|
|
|
268804
268819
|
error: msg
|
|
268805
268820
|
});
|
|
268806
268821
|
if (!existsSync43(designPath)) {
|
|
268807
|
-
return baseError(`DESIGN.md not found at ${designPath}. Run \`vibe
|
|
268822
|
+
return baseError(`DESIGN.md not found at ${designPath}. Run \`vibe init <dir>\` first.`);
|
|
268808
268823
|
}
|
|
268809
268824
|
if (!existsSync43(storyboardPath)) {
|
|
268810
|
-
return baseError(`STORYBOARD.md not found at ${storyboardPath}. Run \`vibe
|
|
268825
|
+
return baseError(`STORYBOARD.md not found at ${storyboardPath}. Run \`vibe init <dir>\` to create a starter, or add STORYBOARD.md with per-beat cues.`);
|
|
268811
268826
|
}
|
|
268812
268827
|
if (!hyperframesSkillAvailable(projectDir)) {
|
|
268813
268828
|
warnings.push(
|
|
@@ -268887,7 +268902,9 @@ function buildInstructions(args) {
|
|
|
268887
268902
|
if (args.skillRef) {
|
|
268888
268903
|
lines.push(`1. Read \`${args.skillRef}\` for the Hyperframes framework rules + house style. This is the visual-identity hard-gate.`);
|
|
268889
268904
|
} else {
|
|
268890
|
-
lines.push(
|
|
268905
|
+
lines.push(
|
|
268906
|
+
`1. Read this project's \`AGENTS.md\` section "Key Rules (for hand-authored scene HTML)" - written by \`vibe init\`, and the authoritative local contract. \`vibe scene install-skill\` adds Hyperframes' house style on top, but note it installs a ROUTER whose full contract sits behind \`/hyperframes-core\`, which resolves only in a host that has upstream's Hyperframes skills.`
|
|
268907
|
+
);
|
|
268891
268908
|
}
|
|
268892
268909
|
lines.push(`2. Read \`DESIGN.md\` for project-specific palette, typography, motion signature.`);
|
|
268893
268910
|
if (args.compositionRef) {
|
|
@@ -268897,6 +268914,7 @@ function buildInstructions(args) {
|
|
|
268897
268914
|
lines.push(`3b. Use each beat's \`finalDurationSec\` (narration-synced) for \`data-duration\` and timeline anchors when present \u2014 NOT the storyboard \`duration\`, which is only the minimum. Scenes composed at the storyboard duration end early and render black tails.`);
|
|
268898
268915
|
lines.push(`3c. Never give inner \`.clip\` elements a non-zero \`data-start\` \u2014 the renderer does not toggle internal clip visibility inside sub-compositions, so phased clips render all phases at once (overlapping text). Use full-window clips and GSAP autoAlpha phase transitions instead. Also keep beats 6-15s; split anything longer in the storyboard first.`);
|
|
268899
268916
|
lines.push(`3d. If your environment cannot write files (e.g. Claude Desktop / MCP-only hosts), author each beat's HTML and submit it with the \`scene_submit\` tool (beat id + html). It validates with the same Hyperframes lint and writes the file for you; on lint errors it returns the findings without writing \u2014 fix and resubmit.`);
|
|
268917
|
+
lines.push(`3e. Hard requirements the linter fails on, so satisfy them even without the full contract. A scene file is a \`<template id="scene-<id>-template">\` wrapping ONE \`<div data-composition-id="scene-<id>" data-start="0" data-duration="<sec>" data-width="1920" data-height="1080">\` \u2014 not a standalone \`<!doctype html>\` document. Register the paused GSAP timeline on the registry OBJECT keyed by composition id: \`window.__timelines = window.__timelines || {}; window.__timelines["scene-<id>"] = tl;\` \u2014 it is not an array, and \`.push()\` leaves the timeline undiscovered, which renders a black frame because \`gsap.from\` holds elements at their start state. Also put \`class="clip"\` on every timed element and give timeline-visible elements a stable \`id\`. Generate a reference scene with \`vibe scene add <id> --style <preset> --no-audio --no-image\` and match its shape.`);
|
|
268900
268918
|
if (args.beatCount > 1) {
|
|
268901
268919
|
lines.push(`4. After authoring all ${args.beatCount} beat(s), run \`vibe build <project> --stage sync --json\` to assemble the root composition (index.html) from the fragments. Lint needs that root, so sync comes first.`);
|
|
268902
268920
|
} else if (args.filtered) {
|
|
@@ -269991,7 +270009,7 @@ async function executeSceneRender(opts = {}) {
|
|
|
269991
270009
|
kind: "render",
|
|
269992
270010
|
beat: opts.beatId ?? null,
|
|
269993
270011
|
root: root2,
|
|
269994
|
-
error: `Root composition not found: ${resolve33(projectDir, root2)}. Run \`vibe
|
|
270012
|
+
error: `Root composition not found: ${resolve33(projectDir, root2)}. Run \`vibe build ${projectDir}\` once to create the render scaffold, or scaffold it up front with \`vibe init <dir> --profile full\`.`
|
|
269995
270013
|
};
|
|
269996
270014
|
}
|
|
269997
270015
|
const chrome2 = await preflightChrome();
|
|
@@ -272241,7 +272259,7 @@ async function executeSceneBuild(opts) {
|
|
|
272241
272259
|
phase: "failed",
|
|
272242
272260
|
mode,
|
|
272243
272261
|
selectedStage,
|
|
272244
|
-
error: `STORYBOARD.md not found at ${storyboardPath}. Run \`vibe
|
|
272262
|
+
error: `STORYBOARD.md not found at ${storyboardPath}. Run \`vibe init <dir>\` to create a starter, or add STORYBOARD.md with per-beat cues.`,
|
|
272245
272263
|
beats: [],
|
|
272246
272264
|
stageReports,
|
|
272247
272265
|
warnings,
|
|
@@ -305086,7 +305104,7 @@ function insertClipIntoRoot(rootHtml, clip) {
|
|
|
305086
305104
|
const closeMatch = rootHtml.match(/\n(\s*)<\/div>(\s*\n\s*<script>)/);
|
|
305087
305105
|
if (!closeMatch) {
|
|
305088
305106
|
throw new Error(
|
|
305089
|
-
"Could not find root composition closing </div>. Ensure index.html follows the layout from `vibe
|
|
305107
|
+
"Could not find root composition closing </div>. Ensure index.html follows the layout from `vibe init`."
|
|
305090
305108
|
);
|
|
305091
305109
|
}
|
|
305092
305110
|
const closeIdx = closeMatch.index;
|
|
@@ -305487,7 +305505,7 @@ sceneCommand.command("list-styles").description("List vendored visual styles (or
|
|
|
305487
305505
|
console.log(source_default.dim("Show details: "), source_default.cyan('vibe scene list-styles "<name>"'));
|
|
305488
305506
|
console.log(
|
|
305489
305507
|
source_default.dim("Seed DESIGN.md:"),
|
|
305490
|
-
source_default.cyan('vibe
|
|
305508
|
+
source_default.cyan('vibe init <dir> --visual-style "<name>"')
|
|
305491
305509
|
);
|
|
305492
305510
|
return;
|
|
305493
305511
|
}
|
|
@@ -305522,7 +305540,7 @@ sceneCommand.command("list-styles").description("List vendored visual styles (or
|
|
|
305522
305540
|
console.log();
|
|
305523
305541
|
console.log(
|
|
305524
305542
|
source_default.dim("Seed DESIGN.md:"),
|
|
305525
|
-
source_default.cyan(`vibe
|
|
305543
|
+
source_default.cyan(`vibe init <dir> --visual-style "${style.name}"`)
|
|
305526
305544
|
);
|
|
305527
305545
|
});
|
|
305528
305546
|
sceneCommand.command("add").description("Add a new scene to a project: AI narration + image + per-scene HTML").argument("<name>", "Scene name (slugified into the composition id)").option("--style <preset>", `Style preset: ${SCENE_PRESETS.join(", ")}`, "simple").option(
|
|
@@ -305780,7 +305798,9 @@ async function executeSceneAdd(opts) {
|
|
|
305780
305798
|
error
|
|
305781
305799
|
});
|
|
305782
305800
|
if (!await pathExists2(rootPath)) {
|
|
305783
|
-
return errResult(
|
|
305801
|
+
return errResult(
|
|
305802
|
+
`Root composition not found: ${rootPath}. Run \`vibe build\` once to create the render scaffold, or scaffold it up front with \`vibe init <dir> --profile full\`.`
|
|
305803
|
+
);
|
|
305784
305804
|
}
|
|
305785
305805
|
if (!opts.force && await pathExists2(scenePath)) {
|
|
305786
305806
|
return errResult(`Scene already exists: ${sceneRel}. Re-run with --force to overwrite.`);
|
|
@@ -316070,7 +316090,7 @@ function handleCliFlags(argv, version2) {
|
|
|
316070
316090
|
}
|
|
316071
316091
|
|
|
316072
316092
|
// src/index.ts
|
|
316073
|
-
if (handleCliFlags(process.argv.slice(2), "0.113.
|
|
316093
|
+
if (handleCliFlags(process.argv.slice(2), "0.113.30")) {
|
|
316074
316094
|
process.exit(0);
|
|
316075
316095
|
}
|
|
316076
316096
|
console.log = (...args) => console.error(...args);
|
|
@@ -316083,7 +316103,7 @@ var server = new Server(
|
|
|
316083
316103
|
{
|
|
316084
316104
|
name: "vibeframe",
|
|
316085
316105
|
// Stamped with the package version by build.js at bundle time.
|
|
316086
|
-
version: "0.113.
|
|
316106
|
+
version: "0.113.30"
|
|
316087
316107
|
},
|
|
316088
316108
|
{
|
|
316089
316109
|
capabilities: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.113.
|
|
3
|
+
"version": "0.113.30",
|
|
4
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": {
|
|
@@ -66,8 +66,8 @@
|
|
|
66
66
|
"tsx": "^4.21.0",
|
|
67
67
|
"typescript": "^5.3.3",
|
|
68
68
|
"vitest": "^1.2.2",
|
|
69
|
-
"@vibeframe/
|
|
70
|
-
"@vibeframe/
|
|
69
|
+
"@vibeframe/core": "0.113.30",
|
|
70
|
+
"@vibeframe/cli": "0.113.30"
|
|
71
71
|
},
|
|
72
72
|
"engines": {
|
|
73
73
|
"node": ">=20"
|