@bastani/pi-ai 0.9.19 → 0.9.20-alpha.10

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 (445) hide show
  1. package/CHANGELOG.md +83 -1
  2. package/NOTICE.md +1 -1
  3. package/README.md +203 -30
  4. package/dist/api/anthropic-messages.d.ts.map +1 -1
  5. package/dist/api/anthropic-messages.js +255 -97
  6. package/dist/api/anthropic-messages.js.map +1 -1
  7. package/dist/api/azure-openai-responses.d.ts.map +1 -1
  8. package/dist/api/azure-openai-responses.js +21 -6
  9. package/dist/api/azure-openai-responses.js.map +1 -1
  10. package/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  11. package/dist/api/bedrock-converse-stream.js +20 -15
  12. package/dist/api/bedrock-converse-stream.js.map +1 -1
  13. package/dist/api/cloudflare-workers-ai-system-one.d.ts +4 -0
  14. package/dist/api/cloudflare-workers-ai-system-one.d.ts.map +1 -0
  15. package/dist/api/cloudflare-workers-ai-system-one.js +43 -0
  16. package/dist/api/cloudflare-workers-ai-system-one.js.map +1 -0
  17. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts +3 -0
  18. package/dist/api/cloudflare-workers-ai-system-one.lazy.d.ts.map +1 -0
  19. package/dist/api/cloudflare-workers-ai-system-one.lazy.js +4 -0
  20. package/dist/api/cloudflare-workers-ai-system-one.lazy.js.map +1 -0
  21. package/dist/api/cloudflare.d.ts +2 -0
  22. package/dist/api/cloudflare.d.ts.map +1 -1
  23. package/dist/api/cloudflare.js +2 -0
  24. package/dist/api/cloudflare.js.map +1 -1
  25. package/dist/api/constrained-sampling.d.ts +8 -3
  26. package/dist/api/constrained-sampling.d.ts.map +1 -1
  27. package/dist/api/constrained-sampling.js +29 -11
  28. package/dist/api/constrained-sampling.js.map +1 -1
  29. package/dist/api/google-generative-ai.d.ts.map +1 -1
  30. package/dist/api/google-generative-ai.js +23 -80
  31. package/dist/api/google-generative-ai.js.map +1 -1
  32. package/dist/api/google-shared.d.ts +13 -4
  33. package/dist/api/google-shared.d.ts.map +1 -1
  34. package/dist/api/google-shared.js +54 -4
  35. package/dist/api/google-shared.js.map +1 -1
  36. package/dist/api/google-vertex.d.ts.map +1 -1
  37. package/dist/api/google-vertex.js +26 -65
  38. package/dist/api/google-vertex.js.map +1 -1
  39. package/dist/api/mistral-conversations.d.ts.map +1 -1
  40. package/dist/api/mistral-conversations.js +18 -13
  41. package/dist/api/mistral-conversations.js.map +1 -1
  42. package/dist/api/openai-codex-responses.d.ts.map +1 -1
  43. package/dist/api/openai-codex-responses.js +40 -26
  44. package/dist/api/openai-codex-responses.js.map +1 -1
  45. package/dist/api/openai-completions.d.ts +6 -4
  46. package/dist/api/openai-completions.d.ts.map +1 -1
  47. package/dist/api/openai-completions.js +44 -58
  48. package/dist/api/openai-completions.js.map +1 -1
  49. package/dist/api/openai-responses-shared.d.ts +11 -5
  50. package/dist/api/openai-responses-shared.d.ts.map +1 -1
  51. package/dist/api/openai-responses-shared.js +65 -58
  52. package/dist/api/openai-responses-shared.js.map +1 -1
  53. package/dist/api/openai-responses.d.ts.map +1 -1
  54. package/dist/api/openai-responses.js +15 -19
  55. package/dist/api/openai-responses.js.map +1 -1
  56. package/dist/api/openrouter-images.d.ts +2 -1
  57. package/dist/api/openrouter-images.d.ts.map +1 -1
  58. package/dist/api/openrouter-images.js +1 -0
  59. package/dist/api/openrouter-images.js.map +1 -1
  60. package/dist/api/openrouter-images.lazy.d.ts.map +1 -1
  61. package/dist/api/openrouter-images.lazy.js.map +1 -1
  62. package/dist/api/pi-messages.d.ts +3 -3
  63. package/dist/api/pi-messages.d.ts.map +1 -1
  64. package/dist/api/pi-messages.js +3 -2
  65. package/dist/api/pi-messages.js.map +1 -1
  66. package/dist/api/simple-options.d.ts +3 -3
  67. package/dist/api/simple-options.d.ts.map +1 -1
  68. package/dist/api/simple-options.js +1 -0
  69. package/dist/api/simple-options.js.map +1 -1
  70. package/dist/api/system-one-shared.d.ts +23 -0
  71. package/dist/api/system-one-shared.d.ts.map +1 -0
  72. package/dist/api/system-one-shared.js +170 -0
  73. package/dist/api/system-one-shared.js.map +1 -0
  74. package/dist/api/transform-messages.d.ts.map +1 -1
  75. package/dist/api/transform-messages.js +21 -7
  76. package/dist/api/transform-messages.js.map +1 -1
  77. package/dist/api/typesafe-system-one.d.ts +4 -0
  78. package/dist/api/typesafe-system-one.d.ts.map +1 -0
  79. package/dist/api/typesafe-system-one.js +19 -0
  80. package/dist/api/typesafe-system-one.js.map +1 -0
  81. package/dist/api/typesafe-system-one.lazy.d.ts +3 -0
  82. package/dist/api/typesafe-system-one.lazy.d.ts.map +1 -0
  83. package/dist/api/typesafe-system-one.lazy.js +4 -0
  84. package/dist/api/typesafe-system-one.lazy.js.map +1 -0
  85. package/dist/auth/credential-store.d.ts.map +1 -1
  86. package/dist/auth/credential-store.js +3 -2
  87. package/dist/auth/credential-store.js.map +1 -1
  88. package/dist/auth/oauth/load.d.ts +2 -0
  89. package/dist/auth/oauth/load.d.ts.map +1 -1
  90. package/dist/auth/oauth/load.js +5 -0
  91. package/dist/auth/oauth/load.js.map +1 -1
  92. package/dist/auth/oauth/meta.d.ts +17 -0
  93. package/dist/auth/oauth/meta.d.ts.map +1 -0
  94. package/dist/auth/oauth/meta.js +190 -0
  95. package/dist/auth/oauth/meta.js.map +1 -0
  96. package/dist/auth/resolve.d.ts +6 -8
  97. package/dist/auth/resolve.d.ts.map +1 -1
  98. package/dist/auth/resolve.js +29 -26
  99. package/dist/auth/resolve.js.map +1 -1
  100. package/dist/bun-oauth.d.ts.map +1 -1
  101. package/dist/bun-oauth.js +2 -0
  102. package/dist/bun-oauth.js.map +1 -1
  103. package/dist/compat.d.ts +3 -3
  104. package/dist/compat.d.ts.map +1 -1
  105. package/dist/compat.js +9 -6
  106. package/dist/compat.js.map +1 -1
  107. package/dist/decision-models.d.ts +21 -0
  108. package/dist/decision-models.d.ts.map +1 -0
  109. package/dist/decision-models.generated.d.ts +3 -0
  110. package/dist/decision-models.generated.d.ts.map +1 -0
  111. package/dist/decision-models.generated.js +47 -0
  112. package/dist/decision-models.generated.js.map +1 -0
  113. package/dist/decision-models.js +8 -0
  114. package/dist/decision-models.js.map +1 -0
  115. package/dist/env-api-keys.d.ts +2 -0
  116. package/dist/env-api-keys.d.ts.map +1 -1
  117. package/dist/env-api-keys.js +61 -43
  118. package/dist/env-api-keys.js.map +1 -1
  119. package/dist/image-models.d.ts +19 -8
  120. package/dist/image-models.d.ts.map +1 -1
  121. package/dist/image-models.js +14 -13
  122. package/dist/image-models.js.map +1 -1
  123. package/dist/images-api-registry.d.ts +7 -7
  124. package/dist/images-api-registry.d.ts.map +1 -1
  125. package/dist/images-api-registry.js.map +1 -1
  126. package/dist/images.d.ts +7 -2
  127. package/dist/images.d.ts.map +1 -1
  128. package/dist/images.js +5 -0
  129. package/dist/images.js.map +1 -1
  130. package/dist/index.d.ts +4 -2
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +4 -2
  133. package/dist/index.js.map +1 -1
  134. package/dist/model-catalog.d.ts +25 -9
  135. package/dist/model-catalog.d.ts.map +1 -1
  136. package/dist/model-catalog.js +14 -2
  137. package/dist/model-catalog.js.map +1 -1
  138. package/dist/models-store.d.ts +3 -2
  139. package/dist/models-store.d.ts.map +1 -1
  140. package/dist/models-store.js.map +1 -1
  141. package/dist/models.d.ts +99 -31
  142. package/dist/models.d.ts.map +1 -1
  143. package/dist/models.generated.d.ts +133 -39
  144. package/dist/models.generated.d.ts.map +1 -1
  145. package/dist/models.generated.js +133 -39
  146. package/dist/models.generated.js.map +1 -1
  147. package/dist/models.js +161 -31
  148. package/dist/models.js.map +1 -1
  149. package/dist/providers/all.d.ts +19 -13
  150. package/dist/providers/all.d.ts.map +1 -1
  151. package/dist/providers/all.js +27 -21
  152. package/dist/providers/all.js.map +1 -1
  153. package/dist/providers/amazon-bedrock.models.d.ts +4 -3
  154. package/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  155. package/dist/providers/amazon-bedrock.models.js +4 -2
  156. package/dist/providers/amazon-bedrock.models.js.map +1 -1
  157. package/dist/providers/ant-ling.models.d.ts +4 -3
  158. package/dist/providers/ant-ling.models.d.ts.map +1 -1
  159. package/dist/providers/ant-ling.models.js +4 -2
  160. package/dist/providers/ant-ling.models.js.map +1 -1
  161. package/dist/providers/anthropic.models.d.ts +4 -3
  162. package/dist/providers/anthropic.models.d.ts.map +1 -1
  163. package/dist/providers/anthropic.models.js +4 -2
  164. package/dist/providers/anthropic.models.js.map +1 -1
  165. package/dist/providers/azure-openai-responses.models.d.ts +4 -3
  166. package/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  167. package/dist/providers/azure-openai-responses.models.js +4 -2
  168. package/dist/providers/azure-openai-responses.models.js.map +1 -1
  169. package/dist/providers/baseten.models.d.ts +4 -3
  170. package/dist/providers/baseten.models.d.ts.map +1 -1
  171. package/dist/providers/baseten.models.js +4 -2
  172. package/dist/providers/baseten.models.js.map +1 -1
  173. package/dist/providers/cerebras.models.d.ts +4 -3
  174. package/dist/providers/cerebras.models.d.ts.map +1 -1
  175. package/dist/providers/cerebras.models.js +4 -2
  176. package/dist/providers/cerebras.models.js.map +1 -1
  177. package/dist/providers/cloudflare-ai-gateway.models.d.ts +4 -3
  178. package/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  179. package/dist/providers/cloudflare-ai-gateway.models.js +4 -2
  180. package/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  181. package/dist/providers/cloudflare-stream.d.ts +6 -2
  182. package/dist/providers/cloudflare-stream.d.ts.map +1 -1
  183. package/dist/providers/cloudflare-stream.js +6 -0
  184. package/dist/providers/cloudflare-stream.js.map +1 -1
  185. package/dist/providers/cloudflare-workers-ai.d.ts.map +1 -1
  186. package/dist/providers/cloudflare-workers-ai.js +10 -3
  187. package/dist/providers/cloudflare-workers-ai.js.map +1 -1
  188. package/dist/providers/cloudflare-workers-ai.models.d.ts +4 -3
  189. package/dist/providers/cloudflare-workers-ai.models.d.ts.map +1 -1
  190. package/dist/providers/cloudflare-workers-ai.models.js +4 -2
  191. package/dist/providers/cloudflare-workers-ai.models.js.map +1 -1
  192. package/dist/providers/data/.manifest.json +1 -1
  193. package/dist/providers/data/amazon-bedrock.json +1 -1
  194. package/dist/providers/data/ant-ling.json +1 -1
  195. package/dist/providers/data/anthropic.json +1 -1
  196. package/dist/providers/data/azure-openai-responses.json +1 -1
  197. package/dist/providers/data/baseten.json +1 -1
  198. package/dist/providers/data/cerebras.json +1 -1
  199. package/dist/providers/data/cloudflare-ai-gateway.json +1 -1
  200. package/dist/providers/data/cloudflare-workers-ai.json +1 -1
  201. package/dist/providers/data/deepseek.json +1 -1
  202. package/dist/providers/data/fireworks.json +1 -1
  203. package/dist/providers/data/github-copilot.json +1 -1
  204. package/dist/providers/data/google-vertex.json +1 -1
  205. package/dist/providers/data/google.json +1 -1
  206. package/dist/providers/data/groq.json +1 -1
  207. package/dist/providers/data/huggingface.json +1 -1
  208. package/dist/providers/data/kimi-coding.json +1 -1
  209. package/dist/providers/data/meta.json +1 -0
  210. package/dist/providers/data/minimax-cn.json +1 -1
  211. package/dist/providers/data/minimax.json +1 -1
  212. package/dist/providers/data/mistral.json +1 -1
  213. package/dist/providers/data/moonshotai-cn.json +1 -1
  214. package/dist/providers/data/moonshotai.json +1 -1
  215. package/dist/providers/data/nvidia.json +1 -1
  216. package/dist/providers/data/openai-codex.json +1 -1
  217. package/dist/providers/data/openai.json +1 -1
  218. package/dist/providers/data/opencode-go.json +1 -1
  219. package/dist/providers/data/opencode.json +1 -1
  220. package/dist/providers/data/openrouter.json +1 -1
  221. package/dist/providers/data/qwen-token-plan-cn.json +1 -1
  222. package/dist/providers/data/qwen-token-plan-individual.json +1 -1
  223. package/dist/providers/data/qwen-token-plan.json +1 -1
  224. package/dist/providers/data/radius.json +1 -0
  225. package/dist/providers/data/together.json +1 -1
  226. package/dist/providers/data/typesafe.json +1 -0
  227. package/dist/providers/data/vercel-ai-gateway.json +1 -1
  228. package/dist/providers/data/xai.json +1 -1
  229. package/dist/providers/data/xiaomi-token-plan-ams.json +1 -1
  230. package/dist/providers/data/xiaomi-token-plan-cn.json +1 -1
  231. package/dist/providers/data/xiaomi-token-plan-sgp.json +1 -1
  232. package/dist/providers/data/xiaomi.json +1 -1
  233. package/dist/providers/data/zai-coding-cn.json +1 -1
  234. package/dist/providers/data/zai.json +1 -1
  235. package/dist/providers/deepseek.models.d.ts +4 -3
  236. package/dist/providers/deepseek.models.d.ts.map +1 -1
  237. package/dist/providers/deepseek.models.js +4 -2
  238. package/dist/providers/deepseek.models.js.map +1 -1
  239. package/dist/providers/faux.d.ts +3 -2
  240. package/dist/providers/faux.d.ts.map +1 -1
  241. package/dist/providers/faux.js +12 -11
  242. package/dist/providers/faux.js.map +1 -1
  243. package/dist/providers/fireworks.models.d.ts +4 -3
  244. package/dist/providers/fireworks.models.d.ts.map +1 -1
  245. package/dist/providers/fireworks.models.js +4 -2
  246. package/dist/providers/fireworks.models.js.map +1 -1
  247. package/dist/providers/github-copilot.models.d.ts +4 -3
  248. package/dist/providers/github-copilot.models.d.ts.map +1 -1
  249. package/dist/providers/github-copilot.models.js +4 -2
  250. package/dist/providers/github-copilot.models.js.map +1 -1
  251. package/dist/providers/google-vertex.models.d.ts +4 -3
  252. package/dist/providers/google-vertex.models.d.ts.map +1 -1
  253. package/dist/providers/google-vertex.models.js +4 -2
  254. package/dist/providers/google-vertex.models.js.map +1 -1
  255. package/dist/providers/google.models.d.ts +4 -3
  256. package/dist/providers/google.models.d.ts.map +1 -1
  257. package/dist/providers/google.models.js +4 -2
  258. package/dist/providers/google.models.js.map +1 -1
  259. package/dist/providers/groq.models.d.ts +4 -3
  260. package/dist/providers/groq.models.d.ts.map +1 -1
  261. package/dist/providers/groq.models.js +4 -2
  262. package/dist/providers/groq.models.js.map +1 -1
  263. package/dist/providers/huggingface.models.d.ts +4 -3
  264. package/dist/providers/huggingface.models.d.ts.map +1 -1
  265. package/dist/providers/huggingface.models.js +4 -2
  266. package/dist/providers/huggingface.models.js.map +1 -1
  267. package/dist/providers/images/register-builtins.d.ts +1 -1
  268. package/dist/providers/images/register-builtins.d.ts.map +1 -1
  269. package/dist/providers/images/register-builtins.js.map +1 -1
  270. package/dist/providers/kimi-coding.models.d.ts +4 -3
  271. package/dist/providers/kimi-coding.models.d.ts.map +1 -1
  272. package/dist/providers/kimi-coding.models.js +4 -2
  273. package/dist/providers/kimi-coding.models.js.map +1 -1
  274. package/dist/providers/meta.d.ts +3 -0
  275. package/dist/providers/meta.d.ts.map +1 -0
  276. package/dist/providers/meta.js +24 -0
  277. package/dist/providers/meta.js.map +1 -0
  278. package/dist/providers/meta.models.d.ts +5 -0
  279. package/dist/providers/meta.models.d.ts.map +1 -0
  280. package/dist/providers/meta.models.js +8 -0
  281. package/dist/providers/meta.models.js.map +1 -0
  282. package/dist/providers/minimax-cn.models.d.ts +4 -3
  283. package/dist/providers/minimax-cn.models.d.ts.map +1 -1
  284. package/dist/providers/minimax-cn.models.js +4 -2
  285. package/dist/providers/minimax-cn.models.js.map +1 -1
  286. package/dist/providers/minimax.models.d.ts +4 -3
  287. package/dist/providers/minimax.models.d.ts.map +1 -1
  288. package/dist/providers/minimax.models.js +4 -2
  289. package/dist/providers/minimax.models.js.map +1 -1
  290. package/dist/providers/mistral.models.d.ts +4 -3
  291. package/dist/providers/mistral.models.d.ts.map +1 -1
  292. package/dist/providers/mistral.models.js +4 -2
  293. package/dist/providers/mistral.models.js.map +1 -1
  294. package/dist/providers/moonshotai-cn.models.d.ts +4 -3
  295. package/dist/providers/moonshotai-cn.models.d.ts.map +1 -1
  296. package/dist/providers/moonshotai-cn.models.js +4 -2
  297. package/dist/providers/moonshotai-cn.models.js.map +1 -1
  298. package/dist/providers/moonshotai.models.d.ts +4 -3
  299. package/dist/providers/moonshotai.models.d.ts.map +1 -1
  300. package/dist/providers/moonshotai.models.js +4 -2
  301. package/dist/providers/moonshotai.models.js.map +1 -1
  302. package/dist/providers/nvidia.models.d.ts +4 -3
  303. package/dist/providers/nvidia.models.d.ts.map +1 -1
  304. package/dist/providers/nvidia.models.js +4 -2
  305. package/dist/providers/nvidia.models.js.map +1 -1
  306. package/dist/providers/openai-codex.models.d.ts +4 -3
  307. package/dist/providers/openai-codex.models.d.ts.map +1 -1
  308. package/dist/providers/openai-codex.models.js +4 -2
  309. package/dist/providers/openai-codex.models.js.map +1 -1
  310. package/dist/providers/openai.models.d.ts +4 -3
  311. package/dist/providers/openai.models.d.ts.map +1 -1
  312. package/dist/providers/openai.models.js +4 -2
  313. package/dist/providers/openai.models.js.map +1 -1
  314. package/dist/providers/opencode-go.models.d.ts +4 -3
  315. package/dist/providers/opencode-go.models.d.ts.map +1 -1
  316. package/dist/providers/opencode-go.models.js +4 -2
  317. package/dist/providers/opencode-go.models.js.map +1 -1
  318. package/dist/providers/opencode.models.d.ts +4 -3
  319. package/dist/providers/opencode.models.d.ts.map +1 -1
  320. package/dist/providers/opencode.models.js +4 -2
  321. package/dist/providers/opencode.models.js.map +1 -1
  322. package/dist/providers/openrouter.d.ts.map +1 -1
  323. package/dist/providers/openrouter.js +11 -2
  324. package/dist/providers/openrouter.js.map +1 -1
  325. package/dist/providers/openrouter.models.d.ts +4 -3
  326. package/dist/providers/openrouter.models.d.ts.map +1 -1
  327. package/dist/providers/openrouter.models.js +4 -2
  328. package/dist/providers/openrouter.models.js.map +1 -1
  329. package/dist/providers/qwen-token-plan-cn.models.d.ts +4 -3
  330. package/dist/providers/qwen-token-plan-cn.models.d.ts.map +1 -1
  331. package/dist/providers/qwen-token-plan-cn.models.js +4 -2
  332. package/dist/providers/qwen-token-plan-cn.models.js.map +1 -1
  333. package/dist/providers/qwen-token-plan-individual.models.d.ts +4 -3
  334. package/dist/providers/qwen-token-plan-individual.models.d.ts.map +1 -1
  335. package/dist/providers/qwen-token-plan-individual.models.js +4 -2
  336. package/dist/providers/qwen-token-plan-individual.models.js.map +1 -1
  337. package/dist/providers/qwen-token-plan.models.d.ts +4 -3
  338. package/dist/providers/qwen-token-plan.models.d.ts.map +1 -1
  339. package/dist/providers/qwen-token-plan.models.js +4 -2
  340. package/dist/providers/qwen-token-plan.models.js.map +1 -1
  341. package/dist/providers/radius.d.ts.map +1 -1
  342. package/dist/providers/radius.js +19 -5
  343. package/dist/providers/radius.js.map +1 -1
  344. package/dist/providers/radius.models.d.ts +5 -0
  345. package/dist/providers/radius.models.d.ts.map +1 -0
  346. package/dist/providers/radius.models.js +8 -0
  347. package/dist/providers/radius.models.js.map +1 -0
  348. package/dist/providers/together.models.d.ts +4 -3
  349. package/dist/providers/together.models.d.ts.map +1 -1
  350. package/dist/providers/together.models.js +4 -2
  351. package/dist/providers/together.models.js.map +1 -1
  352. package/dist/providers/typesafe.d.ts +3 -0
  353. package/dist/providers/typesafe.d.ts.map +1 -0
  354. package/dist/providers/typesafe.js +18 -0
  355. package/dist/providers/typesafe.js.map +1 -0
  356. package/dist/providers/typesafe.models.d.ts +5 -0
  357. package/dist/providers/typesafe.models.d.ts.map +1 -0
  358. package/dist/providers/typesafe.models.js +8 -0
  359. package/dist/providers/typesafe.models.js.map +1 -0
  360. package/dist/providers/vercel-ai-gateway.models.d.ts +4 -3
  361. package/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  362. package/dist/providers/vercel-ai-gateway.models.js +4 -2
  363. package/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  364. package/dist/providers/xai.models.d.ts +4 -3
  365. package/dist/providers/xai.models.d.ts.map +1 -1
  366. package/dist/providers/xai.models.js +4 -2
  367. package/dist/providers/xai.models.js.map +1 -1
  368. package/dist/providers/xiaomi-token-plan-ams.models.d.ts +4 -3
  369. package/dist/providers/xiaomi-token-plan-ams.models.d.ts.map +1 -1
  370. package/dist/providers/xiaomi-token-plan-ams.models.js +4 -2
  371. package/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  372. package/dist/providers/xiaomi-token-plan-cn.models.d.ts +4 -3
  373. package/dist/providers/xiaomi-token-plan-cn.models.d.ts.map +1 -1
  374. package/dist/providers/xiaomi-token-plan-cn.models.js +4 -2
  375. package/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  376. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts +4 -3
  377. package/dist/providers/xiaomi-token-plan-sgp.models.d.ts.map +1 -1
  378. package/dist/providers/xiaomi-token-plan-sgp.models.js +4 -2
  379. package/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  380. package/dist/providers/xiaomi.models.d.ts +4 -3
  381. package/dist/providers/xiaomi.models.d.ts.map +1 -1
  382. package/dist/providers/xiaomi.models.js +4 -2
  383. package/dist/providers/xiaomi.models.js.map +1 -1
  384. package/dist/providers/zai-coding-cn.models.d.ts +4 -3
  385. package/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  386. package/dist/providers/zai-coding-cn.models.js +4 -2
  387. package/dist/providers/zai-coding-cn.models.js.map +1 -1
  388. package/dist/providers/zai.models.d.ts +4 -3
  389. package/dist/providers/zai.models.d.ts.map +1 -1
  390. package/dist/providers/zai.models.js +4 -2
  391. package/dist/providers/zai.models.js.map +1 -1
  392. package/dist/types.d.ts +227 -51
  393. package/dist/types.d.ts.map +1 -1
  394. package/dist/types.js.map +1 -1
  395. package/dist/utils/diagnostics.d.ts +3 -2
  396. package/dist/utils/diagnostics.d.ts.map +1 -1
  397. package/dist/utils/diagnostics.js.map +1 -1
  398. package/dist/utils/estimate.d.ts +2 -2
  399. package/dist/utils/estimate.d.ts.map +1 -1
  400. package/dist/utils/estimate.js +8 -29
  401. package/dist/utils/estimate.js.map +1 -1
  402. package/dist/utils/headers.d.ts +1 -1
  403. package/dist/utils/headers.d.ts.map +1 -1
  404. package/dist/utils/headers.js +10 -8
  405. package/dist/utils/headers.js.map +1 -1
  406. package/dist/utils/model-operations.d.ts +11 -0
  407. package/dist/utils/model-operations.d.ts.map +1 -0
  408. package/dist/utils/model-operations.js +47 -0
  409. package/dist/utils/model-operations.js.map +1 -0
  410. package/dist/utils/models-error.d.ts +8 -0
  411. package/dist/utils/models-error.d.ts.map +1 -0
  412. package/dist/utils/models-error.js +19 -0
  413. package/dist/utils/models-error.js.map +1 -0
  414. package/dist/utils/overflow.d.ts +1 -0
  415. package/dist/utils/overflow.d.ts.map +1 -1
  416. package/dist/utils/overflow.js +17 -5
  417. package/dist/utils/overflow.js.map +1 -1
  418. package/dist/utils/retry.d.ts.map +1 -1
  419. package/dist/utils/retry.js +2 -0
  420. package/dist/utils/retry.js.map +1 -1
  421. package/dist/utils/text.d.ts +9 -1
  422. package/dist/utils/text.d.ts.map +1 -1
  423. package/dist/utils/text.js +26 -0
  424. package/dist/utils/text.js.map +1 -1
  425. package/dist/utils/transcript.d.ts +84 -0
  426. package/dist/utils/transcript.d.ts.map +1 -0
  427. package/dist/utils/transcript.js +204 -0
  428. package/dist/utils/transcript.js.map +1 -0
  429. package/package.json +4 -4
  430. package/dist/image-models.generated.d.ts +0 -785
  431. package/dist/image-models.generated.d.ts.map +0 -1
  432. package/dist/image-models.generated.js +0 -787
  433. package/dist/image-models.generated.js.map +0 -1
  434. package/dist/images-models.d.ts +0 -95
  435. package/dist/images-models.d.ts.map +0 -1
  436. package/dist/images-models.js +0 -143
  437. package/dist/images-models.js.map +0 -1
  438. package/dist/providers/openrouter-images.d.ts +0 -3
  439. package/dist/providers/openrouter-images.d.ts.map +0 -1
  440. package/dist/providers/openrouter-images.js +0 -22
  441. package/dist/providers/openrouter-images.js.map +0 -1
  442. package/dist/utils/deferred-tools.d.ts +0 -9
  443. package/dist/utils/deferred-tools.d.ts.map +0 -1
  444. package/dist/utils/deferred-tools.js +0 -36
  445. package/dist/utils/deferred-tools.js.map +0 -1
