@draht/ai 2026.7.11 → 2026.7.12

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 (267) hide show
  1. package/dist/api/anthropic-messages.d.ts.map +1 -1
  2. package/dist/api/anthropic-messages.js.map +1 -1
  3. package/dist/api/anthropic-messages.lazy.d.ts.map +1 -1
  4. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  5. package/dist/api/azure-openai-responses.js.map +1 -1
  6. package/dist/api/azure-openai-responses.lazy.d.ts.map +1 -1
  7. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  8. package/dist/api/bedrock-converse-stream.js.map +1 -1
  9. package/dist/api/bedrock-converse-stream.lazy.d.ts.map +1 -1
  10. package/dist/api/bedrock-converse-stream.lazy.js.map +1 -1
  11. package/dist/api/cloudflare.d.ts.map +1 -1
  12. package/dist/api/cloudflare.js.map +1 -1
  13. package/dist/api/github-copilot-headers.d.ts.map +1 -1
  14. package/dist/api/github-copilot-headers.js.map +1 -1
  15. package/dist/api/google-generative-ai.d.ts.map +1 -1
  16. package/dist/api/google-generative-ai.js.map +1 -1
  17. package/dist/api/google-generative-ai.lazy.d.ts.map +1 -1
  18. package/dist/api/google-shared.d.ts.map +1 -1
  19. package/dist/api/google-shared.js.map +1 -1
  20. package/dist/api/google-vertex.d.ts.map +1 -1
  21. package/dist/api/google-vertex.js.map +1 -1
  22. package/dist/api/google-vertex.lazy.d.ts.map +1 -1
  23. package/dist/api/lazy.d.ts.map +1 -1
  24. package/dist/api/lazy.js.map +1 -1
  25. package/dist/api/mistral-conversations.d.ts.map +1 -1
  26. package/dist/api/mistral-conversations.js.map +1 -1
  27. package/dist/api/mistral-conversations.lazy.d.ts.map +1 -1
  28. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  29. package/dist/api/openai-codex-responses.js +0 -6
  30. package/dist/api/openai-codex-responses.js.map +1 -1
  31. package/dist/api/openai-codex-responses.lazy.d.ts.map +1 -1
  32. package/dist/api/openai-completions.d.ts.map +1 -1
  33. package/dist/api/openai-completions.js.map +1 -1
  34. package/dist/api/openai-completions.lazy.d.ts.map +1 -1
  35. package/dist/api/openai-prompt-cache.d.ts.map +1 -1
  36. package/dist/api/openai-prompt-cache.js.map +1 -1
  37. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  38. package/dist/api/openai-responses-shared.js.map +1 -1
  39. package/dist/api/openai-responses.d.ts.map +1 -1
  40. package/dist/api/openai-responses.js.map +1 -1
  41. package/dist/api/openai-responses.lazy.d.ts.map +1 -1
  42. package/dist/api/openrouter-images.d.ts.map +1 -1
  43. package/dist/api/openrouter-images.js.map +1 -1
  44. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  45. package/dist/api/simple-options.d.ts.map +1 -1
  46. package/dist/api/simple-options.js.map +1 -1
  47. package/dist/api/transform-messages.d.ts.map +1 -1
  48. package/dist/api/transform-messages.js.map +1 -1
  49. package/dist/auth/context.d.ts.map +1 -1
  50. package/dist/auth/context.js.map +1 -1
  51. package/dist/auth/credential-store.d.ts.map +1 -1
  52. package/dist/auth/credential-store.js +4 -2
  53. package/dist/auth/credential-store.js.map +1 -1
  54. package/dist/auth/helpers.d.ts.map +1 -1
  55. package/dist/auth/helpers.js.map +1 -1
  56. package/dist/auth/resolve.d.ts.map +1 -1
  57. package/dist/auth/resolve.js +0 -1
  58. package/dist/auth/resolve.js.map +1 -1
  59. package/dist/auth/types.d.ts.map +1 -1
  60. package/dist/bedrock-provider.d.ts.map +1 -1
  61. package/dist/cli.d.ts.map +1 -1
  62. package/dist/cli.js.map +1 -1
  63. package/dist/compat.d.ts.map +1 -1
  64. package/dist/compat.js.map +1 -1
  65. package/dist/env-api-keys.d.ts.map +1 -1
  66. package/dist/env-api-keys.js.map +1 -1
  67. package/dist/image-models.d.ts.map +1 -1
  68. package/dist/image-models.generated.d.ts.map +1 -1
  69. package/dist/image-models.js.map +1 -1
  70. package/dist/images-api-registry.d.ts.map +1 -1
  71. package/dist/images-api-registry.js.map +1 -1
  72. package/dist/images-models.d.ts.map +1 -1
  73. package/dist/images-models.js +1 -3
  74. package/dist/images-models.js.map +1 -1
  75. package/dist/images.d.ts.map +1 -1
  76. package/dist/images.js.map +1 -1
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/legacy-api-aliases.d.ts.map +1 -1
  79. package/dist/models.d.ts.map +1 -1
  80. package/dist/models.generated.d.ts.map +1 -1
  81. package/dist/models.js +1 -3
  82. package/dist/models.js.map +1 -1
  83. package/dist/oauth.d.ts.map +1 -1
  84. package/dist/providers/all.d.ts.map +1 -1
  85. package/dist/providers/all.js.map +1 -1
  86. package/dist/providers/amazon-bedrock.d.ts.map +1 -1
  87. package/dist/providers/amazon-bedrock.js.map +1 -1
  88. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  89. package/dist/providers/ant-ling.d.ts.map +1 -1
  90. package/dist/providers/ant-ling.js.map +1 -1
  91. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  92. package/dist/providers/anthropic.d.ts.map +1 -1
  93. package/dist/providers/anthropic.js.map +1 -1
  94. package/dist/providers/anthropic.models.d.ts.map +1 -1
  95. package/dist/providers/azure-openai-responses.d.ts.map +1 -1
  96. package/dist/providers/azure-openai-responses.js.map +1 -1
  97. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  98. package/dist/providers/cerebras.d.ts.map +1 -1
  99. package/dist/providers/cerebras.js.map +1 -1
  100. package/dist/providers/cerebras.models.d.ts.map +1 -1
  101. package/dist/providers/cloudflare-ai-gateway.d.ts.map +1 -1
  102. package/dist/providers/cloudflare-ai-gateway.js.map +1 -1
  103. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  104. package/dist/providers/cloudflare-auth.d.ts.map +1 -1
  105. package/dist/providers/cloudflare-auth.js.map +1 -1
  106. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  107. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  108. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  109. package/dist/providers/deepseek.d.ts.map +1 -1
  110. package/dist/providers/deepseek.js.map +1 -1
  111. package/dist/providers/deepseek.models.d.ts.map +1 -1
  112. package/dist/providers/faux.d.ts.map +1 -1
  113. package/dist/providers/faux.js.map +1 -1
  114. package/dist/providers/fireworks.d.ts.map +1 -1
  115. package/dist/providers/fireworks.js.map +1 -1
  116. package/dist/providers/fireworks.models.d.ts.map +1 -1
  117. package/dist/providers/github-copilot.d.ts.map +1 -1
  118. package/dist/providers/github-copilot.js.map +1 -1
  119. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  120. package/dist/providers/google-vertex.d.ts.map +1 -1
  121. package/dist/providers/google-vertex.js.map +1 -1
  122. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  123. package/dist/providers/google.d.ts.map +1 -1
  124. package/dist/providers/google.js.map +1 -1
  125. package/dist/providers/google.models.d.ts.map +1 -1
  126. package/dist/providers/groq.d.ts.map +1 -1
  127. package/dist/providers/groq.js.map +1 -1
  128. package/dist/providers/groq.models.d.ts.map +1 -1
  129. package/dist/providers/huggingface.d.ts.map +1 -1
  130. package/dist/providers/huggingface.js.map +1 -1
  131. package/dist/providers/huggingface.models.d.ts.map +1 -1
  132. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  133. package/dist/providers/images/register-builtins.js.map +1 -1
  134. package/dist/providers/kimi-coding.d.ts.map +1 -1
  135. package/dist/providers/kimi-coding.js.map +1 -1
  136. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  137. package/dist/providers/minimax-cn.d.ts.map +1 -1
  138. package/dist/providers/minimax-cn.js.map +1 -1
  139. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  140. package/dist/providers/minimax.d.ts.map +1 -1
  141. package/dist/providers/minimax.js.map +1 -1
  142. package/dist/providers/minimax.models.d.ts.map +1 -1
  143. package/dist/providers/mistral.d.ts.map +1 -1
  144. package/dist/providers/mistral.js.map +1 -1
  145. package/dist/providers/mistral.models.d.ts.map +1 -1
  146. package/dist/providers/moonshotai-cn.d.ts.map +1 -1
  147. package/dist/providers/moonshotai-cn.js.map +1 -1
  148. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  149. package/dist/providers/moonshotai.d.ts.map +1 -1
  150. package/dist/providers/moonshotai.js.map +1 -1
  151. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  152. package/dist/providers/nvidia.d.ts.map +1 -1
  153. package/dist/providers/nvidia.js.map +1 -1
  154. package/dist/providers/nvidia.models.d.ts.map +1 -1
  155. package/dist/providers/openai-codex.d.ts.map +1 -1
  156. package/dist/providers/openai-codex.js.map +1 -1
  157. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  158. package/dist/providers/openai.d.ts.map +1 -1
  159. package/dist/providers/openai.js.map +1 -1
  160. package/dist/providers/openai.models.d.ts.map +1 -1
  161. package/dist/providers/opencode-go.d.ts.map +1 -1
  162. package/dist/providers/opencode-go.js.map +1 -1
  163. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  164. package/dist/providers/opencode.d.ts.map +1 -1
  165. package/dist/providers/opencode.js.map +1 -1
  166. package/dist/providers/opencode.models.d.ts.map +1 -1
  167. package/dist/providers/openrouter-images.d.ts.map +1 -1
  168. package/dist/providers/openrouter-images.js.map +1 -1
  169. package/dist/providers/openrouter.d.ts.map +1 -1
  170. package/dist/providers/openrouter.js.map +1 -1
  171. package/dist/providers/openrouter.models.d.ts.map +1 -1
  172. package/dist/providers/openrouter.models.js +15 -15
  173. package/dist/providers/openrouter.models.js.map +1 -1
  174. package/dist/providers/together.d.ts.map +1 -1
  175. package/dist/providers/together.js.map +1 -1
  176. package/dist/providers/together.models.d.ts.map +1 -1
  177. package/dist/providers/vercel-ai-gateway.d.ts.map +1 -1
  178. package/dist/providers/vercel-ai-gateway.js.map +1 -1
  179. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  180. package/dist/providers/xai.d.ts.map +1 -1
  181. package/dist/providers/xai.js +6 -2
  182. package/dist/providers/xai.js.map +1 -1
  183. package/dist/providers/xai.models.d.ts.map +1 -1
  184. package/dist/providers/xiaomi-token-plan-ams.d.ts.map +1 -1
  185. package/dist/providers/xiaomi-token-plan-ams.js.map +1 -1
  186. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  187. package/dist/providers/xiaomi-token-plan-cn.d.ts.map +1 -1
  188. package/dist/providers/xiaomi-token-plan-cn.js.map +1 -1
  189. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  190. package/dist/providers/xiaomi-token-plan-sgp.d.ts.map +1 -1
  191. package/dist/providers/xiaomi-token-plan-sgp.js.map +1 -1
  192. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  193. package/dist/providers/xiaomi.d.ts.map +1 -1
  194. package/dist/providers/xiaomi.js.map +1 -1
  195. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  196. package/dist/providers/zai-coding-cn.d.ts.map +1 -1
  197. package/dist/providers/zai-coding-cn.js.map +1 -1
  198. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  199. package/dist/providers/zai.d.ts.map +1 -1
  200. package/dist/providers/zai.js.map +1 -1
  201. package/dist/providers/zai.models.d.ts.map +1 -1
  202. package/dist/session-resources.d.ts.map +1 -1
  203. package/dist/session-resources.js.map +1 -1
  204. package/dist/types.d.ts.map +1 -1
  205. package/dist/utils/abort-signals.d.ts.map +1 -1
  206. package/dist/utils/abort-signals.js.map +1 -1
  207. package/dist/utils/diagnostics.d.ts.map +1 -1
  208. package/dist/utils/diagnostics.js.map +1 -1
  209. package/dist/utils/error-body.d.ts.map +1 -1
  210. package/dist/utils/error-body.js.map +1 -1
  211. package/dist/utils/estimate.d.ts.map +1 -1
  212. package/dist/utils/estimate.js.map +1 -1
  213. package/dist/utils/event-stream.d.ts.map +1 -1
  214. package/dist/utils/event-stream.js +3 -7
  215. package/dist/utils/event-stream.js.map +1 -1
  216. package/dist/utils/hash.d.ts.map +1 -1
  217. package/dist/utils/hash.js.map +1 -1
  218. package/dist/utils/headers.d.ts.map +1 -1
  219. package/dist/utils/headers.js.map +1 -1
  220. package/dist/utils/json-parse.d.ts.map +1 -1
  221. package/dist/utils/json-parse.js.map +1 -1
  222. package/dist/utils/node-http-proxy.d.ts.map +1 -1
  223. package/dist/utils/node-http-proxy.js.map +1 -1
  224. package/dist/utils/oauth/anthropic.d.ts.map +1 -1
  225. package/dist/utils/oauth/anthropic.js.map +1 -1
  226. package/dist/utils/oauth/device-code.d.ts.map +1 -1
  227. package/dist/utils/oauth/device-code.js.map +1 -1
  228. package/dist/utils/oauth/github-copilot.d.ts.map +1 -1
  229. package/dist/utils/oauth/github-copilot.js.map +1 -1
  230. package/dist/utils/oauth/google-antigravity.d.ts.map +1 -1
  231. package/dist/utils/oauth/google-antigravity.js.map +1 -1
  232. package/dist/utils/oauth/google-gemini-cli.d.ts.map +1 -1
  233. package/dist/utils/oauth/google-gemini-cli.js.map +1 -1
  234. package/dist/utils/oauth/index.d.ts +1 -0
  235. package/dist/utils/oauth/index.d.ts.map +1 -1
  236. package/dist/utils/oauth/index.js +4 -0
  237. package/dist/utils/oauth/index.js.map +1 -1
  238. package/dist/utils/oauth/load.d.ts +1 -0
  239. package/dist/utils/oauth/load.d.ts.map +1 -1
  240. package/dist/utils/oauth/load.js +1 -0
  241. package/dist/utils/oauth/load.js.map +1 -1
  242. package/dist/utils/oauth/oauth-page.d.ts.map +1 -1
  243. package/dist/utils/oauth/oauth-page.js.map +1 -1
  244. package/dist/utils/oauth/openai-codex.d.ts.map +1 -1
  245. package/dist/utils/oauth/openai-codex.js.map +1 -1
  246. package/dist/utils/oauth/opencode-go.d.ts.map +1 -1
  247. package/dist/utils/oauth/opencode-go.js.map +1 -1
  248. package/dist/utils/oauth/pkce.d.ts.map +1 -1
  249. package/dist/utils/oauth/pkce.js.map +1 -1
  250. package/dist/utils/oauth/types.d.ts.map +1 -1
  251. package/dist/utils/oauth/xai.d.ts +34 -0
  252. package/dist/utils/oauth/xai.d.ts.map +1 -0
  253. package/dist/utils/oauth/xai.js +339 -0
  254. package/dist/utils/oauth/xai.js.map +1 -0
  255. package/dist/utils/overflow.d.ts.map +1 -1
  256. package/dist/utils/overflow.js.map +1 -1
  257. package/dist/utils/provider-env.d.ts.map +1 -1
  258. package/dist/utils/provider-env.js.map +1 -1
  259. package/dist/utils/retry.d.ts.map +1 -1
  260. package/dist/utils/retry.js.map +1 -1
  261. package/dist/utils/sanitize-unicode.d.ts.map +1 -1
  262. package/dist/utils/sanitize-unicode.js.map +1 -1
  263. package/dist/utils/typebox-helpers.d.ts.map +1 -1
  264. package/dist/utils/typebox-helpers.js.map +1 -1
  265. package/dist/utils/validation.d.ts.map +1 -1
  266. package/dist/utils/validation.js.map +1 -1
  267. package/package.json +4 -4
