@nodetool-ai/runtime 0.7.0-rc.23 → 0.8.2

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 (713) hide show
  1. package/README.md +29 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/agent-memory.d.ts +118 -0
  4. package/dist/agent-memory.d.ts.map +1 -0
  5. package/dist/agent-memory.js +186 -0
  6. package/dist/agent-memory.js.map +1 -0
  7. package/dist/async-local-storage.d.ts +20 -0
  8. package/dist/async-local-storage.d.ts.map +1 -0
  9. package/dist/async-local-storage.js +28 -0
  10. package/dist/async-local-storage.js.map +1 -0
  11. package/dist/blender-executor.d.ts +93 -0
  12. package/dist/blender-executor.d.ts.map +1 -0
  13. package/dist/blender-executor.js +294 -0
  14. package/dist/blender-executor.js.map +1 -0
  15. package/dist/comfy-executor.d.ts +23 -1
  16. package/dist/comfy-executor.d.ts.map +1 -1
  17. package/dist/comfy-executor.js +234 -55
  18. package/dist/comfy-executor.js.map +1 -1
  19. package/dist/context-packer.d.ts +1 -1
  20. package/dist/context-packer.d.ts.map +1 -1
  21. package/dist/context-packer.js +23 -25
  22. package/dist/context-packer.js.map +1 -1
  23. package/dist/context.d.ts +982 -127
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +2649 -530
  26. package/dist/context.js.map +1 -1
  27. package/dist/cost-reconciler.d.ts +32 -0
  28. package/dist/cost-reconciler.d.ts.map +1 -0
  29. package/dist/cost-reconciler.js +21 -0
  30. package/dist/cost-reconciler.js.map +1 -0
  31. package/dist/entities.d.ts +33 -0
  32. package/dist/entities.d.ts.map +1 -0
  33. package/dist/entities.js +43 -0
  34. package/dist/entities.js.map +1 -0
  35. package/dist/external-media-fetch.d.ts +29 -0
  36. package/dist/external-media-fetch.d.ts.map +1 -0
  37. package/dist/external-media-fetch.js +38 -0
  38. package/dist/external-media-fetch.js.map +1 -0
  39. package/dist/generation-receipt.d.ts +86 -0
  40. package/dist/generation-receipt.d.ts.map +1 -0
  41. package/dist/generation-receipt.js +137 -0
  42. package/dist/generation-receipt.js.map +1 -0
  43. package/dist/generation-registry.d.ts +75 -0
  44. package/dist/generation-registry.d.ts.map +1 -0
  45. package/dist/generation-registry.js +144 -0
  46. package/dist/generation-registry.js.map +1 -0
  47. package/dist/google/client.d.ts +196 -0
  48. package/dist/google/client.d.ts.map +1 -0
  49. package/dist/google/client.js +396 -0
  50. package/dist/google/client.js.map +1 -0
  51. package/dist/google/index.d.ts +3 -0
  52. package/dist/google/index.d.ts.map +1 -0
  53. package/dist/google/index.js +3 -0
  54. package/dist/google/index.js.map +1 -0
  55. package/dist/google/token.d.ts +15 -0
  56. package/dist/google/token.d.ts.map +1 -0
  57. package/dist/google/token.js +24 -0
  58. package/dist/google/token.js.map +1 -0
  59. package/dist/host-binaries.d.ts +106 -0
  60. package/dist/host-binaries.d.ts.map +1 -0
  61. package/dist/host-binaries.js +352 -0
  62. package/dist/host-binaries.js.map +1 -0
  63. package/dist/image-codec.d.ts +76 -0
  64. package/dist/image-codec.d.ts.map +1 -0
  65. package/dist/image-codec.js +293 -0
  66. package/dist/image-codec.js.map +1 -0
  67. package/dist/image-model-tasks.d.ts +15 -0
  68. package/dist/image-model-tasks.d.ts.map +1 -0
  69. package/dist/image-model-tasks.js +24 -0
  70. package/dist/image-model-tasks.js.map +1 -0
  71. package/dist/index.d.ts +67 -6
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +51 -4
  74. package/dist/index.js.map +1 -1
  75. package/dist/invocation-account.d.ts +43 -0
  76. package/dist/invocation-account.d.ts.map +1 -0
  77. package/dist/invocation-account.js +60 -0
  78. package/dist/invocation-account.js.map +1 -0
  79. package/dist/media-ref-bytes.d.ts +35 -0
  80. package/dist/media-ref-bytes.d.ts.map +1 -0
  81. package/dist/media-ref-bytes.js +191 -0
  82. package/dist/media-ref-bytes.js.map +1 -0
  83. package/dist/node-executor.d.ts +119 -2
  84. package/dist/node-executor.d.ts.map +1 -1
  85. package/dist/permission-gate.d.ts +152 -0
  86. package/dist/permission-gate.d.ts.map +1 -0
  87. package/dist/permission-gate.js +87 -0
  88. package/dist/permission-gate.js.map +1 -0
  89. package/dist/prefixed-storage-adapter.d.ts +33 -0
  90. package/dist/prefixed-storage-adapter.d.ts.map +1 -0
  91. package/dist/prefixed-storage-adapter.js +70 -0
  92. package/dist/prefixed-storage-adapter.js.map +1 -0
  93. package/dist/prompt-asset-refs.d.ts +222 -0
  94. package/dist/prompt-asset-refs.d.ts.map +1 -0
  95. package/dist/prompt-asset-refs.js +751 -0
  96. package/dist/prompt-asset-refs.js.map +1 -0
  97. package/dist/provider-cache.d.ts +3 -0
  98. package/dist/provider-cache.d.ts.map +1 -0
  99. package/dist/provider-cache.js +8 -0
  100. package/dist/provider-cache.js.map +1 -0
  101. package/dist/providers/aki-provider.d.ts +35 -10
  102. package/dist/providers/aki-provider.d.ts.map +1 -1
  103. package/dist/providers/aki-provider.js +90 -77
  104. package/dist/providers/aki-provider.js.map +1 -1
  105. package/dist/providers/alibaba-provider.d.ts +39 -0
  106. package/dist/providers/alibaba-provider.d.ts.map +1 -0
  107. package/dist/providers/alibaba-provider.js +86 -0
  108. package/dist/providers/alibaba-provider.js.map +1 -0
  109. package/dist/providers/anthropic-provider.d.ts +52 -3
  110. package/dist/providers/anthropic-provider.d.ts.map +1 -1
  111. package/dist/providers/anthropic-provider.js +1020 -338
  112. package/dist/providers/anthropic-provider.js.map +1 -1
  113. package/dist/providers/atlascloud-provider.d.ts +103 -0
  114. package/dist/providers/atlascloud-provider.d.ts.map +1 -0
  115. package/dist/providers/atlascloud-provider.js +1031 -0
  116. package/dist/providers/atlascloud-provider.js.map +1 -0
  117. package/dist/providers/atlascloud-transport.d.ts +100 -0
  118. package/dist/providers/atlascloud-transport.d.ts.map +1 -0
  119. package/dist/providers/atlascloud-transport.js +364 -0
  120. package/dist/providers/atlascloud-transport.js.map +1 -0
  121. package/dist/providers/atlascloud-webhook-registry.d.ts +35 -0
  122. package/dist/providers/atlascloud-webhook-registry.d.ts.map +1 -0
  123. package/dist/providers/atlascloud-webhook-registry.js +104 -0
  124. package/dist/providers/atlascloud-webhook-registry.js.map +1 -0
  125. package/dist/providers/audio-mime.d.ts +11 -0
  126. package/dist/providers/audio-mime.d.ts.map +1 -0
  127. package/dist/providers/audio-mime.js +46 -0
  128. package/dist/providers/audio-mime.js.map +1 -0
  129. package/dist/providers/base-provider.d.ts +501 -32
  130. package/dist/providers/base-provider.d.ts.map +1 -1
  131. package/dist/providers/base-provider.js +1280 -87
  132. package/dist/providers/base-provider.js.map +1 -1
  133. package/dist/providers/cassette-provider.d.ts +217 -0
  134. package/dist/providers/cassette-provider.d.ts.map +1 -0
  135. package/dist/providers/cassette-provider.js +502 -0
  136. package/dist/providers/cassette-provider.js.map +1 -0
  137. package/dist/providers/cerebras-provider.d.ts +6 -12
  138. package/dist/providers/cerebras-provider.d.ts.map +1 -1
  139. package/dist/providers/cerebras-provider.js +8 -33
  140. package/dist/providers/cerebras-provider.js.map +1 -1
  141. package/dist/providers/claude-agent-provider.d.ts +107 -74
  142. package/dist/providers/claude-agent-provider.d.ts.map +1 -1
  143. package/dist/providers/claude-agent-provider.js +1279 -517
  144. package/dist/providers/claude-agent-provider.js.map +1 -1
  145. package/dist/providers/codex-provider.d.ts +84 -0
  146. package/dist/providers/codex-provider.d.ts.map +1 -0
  147. package/dist/providers/codex-provider.js +505 -0
  148. package/dist/providers/codex-provider.js.map +1 -0
  149. package/dist/providers/cohere-provider.d.ts +7 -3
  150. package/dist/providers/cohere-provider.d.ts.map +1 -1
  151. package/dist/providers/cohere-provider.js +14 -2
  152. package/dist/providers/cohere-provider.js.map +1 -1
  153. package/dist/providers/comfy-cloud-provider.d.ts +30 -0
  154. package/dist/providers/comfy-cloud-provider.d.ts.map +1 -0
  155. package/dist/providers/comfy-cloud-provider.js +42 -0
  156. package/dist/providers/comfy-cloud-provider.js.map +1 -0
  157. package/dist/providers/content-filter.d.ts +46 -0
  158. package/dist/providers/content-filter.d.ts.map +1 -0
  159. package/dist/providers/content-filter.js +92 -0
  160. package/dist/providers/content-filter.js.map +1 -0
  161. package/dist/providers/context-exceeded.d.ts +37 -0
  162. package/dist/providers/context-exceeded.d.ts.map +1 -0
  163. package/dist/providers/context-exceeded.js +114 -0
  164. package/dist/providers/context-exceeded.js.map +1 -0
  165. package/dist/providers/context-window.d.ts +44 -0
  166. package/dist/providers/context-window.d.ts.map +1 -0
  167. package/dist/providers/context-window.js +145 -0
  168. package/dist/providers/context-window.js.map +1 -0
  169. package/dist/providers/contract/index.d.ts +4 -0
  170. package/dist/providers/contract/index.d.ts.map +1 -0
  171. package/dist/providers/contract/index.js +4 -0
  172. package/dist/providers/contract/index.js.map +1 -0
  173. package/dist/providers/contract/probe-manifest.d.ts +75 -0
  174. package/dist/providers/contract/probe-manifest.d.ts.map +1 -0
  175. package/dist/providers/contract/probe-manifest.js +379 -0
  176. package/dist/providers/contract/probe-manifest.js.map +1 -0
  177. package/dist/providers/contract/probe-runner.d.ts +57 -0
  178. package/dist/providers/contract/probe-runner.d.ts.map +1 -0
  179. package/dist/providers/contract/probe-runner.js +180 -0
  180. package/dist/providers/contract/probe-runner.js.map +1 -0
  181. package/dist/providers/contract/redact.d.ts +29 -0
  182. package/dist/providers/contract/redact.d.ts.map +1 -0
  183. package/dist/providers/contract/redact.js +113 -0
  184. package/dist/providers/contract/redact.js.map +1 -0
  185. package/dist/providers/core-tools.d.ts +75 -0
  186. package/dist/providers/core-tools.d.ts.map +1 -0
  187. package/dist/providers/core-tools.js +128 -0
  188. package/dist/providers/core-tools.js.map +1 -0
  189. package/dist/providers/cost-calculator.d.ts +69 -50
  190. package/dist/providers/cost-calculator.d.ts.map +1 -1
  191. package/dist/providers/cost-calculator.js +207 -397
  192. package/dist/providers/cost-calculator.js.map +1 -1
  193. package/dist/providers/credential-check.d.ts +45 -0
  194. package/dist/providers/credential-check.d.ts.map +1 -0
  195. package/dist/providers/credential-check.js +164 -0
  196. package/dist/providers/credential-check.js.map +1 -0
  197. package/dist/providers/custom-model-kinds.d.ts +33 -0
  198. package/dist/providers/custom-model-kinds.d.ts.map +1 -0
  199. package/dist/providers/custom-model-kinds.js +96 -0
  200. package/dist/providers/custom-model-kinds.js.map +1 -0
  201. package/dist/providers/custom-openai-provider.d.ts +83 -0
  202. package/dist/providers/custom-openai-provider.d.ts.map +1 -0
  203. package/dist/providers/custom-openai-provider.js +190 -0
  204. package/dist/providers/custom-openai-provider.js.map +1 -0
  205. package/dist/providers/custom-provider-registry.d.ts +19 -0
  206. package/dist/providers/custom-provider-registry.d.ts.map +1 -0
  207. package/dist/providers/custom-provider-registry.js +52 -0
  208. package/dist/providers/custom-provider-registry.js.map +1 -0
  209. package/dist/providers/deepseek-provider.d.ts +8 -14
  210. package/dist/providers/deepseek-provider.d.ts.map +1 -1
  211. package/dist/providers/deepseek-provider.js +6 -35
  212. package/dist/providers/deepseek-provider.js.map +1 -1
  213. package/dist/providers/defaults.d.ts +12 -0
  214. package/dist/providers/defaults.d.ts.map +1 -0
  215. package/dist/providers/defaults.js +12 -0
  216. package/dist/providers/defaults.js.map +1 -0
  217. package/dist/providers/dreamina-models.d.ts +5 -0
  218. package/dist/providers/dreamina-models.d.ts.map +1 -0
  219. package/dist/providers/dreamina-models.js +57 -0
  220. package/dist/providers/dreamina-models.js.map +1 -0
  221. package/dist/providers/dreamina-music.d.ts +52 -0
  222. package/dist/providers/dreamina-music.d.ts.map +1 -0
  223. package/dist/providers/dreamina-music.js +115 -0
  224. package/dist/providers/dreamina-music.js.map +1 -0
  225. package/dist/providers/dreamina-provider.d.ts +62 -0
  226. package/dist/providers/dreamina-provider.d.ts.map +1 -0
  227. package/dist/providers/dreamina-provider.js +790 -0
  228. package/dist/providers/dreamina-provider.js.map +1 -0
  229. package/dist/providers/elevenlabs-provider.d.ts +50 -0
  230. package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
  231. package/dist/providers/elevenlabs-provider.js +147 -0
  232. package/dist/providers/elevenlabs-provider.js.map +1 -0
  233. package/dist/providers/entity-references.d.ts +31 -0
  234. package/dist/providers/entity-references.d.ts.map +1 -0
  235. package/dist/providers/entity-references.js +113 -0
  236. package/dist/providers/entity-references.js.map +1 -0
  237. package/dist/providers/evolink-provider.d.ts +40 -0
  238. package/dist/providers/evolink-provider.d.ts.map +1 -0
  239. package/dist/providers/evolink-provider.js +312 -0
  240. package/dist/providers/evolink-provider.js.map +1 -0
  241. package/dist/providers/fake-provider.d.ts +74 -2
  242. package/dist/providers/fake-provider.d.ts.map +1 -1
  243. package/dist/providers/fake-provider.js +213 -1
  244. package/dist/providers/fake-provider.js.map +1 -1
  245. package/dist/providers/fal-generations.d.ts +106 -0
  246. package/dist/providers/fal-generations.d.ts.map +1 -0
  247. package/dist/providers/fal-generations.js +286 -0
  248. package/dist/providers/fal-generations.js.map +1 -0
  249. package/dist/providers/fal-provider.d.ts +173 -8
  250. package/dist/providers/fal-provider.d.ts.map +1 -1
  251. package/dist/providers/fal-provider.js +1396 -64
  252. package/dist/providers/fal-provider.js.map +1 -1
  253. package/dist/providers/fal-queue.d.ts +47 -0
  254. package/dist/providers/fal-queue.d.ts.map +1 -0
  255. package/dist/providers/fal-queue.js +231 -0
  256. package/dist/providers/fal-queue.js.map +1 -0
  257. package/dist/providers/gemini-provider.d.ts +150 -9
  258. package/dist/providers/gemini-provider.d.ts.map +1 -1
  259. package/dist/providers/gemini-provider.js +1515 -316
  260. package/dist/providers/gemini-provider.js.map +1 -1
  261. package/dist/providers/gmi-provider.d.ts +21 -0
  262. package/dist/providers/gmi-provider.d.ts.map +1 -0
  263. package/dist/providers/gmi-provider.js +34 -0
  264. package/dist/providers/gmi-provider.js.map +1 -0
  265. package/dist/providers/gpt-image-size.d.ts +3 -0
  266. package/dist/providers/gpt-image-size.d.ts.map +1 -0
  267. package/dist/providers/gpt-image-size.js +37 -0
  268. package/dist/providers/gpt-image-size.js.map +1 -0
  269. package/dist/providers/groq-provider.d.ts +9 -12
  270. package/dist/providers/groq-provider.d.ts.map +1 -1
  271. package/dist/providers/groq-provider.js +19 -33
  272. package/dist/providers/groq-provider.js.map +1 -1
  273. package/dist/providers/groq-request.d.ts +38 -0
  274. package/dist/providers/groq-request.d.ts.map +1 -0
  275. package/dist/providers/groq-request.js +138 -0
  276. package/dist/providers/groq-request.js.map +1 -0
  277. package/dist/providers/higgsfield-provider.d.ts +31 -0
  278. package/dist/providers/higgsfield-provider.d.ts.map +1 -0
  279. package/dist/providers/higgsfield-provider.js +143 -0
  280. package/dist/providers/higgsfield-provider.js.map +1 -0
  281. package/dist/providers/higgsfield-transport.d.ts +106 -0
  282. package/dist/providers/higgsfield-transport.d.ts.map +1 -0
  283. package/dist/providers/higgsfield-transport.js +182 -0
  284. package/dist/providers/higgsfield-transport.js.map +1 -0
  285. package/dist/providers/http-transport.d.ts +74 -0
  286. package/dist/providers/http-transport.d.ts.map +1 -0
  287. package/dist/providers/http-transport.js +152 -0
  288. package/dist/providers/http-transport.js.map +1 -0
  289. package/dist/providers/huggingface-provider.d.ts +73 -4
  290. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  291. package/dist/providers/huggingface-provider.js +240 -34
  292. package/dist/providers/huggingface-provider.js.map +1 -1
  293. package/dist/providers/image-mime.d.ts +39 -0
  294. package/dist/providers/image-mime.d.ts.map +1 -0
  295. package/dist/providers/image-mime.js +111 -0
  296. package/dist/providers/image-mime.js.map +1 -0
  297. package/dist/providers/image-ref.d.ts +21 -0
  298. package/dist/providers/image-ref.d.ts.map +1 -0
  299. package/dist/providers/image-ref.js +44 -0
  300. package/dist/providers/image-ref.js.map +1 -0
  301. package/dist/providers/index.d.ts +87 -8
  302. package/dist/providers/index.d.ts.map +1 -1
  303. package/dist/providers/index.js +250 -56
  304. package/dist/providers/index.js.map +1 -1
  305. package/dist/providers/jina-provider.d.ts +12 -3
  306. package/dist/providers/jina-provider.d.ts.map +1 -1
  307. package/dist/providers/jina-provider.js +21 -7
  308. package/dist/providers/jina-provider.js.map +1 -1
  309. package/dist/providers/kie-provider.d.ts +172 -10
  310. package/dist/providers/kie-provider.d.ts.map +1 -1
  311. package/dist/providers/kie-provider.js +1190 -228
  312. package/dist/providers/kie-provider.js.map +1 -1
  313. package/dist/providers/kie-webhook-registry.d.ts +28 -0
  314. package/dist/providers/kie-webhook-registry.d.ts.map +1 -0
  315. package/dist/providers/kie-webhook-registry.js +91 -0
  316. package/dist/providers/kie-webhook-registry.js.map +1 -0
  317. package/dist/providers/llama-provider.d.ts +23 -36
  318. package/dist/providers/llama-provider.d.ts.map +1 -1
  319. package/dist/providers/llama-provider.js +50 -355
  320. package/dist/providers/llama-provider.js.map +1 -1
  321. package/dist/providers/lmstudio-provider.d.ts +4 -7
  322. package/dist/providers/lmstudio-provider.d.ts.map +1 -1
  323. package/dist/providers/lmstudio-provider.js +24 -15
  324. package/dist/providers/lmstudio-provider.js.map +1 -1
  325. package/dist/providers/loop-tracing.d.ts +17 -0
  326. package/dist/providers/loop-tracing.d.ts.map +1 -0
  327. package/dist/providers/loop-tracing.js +132 -0
  328. package/dist/providers/loop-tracing.js.map +1 -0
  329. package/dist/providers/manifest-models.d.ts +341 -1
  330. package/dist/providers/manifest-models.d.ts.map +1 -1
  331. package/dist/providers/manifest-models.js +1106 -22
  332. package/dist/providers/manifest-models.js.map +1 -1
  333. package/dist/providers/media-mime.d.ts +14 -0
  334. package/dist/providers/media-mime.d.ts.map +1 -0
  335. package/dist/providers/media-mime.js +35 -0
  336. package/dist/providers/media-mime.js.map +1 -0
  337. package/dist/providers/meshy-provider.d.ts +16 -2
  338. package/dist/providers/meshy-provider.d.ts.map +1 -1
  339. package/dist/providers/meshy-provider.js +82 -46
  340. package/dist/providers/meshy-provider.js.map +1 -1
  341. package/dist/providers/meta-provider.d.ts +22 -0
  342. package/dist/providers/meta-provider.d.ts.map +1 -0
  343. package/dist/providers/meta-provider.js +54 -0
  344. package/dist/providers/meta-provider.js.map +1 -0
  345. package/dist/providers/minimax-provider.d.ts +27 -18
  346. package/dist/providers/minimax-provider.d.ts.map +1 -1
  347. package/dist/providers/minimax-provider.js +222 -72
  348. package/dist/providers/minimax-provider.js.map +1 -1
  349. package/dist/providers/mistral-provider.d.ts +8 -12
  350. package/dist/providers/mistral-provider.d.ts.map +1 -1
  351. package/dist/providers/mistral-provider.js +15 -34
  352. package/dist/providers/mistral-provider.js.map +1 -1
  353. package/dist/providers/moonshot-provider.d.ts +11 -15
  354. package/dist/providers/moonshot-provider.d.ts.map +1 -1
  355. package/dist/providers/moonshot-provider.js +33 -23
  356. package/dist/providers/moonshot-provider.js.map +1 -1
  357. package/dist/providers/node-llama-cpp-provider.d.ts +99 -0
  358. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
  359. package/dist/providers/node-llama-cpp-provider.js +484 -0
  360. package/dist/providers/node-llama-cpp-provider.js.map +1 -0
  361. package/dist/providers/nodetool-provider.d.ts +49 -0
  362. package/dist/providers/nodetool-provider.d.ts.map +1 -0
  363. package/dist/providers/nodetool-provider.js +222 -0
  364. package/dist/providers/nodetool-provider.js.map +1 -0
  365. package/dist/providers/oauth/browser-launcher.d.ts +23 -0
  366. package/dist/providers/oauth/browser-launcher.d.ts.map +1 -0
  367. package/dist/providers/oauth/browser-launcher.js +45 -0
  368. package/dist/providers/oauth/browser-launcher.js.map +1 -0
  369. package/dist/providers/oauth/claude-code-credentials.d.ts +74 -0
  370. package/dist/providers/oauth/claude-code-credentials.d.ts.map +1 -0
  371. package/dist/providers/oauth/claude-code-credentials.js +133 -0
  372. package/dist/providers/oauth/claude-code-credentials.js.map +1 -0
  373. package/dist/providers/oauth/claude-code-login.d.ts +124 -0
  374. package/dist/providers/oauth/claude-code-login.d.ts.map +1 -0
  375. package/dist/providers/oauth/claude-code-login.js +230 -0
  376. package/dist/providers/oauth/claude-code-login.js.map +1 -0
  377. package/dist/providers/oauth/claude-code-oauth-client.d.ts +111 -0
  378. package/dist/providers/oauth/claude-code-oauth-client.d.ts.map +1 -0
  379. package/dist/providers/oauth/claude-code-oauth-client.js +207 -0
  380. package/dist/providers/oauth/claude-code-oauth-client.js.map +1 -0
  381. package/dist/providers/oauth/errors.d.ts +54 -0
  382. package/dist/providers/oauth/errors.d.ts.map +1 -0
  383. package/dist/providers/oauth/errors.js +79 -0
  384. package/dist/providers/oauth/errors.js.map +1 -0
  385. package/dist/providers/oauth/index.d.ts +105 -0
  386. package/dist/providers/oauth/index.d.ts.map +1 -0
  387. package/dist/providers/oauth/index.js +167 -0
  388. package/dist/providers/oauth/index.js.map +1 -0
  389. package/dist/providers/oauth/jwt-claims.d.ts +23 -0
  390. package/dist/providers/oauth/jwt-claims.d.ts.map +1 -0
  391. package/dist/providers/oauth/jwt-claims.js +67 -0
  392. package/dist/providers/oauth/jwt-claims.js.map +1 -0
  393. package/dist/providers/oauth/local-callback-server.d.ts +60 -0
  394. package/dist/providers/oauth/local-callback-server.d.ts.map +1 -0
  395. package/dist/providers/oauth/local-callback-server.js +148 -0
  396. package/dist/providers/oauth/local-callback-server.js.map +1 -0
  397. package/dist/providers/oauth/oauth-client.d.ts +55 -0
  398. package/dist/providers/oauth/oauth-client.d.ts.map +1 -0
  399. package/dist/providers/oauth/oauth-client.js +161 -0
  400. package/dist/providers/oauth/oauth-client.js.map +1 -0
  401. package/dist/providers/oauth/openai-oauth-provider.d.ts +129 -0
  402. package/dist/providers/oauth/openai-oauth-provider.d.ts.map +1 -0
  403. package/dist/providers/oauth/openai-oauth-provider.js +265 -0
  404. package/dist/providers/oauth/openai-oauth-provider.js.map +1 -0
  405. package/dist/providers/oauth/pkce-helper.d.ts +43 -0
  406. package/dist/providers/oauth/pkce-helper.d.ts.map +1 -0
  407. package/dist/providers/oauth/pkce-helper.js +57 -0
  408. package/dist/providers/oauth/pkce-helper.js.map +1 -0
  409. package/dist/providers/oauth/redaction.d.ts +22 -0
  410. package/dist/providers/oauth/redaction.d.ts.map +1 -0
  411. package/dist/providers/oauth/redaction.js +59 -0
  412. package/dist/providers/oauth/redaction.js.map +1 -0
  413. package/dist/providers/oauth/secure-credential-store.d.ts +67 -0
  414. package/dist/providers/oauth/secure-credential-store.d.ts.map +1 -0
  415. package/dist/providers/oauth/secure-credential-store.js +73 -0
  416. package/dist/providers/oauth/secure-credential-store.js.map +1 -0
  417. package/dist/providers/oauth/token-store.d.ts +53 -0
  418. package/dist/providers/oauth/token-store.d.ts.map +1 -0
  419. package/dist/providers/oauth/token-store.js +78 -0
  420. package/dist/providers/oauth/token-store.js.map +1 -0
  421. package/dist/providers/oauth/types.d.ts +64 -0
  422. package/dist/providers/oauth/types.d.ts.map +1 -0
  423. package/dist/providers/oauth/types.js +12 -0
  424. package/dist/providers/oauth/types.js.map +1 -0
  425. package/dist/providers/object-tracking.d.ts +47 -0
  426. package/dist/providers/object-tracking.d.ts.map +1 -0
  427. package/dist/providers/object-tracking.js +46 -0
  428. package/dist/providers/object-tracking.js.map +1 -0
  429. package/dist/providers/offline-model-index.d.ts +20 -0
  430. package/dist/providers/offline-model-index.d.ts.map +1 -0
  431. package/dist/providers/offline-model-index.js +112 -0
  432. package/dist/providers/offline-model-index.js.map +1 -0
  433. package/dist/providers/ollama-provider.d.ts +30 -2
  434. package/dist/providers/ollama-provider.d.ts.map +1 -1
  435. package/dist/providers/ollama-provider.js +198 -43
  436. package/dist/providers/ollama-provider.js.map +1 -1
  437. package/dist/providers/openai-compat/client.d.ts +57 -0
  438. package/dist/providers/openai-compat/client.d.ts.map +1 -0
  439. package/dist/providers/openai-compat/client.js +157 -0
  440. package/dist/providers/openai-compat/client.js.map +1 -0
  441. package/dist/providers/openai-compat/decode.d.ts +36 -0
  442. package/dist/providers/openai-compat/decode.d.ts.map +1 -0
  443. package/dist/providers/openai-compat/decode.js +55 -0
  444. package/dist/providers/openai-compat/decode.js.map +1 -0
  445. package/dist/providers/openai-compat/errors.d.ts +54 -0
  446. package/dist/providers/openai-compat/errors.d.ts.map +1 -0
  447. package/dist/providers/openai-compat/errors.js +144 -0
  448. package/dist/providers/openai-compat/errors.js.map +1 -0
  449. package/dist/providers/openai-compat/index.d.ts +8 -0
  450. package/dist/providers/openai-compat/index.d.ts.map +1 -0
  451. package/dist/providers/openai-compat/index.js +5 -0
  452. package/dist/providers/openai-compat/index.js.map +1 -0
  453. package/dist/providers/openai-compat/sse.d.ts +14 -0
  454. package/dist/providers/openai-compat/sse.d.ts.map +1 -0
  455. package/dist/providers/openai-compat/sse.js +69 -0
  456. package/dist/providers/openai-compat/sse.js.map +1 -0
  457. package/dist/providers/openai-compat/types.d.ts +75 -0
  458. package/dist/providers/openai-compat/types.d.ts.map +1 -0
  459. package/dist/providers/openai-compat/types.js +9 -0
  460. package/dist/providers/openai-compat/types.js.map +1 -0
  461. package/dist/providers/openai-compat-provider.d.ts +90 -0
  462. package/dist/providers/openai-compat-provider.d.ts.map +1 -0
  463. package/dist/providers/openai-compat-provider.js +282 -0
  464. package/dist/providers/openai-compat-provider.js.map +1 -0
  465. package/dist/providers/openai-provider.d.ts +98 -27
  466. package/dist/providers/openai-provider.d.ts.map +1 -1
  467. package/dist/providers/openai-provider.js +1037 -105
  468. package/dist/providers/openai-provider.js.map +1 -1
  469. package/dist/providers/openrouter-provider.d.ts +58 -13
  470. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  471. package/dist/providers/openrouter-provider.js +383 -51
  472. package/dist/providers/openrouter-provider.js.map +1 -1
  473. package/dist/providers/provider-call-failure.d.ts +39 -0
  474. package/dist/providers/provider-call-failure.d.ts.map +1 -0
  475. package/dist/providers/provider-call-failure.js +132 -0
  476. package/dist/providers/provider-call-failure.js.map +1 -0
  477. package/dist/providers/provider-error.d.ts +59 -0
  478. package/dist/providers/provider-error.d.ts.map +1 -0
  479. package/dist/providers/provider-error.js +171 -0
  480. package/dist/providers/provider-error.js.map +1 -0
  481. package/dist/providers/provider-generations.d.ts +99 -0
  482. package/dist/providers/provider-generations.d.ts.map +1 -0
  483. package/dist/providers/provider-generations.js +71 -0
  484. package/dist/providers/provider-generations.js.map +1 -0
  485. package/dist/providers/provider-queue.d.ts +62 -0
  486. package/dist/providers/provider-queue.d.ts.map +1 -0
  487. package/dist/providers/provider-queue.js +28 -0
  488. package/dist/providers/provider-queue.js.map +1 -0
  489. package/dist/providers/provider-registry.d.ts +33 -14
  490. package/dist/providers/provider-registry.d.ts.map +1 -1
  491. package/dist/providers/provider-registry.js +85 -68
  492. package/dist/providers/provider-registry.js.map +1 -1
  493. package/dist/providers/provider-request-log.d.ts +53 -0
  494. package/dist/providers/provider-request-log.d.ts.map +1 -0
  495. package/dist/providers/provider-request-log.js +168 -0
  496. package/dist/providers/provider-request-log.js.map +1 -0
  497. package/dist/providers/provider-session.d.ts +3 -0
  498. package/dist/providers/provider-session.d.ts.map +1 -0
  499. package/dist/providers/provider-session.js +10 -0
  500. package/dist/providers/provider-session.js.map +1 -0
  501. package/dist/providers/provider-transport.d.ts +11 -0
  502. package/dist/providers/provider-transport.d.ts.map +1 -0
  503. package/dist/providers/provider-transport.js +11 -0
  504. package/dist/providers/provider-transport.js.map +1 -0
  505. package/dist/providers/python-provider.d.ts +26 -13
  506. package/dist/providers/python-provider.d.ts.map +1 -1
  507. package/dist/providers/python-provider.js +204 -25
  508. package/dist/providers/python-provider.js.map +1 -1
  509. package/dist/providers/replicate-provider.d.ts +91 -8
  510. package/dist/providers/replicate-provider.d.ts.map +1 -1
  511. package/dist/providers/replicate-provider.js +823 -65
  512. package/dist/providers/replicate-provider.js.map +1 -1
  513. package/dist/providers/replicate-retry.d.ts +30 -0
  514. package/dist/providers/replicate-retry.d.ts.map +1 -0
  515. package/dist/providers/replicate-retry.js +97 -0
  516. package/dist/providers/replicate-retry.js.map +1 -0
  517. package/dist/providers/requesty-provider.d.ts +30 -0
  518. package/dist/providers/requesty-provider.d.ts.map +1 -0
  519. package/dist/providers/requesty-provider.js +87 -0
  520. package/dist/providers/requesty-provider.js.map +1 -0
  521. package/dist/providers/responses-api.d.ts +27 -0
  522. package/dist/providers/responses-api.d.ts.map +1 -0
  523. package/dist/providers/responses-api.js +297 -0
  524. package/dist/providers/responses-api.js.map +1 -0
  525. package/dist/providers/reve-provider.d.ts +46 -0
  526. package/dist/providers/reve-provider.d.ts.map +1 -0
  527. package/dist/providers/reve-provider.js +165 -0
  528. package/dist/providers/reve-provider.js.map +1 -0
  529. package/dist/providers/rodin-provider.d.ts +25 -2
  530. package/dist/providers/rodin-provider.d.ts.map +1 -1
  531. package/dist/providers/rodin-provider.js +95 -51
  532. package/dist/providers/rodin-provider.js.map +1 -1
  533. package/dist/providers/safe-url.d.ts +70 -0
  534. package/dist/providers/safe-url.d.ts.map +1 -0
  535. package/dist/providers/safe-url.js +277 -0
  536. package/dist/providers/safe-url.js.map +1 -0
  537. package/dist/providers/scripted-provider.d.ts +9 -0
  538. package/dist/providers/scripted-provider.d.ts.map +1 -1
  539. package/dist/providers/scripted-provider.js +86 -10
  540. package/dist/providers/scripted-provider.js.map +1 -1
  541. package/dist/providers/structured-output.d.ts +42 -0
  542. package/dist/providers/structured-output.d.ts.map +1 -0
  543. package/dist/providers/structured-output.js +83 -0
  544. package/dist/providers/structured-output.js.map +1 -0
  545. package/dist/providers/together-operations.d.ts +27 -0
  546. package/dist/providers/together-operations.d.ts.map +1 -0
  547. package/dist/providers/together-operations.js +95 -0
  548. package/dist/providers/together-operations.js.map +1 -0
  549. package/dist/providers/together-provider.d.ts +18 -18
  550. package/dist/providers/together-provider.d.ts.map +1 -1
  551. package/dist/providers/together-provider.js +140 -367
  552. package/dist/providers/together-provider.js.map +1 -1
  553. package/dist/providers/topaz-provider.d.ts +45 -0
  554. package/dist/providers/topaz-provider.d.ts.map +1 -0
  555. package/dist/providers/topaz-provider.js +244 -0
  556. package/dist/providers/topaz-provider.js.map +1 -0
  557. package/dist/providers/types.d.ts +641 -4
  558. package/dist/providers/types.d.ts.map +1 -1
  559. package/dist/providers/types.js +81 -1
  560. package/dist/providers/types.js.map +1 -1
  561. package/dist/providers/useapi-provider.d.ts +28 -0
  562. package/dist/providers/useapi-provider.d.ts.map +1 -0
  563. package/dist/providers/useapi-provider.js +274 -0
  564. package/dist/providers/useapi-provider.js.map +1 -0
  565. package/dist/providers/video-duration.d.ts +6 -0
  566. package/dist/providers/video-duration.d.ts.map +1 -0
  567. package/dist/providers/video-duration.js +63 -0
  568. package/dist/providers/video-duration.js.map +1 -0
  569. package/dist/providers/video-frame-fallback.d.ts +39 -0
  570. package/dist/providers/video-frame-fallback.d.ts.map +1 -0
  571. package/dist/providers/video-frame-fallback.js +155 -0
  572. package/dist/providers/video-frame-fallback.js.map +1 -0
  573. package/dist/providers/video-frames.d.ts +61 -0
  574. package/dist/providers/video-frames.d.ts.map +1 -0
  575. package/dist/providers/video-frames.js +208 -0
  576. package/dist/providers/video-frames.js.map +1 -0
  577. package/dist/providers/video-mime.d.ts +14 -0
  578. package/dist/providers/video-mime.d.ts.map +1 -0
  579. package/dist/providers/video-mime.js +44 -0
  580. package/dist/providers/video-mime.js.map +1 -0
  581. package/dist/providers/video-to-audio.d.ts +34 -0
  582. package/dist/providers/video-to-audio.d.ts.map +1 -0
  583. package/dist/providers/video-to-audio.js +62 -0
  584. package/dist/providers/video-to-audio.js.map +1 -0
  585. package/dist/providers/vllm-provider.d.ts +20 -8
  586. package/dist/providers/vllm-provider.d.ts.map +1 -1
  587. package/dist/providers/vllm-provider.js +44 -23
  588. package/dist/providers/vllm-provider.js.map +1 -1
  589. package/dist/providers/voyage-provider.d.ts +12 -3
  590. package/dist/providers/voyage-provider.d.ts.map +1 -1
  591. package/dist/providers/voyage-provider.js +21 -7
  592. package/dist/providers/voyage-provider.js.map +1 -1
  593. package/dist/providers/xai-provider.d.ts +56 -13
  594. package/dist/providers/xai-provider.d.ts.map +1 -1
  595. package/dist/providers/xai-provider.js +307 -22
  596. package/dist/providers/xai-provider.js.map +1 -1
  597. package/dist/python-bridge-base.d.ts +358 -0
  598. package/dist/python-bridge-base.d.ts.map +1 -0
  599. package/dist/python-bridge-base.js +1557 -0
  600. package/dist/python-bridge-base.js.map +1 -0
  601. package/dist/python-bridge-codec.d.ts +28 -0
  602. package/dist/python-bridge-codec.d.ts.map +1 -0
  603. package/dist/python-bridge-codec.js +39 -0
  604. package/dist/python-bridge-codec.js.map +1 -0
  605. package/dist/python-bridge-factory.d.ts +52 -0
  606. package/dist/python-bridge-factory.d.ts.map +1 -0
  607. package/dist/python-bridge-factory.js +69 -0
  608. package/dist/python-bridge-factory.js.map +1 -0
  609. package/dist/python-bridge-framing.d.ts +68 -0
  610. package/dist/python-bridge-framing.d.ts.map +1 -0
  611. package/dist/python-bridge-framing.js +91 -0
  612. package/dist/python-bridge-framing.js.map +1 -0
  613. package/dist/python-bridge-types.d.ts +545 -2
  614. package/dist/python-bridge-types.d.ts.map +1 -1
  615. package/dist/python-bridge-types.js +49 -1
  616. package/dist/python-bridge-types.js.map +1 -1
  617. package/dist/python-graph-resolver.d.ts +57 -0
  618. package/dist/python-graph-resolver.d.ts.map +1 -0
  619. package/dist/python-graph-resolver.js +79 -0
  620. package/dist/python-graph-resolver.js.map +1 -0
  621. package/dist/python-node-executor.d.ts +36 -4
  622. package/dist/python-node-executor.d.ts.map +1 -1
  623. package/dist/python-node-executor.js +177 -86
  624. package/dist/python-node-executor.js.map +1 -1
  625. package/dist/python-stdio-bridge.d.ts +18 -37
  626. package/dist/python-stdio-bridge.d.ts.map +1 -1
  627. package/dist/python-stdio-bridge.js +148 -475
  628. package/dist/python-stdio-bridge.js.map +1 -1
  629. package/dist/python-websocket-bridge.d.ts +140 -0
  630. package/dist/python-websocket-bridge.d.ts.map +1 -0
  631. package/dist/python-websocket-bridge.js +561 -0
  632. package/dist/python-websocket-bridge.js.map +1 -0
  633. package/dist/python-worker-stderr.d.ts +4 -0
  634. package/dist/python-worker-stderr.d.ts.map +1 -0
  635. package/dist/python-worker-stderr.js +24 -0
  636. package/dist/python-worker-stderr.js.map +1 -0
  637. package/dist/recommended-models.d.ts +2 -2
  638. package/dist/recommended-models.d.ts.map +1 -1
  639. package/dist/recommended-models.js +44 -4
  640. package/dist/recommended-models.js.map +1 -1
  641. package/dist/recoverable-node-error.d.ts +31 -0
  642. package/dist/recoverable-node-error.d.ts.map +1 -0
  643. package/dist/recoverable-node-error.js +37 -0
  644. package/dist/recoverable-node-error.js.map +1 -0
  645. package/dist/redact-params.d.ts +13 -0
  646. package/dist/redact-params.d.ts.map +1 -0
  647. package/dist/redact-params.js +57 -0
  648. package/dist/redact-params.js.map +1 -0
  649. package/dist/run-context.d.ts +20 -0
  650. package/dist/run-context.d.ts.map +1 -0
  651. package/dist/run-context.js +18 -0
  652. package/dist/run-context.js.map +1 -0
  653. package/dist/run-trace-context.d.ts +30 -0
  654. package/dist/run-trace-context.d.ts.map +1 -0
  655. package/dist/run-trace-context.js +80 -0
  656. package/dist/run-trace-context.js.map +1 -0
  657. package/dist/run-trace-processor.d.ts +65 -0
  658. package/dist/run-trace-processor.d.ts.map +1 -0
  659. package/dist/run-trace-processor.js +417 -0
  660. package/dist/run-trace-processor.js.map +1 -0
  661. package/dist/run-trace-serialization.d.ts +5 -0
  662. package/dist/run-trace-serialization.d.ts.map +1 -0
  663. package/dist/run-trace-serialization.js +113 -0
  664. package/dist/run-trace-serialization.js.map +1 -0
  665. package/dist/sandbox-module-catalog.d.ts +43 -0
  666. package/dist/sandbox-module-catalog.d.ts.map +1 -0
  667. package/dist/sandbox-module-catalog.js +25 -0
  668. package/dist/sandbox-module-catalog.js.map +1 -0
  669. package/dist/storage-workspace.d.ts +62 -0
  670. package/dist/storage-workspace.d.ts.map +1 -0
  671. package/dist/storage-workspace.js +441 -0
  672. package/dist/storage-workspace.js.map +1 -0
  673. package/dist/swappable-python-bridge.d.ts +83 -0
  674. package/dist/swappable-python-bridge.d.ts.map +1 -0
  675. package/dist/swappable-python-bridge.js +246 -0
  676. package/dist/swappable-python-bridge.js.map +1 -0
  677. package/dist/telemetry.d.ts +16 -3
  678. package/dist/telemetry.d.ts.map +1 -1
  679. package/dist/telemetry.js +76 -20
  680. package/dist/telemetry.js.map +1 -1
  681. package/dist/testing.d.ts +81 -0
  682. package/dist/testing.d.ts.map +1 -0
  683. package/dist/testing.js +130 -0
  684. package/dist/testing.js.map +1 -0
  685. package/dist/token-counter.d.ts +30 -0
  686. package/dist/token-counter.d.ts.map +1 -0
  687. package/dist/token-counter.js +156 -0
  688. package/dist/token-counter.js.map +1 -0
  689. package/dist/trace-exporters.d.ts +11 -28
  690. package/dist/trace-exporters.d.ts.map +1 -1
  691. package/dist/trace-exporters.js +69 -22
  692. package/dist/trace-exporters.js.map +1 -1
  693. package/dist/tracing-helpers.d.ts +60 -26
  694. package/dist/tracing-helpers.d.ts.map +1 -1
  695. package/dist/tracing-helpers.js +100 -25
  696. package/dist/tracing-helpers.js.map +1 -1
  697. package/dist/trim-video-window.d.ts +8 -0
  698. package/dist/trim-video-window.d.ts.map +1 -0
  699. package/dist/trim-video-window.js +50 -0
  700. package/dist/trim-video-window.js.map +1 -0
  701. package/dist/turn-budget.d.ts +278 -0
  702. package/dist/turn-budget.d.ts.map +1 -0
  703. package/dist/turn-budget.js +365 -0
  704. package/dist/turn-budget.js.map +1 -0
  705. package/dist/variable-channel.d.ts +48 -0
  706. package/dist/variable-channel.d.ts.map +1 -0
  707. package/dist/variable-channel.js +110 -0
  708. package/dist/variable-channel.js.map +1 -0
  709. package/dist/workspace.d.ts +119 -0
  710. package/dist/workspace.d.ts.map +1 -0
  711. package/dist/workspace.js +112 -0
  712. package/dist/workspace.js.map +1 -0
  713. package/package.json +121 -19