@@ -60,56 +60,74 @@ function hasVertexAdcCredentials(env) {
60
60
  }
61
61
  return cachedVertexAdcCredentialsExists;
62
62
  }
63
+ const apiKeyEnvMap = {
64
+ "ant-ling": "ANT_LING_API_KEY",
65
+ "qwen-token-plan": "QWEN_TOKEN_PLAN_API_KEY",
66
+ "qwen-token-plan-cn": "QWEN_TOKEN_PLAN_CN_API_KEY",
67
+ "qwen-token-plan-individual": "QWEN_TOKEN_PLAN_API_KEY",
68
+ openai: "OPENAI_API_KEY",
69
+ "azure-openai-responses": "AZURE_OPENAI_API_KEY",
70
+ nvidia: "NVIDIA_API_KEY",
71
+ deepseek: "DEEPSEEK_API_KEY",
72
+ google: "GEMINI_API_KEY",
73
+ "google-vertex": "GOOGLE_CLOUD_API_KEY",
74
+ groq: "GROQ_API_KEY",
75
+ cerebras: "CEREBRAS_API_KEY",
76
+ xai: "XAI_API_KEY",
77
+ radius: "RADIUS_API_KEY",
78
+ typesafe: "TYPESAFE_API_KEY",
79
+ openrouter: "OPENROUTER_API_KEY",
80
+ "vercel-ai-gateway": "AI_GATEWAY_API_KEY",
81
+ zai: "ZAI_API_KEY",
82
+ "zai-coding-cn": "ZAI_CODING_CN_API_KEY",
83
+ mistral: "MISTRAL_API_KEY",
84
+ minimax: "MINIMAX_API_KEY",
85
+ "minimax-cn": "MINIMAX_CN_API_KEY",
86
+ moonshotai: "MOONSHOT_API_KEY",
87
+ "moonshotai-cn": "MOONSHOT_API_KEY",
88
+ huggingface: "HF_TOKEN",
89
+ fireworks: "FIREWORKS_API_KEY",
90
+ together: "TOGETHER_API_KEY",
91
+ baseten: "BASETEN_API_KEY",
92
+ opencode: "OPENCODE_API_KEY",
93
+ "opencode-go": "OPENCODE_API_KEY",
94
+ "kimi-coding": "KIMI_API_KEY",
95
+ meta: "META_API_KEY",
96
+ "cloudflare-workers-ai": "CLOUDFLARE_API_KEY",
97
+ "cloudflare-ai-gateway": "CLOUDFLARE_API_KEY",
98
+ xiaomi: "XIAOMI_API_KEY",
99
+ "xiaomi-token-plan-cn": "XIAOMI_TOKEN_PLAN_CN_API_KEY",
100
+ "xiaomi-token-plan-ams": "XIAOMI_TOKEN_PLAN_AMS_API_KEY",
101
+ "xiaomi-token-plan-sgp": "XIAOMI_TOKEN_PLAN_SGP_API_KEY",
102
+ };
63
103
  function getApiKeyEnvVars(provider) {
64
- if (provider === "github-copilot") {
104
+ if (provider === "github-copilot")
65
105
  return ["COPILOT_GITHUB_TOKEN"];
66
- }
67
- // ANTHROPIC_AUTH_TOKEN participates in env discovery/status, but
68
- // getEnvApiKey() skips it because requests must pass it as Authorization: Bearer.
69
106
  if (provider === "anthropic") {
70
107
  return [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];
71
108
  }
72
- const envMap = {
73
- "ant-ling": "ANT_LING_API_KEY",
74
- "qwen-token-plan": "QWEN_TOKEN_PLAN_API_KEY",
75
- "qwen-token-plan-cn": "QWEN_TOKEN_PLAN_CN_API_KEY",
76
- "qwen-token-plan-individual": "QWEN_TOKEN_PLAN_API_KEY",
77
- openai: "OPENAI_API_KEY",
78
- "azure-openai-responses": "AZURE_OPENAI_API_KEY",
79
- nvidia: "NVIDIA_API_KEY",
80
- deepseek: "DEEPSEEK_API_KEY",
81
- google: "GEMINI_API_KEY",
82
- "google-vertex": "GOOGLE_CLOUD_API_KEY",
83
- groq: "GROQ_API_KEY",
84
- cerebras: "CEREBRAS_API_KEY",
85
- xai: "XAI_API_KEY",
86
- radius: "RADIUS_API_KEY",
87
- openrouter: "OPENROUTER_API_KEY",
88
- "vercel-ai-gateway": "AI_GATEWAY_API_KEY",
89
- zai: "ZAI_API_KEY",
90
- "zai-coding-cn": "ZAI_CODING_CN_API_KEY",
91
- mistral: "MISTRAL_API_KEY",
92
- minimax: "MINIMAX_API_KEY",
93
- "minimax-cn": "MINIMAX_CN_API_KEY",
94
- moonshotai: "MOONSHOT_API_KEY",
95
- "moonshotai-cn": "MOONSHOT_API_KEY",
96
- huggingface: "HF_TOKEN",
97
- fireworks: "FIREWORKS_API_KEY",
98
- together: "TOGETHER_API_KEY",
99
- baseten: "BASETEN_API_KEY",
100
- opencode: "OPENCODE_API_KEY",
101
- "opencode-go": "OPENCODE_API_KEY",
102
- "kimi-coding": "KIMI_API_KEY",
103
- "cloudflare-workers-ai": "CLOUDFLARE_API_KEY",
104
- "cloudflare-ai-gateway": "CLOUDFLARE_API_KEY",
105
- xiaomi: "XIAOMI_API_KEY",
106
- "xiaomi-token-plan-cn": "XIAOMI_TOKEN_PLAN_CN_API_KEY",
107
- "xiaomi-token-plan-ams": "XIAOMI_TOKEN_PLAN_AMS_API_KEY",
108
- "xiaomi-token-plan-sgp": "XIAOMI_TOKEN_PLAN_SGP_API_KEY",
109
- };
110
- const envVar = envMap[provider];
109
+ const envVar = apiKeyEnvMap[provider];
111
110
  return envVar ? [envVar] : undefined;
112
111
  }
