@henjicc/ai-sdk 0.9.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 (694) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +580 -577
  3. package/dist/capabilities/speech-recognition/bailian/module.js +12 -13
  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/upload.js +11 -58
  10. package/dist/capabilities/speech-recognition/index.d.ts +5 -0
  11. package/dist/capabilities/speech-recognition/siliconflow/presets.d.ts +2 -3
  12. package/dist/capabilities/speech-recognition/siliconflow/presets.js +0 -2
  13. package/dist/capabilities/translation/bailian/types.d.ts +3 -0
  14. package/dist/capabilities/translation/bailian/types.js +6 -4
  15. package/dist/catalog/apimart/flux-3-image.model.d.ts +3 -0
  16. package/dist/catalog/apimart/flux-3-image.model.js +62 -0
  17. package/dist/catalog/apimart/flux-3-video.model.d.ts +3 -0
  18. package/dist/catalog/apimart/flux-3-video.model.js +120 -0
  19. package/dist/catalog/apimart/gemini-omni-1.2-flash.model.d.ts +3 -0
  20. package/dist/catalog/apimart/gemini-omni-1.2-flash.model.js +175 -0
  21. package/dist/catalog/apimart/gemini-omni-flash.model.js +27 -23
  22. package/dist/catalog/apimart/gpt-image-2.5.model.js +1 -1
  23. package/dist/catalog/apimart/gpt-image-2.6.model.d.ts +3 -0
  24. package/dist/catalog/apimart/gpt-image-2.6.model.js +103 -0
  25. package/dist/catalog/apimart/gpt-image-2.model.js +1 -1
  26. package/dist/catalog/apimart/grok-imagine-2.0.model.js +1 -1
  27. package/dist/catalog/apimart/grok-imagine-video-1.5.model.d.ts +3 -0
  28. package/dist/catalog/apimart/grok-imagine-video-1.5.model.js +85 -0
  29. package/dist/catalog/apimart/happyhorse-1.1.model.d.ts +3 -0
  30. package/dist/catalog/apimart/happyhorse-1.1.model.js +78 -0
  31. package/dist/catalog/apimart/kling-3.0-omni.model.js +12 -2
  32. package/dist/catalog/apimart/kling-3.0-turbo.model.js +5 -2
  33. package/dist/catalog/apimart/kling-3.0.model.js +1 -1
  34. package/dist/catalog/apimart/kling-4.0.model.d.ts +3 -0
  35. package/dist/catalog/apimart/kling-4.0.model.js +149 -0
  36. package/dist/catalog/apimart/midjourney-video.model.js +31 -32
  37. package/dist/catalog/apimart/midjourney.model.js +11 -1
  38. package/dist/catalog/apimart/minimax-h3-max.model.d.ts +3 -0
  39. package/dist/catalog/apimart/minimax-h3-max.model.js +101 -0
  40. package/dist/catalog/apimart/minimax-h3.model.js +8 -3
  41. package/dist/catalog/apimart/nano-banana-2-lite.model.js +1 -1
  42. package/dist/catalog/apimart/nano-banana-2.1.model.d.ts +2 -0
  43. package/dist/catalog/apimart/nano-banana-2.1.model.js +49 -0
  44. package/dist/catalog/apimart/nano-banana-2.model.js +1 -1
  45. package/dist/catalog/apimart/nano-banana-pro.model.js +1 -1
  46. package/dist/catalog/apimart/qwen-image-3.0.model.js +1 -1
  47. package/dist/catalog/apimart/seedance-2.0-fast.model.js +1 -1
  48. package/dist/catalog/apimart/seedance-2.0-mini.model.js +4 -4
  49. package/dist/catalog/apimart/seedance-2.0.model.js +1 -1
  50. package/dist/catalog/apimart/seedance-2.5.model.js +27 -5
  51. package/dist/catalog/apimart/seedream-5.0-flash.model.d.ts +3 -0
  52. package/dist/catalog/apimart/seedream-5.0-flash.model.js +52 -0
  53. package/dist/catalog/apimart/seedream-5.0-lite.model.js +4 -4
  54. package/dist/catalog/apimart/seedream-5.0-pro.model.js +1 -1
  55. package/dist/catalog/apimart/veo-3.1.model.d.ts +3 -0
  56. package/dist/catalog/apimart/veo-3.1.model.js +132 -0
  57. package/dist/catalog/apimart/wan-2.7-image.model.d.ts +3 -0
  58. package/dist/catalog/apimart/wan-2.7-image.model.js +80 -0
  59. package/dist/catalog/apimart/wan-3.0.model.d.ts +3 -0
  60. package/dist/catalog/apimart/wan-3.0.model.js +101 -0
  61. package/dist/catalog/apimart/z-image-turbo.model.js +1 -1
  62. package/dist/catalog/audio/tts-common.d.ts +2 -1
  63. package/dist/catalog/audio/tts-common.js +5 -1
  64. package/dist/catalog/bailian/cosyvoice-v3.5.model.js +1 -1
  65. package/dist/catalog/bailian/minimax-h3.model.d.ts +3 -0
  66. package/dist/catalog/bailian/minimax-h3.model.js +95 -0
  67. package/dist/catalog/bailian/minimax-speech-2.8.model.js +1 -1
  68. package/dist/catalog/bailian/qwen-audio-3.1-tts-flash.model.js +14 -3
  69. package/dist/catalog/bailian/qwen-audio-3.1-tts-plus.model.d.ts +2 -0
  70. package/dist/catalog/bailian/qwen-audio-3.1-tts-plus.model.js +44 -0
  71. package/dist/catalog/bailian/qwen-image-3.0.model.js +1 -1
  72. package/dist/catalog/bailian/wan-3.0.model.d.ts +3 -0
  73. package/dist/catalog/bailian/wan-3.0.model.js +104 -0
  74. package/dist/catalog/bailian/z-image-turbo.model.js +1 -1
  75. package/dist/catalog/consumer-contract.d.ts +16 -1
  76. package/dist/catalog/consumer-contract.js +31 -0
  77. package/dist/catalog/continuation.d.ts +20 -0
  78. package/dist/catalog/continuation.js +41 -0
  79. package/dist/catalog/fal/bria-creative-upscale.model.js +1 -1
  80. package/dist/catalog/fal/eleven-v3-tts.model.js +1 -1
  81. package/dist/catalog/fal/eleven-v4-tts.model.d.ts +2 -0
  82. package/dist/catalog/fal/eleven-v4-tts.model.js +38 -0
  83. package/dist/catalog/fal/flux-3-video.model.d.ts +2 -0
  84. package/dist/catalog/fal/flux-3-video.model.js +187 -0
  85. package/dist/catalog/fal/flux-3.model.d.ts +2 -0
  86. package/dist/catalog/fal/flux-3.model.js +69 -0
  87. package/dist/catalog/fal/gemini-omni-1.2-flash.model.d.ts +2 -0
  88. package/dist/catalog/fal/gemini-omni-1.2-flash.model.js +129 -0
  89. package/dist/catalog/fal/gemini-omni-flash.model.js +1 -1
  90. package/dist/catalog/fal/gpt-image-2.5.model.js +1 -1
  91. package/dist/catalog/fal/gpt-image-2.6.model.d.ts +2 -0
  92. package/dist/catalog/fal/gpt-image-2.6.model.js +97 -0
  93. package/dist/catalog/fal/gpt-image-2.model.js +1 -1
  94. package/dist/catalog/fal/grok-imagine-2.0.model.js +1 -1
  95. package/dist/catalog/fal/grok-imagine-video-1.5.model.d.ts +2 -0
  96. package/dist/catalog/fal/grok-imagine-video-1.5.model.js +121 -0
  97. package/dist/catalog/fal/hailuo-02.model.js +8 -4
  98. package/dist/catalog/fal/hailuo-2.3.model.js +1 -1
  99. package/dist/catalog/fal/ic-light-v2.model.js +1 -1
  100. package/dist/catalog/fal/ideogram-upscale.model.js +1 -1
  101. package/dist/catalog/fal/kling-3.0-omni.model.js +1 -1
  102. package/dist/catalog/fal/kling-3.0-turbo.model.js +5 -2
  103. package/dist/catalog/fal/kling-3.0.model.js +4 -1
  104. package/dist/catalog/fal/kling-4.0-flash.model.d.ts +2 -0
  105. package/dist/catalog/fal/kling-4.0-flash.model.js +132 -0
  106. package/dist/catalog/fal/kling-4.0.model.d.ts +2 -0
  107. package/dist/catalog/fal/kling-4.0.model.js +169 -0
  108. package/dist/catalog/fal/kling-image-o1.model.js +1 -1
  109. package/dist/catalog/fal/kling-video-o1.model.js +18 -7
  110. package/dist/catalog/fal/kling-video-v2.6-pro.model.js +3 -2
  111. package/dist/catalog/fal/ltx-2.3.model.d.ts +2 -0
  112. package/dist/catalog/fal/ltx-2.3.model.js +223 -0
  113. package/dist/catalog/fal/ltx-2.model.js +2 -1
  114. package/dist/catalog/fal/minimax-h3-max.model.d.ts +2 -0
  115. package/dist/catalog/fal/minimax-h3-max.model.js +132 -0
  116. package/dist/catalog/fal/minimax-h3.model.js +3 -4
  117. package/dist/catalog/fal/minimax-speech-2.8.model.js +1 -1
  118. package/dist/catalog/fal/nano-banana-2.1.model.d.ts +2 -0
  119. package/dist/catalog/fal/nano-banana-2.1.model.js +68 -0
  120. package/dist/catalog/fal/nano-banana-2.model.js +1 -1
  121. package/dist/catalog/fal/nano-banana-pro.model.js +1 -1
  122. package/dist/catalog/fal/nano-banana.model.js +1 -1
  123. package/dist/catalog/fal/pixverse-v5.5.model.js +9 -4
  124. package/dist/catalog/fal/qwen-image-3.0.model.js +2 -2
  125. package/dist/catalog/fal/qwen3-tts-1.7b.model.js +4 -3
  126. package/dist/catalog/fal/seedance-2.0-fast.model.js +1 -1
  127. package/dist/catalog/fal/seedance-2.0-mini.model.js +1 -1
  128. package/dist/catalog/fal/seedance-2.0.model.js +1 -1
  129. package/dist/catalog/fal/seedance-2.5.model.js +5 -2
  130. package/dist/catalog/fal/seedance.model.js +3 -2
  131. package/dist/catalog/fal/seedream-5.0-lite.model.js +1 -1
  132. package/dist/catalog/fal/seedream-5.0-pro.model.js +1 -1
  133. package/dist/catalog/fal/seedream-v4.5.model.js +1 -1
  134. package/dist/catalog/fal/seedream-v4.model.js +1 -1
  135. package/dist/catalog/fal/seedvr2-image-upscale.model.js +1 -1
  136. package/dist/catalog/fal/topaz-image-upscale.model.js +1 -1
  137. package/dist/catalog/fal/topaz-transparent-upscale.model.js +1 -1
  138. package/dist/catalog/fal/utils/klingV4.d.ts +17 -0
  139. package/dist/catalog/fal/utils/klingV4.js +33 -0
  140. package/dist/catalog/fal/veo-3.1.model.js +5 -2
  141. package/dist/catalog/fal/vidu-q2.model.js +20 -8
  142. package/dist/catalog/fal/wan-2.5-preview.model.js +4 -1
  143. package/dist/catalog/fal/wan-3.0.model.d.ts +2 -0
  144. package/dist/catalog/fal/wan-3.0.model.js +135 -0
  145. package/dist/catalog/fal/z-image-turbo.model.js +10 -9
  146. package/dist/catalog/grsai/gpt-image-2.5.model.js +13 -31
  147. package/dist/catalog/grsai/gpt-image-2.6.model.d.ts +2 -0
  148. package/dist/catalog/grsai/gpt-image-2.6.model.js +37 -0
  149. package/dist/catalog/grsai/gpt-image-2.model.js +5 -2
  150. package/dist/catalog/grsai/nano-banana-2-lite.model.js +1 -1
  151. package/dist/catalog/grsai/nano-banana-2.1.model.d.ts +2 -0
  152. package/dist/catalog/grsai/nano-banana-2.1.model.js +29 -0
  153. package/dist/catalog/grsai/nano-banana-2.model.js +1 -1
  154. package/dist/catalog/grsai/nano-banana-pro.model.js +1 -1
  155. package/dist/catalog/grsai/wan-3.0.model.d.ts +2 -0
  156. package/dist/catalog/grsai/wan-3.0.model.js +78 -0
  157. package/dist/catalog/index.d.ts +1 -0
  158. package/dist/catalog/index.js +205 -124
  159. package/dist/catalog/kie/eleven-v3-dialogue.model.js +1 -1
  160. package/dist/catalog/kie/flux-3-klein.model.d.ts +2 -0
  161. package/dist/catalog/kie/flux-3-klein.model.js +58 -0
  162. package/dist/catalog/kie/gemini-3.1-flash-tts.model.js +7 -4
  163. package/dist/catalog/kie/gemini-3.8-flash-lite-tts.model.d.ts +2 -0
  164. package/dist/catalog/kie/gemini-3.8-flash-lite-tts.model.js +11 -0
  165. package/dist/catalog/kie/gemini-3.8-flash-tts.model.d.ts +2 -0
  166. package/dist/catalog/kie/gemini-3.8-flash-tts.model.js +11 -0
  167. package/dist/catalog/kie/gemini-omni-video.model.js +3 -4
  168. package/dist/catalog/kie/gemini38Tts.d.ts +3 -0
  169. package/dist/catalog/kie/gemini38Tts.js +40 -0
  170. package/dist/catalog/kie/gpt-image-2.5.model.js +1 -1
  171. package/dist/catalog/kie/gpt-image-2.6.model.d.ts +2 -0
  172. package/dist/catalog/kie/gpt-image-2.6.model.js +87 -0
  173. package/dist/catalog/kie/gpt-image-2.model.js +8 -12
  174. package/dist/catalog/kie/grok-imagine-2.0.model.js +1 -1
  175. package/dist/catalog/kie/grok-imagine-video-1.5.model.d.ts +2 -0
  176. package/dist/catalog/kie/grok-imagine-video-1.5.model.js +52 -0
  177. package/dist/catalog/kie/grok-imagine-video.model.js +7 -3
  178. package/dist/catalog/kie/grok-imagine.model.js +4 -2
  179. package/dist/catalog/kie/hailuo-02.model.js +6 -4
  180. package/dist/catalog/kie/hailuo-2-3.model.js +1 -1
  181. package/dist/catalog/kie/happyhorse-1.1.model.js +5 -2
  182. package/dist/catalog/kie/kling-3.0-omni.model.js +51 -23
  183. package/dist/catalog/kie/kling-3.0-turbo.model.js +1 -1
  184. package/dist/catalog/kie/kling-3.0.model.js +1 -8
  185. package/dist/catalog/kie/kling-4.0-flash.model.d.ts +2 -0
  186. package/dist/catalog/kie/kling-4.0-flash.model.js +16 -0
  187. package/dist/catalog/kie/kling-4.0.model.d.ts +2 -0
  188. package/dist/catalog/kie/kling-4.0.model.js +17 -0
  189. package/dist/catalog/kie/kling-v2-6.model.js +1 -1
  190. package/dist/catalog/kie/kling40.d.ts +21 -0
  191. package/dist/catalog/kie/kling40.js +129 -0
  192. package/dist/catalog/kie/minimax-h3.model.js +16 -21
  193. package/dist/catalog/kie/nano-banana-2-lite.model.js +1 -1
  194. package/dist/catalog/kie/nano-banana-2.1.model.d.ts +2 -0
  195. package/dist/catalog/kie/nano-banana-2.1.model.js +34 -0
  196. package/dist/catalog/kie/nano-banana-2.model.js +2 -2
  197. package/dist/catalog/kie/nano-banana-pro.model.js +1 -1
  198. package/dist/catalog/kie/qwen-image-3.0.model.js +2 -10
  199. package/dist/catalog/kie/seedance-1.5-pro.model.js +2 -1
  200. package/dist/catalog/kie/seedance-2.0-fast.model.js +5 -1
  201. package/dist/catalog/kie/seedance-2.0-mini.model.js +5 -1
  202. package/dist/catalog/kie/seedance-2.0.model.js +5 -1
  203. package/dist/catalog/kie/seedance-2.5.model.js +10 -20
  204. package/dist/catalog/kie/seedance-v1.model.js +8 -4
  205. package/dist/catalog/kie/seedream-4.0.model.js +1 -1
  206. package/dist/catalog/kie/seedream-4.5.model.js +1 -1
  207. package/dist/catalog/kie/seedream-5.0-lite.model.js +1 -1
  208. package/dist/catalog/kie/seedream-5.0-pro.model.js +1 -1
  209. package/dist/catalog/kie/wan-3.0-prime.model.d.ts +2 -0
  210. package/dist/catalog/kie/wan-3.0-prime.model.js +15 -0
  211. package/dist/catalog/kie/wan-3.0.model.d.ts +2 -0
  212. package/dist/catalog/kie/wan-3.0.model.js +15 -0
  213. package/dist/catalog/kie/wan30.d.ts +10 -0
  214. package/dist/catalog/kie/wan30.js +78 -0
  215. package/dist/catalog/kie/z-image.model.js +1 -1
  216. package/dist/catalog/modelscope/flux-1-krea-dev.model.js +4 -2
  217. package/dist/catalog/modelscope/majicmix-realistic.model.js +3 -2
  218. package/dist/catalog/modelscope/modelscope-custom.model.js +3 -2
  219. package/dist/catalog/modelscope/qwen-image-2512.model.d.ts +5 -0
  220. package/dist/catalog/modelscope/{qwen-image.model.js → qwen-image-2512.model.js} +11 -8
  221. package/dist/catalog/modelscope/qwen-image-edit-2511.model.d.ts +5 -0
  222. package/dist/catalog/modelscope/{qwen-image-edit-2509.model.js → qwen-image-edit-2511.model.js} +9 -7
  223. package/dist/catalog/modelscope/sdxl-14-ckpt.model.js +3 -2
  224. package/dist/catalog/modelscope/utils.js +2 -2
  225. package/dist/catalog/modelscope/z-image-turbo.model.js +3 -2
  226. package/dist/catalog/ppio/kling-3.0.model.js +4 -1
  227. package/dist/catalog/ppio/minimax-speech.model.js +2 -1
  228. package/dist/catalog/shared/mediaPresence.d.ts +8 -1
  229. package/dist/catalog/shared/mediaPresence.js +21 -1
  230. package/dist/catalog/shared/nanoBanana21.d.ts +11 -0
  231. package/dist/catalog/shared/nanoBanana21.js +30 -0
  232. package/dist/catalog/shared/shotList.d.ts +31 -0
  233. package/dist/catalog/shared/shotList.js +48 -0
  234. package/dist/catalog/shared/subjectElements.d.ts +36 -0
  235. package/dist/catalog/shared/subjectElements.js +93 -0
  236. package/dist/catalog/siliconflow/moss-ttsd-0.5.model.js +1 -1
  237. package/dist/catalog/validate.js +14 -1
  238. package/dist/catalog/volcengine/seedance-2.0-fast.model.d.ts +2 -0
  239. package/dist/catalog/volcengine/seedance-2.0-fast.model.js +11 -0
  240. package/dist/catalog/volcengine/seedance-2.0-mini.model.d.ts +2 -0
  241. package/dist/catalog/volcengine/seedance-2.0-mini.model.js +11 -0
  242. package/dist/catalog/volcengine/seedance-2.0.model.d.ts +2 -0
  243. package/dist/catalog/volcengine/seedance-2.0.model.js +11 -0
  244. package/dist/catalog/volcengine/seedance-2.5.model.d.ts +2 -0
  245. package/dist/catalog/volcengine/seedance-2.5.model.js +11 -0
  246. package/dist/catalog/volcengine/seedance.d.ts +17 -0
  247. package/dist/catalog/volcengine/seedance.js +192 -0
  248. package/dist/catalog/volcengine/seedream-5.0-lite.model.js +2 -1
  249. package/dist/catalog/volcengine/seedream-5.0.js +1 -1
  250. package/dist/catalog/volcengine-speech/seed-icl-2.0.model.js +2 -2
  251. package/dist/catalog/volcengine-speech/seed-tts-2.0.model.js +2 -2
  252. package/dist/discovery/index.js +13 -6
  253. package/dist/index.d.ts +3 -0
  254. package/dist/index.js +2 -0
  255. package/dist/llm/bigmodel/preset.js +2 -1
  256. package/dist/llm/bigmodel/profiles.js +0 -6
  257. package/dist/llm/chat.d.ts +8 -0
  258. package/dist/llm/chat.js +18 -2
  259. package/dist/llm/chatTypes.d.ts +6 -0
  260. package/dist/llm/defaults.d.ts +2 -2
  261. package/dist/llm/defaults.js +3 -3
  262. package/dist/llm/groq/preset.js +18 -2
  263. package/dist/llm/modelCatalog.d.ts +9 -2
  264. package/dist/llm/modelCatalog.js +17 -4
  265. package/dist/llm/modelCatalogEntries.d.ts +2 -0
  266. package/dist/llm/modelCatalogEntries.js +197 -42
  267. package/dist/llm/providerPresets.d.ts +3 -0
  268. package/dist/llm/providerPresets.js +145 -32
  269. package/dist/llm/providerReasoningRequest.js +28 -11
  270. package/dist/llm/siliconflow/index.js +1 -1
  271. package/dist/llm/siliconflow/preset.js +30 -0
  272. package/dist/llm/types.d.ts +6 -0
  273. package/dist/packs/models/{ppio/wan-2.5-preview.d.ts → apimart/flux-3-image.d.ts} +1 -1
  274. package/dist/packs/models/apimart/flux-3-image.js +7 -0
  275. package/dist/packs/models/apimart/flux-3-video.d.ts +6 -0
  276. package/dist/packs/models/apimart/flux-3-video.js +7 -0
  277. package/dist/packs/models/apimart/gemini-omni-1.2-flash.d.ts +6 -0
  278. package/dist/packs/models/apimart/gemini-omni-1.2-flash.js +7 -0
  279. package/dist/packs/models/{modelscope/qwen-image.d.ts → apimart/gpt-image-2.6.d.ts} +1 -1
  280. package/dist/packs/models/apimart/gpt-image-2.6.js +7 -0
  281. package/dist/packs/models/apimart/grok-imagine-video-1.5.d.ts +6 -0
  282. package/dist/packs/models/apimart/grok-imagine-video-1.5.js +7 -0
  283. package/dist/packs/models/apimart/happyhorse-1.1.d.ts +6 -0
  284. package/dist/packs/models/apimart/happyhorse-1.1.js +7 -0
  285. package/dist/packs/models/apimart/kling-4.0.d.ts +6 -0
  286. package/dist/packs/models/apimart/kling-4.0.js +7 -0
  287. package/dist/packs/models/apimart/minimax-h3-max.d.ts +6 -0
  288. package/dist/packs/models/apimart/minimax-h3-max.js +7 -0
  289. package/dist/packs/models/{ppio/minimax-hailuo-2.3.d.ts → apimart/nano-banana-2.1.d.ts} +1 -1
  290. package/dist/packs/models/{ppio/minimax-hailuo-2.3.js → apimart/nano-banana-2.1.js} +4 -4
  291. package/dist/packs/models/apimart/seedream-5.0-flash.d.ts +6 -0
  292. package/dist/packs/models/apimart/seedream-5.0-flash.js +7 -0
  293. package/dist/packs/models/apimart/veo-3.1.d.ts +6 -0
  294. package/dist/packs/models/apimart/veo-3.1.js +7 -0
  295. package/dist/packs/models/apimart/wan-2.7-image.d.ts +6 -0
  296. package/dist/packs/models/apimart/wan-2.7-image.js +7 -0
  297. package/dist/packs/models/apimart/wan-3.0.d.ts +6 -0
  298. package/dist/packs/models/apimart/wan-3.0.js +7 -0
  299. package/dist/packs/models/bailian/cosyvoice-v3.5.js +1 -1
  300. package/dist/packs/models/bailian/minimax-h3.d.ts +6 -0
  301. package/dist/packs/models/bailian/minimax-h3.js +7 -0
  302. package/dist/packs/models/bailian/minimax-speech-2.8.js +1 -1
  303. package/dist/packs/models/bailian/qwen-audio-3.1-tts-flash.js +1 -1
  304. package/dist/packs/models/bailian/qwen-audio-3.1-tts-plus.d.ts +6 -0
  305. package/dist/packs/models/bailian/qwen-audio-3.1-tts-plus.js +7 -0
  306. package/dist/packs/models/bailian/qwen-image-3.0.js +1 -1
  307. package/dist/packs/models/bailian/wan-3.0.d.ts +6 -0
  308. package/dist/packs/models/bailian/wan-3.0.js +7 -0
  309. package/dist/packs/models/bailian/z-image-turbo.js +1 -1
  310. package/dist/packs/models/fal/eleven-v4-tts.d.ts +6 -0
  311. package/dist/packs/models/{ppio/wan-2.5-preview.js → fal/eleven-v4-tts.js} +4 -4
  312. package/dist/packs/models/fal/flux-3-video.d.ts +6 -0
  313. package/dist/packs/models/fal/flux-3-video.js +7 -0
  314. package/dist/packs/models/{ppio/wan-2.6.d.ts → fal/flux-3.d.ts} +1 -1
  315. package/dist/packs/models/{ppio/wan-2.6.js → fal/flux-3.js} +4 -4
  316. package/dist/packs/models/fal/gemini-omni-1.2-flash.d.ts +6 -0
  317. package/dist/packs/models/fal/gemini-omni-1.2-flash.js +7 -0
  318. package/dist/packs/models/fal/gpt-image-2.6.d.ts +6 -0
  319. package/dist/packs/models/fal/gpt-image-2.6.js +7 -0
  320. package/dist/packs/models/fal/grok-imagine-video-1.5.d.ts +6 -0
  321. package/dist/packs/models/fal/grok-imagine-video-1.5.js +7 -0
  322. package/dist/packs/models/fal/kling-4.0-flash.d.ts +6 -0
  323. package/dist/packs/models/fal/kling-4.0-flash.js +7 -0
  324. package/dist/packs/models/fal/kling-4.0.d.ts +6 -0
  325. package/dist/packs/models/{ppio/wan-2.7.js → fal/kling-4.0.js} +4 -4
  326. package/dist/packs/models/{ppio/wan-2.7.d.ts → fal/ltx-2.3.d.ts} +1 -1
  327. package/dist/packs/models/fal/ltx-2.3.js +7 -0
  328. package/dist/packs/models/fal/minimax-h3-max.d.ts +6 -0
  329. package/dist/packs/models/fal/minimax-h3-max.js +7 -0
  330. package/dist/packs/models/fal/nano-banana-2.1.d.ts +6 -0
  331. package/dist/packs/models/fal/nano-banana-2.1.js +7 -0
  332. package/dist/packs/models/fal/wan-3.0.d.ts +6 -0
  333. package/dist/packs/models/fal/wan-3.0.js +7 -0
  334. package/dist/packs/models/grsai/gpt-image-2.6.d.ts +6 -0
  335. package/dist/packs/models/grsai/gpt-image-2.6.js +7 -0
  336. package/dist/packs/models/grsai/nano-banana-2.1.d.ts +6 -0
  337. package/dist/packs/models/grsai/nano-banana-2.1.js +7 -0
  338. package/dist/packs/models/grsai/wan-3.0.d.ts +6 -0
  339. package/dist/packs/models/grsai/wan-3.0.js +7 -0
  340. package/dist/packs/models/kie/flux-3-klein.d.ts +6 -0
  341. package/dist/packs/models/kie/flux-3-klein.js +7 -0
  342. package/dist/packs/models/kie/gemini-3.8-flash-lite-tts.d.ts +6 -0
  343. package/dist/packs/models/kie/gemini-3.8-flash-lite-tts.js +7 -0
  344. package/dist/packs/models/kie/{eleven-turbo-2.5-tts.d.ts → gemini-3.8-flash-tts.d.ts} +1 -1
  345. package/dist/packs/models/kie/{eleven-turbo-2.5-tts.js → gemini-3.8-flash-tts.js} +1 -1
  346. package/dist/packs/models/kie/gpt-image-2.6.d.ts +6 -0
  347. package/dist/packs/models/kie/gpt-image-2.6.js +7 -0
  348. package/dist/packs/models/kie/grok-imagine-video-1.5.d.ts +6 -0
  349. package/dist/packs/models/kie/grok-imagine-video-1.5.js +7 -0
  350. package/dist/packs/models/kie/kling-4.0-flash.d.ts +6 -0
  351. package/dist/packs/models/kie/kling-4.0-flash.js +7 -0
  352. package/dist/packs/models/kie/kling-4.0.d.ts +6 -0
  353. package/dist/packs/models/kie/kling-4.0.js +7 -0
  354. package/dist/packs/models/kie/nano-banana-2.1.d.ts +6 -0
  355. package/dist/packs/models/kie/nano-banana-2.1.js +7 -0
  356. package/dist/packs/models/kie/wan-3.0-prime.d.ts +6 -0
  357. package/dist/packs/models/kie/wan-3.0-prime.js +7 -0
  358. package/dist/packs/models/kie/wan-3.0.d.ts +6 -0
  359. package/dist/packs/models/kie/wan-3.0.js +7 -0
  360. package/dist/packs/models/modelscope/flux-1-krea-dev.js +1 -1
  361. package/dist/packs/models/modelscope/majicmix-realistic.js +1 -1
  362. package/dist/packs/models/modelscope/modelscope-custom.js +1 -1
  363. package/dist/packs/models/modelscope/qwen-image-2512.d.ts +6 -0
  364. package/dist/packs/models/modelscope/{qwen-image.js → qwen-image-2512.js} +2 -2
  365. package/dist/packs/models/modelscope/{qwen-image-edit-2509.d.ts → qwen-image-edit-2511.d.ts} +1 -1
  366. package/dist/packs/models/modelscope/{qwen-image-edit-2509.js → qwen-image-edit-2511.js} +2 -2
  367. package/dist/packs/models/modelscope/sdxl-14-ckpt.js +1 -1
  368. package/dist/packs/models/modelscope/z-image-turbo.js +1 -1
  369. package/dist/packs/models/volcengine/seedance-2.0-fast.d.ts +6 -0
  370. package/dist/packs/models/volcengine/seedance-2.0-fast.js +7 -0
  371. package/dist/packs/models/volcengine/seedance-2.0-mini.d.ts +6 -0
  372. package/dist/packs/models/volcengine/seedance-2.0-mini.js +7 -0
  373. package/dist/packs/models/volcengine/seedance-2.0.d.ts +6 -0
  374. package/dist/packs/models/volcengine/seedance-2.0.js +7 -0
  375. package/dist/packs/models/volcengine/seedance-2.5.d.ts +6 -0
  376. package/dist/packs/models/volcengine/seedance-2.5.js +7 -0
  377. package/dist/packs/models/volcengine/seedream-5.0-flash.js +1 -1
  378. package/dist/packs/models/volcengine/seedream-5.0-lite.js +1 -1
  379. package/dist/packs/models/volcengine/seedream-5.0-pro.js +1 -1
  380. package/dist/packs/provider-adapters/bailian.js +1 -1
  381. package/dist/packs/provider-adapters/modelscope.js +1 -1
  382. package/dist/packs/provider-adapters/volcengine.js +1 -1
  383. package/dist/packs/provider-packs/apimart.d.ts +1 -1
  384. package/dist/packs/provider-packs/apimart.js +35 -22
  385. package/dist/packs/provider-packs/bailian.d.ts +1 -1
  386. package/dist/packs/provider-packs/bailian.js +8 -5
  387. package/dist/packs/provider-packs/fal.d.ts +1 -1
  388. package/dist/packs/provider-packs/fal.js +52 -40
  389. package/dist/packs/provider-packs/grsai.d.ts +1 -1
  390. package/dist/packs/provider-packs/grsai.js +8 -5
  391. package/dist/packs/provider-packs/kie.d.ts +1 -1
  392. package/dist/packs/provider-packs/kie.js +41 -32
  393. package/dist/packs/provider-packs/modelscope.js +2 -2
  394. package/dist/packs/provider-packs/ppio.d.ts +1 -1
  395. package/dist/packs/provider-packs/ppio.js +2 -6
  396. package/dist/packs/provider-packs/volcengine.d.ts +1 -1
  397. package/dist/packs/provider-packs/volcengine.js +8 -4
  398. package/dist/pricing/index.d.ts +1 -0
  399. package/dist/pricing/index.js +1 -0
  400. package/dist/pricing/mediaContext.d.ts +6 -1
  401. package/dist/pricing/mediaContext.js +12 -5
  402. package/dist/pricing/tokenPricing.d.ts +36 -0
  403. package/dist/pricing/tokenPricing.js +26 -0
  404. package/dist/providers/bailian.d.ts +1 -1
  405. package/dist/providers/bailian.js +71 -4
  406. package/dist/providers/fal.js +11 -1
  407. package/dist/providers/helpers.d.ts +1 -1
  408. package/dist/providers/helpers.js +17 -5
  409. package/dist/providers/kie.js +16 -5
  410. package/dist/providers/metadata.js +2 -2
  411. package/dist/providers/openai-speech.d.ts +6 -0
  412. package/dist/providers/openai-speech.js +31 -0
  413. package/dist/providers/providerAccessErrors.d.ts +3 -0
  414. package/dist/providers/providerAccessErrors.js +73 -0
  415. package/dist/providers/siliconflow.js +2 -27
  416. package/dist/providers/volcengine-speech.js +22 -5
  417. package/dist/providers/volcengine-voice-clone.js +13 -4
  418. package/dist/providers/volcengine.d.ts +1 -1
  419. package/dist/providers/volcengine.js +89 -11
  420. package/dist/runtime/retry.js +3 -0
  421. package/dist/tool-packs/fal-erase/models/bria-eraser.model.js +1 -1
  422. package/dist/tool-packs/fal-erase/models/finegrain-eraser.model.js +1 -1
  423. package/dist/tool-packs/fal-erase/models/flux-pro-erase.model.js +1 -1
  424. package/dist/tool-packs/fal-image-utilities/models/control-light.model.js +1 -1
  425. package/dist/tool-packs/fal-image-utilities/models/outpaint.model.js +1 -1
  426. package/dist/tool-packs/fal-image-utilities/models/photo-restoration.model.js +1 -1
  427. package/dist/tool-packs/fal-image-utilities/models/pixelcut-background-removal.model.js +1 -1
  428. package/dist/tool-packs/fal-image-utilities/models/product-photography.model.js +1 -1
  429. package/dist/tool-packs/fal-image-utilities/models/relighting.model.js +1 -1
  430. package/dist/tool-packs/fal-multi-angle/models/flux-2-multiple-angles.model.js +1 -1
  431. package/dist/tool-packs/fal-multi-angle/models/perspective-change.model.js +1 -1
  432. package/dist/tool-packs/fal-multi-angle/models/qwen-image-edit-2511-multiple-angles.model.js +1 -1
  433. package/dist/types/model.d.ts +68 -12
  434. package/dist/types/model.js +3 -0
  435. package/dist/types/modelTags.d.ts +142 -0
  436. package/dist/types/modelTags.js +44 -0
  437. package/dist/types/speechTimings.d.ts +15 -0
  438. package/dist/types/speechTimings.js +1 -0
  439. package/dist/upload/apimart-upload.d.ts +1 -1
  440. package/dist/upload/apimart-upload.js +37 -15
  441. package/dist/upload/bailian-oss-upload.d.ts +32 -0
  442. package/dist/upload/bailian-oss-upload.js +74 -0
  443. package/dist/upload/{fal-legacy.js → fal-host-fetch.js} +2 -2
  444. package/dist/upload/fal-transport.d.ts +6 -0
  445. package/dist/upload/fal-transport.js +2 -1
  446. package/dist/upload/index.d.ts +2 -2
  447. package/dist/upload/index.js +4 -7
  448. package/dist/upload/kie-upload.d.ts +1 -1
  449. package/dist/upload/kie-upload.js +34 -12
  450. package/dist/upload/media-fields.js +7 -2
  451. package/dist/upload/preprocess-core.d.ts +2 -0
  452. package/dist/upload/preprocess-core.js +2 -0
  453. package/dist/upload/preprocess.d.ts +1 -1
  454. package/dist/upload/preprocess.js +12 -3
  455. package/dist/upload/provider-preprocessors/apimart.d.ts +1 -1
  456. package/dist/upload/provider-preprocessors/apimart.js +13 -5
  457. package/dist/upload/provider-preprocessors/bailian.d.ts +8 -0
  458. package/dist/upload/provider-preprocessors/bailian.js +45 -0
  459. package/dist/upload/provider-preprocessors/kie.d.ts +1 -1
  460. package/dist/upload/provider-preprocessors/kie.js +26 -9
  461. package/dist/upload/provider-preprocessors/ppio.d.ts +1 -2
  462. package/dist/upload/provider-preprocessors/ppio.js +2 -29
  463. package/dist/upload/provider-preprocessors/public-host.d.ts +5 -0
  464. package/dist/upload/provider-preprocessors/public-host.js +7 -0
  465. package/dist/upload/provider-preprocessors/volcengine.d.ts +5 -0
  466. package/dist/upload/provider-preprocessors/volcengine.js +10 -0
  467. package/dist/upload/public-host-upload.d.ts +7 -0
  468. package/dist/upload/public-host-upload.js +55 -0
  469. package/dist/upload/upload-response.js +12 -7
  470. package/docs/README.md +26 -26
  471. package/docs/consumers.md +156 -148
  472. package/docs/llm-adaptation/README.md +180 -166
  473. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/DeepSeek.md +108 -104
  474. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/Kimi.md +94 -76
  475. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206/MiniMax.md +89 -84
  476. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//345/260/217/347/261/263MiMo.md +126 -126
  477. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//346/231/272/350/260/261GLM.md +238 -234
  478. 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
  479. package/docs/llm-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274Qwen.md +112 -84
  480. 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
  481. package/docs/model-adaptation/Bria-Eraser/Bria-Eraser_Fal.md +32 -32
  482. 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
  483. package/docs/model-adaptation/ControlLight/ControlLight_Fal.md +85 -85
  484. package/docs/model-adaptation/Eleven-v4/Eleven-v4_Fal.md +49 -0
  485. 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
  486. package/docs/model-adaptation/FLUX-3/FLUX-3_APIMart.md +65 -0
  487. package/docs/model-adaptation/FLUX-3/FLUX-3_Fal.md +48 -0
  488. package/docs/model-adaptation/FLUX-3-Klein/FLUX-3-Klein_KIE.md +38 -0
  489. package/docs/model-adaptation/FLUX-3-Video/FLUX-3-Video_APIMart.md +84 -0
  490. package/docs/model-adaptation/FLUX-3-Video/FLUX-3-Video_Fal.md +80 -0
  491. package/docs/model-adaptation/Finegrain-Eraser/Finegrain-Eraser_Fal.md +31 -31
  492. package/docs/model-adaptation/Flux-Pro-Erase/Flux-Pro-Erase_Fal.md +34 -34
  493. package/docs/model-adaptation/Fun-ASR/Fun-ASR_/347/231/276/347/202/274.md +47 -47
  494. 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
  495. package/docs/model-adaptation/Fun-ASR-Realtime/Fun-ASR-Realtime_/347/231/276/347/202/274.md +57 -57
  496. 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
  497. package/docs/model-adaptation/GLM-5.3-Flash/GLM-5.3-Flash_/346/231/272/350/260/261.md +217 -213
  498. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_APIMart.md +173 -173
  499. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Fal.md +94 -94
  500. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_Grsai.md +138 -137
  501. package/docs/model-adaptation/GPT-Image-2/GPT-Image-2_KIE.md +97 -93
  502. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_APIMart.md +66 -66
  503. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Fal.md +55 -55
  504. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_Grsai.md +59 -53
  505. package/docs/model-adaptation/GPT-Image-2.5/GPT-Image-2.5_KIE.md +55 -55
  506. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_APIMart.md +101 -0
  507. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_Fal.md +55 -0
  508. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_Grsai.md +32 -0
  509. package/docs/model-adaptation/GPT-Image-2.6/GPT-Image-2.6_KIE.md +51 -0
  510. package/docs/model-adaptation/GPT-OSS-20B/GPT-OSS-20B_Groq.md +62 -62
  511. package/docs/model-adaptation/Gemini-3.8-Flash-Lite-TTS/Gemini-3.8-Flash-Lite-TTS_KIE.md +22 -0
  512. package/docs/model-adaptation/Gemini-3.8-Flash-TTS/Gemini-3.8-Flash-TTS_KIE.md +38 -0
  513. package/docs/model-adaptation/Gemini-Omni-1.2-Flash/Gemini-Omni-1.2-Flash_APIMart.md +79 -0
  514. package/docs/model-adaptation/Gemini-Omni-1.2-Flash/Gemini-Omni-1.2-Flash_Fal.md +60 -0
  515. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_APIMart.md +131 -125
  516. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_Fal.md +84 -84
  517. package/docs/model-adaptation/Gemini-Omni-Flash/Gemini-Omni-Flash_KIE.md +132 -130
  518. package/docs/model-adaptation/Grok-Imagine/Grok-Imagine_KIE.md +38 -36
  519. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_APIMart.md +250 -250
  520. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_Fal.md +84 -84
  521. package/docs/model-adaptation/Grok-Imagine-2.0/Grok-Imagine-2.0_KIE.md +105 -105
  522. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_APIMart.md +68 -0
  523. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_Fal.md +47 -0
  524. package/docs/model-adaptation/Grok-Imagine-Video-1.5/Grok-Imagine-Video-1.5_KIE.md +37 -0
  525. package/docs/model-adaptation/Hailuo-02/Hailuo-02_Fal.md +95 -93
  526. package/docs/model-adaptation/Hailuo-02/Hailuo-02_KIE.md +58 -56
  527. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_Fal.md +88 -88
  528. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_KIE.md +51 -51
  529. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_APIMart.md +66 -0
  530. package/docs/model-adaptation/HappyHorse-1.1/HappyHorse-1.1_KIE.md +31 -27
  531. package/docs/model-adaptation/IC-Light-v2/IC-Light-v2_Fal.md +99 -99
  532. 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
  533. 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
  534. 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
  535. 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
  536. 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
  537. package/docs/model-adaptation/Kling-3.0/Kling-3.0_APIMart.md +112 -112
  538. package/docs/model-adaptation/Kling-3.0/Kling-3.0_Fal.md +91 -89
  539. package/docs/model-adaptation/Kling-3.0/Kling-3.0_KIE.md +106 -106
  540. package/docs/model-adaptation/Kling-3.0/Kling-3.0_/346/264/276/346/254/247/344/272/221.md +120 -119
  541. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_APIMart.md +130 -125
  542. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_Fal.md +107 -107
  543. package/docs/model-adaptation/Kling-3.0-Omni/Kling-3.0-Omni_KIE.md +148 -143
  544. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_APIMart.md +88 -85
  545. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_Fal.md +86 -83
  546. package/docs/model-adaptation/Kling-3.0-Turbo/Kling-3.0-Turbo_KIE.md +84 -84
  547. package/docs/model-adaptation/Kling-4.0/Kling-4.0_APIMart.md +76 -0
  548. package/docs/model-adaptation/Kling-4.0/Kling-4.0_Fal.md +115 -0
  549. package/docs/model-adaptation/Kling-4.0/Kling-4.0_KIE.md +61 -0
  550. package/docs/model-adaptation/Kling-4.0-Flash/Kling-4.0-Flash_Fal.md +55 -0
  551. package/docs/model-adaptation/Kling-4.0-Flash/Kling-4.0-Flash_KIE.md +33 -0
  552. package/docs/model-adaptation/LTX-2.3/LTX-2.3_Fal.md +121 -0
  553. package/docs/model-adaptation/Midjourney/Midjourney_APIMart.md +402 -396
  554. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_APIMart.md +237 -234
  555. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_Fal.md +112 -108
  556. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_KIE.md +118 -111
  557. package/docs/model-adaptation/MiniMax-H3/MiniMax-H3_/347/231/276/347/202/274.md +65 -0
  558. package/docs/model-adaptation/MiniMax-H3-Max/MiniMax-H3-Max_APIMart.md +78 -0
  559. package/docs/model-adaptation/MiniMax-H3-Max/MiniMax-H3-Max_Fal.md +62 -0
  560. package/docs/model-adaptation/MiniMax-Speech/MiniMax-Speech_/346/264/276/346/254/247/344/272/221.md +170 -170
  561. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_APIMart.md +89 -89
  562. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Fal.md +99 -99
  563. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_Grsai.md +82 -82
  564. package/docs/model-adaptation/Nano-Banana-2/Nano-Banana-2_KIE.md +72 -70
  565. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_APIMart.md +79 -79
  566. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_Grsai.md +65 -65
  567. package/docs/model-adaptation/Nano-Banana-2-Lite/Nano-Banana-2-Lite_KIE.md +64 -64
  568. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_APIMart.md +35 -0
  569. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_Fal.md +37 -0
  570. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_Grsai.md +35 -0
  571. package/docs/model-adaptation/Nano-Banana-2.1/Nano-Banana-2.1_KIE.md +36 -0
  572. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_APIMart.md +83 -83
  573. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Fal.md +89 -89
  574. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_Grsai.md +82 -82
  575. package/docs/model-adaptation/Nano-Banana-Pro/Nano-Banana-Pro_KIE.md +64 -64
  576. 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
  577. 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
  578. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_APIMart.md +117 -117
  579. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_Fal.md +85 -84
  580. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_KIE.md +103 -103
  581. package/docs/model-adaptation/Qwen-Image-3.0/Qwen-Image-3.0_/347/231/276/347/202/274.md +138 -138
  582. 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
  583. package/docs/model-adaptation/Qwen-MT-Flash/Qwen-MT-Flash_/347/231/276/347/202/274.md +68 -68
  584. package/docs/model-adaptation/Qwen-MT-Lite/Qwen-MT-Lite_/347/231/276/347/202/274.md +40 -40
  585. package/docs/model-adaptation/Qwen-MT-Plus/Qwen-MT-Plus_/347/231/276/347/202/274.md +40 -40
  586. package/docs/model-adaptation/Qwen3-ASR-Flash/Qwen3-ASR-Flash_/347/231/276/347/202/274.md +44 -44
  587. 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
  588. package/docs/model-adaptation/Qwen3-ASR-Flash-Filetrans/Qwen3-ASR-Flash-Filetrans_/347/231/276/347/202/274.md +45 -45
  589. package/docs/model-adaptation/Qwen3-ASR-Flash-Realtime/Qwen3-ASR-Flash-Realtime_/347/231/276/347/202/274.md +58 -58
  590. 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
  591. package/docs/model-adaptation/README.md +379 -338
  592. 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 -65
  593. 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
  594. 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
  595. 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
  596. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_APIMart.md +121 -121
  597. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_Fal.md +97 -97
  598. package/docs/model-adaptation/Seedance-2.0/Seedance-2.0_KIE.md +87 -86
  599. 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
  600. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_APIMart.md +89 -89
  601. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_Fal.md +95 -95
  602. package/docs/model-adaptation/Seedance-2.0-Fast/Seedance-2.0-Fast_KIE.md +79 -78
  603. 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
  604. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_APIMart.md +93 -89
  605. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_Fal.md +96 -96
  606. package/docs/model-adaptation/Seedance-2.0-Mini/Seedance-2.0-Mini_KIE.md +79 -78
  607. 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
  608. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_APIMart.md +217 -212
  609. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_Fal.md +98 -94
  610. package/docs/model-adaptation/Seedance-2.5/Seedance-2.5_KIE.md +94 -89
  611. 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
  612. package/docs/model-adaptation/Seedream-5.0-Flash/Seedream-5.0-Flash_APIMart.md +64 -0
  613. 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
  614. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_APIMart.md +113 -106
  615. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_Fal.md +91 -91
  616. package/docs/model-adaptation/Seedream-5.0-Lite/Seedream-5.0-Lite_KIE.md +89 -89
  617. 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
  618. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_APIMart.md +194 -194
  619. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_Fal.md +100 -100
  620. package/docs/model-adaptation/Seedream-5.0-Pro/Seedream-5.0-Pro_KIE.md +141 -141
  621. 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
  622. package/docs/model-adaptation/SenseVoiceSmall/SenseVoiceSmall_/347/241/205/345/237/272/346/265/201/345/212/250.md +73 -73
  623. package/docs/model-adaptation/TTS-/345/244/232/344/276/233/345/272/224/345/225/206-2026-09.md +115 -69
  624. package/docs/model-adaptation/TTS-/346/227/266/351/227/264/346/210/263-2026-10.md +36 -0
  625. 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
  626. 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
  627. package/docs/model-adaptation/Veo-3.1/Veo-3.1_APIMart.md +90 -0
  628. package/docs/model-adaptation/Wan-2.7-Image/Wan-2.7-Image_APIMart.md +81 -0
  629. package/docs/model-adaptation/Wan-3.0/Wan-3.0_APIMart.md +74 -0
  630. package/docs/model-adaptation/Wan-3.0/Wan-3.0_Fal.md +60 -0
  631. package/docs/model-adaptation/Wan-3.0/Wan-3.0_Grsai.md +35 -0
  632. package/docs/model-adaptation/Wan-3.0/Wan-3.0_KIE.md +38 -0
  633. package/docs/model-adaptation/Wan-3.0/Wan-3.0_/347/231/276/347/202/274.md +96 -0
  634. package/docs/model-adaptation/Wan-3.0-Prime/Wan-3.0-Prime_KIE.md +20 -0
  635. package/docs/model-adaptation/Whisper-Large-v3/Whisper-Large-v3_Groq.md +80 -80
  636. package/docs/model-adaptation/Whisper-Large-v3-Turbo/Whisper-Large-v3-Turbo_Groq.md +79 -79
  637. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_APIMart.md +88 -88
  638. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_Fal.md +103 -95
  639. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_KIE.md +71 -71
  640. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/347/231/276/347/202/274.md +122 -122
  641. package/docs/model-adaptation/Z-Image-Turbo/Z-Image-Turbo_/351/255/224/346/220/255.md +99 -97
  642. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/APIMart.md +240 -240
  643. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Fal.md +190 -172
  644. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Groq.md +136 -121
  645. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/Grsai.md +217 -217
  646. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206/KIE.md +159 -131
  647. 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
  648. 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
  649. 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
  650. 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
  651. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//347/231/276/347/202/274.md +339 -288
  652. 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
  653. package/docs/model-adaptation//344/276/233/345/272/224/345/225/206//351/255/224/346/220/255.md +205 -207
  654. package/docs/model-adaptation//346/226/207/346/241/243/351/207/207/351/233/206/346/211/213/345/206/214.md +339 -339
  655. 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
  656. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Electron.md +77 -77
  657. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/Tauri.md +81 -81
  658. package/docs//346/216/245/345/205/245/346/214/207/345/215/227/UXP.md +169 -169
  659. 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
  660. 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
  661. package/examples/form-renderer/README.md +17 -17
  662. package/examples/form-renderer/cli.ts +32 -32
  663. package/examples/form-renderer/index.ts +144 -144
  664. package/examples/form-renderer/package.json +16 -16
  665. package/examples/form-renderer/tsconfig.json +14 -14
  666. package/examples/llm-chat/README.md +38 -38
  667. package/examples/llm-chat/index.ts +100 -100
  668. package/examples/llm-chat/package.json +19 -19
  669. package/examples/llm-chat/tsconfig.json +14 -14
  670. package/examples/minimal-node/README.md +31 -31
  671. package/examples/minimal-node/index.ts +138 -138
  672. package/examples/minimal-node/package.json +17 -17
  673. package/examples/minimal-node/tsconfig.json +14 -14
  674. package/package.json +259 -258
  675. package/dist/catalog/grsai/gptImage25Sizes.d.ts +0 -1
  676. package/dist/catalog/grsai/gptImage25Sizes.js +0 -76
  677. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.d.ts +0 -2
  678. package/dist/catalog/kie/eleven-turbo-2.5-tts.model.js +0 -29
  679. package/dist/catalog/modelscope/qwen-image-edit-2509.model.d.ts +0 -5
  680. package/dist/catalog/modelscope/qwen-image.model.d.ts +0 -5
  681. package/dist/catalog/ppio/minimax-hailuo-2.3.model.d.ts +0 -7
  682. package/dist/catalog/ppio/minimax-hailuo-2.3.model.js +0 -114
  683. package/dist/catalog/ppio/wan-2.5-preview.model.d.ts +0 -7
  684. package/dist/catalog/ppio/wan-2.5-preview.model.js +0 -198
  685. package/dist/catalog/ppio/wan-2.6.model.d.ts +0 -7
  686. package/dist/catalog/ppio/wan-2.6.model.js +0 -206
  687. package/dist/catalog/ppio/wan-2.7.model.d.ts +0 -2
  688. package/dist/catalog/ppio/wan-2.7.model.js +0 -373
  689. package/docs/model-adaptation/Hailuo-2.3/Hailuo-2.3_/346/264/276/346/254/247/344/272/221.md +0 -70
  690. package/docs/model-adaptation/TeleSpeechASR/TeleSpeechASR_/347/241/205/345/237/272/346/265/201/345/212/250.md +0 -76
  691. package/docs/model-adaptation/Wan-2.5-Preview/Wan-2.5-Preview_/346/264/276/346/254/247/344/272/221.md +0 -82
  692. package/docs/model-adaptation/Wan-2.6/Wan-2.6_/346/264/276/346/254/247/344/272/221.md +0 -84
  693. package/docs/model-adaptation/Wan-2.7/Wan-2.7_/346/264/276/346/254/247/344/272/221.md +0 -122
  694. /package/dist/upload/{fal-legacy.d.ts → fal-host-fetch.d.ts} +0 -0
