egaki 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/CHANGELOG.md +140 -9
  2. package/dist/cli/cache-utils.d.ts +33 -0
  3. package/dist/cli/cache-utils.d.ts.map +1 -0
  4. package/dist/cli/cache-utils.js +157 -0
  5. package/dist/cli/cached-generate.d.ts +105 -0
  6. package/dist/cli/cached-generate.d.ts.map +1 -0
  7. package/dist/cli/cached-generate.js +208 -0
  8. package/dist/cli/cached-generate.test.d.ts +11 -0
  9. package/dist/cli/cached-generate.test.d.ts.map +1 -0
  10. package/dist/cli/cached-generate.test.js +431 -0
  11. package/dist/cli/cartesia-provider.d.ts +16 -0
  12. package/dist/cli/cartesia-provider.d.ts.map +1 -0
  13. package/dist/cli/cartesia-provider.js +184 -0
  14. package/dist/cli/chatgpt-auth.d.ts.map +1 -0
  15. package/dist/cli/cli.d.ts +4 -0
  16. package/dist/cli/cli.d.ts.map +1 -0
  17. package/dist/{cli.js → cli/cli.js} +626 -600
  18. package/dist/cli/clone-generate.d.ts +26 -0
  19. package/dist/cli/clone-generate.d.ts.map +1 -0
  20. package/dist/cli/clone-generate.js +148 -0
  21. package/dist/cli/credentials.d.ts.map +1 -0
  22. package/dist/{credentials.js → cli/credentials.js} +20 -0
  23. package/dist/cli/elevenlabs-speech-provider.d.ts +26 -0
  24. package/dist/cli/elevenlabs-speech-provider.d.ts.map +1 -0
  25. package/dist/cli/elevenlabs-speech-provider.js +199 -0
  26. package/dist/cli/generate.d.ts +140 -0
  27. package/dist/cli/generate.d.ts.map +1 -0
  28. package/dist/cli/generate.js +604 -0
  29. package/dist/cli/generate.test.d.ts +2 -0
  30. package/dist/cli/generate.test.d.ts.map +1 -0
  31. package/dist/cli/generate.test.js +131 -0
  32. package/dist/cli/login.d.ts.map +1 -0
  33. package/dist/cli/main.d.ts +3 -0
  34. package/dist/cli/main.d.ts.map +1 -0
  35. package/dist/cli/main.js +7 -0
  36. package/dist/{model-catalog.d.ts → cli/model-catalog.d.ts} +6 -0
  37. package/dist/cli/model-catalog.d.ts.map +1 -0
  38. package/dist/{model-catalog.js → cli/model-catalog.js} +714 -4
  39. package/dist/{models.d.ts → cli/models.d.ts} +12 -5
  40. package/dist/cli/models.d.ts.map +1 -0
  41. package/dist/{models.js → cli/models.js} +58 -57
  42. package/dist/cli/open-browser.d.ts.map +1 -0
  43. package/dist/cli/openai-speech-provider.d.ts +3 -0
  44. package/dist/cli/openai-speech-provider.d.ts.map +1 -0
  45. package/dist/cli/openai-speech-provider.js +28 -0
  46. package/dist/cli/separation-generate.d.ts +34 -0
  47. package/dist/cli/separation-generate.d.ts.map +1 -0
  48. package/dist/cli/separation-generate.js +117 -0
  49. package/dist/cli/speech-catalog.d.ts +35 -0
  50. package/dist/cli/speech-catalog.d.ts.map +1 -0
  51. package/dist/cli/speech-catalog.js +195 -0
  52. package/dist/cli/speech-generate.d.ts +86 -0
  53. package/dist/cli/speech-generate.d.ts.map +1 -0
  54. package/dist/cli/speech-generate.js +156 -0
  55. package/dist/cli/speech-models.d.ts +8 -0
  56. package/dist/cli/speech-models.d.ts.map +1 -0
  57. package/dist/cli/speech-models.js +109 -0
  58. package/dist/cli/speech-provider.test.d.ts +2 -0
  59. package/dist/cli/speech-provider.test.d.ts.map +1 -0
  60. package/dist/cli/speech-provider.test.js +197 -0
  61. package/dist/cli/subscription.d.ts.map +1 -0
  62. package/dist/cli/transcription-catalog.d.ts +35 -0
  63. package/dist/cli/transcription-catalog.d.ts.map +1 -0
  64. package/dist/cli/transcription-catalog.js +192 -0
  65. package/dist/cli/transcription-generate.d.ts +62 -0
  66. package/dist/cli/transcription-generate.d.ts.map +1 -0
  67. package/dist/cli/transcription-generate.js +144 -0
  68. package/dist/cli/transcription-models.d.ts +9 -0
  69. package/dist/cli/transcription-models.d.ts.map +1 -0
  70. package/dist/cli/transcription-models.js +100 -0
  71. package/dist/cli/transcription-providers.d.ts +22 -0
  72. package/dist/cli/transcription-providers.d.ts.map +1 -0
  73. package/dist/cli/transcription-providers.js +290 -0
  74. package/dist/cli/video-model-catalog.d.ts.map +1 -0
  75. package/dist/cli/xai-auth.d.ts.map +1 -0
  76. package/dist/{xai-auth.js → cli/xai-auth.js} +1 -1
  77. package/dist/vite/angled-screen.d.ts +57 -0
  78. package/dist/vite/angled-screen.d.ts.map +1 -0
  79. package/dist/vite/angled-screen.js +115 -0
  80. package/dist/vite/app.d.ts +51 -0
  81. package/dist/vite/app.d.ts.map +1 -0
  82. package/dist/vite/app.js +150 -0
  83. package/dist/vite/bands-shader.d.ts +47 -0
  84. package/dist/vite/bands-shader.d.ts.map +1 -0
  85. package/dist/vite/bands-shader.js +267 -0
  86. package/dist/vite/code-block.d.ts +107 -0
  87. package/dist/vite/code-block.d.ts.map +1 -0
  88. package/dist/vite/code-block.js +641 -0
  89. package/dist/vite/components.d.ts +36 -0
  90. package/dist/vite/components.d.ts.map +1 -0
  91. package/dist/vite/components.js +113 -0
  92. package/dist/vite/dispersion-rings-shader.d.ts +44 -0
  93. package/dist/vite/dispersion-rings-shader.d.ts.map +1 -0
  94. package/dist/vite/dispersion-rings-shader.js +282 -0
  95. package/dist/vite/easing-curves.d.ts +129 -0
  96. package/dist/vite/easing-curves.d.ts.map +1 -0
  97. package/dist/vite/easing-curves.js +584 -0
  98. package/dist/vite/easing-curves.test.d.ts +2 -0
  99. package/dist/vite/easing-curves.test.d.ts.map +1 -0
  100. package/dist/vite/easing-curves.test.js +200 -0
  101. package/dist/vite/generated-media-client.d.ts +35 -0
  102. package/dist/vite/generated-media-client.d.ts.map +1 -0
  103. package/dist/vite/generated-media-client.js +76 -0
  104. package/dist/vite/keyframes.d.ts +129 -0
  105. package/dist/vite/keyframes.d.ts.map +1 -0
  106. package/dist/vite/keyframes.js +194 -0
  107. package/dist/vite/layout-editor.d.ts +45 -0
  108. package/dist/vite/layout-editor.d.ts.map +1 -0
  109. package/dist/vite/layout-editor.js +587 -0
  110. package/dist/vite/layout-transition.d.ts +136 -0
  111. package/dist/vite/layout-transition.d.ts.map +1 -0
  112. package/dist/vite/layout-transition.js +581 -0
  113. package/dist/vite/liquid-gradient-shader.d.ts +62 -0
  114. package/dist/vite/liquid-gradient-shader.d.ts.map +1 -0
  115. package/dist/vite/liquid-gradient-shader.js +413 -0
  116. package/dist/vite/mdx-client.d.ts +15 -0
  117. package/dist/vite/mdx-client.d.ts.map +1 -0
  118. package/dist/vite/mdx-client.js +265 -0
  119. package/dist/vite/mdx-parse.d.ts +102 -0
  120. package/dist/vite/mdx-parse.d.ts.map +1 -0
  121. package/dist/vite/mdx-parse.js +251 -0
  122. package/dist/vite/mdx-provided-components.d.ts +18 -0
  123. package/dist/vite/mdx-provided-components.d.ts.map +1 -0
  124. package/dist/vite/mdx-provided-components.js +14 -0
  125. package/dist/vite/mdx-video.d.ts +327 -0
  126. package/dist/vite/mdx-video.d.ts.map +1 -0
  127. package/dist/vite/mdx-video.js +596 -0
  128. package/dist/vite/mdx-video.test.d.ts +9 -0
  129. package/dist/vite/mdx-video.test.d.ts.map +1 -0
  130. package/dist/vite/mdx-video.test.js +1945 -0
  131. package/dist/vite/media-components.d.ts +45 -0
  132. package/dist/vite/media-components.d.ts.map +1 -0
  133. package/dist/vite/media-components.js +355 -0
  134. package/dist/vite/media-duration-store.d.ts +66 -0
  135. package/dist/vite/media-duration-store.d.ts.map +1 -0
  136. package/dist/vite/media-duration-store.js +204 -0
  137. package/dist/vite/player-page.d.ts +35 -0
  138. package/dist/vite/player-page.d.ts.map +1 -0
  139. package/dist/vite/player-page.js +720 -0
  140. package/dist/vite/render-client.d.ts +18 -0
  141. package/dist/vite/render-client.d.ts.map +1 -0
  142. package/dist/vite/render-client.js +67 -0
  143. package/dist/vite/sdk.d.ts +221 -0
  144. package/dist/vite/sdk.d.ts.map +1 -0
  145. package/dist/vite/sdk.js +355 -0
  146. package/dist/vite/server-components.d.ts +55 -0
  147. package/dist/vite/server-components.d.ts.map +1 -0
  148. package/dist/vite/server-components.js +156 -0
  149. package/dist/vite/server-mdx.d.ts +74 -0
  150. package/dist/vite/server-mdx.d.ts.map +1 -0
  151. package/dist/vite/server-mdx.js +259 -0
  152. package/dist/vite/shader-renderer.d.ts +48 -0
  153. package/dist/vite/shader-renderer.d.ts.map +1 -0
  154. package/dist/vite/shader-renderer.js +411 -0
  155. package/dist/vite/store-hooks.d.ts +12 -0
  156. package/dist/vite/store-hooks.d.ts.map +1 -0
  157. package/dist/vite/store-hooks.js +93 -0
  158. package/dist/vite/store.d.ts +75 -0
  159. package/dist/vite/store.d.ts.map +1 -0
  160. package/dist/vite/store.js +52 -0
  161. package/dist/vite/store.test.d.ts +6 -0
  162. package/dist/vite/store.test.d.ts.map +1 -0
  163. package/dist/vite/store.test.js +172 -0
  164. package/dist/vite/tweakpane-hook.d.ts +94 -0
  165. package/dist/vite/tweakpane-hook.d.ts.map +1 -0
  166. package/dist/vite/tweakpane-hook.js +450 -0
  167. package/dist/vite/vite-plugin.d.ts +28 -0
  168. package/dist/vite/vite-plugin.d.ts.map +1 -0
  169. package/dist/vite/vite-plugin.js +538 -0
  170. package/dist/vite/wave-gradient-shader.d.ts +41 -0
  171. package/dist/vite/wave-gradient-shader.d.ts.map +1 -0
  172. package/dist/vite/wave-gradient-shader.js +207 -0
  173. package/package.json +101 -24
  174. package/skills/egaki/SKILL.md +162 -1
  175. package/src/cli/cache-utils.ts +169 -0
  176. package/src/cli/cached-generate.test.ts +531 -0
  177. package/src/cli/cached-generate.ts +348 -0
  178. package/src/cli/cartesia-provider.ts +249 -0
  179. package/src/{cli.ts → cli/cli.ts} +836 -884
  180. package/src/cli/clone-generate.ts +202 -0
  181. package/src/{credentials.ts → cli/credentials.ts} +20 -0
  182. package/src/cli/elevenlabs-speech-provider.ts +243 -0
  183. package/src/cli/generate.test.ts +166 -0
  184. package/src/cli/generate.ts +912 -0
  185. package/src/cli/main.ts +8 -0
  186. package/src/{model-catalog.ts → cli/model-catalog.ts} +787 -58
  187. package/src/{models.ts → cli/models.ts} +65 -86
  188. package/src/cli/openai-speech-provider.ts +34 -0
  189. package/src/cli/separation-generate.ts +187 -0
  190. package/src/cli/speech-catalog.ts +253 -0
  191. package/src/cli/speech-generate.ts +275 -0
  192. package/src/cli/speech-models.ts +146 -0
  193. package/src/cli/speech-provider.test.ts +226 -0
  194. package/src/cli/transcription-catalog.ts +250 -0
  195. package/src/cli/transcription-generate.ts +214 -0
  196. package/src/cli/transcription-models.ts +136 -0
  197. package/src/cli/transcription-providers.ts +427 -0
  198. package/src/{xai-auth.ts → cli/xai-auth.ts} +1 -1
  199. package/src/vite/angled-screen.tsx +214 -0
  200. package/src/vite/app.tsx +197 -0
  201. package/src/vite/bands-shader.tsx +319 -0
  202. package/src/vite/code-block.tsx +939 -0
  203. package/src/vite/components.tsx +278 -0
  204. package/src/vite/dispersion-rings-shader.tsx +331 -0
  205. package/src/vite/easing-curves.test.ts +232 -0
  206. package/src/vite/easing-curves.ts +743 -0
  207. package/src/vite/generated-media-client.tsx +121 -0
  208. package/src/vite/keyframes.tsx +347 -0
  209. package/src/vite/layout-editor.tsx +709 -0
  210. package/src/vite/layout-transition.tsx +706 -0
  211. package/src/vite/liquid-gradient-shader.tsx +474 -0
  212. package/src/vite/mdx-client.tsx +420 -0
  213. package/src/vite/mdx-parse.ts +343 -0
  214. package/src/vite/mdx-provided-components.ts +19 -0
  215. package/src/vite/mdx-video.test.tsx +2219 -0
  216. package/src/vite/mdx-video.tsx +976 -0
  217. package/src/vite/media-components.tsx +473 -0
  218. package/src/vite/media-duration-store.ts +225 -0
  219. package/src/vite/motion-timing.ts +194 -0
  220. package/src/vite/player-page.tsx +1107 -0
  221. package/src/vite/render-client.ts +84 -0
  222. package/src/vite/sdk.ts +598 -0
  223. package/src/vite/server-components.tsx +241 -0
  224. package/src/vite/server-mdx.ts +285 -0
  225. package/src/vite/shader-renderer.tsx +535 -0
  226. package/src/vite/store-hooks.ts +117 -0
  227. package/src/vite/store.test.ts +202 -0
  228. package/src/vite/store.ts +115 -0
  229. package/src/vite/styles.css +21 -0
  230. package/src/vite/tweakpane-hook.tsx +593 -0
  231. package/src/vite/virtual-modules.d.ts +30 -0
  232. package/src/vite/vite-plugin.ts +584 -0
  233. package/src/vite/wave-gradient-shader.tsx +253 -0
  234. package/README.md +0 -370
  235. package/dist/antigravity-auth.d.ts +0 -15
  236. package/dist/antigravity-auth.d.ts.map +0 -1
  237. package/dist/antigravity-auth.js +0 -544
  238. package/dist/antigravity-image.d.ts +0 -11
  239. package/dist/antigravity-image.d.ts.map +0 -1
  240. package/dist/antigravity-image.js +0 -285
  241. package/dist/chatgpt-auth.d.ts.map +0 -1
  242. package/dist/cli.d.ts +0 -3
  243. package/dist/cli.d.ts.map +0 -1
  244. package/dist/credentials.d.ts.map +0 -1
  245. package/dist/gateway-model-candidates.generated.d.ts +0 -11
  246. package/dist/gateway-model-candidates.generated.d.ts.map +0 -1
  247. package/dist/gateway-model-candidates.generated.js +0 -64
  248. package/dist/login.d.ts.map +0 -1
  249. package/dist/model-catalog.d.ts.map +0 -1
  250. package/dist/models.d.ts.map +0 -1
  251. package/dist/open-browser.d.ts.map +0 -1
  252. package/dist/subscription.d.ts.map +0 -1
  253. package/dist/video-model-catalog.d.ts.map +0 -1
  254. package/dist/xai-auth.d.ts.map +0 -1
  255. /package/dist/{chatgpt-auth.d.ts → cli/chatgpt-auth.d.ts} +0 -0
  256. /package/dist/{chatgpt-auth.js → cli/chatgpt-auth.js} +0 -0
  257. /package/dist/{credentials.d.ts → cli/credentials.d.ts} +0 -0
  258. /package/dist/{login.d.ts → cli/login.d.ts} +0 -0
  259. /package/dist/{login.js → cli/login.js} +0 -0
  260. /package/dist/{open-browser.d.ts → cli/open-browser.d.ts} +0 -0
  261. /package/dist/{open-browser.js → cli/open-browser.js} +0 -0
  262. /package/dist/{subscription.d.ts → cli/subscription.d.ts} +0 -0
  263. /package/dist/{subscription.js → cli/subscription.js} +0 -0
  264. /package/dist/{video-model-catalog.d.ts → cli/video-model-catalog.d.ts} +0 -0
  265. /package/dist/{video-model-catalog.js → cli/video-model-catalog.js} +0 -0
  266. /package/dist/{xai-auth.d.ts → cli/xai-auth.d.ts} +0 -0
  267. /package/src/{chatgpt-auth.ts → cli/chatgpt-auth.ts} +0 -0
  268. /package/src/{login.ts → cli/login.ts} +0 -0
  269. /package/src/{open-browser.ts → cli/open-browser.ts} +0 -0
  270. /package/src/{subscription.ts → cli/subscription.ts} +0 -0
  271. /package/src/{video-model-catalog.ts → cli/video-model-catalog.ts} +0 -0