112
+ /** Boolean-only privacy check; never resolves ambient SDK credentials or performs auth work. */
113
+ export function containsKnownEnvCredential(serialized, env) {
114
+ const names = [
115
+ ...Object.values(apiKeyEnvMap),
116
+ ANTHROPIC_AUTH_TOKEN_ENV,
117
+ ANTHROPIC_OAUTH_TOKEN_ENV,
118
+ ANTHROPIC_API_KEY_ENV,
119
+ "COPILOT_GITHUB_TOKEN",
120
+ "TYPESAFE_API_KEY",
121
+ "AWS_ACCESS_KEY_ID",
122
+ "AWS_SECRET_ACCESS_KEY",
123
+ "AWS_SESSION_TOKEN",
124
+ "AWS_BEARER_TOKEN_BEDROCK",
125
+ ];
126
+ return names.some((name) => {
127
+ const value = getProviderEnvValue(name, env);
128
+ return !!value?.trim() && serialized.includes(JSON.stringify(value.trim()).slice(1, -1));
129
+ });
130
+ }
113
131
  export function findEnvKeys(provider, env) {
114
132
  const envVars = getApiKeyEnvVars(provider);
115
133
  if (!envVars)
@@ -1 +1 @@
1
- {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider, ProviderEnv } from \"./types.ts\";\nimport { getProviderEnvValue } from \"./utils/provider-env.ts\";\n\nexport const ANTHROPIC_AUTH_TOKEN_ENV = \"ANTHROPIC_AUTH_TOKEN\";\nexport const ANTHROPIC_OAUTH_TOKEN_ENV = \"ANTHROPIC_OAUTH_TOKEN\";\nexport const ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(env?: ProviderEnv): boolean {\n\tconst explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;\n\tif (explicitCredentialsPath) {\n\t\treturn _existsSync ? _existsSync(explicitCredentialsPath) : false;\n\t}\n\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = getProviderEnvValue(\"GOOGLE_APPLICATION_CREDENTIALS\", env);\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\nfunction getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") {\n\t\treturn [\"COPILOT_GITHUB_TOKEN\"];\n\t}\n\n\t// ANTHROPIC_AUTH_TOKEN participates in env discovery/status, but\n\t// getEnvApiKey() skips it because requests must pass it as Authorization: Bearer.\n\tif (provider === \"anthropic\") {\n\t\treturn [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];\n\t}\n\n\tconst envMap: Record<string, string> = {\n\t\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\t\"qwen-token-plan\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\t\"qwen-token-plan-cn\": \"QWEN_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"qwen-token-plan-individual\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\topenai: \"OPENAI_API_KEY\",\n\t\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\t\tnvidia: \"NVIDIA_API_KEY\",\n\t\tdeepseek: \"DEEPSEEK_API_KEY\",\n\t\tgoogle: \"GEMINI_API_KEY\",\n\t\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\t\tgroq: \"GROQ_API_KEY\",\n\t\tcerebras: \"CEREBRAS_API_KEY\",\n\t\txai: \"XAI_API_KEY\",\n\t\tradius: \"RADIUS_API_KEY\",\n\t\topenrouter: \"OPENROUTER_API_KEY\",\n\t\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\t\tzai: \"ZAI_API_KEY\",\n\t\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\t\tmistral: \"MISTRAL_API_KEY\",\n\t\tminimax: \"MINIMAX_API_KEY\",\n\t\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\t\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\t\thuggingface: \"HF_TOKEN\",\n\t\tfireworks: \"FIREWORKS_API_KEY\",\n\t\ttogether: \"TOGETHER_API_KEY\",\n\t\tbaseten: \"BASETEN_API_KEY\",\n\t\topencode: \"OPENCODE_API_KEY\",\n\t\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\t\"kimi-coding\": \"KIMI_API_KEY\",\n\t\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\t\txiaomi: \"XIAOMI_API_KEY\",\n\t\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n\t};\n\n\tconst envVar = envMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!getProviderEnvValue(envVar, env));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined {\n\tconst envKeys = findEnvKeys(provider, env);\n\tif (envKeys?.[0]) {\n\t\tconst apiKeyEnv = provider === \"anthropic\" ? envKeys.find((key) => key !== ANTHROPIC_AUTH_TOKEN_ENV) : envKeys[0];\n\t\tif (apiKeyEnv) return getProviderEnvValue(apiKeyEnv, env);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials(env);\n\t\tconst hasProject = !!(\n\t\t\tgetProviderEnvValue(\"GOOGLE_CLOUD_PROJECT\", env) || getProviderEnvValue(\"GCLOUD_PROJECT\", env)\n\t\t);\n\t\tconst hasLocation = !!getProviderEnvValue(\"GOOGLE_CLOUD_LOCATION\", env);\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tgetProviderEnvValue(\"AWS_PROFILE\", env) ||\n\t\t\t(getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env) && getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env)) ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_WEB_IDENTITY_TOKEN_FILE\", env)\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
1
+ {"version":3,"file":"env-api-keys.js","sourceRoot":"","sources":["../src/env-api-keys.ts"],"names":[],"mappings":"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","sourcesContent":["// NEVER convert to top-level imports - breaks browser/Vite builds\nlet _existsSync: typeof import(\"node:fs\").existsSync | null = null;\nlet _homedir: typeof import(\"node:os\").homedir | null = null;\nlet _join: typeof import(\"node:path\").join | null = null;\n\ntype DynamicImport = (specifier: string) => Promise<unknown>;\n\nconst dynamicImport: DynamicImport = (specifier) => import(specifier);\nconst NODE_FS_SPECIFIER = \"node:\" + \"fs\";\nconst NODE_OS_SPECIFIER = \"node:\" + \"os\";\nconst NODE_PATH_SPECIFIER = \"node:\" + \"path\";\n\n// Eagerly load in Node.js/Bun environment only\nif (typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun)) {\n\tdynamicImport(NODE_FS_SPECIFIER).then((m) => {\n\t\t_existsSync = (m as typeof import(\"node:fs\")).existsSync;\n\t});\n\tdynamicImport(NODE_OS_SPECIFIER).then((m) => {\n\t\t_homedir = (m as typeof import(\"node:os\")).homedir;\n\t});\n\tdynamicImport(NODE_PATH_SPECIFIER).then((m) => {\n\t\t_join = (m as typeof import(\"node:path\")).join;\n\t});\n}\n\nimport type { KnownProvider, ProviderEnv } from \"./types.ts\";\nimport { getProviderEnvValue } from \"./utils/provider-env.ts\";\n\nexport const ANTHROPIC_AUTH_TOKEN_ENV = \"ANTHROPIC_AUTH_TOKEN\";\nexport const ANTHROPIC_OAUTH_TOKEN_ENV = \"ANTHROPIC_OAUTH_TOKEN\";\nexport const ANTHROPIC_API_KEY_ENV = \"ANTHROPIC_API_KEY\";\n\nlet cachedVertexAdcCredentialsExists: boolean | null = null;\n\nfunction hasVertexAdcCredentials(env?: ProviderEnv): boolean {\n\tconst explicitCredentialsPath = env?.GOOGLE_APPLICATION_CREDENTIALS;\n\tif (explicitCredentialsPath) {\n\t\treturn _existsSync ? _existsSync(explicitCredentialsPath) : false;\n\t}\n\n\tif (cachedVertexAdcCredentialsExists === null) {\n\t\t// If node modules haven't loaded yet (async import race at startup),\n\t\t// return false WITHOUT caching so the next call retries once they're ready.\n\t\t// Only cache false permanently in a browser environment where fs is never available.\n\t\tif (!_existsSync || !_homedir || !_join) {\n\t\t\tconst isNode = typeof process !== \"undefined\" && (process.versions?.node || process.versions?.bun);\n\t\t\tif (!isNode) {\n\t\t\t\t// Definitively in a browser — safe to cache false permanently\n\t\t\t\tcachedVertexAdcCredentialsExists = false;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t// Check GOOGLE_APPLICATION_CREDENTIALS env var first (standard way)\n\t\tconst gacPath = getProviderEnvValue(\"GOOGLE_APPLICATION_CREDENTIALS\", env);\n\t\tif (gacPath) {\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(gacPath);\n\t\t} else {\n\t\t\t// Fall back to default ADC path (lazy evaluation)\n\t\t\tcachedVertexAdcCredentialsExists = _existsSync(\n\t\t\t\t_join(_homedir(), \".config\", \"gcloud\", \"application_default_credentials.json\"),\n\t\t\t);\n\t\t}\n\t}\n\treturn cachedVertexAdcCredentialsExists;\n}\n\nconst apiKeyEnvMap: Record<string, string> = {\n\t\"ant-ling\": \"ANT_LING_API_KEY\",\n\t\"qwen-token-plan\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\t\"qwen-token-plan-cn\": \"QWEN_TOKEN_PLAN_CN_API_KEY\",\n\t\"qwen-token-plan-individual\": \"QWEN_TOKEN_PLAN_API_KEY\",\n\topenai: \"OPENAI_API_KEY\",\n\t\"azure-openai-responses\": \"AZURE_OPENAI_API_KEY\",\n\tnvidia: \"NVIDIA_API_KEY\",\n\tdeepseek: \"DEEPSEEK_API_KEY\",\n\tgoogle: \"GEMINI_API_KEY\",\n\t\"google-vertex\": \"GOOGLE_CLOUD_API_KEY\",\n\tgroq: \"GROQ_API_KEY\",\n\tcerebras: \"CEREBRAS_API_KEY\",\n\txai: \"XAI_API_KEY\",\n\tradius: \"RADIUS_API_KEY\",\n\ttypesafe: \"TYPESAFE_API_KEY\",\n\topenrouter: \"OPENROUTER_API_KEY\",\n\t\"vercel-ai-gateway\": \"AI_GATEWAY_API_KEY\",\n\tzai: \"ZAI_API_KEY\",\n\t\"zai-coding-cn\": \"ZAI_CODING_CN_API_KEY\",\n\tmistral: \"MISTRAL_API_KEY\",\n\tminimax: \"MINIMAX_API_KEY\",\n\t\"minimax-cn\": \"MINIMAX_CN_API_KEY\",\n\tmoonshotai: \"MOONSHOT_API_KEY\",\n\t\"moonshotai-cn\": \"MOONSHOT_API_KEY\",\n\thuggingface: \"HF_TOKEN\",\n\tfireworks: \"FIREWORKS_API_KEY\",\n\ttogether: \"TOGETHER_API_KEY\",\n\tbaseten: \"BASETEN_API_KEY\",\n\topencode: \"OPENCODE_API_KEY\",\n\t\"opencode-go\": \"OPENCODE_API_KEY\",\n\t\"kimi-coding\": \"KIMI_API_KEY\",\n\tmeta: \"META_API_KEY\",\n\t\"cloudflare-workers-ai\": \"CLOUDFLARE_API_KEY\",\n\t\"cloudflare-ai-gateway\": \"CLOUDFLARE_API_KEY\",\n\txiaomi: \"XIAOMI_API_KEY\",\n\t\"xiaomi-token-plan-cn\": \"XIAOMI_TOKEN_PLAN_CN_API_KEY\",\n\t\"xiaomi-token-plan-ams\": \"XIAOMI_TOKEN_PLAN_AMS_API_KEY\",\n\t\"xiaomi-token-plan-sgp\": \"XIAOMI_TOKEN_PLAN_SGP_API_KEY\",\n};\n\nfunction getApiKeyEnvVars(provider: string): readonly string[] | undefined {\n\tif (provider === \"github-copilot\") return [\"COPILOT_GITHUB_TOKEN\"];\n\tif (provider === \"anthropic\") {\n\t\treturn [ANTHROPIC_AUTH_TOKEN_ENV, ANTHROPIC_OAUTH_TOKEN_ENV, ANTHROPIC_API_KEY_ENV];\n\t}\n\tconst envVar = apiKeyEnvMap[provider];\n\treturn envVar ? [envVar] : undefined;\n}\n\n/** Boolean-only privacy check; never resolves ambient SDK credentials or performs auth work. */\nexport function containsKnownEnvCredential(serialized: string, env?: ProviderEnv): boolean {\n\tconst names = [\n\t\t...Object.values(apiKeyEnvMap),\n\t\tANTHROPIC_AUTH_TOKEN_ENV,\n\t\tANTHROPIC_OAUTH_TOKEN_ENV,\n\t\tANTHROPIC_API_KEY_ENV,\n\t\t\"COPILOT_GITHUB_TOKEN\",\n\t\t\"TYPESAFE_API_KEY\",\n\t\t\"AWS_ACCESS_KEY_ID\",\n\t\t\"AWS_SECRET_ACCESS_KEY\",\n\t\t\"AWS_SESSION_TOKEN\",\n\t\t\"AWS_BEARER_TOKEN_BEDROCK\",\n\t];\n\treturn names.some((name) => {\n\t\tconst value = getProviderEnvValue(name, env);\n\t\treturn !!value?.trim() && serialized.includes(JSON.stringify(value.trim()).slice(1, -1));\n\t});\n}\n\n/**\n * Find configured environment variables that can provide an API key for a provider.\n *\n * This only reports actual API key variables. It intentionally excludes ambient\n * credential sources such as AWS profiles, AWS IAM credentials, and Google\n * Application Default Credentials.\n */\nexport function findEnvKeys(provider: KnownProvider, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined;\nexport function findEnvKeys(provider: string, env?: ProviderEnv): string[] | undefined {\n\tconst envVars = getApiKeyEnvVars(provider);\n\tif (!envVars) return undefined;\n\n\tconst found = envVars.filter((envVar) => !!getProviderEnvValue(envVar, env));\n\treturn found.length > 0 ? found : undefined;\n}\n\n/**\n * Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.\n *\n * Will not return API keys for providers that require OAuth tokens.\n */\nexport function getEnvApiKey(provider: KnownProvider, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined;\nexport function getEnvApiKey(provider: string, env?: ProviderEnv): string | undefined {\n\tconst envKeys = findEnvKeys(provider, env);\n\tif (envKeys?.[0]) {\n\t\tconst apiKeyEnv = provider === \"anthropic\" ? envKeys.find((key) => key !== ANTHROPIC_AUTH_TOKEN_ENV) : envKeys[0];\n\t\tif (apiKeyEnv) return getProviderEnvValue(apiKeyEnv, env);\n\t}\n\n\t// Vertex AI supports either an explicit API key or Application Default Credentials.\n\t// Auth is configured via `gcloud auth application-default login`.\n\tif (provider === \"google-vertex\") {\n\t\tconst hasCredentials = hasVertexAdcCredentials(env);\n\t\tconst hasProject = !!(\n\t\t\tgetProviderEnvValue(\"GOOGLE_CLOUD_PROJECT\", env) || getProviderEnvValue(\"GCLOUD_PROJECT\", env)\n\t\t);\n\t\tconst hasLocation = !!getProviderEnvValue(\"GOOGLE_CLOUD_LOCATION\", env);\n\n\t\tif (hasCredentials && hasProject && hasLocation) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\tif (provider === \"amazon-bedrock\") {\n\t\t// Amazon Bedrock supports multiple credential sources:\n\t\t// 1. AWS_PROFILE - named profile from ~/.aws/credentials\n\t\t// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY - standard IAM keys\n\t\t// 3. AWS_BEARER_TOKEN_BEDROCK - Bedrock bearer token\n\t\t// 4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI - ECS task roles\n\t\t// 5. AWS_CONTAINER_CREDENTIALS_FULL_URI - ECS task roles (full URI)\n\t\t// 6. AWS_WEB_IDENTITY_TOKEN_FILE - IRSA (IAM Roles for Service Accounts)\n\t\tif (\n\t\t\tgetProviderEnvValue(\"AWS_PROFILE\", env) ||\n\t\t\t(getProviderEnvValue(\"AWS_ACCESS_KEY_ID\", env) && getProviderEnvValue(\"AWS_SECRET_ACCESS_KEY\", env)) ||\n\t\t\tgetProviderEnvValue(\"AWS_BEARER_TOKEN_BEDROCK\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_CONTAINER_CREDENTIALS_FULL_URI\", env) ||\n\t\t\tgetProviderEnvValue(\"AWS_WEB_IDENTITY_TOKEN_FILE\", env)\n\t\t) {\n\t\t\treturn \"<authenticated>\";\n\t\t}\n\t}\n\n\treturn undefined;\n}\n"]}
@@ -1,10 +1,21 @@
1
- import { IMAGE_MODELS } from "./image-models.generated.ts";
2
- import type { ImagesApi, ImagesModel, KnownImagesProvider } from "./types.ts";
3
- type ImageModelApi<TProvider extends KnownImagesProvider, TModelId extends keyof (typeof IMAGE_MODELS)[TProvider]> = (typeof IMAGE_MODELS)[TProvider][TModelId] extends {
4
- api: infer TApi;
5
- } ? TApi extends ImagesApi ? TApi : never : never;
6
- export declare function getImageModel<TProvider extends KnownImagesProvider, TModelId extends keyof (typeof IMAGE_MODELS)[TProvider]>(provider: TProvider, modelId: TModelId): ImagesModel<ImageModelApi<TProvider, TModelId>>;
7
- export declare function getImageProviders(): KnownImagesProvider[];
8
- export declare function getImageModels<TProvider extends KnownImagesProvider>(provider: TProvider): ImagesModel<ImageModelApi<TProvider, keyof (typeof IMAGE_MODELS)[TProvider]>>[];
1
+ import { IMAGE_MODELS } from "./models.generated.ts";
2
+ import type { ImageApi, ImageModel } from "./types.ts";
3
+ /**
4
+ * Compat reads of the generated catalog restricted to image models. New code
5
+ * uses `Models.getModelOfType("image", ...)` or `getBuiltinImageModel()` from `providers/all`.
6
+ */
7
+ type Catalog = typeof IMAGE_MODELS;
8
+ type ImageModelIds<TProvider extends keyof Catalog> = keyof Catalog[TProvider];
9
+ /** Built-in providers with at least one image model in the generated catalog. */
10
+ export type BuiltinImageProvider = {
11
+ [TProvider in keyof Catalog]: [ImageModelIds<TProvider>] extends [never] ? never : TProvider;
12
+ }[keyof Catalog];
13
+ type BuiltinImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>> = Catalog[TProvider][TModelId] extends ImageModel<infer TApi extends ImageApi> ? ImageModel<TApi> : never;
14
+ /** @deprecated Static catalog read. Use `getBuiltinImageModel` from "@earendil-works/pi-ai/providers/all" or `Models.getModelOfType("image", ...)`. */
15
+ export declare function getImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>>(provider: TProvider, modelId: TModelId): BuiltinImageModel<TProvider, TModelId>;
16
+ /** @deprecated Static catalog read. Use `Models.getProviders()`. */
17
+ export declare function getImageProviders(): BuiltinImageProvider[];
18
+ /** @deprecated Static catalog read. Use `getBuiltinImageModels` from "@earendil-works/pi-ai/providers/all" or `Models.getModelsOfType("image")`. */
19
+ export declare function getImageModels<TProvider extends BuiltinImageProvider>(provider: TProvider): BuiltinImageModel<TProvider, ImageModelIds<TProvider>>[];
9
20
  export {};
10
21
  //# sourceMappingURL=image-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-models.d.ts","sourceRoot":"","sources":["../src/image-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAY9E,KAAK,aAAa,CACjB,SAAS,SAAS,mBAAmB,EACrC,QAAQ,SAAS,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,IACpD,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,GACvE,IAAI,SAAS,SAAS,GACrB,IAAI,GACJ,KAAK,GACN,KAAK,CAAC;AAET,wBAAgB,aAAa,CAC5B,SAAS,SAAS,mBAAmB,EACrC,QAAQ,SAAS,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,EACtD,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAGzF;AAED,wBAAgB,iBAAiB,IAAI,mBAAmB,EAAE,CAEzD;AAED,wBAAgB,cAAc,CAAC,SAAS,SAAS,mBAAmB,EACnE,QAAQ,EAAE,SAAS,GACjB,WAAW,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAKjF","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.d.ts","sourceRoot":"","sources":["../src/image-models.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AAEH,KAAK,OAAO,GAAG,OAAO,YAAY,CAAC;AACnC,KAAK,aAAa,CAAC,SAAS,SAAS,MAAM,OAAO,IAAI,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;AAE/E,iFAAiF;AACjF,MAAM,MAAM,oBAAoB,GAAG;KACjC,SAAS,IAAI,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,SAAS;CAC5F,CAAC,MAAM,OAAO,CAAC,CAAC;AAEjB,KAAK,iBAAiB,CAAC,SAAS,SAAS,oBAAoB,EAAE,QAAQ,SAAS,aAAa,CAAC,SAAS,CAAC,IACvG,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,UAAU,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAWzG,uJAAuJ;AACvJ,wBAAgB,aAAa,CAAC,SAAS,SAAS,oBAAoB,EAAE,QAAQ,SAAS,aAAa,CAAC,SAAS,CAAC,EAC9G,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,GACf,iBAAiB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAExC;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,IAAI,oBAAoB,EAAE,CAE1D;AAED,oJAAoJ;AACpJ,wBAAgB,cAAc,CAAC,SAAS,SAAS,oBAAoB,EACpE,QAAQ,EAAE,SAAS,GACjB,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAG1D","sourcesContent":["import { IMAGE_MODELS } from \"./models.generated.ts\";\nimport type { ImageApi, ImageModel } from \"./types.ts\";\n\n/**\n * Compat reads of the generated catalog restricted to image models. New code\n * uses `Models.getModelOfType(\"image\", ...)` or `getBuiltinImageModel()` from `providers/all`.\n */\n\ntype Catalog = typeof IMAGE_MODELS;\ntype ImageModelIds<TProvider extends keyof Catalog> = keyof Catalog[TProvider];\n\n/** Built-in providers with at least one image model in the generated catalog. */\nexport type BuiltinImageProvider = {\n\t[TProvider in keyof Catalog]: [ImageModelIds<TProvider>] extends [never] ? never : TProvider;\n}[keyof Catalog];\n\ntype BuiltinImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>> =\n\tCatalog[TProvider][TModelId] extends ImageModel<infer TApi extends ImageApi> ? ImageModel<TApi> : never;\n\nconst imageModelsByProvider = new Map<string, Map<string, ImageModel<ImageApi>>>();\nfor (const [provider, models] of Object.entries(IMAGE_MODELS)) {\n\tconst imageModels = new Map<string, ImageModel<ImageApi>>();\n\tfor (const model of Object.values(models as Record<string, ImageModel<ImageApi>>)) {\n\t\timageModels.set(model.id, model);\n\t}\n\tif (imageModels.size > 0) imageModelsByProvider.set(provider, imageModels);\n}\n\n/** @deprecated Static catalog read. Use `getBuiltinImageModel` from \"@earendil-works/pi-ai/providers/all\" or `Models.getModelOfType(\"image\", ...)`. */\nexport function getImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): BuiltinImageModel<TProvider, TModelId> {\n\treturn imageModelsByProvider.get(provider)?.get(modelId as string) as BuiltinImageModel<TProvider, TModelId>;\n}\n\n/** @deprecated Static catalog read. Use `Models.getProviders()`. */\nexport function getImageProviders(): BuiltinImageProvider[] {\n\treturn Array.from(imageModelsByProvider.keys()) as BuiltinImageProvider[];\n}\n\n/** @deprecated Static catalog read. Use `getBuiltinImageModels` from \"@earendil-works/pi-ai/providers/all\" or `Models.getModelsOfType(\"image\")`. */\nexport function getImageModels<TProvider extends BuiltinImageProvider>(\n\tprovider: TProvider,\n): BuiltinImageModel<TProvider, ImageModelIds<TProvider>>[] {\n\tconst models = imageModelsByProvider.get(provider);\n\treturn models ? (Array.from(models.values()) as BuiltinImageModel<TProvider, ImageModelIds<TProvider>>[]) : [];\n}\n"]}
@@ -1,23 +1,24 @@
1
- import { IMAGE_MODELS } from "./image-models.generated.js";
2
- const imageModelRegistry = new Map();
1
+ import { IMAGE_MODELS } from "./models.generated.js";
2
+ const imageModelsByProvider = new Map();
3
3
  for (const [provider, models] of Object.entries(IMAGE_MODELS)) {
4
- const providerModels = new Map();
5
- for (const [id, model] of Object.entries(models)) {
6
- providerModels.set(id, model);
4
+ const imageModels = new Map();
5
+ for (const model of Object.values(models)) {
6
+ imageModels.set(model.id, model);
7
7
  }
8
- imageModelRegistry.set(provider, providerModels);
8
+ if (imageModels.size > 0)
9
+ imageModelsByProvider.set(provider, imageModels);
9
10
  }
11
+ /** @deprecated Static catalog read. Use `getBuiltinImageModel` from "@earendil-works/pi-ai/providers/all" or `Models.getModelOfType("image", ...)`. */
10
12
  export function getImageModel(provider, modelId) {
11
- const providerModels = imageModelRegistry.get(provider);
12
- return providerModels?.get(modelId);
13
+ return imageModelsByProvider.get(provider)?.get(modelId);
13
14
  }
15
+ /** @deprecated Static catalog read. Use `Models.getProviders()`. */
14
16
  export function getImageProviders() {
15
- return Array.from(imageModelRegistry.keys());
17
+ return Array.from(imageModelsByProvider.keys());
16
18
  }
19
+ /** @deprecated Static catalog read. Use `getBuiltinImageModels` from "@earendil-works/pi-ai/providers/all" or `Models.getModelsOfType("image")`. */
17
20
  export function getImageModels(provider) {
18
- const models = imageModelRegistry.get(provider);
19
- return models
20
- ? Array.from(models.values())
21
- : [];
21
+ const models = imageModelsByProvider.get(provider);
22
+ return models ? Array.from(models.values()) : [];
22
23
  }
23
24
  //# sourceMappingURL=image-models.js.map
@@ -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,uBAAuB,CAAC;AAmBrD,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA6C,CAAC;AACnF,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAA8C,CAAC,EAAE,CAAC;QACnF,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC;QAAE,qBAAqB,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC5E,CAAC;AAED,uJAAuJ;AACvJ,MAAM,UAAU,aAAa,CAC5B,QAAmB,EACnB,OAAiB,EACwB;IACzC,OAAO,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAiB,CAA2C,CAAC;AAAA,CAC7G;AAED,oEAAoE;AACpE,MAAM,UAAU,iBAAiB,GAA2B;IAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAA2B,CAAC;AAAA,CAC1E;AAED,oJAAoJ;AACpJ,MAAM,UAAU,cAAc,CAC7B,QAAmB,EACwC;IAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAA8D,CAAC,CAAC,CAAC,EAAE,CAAC;AAAA,CAC/G","sourcesContent":["import { IMAGE_MODELS } from \"./models.generated.ts\";\nimport type { ImageApi, ImageModel } from \"./types.ts\";\n\n/**\n * Compat reads of the generated catalog restricted to image models. New code\n * uses `Models.getModelOfType(\"image\", ...)` or `getBuiltinImageModel()` from `providers/all`.\n */\n\ntype Catalog = typeof IMAGE_MODELS;\ntype ImageModelIds<TProvider extends keyof Catalog> = keyof Catalog[TProvider];\n\n/** Built-in providers with at least one image model in the generated catalog. */\nexport type BuiltinImageProvider = {\n\t[TProvider in keyof Catalog]: [ImageModelIds<TProvider>] extends [never] ? never : TProvider;\n}[keyof Catalog];\n\ntype BuiltinImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>> =\n\tCatalog[TProvider][TModelId] extends ImageModel<infer TApi extends ImageApi> ? ImageModel<TApi> : never;\n\nconst imageModelsByProvider = new Map<string, Map<string, ImageModel<ImageApi>>>();\nfor (const [provider, models] of Object.entries(IMAGE_MODELS)) {\n\tconst imageModels = new Map<string, ImageModel<ImageApi>>();\n\tfor (const model of Object.values(models as Record<string, ImageModel<ImageApi>>)) {\n\t\timageModels.set(model.id, model);\n\t}\n\tif (imageModels.size > 0) imageModelsByProvider.set(provider, imageModels);\n}\n\n/** @deprecated Static catalog read. Use `getBuiltinImageModel` from \"@earendil-works/pi-ai/providers/all\" or `Models.getModelOfType(\"image\", ...)`. */\nexport function getImageModel<TProvider extends BuiltinImageProvider, TModelId extends ImageModelIds<TProvider>>(\n\tprovider: TProvider,\n\tmodelId: TModelId,\n): BuiltinImageModel<TProvider, TModelId> {\n\treturn imageModelsByProvider.get(provider)?.get(modelId as string) as BuiltinImageModel<TProvider, TModelId>;\n}\n\n/** @deprecated Static catalog read. Use `Models.getProviders()`. */\nexport function getImageProviders(): BuiltinImageProvider[] {\n\treturn Array.from(imageModelsByProvider.keys()) as BuiltinImageProvider[];\n}\n\n/** @deprecated Static catalog read. Use `getBuiltinImageModels` from \"@earendil-works/pi-ai/providers/all\" or `Models.getModelsOfType(\"image\")`. */\nexport function getImageModels<TProvider extends BuiltinImageProvider>(\n\tprovider: TProvider,\n): BuiltinImageModel<TProvider, ImageModelIds<TProvider>>[] {\n\tconst models = imageModelsByProvider.get(provider);\n\treturn models ? (Array.from(models.values()) as BuiltinImageModel<TProvider, ImageModelIds<TProvider>>[]) : [];\n}\n"]}
@@ -1,14 +1,14 @@
1
- import type { AssistantImages, ImagesApi, ImagesContext, ImagesFunction, ImagesModel, ImagesOptions } from "./types.ts";
2
- export type ImagesApiFunction = (model: ImagesModel<ImagesApi>, context: ImagesContext, options?: ImagesOptions) => Promise<AssistantImages>;
3
- export interface ImagesApiProvider<TApi extends ImagesApi = ImagesApi, TOptions extends ImagesOptions = ImagesOptions> {
1
+ import type { AssistantImages, ImageApi, ImageModel, ImagesContext, ImagesFunction, ImagesOptions } from "./types.ts";
2
+ export type ImagesApiFunction = (model: ImageModel<ImageApi>, context: ImagesContext, options?: ImagesOptions) => Promise<AssistantImages>;
3
+ export interface ImagesApiProvider<TApi extends ImageApi = ImageApi, TOptions extends ImagesOptions = ImagesOptions> {
4
4
  api: TApi;
5
- generateImages: ImagesFunction<TApi, TOptions>;
5
+ generateImages: ImagesFunction<TOptions>;
6
6
  }
7
7
  interface ImagesApiProviderInternal {
8
- api: ImagesApi;
8
+ api: ImageApi;
9
9
  generateImages: ImagesApiFunction;
10
10
  }
11
- export declare function registerImagesApiProvider<TApi extends ImagesApi, TOptions extends ImagesOptions>(provider: ImagesApiProvider<TApi, TOptions>, sourceId?: string): void;
12
- export declare function getImagesApiProvider(api: ImagesApi): ImagesApiProviderInternal | undefined;
11
+ export declare function registerImagesApiProvider<TApi extends ImageApi, TOptions extends ImagesOptions>(provider: ImagesApiProvider<TApi, TOptions>, sourceId?: string): void;
12
+ export declare function getImagesApiProvider(api: ImageApi): ImagesApiProviderInternal | undefined;
13
13
  export {};
14
14
  //# sourceMappingURL=images-api-registry.d.ts.map
@@ -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,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEtH,MAAM,MAAM,iBAAiB,GAAG,CAC/B,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC3B,OAAO,EAAE,aAAa,EACtB,OAAO,CAAC,EAAE,aAAa,KACnB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B,MAAM,WAAW,iBAAiB,CAAC,IAAI,SAAS,QAAQ,GAAG,QAAQ,EAAE,QAAQ,SAAS,aAAa,GAAG,aAAa;IAClH,GAAG,EAAE,IAAI,CAAC;IACV,cAAc,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CACzC;AAED,UAAU,yBAAyB;IAClC,GAAG,EAAE,QAAQ,CAAC;IACd,cAAc,EAAE,iBAAiB,CAAC;CAClC;AAqBD,wBAAgB,yBAAyB,CAAC,IAAI,SAAS,QAAQ,EAAE,QAAQ,SAAS,aAAa,EAC9F,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAC3C,QAAQ,CAAC,EAAE,MAAM,GACf,IAAI,CAQN;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,GAAG,yBAAyB,GAAG,SAAS,CAEzF","sourcesContent":["import type { AssistantImages, ImageApi, ImageModel, ImagesContext, ImagesFunction, ImagesOptions } from \"./types.ts\";\n\nexport type ImagesApiFunction = (\n\tmodel: ImageModel<ImageApi>,\n\tcontext: ImagesContext,\n\toptions?: ImagesOptions,\n) => Promise<AssistantImages>;\n\nexport interface ImagesApiProvider<TApi extends ImageApi = ImageApi, TOptions extends ImagesOptions = ImagesOptions> {\n\tapi: TApi;\n\tgenerateImages: ImagesFunction<TOptions>;\n}\n\ninterface ImagesApiProviderInternal {\n\tapi: ImageApi;\n\tgenerateImages: ImagesApiFunction;\n}\n\ntype RegisteredImagesApiProvider = {\n\tprovider: ImagesApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst imagesApiProviderRegistry = new Map<string, RegisteredImagesApiProvider>();\n\nfunction wrapGenerateImages<TOptions extends ImagesOptions>(\n\tapi: ImageApi,\n\tgenerateImages: ImagesFunction<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, context, options as TOptions);\n\t};\n}\n\nexport function registerImagesApiProvider<TApi extends ImageApi, 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: ImageApi): ImagesApiProviderInternal | undefined {\n\treturn imagesApiProviderRegistry.get(api)?.provider;\n}\n"]}
@@ -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,GAAa,EACb,cAAwC,EACpB;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,KAAK,EAAE,OAAO,EAAE,OAAmB,CAAC,CAAC;IAAA,CAC3D,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,GAAa,EAAyC;IAC1F,OAAO,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;AAAA,CACpD","sourcesContent":["import type { AssistantImages, ImageApi, ImageModel, ImagesContext, ImagesFunction, ImagesOptions } from \"./types.ts\";\n\nexport type ImagesApiFunction = (\n\tmodel: ImageModel<ImageApi>,\n\tcontext: ImagesContext,\n\toptions?: ImagesOptions,\n) => Promise<AssistantImages>;\n\nexport interface ImagesApiProvider<TApi extends ImageApi = ImageApi, TOptions extends ImagesOptions = ImagesOptions> {\n\tapi: TApi;\n\tgenerateImages: ImagesFunction<TOptions>;\n}\n\ninterface ImagesApiProviderInternal {\n\tapi: ImageApi;\n\tgenerateImages: ImagesApiFunction;\n}\n\ntype RegisteredImagesApiProvider = {\n\tprovider: ImagesApiProviderInternal;\n\tsourceId?: string;\n};\n\nconst imagesApiProviderRegistry = new Map<string, RegisteredImagesApiProvider>();\n\nfunction wrapGenerateImages<TOptions extends ImagesOptions>(\n\tapi: ImageApi,\n\tgenerateImages: ImagesFunction<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, context, options as TOptions);\n\t};\n}\n\nexport function registerImagesApiProvider<TApi extends ImageApi, 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: ImageApi): ImagesApiProviderInternal | undefined {\n\treturn imagesApiProviderRegistry.get(api)?.provider;\n}\n"]}
package/dist/images.d.ts CHANGED
@@ -1,4 +1,9 @@
1
1
  import "./providers/images/register-builtins.ts";
