@argo-video/cli 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +35 -34
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +25 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/init.d.ts.map +1 -1
  6. package/dist/init.js +29 -47
  7. package/dist/init.js.map +1 -1
  8. package/dist/overlays/index.d.ts +7 -2
  9. package/dist/overlays/index.d.ts.map +1 -1
  10. package/dist/overlays/index.js +49 -4
  11. package/dist/overlays/index.js.map +1 -1
  12. package/dist/overlays/manifest-loader.d.ts +4 -0
  13. package/dist/overlays/manifest-loader.d.ts.map +1 -0
  14. package/dist/overlays/manifest-loader.js +22 -0
  15. package/dist/overlays/manifest-loader.js.map +1 -0
  16. package/dist/overlays/manifest.d.ts.map +1 -1
  17. package/dist/overlays/manifest.js +4 -19
  18. package/dist/overlays/manifest.js.map +1 -1
  19. package/dist/overlays/types.d.ts +10 -0
  20. package/dist/overlays/types.d.ts.map +1 -1
  21. package/dist/overlays/types.js.map +1 -1
  22. package/dist/parse-playwright.d.ts +15 -0
  23. package/dist/parse-playwright.d.ts.map +1 -1
  24. package/dist/parse-playwright.js +17 -0
  25. package/dist/parse-playwright.js.map +1 -1
  26. package/dist/pipeline.d.ts.map +1 -1
  27. package/dist/pipeline.js +36 -3
  28. package/dist/pipeline.js.map +1 -1
  29. package/dist/preview.d.ts +29 -0
  30. package/dist/preview.d.ts.map +1 -0
  31. package/dist/preview.js +2137 -0
  32. package/dist/preview.js.map +1 -0
  33. package/dist/record.d.ts.map +1 -1
  34. package/dist/record.js +12 -4
  35. package/dist/record.js.map +1 -1
  36. package/dist/tts/engine.d.ts +8 -0
  37. package/dist/tts/engine.d.ts.map +1 -1
  38. package/dist/tts/engine.js.map +1 -1
  39. package/dist/tts/engines/elevenlabs.d.ts +2 -1
  40. package/dist/tts/engines/elevenlabs.d.ts.map +1 -1
  41. package/dist/tts/engines/elevenlabs.js +6 -3
  42. package/dist/tts/engines/elevenlabs.js.map +1 -1
  43. package/dist/tts/engines/gemini.d.ts +2 -1
  44. package/dist/tts/engines/gemini.d.ts.map +1 -1
  45. package/dist/tts/engines/gemini.js +3 -0
  46. package/dist/tts/engines/gemini.js.map +1 -1
  47. package/dist/tts/engines/kokoro.d.ts +2 -1
  48. package/dist/tts/engines/kokoro.d.ts.map +1 -1
  49. package/dist/tts/engines/kokoro.js +3 -0
  50. package/dist/tts/engines/kokoro.js.map +1 -1
  51. package/dist/tts/engines/mlx-audio.d.ts +2 -1
  52. package/dist/tts/engines/mlx-audio.d.ts.map +1 -1
  53. package/dist/tts/engines/mlx-audio.js +6 -0
  54. package/dist/tts/engines/mlx-audio.js.map +1 -1
  55. package/dist/tts/engines/openai.d.ts +7 -2
  56. package/dist/tts/engines/openai.d.ts.map +1 -1
  57. package/dist/tts/engines/openai.js +13 -2
  58. package/dist/tts/engines/openai.js.map +1 -1
  59. package/dist/tts/engines/sarvam.d.ts +2 -1
  60. package/dist/tts/engines/sarvam.d.ts.map +1 -1
  61. package/dist/tts/engines/sarvam.js +3 -0
  62. package/dist/tts/engines/sarvam.js.map +1 -1
  63. package/dist/tts/generate.d.ts.map +1 -1
  64. package/dist/tts/generate.js +16 -11
  65. package/dist/tts/generate.js.map +1 -1
  66. package/dist/validate.d.ts.map +1 -1
  67. package/dist/validate.js +36 -54
  68. package/dist/validate.js.map +1 -1
  69. package/package.json +3 -3
  70. package/scripts/setup-mlx-audio.sh +1 -1
  71. package/scripts/voice-clone-preview.sh +1 -1
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  **Turn Playwright demo scripts into polished product demo videos with AI voiceover.**
17
17
 
18
- Write a demo script with Playwright. Add a voiceover manifest. Run one command. Get an MP4 with overlays and narration.
18
+ Write a demo script with Playwright. Add a scenes manifest. Run one command. Get an MP4 with overlays and narration.
19
19
 
