agent-screenplay 0.1.1 → 0.1.2

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 (56) hide show
  1. package/README.md +26 -6
  2. package/assets/editor/index.html +13 -7
  3. package/dist/cli.js +2 -1
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core.js +2 -14
  6. package/dist/core.js.map +1 -1
  7. package/dist/direct/plan.d.ts +2 -0
  8. package/dist/direct/plan.js +8 -0
  9. package/dist/direct/plan.js.map +1 -1
  10. package/dist/drivers/browser.d.ts +14 -0
  11. package/dist/drivers/browser.js +39 -1
  12. package/dist/drivers/browser.js.map +1 -1
  13. package/dist/drivers/web.d.ts +5 -0
  14. package/dist/drivers/web.js +68 -6
  15. package/dist/drivers/web.js.map +1 -1
  16. package/dist/editor/server.d.ts +12 -1
  17. package/dist/editor/server.js +27 -4
  18. package/dist/editor/server.js.map +1 -1
  19. package/dist/login.d.ts +9 -1
  20. package/dist/login.js +62 -29
  21. package/dist/login.js.map +1 -1
  22. package/dist/mcp/server.js +13 -3
  23. package/dist/mcp/server.js.map +1 -1
  24. package/dist/render/presets.d.ts +20 -3
  25. package/dist/render/presets.js +30 -3
  26. package/dist/render/presets.js.map +1 -1
  27. package/dist/render/render.js +3 -0
  28. package/dist/render/render.js.map +1 -1
  29. package/dist/render/style.d.ts +10 -1
  30. package/dist/render/style.js +78 -2
  31. package/dist/render/style.js.map +1 -1
  32. package/dist/scenario/config.d.ts +1 -0
  33. package/dist/scenario/fingerprint.js +2 -2
  34. package/dist/scenario/fingerprint.js.map +1 -1
  35. package/dist/scenario/schema.d.ts +43 -3
  36. package/dist/scenario/schema.js +24 -7
  37. package/dist/scenario/schema.js.map +1 -1
  38. package/dist/scenario/target.js +2 -1
  39. package/dist/scenario/target.js.map +1 -1
  40. package/dist/version.d.ts +1 -1
  41. package/dist/version.js +1 -1
  42. package/dist/voice/audio.d.ts +6 -0
  43. package/dist/voice/audio.js +36 -0
  44. package/dist/voice/audio.js.map +1 -0
  45. package/dist/voice/cartesia.d.ts +5 -0
  46. package/dist/voice/cartesia.js +17 -6
  47. package/dist/voice/cartesia.js.map +1 -1
  48. package/dist/voice/elevenlabs.d.ts +8 -0
  49. package/dist/voice/elevenlabs.js +29 -0
  50. package/dist/voice/elevenlabs.js.map +1 -0
  51. package/dist/voice/narration.d.ts +16 -0
  52. package/dist/voice/narration.js +83 -0
  53. package/dist/voice/narration.js.map +1 -0
  54. package/package.json +1 -1
  55. package/schema/scenario.schema.json +76 -4
  56. package/skills/screenplay/SKILL.md +20 -11
