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