@draht/ai 2026.6.11 → 2026.7.7

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 (557) hide show
  1. package/dist/api/anthropic-messages.d.ts +71 -0
  2. package/dist/api/anthropic-messages.d.ts.map +1 -0
  3. package/dist/api/anthropic-messages.js +972 -0
  4. package/dist/api/anthropic-messages.js.map +1 -0
  5. package/dist/api/anthropic-messages.lazy.d.ts +3 -0
  6. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -0
  7. package/dist/api/anthropic-messages.lazy.js +3 -0
  8. package/dist/api/anthropic-messages.lazy.js.map +1 -0
  9. package/dist/api/azure-openai-responses.d.ts +15 -0
  10. package/dist/api/azure-openai-responses.d.ts.map +1 -0
  11. package/dist/api/azure-openai-responses.js +222 -0
  12. package/dist/api/azure-openai-responses.js.map +1 -0
  13. package/dist/api/azure-openai-responses.lazy.d.ts +3 -0
  14. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -0
  15. package/dist/api/azure-openai-responses.lazy.js +3 -0
  16. package/dist/api/azure-openai-responses.lazy.js.map +1 -0
  17. package/dist/api/bedrock-converse-stream.d.ts +38 -0
  18. package/dist/api/bedrock-converse-stream.d.ts.map +1 -0
  19. package/dist/api/bedrock-converse-stream.js +876 -0
  20. package/dist/api/bedrock-converse-stream.js.map +1 -0
  21. package/dist/api/bedrock-converse-stream.lazy.d.ts +9 -0
  22. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -0
  23. package/dist/api/bedrock-converse-stream.lazy.js +30 -0
  24. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -0
  25. package/dist/{providers → api}/cloudflare.d.ts +0 -4
  26. package/dist/api/cloudflare.d.ts.map +1 -0
  27. package/dist/{providers → api}/cloudflare.js +0 -17
  28. package/dist/api/cloudflare.js.map +1 -0
  29. package/dist/api/github-copilot-headers.d.ts.map +1 -0
  30. package/dist/api/github-copilot-headers.js.map +1 -0
  31. package/dist/api/google-generative-ai.d.ts +13 -0
  32. package/dist/api/google-generative-ai.d.ts.map +1 -0
  33. package/dist/api/google-generative-ai.js +407 -0
  34. package/dist/api/google-generative-ai.js.map +1 -0
  35. package/dist/api/google-generative-ai.lazy.d.ts +3 -0
  36. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -0
  37. package/dist/api/google-generative-ai.lazy.js +3 -0
  38. package/dist/api/google-generative-ai.lazy.js.map +1 -0
  39. package/dist/api/google-shared.d.ts.map +1 -0
  40. package/dist/api/google-shared.js.map +1 -0
  41. package/dist/api/google-vertex.d.ts +15 -0
  42. package/dist/api/google-vertex.d.ts.map +1 -0
  43. package/dist/api/google-vertex.js +456 -0
  44. package/dist/api/google-vertex.js.map +1 -0
  45. package/dist/api/google-vertex.lazy.d.ts +3 -0
  46. package/dist/api/google-vertex.lazy.d.ts.map +1 -0
  47. package/dist/api/google-vertex.lazy.js +3 -0
  48. package/dist/api/google-vertex.lazy.js.map +1 -0
  49. package/dist/api/lazy.d.ts +15 -0
  50. package/dist/api/lazy.d.ts.map +1 -0
  51. package/dist/api/lazy.js +59 -0
  52. package/dist/api/lazy.js.map +1 -0
  53. package/dist/api/mistral-conversations.d.ts +25 -0
  54. package/dist/api/mistral-conversations.d.ts.map +1 -0
  55. package/dist/api/mistral-conversations.js +555 -0
  56. package/dist/api/mistral-conversations.js.map +1 -0
  57. package/dist/api/mistral-conversations.lazy.d.ts +3 -0
  58. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -0
  59. package/dist/api/mistral-conversations.lazy.js +3 -0
  60. package/dist/api/mistral-conversations.lazy.js.map +1 -0
  61. package/dist/{providers → api}/openai-codex-responses.d.ts +2 -2
  62. package/dist/api/openai-codex-responses.d.ts.map +1 -0
  63. package/dist/{providers → api}/openai-codex-responses.js +149 -93
  64. package/dist/api/openai-codex-responses.js.map +1 -0
  65. package/dist/api/openai-codex-responses.lazy.d.ts +3 -0
  66. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -0
  67. package/dist/api/openai-codex-responses.lazy.js +3 -0
  68. package/dist/api/openai-codex-responses.lazy.js.map +1 -0
  69. package/dist/{providers → api}/openai-completions.d.ts +2 -2
  70. package/dist/api/openai-completions.d.ts.map +1 -0
  71. package/dist/{providers → api}/openai-completions.js +155 -72
  72. package/dist/api/openai-completions.js.map +1 -0
  73. package/dist/api/openai-completions.lazy.d.ts +3 -0
  74. package/dist/api/openai-completions.lazy.d.ts.map +1 -0
  75. package/dist/api/openai-completions.lazy.js +3 -0
  76. package/dist/api/openai-completions.lazy.js.map +1 -0
  77. package/dist/api/openai-prompt-cache.d.ts.map +1 -0
  78. package/dist/api/openai-prompt-cache.js.map +1 -0
  79. package/dist/api/openai-responses-shared.d.ts.map +1 -0
  80. package/dist/{providers → api}/openai-responses-shared.js +190 -204
  81. package/dist/api/openai-responses-shared.js.map +1 -0
  82. package/dist/{providers → api}/openai-responses.d.ts +2 -2
  83. package/dist/api/openai-responses.d.ts.map +1 -0
  84. package/dist/{providers → api}/openai-responses.js +35 -41
  85. package/dist/api/openai-responses.js.map +1 -0
  86. package/dist/api/openai-responses.lazy.d.ts +3 -0
  87. package/dist/api/openai-responses.lazy.d.ts.map +1 -0
  88. package/dist/api/openai-responses.lazy.js +3 -0
  89. package/dist/api/openai-responses.lazy.js.map +1 -0
  90. package/dist/api/openrouter-images.d.ts +3 -0
  91. package/dist/api/openrouter-images.d.ts.map +1 -0
  92. package/dist/{providers/images/openrouter.js → api/openrouter-images.js} +7 -9
  93. package/dist/api/openrouter-images.js.map +1 -0
  94. package/dist/api/openrouter-images.lazy.d.ts +3 -0
  95. package/dist/api/openrouter-images.lazy.d.ts.map +1 -0
  96. package/dist/api/openrouter-images.lazy.js +4 -0
  97. package/dist/api/openrouter-images.lazy.js.map +1 -0
  98. package/dist/{providers → api}/simple-options.d.ts +3 -2
  99. package/dist/api/simple-options.d.ts.map +1 -0
  100. package/dist/{providers → api}/simple-options.js +12 -2
  101. package/dist/api/simple-options.js.map +1 -0
  102. package/dist/api/transform-messages.d.ts.map +1 -0
  103. package/dist/{providers → api}/transform-messages.js +4 -1
  104. package/dist/api/transform-messages.js.map +1 -0
  105. package/dist/auth/context.d.ts +7 -0
  106. package/dist/auth/context.d.ts.map +1 -0
  107. package/dist/auth/context.js +42 -0
  108. package/dist/auth/context.js.map +1 -0
  109. package/dist/auth/credential-store.d.ts +16 -0
  110. package/dist/auth/credential-store.d.ts.map +1 -0
  111. package/dist/auth/credential-store.js +37 -0
  112. package/dist/auth/credential-store.js.map +1 -0
  113. package/dist/auth/helpers.d.ts +20 -0
  114. package/dist/auth/helpers.d.ts.map +1 -0
  115. package/dist/auth/helpers.js +46 -0
  116. package/dist/auth/helpers.js.map +1 -0
  117. package/dist/auth/resolve.d.ts +26 -0
  118. package/dist/auth/resolve.d.ts.map +1 -0
  119. package/dist/auth/resolve.js +101 -0
  120. package/dist/auth/resolve.js.map +1 -0
  121. package/dist/auth/types.d.ts +180 -0
  122. package/dist/auth/types.d.ts.map +1 -0
  123. package/dist/auth/types.js +2 -0
  124. package/dist/auth/types.js.map +1 -0
  125. package/dist/bedrock-provider.d.ts +2 -2
  126. package/dist/bedrock-provider.d.ts.map +1 -1
  127. package/dist/bedrock-provider.js +3 -3
  128. package/dist/bedrock-provider.js.map +1 -1
  129. package/dist/compat.d.ts +65 -0
  130. package/dist/compat.d.ts.map +1 -0
  131. package/dist/compat.js +182 -0
  132. package/dist/compat.js.map +1 -0
  133. package/dist/env-api-keys.d.ts +5 -5
  134. package/dist/env-api-keys.d.ts.map +1 -1
  135. package/dist/env-api-keys.js +21 -57
  136. package/dist/env-api-keys.js.map +1 -1
  137. package/dist/image-models.generated.d.ts +64 -19
  138. package/dist/image-models.generated.d.ts.map +1 -1
  139. package/dist/image-models.generated.js +90 -45
  140. package/dist/image-models.generated.js.map +1 -1
  141. package/dist/images-models.d.ts +93 -0
  142. package/dist/images-models.d.ts.map +1 -0
  143. package/dist/images-models.js +141 -0
  144. package/dist/images-models.js.map +1 -0
  145. package/dist/index.d.ts +17 -18
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +7 -8
  148. package/dist/index.js.map +1 -1
  149. package/dist/legacy-api-aliases.d.ts +42 -0
  150. package/dist/legacy-api-aliases.d.ts.map +1 -0
  151. package/dist/legacy-api-aliases.js +49 -0
  152. package/dist/legacy-api-aliases.js.map +1 -0
  153. package/dist/models.d.ts +133 -9
  154. package/dist/models.d.ts.map +1 -1
  155. package/dist/models.generated.d.ts +3371 -658
  156. package/dist/models.generated.d.ts.map +1 -1
  157. package/dist/models.generated.js +70 -16932
  158. package/dist/models.generated.js.map +1 -1
  159. package/dist/models.js +185 -18
  160. package/dist/models.js.map +1 -1
  161. package/dist/providers/all.d.ts +21 -0
  162. package/dist/providers/all.d.ts.map +1 -0
  163. package/dist/providers/all.js +114 -0
  164. package/dist/providers/all.js.map +1 -0
  165. package/dist/providers/amazon-bedrock.d.ts +2 -37
  166. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  167. package/dist/providers/amazon-bedrock.js +35 -840
  168. package/dist/providers/amazon-bedrock.js.map +1 -1
  169. package/dist/providers/amazon-bedrock.models.d.ts +1875 -0
  170. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -0
  171. package/dist/providers/amazon-bedrock.models.js +1829 -0
  172. package/dist/providers/amazon-bedrock.models.js.map +1 -0
  173. package/dist/providers/ant-ling.d.ts +3 -0
  174. package/dist/providers/ant-ling.d.ts.map +1 -0
  175. package/dist/providers/ant-ling.js +15 -0
  176. package/dist/providers/ant-ling.js.map +1 -0
  177. package/dist/providers/ant-ling.models.d.ts +86 -0
  178. package/dist/providers/ant-ling.models.d.ts.map +1 -0
  179. package/dist/providers/ant-ling.models.js +60 -0
  180. package/dist/providers/ant-ling.models.js.map +1 -0
  181. package/dist/providers/anthropic.d.ts +2 -70
  182. package/dist/providers/anthropic.d.ts.map +1 -1
  183. package/dist/providers/anthropic.js +17 -957
  184. package/dist/providers/anthropic.js.map +1 -1
  185. package/dist/providers/anthropic.models.d.ts +274 -0
  186. package/dist/providers/anthropic.models.d.ts.map +1 -0
  187. package/dist/providers/anthropic.models.js +253 -0
  188. package/dist/providers/anthropic.models.js.map +1 -0
  189. package/dist/providers/azure-openai-responses.d.ts +2 -14
  190. package/dist/providers/azure-openai-responses.d.ts.map +1 -1
  191. package/dist/providers/azure-openai-responses.js +11 -220
  192. package/dist/providers/azure-openai-responses.js.map +1 -1
  193. package/dist/providers/azure-openai-responses.models.d.ts +804 -0
  194. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -0
  195. package/dist/providers/azure-openai-responses.models.js +743 -0
  196. package/dist/providers/azure-openai-responses.models.js.map +1 -0
  197. package/dist/providers/cerebras.d.ts +3 -0
  198. package/dist/providers/cerebras.d.ts.map +1 -0
  199. package/dist/providers/cerebras.js +15 -0
  200. package/dist/providers/cerebras.js.map +1 -0
  201. package/dist/providers/cerebras.models.d.ts +66 -0
  202. package/dist/providers/cerebras.models.d.ts.map +1 -0
  203. package/dist/providers/cerebras.models.js +59 -0
  204. package/dist/providers/cerebras.models.js.map +1 -0
  205. package/dist/providers/cloudflare-ai-gateway.d.ts +3 -0
  206. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -0
  207. package/dist/providers/cloudflare-ai-gateway.js +20 -0
  208. package/dist/providers/cloudflare-ai-gateway.js.map +1 -0
  209. package/dist/providers/cloudflare-ai-gateway.models.d.ts +786 -0
  210. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -0
  211. package/dist/providers/cloudflare-ai-gateway.models.js +684 -0
  212. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -0
  213. package/dist/providers/cloudflare-auth.d.ts +4 -0
  214. package/dist/providers/cloudflare-auth.d.ts.map +1 -0
  215. package/dist/providers/cloudflare-auth.js +85 -0
  216. package/dist/providers/cloudflare-auth.js.map +1 -0
  217. package/dist/providers/cloudflare-workers-ai.d.ts +3 -0
  218. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -0
  219. package/dist/providers/cloudflare-workers-ai.js +14 -0
  220. package/dist/providers/cloudflare-workers-ai.js.map +1 -0
  221. package/dist/providers/cloudflare-workers-ai.models.d.ts +302 -0
  222. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -0
  223. package/dist/providers/cloudflare-workers-ai.models.js +239 -0
  224. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -0
  225. package/dist/providers/deepseek.d.ts +3 -0
  226. package/dist/providers/deepseek.d.ts.map +1 -0
  227. package/dist/providers/deepseek.js +15 -0
  228. package/dist/providers/deepseek.js.map +1 -0
  229. package/dist/providers/deepseek.models.d.ts +63 -0
  230. package/dist/providers/deepseek.models.d.ts.map +1 -0
  231. package/dist/providers/deepseek.models.js +43 -0
  232. package/dist/providers/deepseek.models.js.map +1 -0
  233. package/dist/providers/faux.d.ts +43 -2
  234. package/dist/providers/faux.d.ts.map +1 -1
  235. package/dist/providers/faux.js +34 -7
  236. package/dist/providers/faux.js.map +1 -1
  237. package/dist/providers/fireworks.d.ts +3 -0
  238. package/dist/providers/fireworks.d.ts.map +1 -0
  239. package/dist/providers/fireworks.js +19 -0
  240. package/dist/providers/fireworks.js.map +1 -0
  241. package/dist/providers/fireworks.models.d.ts +381 -0
  242. package/dist/providers/fireworks.models.d.ts.map +1 -0
  243. package/dist/providers/fireworks.models.js +295 -0
  244. package/dist/providers/fireworks.models.js.map +1 -0
  245. package/dist/providers/github-copilot.d.ts +3 -0
  246. package/dist/providers/github-copilot.d.ts.map +1 -0
  247. package/dist/providers/github-copilot.js +25 -0
  248. package/dist/providers/github-copilot.js.map +1 -0
  249. package/dist/providers/github-copilot.models.d.ts +698 -0
  250. package/dist/providers/github-copilot.models.d.ts.map +1 -0
  251. package/dist/providers/github-copilot.models.js +483 -0
  252. package/dist/providers/github-copilot.models.js.map +1 -0
  253. package/dist/providers/google-vertex.d.ts +2 -14
  254. package/dist/providers/google-vertex.d.ts.map +1 -1
  255. package/dist/providers/google-vertex.js +30 -441
  256. package/dist/providers/google-vertex.js.map +1 -1
  257. package/dist/providers/google-vertex.models.d.ts +202 -0
  258. package/dist/providers/google-vertex.models.d.ts.map +1 -0
  259. package/dist/providers/google-vertex.models.js +182 -0
  260. package/dist/providers/google-vertex.models.js.map +1 -0
  261. package/dist/providers/google.d.ts +2 -12
  262. package/dist/providers/google.d.ts.map +1 -1
  263. package/dist/providers/google.js +12 -399
  264. package/dist/providers/google.js.map +1 -1
  265. package/dist/providers/google.models.d.ts +328 -0
  266. package/dist/providers/google.models.d.ts.map +1 -0
  267. package/dist/providers/google.models.js +288 -0
  268. package/dist/providers/google.models.js.map +1 -0
  269. package/dist/providers/groq.d.ts +3 -0
  270. package/dist/providers/groq.d.ts.map +1 -0
  271. package/dist/providers/groq.js +15 -0
  272. package/dist/providers/groq.js.map +1 -0
  273. package/dist/providers/groq.models.d.ts +128 -0
  274. package/dist/providers/groq.models.d.ts.map +1 -0
  275. package/dist/providers/groq.models.js +125 -0
  276. package/dist/providers/groq.models.js.map +1 -0
  277. package/dist/providers/huggingface.d.ts +3 -0
  278. package/dist/providers/huggingface.d.ts.map +1 -0
  279. package/dist/providers/huggingface.js +15 -0
  280. package/dist/providers/huggingface.js.map +1 -0
  281. package/dist/providers/huggingface.models.d.ts +983 -0
  282. package/dist/providers/huggingface.models.d.ts.map +1 -0
  283. package/dist/providers/huggingface.models.js +887 -0
  284. package/dist/providers/huggingface.models.js.map +1 -0
  285. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  286. package/dist/providers/images/register-builtins.js +2 -2
  287. package/dist/providers/images/register-builtins.js.map +1 -1
  288. package/dist/providers/kimi-coding.d.ts +3 -0
  289. package/dist/providers/kimi-coding.d.ts.map +1 -0
  290. package/dist/providers/kimi-coding.js +15 -0
  291. package/dist/providers/kimi-coding.js.map +1 -0
  292. package/dist/providers/kimi-coding.models.d.ts +63 -0
  293. package/dist/providers/kimi-coding.models.d.ts.map +1 -0
  294. package/dist/providers/kimi-coding.models.js +59 -0
  295. package/dist/providers/kimi-coding.models.js.map +1 -0
  296. package/dist/providers/minimax-cn.d.ts +3 -0
  297. package/dist/providers/minimax-cn.d.ts.map +1 -0
  298. package/dist/providers/minimax-cn.js +15 -0
  299. package/dist/providers/minimax-cn.js.map +1 -0
  300. package/dist/providers/minimax-cn.models.d.ts +54 -0
  301. package/dist/providers/minimax-cn.models.d.ts.map +1 -0
  302. package/dist/providers/minimax-cn.models.js +56 -0
  303. package/dist/providers/minimax-cn.models.js.map +1 -0
  304. package/dist/providers/minimax.d.ts +3 -0
  305. package/dist/providers/minimax.d.ts.map +1 -0
  306. package/dist/providers/minimax.js +15 -0
  307. package/dist/providers/minimax.js.map +1 -0
  308. package/dist/providers/minimax.models.d.ts +54 -0
  309. package/dist/providers/minimax.models.d.ts.map +1 -0
  310. package/dist/providers/minimax.models.js +56 -0
  311. package/dist/providers/minimax.models.js.map +1 -0
  312. package/dist/providers/mistral.d.ts +2 -24
  313. package/dist/providers/mistral.d.ts.map +1 -1
  314. package/dist/providers/mistral.js +12 -531
  315. package/dist/providers/mistral.js.map +1 -1
  316. package/dist/providers/mistral.models.d.ts +513 -0
  317. package/dist/providers/mistral.models.d.ts.map +1 -0
  318. package/dist/providers/mistral.models.js +515 -0
  319. package/dist/providers/mistral.models.js.map +1 -0
  320. package/dist/providers/moonshotai-cn.d.ts +3 -0
  321. package/dist/providers/moonshotai-cn.d.ts.map +1 -0
  322. package/dist/providers/moonshotai-cn.js +15 -0
  323. package/dist/providers/moonshotai-cn.js.map +1 -0
  324. package/dist/providers/moonshotai-cn.models.d.ts +234 -0
  325. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -0
  326. package/dist/providers/moonshotai-cn.models.js +169 -0
  327. package/dist/providers/moonshotai-cn.models.js.map +1 -0
  328. package/dist/providers/moonshotai.d.ts +3 -0
  329. package/dist/providers/moonshotai.d.ts.map +1 -0
  330. package/dist/providers/moonshotai.js +15 -0
  331. package/dist/providers/moonshotai.js.map +1 -0
  332. package/dist/providers/moonshotai.models.d.ts +234 -0
  333. package/dist/providers/moonshotai.models.d.ts.map +1 -0
  334. package/dist/providers/moonshotai.models.js +169 -0
  335. package/dist/providers/moonshotai.models.js.map +1 -0
  336. package/dist/providers/nvidia.d.ts +3 -0
  337. package/dist/providers/nvidia.d.ts.map +1 -0
  338. package/dist/providers/nvidia.js +15 -0
  339. package/dist/providers/nvidia.js.map +1 -0
  340. package/dist/providers/nvidia.models.d.ts +563 -0
  341. package/dist/providers/nvidia.models.d.ts.map +1 -0
  342. package/dist/providers/nvidia.models.js +385 -0
  343. package/dist/providers/nvidia.models.js.map +1 -0
  344. package/dist/providers/openai-codex.d.ts +3 -0
  345. package/dist/providers/openai-codex.d.ts.map +1 -0
  346. package/dist/providers/openai-codex.js +18 -0
  347. package/dist/providers/openai-codex.js.map +1 -0
  348. package/dist/providers/openai-codex.models.d.ts +87 -0
  349. package/dist/providers/openai-codex.models.d.ts.map +1 -0
  350. package/dist/providers/openai-codex.models.js +77 -0
  351. package/dist/providers/openai-codex.models.js.map +1 -0
  352. package/dist/providers/openai.d.ts +3 -0
  353. package/dist/providers/openai.d.ts.map +1 -0
  354. package/dist/providers/openai.js +15 -0
  355. package/dist/providers/openai.js.map +1 -0
  356. package/dist/providers/openai.models.d.ts +805 -0
  357. package/dist/providers/openai.models.d.ts.map +1 -0
  358. package/dist/providers/openai.models.js +743 -0
  359. package/dist/providers/openai.models.js.map +1 -0
  360. package/dist/providers/opencode-go.d.ts +3 -0
  361. package/dist/providers/opencode-go.d.ts.map +1 -0
  362. package/dist/providers/opencode-go.js +18 -0
  363. package/dist/providers/opencode-go.js.map +1 -0
  364. package/dist/providers/opencode-go.models.d.ts +309 -0
  365. package/dist/providers/opencode-go.models.d.ts.map +1 -0
  366. package/dist/providers/opencode-go.models.js +240 -0
  367. package/dist/providers/opencode-go.models.js.map +1 -0
  368. package/dist/providers/opencode.d.ts +3 -0
  369. package/dist/providers/opencode.d.ts.map +1 -0
  370. package/dist/providers/opencode.js +22 -0
  371. package/dist/providers/opencode.js.map +1 -0
  372. package/dist/providers/opencode.models.d.ts +1064 -0
  373. package/dist/providers/opencode.models.d.ts.map +1 -0
  374. package/dist/providers/opencode.models.js +888 -0
  375. package/dist/providers/opencode.models.js.map +1 -0
  376. package/dist/providers/openrouter-images.d.ts +3 -0
  377. package/dist/providers/openrouter-images.d.ts.map +1 -0
  378. package/dist/providers/openrouter-images.js +14 -0
  379. package/dist/providers/openrouter-images.js.map +1 -0
  380. package/dist/providers/openrouter.d.ts +3 -0
  381. package/dist/providers/openrouter.d.ts.map +1 -0
  382. package/dist/providers/openrouter.js +15 -0
  383. package/dist/providers/openrouter.js.map +1 -0
  384. package/dist/providers/openrouter.models.d.ts +5507 -0
  385. package/dist/providers/openrouter.models.d.ts.map +1 -0
  386. package/dist/providers/openrouter.models.js +4724 -0
  387. package/dist/providers/openrouter.models.js.map +1 -0
  388. package/dist/providers/together.d.ts +3 -0
  389. package/dist/providers/together.d.ts.map +1 -0
  390. package/dist/providers/together.js +15 -0
  391. package/dist/providers/together.js.map +1 -0
  392. package/dist/providers/together.models.d.ts +598 -0
  393. package/dist/providers/together.models.d.ts.map +1 -0
  394. package/dist/providers/together.models.js +380 -0
  395. package/dist/providers/together.models.js.map +1 -0
  396. package/dist/providers/vercel-ai-gateway.d.ts +3 -0
  397. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -0
  398. package/dist/providers/vercel-ai-gateway.js +15 -0
  399. package/dist/providers/vercel-ai-gateway.js.map +1 -0
  400. package/dist/providers/vercel-ai-gateway.models.d.ts +3254 -0
  401. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -0
  402. package/dist/providers/vercel-ai-gateway.models.js +3206 -0
  403. package/dist/providers/vercel-ai-gateway.models.js.map +1 -0
  404. package/dist/providers/xai.d.ts +3 -0
  405. package/dist/providers/xai.d.ts.map +1 -0
  406. package/dist/providers/xai.js +15 -0
  407. package/dist/providers/xai.js.map +1 -0
  408. package/dist/providers/xai.models.d.ts +157 -0
  409. package/dist/providers/xai.models.d.ts.map +1 -0
  410. package/dist/providers/xai.models.js +131 -0
  411. package/dist/providers/xai.models.js.map +1 -0
  412. package/dist/providers/xiaomi-token-plan-ams.d.ts +3 -0
  413. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -0
  414. package/dist/providers/xiaomi-token-plan-ams.js +15 -0
  415. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -0
  416. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +108 -0
  417. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -0
  418. package/dist/providers/xiaomi-token-plan-ams.models.js +95 -0
  419. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -0
  420. package/dist/providers/xiaomi-token-plan-cn.d.ts +3 -0
  421. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -0
  422. package/dist/providers/xiaomi-token-plan-cn.js +15 -0
  423. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -0
  424. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +108 -0
  425. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -0
  426. package/dist/providers/xiaomi-token-plan-cn.models.js +95 -0
  427. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -0
  428. package/dist/providers/xiaomi-token-plan-sgp.d.ts +3 -0
  429. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -0
  430. package/dist/providers/xiaomi-token-plan-sgp.js +15 -0
  431. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -0
  432. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +108 -0
  433. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -0
  434. package/dist/providers/xiaomi-token-plan-sgp.models.js +95 -0
  435. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -0
  436. package/dist/providers/xiaomi.d.ts +3 -0
  437. package/dist/providers/xiaomi.d.ts.map +1 -0
  438. package/dist/providers/xiaomi.js +15 -0
  439. package/dist/providers/xiaomi.js.map +1 -0
  440. package/dist/providers/xiaomi.models.d.ts +129 -0
  441. package/dist/providers/xiaomi.models.d.ts.map +1 -0
  442. package/dist/providers/xiaomi.models.js +113 -0
  443. package/dist/providers/xiaomi.models.js.map +1 -0
  444. package/dist/providers/zai-coding-cn.d.ts +3 -0
  445. package/dist/providers/zai-coding-cn.d.ts.map +1 -0
  446. package/dist/providers/zai-coding-cn.js +15 -0
  447. package/dist/providers/zai-coding-cn.js.map +1 -0
  448. package/dist/providers/zai-coding-cn.models.d.ts +153 -0
  449. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -0
  450. package/dist/providers/zai-coding-cn.models.js +114 -0
  451. package/dist/providers/zai-coding-cn.models.js.map +1 -0
  452. package/dist/providers/zai.d.ts +3 -0
  453. package/dist/providers/zai.d.ts.map +1 -0
  454. package/dist/providers/zai.js +15 -0
  455. package/dist/providers/zai.js.map +1 -0
  456. package/dist/providers/zai.models.d.ts +153 -0
  457. package/dist/providers/zai.models.d.ts.map +1 -0
  458. package/dist/providers/zai.models.js +114 -0
  459. package/dist/providers/zai.models.js.map +1 -0
  460. package/dist/types.d.ts +91 -10
  461. package/dist/types.d.ts.map +1 -1
  462. package/dist/types.js.map +1 -1
  463. package/dist/utils/error-body.d.ts +25 -0
  464. package/dist/utils/error-body.d.ts.map +1 -0
  465. package/dist/utils/error-body.js +109 -0
  466. package/dist/utils/error-body.js.map +1 -0
  467. package/dist/utils/estimate.d.ts +17 -0
  468. package/dist/utils/estimate.d.ts.map +1 -0
  469. package/dist/utils/estimate.js +95 -0
  470. package/dist/utils/estimate.js.map +1 -0
  471. package/dist/utils/headers.d.ts +2 -0
  472. package/dist/utils/headers.d.ts.map +1 -1
  473. package/dist/utils/headers.js +10 -0
  474. package/dist/utils/headers.js.map +1 -1
  475. package/dist/utils/node-http-proxy.d.ts +2 -8
  476. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  477. package/dist/utils/node-http-proxy.js +17 -22
  478. package/dist/utils/node-http-proxy.js.map +1 -1
  479. package/dist/utils/oauth/anthropic.d.ts +2 -0
  480. package/dist/utils/oauth/anthropic.d.ts.map +1 -1
  481. package/dist/utils/oauth/anthropic.js +33 -1
  482. package/dist/utils/oauth/anthropic.js.map +1 -1
  483. package/dist/utils/oauth/device-code.d.ts +2 -0
  484. package/dist/utils/oauth/device-code.d.ts.map +1 -1
  485. package/dist/utils/oauth/device-code.js +15 -2
  486. package/dist/utils/oauth/device-code.js.map +1 -1
  487. package/dist/utils/oauth/github-copilot.d.ts +2 -0
  488. package/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  489. package/dist/utils/oauth/github-copilot.js +102 -11
  490. package/dist/utils/oauth/github-copilot.js.map +1 -1
  491. package/dist/utils/oauth/load.d.ts +5 -0
  492. package/dist/utils/oauth/load.d.ts.map +1 -0
  493. package/dist/utils/oauth/load.js +22 -0
  494. package/dist/utils/oauth/load.js.map +1 -0
  495. package/dist/utils/oauth/openai-codex.d.ts +2 -0
  496. package/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  497. package/dist/utils/oauth/openai-codex.js +51 -1
  498. package/dist/utils/oauth/openai-codex.js.map +1 -1
  499. package/dist/utils/overflow.d.ts +2 -1
  500. package/dist/utils/overflow.d.ts.map +1 -1
  501. package/dist/utils/overflow.js +6 -2
  502. package/dist/utils/overflow.js.map +1 -1
  503. package/dist/utils/provider-env.d.ts +7 -0
  504. package/dist/utils/provider-env.d.ts.map +1 -0
  505. package/dist/utils/provider-env.js +44 -0
  506. package/dist/utils/provider-env.js.map +1 -0
  507. package/dist/utils/retry.d.ts +12 -0
  508. package/dist/utils/retry.d.ts.map +1 -0
  509. package/dist/utils/retry.js +87 -0
  510. package/dist/utils/retry.js.map +1 -0
  511. package/dist/utils/validation.d.ts.map +1 -1
  512. package/dist/utils/validation.js +9 -21
  513. package/dist/utils/validation.js.map +1 -1
  514. package/package.json +12 -31
  515. package/dist/api-registry.d.ts +0 -20
  516. package/dist/api-registry.d.ts.map +0 -1
  517. package/dist/api-registry.js +0 -44
  518. package/dist/api-registry.js.map +0 -1
  519. package/dist/providers/cloudflare.d.ts.map +0 -1
  520. package/dist/providers/cloudflare.js.map +0 -1
  521. package/dist/providers/github-copilot-headers.d.ts.map +0 -1
  522. package/dist/providers/github-copilot-headers.js.map +0 -1
  523. package/dist/providers/google-shared.d.ts.map +0 -1
  524. package/dist/providers/google-shared.js.map +0 -1
  525. package/dist/providers/images/openrouter.d.ts +0 -3
  526. package/dist/providers/images/openrouter.d.ts.map +0 -1
  527. package/dist/providers/images/openrouter.js.map +0 -1
  528. package/dist/providers/openai-codex-responses.d.ts.map +0 -1
  529. package/dist/providers/openai-codex-responses.js.map +0 -1
  530. package/dist/providers/openai-completions.d.ts.map +0 -1
  531. package/dist/providers/openai-completions.js.map +0 -1
  532. package/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  533. package/dist/providers/openai-prompt-cache.js.map +0 -1
  534. package/dist/providers/openai-responses-shared.d.ts.map +0 -1
  535. package/dist/providers/openai-responses-shared.js.map +0 -1
  536. package/dist/providers/openai-responses.d.ts.map +0 -1
  537. package/dist/providers/openai-responses.js.map +0 -1
  538. package/dist/providers/register-builtins.d.ts +0 -35
  539. package/dist/providers/register-builtins.d.ts.map +0 -1
  540. package/dist/providers/register-builtins.js +0 -254
  541. package/dist/providers/register-builtins.js.map +0 -1
  542. package/dist/providers/simple-options.d.ts.map +0 -1
  543. package/dist/providers/simple-options.js.map +0 -1
  544. package/dist/providers/transform-messages.d.ts.map +0 -1
  545. package/dist/providers/transform-messages.js.map +0 -1
  546. package/dist/stream.d.ts +0 -8
  547. package/dist/stream.d.ts.map +0 -1
  548. package/dist/stream.js +0 -39
  549. package/dist/stream.js.map +0 -1
  550. /package/dist/{providers → api}/github-copilot-headers.d.ts +0 -0
  551. /package/dist/{providers → api}/github-copilot-headers.js +0 -0
  552. /package/dist/{providers → api}/google-shared.d.ts +0 -0
  553. /package/dist/{providers → api}/google-shared.js +0 -0
  554. /package/dist/{providers → api}/openai-prompt-cache.d.ts +0 -0
  555. /package/dist/{providers → api}/openai-prompt-cache.js +0 -0
  556. /package/dist/{providers → api}/openai-responses-shared.d.ts +0 -0
  557. /package/dist/{providers → api}/transform-messages.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider } from \"./types.ts\";\n\nlet _procEnvCache: Map<string, string> | null = null;\n\n/**\n * Fallback for https://github.com/oven-sh/bun/issues/27802\n * Bun compiled binaries have an empty `process.env` inside sandbox\n * environments on Linux. We can recover the env from `/proc/self/environ`.\n */\nfunction getProcEnv(key: string): string | undefined {\n\tif (!process.versions?.bun) return undefined;\n\tif (typeof process === \"undefined\") return undefined;\n\n\t// If process.env already has entries, the bug is not triggered.\n\tif (Object.keys(process.env).length > 0) return undefined;\n\n\tif (_procEnvCache === null) {\n\t\t_procEnvCache = new Map();\n\t\ttry {\n\t\t\tconst { readFileSync } = require(\"node:fs\") as typeof import(\"node:fs\");\n\t\t\tconst data = readFileSync(\"/proc/self/environ\", \"utf-8\");\n\t\t\tfor (const entry of data.split(\"\\0\")) {\n\t\t\t\tconst idx = entry.indexOf(\"=\");\n\t\t\t\tif (idx > 0) {\n\t\t\t\t\t_procEnvCache.set(entry.slice(0, idx), entry.slice(idx + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// /proc/self/environ may not be readable.\n\t\t}\n\t}\n\n\treturn _procEnvCache.get(key);\n}\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(): boolean {\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = process.env.GOOGLE_APPLICATION_CREDENTIALS || getProcEnv(\"GOOGLE_APPLICATION_CREDENTIALS\");\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\nfunction getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") {\n\t\treturn [\"COPILOT_GITHUB_TOKEN\"];\n\t}\n\n\t// ANTHROPIC_OAUTH_TOKEN takes precedence over ANTHROPIC_API_KEY\n\tif (provider === \"anthropic\") {\n\t\treturn [\"ANTHROPIC_OAUTH_TOKEN\", \"ANTHROPIC_API_KEY\"];\n\t}\n\n\tconst envMap: Record<string, string> = {\n\t\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\topenai: \"OPENAI_API_KEY\",\n\t\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\t\tnvidia: \"NVIDIA_API_KEY\",\n\t\tdeepseek: \"DEEPSEEK_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\t\tmistral: \"MISTRAL_API_KEY\",\n\t\tminimax: \"MINIMAX_API_KEY\",\n\t\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\t\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\t\thuggingface: \"HF_TOKEN\",\n\t\tfireworks: \"FIREWORKS_API_KEY\",\n\t\ttogether: \"TOGETHER_API_KEY\",\n\t\topencode: \"OPENCODE_API_KEY\",\n\t\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\t\"kimi-coding\": \"KIMI_API_KEY\",\n\t\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\t\txiaomi: \"XIAOMI_API_KEY\",\n\t\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider): string[] | undefined;\nexport function findEnvKeys(provider: string): string[] | undefined;\nexport function findEnvKeys(provider: string): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!process.env[envVar] || !!getProcEnv(envVar));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider): string | undefined;\nexport function getEnvApiKey(provider: string): string | undefined;\nexport function getEnvApiKey(provider: string): string | undefined {\n\tconst envKeys = findEnvKeys(provider);\n\tif (envKeys?.[0]) {\n\t\treturn process.env[envKeys[0]] || getProcEnv(envKeys[0]);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials();\n\t\tconst hasProject = !!(\n\t\t\tprocess.env.GOOGLE_CLOUD_PROJECT ||\n\t\t\tprocess.env.GCLOUD_PROJECT ||\n\t\t\tgetProcEnv(\"GOOGLE_CLOUD_PROJECT\") ||\n\t\t\tgetProcEnv(\"GCLOUD_PROJECT\")\n\t\t);\n\t\tconst hasLocation = !!(process.env.GOOGLE_CLOUD_LOCATION || getProcEnv(\"GOOGLE_CLOUD_LOCATION\"));\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tprocess.env.AWS_PROFILE ||\n\t\t\t(process.env.AWS_ACCESS_KEY_ID && process.env.AWS_SECRET_ACCESS_KEY) ||\n\t\t\tprocess.env.AWS_BEARER_TOKEN_BEDROCK ||\n\t\t\tprocess.env.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ||\n\t\t\tprocess.env.AWS_CONTAINER_CREDENTIALS_FULL_URI ||\n\t\t\tprocess.env.AWS_WEB_IDENTITY_TOKEN_FILE ||\n\t\t\tgetProcEnv(\"AWS_PROFILE\") ||\n\t\t\t(getProcEnv(\"AWS_ACCESS_KEY_ID\") && getProcEnv(\"AWS_SECRET_ACCESS_KEY\")) ||\n\t\t\tgetProcEnv(\"AWS_BEARER_TOKEN_BEDROCK\") ||\n\t\t\tgetProcEnv(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\") ||\n\t\t\tgetProcEnv(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\") ||\n\t\t\tgetProcEnv(\"AWS_WEB_IDENTITY_TOKEN_FILE\")\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider, ProviderEnv } from \"./types.ts\";\nimport { getProviderEnvValue } from \"./utils/provider-env.ts\";\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(env?: ProviderEnv): boolean {\n\tconst explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;\n\tif (explicitCredentialsPath) {\n\t\treturn _existsSync ? _existsSync(explicitCredentialsPath) : false;\n\t}\n\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = getProviderEnvValue(\"GOOGLE_APPLICATION_CREDENTIALS\", env);\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\nfunction getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") {\n\t\treturn [\"COPILOT_GITHUB_TOKEN\"];\n\t}\n\n\t// ANTHROPIC_OAUTH_TOKEN takes precedence over ANTHROPIC_API_KEY\n\tif (provider === \"anthropic\") {\n\t\treturn [\"ANTHROPIC_OAUTH_TOKEN\", \"ANTHROPIC_API_KEY\"];\n\t}\n\n\tconst envMap: Record<string, string> = {\n\t\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\topenai: \"OPENAI_API_KEY\",\n\t\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\t\tnvidia: \"NVIDIA_API_KEY\",\n\t\tdeepseek: \"DEEPSEEK_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\t\tmistral: \"MISTRAL_API_KEY\",\n\t\tminimax: \"MINIMAX_API_KEY\",\n\t\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\t\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\t\thuggingface: \"HF_TOKEN\",\n\t\tfireworks: \"FIREWORKS_API_KEY\",\n\t\ttogether: \"TOGETHER_API_KEY\",\n\t\topencode: \"OPENCODE_API_KEY\",\n\t\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\t\"kimi-coding\": \"KIMI_API_KEY\",\n\t\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\t\txiaomi: \"XIAOMI_API_KEY\",\n\t\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!getProviderEnvValue(envVar, env));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined {\n\tconst envKeys = findEnvKeys(provider, env);\n\tif (envKeys?.[0]) {\n\t\treturn getProviderEnvValue(envKeys[0], env);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials(env);\n\t\tconst hasProject = !!(\n\t\t\tgetProviderEnvValue(\"GOOGLE_CLOUD_PROJECT\", env) || getProviderEnvValue(\"GCLOUD_PROJECT\", env)\n\t\t);\n\t\tconst hasLocation = !!getProviderEnvValue(\"GOOGLE_CLOUD_LOCATION\", env);\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tgetProviderEnvValue(\"AWS_PROFILE\", env) ||\n\t\t\t(getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env) && getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env)) ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_WEB_IDENTITY_TOKEN_FILE\", env)\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
@@ -90,6 +90,21 @@ export declare const IMAGE_MODELS: {
90
90
  cacheWrite: number;
91
91
  };
92
92
  };
93
+ readonly "google/gemini-3-pro-image": {
94
+ id: string;
95
+ name: string;
96
+ api: "openrouter-images";
97
+ provider: string;
98
+ baseUrl: string;
99
+ input: ("image" | "text")[];
100
+ output: ("image" | "text")[];
101
+ cost: {
102
+ input: number;
103
+ output: number;
104
+ cacheRead: number;
105
+ cacheWrite: number;
106
+ };
107
+ };
93
108
  readonly "google/gemini-3-pro-image-preview": {
94
109
  id: string;
95
110
  name: string;
@@ -105,6 +120,21 @@ export declare const IMAGE_MODELS: {
105
120
  cacheWrite: number;
106
121
  };
107
122
  };
123
+ readonly "google/gemini-3.1-flash-image": {
124
+ id: string;
125
+ name: string;
126
+ api: "openrouter-images";
127
+ provider: string;
128
+ baseUrl: string;
129
+ input: ("image" | "text")[];
130
+ output: ("image" | "text")[];
131
+ cost: {
132
+ input: number;
133
+ output: number;
134
+ cacheRead: number;
135
+ cacheWrite: number;
136
+ };
137
+ };
108
138
  readonly "google/gemini-3.1-flash-image-preview": {
109
139
  id: string;
110
140
  name: string;
@@ -120,6 +150,21 @@ export declare const IMAGE_MODELS: {
120
150
  cacheWrite: number;
121
151
  };
122
152
  };
153
+ readonly "google/gemini-3.1-flash-lite-image": {
154
+ id: string;
155
+ name: string;
156
+ api: "openrouter-images";
157
+ provider: string;
158
+ baseUrl: string;
159
+ input: ("image" | "text")[];
160
+ output: ("image" | "text")[];
161
+ cost: {
162
+ input: number;
163
+ output: number;
164
+ cacheRead: number;
165
+ cacheWrite: number;
166
+ };
167
+ };
123
168
  readonly "microsoft/mai-image-2.5": {
124
169
  id: string;
125
170
  name: string;
@@ -180,14 +225,14 @@ export declare const IMAGE_MODELS: {
180
225
  cacheWrite: number;
181
226
  };
182
227
  };
183
- readonly "openrouter/auto": {
228
+ readonly "openai/gpt-image-1": {
184
229
  id: string;
185
230
  name: string;
186
231
  api: "openrouter-images";
187
232
  provider: string;
188
233
  baseUrl: string;
189
234
  input: ("image" | "text")[];
190
- output: ("image" | "text")[];
235
+ output: "image"[];
191
236
  cost: {
192
237
  input: number;
193
238
  output: number;
@@ -195,7 +240,7 @@ export declare const IMAGE_MODELS: {
195
240
  cacheWrite: number;
196
241
  };
197
242
  };
198
- readonly "recraft/recraft-v3": {
243
+ readonly "openai/gpt-image-1-mini": {
199
244
  id: string;
200
245
  name: string;
201
246
  api: "openrouter-images";
@@ -210,7 +255,7 @@ export declare const IMAGE_MODELS: {
210
255
  cacheWrite: number;
211
256
  };
212
257
  };
213
- readonly "recraft/recraft-v4": {
258
+ readonly "openai/gpt-image-2": {
214
259
  id: string;
215
260
  name: string;
216
261
  api: "openrouter-images";
@@ -225,14 +270,14 @@ export declare const IMAGE_MODELS: {
225
270
  cacheWrite: number;
226
271
  };
227
272
  };
228
- readonly "recraft/recraft-v4-pro": {
273
+ readonly "openrouter/auto": {
229
274
  id: string;
230
275
  name: string;
231
276
  api: "openrouter-images";
232
277
  provider: string;
233
278
  baseUrl: string;
234
279
  input: ("image" | "text")[];
235
- output: "image"[];
280
+ output: ("image" | "text")[];
236
281
  cost: {
237
282
  input: number;
238
283
  output: number;
@@ -240,7 +285,7 @@ export declare const IMAGE_MODELS: {
240
285
  cacheWrite: number;
241
286
  };
242
287
  };
243
- readonly "recraft/recraft-v4-pro-vector": {
288
+ readonly "recraft/recraft-v3": {
244
289
  id: string;
245
290
  name: string;
246
291
  api: "openrouter-images";
@@ -255,7 +300,7 @@ export declare const IMAGE_MODELS: {
255
300
  cacheWrite: number;
256
301
  };
257
302
  };
258
- readonly "recraft/recraft-v4-vector": {
303
+ readonly "recraft/recraft-v4": {
259
304
  id: string;
260
305
  name: string;
261
306
  api: "openrouter-images";
@@ -270,7 +315,7 @@ export declare const IMAGE_MODELS: {
270
315
  cacheWrite: number;
271
316
  };
272
317
  };
273
- readonly "recraft/recraft-v4.1": {
318
+ readonly "recraft/recraft-v4-pro": {
274
319
  id: string;
275
320
  name: string;
276
321
  api: "openrouter-images";
@@ -285,7 +330,7 @@ export declare const IMAGE_MODELS: {
285
330
  cacheWrite: number;
286
331
  };
287
332
  };
288
- readonly "recraft/recraft-v4.1-pro": {
333
+ readonly "recraft/recraft-v4-pro-vector": {
289
334
  id: string;
290
335
  name: string;
291
336
  api: "openrouter-images";
@@ -300,7 +345,7 @@ export declare const IMAGE_MODELS: {
300
345
  cacheWrite: number;
301
346
  };
302
347
  };
303
- readonly "recraft/recraft-v4.1-pro-vector": {
348
+ readonly "recraft/recraft-v4-vector": {
304
349
  id: string;
305
350
  name: string;
306
351
  api: "openrouter-images";
@@ -315,7 +360,7 @@ export declare const IMAGE_MODELS: {
315
360
  cacheWrite: number;
316
361
  };
317
362
  };
318
- readonly "recraft/recraft-v4.1-utility": {
363
+ readonly "recraft/recraft-v4.1": {
319
364
  id: string;
320
365
  name: string;
321
366
  api: "openrouter-images";
@@ -330,7 +375,7 @@ export declare const IMAGE_MODELS: {
330
375
  cacheWrite: number;
331
376
  };
332
377
  };
333
- readonly "recraft/recraft-v4.1-utility-pro": {
378
+ readonly "recraft/recraft-v4.1-pro": {
334
379
  id: string;
335
380
  name: string;
336
381
  api: "openrouter-images";
@@ -345,7 +390,7 @@ export declare const IMAGE_MODELS: {
345
390
  cacheWrite: number;
346
391
  };
347
392
  };
348
- readonly "recraft/recraft-v4.1-vector": {
393
+ readonly "recraft/recraft-v4.1-pro-vector": {
349
394
  id: string;
350
395
  name: string;
351
396
  api: "openrouter-images";
@@ -360,7 +405,7 @@ export declare const IMAGE_MODELS: {
360
405
  cacheWrite: number;
361
406
  };
362
407
  };
363
- readonly "sourceful/riverflow-v2-fast": {
408
+ readonly "recraft/recraft-v4.1-utility": {
364
409
  id: string;
365
410
  name: string;
366
411
  api: "openrouter-images";
@@ -375,7 +420,7 @@ export declare const IMAGE_MODELS: {
375
420
  cacheWrite: number;
376
421
  };
377
422
  };
378
- readonly "sourceful/riverflow-v2-fast-preview": {
423
+ readonly "recraft/recraft-v4.1-utility-pro": {
379
424
  id: string;
380
425
  name: string;
381
426
  api: "openrouter-images";
@@ -390,7 +435,7 @@ export declare const IMAGE_MODELS: {
390
435
  cacheWrite: number;
391
436
  };
392
437
  };
393
- readonly "sourceful/riverflow-v2-max-preview": {
438
+ readonly "recraft/recraft-v4.1-vector": {
394
439
  id: string;
395
440
  name: string;
396
441
  api: "openrouter-images";
@@ -405,7 +450,7 @@ export declare const IMAGE_MODELS: {
405
450
  cacheWrite: number;
406
451
  };
407
452
  };
408
- readonly "sourceful/riverflow-v2-pro": {
453
+ readonly "sourceful/riverflow-v2-fast": {
409
454
  id: string;
410
455
  name: string;
411
456
  api: "openrouter-images";
@@ -420,7 +465,7 @@ export declare const IMAGE_MODELS: {
420
465
  cacheWrite: number;
421
466
  };
422
467
  };
423
- readonly "sourceful/riverflow-v2-standard-preview": {
468
+ readonly "sourceful/riverflow-v2-pro": {
424
469
  id: string;
425
470
  name: string;
426
471
  api: "openrouter-images";
@@ -1 +1 @@
1
- {"version":3,"file":"image-models.generated.d.ts","sourceRoot":"","sources":["../src/image-models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmekD,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-image-models.ts\n// Do not edit manually - run 'npm run generate-image-models' to update\n\nimport type { ImagesApi, ImagesModel } from \"./types.ts\";\n\nexport const IMAGE_MODELS = {\n\t\"openrouter\": {\n\t\t\"black-forest-labs/flux.2-flex\": {\n\t\t\tid: \"black-forest-labs/flux.2-flex\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Flex\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-klein-4b\": {\n\t\t\tid: \"black-forest-labs/flux.2-klein-4b\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Klein 4B\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-max\": {\n\t\t\tid: \"black-forest-labs/flux.2-max\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Max\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-pro\": {\n\t\t\tid: \"black-forest-labs/flux.2-pro\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"bytedance-seed/seedream-4.5\": {\n\t\t\tid: \"bytedance-seed/seedream-4.5\",\n\t\t\tname: \"ByteDance Seed: Seedream 4.5\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-2.5-flash-image\": {\n\t\t\tid: \"google/gemini-2.5-flash-image\",\n\t\t\tname: \"Google: Nano Banana (Gemini 2.5 Flash Image)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.3,\n\t \"output\": 2.5,\n\t \"cacheRead\": 0.03,\n\t \"cacheWrite\": 0.08333333333333334\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3-pro-image-preview\": {\n\t\t\tid: \"google/gemini-3-pro-image-preview\",\n\t\t\tname: \"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 2,\n\t \"output\": 12,\n\t \"cacheRead\": 0.19999999999999998,\n\t \"cacheWrite\": 0.375\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3.1-flash-image-preview\": {\n\t\t\tid: \"google/gemini-3.1-flash-image-preview\",\n\t\t\tname: \"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.5,\n\t \"output\": 3,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"microsoft/mai-image-2.5\": {\n\t\t\tid: \"microsoft/mai-image-2.5\",\n\t\t\tname: \"Microsoft: MAI-Image-2.5\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 5,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5-image\": {\n\t\t\tid: \"openai/gpt-5-image\",\n\t\t\tname: \"OpenAI: GPT-5 Image\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 10,\n\t \"output\": 10,\n\t \"cacheRead\": 1.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5-image-mini\": {\n\t\t\tid: \"openai/gpt-5-image-mini\",\n\t\t\tname: \"OpenAI: GPT-5 Image Mini\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 2.5,\n\t \"output\": 2,\n\t \"cacheRead\": 0.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5.4-image-2\": {\n\t\t\tid: \"openai/gpt-5.4-image-2\",\n\t\t\tname: \"OpenAI: GPT-5.4 Image 2\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 8,\n\t \"output\": 15,\n\t \"cacheRead\": 2,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openrouter/auto\": {\n\t\t\tid: \"openrouter/auto\",\n\t\t\tname: \"Auto Router\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"text\",\"image\"],\n\t\t\tcost: \t{\n\t \"input\": -1000000,\n\t \"output\": -1000000,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v3\": {\n\t\t\tid: \"recraft/recraft-v3\",\n\t\t\tname: \"Recraft: Recraft V3\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4\": {\n\t\t\tid: \"recraft/recraft-v4\",\n\t\t\tname: \"Recraft: Recraft V4\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-pro\": {\n\t\t\tid: \"recraft/recraft-v4-pro\",\n\t\t\tname: \"Recraft: Recraft V4 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-pro-vector\": {\n\t\t\tid: \"recraft/recraft-v4-pro-vector\",\n\t\t\tname: \"Recraft: Recraft V4 Pro Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-vector\": {\n\t\t\tid: \"recraft/recraft-v4-vector\",\n\t\t\tname: \"Recraft: Recraft V4 Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1\": {\n\t\t\tid: \"recraft/recraft-v4.1\",\n\t\t\tname: \"Recraft: Recraft V4.1\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-pro\": {\n\t\t\tid: \"recraft/recraft-v4.1-pro\",\n\t\t\tname: \"Recraft: Recraft V4.1 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-pro-vector\": {\n\t\t\tid: \"recraft/recraft-v4.1-pro-vector\",\n\t\t\tname: \"Recraft: Recraft V4.1 Pro Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-utility\": {\n\t\t\tid: \"recraft/recraft-v4.1-utility\",\n\t\t\tname: \"Recraft: Recraft V4.1 Utility\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-utility-pro\": {\n\t\t\tid: \"recraft/recraft-v4.1-utility-pro\",\n\t\t\tname: \"Recraft: Recraft V4.1 Utility Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-vector\": {\n\t\t\tid: \"recraft/recraft-v4.1-vector\",\n\t\t\tname: \"Recraft: Recraft V4.1 Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-fast\": {\n\t\t\tid: \"sourceful/riverflow-v2-fast\",\n\t\t\tname: \"Sourceful: Riverflow V2 Fast\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-fast-preview\": {\n\t\t\tid: \"sourceful/riverflow-v2-fast-preview\",\n\t\t\tname: \"Sourceful: Riverflow V2 Fast Preview\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-max-preview\": {\n\t\t\tid: \"sourceful/riverflow-v2-max-preview\",\n\t\t\tname: \"Sourceful: Riverflow V2 Max Preview\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-pro\": {\n\t\t\tid: \"sourceful/riverflow-v2-pro\",\n\t\t\tname: \"Sourceful: Riverflow V2 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-standard-preview\": {\n\t\t\tid: \"sourceful/riverflow-v2-standard-preview\",\n\t\t\tname: \"Sourceful: Riverflow V2 Standard Preview\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2.5-fast\": {\n\t\t\tid: \"sourceful/riverflow-v2.5-fast\",\n\t\t\tname: \"Sourceful: Riverflow V2.5 Fast\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2.5-pro\": {\n\t\t\tid: \"sourceful/riverflow-v2.5-pro\",\n\t\t\tname: \"Sourceful: Riverflow V2.5 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"x-ai/grok-imagine-image-quality\": {\n\t\t\tid: \"x-ai/grok-imagine-image-quality\",\n\t\t\tname: \"xAI: Grok Imagine Image Quality\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t},\n} as const satisfies Record<string, Record<string, ImagesModel<ImagesApi>>>;\n"]}
1
+ {"version":3,"file":"image-models.generated.d.ts","sourceRoot":"","sources":["../src/image-models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghBkD,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-image-models.ts\n// Do not edit manually - run 'npm run generate-image-models' to update\n\nimport type { ImagesApi, ImagesModel } from \"./types.ts\";\n\nexport const IMAGE_MODELS = {\n\t\"openrouter\": {\n\t\t\"black-forest-labs/flux.2-flex\": {\n\t\t\tid: \"black-forest-labs/flux.2-flex\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Flex\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-klein-4b\": {\n\t\t\tid: \"black-forest-labs/flux.2-klein-4b\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Klein 4B\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-max\": {\n\t\t\tid: \"black-forest-labs/flux.2-max\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Max\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"black-forest-labs/flux.2-pro\": {\n\t\t\tid: \"black-forest-labs/flux.2-pro\",\n\t\t\tname: \"Black Forest Labs: FLUX.2 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"bytedance-seed/seedream-4.5\": {\n\t\t\tid: \"bytedance-seed/seedream-4.5\",\n\t\t\tname: \"ByteDance Seed: Seedream 4.5\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-2.5-flash-image\": {\n\t\t\tid: \"google/gemini-2.5-flash-image\",\n\t\t\tname: \"Google: Nano Banana (Gemini 2.5 Flash Image)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.3,\n\t \"output\": 2.5,\n\t \"cacheRead\": 0.03,\n\t \"cacheWrite\": 0.08333333333333334\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3-pro-image\": {\n\t\t\tid: \"google/gemini-3-pro-image\",\n\t\t\tname: \"Google: Nano Banana Pro (Gemini 3 Pro Image)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 2,\n\t \"output\": 12,\n\t \"cacheRead\": 0.19999999999999998,\n\t \"cacheWrite\": 0.375\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3-pro-image-preview\": {\n\t\t\tid: \"google/gemini-3-pro-image-preview\",\n\t\t\tname: \"Google: Nano Banana Pro (Gemini 3 Pro Image Preview)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 2,\n\t \"output\": 12,\n\t \"cacheRead\": 0.19999999999999998,\n\t \"cacheWrite\": 0.375\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3.1-flash-image\": {\n\t\t\tid: \"google/gemini-3.1-flash-image\",\n\t\t\tname: \"Google: Nano Banana 2 (Gemini 3.1 Flash Image)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.5,\n\t \"output\": 3,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3.1-flash-image-preview\": {\n\t\t\tid: \"google/gemini-3.1-flash-image-preview\",\n\t\t\tname: \"Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.5,\n\t \"output\": 3,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"google/gemini-3.1-flash-lite-image\": {\n\t\t\tid: \"google/gemini-3.1-flash-lite-image\",\n\t\t\tname: \"Google: Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image)\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 0.25,\n\t \"output\": 1.5,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"microsoft/mai-image-2.5\": {\n\t\t\tid: \"microsoft/mai-image-2.5\",\n\t\t\tname: \"Microsoft: MAI-Image-2.5\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 5,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5-image\": {\n\t\t\tid: \"openai/gpt-5-image\",\n\t\t\tname: \"OpenAI: GPT-5 Image\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 10,\n\t \"output\": 10,\n\t \"cacheRead\": 1.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5-image-mini\": {\n\t\t\tid: \"openai/gpt-5-image-mini\",\n\t\t\tname: \"OpenAI: GPT-5 Image Mini\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 2.5,\n\t \"output\": 2,\n\t \"cacheRead\": 0.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-5.4-image-2\": {\n\t\t\tid: \"openai/gpt-5.4-image-2\",\n\t\t\tname: \"OpenAI: GPT-5.4 Image 2\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"image\",\"text\"],\n\t\t\toutput: [\"image\",\"text\"],\n\t\t\tcost: \t{\n\t \"input\": 8,\n\t \"output\": 15,\n\t \"cacheRead\": 2,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-image-1\": {\n\t\t\tid: \"openai/gpt-image-1\",\n\t\t\tname: \"OpenAI: GPT Image 1\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 10,\n\t \"output\": 10,\n\t \"cacheRead\": 1.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-image-1-mini\": {\n\t\t\tid: \"openai/gpt-image-1-mini\",\n\t\t\tname: \"OpenAI: GPT Image 1 Mini\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 2.5,\n\t \"output\": 2.5,\n\t \"cacheRead\": 0.25,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openai/gpt-image-2\": {\n\t\t\tid: \"openai/gpt-image-2\",\n\t\t\tname: \"OpenAI: GPT Image 2\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 8,\n\t \"output\": 8,\n\t \"cacheRead\": 2,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"openrouter/auto\": {\n\t\t\tid: \"openrouter/auto\",\n\t\t\tname: \"Auto Router\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"text\",\"image\"],\n\t\t\tcost: \t{\n\t \"input\": -1000000,\n\t \"output\": -1000000,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v3\": {\n\t\t\tid: \"recraft/recraft-v3\",\n\t\t\tname: \"Recraft: Recraft V3\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4\": {\n\t\t\tid: \"recraft/recraft-v4\",\n\t\t\tname: \"Recraft: Recraft V4\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-pro\": {\n\t\t\tid: \"recraft/recraft-v4-pro\",\n\t\t\tname: \"Recraft: Recraft V4 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-pro-vector\": {\n\t\t\tid: \"recraft/recraft-v4-pro-vector\",\n\t\t\tname: \"Recraft: Recraft V4 Pro Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4-vector\": {\n\t\t\tid: \"recraft/recraft-v4-vector\",\n\t\t\tname: \"Recraft: Recraft V4 Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1\": {\n\t\t\tid: \"recraft/recraft-v4.1\",\n\t\t\tname: \"Recraft: Recraft V4.1\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-pro\": {\n\t\t\tid: \"recraft/recraft-v4.1-pro\",\n\t\t\tname: \"Recraft: Recraft V4.1 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-pro-vector\": {\n\t\t\tid: \"recraft/recraft-v4.1-pro-vector\",\n\t\t\tname: \"Recraft: Recraft V4.1 Pro Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-utility\": {\n\t\t\tid: \"recraft/recraft-v4.1-utility\",\n\t\t\tname: \"Recraft: Recraft V4.1 Utility\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-utility-pro\": {\n\t\t\tid: \"recraft/recraft-v4.1-utility-pro\",\n\t\t\tname: \"Recraft: Recraft V4.1 Utility Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"recraft/recraft-v4.1-vector\": {\n\t\t\tid: \"recraft/recraft-v4.1-vector\",\n\t\t\tname: \"Recraft: Recraft V4.1 Vector\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-fast\": {\n\t\t\tid: \"sourceful/riverflow-v2-fast\",\n\t\t\tname: \"Sourceful: Riverflow V2 Fast\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2-pro\": {\n\t\t\tid: \"sourceful/riverflow-v2-pro\",\n\t\t\tname: \"Sourceful: Riverflow V2 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2.5-fast\": {\n\t\t\tid: \"sourceful/riverflow-v2.5-fast\",\n\t\t\tname: \"Sourceful: Riverflow V2.5 Fast\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"sourceful/riverflow-v2.5-pro\": {\n\t\t\tid: \"sourceful/riverflow-v2.5-pro\",\n\t\t\tname: \"Sourceful: Riverflow V2.5 Pro\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t\t\"x-ai/grok-imagine-image-quality\": {\n\t\t\tid: \"x-ai/grok-imagine-image-quality\",\n\t\t\tname: \"xAI: Grok Imagine Image Quality\",\n\t\t\tapi: \"openrouter-images\",\n\t\t\tprovider: \"openrouter\",\n\t\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\t\tinput: [\"text\",\"image\"],\n\t\t\toutput: [\"image\"],\n\t\t\tcost: \t{\n\t \"input\": 0,\n\t \"output\": 0,\n\t \"cacheRead\": 0,\n\t \"cacheWrite\": 0\n\t}\n\t\t} satisfies ImagesModel<\"openrouter-images\">,\n\t},\n} as const satisfies Record<string, Record<string, ImagesModel<ImagesApi>>>;\n"]}
@@ -92,6 +92,21 @@ export const IMAGE_MODELS = {
92
92
  "cacheWrite": 0.08333333333333334
93
93
  }
94
94
  },
95
+ "google/gemini-3-pro-image": {
96
+ id: "google/gemini-3-pro-image",
97
+ name: "Google: Nano Banana Pro (Gemini 3 Pro Image)",
98
+ api: "openrouter-images",
99
+ provider: "openrouter",
100
+ baseUrl: "https://openrouter.ai/api/v1",
101
+ input: ["image", "text"],
102
+ output: ["image", "text"],
103
+ cost: {
104
+ "input": 2,
105
+ "output": 12,
106
+ "cacheRead": 0.19999999999999998,
107
+ "cacheWrite": 0.375
108
+ }
109
+ },
95
110
  "google/gemini-3-pro-image-preview": {
96
111
  id: "google/gemini-3-pro-image-preview",
97
112
  name: "Google: Nano Banana Pro (Gemini 3 Pro Image Preview)",
@@ -107,6 +122,21 @@ export const IMAGE_MODELS = {
107
122
  "cacheWrite": 0.375
108
123
  }
109
124
  },
125
+ "google/gemini-3.1-flash-image": {
126
+ id: "google/gemini-3.1-flash-image",
127
+ name: "Google: Nano Banana 2 (Gemini 3.1 Flash Image)",
128
+ api: "openrouter-images",
129
+ provider: "openrouter",
130
+ baseUrl: "https://openrouter.ai/api/v1",
131
+ input: ["image", "text"],
132
+ output: ["image", "text"],
133
+ cost: {
134
+ "input": 0.5,
135
+ "output": 3,
136
+ "cacheRead": 0,
137
+ "cacheWrite": 0
138
+ }
139
+ },
110
140
  "google/gemini-3.1-flash-image-preview": {
111
141
  id: "google/gemini-3.1-flash-image-preview",
112
142
  name: "Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)",
@@ -122,6 +152,21 @@ export const IMAGE_MODELS = {
122
152
  "cacheWrite": 0
123
153
  }
124
154
  },
155
+ "google/gemini-3.1-flash-lite-image": {
156
+ id: "google/gemini-3.1-flash-lite-image",
157
+ name: "Google: Nano Banana 2 Lite (Gemini 3.1 Flash Lite Image)",
158
+ api: "openrouter-images",
159
+ provider: "openrouter",
160
+ baseUrl: "https://openrouter.ai/api/v1",
161
+ input: ["image", "text"],
162
+ output: ["image", "text"],
163
+ cost: {
164
+ "input": 0.25,
165
+ "output": 1.5,
166
+ "cacheRead": 0,
167
+ "cacheWrite": 0
168
+ }
169
+ },
125
170
  "microsoft/mai-image-2.5": {
126
171
  id: "microsoft/mai-image-2.5",
127
172
  name: "Microsoft: MAI-Image-2.5",
@@ -182,6 +227,51 @@ export const IMAGE_MODELS = {
182
227
  "cacheWrite": 0
183
228
  }
184
229
  },
230
+ "openai/gpt-image-1": {
231
+ id: "openai/gpt-image-1",
232
+ name: "OpenAI: GPT Image 1",
233
+ api: "openrouter-images",
234
+ provider: "openrouter",
235
+ baseUrl: "https://openrouter.ai/api/v1",
236
+ input: ["text", "image"],
237
+ output: ["image"],
238
+ cost: {
239
+ "input": 10,
240
+ "output": 10,
241
+ "cacheRead": 1.25,
242
+ "cacheWrite": 0
243
+ }
244
+ },
245
+ "openai/gpt-image-1-mini": {
246
+ id: "openai/gpt-image-1-mini",
247
+ name: "OpenAI: GPT Image 1 Mini",
248
+ api: "openrouter-images",
249
+ provider: "openrouter",
250
+ baseUrl: "https://openrouter.ai/api/v1",
251
+ input: ["text", "image"],
252
+ output: ["image"],
253
+ cost: {
254
+ "input": 2.5,
255
+ "output": 2.5,
256
+ "cacheRead": 0.25,
257
+ "cacheWrite": 0
258
+ }
259
+ },
260
+ "openai/gpt-image-2": {
261
+ id: "openai/gpt-image-2",
262
+ name: "OpenAI: GPT Image 2",
263
+ api: "openrouter-images",
264
+ provider: "openrouter",
265
+ baseUrl: "https://openrouter.ai/api/v1",
266
+ input: ["text", "image"],
267
+ output: ["image"],
268
+ cost: {
269
+ "input": 8,
270
+ "output": 8,
271
+ "cacheRead": 2,
272
+ "cacheWrite": 0
273
+ }
274
+ },
185
275
  "openrouter/auto": {
186
276
  id: "openrouter/auto",
187
277
  name: "Auto Router",
@@ -377,36 +467,6 @@ export const IMAGE_MODELS = {
377
467
  "cacheWrite": 0
378
468
  }
379
469
  },
380
- "sourceful/riverflow-v2-fast-preview": {
381
- id: "sourceful/riverflow-v2-fast-preview",
382
- name: "Sourceful: Riverflow V2 Fast Preview",
383
- api: "openrouter-images",
384
- provider: "openrouter",
385
- baseUrl: "https://openrouter.ai/api/v1",
386
- input: ["text", "image"],
387
- output: ["image"],
388
- cost: {
389
- "input": 0,
390
- "output": 0,
391
- "cacheRead": 0,
392
- "cacheWrite": 0
393
- }
394
- },
395
- "sourceful/riverflow-v2-max-preview": {
396
- id: "sourceful/riverflow-v2-max-preview",
397
- name: "Sourceful: Riverflow V2 Max Preview",
398
- api: "openrouter-images",
399
- provider: "openrouter",
400
- baseUrl: "https://openrouter.ai/api/v1",
401
- input: ["text", "image"],
402
- output: ["image"],
403
- cost: {
404
- "input": 0,
405
- "output": 0,
406
- "cacheRead": 0,
407
- "cacheWrite": 0
408
- }
409
- },
410
470
  "sourceful/riverflow-v2-pro": {
411
471
  id: "sourceful/riverflow-v2-pro",
412
472
  name: "Sourceful: Riverflow V2 Pro",
@@ -422,21 +482,6 @@ export const IMAGE_MODELS = {
422
482
  "cacheWrite": 0
423
483
  }
424
484
  },
425
- "sourceful/riverflow-v2-standard-preview": {
426
- id: "sourceful/riverflow-v2-standard-preview",
427
- name: "Sourceful: Riverflow V2 Standard Preview",
428
- api: "openrouter-images",
429
- provider: "openrouter",
430
- baseUrl: "https://openrouter.ai/api/v1",
431
- input: ["text", "image"],
432
- output: ["image"],
433
- cost: {
434
- "input": 0,
435
- "output": 0,
436
- "cacheRead": 0,
437
- "cacheWrite": 0
438
- }
439
- },
440
485
  "sourceful/riverflow-v2.5-fast": {
441
486
  id: "sourceful/riverflow-v2.5-fast",
442
487
  name: "Sourceful: Riverflow V2.5 Fast",