@atomic-chat/core 0.13.2 → 0.17.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 (377) hide show
  1. package/README.md +1 -1
  2. package/dist/backend/advisor/advisor.d.ts +8 -7
  3. package/dist/backend/advisor/advisor.js +17 -25
  4. package/dist/backend/advisor/advisor.js.map +1 -1
  5. package/dist/backend/catalog/index.d.ts +4 -2
  6. package/dist/backend/catalog/index.js +4 -2
  7. package/dist/backend/catalog/index.js.map +1 -1
  8. package/dist/backend/catalog/manifest.d.ts +5 -51
  9. package/dist/backend/catalog/manifest.js +5 -93
  10. package/dist/backend/catalog/manifest.js.map +1 -1
  11. package/dist/backend/catalog/upstream-releases-baseline.d.ts +2 -0
  12. package/dist/backend/catalog/upstream-releases-baseline.js +12 -0
  13. package/dist/backend/catalog/upstream-releases-baseline.js.map +1 -0
  14. package/dist/backend/catalog/upstream-releases-baseline.json +101 -0
  15. package/dist/backend/catalog/upstream-releases-catalog.d.ts +54 -0
  16. package/dist/backend/catalog/upstream-releases-catalog.js +148 -0
  17. package/dist/backend/catalog/upstream-releases-catalog.js.map +1 -0
  18. package/dist/backend/catalog/upstream-releases.d.ts +75 -0
  19. package/dist/backend/catalog/upstream-releases.js +155 -0
  20. package/dist/backend/catalog/upstream-releases.js.map +1 -0
  21. package/dist/backend/install/service.d.ts +7 -4
  22. package/dist/backend/install/service.js +4 -4
  23. package/dist/backend/install/service.js.map +1 -1
  24. package/dist/cli/commands/serve.js +10 -28
  25. package/dist/cli/commands/serve.js.map +1 -1
  26. package/dist/cli/main.d.ts +1 -1
  27. package/dist/cli/main.js +0 -1
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/client/control-client.d.ts +7 -19
  30. package/dist/client/control-client.js +9 -29
  31. package/dist/client/control-client.js.map +1 -1
  32. package/dist/cloud/registry.d.ts +14 -1
  33. package/dist/cloud/registry.js +73 -2
  34. package/dist/cloud/registry.js.map +1 -1
  35. package/dist/config/paths.d.ts +4 -3
  36. package/dist/config/paths.js +15 -14
  37. package/dist/config/paths.js.map +1 -1
  38. package/dist/contracts/diffusion.d.ts +45 -18
  39. package/dist/contracts/diffusion.js +1 -1
  40. package/dist/contracts/diffusion.js.map +1 -1
  41. package/dist/contracts/engines.d.ts +1 -1
  42. package/dist/contracts/engines.js +2 -0
  43. package/dist/contracts/engines.js.map +1 -1
  44. package/dist/contracts/errors.d.ts +1 -3
  45. package/dist/contracts/errors.js +16 -0
  46. package/dist/contracts/errors.js.map +1 -1
  47. package/dist/contracts/events.d.ts +11 -6
  48. package/dist/contracts/index.d.ts +1 -1
  49. package/dist/contracts/index.js +1 -1
  50. package/dist/contracts/index.js.map +1 -1
  51. package/dist/contracts/media.d.ts +186 -0
  52. package/dist/contracts/media.js +55 -0
  53. package/dist/contracts/media.js.map +1 -0
  54. package/dist/contracts/session.d.ts +10 -1
  55. package/dist/contracts/session.js +10 -0
  56. package/dist/contracts/session.js.map +1 -1
  57. package/dist/contracts/settings.d.ts +36 -1
  58. package/dist/contracts/settings.js.map +1 -1
  59. package/dist/core/atomic-core.d.ts +7 -5
  60. package/dist/core/atomic-core.js +1 -0
  61. package/dist/core/atomic-core.js.map +1 -1
  62. package/dist/core/create.js +48 -58
  63. package/dist/core/create.js.map +1 -1
  64. package/dist/core/managed-engines.js +2 -0
  65. package/dist/core/managed-engines.js.map +1 -1
  66. package/dist/core/prism.d.ts +23 -6
  67. package/dist/core/prism.js +45 -0
  68. package/dist/core/prism.js.map +1 -1
  69. package/dist/core/public-server.js +3 -2
  70. package/dist/core/public-server.js.map +1 -1
  71. package/dist/core/types.d.ts +11 -0
  72. package/dist/core/types.js.map +1 -1
  73. package/dist/decision/process.d.ts +4 -0
  74. package/dist/decision/process.js +10 -1
  75. package/dist/decision/process.js.map +1 -1
  76. package/dist/diffusion/args.d.ts +3 -2
  77. package/dist/diffusion/args.js +21 -4
  78. package/dist/diffusion/args.js.map +1 -1
  79. package/dist/diffusion/compat.d.ts +1 -1
  80. package/dist/diffusion/compat.js +6 -2
  81. package/dist/diffusion/compat.js.map +1 -1
  82. package/dist/diffusion/gallery.d.ts +24 -3
  83. package/dist/diffusion/gallery.js +151 -21
  84. package/dist/diffusion/gallery.js.map +1 -1
  85. package/dist/diffusion/index.d.ts +3 -0
  86. package/dist/diffusion/index.js +3 -0
  87. package/dist/diffusion/index.js.map +1 -1
  88. package/dist/diffusion/jobs.d.ts +6 -1
  89. package/dist/diffusion/jobs.js +10 -1
  90. package/dist/diffusion/jobs.js.map +1 -1
  91. package/dist/diffusion/media-header.d.ts +22 -0
  92. package/dist/diffusion/media-header.js +149 -0
  93. package/dist/diffusion/media-header.js.map +1 -0
  94. package/dist/diffusion/parse.d.ts +3 -1
  95. package/dist/diffusion/parse.js +36 -0
  96. package/dist/diffusion/parse.js.map +1 -1
  97. package/dist/diffusion/recipe.d.ts +10 -1
  98. package/dist/diffusion/recipe.js +85 -21
  99. package/dist/diffusion/recipe.js.map +1 -1
  100. package/dist/diffusion/remote-job.d.ts +76 -0
  101. package/dist/diffusion/remote-job.js +643 -0
  102. package/dist/diffusion/remote-job.js.map +1 -0
  103. package/dist/diffusion/remote-store.d.ts +38 -0
  104. package/dist/diffusion/remote-store.js +91 -0
  105. package/dist/diffusion/remote-store.js.map +1 -0
  106. package/dist/diffusion/service.d.ts +9 -1
  107. package/dist/diffusion/service.js +49 -9
  108. package/dist/diffusion/service.js.map +1 -1
  109. package/dist/diffusion/state.d.ts +13 -1
  110. package/dist/diffusion/state.js +8 -0
  111. package/dist/diffusion/state.js.map +1 -1
  112. package/dist/diffusion/tracker.d.ts +6 -0
  113. package/dist/diffusion/tracker.js +11 -0
  114. package/dist/diffusion/tracker.js.map +1 -1
  115. package/dist/diffusion/validate.js +2 -2
  116. package/dist/diffusion/validate.js.map +1 -1
  117. package/dist/diffusion/video-gallery.d.ts +11 -4
  118. package/dist/diffusion/video-gallery.js +62 -25
  119. package/dist/diffusion/video-gallery.js.map +1 -1
  120. package/dist/diffusion/video-history.js +4 -1
  121. package/dist/diffusion/video-history.js.map +1 -1
  122. package/dist/diffusion/video-recipe.js +58 -25
  123. package/dist/diffusion/video-recipe.js.map +1 -1
  124. package/dist/diffusion/wiring.d.ts +3 -0
  125. package/dist/diffusion/wiring.js +1 -0
  126. package/dist/diffusion/wiring.js.map +1 -1
  127. package/dist/diffusion/workflow.d.ts +8 -2
  128. package/dist/diffusion/workflow.js +13 -5
  129. package/dist/diffusion/workflow.js.map +1 -1
  130. package/dist/downloads/downloader.d.ts +6 -1
  131. package/dist/downloads/downloader.js +12 -1
  132. package/dist/downloads/downloader.js.map +1 -1
  133. package/dist/embedding/process.d.ts +4 -0
  134. package/dist/embedding/process.js +10 -1
  135. package/dist/embedding/process.js.map +1 -1
  136. package/dist/media/adapters/a1111.d.ts +32 -0
  137. package/dist/media/adapters/a1111.js +207 -0
  138. package/dist/media/adapters/a1111.js.map +1 -0
  139. package/dist/media/adapters/aimlapi-videos.d.ts +34 -0
  140. package/dist/media/adapters/aimlapi-videos.js +172 -0
  141. package/dist/media/adapters/aimlapi-videos.js.map +1 -0
  142. package/dist/media/adapters/dashscope-image.d.ts +26 -0
  143. package/dist/media/adapters/dashscope-image.js +160 -0
  144. package/dist/media/adapters/dashscope-image.js.map +1 -0
  145. package/dist/media/adapters/dashscope-video.d.ts +47 -0
  146. package/dist/media/adapters/dashscope-video.js +251 -0
  147. package/dist/media/adapters/dashscope-video.js.map +1 -0
  148. package/dist/media/adapters/gemini-image.d.ts +27 -0
  149. package/dist/media/adapters/gemini-image.js +181 -0
  150. package/dist/media/adapters/gemini-image.js.map +1 -0
  151. package/dist/media/adapters/gemini-veo.d.ts +39 -0
  152. package/dist/media/adapters/gemini-veo.js +196 -0
  153. package/dist/media/adapters/gemini-veo.js.map +1 -0
  154. package/dist/media/adapters/hf-images.d.ts +85 -0
  155. package/dist/media/adapters/hf-images.js +439 -0
  156. package/dist/media/adapters/hf-images.js.map +1 -0
  157. package/dist/media/adapters/hf-videos.d.ts +44 -0
  158. package/dist/media/adapters/hf-videos.js +265 -0
  159. package/dist/media/adapters/hf-videos.js.map +1 -0
  160. package/dist/media/adapters/minimax-image.d.ts +26 -0
  161. package/dist/media/adapters/minimax-image.js +111 -0
  162. package/dist/media/adapters/minimax-image.js.map +1 -0
  163. package/dist/media/adapters/minimax-video-v2.d.ts +34 -0
  164. package/dist/media/adapters/minimax-video-v2.js +191 -0
  165. package/dist/media/adapters/minimax-video-v2.js.map +1 -0
  166. package/dist/media/adapters/minimax-video.d.ts +28 -0
  167. package/dist/media/adapters/minimax-video.js +155 -0
  168. package/dist/media/adapters/minimax-video.js.map +1 -0
  169. package/dist/media/adapters/mistral-agent-image.d.ts +33 -0
  170. package/dist/media/adapters/mistral-agent-image.js +108 -0
  171. package/dist/media/adapters/mistral-agent-image.js.map +1 -0
  172. package/dist/media/adapters/nvidia-genai.d.ts +28 -0
  173. package/dist/media/adapters/nvidia-genai.js +182 -0
  174. package/dist/media/adapters/nvidia-genai.js.map +1 -0
  175. package/dist/media/adapters/openai-images.d.ts +23 -0
  176. package/dist/media/adapters/openai-images.js +164 -0
  177. package/dist/media/adapters/openai-images.js.map +1 -0
  178. package/dist/media/adapters/openai-videos.d.ts +34 -0
  179. package/dist/media/adapters/openai-videos.js +175 -0
  180. package/dist/media/adapters/openai-videos.js.map +1 -0
  181. package/dist/media/adapters/openrouter-images.d.ts +25 -0
  182. package/dist/media/adapters/openrouter-images.js +161 -0
  183. package/dist/media/adapters/openrouter-images.js.map +1 -0
  184. package/dist/media/adapters/openrouter-videos.d.ts +43 -0
  185. package/dist/media/adapters/openrouter-videos.js +208 -0
  186. package/dist/media/adapters/openrouter-videos.js.map +1 -0
  187. package/dist/media/adapters/registry.d.ts +7 -0
  188. package/dist/media/adapters/registry.js +45 -0
  189. package/dist/media/adapters/registry.js.map +1 -0
  190. package/dist/media/adapters/types.d.ts +133 -0
  191. package/dist/media/adapters/types.js +15 -0
  192. package/dist/media/adapters/types.js.map +1 -0
  193. package/dist/media/adapters/xai-images.d.ts +19 -0
  194. package/dist/media/adapters/xai-images.js +83 -0
  195. package/dist/media/adapters/xai-images.js.map +1 -0
  196. package/dist/media/adapters/xai-videos.d.ts +29 -0
  197. package/dist/media/adapters/xai-videos.js +148 -0
  198. package/dist/media/adapters/xai-videos.js.map +1 -0
  199. package/dist/media/catalog-baseline.d.ts +2 -0
  200. package/dist/media/catalog-baseline.js +10 -0
  201. package/dist/media/catalog-baseline.js.map +1 -0
  202. package/dist/media/catalog-baseline.json +1819 -0
  203. package/dist/media/catalog-service.d.ts +42 -0
  204. package/dist/media/catalog-service.js +111 -0
  205. package/dist/media/catalog-service.js.map +1 -0
  206. package/dist/media/catalog.d.ts +50 -0
  207. package/dist/media/catalog.js +315 -0
  208. package/dist/media/catalog.js.map +1 -0
  209. package/dist/media/http.d.ts +125 -0
  210. package/dist/media/http.js +308 -0
  211. package/dist/media/http.js.map +1 -0
  212. package/dist/media/index.d.ts +14 -0
  213. package/dist/media/index.js +15 -0
  214. package/dist/media/index.js.map +1 -0
  215. package/dist/media/mask.d.ts +12 -0
  216. package/dist/media/mask.js +57 -0
  217. package/dist/media/mask.js.map +1 -0
  218. package/dist/media/service.d.ts +42 -0
  219. package/dist/media/service.js +144 -0
  220. package/dist/media/service.js.map +1 -0
  221. package/dist/models/compatibility/inspect.d.ts +11 -2
  222. package/dist/models/compatibility/inspect.js +44 -13
  223. package/dist/models/compatibility/inspect.js.map +1 -1
  224. package/dist/models/compatibility/service.d.ts +3 -0
  225. package/dist/models/compatibility/service.js +1 -0
  226. package/dist/models/compatibility/service.js.map +1 -1
  227. package/dist/models/gguf/tensors.d.ts +1 -0
  228. package/dist/models/gguf/tensors.js +4 -1
  229. package/dist/models/gguf/tensors.js.map +1 -1
  230. package/dist/models/hf.d.ts +3 -16
  231. package/dist/models/hf.js +4 -42
  232. package/dist/models/hf.js.map +1 -1
  233. package/dist/router/resolve.d.ts +15 -4
  234. package/dist/router/resolve.js +25 -3
  235. package/dist/router/resolve.js.map +1 -1
  236. package/dist/runtime/environment/linux-provisioner.js +7 -67
  237. package/dist/runtime/environment/linux-provisioner.js.map +1 -1
  238. package/dist/runtime/environment/runtime-removal-plan.d.ts +19 -0
  239. package/dist/runtime/environment/runtime-removal-plan.js +74 -0
  240. package/dist/runtime/environment/runtime-removal-plan.js.map +1 -0
  241. package/dist/runtime/environment/windows-provisioner.js +20 -4
  242. package/dist/runtime/environment/windows-provisioner.js.map +1 -1
  243. package/dist/runtime/managed-engines/spec.d.ts +2 -2
  244. package/dist/runtime/managed-engines/spec.js +6 -0
  245. package/dist/runtime/managed-engines/spec.js.map +1 -1
  246. package/dist/runtime/managed-models/compatibility.d.ts +10 -0
  247. package/dist/runtime/managed-models/compatibility.js +18 -0
  248. package/dist/runtime/managed-models/compatibility.js.map +1 -1
  249. package/dist/runtime/managed-text/adapter.d.ts +17 -0
  250. package/dist/runtime/managed-text/adapter.js.map +1 -1
  251. package/dist/runtime/managed-text/lifecycle.d.ts +8 -0
  252. package/dist/runtime/managed-text/lifecycle.js +38 -1
  253. package/dist/runtime/managed-text/lifecycle.js.map +1 -1
  254. package/dist/runtime/managed-text/readiness.d.ts +21 -1
  255. package/dist/runtime/managed-text/readiness.js +64 -0
  256. package/dist/runtime/managed-text/readiness.js.map +1 -1
  257. package/dist/runtime/managed-text/request-rules.d.ts +9 -7
  258. package/dist/runtime/managed-text/request-rules.js +58 -2
  259. package/dist/runtime/managed-text/request-rules.js.map +1 -1
  260. package/dist/runtime/managed-text/setting-values.d.ts +9 -0
  261. package/dist/runtime/managed-text/setting-values.js +44 -0
  262. package/dist/runtime/managed-text/setting-values.js.map +1 -0
  263. package/dist/runtime/sglang/adapter.d.ts +50 -0
  264. package/dist/runtime/sglang/adapter.js +393 -0
  265. package/dist/runtime/sglang/adapter.js.map +1 -0
  266. package/dist/runtime/sglang/engine.d.ts +16 -0
  267. package/dist/runtime/sglang/engine.js +38 -0
  268. package/dist/runtime/sglang/engine.js.map +1 -0
  269. package/dist/runtime/sglang/index.d.ts +11 -0
  270. package/dist/runtime/sglang/index.js +12 -0
  271. package/dist/runtime/sglang/index.js.map +1 -0
  272. package/dist/runtime/sglang/memory.d.ts +64 -0
  273. package/dist/runtime/sglang/memory.js +90 -0
  274. package/dist/runtime/sglang/memory.js.map +1 -0
  275. package/dist/runtime/sglang/settings.d.ts +49 -0
  276. package/dist/runtime/sglang/settings.js +118 -0
  277. package/dist/runtime/sglang/settings.js.map +1 -0
  278. package/dist/runtime/shared/external-sessions.js +1 -0
  279. package/dist/runtime/shared/external-sessions.js.map +1 -1
  280. package/dist/runtime/shared/ports.d.ts +10 -0
  281. package/dist/runtime/shared/ports.js +30 -0
  282. package/dist/runtime/shared/ports.js.map +1 -1
  283. package/dist/runtime/tensorrt-llm/adapter.d.ts +1 -4
  284. package/dist/runtime/tensorrt-llm/adapter.js +28 -11
  285. package/dist/runtime/tensorrt-llm/adapter.js.map +1 -1
  286. package/dist/runtime/tensorrt-llm/check.js +1 -0
  287. package/dist/runtime/tensorrt-llm/check.js.map +1 -1
  288. package/dist/runtime/tensorrt-llm/compatibility.d.ts +30 -6
  289. package/dist/runtime/tensorrt-llm/compatibility.js +41 -9
  290. package/dist/runtime/tensorrt-llm/compatibility.js.map +1 -1
  291. package/dist/runtime/tensorrt-llm/cuda-graphs.d.ts +32 -0
  292. package/dist/runtime/tensorrt-llm/cuda-graphs.js +33 -0
  293. package/dist/runtime/tensorrt-llm/cuda-graphs.js.map +1 -0
  294. package/dist/runtime/tensorrt-llm/engine.js +11 -5
  295. package/dist/runtime/tensorrt-llm/engine.js.map +1 -1
  296. package/dist/runtime/tensorrt-llm/kv-cache.d.ts +16 -0
  297. package/dist/runtime/tensorrt-llm/kv-cache.js +21 -1
  298. package/dist/runtime/tensorrt-llm/kv-cache.js.map +1 -1
  299. package/dist/runtime/vllm/adapter.js +2 -47
  300. package/dist/runtime/vllm/adapter.js.map +1 -1
  301. package/dist/runtime/vllm/memory.js +3 -16
  302. package/dist/runtime/vllm/memory.js.map +1 -1
  303. package/dist/runtime/vllm/settings.d.ts +7 -0
  304. package/dist/runtime/vllm/settings.js +2 -30
  305. package/dist/runtime/vllm/settings.js.map +1 -1
  306. package/dist/server/control/router.js +5 -4
  307. package/dist/server/control/router.js.map +1 -1
  308. package/dist/server/control/routes/media.d.ts +9 -0
  309. package/dist/server/control/routes/media.js +24 -0
  310. package/dist/server/control/routes/media.js.map +1 -0
  311. package/dist/server/control/routes/model-compatibility.d.ts +9 -0
  312. package/dist/server/control/routes/model-compatibility.js +31 -0
  313. package/dist/server/control/routes/model-compatibility.js.map +1 -0
  314. package/dist/server/control/types.d.ts +18 -20
  315. package/dist/server/http.js +15 -2
  316. package/dist/server/http.js.map +1 -1
  317. package/dist/server/public/gates.d.ts +6 -1
  318. package/dist/server/public/gates.js +7 -3
  319. package/dist/server/public/gates.js.map +1 -1
  320. package/dist/server/public/images-params.js +18 -1
  321. package/dist/server/public/images-params.js.map +1 -1
  322. package/dist/server/public/images.d.ts +11 -2
  323. package/dist/server/public/images.js +73 -9
  324. package/dist/server/public/images.js.map +1 -1
  325. package/dist/server/public/index.d.ts +1 -0
  326. package/dist/server/public/index.js +16 -7
  327. package/dist/server/public/index.js.map +1 -1
  328. package/dist/server/public/listing.js +1 -0
  329. package/dist/server/public/listing.js.map +1 -1
  330. package/dist/server/public/remote-media.d.ts +51 -0
  331. package/dist/server/public/remote-media.js +225 -0
  332. package/dist/server/public/remote-media.js.map +1 -0
  333. package/dist/server/public/responses.js +4 -2
  334. package/dist/server/public/responses.js.map +1 -1
  335. package/dist/server/public/static-assets.generated.js +1 -1
  336. package/dist/server/public/static-assets.generated.js.map +1 -1
  337. package/dist/server/public/trace.js +2 -0
  338. package/dist/server/public/trace.js.map +1 -1
  339. package/dist/server/public/types.d.ts +12 -1
  340. package/dist/server/public/videos-params.js +13 -3
  341. package/dist/server/public/videos-params.js.map +1 -1
  342. package/dist/server/public/videos.d.ts +1 -0
  343. package/dist/server/public/videos.js +21 -3
  344. package/dist/server/public/videos.js.map +1 -1
  345. package/dist/settings/schema/llamacpp-upstream.json +9 -0
  346. package/dist/settings/schema/sglang.json +251 -0
  347. package/dist/settings/schema.js +27 -1
  348. package/dist/settings/schema.js.map +1 -1
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/package.json +2 -6
  352. package/src/settings/schema/llamacpp-upstream.json +9 -0
  353. package/src/settings/schema/sglang.json +251 -0
  354. package/dist/backend/catalog/bundled-manifest-baseline.d.ts +0 -2
  355. package/dist/backend/catalog/bundled-manifest-baseline.js +0 -65
  356. package/dist/backend/catalog/bundled-manifest-baseline.js.map +0 -1
  357. package/dist/contracts/model-setup.d.ts +0 -115
  358. package/dist/contracts/model-setup.js +0 -33
  359. package/dist/contracts/model-setup.js.map +0 -1
  360. package/dist/core/model-setup/index.d.ts +0 -4
  361. package/dist/core/model-setup/index.js +0 -5
  362. package/dist/core/model-setup/index.js.map +0 -1
  363. package/dist/core/model-setup/plan.d.ts +0 -56
  364. package/dist/core/model-setup/plan.js +0 -158
  365. package/dist/core/model-setup/plan.js.map +0 -1
  366. package/dist/core/model-setup/service.d.ts +0 -92
  367. package/dist/core/model-setup/service.js +0 -329
  368. package/dist/core/model-setup/service.js.map +0 -1
  369. package/dist/core/model-setup/store.d.ts +0 -29
  370. package/dist/core/model-setup/store.js +0 -116
  371. package/dist/core/model-setup/store.js.map +0 -1
  372. package/dist/core/model-setup/wiring.d.ts +0 -59
  373. package/dist/core/model-setup/wiring.js +0 -132
  374. package/dist/core/model-setup/wiring.js.map +0 -1
  375. package/dist/server/control/routes/model-setups.d.ts +0 -11
  376. package/dist/server/control/routes/model-setups.js +0 -55
  377. package/dist/server/control/routes/model-setups.js.map +0 -1
