@tyvm/knowhow 0.0.104 → 0.0.106

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 (233) hide show
  1. package/CONFIG.md +8 -5
  2. package/package.json +3 -2
  3. package/scripts/check-model-pricing.ts +509 -0
  4. package/scripts/compare-openrouter-coverage.ts +576 -0
  5. package/src/agents/base/base.ts +127 -2
  6. package/src/agents/tools/execCommand.ts +4 -0
  7. package/src/agents/tools/executeScript/definition.ts +1 -1
  8. package/src/agents/tools/index.ts +0 -1
  9. package/src/agents/tools/list.ts +3 -43
  10. package/src/agents/tools/writeFile.ts +1 -1
  11. package/src/auth/browserLogin.ts +9 -4
  12. package/src/chat/modules/RemoteSyncModule.ts +3 -0
  13. package/src/cli.ts +31 -1
  14. package/src/clients/cerebras.ts +10 -0
  15. package/src/clients/contextLimits.ts +7 -2
  16. package/src/clients/copilot.ts +23 -0
  17. package/src/clients/deepseek.ts +16 -0
  18. package/src/clients/fireworks.ts +15 -0
  19. package/src/clients/gemini.ts +45 -2
  20. package/src/clients/github.ts +16 -0
  21. package/src/clients/groq.ts +15 -0
  22. package/src/clients/http.ts +190 -6
  23. package/src/clients/index.ts +215 -9
  24. package/src/clients/llama.ts +16 -0
  25. package/src/clients/mistral.ts +16 -0
  26. package/src/clients/nvidia.ts +16 -0
  27. package/src/clients/openai.ts +41 -11
  28. package/src/clients/openrouter.ts +17 -0
  29. package/src/clients/pricing/anthropic.ts +105 -78
  30. package/src/clients/pricing/cerebras.ts +11 -0
  31. package/src/clients/pricing/copilot.ts +60 -0
  32. package/src/clients/pricing/deepseek.ts +15 -0
  33. package/src/clients/pricing/fireworks.ts +32 -0
  34. package/src/clients/pricing/github.ts +69 -0
  35. package/src/clients/pricing/google.ts +245 -206
  36. package/src/clients/pricing/groq.ts +56 -0
  37. package/src/clients/pricing/index.ts +43 -6
  38. package/src/clients/pricing/llama.ts +18 -0
  39. package/src/clients/pricing/mistral.ts +34 -0
  40. package/src/clients/pricing/models.ts +23 -0
  41. package/src/clients/pricing/nvidia.ts +102 -0
  42. package/src/clients/pricing/openai.ts +347 -171
  43. package/src/clients/pricing/openrouter.ts +36 -0
  44. package/src/clients/pricing/types.ts +110 -0
  45. package/src/clients/pricing/xai.ts +123 -66
  46. package/src/clients/types.ts +4 -0
  47. package/src/clients/xai.ts +152 -2
  48. package/src/fileSync.ts +8 -2
  49. package/src/login.ts +11 -3
  50. package/src/services/AgentSyncFs.ts +36 -12
  51. package/src/services/KnowhowClient.ts +11 -0
  52. package/src/services/LazyToolsService.ts +6 -0
  53. package/src/services/S3.ts +0 -7
  54. package/src/services/SyncedAgentWatcher.ts +13 -298
  55. package/src/services/index.ts +1 -0
  56. package/src/services/modules/index.ts +11 -2
  57. package/src/services/watchers/FsSyncer.ts +155 -0
  58. package/src/services/watchers/RemoteSyncer.ts +153 -0
  59. package/src/services/watchers/index.ts +2 -0
  60. package/src/types.ts +56 -279
  61. package/src/worker.ts +174 -0
  62. package/tests/clients/pricing.test.ts +37 -0
  63. package/tests/manual/clients/completions.json +838 -226
  64. package/tests/manual/clients/completions.test.ts +46 -31
  65. package/ts_build/package.json +3 -2
  66. package/ts_build/src/agents/base/base.d.ts +17 -1
  67. package/ts_build/src/agents/base/base.js +82 -1
  68. package/ts_build/src/agents/base/base.js.map +1 -1
  69. package/ts_build/src/agents/tools/execCommand.js +3 -0
  70. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  71. package/ts_build/src/agents/tools/executeScript/definition.js +1 -1
  72. package/ts_build/src/agents/tools/executeScript/definition.js.map +1 -1
  73. package/ts_build/src/agents/tools/index.d.ts +0 -1
  74. package/ts_build/src/agents/tools/index.js +0 -1
  75. package/ts_build/src/agents/tools/index.js.map +1 -1
  76. package/ts_build/src/agents/tools/list.js +3 -38
  77. package/ts_build/src/agents/tools/list.js.map +1 -1
  78. package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
  79. package/ts_build/src/agents/tools/writeFile.js +1 -1
  80. package/ts_build/src/agents/tools/writeFile.js.map +1 -1
  81. package/ts_build/src/ai.d.ts +1 -1
  82. package/ts_build/src/auth/browserLogin.d.ts +2 -1
  83. package/ts_build/src/auth/browserLogin.js +10 -3
  84. package/ts_build/src/auth/browserLogin.js.map +1 -1
  85. package/ts_build/src/chat/modules/RemoteSyncModule.js +1 -0
  86. package/ts_build/src/chat/modules/RemoteSyncModule.js.map +1 -1
  87. package/ts_build/src/cli.js +19 -0
  88. package/ts_build/src/cli.js.map +1 -1
  89. package/ts_build/src/clients/anthropic.d.ts +1 -82
  90. package/ts_build/src/clients/cerebras.d.ts +4 -0
  91. package/ts_build/src/clients/cerebras.js +14 -0
  92. package/ts_build/src/clients/cerebras.js.map +1 -0
  93. package/ts_build/src/clients/contextLimits.js +7 -2
  94. package/ts_build/src/clients/contextLimits.js.map +1 -1
  95. package/ts_build/src/clients/copilot.d.ts +4 -0
  96. package/ts_build/src/clients/copilot.js +15 -0
  97. package/ts_build/src/clients/copilot.js.map +1 -0
  98. package/ts_build/src/clients/deepseek.d.ts +4 -0
  99. package/ts_build/src/clients/deepseek.js +15 -0
  100. package/ts_build/src/clients/deepseek.js.map +1 -0
  101. package/ts_build/src/clients/fireworks.d.ts +4 -0
  102. package/ts_build/src/clients/fireworks.js +15 -0
  103. package/ts_build/src/clients/fireworks.js.map +1 -0
  104. package/ts_build/src/clients/gemini.d.ts +1 -0
  105. package/ts_build/src/clients/gemini.js +28 -1
  106. package/ts_build/src/clients/gemini.js.map +1 -1
  107. package/ts_build/src/clients/github.d.ts +4 -0
  108. package/ts_build/src/clients/github.js +15 -0
  109. package/ts_build/src/clients/github.js.map +1 -0
  110. package/ts_build/src/clients/groq.d.ts +4 -0
  111. package/ts_build/src/clients/groq.js +15 -0
  112. package/ts_build/src/clients/groq.js.map +1 -0
  113. package/ts_build/src/clients/http.d.ts +22 -1
  114. package/ts_build/src/clients/http.js +132 -7
  115. package/ts_build/src/clients/http.js.map +1 -1
  116. package/ts_build/src/clients/index.d.ts +22 -0
  117. package/ts_build/src/clients/index.js +150 -5
  118. package/ts_build/src/clients/index.js.map +1 -1
  119. package/ts_build/src/clients/llama.d.ts +4 -0
  120. package/ts_build/src/clients/llama.js +15 -0
  121. package/ts_build/src/clients/llama.js.map +1 -0
  122. package/ts_build/src/clients/mistral.d.ts +4 -0
  123. package/ts_build/src/clients/mistral.js +15 -0
  124. package/ts_build/src/clients/mistral.js.map +1 -0
  125. package/ts_build/src/clients/nvidia.d.ts +4 -0
  126. package/ts_build/src/clients/nvidia.js +15 -0
  127. package/ts_build/src/clients/nvidia.js.map +1 -0
  128. package/ts_build/src/clients/openai.d.ts +4 -206
  129. package/ts_build/src/clients/openai.js +27 -9
  130. package/ts_build/src/clients/openai.js.map +1 -1
  131. package/ts_build/src/clients/openrouter.d.ts +4 -0
  132. package/ts_build/src/clients/openrouter.js +15 -0
  133. package/ts_build/src/clients/openrouter.js.map +1 -0
  134. package/ts_build/src/clients/pricing/anthropic.d.ts +26 -78
  135. package/ts_build/src/clients/pricing/anthropic.js +75 -78
  136. package/ts_build/src/clients/pricing/anthropic.js.map +1 -1
  137. package/ts_build/src/clients/pricing/cerebras.d.ts +4 -0
  138. package/ts_build/src/clients/pricing/cerebras.js +11 -0
  139. package/ts_build/src/clients/pricing/cerebras.js.map +1 -0
  140. package/ts_build/src/clients/pricing/copilot.d.ts +5 -0
  141. package/ts_build/src/clients/pricing/copilot.js +35 -0
  142. package/ts_build/src/clients/pricing/copilot.js.map +1 -0
  143. package/ts_build/src/clients/pricing/deepseek.d.ts +5 -0
  144. package/ts_build/src/clients/pricing/deepseek.js +10 -0
  145. package/ts_build/src/clients/pricing/deepseek.js.map +1 -0
  146. package/ts_build/src/clients/pricing/fireworks.d.ts +5 -0
  147. package/ts_build/src/clients/pricing/fireworks.js +21 -0
  148. package/ts_build/src/clients/pricing/fireworks.js.map +1 -0
  149. package/ts_build/src/clients/pricing/github.d.ts +4 -0
  150. package/ts_build/src/clients/pricing/github.js +58 -0
  151. package/ts_build/src/clients/pricing/github.js.map +1 -0
  152. package/ts_build/src/clients/pricing/google.d.ts +59 -6
  153. package/ts_build/src/clients/pricing/google.js +214 -167
  154. package/ts_build/src/clients/pricing/google.js.map +1 -1
  155. package/ts_build/src/clients/pricing/groq.d.ts +5 -0
  156. package/ts_build/src/clients/pricing/groq.js +41 -0
  157. package/ts_build/src/clients/pricing/groq.js.map +1 -0
  158. package/ts_build/src/clients/pricing/index.d.ts +17 -6
  159. package/ts_build/src/clients/pricing/index.js +65 -10
  160. package/ts_build/src/clients/pricing/index.js.map +1 -1
  161. package/ts_build/src/clients/pricing/llama.d.ts +4 -0
  162. package/ts_build/src/clients/pricing/llama.js +14 -0
  163. package/ts_build/src/clients/pricing/llama.js.map +1 -0
  164. package/ts_build/src/clients/pricing/mistral.d.ts +5 -0
  165. package/ts_build/src/clients/pricing/mistral.js +23 -0
  166. package/ts_build/src/clients/pricing/mistral.js.map +1 -0
  167. package/ts_build/src/clients/pricing/models.d.ts +9 -0
  168. package/ts_build/src/clients/pricing/models.js +19 -0
  169. package/ts_build/src/clients/pricing/models.js.map +1 -0
  170. package/ts_build/src/clients/pricing/nvidia.d.ts +8 -0
  171. package/ts_build/src/clients/pricing/nvidia.js +96 -0
  172. package/ts_build/src/clients/pricing/nvidia.js.map +1 -0
  173. package/ts_build/src/clients/pricing/openai.d.ts +86 -197
  174. package/ts_build/src/clients/pricing/openai.js +294 -168
  175. package/ts_build/src/clients/pricing/openai.js.map +1 -1
  176. package/ts_build/src/clients/pricing/openrouter.d.ts +4 -0
  177. package/ts_build/src/clients/pricing/openrouter.js +29 -0
  178. package/ts_build/src/clients/pricing/openrouter.js.map +1 -0
  179. package/ts_build/src/clients/pricing/types.d.ts +46 -0
  180. package/ts_build/src/clients/pricing/types.js +49 -0
  181. package/ts_build/src/clients/pricing/types.js.map +1 -0
  182. package/ts_build/src/clients/pricing/xai.d.ts +39 -64
  183. package/ts_build/src/clients/pricing/xai.js +93 -60
  184. package/ts_build/src/clients/pricing/xai.js.map +1 -1
  185. package/ts_build/src/clients/types.d.ts +1 -0
  186. package/ts_build/src/clients/xai.d.ts +2 -58
  187. package/ts_build/src/clients/xai.js +123 -2
  188. package/ts_build/src/clients/xai.js.map +1 -1
  189. package/ts_build/src/fileSync.js +7 -2
  190. package/ts_build/src/fileSync.js.map +1 -1
  191. package/ts_build/src/login.js +8 -2
  192. package/ts_build/src/login.js.map +1 -1
  193. package/ts_build/src/services/AgentSyncFs.js +1 -0
  194. package/ts_build/src/services/AgentSyncFs.js.map +1 -1
  195. package/ts_build/src/services/KnowhowClient.d.ts +1 -0
  196. package/ts_build/src/services/KnowhowClient.js +7 -0
  197. package/ts_build/src/services/KnowhowClient.js.map +1 -1
  198. package/ts_build/src/services/LazyToolsService.d.ts +1 -0
  199. package/ts_build/src/services/LazyToolsService.js +3 -0
  200. package/ts_build/src/services/LazyToolsService.js.map +1 -1
  201. package/ts_build/src/services/S3.js +0 -7
  202. package/ts_build/src/services/S3.js.map +1 -1
  203. package/ts_build/src/services/SyncedAgentWatcher.d.ts +0 -51
  204. package/ts_build/src/services/SyncedAgentWatcher.js +1 -282
  205. package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -1
  206. package/ts_build/src/services/index.d.ts +1 -0
  207. package/ts_build/src/services/index.js +1 -0
  208. package/ts_build/src/services/index.js.map +1 -1
  209. package/ts_build/src/services/modules/index.js +41 -1
  210. package/ts_build/src/services/modules/index.js.map +1 -1
  211. package/ts_build/src/services/watchers/FsSyncer.d.ts +27 -0
  212. package/ts_build/src/services/watchers/FsSyncer.js +135 -0
  213. package/ts_build/src/services/watchers/FsSyncer.js.map +1 -0
  214. package/ts_build/src/services/watchers/RemoteSyncer.d.ts +28 -0
  215. package/ts_build/src/services/watchers/RemoteSyncer.js +126 -0
  216. package/ts_build/src/services/watchers/RemoteSyncer.js.map +1 -0
  217. package/ts_build/src/services/watchers/index.d.ts +2 -0
  218. package/ts_build/src/services/watchers/index.js +19 -0
  219. package/ts_build/src/services/watchers/index.js.map +1 -0
  220. package/ts_build/src/types.d.ts +163 -124
  221. package/ts_build/src/types.js +33 -213
  222. package/ts_build/src/types.js.map +1 -1
  223. package/ts_build/src/worker.d.ts +4 -0
  224. package/ts_build/src/worker.js +140 -0
  225. package/ts_build/src/worker.js.map +1 -1
  226. package/ts_build/tests/clients/pricing.test.js +21 -0
  227. package/ts_build/tests/clients/pricing.test.js.map +1 -1
  228. package/ts_build/tests/manual/clients/completions.test.js +27 -24
  229. package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
  230. package/src/clients/pricing/catalog.ts +0 -287
  231. package/ts_build/src/clients/pricing/catalog.d.ts +0 -28
  232. package/ts_build/src/clients/pricing/catalog.js +0 -179
  233. package/ts_build/src/clients/pricing/catalog.js.map +0 -1
