@henjicc/ai-sdk 0.8.0 → 0.10.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 (704) hide show
  1. package/CHANGELOG.md +275 -211
  2. package/README.md +580 -577
  3. package/dist/capabilities/speech-recognition/bailian/module.js +40 -26
  4. package/dist/capabilities/speech-recognition/bailian/parse.js +9 -2
  5. package/dist/capabilities/speech-recognition/bailian/presets.d.ts +9 -1
  6. package/dist/capabilities/speech-recognition/bailian/presets.js +7 -2
  7. package/dist/capabilities/speech-recognition/bailian/realtime/presets.d.ts +2 -1
  8. package/dist/capabilities/speech-recognition/bailian/realtime/presets.js +2 -0
  9. package/dist/capabilities/speech-recognition/bailian/types.d.ts +2 -0
  10. package/dist/capabilities/speech-recognition/bailian/upload.js +11 -58
  11. package/dist/capabilities/speech-recognition/index.d.ts +5 -0
  12. package/dist/capabilities/speech-recognition/siliconflow/presets.d.ts +2 -3
  13. package/dist/capabilities/speech-recognition/siliconflow/presets.js +0 -2
  14. package/dist/capabilities/translation/bailian/types.d.ts +3 -0
  15. package/dist/capabilities/translation/bailian/types.js +6 -4
  16. package/dist/catalog/apimart/flux-3-image.model.d.ts +3 -0
  17. package/dist/catalog/apimart/flux-3-image.model.js +62 -0
  18. package/dist/catalog/apimart/flux-3-video.model.d.ts +3 -0
  19. package/dist/catalog/apimart/flux-3-video.model.js +120 -0
  20. package/dist/catalog/apimart/gemini-omni-1.2-flash.model.d.ts +3 -0
  21. package/dist/catalog/apimart/gemini-omni-1.2-flash.model.js +175 -0
  22. package/dist/catalog/apimart/gemini-omni-flash.model.js +30 -37
  23. package/dist/catalog/apimart/gpt-image-2.5.model.js +1 -1
  24. package/dist/catalog/apimart/gpt-image-2.6.model.d.ts +3 -0
  25. package/dist/catalog/apimart/gpt-image-2.6.model.js +103 -0
  26. package/dist/catalog/apimart/gpt-image-2.model.js +1 -1
  27. package/dist/catalog/apimart/grok-imagine-2.0.model.js +1 -1
  28. package/dist/catalog/apimart/grok-imagine-video-1.5.model.d.ts +3 -0
  29. package/dist/catalog/apimart/grok-imagine-video-1.5.model.js +85 -0
  30. package/dist/catalog/apimart/happyhorse-1.1.model.d.ts +3 -0
  31. package/dist/catalog/apimart/happyhorse-1.1.model.js +78 -0
  32. package/dist/catalog/apimart/kling-3.0-omni.model.js +12 -2
  33. package/dist/catalog/apimart/kling-3.0-turbo.model.js +5 -2
  34. package/dist/catalog/apimart/kling-3.0.model.js +1 -1
  35. package/dist/catalog/apimart/kling-4.0.model.d.ts +3 -0
  36. package/dist/catalog/apimart/kling-4.0.model.js +149 -0
  37. package/dist/catalog/apimart/midjourney-video.model.js +31 -32
  38. package/dist/catalog/apimart/midjourney.model.js +11 -1
  39. package/dist/catalog/apimart/minimax-h3-max.model.d.ts +3 -0
  40. package/dist/catalog/apimart/minimax-h3-max.model.js +101 -0
  41. package/dist/catalog/apimart/minimax-h3.model.js +8 -3
  42. package/dist/catalog/apimart/nano-banana-2-lite.model.js +1 -1
  43. package/dist/catalog/apimart/nano-banana-2.1.model.d.ts +2 -0
  44. package/dist/catalog/apimart/nano-banana-2.1.model.js +49 -0
  45. package/dist/catalog/apimart/nano-banana-2.model.js +1 -1
  46. package/dist/catalog/apimart/nano-banana-pro.model.js +1 -1
  47. package/dist/catalog/apimart/qwen-image-3.0.model.js +1 -1
  48. package/dist/catalog/apimart/seedance-2.0-fast.model.js +1 -1
  49. package/dist/catalog/apimart/seedance-2.0-mini.model.js +4 -4
  50. package/dist/catalog/apimart/seedance-2.0.model.js +1 -1
  51. package/dist/catalog/apimart/seedance-2.5.model.js +27 -5
  52. package/dist/catalog/apimart/seedream-5.0-flash.model.d.ts +3 -0
  53. package/dist/catalog/apimart/seedream-5.0-flash.model.js +52 -0
  54. package/dist/catalog/apimart/seedream-5.0-lite.model.js +4 -4
  55. package/dist/catalog/apimart/seedream-5.0-pro.model.js +1 -1
  56. package/dist/catalog/apimart/veo-3.1.model.d.ts +3 -0
  57. package/dist/catalog/apimart/veo-3.1.model.js +132 -0
  58. package/dist/catalog/apimart/wan-2.7-image.model.d.ts +3 -0
  59. package/dist/catalog/apimart/wan-2.7-image.model.js +80 -0
  60. package/dist/catalog/apimart/wan-3.0.model.d.ts +3 -0
  61. package/dist/catalog/apimart/wan-3.0.model.js +101 -0
  62. package/dist/catalog/apimart/z-image-turbo.model.js +1 -1
  63. package/dist/catalog/audio/tts-common.d.ts +2 -1
  64. package/dist/catalog/audio/tts-common.js +5 -1
  65. package/dist/catalog/bailian/cosyvoice-v3.5.model.js +1 -1
  66. package/dist/catalog/bailian/minimax-h3.model.d.ts +3 -0
  67. package/dist/catalog/bailian/minimax-h3.model.js +95 -0
  68. package/dist/catalog/bailian/minimax-speech-2.8.model.js +1 -1
  69. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.js +14 -3
  70. package/dist/catalog/bailian/qwen-audio-3.1-tts-plus.model.d.ts +2 -0
  71. package/dist/catalog/bailian/qwen-audio-3.1-tts-plus.model.js +44 -0
  72. package/dist/catalog/bailian/qwen-image-3.0.model.js +1 -1
  73. package/dist/catalog/bailian/wan-3.0.model.d.ts +3 -0
  74. package/dist/catalog/bailian/wan-3.0.model.js +104 -0
  75. package/dist/catalog/bailian/z-image-turbo.model.js +1 -1
  76. package/dist/catalog/consumer-contract.d.ts +16 -1
  77. package/dist/catalog/consumer-contract.js +31 -0
  78. package/dist/catalog/continuation.d.ts +20 -0
  79. package/dist/catalog/continuation.js +41 -0
  80. package/dist/catalog/fal/bria-creative-upscale.model.js +1 -1
  81. package/dist/catalog/fal/eleven-v3-tts.model.js +1 -1
  82. package/dist/catalog/fal/eleven-v4-tts.model.d.ts +2 -0
  83. package/dist/catalog/fal/eleven-v4-tts.model.js +38 -0
  84. package/dist/catalog/fal/flux-3-video.model.d.ts +2 -0
  85. package/dist/catalog/fal/flux-3-video.model.js +187 -0
  86. package/dist/catalog/fal/flux-3.model.d.ts +2 -0
  87. package/dist/catalog/fal/flux-3.model.js +69 -0
  88. package/dist/catalog/fal/gemini-omni-1.2-flash.model.d.ts +2 -0
  89. package/dist/catalog/fal/gemini-omni-1.2-flash.model.js +129 -0
  90. package/dist/catalog/fal/gemini-omni-flash.model.js +1 -1
  91. package/dist/catalog/fal/gpt-image-2.5.model.js +1 -1
  92. package/dist/catalog/fal/gpt-image-2.6.model.d.ts +2 -0
  93. package/dist/catalog/fal/gpt-image-2.6.model.js +97 -0
  94. package/dist/catalog/fal/gpt-image-2.model.js +1 -1
  95. package/dist/catalog/fal/grok-imagine-2.0.model.js +1 -1
  96. package/dist/catalog/fal/grok-imagine-video-1.5.model.d.ts +2 -0
  97. package/dist/catalog/fal/grok-imagine-video-1.5.model.js +121 -0
  98. package/dist/catalog/fal/hailuo-02.model.js +8 -4
  99. package/dist/catalog/fal/hailuo-2.3.model.js +1 -1
  100. package/dist/catalog/fal/ic-light-v2.model.js +1 -1
  101. package/dist/catalog/fal/ideogram-upscale.model.js +1 -1
  102. package/dist/catalog/fal/kling-3.0-omni.model.js +1 -1
  103. package/dist/catalog/fal/kling-3.0-turbo.model.js +5 -2
  104. package/dist/catalog/fal/kling-3.0.model.js +4 -1
  105. package/dist/catalog/fal/kling-4.0-flash.model.d.ts +2 -0
  106. package/dist/catalog/fal/kling-4.0-flash.model.js +132 -0
  107. package/dist/catalog/fal/kling-4.0.model.d.ts +2 -0
  108. package/dist/catalog/fal/kling-4.0.model.js +169 -0
  109. package/dist/catalog/fal/kling-image-o1.model.js +1 -1
  110. package/dist/catalog/fal/kling-video-o1.model.js +18 -7
  111. package/dist/catalog/fal/kling-video-v2.6-pro.model.js +3 -2
  112. package/dist/catalog/fal/ltx-2.3.model.d.ts +2 -0
  113. package/dist/catalog/fal/ltx-2.3.model.js +223 -0
  114. package/dist/catalog/fal/ltx-2.model.js +2 -1
  115. package/dist/catalog/fal/minimax-h3-max.model.d.ts +2 -0
  116. package/dist/catalog/fal/minimax-h3-max.model.js +132 -0
  117. package/dist/catalog/fal/minimax-h3.model.js +3 -4
  118. package/dist/catalog/fal/minimax-speech-2.8.model.js +1 -1
  119. package/dist/catalog/fal/nano-banana-2.1.model.d.ts +2 -0
  120. package/dist/catalog/fal/nano-banana-2.1.model.js +68 -0
  121. package/dist/catalog/fal/nano-banana-2.model.js +1 -1
  122. package/dist/catalog/fal/nano-banana-pro.model.js +1 -1
  123. package/dist/catalog/fal/nano-banana.model.js +1 -1
  124. package/dist/catalog/fal/pixverse-v5.5.model.js +9 -4
  125. package/dist/catalog/fal/qwen-image-3.0.model.js +2 -2
  126. package/dist/catalog/fal/qwen3-tts-1.7b.model.js +4 -3
  127. package/dist/catalog/fal/seedance-2.0-fast.model.js +1 -1
  128. package/dist/catalog/fal/seedance-2.0-mini.model.js +1 -1
  129. package/dist/catalog/fal/seedance-2.0.model.js +1 -1
  130. package/dist/catalog/fal/seedance-2.5.model.js +5 -2
  131. package/dist/catalog/fal/seedance.model.js +3 -2
  132. package/dist/catalog/fal/seedream-5.0-lite.model.js +1 -1
  133. package/dist/catalog/fal/seedream-5.0-pro.model.js +1 -1
  134. package/dist/catalog/fal/seedream-v4.5.model.js +1 -1
  135. package/dist/catalog/fal/seedream-v4.model.js +1 -1
  136. package/dist/catalog/fal/seedvr2-image-upscale.model.js +1 -1
  137. package/dist/catalog/fal/topaz-image-upscale.model.js +1 -1
  138. package/dist/catalog/fal/topaz-transparent-upscale.model.js +1 -1
  139. package/dist/catalog/fal/utils/klingV4.d.ts +17 -0
  140. package/dist/catalog/fal/utils/klingV4.js +33 -0
  141. package/dist/catalog/fal/veo-3.1.model.js +5 -2
  142. package/dist/catalog/fal/vidu-q2.model.js +20 -8
  143. package/dist/catalog/fal/wan-2.5-preview.model.js +4 -1
  144. package/dist/catalog/fal/wan-3.0.model.d.ts +2 -0
  145. package/dist/catalog/fal/wan-3.0.model.js +135 -0
  146. package/dist/catalog/fal/z-image-turbo.model.js +10 -9
  147. package/dist/catalog/grsai/gpt-image-2.5.model.js +13 -31
  148. package/dist/catalog/grsai/gpt-image-2.6.model.d.ts +2 -0
  149. package/dist/catalog/grsai/gpt-image-2.6.model.js +37 -0
  150. package/dist/catalog/grsai/gpt-image-2.model.js +5 -2
  151. package/dist/catalog/grsai/nano-banana-2-lite.model.js +1 -1
  152. package/dist/catalog/grsai/nano-banana-2.1.model.d.ts +2 -0
  153. package/dist/catalog/grsai/nano-banana-2.1.model.js +29 -0
  154. package/dist/catalog/grsai/nano-banana-2.model.js +1 -1
  155. package/dist/catalog/grsai/nano-banana-pro.model.js +1 -1
  156. package/dist/catalog/grsai/wan-3.0.model.d.ts +2 -0
  157. package/dist/catalog/grsai/wan-3.0.model.js +78 -0
  158. package/dist/catalog/index.d.ts +1 -0
  159. package/dist/catalog/index.js +205 -124
  160. package/dist/catalog/kie/eleven-v3-dialogue.model.js +1 -1
  161. package/dist/catalog/kie/flux-3-klein.model.d.ts +2 -0
  162. package/dist/catalog/kie/flux-3-klein.model.js +58 -0
  163. package/dist/catalog/kie/gemini-3.1-flash-tts.model.js +7 -4
  164. package/dist/catalog/kie/gemini-3.8-flash-lite-tts.model.d.ts +2 -0
  165. package/dist/catalog/kie/gemini-3.8-flash-lite-tts.model.js +11 -0
  166. package/dist/catalog/kie/gemini-3.8-flash-tts.model.d.ts +2 -0
  167. package/dist/catalog/kie/gemini-3.8-flash-tts.model.js +11 -0
  168. package/dist/catalog/kie/gemini-omni-video.model.js +8 -30
  169. package/dist/catalog/kie/gemini38Tts.d.ts +3 -0
  170. package/dist/catalog/kie/gemini38Tts.js +40 -0
  171. package/dist/catalog/kie/gpt-image-2.5.model.js +1 -1
  172. package/dist/catalog/kie/gpt-image-2.6.model.d.ts +2 -0
  173. package/dist/catalog/kie/gpt-image-2.6.model.js +87 -0
  174. package/dist/catalog/kie/gpt-image-2.model.js +8 -12
  175. package/dist/catalog/kie/grok-imagine-2.0.model.js +1 -1
  176. package/dist/catalog/kie/grok-imagine-video-1.5.model.d.ts +2 -0
  177. package/dist/catalog/kie/grok-imagine-video-1.5.model.js +52 -0
  178. package/dist/catalog/kie/grok-imagine-video.model.js +7 -3
  179. package/dist/catalog/kie/grok-imagine.model.js +4 -2
  180. package/dist/catalog/kie/hailuo-02.model.js +6 -4
  181. package/dist/catalog/kie/hailuo-2-3.model.js +1 -1
  182. package/dist/catalog/kie/happyhorse-1.1.model.js +5 -2
  183. package/dist/catalog/kie/kling-3.0-omni.model.js +51 -23
  184. package/dist/catalog/kie/kling-3.0-turbo.model.js +1 -1
  185. package/dist/catalog/kie/kling-3.0.model.js +1 -8
  186. package/dist/catalog/kie/kling-4.0-flash.model.d.ts +2 -0
  187. package/dist/catalog/kie/kling-4.0-flash.model.js +16 -0
  188. package/dist/catalog/kie/kling-4.0.model.d.ts +2 -0
  189. package/dist/catalog/kie/kling-4.0.model.js +17 -0
  190. package/dist/catalog/kie/kling-v2-6.model.js +1 -1
  191. package/dist/catalog/kie/kling40.d.ts +21 -0
  192. package/dist/catalog/kie/kling40.js +129 -0
  193. package/dist/catalog/kie/minimax-h3.model.js +16 -21
  194. package/dist/catalog/kie/nano-banana-2-lite.model.js +1 -1
  195. package/dist/catalog/kie/nano-banana-2.1.model.d.ts +2 -0
  196. package/dist/catalog/kie/nano-banana-2.1.model.js +34 -0
  197. package/dist/catalog/kie/nano-banana-2.model.js +2 -2
  198. package/dist/catalog/kie/nano-banana-pro.model.js +1 -1
  199. package/dist/catalog/kie/qwen-image-3.0.model.js +2 -10
  200. package/dist/catalog/kie/seedance-1.5-pro.model.js +2 -1
  201. package/dist/catalog/kie/seedance-2.0-fast.model.js +5 -1
  202. package/dist/catalog/kie/seedance-2.0-mini.model.js +5 -1
  203. package/dist/catalog/kie/seedance-2.0.model.js +5 -1
  204. package/dist/catalog/kie/seedance-2.5.model.js +10 -20
  205. package/dist/catalog/kie/seedance-v1.model.js +8 -4
  206. package/dist/catalog/kie/seedream-4.0.model.js +1 -1
  207. package/dist/catalog/kie/seedream-4.5.model.js +1 -1
  208. package/dist/catalog/kie/seedream-5.0-lite.model.js +1 -1
  209. package/dist/catalog/kie/seedream-5.0-pro.model.js +1 -1
  210. package/dist/catalog/kie/wan-3.0-prime.model.d.ts +2 -0
  211. package/dist/catalog/kie/wan-3.0-prime.model.js +15 -0
  212. package/dist/catalog/kie/wan-3.0.model.d.ts +2 -0
  213. package/dist/catalog/kie/wan-3.0.model.js +15 -0
  214. package/dist/catalog/kie/wan30.d.ts +10 -0
  215. package/dist/catalog/kie/wan30.js +78 -0
  216. package/dist/catalog/kie/z-image.model.js +1 -1
  217. package/dist/catalog/modelscope/flux-1-krea-dev.model.js +4 -2
  218. package/dist/catalog/modelscope/majicmix-realistic.model.js +3 -2
  219. package/dist/catalog/modelscope/modelscope-custom.model.js +3 -2
  220. package/dist/catalog/modelscope/qwen-image-2512.model.d.ts +5 -0
  221. package/dist/catalog/modelscope/{qwen-image.model.js → qwen-image-2512.model.js} +11 -8
  222. package/dist/catalog/modelscope/qwen-image-edit-2511.model.d.ts +5 -0
  223. package/dist/catalog/modelscope/{qwen-image-edit-2509.model.js → qwen-image-edit-2511.model.js} +9 -7
  224. package/dist/catalog/modelscope/sdxl-14-ckpt.model.js +3 -2
  225. package/dist/catalog/modelscope/utils.js +2 -2
  226. package/dist/catalog/modelscope/z-image-turbo.model.js +3 -2
  227. package/dist/catalog/ppio/kling-3.0.model.js +4 -1
  228. package/dist/catalog/ppio/minimax-speech.model.js +2 -1
  229. package/dist/catalog/shared/mediaPresence.d.ts +8 -1
  230. package/dist/catalog/shared/mediaPresence.js +21 -1
  231. package/dist/catalog/shared/nanoBanana21.d.ts +11 -0
  232. package/dist/catalog/shared/nanoBanana21.js +30 -0
  233. package/dist/catalog/shared/shotList.d.ts +31 -0
  234. package/dist/catalog/shared/shotList.js +48 -0
  235. package/dist/catalog/shared/subjectElements.d.ts +36 -0
  236. package/dist/catalog/shared/subjectElements.js +93 -0
  237. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.js +1 -1
  238. package/dist/catalog/validate.js +14 -1
  239. package/dist/catalog/volcengine/seedance-2.0-fast.model.d.ts +2 -0
  240. package/dist/catalog/volcengine/seedance-2.0-fast.model.js +11 -0
  241. package/dist/catalog/volcengine/seedance-2.0-mini.model.d.ts +2 -0
  242. package/dist/catalog/volcengine/seedance-2.0-mini.model.js +11 -0
  243. package/dist/catalog/volcengine/seedance-2.0.model.d.ts +2 -0
  244. package/dist/catalog/volcengine/seedance-2.0.model.js +11 -0
  245. package/dist/catalog/volcengine/seedance-2.5.model.d.ts +2 -0
  246. package/dist/catalog/volcengine/seedance-2.5.model.js +11 -0
  247. package/dist/catalog/volcengine/seedance.d.ts +17 -0
  248. package/dist/catalog/volcengine/seedance.js +192 -0
  249. package/dist/catalog/volcengine/seedream-5.0-lite.model.js +2 -1
  250. package/dist/catalog/volcengine/seedream-5.0.js +1 -1
  251. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.d.ts +1 -0
  252. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.js +52 -10
  253. package/dist/catalog/volcengine-speech/seed-tts-2.0-voices.d.ts +2 -0
  254. package/dist/catalog/volcengine-speech/seed-tts-2.0-voices.js +438 -0
  255. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.js +4 -4
  256. package/dist/discovery/index.js +13 -6
  257. package/dist/generation/core.d.ts +6 -0
  258. package/dist/generation/core.js +10 -2
  259. package/dist/index.d.ts +8 -0
  260. package/dist/index.js +9 -0
  261. package/dist/llm/bigmodel/preset.js +2 -1
  262. package/dist/llm/bigmodel/profiles.js +0 -6
  263. package/dist/llm/chat.d.ts +8 -0
  264. package/dist/llm/chat.js +18 -2
  265. package/dist/llm/chatTypes.d.ts +6 -0
  266. package/dist/llm/defaults.d.ts +2 -2
  267. package/dist/llm/defaults.js +3 -3
  268. package/dist/llm/groq/preset.js +18 -2
  269. package/dist/llm/modelCatalog.d.ts +9 -2
  270. package/dist/llm/modelCatalog.js +17 -4
  271. package/dist/llm/modelCatalogEntries.d.ts +2 -0
  272. package/dist/llm/modelCatalogEntries.js +197 -42
  273. package/dist/llm/providerPresets.d.ts +3 -0
  274. package/dist/llm/providerPresets.js +145 -32
  275. package/dist/llm/providerReasoningRequest.js +28 -11
  276. package/dist/llm/siliconflow/index.js +1 -1
  277. package/dist/llm/siliconflow/preset.js +30 -0
  278. package/dist/llm/types.d.ts +6 -0
  279. package/dist/packs/models/{ppio/wan-2.5-preview.d.ts → apimart/flux-3-image.d.ts} +1 -1
  280. package/dist/packs/models/apimart/flux-3-image.js +7 -0
  281. package/dist/packs/models/apimart/flux-3-video.d.ts +6 -0
  282. package/dist/packs/models/apimart/flux-3-video.js +7 -0
  283. package/dist/packs/models/apimart/gemini-omni-1.2-flash.d.ts +6 -0
  284. package/dist/packs/models/apimart/gemini-omni-1.2-flash.js +7 -0
  285. package/dist/packs/models/{modelscope/qwen-image.d.ts → apimart/gpt-image-2.6.d.ts} +1 -1
  286. package/dist/packs/models/apimart/gpt-image-2.6.js +7 -0
  287. package/dist/packs/models/apimart/grok-imagine-video-1.5.d.ts +6 -0
  288. package/dist/packs/models/apimart/grok-imagine-video-1.5.js +7 -0
  289. package/dist/packs/models/apimart/happyhorse-1.1.d.ts +6 -0
  290. package/dist/packs/models/apimart/happyhorse-1.1.js +7 -0
  291. package/dist/packs/models/apimart/kling-4.0.d.ts +6 -0
  292. package/dist/packs/models/apimart/kling-4.0.js +7 -0
  293. package/dist/packs/models/apimart/minimax-h3-max.d.ts +6 -0
  294. package/dist/packs/models/apimart/minimax-h3-max.js +7 -0
  295. package/dist/packs/models/{ppio/minimax-hailuo-2.3.d.ts → apimart/nano-banana-2.1.d.ts} +1 -1
  296. package/dist/packs/models/{ppio/minimax-hailuo-2.3.js → apimart/nano-banana-2.1.js} +4 -4
  297. package/dist/packs/models/apimart/seedream-5.0-flash.d.ts +6 -0
  298. package/dist/packs/models/apimart/seedream-5.0-flash.js +7 -0
  299. package/dist/packs/models/apimart/veo-3.1.d.ts +6 -0
  300. package/dist/packs/models/apimart/veo-3.1.js +7 -0
  301. package/dist/packs/models/apimart/wan-2.7-image.d.ts +6 -0
  302. package/dist/packs/models/apimart/wan-2.7-image.js +7 -0
  303. package/dist/packs/models/apimart/wan-3.0.d.ts +6 -0
  304. package/dist/packs/models/apimart/wan-3.0.js +7 -0
  305. package/dist/packs/models/bailian/cosyvoice-v3.5.js +1 -1
  306. package/dist/packs/models/bailian/minimax-h3.d.ts +6 -0
  307. package/dist/packs/models/bailian/minimax-h3.js +7 -0
  308. package/dist/packs/models/bailian/minimax-speech-2.8.js +1 -1
  309. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.js +1 -1
  310. package/dist/packs/models/bailian/qwen-audio-3.1-tts-plus.d.ts +6 -0
  311. package/dist/packs/models/bailian/qwen-audio-3.1-tts-plus.js +7 -0
  312. package/dist/packs/models/bailian/qwen-image-3.0.js +1 -1
  313. package/dist/packs/models/bailian/wan-3.0.d.ts +6 -0
  314. package/dist/packs/models/bailian/wan-3.0.js +7 -0
  315. package/dist/packs/models/bailian/z-image-turbo.js +1 -1
  316. package/dist/packs/models/fal/eleven-v4-tts.d.ts +6 -0
  317. package/dist/packs/models/{ppio/wan-2.5-preview.js → fal/eleven-v4-tts.js} +4 -4
  318. package/dist/packs/models/fal/flux-3-video.d.ts +6 -0
  319. package/dist/packs/models/fal/flux-3-video.js +7 -0
  320. package/dist/packs/models/{ppio/wan-2.6.d.ts → fal/flux-3.d.ts} +1 -1
  321. package/dist/packs/models/{ppio/wan-2.6.js → fal/flux-3.js} +4 -4
  322. package/dist/packs/models/fal/gemini-omni-1.2-flash.d.ts +6 -0
  323. package/dist/packs/models/fal/gemini-omni-1.2-flash.js +7 -0
  324. package/dist/packs/models/fal/gpt-image-2.6.d.ts +6 -0
  325. package/dist/packs/models/fal/gpt-image-2.6.js +7 -0
  326. package/dist/packs/models/fal/grok-imagine-video-1.5.d.ts +6 -0
  327. package/dist/packs/models/fal/grok-imagine-video-1.5.js +7 -0
  328. package/dist/packs/models/fal/kling-4.0-flash.d.ts +6 -0
  329. package/dist/packs/models/fal/kling-4.0-flash.js +7 -0
  330. package/dist/packs/models/fal/kling-4.0.d.ts +6 -0
  331. package/dist/packs/models/{ppio/wan-2.7.js → fal/kling-4.0.js} +4 -4
  332. package/dist/packs/models/{ppio/wan-2.7.d.ts → fal/ltx-2.3.d.ts} +1 -1
  333. package/dist/packs/models/fal/ltx-2.3.js +7 -0
  334. package/dist/packs/models/fal/minimax-h3-max.d.ts +6 -0
  335. package/dist/packs/models/fal/minimax-h3-max.js +7 -0
  336. package/dist/packs/models/fal/nano-banana-2.1.d.ts +6 -0
  337. package/dist/packs/models/fal/nano-banana-2.1.js +7 -0
  338. package/dist/packs/models/fal/wan-3.0.d.ts +6 -0
  339. package/dist/packs/models/fal/wan-3.0.js +7 -0
  340. package/dist/packs/models/grsai/gpt-image-2.6.d.ts +6 -0
  341. package/dist/packs/models/grsai/gpt-image-2.6.js +7 -0
  342. package/dist/packs/models/grsai/nano-banana-2.1.d.ts +6 -0
  343. package/dist/packs/models/grsai/nano-banana-2.1.js +7 -0
  344. package/dist/packs/models/grsai/wan-3.0.d.ts +6 -0
  345. package/dist/packs/models/grsai/wan-3.0.js +7 -0
  346. package/dist/packs/models/kie/flux-3-klein.d.ts +6 -0
  347. package/dist/packs/models/kie/flux-3-klein.js +7 -0
  348. package/dist/packs/models/kie/gemini-3.8-flash-lite-tts.d.ts +6 -0
  349. package/dist/packs/models/kie/gemini-3.8-flash-lite-tts.js +7 -0
  350. package/dist/packs/models/kie/{eleven-turbo-2.5-tts.d.ts → gemini-3.8-flash-tts.d.ts} +1 -1
  351. package/dist/packs/models/kie/{eleven-turbo-2.5-tts.js → gemini-3.8-flash-tts.js} +1 -1
  352. package/dist/packs/models/kie/gpt-image-2.6.d.ts +6 -0
  353. package/dist/packs/models/kie/gpt-image-2.6.js +7 -0
  354. package/dist/packs/models/kie/grok-imagine-video-1.5.d.ts +6 -0
  355. package/dist/packs/models/kie/grok-imagine-video-1.5.js +7 -0
  356. package/dist/packs/models/kie/kling-4.0-flash.d.ts +6 -0
  357. package/dist/packs/models/kie/kling-4.0-flash.js +7 -0
  358. package/dist/packs/models/kie/kling-4.0.d.ts +6 -0
  359. package/dist/packs/models/kie/kling-4.0.js +7 -0
  360. package/dist/packs/models/kie/nano-banana-2.1.d.ts +6 -0
  361. package/dist/packs/models/kie/nano-banana-2.1.js +7 -0
  362. package/dist/packs/models/kie/wan-3.0-prime.d.ts +6 -0
  363. package/dist/packs/models/kie/wan-3.0-prime.js +7 -0
  364. package/dist/packs/models/kie/wan-3.0.d.ts +6 -0
  365. package/dist/packs/models/kie/wan-3.0.js +7 -0
  366. package/dist/packs/models/modelscope/flux-1-krea-dev.js +1 -1
  367. package/dist/packs/models/modelscope/majicmix-realistic.js +1 -1
  368. package/dist/packs/models/modelscope/modelscope-custom.js +1 -1
  369. package/dist/packs/models/modelscope/qwen-image-2512.d.ts +6 -0
  370. package/dist/packs/models/modelscope/{qwen-image.js → qwen-image-2512.js} +2 -2
  371. package/dist/packs/models/modelscope/{qwen-image-edit-2509.d.ts → qwen-image-edit-2511.d.ts} +1 -1
  372. package/dist/packs/models/modelscope/{qwen-image-edit-2509.js → qwen-image-edit-2511.js} +2 -2
  373. package/dist/packs/models/modelscope/sdxl-14-ckpt.js +1 -1
  374. package/dist/packs/models/modelscope/z-image-turbo.js +1 -1
  375. package/dist/packs/models/volcengine/seedance-2.0-fast.d.ts +6 -0
  376. package/dist/packs/models/volcengine/seedance-2.0-fast.js +7 -0
  377. package/dist/packs/models/volcengine/seedance-2.0-mini.d.ts +6 -0
  378. package/dist/packs/models/volcengine/seedance-2.0-mini.js +7 -0
  379. package/dist/packs/models/volcengine/seedance-2.0.d.ts +6 -0
  380. package/dist/packs/models/volcengine/seedance-2.0.js +7 -0
  381. package/dist/packs/models/volcengine/seedance-2.5.d.ts +6 -0
  382. package/dist/packs/models/volcengine/seedance-2.5.js +7 -0
  383. package/dist/packs/models/volcengine/seedream-5.0-flash.js +1 -1
  384. package/dist/packs/models/volcengine/seedream-5.0-lite.js +1 -1
  385. package/dist/packs/models/volcengine/seedream-5.0-pro.js +1 -1
  386. package/dist/packs/provider-adapters/bailian.js +1 -1
  387. package/dist/packs/provider-adapters/modelscope.js +1 -1
  388. package/dist/packs/provider-adapters/volcengine.js +1 -1
  389. package/dist/packs/provider-packs/apimart.d.ts +1 -1
  390. package/dist/packs/provider-packs/apimart.js +35 -22
  391. package/dist/packs/provider-packs/bailian.d.ts +1 -1
  392. package/dist/packs/provider-packs/bailian.js +8 -5
  393. package/dist/packs/provider-packs/fal.d.ts +1 -1
  394. package/dist/packs/provider-packs/fal.js +52 -40
  395. package/dist/packs/provider-packs/grsai.d.ts +1 -1
  396. package/dist/packs/provider-packs/grsai.js +8 -5
  397. package/dist/packs/provider-packs/kie.d.ts +1 -1
  398. package/dist/packs/provider-packs/kie.js +41 -32
  399. package/dist/packs/provider-packs/modelscope.js +2 -2
  400. package/dist/packs/provider-packs/ppio.d.ts +1 -1
  401. package/dist/packs/provider-packs/ppio.js +2 -6
  402. package/dist/packs/provider-packs/volcengine.d.ts +1 -1
  403. package/dist/packs/provider-packs/volcengine.js +8 -4
  404. package/dist/pricing/index.d.ts +1 -0
  405. package/dist/pricing/index.js +1 -0
  406. package/dist/pricing/mediaContext.d.ts +6 -1
  407. package/dist/pricing/mediaContext.js +12 -5
  408. package/dist/pricing/tokenPricing.d.ts +36 -0
  409. package/dist/pricing/tokenPricing.js +26 -0
  410. package/dist/providers/bailian.d.ts +1 -1
  411. package/dist/providers/bailian.js +71 -4
  412. package/dist/providers/fal.js +11 -1
  413. package/dist/providers/helpers.d.ts +1 -1
  414. package/dist/providers/helpers.js +17 -5
  415. package/dist/providers/kie.js +16 -5
  416. package/dist/providers/metadata.js +2 -2
  417. package/dist/providers/openai-speech.d.ts +6 -0
  418. package/dist/providers/openai-speech.js +31 -0
  419. package/dist/providers/providerAccessErrors.d.ts +3 -0
  420. package/dist/providers/providerAccessErrors.js +73 -0
  421. package/dist/providers/siliconflow.js +2 -27
  422. package/dist/providers/volcengine-speech.d.ts +1 -1
  423. package/dist/providers/volcengine-speech.js +31 -8
  424. package/dist/providers/volcengine-voice-clone.d.ts +3 -0
  425. package/dist/providers/volcengine-voice-clone.js +138 -0
  426. package/dist/providers/volcengine.d.ts +1 -1
  427. package/dist/providers/volcengine.js +89 -11
  428. package/dist/runtime/retry.js +3 -0
  429. package/dist/tool-packs/fal-erase/models/bria-eraser.model.js +1 -1
  430. package/dist/tool-packs/fal-erase/models/finegrain-eraser.model.js +1 -1
  431. package/dist/tool-packs/fal-erase/models/flux-pro-erase.model.js +1 -1
  432. package/dist/tool-packs/fal-image-utilities/models/control-light.model.js +1 -1
  433. package/dist/tool-packs/fal-image-utilities/models/outpaint.model.js +1 -1
  434. package/dist/tool-packs/fal-image-utilities/models/photo-restoration.model.js +1 -1
  435. package/dist/tool-packs/fal-image-utilities/models/pixelcut-background-removal.model.js +1 -1
  436. package/dist/tool-packs/fal-image-utilities/models/product-photography.model.js +1 -1
  437. package/dist/tool-packs/fal-image-utilities/models/relighting.model.js +1 -1
  438. package/dist/tool-packs/fal-multi-angle/models/flux-2-multiple-angles.model.js +1 -1
  439. package/dist/tool-packs/fal-multi-angle/models/perspective-change.model.js +1 -1
  440. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2511-multiple-angles.model.js +1 -1
  441. package/dist/types/model.d.ts +68 -12
  442. package/dist/types/model.js +3 -0
  443. package/dist/types/modelTags.d.ts +142 -0
  444. package/dist/types/modelTags.js +44 -0
  445. package/dist/types/runtime.d.ts +3 -0
  446. package/dist/types/speechTimings.d.ts +15 -0
  447. package/dist/types/speechTimings.js +1 -0
  448. package/dist/upload/apimart-upload.d.ts +1 -1
  449. package/dist/upload/apimart-upload.js +37 -15
  450. package/dist/upload/bailian-oss-upload.d.ts +32 -0
  451. package/dist/upload/bailian-oss-upload.js +74 -0
  452. package/dist/upload/{fal-legacy.js → fal-host-fetch.js} +2 -2
  453. package/dist/upload/fal-transport.d.ts +6 -0
  454. package/dist/upload/fal-transport.js +2 -1
  455. package/dist/upload/index.d.ts +2 -2
  456. package/dist/upload/index.js +4 -7
  457. package/dist/upload/kie-upload.d.ts +1 -1
  458. package/dist/upload/kie-upload.js +34 -12
  459. package/dist/upload/media-binary.js +1 -0
  460. package/dist/upload/media-fields.js +7 -2
  461. package/dist/upload/preprocess-core.d.ts +2 -0
  462. package/dist/upload/preprocess-core.js +2 -0
  463. package/dist/upload/preprocess.d.ts +1 -1
  464. package/dist/upload/preprocess.js +12 -3
  465. package/dist/upload/provider-preprocessors/apimart.d.ts +1 -1
  466. package/dist/upload/provider-preprocessors/apimart.js +13 -5
  467. package/dist/upload/provider-preprocessors/bailian.d.ts +8 -0
  468. package/dist/upload/provider-preprocessors/bailian.js +45 -0
  469. package/dist/upload/provider-preprocessors/kie.d.ts +1 -1
  470. package/dist/upload/provider-preprocessors/kie.js +26 -9
  471. package/dist/upload/provider-preprocessors/ppio.d.ts +1 -2
  472. package/dist/upload/provider-preprocessors/ppio.js +2 -29
  473. package/dist/upload/provider-preprocessors/public-host.d.ts +5 -0
  474. package/dist/upload/provider-preprocessors/public-host.js +7 -0
  475. package/dist/upload/provider-preprocessors/volcengine.d.ts +5 -0
  476. package/dist/upload/provider-preprocessors/volcengine.js +10 -0
  477. package/dist/upload/public-host-upload.d.ts +7 -0
  478. package/dist/upload/public-host-upload.js +55 -0
  479. package/dist/upload/upload-response.js +12 -7
  480. package/docs/README.md +26 -26
  481. package/docs/consumers.md +150 -124
  482. package/docs/llm-adaptation/README.md +180 -166
  483. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +108 -104
  484. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +94 -76
  485. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/MiniMax.md +89 -84
  486. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +126 -126
  487. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +238 -234
  488. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +131 -87
  489. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274Qwen.md +112 -84
  490. package/docs/llm-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +88 -88
  491. package/docs/model-adaptation/Bria-Eraser/Bria-Eraser_Fal.md +32 -32
  492. package/docs/model-adaptation/Bria-/345/210/233/346/204/217/346/224/276/345/244/247/Bria-/345/210/233/346/204/217/346/224/276/345/244/247_Fal.md +31 -31
  493. package/docs/model-adaptation/ControlLight/ControlLight_Fal.md +85 -85
  494. package/docs/model-adaptation/Eleven-v4/Eleven-v4_Fal.md +49 -0
  495. package/docs/model-adaptation/FLUX-2-/345/244/232/350/247/222/345/272/246/FLUX-2-/345/244/232/350/247/222/345/272/246_Fal.md +107 -107
  496. package/docs/model-adaptation/FLUX-3/FLUX-3_APIMart.md +65 -0
  497. package/docs/model-adaptation/FLUX-3/FLUX-3_Fal.md +48 -0
  498. package/docs/model-adaptation/FLUX-3-Klein/FLUX-3-Klein_KIE.md +38 -0
  499. package/docs/model-adaptation/FLUX-3-Video/FLUX-3-Video_APIMart.md +84 -0
  500. package/docs/model-adaptation/FLUX-3-Video/FLUX-3-Video_Fal.md +80 -0
  501. package/docs/model-adaptation/Finegrain-Eraser/Finegrain-Eraser_Fal.md +31 -31
  502. package/docs/model-adaptation/Flux-Pro-Erase/Flux-Pro-Erase_Fal.md +34 -34
  503. package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +47 -47
  504. package/docs/model-adaptation/Fun-ASR-Flash-2026-06-15/Fun-ASR-Flash-2026-06-15_/347/231/276/347/202/274.md +45 -45
  505. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +57 -57
  506. package/docs/model-adaptation/Fun-ASR-Realtime-2026-02-28/Fun-ASR-Realtime-2026-02-28_/347/231/276/347/202/274.md +39 -39
  507. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +217 -213
  508. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_APIMart.md +173 -173
  509. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Fal.md +94 -94
  510. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Grsai.md +138 -137
  511. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_KIE.md +97 -93
  512. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -66
  513. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -55
  514. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +59 -53
  515. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -55
  516. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_APIMart.md +101 -0
  517. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_Fal.md +55 -0
  518. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_Grsai.md +32 -0
  519. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_KIE.md +51 -0
  520. package/docs/model-adaptation/GPT-OSS-20B/GPT-OSS-20B_Groq.md +62 -62
  521. package/docs/model-adaptation/Gemini-3.8-Flash-Lite-TTS/Gemini-3.8-Flash-Lite-TTS_KIE.md +22 -0
  522. package/docs/model-adaptation/Gemini-3.8-Flash-TTS/Gemini-3.8-Flash-TTS_KIE.md +38 -0
  523. package/docs/model-adaptation/Gemini-Omni-1.2-Flash/Gemini-Omni-1.2-Flash_APIMart.md +79 -0
  524. package/docs/model-adaptation/Gemini-Omni-1.2-Flash/Gemini-Omni-1.2-Flash_Fal.md +60 -0
  525. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_APIMart.md +131 -124
  526. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_Fal.md +84 -84
  527. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_KIE.md +132 -129
  528. package/docs/model-adaptation/Grok-Imagine/Grok-Imagine_KIE.md +38 -36
  529. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_APIMart.md +250 -250
  530. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_Fal.md +84 -84
  531. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_KIE.md +105 -105
  532. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_APIMart.md +68 -0
  533. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_Fal.md +47 -0
  534. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_KIE.md +37 -0
  535. package/docs/model-adaptation/Hailuo-02/Hailuo-02_Fal.md +95 -93
  536. package/docs/model-adaptation/Hailuo-02/Hailuo-02_KIE.md +58 -56
  537. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_Fal.md +88 -88
  538. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_KIE.md +51 -51
  539. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_APIMart.md +66 -0
  540. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_KIE.md +31 -27
  541. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +99 -99
  542. package/docs/model-adaptation/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247/Ideogram-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +41 -41
  543. package/docs/model-adaptation/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261/Image-Apps-v2-/345/225/206/345/223/201/346/221/204/345/275/261_Fal.md +72 -72
  544. package/docs/model-adaptation/Image-Apps-v2-/346/211/251/345/233/276/Image-Apps-v2-/346/211/251/345/233/276_Fal.md +93 -93
  545. package/docs/model-adaptation/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215/Image-Apps-v2-/347/205/247/347/211/207/344/277/256/345/244/215_Fal.md +86 -86
  546. package/docs/model-adaptation/Image-Apps-v2-/351/207/215/346/211/223/345/205/211/Image-Apps-v2-/351/207/215/346/211/223/345/205/211_Fal.md +84 -84
  547. package/docs/model-adaptation/Kling-3.0/Kling-3.0_APIMart.md +112 -112
  548. package/docs/model-adaptation/Kling-3.0/Kling-3.0_Fal.md +91 -89
  549. package/docs/model-adaptation/Kling-3.0/Kling-3.0_KIE.md +106 -106
  550. package/docs/model-adaptation/Kling-3.0/Kling-3.0_/346/264/276/346/254/247/344/272/221.md +120 -119
  551. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_APIMart.md +130 -125
  552. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_Fal.md +107 -107
  553. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_KIE.md +148 -143
  554. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_APIMart.md +88 -85
  555. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_Fal.md +86 -83
  556. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_KIE.md +84 -84
  557. package/docs/model-adaptation/Kling-4.0/Kling-4.0_APIMart.md +76 -0
  558. package/docs/model-adaptation/Kling-4.0/Kling-4.0_Fal.md +115 -0
  559. package/docs/model-adaptation/Kling-4.0/Kling-4.0_KIE.md +61 -0
  560. package/docs/model-adaptation/Kling-4.0-Flash/Kling-4.0-Flash_Fal.md +55 -0
  561. package/docs/model-adaptation/Kling-4.0-Flash/Kling-4.0-Flash_KIE.md +33 -0
  562. package/docs/model-adaptation/LTX-2.3/LTX-2.3_Fal.md +121 -0
  563. package/docs/model-adaptation/Midjourney/Midjourney_APIMart.md +402 -396
  564. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_APIMart.md +237 -234
  565. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_Fal.md +112 -108
  566. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_KIE.md +118 -111
  567. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_/347/231/276/347/202/274.md +65 -0
  568. package/docs/model-adaptation/MiniMax-H3-Max/MiniMax-H3-Max_APIMart.md +78 -0
  569. package/docs/model-adaptation/MiniMax-H3-Max/MiniMax-H3-Max_Fal.md +62 -0
  570. package/docs/model-adaptation/MiniMax-Speech/MiniMax-Speech_/346/264/276/346/254/247/344/272/221.md +170 -170
  571. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_APIMart.md +89 -89
  572. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Fal.md +99 -99
  573. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Grsai.md +82 -82
  574. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_KIE.md +72 -70
  575. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_APIMart.md +79 -79
  576. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_Grsai.md +65 -65
  577. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_KIE.md +64 -64
  578. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_APIMart.md +35 -0
  579. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_Fal.md +37 -0
  580. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_Grsai.md +35 -0
  581. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_KIE.md +36 -0
  582. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_APIMart.md +83 -83
  583. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Fal.md +89 -89
  584. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Grsai.md +82 -82
  585. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_KIE.md +64 -64
  586. package/docs/model-adaptation/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244/Pixelcut-/350/203/214/346/231/257/347/247/273/351/231/244_Fal.md +79 -79
  587. package/docs/model-adaptation/Qwen-Audio-3.1-TTS-Plus/Qwen-Audio-3.1-TTS-Plus_/347/231/276/347/202/274.md +59 -0
  588. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_APIMart.md +117 -117
  589. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_Fal.md +85 -84
  590. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_KIE.md +103 -103
  591. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_/347/231/276/347/202/274.md +138 -138
  592. package/docs/model-adaptation/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246/Qwen-Image-Edit-2511-/345/244/232/350/247/222/345/272/246_Fal.md +57 -57
  593. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +68 -68
  594. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +40 -40
  595. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +40 -40
  596. package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +44 -44
  597. package/docs/model-adaptation/Qwen3-ASR-Flash-2026-02-10/Qwen3-ASR-Flash-2026-02-10_/347/231/276/347/202/274.md +37 -37
  598. package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +45 -45
  599. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +58 -58
  600. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime-2026-02-10/Qwen3-ASR-Flash-Realtime-2026-02-10_/347/231/276/347/202/274.md +37 -37
  601. package/docs/model-adaptation/README.md +371 -328
  602. package/docs/model-adaptation/Seed-ICL-2.0/Seed-ICL-2.0_/347/201/253/345/261/261/345/274/225/346/223/216.md +65 -0
  603. package/docs/model-adaptation/SeedASR-2.0-File/SeedASR-2.0-File_/347/201/253/345/261/261/345/274/225/346/223/216.md +115 -115
  604. package/docs/model-adaptation/SeedASR-2.0-Realtime/SeedASR-2.0-Realtime_/347/201/253/345/261/261/345/274/225/346/223/216.md +147 -147
  605. package/docs/model-adaptation/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247/SeedVR2-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +45 -45
  606. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_APIMart.md +121 -121
  607. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_Fal.md +97 -97
  608. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_KIE.md +87 -86
  609. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_/347/201/253/345/261/261/345/274/225/346/223/216.md +101 -0
  610. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_APIMart.md +89 -89
  611. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_Fal.md +95 -95
  612. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_KIE.md +79 -78
  613. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_/347/201/253/345/261/261/345/274/225/346/223/216.md +98 -0
  614. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_APIMart.md +93 -89
  615. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_Fal.md +96 -96
  616. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_KIE.md +79 -78
  617. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_/347/201/253/345/261/261/345/274/225/346/223/216.md +98 -0
  618. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_APIMart.md +217 -212
  619. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_Fal.md +98 -94
  620. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_KIE.md +94 -89
  621. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_/347/201/253/345/261/261/345/274/225/346/223/216.md +102 -0
  622. package/docs/model-adaptation/Seedream-5.0-Flash/Seedream-5.0-Flash_APIMart.md +64 -0
  623. package/docs/model-adaptation/Seedream-5.0-Flash/Seedream-5.0-Flash_/347/201/253/345/261/261/345/274/225/346/223/216.md +18 -18
  624. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_APIMart.md +113 -106
  625. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_Fal.md +91 -91
  626. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_KIE.md +89 -89
  627. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_/347/201/253/345/261/261/345/274/225/346/223/216.md +110 -108
  628. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_APIMart.md +194 -194
  629. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_Fal.md +100 -100
  630. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_KIE.md +141 -141
  631. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_/347/201/253/345/261/261/345/274/225/346/223/216.md +137 -137
  632. package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +73 -73
  633. package/docs/model-adaptation/TTS-/345/244/232/344/276/233/345/272/224/345/225/206-2026-09.md +52 -6
  634. package/docs/model-adaptation/TTS-/346/227/266/351/227/264/346/210/263-2026-10.md +36 -0
  635. package/docs/model-adaptation/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247/Topaz-/345/233/276/347/211/207/346/224/276/345/244/247_Fal.md +87 -87
  636. package/docs/model-adaptation/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247/Topaz-/351/200/217/346/230/216/345/233/276/346/224/276/345/244/247_Fal.md +34 -34
  637. package/docs/model-adaptation/Veo-3.1/Veo-3.1_APIMart.md +90 -0
  638. package/docs/model-adaptation/Wan-2.7-Image/Wan-2.7-Image_APIMart.md +81 -0
  639. package/docs/model-adaptation/Wan-3.0/Wan-3.0_APIMart.md +74 -0
  640. package/docs/model-adaptation/Wan-3.0/Wan-3.0_Fal.md +60 -0
  641. package/docs/model-adaptation/Wan-3.0/Wan-3.0_Grsai.md +35 -0
  642. package/docs/model-adaptation/Wan-3.0/Wan-3.0_KIE.md +38 -0
  643. package/docs/model-adaptation/Wan-3.0/Wan-3.0_/347/231/276/347/202/274.md +96 -0
  644. package/docs/model-adaptation/Wan-3.0-Prime/Wan-3.0-Prime_KIE.md +20 -0
  645. package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +80 -80
  646. package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +79 -79
  647. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_APIMart.md +88 -88
  648. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_Fal.md +103 -95
  649. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_KIE.md +71 -71
  650. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/347/231/276/347/202/274.md +122 -122
  651. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/351/255/224/346/220/255.md +99 -97
  652. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +240 -240
  653. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Fal.md +190 -172
  654. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Groq.md +136 -121
  655. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Grsai.md +217 -217
  656. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/KIE.md +159 -131
  657. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/200/231/351/200/211/344/276/233/345/272/224/345/225/206/350/260/203/347/240/224-/345/233/276/347/211/207/345/267/245/345/205/267.md +151 -151
  658. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//345/277/253/351/200/237/351/200/202/351/205/215/344/276/233/345/272/224/345/225/206.md +65 -65
  659. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//346/264/276/346/254/247/344/272/221.md +170 -147
  660. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/201/253/345/261/261/345/274/225/346/223/216.md +191 -183
  661. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +339 -282
  662. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/241/205/345/237/272/346/265/201/345/212/250.md +180 -153
  663. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//351/255/224/346/220/255.md +205 -207
  664. package/docs/model-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +339 -338
  665. package/docs/model-adaptation//351/200/217/350/247/206/345/217/230/346/215/242//351/200/217/350/247/206/345/217/230/346/215/242_Fal.md +59 -59
  666. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Electron.md +77 -77
  667. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Tauri.md +81 -81
  668. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/UXP.md +169 -169
  669. package/docs//346/216/245/345/205/245/346/214/207/345/215/227//344/276/233/345/272/224/345/225/206/345/237/237/345/220/215.md +83 -83
  670. package/docs//346/216/245/345/205/245/346/214/207/345/215/227//351/224/231/350/257/257/345/244/204/347/220/206.md +72 -72
  671. package/examples/form-renderer/README.md +17 -17
  672. package/examples/form-renderer/cli.ts +32 -32
  673. package/examples/form-renderer/index.ts +144 -144
  674. package/examples/form-renderer/package.json +16 -16
  675. package/examples/form-renderer/tsconfig.json +14 -14
  676. package/examples/llm-chat/README.md +38 -38
  677. package/examples/llm-chat/index.ts +100 -100
  678. package/examples/llm-chat/package.json +19 -19
  679. package/examples/llm-chat/tsconfig.json +14 -14
  680. package/examples/minimal-node/README.md +31 -31
  681. package/examples/minimal-node/index.ts +138 -138
  682. package/examples/minimal-node/package.json +17 -17
  683. package/examples/minimal-node/tsconfig.json +14 -14
  684. package/package.json +259 -258
  685. package/dist/catalog/grsai/gptImage25Sizes.d.ts +0 -1
  686. package/dist/catalog/grsai/gptImage25Sizes.js +0 -76
  687. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.d.ts +0 -2
  688. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.js +0 -29
  689. package/dist/catalog/modelscope/qwen-image-edit-2509.model.d.ts +0 -5
  690. package/dist/catalog/modelscope/qwen-image.model.d.ts +0 -5
  691. package/dist/catalog/ppio/minimax-hailuo-2.3.model.d.ts +0 -7
  692. package/dist/catalog/ppio/minimax-hailuo-2.3.model.js +0 -114
  693. package/dist/catalog/ppio/wan-2.5-preview.model.d.ts +0 -7
  694. package/dist/catalog/ppio/wan-2.5-preview.model.js +0 -198
  695. package/dist/catalog/ppio/wan-2.6.model.d.ts +0 -7
  696. package/dist/catalog/ppio/wan-2.6.model.js +0 -206
  697. package/dist/catalog/ppio/wan-2.7.model.d.ts +0 -2
  698. package/dist/catalog/ppio/wan-2.7.model.js +0 -373
  699. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_/346/264/276/346/254/247/344/272/221.md +0 -70
  700. package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +0 -76
  701. package/docs/model-adaptation/Wan-2.5-Preview/Wan-2.5-Preview_/346/264/276/346/254/247/344/272/221.md +0 -82
  702. package/docs/model-adaptation/Wan-2.6/Wan-2.6_/346/264/276/346/254/247/344/272/221.md +0 -84
  703. package/docs/model-adaptation/Wan-2.7/Wan-2.7_/346/264/276/346/254/247/344/272/221.md +0 -122
  704. /package/dist/upload/{fal-legacy.d.ts → fal-host-fetch.d.ts} +0 -0