@@ -1,99 +1,11 @@
1
- import OpenAI from "openai";
2
- import { OpenAIProvider } from "./openai-provider.js";
3
- // ─── Static model catalogs ────────────────────────────────────────────────────
4
- // Sources: https://github.com/togethercomputer/skills
5
- const TOGETHER_IMAGE_MODELS = [
6
- {
7
- id: "black-forest-labs/FLUX.1-schnell",
8
- name: "FLUX.1 Schnell",
9
- provider: "together",
10
- supportedTasks: ["text_to_image"]
11
- },
12
- {
13
- id: "black-forest-labs/FLUX.1.1-pro",
14
- name: "FLUX.1.1 Pro",
15
- provider: "together",
16
- supportedTasks: ["text_to_image"]
17
- },
18
- {
19
- id: "black-forest-labs/FLUX.2-pro",
20
- name: "FLUX.2 Pro",
21
- provider: "together",
22
- supportedTasks: ["text_to_image", "image_to_image"]
23
- },
24
- {
25
- id: "black-forest-labs/FLUX.2-dev",
26
- name: "FLUX.2 Dev",
27
- provider: "together",
28
- supportedTasks: ["text_to_image", "image_to_image"]
29
- },
30
- {
31
- id: "black-forest-labs/FLUX.2-flex",
32
- name: "FLUX.2 Flex",
33
- provider: "together",
34
- supportedTasks: ["text_to_image", "image_to_image"]
35
- },
36
- {
37
- id: "black-forest-labs/FLUX.1-kontext-pro",
38
- name: "FLUX.1 Kontext Pro",
39
- provider: "together",
40
- supportedTasks: ["text_to_image", "image_to_image"]
41
- },
42
- {
43
- id: "black-forest-labs/FLUX.1-kontext-max",
44
- name: "FLUX.1 Kontext Max",
45
- provider: "together",
46
- supportedTasks: ["text_to_image", "image_to_image"]
47
- },
48
- {
49
- id: "google/imagen-4.0-preview",
50
- name: "Imagen 4.0 Preview",
51
- provider: "together",
52
- supportedTasks: ["text_to_image"]
53
- },
54
- {
55
- id: "google/imagen-4.0-fast",
56
- name: "Imagen 4.0 Fast",
57
- provider: "together",
58
- supportedTasks: ["text_to_image"]
59
- },
60
- {
61
- id: "google/flash-image-2.5",
62
- name: "Flash Image 2.5",
63
- provider: "together",
64
- supportedTasks: ["text_to_image"]
65
- },
66
- {
67
- id: "google/gemini-3-pro-image",
68
- name: "Gemini 3 Pro Image",
69
- provider: "together",
70
- supportedTasks: ["text_to_image", "image_to_image"]
71
- },
72
- {
73
- id: "ideogram/ideogram-3.0",
74
- name: "Ideogram 3.0",
75
- provider: "together",
76
- supportedTasks: ["text_to_image"]
77
- },
78
- {
79
- id: "ByteDance-Seed/Seedream-4.0",
80
- name: "Seedream 4.0",
81
- provider: "together",
82
- supportedTasks: ["text_to_image"]
83
- },
84
- {
85
- id: "ByteDance-Seed/Seedream-3.0",
86
- name: "Seedream 3.0",
87
- provider: "together",
88
- supportedTasks: ["text_to_image"]
89
- },
90
- {
91
- id: "stabilityai/stable-diffusion-3-medium",
92
- name: "Stable Diffusion 3 Medium",
93
- provider: "together",
94
- supportedTasks: ["text_to_image"]
95
- }
96
- ];
1
+ import { safeFetch } from "./safe-url.js";
2
+ import { togetherImage, togetherSpeech } from "./together-operations.js";
3
+ import { OpenAICompatProvider } from "./openai-compat-provider.js";
4
+ import { loadImageModels, loadVideoModels } from "./manifest-models.js";
5
+ import { bytesToImageDataUri } from "./image-mime.js";
6
+ // ─── Model catalogs ───────────────────────────────────────────────────────────
7
+ const TOGETHER_MANIFEST_PKG = "@nodetool-ai/together-nodes";
8
+ const TOGETHER_MANIFEST_PATH = "together-manifest.json";
97
9
  const TOGETHER_TTS_MODELS = [
98
10
  {
99
11
  id: "canopylabs/orpheus-3b-0.1-ft",
@@ -177,98 +89,6 @@ const TOGETHER_EMBEDDING_MODELS = [
177
89
  dimensions: 1024
178
90
  }
179
91
  ];
180
- const TOGETHER_VIDEO_MODELS = [
181
- {
182
- id: "minimax/hailuo-02",
183
- name: "MiniMax Hailuo 02",
184
- provider: "together",
185
- supportedTasks: ["text_to_video", "image_to_video"]
186
- },
187
- {
188
- id: "minimax/video-01-director",
189
- name: "MiniMax Video 01 Director",
190
- provider: "together",
191
- supportedTasks: ["text_to_video", "image_to_video"]
192
- },
193
- {
194
- id: "google/veo-3.0",
195
- name: "Veo 3.0",
196
- provider: "together",
197
- supportedTasks: ["text_to_video", "image_to_video"]
198
- },
199
- {
200
- id: "google/veo-3.0-audio",
201
- name: "Veo 3.0 + Audio",
202
- provider: "together",
203
- supportedTasks: ["text_to_video"]
204
- },
205
- {
206
- id: "google/veo-2.0",
207
- name: "Veo 2.0",
208
- provider: "together",
209
- supportedTasks: ["text_to_video", "image_to_video"]
210
- },
211
- {
212
- id: "openai/sora-2",
213
- name: "Sora 2",
214
- provider: "together",
215
- supportedTasks: ["text_to_video", "image_to_video"]
216
- },
217
- {
218
- id: "openai/sora-2-pro",
219
- name: "Sora 2 Pro",
220
- provider: "together",
221
- supportedTasks: ["text_to_video", "image_to_video"]
222
- },
223
- {
224
- id: "kwaivgI/kling-2.1-master",
225
- name: "Kling 2.1 Master",
226
- provider: "together",
227
- supportedTasks: ["text_to_video", "image_to_video"]
228
- },
229
- {
230
- id: "kwaivgI/kling-2.1-standard",
231
- name: "Kling 2.1 Standard",
232
- provider: "together",
233
- supportedTasks: ["text_to_video", "image_to_video"]
234
- },
235
- {
236
- id: "kwaivgI/kling-2.1-pro",
237
- name: "Kling 2.1 Pro",
238
- provider: "together",
239
- supportedTasks: ["text_to_video", "image_to_video"]
240
- },
241
- {
242
- id: "ByteDance/Seedance-1.0-pro",
243
- name: "Seedance 1.0 Pro",
244
- provider: "together",
245
- supportedTasks: ["text_to_video", "image_to_video"]
246
- },
247
- {
248
- id: "ByteDance/Seedance-1.0-lite",
249
- name: "Seedance 1.0 Lite",
250
- provider: "together",
251
- supportedTasks: ["text_to_video", "image_to_video"]
252
- },
253
- {
254
- id: "pixverse/pixverse-v5",
255
- name: "PixVerse v5",
256
- provider: "together",
257
- supportedTasks: ["text_to_video", "image_to_video"]
258
- },
259
- {
260
- id: "vidu/vidu-2.0",
261
- name: "Vidu 2.0",
262
- provider: "together",
263
- supportedTasks: ["text_to_video", "image_to_video"]
264
- },
265
- {
266
- id: "vidu/vidu-q1",
267
- name: "Vidu Q1",
268
- provider: "together",
269
- supportedTasks: ["text_to_video", "image_to_video"]
270
- }
271
- ];
272
92
  // ─── WAV header parser ────────────────────────────────────────────────────────
273
93
  /**
274
94
  * Extract raw PCM Int16 samples and the sample rate from a WAV buffer.
@@ -283,7 +103,11 @@ function parseWavPCM(bytes) {
283
103
  // Chunk IDs are ASCII — read as big-endian uint32 to compare with literals
284
104
  const chunkId = view.getUint32(offset, false);
285
105
  const chunkSize = view.getUint32(offset + 4, true);
286
- if (chunkId === 0x666d7420 /* "fmt " */ && offset + 12 <= bytes.byteLength) {
106
+ if (chunkId === 0x666d7420 /* "fmt " */ &&
107
+ offset + 16 <= bytes.byteLength) {
108
+ // The sampleRate read is a 4-byte uint32 at offset+12, so it needs
109
+ // offset+16 in bounds — the previous offset+12 guard let getUint32 throw
110
+ // RangeError on a WAV truncated between offset+12 and offset+15.
287
111
  sampleRate = view.getUint32(offset + 12, true);
288
112
  }
289
113
  else if (chunkId === 0x64617461 /* "data" */) {
@@ -308,8 +132,42 @@ function parseWavPCM(bytes) {
308
132
  sampleRate
309
133
  };
310
134
  }
135
+ // ─── Abortable sleep ──────────────────────────────────────────────────────────
136
+ /** Resolve the abort reason as an Error (mirrors the gemini provider). */
137
+ function abortError(signal) {
138
+ return signal?.reason instanceof Error ? signal.reason : new Error("Aborted");
139
+ }
140
+ /** Sleep that rejects promptly when `signal` aborts instead of running full. */
141
+ function abortableSleep(ms, signal) {
142
+ return new Promise((resolve, reject) => {
143
+ if (signal?.aborted) {
144
+ reject(abortError(signal));
145
+ return;
146
+ }
147
+ const onAbort = () => {
148
+ clearTimeout(timer);
149
+ reject(abortError(signal));
150
+ };
151
+ const timer = setTimeout(() => {
152
+ signal?.removeEventListener("abort", onAbort);
153
+ resolve();
154
+ }, ms);
155
+ signal?.addEventListener("abort", onAbort, { once: true });
156
+ });
157
+ }
311
158
  // ─── Provider ─────────────────────────────────────────────────────────────────
312
- export class TogetherProvider extends OpenAIProvider {
159
+ export class TogetherProvider extends OpenAICompatProvider {
160
+ declaredCapabilities() {
161
+ return [
162
+ "text_to_image",
163
+ "image_to_image",
164
+ "text_to_video",
165
+ "image_to_video",
166
+ "text_to_speech",
167
+ "automatic_speech_recognition",
168
+ "generate_embedding"
169
+ ];
170
+ }
313
171
  static requiredSecrets() {
314
172
  return ["TOGETHER_API_KEY"];
315
173
  }
@@ -320,16 +178,11 @@ export class TogetherProvider extends OpenAIProvider {
320
178
  throw new Error("TOGETHER_API_KEY is required");
321
179
  }
322
180
  const fetchFn = options.fetchFn ?? globalThis.fetch.bind(globalThis);
323
- super({ OPENAI_API_KEY: apiKey }, {
324
- client: options.client,
325
- clientFactory: options.clientFactory ??
326
- ((key) => new OpenAI({
327
- apiKey: key,
328
- baseURL: "https://api.together.xyz/v1"
329
- })),
330
- fetchFn
331
- });
332
- this.provider = "together";
181
+ super({
182
+ providerId: "together",
183
+ apiKey,
184
+ baseURL: "https://api.together.xyz/v1"
185
+ }, { ...options, fetchFn });
333
186
  this._togetherFetch = fetchFn;
334
187
  }
335
188
  getContainerEnv() {
@@ -349,7 +202,7 @@ export class TogetherProvider extends OpenAIProvider {
349
202
  return [];
350
203
  }
351
204
  const payload = (await response.json());
352
- const rows = Array.isArray(payload) ? payload : payload.data ?? [];
205
+ const rows = Array.isArray(payload) ? payload : (payload.data ?? []);
353
206
  return rows
354
207
  .filter((row) => typeof row.id === "string" && row.id.length > 0)
355
208
  .filter((row) => {
@@ -364,7 +217,7 @@ export class TogetherProvider extends OpenAIProvider {
364
217
  }
365
218
  // ─── Image models ───────────────────────────────────────────────────────────
366
219
  async getAvailableImageModels() {
367
- return TOGETHER_IMAGE_MODELS;
220
+ return loadImageModels(TOGETHER_MANIFEST_PKG, TOGETHER_MANIFEST_PATH, "together");
368
221
  }
369
222
  /**
370
223
  * Text-to-image generation via Together's `/v1/images/generations` endpoint.
@@ -372,117 +225,46 @@ export class TogetherProvider extends OpenAIProvider {
372
225
  * combined `size` string so we can pass the full resolution range.
373
226
  */
374
227
  async textToImage(params) {
375
- if (!params.prompt) {
376
- throw new Error("The input prompt cannot be empty.");
377
- }
378
- const body = {
379
- model: params.model.id,
380
- prompt: params.prompt,
381
- n: 1,
382
- response_format: "b64_json"
383
- };
384
- if (params.width != null)
385
- body.width = params.width;
386
- if (params.height != null)
387
- body.height = params.height;
388
- if (params.numInferenceSteps != null)
389
- body.steps = params.numInferenceSteps;
390
- if (params.guidanceScale != null)
391
- body.guidance_scale = params.guidanceScale;
392
- if (params.seed != null)
393
- body.seed = params.seed;
394
- if (params.negativePrompt)
395
- body.negative_prompt = params.negativePrompt;
396
- const response = await this._togetherFetch("https://api.together.xyz/v1/images/generations", {
397
- method: "POST",
398
- headers: {
399
- Authorization: `Bearer ${this.apiKey}`,
400
- "Content-Type": "application/json"
401
- },
402
- body: JSON.stringify(body)
228
+ return togetherImage(this.apiKey, params.model.id, {
229
+ ...params,
230
+ steps: params.numInferenceSteps
231
+ }, {
232
+ fetchFn: this._togetherFetch,
233
+ label: "generation",
234
+ signal: params.signal,
235
+ download: this.downloadImage
403
236
  });
404
- if (!response.ok) {
405
- const errorText = await response.text();
406
- throw new Error(`Together image generation failed: ${errorText}`);
407
- }
408
- const payload = (await response.json());
409
- const item = payload.data?.[0];
410
- if (!item) {
411
- throw new Error("Together image generation returned no data.");
412
- }
413
- if (item.b64_json) {
414
- return Uint8Array.from(Buffer.from(item.b64_json, "base64"));
415
- }
416
- if (item.url) {
417
- const fetchResponse = await this._togetherFetch(item.url);
418
- if (!fetchResponse.ok) {
419
- throw new Error(`Image fetch failed: ${fetchResponse.status}`);
420
- }
421
- return new Uint8Array(await fetchResponse.arrayBuffer());
422
- }
423
- throw new Error("Together image generation returned no image data.");
424
237
  }
425
- /**
426
- * Image-to-image editing via Together's Kontext models.
427
- * The image is encoded as a base64 data URI and passed as `image_url`.
428
- * This requires a model that supports the `image_url` parameter
429
- * (e.g. FLUX.1-kontext-pro, FLUX.1-kontext-max, FLUX.2-pro/dev/flex).
430
- */
431
- async imageToImage(image, params) {
432
- if (!image || image.length === 0) {
238
+ async imageToImage(images, params) {
239
+ const sources = images.filter((bytes) => bytes && bytes.length > 0);
240
+ if (sources.length === 0) {
433
241
  throw new Error("image must not be empty.");
434
242
  }
435
- if (!params.prompt) {
436
- throw new Error("The input prompt cannot be empty.");
437
- }
438
- const base64 = Buffer.from(image).toString("base64");
439
- const imageUrl = `data:image/jpeg;base64,${base64}`;
440
- const body = {
441
- model: params.model.id,
243
+ const urls = sources.map(bytesToImageDataUri);
244
+ return togetherImage(this.apiKey, params.model.id, {
442
245
  prompt: params.prompt,
443
- image_url: imageUrl,
444
- n: 1,
445
- response_format: "b64_json"
446
- };
447
- if (params.targetWidth != null)
448
- body.width = params.targetWidth;
449
- if (params.targetHeight != null)
450
- body.height = params.targetHeight;
451
- if (params.numInferenceSteps != null)
452
- body.steps = params.numInferenceSteps;
453
- if (params.guidanceScale != null)
454
- body.guidance_scale = params.guidanceScale;
455
- if (params.seed != null)
456
- body.seed = params.seed;
457
- const response = await this._togetherFetch("https://api.together.xyz/v1/images/generations", {
458
- method: "POST",
459
- headers: {
460
- Authorization: `Bearer ${this.apiKey}`,
461
- "Content-Type": "application/json"
462
- },
463
- body: JSON.stringify(body)
246
+ ...(urls.length === 1
247
+ ? { imageUrl: urls[0] }
248
+ : { referenceImages: urls }),
249
+ width: params.targetWidth,
250
+ height: params.targetHeight,
251
+ steps: params.numInferenceSteps,
252
+ guidanceScale: params.guidanceScale,
253
+ seed: params.seed
254
+ }, {
255
+ fetchFn: this._togetherFetch,
256
+ label: "editing",
257
+ signal: params.signal,
258
+ download: this.downloadImage
464
259
  });
260
+ }
261
+ downloadImage = async (url, signal) => {
262
+ const response = await safeFetch(url, { signal }, 5, this._togetherFetch);
465
263
  if (!response.ok) {
466
- const errorText = await response.text();
467
- throw new Error(`Together image editing failed: ${errorText}`);
468
- }
469
- const payload = (await response.json());
470
- const item = payload.data?.[0];
471
- if (!item) {
472
- throw new Error("Together image editing returned no data.");
264
+ throw new Error(`Image fetch failed: ${response.status}`);
473
265
  }
474
- if (item.b64_json) {
475
- return Uint8Array.from(Buffer.from(item.b64_json, "base64"));
476
- }
477
- if (item.url) {
478
- const fetchResponse = await this._togetherFetch(item.url);
479
- if (!fetchResponse.ok) {
480
- throw new Error(`Image fetch failed: ${fetchResponse.status}`);
481
- }
482
- return new Uint8Array(await fetchResponse.arrayBuffer());
483
- }
484
- throw new Error("Together image editing returned no image data.");
485
- }
266
+ return new Uint8Array(await response.arrayBuffer());
267
+ };
486
268
  // ─── TTS ────────────────────────────────────────────────────────────────────
487
269
  async getAvailableTTSModels() {
488
270
  return TOGETHER_TTS_MODELS;
@@ -493,31 +275,10 @@ export class TogetherProvider extends OpenAIProvider {
493
275
  * than OpenAI's "pcm" label, so we request "wav" and strip the header.
494
276
  */
495
277
  async *textToSpeech(args) {
496
- if (!args.text) {
497
- throw new Error("text must not be empty");
498
- }
499
- const voice = args.voice ?? "tara"; // Default to "tara" (Orpheus); Kokoro callers should pass e.g. "af_heart"
500
- const body = {
501
- model: args.model,
502
- input: args.text,
503
- voice,
504
- response_format: "wav"
505
- };
506
- if (args.speed != null)
507
- body.speed = args.speed;
508
- const response = await this._togetherFetch("https://api.together.xyz/v1/audio/speech", {
509
- method: "POST",
510
- headers: {
511
- Authorization: `Bearer ${this.apiKey}`,
512
- "Content-Type": "application/json"
513
- },
514
- body: JSON.stringify(body)
515
- });
516
- if (!response.ok) {
517
- const errorText = await response.text();
518
- throw new Error(`Together TTS failed: ${errorText}`);
519
- }
520
- const bytes = new Uint8Array(await response.arrayBuffer());
278
+ const bytes = await togetherSpeech(this.apiKey, args.model, {
279
+ ...args,
280
+ format: "wav"
281
+ }, { fetchFn: this._togetherFetch, signal: args.signal });
521
282
  const { samples, sampleRate } = parseWavPCM(bytes);
522
283
  yield { samples, sampleRate };
523
284
  }
@@ -539,28 +300,10 @@ export class TogetherProvider extends OpenAIProvider {
539
300
  if (!(fmt in formatToMime)) {
540
301
  return null;
541
302
  }
542
- const voice = args.voice ?? "tara";
543
- const body = {
544
- model: args.model,
545
- input: args.text,
546
- voice,
547
- response_format: fmt
548
- };
549
- if (args.speed != null)
550
- body.speed = args.speed;
551
- const response = await this._togetherFetch("https://api.together.xyz/v1/audio/speech", {
552
- method: "POST",
553
- headers: {
554
- Authorization: `Bearer ${this.apiKey}`,
555
- "Content-Type": "application/json"
556
- },
557
- body: JSON.stringify(body)
558
- });
559
- if (!response.ok) {
560
- const errorText = await response.text();
561
- throw new Error(`Together TTS failed: ${errorText}`);
562
- }
563
- const bytes = new Uint8Array(await response.arrayBuffer());
303
+ const bytes = await togetherSpeech(this.apiKey, args.model, {
304
+ ...args,
305
+ format: fmt
306
+ }, { fetchFn: this._togetherFetch, signal: args.signal });
564
307
  return { data: bytes, mimeType: formatToMime[fmt] };
565
308
  }
566
309
  // ─── ASR ────────────────────────────────────────────────────────────────────
@@ -578,7 +321,7 @@ export class TogetherProvider extends OpenAIProvider {
578
321
  // because Together's /v1/embeddings endpoint is OpenAI-compatible.
579
322
  // ─── Video models ───────────────────────────────────────────────────────────
580
323
  async getAvailableVideoModels() {
581
- return TOGETHER_VIDEO_MODELS;
324
+ return loadVideoModels(TOGETHER_MANIFEST_PKG, TOGETHER_MANIFEST_PATH, "together");
582
325
  }
583
326
  /**
584
327
  * Map generic resolution / aspect-ratio hints to concrete pixel dimensions
@@ -613,14 +356,41 @@ export class TogetherProvider extends OpenAIProvider {
613
356
  if (dims) {
614
357
  return { width: dims[0], height: dims[1] };
615
358
  }
616
- // Together's MiniMax default
359
+ // Fallback for aspect ratios / resolutions outside the preset table: derive
360
+ // the pixel size from the requested ratio so orientation is preserved (a
361
+ // portrait `2:3` request must not silently become a landscape video). Scale
362
+ // to a ~720p long edge, snapped to an even number as video encoders expect.
363
+ const ratio = ar.match(/^(\d+):(\d+)$/);
364
+ if (ratio) {
365
+ const rw = parseInt(ratio[1], 10);
366
+ const rh = parseInt(ratio[2], 10);
367
+ if (rw > 0 && rh > 0) {
368
+ const longEdge = res === "480p" ? 854 : res === "1080p" ? 1920 : 1280;
369
+ const even = (n) => Math.max(2, Math.round(n / 2) * 2);
370
+ if (rw >= rh) {
371
+ return { width: even(longEdge), height: even((longEdge * rh) / rw) };
372
+ }
373
+ return { width: even((longEdge * rw) / rh), height: even(longEdge) };
374
+ }
375
+ }
376
+ // Together's MiniMax default (landscape) when the ratio can't be parsed.
617
377
  return { width: 1366, height: 768 };
618
378
  }
619
379
  /**
620
380
  * Poll Together's video job endpoint until it reaches a terminal state.
621
381
  * Returns the final response payload.
622
382
  */
623
- async pollVideoJob(jobId) {
383
+ /**
384
+ * Per-call timeout signal (mirrors the gemini provider): threaded into the
385
+ * poll-loop fetch and sleep so an expired budget aborts the in-flight request
386
+ * promptly instead of leaking it until the internal poll cap.
387
+ */
388
+ timeoutSignal(timeoutSeconds) {
389
+ return timeoutSeconds && timeoutSeconds > 0
390
+ ? AbortSignal.timeout(timeoutSeconds * 1000)
391
+ : undefined;
392
+ }
393
+ async pollVideoJob(jobId, signal) {
624
394
  const timeoutMs = 10 * 60 * 1000; // 10 minutes
625
395
  const intervalMs = 5_000; // 5 seconds
626
396
  const start = Date.now();
@@ -628,8 +398,8 @@ export class TogetherProvider extends OpenAIProvider {
628
398
  if (Date.now() - start > timeoutMs) {
629
399
  throw new Error(`Together video generation timed out after ${timeoutMs / 1000}s for job ${jobId}`);
630
400
  }
631
- await new Promise((resolve) => setTimeout(resolve, intervalMs));
632
- const statusResponse = await this._togetherFetch(`https://api.together.xyz/v2/videos/${jobId}`, { headers: { Authorization: `Bearer ${this.apiKey}` } });
401
+ await abortableSleep(intervalMs, signal);
402
+ const statusResponse = await this._togetherFetch(`https://api.together.xyz/v2/videos/${jobId}`, { headers: { Authorization: `Bearer ${this.apiKey}` }, signal });
633
403
  if (!statusResponse.ok) {
634
404
  const errorText = await statusResponse.text();
635
405
  throw new Error(`Together video status check failed: ${errorText}`);
@@ -645,13 +415,13 @@ export class TogetherProvider extends OpenAIProvider {
645
415
  /**
646
416
  * Download a completed video from its signed URL and return the raw bytes.
647
417
  */
648
- async downloadVideo(status, label) {
418
+ async downloadVideo(status, label, signal) {
649
419
  const videoUrl = status.outputs?.video_url;
650
420
  if (!videoUrl) {
651
421
  const reason = status.error?.message ?? "unknown error";
652
422
  throw new Error(`Together ${label} failed: ${reason}`);
653
423
  }
654
- const videoResponse = await this._togetherFetch(videoUrl);
424
+ const videoResponse = await this._togetherFetch(videoUrl, { signal });
655
425
  if (!videoResponse.ok) {
656
426
  throw new Error(`Failed to download Together video: ${videoResponse.status}`);
657
427
  }
@@ -683,26 +453,28 @@ export class TogetherProvider extends OpenAIProvider {
683
453
  body.seed = params.seed;
684
454
  if (params.negativePrompt)
685
455
  body.negative_prompt = params.negativePrompt;
456
+ const signal = this.timeoutSignal(params.timeoutSeconds);
686
457
  const createResponse = await this._togetherFetch("https://api.together.xyz/v2/videos", {
687
458
  method: "POST",
688
459
  headers: {
689
460
  Authorization: `Bearer ${this.apiKey}`,
690
461
  "Content-Type": "application/json"
691
462
  },
692
- body: JSON.stringify(body)
463
+ body: JSON.stringify(body),
464
+ signal
693
465
  });
694
466
  if (!createResponse.ok) {
695
467
  const errorText = await createResponse.text();
696
468
  throw new Error(`Together video creation failed: ${errorText}`);
697
469
  }
698
470
  const job = (await createResponse.json());
699
- const finalStatus = await this.pollVideoJob(job.id);
471
+ const finalStatus = await this.pollVideoJob(job.id, signal);
700
472
  if (finalStatus.status !== "completed") {
701
473
  const reason = finalStatus.error?.message ??
702
474
  `job ended with status '${finalStatus.status}'`;
703
475
  throw new Error(`Together text-to-video failed: ${reason}`);
704
476
  }
705
- return this.downloadVideo(finalStatus, "text-to-video");
477
+ return this.downloadVideo(finalStatus, "text-to-video", signal);
706
478
  }
707
479
  /**
708
480
  * Image-to-video generation via Together's asynchronous `/v2/videos` API.
@@ -713,8 +485,7 @@ export class TogetherProvider extends OpenAIProvider {
713
485
  throw new Error("The input image cannot be empty.");
714
486
  }
715
487
  const { width, height } = this.resolveVideoDimensions(params.aspectRatio, params.resolution);
716
- const base64 = Buffer.from(image).toString("base64");
717
- const inputImage = `data:image/jpeg;base64,${base64}`;
488
+ const inputImage = bytesToImageDataUri(image);
718
489
  const body = {
719
490
  model: params.model.id,
720
491
  prompt: params.prompt ?? "",
@@ -733,26 +504,28 @@ export class TogetherProvider extends OpenAIProvider {
733
504
  body.seed = params.seed;
734
505
  if (params.negativePrompt)
735
506
  body.negative_prompt = params.negativePrompt;
507
+ const signal = this.timeoutSignal(params.timeoutSeconds);
736
508
  const createResponse = await this._togetherFetch("https://api.together.xyz/v2/videos", {
737
509
  method: "POST",
738
510
  headers: {
739
511
  Authorization: `Bearer ${this.apiKey}`,
740
512
  "Content-Type": "application/json"
741
513
  },
742
- body: JSON.stringify(body)
514
+ body: JSON.stringify(body),
515
+ signal
743
516
  });
744
517
  if (!createResponse.ok) {
745
518
  const errorText = await createResponse.text();
746
519
  throw new Error(`Together image-to-video creation failed: ${errorText}`);
747
520
  }
748
521
  const job = (await createResponse.json());
749
- const finalStatus = await this.pollVideoJob(job.id);
522
+ const finalStatus = await this.pollVideoJob(job.id, signal);
750
523
  if (finalStatus.status !== "completed") {
751
524
  const reason = finalStatus.error?.message ??
752
525
  `job ended with status '${finalStatus.status}'`;
753
526
  throw new Error(`Together image-to-video failed: ${reason}`);
754
527
  }
755
- return this.downloadVideo(finalStatus, "image-to-video");
528
+ return this.downloadVideo(finalStatus, "image-to-video", signal);
756
529
  }
757
530
  }
758
531
  //# sourceMappingURL=together-provider.js.map