@@ -0,0 +1,102 @@
1
+ /**
2
+ * NVIDIA NIM pricing (USD per 1M tokens)
3
+ * Source: https://build.nvidia.com/explore/discover
4
+ * Many models are free (marked $0). Paid models use credit-based pricing.
5
+ */
6
+ export const NvidiaTextPricing: Record<string, { input: number; output: number }> = {
7
+ // Free models
8
+ "meta/llama-3.1-8b-instruct": { input: 0.0, output: 0.0 },
9
+ "meta/llama-3.1-70b-instruct": { input: 0.0, output: 0.0 },
10
+ "meta/llama-3.1-405b-instruct": { input: 0.0, output: 0.0 },
11
+ "meta/llama-3.3-70b-instruct": { input: 0.0, output: 0.0 },
12
+ "meta/llama-4-scout-17b-16e-instruct": { input: 0.0, output: 0.0 },
13
+ "meta/llama-4-maverick-17b-128e-instruct": { input: 0.0, output: 0.0 },
14
+ "mistralai/mistral-7b-instruct-v0.3": { input: 0.0, output: 0.0 },
15
+ "mistralai/mixtral-8x7b-instruct-v0.1": { input: 0.0, output: 0.0 },
16
+ "mistralai/codestral-22b-instruct-v0.1": { input: 0.0, output: 0.0 },
17
+ "microsoft/phi-4-mini-instruct": { input: 0.0, output: 0.0 },
18
+ "microsoft/phi-4-multimodal-instruct": { input: 0.0, output: 0.0 },
19
+ "microsoft/phi-3-medium-128k-instruct": { input: 0.0, output: 0.0 },
20
+ "microsoft/phi-3-medium-4k-instruct": { input: 0.0, output: 0.0 },
21
+ "microsoft/phi-3-small-128k-instruct": { input: 0.0, output: 0.0 },
22
+ "microsoft/phi-3-small-8k-instruct": { input: 0.0, output: 0.0 },
23
+ "microsoft/phi-3-vision-128k-instruct": { input: 0.0, output: 0.0 },
24
+ "microsoft/phi-3.5-moe-instruct": { input: 0.0, output: 0.0 },
25
+ "microsoft/phi-3.5-vision-instruct": { input: 0.0, output: 0.0 },
26
+ "qwen/qwen2.5-7b-instruct": { input: 0.0, output: 0.0 },
27
+ "qwen/qwen2.5-72b-instruct": { input: 0.0, output: 0.0 },
28
+ "qwen/qwen2.5-coder-32b-instruct": { input: 0.0, output: 0.0 },
29
+ "qwen/qwen2.5-coder-7b-instruct": { input: 0.0, output: 0.0 },
30
+ "qwen/qwen3-235b-a22b": { input: 0.0, output: 0.0 },
31
+ "qwen/qwen3-coder-480b-a35b-instruct": { input: 0.0, output: 0.0 },
32
+ "qwen/qwen3-next-80b-a3b-instruct": { input: 0.0, output: 0.0 },
33
+ "qwen/qwen3-next-80b-a3b-thinking": { input: 0.0, output: 0.0 },
34
+ "qwen/qwen3.5-397b-a17b": { input: 0.0, output: 0.0 },
35
+ "qwen/qwq-32b": { input: 0.0, output: 0.0 },
36
+ "deepseek-ai/deepseek-r1": { input: 0.0, output: 0.0 },
37
+ "deepseek-ai/deepseek-r1-0528": { input: 0.0, output: 0.0 },
38
+ "deepseek-ai/deepseek-coder-6.7b-instruct": { input: 0.0, output: 0.0 },
39
+ "deepseek-ai/deepseek-v3.1": { input: 0.0, output: 0.0 },
40
+ "deepseek-ai/deepseek-v4-flash": { input: 0.14, output: 0.28 },
41
+ "deepseek-ai/deepseek-v3.1-terminus": { input: 0.0, output: 0.0 },
42
+ "deepseek-ai/deepseek-v3.2": { input: 0.0, output: 0.0 },
43
+ "nvidia/llama-3.1-nemotron-70b-instruct": { input: 0.0, output: 0.0 },
44
+ "nvidia/llama-3.1-nemotron-51b-instruct": { input: 0.0, output: 0.0 },
45
+ "nvidia/llama-3.1-nemotron-ultra-253b-v1": { input: 0.0, output: 0.0 },
46
+ "nvidia/llama-3.3-nemotron-super-49b-v1": { input: 0.0, output: 0.0 },
47
+ "nvidia/llama-3.3-nemotron-super-49b-v1.5": { input: 0.0, output: 0.0 },
48
+ "nvidia/llama-embed-nemotron-8b": { input: 0.0, output: 0.0 },
49
+ "nvidia/llama3-chatqa-1.5-70b": { input: 0.0, output: 0.0 },
50
+ "nvidia/cosmos-nemotron-34b": { input: 0.0, output: 0.0 },
51
+ "nvidia/nemoretriever-ocr-v1": { input: 0.0, output: 0.0 },
52
+ "nvidia/nemotron-3-nano-30b-a3b": { input: 0.0, output: 0.0 },
53
+ "nvidia/nvidia-nemotron-nano-9b-v2": { input: 0.0, output: 0.0 },
54
+ "nvidia/parakeet-tdt-0.6b-v2": { input: 0.0, output: 0.0 },
55
+ "google/gemma-3-27b-it": { input: 0.0, output: 0.0 },
56
+ "google/gemma-3-12b-it": { input: 0.0, output: 0.0 },
57
+ "google/gemma-3-4b-it": { input: 0.0, output: 0.0 },
58
+ "google/gemma-3-1b-it": { input: 0.0, output: 0.0 },
59
+ "google/gemma-3n-e2b-it": { input: 0.0, output: 0.0 },
60
+ "google/gemma-3n-e4b-it": { input: 0.0, output: 0.0 },
61
+ "google/gemma-4-31b-it": { input: 0.0, output: 0.0 },
62
+ "google/gemma-2-27b-it": { input: 0.0, output: 0.0 },
63
+ "google/gemma-2-2b-it": { input: 0.0, output: 0.0 },
64
+ "google/codegemma-1.1-7b": { input: 0.0, output: 0.0 },
65
+ "google/codegemma-7b": { input: 0.0, output: 0.0 },
66
+ "meta/llama-3.2-11b-vision-instruct": { input: 0.0, output: 0.0 },
67
+ "meta/llama-3.2-1b-instruct": { input: 0.0, output: 0.0 },
68
+ "meta/llama3-70b-instruct": { input: 0.0, output: 0.0 },
69
+ "meta/llama3-8b-instruct": { input: 0.0, output: 0.0 },
70
+ "meta/codellama-70b": { input: 0.0, output: 0.0 },
71
+ "mistralai/mistral-large-2-instruct": { input: 0.0, output: 0.0 },
72
+ "mistralai/mistral-large-3-675b-instruct-2512": { input: 0.0, output: 0.0 },
73
+ "mistralai/mistral-small-3.1-24b-instruct-2503": { input: 0.0, output: 0.0 },
74
+ "mistralai/ministral-14b-instruct-2512": { input: 0.0, output: 0.0 },
75
+ "mistralai/mamba-codestral-7b-v0.1": { input: 0.0, output: 0.0 },
76
+ "mistralai/devstral-2-123b-instruct-2512": { input: 0.0, output: 0.0 },
77
+ "minimaxai/minimax-m2.1": { input: 0.0, output: 0.0 },
78
+ "minimaxai/minimax-m2.5": { input: 0.0, output: 0.0 },
79
+ "minimaxai/minimax-m2.7": { input: 0.0, output: 0.0 },
80
+ "moonshotai/kimi-k2-instruct": { input: 0.0, output: 0.0 },
81
+ "moonshotai/kimi-k2-instruct-0905": { input: 0.0, output: 0.0 },
82
+ "moonshotai/kimi-k2-thinking": { input: 0.0, output: 0.0 },
83
+ "moonshotai/kimi-k2.5": { input: 0.0, output: 0.0 },
84
+ "openai/gpt-oss-120b": { input: 0.0, output: 0.0 },
85
+ "openai/whisper-large-v3": { input: 0.0, output: 0.0 },
86
+ "stepfun-ai/step-3.5-flash": { input: 0.0, output: 0.0 },
87
+ "z-ai/glm-5.1": { input: 0.0, output: 0.0 },
88
+ "z-ai/glm4.7": { input: 0.0, output: 0.0 },
89
+ "z-ai/glm5": { input: 0.0, output: 0.0 },
90
+ // Nemotron 4 340B — free on NVIDIA NIM platform
91
+ // Source: models.dev (cost: $0), build.nvidia.com (free sign-up, no credit card)
92
+ "nvidia/nemotron-4-340b-instruct": { input: 0.0, output: 0.0 },
93
+ // Paid models
94
+ "deepseek-ai/deepseek-v4-pro": { input: 1.74, output: 3.48 },
95
+ "nvidia/nemotron-3-super-120b-a12b": { input: 0.2, output: 0.8 },
96
+ };
97
+
98
+ export const NvidiaImagePricing: Record<string, { input: number; output: number }> = {
99
+ "black-forest-labs/flux.1-dev": { input: 0.0, output: 0.0 },
100
+ "black-forest-labs/flux.1-schnell": { input: 0.0, output: 0.0 },
101
+ "stabilityai/stable-diffusion-3.5-medium": { input: 0.0, output: 0.0 },
102
+ };
@@ -1,202 +1,378 @@
1
- import { Models, EmbeddingModels } from "../../types";
1
+ /**
2
+ * OpenAI model IDs, pricing, and catalog.
3
+ * Single source of truth for all OpenAI models.
4
+ */
5
+ import {
6
+ completions,
7
+ embeddings,
8
+ images,
9
+ videos,
10
+ audios,
11
+ transactions,
12
+ ModelCatalogEntry,
13
+ ModelPricing,
14
+ } from "./types";
2
15
 