2
- import type { AssistantImages, ImagesApi, ImagesContext, ImagesModel, ProviderImagesOptions } from "./types.ts";
3
- export declare function generateImages<TApi extends ImagesApi>(model: ImagesModel<TApi>, context: ImagesContext, options?: ProviderImagesOptions): Promise<AssistantImages>;
2
+ import type { AssistantImages, ImageApi, ImageModel, ImagesContext, ProviderImagesOptions } from "./types.ts";
3
+ /**
4
+ * Global image generation dispatched on `model.api` through the images api
5
+ * registry. Auth must be passed explicitly via `options.apiKey`; prefer
6
+ * `Models.generateImages()`, which resolves provider auth.
7
+ */
8
+ export declare function generateImages(model: ImageModel<ImageApi>, context: ImagesContext, options?: ProviderImagesOptions): Promise<AssistantImages>;
4
9
  //# sourceMappingURL=images.d.ts.map
@@ -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,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAU9G;;;;GAIG;AACH,wBAAsB,cAAc,CACnC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,EAC3B,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, ImageApi, ImageModel, ImagesContext, ProviderImagesOptions } from \"./types.ts\";\n\nfunction resolveImagesApiProvider(api: ImageApi) {\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\n/**\n * Global image generation dispatched on `model.api` through the images api\n * registry. Auth must be passed explicitly via `options.apiKey`; prefer\n * `Models.generateImages()`, which resolves provider auth.\n */\nexport async function generateImages(\n\tmodel: ImageModel<ImageApi>,\n\tcontext: ImagesContext,\n\toptions?: ProviderImagesOptions,\n): Promise<AssistantImages> {\n\tconst provider = resolveImagesApiProvider(model.api);\n\treturn provider.generateImages(model, context, options);\n}\n"]}
package/dist/images.js CHANGED
@@ -7,6 +7,11 @@ function resolveImagesApiProvider(api) {
7
7
  }