20
20
  ## Showcase
21
21
 
@@ -35,7 +35,7 @@ https://gist.github.com/user-attachments/assets/ba009e90-0310-454b-833e-e0d71d4d
35
35
  clips scene marks audio
36
36
  │ │
37
37
  ▼ ▼
38
- .voiceover.json → narration-aligned.wav → final.mp4
38
+ .scenes.json → narration-aligned.wav → final.mp4
39
39
  ```
40
40
 
41
41
  ## Quick start
@@ -56,13 +56,13 @@ npx argo pipeline example
56
56
 
57
57
  # Or run steps individually
58
58
  npx argo record example
59
- npx argo tts generate demos/example.voiceover.json
59
+ npx argo tts generate demos/example.scenes.json
60
60
  npx argo export example
61
61
  ```
62
62
 
63
63
  ## Writing a demo
64
64
 
65
- A demo is two files: a **script** and a **voiceover manifest**.
65
+ A demo is two files: a **script** and a **scenes manifest**.
66
66
 
67
67
  ### Demo script (`demos/my-feature.demo.ts`)
68
68
 
@@ -74,46 +74,43 @@ test('my-feature', async ({ page, narration }) => {
74
74
  await page.goto('/');
75
75
 
76
76
  narration.mark('intro');
77
- await showOverlay(page, 'intro', {
78
- type: 'lower-third',
79
- text: 'Welcome to our product',
80
- placement: 'bottom-center',
81
- motion: 'fade-in',
82
- autoBackground: true,
83
- }, narration.durationFor('intro'));
77
+ await showOverlay(page, 'intro', narration.durationFor('intro'));
84
78
 
85
79
  narration.mark('action');
86
- await withOverlay(page, 'action', {
87
- type: 'headline-card',
88
- title: 'Watch this',
89
- placement: 'top-right',
90
- motion: 'slide-in',
91
- }, async () => {
80
+ await withOverlay(page, 'action', async () => {
92
81
  await page.click('#get-started');
93
82
  await page.waitForTimeout(narration.durationFor('action'));
94
83
  });
95
84
 
96
85
  narration.mark('done');
97
- await showOverlay(page, 'done', {
98
- type: 'callout',
99
- text: "That's it!",
100
- placement: 'top-left',
101
- motion: 'fade-in',
102
- }, narration.durationFor('done'));
86
+ await showOverlay(page, 'done', narration.durationFor('done'));
103
87
  });
104
88
  ```
105
89
 
106
- ### Voiceover manifest (`demos/my-feature.voiceover.json`)
90
+ ### Scenes manifest (`demos/my-feature.scenes.json`)
107
91
 
108
92
  ```json
109
93
  [
110
- { "scene": "intro", "text": "Welcome to our product — let me show you around." },
111
- { "scene": "action", "text": "Just click get started and you're off." },
112
- { "scene": "done", "text": "And that's all there is to it.", "voice": "af_heart" }
94
+ {
95
+ "scene": "intro",
96
+ "text": "Welcome to our product let me show you around.",
97
+ "overlay": { "type": "lower-third", "text": "Welcome to our product", "placement": "bottom-center", "motion": "fade-in", "autoBackground": true }
98
+ },
99
+ {
100
+ "scene": "action",
101
+ "text": "Just click get started and you're off.",
102
+ "overlay": { "type": "headline-card", "title": "Watch this", "placement": "top-right", "motion": "slide-in" }
103
+ },
104
+ {
105
+ "scene": "done",
106
+ "text": "And that's all there is to it.",
107
+ "voice": "af_heart",
108
+ "overlay": { "type": "callout", "text": "That's it!", "placement": "top-left", "motion": "fade-in" }
109
+ }
113
110
  ]
114
111
  ```
115
112
 
116
- Each `scene` in the manifest maps to a `narration.mark()` call in the script. Argo records the timestamp of each mark, generates TTS clips, and aligns them to produce the final narrated video.
113
+ Each `scene` in the manifest maps to a `narration.mark()` call in the script. The `text` field is spoken narration; the optional `overlay` sub-object defines what appears on screen. Argo records the timestamp of each mark, generates TTS clips, and aligns them to produce the final narrated video.
117
114
 
118
115
  ## Configuration
119
116
 
@@ -181,6 +178,7 @@ argo tts generate <manifest> Generate TTS clips from manifest
181
178
  argo export <demo> Merge video + audio to MP4
182
179
  argo pipeline <demo> Run all steps end-to-end
183
180
  argo validate <demo> Check scene name consistency (no TTS/recording)
181
+ argo preview <demo> Browser-based editor for voiceover, overlays, timing
184
182
  argo doctor Check environment (ffmpeg, Playwright, config)
185
183
  argo --config <path> <command> Use a custom config file
186
184
 
@@ -188,6 +186,7 @@ Options:
188
186
  --browser <engine> chromium | webkit | firefox (overrides config)
189
187
  --base-url <url> Override baseURL from config
190
188
  --headed Run browser in visible mode
189
+ --port <number> Preview server port (default: auto)
191
190
  ```
192
191
 
193
192
  ## API
@@ -208,8 +207,10 @@ import { defineConfig, demosProject, engines } from '@argo-video/cli';
208
207
  | `test` | Playwright `test` with `narration` fixture injected |
209
208
  | `expect` | Re-exported from Playwright |
210
209
  | `demoType(page, selectorOrLocator, text, delay?)` | Type character-by-character — accepts CSS selector or Playwright Locator |
211
- | `showOverlay(page, scene, cue, durationMs)` | Show a templated overlay (lower-third, headline-card, callout, image-card) |
212
- | `withOverlay(page, scene, cue, action)` | Show overlay during an async action |
210
+ | `showOverlay(page, scene, durationMs)` | Show overlay from manifest for a fixed duration |
211
+ | `showOverlay(page, scene, cue, durationMs)` | Show overlay with inline cue (backward compat) |
212
+ | `withOverlay(page, scene, action)` | Show overlay from manifest during an async action |
213
+ | `withOverlay(page, scene, cue, action)` | Show overlay with inline cue during action (backward compat) |
213
214
  | `hideOverlay(page, zone?)` | Remove overlay from a zone |
214
215
  | `showConfetti(page, opts?)` | Non-blocking confetti animation (`spread: 'burst' \| 'rain'`, `wait: true` to block) |
215
216
  | `spotlight(page, selector, opts?)` | Dark overlay with hole around target element |
@@ -240,7 +241,7 @@ choco install ffmpeg # Windows
240
241
 
241
242
  ## How the pipeline works
242
243
 
243
- 1. **TTS** — Generates WAV clips from the voiceover manifest. Kokoro is the default (local, free), but you can swap in OpenAI, ElevenLabs, Gemini, Sarvam, or mlx-audio via `engines.*` factories. Clips are cached by content hash in `.argo/<demo>/clips/`.
244
+ 1. **TTS** — Generates WAV clips from the scenes manifest. Kokoro is the default (local, free), but you can swap in OpenAI, ElevenLabs, Gemini, Sarvam, or mlx-audio via `engines.*` factories. Clips are cached by content hash in `.argo/<demo>/clips/`.
244
245
 
245
246
  ```js
246
247
  import { defineConfig, engines } from '@argo-video/cli';
@@ -254,7 +255,7 @@ choco install ffmpeg # Windows
254
255
  | `engines.kokoro()` | local | built-in | none |
255
256
  | `engines.mlxAudio()` | local | `pip install mlx-audio` | none |
256
257
  | `engines.openai()` | cloud | `npm i openai` | `OPENAI_API_KEY` |
257
- | `engines.elevenlabs()` | cloud | `npm i elevenlabs` | `ELEVENLABS_API_KEY` |
258
+ | `engines.elevenlabs()` | cloud | `npm i @elevenlabs/elevenlabs-js` | `ELEVENLABS_API_KEY` |
258
259
  | `engines.gemini()` | cloud | `npm i @google/genai` | `GEMINI_API_KEY` |
259
260
  | `engines.sarvam()` | cloud | `npm i sarvamai` | `SARVAM_API_KEY` |
260
261
 
@@ -268,7 +269,7 @@ choco install ffmpeg # Windows
268
269
  bash $(npm root)/@argo-video/cli/scripts/voice-clone-preview.sh \
269
270
  --ref-audio assets/ref-voice.wav \
270
271
  --ref-text "Transcript of what I said." \
271
- --voiceover demos/showcase.voiceover.json --play
272
+ --voiceover demos/showcase.scenes.json --play
272
273
  ```
273
274
 
274
275
  ```js
@@ -306,7 +307,7 @@ Argo ships as a **Claude Code skill** so LLMs can create demo videos autonomousl
306
307
  /plugin marketplace add shreyaskarnik/argo
307
308
  ```
308
309
 
309
- The skill teaches Claude how to write demo scripts, voiceover manifests, overlay cues, and run the pipeline — no manual guidance needed.
310
+ The skill teaches Claude how to write demo scripts, scenes manifests, overlay cues, and run the pipeline — no manual guidance needed.
310
311
 
311
312
  ## License
312
313
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA4B5C,wBAAgB,aAAa,IAAI,OAAO,CAiJvC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AA6B5C,wBAAgB,aAAa,IAAI,OAAO,CAyKvC"}
package/dist/cli.js CHANGED
@@ -6,6 +6,7 @@ import { generateClips } from './tts/generate.js';
6
6
  import { exportVideo } from './export.js';
7
7
  import { runPipeline } from './pipeline.js';
8
8
  import { init, initFrom } from './init.js';
9
+ import { startPreviewServer } from './preview.js';
9
10
  import { validateDemo } from './validate.js';
10
11
  import { runDoctor, formatDoctorResults } from './doctor.js';
11
12
  function validateDemoName(name) {
@@ -64,7 +65,7 @@ export function createProgram() {
64
65
  const config = await ensureTTSEngine(await loadConfig(process.cwd(), configPath));
65
66
  await generateClips({
66
67
  manifestPath: manifest,
67
- demoName: basename(manifest).replace(/\.voiceover\.json$/, '').replace(/\.json$/, ''),
68
+ demoName: basename(manifest).replace(/\.scenes\.json$/, '').replace(/\.voiceover\.json$/, '').replace(/\.json$/, ''),
68
69
  engine: config.tts.engine,
69
70
  projectRoot: '.',
70
71
  defaults: { voice: config.tts.defaultVoice, speed: config.tts.defaultSpeed },
@@ -143,6 +144,29 @@ export function createProgram() {
143
144
  if (fails > 0)
144
145
  process.exitCode = 1;
145
146
  });
147
+ program
148
+ .command('preview <demo>')
149
+ .description('Start a browser-based preview server to tweak voiceover, overlays, and timing without re-recording')
150
+ .option('--port <number>', 'server port (default: auto)', parseInt)
151
+ .action(async (demo, cmdOpts) => {
152
+ validateDemoName(demo);
153
+ const configPath = program.opts().config;
154
+ const config = await loadConfig(process.cwd(), configPath);
155
+ const { url } = await startPreviewServer({
156
+ demoName: demo,
157
+ argoDir: '.argo',
158
+ demosDir: config.demosDir,
159
+ port: cmdOpts.port,
160
+ ttsDefaults: {
161
+ voice: config.tts.defaultVoice,
162
+ speed: config.tts.defaultSpeed,
163
+ },
164
+ });
165
+ console.log(`\nArgo Preview running at: ${url}`);
166
+ console.log('Press Ctrl+C to stop.\n');
167
+ // Keep process alive
168
+ await new Promise(() => { });
169
+ });
146
170
  program
147
171
  .command('init')
148
172
  .description('Initialize a new Argo project')
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAuC,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CACb,sBAAsB,IAAI,iEAAiE,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,MAAkB;IAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,MAAM,CAAC;SACZ,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;IAExD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,gCAAgC,CAAC;SAC7C,SAAS,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;SACxG,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,6CAA6C,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAiE,EAAE,EAAE;QAChG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAClH,CAAC;QACD,MAAM,OAAO,GAAI,OAAO,CAAC,OAAyB,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAC3E,MAAM,MAAM,CAAC,IAAI,EAAE;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO;YACP,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACjE,OAAO;YACP,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;YACjD,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc;YAC/C,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,gBAAgB;YACnD,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,cAAc,CAAC,CAAC;IAE/B,GAAG;SACA,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAClF,MAAM,aAAa,CAAC;YAClB,YAAY,EAAE,QAAQ;YACtB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YACrF,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAO;YAC1B,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE;SAC7E,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,oBAAoB,CAAC;SACjC,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,WAAW,CAAC;YAChB,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;YAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG;YACtB,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;YACrB,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;YAC/B,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YACjC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,iBAAiB;YACjD,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa;SAC3C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,8CAA8C,CAAC;SAC3D,SAAS,CAAC,IAAI,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;SACxG,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,UAAU,EAAE,6CAA6C,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAiE,EAAE,EAAE;QAChG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO;YAC1B,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAwB,EAAE,EAAE;YACtF,CAAC,CAAC,MAAM,CAAC;QACX,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,iEAAiE,CAAC;SAC9E,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE3E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAqB,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,iBAAiB,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,cAAc,MAAM,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;YACrG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,MAAM,SAAS,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;QAC9D,IAAI,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,eAAe,EAAE,uDAAuD,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,oDAAoD,CAAC;SAC7E,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;QAC1D,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,OAAO,CAAC,IAAI;gBAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;IACrC,aAAa,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5G,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAmJA,wBAAsB,IAAI,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrE;AAED,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DtE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAiIA,wBAAsB,IAAI,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAarE;AAED,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDtE"}
package/dist/init.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { mkdir, writeFile, readFile, access } from 'node:fs/promises';
2
2
  import { join, basename } from 'node:path';
3
- import { parsePlaywrightTest, generateDemoScript, generateVoiceoverSkeleton, generateOverlaysSkeleton, } from './parse-playwright.js';
3
+ import { parsePlaywrightTest, generateDemoScript, generateScenesSkeleton, } from './parse-playwright.js';
4
4
  async function writeIfMissing(filePath, content) {
5
5
  try {
6
6
  await access(filePath);
@@ -23,52 +23,40 @@ test('example', async ({ page, narration }) => {
23
23
  await page.goto('/');
24
24
 
25
25
  narration.mark('welcome');
26
- await showOverlay(page, 'welcome', {
27
- type: 'lower-third',
28
- text: 'Welcome to our app',
29
- motion: 'fade-in',
30
- autoBackground: true,
31
- }, narration.durationFor('welcome'));
26
+ await showOverlay(page, 'welcome', narration.durationFor('welcome'));
32
27
 
33
28
  narration.mark('action');
34
- await withOverlay(page, 'action', {
35
- type: 'headline-card',
36
- title: 'Watch this',
37
- placement: 'top-right',
38
- motion: 'slide-in',
39
- autoBackground: true,
40
- }, async () => {
29
+ await withOverlay(page, 'action', async () => {
41
30
  await page.click('button');
42
31
  await page.waitForTimeout(narration.durationFor('action'));
43
32
  });
44
33
 
45
34
  narration.mark('done');
46
- await showOverlay(page, 'done', {
47
- type: 'callout',
48
- text: 'All done!',
49
- motion: 'fade-in',
50
- autoBackground: true,
51
- }, narration.durationFor('done'));
35
+ await showOverlay(page, 'done', narration.durationFor('done'));
52
36
  });
53
37
  `;
54
- const EXAMPLE_VOICEOVER = JSON.stringify([
55
- { scene: 'welcome', text: 'Welcome to our app — let me show you around.' },
56
- { scene: 'action', text: 'It only takes one click to get started.' },
57
- { scene: 'done', text: "And that's it. You're all set.", voice: 'af_heart' },
58
- ], null, 2) + '\n';
59
- const EXAMPLE_OVERLAYS = JSON.stringify([
38
+ const EXAMPLE_SCENES = JSON.stringify([
60
39
  {
61
40
  scene: 'welcome',
62
- type: 'lower-third',
63
- text: 'Welcome to our app',
41
+ text: 'Welcome to our app — let me show you around.',
42
+ overlay: { type: 'lower-third', text: 'Welcome to our app', motion: 'fade-in' },
64
43
  },
65
44
  {
66
45
  scene: 'action',
67
- type: 'headline-card',
68
- placement: 'top-left',
69
- title: 'One-click setup',
70
- body: 'Just press the button to get started.',
71
- motion: 'slide-in',
46
+ text: 'It only takes one click to get started.',
47
+ voice: 'af_heart',
48
+ overlay: {
49
+ type: 'headline-card',
50
+ title: 'One-click setup',
51
+ body: 'Just press the button to get started.',
52
+ placement: 'top-left',
53
+ motion: 'slide-in',
54
+ },
55
+ },
56
+ {
57
+ scene: 'done',
58
+ text: "And that's it. You're all set.",
59
+ voice: 'af_heart',
72
60
  },
73
61
  ], null, 2) + '\n';
74
62
  const ARGO_CONFIG = `import { defineConfig } from '@argo-video/cli';
@@ -130,8 +118,7 @@ export async function init(cwd = process.cwd()) {
130
118
  const demosDir = join(cwd, 'demos');
131
119
  await mkdir(demosDir, { recursive: true });
132
120
  await writeIfMissing(join(demosDir, 'example.demo.ts'), EXAMPLE_DEMO);
133
- await writeIfMissing(join(demosDir, 'example.voiceover.json'), EXAMPLE_VOICEOVER);
134
- await writeIfMissing(join(demosDir, 'example.overlays.json'), EXAMPLE_OVERLAYS);
121
+ await writeIfMissing(join(demosDir, 'example.scenes.json'), EXAMPLE_SCENES);
135
122
  await writeIfMissing(join(cwd, 'argo.config.mjs'), ARGO_CONFIG);
136
123
  await writeIfMissing(join(cwd, 'playwright.config.ts'), PLAYWRIGHT_CONFIG);
137
124
  console.log('\nArgo initialized! Next steps:');
@@ -171,24 +158,19 @@ export async function initFrom(options) {
171
158
  // Generate demo script
172
159
  const demoScript = generateDemoScript(parsed);
173
160
  await writeIfMissing(join(demosDir, `${demoName}.demo.ts`), demoScript);
174
- // Generate voiceover skeleton with hints
175
- const voiceover = generateVoiceoverSkeleton(parsed);
176
- const voiceoverJson = JSON.stringify(voiceover, null, 2) + '\n';
177
- await writeIfMissing(join(demosDir, `${demoName}.voiceover.json`), voiceoverJson);
178
- // Generate overlays skeleton
179
- const overlays = generateOverlaysSkeleton(parsed);
180
- const overlaysJson = JSON.stringify(overlays, null, 2) + '\n';
181
- await writeIfMissing(join(demosDir, `${demoName}.overlays.json`), overlaysJson);
161
+ // Generate unified scenes skeleton with hints
162
+ const scenes = generateScenesSkeleton(parsed);
163
+ const scenesJson = JSON.stringify(scenes, null, 2) + '\n';
164
+ await writeIfMissing(join(demosDir, `${demoName}.scenes.json`), scenesJson);
182
165
  // Scaffold config files if they don't exist
183
166
  await writeIfMissing(join(cwd, 'argo.config.mjs'), ARGO_CONFIG);
184
167
  await writeIfMissing(join(cwd, 'playwright.config.ts'), PLAYWRIGHT_CONFIG);
185
168
  console.log(`\nConverted ${options.from} → ${demoName} (${parsed.scenes.length} scenes)`);
186
169
  console.log('\nNext steps:');
187
- console.log(` 1. Fill in voiceover text: demos/${demoName}.voiceover.json`);
170
+ console.log(` 1. Fill in scenes manifest: demos/${demoName}.scenes.json`);
188
171
  console.log(` (use _hint fields as context, then remove them)`);
189
- console.log(` 2. Refine overlays: demos/${demoName}.overlays.json`);
190
- console.log(` 3. Run: npx argo pipeline ${demoName}`);
191
- console.log(`\nTip: Ask your LLM to "flesh out the voiceover for ${demoName}" — it can`);
172
+ console.log(` 2. Run: npx argo pipeline ${demoName}`);
173
+ console.log(`\nTip: Ask your LLM to "flesh out the scenes for ${demoName}" — it can`);
192
174
  console.log('read the _hint fields and write natural narration text for each scene.');
193
175
  }
194
176
  //# sourceMappingURL=init.js.map
package/dist/init.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,18 @@
1
1
  import type { Page } from '@playwright/test';
2
2
  import type { OverlayCue, Zone } from './types.js';
3
3
  export type { OverlayCue, OverlayManifestEntry, Zone, TemplateType, MotionPreset } from './types.js';
4
+ export type { SceneEntry } from './types.js';
4
5
  export { renderTemplate } from './templates.js';
5
6
  export type { BackgroundTheme } from './zones.js';
6
- export declare function showOverlay(page: Page, _scene: string, cue: OverlayCue, durationMs: number, options?: {
7
+ export { resetManifestCache } from './manifest-loader.js';
8
+ export declare function resolveCue(scene: string, cueOrPartial?: OverlayCue | Partial<OverlayCue>): OverlayCue;
9
+ export declare function showOverlay(page: Page, scene: string, durationMs: number): Promise<void>;
10
+ export declare function showOverlay(page: Page, scene: string, cue: OverlayCue | Partial<OverlayCue>, durationMs: number, options?: {
7
11
  autoBackground?: boolean;
8
12
  }): Promise<void>;
9
13
  export declare function hideOverlay(page: Page, zone?: Zone): Promise<void>;
10
- export declare function withOverlay(page: Page, _scene: string, cue: OverlayCue, action: () => Promise<void>, options?: {
14
+ export declare function withOverlay(page: Page, scene: string, action: () => Promise<void>): Promise<void>;
15
+ export declare function withOverlay(page: Page, scene: string, cue: OverlayCue | Partial<OverlayCue>, action: () => Promise<void>, options?: {
11
16
  autoBackground?: boolean;
12
17
  }): Promise<void>;
13
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/overlays/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMnD,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyBlD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,IAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAef"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/overlays/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAOnD,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrG,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAyB1D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAcrG;AAGD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,EACrC,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAAC;AAqCjB,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,IAAI,GAAE,IAAsB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAEf;AAGD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;AACjB,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,EACrC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC3B,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { injectIntoZone, removeZone, ZONE_ID_PREFIX, detectBackgroundTheme } from './zones.js';
2
2
  import { renderTemplate } from './templates.js';
3
3
  import { getMotionCSS, getMotionStyles } from './motion.js';
4
+ import { loadOverlayFromManifest } from './manifest-loader.js';
4
5
  export { renderTemplate } from './templates.js';
6
+ export { resetManifestCache } from './manifest-loader.js';
5
7
  function getConfigAutoBackground() {
6
8
  return process.env.ARGO_AUTO_BACKGROUND === '1';
7
9
  }
@@ -18,10 +20,38 @@ async function resolveTheme(page, cue, zone, optionsAutoBackground) {
18
20
  return 'dark';
19
21
  return detectBackgroundTheme(page, zone);
20
22
  }
21
- export async function showOverlay(page, _scene, cue, durationMs, options) {
23
+ export function resolveCue(scene, cueOrPartial) {
24
+ const manifestCue = loadOverlayFromManifest(scene);
25
+ if (cueOrPartial && 'type' in cueOrPartial && cueOrPartial.type) {
26
+ // Full inline cue — merge with manifest if available
27
+ return manifestCue ? { ...manifestCue, ...cueOrPartial } : cueOrPartial;
28
+ }
29
+ if (manifestCue) {
30
+ // Manifest cue with optional overrides
31
+ return cueOrPartial ? { ...manifestCue, ...cueOrPartial } : manifestCue;
32
+ }
33
+ throw new Error(`No overlay found for scene "${scene}". ` +
34
+ `Either add an overlay entry in your .scenes.json manifest, or pass an inline cue.`);
35
+ }
36
+ export async function showOverlay(page, scene, cueOrDuration, durationMsOrOptions, options) {
37
+ let cue;
38
+ let durationMs;
39
+ let opts;
40
+ if (typeof cueOrDuration === 'number') {
41
+ // showOverlay(page, scene, durationMs)
42
+ cue = resolveCue(scene);
43
+ durationMs = cueOrDuration;
44
+ opts = undefined;
45
+ }
46
+ else {
47
+ // showOverlay(page, scene, cue, durationMs, options?)
48
+ cue = resolveCue(scene, cueOrDuration);
49
+ durationMs = durationMsOrOptions;
50
+ opts = options;
51
+ }
22
52
  const zone = cue.placement ?? getConfigDefaultPlacement() ?? 'bottom-center';
23
53
  const motion = cue.motion ?? 'none';
24
- const theme = await resolveTheme(page, cue, zone, options?.autoBackground);
54
+ const theme = await resolveTheme(page, cue, zone, opts?.autoBackground);
25
55
  const { contentHtml, styles } = renderTemplate(cue, theme);
26
56
  const zoneId = ZONE_ID_PREFIX + zone;
27
57
  const motionCSS = getMotionCSS(motion, zoneId);
@@ -33,10 +63,25 @@ export async function showOverlay(page, _scene, cue, durationMs, options) {
33
63
  export async function hideOverlay(page, zone = 'bottom-center') {
34
64
  await removeZone(page, zone);
35
65
  }
36
- export async function withOverlay(page, _scene, cue, action, options) {
66
+ export async function withOverlay(page, scene, cueOrAction, actionOrOptions, options) {
67
+ let cue;
68
+ let action;
69
+ let opts;
70
+ if (typeof cueOrAction === 'function') {
71
+ // withOverlay(page, scene, action)
72
+ cue = resolveCue(scene);
73
+ action = cueOrAction;
74
+ opts = undefined;
75
+ }
76
+ else {
77
+ // withOverlay(page, scene, cue, action, options?)
78
+ cue = resolveCue(scene, cueOrAction);
79
+ action = actionOrOptions;
80
+ opts = options;
81
+ }
37
82
  const zone = cue.placement ?? getConfigDefaultPlacement() ?? 'bottom-center';
38
83
  const motion = cue.motion ?? 'none';
39
- const theme = await resolveTheme(page, cue, zone, options?.autoBackground);
84
+ const theme = await resolveTheme(page, cue, zone, opts?.autoBackground);
40
85
  const { contentHtml, styles } = renderTemplate(cue, theme);
41
86
  const zoneId = ZONE_ID_PREFIX + zone;
42
87
  const motionCSS = getMotionCSS(motion, zoneId);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/overlays/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/overlays/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { OverlayCue } from './types.js';
2
+ export declare function resetManifestCache(): void;
3
+ export declare function loadOverlayFromManifest(scene: string): OverlayCue | undefined;
4
+ //# sourceMappingURL=manifest-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-loader.d.ts","sourceRoot":"","sources":["../../src/overlays/manifest-loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,YAAY,CAAC;AAIzD,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAUD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAK7E"}
@@ -0,0 +1,22 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ let cachedManifest = null;
3
+ export function resetManifestCache() {
4
+ cachedManifest = null;
5
+ }
6
+ function getManifest() {
7
+ if (cachedManifest !== null)
8
+ return cachedManifest;
9
+ const manifestPath = process.env.ARGO_OVERLAYS_PATH;
10
+ if (!manifestPath || !existsSync(manifestPath))
11
+ return null;
12
+ cachedManifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
13
+ return cachedManifest;
14
+ }
15
+ export function loadOverlayFromManifest(scene) {
16
+ const manifest = getManifest();
17
+ if (!manifest)
18
+ return undefined;
19
+ const entry = manifest.find((e) => e.scene === scene);
20
+ return entry?.overlay;
21
+ }
22
+ //# sourceMappingURL=manifest-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-loader.js","sourceRoot":"","sources":["../../src/overlays/manifest-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGnD,IAAI,cAAc,GAAwB,IAAI,CAAC;AAE/C,MAAM,UAAU,kBAAkB;IAChC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,cAAc,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC;IACnD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACpD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAiB,CAAC;IACjF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACtD,OAAO,KAAK,EAAE,OAAO,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/overlays/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,CA4CxC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAEvE;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,oBAAoB,EAAE,EAC/B,YAAY,EAAE,MAAM,GACnB,oBAAoB,EAAE,CAOxB"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/overlays/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAc,MAAM,YAAY,CAAC;AAEnE,wBAAsB,mBAAmB,CACvC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC,CA2BxC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAEvE;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,oBAAoB,EAAE,EAC/B,YAAY,EAAE,MAAM,GACnB,oBAAoB,EAAE,CAOxB"}
@@ -1,6 +1,5 @@
1
1
  import { readFile } from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
- import { isValidTemplateType, isValidZone, isValidMotion } from './types.js';
4
3
  export async function loadOverlayManifest(manifestPath) {
5
4
  if (!existsSync(manifestPath))
6
5
  return null;
@@ -15,26 +14,12 @@ export async function loadOverlayManifest(manifestPath) {
15
14
  if (!Array.isArray(parsed)) {
16
15
  throw new Error(`Overlay manifest ${manifestPath} must contain a JSON array`);
17
16
  }
17
+ // Extract overlay entries from unified .scenes.json format (overlay nested under entry.overlay)
18
18
  const entries = [];
19
- for (let i = 0; i < parsed.length; i++) {
20
- const entry = parsed[i];
21
- const prefix = `Overlay manifest entry ${i}`;
22
- if (!entry.scene || typeof entry.scene !== 'string') {
23
- throw new Error(`${prefix}: missing required field "scene"`);
19
+ for (const entry of parsed) {
20
+ if (entry.overlay && entry.scene) {
21
+ entries.push({ ...entry.overlay, scene: entry.scene });
24
22
  }
25
- if (!entry.type || typeof entry.type !== 'string') {
26
- throw new Error(`${prefix}: missing required field "type"`);
27
- }
28
- if (!isValidTemplateType(entry.type)) {
29
- throw new Error(`${prefix}: unknown overlay type "${entry.type}"`);
30
- }
31
- if (entry.placement && !isValidZone(entry.placement)) {
32
- throw new Error(`${prefix}: unknown placement "${entry.placement}"`);
33
- }
34
- if (entry.motion && !isValidMotion(entry.motion)) {
35
- throw new Error(`${prefix}: unknown motion "${entry.motion}"`);
36
- }
37
- entries.push(entry);
38
23
  }
39
24
  return entries;
40
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/overlays/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/overlays/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAAoB;IAEpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAElD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oCAAoC,YAAY,KAAM,GAAa,CAAC,OAAO,EAAE,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oBAAoB,YAAY,4BAA4B,CAAC,CAAC;IAChF,CAAC;IAED,gGAAgG;IAChG,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAsB,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAA0B,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAA+B;IAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAA+B,EAC/B,YAAoB;IAEpB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAClE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC"}