@contractspec/lib.video-gen 2.7.5 → 2.7.7

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 (75) hide show
  1. package/README.md +67 -25
  2. package/dist/browser/compositions/api-overview.js +114 -114
  3. package/dist/browser/compositions/index.js +115 -115
  4. package/dist/browser/compositions/primitives/index.js +113 -113
  5. package/dist/browser/compositions/social-clip.js +114 -114
  6. package/dist/browser/compositions/terminal-demo.js +113 -113
  7. package/dist/browser/design/index.js +35 -35
  8. package/dist/browser/generators/index.js +94 -94
  9. package/dist/browser/generators/scene-planner.js +94 -94
  10. package/dist/browser/generators/script-generator.js +94 -94
  11. package/dist/browser/generators/video-generator.js +94 -94
  12. package/dist/browser/i18n/catalogs/index.js +74 -74
  13. package/dist/browser/i18n/index.js +94 -94
  14. package/dist/browser/i18n/locale.js +2 -2
  15. package/dist/browser/i18n/messages.js +74 -74
  16. package/dist/browser/index.js +212 -212
  17. package/dist/browser/player/demo-player.js +116 -116
  18. package/dist/browser/player/index.js +116 -116
  19. package/dist/browser/remotion/Root.js +115 -115
  20. package/dist/browser/remotion/index.js +115 -115
  21. package/dist/compositions/api-overview.js +114 -114
  22. package/dist/compositions/index.d.ts +4 -4
  23. package/dist/compositions/index.js +115 -115
  24. package/dist/compositions/primitives/animated-text.d.ts +1 -1
  25. package/dist/compositions/primitives/brand-frame.d.ts +1 -1
  26. package/dist/compositions/primitives/index.d.ts +8 -8
  27. package/dist/compositions/primitives/index.js +113 -113
  28. package/dist/compositions/primitives/transition.d.ts +1 -1
  29. package/dist/compositions/social-clip.js +114 -114
  30. package/dist/compositions/terminal-demo.js +113 -113
  31. package/dist/design/index.d.ts +2 -2
  32. package/dist/design/index.js +35 -35
  33. package/dist/generators/index.d.ts +2 -2
  34. package/dist/generators/index.js +94 -94
  35. package/dist/generators/scene-planner.d.ts +1 -1
  36. package/dist/generators/scene-planner.js +94 -94
  37. package/dist/generators/script-generator.d.ts +2 -2
  38. package/dist/generators/script-generator.js +94 -94
  39. package/dist/generators/video-generator.js +94 -94
  40. package/dist/i18n/catalogs/index.d.ts +1 -1
  41. package/dist/i18n/catalogs/index.js +74 -74
  42. package/dist/i18n/index.d.ts +7 -7
  43. package/dist/i18n/index.js +94 -94
  44. package/dist/i18n/locale.d.ts +1 -1
  45. package/dist/i18n/locale.js +2 -2
  46. package/dist/i18n/messages.js +74 -74
  47. package/dist/index.d.ts +3 -3
  48. package/dist/index.js +212 -212
  49. package/dist/node/compositions/api-overview.js +114 -114
  50. package/dist/node/compositions/index.js +115 -115
  51. package/dist/node/compositions/primitives/index.js +113 -113
  52. package/dist/node/compositions/social-clip.js +114 -114
  53. package/dist/node/compositions/terminal-demo.js +113 -113
  54. package/dist/node/design/index.js +35 -35
  55. package/dist/node/generators/index.js +94 -94
  56. package/dist/node/generators/scene-planner.js +94 -94
  57. package/dist/node/generators/script-generator.js +94 -94
  58. package/dist/node/generators/video-generator.js +94 -94
  59. package/dist/node/i18n/catalogs/index.js +74 -74
  60. package/dist/node/i18n/index.js +94 -94
  61. package/dist/node/i18n/locale.js +2 -2
  62. package/dist/node/i18n/messages.js +74 -74
  63. package/dist/node/index.js +212 -212
  64. package/dist/node/player/demo-player.js +116 -116
  65. package/dist/node/player/index.js +116 -116
  66. package/dist/node/remotion/Root.js +115 -115
  67. package/dist/node/remotion/index.js +115 -115
  68. package/dist/player/demo-player.js +116 -116
  69. package/dist/player/index.d.ts +1 -1
  70. package/dist/player/index.js +116 -116
  71. package/dist/remotion/Root.js +115 -115
  72. package/dist/remotion/index.js +115 -115
  73. package/dist/renderers/index.d.ts +2 -2
  74. package/dist/types.d.ts +6 -6
  75. package/package.json +18 -18
