demo-reel 0.6.0 → 0.7.4

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.
@@ -157,7 +157,7 @@ One command does everything (compile, voice, record, subtitles, cleanup):
157
157
  pnpm demo-reel <name> --verbose
158
158
  ```
159
159
 
160
- This compiles the .demo.ts, generates voiceover (if voice config + narration present), runs the recording in Docker, and outputs video + subtitles + metadata.
160
+ This compiles the .demo.ts, generates voiceover (if voice config + narration present), records the video, and outputs video + subtitles + metadata.
161
161
 
162
162
  For local debugging with a visible browser:
163
163
 
package/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Demo Reel
2
2
 
3
3
  ![Coverage](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/whit3st/demo-reel/main/.github/badges/coverage.json)
4
+ ![Vulnerabilities](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/whit3st/demo-reel/main/.github/badges/security.json)
4
5
 
5
- Create professional demo videos from web apps. Code your demos in TypeScript, record via Docker, with automatic voiceover and subtitles.
6
+ Create professional demo videos from web apps. Code your demos in TypeScript, with automatic voiceover and subtitles.
6
7
 
7
8
  ## Quick Start
8
9
 
@@ -11,7 +12,7 @@ pnpm add -D demo-reel
11
12
  ```
12
13
 
13
14
  ```typescript
14
- // demos/signup.demo.ts
15
+ // demos/my-feature.demo.ts
15
16
  import { generate } from "demo-reel";
16
17
 
17
18
  await generate(
@@ -26,8 +27,8 @@ await generate(
26
27
  outputFormat: "mp4",
27
28
 
28
29
  voice: {
29
- provider: "elevenlabs", // or "piper" (local/free) or "openai"
30
- voice: "5zhopMftSdRGaPYVcwKK",
30
+ provider: "piper", // "piper" (local/free) | "openai" | "elevenlabs"
31
+ voice: "en_US-amy-medium", // auto-downloaded on first use
31
32
  },
32
33
 
33
34
  auth: {
@@ -98,7 +99,7 @@ await generate(
98
99
  ```
99
100
 
100
101
  ```bash
101
- npx tsx demos/signup.demo.ts
102
+ pnpm build && pnpm demo-reel demos/my-feature
102
103
  ```
103
104
 
104
105
  Output: `output/signup.mp4` + `.srt` + `.vtt` + `.meta.json`
@@ -106,13 +107,14 @@ Output: `output/signup.mp4` + `.srt` + `.vtt` + `.meta.json`
106
107
  ## How It Works
107
108
 
108
109
  1. **You write a `.demo.ts`** — TypeScript config with steps, scenes, and narration
109
- 2. **`generate()` handles everything** — compiles config, generates voiceover (via Docker), records the video (via Docker), outputs subtitles and metadata
110
- 3. **Docker runs the heavy stuff** — Chromium, FFmpeg, Piper TTS are in the Docker image, not on your machine
110
+ 2. **`generate()` handles everything** — compiles config, generates voiceover, records the video, outputs subtitles and metadata
111
111
 
112
112
  ### Requirements
113
113
 
114
- - **Docker** — for recording and voice generation
115
114
  - **Node.js 18+** — for running your demo scripts
115
+ - **Playwright** — `pnpm exec playwright install chromium` (peer dependency)
116
+ - **FFmpeg** — for video/audio processing (installed via `ffmpeg-static` or system package)
117
+ - **Piper** (optional) — for local TTS voiceover (auto-downloaded on first use, no setup needed)
116
118
  - **API keys** (optional) — `ELEVENLABS_KEY` or `OPENAI_API_KEY` for cloud TTS
117
119
 
118
120
  ## Claude Code Integration
@@ -179,32 +181,32 @@ See `TRACKING.md` for the raw file format and guidance for AI tools that consume
179
181
 