@@ -1,3 +1,3 @@
1
1
  import type { ProviderContinuePollingInput, ProviderExecutionInput, ProviderExecutionResult } from '../types/runtime.js';
2
2
  export declare function execute(input: ProviderExecutionInput): Promise<ProviderExecutionResult>;
3
- export declare function continuePolling(_input: ProviderContinuePollingInput): Promise<ProviderExecutionResult>;
3
+ export declare function continuePolling(input: ProviderContinuePollingInput): Promise<ProviderExecutionResult>;
@@ -1,24 +1,33 @@
1
1
  import { AiRuntimeError } from '../runtime/AiRuntimeError.js';
2
- import { collectDeepUrls, normalizeEndpoint, readJsonResponse, stringAt } from './helpers.js';
2
+ import { POLL_QUERY_FAILED, pollUntilResult } from '../protocols/polling.js';
3
+ import { collectDeepUrls, getPointer, isJsonObject, normalizeEndpoint, pushUniqueUrl, readJsonResponse, stringAt } from './helpers.js';
3
4
  import { fetchProvider } from './provider-fetch.js';
4
5
  const VOLCENGINE_BASE_URL = 'https://ark.cn-beijing.volces.com';
6
+ /** 方舟视频生成是异步任务:提交返回任务 ID,再按 `GET {route}/{id}` 查询;图片生成走同步端点。 */
7
+ const VIDEO_TASK_ROUTE = '/api/v3/contents/generations/tasks';
8
+ function isVideoTaskRoute(route) {
9
+ return route.replace(/\/+$/, '') === VIDEO_TASK_ROUTE;
10
+ }
11
+ function authHeaders(apiKey) {
12
+ return { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' };
13
+ }
5
14
  export async function execute(input) {
6
15
  const response = await fetchProvider('Volcengine Ark', normalizeEndpoint(VOLCENGINE_BASE_URL, input.route), {
7
16
  method: input.method,
8
- headers: {
9
- Authorization: `Bearer ${input.apiKey}`,
10
- 'Content-Type': 'application/json',
11
- },
12
- body: JSON.stringify(input.body),
17
+ headers: authHeaders(input.apiKey),
18
+ body: JSON.stringify(isVideoTaskRoute(input.route) ? normalizeAudioDataUris(input.body) : input.body),
13
19
  signal: input.signal,
14
20
  }, {
15
21
  transport: input.runtime.transport,
16
22
  retryPreconnectOnce: true,
17
23
  });
18
24
  const payload = await readJsonResponse(response, 'Volcengine Ark');
19
- const errorMessage = stringAt(payload, '/error/message') ?? stringAt(payload, '/message');
20
- if (stringAt(payload, '/error/code') || stringAt(payload, '/code')) {
21
- throw new AiRuntimeError('provider_task_failed', errorMessage ?? 'Volcengine Ark generation failed');
25
+ assertNoArkError(payload, 'Volcengine Ark generation failed');
26
+ if (isVideoTaskRoute(input.route)) {
27
+ const taskId = stringAt(payload, '/id')?.trim();
28
+ if (!taskId)
29
+ throw new AiRuntimeError('invalid_response', 'Volcengine Ark video task response has no id');
30
+ return { status: 'pending', url: '', taskId, metadata: payload };
22
31
  }
23
32
  const urls = [];
24
33
  collectDeepUrls(payload, urls);
@@ -27,6 +36,75 @@ export async function execute(input) {
27
36
  }
28
37
  return { status: 'completed', url: urls.join('|||'), metadata: payload };
29
38
  }
30
- export async function continuePolling(_input) {
31
- throw new AiRuntimeError('unsupported_provider', 'Volcengine Ark image models use synchronous generation');
39
+ export async function continuePolling(input) {
40
+ if (!isVideoTaskRoute(input.route)) {
41
+ throw new AiRuntimeError('unsupported_provider', 'Volcengine Ark image models use synchronous generation');
42
+ }
43
+ const payload = await pollUntilResult(input, async () => {
44
+ const endpoint = `${VOLCENGINE_BASE_URL}${VIDEO_TASK_ROUTE}/${encodeURIComponent(input.taskId)}`;
45
+ const response = await fetchProvider('Volcengine Ark', endpoint, {
46
+ headers: authHeaders(input.apiKey),
47
+ signal: input.signal,
48
+ }, {
49
+ transport: input.runtime.transport,
50
+ retryPreconnectOnce: true,
51
+ });
52
+ const result = await readJsonResponse(response, 'Volcengine Ark');
53
+ const status = (stringAt(result, '/status') ?? '').trim().toLowerCase();
54
+ if (status === 'succeeded')
55
+ return result;
56
+ if (status === 'queued' || status === 'running')
57
+ return undefined;
58
+ if (status === 'failed' || status === 'cancelled' || status === 'expired') {
59
+ const code = stringAt(result, '/error/code');
60
+ const message = stringAt(result, '/error/message')
61
+ ?? (status === 'expired' ? '任务超过方舟任务超时阈值未完成' : status === 'cancelled' ? '任务已被取消' : 'Volcengine Ark video task failed');
62
+ throw new AiRuntimeError('provider_task_failed', code ? `${code}: ${message}` : message, {
63
+ providerCode: code, providerMessage: message,
64
+ });
65
+ }
66
+ return POLL_QUERY_FAILED;
67
+ });
68
+ const urls = [];
69
+ // 视频在前、尾帧在后:消费方按顺序把第一项当作主产物。
70
+ for (const pointer of ['/content/video_url', '/content/last_frame_url']) {
71
+ const url = stringAt(payload, pointer);
72
+ if (url && /^https?:\/\//i.test(url))
73
+ pushUniqueUrl(urls, url);
74
+ }
75
+ const videoUrl = stringAt(payload, '/content/video_url');
76
+ if (!videoUrl || !/^https?:\/\//i.test(videoUrl)) {
77
+ throw new AiRuntimeError('empty_result', `Volcengine Ark video task has no video_url (task_id=${input.taskId})`);
78
+ }
79
+ return { status: 'completed', url: urls.join('|||'), taskId: input.taskId, metadata: payload };
80
+ }
81
+ function assertNoArkError(payload, fallback) {
82
+ const errorMessage = stringAt(payload, '/error/message') ?? stringAt(payload, '/message');
83
+ if (stringAt(payload, '/error/code') || stringAt(payload, '/code')) {
84
+ throw new AiRuntimeError('provider_task_failed', errorMessage ?? fallback);
85
+ }
86
+ }
87
+ /**
88
+ * 方舟音频 Base64 要求 `data:audio/<格式>;base64,`,格式写 wav/mp3;本地文件读出的
89
+ * 标准 MIME 是 audio/mpeg、audio/x-wav 等,发送前换成官方格式名。
90
+ */
91
+ function normalizeAudioDataUris(body) {
92
+ if (!isJsonObject(body) || !Array.isArray(body.content))
93
+ return body;
94
+ const content = body.content.map((item) => {
95
+ const url = getPointer(item, '/audio_url/url');
96
+ if (!isJsonObject(item) || !isJsonObject(item.audio_url) || typeof url !== 'string')
97
+ return item;
98
+ const match = /^data:audio\/([^;,]+);base64,/i.exec(url);
99
+ if (!match)
100
+ return item;
101
+ const subtype = match[1].toLowerCase();
102
+ const format = subtype === 'mpeg' || subtype === 'mp3' ? 'mp3'
103
+ : ['wav', 'x-wav', 'wave', 'vnd.wave'].includes(subtype) ? 'wav' : null;
104
+ // 方舟只收 wav / mp3;其他格式提交前就拦下,不让用户只看到供应商报错。
105
+ if (!format)
106
+ throw new AiRuntimeError('invalid_media', `火山方舟参考音频只支持 MP3 或 WAV,当前是 ${subtype},请先转换格式`);
107
+ return { ...item, audio_url: { ...item.audio_url, url: `data:audio/${format};base64,${url.slice(match[0].length)}` } };
108
+ });
109
+ return { ...body, content };
32
110
  }
@@ -41,6 +41,9 @@ export function shouldRetry(error, mode = 'request') {
41
41
  || errorChain(error).some(record => providerCode(record)?.toUpperCase() === 'ECONNRESET'
42
42
  && record.message === 'Client network socket disconnected before secure TLS connection was established');
43
43
  }
44
+ // 任务已经终止;retryable 表示用户可重新提交,不允许自动续查或重放计费请求。
45
+ if (errorChain(error).some(record => record.details && typeof record.details === 'object' && record.details.terminal === true))
46
+ return false;
44
47
  const structuredRetryable = readStructuredRetryable(error);
45
48
  if (structuredRetryable !== undefined)
46
49
  return structuredRetryable;
@@ -5,7 +5,7 @@ export const briaEraserModel = defineModel({
5
5
  canonicalModelId: 'bria-eraser',
6
6
  provider: 'fal',
7
7
  type: 'image',
8
- tags: ['image-edit', 'erase', 'mask-input', 'provider-fal'],
8
+ tags: ['erase'],
9
9
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 20 },
10
10
  },
11
11
  acceptsPrompt: false,
@@ -5,7 +5,7 @@ export const finegrainEraserModel = defineModel({
5
5
  canonicalModelId: 'finegrain-eraser',
6
6
  provider: 'fal',
7
7
  type: 'image',
8
- tags: ['image-edit', 'erase', 'mask-input', 'provider-fal'],
8
+ tags: ['erase'],
9
9
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 20 },
10
10
  },
11
11
  acceptsPrompt: false,
@@ -5,7 +5,7 @@ export const fluxProEraseModel = defineModel({
5
5
  canonicalModelId: 'flux-pro-erase',
6
6
  provider: 'fal',
7
7
  type: 'image',
8
- tags: ['image-edit', 'erase', 'mask-input', 'provider-fal'],
8
+ tags: ['erase'],
9
9
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 20 },
10
10
  },
11
11
  acceptsPrompt: false,
@@ -6,7 +6,7 @@ export const falControlLightModel = defineModel({
6
6
  canonicalModelId: 'control-light',
7
7
  provider: 'fal',
8
8
  type: 'image',
9
- tags: ['image-edit', 'low-light-enhancement', 'provider-fal'],
9
+ tags: ['low-light-enhancement'],
10
10
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
11
11
  },
12
12
  acceptsPrompt: false,
@@ -6,7 +6,7 @@ export const falOutpaintModel = defineModel({
6
6
  canonicalModelId: 'image-apps-v2-outpaint',
7
7
  provider: 'fal',
8
8
  type: 'image',
9
- tags: ['image-edit', 'outpainting', 'provider-fal'],
9
+ tags: ['outpainting'],
10
10
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
11
11
  },
12
12
  inputLimits: { images: { exact: 1 }, videos: { max: 0 } },
@@ -6,7 +6,7 @@ export const falPhotoRestorationModel = defineModel({
6
6
  canonicalModelId: 'image-apps-v2-photo-restoration',
7
7
  provider: 'fal',
8
8
  type: 'image',
9
- tags: ['image-edit', 'photo-restoration', 'provider-fal'],
9
+ tags: ['photo-restoration'],
10
10
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
11
11
  },
12
12
  acceptsPrompt: false,
@@ -6,7 +6,7 @@ export const falPixelcutBackgroundRemovalModel = defineModel({
6
6
  canonicalModelId: 'pixelcut-background-removal',
7
7
  provider: 'fal',
8
8
  type: 'image',
9
- tags: ['image-edit', 'background-removal', 'alpha-output', 'provider-fal'],
9
+ tags: ['transparent-background'],
10
10
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
11
11
  },
12
12
  acceptsPrompt: false,
@@ -6,7 +6,7 @@ export const falProductPhotographyModel = defineModel({
6
6
  canonicalModelId: 'image-apps-v2-product-photography',
7
7
  provider: 'fal',
8
8
  type: 'image',
9
- tags: ['image-edit', 'product-photography', 'background-generation', 'provider-fal'],
9
+ tags: ['product-photography'],
10
10
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
11
11
  },
12
12
  acceptsPrompt: false,
@@ -26,7 +26,7 @@ export const falRelightingModel = defineModel({
26
26
  canonicalModelId: 'image-apps-v2-relighting',
27
27
  provider: 'fal',
28
28
  type: 'image',
29
- tags: ['image-edit', 'relighting', 'style-presets', 'provider-fal'],
29
+ tags: ['relighting'],
30
30
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
31
31
  },
32
32
  acceptsPrompt: false,
@@ -20,7 +20,7 @@ export const falFlux2MultipleAnglesModel = defineModel({
20
20
  canonicalModelId: 'flux-2-multiple-angles',
21
21
  provider: 'fal',
22
22
  type: 'image',
23
- tags: ['image-edit', 'multi-angle', 'camera-control', 'provider-fal'],
23
+ tags: ['multi-angle'],
24
24
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
25
25
  },
26
26
  acceptsPrompt: false,
@@ -17,7 +17,7 @@ export const falPerspectiveChangeModel = defineModel({
17
17
  canonicalModelId: 'perspective-change',
18
18
  provider: 'fal',
19
19
  type: 'image',
20
- tags: ['image-edit', 'multi-angle', 'perspective-preset', 'provider-fal'],
20
+ tags: ['multi-angle'],
21
21
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
22
22
  },
23
23
  acceptsPrompt: false,
@@ -21,7 +21,7 @@ export const falQwenImageEdit2511MultipleAnglesModel = defineModel({
21
21
  canonicalModelId: 'qwen-image-edit-2511-multiple-angles',
22
22
  provider: 'fal',
23
23
  type: 'image',
24
- tags: ['image-edit', 'multi-angle', 'camera-control', 'provider-fal'],
24
+ tags: ['multi-angle'],
25
25
  polling: { interval: 2_000, maxAttempts: 180, expectedAttempts: 30 },
26
26
  },
27
27
  acceptsPrompt: false,
@@ -8,6 +8,7 @@
8
8
  * 这里保留 selector/builder 的真实函数,是 catalog 与所有宿主运行时共同消费的唯一模型
9
9
  * 契约;JSON DTO 等跨进程数据类型仍位于 `./runtime.ts`。
10
10
  */
11
+ import type { ModelTag } from './modelTags.js';
11
12
  import type { GenerateStatus, JsonValue, JsonObject, StructuredGenerationOutput } from './runtime.js';
12
13
  /** SDK 内置的模型产出类型。开放类型仍保留这些字面量的编辑器补全。 */
13
14
  export type BuiltinModelType = 'image' | 'video' | 'audio';
@@ -23,15 +24,6 @@ export declare const BUILTIN_PROVIDER_IDS: readonly ["apimart", "bailian", "volc
23
24
  export type BuiltinProviderId = (typeof BUILTIN_PROVIDER_IDS)[number];
24
25
  /** Provider ID:内置供应商 + 第三方扩展字符串。 */
25
26
  export type ProviderId = BuiltinProviderId | (string & {});
26
- /**
27
- * 模型标签。
28
- *
29
- * 应用侧 `src/core/types/ModelTags.ts` 维护了完整的 `KnownModelTag` 字面量清单 +
30
- * 中文描述表(给标签管理 UI 用),那份是产品资产,不搬进 SDK。SDK 只需要知道
31
- * "这是一串标签字符串",不需要在类型层枚举穷尽值——枚举校验交给应用侧或未来的
32
- * 标签注册表。
33
- */
34
- export type ModelTag = string;
35
27
  export interface ProgressCurveConfig {
36
28
  slowStart?: number;
37
29
  slowEnd?: number;
@@ -83,8 +75,15 @@ export interface ModelRuntimeMeta {
83
75
  canonicalModelId: string;
84
76
  provider: ProviderId;
85
77
  type: ModelType;
86
- /** 模型能力标签 */
78
+ /** 模型能力标签,取值与判断标准见 MODEL_TAG_DEFINITIONS */
87
79
  tags?: ModelTag[];
80
+ /** 只认这种语言的提示词;不填表示不限。 */
81
+ promptLanguage?: 'en';
82
+ /**
83
+ * 已过时的原因(平台下线、被新版取代、不再提供等)。填写后能力发现与宿主的普通入口不再列出该模型,
84
+ * 但仍可按 ID 解析,旧工程能打开、开发者能核对。
85
+ */
86
+ deprecated?: string;
88
87
  /** 轮询配置:异步任务状态轮询 */
89
88
  polling?: {
90
89
  interval: number;
@@ -290,6 +289,8 @@ interface RuntimePricingMediaContextRequirementBase {
290
289
  aggregation?: RuntimePricingMediaAggregation;
291
290
  /** 对媒体指标做固定或参数驱动的倍率变换,例如输出 MP = 输入 MP × 放大倍率²。 */
292
291
  multiplier?: RuntimePricingMediaMultiplier;
292
+ /** 只有部分模式按媒体计价时声明;返回 false 时不读取媒体,也不算缺少指标。 */
293
+ when?: (params: JsonObject) => boolean;
293
294
  }
294
295
  export type RuntimePricingMediaContextRequirement = (RuntimePricingMediaContextRequirementBase & {
295
296
  mediaType: 'image';
@@ -297,15 +298,22 @@ export type RuntimePricingMediaContextRequirement = (RuntimePricingMediaContextR
297
298
  }) | (RuntimePricingMediaContextRequirementBase & {
298
299
  mediaType: 'video';
299
300
  metric: 'durationSeconds' | 'megapixels' | 'width' | 'height';
301
+ }) | (RuntimePricingMediaContextRequirementBase & {
302
+ mediaType: 'audio';
303
+ metric: 'durationSeconds';
300
304
  });
301
305
  export interface RuntimePricingConfig {
302
306
  currency: Currency;
307
+ /** 估计值不代表实际账单;宿主应同时展示 description 中的依据。 */
308
+ billingMode?: 'estimated';
303
309
  fixed?: number;
304
310
  calculator?: (params: JsonObject) => number;
305
311
  /** 数值是当前参数总价,还是单个计费单位的参考价;缺省保持既有总价语义。 */
306
312
  estimateMode?: 'total' | 'unit';
307
313
  /** `estimateMode: 'unit'` 时用于展示的计费单位,例如 `MP`。 */
308
314
  estimateUnit?: string;
315
+ /** 保守预算上限的展示语义;仍是估算,不能承诺供应商实际账单上限。 */
316
+ estimateKind?: 'upper-bound';
309
317
  /**
310
318
  * calculator 需要宿主从媒体文件补齐的指标。SDK 只声明契约,不读取文件;
311
319
  * Web/Electron 等宿主可用各自的媒体探针统一解析并注入。
@@ -319,7 +327,20 @@ export interface RuntimeInputCountLimit {
319
327
  max?: number;
320
328
  exact?: number;
321
329
  }
322
- export interface RuntimeVideoConstraints {
330
+ /**
331
+ * 供应商对输入素材画面尺寸的硬性要求。宽高按显示方向计算(已应用 EXIF 旋转),
332
+ * 宽高比 = 宽 / 高;“边长 a–b px”写作 minShortSidePx: a、maxLongSidePx: b。
333
+ */
334
+ export interface RuntimeMediaDimensionConstraints {
335
+ minShortSidePx?: number;
336
+ maxLongSidePx?: number;
337
+ minPixels?: number;
338
+ maxPixels?: number;
339
+ minAspectRatio?: number;
340
+ maxAspectRatio?: number;
341
+ }
342
+ export type RuntimeImageConstraints = RuntimeMediaDimensionConstraints;
343
+ export interface RuntimeVideoConstraints extends RuntimeMediaDimensionConstraints {
323
344
  maxSizeMB?: number;
324
345
  minDurationSec?: number;
325
346
  maxDurationSec?: number;
@@ -332,6 +353,7 @@ export interface RuntimeInputLimitRule {
332
353
  images?: RuntimeInputCountLimit;
333
354
  videos?: RuntimeInputCountLimit;
334
355
  audios?: RuntimeInputCountLimit;
356
+ imageConstraints?: RuntimeImageConstraints;
335
357
  videoConstraints?: RuntimeVideoConstraints;
336
358
  }
337
359
  export interface RuntimeInputLimitsConfig {
@@ -404,6 +426,38 @@ export interface RuntimeConstraints {
404
426
  imageSizeFields?: RuntimeImageSizeFieldConstraint[];
405
427
  mediaFields?: RuntimeMediaFieldConstraint[];
406
428
  }
429
+ /**
430
+ * 续接生成请求携带的保留参数,由宿主写入、请求构建读取。
431
+ * `reference` 是源结果完成时 `capture` 取到的平台引用(任务 ID、草稿缓存等),界面不展示它。
432
+ */
433
+ export interface RuntimeContinuationParam {
434
+ id: string;
435
+ sourceModelId: string;
436
+ reference: JsonObject;
437
+ }
438
+ /** 续接请求放在参数里的键名。 */
439
+ export declare const CONTINUATION_PARAM = "__continuation";
440
+ /**
441
+ * 基于一次已完成的结果继续生成。平台常要求引用上一次的任务 ID 或草稿缓存,
442
+ * 这些引用由 SDK 从结果里取出、宿主随结果保存,用户与助手都不必知道它们。
443
+ */
444
+ export interface RuntimeContinuation {
445
+ /** 续接动作标识,如 `finalize-draft`(草稿转正片)、`extend`(续写)、`animate`(做成视频) */
446
+ id: string;
447
+ /** 续接到哪个模型;缺省为同一个模型 */
448
+ targetModelId?: string;
449
+ /** 按源请求参数判断这次结果能否续接,例如只有草稿能转正片;缺省为都能 */
450
+ available?: (params: JsonObject) => boolean;
451
+ /** 从完成结果里取出续接所需的平台引用;取不到时返回 null,表示这次结果不能续接 */
452
+ capture: (result: {
453
+ taskId?: string;
454
+ metadata: JsonValue;
455
+ }) => JsonObject | null;
456
+ /** 续接请求的参数:在源参数基础上调整,`__continuation` 由宿主另行合入 */
457
+ params: (source: JsonObject) => JsonObject;
458
+ /** direct:参数已齐全,直接提交;edit:带进输入区,由用户补写提示词等再提交 */
459
+ submit: 'direct' | 'edit';
460
+ }
407
461
  export interface ModelRuntimeDefinition {
408
462
  meta: ModelRuntimeMeta;
409
463
  /**
@@ -418,6 +472,8 @@ export interface ModelRuntimeDefinition {
418
472
  inputLimits?: RuntimeInputLimits;
419
473
  /** 可以独立构成一次生成输入的自定义参数 ID(如"父任务 ID") */
420
474
  alternativeInputParamIds?: string[];
475
+ /** 这个模型的结果能做哪些续接生成(草稿转正片、续写、把图做成视频)。 */
476
+ continuations?: RuntimeContinuation[];
421
477
  /** 请求体构建后的运行时安全网约束 */
422
478
  runtimeConstraints?: RuntimeConstraints;
423
479
  /** 端点选择配置 */
@@ -429,4 +485,4 @@ export interface ModelRuntimeDefinition {
429
485
  /** 价格配置 */
430
486
  pricing: RuntimePricingConfig;
431
487
  }
432
- export {};
488
+ export * from './modelTags.js';
@@ -21,3 +21,6 @@ export const BUILTIN_PROVIDER_IDS = [
21
21
  'grsai',
22
22
  'siliconflow',
23
23
  ];
24
+ /** 续接请求放在参数里的键名。 */
25
+ export const CONTINUATION_PARAM = '__continuation';
26
+ export * from './modelTags.js';
@@ -0,0 +1,142 @@
1
+ /**
2
+ * 生成模型能力标签词表:标签只回答“这个模型能做什么事”,一件事只有一个标签。
3
+ *
4
+ * 两层判断标准:
5
+ * - 形态(form):按“输入什么、输出什么”判断,模型能做就打。
6
+ * - 专项(specialty):模型为这件事提供了专门的参数或接口才打;通用编辑模型只靠写提示词也能做到的不打。
7
+ *
8
+ * 能从模型配置读出的事实(供应商、类型、能传几张图、分辨率档位、出图数量、提示词语言)不做标签。
9
+ * 展示名属于宿主的产品文案,不放在 SDK。
10
+ */
11
+ export declare const MODEL_TAG_DEFINITIONS: readonly [{
12
+ readonly id: "text-to-image";
13
+ readonly layer: "form";
14
+ readonly mediaType: "image";
15
+ readonly criterion: "不给图,只凭文字出图";
16
+ }, {
17
+ readonly id: "image-to-image";
18
+ readonly layer: "form";
19
+ readonly mediaType: "image";
20
+ readonly criterion: "给图,按提示词改图或据此生成新图(参考、融合也算)";
21
+ }, {
22
+ readonly id: "text-to-video";
23
+ readonly layer: "form";
24
+ readonly mediaType: "video";
25
+ readonly criterion: "不给图或视频,只凭文字出视频";
26
+ }, {
27
+ readonly id: "image-to-video";
28
+ readonly layer: "form";
29
+ readonly mediaType: "video";
30
+ readonly criterion: "给一张图作首帧生成视频";
31
+ }, {
32
+ readonly id: "start-end-frame";
33
+ readonly layer: "form";
34
+ readonly mediaType: "video";
35
+ readonly criterion: "同时给首帧和尾帧生成中间过程;必须同时具备图生视频";
36
+ }, {
37
+ readonly id: "reference-mode";
38
+ readonly layer: "form";
39
+ readonly mediaType: "video";
40
+ readonly criterion: "图片或视频只作参考生成新片段,不锁定首帧,也不保证在原视频上改或接在其后";
41
+ }, {
42
+ readonly id: "video-to-video";
43
+ readonly layer: "form";
44
+ readonly mediaType: "video";
45
+ readonly criterion: "输入一段视频,在原时间轴上改内容";
46
+ }, {
47
+ readonly id: "video-extension";
48
+ readonly layer: "form";
49
+ readonly mediaType: "video";
50
+ readonly criterion: "接在输入视频之后继续生成";
51
+ }, {
52
+ readonly id: "motion-control";
53
+ readonly layer: "form";
54
+ readonly mediaType: "video";
55
+ readonly criterion: "用一段视频的动作驱动图里的主体";
56
+ }, {
57
+ readonly id: "audio-to-video";
58
+ readonly layer: "form";
59
+ readonly mediaType: "video";
60
+ readonly criterion: "输入一段音频,生成与之同步、等长的视频";
61
+ }, {
62
+ readonly id: "text-to-audio";
63
+ readonly layer: "form";
64
+ readonly mediaType: "audio";
65
+ readonly criterion: "文字转语音";
66
+ }, {
67
+ readonly id: "voice-clone";
68
+ readonly layer: "form";
69
+ readonly mediaType: "audio";
70
+ readonly criterion: "用一段声音生成可复用的音色";
71
+ }, {
72
+ readonly id: "inpainting";
73
+ readonly layer: "specialty";
74
+ readonly mediaType: "image";
75
+ readonly criterion: "有遮罩输入,按提示词只改遮罩内的区域";
76
+ }, {
77
+ readonly id: "erase";
78
+ readonly layer: "specialty";
79
+ readonly mediaType: "image";
80
+ readonly criterion: "有遮罩输入,不需要提示词,把遮罩内的东西去掉";
81
+ }, {
82
+ readonly id: "relighting";
83
+ readonly layer: "specialty";
84
+ readonly mediaType: "image";
85
+ readonly criterion: "有光源方向、强度或光照预设等专门参数";
86
+ }, {
87
+ readonly id: "multi-angle";
88
+ readonly layer: "specialty";
89
+ readonly mediaType: "image";
90
+ readonly criterion: "有镜头角度、视角预设等专门参数";
91
+ }, {
92
+ readonly id: "outpainting";
93
+ readonly layer: "specialty";
94
+ readonly mediaType: "image";
95
+ readonly criterion: "有扩展方向、边距等专门参数";
96
+ }, {
97
+ readonly id: "upscaling";
98
+ readonly layer: "specialty";
99
+ readonly mediaType: "image";
100
+ readonly criterion: "专门提高分辨率,有放大倍数或目标尺寸参数";
101
+ }, {
102
+ readonly id: "photo-restoration";
103
+ readonly layer: "specialty";
104
+ readonly mediaType: "image";
105
+ readonly criterion: "专门修复老照片的划痕、褪色、模糊";
106
+ }, {
107
+ readonly id: "layer-decomposition";
108
+ readonly layer: "specialty";
109
+ readonly mediaType: "image";
110
+ readonly criterion: "把一张图拆成多张分层图";
111
+ }, {
112
+ readonly id: "transparent-background";
113
+ readonly layer: "specialty";
114
+ readonly mediaType: "image";
115
+ readonly criterion: "能输出带透明通道的图(抠图、保留透明、透明背景参数)";
116
+ }, {
117
+ readonly id: "low-light-enhancement";
118
+ readonly layer: "specialty";
119
+ readonly mediaType: "image";
120
+ readonly criterion: "专门提亮暗光照片";
121
+ }, {
122
+ readonly id: "product-photography";
123
+ readonly layer: "specialty";
124
+ readonly mediaType: "image";
125
+ readonly criterion: "专门给商品图生成新的背景与场景";
126
+ }, {
127
+ readonly id: "multi-speaker-dialogue";
128
+ readonly layer: "specialty";
129
+ readonly mediaType: "audio";
130
+ readonly criterion: "一段脚本里多个说话人,一次合成整段对话";
131
+ }, {
132
+ readonly id: "timestamps";
133
+ readonly layer: "specialty";
134
+ readonly mediaType: "audio";
135
+ readonly criterion: "合成结果附带逐字或逐词的时间";
136
+ }];
137
+ export type ModelTagDefinition = (typeof MODEL_TAG_DEFINITIONS)[number];
138
+ export type ModelTag = ModelTagDefinition['id'];
139
+ export type ModelTagLayer = ModelTagDefinition['layer'];
140
+ export declare const MODEL_TAGS: readonly ModelTag[];
141
+ export declare function isModelTag(value: string): value is ModelTag;
142
+ export declare function getModelTagDefinition(tag: ModelTag): ModelTagDefinition;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * 生成模型能力标签词表:标签只回答“这个模型能做什么事”,一件事只有一个标签。
3
+ *
4
+ * 两层判断标准:
5
+ * - 形态(form):按“输入什么、输出什么”判断,模型能做就打。
6
+ * - 专项(specialty):模型为这件事提供了专门的参数或接口才打;通用编辑模型只靠写提示词也能做到的不打。
7
+ *
8
+ * 能从模型配置读出的事实(供应商、类型、能传几张图、分辨率档位、出图数量、提示词语言)不做标签。
9
+ * 展示名属于宿主的产品文案,不放在 SDK。
10
+ */
11
+ export const MODEL_TAG_DEFINITIONS = [
12
+ { id: 'text-to-image', layer: 'form', mediaType: 'image', criterion: '不给图,只凭文字出图' },
13
+ { id: 'image-to-image', layer: 'form', mediaType: 'image', criterion: '给图,按提示词改图或据此生成新图(参考、融合也算)' },
14
+ { id: 'text-to-video', layer: 'form', mediaType: 'video', criterion: '不给图或视频,只凭文字出视频' },
15
+ { id: 'image-to-video', layer: 'form', mediaType: 'video', criterion: '给一张图作首帧生成视频' },
16
+ { id: 'start-end-frame', layer: 'form', mediaType: 'video', criterion: '同时给首帧和尾帧生成中间过程;必须同时具备图生视频' },
17
+ { id: 'reference-mode', layer: 'form', mediaType: 'video', criterion: '图片或视频只作参考生成新片段,不锁定首帧,也不保证在原视频上改或接在其后' },
18
+ { id: 'video-to-video', layer: 'form', mediaType: 'video', criterion: '输入一段视频,在原时间轴上改内容' },
19
+ { id: 'video-extension', layer: 'form', mediaType: 'video', criterion: '接在输入视频之后继续生成' },
20
+ { id: 'motion-control', layer: 'form', mediaType: 'video', criterion: '用一段视频的动作驱动图里的主体' },
21
+ { id: 'audio-to-video', layer: 'form', mediaType: 'video', criterion: '输入一段音频,生成与之同步、等长的视频' },
22
+ { id: 'text-to-audio', layer: 'form', mediaType: 'audio', criterion: '文字转语音' },
23
+ { id: 'voice-clone', layer: 'form', mediaType: 'audio', criterion: '用一段声音生成可复用的音色' },
24
+ { id: 'inpainting', layer: 'specialty', mediaType: 'image', criterion: '有遮罩输入,按提示词只改遮罩内的区域' },
25
+ { id: 'erase', layer: 'specialty', mediaType: 'image', criterion: '有遮罩输入,不需要提示词,把遮罩内的东西去掉' },
26
+ { id: 'relighting', layer: 'specialty', mediaType: 'image', criterion: '有光源方向、强度或光照预设等专门参数' },
27
+ { id: 'multi-angle', layer: 'specialty', mediaType: 'image', criterion: '有镜头角度、视角预设等专门参数' },
28
+ { id: 'outpainting', layer: 'specialty', mediaType: 'image', criterion: '有扩展方向、边距等专门参数' },
29
+ { id: 'upscaling', layer: 'specialty', mediaType: 'image', criterion: '专门提高分辨率,有放大倍数或目标尺寸参数' },
30
+ { id: 'photo-restoration', layer: 'specialty', mediaType: 'image', criterion: '专门修复老照片的划痕、褪色、模糊' },
31
+ { id: 'layer-decomposition', layer: 'specialty', mediaType: 'image', criterion: '把一张图拆成多张分层图' },
32
+ { id: 'transparent-background', layer: 'specialty', mediaType: 'image', criterion: '能输出带透明通道的图(抠图、保留透明、透明背景参数)' },
33
+ { id: 'low-light-enhancement', layer: 'specialty', mediaType: 'image', criterion: '专门提亮暗光照片' },
34
+ { id: 'product-photography', layer: 'specialty', mediaType: 'image', criterion: '专门给商品图生成新的背景与场景' },
35
+ { id: 'multi-speaker-dialogue', layer: 'specialty', mediaType: 'audio', criterion: '一段脚本里多个说话人,一次合成整段对话' },
36
+ { id: 'timestamps', layer: 'specialty', mediaType: 'audio', criterion: '合成结果附带逐字或逐词的时间' },
37
+ ];
38
+ export const MODEL_TAGS = MODEL_TAG_DEFINITIONS.map((definition) => definition.id);
39
+ export function isModelTag(value) {
40
+ return MODEL_TAGS.includes(value);
41
+ }
42
+ export function getModelTagDefinition(tag) {
43
+ return MODEL_TAG_DEFINITIONS.find((definition) => definition.id === tag);
44
+ }
@@ -57,7 +57,10 @@ export interface AiRuntimeTrace {
57
57
  }
58
58
  export interface AiGenerateResponseDto {
59
59
  status: GenerateStatus;
60
+ /** 兼容字段:多个输出时用 `|||` 拼接;新代码请读 `urls`。 */
60
61
  url: string;
62
+ /** 全部输出地址,按供应商输出顺序(SDK 生成结果总会给出;宿主自建的 DTO 可省略)。 */
63
+ urls?: string[];
61
64
  filePath?: string;
62
65
  /** 宿主本次响应中新建的受管媒体;消费方完成转移后必须释放。 */
63
66
  createdFilePaths?: string[];
@@ -0,0 +1,15 @@
1
+ /** Source audio clock, milliseconds. An output index addresses the corresponding generated audio. */
2
+ export type SpeechTimings = {
3
+ granularity: 'char' | 'word' | 'sentence';
4
+ items: Array<{
5
+ text: string;
6
+ startMs: number;
7
+ endMs: number;
8
+ confidence?: number;
9
+ }>;
10
+ };
11
+ /** Stored in generation metadata.outputTimings; absent means the provider supplied no timestamps. */
12
+ export type GenerationOutputTimings = Array<{
13
+ outputIndex: number;
14
+ timings: SpeechTimings;
15
+ }>;
@@ -0,0 +1 @@
1
+ export {};