@@ -191,54 +191,54 @@ Prioritize clarity and pacing. Each scene should communicate one idea.`,
191
191
  }
192
192
  });
193
193
 
194
- // src/i18n/catalogs/fr.ts
194
+ // src/i18n/catalogs/es.ts
195
195
  import { defineTranslation as defineTranslation2 } from "@contractspec/lib.contracts-spec/translations";
196
- var frMessages = defineTranslation2({
196
+ var esMessages = defineTranslation2({
197
197
  meta: {
198
198
  key: "video-gen.messages",
199
199
  version: "1.0.0",
200
200
  domain: "video-gen",
201
- description: "French translations for the video-gen package",
201
+ description: "Spanish translations for the video-gen package",
202
202
  owners: ["platform"],
203
203
  stability: "experimental"
204
204
  },
205
- locale: "fr",
205
+ locale: "es",
206
206
  fallback: "en",
207
207
  messages: {
208
208
  "prompt.script.system": {
209
- value: `Vous êtes un rédacteur de scripts de narration vidéo.
210
- Écrivez un script de narration pour une courte vidéo (30-60 secondes).
209
+ value: `Eres un redactor de guiones de narración para vídeo.
210
+ Escribe un guión de narración para un vídeo corto (30-60 segundos).
211
211
  {styleGuide}
212
212
 
213
- Retournez du JSON avec la forme :
213
+ Devuelve JSON con la forma:
214
214
  {
215
215
  "segments": [{ "sceneId": string, "text": string }],
216
216
  "fullText": string
217
217
  }
218
218
 
219
- Les identifiants de scène doivent être : "intro", "problems", "solutions", "metrics", "cta".
220
- N'incluez que les segments pertinents au brief.`,
219
+ Los identificadores de escena deben ser: "intro", "problems", "solutions", "metrics", "cta".
220
+ Incluye solo los segmentos relevantes para el brief.`,
221
221
  description: "Script generator LLM system prompt",
222
222
  placeholders: [{ name: "styleGuide", type: "string" }]
223
223
  },
224
224
  "prompt.scenePlanner.system": {
225
- value: `Vous êtes un planificateur de scènes vidéo pour les vidéos marketing/documentation de ContractSpec.
226
- À partir d'un brief, décomposez-le en scènes vidéo.
225
+ value: `Eres un planificador de escenas de vídeo para vídeos de marketing/documentación de ContractSpec.
226
+ Dado un brief de contenido, divídelo en escenas de vídeo.
227
227
 
228
- Chaque scène doit avoir :
229
- - compositionId : un parmi "ApiOverview", "SocialClip", "TerminalDemo"
230
- - props : les propriétés d'entrée de cette composition
231
- - durationInFrames : durée à {fps} fps
232
- - narrationText : ce que le narrateur dit pendant cette scène
228
+ Cada escena debe tener:
229
+ - compositionId: uno de "ApiOverview", "SocialClip", "TerminalDemo"
230
+ - props: las propiedades de entrada de esa composición
231
+ - durationInFrames: duración a {fps} fps
232
+ - narrationText: lo que dice el narrador durante esta escena
233
233
 
234
- Retournez un objet JSON avec la forme :
234
+ Devuelve un objeto JSON con la forma:
235
235
  {
236
236
  "scenes": [{ "compositionId": string, "props": object, "durationInFrames": number, "narrationText": string }],
237
237
  "narrationScript": string
238
238
  }
239
239
 
240
- Gardez la durée totale autour de {targetSeconds} secondes.
241
- Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`,
240
+ Mantén la duración total alrededor de {targetSeconds} segundos.
241
+ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
242
242
  description: "Scene planner LLM system prompt",