180
182
  ```typescript
181
183
  voice: {
182
- provider: "elevenlabs", // "piper" | "openai" | "elevenlabs"
183
- voice: "5zhopMftSdRGaPYVcwKK", // provider-specific autocomplete
184
+ provider: "piper", // "piper" | "openai" | "elevenlabs"
185
+ voice: "en_US-amy-medium", // any voice name or ID supported by the provider
184
186
  speed: 1.0,
185
- pronunciation: { // word replacements before TTS
186
- "template": "template", // prevent Dutch pronunciation of English words
187
+ pronunciation: { // word replacements before TTS
188
+ "template": "template", // prevent Dutch pronunciation of English words
187
189
  },
188
190
  },
189
191
  ```
190
192
 
191
- Built-in voice values:
193
+ Voiceover is auto-generated when `scenes` have `narration` text and `voice` is configured. Cached by content hash — only regenerates when narration changes.
192
194
 
193
- - `piper`: `"nl_NL-mls-medium"`, `"nl_NL-pim-medium"`, `"en_US-amy-medium"`
194
- - `openai`: `"alloy"`, `"echo"`, `"fable"`, `"onyx"`, `"nova"`, `"shimmer"`
195
- - `elevenlabs`: `"21m00Tcm4TlvDq8ikWAM"`, `"5zhopMftSdRGaPYVcwKK"`, `CwhRBWXzGAHq8TQ4Fs17`, `60CwgZt94Yf7yYIXMDDe`
195
+ #### Provider Details
196
196
 
197
- For a custom Piper `.onnx` model, use `voicePath` instead of `voice`:
197
+ **Piper** (local, free) — voice is a model name like `en_US-amy-medium`. Auto-downloaded from HuggingFace on first use. Models are cached in `$PIPER_VOICE_DIR` (defaults to `~/.local/share/piper-voices`). For custom models, use `voicePath` instead of `voice`:
198
198
 
199
199
  ```typescript
200
200
  voice: {
201
201
  provider: "piper",
202
- voicePath: "/models/custom-voice.onnx",
202
+ voicePath: "/path/to/custom-voice.onnx",
203
203
  speed: 1.0,
204
204
  }
205
205
  ```
206
206
 
207
- Voiceover is auto-generated when `scenes` have `narration` text and `voice` is configured. Cached by content hash only regenerates when narration changes.
207
+ **OpenAI** voice is an OpenAI TTS voice name (e.g. `alloy`, `nova`, `shimmer`). Requires `OPENAI_API_KEY` env var.
208
+
209
+ **ElevenLabs** — voice is an ElevenLabs voice ID string. Requires `ELEVENLABS_KEY` or `ELEVENLABS_API_KEY` env var.
208
210
 
209
211
  ### Setup & Cleanup
210
212
 
@@ -299,13 +301,15 @@ Demo videos are designed as standalone segments that also work as a series:
299
301
 
300
302
  ```
301
303
  demos/
302
- └── my-app/
303
- ├── 01-signup/signup.demo.ts # setup: create workspace
304
- ├── 02-create-project/project.demo.ts # setup: create workspace + template
305
- └── 03-editor/editor.demo.ts # setup: create workspace + template + project
304
+ ├── the-internet-login.demo.ts # login flow (goto, type, click, hover)
305
+ ├── the-internet-dynamic-controls.demo.ts # async UI changes (waitFor)
306
+ ├── the-internet-checkboxes-dropdown.demo.ts # form controls (check, select)
307
+ ├── the-internet-file-upload.demo.ts # file input (upload)
308
+ ├── the-internet-hovers.demo.ts # hover reveals (hover)
309
+ └── the-internet-drag-drop.demo.ts # column swap (drag)
306
310
  ```
307
311
 
308
- Each video has its own `setup` that recreates the required state. Later videos have heavier setup. Every video is independently recordable.
312
+ Each video is independently recordable. For apps requiring login, use the `auth` + `setup` blocks to recreate state from scratch.
309
313
 
310
314
  ## CI/CD
311
315
 