3
- export const OpenAiTextPricing = {
4
- [Models.openai.GPT_54]: {
5
- input: 2.5,
6
- cached_input: 0.25,
7
- output: 15.0,
8
- },
9
- [Models.openai.GPT_54_Mini]: {
10
- input: 0.75,
11
- cached_input: 0.075,
12
- output: 4.5,
13
- },
14
- [Models.openai.GPT_54_Nano]: {
15
- input: 0.2,
16
- cached_input: 0.02,
17
- output: 1.25,
18
- },
19
- [Models.openai.GPT_54_Pro]: {
20
- input: 30.0,
21
- cached_input: 0,
22
- output: 180.0,
23
- },
24
- [Models.openai.GPT_53_Chat]: {
16
+ // ─── Model IDs ────────────────────────────────────────────────────────────────
17
+
18
+ export const OpenAiModels = {
19
+ GPT_55: "gpt-5.5",
20
+ GPT_55_Pro: "gpt-5.5-pro",
21
+ GPT_54: "gpt-5.4",
22
+ GPT_54_Mini: "gpt-5.4-mini",
23
+ GPT_54_Nano: "gpt-5.4-nano",
24
+ GPT_54_Pro: "gpt-5.4-pro",
25
+ GPT_53_Chat: "gpt-5.3-chat-latest",
26
+ GPT_53_Codex: "gpt-5.3-codex",
27
+ GPT_53_Codex_Spark: "gpt-5.3-codex-spark",
28
+ GPT_52: "gpt-5.2",
29
+ GPT_52_Chat: "gpt-5.2-chat-latest",
30
+ GPT_52_Codex: "gpt-5.2-codex",
31
+ GPT_52_Pro: "gpt-5.2-pro",
32
+ GPT_51: "gpt-5.1",
33
+ GPT_51_Chat: "gpt-5.1-chat-latest",
34
+ GPT_51_Codex: "gpt-5.1-codex",
35
+ GPT_51_Codex_Max: "gpt-5.1-codex-max",
36
+ GPT_51_Codex_Mini: "gpt-5.1-codex-mini",
37
+ GPT_5: "gpt-5",
38
+ GPT_5_Pro: "gpt-5-pro",
39
+ GPT_5_Chat: "gpt-5-chat-latest",
40
+ GPT_5_Codex: "gpt-5-codex",
41
+ GPT_5_Mini: "gpt-5-mini",
42
+ GPT_5_Nano: "gpt-5-nano",
43
+ GPT_41: "gpt-4.1-2025-04-14",
44
+ GPT_41_Mini: "gpt-4.1-mini-2025-04-14",
45
+ GPT_41_Nano: "gpt-4.1-nano-2025-04-14",
46
+ GPT_45: "gpt-4.5-preview-2025-02-27",
47
+ GPT_4o: "gpt-4o-2024-08-06",
48
+ GPT_4o_Audio: "gpt-4o-audio-preview-2024-12-17",
49
+ GPT_4o_Realtime: "gpt-4o-realtime-preview-2024-12-17",
50
+ GPT_4o_Mini: "gpt-4o-mini-2024-07-18",
51
+ GPT_4o_Mini_Audio: "gpt-4o-mini-audio-preview-2024-12-17",
52
+ GPT_4o_Mini_Realtime: "gpt-4o-mini-realtime-preview-2024-12-17",
53
+ o1: "o1-2024-12-17",
54
+ o1_Pro: "o1-pro-2025-03-19",
55
+ o3: "o3-2025-04-16",
56
+ o3_Pro: "o3-pro-2025-01-31",
57
+ o4_Mini: "o4-mini-2025-04-16",
58
+ o3_Mini: "o3-mini-2025-01-31",
59
+ o1_Mini: "o1-mini-2024-09-12",
60
+ o1_Preview: "o1-preview",
61
+ o3_Deep_Research: "o3-deep-research",
62
+ o4_Mini_Deep_Research: "o4-mini-deep-research",
63
+ GPT_4o_Mini_Search: "gpt-4o-mini-search-preview-2025-03-11",
64
+ GPT_4o_Search: "gpt-4o-search-preview-2025-03-11",
65
+ GPT_4o_Transcribe: "gpt-4o-transcribe",
66
+ GPT_4o_Mini_Transcribe: "gpt-4o-mini-transcribe",
67
+ GPT_Realtime_15: "gpt-realtime-1.5",
68
+ GPT_Realtime_Mini: "gpt-realtime-mini",
69
+ GPT_Image_2: "gpt-image-2",
70
+ GPT_Image_15: "gpt-image-1.5",
71
+ GPT_Image_1: "gpt-image-1",
72
+ GPT_Image_1_Mini: "gpt-image-1-mini",
73
+ ChatGPT_Image: "chatgpt-image-latest",
74
+ TTS_1: "tts-1",
75
+ Whisper_1: "whisper-1",
76
+ DALL_E_3: "dall-e-3",
77
+ DALL_E_2: "dall-e-2",
78
+ Sora: "sora",
79
+ Sora_2: "sora-2",
80
+ Sora_2_Pro: "sora-2-pro",
81
+ GPT_4o_2024_05_13: "gpt-4o-2024-05-13",
82
+ GPT_4o_2024_11_20: "gpt-4o-2024-11-20",
83
+ GPT_35_Turbo: "gpt-3.5-turbo",
84
+ GPT_4: "gpt-4",
85
+ GPT_4_Turbo: "gpt-4-turbo",
86
+ } as const;
87
+
88
+ export const OpenAiEmbeddingModels: Record<string, string> = {
89
+ EmbeddingAda2: "text-embedding-ada-002",
90
+ EmbeddingLarge3: "text-embedding-3-large",
91
+ EmbeddingSmall3: "text-embedding-3-small",
92
+ };
93
+
94
+ // ─── Modality arrays ──────────────────────────────────────────────────────────
95
+
96
+ export const OpenAiReasoningModels: string[] = [
97
+ OpenAiModels.GPT_5,
98
+ OpenAiModels.GPT_5_Pro,
99
+ OpenAiModels.GPT_5_Mini,
100
+ OpenAiModels.GPT_5_Nano,
101
+ OpenAiModels.GPT_51,
102
+ OpenAiModels.GPT_51,
103
+ OpenAiModels.GPT_52,
104
+ OpenAiModels.GPT_52_Pro,
105
+ OpenAiModels.GPT_53_Chat,
106
+ OpenAiModels.GPT_53_Codex,
107
+ OpenAiModels.GPT_54,
108
+ OpenAiModels.GPT_54_Mini,
109
+ OpenAiModels.GPT_54_Nano,
110
+ OpenAiModels.GPT_54_Pro,
111
+ OpenAiModels.GPT_55,
112
+ OpenAiModels.GPT_55_Pro,
113
+ OpenAiModels.GPT_5_Mini,
114
+ OpenAiModels.GPT_5_Nano,
115
+ OpenAiModels.GPT_5_Pro,
116
+ OpenAiModels.o3,
117
+ OpenAiModels.o3_Mini,
118
+ OpenAiModels.o4_Mini,
119
+ ];
120
+
121
+ export const OpenAiChatModels: string[] = [
122
+ OpenAiModels.GPT_4o,
123
+ OpenAiModels.GPT_4o_Mini,
124
+ OpenAiModels.GPT_4o_2024_11_20,
125
+ OpenAiModels.GPT_41,
126
+ OpenAiModels.GPT_41_Mini,
127
+ OpenAiModels.GPT_41_Nano,
128
+ OpenAiModels.GPT_54,
129
+ OpenAiModels.GPT_54_Mini,
130
+ OpenAiModels.GPT_55,
131
+ OpenAiModels.GPT_54_Nano,
132
+ OpenAiModels.GPT_54_Pro,
133
+ OpenAiModels.GPT_53_Chat,
134
+ OpenAiModels.GPT_53_Codex,
135
+ OpenAiModels.GPT_51,
136
+ OpenAiModels.GPT_52,
137
+ OpenAiModels.o3,
138
+ OpenAiModels.o3_Mini,
139
+ OpenAiModels.o4_Mini,
140
+ ];
141
+
142
+ export const OpenAiEmbeddingModelsList: string[] = [
143
+ OpenAiEmbeddingModels.EmbeddingAda2,
144
+ OpenAiEmbeddingModels.EmbeddingLarge3,
145
+ OpenAiEmbeddingModels.EmbeddingSmall3,
146
+ ];
147
+
148
+ export const OpenAiResponsesOnlyModels: string[] = [
149
+ OpenAiModels.GPT_5,
150
+ OpenAiModels.GPT_5_Mini,
151
+ OpenAiModels.GPT_5_Nano,
152
+ OpenAiModels.GPT_52_Pro,
153
+ OpenAiModels.GPT_53_Codex,
154
+ OpenAiModels.GPT_54,
155
+ OpenAiModels.GPT_54_Mini,
156
+ OpenAiModels.GPT_54_Nano,
157
+ OpenAiModels.GPT_54_Pro,
158
+ OpenAiModels.GPT_55_Pro,
159
+ OpenAiModels.GPT_5_Pro,
160
+ OpenAiModels.o1,
161
+ OpenAiModels.o1_Pro,
162
+ ];
163
+
164
+ // Models that exist in our catalog but have limited/no public access
165
+ export const OpenAiLimitedAvailabilityModels: string[] = [
166
+ OpenAiModels.GPT_53_Codex_Spark, // 404 – not publicly available
167
+ OpenAiModels.o3_Pro, // 404 – not publicly available
168
+ ];
169
+
170
+ // Image models
171
+ export const OpenAiImageModels: string[] = [
172
+ OpenAiModels.DALL_E_3,
173
+ OpenAiModels.DALL_E_2,
174
+ OpenAiModels.GPT_Image_2,
175
+ OpenAiModels.GPT_Image_15,
176
+ OpenAiModels.GPT_Image_1_Mini,
177
+ OpenAiModels.ChatGPT_Image,
178
+ ];
179
+ export const OpenAiDeprecatedImageModels: string[] = [OpenAiModels.GPT_Image_1];
180
+
181
+ // Video models
182
+ export const OpenAiVideoModels: string[] = [
183
+ OpenAiModels.Sora,
184
+ OpenAiModels.Sora_2,
185
+ OpenAiModels.Sora_2_Pro,
186
+ ];
187
+
188
+ // Audio models
189
+ export const OpenAiTTSModels: string[] = [OpenAiModels.TTS_1];
190
+ export const OpenAiTranscriptionModels: string[] = [
191
+ OpenAiModels.Whisper_1,
192
+ OpenAiModels.GPT_4o_Transcribe,
193
+ OpenAiModels.GPT_4o_Mini_Transcribe,
194
+ ];
195
+ export const OpenAiRealtimeModels: string[] = [
196
+ OpenAiModels.GPT_Realtime_15,
197
+ OpenAiModels.GPT_Realtime_Mini,
198
+ ];
199
+ export const OpenAiAudioModels: string[] = [
200
+ ...OpenAiTTSModels,
201
+ ...OpenAiTranscriptionModels,
202
+ ...OpenAiRealtimeModels,
203
+ ];
204
+ export const OpenAiDeprecatedAudioModels: string[] = [
205
+ OpenAiModels.GPT_4o_Audio,
206
+ OpenAiModels.GPT_4o_Mini_Audio,
207
+ OpenAiModels.GPT_4o_Realtime,
208
+ OpenAiModels.GPT_4o_Mini_Realtime,
209
+ ];
210
+
211
+ // Search/transaction models
212
+ export const OpenAiSearchModels: string[] = [
213
+ OpenAiModels.GPT_4o_Mini_Search,
214
+ OpenAiModels.GPT_4o_Search,
215
+ ];
216
+
217
+ // ─── Pricing (USD per 1M tokens) ──────────────────────────────────────────────
218
+
219
+ export const OpenAiTextPricing: Record<string, ModelPricing> = {
220
+ [OpenAiModels.GPT_55]: { input: 5.0, cached_input: 0.5, output: 30.0 },
221
+ [OpenAiModels.GPT_55_Pro]: { input: 30.0, cached_input: 0, output: 180.0, reasoningLevels: ["medium", "high", "xhigh"] },
222
+ [OpenAiModels.GPT_54]: { input: 2.5, cached_input: 0.25, output: 15.0 },
223
+ [OpenAiModels.GPT_54_Mini]: { input: 0.75, cached_input: 0.075, output: 4.5 },
224
+ [OpenAiModels.GPT_54_Nano]: { input: 0.2, cached_input: 0.02, output: 1.25 },
225
+ [OpenAiModels.GPT_54_Pro]: { input: 30.0, cached_input: 0, output: 180.0 },
226
+ [OpenAiModels.GPT_53_Chat]: {
25
227
  input: 1.75,
26
228
  cached_input: 0.175,
27
229
  output: 14.0,
28
230
  },
29
- [Models.openai.GPT_53_Codex]: {
231
+ [OpenAiModels.GPT_53_Codex]: {
30
232
  input: 1.75,
31
233
  cached_input: 0.175,
32
234
  output: 14.0,
33
235
  },
34
- [Models.openai.GPT_4o]: {
35
- input: 2.5,
36
- cached_input: 1.25,
37
- output: 10.0,
38
- },
39
- [Models.openai.GPT_4o_Mini]: {
40
- input: 0.15,
41
- cached_input: 0.075,
42
- output: 0.6,
43
- },
44
- [Models.openai.o1]: {
45
- input: 15.0,
46
- cached_input: 7.5,
47
- output: 60.0,
48
- },
49
- [Models.openai.o1_Mini]: {
50
- input: 1.1,
51
- cached_input: 0.55,
52
- output: 4.4,
53
- },
54
- [Models.openai.o3_Mini]: {
55
- input: 1.1,
56
- cached_input: 0.55,
57
- output: 4.4,
58
- },
59
- [Models.openai.GPT_41]: {
60
- input: 2.0,
61
- cached_input: 0.5,
62
- output: 8.0,
63
- },
64
- [Models.openai.GPT_41_Mini]: {
65
- input: 0.4,
66
- cached_input: 0.1,
67
- output: 1.6,
68
- },
69
- [Models.openai.GPT_41_Nano]: {
70
- input: 0.1,
71
- cached_input: 0.025,
72
- output: 0.4,
73
- },
74
- [Models.openai.GPT_45]: {
75
- input: 75.0,
76
- cached_input: 37.5,
77
- output: 150.0,
78
- },
79
- [Models.openai.GPT_4o_Audio]: {
80
- input: 2.5,
81
- cached_input: 0,
82
- output: 10.0,
83
- },
84
- [Models.openai.GPT_4o_Realtime]: {
85
- input: 5.0,
86
- cached_input: 2.5,
87
- output: 20.0,
88
- },
89
- [Models.openai.GPT_4o_Mini_Audio]: {
90
- input: 0.15,
91
- cached_input: 0,
92
- output: 0.6,
93
- },
94
- [Models.openai.GPT_4o_Mini_Realtime]: {
95
- input: 0.6,
96
- cached_input: 0.3,
97
- output: 2.4,
98
- },
99
- [Models.openai.o1_Pro]: {
100
- input: 150.0,
101
- cached_input: 0,
102
- output: 600.0,
103
- },
104
- [Models.openai.o3]: {
105
- input: 2.0,
106
- cached_input: 0.5,
107
- output: 8.0,
108
- },
109
- [Models.openai.o3_Pro]: {
110
- input: 20.0,
111
- cached_input: 0,
112
- output: 80.0,
113
- },
114
- [Models.openai.o4_Mini]: {
115
- input: 1.1,
116
- cached_input: 0.275,
117
- output: 4.4,
118
- },
119
- [Models.openai.GPT_4o_Mini_Search]: {
120
- input: 0.15,
121
- cached_input: 0,
122
- output: 0.6,
123
- },
124
- [Models.openai.GPT_4o_Search]: {
236
+ [OpenAiModels.GPT_53_Codex_Spark]: {
237
+ input: 1.75,
238
+ cached_input: 0.175,
239
+ output: 14.0,
240
+ limitedAvailability: true,
241
+ },
242
+ [OpenAiModels.GPT_52]: { input: 1.75, cached_input: 0.175, output: 14.0 },
243
+ [OpenAiModels.GPT_52_Chat]: { input: 1.75, cached_input: 0.175, output: 14.0, deprecated: true, deprecationDate: "2026-07-23" },
244
+ [OpenAiModels.GPT_52_Codex]: { input: 1.75, cached_input: 0.175, output: 14.0, deprecated: true, deprecationDate: "2026-07-23" },
245
+ [OpenAiModels.GPT_52_Pro]: { input: 21.0, cached_input: 0, output: 168.0, reasoningLevels: ["medium", "high", "xhigh"] },
246
+ [OpenAiModels.GPT_51]: { input: 1.25, cached_input: 0.125, output: 10.0 },
247
+ [OpenAiModels.GPT_51_Chat]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
248
+ [OpenAiModels.GPT_51_Codex]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
249
+ [OpenAiModels.GPT_51_Codex_Max]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
250
+ [OpenAiModels.GPT_51_Codex_Mini]:{ input: 0.25, cached_input: 0.025, output: 2.0, deprecated: true, deprecationDate: "2026-07-23" },
251
+ [OpenAiModels.GPT_5]: { input: 1.25, cached_input: 0.125, output: 10.0 },
252
+ [OpenAiModels.GPT_5_Pro]: { input: 15.0, cached_input: 0, output: 120.0, reasoningLevels: ["high"] },
253
+ [OpenAiModels.GPT_5_Chat]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
254
+ [OpenAiModels.GPT_5_Codex]: { input: 1.25, cached_input: 0.125, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
255
+ [OpenAiModels.GPT_5_Mini]: { input: 0.25, cached_input: 0.025, output: 2.0 },
256
+ [OpenAiModels.GPT_5_Nano]: { input: 0.05, cached_input: 0.005, output: 0.4 },
257
+ [OpenAiModels.GPT_41]: { input: 2.0, cached_input: 0.5, output: 8.0 },
258
+ [OpenAiModels.GPT_41_Mini]: { input: 0.4, cached_input: 0.1, output: 1.6 },
259
+ [OpenAiModels.GPT_41_Nano]: { input: 0.1, cached_input: 0.025, output: 0.4, deprecated: true, deprecationDate: "2026-10-23" },
260
+ [OpenAiModels.GPT_45]: { input: 75.0, cached_input: 37.5, output: 150.0, deprecated: true, deprecationDate: "2025-07-14", replacedBy: OpenAiModels.GPT_41 },
261
+ [OpenAiModels.GPT_4o]: { input: 2.5, cached_input: 1.25, output: 10.0 },
262
+ [OpenAiModels.GPT_4o_Audio]: { input: 2.5, cached_input: 0, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
263
+ [OpenAiModels.GPT_4o_Realtime]: { input: 5.0, cached_input: 2.5, output: 20.0, deprecated: true, deprecationDate: "2026-07-23" },
264
+ [OpenAiModels.GPT_4o_Mini]: { input: 0.15, cached_input: 0.075, output: 0.6 },
265
+ [OpenAiModels.GPT_4o_Mini_Audio]: { input: 0.15, cached_input: 0, output: 0.6, deprecated: true, deprecationDate: "2026-07-23" },
266
+ [OpenAiModels.GPT_4o_Mini_Realtime]: { input: 0.6, cached_input: 0.3, output: 2.4, deprecated: true, deprecationDate: "2026-07-23" },
267
+ [OpenAiModels.o1]: { input: 15.0, cached_input: 7.5, output: 60.0, deprecated: true, deprecationDate: "2026-10-23", replacedBy: OpenAiModels.o3 },
268
+ [OpenAiModels.o1_Pro]: { input: 150.0, cached_input: 0, output: 600.0, deprecated: true, deprecationDate: "2026-10-23" },
269
+ [OpenAiModels.o3]: { input: 2.0, cached_input: 0.5, output: 8.0 },
270
+ [OpenAiModels.o3_Pro]: { input: 20.0, cached_input: 0, output: 80.0, limitedAvailability: true },
271
+ [OpenAiModels.o4_Mini]: { input: 1.1, cached_input: 0.275, output: 4.4 },
272
+ [OpenAiModels.o3_Mini]: { input: 1.1, cached_input: 0.55, output: 4.4, deprecated: true, deprecationDate: "2026-10-23" },
273
+ [OpenAiModels.o1_Mini]: { input: 1.1, cached_input: 0.55, output: 4.4, deprecated: true, deprecationDate: "2025-10-27", replacedBy: OpenAiModels.o4_Mini },
274
+ [OpenAiModels.o1_Preview]: { input: 15.0, cached_input: 7.5, output: 60.0, deprecated: true, deprecationDate: "2025-07-28", replacedBy: OpenAiModels.o3 },
275
+ [OpenAiModels.o3_Deep_Research]: { input: 10.0, cached_input: 2.5, output: 40.0, deprecated: true, deprecationDate: "2026-07-23" },
276
+ [OpenAiModels.o4_Mini_Deep_Research]: { input: 2.0, cached_input: 0.5, output: 8.0, deprecated: true, deprecationDate: "2026-07-23" },
277
+ [OpenAiModels.GPT_4o_Mini_Search]: { input: 0.15, cached_input: 0, output: 0.6, deprecated: true, deprecationDate: "2026-07-23" },
278
+ [OpenAiModels.GPT_4o_Search]: { input: 2.5, cached_input: 0, output: 10.0, deprecated: true, deprecationDate: "2026-07-23" },
279
+ [OpenAiModels.GPT_4o_Transcribe]: {
125
280
  input: 2.5,
126
281
  cached_input: 0,
127
282
  output: 10.0,
128
283
  },
129
- [Models.openai.GPT_5_2]: {
130
- input: 1.75,
131
- cached_input: 0.175,
132
- output: 14,
133
- },
134
- [Models.openai.GPT_5_1]: {
135
- input: 1.25,
136
- cached_input: 0.125,
137
- output: 10,
138
- },
139
- [Models.openai.GPT_5]: {
284
+ [OpenAiModels.GPT_4o_Mini_Transcribe]: {
140
285
  input: 1.25,
141
- cached_input: 0.125,
142
- output: 10,
143
- },
144
- [Models.openai.GPT_5_Mini]: {
145
- input: 0.25,
146
- cached_input: 0.025,
147
- output: 2,
148
- },
149
- [Models.openai.GPT_5_Nano]: {
150
- input: 0.05,
151
- cached_input: 0.005,
152
- output: 0.4,
153
- },
154
- [EmbeddingModels.openai.EmbeddingAda2]: {
155
- input: 0.1,
156
- cached_input: 0,
157
- output: 0,
158
- },
159
- [EmbeddingModels.openai.EmbeddingLarge3]: {
160
- input: 0.13,
161
- cached_input: 0,
162
- output: 0,
163
- },
164
- [EmbeddingModels.openai.EmbeddingSmall3]: {
165
- input: 0.02,
166
286
  cached_input: 0,
167
- output: 0,
287
+ output: 5.0,
168
288
  },
169
- // New realtime models
170
- [Models.openai.GPT_Realtime_15]: {
289
+ [OpenAiModels.GPT_Realtime_15]: {
171
290
  input: 4.0,
172
291
  cached_input: 0.4,
173
292
  output: 16.0,
174
293
  },
175
- [Models.openai.GPT_Realtime_Mini]: {
294
+ [OpenAiModels.GPT_Realtime_Mini]: {
176
295
  input: 0.6,
177
296
  cached_input: 0.06,
178
297
  output: 2.4,
179
298
  },
180
- // New image models (text token pricing)
181
- [Models.openai.GPT_Image_15]: {
299
+ [OpenAiModels.GPT_Image_2]: { input: 8.0, cached_input: 2.0, output: 30.0 },
300
+ [OpenAiModels.GPT_Image_15]: { input: 5.0, cached_input: 1.25, output: 10.0 },
301
+ [OpenAiModels.GPT_Image_1]: { input: 5.0, cached_input: 1.25, output: 40.0, deprecated: true, deprecationDate: "2026-10-23" },
302
+ [OpenAiModels.GPT_Image_1_Mini]: { input: 2.0, cached_input: 0.2, output: 0 },
303
+ [OpenAiModels.ChatGPT_Image]: {
182
304
  input: 5.0,
183
305
  cached_input: 1.25,
184
- output: 10.0,
185
- },
186
- [Models.openai.GPT_Image_1_Mini]: {
187
- input: 2.0,
188
- cached_input: 0.2,
189
- output: 0,
306
+ output: 40.0,
190
307
  },
191
- // New transcription models
192
- [Models.openai.GPT_4o_Transcribe]: {
308
+ [OpenAiModels.GPT_4o_2024_05_13]: { input: 5.0, cached_input: 0, output: 15.0, deprecated: true, deprecationDate: "2026-10-23" },
309
+ [OpenAiModels.GPT_4o_2024_11_20]: {
193
310
  input: 2.5,
194
- cached_input: 0,
311
+ cached_input: 1.25,
195
312
  output: 10.0,
196
313
  },
197
- [Models.openai.GPT_4o_Mini_Transcribe]: {
198
- input: 1.25,
199
- cached_input: 0,
200
- output: 5.0,
201
- },
314
+ [OpenAiModels.GPT_35_Turbo]: { input: 0.5, cached_input: 0, output: 1.5, deprecated: true, deprecationDate: "2026-10-23" },
315
+ [OpenAiModels.GPT_4]: { input: 30.0, cached_input: 0, output: 60.0, deprecated: true, deprecationDate: "2026-10-23" },
316
+ [OpenAiModels.GPT_4_Turbo]: { input: 10.0, cached_input: 0, output: 30.0, deprecated: true, deprecationDate: "2026-10-23" },
317
+ // Embeddings
318
+ [OpenAiEmbeddingModels.EmbeddingAda2]: { input: 0.1, output: 0 },
319
+ [OpenAiEmbeddingModels.EmbeddingLarge3]: { input: 0.13, output: 0 },
320
+ [OpenAiEmbeddingModels.EmbeddingSmall3]: { input: 0.02, output: 0 },
321
+ // TTS / Whisper
322
+ [OpenAiModels.TTS_1]: { input: 15.0, output: 0 },
323
+ [OpenAiModels.Whisper_1]: { input: 0.006, output: 0 },
324
+ // Image generation (per-image)
325
+ [OpenAiModels.DALL_E_3]: { image_generation: 0.04 },
326
+ [OpenAiModels.DALL_E_2]: { image_generation: 0.02 },
327
+ // Video generation (per second)
328
+ [OpenAiModels.Sora]: { video_generation: 0.012 },
329
+ [OpenAiModels.Sora_2]: { video_generation: 0.015 },
330
+ [OpenAiModels.Sora_2_Pro]: { video_generation: 0.025 },
202
331
  };
332
+
333
+ // ─── All completion model IDs (active + deprecated) ──────────────────────────
334
+ // Deprecation/replacement metadata is embedded in OpenAiTextPricing entries.
335
+
336
+ const OpenAiAllCompletionModels: string[] = [
337
+ ...OpenAiChatModels,
338
+ ...OpenAiResponsesOnlyModels,
339
+ ...OpenAiLimitedAvailabilityModels,
340
+ // Deprecated chat/codex variants
341
+ OpenAiModels.GPT_5_Chat, OpenAiModels.GPT_5_Codex,
342
+ OpenAiModels.GPT_51_Chat, OpenAiModels.GPT_51_Codex,
343
+ OpenAiModels.GPT_51_Codex_Max, OpenAiModels.GPT_51_Codex_Mini,
344
+ OpenAiModels.GPT_52_Chat, OpenAiModels.GPT_52_Codex,
345
+ OpenAiModels.o3_Deep_Research, OpenAiModels.o4_Mini_Deep_Research,
346
+ // Deprecated reasoning
347
+ OpenAiModels.o3_Mini, OpenAiModels.o4_Mini,
348
+ OpenAiModels.o1, OpenAiModels.o1_Pro,
349
+ OpenAiModels.o1_Mini, OpenAiModels.o1_Preview,
350
+ // Deprecated chat
351
+ OpenAiModels.GPT_41_Nano,
352
+ OpenAiModels.GPT_4o_2024_05_13,
353
+ OpenAiModels.GPT_45,
354
+ OpenAiModels.GPT_35_Turbo, OpenAiModels.GPT_4, OpenAiModels.GPT_4_Turbo,
355
+ ];
356
+
357
+ const OpenAiAllImageModels: string[] = [
358
+ ...OpenAiImageModels,
359
+ ...OpenAiDeprecatedImageModels,
360
+ ];
361
+
362
+ const OpenAiAllAudioModels: string[] = [
363
+ ...OpenAiAudioModels,
364
+ ...OpenAiDeprecatedAudioModels,
365
+ ];
366
+
367
+ // ─── Catalog ──────────────────────────────────────────────────────────────────
368
+ // Metadata (deprecated, deprecationDate, limitedAvailability, replacedBy) is
369
+ // read directly from the OpenAiTextPricing entries — no need for separate groups.
370
+
371
+ export const OPENAI_MODEL_CATALOG: ModelCatalogEntry[] = [
372
+ ...completions(OpenAiAllCompletionModels, "openai", OpenAiTextPricing),
373
+ ...embeddings(OpenAiEmbeddingModelsList, "openai", OpenAiTextPricing),
374
+ ...images(OpenAiAllImageModels, "openai", OpenAiTextPricing),
375
+ ...videos(OpenAiVideoModels, "openai", OpenAiTextPricing),
376
+ ...audios(OpenAiAllAudioModels, "openai", OpenAiTextPricing),
377
+ ...transactions(OpenAiSearchModels, "openai", OpenAiTextPricing),
378
+ ];