8
8
  return provider;
9
9
  }
10
+ /**
11
+ * Global image generation dispatched on `model.api` through the images api
12
+ * registry. Auth must be passed explicitly via `options.apiKey`; prefer
13
+ * `Models.generateImages()`, which resolves provider auth.
14
+ */
10
15
  export async function generateImages(model, context, options) {
11
16
  const provider = resolveImagesApiProvider(model.api);
12
17
  return provider.generateImages(model, context, options);
@@ -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,GAAa,EAAE;IAChD,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;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CACnC,KAA2B,EAC3B,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, ImageApi, ImageModel, ImagesContext, ProviderImagesOptions } from \"./types.ts\";\n\nfunction resolveImagesApiProvider(api: ImageApi) {\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\n/**\n * Global image generation dispatched on `model.api` through the images api\n * registry. Auth must be passed explicitly via `options.apiKey`; prefer\n * `Models.generateImages()`, which resolves provider auth.\n */\nexport async function generateImages(\n\tmodel: ImageModel<ImageApi>,\n\tcontext: ImagesContext,\n\toptions?: ProviderImagesOptions,\n): Promise<AssistantImages> {\n\tconst provider = resolveImagesApiProvider(model.api);\n\treturn provider.generateImages(model, context, options);\n}\n"]}
package/dist/index.d.ts CHANGED
@@ -17,7 +17,8 @@ export * from "./auth/credential-store.ts";
17
17
  export * from "./auth/helpers.ts";