@@ -319,16 +323,29 @@ jobs:
319
323
  steps:
320
324
  - uses: actions/checkout@v4
321
325
  - uses: pnpm/action-setup@v4
322
- - run: pnpm install
323
- - run: npx tsx demos/01-signup/signup.demo.ts
324
- env:
325
- ELEVENLABS_KEY: ${{ secrets.ELEVENLABS_KEY }}
326
+ - uses: actions/setup-node@v4
327
+ with:
328
+ node-version: 22
329
+ cache: pnpm
330
+ - run: pnpm ci
331
+ - run: pnpm exec playwright install chromium
332
+ - run: pnpm build
333
+ - run: pnpm demo-reel demos/the-internet-login
326
334
  - uses: actions/upload-artifact@v4
327
335
  with:
328
336
  name: demo-videos
329
337
  path: ./output/*.mp4
330
338
  ```
331
339
 
340
+ Piper binary and voice models download automatically on first run — no secrets needed for the built-in demos. For cloud TTS, add secrets in your repo settings and pass them as env:
341
+
342
+ ```yaml
343
+ - run: pnpm demo-reel demos/my-demo
344
+ env:
345
+ ELEVENLABS_KEY: ${{ secrets.ELEVENLABS_KEY }}
346
+ OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
347
+ ```
348
+
332
349
  ## License
333
350
 
334
351
  MIT
package/bin/demo-reel.mjs CHANGED
@@ -1,12 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { execSync, spawn } from "child_process";
2
+ import { spawn } from "child_process";
3
3
  import { dirname, resolve } from "path";
4
4
  import { fileURLToPath } from "url";
5
5
 
6
6
  const SKILL_URL =
7
7
  "https://raw.githubusercontent.com/whit3st/demo-reel/main/.claude-plugin/commands/demo-script.md";
8
- const DEFAULT_IMAGE = "ghcr.io/whit3st/demo-reel:latest";
9
- const LOCAL_IMAGE = "demo-reel:latest";
10
8
 
11
9
  const args = process.argv.slice(2);
12
10
 
@@ -25,21 +23,13 @@ Option 2 — Manual copy:
25
23
 
26
24
  Then use /demo-script in Claude Code to create demo videos collaboratively.`);
27
25
  } else if (args[0] === "explore") {
28
- const image = getImage();
29
- const dockerArgs = [
30
- "run",
31
- "--rm",
32
- "-v",
33
- `${process.cwd()}:/work:z`,
34
- "-w",
35
- "/work",
36
- "--entrypoint",
37
- "node",
38
- image,
39
- "/app/dist/script/crawl-cli.js",
40
- ...args.slice(1),
41
- ];
42
- const proc = spawn("docker", dockerArgs, { stdio: "inherit" });
26
+ const crawlCliPath = resolve(
27
+ dirname(fileURLToPath(import.meta.url)),
28
+ "../dist/script/crawl-cli.js",
29
+ );
30
+ const proc = spawn(process.execPath, [crawlCliPath, ...args.slice(1)], {
31
+ stdio: "inherit",
32
+ });
43
33
  forwardSignals(proc);
44
34
  proc.on("close", (code) => process.exit(code ?? 1));
45
35
  } else if (args.length > 0) {
@@ -61,23 +51,6 @@ CLI commands:
61
51
  demo-reel explore <url> Crawl a page and show selectors`);
62
52
  }
63
53
 
64
- function getImage() {
65
- try {
66
- execSync(`docker image inspect ${LOCAL_IMAGE}`, { stdio: "ignore" });
67
- return LOCAL_IMAGE;
68
- } catch {
69
- /* no local image */
70
- }
71
- try {
72
- execSync(`docker image inspect ${DEFAULT_IMAGE}`, { stdio: "ignore" });
73
- return DEFAULT_IMAGE;
74
- } catch {
75
- console.log(`Pulling ${DEFAULT_IMAGE}...`);
76
- execSync(`docker pull ${DEFAULT_IMAGE}`, { stdio: "inherit" });
77
- return DEFAULT_IMAGE;
78
- }
79
- }
80
-
81
54
  function forwardSignals(child) {
82
55
  const signals = ["SIGINT", "SIGTERM"];
83
56
  const forward = (signal) => {
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import { demoReelConfigSchema, demoReelConfigInputSchema, type DemoReelConfig, t
2
2
  export type DemoConfig = DemoReelConfigInput;
3
3
  export interface GenerateOptions {
4
4
  verbose?: boolean;
5
- noDocker?: boolean;
6
5
  }
7
6
  export declare function defineConfig(config: DemoConfig): DemoReelConfig;
8
7
  export declare const demo: typeof defineConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AActB,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAE/D;AAED,eAAO,MAAM,IAAI,qBAAe,CAAC;AAEjC,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAE9D;AAuFD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4O/F;AAED,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxE,mBAAmB,YAAY,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AAMtB,MAAM,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,cAAc,CAE/D;AAED,eAAO,MAAM,IAAI,qBAAe,CAAC;AAEjC,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAE9D;AAoDD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkJ/F;AAED,OAAO,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxE,mBAAmB,YAAY,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,18 +1,9 @@
1
- import { execSync, spawn, spawnSync } from "child_process";
2
1
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
3
2
  import { basename, dirname, extname, join, relative, resolve } from "path";
4
3
  import { demoReelConfigSchema, demoReelConfigInputSchema, } from "./schemas.js";
5
4
  import { getNarrationManifestPath } from "./narration-manifest.js";
6
5
  import { narrationManifestSchema, NARRATION_PROCESSING_VERSION } from "./narration-manifest.js";
7
6
  import { syncNarration, logSyncReport } from "./narration-sync.js";
8
- const DEFAULT_IMAGE = "ghcr.io/whit3st/demo-reel:latest";
9
- const LOCAL_IMAGE = "demo-reel:latest";
10
- const ENV_PASSTHROUGH = [
11
- "ELEVENLABS_KEY",
12
- "ELEVENLABS_API_KEY",
13
- "OPENAI_API_KEY",
14
- "ANTHROPIC_API_KEY",
15
- ];
16
7
  export function defineConfig(config) {
17
8
  return validateConfig(config);
18
9
  }
@@ -20,39 +11,6 @@ export const demo = defineConfig;
20
11
  export function validateConfig(config) {
21
12
  return demoReelConfigSchema.parse(config);
22
13
  }
23
- function isDockerAvailable() {
24
- try {
25
- execSync("docker info", { stdio: "ignore" });
26
- return true;
27
- }
28
- catch {
29
- return false;
30
- }
31
- }
32
- function getImage() {
33
- try {
34
- execSync(`docker image inspect ${LOCAL_IMAGE}`, { stdio: "ignore" });
35
- return LOCAL_IMAGE;
36
- }
37
- catch {
38
- // No local image, fall through to the published image.
39
- }
40
- try {
41
- execSync(`docker image inspect ${DEFAULT_IMAGE}`, { stdio: "ignore" });
42
- return DEFAULT_IMAGE;
43
- }
44
- catch {
45
- console.log(`Pulling ${DEFAULT_IMAGE}...`);
46
- execSync(`docker pull ${DEFAULT_IMAGE}`, { stdio: "inherit" });
47
- return DEFAULT_IMAGE;
48
- }
49
- }
50
- function getDockerUserArgs() {
51
- if (typeof process.getuid !== "function" || typeof process.getgid !== "function") {
52
- return [];
53
- }
54
- return ["--user", `${process.getuid()}:${process.getgid()}`];
55
- }
56
14
  function getBaseName(config) {
57
15
  if (config.name) {
58
16
  return config.name;
@@ -97,7 +55,7 @@ function shouldRegenerateNarrationArtifacts(audioPath, manifestPath) {
97
55
  }
98
56
  }
99
57
  export async function generate(config, options = {}) {
100
- const { verbose = false, noDocker = false } = options;
58
+ const { verbose = false } = options;
101
59
  const resolvedConfig = validateConfig(config);
102
60
  const name = getBaseName(resolvedConfig);
103
61
  const narratedScenes = getNarratedScenesInPlaybackOrder(resolvedConfig);
@@ -105,16 +63,18 @@ export async function generate(config, options = {}) {
105
63
  const hasVoice = resolvedConfig.voice;
106
64
  const audioPath = getAudioPath(resolvedConfig);
107
65
  const narrationManifestPath = getNarrationManifestPath(audioPath);
108
- const voiceScriptPath = `.${name}.voice.tmp.json`;
109
- const shouldRegenerateNarration = hasNarration && hasVoice
66
+ const shouldRegenerate = hasNarration && hasVoice
110
67
  ? shouldRegenerateNarrationArtifacts(audioPath, narrationManifestPath)
111
68
  : false;
112
69
  mkdirSync(dirname(audioPath), { recursive: true });
113
- if (hasNarration && hasVoice && shouldRegenerateNarration) {
70
+ if (hasNarration && hasVoice && shouldRegenerate) {
114
71
  if (verbose) {
115
- console.log("Generating voiceover via Docker...");
72
+ console.log("Generating voiceover...");
116
73
  }
117
- const scriptJson = {
74
+ const { generateVoiceSegments, generateNarrationAudio } = await import("./script/tts.js");
75
+ const { resolveVoiceConfig } = await import("./voice-config.js");
76
+ const resolvedVoice = resolveVoiceConfig(resolvedConfig.voice);
77
+ const script = {
118
78
  title: name,
119
79
  description: "auto-generated",
120
80
  url: "https://placeholder.local",
@@ -124,32 +84,10 @@ export async function generate(config, options = {}) {
124
84
  sourceSceneIndex: index,
125
85
  steps: [{ action: "wait", ms: 0 }],
126
86
  })),
127
- voice: resolvedConfig.voice,
87
+ voice: resolvedVoice,
128
88
  };
129
- writeFileSync(voiceScriptPath, JSON.stringify(scriptJson, null, 2), "utf-8");
130
- const image = getImage();
131
- const voiceArgs = [
132
- "run",
133
- "--rm",
134
- ...getDockerUserArgs(),
135
- "-v",
136
- `${process.cwd()}:/work:z`,
137
- "-w",
138
- "/work",
139
- ];
140
- for (const envVar of ENV_PASSTHROUGH) {
141
- if (process.env[envVar]) {
142
- voiceArgs.push("-e", `${envVar}=${process.env[envVar]}`);
143
- }
144
- }
145
- voiceArgs.push("--entrypoint", "node", image, "/app/dist/script/voice-cli.js", voiceScriptPath, "--output", relative(process.cwd(), audioPath));
146
- const voiceResult = spawnSync("docker", voiceArgs, { stdio: "inherit", env: process.env });
147
- if (voiceResult.status !== 0) {
148
- throw new Error(`Docker voice generation exited with code ${voiceResult.status}`);
149
- }
150
- if (voiceResult.error) {
151
- throw voiceResult.error;
152
- }
89
+ const segments = await generateVoiceSegments(script, resolvedVoice, { verbose });
90
+ await generateNarrationAudio(segments, audioPath, { verbose });
153
91
  }
154
92
  const configWithAudio = hasNarration && existsSync(audioPath)
155
93
  ? {
@@ -163,7 +101,6 @@ export async function generate(config, options = {}) {
163
101
  outputFormat: "mp4",
164
102
  }
165
103
  : resolvedConfig;
166
- // --- Narration auto-sync ---
167
104
  if (hasNarration && existsSync(narrationManifestPath) && resolvedConfig.scenes) {
168
105
  try {
169
106
  const syncMode = resolvedConfig.timing.narrationSyncMode ?? "auto";
@@ -193,7 +130,6 @@ export async function generate(config, options = {}) {
193
130
  if (verbose) {
194
131
  logSyncReport(syncOutput.report, verbose);
195
132
  }
196
- // Apply synced steps and scene indices
197
133
  if (syncOutput.report.appliedPadMs > 0) {
198
134
  configWithAudio.steps = syncOutput.steps;
199
135
  if (resolvedConfig.scenes) {
@@ -212,7 +148,6 @@ export async function generate(config, options = {}) {
212
148
  if (verbose) {
213
149
  console.warn(`Narration sync skipped: ${error instanceof Error ? error.message : String(error)}`);
214
150
  }
215
- // Re-throw strict mode errors
216
151
  if (error instanceof Error &&
217
152
  error.message.startsWith("Narration sync") &&
218
153
  error.message.includes("strict")) {
@@ -227,51 +162,7 @@ export async function generate(config, options = {}) {
227
162
  catch (error) {
228
163
  throw new Error(`Failed to write config: ${error instanceof Error ? error.message : error}`);
229
164
  }
230
- const relJsonPath = relative(process.cwd(), jsonPath);
231
- const cliArgs = [relJsonPath];
232
- if (verbose) {
233
- cliArgs.push("--verbose");
234
- }
235
165
  try {
236
- if (!noDocker && isDockerAvailable()) {
237
- const image = getImage();
238
- if (verbose) {
239
- console.log(`Using Docker image: ${image}`);
240
- }
241
- const dockerArgs = [
242
- "run",
243
- "--rm",
244
- ...getDockerUserArgs(),
245
- "-v",
246
- `${process.cwd()}:/work:z`,
247
- "-w",
248
- "/work",
249
- ];
250
- for (const envVar of ENV_PASSTHROUGH) {
251
- if (process.env[envVar]) {
252
- dockerArgs.push("-e", `${envVar}=${process.env[envVar]}`);
253
- }
254
- }
255
- dockerArgs.push(image, ...cliArgs);
256
- await new Promise((resolvePromise, reject) => {
257
- const proc = spawn("docker", dockerArgs, {
258
- stdio: "inherit",
259
- env: process.env,
260
- });
261
- proc.on("close", (code) => {
262
- if (code === 0) {
263
- resolvePromise();
264
- return;
265
- }
266
- reject(new Error(`Docker exited with code ${code}`));
267
- });
268
- proc.on("error", reject);
269
- });
270
- return;
271
- }
272
- if (!noDocker) {
273
- console.log("Docker not available, running locally (requires Playwright, FFmpeg, etc.)");
274
- }
275
166
  const { loadConfig } = await import("./config-loader.js");
276
167
  const { runVideoScenario } = await import("./video-handler.js");
277
168
  const loaded = await loadConfig(resolve(jsonPath));
@@ -281,15 +172,7 @@ export async function generate(config, options = {}) {
281
172
  try {
282
173
  unlinkSync(jsonPath);
283
174
  }
284
- catch {
285
- // Best-effort cleanup for temp files.
286
- }
287
- try {
288
- unlinkSync(voiceScriptPath);
289
- }
290
- catch {
291
- // Best-effort cleanup for temp files.
292
- }
175
+ catch { }
293
176
  }
294
177
  }
295
178
  export { demoReelConfigSchema, demoReelConfigInputSchema };
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function ensurePiperBinary(): Promise<string>;
2
+ export declare function getPiperVoiceUrl(voice: string): {
3
+ model: string;
4
+ config: string;
5
+ } | null;
6
+ export declare function ensurePiperModel(voice: string, voiceDir: string): Promise<string>;
7
+ //# sourceMappingURL=piper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"piper.d.ts","sourceRoot":"","sources":["../src/piper.ts"],"names":[],"mappings":"AAsCA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CA+BzD;AAeD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAUxF;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BvF"}