243
243
  placeholders: [
244
244
  { name: "fps", type: "number" },
@@ -246,64 +246,64 @@ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`
246
246
  ]
247
247
  },
248
248
  "prompt.style.professional": {
249
- value: "Utilisez un ton clair, autoritaire et professionnel. Soyez concis et direct.",
249
+ value: "Usa un tono claro, autoritario y profesional. conciso y directo.",
250
250
  description: "Style guide for professional narration"
251
251
  },
252
252
  "prompt.style.casual": {
253
- value: "Utilisez un ton amical et conversationnel. Soyez accessible et proche.",
253
+ value: "Usa un tono amigable y conversacional. accesible y cercano.",
254
254
  description: "Style guide for casual narration"
255
255
  },
256
256
  "prompt.style.technical": {
257
- value: "Utilisez un langage technique précis. Soyez détaillé et exact.",
257
+ value: "Usa un lenguaje técnico preciso. detallado y exacto.",
258
258
  description: "Style guide for technical narration"
259
259
  },
260
260
  "script.segment.challenge": {
261
- value: "Le défi : {content}",
261
+ value: "El desafío: {content}",
262
262
  description: "Narration segment prefix for problems",
263
263
  placeholders: [{ name: "content", type: "string" }]
264
264
  },
265
265
  "script.segment.solution": {
266
- value: "La solution : {content}",
266
+ value: "La solución: {content}",
267
267
  description: "Narration segment prefix for solutions",
268
268
  placeholders: [{ name: "content", type: "string" }]
269
269
  },
270
270
  "script.segment.results": {
271
- value: "Les résultats : {content}",
271
+ value: "Los resultados: {content}",
272
272
  description: "Narration segment prefix for metrics",
273
273
  placeholders: [{ name: "content", type: "string" }]
274
274
  },
275
275
  "scene.cta.default": {
276
- value: "En savoir plus",
276
+ value: "Más información",
277
277
  description: "Default call-to-action text for scenes"
278
278
  },
279
279
  "scene.hook.problem": {
280
- value: "Le problème",
280
+ value: "El problema",
281
281
  description: "Scene hook label for problem statement"
282
282
  },
283
283
  "scene.narration.problem": {
284
- value: "Le problème : {content}",
284
+ value: "El problema: {content}",
285
285
  description: "Scene narration for problem statement",
286
286
  placeholders: [{ name: "content", type: "string" }]
287
287
  },
288
288
  "scene.hook.solution": {
289
- value: "La solution",
289
+ value: "La solución",
290
290
  description: "Scene hook label for solution"
291
291
  },
292
292
  "scene.narration.solution": {
293
- value: "La solution : {content}",
293
+ value: "La solución: {content}",
294
294
  description: "Scene narration for solution",
295
295
  placeholders: [{ name: "content", type: "string" }]
296
296
  },
297
297
  "scene.hook.results": {
298
- value: "Résultats",
298
+ value: "Resultados",
299
299
  description: "Scene hook label for results/metrics"
300
300
  },
301
301
  "composition.apiOverview.generates": {
302
- value: "Génère :",
302
+ value: "Genera:",
303
303
  description: "ApiOverview heading for generated outputs"
304
304
  },
305
305
  "composition.apiOverview.tagline": {
306
- value: "Un spec. Toutes les surfaces.",
306
+ value: "Una spec. Todas las superficies.",
307
307
  description: "ApiOverview default tagline"
308
308
  },
309
309
  "composition.apiOverview.output.rest": {
@@ -311,11 +311,11 @@ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`
311
311
  description: "Generated output label: REST"
312
312
  },