18
18
  export * from "./auth/types.ts";
19
19
  export type { OAuthAuthInfo, OAuthDeviceCodeInfo, OAuthLoginCallbacks, OAuthPrompt, OAuthSelectOption, OAuthSelectPrompt, } from "./compat/extension-oauth-types.ts";
20
- export * from "./images-models.ts";
20
+ export * from "./decision-models.ts";
21
+ export { containsKnownEnvCredential } from "./env-api-keys.ts";
21
22
  export * from "./models.ts";
22
23
  export * from "./models-store.ts";
23
24
  export * from "./providers/faux.ts";
@@ -30,7 +31,8 @@ export * from "./utils/json-parse.ts";
30
31
  export * from "./utils/overflow.ts";
31
32
  export * from "./utils/retry.ts";
32
33
  export * from "./utils/stream-deadline.ts";
33
- export { contentText } from "./utils/text.ts";
34
+ export { contentText, getSystemMessageText, renderSystemMessageUpdate } from "./utils/text.ts";
35
+ export * from "./utils/transcript.ts";
34
36
  export * from "./utils/typebox-helpers.ts";
35
37
  export { uuidv7 } from "./utils/uuid.ts";
36
38
  export * from "./utils/validation.ts";
@@ -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,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,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,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,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 \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-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 { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } 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 type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./images-models.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/assistant-message-frame.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText } from \"./utils/text.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.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,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAClG,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,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,YAAY,EACX,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,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 \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-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 { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } 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 type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./decision-models.ts\";\nexport { containsKnownEnvCredential } from \"./env-api-keys.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/assistant-message-frame.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText, getSystemMessageText, renderSystemMessageUpdate } from \"./utils/text.ts\";\nexport * from \"./utils/transcript.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.ts\";\nexport * from \"./utils/validation.ts\";\n"]}
package/dist/index.js CHANGED
@@ -4,7 +4,8 @@ export * from "./auth/context.js";
4
4
  export * from "./auth/credential-store.js";