@@ -0,0 +1,439 @@
1
+ /**
2
+ * `hf-images`: Hugging Face Inference Providers through the HF router. The registered base is
3
+ * `https://router.huggingface.co/v1`; the router root is that base without its trailing `/v1`, and
4
+ * every request below goes to a path under it. Each catalog model names the provider that serves it
5
+ * in `options.hf_provider`:
6
+ *
7
+ * - `hf-inference` (also a model without the option): `POST {router}/hf-inference/models/{model.id}`
8
+ * with `{inputs: prompt, parameters}` answers the image bytes, one image per call. `transform`
9
+ * sends the source as `inputs` (base64) and the prompt in `parameters.prompt`.
10
+ * - `fal-ai`: fal's queue through the router, the way huggingface.js
11
+ * (`packages/inference/src/providers/fal-ai.ts`) does it: submit to
12
+ * `{router}/fal-ai/{options.provider_model}?_subdomain=queue`, poll the request's `/status`, then
13
+ * read the result (`{images: [{url}]}`). The images are on fal's CDN and are downloaded bare.
14
+ *
15
+ * The live listing is the Hub's public model search on `https://huggingface.co` — a different host,
16
+ * asked only when the registered base is the real router, and without the key or custom headers.
17
+ */
18
+ import { callProvider, decodeBase64Image, downloadResult, GENERATE_TIMEOUT_MS, MAX_IMAGE_BYTES, networkError, parseWxH, pollUntil, providerHeaders, remoteError, remoteHttpError, sniffImageMime, } from '../http.js';
19
+ const asObject = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : {};
20
+ const text = (value) => typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;
21
+ /** The only host whose registration may ask the Hub for a listing. */
22
+ const ROUTER_HOST = 'router.huggingface.co';
23
+ /** The Hub's public model search: text-to-image models with their provider mapping. */
24
+ const HUB_LISTING_URL = 'https://huggingface.co/api/models?inference_provider=all&pipeline_tag=text-to-image&sort=likes&limit=50&expand%5B%5D=inferenceProviderMapping';
25
+ /** The providers this adapter speaks, in the order a listed model prefers them. */
26
+ const HF_PROVIDERS = ['fal-ai', 'hf-inference'];
27
+ /** The router root: the registered base without trailing slashes and its `/v1`. */
28
+ function routerRoot(ctx) {
29
+ return ctx.baseUrl.replace(/\/+$/, '').replace(/\/v1$/i, '');
30
+ }
31
+ /** A context for a request that must not stop with the job (a best-effort cancel after it fired). */
32
+ function detached(ctx) {
33
+ return { ...ctx, signal: new AbortController().signal };
34
+ }
35
+ /** How {@link falWait} polls: 1 s first, growing to 5 s, for at most 15 minutes. */
36
+ export const FAL_POLL = { intervalMs: 1000, maxIntervalMs: 5000, timeoutMs: 15 * 60_000 };
37
+ /** fal's hosts (`queue.fal.run`); a URL anywhere else is not one of fal's queue URLs. */
38
+ const FAL_HOST = /(^|\.)fal\.run$/i;
39
+ /** Endpoint namespaces whose app id is three segments (`workflows/<owner>/<app>`), as fal's client parses them. */
40
+ const FAL_NAMESPACES = new Set(['workflows', 'comfy']);
41
+ /** A fal model id: path segments of plain characters. */
42
+ const FAL_MODEL_ID = /^[\w.-]+(\/[\w.-]+)+$/;
43
+ /** The path of one of fal's queue URLs (also one already through this router), or `undefined`. */
44
+ function falPath(ctx, url) {
45
+ if (!url)
46
+ return undefined;
47
+ let parsed;
48
+ try {
49
+ parsed = new URL(url);
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ if (parsed.protocol === 'https:' && FAL_HOST.test(parsed.hostname))
55
+ return parsed.pathname;
56
+ const viaRouter = `${routerRoot(ctx)}/fal-ai/`;
57
+ const plain = `${parsed.origin}${parsed.pathname}`;
58
+ return plain.startsWith(viaRouter) ? plain.slice(viaRouter.length - 1) : undefined;
59
+ }
60
+ /**
61
+ * The request's path in fal's queue (`/fal-ai/flux/requests/{id}`): from fal's result URL as
62
+ * huggingface.js takes it, else from its status URL, else built the way fal's own client builds it
63
+ * (the first two segments of the model id, three for a namespaced one).
64
+ */
65
+ function requestPath(ctx, handle) {
66
+ const result = falPath(ctx, handle.responseUrl);
67
+ if (result)
68
+ return result.replace(/\/+$/, '');
69
+ const status = falPath(ctx, handle.statusUrl)?.replace(/\/+$/, '');
70
+ if (status?.endsWith('/status'))
71
+ return status.slice(0, -'/status'.length);
72
+ const parts = (handle.providerModel ?? '').split('/').filter((part) => part !== '');
73
+ if (parts.length >= 2 && handle.requestId) {
74
+ const app = parts.slice(0, FAL_NAMESPACES.has(parts[0]) ? 3 : 2);
75
+ return `/${app.join('/')}/requests/${encodeURIComponent(handle.requestId)}`;
76
+ }
77
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} gave no way to follow the request.`, handle.requestId);
78
+ }
79
+ /** A fal queue path through the router: `{router}/fal-ai{path}?_subdomain=queue`. */
80
+ function queueUrl(ctx, path) {
81
+ return `${routerRoot(ctx)}/fal-ai${path}?_subdomain=queue`;
82
+ }
83
+ /** A failed fal request as the closest `REMOTE_*` code, from fal's `error_type` and words. */
84
+ function falFailure(ctx, message, type) {
85
+ const details = [type, message].filter((part) => part !== undefined).join(': ') || undefined;
86
+ const said = message ?? type;
87
+ if ((type && /content_policy|nsfw|moderat/i.test(type)) ||
88
+ (message && /content checker|nsfw|content polic/i.test(message)))
89
+ return remoteError('REMOTE_CONTENT_BLOCKED', `${ctx.provider} refused the request: ${said}`, details);
90
+ if (type && /timeout/i.test(type))
91
+ return remoteError('REMOTE_TIMEOUT', `${ctx.provider} took too long to generate.`, details);
92
+ if (!type || /^(runner_|internal|downstream|no_media|client_)/i.test(type))
93
+ return remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} failed to generate${said ? `: ${said}` : '.'}`, details);
94
+ return remoteError('REMOTE_REJECTED', `${ctx.provider}: ${said}`, details);
95
+ }
96
+ /** A non-2xx fal answer (`{detail: [{msg, type}]}` or `{detail, error_type}`) as a `REMOTE_*` error. */
97
+ function falHttpError(ctx, answer) {
98
+ const fields = asObject(answer.json);
99
+ const detail = fields['detail'];
100
+ const first = Array.isArray(detail) ? asObject(detail[0]) : {};
101
+ const type = text(first['type']) ?? text(fields['error_type']);
102
+ if (type && /content_policy/i.test(type))
103
+ return falFailure(ctx, text(first['msg']) ?? text(detail), type);
104
+ return remoteHttpError(ctx.provider, answer.status, answer.json, answer.text);
105
+ }
106
+ /**
107
+ * Submits `input` to fal model `providerModel` (`fal-ai/flux/schnell`) through the HF router:
108
+ * `POST {router}/fal-ai/{providerModel}?_subdomain=queue` with the HF key. Starts a generation, so
109
+ * it is never retried. Answers the handle {@link falStatus}, {@link falResult}, {@link falWait} and
110
+ * {@link falCancel} take.
111
+ */
112
+ export async function falSubmit(ctx, providerModel, input) {
113
+ const model = providerModel.trim().replace(/^\/+|\/+$/g, '');
114
+ if (!FAL_MODEL_ID.test(model) || model.split('/').some((part) => part === '.' || part === '..'))
115
+ throw remoteError('REMOTE_NOT_CONFIGURED', `The model has no usable fal model id.`, providerModel);
116
+ const answer = await callProvider(ctx, queueUrl(ctx, `/${model}`), { json: input, accept: [422] });
117
+ if (answer.status === 422)
118
+ throw falHttpError(ctx, answer);
119
+ const fields = asObject(answer.json);
120
+ const requestId = text(fields['request_id']);
121
+ if (!requestId)
122
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} accepted the request without an id.`, answer.text.slice(0, 300) || undefined);
123
+ const handle = { requestId, providerModel: model };
124
+ const statusUrl = text(fields['status_url']);
125
+ const responseUrl = text(fields['response_url']);
126
+ if (statusUrl)
127
+ handle.statusUrl = statusUrl;
128
+ if (responseUrl)
129
+ handle.responseUrl = responseUrl;
130
+ return handle;
131
+ }
132
+ /**
133
+ * One look at a fal request: `GET {router}/fal-ai/{request path}/status?_subdomain=queue`.
134
+ * `IN_QUEUE` → `queued` (with fal's queue position), `IN_PROGRESS` → `running`, `COMPLETED` →
135
+ * `completed`, or `failed` when fal reports an `error` on it. An unknown status counts as running.
136
+ */
137
+ export async function falStatus(ctx, handle) {
138
+ const answer = await callProvider(ctx, queueUrl(ctx, `${requestPath(ctx, handle)}/status`));
139
+ const fields = asObject(answer.json);
140
+ const status = text(fields['status'])?.toUpperCase();
141
+ if (!status)
142
+ return {
143
+ state: 'failed',
144
+ error: remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} answered without a status.`, answer.text.slice(0, 300)),
145
+ };
146
+ if (status === 'IN_QUEUE') {
147
+ const position = fields['queue_position'];
148
+ return typeof position === 'number' && Number.isFinite(position)
149
+ ? { state: 'queued', position }
150
+ : { state: 'queued' };
151
+ }
152
+ if (status === 'IN_PROGRESS')
153
+ return { state: 'running' };
154
+ const error = text(fields['error']);
155
+ const type = text(fields['error_type']);
156
+ if (status === 'COMPLETED')
157
+ return error || type ? { state: 'failed', error: falFailure(ctx, error, type) } : { state: 'completed' };
158
+ if (/FAIL|ERROR|CANCEL/.test(status))
159
+ return { state: 'failed', error: falFailure(ctx, error ?? status, type) };
160
+ return { state: 'running' };
161
+ }
162
+ /**
163
+ * The result of a completed fal request: `GET {router}/fal-ai/{request path}?_subdomain=queue`.
164
+ * The JSON is the model's own (`{images: [{url}]}`, `{video: {url}}`); a content refusal is
165
+ * `REMOTE_CONTENT_BLOCKED`.
166
+ */
167
+ export async function falResult(ctx, handle) {
168
+ const answer = await callProvider(ctx, queueUrl(ctx, requestPath(ctx, handle)), { accept: [400, 422] });
169
+ if (answer.status >= 400)
170
+ throw falHttpError(ctx, answer);
171
+ if (answer.json === undefined)
172
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} answered the result without JSON.`, answer.text.slice(0, 300));
173
+ return answer.json;
174
+ }
175
+ /**
176
+ * Polls a fal request until it completes ({@link FAL_POLL} unless `poll` says otherwise), telling
177
+ * `report` whether it is queued or generating, then answers its result ({@link falResult}). Throws
178
+ * the request's `REMOTE_*` error when it failed, `CANCELLED` when the job was cancelled (the caller
179
+ * may then {@link falCancel} it), `REMOTE_TIMEOUT` past the poll's limit.
180
+ */
181
+ export async function falWait(ctx, handle, report = () => { }, poll = FAL_POLL) {
182
+ await pollUntil(ctx, async () => {
183
+ const status = await falStatus(ctx, handle);
184
+ if (status.state === 'failed')
185
+ throw status.error;
186
+ if (status.state === 'completed')
187
+ return true;
188
+ report({ phase: status.state === 'queued' ? 'queued' : 'generating' });
189
+ return undefined;
190
+ }, poll);
191
+ return falResult(ctx, handle);
192
+ }
193
+ /**
194
+ * Asks fal to drop a request: `PUT {router}/fal-ai/{request path}/cancel?_subdomain=queue`. A
195
+ * queued request goes at once; a running one may still finish. A request already finished or gone
196
+ * is not an error. Pass a context whose signal has not fired (the job's own one has, on cancel).
197
+ */
198
+ export async function falCancel(ctx, handle) {
199
+ await callProvider(ctx, queueUrl(ctx, `${requestPath(ctx, handle)}/cancel`), {
200
+ method: 'PUT',
201
+ accept: [400, 404, 405],
202
+ });
203
+ }
204
+ // ---------------------------------------------------------------------------------------------
205
+ // The image adapter
206
+ // ---------------------------------------------------------------------------------------------
207
+ /** The pixel size of a job: its `WxH`, else the form's width and height. */
208
+ function jobSize(job) {
209
+ return (parseWxH(job.size) ?? (job.width && job.height ? { width: job.width, height: job.height } : undefined));
210
+ }
211
+ /** fal's text-to-image input: `{prompt, image_size, num_images, seed, ...}`. */
212
+ function falInput(job) {
213
+ const input = { prompt: job.prompt };
214
+ const size = jobSize(job);
215
+ if (size)
216
+ input['image_size'] = size;
217
+ if (job.n > 1)
218
+ input['num_images'] = job.n;
219
+ if (job.seed !== undefined && job.seed >= 0 && job.model.params.seed)
220
+ input['seed'] = job.seed;
221
+ if (job.negativePrompt && job.model.params.negative_prompt)
222
+ input['negative_prompt'] = job.negativePrompt;
223
+ if (job.steps !== undefined)
224
+ input['num_inference_steps'] = job.steps;
225
+ const guidance = job.guidance ?? job.cfgScale;
226
+ if (guidance !== undefined)
227
+ input['guidance_scale'] = guidance;
228
+ return input;
229
+ }
230
+ /** One image a provider pointed at (a data URL or a download), sniffed. */
231
+ async function imageAt(ctx, url) {
232
+ if (url.startsWith('data:'))
233
+ return decodeBase64Image(url);
234
+ const file = await downloadResult(ctx, url, { maxBytes: MAX_IMAGE_BYTES, what: 'image' });
235
+ const mime = sniffImageMime(file.bytes);
236
+ if (!mime)
237
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} returned a file that is not an image.`);
238
+ return { bytes: file.bytes, mime };
239
+ }
240
+ /**
241
+ * The images of a fal result (`{images: [{url}], has_nsfw_concepts}`, or one `image`). An image fal
242
+ * flagged as NSFW is blacked out by fal and left out; all of them flagged is a content refusal.
243
+ */
244
+ async function falImages(ctx, result) {
245
+ const fields = asObject(result);
246
+ const listed = Array.isArray(fields['images']) ? fields['images'] : fields['image'] ? [fields['image']] : [];
247
+ const flags = Array.isArray(fields['has_nsfw_concepts']) ? fields['has_nsfw_concepts'] : [];
248
+ const out = [];
249
+ let flagged = 0;
250
+ for (const [index, item] of listed.entries()) {
251
+ const url = text(asObject(item)['url']) ?? text(item);
252
+ if (!url)
253
+ continue;
254
+ if (flags[index] === true) {
255
+ flagged++;
256
+ continue;
257
+ }
258
+ out.push(await imageAt(ctx, url));
259
+ }
260
+ if (out.length === 0 && flagged > 0)
261
+ throw remoteError('REMOTE_CONTENT_BLOCKED', `${ctx.provider} withheld the image as unsafe.`, 'has_nsfw_concepts');
262
+ if (out.length === 0)
263
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} answered without an image.`);
264
+ return out;
265
+ }
266
+ async function generateFal(ctx, job, report) {
267
+ if (job.workflow !== 'create')
268
+ throw remoteError('REMOTE_UNSUPPORTED', 'This model only creates images from a prompt here.', job.workflow);
269
+ const providerModel = job.model.options?.['provider_model'];
270
+ if (typeof providerModel !== 'string' || providerModel === '')
271
+ throw remoteError('REMOTE_NOT_CONFIGURED', 'The model does not say which fal model serves it.', job.model.id);
272
+ const handle = await falSubmit(ctx, providerModel, falInput(job));
273
+ try {
274
+ return await falImages(ctx, await falWait(ctx, handle, report));
275
+ }
276
+ catch (error) {
277
+ // Best effort and not waited for: a queued request goes at once, a running one may still finish.
278
+ if (ctx.signal.aborted)
279
+ void falCancel(detached(ctx), handle).catch(() => undefined);
280
+ throw error;
281
+ }
282
+ }
283
+ /** `hf-inference`'s parameters for one image. */
284
+ function hfParameters(job, index) {
285
+ const parameters = {};
286
+ const size = jobSize(job);
287
+ if (size) {
288
+ if (job.workflow === 'transform')
289
+ parameters['target_size'] = size;
290
+ else
291
+ Object.assign(parameters, size);
292
+ }
293
+ if (job.steps !== undefined)
294
+ parameters['num_inference_steps'] = job.steps;
295
+ const guidance = job.cfgScale ?? job.guidance;
296
+ if (guidance !== undefined)
297
+ parameters['guidance_scale'] = guidance;
298
+ if (job.negativePrompt)
299
+ parameters['negative_prompt'] = job.negativePrompt;
300
+ if (job.seed !== undefined && job.seed >= 0)
301
+ parameters['seed'] = job.seed + index;
302
+ return parameters;
303
+ }
304
+ function parseJson(body) {
305
+ try {
306
+ return JSON.parse(body);
307
+ }
308
+ catch {
309
+ return undefined;
310
+ }
311
+ }
312
+ /**
313
+ * One `hf-inference` call. It answers the image itself, so the body is read as bytes here (not
314
+ * through `callProvider`, which reads text); a non-2xx is mapped by the same `remoteHttpError`.
315
+ */
316
+ async function hfInferenceImage(ctx, url, body) {
317
+ const headers = providerHeaders(ctx, 'bearer', {
318
+ 'Accept': 'image/png, image/jpeg, image/webp, application/json',
319
+ 'Content-Type': 'application/json',
320
+ });
321
+ let response;
322
+ let bytes;
323
+ try {
324
+ response = await ctx.fetch(url, {
325
+ method: 'POST',
326
+ headers,
327
+ body: JSON.stringify(body),
328
+ signal: AbortSignal.any([ctx.signal, AbortSignal.timeout(GENERATE_TIMEOUT_MS)]),
329
+ });
330
+ const declared = Number(response.headers.get('content-length') ?? '');
331
+ if (Number.isFinite(declared) && declared > MAX_IMAGE_BYTES) {
332
+ await response.body?.cancel().catch(() => undefined);
333
+ throw remoteError('INVALID_OUTPUT', `The provider's image is larger than the core accepts.`, `${declared} bytes`);
334
+ }
335
+ bytes = Buffer.from(await response.arrayBuffer());
336
+ if (bytes.length > MAX_IMAGE_BYTES)
337
+ throw remoteError('INVALID_OUTPUT', `The provider's image is larger than the core accepts.`, `${bytes.length} bytes`);
338
+ }
339
+ catch (error) {
340
+ if (error && typeof error === 'object' && 'code' in error)
341
+ throw error;
342
+ throw networkError(ctx, error);
343
+ }
344
+ if (response.status < 200 || response.status >= 300) {
345
+ const said = bytes.toString('utf8');
346
+ throw remoteHttpError(ctx.provider, response.status, parseJson(said), said);
347
+ }
348
+ const mime = sniffImageMime(bytes);
349
+ if (mime)
350
+ return { bytes, mime };
351
+ // Some deployments answer JSON instead: `{data: [{b64_json}]}` or `{output: [url]}`.
352
+ const json = asObject(parseJson(bytes.toString('utf8')));
353
+ const data = Array.isArray(json['data']) ? asObject(json['data'][0]) : {};
354
+ const b64 = text(data['b64_json']);
355
+ if (b64)
356
+ return decodeBase64Image(b64);
357
+ const output = Array.isArray(json['output']) ? text(json['output'][0]) : undefined;
358
+ if (output)
359
+ return imageAt(ctx, output);
360
+ throw remoteError('REMOTE_UNAVAILABLE', `${ctx.provider} answered without an image.`);
361
+ }
362
+ async function generateHfInference(ctx, job, report) {
363
+ if (job.workflow !== 'create' && job.workflow !== 'transform')
364
+ throw remoteError('REMOTE_UNSUPPORTED', 'This model cannot do that here.', job.workflow);
365
+ const source = job.images[0];
366
+ if (job.workflow === 'transform' && !source)
367
+ throw remoteError('REMOTE_UNSUPPORTED', 'This workflow needs a source image.', job.workflow);
368
+ const url = `${routerRoot(ctx)}/hf-inference/models/${job.model.id.split('/').map(encodeURIComponent).join('/')}`;
369
+ const count = Math.max(1, job.n);
370
+ const out = [];
371
+ for (let index = 0; index < count; index++) {
372
+ const parameters = hfParameters(job, index);
373
+ const body = job.workflow === 'transform' && source
374
+ ? { inputs: source.bytes.toString('base64'), parameters: { ...parameters, prompt: job.prompt } }
375
+ : { inputs: job.prompt, parameters };
376
+ out.push(await hfInferenceImage(ctx, url, body));
377
+ if (count > 1)
378
+ report({ phase: 'generating', fraction: (index + 1) / count });
379
+ }
380
+ return out;
381
+ }
382
+ /** The models of a Hub listing a provider here serves live, with the provider and its model id. */
383
+ export function liveModelsFromHub(json) {
384
+ const out = [];
385
+ const seen = new Set();
386
+ for (const item of Array.isArray(json) ? json : []) {
387
+ const entry = asObject(item);
388
+ const id = text(entry['id']) ?? text(entry['modelId']);
389
+ if (!id || seen.has(id))
390
+ continue;
391
+ const raw = entry['inferenceProviderMapping'];
392
+ // Listed as an array of `{provider, providerId, status, task}`, or (older) keyed by provider.
393
+ const mapping = Array.isArray(raw)
394
+ ? raw.map(asObject)
395
+ : Object.entries(asObject(raw)).map(([provider, value]) => ({ provider, ...asObject(value) }));
396
+ for (const provider of HF_PROVIDERS) {
397
+ const live = mapping.find((m) => m['provider'] === provider &&
398
+ m['status'] === 'live' &&
399
+ (m['task'] === undefined || m['task'] === 'text-to-image'));
400
+ if (!live)
401
+ continue;
402
+ seen.add(id);
403
+ out.push({ id, options: { hf_provider: provider, provider_model: text(live['providerId']) ?? id } });
404
+ break;
405
+ }
406
+ }
407
+ return out;
408
+ }
409
+ export const HF_IMAGES = {
410
+ dialect: 'hf-images',
411
+ kind: 'image',
412
+ async listModels(ctx) {
413
+ let host;
414
+ try {
415
+ host = new URL(ctx.baseUrl).hostname;
416
+ }
417
+ catch {
418
+ return [];
419
+ }
420
+ if (host !== ROUTER_HOST) {
421
+ ctx.log('info', `${ctx.provider}: no Hub listing for a base off ${ROUTER_HOST}; the catalog applies.`);
422
+ return [];
423
+ }
424
+ // A public API on another host: neither the key nor the custom headers go along.
425
+ const hub = { ...ctx, apiKey: null, customHeaders: [] };
426
+ const answer = await callProvider(hub, HUB_LISTING_URL, { auth: 'none' });
427
+ return liveModelsFromHub(answer.json);
428
+ },
429
+ async generate(ctx, job, report) {
430
+ report({ phase: 'generating' });
431
+ const provider = job.model.options?.['hf_provider'] ?? 'hf-inference';
432
+ if (provider === 'fal-ai')
433
+ return generateFal(ctx, job, report);
434
+ if (provider === 'hf-inference')
435
+ return generateHfInference(ctx, job, report);
436
+ throw remoteError('REMOTE_UNSUPPORTED', `Models served by ${String(provider)} are not supported yet.`, job.model.id);
437
+ },
438
+ };
439
+ //# sourceMappingURL=hf-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hf-images.js","sourceRoot":"","sources":["../../../src/media/adapters/hf-images.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * `hf-videos`: Hugging Face Inference Providers' video models, through fal-ai's queue behind the HF
3
+ * router. The provider is registered with the router's OpenAI-compatible base
4
+ * (`https://router.huggingface.co/v1`); the router proxies each inference provider under
5
+ * `/{provider}` of its origin, so `hfRouterBase` strips the trailing `/v1` and every call goes to
6
+ * `{router}/fal-ai/…?_subdomain=queue`, the way huggingface.js routes fal-ai's queue
7
+ * (`packages/inference/src/providers/fal-ai.ts`). The HF token never goes to `queue.fal.run` itself.
8
+ *
9
+ * A catalog model names its route in `options`: `hf_provider` (`fal-ai`, the only one spoken here)
10
+ * and `provider_model` (fal's endpoint id, e.g. `fal-ai/wan/v2.2-5b/text-to-video`).
11
+ *
12
+ * - submit → `POST {router}/fal-ai/{provider_model}?_subdomain=queue` `{prompt, …}` →
13
+ * `{request_id, response_url, status_url}`. fal's URLs point at `queue.fal.run`; only their path
14
+ * (`/{owner}/{app}/requests/{id}`) is kept, to be asked through the router later;
15
+ * - poll → `GET {router}/fal-ai{path}/status?_subdomain=queue` → `status` IN_QUEUE | IN_PROGRESS |
16
+ * COMPLETED (with `error`/`error_type` when it failed); once completed, `GET
17
+ * {router}/fal-ai{path}?_subdomain=queue` → `{video:{url}}`;
18
+ * - download → `video.url` on fal's CDN, without the key;
19
+ * - no cancel; the listing is the public Hub API (no key), and only for the real router.
20
+ */
21
+ import type { AtomicCoreError } from '../../contracts/index.js';
22
+ import type { LiveMediaModel } from '../catalog.js';
23
+ import type { VideoAdapter, VideoGenerationJob } from './types.js';
24
+ type Fields = Record<string, unknown>;
25
+ /** The Hub's text-to-video models served by fal-ai, with their provider mappings. */
26
+ export declare const HF_VIDEO_LISTING_URL = "https://huggingface.co/api/models?inference_provider=fal-ai&pipeline_tag=text-to-video&expand[]=inferenceProviderMapping&limit=100";
27
+ /** `https://router.huggingface.co/v1` → `https://router.huggingface.co`. */
28
+ export declare function hfRouterBase(baseUrl: string): string;
29
+ /**
30
+ * The queue path of a submitted request, `/{owner}/{app}/requests/{id}`: the path of fal's
31
+ * `response_url` (or `status_url`), as huggingface.js takes it, else built from the endpoint id the
32
+ * way fal's own client does (its first two segments).
33
+ */
34
+ export declare function falRequestPath(answer: unknown, providerModel: string, requestId: string): string;
35
+ /** A fal failure (`error`/`error_type` of a completed request, or its result's error body). */
36
+ export declare function falError(provider: string, body: unknown, status?: number, text?: string): AtomicCoreError;
37
+ /** Where a model runs: its fal endpoint id, or `REMOTE_UNSUPPORTED` for a model without one. */
38
+ export declare function falEndpoint(job: VideoGenerationJob): string;
39
+ /** fal's input: what the job set and the model offers. */
40
+ export declare function falVideoInput(job: VideoGenerationJob): Fields;
41
+ /** The Hub's listing as models: a live fal-ai mapping of a single model each. */
42
+ export declare function falVideoModels(json: unknown): LiveMediaModel[];
43
+ export declare const HF_VIDEOS: VideoAdapter;
44
+ export {};