313
313
  "composition.apiOverview.output.graphql": {
314
- value: "Mutation GraphQL",
314
+ value: "Mutación GraphQL",
315
315
  description: "Generated output label: GraphQL"
316
316
  },
317
317
  "composition.apiOverview.output.prisma": {
318
- value: "Modèle Prisma",
318
+ value: "Modelo Prisma",
319
319
  description: "Generated output label: Prisma"
320
320
  },
321
321
  "composition.apiOverview.output.typescript": {
@@ -323,7 +323,7 @@ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`
323
323
  description: "Generated output label: TypeScript SDK"
324
324
  },
325
325
  "composition.apiOverview.output.mcp": {
326
- value: "Outil MCP",
326
+ value: "Herramienta MCP",
327
327
  description: "Generated output label: MCP Tool"
328
328
  },
329
329
  "composition.apiOverview.output.openapi": {
@@ -331,7 +331,7 @@ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`
331
331
  description: "Generated output label: OpenAPI"
332
332
  },
333
333
  "composition.socialClip.cta": {
334
- value: "En savoir plus",
334
+ value: "Más información",
335
335
  description: "SocialClip default CTA"
336
336
  },
337
337
  "composition.terminal.title": {
@@ -341,54 +341,54 @@ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`
341
341
  }
342
342
  });
343
343
 
344
- // src/i18n/catalogs/es.ts
344
+ // src/i18n/catalogs/fr.ts
345
345
  import { defineTranslation as defineTranslation3 } from "@contractspec/lib.contracts-spec/translations";
346
- var esMessages = defineTranslation3({
346
+ var frMessages = defineTranslation3({
347
347
  meta: {
348
348
  key: "video-gen.messages",
349
349
  version: "1.0.0",
350
350
  domain: "video-gen",
351
- description: "Spanish translations for the video-gen package",
351
+ description: "French translations for the video-gen package",
352
352
  owners: ["platform"],
353
353
  stability: "experimental"
354
354
  },
355
- locale: "es",
355
+ locale: "fr",
356
356
  fallback: "en",
357
357
  messages: {
358
358
  "prompt.script.system": {
359
- value: `Eres un redactor de guiones de narración para vídeo.
360
- Escribe un guión de narración para un vídeo corto (30-60 segundos).
359
+ value: `Vous êtes un rédacteur de scripts de narration vidéo.
360
+ Écrivez un script de narration pour une courte vidéo (30-60 secondes).
361
361
  {styleGuide}
362
362
 
363
- Devuelve JSON con la forma:
363
+ Retournez du JSON avec la forme :
364
364
  {
365
365
  "segments": [{ "sceneId": string, "text": string }],
366
366
  "fullText": string
367
367
  }
368
368
 
369
- Los identificadores de escena deben ser: "intro", "problems", "solutions", "metrics", "cta".
370
- Incluye solo los segmentos relevantes para el brief.`,
369
+ Les identifiants de scène doivent être : "intro", "problems", "solutions", "metrics", "cta".
370
+ N'incluez que les segments pertinents au brief.`,
371
371
  description: "Script generator LLM system prompt",
372
372
  placeholders: [{ name: "styleGuide", type: "string" }]
373
373
  },