@@ -1 +1 @@
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"]}
1
+ {"version":3,"file":"image-models.generated.d.ts","sourceRoot":"","sources":["../src/image-models.generated.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY;;;;;;;;;;;gBAWtB,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;;;;;;;;;gBAYZ,KAAO;gBACP,MAAQ;gBACR,SAAW;gBACX,UAAY;;;;CAI4D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"image-models.js","sourceRoot":"","sources":["../src/image-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,MAAM,kBAAkB,GAAqD,IAAI,GAAG,EAAE,CAAC;AAEvF,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkC,CAAC;IACjE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAA+B,CAAC,CAAC;IACzD,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC;AAWD,MAAM,UAAU,aAAa,CAG3B,QAAmB,EAAE,OAAiB,EAAmD;IAC1F,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,cAAc,EAAE,GAAG,CAAC,OAAiB,CAAoD,CAAC;AAAA,CACjG;AAED,MAAM,UAAU,iBAAiB,GAA0B;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAA0B,CAAC;AAAA,CACtE;AAED,MAAM,UAAU,cAAc,CAC7B,QAAmB,EAC+D;IAClF,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,MAAM;QACZ,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAqF;QAClH,CAAC,CAAC,EAAE,CAAC;AAAA,CACN","sourcesContent":["import { IMAGE_MODELS } from \"./image-models.generated.ts\";\nimport type { ImagesApi, ImagesModel, KnownImagesProvider } from \"./types.ts\";\n\nconst imageModelRegistry: Map<string, Map<string, ImagesModel<ImagesApi>>> = new Map();\n\nfor (const [provider, models] of Object.entries(IMAGE_MODELS)) {\n\tconst providerModels = new Map<string, ImagesModel<ImagesApi>>();\n\tfor (const [id, model] of Object.entries(models)) {\n\t\tproviderModels.set(id, model as ImagesModel<ImagesApi>);\n\t}\n\timageModelRegistry.set(provider, providerModels);\n}\n\ntype ImageModelApi<\n\tTProvider extends KnownImagesProvider,\n\tTModelId extends keyof (typeof IMAGE_MODELS)[TProvider],\n> = (typeof IMAGE_MODELS)[TProvider][TModelId] extends { api: infer TApi }\n\t? TApi extends ImagesApi\n\t\t? TApi\n\t\t: never\n\t: never;\n\nexport function getImageModel<\n\tTProvider extends KnownImagesProvider,\n\tTModelId extends keyof (typeof IMAGE_MODELS)[TProvider],\n>(provider: TProvider, modelId: TModelId): ImagesModel<ImageModelApi<TProvider, TModelId>> {\n\tconst providerModels = imageModelRegistry.get(provider);\n\treturn providerModels?.get(modelId as string) as ImagesModel<ImageModelApi<TProvider, TModelId>>;\n}\n\nexport function getImageProviders(): KnownImagesProvider[] {\n\treturn Array.from(imageModelRegistry.keys()) as KnownImagesProvider[];\n}\n\nexport function getImageModels<TProvider extends KnownImagesProvider>(\n\tprovider: TProvider,\n): ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[] {\n\tconst models = imageModelRegistry.get(provider);\n\treturn models\n\t\t? (Array.from(models.values()) as ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[])\n\t\t: [];\n}\n"]}
1
+ {"version":3,"file":"image-models.js","sourceRoot":"","sources":["../src/image-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,MAAM,kBAAkB,GAAqD,IAAI,GAAG,EAAE,CAAC;AAEvF,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkC,CAAC;IACjE,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,KAA+B,CAAC,CAAC;IACzD,CAAC;IACD,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC;AAWD,MAAM,UAAU,aAAa,CAG3B,QAAmB,EAAE,OAAiB;IACvC,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO,cAAc,EAAE,GAAG,CAAC,OAAiB,CAAoD,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,iBAAiB;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAA0B,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,cAAc,CAC7B,QAAmB;IAEnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,MAAM;QACZ,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAqF;QAClH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC","sourcesContent":["import { IMAGE_MODELS } from \"./image-models.generated.ts\";\nimport type { ImagesApi, ImagesModel, KnownImagesProvider } from \"./types.ts\";\n\nconst imageModelRegistry: Map<string, Map<string, ImagesModel<ImagesApi>>> = new Map();\n\nfor (const [provider, models] of Object.entries(IMAGE_MODELS)) {\n\tconst providerModels = new Map<string, ImagesModel<ImagesApi>>();\n\tfor (const [id, model] of Object.entries(models)) {\n\t\tproviderModels.set(id, model as ImagesModel<ImagesApi>);\n\t}\n\timageModelRegistry.set(provider, providerModels);\n}\n\ntype ImageModelApi<\n\tTProvider extends KnownImagesProvider,\n\tTModelId extends keyof (typeof IMAGE_MODELS)[TProvider],\n> = (typeof IMAGE_MODELS)[TProvider][TModelId] extends { api: infer TApi }\n\t? TApi extends ImagesApi\n\t\t? TApi\n\t\t: never\n\t: never;\n\nexport function getImageModel<\n\tTProvider extends KnownImagesProvider,\n\tTModelId extends keyof (typeof IMAGE_MODELS)[TProvider],\n>(provider: TProvider, modelId: TModelId): ImagesModel<ImageModelApi<TProvider, TModelId>> {\n\tconst providerModels = imageModelRegistry.get(provider);\n\treturn providerModels?.get(modelId as string) as ImagesModel<ImageModelApi<TProvider, TModelId>>;\n}\n\nexport function getImageProviders(): KnownImagesProvider[] {\n\treturn Array.from(imageModelRegistry.keys()) as KnownImagesProvider[];\n}\n\nexport function getImageModels<TProvider extends KnownImagesProvider>(\n\tprovider: TProvider,\n): ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[] {\n\tconst models = imageModelRegistry.get(provider);\n\treturn models\n\t\t? (Array.from(models.values()) as ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[])\n\t\t: [];\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"images-api-registry.d.ts","sourceRoot":"","sources":["../src/images-api-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExH,MAAM,MAAM,iBAAiB,GAAG,CAC/B,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,EAAE,QAAQ,SAAS,aAAa,GAAG,aAAa;IACpH,GAAG,EAAE,IAAI,CAAC;IACV,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC/C;AAED,UAAU,yBAAyB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,cAAc,EAAE,iBAAiB,CAAC;CAClC;AAqBD,wBAAgB,yBAAyB,CAAC,IAAI,SAAS,SAAS,EAAE,QAAQ,SAAS,aAAa,EAC/F,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GACf,IAAI,CAQN;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB,GAAG,SAAS,CAE1F","sourcesContent":["import type { AssistantImages, ImagesApi, ImagesContext, ImagesFunction, ImagesModel, ImagesOptions } from \"./types.ts\";\n\nexport type ImagesApiFunction = (\n\tmodel: ImagesModel<ImagesApi>,\n\tcontext: ImagesContext,\n\toptions?: ImagesOptions,\n) => Promise<AssistantImages>;\n\nexport interface ImagesApiProvider<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> {\n\tapi: TApi;\n\tgenerateImages: ImagesFunction<TApi, TOptions>;\n}\n\ninterface ImagesApiProviderInternal {\n\tapi: ImagesApi;\n\tgenerateImages: ImagesApiFunction;\n}\n\ntype RegisteredImagesApiProvider = {\n\tprovider: ImagesApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst imagesApiProviderRegistry = new Map<string, RegisteredImagesApiProvider>();\n\nfunction wrapGenerateImages<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tapi: TApi,\n\tgenerateImages: ImagesFunction<TApi, TOptions>,\n): ImagesApiFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn generateImages(model as ImagesModel<TApi>, context, options as TOptions);\n\t};\n}\n\nexport function registerImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tprovider: ImagesApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\timagesApiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tgenerateImages: wrapGenerateImages(provider.api, provider.generateImages),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getImagesApiProvider(api: ImagesApi): ImagesApiProviderInternal | undefined {\n\treturn imagesApiProviderRegistry.get(api)?.provider;\n}\n"]}
1
+ {"version":3,"file":"images-api-registry.d.ts","sourceRoot":"","sources":["../src/images-api-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAExH,MAAM,MAAM,iBAAiB,GAAG,CAC/B,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,SAAS,GAAG,SAAS,EAAE,QAAQ,SAAS,aAAa,GAAG,aAAa;IACpH,GAAG,EAAE,IAAI,CAAC;IACV,cAAc,EAAE,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC/C;AAED,UAAU,yBAAyB;IAClC,GAAG,EAAE,SAAS,CAAC;IACf,cAAc,EAAE,iBAAiB,CAAC;CAClC;AAqBD,wBAAgB,yBAAyB,CAAC,IAAI,SAAS,SAAS,EAAE,QAAQ,SAAS,aAAa,EAC/F,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GACf,IAAI,CAQN;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,GAAG,yBAAyB,GAAG,SAAS,CAE1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"images-api-registry.js","sourceRoot":"","sources":["../src/images-api-registry.ts"],"names":[],"mappings":"AAuBA,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAuC,CAAC;AAEjF,SAAS,kBAAkB,CAC1B,GAAS,EACT,cAA8C,EAC1B;IACpB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,cAAc,CAAC,KAA0B,EAAE,OAAO,EAAE,OAAmB,CAAC,CAAC;IAAA,CAChF,CAAC;AAAA,CACF;AAED,MAAM,UAAU,yBAAyB,CACxC,QAA2C,EAC3C,QAAiB,EACV;IACP,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC3C,QAAQ,EAAE;YACT,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,cAAc,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC;SACzE;QACD,QAAQ;KACR,CAAC,CAAC;AAAA,CACH;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAc,EAAyC;IAC3F,OAAO,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;AAAA,CACpD","sourcesContent":["import type { AssistantImages, ImagesApi, ImagesContext, ImagesFunction, ImagesModel, ImagesOptions } from \"./types.ts\";\n\nexport type ImagesApiFunction = (\n\tmodel: ImagesModel<ImagesApi>,\n\tcontext: ImagesContext,\n\toptions?: ImagesOptions,\n) => Promise<AssistantImages>;\n\nexport interface ImagesApiProvider<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> {\n\tapi: TApi;\n\tgenerateImages: ImagesFunction<TApi, TOptions>;\n}\n\ninterface ImagesApiProviderInternal {\n\tapi: ImagesApi;\n\tgenerateImages: ImagesApiFunction;\n}\n\ntype RegisteredImagesApiProvider = {\n\tprovider: ImagesApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst imagesApiProviderRegistry = new Map<string, RegisteredImagesApiProvider>();\n\nfunction wrapGenerateImages<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tapi: TApi,\n\tgenerateImages: ImagesFunction<TApi, TOptions>,\n): ImagesApiFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn generateImages(model as ImagesModel<TApi>, context, options as TOptions);\n\t};\n}\n\nexport function registerImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tprovider: ImagesApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\timagesApiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tgenerateImages: wrapGenerateImages(provider.api, provider.generateImages),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getImagesApiProvider(api: ImagesApi): ImagesApiProviderInternal | undefined {\n\treturn imagesApiProviderRegistry.get(api)?.provider;\n}\n"]}
1
+ {"version":3,"file":"images-api-registry.js","sourceRoot":"","sources":["../src/images-api-registry.ts"],"names":[],"mappings":"AAuBA,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAuC,CAAC;AAEjF,SAAS,kBAAkB,CAC1B,GAAS,EACT,cAA8C;IAE9C,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAClC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,cAAc,CAAC,KAA0B,EAAE,OAAO,EAAE,OAAmB,CAAC,CAAC;IACjF,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,QAA2C,EAC3C,QAAiB;IAEjB,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC3C,QAAQ,EAAE;YACT,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,cAAc,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,cAAc,CAAC;SACzE;QACD,QAAQ;KACR,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,GAAc;IAClD,OAAO,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;AACrD,CAAC","sourcesContent":["import type { AssistantImages, ImagesApi, ImagesContext, ImagesFunction, ImagesModel, ImagesOptions } from \"./types.ts\";\n\nexport type ImagesApiFunction = (\n\tmodel: ImagesModel<ImagesApi>,\n\tcontext: ImagesContext,\n\toptions?: ImagesOptions,\n) => Promise<AssistantImages>;\n\nexport interface ImagesApiProvider<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> {\n\tapi: TApi;\n\tgenerateImages: ImagesFunction<TApi, TOptions>;\n}\n\ninterface ImagesApiProviderInternal {\n\tapi: ImagesApi;\n\tgenerateImages: ImagesApiFunction;\n}\n\ntype RegisteredImagesApiProvider = {\n\tprovider: ImagesApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst imagesApiProviderRegistry = new Map<string, RegisteredImagesApiProvider>();\n\nfunction wrapGenerateImages<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tapi: TApi,\n\tgenerateImages: ImagesFunction<TApi, TOptions>,\n): ImagesApiFunction {\n\treturn (model, context, options) => {\n\t\tif (model.api !== api) {\n\t\t\tthrow new Error(`Mismatched api: ${model.api} expected ${api}`);\n\t\t}\n\t\treturn generateImages(model as ImagesModel<TApi>, context, options as TOptions);\n\t};\n}\n\nexport function registerImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(\n\tprovider: ImagesApiProvider<TApi, TOptions>,\n\tsourceId?: string,\n): void {\n\timagesApiProviderRegistry.set(provider.api, {\n\t\tprovider: {\n\t\t\tapi: provider.api,\n\t\t\tgenerateImages: wrapGenerateImages(provider.api, provider.generateImages),\n\t\t},\n\t\tsourceId,\n\t});\n}\n\nexport function getImagesApiProvider(api: ImagesApi): ImagesApiProviderInternal | undefined {\n\treturn imagesApiProviderRegistry.get(api)?.provider;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"images-models.d.ts","sourceRoot":"","sources":["../src/images-models.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,UAAU,EAAmB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;;;;OAKG;IACH,SAAS,IAAI,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAE/C;;;;OAIG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,cAAc,CACb,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,YAAY,IAAI,SAAS,cAAc,EAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAEhE,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE3E;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAExE;;;;OAIG;IACH,cAAc,CACb,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACxD,8DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,IAAI,IAAI,CAAC;CACvB;AA6HD,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAErF;AAED,MAAM,WAAW,2BAA2B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iFAA+E;IAC/E,IAAI,EAAE,YAAY,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAC1C;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,GAAG,EAAE,cAAc,CAAC;CACpB;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,GAAG,cAAc,CAwBvF","sourcesContent":["import { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.ts\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.ts\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.ts\";\nimport type { AuthContext, AuthResult, CredentialStore, ProviderAuth } from \"./auth/types.ts\";\nimport type { CreateModelsOptions } from \"./models.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ImagesOptions, ProviderImages } from \"./types.ts\";\n\n/**\n * An image-generation provider: the image-side counterpart of `Provider`.\n * Owns id/name metadata, auth, model listing, and generation behavior.\n */\nexport interface ImagesProvider {\n\treadonly id: string;\n\treadonly name: string;\n\n\t/**\n\t * Required: at least one of `apiKey`/`oauth`. Same semantics as chat\n\t * providers; `ImagesModels.getAuth()` returns undefined when the provider\n\t * is unconfigured.\n\t */\n\treadonly auth: ProviderAuth;\n\n\t/**\n\t * Current known models, sync. Static providers return their catalog;\n\t * dynamic providers return the list as of the last `refreshModels()`\n\t * (empty before the first). Must not throw; `ImagesModels` treats a\n\t * throwing implementation as having no models.\n\t */\n\tgetModels(): readonly ImagesModel<ImagesApi>[];\n\n\t/**\n\t * Dynamic providers only: fetch and update the model list. May reject\n\t * (network); on rejection the model list stays at its last-known state\n\t * and a later call retries.\n\t */\n\trefreshModels?(): Promise<void>;\n\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\n/**\n * Runtime collection of image-generation providers plus auth application and\n * generation convenience: the image-side counterpart of `Models`.\n */\nexport interface ImagesModels {\n\tgetProviders(): readonly ImagesProvider[];\n\tgetProvider(id: string): ImagesProvider | undefined;\n\n\t/**\n\t * Sync read of last-known models from one provider or all providers.\n\t * Best-effort: a provider whose `getModels()` throws yields no models.\n\t */\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[];\n\n\t/** Sync runtime model lookup against last-known lists. */\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined;\n\n\t/**\n\t * Ask dynamic providers to re-fetch their model lists. With a provider id,\n\t * rejects with `ModelsError` (\"model_source\") on that provider's fetch\n\t * failure; without one, refreshes all providers concurrently best-effort.\n\t * Static providers (no `refreshModels`) are no-ops.\n\t */\n\trefresh(provider?: string): Promise<void>;\n\n\t/**\n\t * Resolve request auth for an image model. Same contract as\n\t * `Models.getAuth()`: undefined when unknown/unconfigured, rejects with\n\t * `ModelsError` (\"oauth\"/\"auth\") on real failures.\n\t */\n\tgetAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined>;\n\n\t/**\n\t * Generate images through the owning provider with auth resolved and\n\t * merged (explicit options win per field). Never rejects; failures are\n\t * returned as an `AssistantImages` with `stopReason: \"error\"`.\n\t */\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\nexport interface MutableImagesModels extends ImagesModels {\n\t/** Upsert/replace by provider.id. Provider ids are unique. */\n\tsetProvider(provider: ImagesProvider): void;\n\tdeleteProvider(id: string): void;\n\tclearProviders(): void;\n}\n\nclass ImagesModelsImpl implements MutableImagesModels {\n\tprivate providers = new Map<string, ImagesProvider>();\n\tprivate credentials: CredentialStore;\n\tprivate authContext: AuthContext;\n\n\tconstructor(options?: CreateModelsOptions) {\n\t\tthis.credentials = options?.credentials ?? new InMemoryCredentialStore();\n\t\tthis.authContext = options?.authContext ?? defaultAuthContext();\n\t}\n\n\tsetProvider(provider: ImagesProvider): void {\n\t\tthis.providers.set(provider.id, provider);\n\t}\n\n\tdeleteProvider(id: string): void {\n\t\tthis.providers.delete(id);\n\t}\n\n\tclearProviders(): void {\n\t\tthis.providers.clear();\n\t}\n\n\tgetProviders(): readonly ImagesProvider[] {\n\t\treturn Array.from(this.providers.values());\n\t}\n\n\tgetProvider(id: string): ImagesProvider | undefined {\n\t\treturn this.providers.get(id);\n\t}\n\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[] {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry) return [];\n\t\t\ttry {\n\t\t\t\treturn entry.getModels();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\tconst models: ImagesModel<ImagesApi>[] = [];\n\t\tfor (const entry of this.providers.values()) {\n\t\t\ttry {\n\t\t\t\tmodels.push(...entry.getModels());\n\t\t\t} catch {\n\t\t\t\t// Best-effort: ill-behaved providers yield no models.\n\t\t\t}\n\t\t}\n\t\treturn models;\n\t}\n\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined {\n\t\treturn this.getModels(provider).find((model) => model.id === id);\n\t}\n\n\tasync refresh(provider?: string): Promise<void> {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry?.refreshModels) return;\n\t\t\ttry {\n\t\t\t\tawait entry.refreshModels();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ModelsError) throw error;\n\t\t\t\tthrow new ModelsError(\"model_source\", `Model refresh failed for ${provider}`, { cause: error });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Cannot reject: the async mapper turns even sync throws from ill-behaved\n\t\t// providers into rejections, and allSettled captures all of them.\n\t\tawait Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));\n\t}\n\n\tasync getAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined> {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) return undefined;\n\t\treturn resolveProviderAuth(provider, model, this.credentials, this.authContext);\n\t}\n\n\tasync generateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages> {\n\t\ttry {\n\t\t\tconst provider = this.providers.get(model.provider);\n\t\t\tif (!provider) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\t\t}\n\n\t\t\tconst resolution = await resolveProviderAuth(provider, model, this.credentials, this.authContext, {\n\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\tenv: options?.env,\n\t\t\t});\n\t\t\tconst auth = resolution?.auth;\n\t\t\tif (!auth) {\n\t\t\t\treturn provider.generateImages(model, context, options);\n\t\t\t}\n\n\t\t\tconst requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\n\t\t\t// Explicit request options win per-field; headers/env merge per key.\n\t\t\tconst apiKey = options?.apiKey ?? auth.apiKey;\n\t\t\tconst headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;\n\t\t\tconst env =\n\t\t\t\tresolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n\n\t\t\treturn await provider.generateImages(requestModel, context, { ...options, apiKey, headers, env });\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tapi: model.api,\n\t\t\t\tprovider: model.provider,\n\t\t\t\tmodel: model.id,\n\t\t\t\toutput: [],\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t}\n\t}\n}\n\nexport function createImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\treturn new ImagesModelsImpl(options);\n}\n\nexport interface CreateImagesProviderOptions {\n\tid: string;\n\t/** Display name. Default: `id`. */\n\tname?: string;\n\t/** Required — every provider has auth semantics, even ambient/keyless ones. */\n\tauth: ProviderAuth;\n\t/** Initial model list (empty for purely dynamic providers). */\n\tmodels: readonly ImagesModel<ImagesApi>[];\n\t/**\n\t * Dynamic providers: fetch the current list. Stored on success; concurrent\n\t * calls share one in-flight fetch. May reject: the stored list then stays\n\t * at its last-known state, the rejection propagates to the caller of\n\t * `refreshModels()` (wrapped as ModelsError \"model_source\" by\n\t * `ImagesModels.refresh(provider)`), and a later call retries.\n\t */\n\trefreshModels?: () => Promise<readonly ImagesModel<ImagesApi>[]>;\n\tapi: ProviderImages;\n}\n\n/** Builds an image-generation provider from parts. */\nexport function createImagesProvider(input: CreateImagesProviderOptions): ImagesProvider {\n\tlet models = input.models;\n\tlet inflightRefresh: Promise<void> | undefined;\n\tconst refreshModels = input.refreshModels;\n\n\treturn {\n\t\tid: input.id,\n\t\tname: input.name ?? input.id,\n\t\tauth: input.auth,\n\t\tgetModels: () => models,\n\t\trefreshModels: refreshModels\n\t\t\t? () => {\n\t\t\t\t\tinflightRefresh ??= (async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tmodels = await refreshModels();\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tinflightRefresh = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\treturn inflightRefresh;\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tgenerateImages: (model, context, options) => input.api.generateImages(model, context, options),\n\t};\n}\n"]}
1
+ {"version":3,"file":"images-models.d.ts","sourceRoot":"","sources":["../src/images-models.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAe,UAAU,EAAmB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExH;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAE5B;;;;;OAKG;IACH,SAAS,IAAI,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAE/C;;;;OAIG;IACH,aAAa,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,cAAc,CACb,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,YAAY,IAAI,SAAS,cAAc,EAAE,CAAC;IAC1C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IAEpD;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAEhE,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAE3E;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAExE;;;;OAIG;IACH,cAAc,CACb,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,EAC7B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACxD,8DAA8D;IAC9D,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,IAAI,IAAI,CAAC;CACvB;AA6HD,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,CAErF;AAED,MAAM,WAAW,2BAA2B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,EAAE,YAAY,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;IAC1C;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,GAAG,EAAE,cAAc,CAAC;CACpB;AAED,sDAAsD;AACtD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,2BAA2B,GAAG,cAAc,CAwBvF"}
@@ -2,10 +2,8 @@ import { defaultProviderAuthContext as defaultAuthContext } from "./auth/context
2
2
  import { InMemoryCredentialStore } from "./auth/credential-store.js";
3
3
  import { ModelsError, resolveProviderAuth } from "./auth/resolve.js";
4
4
  class ImagesModelsImpl {
5
- providers = new Map();
6
- credentials;
7
- authContext;
8
5
  constructor(options) {
6
+ this.providers = new Map();
9
7
  this.credentials = options?.credentials ?? new InMemoryCredentialStore();
10
8
  this.authContext = options?.authContext ?? defaultAuthContext();
11
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"images-models.js","sourceRoot":"","sources":["../src/images-models.ts"],"names":[],"mappings":"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","sourcesContent":["import { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.ts\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.ts\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.ts\";\nimport type { AuthContext, AuthResult, CredentialStore, ProviderAuth } from \"./auth/types.ts\";\nimport type { CreateModelsOptions } from \"./models.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ImagesOptions, ProviderImages } from \"./types.ts\";\n\n/**\n * An image-generation provider: the image-side counterpart of `Provider`.\n * Owns id/name metadata, auth, model listing, and generation behavior.\n */\nexport interface ImagesProvider {\n\treadonly id: string;\n\treadonly name: string;\n\n\t/**\n\t * Required: at least one of `apiKey`/`oauth`. Same semantics as chat\n\t * providers; `ImagesModels.getAuth()` returns undefined when the provider\n\t * is unconfigured.\n\t */\n\treadonly auth: ProviderAuth;\n\n\t/**\n\t * Current known models, sync. Static providers return their catalog;\n\t * dynamic providers return the list as of the last `refreshModels()`\n\t * (empty before the first). Must not throw; `ImagesModels` treats a\n\t * throwing implementation as having no models.\n\t */\n\tgetModels(): readonly ImagesModel<ImagesApi>[];\n\n\t/**\n\t * Dynamic providers only: fetch and update the model list. May reject\n\t * (network); on rejection the model list stays at its last-known state\n\t * and a later call retries.\n\t */\n\trefreshModels?(): Promise<void>;\n\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\n/**\n * Runtime collection of image-generation providers plus auth application and\n * generation convenience: the image-side counterpart of `Models`.\n */\nexport interface ImagesModels {\n\tgetProviders(): readonly ImagesProvider[];\n\tgetProvider(id: string): ImagesProvider | undefined;\n\n\t/**\n\t * Sync read of last-known models from one provider or all providers.\n\t * Best-effort: a provider whose `getModels()` throws yields no models.\n\t */\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[];\n\n\t/** Sync runtime model lookup against last-known lists. */\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined;\n\n\t/**\n\t * Ask dynamic providers to re-fetch their model lists. With a provider id,\n\t * rejects with `ModelsError` (\"model_source\") on that provider's fetch\n\t * failure; without one, refreshes all providers concurrently best-effort.\n\t * Static providers (no `refreshModels`) are no-ops.\n\t */\n\trefresh(provider?: string): Promise<void>;\n\n\t/**\n\t * Resolve request auth for an image model. Same contract as\n\t * `Models.getAuth()`: undefined when unknown/unconfigured, rejects with\n\t * `ModelsError` (\"oauth\"/\"auth\") on real failures.\n\t */\n\tgetAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined>;\n\n\t/**\n\t * Generate images through the owning provider with auth resolved and\n\t * merged (explicit options win per field). Never rejects; failures are\n\t * returned as an `AssistantImages` with `stopReason: \"error\"`.\n\t */\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\nexport interface MutableImagesModels extends ImagesModels {\n\t/** Upsert/replace by provider.id. Provider ids are unique. */\n\tsetProvider(provider: ImagesProvider): void;\n\tdeleteProvider(id: string): void;\n\tclearProviders(): void;\n}\n\nclass ImagesModelsImpl implements MutableImagesModels {\n\tprivate providers = new Map<string, ImagesProvider>();\n\tprivate credentials: CredentialStore;\n\tprivate authContext: AuthContext;\n\n\tconstructor(options?: CreateModelsOptions) {\n\t\tthis.credentials = options?.credentials ?? new InMemoryCredentialStore();\n\t\tthis.authContext = options?.authContext ?? defaultAuthContext();\n\t}\n\n\tsetProvider(provider: ImagesProvider): void {\n\t\tthis.providers.set(provider.id, provider);\n\t}\n\n\tdeleteProvider(id: string): void {\n\t\tthis.providers.delete(id);\n\t}\n\n\tclearProviders(): void {\n\t\tthis.providers.clear();\n\t}\n\n\tgetProviders(): readonly ImagesProvider[] {\n\t\treturn Array.from(this.providers.values());\n\t}\n\n\tgetProvider(id: string): ImagesProvider | undefined {\n\t\treturn this.providers.get(id);\n\t}\n\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[] {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry) return [];\n\t\t\ttry {\n\t\t\t\treturn entry.getModels();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\tconst models: ImagesModel<ImagesApi>[] = [];\n\t\tfor (const entry of this.providers.values()) {\n\t\t\ttry {\n\t\t\t\tmodels.push(...entry.getModels());\n\t\t\t} catch {\n\t\t\t\t// Best-effort: ill-behaved providers yield no models.\n\t\t\t}\n\t\t}\n\t\treturn models;\n\t}\n\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined {\n\t\treturn this.getModels(provider).find((model) => model.id === id);\n\t}\n\n\tasync refresh(provider?: string): Promise<void> {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry?.refreshModels) return;\n\t\t\ttry {\n\t\t\t\tawait entry.refreshModels();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ModelsError) throw error;\n\t\t\t\tthrow new ModelsError(\"model_source\", `Model refresh failed for ${provider}`, { cause: error });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Cannot reject: the async mapper turns even sync throws from ill-behaved\n\t\t// providers into rejections, and allSettled captures all of them.\n\t\tawait Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));\n\t}\n\n\tasync getAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined> {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) return undefined;\n\t\treturn resolveProviderAuth(provider, model, this.credentials, this.authContext);\n\t}\n\n\tasync generateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages> {\n\t\ttry {\n\t\t\tconst provider = this.providers.get(model.provider);\n\t\t\tif (!provider) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\t\t}\n\n\t\t\tconst resolution = await resolveProviderAuth(provider, model, this.credentials, this.authContext, {\n\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\tenv: options?.env,\n\t\t\t});\n\t\t\tconst auth = resolution?.auth;\n\t\t\tif (!auth) {\n\t\t\t\treturn provider.generateImages(model, context, options);\n\t\t\t}\n\n\t\t\tconst requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\n\t\t\t// Explicit request options win per-field; headers/env merge per key.\n\t\t\tconst apiKey = options?.apiKey ?? auth.apiKey;\n\t\t\tconst headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;\n\t\t\tconst env =\n\t\t\t\tresolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n\n\t\t\treturn await provider.generateImages(requestModel, context, { ...options, apiKey, headers, env });\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tapi: model.api,\n\t\t\t\tprovider: model.provider,\n\t\t\t\tmodel: model.id,\n\t\t\t\toutput: [],\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t}\n\t}\n}\n\nexport function createImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\treturn new ImagesModelsImpl(options);\n}\n\nexport interface CreateImagesProviderOptions {\n\tid: string;\n\t/** Display name. Default: `id`. */\n\tname?: string;\n\t/** Required — every provider has auth semantics, even ambient/keyless ones. */\n\tauth: ProviderAuth;\n\t/** Initial model list (empty for purely dynamic providers). */\n\tmodels: readonly ImagesModel<ImagesApi>[];\n\t/**\n\t * Dynamic providers: fetch the current list. Stored on success; concurrent\n\t * calls share one in-flight fetch. May reject: the stored list then stays\n\t * at its last-known state, the rejection propagates to the caller of\n\t * `refreshModels()` (wrapped as ModelsError \"model_source\" by\n\t * `ImagesModels.refresh(provider)`), and a later call retries.\n\t */\n\trefreshModels?: () => Promise<readonly ImagesModel<ImagesApi>[]>;\n\tapi: ProviderImages;\n}\n\n/** Builds an image-generation provider from parts. */\nexport function createImagesProvider(input: CreateImagesProviderOptions): ImagesProvider {\n\tlet models = input.models;\n\tlet inflightRefresh: Promise<void> | undefined;\n\tconst refreshModels = input.refreshModels;\n\n\treturn {\n\t\tid: input.id,\n\t\tname: input.name ?? input.id,\n\t\tauth: input.auth,\n\t\tgetModels: () => models,\n\t\trefreshModels: refreshModels\n\t\t\t? () => {\n\t\t\t\t\tinflightRefresh ??= (async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tmodels = await refreshModels();\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tinflightRefresh = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\treturn inflightRefresh;\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tgenerateImages: (model, context, options) => input.api.generateImages(model, context, options),\n\t};\n}\n"]}
1
+ {"version":3,"file":"images-models.js","sourceRoot":"","sources":["../src/images-models.ts"],"names":[],"mappings":"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","sourcesContent":["import { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.ts\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.ts\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.ts\";\nimport type { AuthContext, AuthResult, CredentialStore, ProviderAuth } from \"./auth/types.ts\";\nimport type { CreateModelsOptions } from \"./models.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ImagesOptions, ProviderImages } from \"./types.ts\";\n\n/**\n * An image-generation provider: the image-side counterpart of `Provider`.\n * Owns id/name metadata, auth, model listing, and generation behavior.\n */\nexport interface ImagesProvider {\n\treadonly id: string;\n\treadonly name: string;\n\n\t/**\n\t * Required: at least one of `apiKey`/`oauth`. Same semantics as chat\n\t * providers; `ImagesModels.getAuth()` returns undefined when the provider\n\t * is unconfigured.\n\t */\n\treadonly auth: ProviderAuth;\n\n\t/**\n\t * Current known models, sync. Static providers return their catalog;\n\t * dynamic providers return the list as of the last `refreshModels()`\n\t * (empty before the first). Must not throw; `ImagesModels` treats a\n\t * throwing implementation as having no models.\n\t */\n\tgetModels(): readonly ImagesModel<ImagesApi>[];\n\n\t/**\n\t * Dynamic providers only: fetch and update the model list. May reject\n\t * (network); on rejection the model list stays at its last-known state\n\t * and a later call retries.\n\t */\n\trefreshModels?(): Promise<void>;\n\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\n/**\n * Runtime collection of image-generation providers plus auth application and\n * generation convenience: the image-side counterpart of `Models`.\n */\nexport interface ImagesModels {\n\tgetProviders(): readonly ImagesProvider[];\n\tgetProvider(id: string): ImagesProvider | undefined;\n\n\t/**\n\t * Sync read of last-known models from one provider or all providers.\n\t * Best-effort: a provider whose `getModels()` throws yields no models.\n\t */\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[];\n\n\t/** Sync runtime model lookup against last-known lists. */\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined;\n\n\t/**\n\t * Ask dynamic providers to re-fetch their model lists. With a provider id,\n\t * rejects with `ModelsError` (\"model_source\") on that provider's fetch\n\t * failure; without one, refreshes all providers concurrently best-effort.\n\t * Static providers (no `refreshModels`) are no-ops.\n\t */\n\trefresh(provider?: string): Promise<void>;\n\n\t/**\n\t * Resolve request auth for an image model. Same contract as\n\t * `Models.getAuth()`: undefined when unknown/unconfigured, rejects with\n\t * `ModelsError` (\"oauth\"/\"auth\") on real failures.\n\t */\n\tgetAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined>;\n\n\t/**\n\t * Generate images through the owning provider with auth resolved and\n\t * merged (explicit options win per field). Never rejects; failures are\n\t * returned as an `AssistantImages` with `stopReason: \"error\"`.\n\t */\n\tgenerateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages>;\n}\n\nexport interface MutableImagesModels extends ImagesModels {\n\t/** Upsert/replace by provider.id. Provider ids are unique. */\n\tsetProvider(provider: ImagesProvider): void;\n\tdeleteProvider(id: string): void;\n\tclearProviders(): void;\n}\n\nclass ImagesModelsImpl implements MutableImagesModels {\n\tprivate providers = new Map<string, ImagesProvider>();\n\tprivate credentials: CredentialStore;\n\tprivate authContext: AuthContext;\n\n\tconstructor(options?: CreateModelsOptions) {\n\t\tthis.credentials = options?.credentials ?? new InMemoryCredentialStore();\n\t\tthis.authContext = options?.authContext ?? defaultAuthContext();\n\t}\n\n\tsetProvider(provider: ImagesProvider): void {\n\t\tthis.providers.set(provider.id, provider);\n\t}\n\n\tdeleteProvider(id: string): void {\n\t\tthis.providers.delete(id);\n\t}\n\n\tclearProviders(): void {\n\t\tthis.providers.clear();\n\t}\n\n\tgetProviders(): readonly ImagesProvider[] {\n\t\treturn Array.from(this.providers.values());\n\t}\n\n\tgetProvider(id: string): ImagesProvider | undefined {\n\t\treturn this.providers.get(id);\n\t}\n\n\tgetModels(provider?: string): readonly ImagesModel<ImagesApi>[] {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry) return [];\n\t\t\ttry {\n\t\t\t\treturn entry.getModels();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\tconst models: ImagesModel<ImagesApi>[] = [];\n\t\tfor (const entry of this.providers.values()) {\n\t\t\ttry {\n\t\t\t\tmodels.push(...entry.getModels());\n\t\t\t} catch {\n\t\t\t\t// Best-effort: ill-behaved providers yield no models.\n\t\t\t}\n\t\t}\n\t\treturn models;\n\t}\n\n\tgetModel(provider: string, id: string): ImagesModel<ImagesApi> | undefined {\n\t\treturn this.getModels(provider).find((model) => model.id === id);\n\t}\n\n\tasync refresh(provider?: string): Promise<void> {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry?.refreshModels) return;\n\t\t\ttry {\n\t\t\t\tawait entry.refreshModels();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ModelsError) throw error;\n\t\t\t\tthrow new ModelsError(\"model_source\", `Model refresh failed for ${provider}`, { cause: error });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Cannot reject: the async mapper turns even sync throws from ill-behaved\n\t\t// providers into rejections, and allSettled captures all of them.\n\t\tawait Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));\n\t}\n\n\tasync getAuth(model: ImagesModel<ImagesApi>): Promise<AuthResult | undefined> {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) return undefined;\n\t\treturn resolveProviderAuth(provider, model, this.credentials, this.authContext);\n\t}\n\n\tasync generateImages(\n\t\tmodel: ImagesModel<ImagesApi>,\n\t\tcontext: ImagesContext,\n\t\toptions?: ImagesOptions,\n\t): Promise<AssistantImages> {\n\t\ttry {\n\t\t\tconst provider = this.providers.get(model.provider);\n\t\t\tif (!provider) {\n\t\t\t\tthrow new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\t\t}\n\n\t\t\tconst resolution = await resolveProviderAuth(provider, model, this.credentials, this.authContext, {\n\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\tenv: options?.env,\n\t\t\t});\n\t\t\tconst auth = resolution?.auth;\n\t\t\tif (!auth) {\n\t\t\t\treturn provider.generateImages(model, context, options);\n\t\t\t}\n\n\t\t\tconst requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\n\t\t\t// Explicit request options win per-field; headers/env merge per key.\n\t\t\tconst apiKey = options?.apiKey ?? auth.apiKey;\n\t\t\tconst headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;\n\t\t\tconst env =\n\t\t\t\tresolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n\n\t\t\treturn await provider.generateImages(requestModel, context, { ...options, apiKey, headers, env });\n\t\t} catch (error) {\n\t\t\treturn {\n\t\t\t\tapi: model.api,\n\t\t\t\tprovider: model.provider,\n\t\t\t\tmodel: model.id,\n\t\t\t\toutput: [],\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t};\n\t\t}\n\t}\n}\n\nexport function createImagesModels(options?: CreateModelsOptions): MutableImagesModels {\n\treturn new ImagesModelsImpl(options);\n}\n\nexport interface CreateImagesProviderOptions {\n\tid: string;\n\t/** Display name. Default: `id`. */\n\tname?: string;\n\t/** Required — every provider has auth semantics, even ambient/keyless ones. */\n\tauth: ProviderAuth;\n\t/** Initial model list (empty for purely dynamic providers). */\n\tmodels: readonly ImagesModel<ImagesApi>[];\n\t/**\n\t * Dynamic providers: fetch the current list. Stored on success; concurrent\n\t * calls share one in-flight fetch. May reject: the stored list then stays\n\t * at its last-known state, the rejection propagates to the caller of\n\t * `refreshModels()` (wrapped as ModelsError \"model_source\" by\n\t * `ImagesModels.refresh(provider)`), and a later call retries.\n\t */\n\trefreshModels?: () => Promise<readonly ImagesModel<ImagesApi>[]>;\n\tapi: ProviderImages;\n}\n\n/** Builds an image-generation provider from parts. */\nexport function createImagesProvider(input: CreateImagesProviderOptions): ImagesProvider {\n\tlet models = input.models;\n\tlet inflightRefresh: Promise<void> | undefined;\n\tconst refreshModels = input.refreshModels;\n\n\treturn {\n\t\tid: input.id,\n\t\tname: input.name ?? input.id,\n\t\tauth: input.auth,\n\t\tgetModels: () => models,\n\t\trefreshModels: refreshModels\n\t\t\t? () => {\n\t\t\t\t\tinflightRefresh ??= (async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tmodels = await refreshModels();\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tinflightRefresh = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\treturn inflightRefresh;\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tgenerateImages: (model, context, options) => input.api.generateImages(model, context, options),\n\t};\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAUhH,wBAAsB,cAAc,CAAC,IAAI,SAAS,SAAS,EAC1D,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACxB,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAG1B","sourcesContent":["import \"./providers/images/register-builtins.ts\";\n\nimport { getImagesApiProvider } from \"./images-api-registry.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ProviderImagesOptions } from \"./types.ts\";\n\nfunction resolveImagesApiProvider(api: ImagesApi) {\n\tconst provider = getImagesApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport async function generateImages<TApi extends ImagesApi>(\n\tmodel: ImagesModel<TApi>,\n\tcontext: ImagesContext,\n\toptions?: ProviderImagesOptions,\n): Promise<AssistantImages> {\n\tconst provider = resolveImagesApiProvider(model.api);\n\treturn provider.generateImages(model, context, options);\n}\n"]}
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AAGjD,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAUhH,wBAAsB,cAAc,CAAC,IAAI,SAAS,SAAS,EAC1D,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EACxB,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAG1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"images.js","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,SAAS,wBAAwB,CAAC,GAAc,EAAE;IACjD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAC;AAAA,CAChB;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,KAAwB,EACxB,OAAsB,EACtB,OAA+B,EACJ;IAC3B,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAAA,CACxD","sourcesContent":["import \"./providers/images/register-builtins.ts\";\n\nimport { getImagesApiProvider } from \"./images-api-registry.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ProviderImagesOptions } from \"./types.ts\";\n\nfunction resolveImagesApiProvider(api: ImagesApi) {\n\tconst provider = getImagesApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport async function generateImages<TApi extends ImagesApi>(\n\tmodel: ImagesModel<TApi>,\n\tcontext: ImagesContext,\n\toptions?: ProviderImagesOptions,\n): Promise<AssistantImages> {\n\tconst provider = resolveImagesApiProvider(model.api);\n\treturn provider.generateImages(model, context, options);\n}\n"]}
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../src/images.ts"],"names":[],"mappings":"AAAA,OAAO,yCAAyC,CAAC;AAEjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,SAAS,wBAAwB,CAAC,GAAc;IAC/C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,KAAwB,EACxB,OAAsB,EACtB,OAA+B;IAE/B,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC","sourcesContent":["import \"./providers/images/register-builtins.ts\";\n\nimport { getImagesApiProvider } from \"./images-api-registry.ts\";\nimport type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ProviderImagesOptions } from \"./types.ts\";\n\nfunction resolveImagesApiProvider(api: ImagesApi) {\n\tconst provider = getImagesApiProvider(api);\n\tif (!provider) {\n\t\tthrow new Error(`No API provider registered for api: ${api}`);\n\t}\n\treturn provider;\n}\n\nexport async function generateImages<TApi extends ImagesApi>(\n\tmodel: ImagesModel<TApi>,\n\tcontext: ImagesContext,\n\toptions?: ProviderImagesOptions,\n): Promise<AssistantImages> {\n\tconst provider = resolveImagesApiProvider(model.api);\n\treturn provider.generateImages(model, context, options);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAO/B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACnH,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\n// Core only, side-effect free: no generated catalogs, no provider factories,\n// no api-registry, no OAuth implementations, no compat. Provider factories\n// live under \"@draht/ai/providers/*\", API implementations under\n// \"@draht/ai/api/*\", the old global API under\n// \"@draht/ai/compat\".\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./api/anthropic-messages.ts\";\nexport type { AzureOpenAIResponsesOptions } from \"./api/azure-openai-responses.ts\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./api/bedrock-converse-stream.ts\";\nexport type { GoogleOptions } from \"./api/google-generative-ai.ts\";\nexport type { GoogleThinkingLevel } from \"./api/google-shared.ts\";\nexport type { GoogleVertexOptions } from \"./api/google-vertex.ts\";\nexport * from \"./api/lazy.ts\";\nexport type { MistralOptions } from \"./api/mistral-conversations.ts\";\nexport type { OpenAICodexResponsesOptions, OpenAICodexWebSocketDebugStats } from \"./api/openai-codex-responses.ts\";\nexport type { OpenAICompletionsOptions } from \"./api/openai-completions.ts\";\nexport type { OpenAIResponsesOptions } from \"./api/openai-responses.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport * from \"./images-models.ts\";\nexport * from \"./models.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthProvider,\n\tOAuthProviderId,\n\tOAuthProviderInfo,\n\tOAuthProviderInterface,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./utils/oauth/types.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport * from \"./utils/validation.ts\";\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAO/B,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC/G,YAAY,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,cAAc,eAAe,CAAC;AAC9B,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,YAAY,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACnH,YAAY,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"legacy-api-aliases.d.ts","sourceRoot":"","sources":["../src/legacy-api-aliases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAWtE,2GAA2G;AAC3G,eAAO,MAAM,eAAe,wDAG3B,CAAC;AACF,uHAAuH;AACvH,eAAO,MAAM,qBAAqB,2DAGjC,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,0BAA0B,uEAGtC,CAAC;AACF,8HAA8H;AAC9H,eAAO,MAAM,gCAAgC,+DAG5C,CAAC;AAEF,8GAA8G;AAC9G,eAAO,MAAM,YAAY,uDAA4F,CAAC;AACtH,0HAA0H;AAC1H,eAAO,MAAM,kBAAkB,6DAG9B,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,sDAAqF,CAAC;AACrH,6GAA6G;AAC7G,eAAO,MAAM,wBAAwB,sDAGpC,CAAC;AAEF,iHAAiH;AACjH,eAAO,MAAM,aAAa,yDAGzB,CAAC;AACF,6HAA6H;AAC7H,eAAO,MAAM,mBAAmB,8DAG/B,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,0BAA0B,uEAGtC,CAAC;AACF,8HAA8H;AAC9H,eAAO,MAAM,gCAAgC,+DAG5C,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,uBAAuB,gEAGnC,CAAC;AACF,uHAAuH;AACvH,eAAO,MAAM,6BAA6B,2DAGzC,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,4DAGjC,CAAC;AACF,mHAAmH;AACnH,eAAO,MAAM,2BAA2B,yDAGvC,CAAC","sourcesContent":["import { anthropicMessagesApi } from \"./api/anthropic-messages.lazy.ts\";\nimport type { AnthropicOptions } from \"./api/anthropic-messages.ts\";\nimport { azureOpenAIResponsesApi } from \"./api/azure-openai-responses.lazy.ts\";\nimport type { AzureOpenAIResponsesOptions } from \"./api/azure-openai-responses.ts\";\nimport { googleGenerativeAIApi } from \"./api/google-generative-ai.lazy.ts\";\nimport type { GoogleOptions } from \"./api/google-generative-ai.ts\";\nimport { googleVertexApi } from \"./api/google-vertex.lazy.ts\";\nimport type { GoogleVertexOptions } from \"./api/google-vertex.ts\";\nimport { mistralConversationsApi } from \"./api/mistral-conversations.lazy.ts\";\nimport type { MistralOptions } from \"./api/mistral-conversations.ts\";\nimport { openAICodexResponsesApi } from \"./api/openai-codex-responses.lazy.ts\";\nimport type { OpenAICodexResponsesOptions } from \"./api/openai-codex-responses.ts\";\nimport { openAICompletionsApi } from \"./api/openai-completions.lazy.ts\";\nimport type { OpenAICompletionsOptions } from \"./api/openai-completions.ts\";\nimport { openAIResponsesApi } from \"./api/openai-responses.lazy.ts\";\nimport type { OpenAIResponsesOptions } from \"./api/openai-responses.ts\";\nimport type { SimpleStreamOptions, StreamFunction } from \"./types.ts\";\n\nconst anthropicMessagesStreams = anthropicMessagesApi();\nconst azureOpenAIResponsesStreams = azureOpenAIResponsesApi();\nconst googleGenerativeAIStreams = googleGenerativeAIApi();\nconst googleVertexStreams = googleVertexApi();\nconst mistralConversationsStreams = mistralConversationsApi();\nconst openAICodexResponsesStreams = openAICodexResponsesApi();\nconst openAICompletionsStreams = openAICompletionsApi();\nconst openAIResponsesStreams = openAIResponsesApi();\n\n/** @deprecated Use `stream` from `@draht/ai/api/anthropic-messages` or `anthropicMessagesApi().stream`. */\nexport const streamAnthropic = anthropicMessagesStreams.stream as StreamFunction<\n\t\"anthropic-messages\",\n\tAnthropicOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/anthropic-messages` or `anthropicMessagesApi().streamSimple`. */\nexport const streamSimpleAnthropic = anthropicMessagesStreams.streamSimple as StreamFunction<\n\t\"anthropic-messages\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().stream`. */\nexport const streamAzureOpenAIResponses = azureOpenAIResponsesStreams.stream as StreamFunction<\n\t\"azure-openai-responses\",\n\tAzureOpenAIResponsesOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().streamSimple`. */\nexport const streamSimpleAzureOpenAIResponses = azureOpenAIResponsesStreams.streamSimple as StreamFunction<\n\t\"azure-openai-responses\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/google-generative-ai` or `googleGenerativeAIApi().stream`. */\nexport const streamGoogle = googleGenerativeAIStreams.stream as StreamFunction<\"google-generative-ai\", GoogleOptions>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/google-generative-ai` or `googleGenerativeAIApi().streamSimple`. */\nexport const streamSimpleGoogle = googleGenerativeAIStreams.streamSimple as StreamFunction<\n\t\"google-generative-ai\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/google-vertex` or `googleVertexApi().stream`. */\nexport const streamGoogleVertex = googleVertexStreams.stream as StreamFunction<\"google-vertex\", GoogleVertexOptions>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/google-vertex` or `googleVertexApi().streamSimple`. */\nexport const streamSimpleGoogleVertex = googleVertexStreams.streamSimple as StreamFunction<\n\t\"google-vertex\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/mistral-conversations` or `mistralConversationsApi().stream`. */\nexport const streamMistral = mistralConversationsStreams.stream as StreamFunction<\n\t\"mistral-conversations\",\n\tMistralOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/mistral-conversations` or `mistralConversationsApi().streamSimple`. */\nexport const streamSimpleMistral = mistralConversationsStreams.streamSimple as StreamFunction<\n\t\"mistral-conversations\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/openai-codex-responses` or `openAICodexResponsesApi().stream`. */\nexport const streamOpenAICodexResponses = openAICodexResponsesStreams.stream as StreamFunction<\n\t\"openai-codex-responses\",\n\tOpenAICodexResponsesOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/openai-codex-responses` or `openAICodexResponsesApi().streamSimple`. */\nexport const streamSimpleOpenAICodexResponses = openAICodexResponsesStreams.streamSimple as StreamFunction<\n\t\"openai-codex-responses\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/openai-completions` or `openAICompletionsApi().stream`. */\nexport const streamOpenAICompletions = openAICompletionsStreams.stream as StreamFunction<\n\t\"openai-completions\",\n\tOpenAICompletionsOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/openai-completions` or `openAICompletionsApi().streamSimple`. */\nexport const streamSimpleOpenAICompletions = openAICompletionsStreams.streamSimple as StreamFunction<\n\t\"openai-completions\",\n\tSimpleStreamOptions\n>;\n\n/** @deprecated Use `stream` from `@draht/ai/api/openai-responses` or `openAIResponsesApi().stream`. */\nexport const streamOpenAIResponses = openAIResponsesStreams.stream as StreamFunction<\n\t\"openai-responses\",\n\tOpenAIResponsesOptions\n>;\n/** @deprecated Use `streamSimple` from `@draht/ai/api/openai-responses` or `openAIResponsesApi().streamSimple`. */\nexport const streamSimpleOpenAIResponses = openAIResponsesStreams.streamSimple as StreamFunction<\n\t\"openai-responses\",\n\tSimpleStreamOptions\n>;\n"]}
1
+ {"version":3,"file":"legacy-api-aliases.d.ts","sourceRoot":"","sources":["../src/legacy-api-aliases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAErE,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAE5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAWtE,2GAA2G;AAC3G,eAAO,MAAM,eAAe,EAAsC,cAAc,CAC/E,oBAAoB,EACpB,gBAAgB,CAChB,CAAC;AACF,uHAAuH;AACvH,eAAO,MAAM,qBAAqB,EAA4C,cAAc,CAC3F,oBAAoB,EACpB,mBAAmB,CACnB,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,0BAA0B,EAAyC,cAAc,CAC7F,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;AACF,8HAA8H;AAC9H,eAAO,MAAM,gCAAgC,EAA+C,cAAc,CACzG,wBAAwB,EACxB,mBAAmB,CACnB,CAAC;AAEF,8GAA8G;AAC9G,eAAO,MAAM,YAAY,EAAuC,cAAc,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;AACtH,0HAA0H;AAC1H,eAAO,MAAM,kBAAkB,EAA6C,cAAc,CACzF,sBAAsB,EACtB,mBAAmB,CACnB,CAAC;AAEF,iGAAiG;AACjG,eAAO,MAAM,kBAAkB,EAAiC,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AACrH,6GAA6G;AAC7G,eAAO,MAAM,wBAAwB,EAAuC,cAAc,CACzF,eAAe,EACf,mBAAmB,CACnB,CAAC;AAEF,iHAAiH;AACjH,eAAO,MAAM,aAAa,EAAyC,cAAc,CAChF,uBAAuB,EACvB,cAAc,CACd,CAAC;AACF,6HAA6H;AAC7H,eAAO,MAAM,mBAAmB,EAA+C,cAAc,CAC5F,uBAAuB,EACvB,mBAAmB,CACnB,CAAC;AAEF,kHAAkH;AAClH,eAAO,MAAM,0BAA0B,EAAyC,cAAc,CAC7F,wBAAwB,EACxB,2BAA2B,CAC3B,CAAC;AACF,8HAA8H;AAC9H,eAAO,MAAM,gCAAgC,EAA+C,cAAc,CACzG,wBAAwB,EACxB,mBAAmB,CACnB,CAAC;AAEF,2GAA2G;AAC3G,eAAO,MAAM,uBAAuB,EAAsC,cAAc,CACvF,oBAAoB,EACpB,wBAAwB,CACxB,CAAC;AACF,uHAAuH;AACvH,eAAO,MAAM,6BAA6B,EAA4C,cAAc,CACnG,oBAAoB,EACpB,mBAAmB,CACnB,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAoC,cAAc,CACnF,kBAAkB,EAClB,sBAAsB,CACtB,CAAC;AACF,mHAAmH;AACnH,eAAO,MAAM,2BAA2B,EAA0C,cAAc,CAC/F,kBAAkB,EAClB,mBAAmB,CACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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","sourcesContent":["import { lazyStream } from \"./api/lazy.ts\";\nimport { defaultProviderAuthContext as defaultAuthContext } from \"./auth/context.ts\";\nimport { InMemoryCredentialStore } from \"./auth/credential-store.ts\";\nimport { ModelsError, resolveProviderAuth } from \"./auth/resolve.ts\";\nimport type { AuthContext, AuthResult, CredentialStore, ProviderAuth } from \"./auth/types.ts\";\nimport type {\n\tApi,\n\tApiStreamOptions,\n\tAssistantMessage,\n\tAssistantMessageEventStream,\n\tContext,\n\tModel,\n\tModelCostRates,\n\tModelThinkingLevel,\n\tProviderHeaders,\n\tProviderStreams,\n\tSimpleStreamOptions,\n\tStreamOptions,\n\tUsage,\n} from \"./types.ts\";\n\nexport { type AuthModel, ModelsError, type ModelsErrorCode } from \"./auth/resolve.ts\";\n\n/**\n * A provider is the concrete runtime unit. It owns id/name/base metadata,\n * auth methods, model listing, and stream behavior.\n *\n * `TApi` lets concrete provider factories declare which APIs their models\n * use (e.g. `openaiProvider(): Provider<\"openai-responses\" | \"openai-completions\">`),\n * giving typed model lists to direct factory users. Inside a `Models`\n * collection providers are held as `Provider<Api>`.\n */\nexport interface Provider<TApi extends Api = Api> {\n\treadonly id: string;\n\treadonly name: string;\n\n\treadonly baseUrl?: string;\n\treadonly headers?: ProviderHeaders;\n\n\t/**\n\t * Required: at least one of `apiKey`/`oauth`. Every provider has auth\n\t * semantics — even providers with only ambient credentials (env vars, AWS\n\t * profiles, ADC files) and keyless local servers provide `apiKey` auth\n\t * whose `resolve()` reports whether the provider is configured.\n\t * `Models.getAuth()` returns undefined when the provider is unconfigured.\n\t */\n\treadonly auth: ProviderAuth;\n\n\t/**\n\t * Current known models, sync. Static providers return their catalog;\n\t * dynamic providers return the list as of the last `refreshModels()`\n\t * (empty before the first). Must not throw; `Models` treats a throwing\n\t * implementation as having no models.\n\t */\n\tgetModels(): readonly Model<TApi>[];\n\n\t/**\n\t * Dynamic providers only: fetch and update the model list. Side-effect-free\n\t * discovery (no loading/downloading); provider-specific model lifecycle\n\t * belongs in app commands. Concurrent calls share one in-flight fetch.\n\t * May reject (network); on rejection the model list stays at its last-known\n\t * state and a later call retries.\n\t */\n\trefreshModels?(): Promise<void>;\n\n\tstream<T extends TApi>(\n\t\tmodel: Model<T>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<T>,\n\t): AssistantMessageEventStream;\n\n\tstreamSimple(model: Model<TApi>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;\n}\n\n/**\n * Runtime collection of providers plus auth application and stream\n * convenience. Providers own stream behavior; `Models` resolves auth and\n * delegates each request to the provider that owns the model.\n */\nexport interface Models {\n\tgetProviders(): readonly Provider[];\n\tgetProvider(id: string): Provider | undefined;\n\n\t/**\n\t * Sync read of last-known models from one provider or all providers.\n\t * Best-effort: a provider whose `getModels()` throws yields no models.\n\t */\n\tgetModels(provider?: string): readonly Model<Api>[];\n\n\t/**\n\t * Sync runtime model lookup against last-known lists. Dynamic model lists\n\t * are typed as `Model<Api>`; narrow with the `hasApi()` type guard.\n\t */\n\tgetModel(provider: string, id: string): Model<Api> | undefined;\n\n\t/**\n\t * Ask dynamic providers to re-fetch their model lists. With a provider id,\n\t * rejects with `ModelsError` (\"model_source\") on that provider's fetch\n\t * failure; without one, refreshes all providers concurrently best-effort.\n\t * Static providers (no `refreshModels`) are no-ops.\n\t */\n\trefresh(provider?: string): Promise<void>;\n\n\t/**\n\t * Resolve request auth for a model. Includes a source label for status UI.\n\t * Resolves `undefined` when the provider is unknown or unconfigured.\n\t * Rejects with `ModelsError`: code \"oauth\" when a token refresh fails (the\n\t * stored credential is preserved for retry; re-login fixes it), code \"auth\"\n\t * when api-key resolution or the credential store fails. Request paths\n\t * surface rejections as stream errors; status/availability UIs catch them\n\t * and render \"needs re-login\" instead of treating them as unconfigured.\n\t */\n\tgetAuth(model: Model<Api>): Promise<AuthResult | undefined>;\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream;\n\n\tcomplete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage>;\n\n\tstreamSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream;\n\tcompleteSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage>;\n}\n\nexport interface MutableModels extends Models {\n\t/** Upsert/replace by provider.id. Provider ids are unique. */\n\tsetProvider(provider: Provider): void;\n\tdeleteProvider(id: string): void;\n\tclearProviders(): void;\n}\n\nexport interface CreateModelsOptions {\n\tcredentials?: CredentialStore;\n\tauthContext?: AuthContext;\n}\n\nclass ModelsImpl implements MutableModels {\n\tprivate providers = new Map<string, Provider>();\n\tprivate credentials: CredentialStore;\n\tprivate authContext: AuthContext;\n\n\tconstructor(options?: CreateModelsOptions) {\n\t\tthis.credentials = options?.credentials ?? new InMemoryCredentialStore();\n\t\tthis.authContext = options?.authContext ?? defaultAuthContext();\n\t}\n\n\tsetProvider(provider: Provider): void {\n\t\tthis.providers.set(provider.id, provider);\n\t}\n\n\tdeleteProvider(id: string): void {\n\t\tthis.providers.delete(id);\n\t}\n\n\tclearProviders(): void {\n\t\tthis.providers.clear();\n\t}\n\n\tgetProviders(): readonly Provider[] {\n\t\treturn Array.from(this.providers.values());\n\t}\n\n\tgetProvider(id: string): Provider | undefined {\n\t\treturn this.providers.get(id);\n\t}\n\n\tgetModels(provider?: string): readonly Model<Api>[] {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry) return [];\n\t\t\ttry {\n\t\t\t\treturn entry.getModels();\n\t\t\t} catch {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t}\n\n\t\tconst models: Model<Api>[] = [];\n\t\tfor (const entry of this.providers.values()) {\n\t\t\ttry {\n\t\t\t\tmodels.push(...entry.getModels());\n\t\t\t} catch {\n\t\t\t\t// Best-effort: ill-behaved providers yield no models.\n\t\t\t}\n\t\t}\n\t\treturn models;\n\t}\n\n\tgetModel(provider: string, id: string): Model<Api> | undefined {\n\t\treturn this.getModels(provider).find((model) => model.id === id);\n\t}\n\n\tasync refresh(provider?: string): Promise<void> {\n\t\tif (provider !== undefined) {\n\t\t\tconst entry = this.providers.get(provider);\n\t\t\tif (!entry?.refreshModels) return;\n\t\t\ttry {\n\t\t\t\tawait entry.refreshModels();\n\t\t\t} catch (error) {\n\t\t\t\tif (error instanceof ModelsError) throw error;\n\t\t\t\tthrow new ModelsError(\"model_source\", `Model refresh failed for ${provider}`, { cause: error });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Cannot reject: the async mapper turns even sync throws from ill-behaved\n\t\t// providers into rejections, and allSettled captures all of them.\n\t\tawait Promise.allSettled(Array.from(this.providers.values(), async (entry) => entry.refreshModels?.()));\n\t}\n\n\tasync getAuth(model: Model<Api>): Promise<AuthResult | undefined> {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) return undefined;\n\t\treturn resolveProviderAuth(provider, model, this.credentials, this.authContext);\n\t}\n\n\tprivate requireProvider(model: Model<Api>): Provider {\n\t\tconst provider = this.providers.get(model.provider);\n\t\tif (!provider) {\n\t\t\tthrow new ModelsError(\"provider\", `Unknown provider: ${model.provider}`);\n\t\t}\n\t\treturn provider;\n\t}\n\n\tprivate async applyAuth<TOptions extends StreamOptions>(\n\t\tmodel: Model<Api>,\n\t\toptions: TOptions | undefined,\n\t): Promise<{ requestModel: Model<Api>; requestOptions: TOptions | undefined }> {\n\t\tconst resolution = await resolveProviderAuth(\n\t\t\tthis.requireProvider(model),\n\t\t\tmodel,\n\t\t\tthis.credentials,\n\t\t\tthis.authContext,\n\t\t\t{\n\t\t\t\tapiKey: options?.apiKey,\n\t\t\t\tenv: options?.env,\n\t\t\t},\n\t\t);\n\t\tconst auth = resolution?.auth;\n\t\tif (!auth) return { requestModel: model, requestOptions: options };\n\n\t\tconst requestModel = auth.baseUrl ? { ...model, baseUrl: auth.baseUrl } : model;\n\n\t\t// Explicit request options win per-field; headers/env merge per key.\n\t\tconst apiKey = options?.apiKey ?? auth.apiKey;\n\t\tconst headers = auth.headers || options?.headers ? { ...auth.headers, ...options?.headers } : undefined;\n\t\tconst env = resolution.env || options?.env ? { ...(resolution.env ?? {}), ...(options?.env ?? {}) } : undefined;\n\t\tconst requestOptions = { ...options, apiKey, headers, env } as TOptions;\n\n\t\treturn { requestModel, requestOptions };\n\t}\n\n\tstream<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<TApi>,\n\t): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst provider = this.requireProvider(model);\n\t\t\tconst { requestModel, requestOptions } = await this.applyAuth(model, options as StreamOptions | undefined);\n\t\t\treturn provider.stream(requestModel as Model<TApi>, context, requestOptions as ApiStreamOptions<TApi>);\n\t\t});\n\t}\n\n\tasync complete<TApi extends Api>(\n\t\tmodel: Model<TApi>,\n\t\tcontext: Context,\n\t\toptions?: ApiStreamOptions<TApi>,\n\t): Promise<AssistantMessage> {\n\t\treturn this.stream(model, context, options).result();\n\t}\n\n\tstreamSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): AssistantMessageEventStream {\n\t\treturn lazyStream(model, async () => {\n\t\t\tconst provider = this.requireProvider(model);\n\t\t\tconst { requestModel, requestOptions } = await this.applyAuth(model, options);\n\t\t\treturn provider.streamSimple(requestModel, context, requestOptions);\n\t\t});\n\t}\n\n\tasync completeSimple(model: Model<Api>, context: Context, options?: SimpleStreamOptions): Promise<AssistantMessage> {\n\t\treturn this.streamSimple(model, context, options).result();\n\t}\n}\n\nexport function createModels(options?: CreateModelsOptions): MutableModels {\n\treturn new ModelsImpl(options);\n}\n\nexport interface CreateProviderOptions<TApi extends Api = Api> {\n\tid: string;\n\t/** Display name. Default: `id`. */\n\tname?: string;\n\tbaseUrl?: string;\n\theaders?: ProviderHeaders;\n\t/** Required — every provider has auth semantics, even ambient/keyless ones. */\n\tauth: ProviderAuth;\n\t/** Initial model list (empty for purely dynamic providers). */\n\tmodels: readonly Model<TApi>[];\n\t/**\n\t * Dynamic providers: fetch the current list. Stored on success; concurrent\n\t * calls share one in-flight fetch. May reject: the stored list then stays\n\t * at its last-known state, the rejection propagates to the caller of\n\t * `refreshModels()` (wrapped as ModelsError \"model_source\" by\n\t * `Models.refresh(provider)`), and a later call retries.\n\t */\n\trefreshModels?: () => Promise<readonly Model<TApi>[]>;\n\t/** Single implementation, or map keyed by `model.api` for mixed-API providers. */\n\tapi: ProviderStreams | Partial<Record<TApi, ProviderStreams>>;\n}\n\n/**\n * Builds a provider from parts. Built-in provider factories and models.json\n * custom providers both go through this. A single `api` streams all models;\n * an `api` map dispatches on `model.api`, and a model whose api has no entry\n * produces a stream error.\n */\nexport function createProvider<TApi extends Api = Api>(input: CreateProviderOptions<TApi>): Provider<TApi> {\n\tlet models = input.models;\n\tlet inflightRefresh: Promise<void> | undefined;\n\tconst refreshModels = input.refreshModels;\n\tconst single =\n\t\ttypeof (input.api as ProviderStreams).stream === \"function\" ? (input.api as ProviderStreams) : undefined;\n\tconst byApi = single ? undefined : (input.api as Partial<Record<string, ProviderStreams>>);\n\n\tconst apiFor = (model: Model<Api>): ProviderStreams | undefined => single ?? byApi?.[model.api];\n\n\tconst dispatch = (\n\t\tmodel: Model<Api>,\n\t\trun: (streams: ProviderStreams) => AssistantMessageEventStream,\n\t): AssistantMessageEventStream => {\n\t\tconst streams = apiFor(model);\n\t\tif (!streams) {\n\t\t\treturn lazyStream(model, async () => {\n\t\t\t\tthrow new ModelsError(\"stream\", `Provider ${input.id} has no API implementation for \"${model.api}\"`);\n\t\t\t});\n\t\t}\n\t\treturn run(streams);\n\t};\n\n\treturn {\n\t\tid: input.id,\n\t\tname: input.name ?? input.id,\n\t\tbaseUrl: input.baseUrl,\n\t\theaders: input.headers,\n\t\tauth: input.auth,\n\t\tgetModels: () => models,\n\t\trefreshModels: refreshModels\n\t\t\t? () => {\n\t\t\t\t\tinflightRefresh ??= (async () => {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tmodels = await refreshModels();\n\t\t\t\t\t\t} finally {\n\t\t\t\t\t\t\tinflightRefresh = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t})();\n\t\t\t\t\treturn inflightRefresh;\n\t\t\t\t}\n\t\t\t: undefined,\n\t\tstream: (model, context, options) => dispatch(model, (streams) => streams.stream(model, context, options)),\n\t\tstreamSimple: (model, context, options) =>\n\t\t\tdispatch(model, (streams) => streams.streamSimple(model, context, options)),\n\t};\n}\n\n/**\n * Runtime-checked narrowing for dynamically looked-up models:\n *\n * ```ts\n * const model = models.getModel(\"anthropic\", \"claude-opus-4-7\");\n * if (model && hasApi(model, \"anthropic-messages\")) {\n * // model: Model<\"anthropic-messages\">, stream options fully typed\n * }\n * ```\n */\nexport function hasApi<TApi extends Api>(model: Model<Api>, api: TApi): model is Model<TApi> {\n\treturn model.api === api;\n}\n\nexport function calculateCost<TApi extends Api>(model: Model<TApi>, usage: Usage): Usage[\"cost\"] {\n\tconst inputTokens = usage.input + usage.cacheRead + usage.cacheWrite;\n\tlet rates: ModelCostRates = model.cost;\n\tlet matchedThreshold = -1;\n\tfor (const tier of model.cost.tiers ?? []) {\n\t\tif (inputTokens > tier.inputTokensAbove && tier.inputTokensAbove > matchedThreshold) {\n\t\t\trates = tier;\n\t\t\tmatchedThreshold = tier.inputTokensAbove;\n\t\t}\n\t}\n\n\t// Anthropic charges 2x base input for 1h cache writes.\n\tconst longWrite = usage.cacheWrite1h ?? 0;\n\tconst shortWrite = usage.cacheWrite - longWrite;\n\tusage.cost.input = (rates.input / 1000000) * usage.input;\n\tusage.cost.output = (rates.output / 1000000) * usage.output;\n\tusage.cost.cacheRead = (rates.cacheRead / 1000000) * usage.cacheRead;\n\tusage.cost.cacheWrite = (rates.cacheWrite * shortWrite + rates.input * 2 * longWrite) / 1000000;\n\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\treturn usage.cost;\n}\n\nconst EXTENDED_THINKING_LEVELS: ModelThinkingLevel[] = [\"off\", \"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"];\n\nexport function getSupportedThinkingLevels<TApi extends Api>(model: Model<TApi>): ModelThinkingLevel[] {\n\tif (!model.reasoning) return [\"off\"];\n\n\treturn EXTENDED_THINKING_LEVELS.filter((level) => {\n\t\tconst mapped = model.thinkingLevelMap?.[level];\n\t\tif (mapped === null) return false;\n\t\tif (level === \"xhigh\" || level === \"max\") return mapped !== undefined;\n\t\treturn true;\n\t});\n}\n\nexport function clampThinkingLevel<TApi extends Api>(\n\tmodel: Model<TApi>,\n\tlevel: ModelThinkingLevel,\n): ModelThinkingLevel {\n\tconst availableLevels = getSupportedThinkingLevels(model);\n\tif (availableLevels.includes(level)) return level;\n\n\tconst requestedIndex = EXTENDED_THINKING_LEVELS.indexOf(level);\n\tif (requestedIndex === -1) return availableLevels[0] ?? \"off\";\n\n\tfor (let i = requestedIndex; i < EXTENDED_THINKING_LEVELS.length; i++) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\tfor (let i = requestedIndex - 1; i >= 0; i--) {\n\t\tconst candidate = EXTENDED_THINKING_LEVELS[i];\n\t\tif (availableLevels.includes(candidate)) return candidate;\n\t}\n\treturn availableLevels[0] ?? \"off\";\n}\n\n/**\n * Check if a model supports xhigh thinking level.\n */\nexport function supportsXhigh<TApi extends Api>(model: Model<TApi>): boolean {\n\tif (model.id.includes(\"gpt-5.2\") || model.id.includes(\"gpt-5.3\") || model.id.includes(\"gpt-5.4\")) {\n\t\treturn true;\n\t}\n\tif (\n\t\tmodel.id.includes(\"opus-4-6\") ||\n\t\tmodel.id.includes(\"opus-4.6\") ||\n\t\tmodel.id.includes(\"opus-4-7\") ||\n\t\tmodel.id.includes(\"opus-4.7\") ||\n\t\tmodel.id.includes(\"sonnet-4-6\") ||\n\t\tmodel.id.includes(\"sonnet-4.6\") ||\n\t\tmodel.id.includes(\"haiku-4-5\") ||\n\t\tmodel.id.includes(\"haiku-4.5\")\n\t) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Check if a model supports the max thinking level.\n * Currently Anthropic Opus 4.6 and Opus 4.7 only.\n */\nexport function supportsMax<TApi extends Api>(model: Model<TApi>): boolean {\n\treturn (\n\t\tmodel.id.includes(\"opus-4-6\") ||\n\t\tmodel.id.includes(\"opus-4.6\") ||\n\t\tmodel.id.includes(\"opus-4-7\") ||\n\t\tmodel.id.includes(\"opus-4.7\")\n\t);\n}\n\n/**\n * Check if two models are equal by comparing both their id and provider.\n * Returns false if either model is null or undefined.\n */\nexport function modelsAreEqual<TApi extends Api>(\n\ta: Model<TApi> | null | undefined,\n\tb: Model<TApi> | null | undefined,\n): boolean {\n\tif (!a || !b) return false;\n\treturn a.id === b.id && a.provider === b.provider;\n}\n"]}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCT,CAAC","sourcesContent":["// This file is auto-generated by scripts/generate-models.ts\n// Do not edit manually - run 'npm run generate-models' to update\n\nimport { AMAZON_BEDROCK_MODELS } from \"./providers/amazon-bedrock.models.ts\";\nimport { ANT_LING_MODELS } from \"./providers/ant-ling.models.ts\";\nimport { ANTHROPIC_MODELS } from \"./providers/anthropic.models.ts\";\nimport { AZURE_OPENAI_RESPONSES_MODELS } from \"./providers/azure-openai-responses.models.ts\";\nimport { CEREBRAS_MODELS } from \"./providers/cerebras.models.ts\";\nimport { CLOUDFLARE_AI_GATEWAY_MODELS } from \"./providers/cloudflare-ai-gateway.models.ts\";\nimport { CLOUDFLARE_WORKERS_AI_MODELS } from \"./providers/cloudflare-workers-ai.models.ts\";\nimport { DEEPSEEK_MODELS } from \"./providers/deepseek.models.ts\";\nimport { FIREWORKS_MODELS } from \"./providers/fireworks.models.ts\";\nimport { GITHUB_COPILOT_MODELS } from \"./providers/github-copilot.models.ts\";\nimport { GOOGLE_MODELS } from \"./providers/google.models.ts\";\nimport { GOOGLE_VERTEX_MODELS } from \"./providers/google-vertex.models.ts\";\nimport { GROQ_MODELS } from \"./providers/groq.models.ts\";\nimport { HUGGINGFACE_MODELS } from \"./providers/huggingface.models.ts\";\nimport { KIMI_CODING_MODELS } from \"./providers/kimi-coding.models.ts\";\nimport { MINIMAX_MODELS } from \"./providers/minimax.models.ts\";\nimport { MINIMAX_CN_MODELS } from \"./providers/minimax-cn.models.ts\";\nimport { MISTRAL_MODELS } from \"./providers/mistral.models.ts\";\nimport { MOONSHOTAI_MODELS } from \"./providers/moonshotai.models.ts\";\nimport { MOONSHOTAI_CN_MODELS } from \"./providers/moonshotai-cn.models.ts\";\nimport { NVIDIA_MODELS } from \"./providers/nvidia.models.ts\";\nimport { OPENAI_MODELS } from \"./providers/openai.models.ts\";\nimport { OPENAI_CODEX_MODELS } from \"./providers/openai-codex.models.ts\";\nimport { OPENCODE_MODELS } from \"./providers/opencode.models.ts\";\nimport { OPENCODE_GO_MODELS } from \"./providers/opencode-go.models.ts\";\nimport { OPENROUTER_MODELS } from \"./providers/openrouter.models.ts\";\nimport { TOGETHER_MODELS } from \"./providers/together.models.ts\";\nimport { VERCEL_AI_GATEWAY_MODELS } from \"./providers/vercel-ai-gateway.models.ts\";\nimport { XAI_MODELS } from \"./providers/xai.models.ts\";\nimport { XIAOMI_MODELS } from \"./providers/xiaomi.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_AMS_MODELS } from \"./providers/xiaomi-token-plan-ams.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_CN_MODELS } from \"./providers/xiaomi-token-plan-cn.models.ts\";\nimport { XIAOMI_TOKEN_PLAN_SGP_MODELS } from \"./providers/xiaomi-token-plan-sgp.models.ts\";\nimport { ZAI_MODELS } from \"./providers/zai.models.ts\";\nimport { ZAI_CODING_CN_MODELS } from \"./providers/zai-coding-cn.models.ts\";\n\nexport const MODELS = {\n\t\"amazon-bedrock\": AMAZON_BEDROCK_MODELS,\n\t\"ant-ling\": ANT_LING_MODELS,\n\t\"anthropic\": ANTHROPIC_MODELS,\n\t\"azure-openai-responses\": AZURE_OPENAI_RESPONSES_MODELS,\n\t\"cerebras\": CEREBRAS_MODELS,\n\t\"cloudflare-ai-gateway\": CLOUDFLARE_AI_GATEWAY_MODELS,\n\t\"cloudflare-workers-ai\": CLOUDFLARE_WORKERS_AI_MODELS,\n\t\"deepseek\": DEEPSEEK_MODELS,\n\t\"fireworks\": FIREWORKS_MODELS,\n\t\"github-copilot\": GITHUB_COPILOT_MODELS,\n\t\"google\": GOOGLE_MODELS,\n\t\"google-vertex\": GOOGLE_VERTEX_MODELS,\n\t\"groq\": GROQ_MODELS,\n\t\"huggingface\": HUGGINGFACE_MODELS,\n\t\"kimi-coding\": KIMI_CODING_MODELS,\n\t\"minimax\": MINIMAX_MODELS,\n\t\"minimax-cn\": MINIMAX_CN_MODELS,\n\t\"mistral\": MISTRAL_MODELS,\n\t\"moonshotai\": MOONSHOTAI_MODELS,\n\t\"moonshotai-cn\": MOONSHOTAI_CN_MODELS,\n\t\"nvidia\": NVIDIA_MODELS,\n\t\"openai\": OPENAI_MODELS,\n\t\"openai-codex\": OPENAI_CODEX_MODELS,\n\t\"opencode\": OPENCODE_MODELS,\n\t\"opencode-go\": OPENCODE_GO_MODELS,\n\t\"openrouter\": OPENROUTER_MODELS,\n\t\"together\": TOGETHER_MODELS,\n\t\"vercel-ai-gateway\": VERCEL_AI_GATEWAY_MODELS,\n\t\"xai\": XAI_MODELS,\n\t\"xiaomi\": XIAOMI_MODELS,\n\t\"xiaomi-token-plan-ams\": XIAOMI_TOKEN_PLAN_AMS_MODELS,\n\t\"xiaomi-token-plan-cn\": XIAOMI_TOKEN_PLAN_CN_MODELS,\n\t\"xiaomi-token-plan-sgp\": XIAOMI_TOKEN_PLAN_SGP_MODELS,\n\t\"zai\": ZAI_MODELS,\n\t\"zai-coding-cn\": ZAI_CODING_CN_MODELS,\n} as const;\n"]}
1
+ {"version":3,"file":"models.generated.d.ts","sourceRoot":"","sources":["../src/models.generated.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,MAAM;aAClB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAChB,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACV,SAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACX,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACxB,QAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACV,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACvB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACvB,QAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACV,SAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACX,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAChB,MAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACR,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACf,IAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACN,WAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACb,OAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACT,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACZ,OAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACT,UAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACZ,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACf,MAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACR,MAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACR,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACd,QAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACV,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACb,UAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACZ,QAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACV,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACnB,GAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACL,MAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACR,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACvB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACtB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACvB,GAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aACL,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACN,CAAC"}
package/dist/models.js CHANGED
@@ -4,10 +4,8 @@ import { InMemoryCredentialStore } from "./auth/credential-store.js";
4
4
  import { ModelsError, resolveProviderAuth } from "./auth/resolve.js";
5
5
  export { ModelsError } from "./auth/resolve.js";
6
6
  class ModelsImpl {
7
- providers = new Map();
8
- credentials;
9
- authContext;
10
7
  constructor(options) {
8
+ this.providers = new Map();
11
9
  this.credentials = options?.credentials ?? new InMemoryCredentialStore();
12
10
  this.authContext = options?.authContext ?? defaultAuthContext();
13
11
  }