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 @@
|
|
|
1
|
+
{"version":3,"file":"scene-extractor.js","sourceRoot":"","sources":["../../src/parsers/scene-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { SeriesState, MiniDramaCharacter, EpisodeMeta, EpisodeScript, Location } from './types.js';
|
|
2
|
+
import { type AudioStrategy, type VideoFamilyPreference } from './types.js';
|
|
3
|
+
export interface CreateSeriesOptions {
|
|
4
|
+
/** Upfront questionnaire: how dialogue reaches the final mix. */
|
|
5
|
+
audioStrategy?: AudioStrategy;
|
|
6
|
+
/** Upfront questionnaire: preferred video model family. */
|
|
7
|
+
videoFamilyPreference?: VideoFamilyPreference;
|
|
8
|
+
/** Directory that contains every series project. */
|
|
9
|
+
workspace?: string;
|
|
10
|
+
/** Broad standalone-CLI creation type. */
|
|
11
|
+
projectType?: 'film' | 'series' | 'product-video' | 'music-video' | 'screenplay';
|
|
12
|
+
}
|
|
13
|
+
export declare function createSeries(name: string, concept: string, genre: string, setting: string, options?: CreateSeriesOptions): SeriesState;
|
|
14
|
+
/**
|
|
15
|
+
* Read every `characters/*\/character.json` on disk and return the resulting
|
|
16
|
+
* array. This is the authoritative source of truth — the in-memory
|
|
17
|
+
* `series.characters` is allowed to drift (commands sometimes mutate it
|
|
18
|
+
* accidentally), but the per-character JSON files are written once by
|
|
19
|
+
* `add-character` and only changed by explicit user action.
|
|
20
|
+
*
|
|
21
|
+
* Returns an empty array when the characters/ directory doesn't exist yet.
|
|
22
|
+
*/
|
|
23
|
+
export declare function loadCharactersFromDisk(outputDir: string): Promise<MiniDramaCharacter[]>;
|
|
24
|
+
export declare function saveSeries(series: SeriesState): Promise<void>;
|
|
25
|
+
export declare function loadSeries(outputDir: string): Promise<SeriesState | null>;
|
|
26
|
+
export declare function listSeries(workspace?: string): Promise<{
|
|
27
|
+
name: string;
|
|
28
|
+
slug: string;
|
|
29
|
+
dir: string;
|
|
30
|
+
}[]>;
|
|
31
|
+
export declare function addCharacter(series: SeriesState, character: MiniDramaCharacter): void;
|
|
32
|
+
export declare function getCharacter(series: SeriesState, name: string): MiniDramaCharacter | undefined;
|
|
33
|
+
export declare function addEpisode(series: SeriesState, title: string): EpisodeMeta;
|
|
34
|
+
export declare function getEpisodeDir(series: SeriesState, episodeNumber: number): string;
|
|
35
|
+
export declare function getCharacterDir(series: SeriesState, characterName: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Directory for a location's reference assets, mirroring getCharacterDir.
|
|
38
|
+
* Accepts a slug or a display name; slugifies to find the canonical dir and
|
|
39
|
+
* falls back to the raw name for directories created outside the CLI.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getLocationDir(series: SeriesState, locationSlugOrName: string): string;
|
|
42
|
+
export declare function locationSlugify(name: string): string;
|
|
43
|
+
/**
|
|
44
|
+
* Directory for composed storyboard blocking plates (StoryboardReference).
|
|
45
|
+
* Plates are series-level assets keyed by slug — slugs are conventionally
|
|
46
|
+
* prefixed with the episode (e.g. "e01-courtyard-chalice-fight") so beats
|
|
47
|
+
* from different episodes never collide.
|
|
48
|
+
*/
|
|
49
|
+
export declare function getStoryboardDir(series: SeriesState): string;
|
|
50
|
+
/**
|
|
51
|
+
* Absolute path to a storyboard blocking plate by slug. Returns the first
|
|
52
|
+
* existing candidate (slugified, then raw name — mirroring getLocationDir's
|
|
53
|
+
* tolerance for files created outside the CLI), falling back to the
|
|
54
|
+
* canonical slugified path (the write target) when none exists yet.
|
|
55
|
+
* Callers deciding whether to USE the plate should existsSync() the result.
|
|
56
|
+
*/
|
|
57
|
+
export declare function getStoryboardRefPath(series: SeriesState, slug: string): string;
|
|
58
|
+
/** Find a location by slug (preferred) or display name. */
|
|
59
|
+
export declare function getLocation(series: SeriesState, slugOrName: string): Location | undefined;
|
|
60
|
+
/** Insert or replace a location by slug. */
|
|
61
|
+
export declare function addLocation(series: SeriesState, location: Location): void;
|
|
62
|
+
export declare function saveEpisodeScript(series: SeriesState, script: EpisodeScript): Promise<string>;
|
|
63
|
+
export declare function loadEpisodeScript(series: SeriesState, episodeNumber: number): Promise<EpisodeScript | null>;
|
|
64
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/series/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,YAAY,CAAC;AASpB,MAAM,WAAW,mBAAmB;IAClC,iEAAiE;IACjE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,2DAA2D;IAC3D,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;CAClF;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW,CAmCb;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0B/B;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCnE;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAK/E;AAED,wBAAsB,UAAU,CAAC,SAAS,SAAoB,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAoBtH;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,GAAG,IAAI,CASrF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAE9F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAS1E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEhF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAWlF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAUtF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE5D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAU9E;AAED,2DAA2D;AAC3D,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAKzF;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAKzE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAM/B"}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, readdir, rename } from 'node:fs/promises';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { DEFAULT_ACTION_MODEL, DEFAULT_ATMOSPHERE_MODEL, DEFAULT_CHARACTER_CONSISTENCY_MODEL, DEFAULT_IMAGE_GENERATION_MODEL, DEFAULT_IMAGE_EDIT_MODEL, DEFAULT_LIP_SYNC_MODEL, resolveVideoFamilyDefaults, } from './types.js';
|
|
5
|
+
function slugify(name) {
|
|
6
|
+
return name
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
9
|
+
.replace(/^-+|-+$/g, '');
|
|
10
|
+
}
|
|
11
|
+
export function createSeries(name, concept, genre, setting, options) {
|
|
12
|
+
const slug = slugify(name);
|
|
13
|
+
const outputDir = join(resolve(options?.workspace ?? 'output'), slug);
|
|
14
|
+
const now = new Date().toISOString();
|
|
15
|
+
const family = options?.videoFamilyPreference ?? 'auto';
|
|
16
|
+
const familyDefaults = resolveVideoFamilyDefaults(family);
|
|
17
|
+
return {
|
|
18
|
+
name,
|
|
19
|
+
slug,
|
|
20
|
+
concept,
|
|
21
|
+
genre,
|
|
22
|
+
setting,
|
|
23
|
+
...(options?.projectType ? { projectType: options.projectType } : {}),
|
|
24
|
+
aesthetic: null,
|
|
25
|
+
characters: [],
|
|
26
|
+
episodes: [],
|
|
27
|
+
videoDefaults: {
|
|
28
|
+
actionModel: family === 'auto' ? DEFAULT_ACTION_MODEL : familyDefaults.actionModel,
|
|
29
|
+
atmosphereModel: family === 'auto' ? DEFAULT_ATMOSPHERE_MODEL : familyDefaults.atmosphereModel,
|
|
30
|
+
characterConsistencyModel: family === 'auto' ? DEFAULT_CHARACTER_CONSISTENCY_MODEL : familyDefaults.characterConsistencyModel,
|
|
31
|
+
imageDefaults: {
|
|
32
|
+
generationModel: DEFAULT_IMAGE_GENERATION_MODEL,
|
|
33
|
+
editModel: DEFAULT_IMAGE_EDIT_MODEL,
|
|
34
|
+
},
|
|
35
|
+
lipSyncModel: DEFAULT_LIP_SYNC_MODEL,
|
|
36
|
+
...(options?.audioStrategy ? { audioStrategy: options.audioStrategy } : {}),
|
|
37
|
+
...(options?.videoFamilyPreference ? { videoFamilyPreference: options.videoFamilyPreference } : {}),
|
|
38
|
+
},
|
|
39
|
+
outputDir,
|
|
40
|
+
createdAt: now,
|
|
41
|
+
updatedAt: now,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Read every `characters/*\/character.json` on disk and return the resulting
|
|
46
|
+
* array. This is the authoritative source of truth — the in-memory
|
|
47
|
+
* `series.characters` is allowed to drift (commands sometimes mutate it
|
|
48
|
+
* accidentally), but the per-character JSON files are written once by
|
|
49
|
+
* `add-character` and only changed by explicit user action.
|
|
50
|
+
*
|
|
51
|
+
* Returns an empty array when the characters/ directory doesn't exist yet.
|
|
52
|
+
*/
|
|
53
|
+
export async function loadCharactersFromDisk(outputDir) {
|
|
54
|
+
const charsDir = join(outputDir, 'characters');
|
|
55
|
+
if (!existsSync(charsDir))
|
|
56
|
+
return [];
|
|
57
|
+
const out = [];
|
|
58
|
+
let entries;
|
|
59
|
+
try {
|
|
60
|
+
entries = await readdir(charsDir, { withFileTypes: true });
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (!entry.isDirectory())
|
|
67
|
+
continue;
|
|
68
|
+
const charJsonPath = join(charsDir, entry.name, 'character.json');
|
|
69
|
+
if (!existsSync(charJsonPath))
|
|
70
|
+
continue;
|
|
71
|
+
try {
|
|
72
|
+
const raw = await readFile(charJsonPath, 'utf-8');
|
|
73
|
+
const character = JSON.parse(raw);
|
|
74
|
+
if (character && typeof character.name === 'string') {
|
|
75
|
+
out.push(character);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// Skip malformed character.json — log to stderr so it's visible.
|
|
80
|
+
console.warn(` loadCharactersFromDisk: skipped malformed ${charJsonPath}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return out;
|
|
84
|
+
}
|
|
85
|
+
export async function saveSeries(series) {
|
|
86
|
+
if (!existsSync(series.outputDir)) {
|
|
87
|
+
await mkdir(series.outputDir, { recursive: true });
|
|
88
|
+
}
|
|
89
|
+
series.updatedAt = new Date().toISOString();
|
|
90
|
+
const filePath = join(series.outputDir, 'series.json');
|
|
91
|
+
// NOTE: the former `seedanceCompatibility` auto-fill was removed (2026-07)
|
|
92
|
+
// once Venice dropped the Seedance seedream-only face restriction. Seedance
|
|
93
|
+
// now accepts face-bearing input images from any image family, so there is no
|
|
94
|
+
// provenance-driven mode to infer. The field is still honored if an operator
|
|
95
|
+
// sets it explicitly, but nothing sets it automatically anymore.
|
|
96
|
+
// Rebuild `characters[]` from the on-disk per-character JSON files. This
|
|
97
|
+
// closes a recurring data-loss bug where storyboard-episode / qa-approve /
|
|
98
|
+
// other commands would load series.json, mutate one field, and save the
|
|
99
|
+
// whole document back with an empty characters[] because they'd never
|
|
100
|
+
// populated that field in their working copy. The per-character JSON files
|
|
101
|
+
// are the single source of truth.
|
|
102
|
+
try {
|
|
103
|
+
const fromDisk = await loadCharactersFromDisk(series.outputDir);
|
|
104
|
+
if (fromDisk.length > 0) {
|
|
105
|
+
// Merge: prefer disk entries, but keep any in-memory characters that
|
|
106
|
+
// don't yet have a disk record (e.g. the caller just created the
|
|
107
|
+
// character in-process and hasn't written the json yet).
|
|
108
|
+
const diskByName = new Map(fromDisk.map(c => [c.name.toUpperCase(), c]));
|
|
109
|
+
const merged = [...fromDisk];
|
|
110
|
+
for (const inMem of series.characters) {
|
|
111
|
+
if (!diskByName.has(inMem.name.toUpperCase()))
|
|
112
|
+
merged.push(inMem);
|
|
113
|
+
}
|
|
114
|
+
series.characters = merged;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
catch (err) {
|
|
118
|
+
console.warn(` saveSeries: characters merge from disk failed (${err.message}); writing in-memory copy as-is.`);
|
|
119
|
+
}
|
|
120
|
+
await writeFile(filePath, JSON.stringify(series, null, 2), 'utf-8');
|
|
121
|
+
}
|
|
122
|
+
export async function loadSeries(outputDir) {
|
|
123
|
+
const filePath = join(outputDir, 'series.json');
|
|
124
|
+
if (!existsSync(filePath))
|
|
125
|
+
return null;
|
|
126
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
127
|
+
return JSON.parse(raw);
|
|
128
|
+
}
|
|
129
|
+
export async function listSeries(workspace = resolve('output')) {
|
|
130
|
+
const outputBase = resolve(workspace);
|
|
131
|
+
const results = [];
|
|
132
|
+
if (!existsSync(outputBase))
|
|
133
|
+
return results;
|
|
134
|
+
const entries = await readdir(outputBase, { withFileTypes: true });
|
|
135
|
+
for (const entry of entries) {
|
|
136
|
+
if (!entry.isDirectory())
|
|
137
|
+
continue;
|
|
138
|
+
const dir = join(outputBase, entry.name);
|
|
139
|
+
const seriesFile = join(dir, 'series.json');
|
|
140
|
+
if (!existsSync(seriesFile))
|
|
141
|
+
continue;
|
|
142
|
+
try {
|
|
143
|
+
const raw = await readFile(seriesFile, 'utf-8');
|
|
144
|
+
const data = JSON.parse(raw);
|
|
145
|
+
results.push({ name: data.name, slug: data.slug, dir });
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// skip invalid
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return results;
|
|
152
|
+
}
|
|
153
|
+
export function addCharacter(series, character) {
|
|
154
|
+
const existing = series.characters.findIndex(c => c.name.toUpperCase() === character.name.toUpperCase());
|
|
155
|
+
if (existing >= 0) {
|
|
156
|
+
series.characters[existing] = character;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
series.characters.push(character);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export function getCharacter(series, name) {
|
|
163
|
+
return series.characters.find(c => c.name.toUpperCase() === name.toUpperCase());
|
|
164
|
+
}
|
|
165
|
+
export function addEpisode(series, title) {
|
|
166
|
+
const number = series.episodes.length + 1;
|
|
167
|
+
const episode = {
|
|
168
|
+
number,
|
|
169
|
+
title,
|
|
170
|
+
status: 'draft',
|
|
171
|
+
};
|
|
172
|
+
series.episodes.push(episode);
|
|
173
|
+
return episode;
|
|
174
|
+
}
|
|
175
|
+
export function getEpisodeDir(series, episodeNumber) {
|
|
176
|
+
return join(series.outputDir, 'episodes', `episode-${String(episodeNumber).padStart(3, '0')}`);
|
|
177
|
+
}
|
|
178
|
+
export function getCharacterDir(series, characterName) {
|
|
179
|
+
const safeName = characterName
|
|
180
|
+
.toLowerCase()
|
|
181
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
182
|
+
.replace(/^-+|-+$/g, '');
|
|
183
|
+
const slugPath = join(series.outputDir, 'characters', safeName);
|
|
184
|
+
if (existsSync(slugPath))
|
|
185
|
+
return slugPath;
|
|
186
|
+
// Fall back to raw character name (handles directories created outside the CLI)
|
|
187
|
+
const rawPath = join(series.outputDir, 'characters', characterName);
|
|
188
|
+
if (existsSync(rawPath))
|
|
189
|
+
return rawPath;
|
|
190
|
+
return slugPath;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Directory for a location's reference assets, mirroring getCharacterDir.
|
|
194
|
+
* Accepts a slug or a display name; slugifies to find the canonical dir and
|
|
195
|
+
* falls back to the raw name for directories created outside the CLI.
|
|
196
|
+
*/
|
|
197
|
+
export function getLocationDir(series, locationSlugOrName) {
|
|
198
|
+
const safeName = locationSlugOrName
|
|
199
|
+
.toLowerCase()
|
|
200
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
201
|
+
.replace(/^-+|-+$/g, '');
|
|
202
|
+
const slugPath = join(series.outputDir, 'locations', safeName);
|
|
203
|
+
if (existsSync(slugPath))
|
|
204
|
+
return slugPath;
|
|
205
|
+
const rawPath = join(series.outputDir, 'locations', locationSlugOrName);
|
|
206
|
+
if (existsSync(rawPath))
|
|
207
|
+
return rawPath;
|
|
208
|
+
return slugPath;
|
|
209
|
+
}
|
|
210
|
+
export function locationSlugify(name) {
|
|
211
|
+
return slugify(name);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Directory for composed storyboard blocking plates (StoryboardReference).
|
|
215
|
+
* Plates are series-level assets keyed by slug — slugs are conventionally
|
|
216
|
+
* prefixed with the episode (e.g. "e01-courtyard-chalice-fight") so beats
|
|
217
|
+
* from different episodes never collide.
|
|
218
|
+
*/
|
|
219
|
+
export function getStoryboardDir(series) {
|
|
220
|
+
return join(series.outputDir, 'storyboards');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Absolute path to a storyboard blocking plate by slug. Returns the first
|
|
224
|
+
* existing candidate (slugified, then raw name — mirroring getLocationDir's
|
|
225
|
+
* tolerance for files created outside the CLI), falling back to the
|
|
226
|
+
* canonical slugified path (the write target) when none exists yet.
|
|
227
|
+
* Callers deciding whether to USE the plate should existsSync() the result.
|
|
228
|
+
*/
|
|
229
|
+
export function getStoryboardRefPath(series, slug) {
|
|
230
|
+
const dir = getStoryboardDir(series);
|
|
231
|
+
const safe = slug
|
|
232
|
+
.toLowerCase()
|
|
233
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
234
|
+
.replace(/^-+|-+$/g, '');
|
|
235
|
+
for (const candidate of [join(dir, `${safe}.png`), join(dir, `${slug}.png`)]) {
|
|
236
|
+
if (existsSync(candidate))
|
|
237
|
+
return candidate;
|
|
238
|
+
}
|
|
239
|
+
return join(dir, `${safe}.png`);
|
|
240
|
+
}
|
|
241
|
+
/** Find a location by slug (preferred) or display name. */
|
|
242
|
+
export function getLocation(series, slugOrName) {
|
|
243
|
+
const needle = slugOrName.toLowerCase();
|
|
244
|
+
return (series.locations ?? []).find(l => l.slug.toLowerCase() === needle || l.name.toLowerCase() === needle);
|
|
245
|
+
}
|
|
246
|
+
/** Insert or replace a location by slug. */
|
|
247
|
+
export function addLocation(series, location) {
|
|
248
|
+
if (!series.locations)
|
|
249
|
+
series.locations = [];
|
|
250
|
+
const idx = series.locations.findIndex(l => l.slug === location.slug);
|
|
251
|
+
if (idx >= 0)
|
|
252
|
+
series.locations[idx] = location;
|
|
253
|
+
else
|
|
254
|
+
series.locations.push(location);
|
|
255
|
+
}
|
|
256
|
+
export async function saveEpisodeScript(series, script) {
|
|
257
|
+
const episodeDir = getEpisodeDir(series, script.episode);
|
|
258
|
+
if (!existsSync(episodeDir)) {
|
|
259
|
+
await mkdir(episodeDir, { recursive: true });
|
|
260
|
+
}
|
|
261
|
+
const filePath = join(episodeDir, 'script.json');
|
|
262
|
+
if (existsSync(filePath)) {
|
|
263
|
+
let version = 1;
|
|
264
|
+
let archivePath = join(episodeDir, `script-v${version}.json`);
|
|
265
|
+
while (existsSync(archivePath)) {
|
|
266
|
+
version++;
|
|
267
|
+
archivePath = join(episodeDir, `script-v${version}.json`);
|
|
268
|
+
}
|
|
269
|
+
await rename(filePath, archivePath);
|
|
270
|
+
}
|
|
271
|
+
await writeFile(filePath, JSON.stringify(script, null, 2), 'utf-8');
|
|
272
|
+
return filePath;
|
|
273
|
+
}
|
|
274
|
+
export async function loadEpisodeScript(series, episodeNumber) {
|
|
275
|
+
const episodeDir = getEpisodeDir(series, episodeNumber);
|
|
276
|
+
const filePath = join(episodeDir, 'script.json');
|
|
277
|
+
if (!existsSync(filePath))
|
|
278
|
+
return null;
|
|
279
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
280
|
+
return JSON.parse(raw);
|
|
281
|
+
}
|
|
282
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/series/manager.ts"],"names":[],"mappings":"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"}
|