374
374
  "prompt.scenePlanner.system": {
375
- value: `Eres un planificador de escenas de vídeo para vídeos de marketing/documentación de ContractSpec.
376
- Dado un brief de contenido, divídelo en escenas de vídeo.
375
+ value: `Vous êtes un planificateur de scènes vidéo pour les vidéos marketing/documentation de ContractSpec.
376
+ À partir d'un brief, décomposez-le en scènes vidéo.
377
377
 
378
- Cada escena debe tener:
379
- - compositionId: uno de "ApiOverview", "SocialClip", "TerminalDemo"
380
- - props: las propiedades de entrada de esa composición
381
- - durationInFrames: duración a {fps} fps
382
- - narrationText: lo que dice el narrador durante esta escena
378
+ Chaque scène doit avoir :
379
+ - compositionId : un parmi "ApiOverview", "SocialClip", "TerminalDemo"
380
+ - props : les propriétés d'entrée de cette composition
381
+ - durationInFrames : durée à {fps} fps
382
+ - narrationText : ce que le narrateur dit pendant cette scène
383
383
 
384
- Devuelve un objeto JSON con la forma:
384
+ Retournez un objet JSON avec la forme :
385
385
  {
386
386
  "scenes": [{ "compositionId": string, "props": object, "durationInFrames": number, "narrationText": string }],
387
387
  "narrationScript": string
388
388
  }
389
389
 
390
- Mantén la duración total alrededor de {targetSeconds} segundos.
391
- Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
390
+ Gardez la durée totale autour de {targetSeconds} secondes.
391
+ Privilégiez la clarté et le rythme. Chaque scène doit communiquer une idée.`,
392
392
  description: "Scene planner LLM system prompt",
393
393
  placeholders: [
394
394
  { name: "fps", type: "number" },
@@ -396,64 +396,64 @@ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
396
396
  ]
397
397
  },
398
398
  "prompt.style.professional": {
399
- value: "Usa un tono claro, autoritario y profesional. conciso y directo.",
399
+ value: "Utilisez un ton clair, autoritaire et professionnel. Soyez concis et direct.",
400
400
  description: "Style guide for professional narration"
401
401
  },
402
402
  "prompt.style.casual": {
403
- value: "Usa un tono amigable y conversacional. accesible y cercano.",
403
+ value: "Utilisez un ton amical et conversationnel. Soyez accessible et proche.",
404
404
  description: "Style guide for casual narration"
405
405
  },
406
406
  "prompt.style.technical": {
407
- value: "Usa un lenguaje técnico preciso. detallado y exacto.",
407
+ value: "Utilisez un langage technique précis. Soyez détaillé et exact.",
408
408
  description: "Style guide for technical narration"
409
409
  },
410
410
  "script.segment.challenge": {
411
- value: "El desafío: {content}",
411
+ value: "Le défi : {content}",
412
412
  description: "Narration segment prefix for problems",
413
413
  placeholders: [{ name: "content", type: "string" }]
414
414
  },
415
415
  "script.segment.solution": {
416
- value: "La solución: {content}",
416
+ value: "La solution : {content}",
417
417
  description: "Narration segment prefix for solutions",
418
418
  placeholders: [{ name: "content", type: "string" }]
419
419
  },
420
420
  "script.segment.results": {
421
- value: "Los resultados: {content}",
421
+ value: "Les résultats : {content}",
422
422
  description: "Narration segment prefix for metrics",
423
423
  placeholders: [{ name: "content", type: "string" }]
424
424
  },
425
425
  "scene.cta.default": {
426
- value: "Más información",
426
+ value: "En savoir plus",
427
427
  description: "Default call-to-action text for scenes"
428
428
  },
429
429
  "scene.hook.problem": {
430
- value: "El problema",
430
+ value: "Le problème",
431
431
  description: "Scene hook label for problem statement"
432
432
  },
433
433
  "scene.narration.problem": {
434
- value: "El problema: {content}",
434
+ value: "Le problème : {content}",
435
435
  description: "Scene narration for problem statement",
436
436
  placeholders: [{ name: "content", type: "string" }]
437
437
  },
438
438
  "scene.hook.solution": {
439
- value: "La solución",
439
+ value: "La solution",
440
440
  description: "Scene hook label for solution"
441
441
  },
442
442
  "scene.narration.solution": {
443
- value: "La solución: {content}",
443
+ value: "La solution : {content}",
444
444
  description: "Scene narration for solution",
445
445
  placeholders: [{ name: "content", type: "string" }]
446
446
  },
447
447
  "scene.hook.results": {
448
- value: "Resultados",
448
+ value: "Résultats",
449
449
  description: "Scene hook label for results/metrics"
450
450
  },
451
451
  "composition.apiOverview.generates": {
452
- value: "Genera:",
452
+ value: "Génère :",
453
453
  description: "ApiOverview heading for generated outputs"
454
454
  },
455
455
  "composition.apiOverview.tagline": {
456
- value: "Una spec. Todas las superficies.",
456
+ value: "Un spec. Toutes les surfaces.",
457
457
  description: "ApiOverview default tagline"
458
458
  },
459
459
  "composition.apiOverview.output.rest": {
@@ -461,11 +461,11 @@ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
461
461
  description: "Generated output label: REST"
462
462
  },
463
463
  "composition.apiOverview.output.graphql": {
464
- value: "Mutación GraphQL",
464
+ value: "Mutation GraphQL",
465
465
  description: "Generated output label: GraphQL"
466
466
  },
467
467
  "composition.apiOverview.output.prisma": {
468
- value: "Modelo Prisma",
468
+ value: "Modèle Prisma",
469
469
  description: "Generated output label: Prisma"
470
470
  },
471
471
  "composition.apiOverview.output.typescript": {
@@ -473,7 +473,7 @@ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
473
473
  description: "Generated output label: TypeScript SDK"
474
474
  },
475
475
  "composition.apiOverview.output.mcp": {
476
- value: "Herramienta MCP",
476
+ value: "Outil MCP",
477
477
  description: "Generated output label: MCP Tool"
478
478
  },
479
479
  "composition.apiOverview.output.openapi": {
@@ -481,7 +481,7 @@ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
481
481
  description: "Generated output label: OpenAPI"
482
482
  },
483
483
  "composition.socialClip.cta": {
484
- value: "Más información",
484
+ value: "En savoir plus",
485
485
  description: "SocialClip default CTA"
486
486
  },
487
487
  "composition.terminal.title": {
@@ -491,26 +491,6 @@ Prioriza la claridad y el ritmo. Cada escena debe comunicar una idea.`,
491
491
  }