@@ -15,6 +15,7 @@ export declare const SURFACES: readonly ["window", "menubar", "menu", "sheet", "
15
15
  export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
16
16
  say: z.ZodOptional<z.ZodString>;
17
17
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
18
+ audio: z.ZodOptional<z.ZodString>;
18
19
  hold: z.ZodOptional<z.ZodNumber>;
19
20
  app: z.ZodOptional<z.ZodString>;
20
21
  surface: z.ZodOptional<z.ZodEnum<{
@@ -29,6 +30,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
29
30
  }, z.core.$strict>, z.ZodObject<{
30
31
  say: z.ZodOptional<z.ZodString>;
31
32
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
33
+ audio: z.ZodOptional<z.ZodString>;
32
34
  hold: z.ZodOptional<z.ZodNumber>;
33
35
  app: z.ZodOptional<z.ZodString>;
34
36
  surface: z.ZodOptional<z.ZodEnum<{
@@ -43,6 +45,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
43
45
  }, z.core.$strict>, z.ZodObject<{
44
46
  say: z.ZodOptional<z.ZodString>;
45
47
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
48
+ audio: z.ZodOptional<z.ZodString>;
46
49
  hold: z.ZodOptional<z.ZodNumber>;
47
50
  app: z.ZodOptional<z.ZodString>;
48
51
  surface: z.ZodOptional<z.ZodEnum<{
@@ -62,6 +65,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
62
65
  }, z.core.$strict>, z.ZodObject<{
63
66
  say: z.ZodOptional<z.ZodString>;
64
67
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
68
+ audio: z.ZodOptional<z.ZodString>;
65
69
  hold: z.ZodOptional<z.ZodNumber>;
66
70
  app: z.ZodOptional<z.ZodString>;
67
71
  surface: z.ZodOptional<z.ZodEnum<{
@@ -80,6 +84,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
80
84
  }, z.core.$strict>, z.ZodObject<{
81
85
  say: z.ZodOptional<z.ZodString>;
82
86
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
87
+ audio: z.ZodOptional<z.ZodString>;
83
88
  hold: z.ZodOptional<z.ZodNumber>;
84
89
  app: z.ZodOptional<z.ZodString>;
85
90
  surface: z.ZodOptional<z.ZodEnum<{
@@ -94,6 +99,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
94
99
  }, z.core.$strict>, z.ZodObject<{
95
100
  say: z.ZodOptional<z.ZodString>;
96
101
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
102
+ audio: z.ZodOptional<z.ZodString>;
97
103
  hold: z.ZodOptional<z.ZodNumber>;
98
104
  app: z.ZodOptional<z.ZodString>;
99
105
  surface: z.ZodOptional<z.ZodEnum<{
@@ -108,6 +114,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
108
114
  }, z.core.$strict>, z.ZodObject<{
109
115
  say: z.ZodOptional<z.ZodString>;
110
116
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
117
+ audio: z.ZodOptional<z.ZodString>;
111
118
  hold: z.ZodOptional<z.ZodNumber>;
112
119
  app: z.ZodOptional<z.ZodString>;
113
120
  surface: z.ZodOptional<z.ZodEnum<{
@@ -127,6 +134,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
127
134
  }, z.core.$strict>, z.ZodObject<{
128
135
  say: z.ZodOptional<z.ZodString>;
129
136
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
137
+ audio: z.ZodOptional<z.ZodString>;
130
138
  hold: z.ZodOptional<z.ZodNumber>;
131
139
  app: z.ZodOptional<z.ZodString>;
132
140
  surface: z.ZodOptional<z.ZodEnum<{
@@ -142,6 +150,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
142
150
  }, z.core.$strict>, z.ZodObject<{
143
151
  say: z.ZodOptional<z.ZodString>;
144
152
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
153
+ audio: z.ZodOptional<z.ZodString>;
145
154
  hold: z.ZodOptional<z.ZodNumber>;
146
155
  app: z.ZodOptional<z.ZodString>;
147
156
  surface: z.ZodOptional<z.ZodEnum<{
@@ -157,6 +166,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
157
166
  }, z.core.$strict>, z.ZodObject<{
158
167
  say: z.ZodOptional<z.ZodString>;
159
168
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
169
+ audio: z.ZodOptional<z.ZodString>;
160
170
  hold: z.ZodOptional<z.ZodNumber>;
161
171
  app: z.ZodOptional<z.ZodString>;
162
172
  surface: z.ZodOptional<z.ZodEnum<{
@@ -173,14 +183,17 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
173
183
  subtitle: z.ZodOptional<z.ZodString>;
174
184
  duration: z.ZodOptional<z.ZodNumber>;
175
185
  say: z.ZodOptional<z.ZodString>;
186
+ audio: z.ZodOptional<z.ZodString>;
176
187
  }, z.core.$strict>, z.ZodObject<{
177
188
  end: z.ZodString;
178
189
  subtitle: z.ZodOptional<z.ZodString>;
179
190
  duration: z.ZodOptional<z.ZodNumber>;
180
191
  say: z.ZodOptional<z.ZodString>;
192
+ audio: z.ZodOptional<z.ZodString>;
181
193
  }, z.core.$strict>, z.ZodObject<{
182
194
  say: z.ZodOptional<z.ZodString>;
183
195
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
196
+ audio: z.ZodOptional<z.ZodString>;
184
197
  hold: z.ZodOptional<z.ZodNumber>;
185
198
  app: z.ZodOptional<z.ZodString>;
186
199
  surface: z.ZodOptional<z.ZodEnum<{
@@ -197,6 +210,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
197
210
  }, z.core.$strict>, z.ZodObject<{
198
211
  say: z.ZodOptional<z.ZodString>;
199
212
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
213
+ audio: z.ZodOptional<z.ZodString>;
200
214
  hold: z.ZodOptional<z.ZodNumber>;
201
215
  app: z.ZodOptional<z.ZodString>;
202
216
  surface: z.ZodOptional<z.ZodEnum<{
@@ -213,6 +227,7 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
213
227
  }, z.core.$strict>, z.ZodObject<{
214
228
  say: z.ZodOptional<z.ZodString>;
215
229
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
230
+ audio: z.ZodOptional<z.ZodString>;
216
231
  hold: z.ZodOptional<z.ZodNumber>;
217
232
  app: z.ZodOptional<z.ZodString>;
218
233
  surface: z.ZodOptional<z.ZodEnum<{
@@ -227,9 +242,9 @@ export declare const Step: z.ZodUnion<readonly [z.ZodObject<{
227
242
  duration: z.ZodOptional<z.ZodNumber>;
228
243
  }, z.core.$strict>]>;
229
244
  export type Step = z.infer<typeof Step>;
230
- /** Presets offered today (mesh gradients), then the first ones, still accepted. See render/presets.ts. */
231
- export declare const BACKGROUNDS: readonly ["aurora", "sky", "dusk", "ember", "graphite", "lagoon", "lilac", "peach", "linen", "sunset", "ocean", "lavender", "forest", "midnight", "mono", "paper"];
232
- export declare const CURRENT_BACKGROUNDS: ("aurora" | "dusk" | "ember" | "forest" | "graphite" | "lagoon" | "lavender" | "lilac" | "linen" | "midnight" | "mono" | "ocean" | "paper" | "peach" | "sky" | "sunset")[];
245
+ /** Presets offered today (glow), then earlier ones (mesh, then linear), still accepted. See render/presets.ts. */
246
+ export declare const BACKGROUNDS: readonly ["dawn", "iris", "citrus", "apricot", "coral", "blaze", "cloud", "glacier", "tide", "meadow", "aurora", "sky", "dusk", "ember", "graphite", "lagoon", "lilac", "peach", "linen", "sunset", "ocean", "lavender", "forest", "midnight", "mono", "paper"];
247
+ export declare const CURRENT_BACKGROUNDS: ("apricot" | "aurora" | "blaze" | "citrus" | "cloud" | "coral" | "dawn" | "dusk" | "ember" | "forest" | "glacier" | "graphite" | "iris" | "lagoon" | "lavender" | "lilac" | "linen" | "meadow" | "midnight" | "mono" | "ocean" | "paper" | "peach" | "sky" | "sunset" | "tide")[];
233
248
  export declare const Gradient: z.ZodObject<{
234
249
  gradient: z.ZodArray<z.ZodString>;
235
250
  angle: z.ZodOptional<z.ZodNumber>;
@@ -257,10 +272,15 @@ export declare const Style: z.ZodObject<{
257
272
  browser: "browser";
258
273
  none: "none";
259
274
  }>>;
275
+ cards: z.ZodOptional<z.ZodBoolean>;
260
276
  }, z.core.$strict>;
261
277
  export type Style = z.infer<typeof Style>;
262
278
  export declare const Voice: z.ZodObject<{
263
279
  enabled: z.ZodOptional<z.ZodBoolean>;
280
+ provider: z.ZodOptional<z.ZodEnum<{
281
+ cartesia: "cartesia";
282
+ elevenlabs: "elevenlabs";
283
+ }>>;
264
284
  language: z.ZodOptional<z.ZodString>;
265
285
  id: z.ZodOptional<z.ZodString>;
266
286
  speed: z.ZodOptional<z.ZodNumber>;
@@ -319,9 +339,14 @@ export declare const Scenario: z.ZodObject<{
319
339
  browser: "browser";
320
340
  none: "none";
321
341
  }>>;
342
+ cards: z.ZodOptional<z.ZodBoolean>;
322
343
  }, z.core.$strict>>;
323
344
  voice: z.ZodOptional<z.ZodObject<{
324
345
  enabled: z.ZodOptional<z.ZodBoolean>;
346
+ provider: z.ZodOptional<z.ZodEnum<{
347
+ cartesia: "cartesia";
348
+ elevenlabs: "elevenlabs";
349
+ }>>;
325
350
  language: z.ZodOptional<z.ZodString>;
326
351
  id: z.ZodOptional<z.ZodString>;
327
352
  speed: z.ZodOptional<z.ZodNumber>;
@@ -337,6 +362,7 @@ export declare const Scenario: z.ZodObject<{
337
362
  steps: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
338
363
  say: z.ZodOptional<z.ZodString>;
339
364
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
365
+ audio: z.ZodOptional<z.ZodString>;
340
366
  hold: z.ZodOptional<z.ZodNumber>;
341
367
  app: z.ZodOptional<z.ZodString>;
342
368
  surface: z.ZodOptional<z.ZodEnum<{
@@ -351,6 +377,7 @@ export declare const Scenario: z.ZodObject<{
351
377
  }, z.core.$strict>, z.ZodObject<{
352
378
  say: z.ZodOptional<z.ZodString>;
353
379
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
380
+ audio: z.ZodOptional<z.ZodString>;
354
381
  hold: z.ZodOptional<z.ZodNumber>;
355
382
  app: z.ZodOptional<z.ZodString>;
356
383
  surface: z.ZodOptional<z.ZodEnum<{
@@ -365,6 +392,7 @@ export declare const Scenario: z.ZodObject<{
365
392
  }, z.core.$strict>, z.ZodObject<{
366
393
  say: z.ZodOptional<z.ZodString>;
367
394
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
395
+ audio: z.ZodOptional<z.ZodString>;
368
396
  hold: z.ZodOptional<z.ZodNumber>;
369
397
  app: z.ZodOptional<z.ZodString>;
370
398
  surface: z.ZodOptional<z.ZodEnum<{
@@ -384,6 +412,7 @@ export declare const Scenario: z.ZodObject<{
384
412
  }, z.core.$strict>, z.ZodObject<{
385
413
  say: z.ZodOptional<z.ZodString>;
386
414
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
415
+ audio: z.ZodOptional<z.ZodString>;
387
416
  hold: z.ZodOptional<z.ZodNumber>;
388
417
  app: z.ZodOptional<z.ZodString>;
389
418
  surface: z.ZodOptional<z.ZodEnum<{
@@ -402,6 +431,7 @@ export declare const Scenario: z.ZodObject<{
402
431
  }, z.core.$strict>, z.ZodObject<{
403
432
  say: z.ZodOptional<z.ZodString>;
404
433
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
434
+ audio: z.ZodOptional<z.ZodString>;
405
435
  hold: z.ZodOptional<z.ZodNumber>;
406
436
  app: z.ZodOptional<z.ZodString>;
407
437
  surface: z.ZodOptional<z.ZodEnum<{
@@ -416,6 +446,7 @@ export declare const Scenario: z.ZodObject<{
416
446
  }, z.core.$strict>, z.ZodObject<{
417
447
  say: z.ZodOptional<z.ZodString>;
418
448
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
449
+ audio: z.ZodOptional<z.ZodString>;
419
450
  hold: z.ZodOptional<z.ZodNumber>;
420
451
  app: z.ZodOptional<z.ZodString>;
421
452
  surface: z.ZodOptional<z.ZodEnum<{
@@ -430,6 +461,7 @@ export declare const Scenario: z.ZodObject<{
430
461
  }, z.core.$strict>, z.ZodObject<{
431
462
  say: z.ZodOptional<z.ZodString>;
432
463
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
464
+ audio: z.ZodOptional<z.ZodString>;
433
465
  hold: z.ZodOptional<z.ZodNumber>;
434
466
  app: z.ZodOptional<z.ZodString>;
435
467
  surface: z.ZodOptional<z.ZodEnum<{
@@ -449,6 +481,7 @@ export declare const Scenario: z.ZodObject<{
449
481
  }, z.core.$strict>, z.ZodObject<{
450
482
  say: z.ZodOptional<z.ZodString>;
451
483
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
484
+ audio: z.ZodOptional<z.ZodString>;
452
485
  hold: z.ZodOptional<z.ZodNumber>;
453
486
  app: z.ZodOptional<z.ZodString>;
454
487
  surface: z.ZodOptional<z.ZodEnum<{
@@ -464,6 +497,7 @@ export declare const Scenario: z.ZodObject<{
464
497
  }, z.core.$strict>, z.ZodObject<{
465
498
  say: z.ZodOptional<z.ZodString>;
466
499
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
500
+ audio: z.ZodOptional<z.ZodString>;
467
501
  hold: z.ZodOptional<z.ZodNumber>;
468
502
  app: z.ZodOptional<z.ZodString>;
469
503
  surface: z.ZodOptional<z.ZodEnum<{
@@ -479,6 +513,7 @@ export declare const Scenario: z.ZodObject<{
479
513
  }, z.core.$strict>, z.ZodObject<{
480
514
  say: z.ZodOptional<z.ZodString>;
481
515
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
516
+ audio: z.ZodOptional<z.ZodString>;
482
517
  hold: z.ZodOptional<z.ZodNumber>;
483
518
  app: z.ZodOptional<z.ZodString>;
484
519
  surface: z.ZodOptional<z.ZodEnum<{
@@ -495,14 +530,17 @@ export declare const Scenario: z.ZodObject<{
495
530
  subtitle: z.ZodOptional<z.ZodString>;
496
531
  duration: z.ZodOptional<z.ZodNumber>;
497
532
  say: z.ZodOptional<z.ZodString>;
533
+ audio: z.ZodOptional<z.ZodString>;
498
534
  }, z.core.$strict>, z.ZodObject<{
499
535
  end: z.ZodString;
500
536
  subtitle: z.ZodOptional<z.ZodString>;
501
537
  duration: z.ZodOptional<z.ZodNumber>;
502
538
  say: z.ZodOptional<z.ZodString>;
539
+ audio: z.ZodOptional<z.ZodString>;
503
540
  }, z.core.$strict>, z.ZodObject<{
504
541
  say: z.ZodOptional<z.ZodString>;
505
542
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
543
+ audio: z.ZodOptional<z.ZodString>;
506
544
  hold: z.ZodOptional<z.ZodNumber>;
507
545
  app: z.ZodOptional<z.ZodString>;
508
546
  surface: z.ZodOptional<z.ZodEnum<{
@@ -519,6 +557,7 @@ export declare const Scenario: z.ZodObject<{
519
557
  }, z.core.$strict>, z.ZodObject<{
520
558
  say: z.ZodOptional<z.ZodString>;
521
559
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
560
+ audio: z.ZodOptional<z.ZodString>;
522
561
  hold: z.ZodOptional<z.ZodNumber>;
523
562
  app: z.ZodOptional<z.ZodString>;
524
563
  surface: z.ZodOptional<z.ZodEnum<{
@@ -535,6 +574,7 @@ export declare const Scenario: z.ZodObject<{
535
574
  }, z.core.$strict>, z.ZodObject<{
536
575
  say: z.ZodOptional<z.ZodString>;
537
576
  zoom: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodNumber]>>;
577
+ audio: z.ZodOptional<z.ZodString>;
538
578
  hold: z.ZodOptional<z.ZodNumber>;
539
579
  app: z.ZodOptional<z.ZodString>;
540
580
  surface: z.ZodOptional<z.ZodEnum<{
@@ -24,6 +24,10 @@ const Common = {
24
24
  .union([z.boolean(), z.number().min(1).max(4)])
25
25
  .optional()
26
26
  .describe("false: keep the camera wide for this step. A number: force this zoom level (1 = no zoom)."),
27
+ audio: z
28
+ .string()
29
+ .optional()
30
+ .describe("An audio file (MP3, WAV, M4A…) with this step's narration, relative to the scenario: used instead of generating `say`, with no voice key. The step lasts at least as long as the file."),
27
31
  hold: z
28
32
  .number()
29
33
  .min(0)
@@ -91,6 +95,7 @@ const Title = z
91
95
  subtitle: z.string().optional(),
92
96
  duration: z.number().min(0.5).max(15).optional(),
93
97
  say: Common.say,
98
+ audio: Common.audio,
94
99
  })
95
100
  .strict();
96
101
  const End = z
@@ -99,6 +104,7 @@ const End = z
99
104
  subtitle: z.string().optional(),
100
105
  duration: z.number().min(0.5).max(15).optional(),
101
106
  say: Common.say,
107
+ audio: Common.audio,
102
108
  })
103
109
  .strict();
104
110
  const Callout = z
@@ -141,9 +147,9 @@ export const Step = z.union([
141
147
  Highlight,
142
148
  ZoomTo,
143
149
  ]);
144
- /** Presets offered today (mesh gradients), then the first ones, still accepted. See render/presets.ts. */
145
- export const BACKGROUNDS = ["aurora", "sky", "dusk", "ember", "graphite", "lagoon", "lilac", "peach", "linen", "sunset", "ocean", "lavender", "forest", "midnight", "mono", "paper"];
146
- export const CURRENT_BACKGROUNDS = BACKGROUNDS.slice(0, 9);
150
+ /** Presets offered today (glow), then earlier ones (mesh, then linear), still accepted. See render/presets.ts. */
151
+ export const BACKGROUNDS = ["dawn", "iris", "citrus", "apricot", "coral", "blaze", "cloud", "glacier", "tide", "meadow", "aurora", "sky", "dusk", "ember", "graphite", "lagoon", "lilac", "peach", "linen", "sunset", "ocean", "lavender", "forest", "midnight", "mono", "paper"];
152
+ export const CURRENT_BACKGROUNDS = BACKGROUNDS.slice(0, 10);
147
153
  const Color = z.string().regex(/^#([0-9a-f]{3}|[0-9a-f]{6})$/i, "a hex color like #0ea5e9");
148
154
  export const Gradient = z
149
155
  .object({
@@ -156,7 +162,7 @@ export const Style = z
156
162
  background: z
157
163
  .union([z.string(), Gradient])
158
164
  .optional()
159
- .describe(`A preset (${CURRENT_BACKGROUNDS.join(", ")}; default aurora), a color like #0f172a, an image path (relative to the file that sets it), or a gradient { "gradient": ["#0ea5e9", "#6366f1"], "angle": 135 }.`),
165
+ .describe(`A preset (${CURRENT_BACKGROUNDS.join(", ")}; default dawn), a color like #0f172a, an image path (relative to the file that sets it), or a gradient { "gradient": ["#0ea5e9", "#6366f1"], "angle": 135 }.`),
160
166
  padding: z.number().min(0).max(400).optional().describe("Space around the recording, in output pixels (default 72)."),
161
167
  radius: z.number().min(0).max(80).optional().describe("Corner radius of the recording (default 14)."),
162
168
  shadow: z.boolean().optional().describe("Drop shadow under the recording (default true)."),
@@ -167,15 +173,26 @@ export const Style = z
167
173
  captions: z.boolean().optional().describe("Show the `say` text as captions (default true)."),
168
174
  accent: z.string().optional().describe("Accent color for clicks, callouts and highlights (default #3b82f6)."),
169
175
  frame: z.enum(["none", "browser"]).optional().describe("Draw a minimal browser window bar above web recordings (default none)."),
176
+ cards: z
177
+ .boolean()
178
+ .optional()
179
+ .describe("Show the title and end cards (default false: `title` and `end` steps are left out of the video). Turn on when the person wants an intro and an outro."),
170
180
  })
171
181
  .strict();
172
182
  export const Voice = z
173
183
  .object({
174
- enabled: z.boolean().optional().describe("Speak each step's `say` text (default false). Needs CARTESIA_API_KEY."),
184
+ enabled: z
185
+ .boolean()
186
+ .optional()
187
+ .describe("Speak each step's `say` text (default false). Needs CARTESIA_API_KEY or ELEVENLABS_API_KEY, unless every spoken step has its own `audio` file."),
188
+ provider: z
189
+ .enum(["cartesia", "elevenlabs"])
190
+ .optional()
191
+ .describe("Who speaks (default: Cartesia when CARTESIA_API_KEY is set, else ElevenLabs when ELEVENLABS_API_KEY is)."),
175
192
  language: z.string().optional().describe("Language code, e.g. en, fr, de (default en)."),
176
- id: z.string().optional().describe("Cartesia voice id (default: a narration voice for the language)."),
193
+ id: z.string().optional().describe("The provider's voice id (default: a narration voice)."),
177
194
  speed: z.number().min(0.6).max(1.5).optional(),
178
- model: z.string().optional().describe("Cartesia model (default sonic-3.6)."),
195
+ model: z.string().optional().describe("The provider's model (default sonic-3.6 for Cartesia, eleven_multilingual_v2 for ElevenLabs)."),
179
196
  })
180
197
  .strict();
181
198
  export const Output = z
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/scenario/schema.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,8 @@ export function parseTarget(input) {
21
21
  case "testid":
22
22
  return { kind: "testid", id: unquote(rest) };
23
23
  case "css":
24
- return { kind: "css", selector: rest };
24
+ // `check` lists such targets as css=… (shows "…"): accept them copied whole.
25
+ return { kind: "css", selector: rest.replace(/\s+\(shows ".*"\)$/, "") };
25
26
  case "at": {
26
27
  const [x, y] = rest.split(",").map((v) => Number(v.trim()));
27
28
  if (!Number.isFinite(x) || !Number.isFinite(y))
@@ -1 +1 @@
1
- {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/scenario/target.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,GAAG,uCAAuC,CAAC;AAExD,0GAA0G;AAC1G,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,iDAAiD,CAAC,CAAC;YACxG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACzC,KAAK,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,gBAAgB,CAAC,CAAC;YAC1G,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD;YACE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/scenario/target.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,GAAG,uCAAuC,CAAC;AAExD,0GAA0G;AAC1G,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,iDAAiD,CAAC,CAAC;YACxG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,CAAC;QACD,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,KAAK;YACR,6EAA6E;YAC7E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3E,KAAK,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,gBAAgB,CAAC,CAAC;YAC1G,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;QACD;YACE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,CAAS;IACxB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvG,OAAO,CAAC,CAAC;AACX,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.1.1";
1
+ export declare const VERSION = "0.1.2";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.1.1";
1
+ export const VERSION = "0.1.2";
2
2
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,6 @@
1
+ import { type Clip } from "./cartesia.js";
2
+ /**
3
+ * Any audio file (MP3, WAV, M4A…) as a cached 44.1 kHz mono WAV clip with its duration: for
4
+ * narration a person generated elsewhere and sent back, and for providers that answer in MP3.
5
+ */
6
+ export declare function toClip(input: string | Buffer, cacheDir: string, label: string): Promise<Clip>;
@@ -0,0 +1,36 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { runFfmpeg } from "../ffmpeg.js";
5
+ import { VoiceError, wavDuration } from "./cartesia.js";
6
+ /**
7
+ * Any audio file (MP3, WAV, M4A…) as a cached 44.1 kHz mono WAV clip with its duration: for
8
+ * narration a person generated elsewhere and sent back, and for providers that answer in MP3.
9
+ */
10
+ export async function toClip(input, cacheDir, label) {
11
+ fs.mkdirSync(cacheDir, { recursive: true });
12
+ const bytes = typeof input === "string" ? readAudio(input, label) : input;
13
+ const hash = crypto.createHash("sha1").update(bytes).digest("hex").slice(0, 16);
14
+ const file = path.join(cacheDir, `${hash}.wav`);
15
+ if (!fs.existsSync(file)) {
16
+ const src = path.join(cacheDir, `${hash}.src`);
17
+ fs.writeFileSync(src, bytes);
18
+ try {
19
+ await runFfmpeg(["-i", src, "-ac", "1", "-ar", "44100", "-c:a", "pcm_s16le", `${file}.part.wav`]);
20
+ }
21
+ catch (e) {
22
+ throw new VoiceError(`${label} is not an audio file ffmpeg can read: ${e.message.slice(0, 300)}`);
23
+ }
24
+ finally {
25
+ fs.rmSync(src, { force: true });
26
+ }
27
+ fs.renameSync(`${file}.part.wav`, file);
28
+ }
29
+ return { file, duration: wavDuration(fs.readFileSync(file)) };
30
+ }
31
+ function readAudio(p, label) {
32
+ if (!fs.existsSync(p))
33
+ throw new VoiceError(`${label}: ${p} does not exist.`);
34
+ return fs.readFileSync(p);
35
+ }
36
+ //# sourceMappingURL=audio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/voice/audio.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAa,MAAM,eAAe,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,KAAsB,EAAE,QAAgB,EAAE,KAAa;IAClF,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC;QACpG,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,0CAA2C,CAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,GAAG,IAAI,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,SAAS,CAAC,CAAS,EAAE,KAAa;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC9E,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC"}
@@ -8,5 +8,10 @@ export interface Clip {
8
8
  export declare function voiceKey(): string | undefined;
9
9
  /** Synthesize each text (cached on disk by content), and return the clip files with their durations. */
10
10
  export declare function synthesizeAll(texts: Map<number, string>, voice: Voice, cacheDir: string): Promise<Map<number, Clip>>;
11
+ /**
12
+ * Where a sentence's Cartesia clip is cached. Without a voice id (a language with no built-in
13
+ * default), there is none to know offline: undefined.
14
+ */
15
+ export declare function cartesiaCacheFile(text: string, voice: Voice, cacheDir: string, voiceId?: string): string | undefined;
11
16
  /** Duration of a PCM WAV file, from its header. */
12
17
  export declare function wavDuration(buf: Buffer): number;
@@ -31,12 +31,7 @@ export async function synthesizeAll(texts, voice, cacheDir) {
31
31
  const model = voice.model ?? DEFAULT_MODEL;
32
32
  const out = new Map();
33
33
  for (const [index, text] of texts) {
34
- const hash = crypto
35
- .createHash("sha1")
36
- .update(JSON.stringify([model, voiceId, language, voice.speed ?? 1, text]))
37
- .digest("hex")
38
- .slice(0, 16);
39
- const file = path.join(cacheDir, `${hash}.wav`);
34
+ const file = cartesiaCacheFile(text, voice, cacheDir, voiceId);
40
35
  if (!fs.existsSync(file)) {
41
36
  const key = requireKey();
42
37
  const body = {
@@ -80,6 +75,22 @@ async function defaultVoice(language, key) {
80
75
  }
81
76
  throw new VoiceError(`No Cartesia voice found for language "${language}". Set voice.id in the scenario.`);
82
77
  }
78
+ /**
79
+ * Where a sentence's Cartesia clip is cached. Without a voice id (a language with no built-in
80
+ * default), there is none to know offline: undefined.
81
+ */
82
+ export function cartesiaCacheFile(text, voice, cacheDir, voiceId) {
83
+ const language = voice.language ?? "en";
84
+ const id = voiceId ?? voice.id ?? DEFAULT_VOICES[language.split("-")[0].toLowerCase()];
85
+ if (!id)
86
+ return undefined;
87
+ const hash = crypto
88
+ .createHash("sha1")
89
+ .update(JSON.stringify([voice.model ?? DEFAULT_MODEL, id, language, voice.speed ?? 1, text]))
90
+ .digest("hex")
91
+ .slice(0, 16);
92
+ return path.join(cacheDir, `${hash}.wav`);
93
+ }
83
94
  /** Duration of a PCM WAV file, from its header. */
84
95
  export function wavDuration(buf) {
85
96
  if (buf.toString("ascii", 0, 4) !== "RIFF")
@@ -1 +1 @@
1
- {"version":3,"file":"cartesia.js","sourceRoot":"","sources":["../../src/voice/cartesia.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cartesia.js","sourceRoot":"","sources":["../../src/voice/cartesia.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Voice } from "../scenario/schema.js";
2
+ export declare function elevenLabsKey(): string | undefined;
3
+ /** One sentence as MP3 bytes (every plan can get MP3; raw PCM needs a paid tier). */
4
+ export declare function elevenLabsSpeak(text: string, voice: Voice, key: string, step: number): Promise<Buffer>;
5
+ export declare const ELEVENLABS_DEFAULTS: {
6
+ model: string;
7
+ voice: string;
8
+ };
@@ -0,0 +1,29 @@
1
+ import { VoiceError } from "./cartesia.js";
2
+ const API = "https://api.elevenlabs.io/v1";
3
+ const DEFAULT_MODEL = "eleven_multilingual_v2";
4
+ /** George, one of ElevenLabs' premade voices; the multilingual model speaks French, German… with it. */
5
+ const DEFAULT_VOICE = "JBFqnCBsd6RMkjVDRZzb";
6
+ export function elevenLabsKey() {
7
+ return process.env.ELEVENLABS_API_KEY || undefined;
8
+ }
9
+ /** One sentence as MP3 bytes (every plan can get MP3; raw PCM needs a paid tier). */
10
+ export async function elevenLabsSpeak(text, voice, key, step) {
11
+ const id = voice.id ?? DEFAULT_VOICE;
12
+ const body = { text, model_id: voice.model ?? DEFAULT_MODEL };
13
+ if (voice.language)
14
+ body.language_code = voice.language.split("-")[0].toLowerCase();
15
+ if (voice.speed)
16
+ body.voice_settings = { speed: Math.max(0.7, Math.min(1.2, voice.speed)) };
17
+ const res = await fetch(`${API}/text-to-speech/${encodeURIComponent(id)}?output_format=mp3_44100_128`, {
18
+ method: "POST",
19
+ headers: { "xi-api-key": key, "Content-Type": "application/json", Accept: "audio/mpeg" },
20
+ body: JSON.stringify(body),
21
+ });
22
+ if (!res.ok) {
23
+ const detail = (await res.text()).slice(0, 400);
24
+ throw new VoiceError(`ElevenLabs refused the narration of step ${step} (${res.status}): ${detail}`);
25
+ }
26
+ return Buffer.from(await res.arrayBuffer());
27
+ }
28
+ export const ELEVENLABS_DEFAULTS = { model: DEFAULT_MODEL, voice: DEFAULT_VOICE };
29
+ //# sourceMappingURL=elevenlabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/voice/elevenlabs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,GAAG,GAAG,8BAA8B,CAAC;AAC3C,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAC/C,wGAAwG;AACxG,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAE7C,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC;AACrD,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,KAAY,EAAE,GAAW,EAAE,IAAY;IACzF,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,aAAa,CAAC;IACrC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,IAAI,aAAa,EAAE,CAAC;IACvF,IAAI,KAAK,CAAC,QAAQ;QAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACpF,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,cAAc,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,8BAA8B,EAAE;QACrG,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,YAAY,EAAE;QACxF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,IAAI,UAAU,CAAC,4CAA4C,IAAI,KAAK,GAAG,CAAC,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { LoadedScenario } from "../scenario/load.js";
2
+ import type { Voice } from "../scenario/schema.js";
3
+ import { type Clip } from "./cartesia.js";
4
+ export type Provider = "cartesia" | "elevenlabs";
5
+ /** The provider to speak with: the scenario's choice, else the one whose key is set (Cartesia first). */
6
+ export declare function pickProvider(voice: Voice, env?: NodeJS.ProcessEnv): Provider;
7
+ /**
8
+ * The narration of each step: a step's own `audio` file when it has one (no key needed), else,
9
+ * with `voice.enabled`, its `say` text spoken by Cartesia or ElevenLabs. Cached by content.
10
+ */
11
+ export declare function narrate(loaded: LoadedScenario, opts?: {
12
+ noVoice?: boolean;
13
+ log?: (msg: string) => void;
14
+ }): Promise<Map<number, Clip>>;
15
+ /** Where a sentence's ElevenLabs audio is cached. */
16
+ export declare function elevenLabsCacheFile(text: string, voice: Voice, cacheDir: string): string;