@vibeframe/cli 0.107.1 → 0.108.1
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/commands/_shared/scene-lint.d.ts +19 -0
- package/dist/commands/_shared/scene-submit.d.ts +41 -0
- package/dist/commands/_shared/scene-submit.test.d.ts +1 -0
- package/dist/commands/_shared/storyboard-edit.d.ts +2 -0
- package/dist/index.js +1549 -1270
- package/dist/tools/manifest/index.js +1196 -925
- package/dist/tools/manifest/scene.d.ts +16 -0
- package/package.json +3 -3
|
@@ -85,6 +85,25 @@ export declare function isEpsilonOverlapFinding(finding: LintFinding): boolean;
|
|
|
85
85
|
* findings pass through unchanged.
|
|
86
86
|
*/
|
|
87
87
|
export declare function filterSubCompFalsePositives(findings: LintFinding[], isSubComposition: boolean): LintFinding[];
|
|
88
|
+
/**
|
|
89
|
+
* VibeFrame-side finding: inner phase clips inside a sub-composition.
|
|
90
|
+
*
|
|
91
|
+
* The producer's screenshot render mode does NOT toggle the visibility of
|
|
92
|
+
* `.clip` elements INSIDE a sub-composition by their `data-start` window —
|
|
93
|
+
* a scene split into clip phases (0-10s, 10-26s) renders BOTH phases
|
|
94
|
+
* simultaneously and text stacks on top of itself. Root index.html clips
|
|
95
|
+
* are unaffected (their windows work); this rule only applies to
|
|
96
|
+
* sub-composition internals. Phase changes must instead be driven by GSAP
|
|
97
|
+
* (animate the old phase out with autoAlpha, the new one in) inside
|
|
98
|
+
* full-window clips.
|
|
99
|
+
*/
|
|
100
|
+
export declare function findInternalPhaseClipFindings(html: string): LintFinding[];
|
|
101
|
+
/**
|
|
102
|
+
* Append VibeFrame-side findings for sub-composition HTML. Call at every
|
|
103
|
+
* lint site (batch composer, scene_submit, scene repair, project lint) so
|
|
104
|
+
* all authoring paths share the exact same contract.
|
|
105
|
+
*/
|
|
106
|
+
export declare function withVibeframeSubCompFindings(findings: LintFinding[], html: string, isSubComposition: boolean): LintFinding[];
|
|
88
107
|
/**
|
|
89
108
|
* Apply mechanical `--fix` rewrites for known-safe finding codes. Returns the
|
|
90
109
|
* (possibly unchanged) HTML and the list of codes that were fixed at least
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module _shared/scene-submit
|
|
3
|
+
*
|
|
4
|
+
* Host-authored scene submission — the missing half of agent-mode compose
|
|
5
|
+
* for hosts that cannot write files (Claude Desktop and other MCP-only
|
|
6
|
+
* surfaces). `build --mode agent` already returns a `needs-author` plan with
|
|
7
|
+
* per-beat compose prompts; this executor accepts the HTML the host agent
|
|
8
|
+
* authored, validates it with the SAME lint the batch composer uses, and
|
|
9
|
+
* writes `compositions/scene-<id>.html` on pass. On lint errors nothing is
|
|
10
|
+
* written and the findings are returned so the agent can fix and resubmit.
|
|
11
|
+
*
|
|
12
|
+
* Shared by the `vibe scene submit` CLI command and the `scene_submit`
|
|
13
|
+
* MCP/agent tool.
|
|
14
|
+
*/
|
|
15
|
+
import { type LintFinding } from "./scene-lint.js";
|
|
16
|
+
export interface SceneSubmitOptions {
|
|
17
|
+
projectDir: string;
|
|
18
|
+
beatId: string;
|
|
19
|
+
/** Scene HTML — a bare `<template>` fragment, optionally ```html-fenced. */
|
|
20
|
+
html: string;
|
|
21
|
+
/** Lint only; never write. */
|
|
22
|
+
validateOnly?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface SceneSubmitResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
beatId: string;
|
|
27
|
+
/** Project-relative path of the scene file. */
|
|
28
|
+
scenePath: string;
|
|
29
|
+
written: boolean;
|
|
30
|
+
/** Lint codes auto-repaired before validation. */
|
|
31
|
+
mechanicalFixes: string[];
|
|
32
|
+
lint: {
|
|
33
|
+
errorCount: number;
|
|
34
|
+
warningCount: number;
|
|
35
|
+
findings: LintFinding[];
|
|
36
|
+
};
|
|
37
|
+
warnings: string[];
|
|
38
|
+
retryWith: string[];
|
|
39
|
+
error?: string;
|
|
40
|
+
}
|
|
41
|
+
export declare function executeSceneSubmit(opts: SceneSubmitOptions): Promise<SceneSubmitResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -12,6 +12,8 @@ export interface StoryboardValidationResult {
|
|
|
12
12
|
beats: Beat[];
|
|
13
13
|
issues: StoryboardValidationIssue[];
|
|
14
14
|
}
|
|
15
|
+
/** Beats beyond this render as static, overstuffed scenes. */
|
|
16
|
+
export declare const MAX_RECOMMENDED_BEAT_SEC = 15;
|
|
15
17
|
export declare function validateStoryboardMarkdown(markdown: string): StoryboardValidationResult;
|
|
16
18
|
export declare function getStoryboardBeat(markdown: string, beatId: string): Beat | null;
|
|
17
19
|
export declare function setStoryboardCue(markdown: string, opts: {
|