492
492
  });
493
493
 
494
- // src/i18n/messages.ts
495
- import {
496
- createI18nFactory
497
- } from "@contractspec/lib.contracts-spec/translations";
498
- var factory = createI18nFactory({
499
- specKey: "video-gen.messages",
500
- catalogs: [enMessages, frMessages, esMessages]
501
- });
502
- var createVideoGenI18n = factory.create;
503
- var getDefaultI18n = factory.getDefault;
504
- var resetI18nRegistry = factory.resetRegistry;
505
-
506
- // src/i18n/locale.ts
507
- import {
508
- DEFAULT_LOCALE,
509
- SUPPORTED_LOCALES,
510
- resolveLocale,
511
- isSupportedLocale
512
- } from "@contractspec/lib.contracts-spec/translations";
513
-
514
494
  // src/i18n/keys.ts
515
495
  var PROMPT_KEYS = {
516
496
  "prompt.script.system": "prompt.script.system",
@@ -550,6 +530,26 @@ var I18N_KEYS = {
550
530
  ...SCENE_KEYS,
551
531
  ...COMPOSITION_KEYS
552
532
  };
533
+
534
+ // src/i18n/locale.ts
535
+ import {
536
+ DEFAULT_LOCALE,
537
+ isSupportedLocale,
538
+ resolveLocale,
539
+ SUPPORTED_LOCALES
540
+ } from "@contractspec/lib.contracts-spec/translations";
541
+
542
+ // src/i18n/messages.ts
543
+ import {
544
+ createI18nFactory
545
+ } from "@contractspec/lib.contracts-spec/translations";
546
+ var factory = createI18nFactory({
547
+ specKey: "video-gen.messages",
548
+ catalogs: [enMessages, frMessages, esMessages]
549
+ });
550
+ var createVideoGenI18n = factory.create;
551
+ var getDefaultI18n = factory.getDefault;
552
+ var resetI18nRegistry = factory.resetRegistry;
553
553
  // src/generators/scene-planner.ts
554
554
  class ScenePlanner {
555
555
  llm;