@vibeframe/cli 0.113.30 → 0.115.0

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 (31) hide show
  1. package/dist/commands/_shared/build-plan.d.ts +2 -1
  2. package/dist/commands/_shared/compose-prompts.d.ts +3 -2
  3. package/dist/commands/_shared/help-groups.d.ts +49 -0
  4. package/dist/commands/_shared/help-groups.test.d.ts +1 -0
  5. package/dist/commands/_shared/storyboard-edit.d.ts +12 -2
  6. package/dist/commands/_shared/storyboard-parse.d.ts +42 -10
  7. package/dist/commands/_shared/storyboard-source.d.ts +228 -0
  8. package/dist/commands/_shared/storyboard-source.test.d.ts +1 -0
  9. package/dist/commands/ai-motion.d.ts +1 -1
  10. package/dist/commands/ai-review.d.ts +0 -2
  11. package/dist/commands/generate/music-status.d.ts +0 -2
  12. package/dist/commands/generate/speech.d.ts +0 -1
  13. package/dist/commands/generate/storyboard.d.ts +0 -2
  14. package/dist/commands/generate.d.ts +0 -7
  15. package/dist/commands/inspect.d.ts +0 -2
  16. package/dist/commands/run.d.ts +1 -1
  17. package/dist/index.js +2737 -4440
  18. package/dist/tools/define-tool.js +0 -40
  19. package/dist/tools/manifest/edit.d.ts +2 -2
  20. package/dist/tools/manifest/generate.d.ts +2 -70
  21. package/dist/tools/manifest/index.js +7741 -9342
  22. package/dist/tools/manifest/inspect.d.ts +4 -51
  23. package/dist/tools/manifest/remix.d.ts +10 -44
  24. package/dist/tools/manifest/scene.d.ts +10 -10
  25. package/dist/tools/manifest/storyboard.d.ts +4 -4
  26. package/dist/utils/agent-host-detect.d.ts +7 -2
  27. package/package.json +3 -3
  28. package/dist/commands/ai-script-pipeline-cli.d.ts +0 -10
  29. package/dist/commands/ai-script-pipeline.d.ts +0 -74
  30. package/dist/commands/generate/background.d.ts +0 -22
  31. package/dist/commands/generate/video-status.d.ts +0 -8
@@ -1,5 +1,6 @@
1
1
  import { type BuildAssetKind } from "./build-cache.js";
2
2
  import { type AssetFreshness } from "./build-asset-metadata.js";
3
+ import { type BeatCues } from "./storyboard-parse.js";
3
4
  import { type LoadedProjectConfig } from "./project-config.js";
4
5
  import { type StoryboardValidationIssue } from "./storyboard-edit.js";
5
6
  export type BuildStage = "assets" | "transcript" | "compose" | "sync" | "render" | "all";