5
5
  export * from "./auth/helpers.js";
6
6
  export * from "./auth/types.js";
7
- export * from "./images-models.js";
7
+ export * from "./decision-models.js";
8
+ export { containsKnownEnvCredential } from "./env-api-keys.js";
8
9
  export * from "./models.js";
9
10
  export * from "./models-store.js";
10
11
  export * from "./providers/faux.js";
@@ -17,7 +18,8 @@ export * from "./utils/json-parse.js";
17
18
  export * from "./utils/overflow.js";
18
19
  export * from "./utils/retry.js";
19
20
  export * from "./utils/stream-deadline.js";
20
- export { contentText } from "./utils/text.js";
21
+ export { contentText, getSystemMessageText, renderSystemMessageUpdate } from "./utils/text.js";
22
+ export * from "./utils/transcript.js";
21
23
  export * from "./utils/typebox-helpers.js";
22
24
  export { uuidv7 } from "./utils/uuid.js";
23
25
  export * from "./utils/validation.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAa/B,cAAc,eAAe,CAAC;AAM9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAShC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,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 \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-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 { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } 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 type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./images-models.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/assistant-message-frame.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText } from \"./utils/text.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.ts\";\nexport * from \"./utils/validation.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAa/B,cAAc,eAAe,CAAC;AAM9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAShC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC/F,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,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 \"@bastani/pi-ai/providers/*\", API implementations under\n// \"@bastani/pi-ai/api/*\", the old global API under\n// \"@bastani/pi-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 { GoogleApiThinkingLevel, ResolvedGoogleThinkingLevel } 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 type { PiMessagesEvent, PiMessagesOptions, PiMessagesRewriteImpact } from \"./api/pi-messages.ts\";\nexport * from \"./auth/context.ts\";\nexport * from \"./auth/credential-store.ts\";\nexport * from \"./auth/helpers.ts\";\nexport * from \"./auth/types.ts\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthDeviceCodeInfo,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./compat/extension-oauth-types.ts\";\nexport * from \"./decision-models.ts\";\nexport { containsKnownEnvCredential } from \"./env-api-keys.ts\";\nexport * from \"./models.ts\";\nexport * from \"./models-store.ts\";\nexport * from \"./providers/faux.ts\";\nexport * from \"./session-resources.ts\";\nexport * from \"./types.ts\";\nexport * from \"./utils/assistant-message-frame.ts\";\nexport * from \"./utils/diagnostics.ts\";\nexport * from \"./utils/event-stream.ts\";\nexport * from \"./utils/json-parse.ts\";\nexport * from \"./utils/overflow.ts\";\nexport * from \"./utils/retry.ts\";\nexport * from \"./utils/stream-deadline.ts\";\nexport { contentText, getSystemMessageText, renderSystemMessageUpdate } from \"./utils/text.ts\";\nexport * from \"./utils/transcript.ts\";\nexport * from \"./utils/typebox-helpers.ts\";\nexport { uuidv7 } from \"./utils/uuid.ts\";\nexport * from \"./utils/validation.ts\";\n"]}
