venice-video-harness 2.4.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.
- package/CHANGELOG.md +28 -0
- package/LICENSE +21 -0
- package/README.md +598 -0
- package/dist/assembly/manifest-builder.d.ts +8 -0
- package/dist/assembly/manifest-builder.d.ts.map +1 -0
- package/dist/assembly/manifest-builder.js +196 -0
- package/dist/assembly/manifest-builder.js.map +1 -0
- package/dist/assembly/remotion-scaffold.d.ts +14 -0
- package/dist/assembly/remotion-scaffold.d.ts.map +1 -0
- package/dist/assembly/remotion-scaffold.js +292 -0
- package/dist/assembly/remotion-scaffold.js.map +1 -0
- package/dist/assembly/types.d.ts +67 -0
- package/dist/assembly/types.d.ts.map +1 -0
- package/dist/assembly/types.js +5 -0
- package/dist/assembly/types.js.map +1 -0
- package/dist/characters/describer.d.ts +32 -0
- package/dist/characters/describer.d.ts.map +1 -0
- package/dist/characters/describer.js +309 -0
- package/dist/characters/describer.js.map +1 -0
- package/dist/characters/extractor.d.ts +27 -0
- package/dist/characters/extractor.d.ts.map +1 -0
- package/dist/characters/extractor.js +274 -0
- package/dist/characters/extractor.js.map +1 -0
- package/dist/characters/reference-manager.d.ts +95 -0
- package/dist/characters/reference-manager.d.ts.map +1 -0
- package/dist/characters/reference-manager.js +346 -0
- package/dist/characters/reference-manager.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +310 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +22 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/editing/aligner.d.ts +44 -0
- package/dist/editing/aligner.d.ts.map +1 -0
- package/dist/editing/aligner.js +201 -0
- package/dist/editing/aligner.js.map +1 -0
- package/dist/editing/edl.d.ts +45 -0
- package/dist/editing/edl.d.ts.map +1 -0
- package/dist/editing/edl.js +133 -0
- package/dist/editing/edl.js.map +1 -0
- package/dist/editing/overlays.d.ts +97 -0
- package/dist/editing/overlays.d.ts.map +1 -0
- package/dist/editing/overlays.js +41 -0
- package/dist/editing/overlays.js.map +1 -0
- package/dist/editing/packer.d.ts +52 -0
- package/dist/editing/packer.d.ts.map +1 -0
- package/dist/editing/packer.js +170 -0
- package/dist/editing/packer.js.map +1 -0
- package/dist/editing/providers/whisper-cpp.d.ts +32 -0
- package/dist/editing/providers/whisper-cpp.d.ts.map +1 -0
- package/dist/editing/providers/whisper-cpp.js +239 -0
- package/dist/editing/providers/whisper-cpp.js.map +1 -0
- package/dist/editing/render.d.ts +36 -0
- package/dist/editing/render.d.ts.map +1 -0
- package/dist/editing/render.js +227 -0
- package/dist/editing/render.js.map +1 -0
- package/dist/editing/self-eval.d.ts +48 -0
- package/dist/editing/self-eval.d.ts.map +1 -0
- package/dist/editing/self-eval.js +293 -0
- package/dist/editing/self-eval.js.map +1 -0
- package/dist/editing/silence.d.ts +76 -0
- package/dist/editing/silence.d.ts.map +1 -0
- package/dist/editing/silence.js +189 -0
- package/dist/editing/silence.js.map +1 -0
- package/dist/editing/types.d.ts +178 -0
- package/dist/editing/types.d.ts.map +1 -0
- package/dist/editing/types.js +13 -0
- package/dist/editing/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive.d.ts +12 -0
- package/dist/interactive.d.ts.map +1 -0
- package/dist/interactive.js +78 -0
- package/dist/interactive.js.map +1 -0
- package/dist/mini-drama/assembler.d.ts +61 -0
- package/dist/mini-drama/assembler.d.ts.map +1 -0
- package/dist/mini-drama/assembler.js +466 -0
- package/dist/mini-drama/assembler.js.map +1 -0
- package/dist/mini-drama/audio-mix.d.ts +65 -0
- package/dist/mini-drama/audio-mix.d.ts.map +1 -0
- package/dist/mini-drama/audio-mix.js +118 -0
- package/dist/mini-drama/audio-mix.js.map +1 -0
- package/dist/mini-drama/cli.d.ts +3 -0
- package/dist/mini-drama/cli.d.ts.map +1 -0
- package/dist/mini-drama/cli.js +2869 -0
- package/dist/mini-drama/cli.js.map +1 -0
- package/dist/mini-drama/fcpxml-export.d.ts +2 -0
- package/dist/mini-drama/fcpxml-export.d.ts.map +1 -0
- package/dist/mini-drama/fcpxml-export.js +5 -0
- package/dist/mini-drama/fcpxml-export.js.map +1 -0
- package/dist/mini-drama/generation-planner.d.ts +24 -0
- package/dist/mini-drama/generation-planner.d.ts.map +1 -0
- package/dist/mini-drama/generation-planner.js +304 -0
- package/dist/mini-drama/generation-planner.js.map +1 -0
- package/dist/mini-drama/location-generator.d.ts +23 -0
- package/dist/mini-drama/location-generator.d.ts.map +1 -0
- package/dist/mini-drama/location-generator.js +144 -0
- package/dist/mini-drama/location-generator.js.map +1 -0
- package/dist/mini-drama/music-cues.d.ts +96 -0
- package/dist/mini-drama/music-cues.d.ts.map +1 -0
- package/dist/mini-drama/music-cues.js +332 -0
- package/dist/mini-drama/music-cues.js.map +1 -0
- package/dist/mini-drama/panel-fixer.d.ts +12 -0
- package/dist/mini-drama/panel-fixer.d.ts.map +1 -0
- package/dist/mini-drama/panel-fixer.js +319 -0
- package/dist/mini-drama/panel-fixer.js.map +1 -0
- package/dist/mini-drama/prompt-builder.d.ts +149 -0
- package/dist/mini-drama/prompt-builder.d.ts.map +1 -0
- package/dist/mini-drama/prompt-builder.js +722 -0
- package/dist/mini-drama/prompt-builder.js.map +1 -0
- package/dist/mini-drama/reference-slots.d.ts +31 -0
- package/dist/mini-drama/reference-slots.d.ts.map +1 -0
- package/dist/mini-drama/reference-slots.js +161 -0
- package/dist/mini-drama/reference-slots.js.map +1 -0
- package/dist/mini-drama/shot-paths.d.ts +77 -0
- package/dist/mini-drama/shot-paths.d.ts.map +1 -0
- package/dist/mini-drama/shot-paths.js +101 -0
- package/dist/mini-drama/shot-paths.js.map +1 -0
- package/dist/mini-drama/storyboard-reference-generator.d.ts +47 -0
- package/dist/mini-drama/storyboard-reference-generator.d.ts.map +1 -0
- package/dist/mini-drama/storyboard-reference-generator.js +293 -0
- package/dist/mini-drama/storyboard-reference-generator.js.map +1 -0
- package/dist/mini-drama/subtitle-generator.d.ts +12 -0
- package/dist/mini-drama/subtitle-generator.d.ts.map +1 -0
- package/dist/mini-drama/subtitle-generator.js +139 -0
- package/dist/mini-drama/subtitle-generator.js.map +1 -0
- package/dist/mini-drama/timeline-export/davinci-fcpxml.d.ts +3 -0
- package/dist/mini-drama/timeline-export/davinci-fcpxml.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/davinci-fcpxml.js +150 -0
- package/dist/mini-drama/timeline-export/davinci-fcpxml.js.map +1 -0
- package/dist/mini-drama/timeline-export/fcpxml.d.ts +11 -0
- package/dist/mini-drama/timeline-export/fcpxml.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/fcpxml.js +140 -0
- package/dist/mini-drama/timeline-export/fcpxml.js.map +1 -0
- package/dist/mini-drama/timeline-export/index.d.ts +13 -0
- package/dist/mini-drama/timeline-export/index.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/index.js +26 -0
- package/dist/mini-drama/timeline-export/index.js.map +1 -0
- package/dist/mini-drama/timeline-export/premiere-xmeml.d.ts +3 -0
- package/dist/mini-drama/timeline-export/premiere-xmeml.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/premiere-xmeml.js +211 -0
- package/dist/mini-drama/timeline-export/premiere-xmeml.js.map +1 -0
- package/dist/mini-drama/timeline-export/probe.d.ts +53 -0
- package/dist/mini-drama/timeline-export/probe.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/probe.js +89 -0
- package/dist/mini-drama/timeline-export/probe.js.map +1 -0
- package/dist/mini-drama/timeline-export/types.d.ts +57 -0
- package/dist/mini-drama/timeline-export/types.d.ts.map +1 -0
- package/dist/mini-drama/timeline-export/types.js +14 -0
- package/dist/mini-drama/timeline-export/types.js.map +1 -0
- package/dist/mini-drama/video-generator.d.ts +22 -0
- package/dist/mini-drama/video-generator.d.ts.map +1 -0
- package/dist/mini-drama/video-generator.js +1305 -0
- package/dist/mini-drama/video-generator.js.map +1 -0
- package/dist/mini-drama/voice-reference.d.ts +42 -0
- package/dist/mini-drama/voice-reference.d.ts.map +1 -0
- package/dist/mini-drama/voice-reference.js +170 -0
- package/dist/mini-drama/voice-reference.js.map +1 -0
- package/dist/output/html-renderer.d.ts +2 -0
- package/dist/output/html-renderer.d.ts.map +1 -0
- package/dist/output/html-renderer.js +37 -0
- package/dist/output/html-renderer.js.map +1 -0
- package/dist/parsers/fountain-parser.d.ts +34 -0
- package/dist/parsers/fountain-parser.d.ts.map +1 -0
- package/dist/parsers/fountain-parser.js +71 -0
- package/dist/parsers/fountain-parser.js.map +1 -0
- package/dist/parsers/pdf-parser.d.ts +24 -0
- package/dist/parsers/pdf-parser.d.ts.map +1 -0
- package/dist/parsers/pdf-parser.js +237 -0
- package/dist/parsers/pdf-parser.js.map +1 -0
- package/dist/parsers/scene-extractor.d.ts +41 -0
- package/dist/parsers/scene-extractor.d.ts.map +1 -0
- package/dist/parsers/scene-extractor.js +400 -0
- package/dist/parsers/scene-extractor.js.map +1 -0
- package/dist/series/manager.d.ts +64 -0
- package/dist/series/manager.d.ts.map +1 -0
- package/dist/series/manager.js +282 -0
- package/dist/series/manager.js.map +1 -0
- package/dist/series/types.d.ts +641 -0
- package/dist/series/types.d.ts.map +1 -0
- package/dist/series/types.js +304 -0
- package/dist/series/types.js.map +1 -0
- package/dist/storyboard/assembler.d.ts +134 -0
- package/dist/storyboard/assembler.d.ts.map +1 -0
- package/dist/storyboard/assembler.js +319 -0
- package/dist/storyboard/assembler.js.map +1 -0
- package/dist/storyboard/prompt-builder.d.ts +113 -0
- package/dist/storyboard/prompt-builder.d.ts.map +1 -0
- package/dist/storyboard/prompt-builder.js +578 -0
- package/dist/storyboard/prompt-builder.js.map +1 -0
- package/dist/storyboard/shot-planner.d.ts +34 -0
- package/dist/storyboard/shot-planner.d.ts.map +1 -0
- package/dist/storyboard/shot-planner.js +446 -0
- package/dist/storyboard/shot-planner.js.map +1 -0
- package/dist/user-config.d.ts +15 -0
- package/dist/user-config.d.ts.map +1 -0
- package/dist/user-config.js +103 -0
- package/dist/user-config.js.map +1 -0
- package/dist/venice/audio-preflight.d.ts +80 -0
- package/dist/venice/audio-preflight.d.ts.map +1 -0
- package/dist/venice/audio-preflight.js +142 -0
- package/dist/venice/audio-preflight.js.map +1 -0
- package/dist/venice/audio.d.ts +88 -0
- package/dist/venice/audio.d.ts.map +1 -0
- package/dist/venice/audio.js +234 -0
- package/dist/venice/audio.js.map +1 -0
- package/dist/venice/client.d.ts +86 -0
- package/dist/venice/client.d.ts.map +1 -0
- package/dist/venice/client.js +375 -0
- package/dist/venice/client.js.map +1 -0
- package/dist/venice/edit.d.ts +57 -0
- package/dist/venice/edit.d.ts.map +1 -0
- package/dist/venice/edit.js +100 -0
- package/dist/venice/edit.js.map +1 -0
- package/dist/venice/generate.d.ts +47 -0
- package/dist/venice/generate.d.ts.map +1 -0
- package/dist/venice/generate.js +150 -0
- package/dist/venice/generate.js.map +1 -0
- package/dist/venice/image-bytes.d.ts +26 -0
- package/dist/venice/image-bytes.d.ts.map +1 -0
- package/dist/venice/image-bytes.js +101 -0
- package/dist/venice/image-bytes.js.map +1 -0
- package/dist/venice/models.d.ts +143 -0
- package/dist/venice/models.d.ts.map +1 -0
- package/dist/venice/models.js +984 -0
- package/dist/venice/models.js.map +1 -0
- package/dist/venice/multi-edit.d.ts +40 -0
- package/dist/venice/multi-edit.d.ts.map +1 -0
- package/dist/venice/multi-edit.js +97 -0
- package/dist/venice/multi-edit.js.map +1 -0
- package/dist/venice/provenance.d.ts +66 -0
- package/dist/venice/provenance.d.ts.map +1 -0
- package/dist/venice/provenance.js +151 -0
- package/dist/venice/provenance.js.map +1 -0
- package/dist/venice/recipe.d.ts +69 -0
- package/dist/venice/recipe.d.ts.map +1 -0
- package/dist/venice/recipe.js +103 -0
- package/dist/venice/recipe.js.map +1 -0
- package/dist/venice/rejection.d.ts +63 -0
- package/dist/venice/rejection.d.ts.map +1 -0
- package/dist/venice/rejection.js +111 -0
- package/dist/venice/rejection.js.map +1 -0
- package/dist/venice/seedance-preflight.d.ts +38 -0
- package/dist/venice/seedance-preflight.d.ts.map +1 -0
- package/dist/venice/seedance-preflight.js +29 -0
- package/dist/venice/seedance-preflight.js.map +1 -0
- package/dist/venice/types.d.ts +212 -0
- package/dist/venice/types.d.ts.map +1 -0
- package/dist/venice/types.js +9 -0
- package/dist/venice/types.js.map +1 -0
- package/dist/venice/video.d.ts +77 -0
- package/dist/venice/video.d.ts.map +1 -0
- package/dist/venice/video.js +163 -0
- package/dist/venice/video.js.map +1 -0
- package/dist/venice/voices.d.ts +40 -0
- package/dist/venice/voices.d.ts.map +1 -0
- package/dist/venice/voices.js +194 -0
- package/dist/venice/voices.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,641 @@
|
|
|
1
|
+
import type { AestheticProfile } from '../storyboard/prompt-builder.js';
|
|
2
|
+
export interface SeriesState {
|
|
3
|
+
name: string;
|
|
4
|
+
slug: string;
|
|
5
|
+
concept: string;
|
|
6
|
+
genre: string;
|
|
7
|
+
setting: string;
|
|
8
|
+
projectType?: 'film' | 'series' | 'product-video' | 'music-video' | 'screenplay';
|
|
9
|
+
aesthetic: AestheticProfile | null;
|
|
10
|
+
aestheticSeed?: number;
|
|
11
|
+
characters: Character[];
|
|
12
|
+
/** First-class location entities with generated reference images. */
|
|
13
|
+
locations?: Location[];
|
|
14
|
+
episodes: EpisodeMeta[];
|
|
15
|
+
videoDefaults: VideoModelDefaults;
|
|
16
|
+
storyboardAspectRatio?: '16:9' | '9:16' | '1:1';
|
|
17
|
+
outputDir: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
updatedAt: string;
|
|
20
|
+
}
|
|
21
|
+
export interface VideoModelDefaults {
|
|
22
|
+
actionModel: string;
|
|
23
|
+
atmosphereModel: string;
|
|
24
|
+
characterConsistencyModel?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Paired image-generation defaults. When the video family is Seedance 2.0,
|
|
27
|
+
* Venice blocks requests that include images produced by any other family,
|
|
28
|
+
* so the image defaults must match the video family.
|
|
29
|
+
*/
|
|
30
|
+
imageDefaults?: ImageModelDefaults;
|
|
31
|
+
/**
|
|
32
|
+
* Strategy when an incompatible (non-seedream) image is about to be sent
|
|
33
|
+
* to a Seedance model. Defaults to `prompt` in interactive shells and
|
|
34
|
+
* `fallback` in non-TTY environments.
|
|
35
|
+
*/
|
|
36
|
+
seedanceCompatibility?: SeedanceCompatibilityMode;
|
|
37
|
+
/**
|
|
38
|
+
* Default lip-sync model for dialogue shots whose character is a
|
|
39
|
+
* non-narrator with a visible face. Defaults to `wan-2-7-image-to-video`.
|
|
40
|
+
* The planner only routes to this model when `shot.motion !== 'high'`;
|
|
41
|
+
* high-motion dialogue stays on the R2V model for identity preservation.
|
|
42
|
+
*/
|
|
43
|
+
lipSyncModel?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Auto-keyframe Wan 2.7 i2v from a Seedance R2V render instead of the
|
|
46
|
+
* panel image. Wan 2.7 has no `reference_image_urls` capability; its
|
|
47
|
+
* only identity anchor is the single `image_url` keyframe. A panel-derived
|
|
48
|
+
* keyframe drifts mid-clip because the panel was generated without strong
|
|
49
|
+
* character anchoring. When this flag is true (the default), every shot
|
|
50
|
+
* routed to the lip-sync model first renders a quick Seedance R2V pass
|
|
51
|
+
* (no audio, all character refs), extracts frame 1, and uses that frame
|
|
52
|
+
* as the Wan 2.7 keyframe — locking identity from frame 0 + adding
|
|
53
|
+
* lip-sync from the dialogue MP3. Doubles per-shot cost (~$0.85 total).
|
|
54
|
+
* Skip per-shot with `ShotScript.disableSeedanceKeyframe = true`.
|
|
55
|
+
*
|
|
56
|
+
* See AGENTS.md rule 32 for the underlying motivation.
|
|
57
|
+
*/
|
|
58
|
+
seedanceKeyframeForWan?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Operator's answer to "lip-sync mode or native model voices?" from the
|
|
61
|
+
* upfront questionnaire. See AudioStrategy for semantics. When unset, the
|
|
62
|
+
* harness uses the per-call defaults (effectively 'native'). Setting this
|
|
63
|
+
* at series-creation time eliminates the double-narration / mouth-out-of-
|
|
64
|
+
* sync class of bugs we hit during the PNW field-guide episode.
|
|
65
|
+
*/
|
|
66
|
+
audioStrategy?: AudioStrategy;
|
|
67
|
+
/**
|
|
68
|
+
* Operator's answer to "which video model family?" from the upfront
|
|
69
|
+
* questionnaire. See VideoFamilyPreference. `auto` (or unset) keeps the
|
|
70
|
+
* harness's Seedance 2.0 defaults. Setting this swaps the action /
|
|
71
|
+
* atmosphere / character-consistency model defaults to the chosen family.
|
|
72
|
+
*/
|
|
73
|
+
videoFamilyPreference?: VideoFamilyPreference;
|
|
74
|
+
/**
|
|
75
|
+
* Auto-generate + attach a per-character voice-donor reference clip
|
|
76
|
+
* (`reference_audio_urls`, bound in-prompt as @AudioN) on dialogue shots
|
|
77
|
+
* that route to a reference-audio-capable model (Seedance 2.0 R2V family,
|
|
78
|
+
* HappyHorse 1.1 R2V). The clip locks the character's voice — timbre,
|
|
79
|
+
* accent, pacing — across shots so the native model dialogue doesn't drift
|
|
80
|
+
* take to take. Defaults to `true`. Set `false` to disable series-wide;
|
|
81
|
+
* `generate-videos --no-voice-reference` disables for one run. See
|
|
82
|
+
* AGENTS.md rule 40.
|
|
83
|
+
*/
|
|
84
|
+
voiceReferenceForDialogue?: boolean;
|
|
85
|
+
}
|
|
86
|
+
export interface ImageModelDefaults {
|
|
87
|
+
/** Image generation model (t2i) — e.g. `seedream-v5-lite`, `nano-banana-pro`. */
|
|
88
|
+
generationModel: string;
|
|
89
|
+
/** Multi-edit model — e.g. `seedream-v5-lite-edit`, `nano-banana-pro-edit`. */
|
|
90
|
+
editModel: string;
|
|
91
|
+
/**
|
|
92
|
+
* Strategy for the negative-prompt builder when constructing character
|
|
93
|
+
* reference images and panels:
|
|
94
|
+
* - 'auto' — (default) infer from the series aesthetic. Aesthetics
|
|
95
|
+
* mentioning "photoreal", "photograph", "documentary",
|
|
96
|
+
* "photo", "live action", "cinematic photography" suppress
|
|
97
|
+
* the anti-photoreal guards; everything else keeps them.
|
|
98
|
+
* - 'stylized' — always inject anti-photoreal guards (photorealistic,
|
|
99
|
+
* photograph, photo, 3D render, Pixar). Legacy behaviour.
|
|
100
|
+
* - 'photoreal'— never inject anti-photoreal guards; keep only structural
|
|
101
|
+
* guards (deformed, watermark, text, etc.).
|
|
102
|
+
* - 'none' — emit an empty negative prompt; trust positives only.
|
|
103
|
+
* Useful for paths that have already hand-tuned a negative
|
|
104
|
+
* via `negativePromptOverride`.
|
|
105
|
+
*/
|
|
106
|
+
negativePromptStrategy?: 'auto' | 'stylized' | 'photoreal' | 'none';
|
|
107
|
+
}
|
|
108
|
+
export type SeedanceCompatibilityMode = 'prompt' | 'fallback' | 'launder';
|
|
109
|
+
/**
|
|
110
|
+
* How dialogue reaches the final mix.
|
|
111
|
+
*
|
|
112
|
+
* - 'native' — the video model speaks the dialogue in-frame. Best when
|
|
113
|
+
* characters speak only once or twice, the model's voice
|
|
114
|
+
* range suffices, and you don't need precise control.
|
|
115
|
+
* `assemble-episode` keeps `dialogueReplace: false`.
|
|
116
|
+
* - 'lip-sync' — Venice TTS renders each dialogue line, Wan 2.7 i2v
|
|
117
|
+
* lip-syncs the character's mouth to the audio. Best when
|
|
118
|
+
* a character speaks many times (so a single voice picks
|
|
119
|
+
* up across the episode), the user wants accent control,
|
|
120
|
+
* or the dialogue needs deterministic delivery.
|
|
121
|
+
* The planner routes face-visible low/medium-motion
|
|
122
|
+
* dialogue shots to `videoDefaults.lipSyncModel`.
|
|
123
|
+
* `assemble-episode` defaults `dialogueReplace: true`.
|
|
124
|
+
* - 'narrator-vo' — the speaker is a NARRATOR / voice-over only (no on-camera
|
|
125
|
+
* speaking mouth). Every dialogue-bearing shot is queued
|
|
126
|
+
* with `audio: false` so Seedance can't synthesize a
|
|
127
|
+
* competing narrator; Venice TTS owns the dialogue lane.
|
|
128
|
+
* `assemble-episode` defaults `dialogueReplace: true` and
|
|
129
|
+
* `nativeVolume: 0`. Sets `audioMix.suppressModelNarration: true`.
|
|
130
|
+
*/
|
|
131
|
+
export type AudioStrategy = 'native' | 'lip-sync' | 'narrator-vo';
|
|
132
|
+
/**
|
|
133
|
+
* Operator's preferred video model family for action / atmosphere shots.
|
|
134
|
+
* `auto` keeps the current defaults (Seedance 2.0). Picking a family swaps
|
|
135
|
+
* `actionModel`, `atmosphereModel`, and `characterConsistencyModel` to that
|
|
136
|
+
* family's i2v / R2V variants. `lipSyncModel` stays on Wan 2.7 regardless —
|
|
137
|
+
* it's the only Venice model with proper lip-sync today.
|
|
138
|
+
*
|
|
139
|
+
* Family quick reference:
|
|
140
|
+
* - 'seedance' — Seedance 2.0 (default). Strong R2V identity anchoring,
|
|
141
|
+
* 4-15s native durations, mature `audio: true` support,
|
|
142
|
+
* strict provenance requirements (seedream face refs only).
|
|
143
|
+
* - 'happyhorse' — HappyHorse 1.1 (Alibaba, #1 blind-preference T2V + I2V).
|
|
144
|
+
* Joint single-pass video+audio, phoneme-level lip-sync in
|
|
145
|
+
* 7 languages, and R2V with up to 9 reference images. 3-15s
|
|
146
|
+
* natives, 720p/1080p. Best for talking characters and
|
|
147
|
+
* multilingual localization; SFW/commercial-leaning (for
|
|
148
|
+
* mature work prefer Seedance 2.0 or Wan 2.7). The 1.0 IDs
|
|
149
|
+
* remain in the registry for back-compat.
|
|
150
|
+
* - 'grok-imagine' — Grok Imagine i2v + R2V (R2V durations stepped at
|
|
151
|
+
* 5s/8s/10s only). Pick for atmosphere-rich shots or
|
|
152
|
+
* when the user wants Grok's signature look.
|
|
153
|
+
* - 'kling-o3' — Kling O3 Standard / Pro / 4K. Best for stylized /
|
|
154
|
+
* illustrated aesthetics. Accepts non-seedream images.
|
|
155
|
+
*/
|
|
156
|
+
export type VideoFamilyPreference = 'auto' | 'seedance' | 'happyhorse' | 'grok-imagine' | 'kling-o3';
|
|
157
|
+
/**
|
|
158
|
+
* Returns the model-id triplet for a given preferred family. Used by
|
|
159
|
+
* `createSeries` to populate `actionModel` / `atmosphereModel` /
|
|
160
|
+
* `characterConsistencyModel` from the operator's questionnaire answer.
|
|
161
|
+
*
|
|
162
|
+
* `lipSyncModel` is intentionally NOT included — Wan 2.7 i2v is the only
|
|
163
|
+
* Venice lip-sync option today; callers should keep it at the default
|
|
164
|
+
* regardless of family.
|
|
165
|
+
*/
|
|
166
|
+
export declare function resolveVideoFamilyDefaults(family: VideoFamilyPreference): {
|
|
167
|
+
actionModel: string;
|
|
168
|
+
atmosphereModel: string;
|
|
169
|
+
characterConsistencyModel: string;
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Recommended `seedanceCompatibility` mode given an image-generation model.
|
|
173
|
+
* Used by `saveSeries` to auto-fill the field when the operator hasn't
|
|
174
|
+
* explicitly set it. The table is intentionally conservative: models known
|
|
175
|
+
* to produce face-bearing images Seedance will accept get `prompt` (run a
|
|
176
|
+
* fast preflight, but expect success); known-bad pairings get `fallback`
|
|
177
|
+
* (auto-switch to a Kling fallback); unknowns get `launder` (rewrite the
|
|
178
|
+
* image through Seedream before sending to Seedance).
|
|
179
|
+
*/
|
|
180
|
+
export declare const SEEDANCE_COMPATIBILITY_BY_IMAGE_MODEL: Record<string, SeedanceCompatibilityMode>;
|
|
181
|
+
export declare function recommendedSeedanceCompatibility(generationModel: string | undefined): SeedanceCompatibilityMode | undefined;
|
|
182
|
+
export interface Character {
|
|
183
|
+
name: string;
|
|
184
|
+
gender: 'male' | 'female' | 'other';
|
|
185
|
+
age: string;
|
|
186
|
+
description: string;
|
|
187
|
+
fullDescription: string;
|
|
188
|
+
wardrobe: string;
|
|
189
|
+
voiceDescription: string;
|
|
190
|
+
voiceId?: string;
|
|
191
|
+
voiceName?: string;
|
|
192
|
+
baseTraits?: string;
|
|
193
|
+
/**
|
|
194
|
+
* Path (relative to the series output dir or absolute) to a short
|
|
195
|
+
* voice-donor clip used as a `reference_audio_urls` entry (bound in-prompt
|
|
196
|
+
* as @AudioN) so the character's voice — timbre, accent, pacing — stays
|
|
197
|
+
* consistent across shots on reference-audio-capable video models
|
|
198
|
+
* (Seedance 2.0 R2V family, HappyHorse 1.1 R2V). Generated via
|
|
199
|
+
* `generate-voice-reference` (default source: seed-audio-1-0 from
|
|
200
|
+
* `voiceDescription`) or supplied by the operator via
|
|
201
|
+
* `lock-character --voice-reference`. Convention:
|
|
202
|
+
* `characters/<slug>/voice-reference.mp3`. See AGENTS.md rule 40.
|
|
203
|
+
*/
|
|
204
|
+
voiceReferencePath?: string;
|
|
205
|
+
/** Model that produced the voice reference (e.g. `seed-audio-1-0`), or `user-supplied`. */
|
|
206
|
+
voiceReferenceModel?: string;
|
|
207
|
+
locked: boolean;
|
|
208
|
+
seed: number;
|
|
209
|
+
}
|
|
210
|
+
export interface Location {
|
|
211
|
+
/** Display name, e.g. "Sietch Workshop". */
|
|
212
|
+
name: string;
|
|
213
|
+
/** Filesystem-safe slug; also the directory name under locations/. */
|
|
214
|
+
slug: string;
|
|
215
|
+
/** Locked prose description of the environment (drives panel + ref prompts). */
|
|
216
|
+
description: string;
|
|
217
|
+
/**
|
|
218
|
+
* Lighting notes carried into every panel prompt for this location so
|
|
219
|
+
* consecutive shots in the same place stay lit consistently (anti-pattern 7).
|
|
220
|
+
*/
|
|
221
|
+
lightingNotes?: string;
|
|
222
|
+
/**
|
|
223
|
+
* Optional time-of-day / weather variants keyed by label
|
|
224
|
+
* (e.g. { "night": "…", "dawn": "…" }). Reserved for future per-shot
|
|
225
|
+
* variant selection; the base `description` is used when unset.
|
|
226
|
+
*/
|
|
227
|
+
timeVariants?: Record<string, string>;
|
|
228
|
+
/** Deterministic seed so the reference angles stay reproducible. */
|
|
229
|
+
seed: number;
|
|
230
|
+
/** Image-generation model used for the reference angles (default nano-banana-pro). */
|
|
231
|
+
referenceModel?: string;
|
|
232
|
+
}
|
|
233
|
+
export interface StoryboardReference {
|
|
234
|
+
/** Filesystem-safe slug; also the file stem under storyboards/<episode>/. */
|
|
235
|
+
slug: string;
|
|
236
|
+
/** Prose description of the moment: who is where, doing what, with what. */
|
|
237
|
+
description: string;
|
|
238
|
+
/** Character names composed into the plate (drives face refs at gen time). */
|
|
239
|
+
characters: string[];
|
|
240
|
+
/** Location slug the moment takes place in (drives the env ref at gen time). */
|
|
241
|
+
location?: string;
|
|
242
|
+
/** Episode this beat belongs to. */
|
|
243
|
+
episode: number;
|
|
244
|
+
/** Shot numbers (or suffixed ids like "3b") this plate anchors. */
|
|
245
|
+
shotIds: Array<number | string>;
|
|
246
|
+
/** Deterministic seed for reproducible regeneration. */
|
|
247
|
+
seed: number;
|
|
248
|
+
/** Image model used to compose the plate. */
|
|
249
|
+
referenceModel?: string;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* @deprecated Use Character instead. Kept for backward compatibility.
|
|
253
|
+
*/
|
|
254
|
+
export type MiniDramaCharacter = Character;
|
|
255
|
+
export interface EpisodeMeta {
|
|
256
|
+
number: number;
|
|
257
|
+
title: string;
|
|
258
|
+
status: 'draft' | 'scripted' | 'storyboarded' | 'produced' | 'assembled';
|
|
259
|
+
}
|
|
260
|
+
export interface EpisodeScript {
|
|
261
|
+
episode: number;
|
|
262
|
+
title: string;
|
|
263
|
+
seriesName: string;
|
|
264
|
+
totalDuration: string;
|
|
265
|
+
status?: 'draft' | 'approved';
|
|
266
|
+
shots: ShotScript[];
|
|
267
|
+
/**
|
|
268
|
+
* First-class locations introduced by this episode's script (from
|
|
269
|
+
* workshop-episode). Merged into SeriesState.locations on save so their
|
|
270
|
+
* reference images can be generated once and reused across shots/episodes.
|
|
271
|
+
*/
|
|
272
|
+
locations?: Location[];
|
|
273
|
+
/**
|
|
274
|
+
* Composed storyboard blocking plates for this episode's key beats
|
|
275
|
+
* (see StoryboardReference). Planned during workshop/storyboard, generated
|
|
276
|
+
* per beat, and referenced by shots via ShotScript.storyboardRef.
|
|
277
|
+
*/
|
|
278
|
+
storyboardRefs?: StoryboardReference[];
|
|
279
|
+
/**
|
|
280
|
+
* Optional per-act music cues. When set, the assembler renders each cue
|
|
281
|
+
* and ffmpeg-crossfades between adjacent cues at their fade points. The
|
|
282
|
+
* single static music-bed path on the assembler options is kept for
|
|
283
|
+
* back-compat — when both are present, cues win.
|
|
284
|
+
*/
|
|
285
|
+
musicCues?: MusicCueSpec[];
|
|
286
|
+
/**
|
|
287
|
+
* Audio-mix defaults for this episode. Overrides the assembler's built-in
|
|
288
|
+
* defaults. Optional — sensible -16 LUFS targeting is applied when omitted.
|
|
289
|
+
*/
|
|
290
|
+
audioMix?: AudioMixDefaults;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Per-act music cue. References shot ids by **string** so that suffixed
|
|
294
|
+
* inserts like "3b" / "3c" can be addressed without coercion bugs. The
|
|
295
|
+
* assembler converts shot-id → start/end seconds via the placementMap
|
|
296
|
+
* built during segment iteration.
|
|
297
|
+
*/
|
|
298
|
+
export interface MusicCueSpec {
|
|
299
|
+
/**
|
|
300
|
+
* Shot id at which this cue starts. Numeric shot numbers (e.g. `6`) or
|
|
301
|
+
* the suffixed string form (`"3b"`) are both accepted; the assembler
|
|
302
|
+
* normalizes via the same path builder it uses for dialogue placement.
|
|
303
|
+
*/
|
|
304
|
+
startShot: number | string;
|
|
305
|
+
/** Shot id at which this cue ends (inclusive). */
|
|
306
|
+
endShot: number | string;
|
|
307
|
+
/** Prompt for the music generation model. */
|
|
308
|
+
prompt: string;
|
|
309
|
+
/** Music model id. Defaults to `elevenlabs-music`. */
|
|
310
|
+
model?: string;
|
|
311
|
+
/** Output gain in dB. Defaults to -22. */
|
|
312
|
+
gain?: number;
|
|
313
|
+
/**
|
|
314
|
+
* Optional time-varying gain stops for a single cue. Each stop says "by the
|
|
315
|
+
* time we reach shot `atShot`, ramp gain to `gainDb`." Stops are ramped with
|
|
316
|
+
* a smooth volume crossfade `rampSec` seconds long (default 2.0). Stops
|
|
317
|
+
* outside the cue's [startShot, endShot] window are ignored. When supplied,
|
|
318
|
+
* this layers on top of the base `gain`.
|
|
319
|
+
*
|
|
320
|
+
* Example: "drop -20% by the time of the florida porch shot"
|
|
321
|
+
* { startShot: 1, endShot: 10, gain: -22,
|
|
322
|
+
* gainStops: [{ atShot: 7, gainDb: -24, rampSec: 3 }] }
|
|
323
|
+
*/
|
|
324
|
+
gainStops?: Array<{
|
|
325
|
+
atShot: number | string;
|
|
326
|
+
gainDb: number;
|
|
327
|
+
rampSec?: number;
|
|
328
|
+
}>;
|
|
329
|
+
/** Fade-in in seconds. Defaults to 1.0. */
|
|
330
|
+
fadeIn?: number;
|
|
331
|
+
/** Fade-out in seconds. Defaults to 1.5. */
|
|
332
|
+
fadeOut?: number;
|
|
333
|
+
/**
|
|
334
|
+
* How this music cue behaves over the underlying score:
|
|
335
|
+
* - 'sustain' — flat bed (default)
|
|
336
|
+
* - 'swell' — ramp +4 dB across the cue
|
|
337
|
+
* - 'drop' — duck to -inf for the cue's range
|
|
338
|
+
* - 'stinger' — 0.4s pulse +6 dB then return to bed
|
|
339
|
+
* Per-shot `shot.musicHold` automation is layered on top of this.
|
|
340
|
+
*/
|
|
341
|
+
musicHold?: 'sustain' | 'swell' | 'drop' | 'stinger';
|
|
342
|
+
/**
|
|
343
|
+
* Optional pre-rendered audio file. When set, the assembler skips the
|
|
344
|
+
* generation step and uses this directly. Useful for music beds that
|
|
345
|
+
* were rendered by other harnesses or hand-edited.
|
|
346
|
+
*/
|
|
347
|
+
audioPath?: string;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Episode-level audio-mix defaults.
|
|
351
|
+
*/
|
|
352
|
+
export interface AudioMixDefaults {
|
|
353
|
+
/** Cap any SFX clip to this many seconds. Defaults to 2.0. */
|
|
354
|
+
sfxMaxDurationSec?: number;
|
|
355
|
+
/** Fade-out applied after the SFX trim. Defaults to 0.3. */
|
|
356
|
+
sfxFadeOutSec?: number;
|
|
357
|
+
/** Dialogue track gain in dB. Defaults to 0. */
|
|
358
|
+
dialogueGainDb?: number;
|
|
359
|
+
/** Music bed gain in dB. Defaults to -22. */
|
|
360
|
+
musicGainDb?: number;
|
|
361
|
+
/** SFX track gain in dB. Defaults to -16. */
|
|
362
|
+
sfxGainDb?: number;
|
|
363
|
+
/** Final-pass integrated loudness target. Defaults to -16 LUFS. */
|
|
364
|
+
lufsTarget?: number;
|
|
365
|
+
/** Final-pass true peak target. Defaults to -1 dBTP. */
|
|
366
|
+
truePeakDb?: number;
|
|
367
|
+
/**
|
|
368
|
+
* When true, every shot that has dialogue is queued at Seedance / Wan with
|
|
369
|
+
* `audio: false` so the model doesn't synthesize its own narrator on top of
|
|
370
|
+
* the Venice TTS that will be mixed in by the assembler. Strongly recommended
|
|
371
|
+
* whenever the script's primary speaker is `NARRATOR` — Seedance i2v with
|
|
372
|
+
* `audio: true` will eagerly generate a competing English narration track
|
|
373
|
+
* when the prompt contains "narrator" / "documentary" / "naturalist". When
|
|
374
|
+
* unset, the buildVideoPrompt heuristic forces `audio: false` for NARRATOR
|
|
375
|
+
* shots anyway (since there's nothing on-camera to lip-sync to).
|
|
376
|
+
*/
|
|
377
|
+
suppressModelNarration?: boolean;
|
|
378
|
+
}
|
|
379
|
+
export type ShotEnvironment = 'DAY_INTERIOR' | 'DAY_EXTERIOR' | 'NIGHT_INTERIOR' | 'NIGHT_EXTERIOR';
|
|
380
|
+
export declare const DAYTIME_ENVIRONMENTS: Set<ShotEnvironment>;
|
|
381
|
+
export declare const INTERIOR_ENVIRONMENTS: Set<ShotEnvironment>;
|
|
382
|
+
export interface ShotScript {
|
|
383
|
+
shotNumber: number;
|
|
384
|
+
type: 'establishing' | 'dialogue' | 'action' | 'reaction' | 'insert' | 'close-up';
|
|
385
|
+
duration: string;
|
|
386
|
+
videoModel: 'action' | 'atmosphere';
|
|
387
|
+
environment?: ShotEnvironment;
|
|
388
|
+
description: string;
|
|
389
|
+
panelDescription?: string;
|
|
390
|
+
characters: string[];
|
|
391
|
+
/**
|
|
392
|
+
* Characters visible as silhouettes/distant figures but not requiring R2V
|
|
393
|
+
* identity anchoring. Included in panel prompts but don't trigger R2V routing.
|
|
394
|
+
* Example: a silhouetted figure in a doorway for an establishing shot.
|
|
395
|
+
*/
|
|
396
|
+
silhouetteCharacters?: string[];
|
|
397
|
+
/**
|
|
398
|
+
* Slug of the Location this shot takes place in (see SeriesState.locations).
|
|
399
|
+
* When set and the location has generated reference images, the storyboard
|
|
400
|
+
* folds the location's wide/medium ref into the panel generation and the
|
|
401
|
+
* video generator folds it into scene_image_urls (Kling O3 R2V) or
|
|
402
|
+
* reference_image_urls + an @ImageN env tag (Seedance / HappyHorse).
|
|
403
|
+
*/
|
|
404
|
+
location?: string;
|
|
405
|
+
/**
|
|
406
|
+
* Slug of the StoryboardReference (composed blocking plate) for this shot's
|
|
407
|
+
* scene beat. When set and the plate exists on disk, the video generator
|
|
408
|
+
* appends it to reference_image_urls with an @ImageN blocking role clause —
|
|
409
|
+
* PROTECTED in the budget allocator (dropped last, after extra character
|
|
410
|
+
* angles and extra location angles). Set by the beat planner during
|
|
411
|
+
* storyboarding or by hand.
|
|
412
|
+
*/
|
|
413
|
+
storyboardRef?: string;
|
|
414
|
+
dialogue: {
|
|
415
|
+
character: string;
|
|
416
|
+
line: string;
|
|
417
|
+
delivery?: string;
|
|
418
|
+
} | null;
|
|
419
|
+
sfx: string | null;
|
|
420
|
+
cameraMovement: string;
|
|
421
|
+
transition: string;
|
|
422
|
+
trimStart?: number;
|
|
423
|
+
trimEnd?: number;
|
|
424
|
+
flip?: boolean;
|
|
425
|
+
allowMultiShot?: boolean;
|
|
426
|
+
mustStaySingle?: boolean;
|
|
427
|
+
continuityPriority?: 'identity' | 'continuity' | 'balanced';
|
|
428
|
+
/**
|
|
429
|
+
* Per-shot motion intensity. Drives planner routing between:
|
|
430
|
+
* - Wan 2.7 i2v (lip-sync) for low/medium-motion dialogue shots, and
|
|
431
|
+
* - Seedance R2V (identity preservation, no lip-sync) for high motion.
|
|
432
|
+
*
|
|
433
|
+
* Defaults to `'medium'` when unset. Camera prompt suggestions:
|
|
434
|
+
* - 'low' -> slow push-in, subtle parallax, still hold
|
|
435
|
+
* - 'medium' -> gentle tracking, lateral pan
|
|
436
|
+
* - 'high' -> tracking action, dynamic camera, whip pan
|
|
437
|
+
*/
|
|
438
|
+
motion?: 'low' | 'medium' | 'high';
|
|
439
|
+
/**
|
|
440
|
+
* Whether the character's face is visible in the shot. Used by the
|
|
441
|
+
* planner to decide if lip-sync makes sense. When false, dialogue-bearing
|
|
442
|
+
* shots can stay on Seedance because there's no mouth to animate.
|
|
443
|
+
*/
|
|
444
|
+
faceVisible?: boolean;
|
|
445
|
+
titleOverlay?: {
|
|
446
|
+
text: string;
|
|
447
|
+
fadeInSec?: number;
|
|
448
|
+
holdSec?: number;
|
|
449
|
+
};
|
|
450
|
+
episodeWardrobe?: Record<string, string>;
|
|
451
|
+
skipRefine?: boolean;
|
|
452
|
+
useElements?: boolean;
|
|
453
|
+
useReferenceImages?: boolean;
|
|
454
|
+
sceneImagePaths?: string[];
|
|
455
|
+
/** Describes what the scene reference image should visually contribute (used in Pass 3 multi-edit). */
|
|
456
|
+
sceneRefDescription?: string;
|
|
457
|
+
/** Negative prompt appended during video generation for this shot. */
|
|
458
|
+
negativePrompt?: string;
|
|
459
|
+
/** Audio URL to use as background audio input for models that support it. */
|
|
460
|
+
audioUrl?: string;
|
|
461
|
+
/** Video URL to use as reference input for models that support it. */
|
|
462
|
+
videoUrl?: string;
|
|
463
|
+
/**
|
|
464
|
+
* When true, skip the automatic Seedance R2V → Wan 2.7 keyframe pipeline
|
|
465
|
+
* for this shot even if it routes to the lip-sync model. Use when you
|
|
466
|
+
* have a specific reason to prefer the panel as the Wan 2.7 keyframe
|
|
467
|
+
* (e.g. you've manually retouched the panel for this shot). Default
|
|
468
|
+
* undefined → the series-level `videoDefaults.seedanceKeyframeForWan`
|
|
469
|
+
* (default `true`) decides.
|
|
470
|
+
*/
|
|
471
|
+
disableSeedanceKeyframe?: boolean;
|
|
472
|
+
/**
|
|
473
|
+
* Per-shot music-cue automation. Layered on top of the containing
|
|
474
|
+
* `MusicCueSpec.musicHold`. Set when a story beat (reveal, lightbulb
|
|
475
|
+
* moment, drop) needs audio emphasis at this shot.
|
|
476
|
+
*/
|
|
477
|
+
musicHold?: 'sustain' | 'swell' | 'drop' | 'stinger';
|
|
478
|
+
/**
|
|
479
|
+
* How the assembler should treat the video model's native (Seedance / Wan)
|
|
480
|
+
* audio track during dialogue replacement:
|
|
481
|
+
* - 'mute' — multiply native by 0 (silenced; only Venice TTS audible)
|
|
482
|
+
* - 'duck' — multiply native by 0.2 (legacy default; keeps ambient bed)
|
|
483
|
+
* - 'keep' — multiply native by 1.0 (no ducking; competes with TTS)
|
|
484
|
+
* Per-shot value wins over the CLI's `--native-volume`. Use when one shot
|
|
485
|
+
* has genuine ambient (paper rustle, room tone) you want to preserve while
|
|
486
|
+
* the rest of the episode mutes a competing AI narrator.
|
|
487
|
+
*/
|
|
488
|
+
nativeAudio?: 'mute' | 'duck' | 'keep';
|
|
489
|
+
/**
|
|
490
|
+
* Optional suffix letter for inserted shots. When set, the canonical
|
|
491
|
+
* shot id becomes `shotNumber + shotIdSuffix` — for example, shotNumber 3
|
|
492
|
+
* with shotIdSuffix "b" → "3b" → key "003b". Inserted shots use this so
|
|
493
|
+
* the order of the original shotNumbers is preserved.
|
|
494
|
+
*/
|
|
495
|
+
shotIdSuffix?: string;
|
|
496
|
+
}
|
|
497
|
+
export type GenerationUnitType = 'single' | 'kling-multishot';
|
|
498
|
+
export type StartFrameStrategy = 'panel' | 'previous-last-frame';
|
|
499
|
+
export type EndFrameStrategy = 'natural' | 'next-panel-target';
|
|
500
|
+
export interface GenerationUnitSegment {
|
|
501
|
+
shotNumber: number;
|
|
502
|
+
startOffsetSec: number;
|
|
503
|
+
durationSec: number;
|
|
504
|
+
outputFile: string;
|
|
505
|
+
}
|
|
506
|
+
export interface GenerationUnit {
|
|
507
|
+
unitId: string;
|
|
508
|
+
unitType: GenerationUnitType;
|
|
509
|
+
shotNumbers: number[];
|
|
510
|
+
outputFile: string;
|
|
511
|
+
model: string;
|
|
512
|
+
duration: string;
|
|
513
|
+
startFrameStrategy: StartFrameStrategy;
|
|
514
|
+
endFrameStrategy: EndFrameStrategy;
|
|
515
|
+
decisionReasons: string[];
|
|
516
|
+
fallbackToSingles: boolean;
|
|
517
|
+
renderedDurationSec?: number;
|
|
518
|
+
segments?: GenerationUnitSegment[];
|
|
519
|
+
/**
|
|
520
|
+
* When true, render the keyframe via Seedance R2V first and use it as the
|
|
521
|
+
* Wan 2.7 `image_url`. Set by the planner when the unit routes to the
|
|
522
|
+
* lip-sync model on a single-character dialogue shot. See AGENTS.md
|
|
523
|
+
* rule 32.
|
|
524
|
+
*/
|
|
525
|
+
useSeedanceKeyframe?: boolean;
|
|
526
|
+
/** Model used for the Seedance keyframe stage when `useSeedanceKeyframe`. */
|
|
527
|
+
keyframeModel?: string;
|
|
528
|
+
}
|
|
529
|
+
export interface GenerationPlan {
|
|
530
|
+
episode: number;
|
|
531
|
+
generatedAt: string;
|
|
532
|
+
units: GenerationUnit[];
|
|
533
|
+
}
|
|
534
|
+
export declare const DEFAULT_ACTION_MODEL = "seedance-2-0-enhanced-reference-to-video";
|
|
535
|
+
export declare const DEFAULT_ATMOSPHERE_MODEL = "seedance-2-0-enhanced-reference-to-video";
|
|
536
|
+
export declare const DEFAULT_CHARACTER_CONSISTENCY_MODEL = "seedance-2-0-enhanced-reference-to-video";
|
|
537
|
+
export declare const KLING_R2V_MODEL = "kling-o3-standard-reference-to-video";
|
|
538
|
+
export declare const KLING_MULTISHOT_MODEL = "kling-o3-pro-image-to-video";
|
|
539
|
+
/**
|
|
540
|
+
* Default lip-sync model. Used by the planner for dialogue shots whose
|
|
541
|
+
* character is a non-narrator with a visible face and motion !== 'high'.
|
|
542
|
+
* Wan 2.7 i2v inherits the aspect ratio from the input image and
|
|
543
|
+
* synthesizes lip-sync from `audio_url`. R2V dialogue (high motion or
|
|
544
|
+
* multi-speaker) stays on Seedance for identity preservation.
|
|
545
|
+
*/
|
|
546
|
+
export declare const DEFAULT_LIP_SYNC_MODEL = "wan-2-7-image-to-video";
|
|
547
|
+
/**
|
|
548
|
+
* Default image models for ALL panels — character-bearing and faceless alike.
|
|
549
|
+
*
|
|
550
|
+
* Historical note: Seedance 2.0 used to reject face-bearing input images that
|
|
551
|
+
* weren't produced by `seedream-v5-lite`, so the harness forced seedream on any
|
|
552
|
+
* panel with a character. **Venice removed that cross-family restriction (2026-07)**
|
|
553
|
+
* — Seedance now accepts face-bearing images from any image family — so a single
|
|
554
|
+
* high-quality default is used everywhere. `nano-banana-2` is the global default.
|
|
555
|
+
*/
|
|
556
|
+
export declare const DEFAULT_IMAGE_GENERATION_MODEL = "nano-banana-2";
|
|
557
|
+
export declare const DEFAULT_IMAGE_EDIT_MODEL = "nano-banana-2-edit";
|
|
558
|
+
/**
|
|
559
|
+
* @deprecated Venice removed the Seedance seedream-only face restriction (2026-07).
|
|
560
|
+
* These constants are retained only for backward-compatible imports; the harness
|
|
561
|
+
* no longer forces seedream on face-bearing panels. Use
|
|
562
|
+
* `DEFAULT_IMAGE_GENERATION_MODEL` / `DEFAULT_IMAGE_EDIT_MODEL` instead.
|
|
563
|
+
*/
|
|
564
|
+
export declare const SEEDANCE_FACE_GENERATION_MODEL = "seedream-v5-lite";
|
|
565
|
+
export declare const SEEDANCE_FACE_EDIT_MODEL = "seedream-v5-lite-edit";
|
|
566
|
+
/**
|
|
567
|
+
* @deprecated Venice removed the Seedance face-image family restriction (2026-07).
|
|
568
|
+
* Seedance now accepts face-bearing images from any image family; these sets are
|
|
569
|
+
* kept only so older imports keep compiling.
|
|
570
|
+
*/
|
|
571
|
+
export declare const SEEDANCE_COMPATIBLE_GENERATION_MODELS: Set<string>;
|
|
572
|
+
export declare const SEEDANCE_COMPATIBLE_EDIT_MODELS: Set<string>;
|
|
573
|
+
/** True when the model id belongs to the Seedance 2.0 family. */
|
|
574
|
+
export declare function isSeedanceVideoModel(modelId: string): boolean;
|
|
575
|
+
/**
|
|
576
|
+
* Atmosphere/i2v fallback when the user is on a Seedance default but the
|
|
577
|
+
* images in the request are not Seedance-compatible (or the user is in a
|
|
578
|
+
* region where Seedance is unavailable).
|
|
579
|
+
*/
|
|
580
|
+
export declare const SEEDANCE_FALLBACK_ATMOSPHERE_MODEL = "veo3.1-fast-image-to-video";
|
|
581
|
+
export declare const SEEDANCE_FALLBACK_R2V_MODEL = "kling-o3-standard-reference-to-video";
|
|
582
|
+
export declare const VIDEO_NO_MUSIC_SUFFIX = "No background music. Only generate dialogue, ambient sound, and sound effects.";
|
|
583
|
+
export declare const MODELS_SUPPORTING_ELEMENTS: Set<string>;
|
|
584
|
+
export declare const MODELS_SUPPORTING_REFERENCE_IMAGES: Set<string>;
|
|
585
|
+
export declare const MODELS_SUPPORTING_SCENE_IMAGES: Set<string>;
|
|
586
|
+
export declare const MODELS_SUPPORTING_END_IMAGE: Set<string>;
|
|
587
|
+
export declare const MODELS_USING_IMAGE_TAGS: Set<string>;
|
|
588
|
+
export declare const MODELS_SUPPORTING_AUDIO_INPUT: Set<string>;
|
|
589
|
+
/**
|
|
590
|
+
* Models that accept per-reference `audio_url` inside `elements[]`.
|
|
591
|
+
*
|
|
592
|
+
* Wan 2.7 R2V is the only one today. Each `elements[].audio_url` drives a
|
|
593
|
+
* different speaker's lip-sync inside a single render — useful for
|
|
594
|
+
* multi-character speaking scenes. NOT interchangeable with the global
|
|
595
|
+
* `audio_url` field used by the i2v / t2v variants.
|
|
596
|
+
*/
|
|
597
|
+
export declare const MODELS_SUPPORTING_PER_REFERENCE_AUDIO: Set<string>;
|
|
598
|
+
/**
|
|
599
|
+
* Models that accept `reference_audio_urls` — voice-donor clips bound
|
|
600
|
+
* in-prompt as @Audio1, @Audio2, … to keep a character's voice (timbre,
|
|
601
|
+
* accent, pacing) consistent across shots. Up to 3 clips, 2-15s each,
|
|
602
|
+
* ≤15s aggregate, wav/mp3, ≤15MB per file, and Venice REQUIRES at least
|
|
603
|
+
* one reference image alongside them (audio-only is rejected at
|
|
604
|
+
* validation). Mirror of `MODELS_SUPPORTING_AUDIO_INPUT` — kept here as a
|
|
605
|
+
* fast lookup set for the video generator. Confirmed live via /video/quote
|
|
606
|
+
* (HTTP 200) 2026-07-23 on all four; these do NOT set `audio_input: true`
|
|
607
|
+
* in GET /models, so reference audio is a separate capability from the
|
|
608
|
+
* lip-sync `audio_url` lane.
|
|
609
|
+
*/
|
|
610
|
+
export declare const MODELS_SUPPORTING_REFERENCE_AUDIO: Set<string>;
|
|
611
|
+
/**
|
|
612
|
+
* Per-model reference_image_urls budget. The Venice API cap is 9 (per the
|
|
613
|
+
* venice-video SKILL.md params table); models not listed here fall back to
|
|
614
|
+
* the legacy conservative cap of 4. The old universal `.slice(0, 4)` was a
|
|
615
|
+
* harness convention, NOT the API limit — Seedance 2.0 R2V and HappyHorse
|
|
616
|
+
* 1.1 R2V both accept up to 9 flat reference images, which is what makes the
|
|
617
|
+
* full reference stack (character sheets + multi-angle locations + storyboard
|
|
618
|
+
* blocking plates) possible.
|
|
619
|
+
*/
|
|
620
|
+
export declare const MAX_REFERENCE_IMAGES_BY_MODEL: Record<string, number>;
|
|
621
|
+
export declare const DEFAULT_MAX_REFERENCE_IMAGES = 4;
|
|
622
|
+
export declare function getMaxReferenceImages(modelId: string): number;
|
|
623
|
+
export interface VideoElement {
|
|
624
|
+
frontalImageUrl?: string;
|
|
625
|
+
referenceImageUrls?: string[];
|
|
626
|
+
videoUrl?: string;
|
|
627
|
+
/**
|
|
628
|
+
* Per-reference audio for Wan 2.7 R2V (`per_reference_audio: true`).
|
|
629
|
+
* When set, this element's character lip-syncs to the supplied audio
|
|
630
|
+
* while other characters in the same render stay silent. NOT used by
|
|
631
|
+
* models that lack `MODELS_SUPPORTING_PER_REFERENCE_AUDIO`.
|
|
632
|
+
*
|
|
633
|
+
* Pass as a data URL or a local file path — `audioPath` is preferred so
|
|
634
|
+
* the audio pre-flight pad can run.
|
|
635
|
+
*/
|
|
636
|
+
audioUrl?: string;
|
|
637
|
+
audioPath?: string;
|
|
638
|
+
}
|
|
639
|
+
export declare const FEMALE_BASE_TRAITS = "beautiful, elegant, detailed features";
|
|
640
|
+
export declare const MALE_BASE_TRAITS = "handsome, strong features, detailed features";
|
|
641
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/series/types.ts"],"names":[],"mappings":"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"}
|