@@ -16,7 +16,7 @@ function decodeChunk(encoded) {
16
16
  throw new AiRuntimeError('invalid_response', 'Volcengine speech returned invalid base64 audio');
17
17
  }
18
18
  }
19
- function parseFrame(payload, audio, usage) {
19
+ function parseFrame(payload, audio, usage, items) {
20
20
  if (!payload)
21
21
  return;
22
22
  let value;
@@ -33,8 +33,19 @@ function parseFrame(payload, audio, usage) {
33
33
  audio.push(decodeChunk(value.data));
34
34
  if (isJsonObject(value.usage) && typeof value.usage.text_words === 'number')
35
35
  usage.textWords = value.usage.text_words;
36
+ if (isJsonObject(value.sentence) && Array.isArray(value.sentence.words)) {
37
+ for (const word of value.sentence.words) {
38
+ if (!isJsonObject(word) || typeof word.word !== 'string' || typeof word.startTime !== 'number' || typeof word.endTime !== 'number'
39
+ || !Number.isFinite(word.startTime) || !Number.isFinite(word.endTime) || word.startTime < 0 || word.endTime < word.startTime) {
40
+ throw new AiRuntimeError('invalid_response', 'Volcengine speech returned invalid subtitle timing');
41
+ }
42
+ items.push({ text: word.word, startMs: word.startTime * 1000, endMs: word.endTime * 1000,
43
+ ...(typeof word.confidence === 'number' && word.confidence >= 0 && word.confidence <= 1 ? { confidence: word.confidence } : {}),
44
+ });
45
+ }
46
+ }
36
47
  }
37
- function consumeFrames(buffer, audio, usage) {
48
+ function consumeFrames(buffer, audio, usage, items) {
38
49
  let start = -1;
39
50
  let depth = 0;
40
51
  let quoted = false;
@@ -68,7 +79,7 @@ function consumeFrames(buffer, audio, usage) {
68
79
  else if (character === '}') {
69
80
  depth -= 1;
70
81
  if (depth === 0) {
71
- parseFrame(buffer.slice(start, index + 1), audio, usage);
82
+ parseFrame(buffer.slice(start, index + 1), audio, usage, items);
72
83
  start = -1;
73
84
  consumed = index + 1;
74
85
  }
@@ -108,22 +119,27 @@ export async function execute(input) {
108
119
  const decoder = createUtf8StreamDecoder();
109
120
  const audio = [];
110
121
  const usage = {};
122
+ const items = [];
111
123
  let pending = '';
112
124
  const cancelReader = () => { void reader.cancel(input.signal?.reason).catch(() => undefined); };
113
125
  input.signal?.addEventListener('abort', cancelReader, { once: true });
114
126
  try {
115
- while (true) {
127
+ for (;;) {
116
128
  input.signal?.throwIfAborted();
117
129
  const { done, value } = await reader.read();
118
130
  input.signal?.throwIfAborted();
119
131
  pending += done ? decoder.decode() : decoder.decode(value, { stream: true });
120
- pending = consumeFrames(pending, audio, usage);
132
+ pending = consumeFrames(pending, audio, usage, items);
121
133
  if (done)
122
134
  break;
123
135
  }
124
136
  if (pending.trim())
125
137
  throw new AiRuntimeError('invalid_response', 'Volcengine speech returned incomplete JSON frame');
126
138
  }
139
+ catch (error) {
140
+ await reader.cancel(error).catch(() => undefined);
141
+ throw error;
142
+ }
127
143
  finally {
128
144
  input.signal?.removeEventListener('abort', cancelReader);
129
145
  reader.releaseLock();
@@ -139,6 +155,7 @@ export async function execute(input) {
139
155
  status: 'completed',
140
156
  url: audioBytesToDataUri(joined, 'mp3'),
141
157
  metadata: { byteLength: total, ...(usage.textWords === undefined ? {} : { textWords: usage.textWords }),
158
+ ...(items.length ? { outputTimings: [{ outputIndex: 0, timings: { granularity: 'char', items } }] } : {}),
142
159
  ...(resourceId === 'seed-icl-2.0' && typeof input.body.req_params.speaker === 'string'
143
160
  ? { activatedVoiceId: input.body.req_params.speaker } : {}),
144
161
  },
@@ -14,9 +14,10 @@ function decodeTask(value) {
14
14
  throw new Error('prefix');
15
15
  const data = JSON.parse(decodeURIComponent(value.slice(TASK_PREFIX.length)));
16
16
  if (!isJsonObject(data) || typeof data.speaker !== 'string' || !data.speaker.trim()
17
- || typeof data.name !== 'string' || !data.name.trim() || typeof data.postpaid !== 'boolean')
17
+ || typeof data.name !== 'string' || !data.name.trim() || typeof data.postpaid !== 'boolean'
18
+ || typeof data.submission !== 'string' || !data.submission.trim())
18
19
  throw new Error('identity');
19
- return { speaker: data.speaker, name: data.name, postpaid: data.postpaid };
20
+ return { speaker: data.speaker, name: data.name, postpaid: data.postpaid, submission: data.submission };
20
21
  }
21
22
  catch {
22
23
  throw new AiRuntimeError('invalid_task_id', '无效的音色训练任务');
@@ -34,11 +35,18 @@ async function request(input, route, body) {
34
35
  headers: { 'Content-Type': 'application/json', 'X-Api-Key': input.apiKey, 'X-Api-Request-Id': volcengineRequestId(input.requestId, undefined) },
35
36
  body: JSON.stringify(body), signal: input.signal,
36
37
  }, { transport: input.runtime.transport, retryPreconnectOnce: false });
37
- const payload = await response.json();
38
+ const text = await response.text();
39
+ let payload;
40
+ try {
41
+ payload = JSON.parse(text);
42
+ }
43
+ catch {
44
+ throw new AiRuntimeError(response.ok ? 'invalid_json' : 'provider_http_error', `Volcengine Speech HTTP ${response.status}: 音色训练返回了非 JSON 响应`, { status: response.status });
45
+ }
38
46
  if (!isJsonObject(payload))
39
47
  throw new AiRuntimeError('invalid_response', '音色训练返回了无效响应');
40
48
  if (!response.ok || (payload.code !== undefined && payload.code !== 0)) {
41
- throw new AiRuntimeError('provider_task_failed', typeof payload.message === 'string' ? payload.message : `音色训练请求失败(HTTP ${response.status})`);
49
+ throw new AiRuntimeError('provider_task_failed', typeof payload.message === 'string' ? payload.message : `音色训练请求失败(HTTP ${response.status})`, { status: response.status });
42
50
  }
43
51
  return payload;
44
52
  }
@@ -82,6 +90,7 @@ export async function executeVoiceClone(input) {
82
90
  const identity = {
83
91
  speaker: existing || custom || `henji${volcengineRequestId(input.requestId, undefined).replaceAll('-', '')}`,
84
92
  name: body.voice_name.trim(), postpaid: !existing,
93
+ submission: volcengineRequestId(input.requestId, undefined),
85
94
  };
86
95
  const audio = parseDataUri(body.clone_audio) ?? await input.runtime.media.read(body.clone_audio);
87
96
  if (!audio.bytes.length || audio.bytes.length > MAX_AUDIO_BYTES)
@@ -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';