@@ -11,7 +12,7 @@ export interface BuildPlanBeat {
11
12
  id: string;
12
13
  heading: string;
13
14
  durationSec: number | null;
14
- cues: Record<string, unknown>;
15
+ cues: BeatCues;
15
16
  assets: {
16
17
  narration: AssetPlan | null;
17
18
  backdrop: AssetPlan | null;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module _shared/compose-prompts
3
3
  *
4
- * Phase H2 — agentic compose primitive. Reads `STORYBOARD.md` + `DESIGN.md`
4
+ * Agentic compose primitive. Reads `STORYBOARD.md` + `DESIGN.md`
5
5
  * from a scene project and emits a structured plan for the host agent
6
6
  * (Claude Code, Cursor, Codex, Aider) to author per-beat HTML files
7
7
  * itself. **No LLM call from inside the CLI** — that's the point. The
@@ -31,6 +31,7 @@
31
31
  * This is the only model-authored compose path: the host agent writes each
32
32
  * file. `--composer template` is the deterministic alternative.
33
33
  */
34
+ import { type BeatCues } from "./storyboard-parse.js";
34
35
  export interface ComposePromptsBeat {
35
36
  /** Stable beat id from `parseStoryboard().deriveBeatId()`. */
36
37
  id: string;
@@ -48,7 +49,7 @@ export interface ComposePromptsBeat {
48
49
  */
49
50
  finalDurationSec?: number;
50
51
  /** Per-beat YAML cues parsed from the leading code block of the body. */
51
- cues?: Record<string, unknown>;
52
+ cues?: BeatCues;
52
53
  /** Beat body markdown (with the leading `\`\`\`yaml` cue block stripped). */
53
54
  body: string;
54
55
  /**
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @module commands/_shared/help-groups
3
+ *
4
+ * Groups the root `vibe --help` command listing by use case instead of
5
+ * alphabetically.
6
+ *
7
+ * Before this, the root help printed the same commands twice: once as
8
+ * Commander's flat alphabetical `Commands:` block, then again under a
9
+ * "Common workflows" footer that re-listed most of them by use case. The
10
+ * footer's own preamble admitted it ("the alphabetical list above is the
11
+ * full command set; this section shows the typical entry points by use
12
+ * case"), which left the reader to map the two lists onto each other.
13
+ *
14
+ * Descriptions are read from the live command tree rather than restated
15
+ * here, so this file can only ever drift in *grouping*, never in wording.
16
+ * A command missing from {@link COMMAND_GROUPS} lands in a trailing
17
+ * "Other" group rather than disappearing; `help-groups.test.ts` asserts
18
+ * that group stays empty so adding a top-level command fails the test
19
+ * instead of silently degrading the help.
20
+ */
21
+ import type { Command } from "commander";
22
+ /**
23
+ * Use-case groups for the root help listing, in display order.
24
+ *
25
+ * Ordered by the sequence a first-time reader needs them: build a project
26
+ * video, reach for a one-off asset, then wire up hosts and automation.
27
+ */
28
+ export declare const COMMAND_GROUPS: ReadonlyArray<{
29
+ readonly title: string;
30
+ readonly commands: readonly string[];
31
+ }>;
32
+ /**
33
+ * Top-level commands that appear in help, excluding hidden ones and
34
+ * Commander's auto-generated `help` command.
35
+ */
36
+ export declare function visibleTopLevelCommands(prog: Command): Command[];
37
+ /**
38
+ * Visible top-level command names that no group in {@link COMMAND_GROUPS}
39
+ * claims. Empty in a healthy tree; the test asserts that.
40
+ */
41
+ export declare function ungroupedCommandNames(prog: Command): string[];
42
+ /**
43
+ * Render the grouped command listing for the root `vibe --help`.
44
+ *
45
+ * Returns the block that replaces Commander's flat `Commands:` section,
46
+ * already prefixed and suffixed with a blank line so it slots between the
47
+ * options block and the remaining help footers.
48
+ */
49
+ export declare function renderCommandGroups(prog: Command): string;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,6 +1,5 @@
1
1
  import { type Beat } from "./storyboard-parse.js";
2
- export declare const STORYBOARD_CUE_KEYS: readonly ["duration", "narration", "backdrop", "video", "keyframe", "motion", "voice", "music", "asset", "characters", "eyebrow", "title", "caption", "kicker", "sub"];
3
- export type StoryboardCueKey = (typeof STORYBOARD_CUE_KEYS)[number];
2
+ export { STORYBOARD_CUE_KEYS, type StoryboardCueKey } from "./storyboard-parse.js";
4
3
  export interface StoryboardValidationIssue {
5
4
  severity: "error" | "warning";
6
5
  code: string;
@@ -40,3 +39,14 @@ export declare function moveStoryboardBeat(markdown: string, opts: {
40
39
  beatId: string;
41
40
  afterBeatId: string;
42
41
  }): string;
42
+ /**
43
+ * True for the untouched three-beat scaffold. Exported so the bundle writer
44
+ * makes the same "this is still the starter, replace it" call as the
45
+ * single-document writer, off the same assembled markdown.
46
+ */
47
+ export declare function isStarterStoryboard(markdown: string): boolean;
48
+ /**
49
+ * Coerce and validate one cue value. Shared with the bundle writer so both
50
+ * storage layouts reject the same bad input.
51
+ */
52
+ export declare function normalizeCueValue(key: string, value: unknown): unknown;
@@ -94,25 +94,36 @@ export interface ResolvedCharacter {
94
94
  * (generation skipped). Entries with neither are dropped.
95
95
  */
96
96
  export declare function resolveCharacters(frontmatter: ProjectFrontmatter | undefined): ResolvedCharacter[];
97
+ /**
98
+ * The complete per-beat cue vocabulary, in the order it is presented to
99
+ * humans and agents.
100
+ *
101
+ * This is the single source of truth. {@link BeatCues} is derived from it,
102
+ * `validateStoryboardMarkdown` rejects anything outside it, `vibe storyboard
103
+ * set` refuses unlisted keys, and the compose and revise prompts render it
104
+ * rather than restating it - four surfaces had drifted to four different
105
+ * sub-lists before this became the one list.
106
+ */
107
+ export declare const STORYBOARD_CUE_KEYS: readonly ["duration", "narration", "backdrop", "video", "keyframe", "motion", "voice", "music", "asset", "characters", "eyebrow", "title", "caption", "kicker", "sub"];
108
+ export type StoryboardCueKey = (typeof STORYBOARD_CUE_KEYS)[number];
97
109
  /**
98
110
  * Per-beat cues extracted from the first ```yaml fenced block inside a beat
99
111
  * body. The driver passes these to TTS / image / compose calls so the
100
112
  * storyboard alone is enough source for `vibe scene build`.
113
+ *
114
+ * Every key in {@link STORYBOARD_CUE_KEYS} is declared here. There is
115
+ * deliberately no index signature: an unlisted key is a validation warning at
116
+ * runtime, so letting it typecheck only hides the drift.
101
117
  */
102
118
  export interface BeatCues {
119
+ /** Beat duration in seconds; overrides the `### Beat duration` subsection if both are present. */
120
+ duration?: number;
103
121
  /** Narration text for this beat (drives TTS + scene `<audio>` element). */
104
122
  narration?: string;
105
123
  /** Image prompt for the backdrop generation (drives T2I). */
106
124
  backdrop?: string;
107
- /** Beat duration in seconds — overrides `### Beat duration` subsection if both present. */
108
- duration?: number;
109
- /** Voice override for this beat (overrides project frontmatter `voice`). */
110
- voice?: string;
111
- /**
112
- * Character pool names whose reference sheets drive this beat's
113
- * reference-to-video generation. A single name or a list.
114
- */
115
- characters?: string | string[];
125
+ /** Motion prompt for video generation. Pairs with `keyframe` for image-to-video. */
126
+ video?: string;
116
127
  /**
117
128
  * Keyframe still prompt. When set, the build generates a keyframe image for
118
129
  * this beat (using the character sheet as an edit reference when `characters`
@@ -120,13 +131,34 @@ export interface BeatCues {
120
131
  * if present, supplies the motion prompt; otherwise this text is used.
121
132
  */
122
133
  keyframe?: string;
134
+ /**
135
+ * Animation direction for the scene-authoring agent, e.g. "restrained camera
136
+ * push, headline settles first". Unlike the cues around it this drives no
137
+ * deterministic stage - it reaches the host agent through the compose plan
138
+ * and shapes the HTML that agent writes.
139
+ */
140
+ motion?: string;
141
+ /** Voice override for this beat (overrides project frontmatter `voice`). */
142
+ voice?: string;
143
+ /** Music prompt or a project-relative path to an existing track. */
144
+ music?: string;
145
+ /** Project-relative path to a file this beat should reuse instead of generating. */
146
+ asset?: string;
147
+ /**
148
+ * Character pool names whose reference sheets drive this beat's
149
+ * reference-to-video generation. A single name or a list.
150
+ */
151
+ characters?: string | string[];
123
152
  /** Lower-third overlay eyebrow/kicker (read by the deterministic composer). */
124
153
  eyebrow?: string;
125
154
  /** Lower-third headline; falls back to the beat heading when absent. */
126
155
  title?: string;
127
156
  /** Lower-third sub-line / caption. */
128
157
  caption?: string;
129
- [key: string]: unknown;
158
+ /** Alias for `eyebrow`; `eyebrow` wins when both are present. */
159
+ kicker?: string;
160
+ /** Alias for `caption`; `caption` wins when both are present. */
161
+ sub?: string;
130
162
  }
131
163
  /** Normalize a beat's `characters` cue to a clean string[] (single or list). */
132
164
  export declare function beatCharacterNames(cues: BeatCues | undefined): string[];
@@ -0,0 +1,228 @@
1
+ /**
2
+ * @module _shared/storyboard-source
3
+ *
4
+ * Resolves where a project's storyboard actually lives and hands back one
5
+ * markdown document either way.
6
+ *
7
+ * Two on-disk layouts are supported:
8
+ *
9
+ * **bundle** (preferred) - `STORYBOARD.md` holds project frontmatter and
10
+ * direction prose, and `scenes/NN-<id>.md` holds one scene per file with its
11
+ * cues in real document frontmatter:
12
+ *
13
+ * ```text
14
+ * launch/
15
+ * STORYBOARD.md --- type/title/duration/aspect/providers/characters ---
16
+ * scenes/
17
+ * 01-hook.md --- duration/narration/backdrop/... --- + body
18
+ * 02-proof.md
19
+ * ```
20
+ *
21
+ * **single** (legacy) - one `STORYBOARD.md` with `## Beat <id> - <title>`
22
+ * headings, each carrying a leading ```yaml cue block.
23
+ *
24
+ * The bundle layout exists because `---` frontmatter is a *document* level
25
+ * construct. Used mid-document it is not frontmatter at all: the opening
26
+ * `---` is a horizontal rule and the closing one turns the lines above it
27
+ * into a setext heading. One scene per file is the only way per-scene cues
28
+ * can be written as frontmatter and still render correctly.
29
+ *
30
+ * A bundle is assembled back into the single-document shape in memory, so
31
+ * every existing consumer of `parseStoryboard()` keeps working unchanged.
32
+ * That is deliberate: the on-disk format users edit is decoupled from the
33
+ * in-memory representation the build already understands.
34
+ */
35
+ import { type Beat, type BeatCues } from "./storyboard-parse.js";
36
+ /** Directory, relative to the project root, that holds one file per scene. */
37
+ export declare const SCENES_DIRNAME = "scenes";
38
+ /** The project-level document, present in both layouts. */
39
+ export declare const STORYBOARD_FILENAME = "STORYBOARD.md";
40
+ export type StoryboardLayout = "bundle" | "single" | "missing";
41
+ export interface SceneFile {
42
+ /** Beat id derived from the filename, with any ordering prefix stripped. */
43
+ id: string;
44
+ /** Absolute path to the scene file. */
45
+ path: string;
46
+ /** Filename, e.g. `01-hook.md`. */
47
+ filename: string;
48
+ /** Numeric ordering prefix when present (`01-hook.md` -> 1). */
49
+ order: number | null;
50
+ }
51
+ export interface LoadedStoryboard {
52
+ layout: StoryboardLayout;
53
+ /** One markdown document in the legacy single-file shape. */
54
+ markdown: string;
55
+ /** Scene files, in play order. Empty for the single layout. */
56
+ scenes: SceneFile[];
57
+ /** Absolute path of the project-level document. */
58
+ storyboardPath: string;
59
+ /**
60
+ * Beat ids found as `## Beat ...` headings inside STORYBOARD.md while the
61
+ * project is a bundle. Those headings are ignored - `scenes/` is the only
62
+ * source of scenes - and reported so validation can say so out loud.
63
+ * Always empty for the single layout.
64
+ */
65
+ strayBeatIds: string[];
66
+ }
67
+ /**
68
+ * Scene files in play order: numeric prefix first (ascending), then any
69
+ * unprefixed files in filename order. Mixing the two is legal but a lint
70
+ * elsewhere should discourage it.
71
+ */
72
+ export declare function listSceneFiles(projectDir: string): Promise<SceneFile[]>;
73
+ export declare function detectStoryboardLayout(projectDir: string, sceneCount: number): StoryboardLayout;
74
+ /**
75
+ * Turn one scene file into the `## Beat <id> - <Title>` + cue-block section
76
+ * the single-document parser expects.
77
+ *
78
+ * `type:` is dropped: it is OKF bookkeeping identifying the file as a scene,
79
+ * not a cue, and passing it through would trip the unknown-cue warning.
80
+ * A `title:` in scene frontmatter is a lower-third cue, so the heading uses
81
+ * the humanised id and `title` stays in the cue block where it belongs.
82
+ */
83
+ export declare function sceneToBeatSection(scene: SceneFile, contents: string): string;
84
+ /**
85
+ * Load a project's storyboard as a single markdown document, whichever
86
+ * layout it uses on disk.
87
+ *
88
+ * For a bundle, STORYBOARD.md contributes only its frontmatter and direction
89
+ * prose. Anything from its first `## ` heading onward is dropped and its beat
90
+ * ids returned in `strayBeatIds`.
91
+ *
92
+ * Concatenating instead would merge two sets of scenes into one timeline: a
93
+ * project that has both would silently render the STORYBOARD.md beats *and*
94
+ * the scene files, in that order. `scenes/` is the layout the project opted
95
+ * into, so it is the only source of scenes, and the leftovers are surfaced as
96
+ * a validation error rather than quietly obeyed or quietly discarded.
97
+ */
98
+ export declare function loadStoryboard(projectDir: string): Promise<LoadedStoryboard>;
99
+ /** Convenience for the many call sites that only want the markdown. */
100
+ export declare function loadStoryboardMarkdown(projectDir: string): Promise<string>;
101
+ /** `01-hook.md` for order 1 and id `hook`. Two digits until a project needs three. */
102
+ export declare function sceneFilename(order: number, id: string): string;
103
+ export interface MigrationPlanFile {
104
+ /** Path relative to the project root, e.g. `scenes/01-hook.md`. */
105
+ path: string;
106
+ contents: string;
107
+ }
108
+ export interface MigrationPlan {
109
+ /** Files to create, in play order. */
110
+ scenes: MigrationPlanFile[];
111
+ /** What STORYBOARD.md becomes: frontmatter + direction prose, no beats. */
112
+ storyboard: MigrationPlanFile;
113
+ /** Beat ids in the order they will play. */
114
+ beatIds: string[];
115
+ }
116
+ /**
117
+ * Render one beat as a standalone scene document.
118
+ *
119
+ * Cues become real frontmatter, which is the whole point of the bundle
120
+ * layout. `type: Scene` is added so the file is a valid OKF document; the
121
+ * loader strips it again on the way back in.
122
+ */
123
+ export declare function beatToSceneFile(beat: Beat, order: number): MigrationPlanFile;
124
+ /**
125
+ * Plan the conversion of a single-document storyboard into a bundle.
126
+ *
127
+ * Pure: returns the files to write without touching disk, so the command can
128
+ * offer `--dry-run` and so the whole shape is testable.
129
+ */
130
+ export declare function planMigration(markdown: string): MigrationPlan;
131
+ /**
132
+ * Set or unset one cue in a scene file, rewriting only that file's
133
+ * frontmatter and leaving its body untouched.
134
+ *
135
+ * Key validation and value coercion come from the same helpers the
136
+ * single-document writer uses, so `duration: "abc"` is rejected identically
137
+ * in both layouts.
138
+ */
139
+ export declare function setSceneCue(projectDir: string, opts: {
140
+ beatId: string;
141
+ key: string;
142
+ value?: unknown;
143
+ unset?: boolean;
144
+ }): Promise<{
145
+ path: string;
146
+ cues: BeatCues;
147
+ }>;
148
+ /**
149
+ * Reorder scenes by renumbering their filename prefixes.
150
+ *
151
+ * Renames go through a temporary name first. Renaming `02 -> 01` while an
152
+ * `01` still exists would clobber it, and no ordering of direct renames is
153
+ * safe for an arbitrary permutation.
154
+ */
155
+ export declare function moveScene(projectDir: string, opts: {
156
+ beatId: string;
157
+ afterBeatId: string;
158
+ }): Promise<string[]>;
159
+ /**
160
+ * Write a migration plan to disk.
161
+ *
162
+ * Scene files land before STORYBOARD.md is rewritten, so a failure part way
163
+ * through leaves the original single-file storyboard as the source of truth
164
+ * rather than a half-emptied document. Shared by `storyboard migrate` and by
165
+ * `vibe init`, which scaffolds straight into the bundle layout.
166
+ */
167
+ export declare function writeMigration(projectDir: string, plan: MigrationPlan): Promise<void>;
168
+ /**
169
+ * Scaffold a bundle from a single-document storyboard string.
170
+ *
171
+ * `vibe init` builds its starter (and its `--from` draft) as one markdown
172
+ * document, then hands it here rather than writing it out. That keeps one
173
+ * generator for the content and one converter for the layout, instead of a
174
+ * second scaffolder that could drift from the first.
175
+ */
176
+ export declare function writeStoryboardAsBundle(projectDir: string, markdown: string): Promise<MigrationPlan>;
177
+ /**
178
+ * Validation issues for beat headings left in STORYBOARD.md after a project
179
+ * became a bundle.
180
+ *
181
+ * An error, not a warning: the headings look like scenes and are not being
182
+ * rendered, so the project on disk does not describe the video that comes
183
+ * out. Anything less than an error lets that gap sit unnoticed.
184
+ */
185
+ export declare function strayBeatIssues(strayBeatIds: string[]): Array<{
186
+ severity: "error";
187
+ code: "STRAY_BEATS_IN_STORYBOARD";
188
+ message: string;
189
+ beatId: string;
190
+ }>;
191
+ /**
192
+ * Create or update one scene file, mirroring `upsertStoryboardBeat`.
193
+ *
194
+ * The three actions match the single-document writer so `vibe scene add`
195
+ * reports the same thing either way:
196
+ *
197
+ * - `updated` - a scene with this id exists; its cues are merged and its
198
+ * body is left alone unless a new one is supplied.
199
+ * - `replaced-starter` - the bundle is still the untouched three-beat
200
+ * scaffold, so it is cleared rather than appended to.
201
+ * - `appended` - a new scene file after the current last one.
202
+ */
203
+ export declare function upsertScene(projectDir: string, opts: {
204
+ beatId: string;
205
+ title?: string;
206
+ duration?: number;
207
+ narration?: string;
208
+ backdrop?: string;
209
+ body?: string;
210
+ }): Promise<{
211
+ action: "updated" | "replaced-starter" | "appended";
212
+ path: string;
213
+ }>;
214
+ /**
215
+ * Replace a bundle's scenes with the ones described by a single markdown
216
+ * document.
217
+ *
218
+ * Used when something produces a whole storyboard at once - today
219
+ * `vibe storyboard revise`, whose model returns one document. Writing that
220
+ * document to STORYBOARD.md would lose the revision: `scenes/` still wins, so
221
+ * the old scenes would keep rendering while the new beats sat in
222
+ * STORYBOARD.md being reported as stray.
223
+ *
224
+ * Scene files the new document does not name are deleted, so a revision that
225
+ * removes a beat actually removes it rather than leaving an orphan that keeps
226
+ * playing.
227
+ */
228
+ export declare function rewriteBundleFromMarkdown(projectDir: string, markdown: string): Promise<MigrationPlan>;
@@ -0,0 +1 @@
1
+ export {};
@@ -21,7 +21,7 @@ export interface MotionCommandOptions {
21
21
  render?: boolean;
22
22
  /** Base video to composite the motion graphic onto */
23
23
  video?: string;
24
- /** Image to analyze with Gemini — color/mood/composition fed into Claude prompt */
24
+ /** Image to analyze with Gemini - color/mood/composition fed into Claude prompt */
25
25
  image?: string;
26
26
  /** Analyze base video before generating motion: auto | off | required */
27
27
  understand?: "auto" | "off" | "required";
@@ -10,7 +10,6 @@
10
10
  *
11
11
  * @dependencies Gemini (Google), FFmpeg (auto-fix filters)
12
12
  */
13
- import { Command } from "commander";
14
13
  import type { VideoReviewFeedback } from "./ai-edit.js";
15
14
  /** Options for {@link executeReview}. */
16
15
  export interface ReviewOptions {
@@ -55,4 +54,3 @@ export interface ReviewResult {
55
54
  * @returns Result with structured feedback and optional fix details
56
55
  */
57
56
  export declare function executeReview(options: ReviewOptions): Promise<ReviewResult>;
58
- export declare function registerReviewCommand(aiCommand: Command): void;
@@ -4,7 +4,6 @@
4
4
  * generation status check. Split out of `generate.ts` in v0.69 (Plan G
5
5
  * Phase 2).
6
6
  */
7
- import type { Command } from "commander";
8
7
  export interface ExecuteMusicStatusOptions {
9
8
  taskId: string;
10
9
  apiKey?: string;
@@ -17,4 +16,3 @@ export interface ExecuteMusicStatusResult {
17
16
  error?: string;
18
17
  }
19
18
  export declare function executeMusicStatus(options: ExecuteMusicStatusOptions): Promise<ExecuteMusicStatusResult>;
20
- export declare function registerMusicStatusCommand(parent: Command): void;
@@ -17,5 +17,4 @@ export interface ExecuteSpeechResult {
17
17
  error?: string;
18
18
  }
19
19
  export declare function executeSpeech(options: ExecuteSpeechOptions): Promise<ExecuteSpeechResult>;
20
- export declare function registerSpeechCommand(parent: Command): void;
21
20
  export declare function registerNarrationCommand(parent: Command): void;
@@ -3,7 +3,6 @@
3
3
  * @description `vibe generate storyboard` — Claude-powered script-to-
4
4
  * storyboard analysis. Split out of `generate.ts` in v0.69 (Plan G Phase 2).
5
5
  */
6
- import type { Command } from "commander";
7
6
  export interface ExecuteStoryboardOptions {
8
7
  content: string;
9
8
  duration?: number;
@@ -24,4 +23,3 @@ export interface ExecuteStoryboardResult {
24
23
  error?: string;
25
24
  }
26
25
  export declare function executeStoryboard(options: ExecuteStoryboardOptions): Promise<ExecuteStoryboardResult>;
27
- export declare function registerStoryboardCommand(parent: Command): void;
@@ -6,15 +6,10 @@
6
6
  * Commands:
7
7
  * generate image - Generate image (Gemini, OpenAI, Grok, Runway)
8
8
  * generate video - Generate video (Seedance, Grok, Kling, Runway, Veo)
9
- * generate speech - Text-to-speech (ElevenLabs)
10
9
  * generate sound-effect - Sound effects (ElevenLabs)
11
10
  * generate music - Music generation (ElevenLabs default, Replicate MusicGen)
12
- * generate music-status - Check music generation status
13
- * generate storyboard - Script-to-storyboard (Claude)
14
11
  * generate motion - Standalone motion assets (Claude/Gemini + Remotion)
15
12
  * generate thumbnail - Thumbnail generation/extraction
16
- * generate background - AI background generation (OpenAI)
17
- * generate video-status - Check video generation status (Grok/Runway/Kling/Veo)
18
13
  * generate video-cancel - Cancel video generation (Grok/Runway)
19
14
  * generate video-extend - Extend video (Kling/Veo)
20
15
  *
@@ -25,8 +20,6 @@ export { executeSoundEffect } from "./generate/sound-effect.js";
25
20
  export type { ExecuteSoundEffectOptions, ExecuteSoundEffectResult, } from "./generate/sound-effect.js";
26
21
  export { executeMusicStatus } from "./generate/music-status.js";
27
22
  export type { ExecuteMusicStatusOptions, ExecuteMusicStatusResult, } from "./generate/music-status.js";
28
- export { executeBackground } from "./generate/background.js";
29
- export type { ExecuteBackgroundOptions, ExecuteBackgroundResult } from "./generate/background.js";
30
23
  export { executeStoryboard } from "./generate/storyboard.js";
31
24
  export type { ExecuteStoryboardOptions, ExecuteStoryboardResult } from "./generate/storyboard.js";
32
25
  export { executeSpeech } from "./generate/speech.js";
@@ -10,8 +10,6 @@
10
10
  * inspect project - Local project completeness and composition checks
11
11
  * inspect render - Local rendered video checks plus optional Gemini review
12
12
  * inspect media - Unified analysis for images, videos, and YouTube URLs (Gemini)
13
- * inspect video - Analyze video files or YouTube URLs with Gemini
14
- * inspect review - AI video quality review and auto-fix (Gemini)
15
13
  * inspect suggest - Get AI edit suggestions using Gemini
16
14
  *
17
15
  * @dependencies Gemini (Google), FFmpeg (auto-fix filters)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * `vibe run` command — Execute declarative YAML video pipelines.
2
+ * `vibe run` command - Execute declarative YAML video pipelines.
3
3
  *
4
4
  * Video as Code: define reproducible, shareable video workflows in YAML.
5
5
  * Each step maps to an existing CLI command's execute function.