@@ -47,6 +47,8 @@ export type VideoDurationPricingTier = {
47
47
  mode?: string
48
48
  /** Optional audio discriminator */
49
49
  audio?: boolean
50
+ /** Optional discriminator for whether image/video input is present (i2v/r2v vs t2v) */
51
+ hasVideoInput?: boolean
50
52
  }
51
53
 
52
54
  export type PerVideoSecondCost = {
@@ -152,6 +154,8 @@ export type VideoModelEntry = {
152
154
  /** @deprecated Use ImageModelEntry instead */
153
155
  export type ModelEntry = ImageModelEntry
154
156
 
157
+ export type { SpeechModelEntry } from './speech-catalog.js'
158
+
155
159
  export type AnyModelEntry = ImageModelEntry | VideoModelEntry
156
160
 
157
161
  // ─── shared fragments ────────────────────────────────────────────────────────
@@ -247,6 +251,15 @@ const xaiVideoProviderOptions: ProviderOption[] = [
247
251
  { flag: 'reference-images', providerKey: 'referenceImageUrls', description: 'Reference images for R2V (1-7 files or URLs)', type: 'string', array: true },
248
252
  ]
249
253
 
254
+ // Source: node_modules/@ai-sdk/bytedance/dist/index.d.ts → ByteDanceVideoProviderOptions
255
+ // Docs: https://sdk.vercel.ai/docs/providers/bytedance
256
+ const bytedanceVideoProviderOptions: ProviderOption[] = [
257
+ { flag: 'resolution', providerKey: 'resolution', description: 'Output resolution', values: ['480p', '720p', '1080p'], type: 'string' },
258
+ { flag: 'reference-images', providerKey: 'referenceImages', description: 'Reference images for R2V (1-9 files or URLs, use @Image1 etc. in prompt)', type: 'string', array: true },
259
+ { flag: 'watermark', providerKey: 'watermark', description: 'Add watermark to video', type: 'boolean' },
260
+ { flag: 'generate-audio', providerKey: 'generateAudio', description: 'Generate synchronized audio', type: 'boolean' },
261
+ ]
262
+
250
263
  // Source: node_modules/@ai-sdk/fal/dist/index.d.ts → FalVideoModelOptions
251
264
  // Docs: https://ai-sdk.dev/providers/ai-sdk-providers/fal
252
265
  const falVideoProviderOptions: ProviderOption[] = [
@@ -486,6 +499,77 @@ export const CATALOG: ModelEntry[] = [
486
499
  },
487
500
  },
488
501
 
502
+ {
503
+ id: 'flux-2-pro',
504
+ name: 'FLUX.2 Pro',
505
+ released: '2025-12',
506
+ ...bflImage,
507
+ cost: { type: 'per-image', perImage: 0.03 },
508
+ features: {
509
+ editing: true,
510
+ inpainting: false,
511
+ aspectRatios: fluxAspectRatios,
512
+ seed: true,
513
+ multipleImages: false,
514
+ },
515
+ },
516
+ {
517
+ id: 'flux-2-max',
518
+ name: 'FLUX.2 Max',
519
+ released: '2025-12',
520
+ ...bflImage,
521
+ cost: { type: 'per-image', perImage: 0.07 },
522
+ features: {
523
+ editing: true,
524
+ inpainting: false,
525
+ aspectRatios: fluxAspectRatios,
526
+ seed: true,
527
+ multipleImages: false,
528
+ },
529
+ },
530
+ {
531
+ id: 'flux-2-flex',
532
+ name: 'FLUX.2 Flex',
533
+ released: '2025-12',
534
+ ...bflImage,
535
+ cost: { type: 'per-image', perImage: 0.05 },
536
+ features: {
537
+ editing: true,
538
+ inpainting: false,
539
+ aspectRatios: fluxAspectRatios,
540
+ seed: true,
541
+ multipleImages: false,
542
+ },
543
+ },
544
+ {
545
+ id: 'flux-2-klein-9b',
546
+ name: 'FLUX.2 Klein 9B',
547
+ released: '2025-12',
548
+ ...bflImage,
549
+ cost: { type: 'per-image', perImage: 0.015 },
550
+ features: {
551
+ editing: true,
552
+ inpainting: false,
553
+ aspectRatios: fluxAspectRatios,
554
+ seed: true,
555
+ multipleImages: false,
556
+ },
557
+ },
558
+ {
559
+ id: 'flux-2-klein-4b',
560
+ name: 'FLUX.2 Klein 4B',
561
+ released: '2025-12',
562
+ ...bflImage,
563
+ cost: { type: 'per-image', perImage: 0.014 },
564
+ features: {
565
+ editing: true,
566
+ inpainting: false,
567
+ aspectRatios: fluxAspectRatios,
568
+ seed: true,
569
+ multipleImages: false,
570
+ },
571
+ },
572
+
489
573
  // ── Recraft (AI Gateway) ───────────────────────────────────────────────
490
574
  {
491
575
  id: 'recraft-v2',
@@ -544,6 +628,110 @@ export const CATALOG: ModelEntry[] = [
544
628
  },
545
629
  },
546
630
 
631
+ {
632
+ id: 'recraft-v4.1',
633
+ name: 'Recraft v4.1',
634
+ released: '2026-05',
635
+ ...recraftImage,
636
+ cost: { type: 'per-image', perImage: 0.04 },
637
+ features: {
638
+ editing: false,
639
+ inpainting: false,
640
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
641
+ seed: false,
642
+ multipleImages: false,
643
+ },
644
+ },
645
+ {
646
+ id: 'recraft-v4.1-pro',
647
+ name: 'Recraft v4.1 Pro',
648
+ released: '2026-05',
649
+ ...recraftImage,
650
+ cost: { type: 'per-image', perImage: 0.25 },
651
+ features: {
652
+ editing: false,
653
+ inpainting: false,
654
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
655
+ seed: false,
656
+ multipleImages: false,
657
+ },
658
+ },
659
+ {
660
+ id: 'recraft-v4.1-utility',
661
+ name: 'Recraft v4.1 Utility',
662
+ released: '2026-05',
663
+ ...recraftImage,
664
+ cost: { type: 'per-image', perImage: 0.04 },
665
+ features: {
666
+ editing: false,
667
+ inpainting: false,
668
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
669
+ seed: false,
670
+ multipleImages: false,
671
+ },
672
+ },
673
+ {
674
+ id: 'recraft-v4.1-utility-pro',
675
+ name: 'Recraft v4.1 Utility Pro',
676
+ released: '2026-05',
677
+ ...recraftImage,
678
+ cost: { type: 'per-image', perImage: 0.25 },
679
+ features: {
680
+ editing: false,
681
+ inpainting: false,
682
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
683
+ seed: false,
684
+ multipleImages: false,
685
+ },
686
+ },
687
+
688
+ // ── ByteDance Seedream (AI Gateway) ────────────────────────────────────
689
+ {
690
+ id: 'seedream-5.0-lite',
691
+ name: 'Seedream 5.0 Lite',
692
+ released: '2026-01',
693
+ provider: 'bytedance',
694
+ strategy: 'image' as const,
695
+ cost: { type: 'per-image' as const, perImage: 0.035 },
696
+ features: {
697
+ editing: false,
698
+ inpainting: false,
699
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
700
+ seed: false,
701
+ multipleImages: false,
702
+ },
703
+ },
704
+ {
705
+ id: 'seedream-4.5',
706
+ name: 'Seedream 4.5',
707
+ released: '2025-11',
708
+ provider: 'bytedance',
709
+ strategy: 'image' as const,
710
+ cost: { type: 'per-image' as const, perImage: 0.04 },
711
+ features: {
712
+ editing: true,
713
+ inpainting: false,
714
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
715
+ seed: false,
716
+ multipleImages: false,
717
+ },
718
+ },
719
+ {
720
+ id: 'seedream-4.0',
721
+ name: 'Seedream 4.0',
722
+ released: '2025-08',
723
+ provider: 'bytedance',
724
+ strategy: 'image' as const,
725
+ cost: { type: 'per-image' as const, perImage: 0.03 },
726
+ features: {
727
+ editing: true,
728
+ inpainting: false,
729
+ aspectRatios: ['1:1', '3:4', '4:3', '9:16', '16:9'],
730
+ seed: false,
731
+ multipleImages: false,
732
+ },
733
+ },
734
+
547
735
  // ── xAI (AI Gateway) ────────────────────────────────────────────────────
548
736
  {
549
737
  id: 'grok-imagine-image',
@@ -560,11 +748,11 @@ export const CATALOG: ModelEntry[] = [
560
748
  },
561
749
  },
562
750
  {
563
- id: 'grok-imagine-image-pro',
564
- name: 'Grok Imagine Image Pro',
565
- released: '2026-03',
751
+ id: 'grok-imagine-image-quality',
752
+ name: 'Grok Imagine Image Quality',
753
+ released: '2026-04',
566
754
  ...xaiImage,
567
- cost: { type: 'per-image', perImage: 0.07 },
755
+ cost: { type: 'per-image', perImage: 0.05 },
568
756
  features: {
569
757
  editing: true,
570
758
  inpainting: false,
@@ -1415,114 +1603,648 @@ export const VIDEO_CATALOG: VideoModelEntry[] = [
1415
1603
  providerOptions: xaiVideoProviderOptions,
1416
1604
  },
1417
1605
  {
1418
- id: 'kling-v2.6-t2v',
1419
- name: 'Kling v2.6 T2V',
1606
+ id: 'grok-imagine-video-1.5',
1607
+ name: 'Grok Imagine Video 1.5',
1608
+ provider: 'xai',
1609
+ strategy: 'video',
1610
+ released: '2026-05',
1611
+ cost: {
1612
+ type: 'per-video-second',
1613
+ defaultDurationSec: 5,
1614
+ tiers: [
1615
+ { resolution: '480p', costPerSecond: 0.08 },
1616
+ { resolution: '720p', costPerSecond: 0.14 },
1617
+ ],
1618
+ },
1619
+ features: {
1620
+ textToVideo: false,
1621
+ imageToVideo: true,
1622
+ capabilities: ['i2v'],
1623
+ aspectRatios: ['1:1', '16:9', '9:16', '4:3', '3:4', '3:2', '2:3'],
1624
+ resolutions: ['480p', '720p'],
1625
+ durationRangeSec: { min: 1, max: 15 },
1626
+ seed: false,
1627
+ multipleVideos: false,
1628
+ },
1629
+ providerOptions: xaiVideoProviderOptions,
1630
+ },
1631
+ // ── Kling (AI Gateway) ──────────────────────────────────────────────
1632
+ // Source: https://ai-gateway.vercel.sh/v1/models (klingai/* entries)
1633
+ {
1634
+ id: 'kling-v3.0-t2v',
1635
+ name: 'Kling v3.0 T2V',
1420
1636
  provider: 'klingai',
1421
1637
  strategy: 'video',
1422
- released: '2025-12',
1638
+ released: '2026-02',
1423
1639
  cost: {
1424
1640
  type: 'per-video-second',
1425
1641
  defaultDurationSec: 5,
1426
1642
  tiers: [
1427
- { mode: 'std', costPerSecond: 0.042 },
1428
- { mode: 'pro', audio: false, costPerSecond: 0.07 },
1429
- { mode: 'pro', audio: true, costPerSecond: 0.14 },
1643
+ { mode: 'std', audio: false, costPerSecond: 0.168 },
1644
+ { mode: 'std', audio: true, costPerSecond: 0.308 },
1645
+ { mode: 'pro', audio: false, costPerSecond: 0.224 },
1646
+ { mode: 'pro', audio: true, costPerSecond: 0.392 },
1430
1647
  ],
1431
1648
  },
1432
1649
  features: {
1433
1650
  textToVideo: true,
1434
1651
  imageToVideo: false,
1435
1652
  capabilities: ['t2v'],
1436
- aspectRatios: commonVideoRatios,
1437
- durationRangeSec: { min: 5, max: 10 },
1653
+ aspectRatios: ['16:9', '9:16', '1:1'],
1654
+ resolutions: ['720p', '1080p', '4k'],
1655
+ durationRangeSec: { min: 3, max: 15 },
1438
1656
  seed: false,
1439
1657
  multipleVideos: false,
1440
1658
  },
1441
1659
  },
1442
1660
  {
1443
- id: 'wan-v2.6-t2v',
1444
- name: 'Wan v2.6 T2V',
1445
- provider: 'alibaba',
1661
+ id: 'kling-v3.0-i2v',
1662
+ name: 'Kling v3.0 I2V',
1663
+ provider: 'klingai',
1446
1664
  strategy: 'video',
1447
- released: '2026-01',
1665
+ released: '2026-02',
1448
1666
  cost: {
1449
1667
  type: 'per-video-second',
1450
1668
  defaultDurationSec: 5,
1451
1669
  tiers: [
1452
- { resolution: '720p', costPerSecond: 0.1 },
1453
- { resolution: '1080p', costPerSecond: 0.15 },
1670
+ { mode: 'std', audio: false, costPerSecond: 0.168 },
1671
+ { mode: 'std', audio: true, costPerSecond: 0.308 },
1672
+ { mode: 'pro', audio: false, costPerSecond: 0.224 },
1673
+ { mode: 'pro', audio: true, costPerSecond: 0.392 },
1454
1674
  ],
1455
1675
  },
1456
1676
  features: {
1457
- textToVideo: true,
1458
- imageToVideo: false,
1459
- capabilities: ['t2v'],
1460
- resolutions: ['720p', '1080p'],
1461
- durationRangeSec: { min: 2, max: 15 },
1677
+ textToVideo: false,
1678
+ imageToVideo: true,
1679
+ capabilities: ['i2v', 'r2v'],
1680
+ aspectRatios: ['16:9', '9:16', '1:1'],
1681
+ resolutions: ['720p', '1080p', '4k'],
1682
+ durationRangeSec: { min: 3, max: 15 },
1462
1683
  seed: false,
1463
1684
  multipleVideos: false,
1464
1685
  },
1465
1686
  },
1466
- // ── Fal video models ─────────────────────────────────────────────────
1467
1687
  {
1468
- id: 'luma-ray-2',
1469
- name: 'Luma Ray 2 (Fal)',
1470
- provider: 'fal',
1688
+ id: 'kling-v3.0-motion-control',
1689
+ name: 'Kling v3.0 Motion Control',
1690
+ provider: 'klingai',
1471
1691
  strategy: 'video',
1472
- released: '2025-11',
1473
- cost: { type: 'unknown' },
1692
+ released: '2026-03',
1693
+ cost: {
1694
+ type: 'per-video-second',
1695
+ defaultDurationSec: 5,
1696
+ tiers: [
1697
+ { mode: 'std', costPerSecond: 0.126 },
1698
+ { mode: 'pro', costPerSecond: 0.168 },
1699
+ ],
1700
+ },
1474
1701
  features: {
1475
1702
  textToVideo: true,
1476
- imageToVideo: true,
1477
- capabilities: ['t2v', 'i2v'],
1478
- aspectRatios: commonVideoRatios,
1479
- seed: true,
1703
+ imageToVideo: false,
1704
+ capabilities: ['t2v', 'motion-control'],
1705
+ aspectRatios: ['16:9', '9:16', '1:1'],
1706
+ seed: false,
1480
1707
  multipleVideos: false,
1481
1708
  },
1482
- providerOptions: falVideoProviderOptions,
1483
1709
  },
1484
1710
  {
1485
- id: 'minimax-video',
1486
- name: 'MiniMax Video (Fal)',
1487
- provider: 'fal',
1711
+ id: 'kling-v2.6-t2v',
1712
+ name: 'Kling v2.6 T2V',
1713
+ provider: 'klingai',
1488
1714
  strategy: 'video',
1489
- released: '2025-10',
1490
- cost: { type: 'unknown' },
1715
+ released: '2025-12',
1716
+ cost: {
1717
+ type: 'per-video-second',
1718
+ defaultDurationSec: 5,
1719
+ tiers: [
1720
+ { mode: 'std', costPerSecond: 0.042 },
1721
+ { mode: 'pro', audio: false, costPerSecond: 0.07 },
1722
+ { mode: 'pro', audio: true, costPerSecond: 0.14 },
1723
+ ],
1724
+ },
1491
1725
  features: {
1492
1726
  textToVideo: true,
1493
1727
  imageToVideo: false,
1494
1728
  capabilities: ['t2v'],
1495
1729
  aspectRatios: commonVideoRatios,
1730
+ durationRangeSec: { min: 5, max: 10 },
1496
1731
  seed: false,
1497
1732
  multipleVideos: false,
1498
1733
  },
1499
- providerOptions: falVideoProviderOptions,
1500
1734
  },
1501
1735
  {
1502
- id: 'hunyuan-video',
1503
- name: 'Hunyuan Video (Fal)',
1504
- provider: 'fal',
1736
+ id: 'kling-v2.6-i2v',
1737
+ name: 'Kling v2.6 I2V',
1738
+ provider: 'klingai',
1505
1739
  strategy: 'video',
1506
- released: '2025-09',
1507
- cost: { type: 'unknown' },
1740
+ released: '2025-12',
1741
+ cost: {
1742
+ type: 'per-video-second',
1743
+ defaultDurationSec: 5,
1744
+ tiers: [
1745
+ { mode: 'std', costPerSecond: 0.042 },
1746
+ { mode: 'pro', audio: false, costPerSecond: 0.07 },
1747
+ { mode: 'pro', audio: true, costPerSecond: 0.14 },
1748
+ ],
1749
+ },
1508
1750
  features: {
1509
- textToVideo: true,
1751
+ textToVideo: false,
1510
1752
  imageToVideo: true,
1511
- capabilities: ['t2v', 'i2v'],
1512
- aspectRatios: commonVideoRatios,
1513
- seed: true,
1753
+ capabilities: ['i2v'],
1754
+ aspectRatios: ['16:9', '9:16', '1:1'],
1755
+ resolutions: ['720p', '1080p'],
1756
+ durationRangeSec: { min: 5, max: 10 },
1757
+ seed: false,
1514
1758
  multipleVideos: false,
1515
1759
  },
1516
- providerOptions: falVideoProviderOptions,
1517
1760
  },
1518
- ]
1519
-
1520
- // ─── provider option helpers ─────────────────────────────────────────────────
1521
-
1522
- /**
1523
- * Collect the valid values for a CLI flag across all providers in the catalog.
1524
- * Returns a map of provider name → enum values array. Only includes providers
1525
- * that declare values for the given flag. Used by cli.ts to auto-generate
1761
+ {
1762
+ id: 'kling-v2.6-motion-control',
1763
+ name: 'Kling v2.6 Motion Control',
1764
+ provider: 'klingai',
1765
+ strategy: 'video',
1766
+ released: '2025-12',
1767
+ cost: {
1768
+ type: 'per-video-second',
1769
+ defaultDurationSec: 5,
1770
+ tiers: [
1771
+ { mode: 'std', costPerSecond: 0.07 },
1772
+ { mode: 'pro', costPerSecond: 0.112 },
1773
+ ],
1774
+ },
1775
+ features: {
1776
+ textToVideo: true,
1777
+ imageToVideo: false,
1778
+ capabilities: ['t2v', 'motion-control'],
1779
+ aspectRatios: commonVideoRatios,
1780
+ seed: false,
1781
+ multipleVideos: false,
1782
+ },
1783
+ },
1784
+ {
1785
+ id: 'kling-v2.5-turbo-t2v',
1786
+ name: 'Kling v2.5 Turbo T2V',
1787
+ provider: 'klingai',
1788
+ strategy: 'video',
1789
+ released: '2025-09',
1790
+ cost: {
1791
+ type: 'per-video-second',
1792
+ defaultDurationSec: 5,
1793
+ tiers: [
1794
+ { mode: 'std', costPerSecond: 0.042 },
1795
+ { mode: 'pro', costPerSecond: 0.07 },
1796
+ ],
1797
+ },
1798
+ features: {
1799
+ textToVideo: true,
1800
+ imageToVideo: false,
1801
+ capabilities: ['t2v'],
1802
+ aspectRatios: commonVideoRatios,
1803
+ seed: false,
1804
+ multipleVideos: false,
1805
+ },
1806
+ },
1807
+ {
1808
+ id: 'kling-v2.5-turbo-i2v',
1809
+ name: 'Kling v2.5 Turbo I2V',
1810
+ provider: 'klingai',
1811
+ strategy: 'video',
1812
+ released: '2025-09',
1813
+ cost: {
1814
+ type: 'per-video-second',
1815
+ defaultDurationSec: 5,
1816
+ tiers: [
1817
+ { mode: 'std', costPerSecond: 0.042 },
1818
+ { mode: 'pro', costPerSecond: 0.07 },
1819
+ ],
1820
+ },
1821
+ features: {
1822
+ textToVideo: false,
1823
+ imageToVideo: true,
1824
+ capabilities: ['i2v'],
1825
+ aspectRatios: commonVideoRatios,
1826
+ seed: false,
1827
+ multipleVideos: false,
1828
+ },
1829
+ },
1830
+ // ── Alibaba Wan (AI Gateway) ──────────────────────────────────────────
1831
+ {
1832
+ id: 'wan-v2.6-t2v',
1833
+ name: 'Wan v2.6 T2V',
1834
+ provider: 'alibaba',
1835
+ strategy: 'video',
1836
+ released: '2026-01',
1837
+ cost: {
1838
+ type: 'per-video-second',
1839
+ defaultDurationSec: 5,
1840
+ tiers: [
1841
+ { resolution: '720p', costPerSecond: 0.1 },
1842
+ { resolution: '1080p', costPerSecond: 0.15 },
1843
+ ],
1844
+ },
1845
+ features: {
1846
+ textToVideo: true,
1847
+ imageToVideo: false,
1848
+ capabilities: ['t2v'],
1849
+ resolutions: ['720p', '1080p'],
1850
+ durationRangeSec: { min: 2, max: 15 },
1851
+ seed: false,
1852
+ multipleVideos: false,
1853
+ },
1854
+ },
1855
+ {
1856
+ id: 'wan-v2.6-i2v',
1857
+ name: 'Wan v2.6 I2V',
1858
+ provider: 'alibaba',
1859
+ strategy: 'video',
1860
+ released: '2025-12',
1861
+ cost: {
1862
+ type: 'per-video-second',
1863
+ defaultDurationSec: 5,
1864
+ tiers: [
1865
+ { resolution: '720p', costPerSecond: 0.1 },
1866
+ { resolution: '1080p', costPerSecond: 0.15 },
1867
+ ],
1868
+ },
1869
+ features: {
1870
+ textToVideo: false,
1871
+ imageToVideo: true,
1872
+ capabilities: ['i2v'],
1873
+ aspectRatios: commonVideoRatios,
1874
+ resolutions: ['720p', '1080p'],
1875
+ durationRangeSec: { min: 2, max: 15 },
1876
+ seed: false,
1877
+ multipleVideos: false,
1878
+ },
1879
+ },
1880
+ {
1881
+ id: 'wan-v2.6-i2v-flash',
1882
+ name: 'Wan v2.6 I2V Flash',
1883
+ provider: 'alibaba',
1884
+ strategy: 'video',
1885
+ released: '2025-12',
1886
+ cost: {
1887
+ type: 'per-video-second',
1888
+ defaultDurationSec: 5,
1889
+ tiers: [
1890
+ { resolution: '720p', costPerSecond: 0.05 },
1891
+ { resolution: '1080p', costPerSecond: 0.075 },
1892
+ ],
1893
+ },
1894
+ features: {
1895
+ textToVideo: false,
1896
+ imageToVideo: true,
1897
+ capabilities: ['i2v'],
1898
+ aspectRatios: commonVideoRatios,
1899
+ resolutions: ['720p', '1080p'],
1900
+ durationRangeSec: { min: 2, max: 15 },
1901
+ seed: false,
1902
+ multipleVideos: false,
1903
+ },
1904
+ },
1905
+ {
1906
+ id: 'wan-v2.6-r2v',
1907
+ name: 'Wan v2.6 R2V',
1908
+ provider: 'alibaba',
1909
+ strategy: 'video',
1910
+ released: '2025-12',
1911
+ cost: {
1912
+ type: 'per-video-second',
1913
+ defaultDurationSec: 5,
1914
+ tiers: [
1915
+ { resolution: '720p', costPerSecond: 0.1 },
1916
+ { resolution: '1080p', costPerSecond: 0.15 },
1917
+ ],
1918
+ },
1919
+ features: {
1920
+ textToVideo: false,
1921
+ imageToVideo: false,
1922
+ capabilities: ['r2v'],
1923
+ aspectRatios: commonVideoRatios,
1924
+ resolutions: ['720p', '1080p'],
1925
+ durationRangeSec: { min: 2, max: 10 },
1926
+ seed: false,
1927
+ multipleVideos: false,
1928
+ },
1929
+ },
1930
+ {
1931
+ id: 'wan-v2.6-r2v-flash',
1932
+ name: 'Wan v2.6 R2V Flash',
1933
+ provider: 'alibaba',
1934
+ strategy: 'video',
1935
+ released: '2025-12',
1936
+ cost: {
1937
+ type: 'per-video-second',
1938
+ defaultDurationSec: 5,
1939
+ tiers: [
1940
+ { resolution: '720p', costPerSecond: 0.05 },
1941
+ { resolution: '1080p', costPerSecond: 0.075 },
1942
+ ],
1943
+ },
1944
+ features: {
1945
+ textToVideo: false,
1946
+ imageToVideo: false,
1947
+ capabilities: ['r2v'],
1948
+ aspectRatios: commonVideoRatios,
1949
+ resolutions: ['720p', '1080p'],
1950
+ durationRangeSec: { min: 2, max: 10 },
1951
+ seed: false,
1952
+ multipleVideos: false,
1953
+ },
1954
+ },
1955
+ {
1956
+ id: 'wan-v2.5-t2v-preview',
1957
+ name: 'Wan v2.5 T2V Preview',
1958
+ provider: 'alibaba',
1959
+ strategy: 'video',
1960
+ released: '2025-09',
1961
+ cost: {
1962
+ type: 'per-video-second',
1963
+ defaultDurationSec: 5,
1964
+ tiers: [
1965
+ { resolution: '480p', costPerSecond: 0.05 },
1966
+ { resolution: '720p', costPerSecond: 0.1 },
1967
+ { resolution: '1080p', costPerSecond: 0.15 },
1968
+ ],
1969
+ },
1970
+ features: {
1971
+ textToVideo: true,
1972
+ imageToVideo: false,
1973
+ capabilities: ['t2v'],
1974
+ resolutions: ['480p', '720p', '1080p'],
1975
+ seed: false,
1976
+ multipleVideos: false,
1977
+ },
1978
+ },
1979
+ // ── ByteDance Seedance (AI Gateway) ─────────────────────────────────
1980
+ // Source: https://ai-gateway.vercel.sh/v1/models/bytedance/seedance-2.0/endpoints
1981
+ // Pricing from capabilities.pricing.variants (per-second, resolution-based).
1982
+ // Seedance 2.0 uses C-Dense unified multimodal architecture: text, image, audio, video inputs.
1983
+ // Reference images for r2v must be passed as URLs (max 9 images, 300-6000px, max 30MB each).
1984
+ // Reference images in prompts use @Image1, @Image2, etc. syntax.
1985
+ {
1986
+ id: 'seedance-2.0',
1987
+ name: 'Seedance 2.0',
1988
+ description:
1989
+ 'ByteDance C-Dense multimodal video model. Supports text, image, audio, and video inputs. ' +
1990
+ 'Native audio generation with lip-sync. Up to 720p, 4-15s.',
1991
+ provider: 'bytedance',
1992
+ strategy: 'video',
1993
+ released: '2026-04',
1994
+ cost: {
1995
+ type: 'per-video-second',
1996
+ defaultDurationSec: 8,
1997
+ tiers: [
1998
+ { resolution: '480p', hasVideoInput: false, costPerSecond: 0.07 },
1999
+ { resolution: '480p', hasVideoInput: true, costPerSecond: 0.12 },
2000
+ { resolution: '720p', hasVideoInput: false, costPerSecond: 0.15 },
2001
+ { resolution: '720p', hasVideoInput: true, costPerSecond: 0.26 },
2002
+ ],
2003
+ },
2004
+ features: {
2005
+ textToVideo: true,
2006
+ imageToVideo: true,
2007
+ capabilities: ['t2v', 'i2v', 'r2v'],
2008
+ aspectRatios: ['16:9', '4:3', '1:1', '3:4', '9:16', '21:9'],
2009
+ resolutions: ['480p', '720p'],
2010
+ durationRangeSec: { min: 4, max: 15 },
2011
+ seed: false,
2012
+ multipleVideos: false,
2013
+ },
2014
+ providerOptions: bytedanceVideoProviderOptions,
2015
+ },
2016
+ {
2017
+ id: 'seedance-2.0-fast',
2018
+ name: 'Seedance 2.0 Fast',
2019
+ description:
2020
+ 'Faster variant of Seedance 2.0 with same capabilities but lower latency and cost.',
2021
+ provider: 'bytedance',
2022
+ strategy: 'video',
2023
+ released: '2026-04',
2024
+ cost: {
2025
+ type: 'per-video-second',
2026
+ defaultDurationSec: 8,
2027
+ tiers: [
2028
+ { resolution: '480p', hasVideoInput: false, costPerSecond: 0.05 },
2029
+ { resolution: '480p', hasVideoInput: true, costPerSecond: 0.09 },
2030
+ { resolution: '720p', hasVideoInput: false, costPerSecond: 0.12 },
2031
+ { resolution: '720p', hasVideoInput: true, costPerSecond: 0.20 },
2032
+ ],
2033
+ },
2034
+ providerOptions: bytedanceVideoProviderOptions,
2035
+ features: {
2036
+ textToVideo: true,
2037
+ imageToVideo: true,
2038
+ capabilities: ['t2v', 'i2v', 'r2v'],
2039
+ aspectRatios: ['16:9', '4:3', '1:1', '3:4', '9:16', '21:9'],
2040
+ resolutions: ['480p', '720p'],
2041
+ durationRangeSec: { min: 4, max: 15 },
2042
+ seed: false,
2043
+ multipleVideos: false,
2044
+ },
2045
+ },
2046
+
2047
+ {
2048
+ id: 'seedance-v1.5-pro',
2049
+ name: 'Seedance v1.5 Pro',
2050
+ description:
2051
+ 'V2A native audio-video joint generation. Synchronized audio output for professional video creation.',
2052
+ provider: 'bytedance',
2053
+ strategy: 'video',
2054
+ released: '2025-12',
2055
+ cost: {
2056
+ type: 'per-video-second',
2057
+ defaultDurationSec: 5,
2058
+ tiers: [
2059
+ { resolution: '480p', audio: false, costPerSecond: 0.0121 },
2060
+ { resolution: '480p', audio: true, costPerSecond: 0.0241 },
2061
+ { resolution: '720p', audio: false, costPerSecond: 0.0259 },
2062
+ { resolution: '720p', audio: true, costPerSecond: 0.0518 },
2063
+ { resolution: '1080p', audio: false, costPerSecond: 0.0583 },
2064
+ { resolution: '1080p', audio: true, costPerSecond: 0.1166 },
2065
+ ],
2066
+ },
2067
+ features: {
2068
+ textToVideo: true,
2069
+ imageToVideo: true,
2070
+ capabilities: ['t2v', 'i2v'],
2071
+ aspectRatios: commonVideoRatios,
2072
+ resolutions: ['480p', '720p', '1080p'],
2073
+ seed: false,
2074
+ multipleVideos: false,
2075
+ },
2076
+ },
2077
+ {
2078
+ id: 'seedance-v1.0-pro',
2079
+ name: 'Seedance v1.0 Pro',
2080
+ description:
2081
+ 'Multi-shot storytelling model. Smooth, detailed, cinematic 1080p HD videos.',
2082
+ provider: 'bytedance',
2083
+ strategy: 'video',
2084
+ released: '2025-06',
2085
+ cost: {
2086
+ type: 'per-video-second',
2087
+ defaultDurationSec: 5,
2088
+ tiers: [
2089
+ { resolution: '480p', costPerSecond: 0.0243 },
2090
+ { resolution: '720p', costPerSecond: 0.0515 },
2091
+ { resolution: '1080p', costPerSecond: 0.1224 },
2092
+ ],
2093
+ },
2094
+ features: {
2095
+ textToVideo: true,
2096
+ imageToVideo: true,
2097
+ capabilities: ['t2v', 'i2v'],
2098
+ aspectRatios: commonVideoRatios,
2099
+ resolutions: ['480p', '720p', '1080p'],
2100
+ seed: false,
2101
+ multipleVideos: false,
2102
+ },
2103
+ },
2104
+ {
2105
+ id: 'seedance-v1.0-pro-fast',
2106
+ name: 'Seedance v1.0 Pro Fast',
2107
+ description:
2108
+ 'Cost-efficient fast variant of Seedance 1.0 Pro.',
2109
+ provider: 'bytedance',
2110
+ strategy: 'video',
2111
+ released: '2025-10',
2112
+ cost: {
2113
+ type: 'per-video-second',
2114
+ defaultDurationSec: 5,
2115
+ tiers: [
2116
+ { resolution: '480p', costPerSecond: 0.0097 },
2117
+ { resolution: '720p', costPerSecond: 0.0206 },
2118
+ { resolution: '1080p', costPerSecond: 0.049 },
2119
+ ],
2120
+ },
2121
+ features: {
2122
+ textToVideo: true,
2123
+ imageToVideo: true,
2124
+ capabilities: ['t2v', 'i2v'],
2125
+ aspectRatios: commonVideoRatios,
2126
+ resolutions: ['480p', '720p', '1080p'],
2127
+ seed: false,
2128
+ multipleVideos: false,
2129
+ },
2130
+ },
2131
+ {
2132
+ id: 'seedance-v1.0-lite-t2v',
2133
+ name: 'Seedance v1.0 Lite T2V',
2134
+ description:
2135
+ 'Lightweight text-to-video model. Balances quality and speed with strong semantic understanding.',
2136
+ provider: 'bytedance',
2137
+ strategy: 'video',
2138
+ released: '2025-06',
2139
+ cost: {
2140
+ type: 'per-video-second',
2141
+ defaultDurationSec: 5,
2142
+ tiers: [
2143
+ { resolution: '480p', costPerSecond: 0.0175 },
2144
+ { resolution: '720p', costPerSecond: 0.0371 },
2145
+ { resolution: '1080p', costPerSecond: 0.0881 },
2146
+ ],
2147
+ },
2148
+ features: {
2149
+ textToVideo: true,
2150
+ imageToVideo: false,
2151
+ capabilities: ['t2v'],
2152
+ aspectRatios: commonVideoRatios,
2153
+ resolutions: ['480p', '720p', '1080p'],
2154
+ durationRangeSec: { min: 3, max: 12 },
2155
+ seed: false,
2156
+ multipleVideos: false,
2157
+ },
2158
+ },
2159
+ {
2160
+ id: 'seedance-v1.0-lite-i2v',
2161
+ name: 'Seedance v1.0 Lite I2V',
2162
+ description:
2163
+ 'Lightweight image-to-video model. Generates video from image/text with reference image support.',
2164
+ provider: 'bytedance',
2165
+ strategy: 'video',
2166
+ released: '2025-06',
2167
+ cost: {
2168
+ type: 'per-video-second',
2169
+ defaultDurationSec: 5,
2170
+ tiers: [
2171
+ { resolution: '480p', costPerSecond: 0.0175 },
2172
+ { resolution: '720p', costPerSecond: 0.0371 },
2173
+ { resolution: '1080p', costPerSecond: 0.0881 },
2174
+ ],
2175
+ },
2176
+ features: {
2177
+ textToVideo: false,
2178
+ imageToVideo: true,
2179
+ capabilities: ['i2v', 'r2v'],
2180
+ aspectRatios: commonVideoRatios,
2181
+ resolutions: ['480p', '720p', '1080p'],
2182
+ durationRangeSec: { min: 3, max: 12 },
2183
+ seed: false,
2184
+ multipleVideos: false,
2185
+ },
2186
+ providerOptions: bytedanceVideoProviderOptions,
2187
+ },
2188
+ // ── Fal video models ─────────────────────────────────────────────────
2189
+ {
2190
+ id: 'luma-ray-2',
2191
+ name: 'Luma Ray 2 (Fal)',
2192
+ provider: 'fal',
2193
+ strategy: 'video',
2194
+ released: '2025-11',
2195
+ cost: { type: 'unknown' },
2196
+ features: {
2197
+ textToVideo: true,
2198
+ imageToVideo: true,
2199
+ capabilities: ['t2v', 'i2v'],
2200
+ aspectRatios: commonVideoRatios,
2201
+ seed: true,
2202
+ multipleVideos: false,
2203
+ },
2204
+ providerOptions: falVideoProviderOptions,
2205
+ },
2206
+ {
2207
+ id: 'minimax-video',
2208
+ name: 'MiniMax Video (Fal)',
2209
+ provider: 'fal',
2210
+ strategy: 'video',
2211
+ released: '2025-10',
2212
+ cost: { type: 'unknown' },
2213
+ features: {
2214
+ textToVideo: true,
2215
+ imageToVideo: false,
2216
+ capabilities: ['t2v'],
2217
+ aspectRatios: commonVideoRatios,
2218
+ seed: false,
2219
+ multipleVideos: false,
2220
+ },
2221
+ providerOptions: falVideoProviderOptions,
2222
+ },
2223
+ {
2224
+ id: 'hunyuan-video',
2225
+ name: 'Hunyuan Video (Fal)',
2226
+ provider: 'fal',
2227
+ strategy: 'video',
2228
+ released: '2025-09',
2229
+ cost: { type: 'unknown' },
2230
+ features: {
2231
+ textToVideo: true,
2232
+ imageToVideo: true,
2233
+ capabilities: ['t2v', 'i2v'],
2234
+ aspectRatios: commonVideoRatios,
2235
+ seed: true,
2236
+ multipleVideos: false,
2237
+ },
2238
+ providerOptions: falVideoProviderOptions,
2239
+ },
2240
+ ]
2241
+
2242
+ // ─── provider option helpers ─────────────────────────────────────────────────
2243
+
2244
+ /**
2245
+ * Collect the valid values for a CLI flag across all providers in the catalog.
2246
+ * Returns a map of provider name → enum values array. Only includes providers
2247
+ * that declare values for the given flag. Used by cli.ts to auto-generate
1526
2248
  * flag descriptions like "xAI: low, medium, high. OpenAI: auto, low, medium, high".
1527
2249
  */
1528
2250
  export function getProviderValuesForFlag(
@@ -1605,3 +2327,10 @@ export function findVideoModel(id: string): VideoModelEntry | undefined {
1605
2327
  export function findAnyModel(id: string): AnyModelEntry | undefined {
1606
2328
  return imageCatalogIndex.get(id) ?? videoCatalogIndex.get(id)
1607
2329
  }
2330
+
2331
+ // Re-export speech catalog for convenience in CLI code that needs all catalogs.
2332
+ export { SPEECH_CATALOG, findSpeechModel } from './speech-catalog.js'
2333
+
2334
+ // Re-export transcription catalog.
2335
+ export { TRANSCRIPTION_CATALOG, findTranscriptionModel } from './transcription-catalog.js'
2336
+ export type { TranscriptionModelEntry } from './transcription-catalog.js'