@@ -1,17 +1,33 @@
1
- import type { Api, Model, ProviderId } from "./types.ts";
1
+ import type { Api, ClassifierApi, ClassifierModel, ImageApi, ImageModel, Model, ModelType, ProviderId } from "./types.ts";
2
2
  export type ModelGroups = Record<string, Record<string, object>>;
3
- type ModelId<TGroups extends ModelGroups> = {
3
+ type ModelKey<TGroups extends ModelGroups> = {
4
4
  [TApi in keyof TGroups]: keyof TGroups[TApi];
5
5
  }[keyof TGroups] & string;
6
- type ModelApi<TGroups extends ModelGroups, TModelId extends ModelId<TGroups>> = {
7
- [TApi in keyof TGroups]: TModelId extends keyof TGroups[TApi] ? TApi : never;
8
- }[keyof TGroups] & Api;
9
- export type ModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {
10
- [TModelId in ModelId<TGroups>]: Model<ModelApi<TGroups, TModelId>> & {
11
- id: TModelId;
6
+ type KeyForType<TGroups extends ModelGroups, TType extends ModelType> = Extract<ModelKey<TGroups>, `${TType}:${string}`>;
7
+ type ModelId<TKey extends string> = TKey extends `${ModelType}:${infer TModelId}` ? TModelId : never;
8
+ type ApiForKey<TGroups extends ModelGroups, TKey extends ModelKey<TGroups>> = {
9
+ [TApi in keyof TGroups]: TKey extends keyof TGroups[TApi] ? TApi : never;
10
+ }[keyof TGroups];
11
+ export type ChatModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {
12
+ [TKey in KeyForType<TGroups, "chat"> as ModelId<TKey>]: Model<ApiForKey<TGroups, TKey> & Api> & {
13
+ id: ModelId<TKey>;
12
14
  provider: TProvider;
13
15
  };
14
16
  };
15
- export declare function flattenModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(_provider: TProvider, groups: TGroups): ModelCatalog<TGroups, TProvider>;
17
+ export type ImageModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {
18
+ [TKey in KeyForType<TGroups, "image"> as ModelId<TKey>]: ImageModel<ApiForKey<TGroups, TKey> & ImageApi> & {
19
+ id: ModelId<TKey>;
20
+ provider: TProvider;
21
+ };
22
+ };
23
+ export type ClassifierModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {
24
+ [TKey in KeyForType<TGroups, "classifier"> as ModelId<TKey>]: ClassifierModel<ApiForKey<TGroups, TKey> & ClassifierApi> & {
25
+ id: ModelId<TKey>;
26
+ provider: TProvider;
27
+ };
28
+ };
29
+ export declare function flattenChatModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(_provider: TProvider, groups: TGroups): ChatModelCatalog<TGroups, TProvider>;
30
+ export declare function flattenImageModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(_provider: TProvider, groups: TGroups): ImageModelCatalog<TGroups, TProvider>;
31
+ export declare function flattenClassifierModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(_provider: TProvider, groups: TGroups): ClassifierModelCatalog<TGroups, TProvider>;
16
32
  export {};
17
33
  //# sourceMappingURL=model-catalog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEjE,KAAK,OAAO,CAAC,OAAO,SAAS,WAAW,IAAI;KAC1C,IAAI,IAAI,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC,MAAM,OAAO,CAAC,GACf,MAAM,CAAC;AAER,KAAK,QAAQ,CAAC,OAAO,SAAS,WAAW,EAAE,QAAQ,SAAS,OAAO,CAAC,OAAO,CAAC,IAAI;KAC9E,IAAI,IAAI,MAAM,OAAO,GAAG,QAAQ,SAAS,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK;CAC5E,CAAC,MAAM,OAAO,CAAC,GACf,GAAG,CAAC;AAEL,MAAM,MAAM,YAAY,CAAC,OAAO,SAAS,WAAW,EAAE,SAAS,SAAS,UAAU,IAAI;KACpF,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,GAAG;QACpE,EAAE,EAAE,QAAQ,CAAC;QACb,QAAQ,EAAE,SAAS,CAAC;KACpB;CACD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,SAAS,SAAS,UAAU,EAAE,KAAK,CAAC,OAAO,SAAS,WAAW,EACxG,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,OAAO,GACb,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAElC","sourcesContent":["import type { Api, Model, ProviderId } from \"./types.ts\";\n\nexport type ModelGroups = Record<string, Record<string, object>>;\n\ntype ModelId<TGroups extends ModelGroups> = {\n\t[TApi in keyof TGroups]: keyof TGroups[TApi];\n}[keyof TGroups] &\n\tstring;\n\ntype ModelApi<TGroups extends ModelGroups, TModelId extends ModelId<TGroups>> = {\n\t[TApi in keyof TGroups]: TModelId extends keyof TGroups[TApi] ? TApi : never;\n}[keyof TGroups] &\n\tApi;\n\nexport type ModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {\n\t[TModelId in ModelId<TGroups>]: Model<ModelApi<TGroups, TModelId>> & {\n\t\tid: TModelId;\n\t\tprovider: TProvider;\n\t};\n};\n\nexport function flattenModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(\n\t_provider: TProvider,\n\tgroups: TGroups,\n): ModelCatalog<TGroups, TProvider> {\n\treturn Object.assign({}, ...Object.values(groups)) as ModelCatalog<TGroups, TProvider>;\n}\n"]}
1
+ {"version":3,"file":"model-catalog.d.ts","sourceRoot":"","sources":["../src/model-catalog.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tApi,\n\tClassifierApi,\n\tClassifierModel,\n\tImageApi,\n\tImageModel,\n\tModel,\n\tModelType,\n\tProviderId,\n} from \"./types.ts\";\n\nexport type ModelGroups = Record<string, Record<string, object>>;\n\ntype ModelKey<TGroups extends ModelGroups> = {\n\t[TApi in keyof TGroups]: keyof TGroups[TApi];\n}[keyof TGroups] &\n\tstring;\n\ntype KeyForType<TGroups extends ModelGroups, TType extends ModelType> = Extract<\n\tModelKey<TGroups>,\n\t`${TType}:${string}`\n>;\n\ntype ModelId<TKey extends string> = TKey extends `${ModelType}:${infer TModelId}` ? TModelId : never;\n\ntype ApiForKey<TGroups extends ModelGroups, TKey extends ModelKey<TGroups>> = {\n\t[TApi in keyof TGroups]: TKey extends keyof TGroups[TApi] ? TApi : never;\n}[keyof TGroups];\n\nexport type ChatModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {\n\t[TKey in KeyForType<TGroups, \"chat\"> as ModelId<TKey>]: Model<ApiForKey<TGroups, TKey> & Api> & {\n\t\tid: ModelId<TKey>;\n\t\tprovider: TProvider;\n\t};\n};\n\nexport type ImageModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {\n\t[TKey in KeyForType<TGroups, \"image\"> as ModelId<TKey>]: ImageModel<ApiForKey<TGroups, TKey> & ImageApi> & {\n\t\tid: ModelId<TKey>;\n\t\tprovider: TProvider;\n\t};\n};\n\nexport type ClassifierModelCatalog<TGroups extends ModelGroups, TProvider extends ProviderId> = {\n\t[TKey in KeyForType<TGroups, \"classifier\"> as ModelId<TKey>]: ClassifierModel<\n\t\tApiForKey<TGroups, TKey> & ClassifierApi\n\t> & {\n\t\tid: ModelId<TKey>;\n\t\tprovider: TProvider;\n\t};\n};\n\nfunction flattenModelCatalog(groups: ModelGroups, type: ModelType): Record<string, object> {\n\treturn Object.fromEntries(\n\t\tObject.values(groups)\n\t\t\t.flatMap((models) => Object.values(models))\n\t\t\t.filter((model) => (model as { type?: unknown }).type === type)\n\t\t\t.map((model) => [(model as { id: string }).id, model]),\n\t);\n}\n\nexport function flattenChatModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(\n\t_provider: TProvider,\n\tgroups: TGroups,\n): ChatModelCatalog<TGroups, TProvider> {\n\treturn flattenModelCatalog(groups, \"chat\") as ChatModelCatalog<TGroups, TProvider>;\n}\n\nexport function flattenImageModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(\n\t_provider: TProvider,\n\tgroups: TGroups,\n): ImageModelCatalog<TGroups, TProvider> {\n\treturn flattenModelCatalog(groups, \"image\") as ImageModelCatalog<TGroups, TProvider>;\n}\n\nexport function flattenClassifierModelCatalog<const TProvider extends ProviderId, const TGroups extends ModelGroups>(\n\t_provider: TProvider,\n\tgroups: TGroups,\n): ClassifierModelCatalog<TGroups, TProvider> {\n\treturn flattenModelCatalog(groups, \"classifier\") as ClassifierModelCatalog<TGroups, TProvider>;\n}\n"]}
@@ -1,4 +1,16 @@
1
- export function flattenModelCatalog(_provider, groups) {
2
- return Object.assign({}, ...Object.values(groups));
1
+ function flattenModelCatalog(groups, type) {
2
+ return Object.fromEntries(Object.values(groups)
3
+ .flatMap((models) => Object.values(models))
4
+ .filter((model) => model.type === type)
5
+ .map((model) => [model.id, model]));
6
+ }
7
+ export function flattenChatModelCatalog(_provider, groups) {
8
+ return flattenModelCatalog(groups, "chat");
9
+ }
10
+ export function flattenImageModelCatalog(_provider, groups) {
11
+ return flattenModelCatalog(groups, "image");
12
+ }
13
+ export function flattenClassifierModelCatalog(_provider, groups) {
14
+ return flattenModelCatalog(groups, "classifier");
3
15
  }
4
16
  //# sourceMappingURL=model-catalog.js.map