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