@tyvm/knowhow 0.0.105 → 0.0.107

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 (219) 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 +169 -5
  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/anthropic.ts +8 -2
  15. package/src/clients/cerebras.ts +10 -0
  16. package/src/clients/contextLimits.ts +7 -2
  17. package/src/clients/copilot.ts +23 -0
  18. package/src/clients/deepseek.ts +16 -0
  19. package/src/clients/fireworks.ts +15 -0
  20. package/src/clients/gemini.ts +59 -4
  21. package/src/clients/github.ts +16 -0
  22. package/src/clients/groq.ts +15 -0
  23. package/src/clients/http.ts +194 -6
  24. package/src/clients/index.ts +116 -4
  25. package/src/clients/llama.ts +16 -0
  26. package/src/clients/mistral.ts +16 -0
  27. package/src/clients/nvidia.ts +16 -0
  28. package/src/clients/openai.ts +53 -12
  29. package/src/clients/openrouter.ts +17 -0
  30. package/src/clients/pricing/anthropic.ts +105 -78
  31. package/src/clients/pricing/cerebras.ts +11 -0
  32. package/src/clients/pricing/copilot.ts +60 -0
  33. package/src/clients/pricing/deepseek.ts +15 -0
  34. package/src/clients/pricing/fireworks.ts +32 -0
  35. package/src/clients/pricing/github.ts +69 -0
  36. package/src/clients/pricing/google.ts +245 -206
  37. package/src/clients/pricing/groq.ts +56 -0
  38. package/src/clients/pricing/index.ts +42 -5
  39. package/src/clients/pricing/llama.ts +18 -0
  40. package/src/clients/pricing/mistral.ts +34 -0
  41. package/src/clients/pricing/models.ts +7 -236
  42. package/src/clients/pricing/nvidia.ts +102 -0
  43. package/src/clients/pricing/openai.ts +348 -171
  44. package/src/clients/pricing/openrouter.ts +36 -0
  45. package/src/clients/pricing/types.ts +83 -2
  46. package/src/clients/pricing/xai.ts +121 -65
  47. package/src/clients/types.ts +28 -1
  48. package/src/clients/xai.ts +161 -1
  49. package/src/fileSync.ts +8 -2
  50. package/src/login.ts +11 -3
  51. package/src/services/AgentSyncFs.ts +36 -12
  52. package/src/services/KnowhowClient.ts +11 -0
  53. package/src/services/LazyToolsService.ts +6 -0
  54. package/src/services/S3.ts +0 -7
  55. package/src/services/modules/index.ts +11 -2
  56. package/src/types.ts +56 -279
  57. package/src/worker.ts +174 -0
  58. package/tests/clients/AIClient.test.ts +1 -1
  59. package/tests/clients/anthropic.test.ts +202 -0
  60. package/tests/clients/pricing.test.ts +37 -0
  61. package/tests/manual/clients/completions.json +838 -226
  62. package/tests/manual/clients/completions.test.ts +46 -31
  63. package/ts_build/package.json +3 -2
  64. package/ts_build/src/agents/base/base.d.ts +18 -1
  65. package/ts_build/src/agents/base/base.js +111 -4
  66. package/ts_build/src/agents/base/base.js.map +1 -1
  67. package/ts_build/src/agents/tools/execCommand.js +3 -0
  68. package/ts_build/src/agents/tools/execCommand.js.map +1 -1
  69. package/ts_build/src/agents/tools/executeScript/definition.js +1 -1
  70. package/ts_build/src/agents/tools/executeScript/definition.js.map +1 -1
  71. package/ts_build/src/agents/tools/index.d.ts +0 -1
  72. package/ts_build/src/agents/tools/index.js +0 -1
  73. package/ts_build/src/agents/tools/index.js.map +1 -1
  74. package/ts_build/src/agents/tools/list.js +3 -38
  75. package/ts_build/src/agents/tools/list.js.map +1 -1
  76. package/ts_build/src/agents/tools/visionTool.d.ts +1 -1
  77. package/ts_build/src/agents/tools/writeFile.js +1 -1
  78. package/ts_build/src/agents/tools/writeFile.js.map +1 -1
  79. package/ts_build/src/ai.d.ts +1 -1
  80. package/ts_build/src/auth/browserLogin.d.ts +2 -1
  81. package/ts_build/src/auth/browserLogin.js +10 -3
  82. package/ts_build/src/auth/browserLogin.js.map +1 -1
  83. package/ts_build/src/chat/modules/RemoteSyncModule.js +1 -0
  84. package/ts_build/src/chat/modules/RemoteSyncModule.js.map +1 -1
  85. package/ts_build/src/cli.js +19 -0
  86. package/ts_build/src/cli.js.map +1 -1
  87. package/ts_build/src/clients/anthropic.d.ts +1 -82
  88. package/ts_build/src/clients/anthropic.js +8 -2
  89. package/ts_build/src/clients/anthropic.js.map +1 -1
  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 +38 -2
  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 +135 -7
  115. package/ts_build/src/clients/http.js.map +1 -1
  116. package/ts_build/src/clients/index.d.ts +14 -0
  117. package/ts_build/src/clients/index.js +94 -4
  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 +38 -10
  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 +16 -5
  159. package/ts_build/src/clients/pricing/index.js +62 -7
  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 +5 -4
  168. package/ts_build/src/clients/pricing/models.js +8 -162
  169. package/ts_build/src/clients/pricing/models.js.map +1 -1
  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 +295 -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 +27 -2
  180. package/ts_build/src/clients/pricing/types.js +46 -0
  181. package/ts_build/src/clients/pricing/types.js.map +1 -1
  182. package/ts_build/src/clients/pricing/xai.d.ts +37 -57
  183. package/ts_build/src/clients/pricing/xai.js +92 -59
  184. package/ts_build/src/clients/pricing/xai.js.map +1 -1
  185. package/ts_build/src/clients/types.d.ts +12 -1
  186. package/ts_build/src/clients/xai.d.ts +2 -62
  187. package/ts_build/src/clients/xai.js +132 -1
  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/modules/index.js +41 -1
  204. package/ts_build/src/services/modules/index.js.map +1 -1
  205. package/ts_build/src/types.d.ts +163 -124
  206. package/ts_build/src/types.js +33 -213
  207. package/ts_build/src/types.js.map +1 -1
  208. package/ts_build/src/worker.d.ts +4 -0
  209. package/ts_build/src/worker.js +140 -0
  210. package/ts_build/src/worker.js.map +1 -1
  211. package/ts_build/tests/clients/AIClient.test.js +1 -1
  212. package/ts_build/tests/clients/AIClient.test.js.map +1 -1
  213. package/ts_build/tests/clients/anthropic.test.d.ts +1 -0
  214. package/ts_build/tests/clients/anthropic.test.js +159 -0
  215. package/ts_build/tests/clients/anthropic.test.js.map +1 -0
  216. package/ts_build/tests/clients/pricing.test.js +21 -0
  217. package/ts_build/tests/clients/pricing.test.js.map +1 -1
  218. package/ts_build/tests/manual/clients/completions.test.js +27 -24
  219. package/ts_build/tests/manual/clients/completions.test.js.map +1 -1
@@ -1,236 +1,275 @@
1
- import { Models, EmbeddingModels } from "../../types";
2
-
3
1
  /**
4
- * Gemini model pricing per 1M tokens (USD).
5
- *
6
- * Many models have modality-dependent pricing:
7
- * - `input`: text / image / video input rate
8
- * - `input_audio`: audio input rate (if different from text)
9
- * - `output`: text output rate
10
- * - `output_audio`: audio output rate (if different from text)
11
- * - `context_caching`: context cache read rate (text/image/video)
12
- * - `context_caching_audio`: context cache read rate for audio tokens
13
- * - `context_caching_gt_200k`: rate for prompts > 200k tokens
14
- * - `context_caching_storage`: storage cost per 1M tokens per hour
15
- * - `image_generation`: per-image cost for image output models
16
- * - `video_generation`: per-second cost for video generation models
2
+ * Google model IDs, pricing, and catalog.
3
+ * Single source of truth for all Google/Gemini models.
17
4
  */
18
- export interface GeminiModelPricing {
19
- input?: number;
5
+ import { completions, embeddings, images, videos, audios, liveApi, ModelCatalogEntry, ModelPricing } from "./types";
6
+
7
+ // ─── Model IDs ────────────────────────────────────────────────────────────────
8
+
9
+ export const GoogleModels = {
10
+ // Gemini 3.x
11
+ Gemini_31_Pro_Preview: "gemini-3.1-pro-preview",
12
+ Gemini_31_Flash_Image_Preview: "gemini-3.1-flash-image-preview",
13
+ Gemini_31_Flash_Lite_Preview: "gemini-3.1-flash-lite-preview",
14
+ Gemini_31_Flash_Live_Preview: "gemini-3.1-flash-live-preview",
15
+ Gemini_3_Flash_Preview: "gemini-3-flash-preview",
16
+ Gemini_3_Pro_Image_Preview: "gemini-3-pro-image-preview",
17
+ // Gemini 2.5
18
+ Gemini_25_Pro: "gemini-2.5-pro",
19
+ Gemini_25_Flash: "gemini-2.5-flash",
20
+ Gemini_25_Flash_Lite: "gemini-2.5-flash-lite",
21
+ Gemini_25_Flash_Preview: "gemini-2.5-flash-preview-05-20",
22
+ Gemini_25_Flash_Preview_0417: "gemini-2.5-flash-preview-04-17",
23
+ Gemini_25_Pro_Preview: "gemini-2.5-pro-preview-05-06",
24
+ Gemini_25_Flash_Image: "gemini-2.5-flash-image",
25
+ Gemini_25_Flash_Image_Preview: "gemini-2.5-flash-image-preview",
26
+ Gemini_25_Flash_Live: "gemini-2.5-flash-live-preview",
27
+ Gemini_25_Flash_Native_Audio: "gemini-2.5-flash-native-audio-preview-12-2025",
28
+ Gemini_25_Pro_TTS: "gemini-2.5-pro-preview-tts",
29
+ // Gemini 2.0
30
+ Gemini_20_Flash: "gemini-2.0-flash",
31
+ Gemini_20_Flash_Preview_Image_Generation: "gemini-2.0-flash-exp-image-generation",
32
+ Gemini_20_Flash_Live: "gemini-2.0-flash-live-001",
33
+ // Gemini 1.5 (legacy)
34
+ Gemini_15_Flash: "gemini-1.5-flash",
35
+ Gemini_15_Flash_8B: "gemini-1.5-flash-8b",
36
+ Gemini_15_Pro: "gemini-1.5-pro",
37
+ // Media generation
38
+ Imagen_3: "imagen-4.0-generate-001",
39
+ Imagen_4_Fast: "imagen-4.0-fast-generate-001",
40
+ Imagen_4_Ultra: "imagen-4.0-ultra-generate-001",
41
+ Veo_2: "veo-2.0-generate-001",
42
+ Veo_3: "veo-3.0-generate-001",
43
+ Veo_3_Fast: "veo-3.0-fast-generate-001",
44
+ Veo_3_1: "veo-3.1-generate-preview",
45
+ Veo_3_1_Fast: "veo-3.1-fast-generate-preview",
46
+ // Audio / TTS
47
+ Gemini_25_Flash_TTS: "gemini-2.5-flash-preview-tts",
48
+ Gemini_20_Flash_TTS: "gemini-2.0-flash-preview-tts",
49
+ } as const;
50
+
51
+ // ─── Gemma models (free via Google AI / NVIDIA NIM) ───────────────────────────
52
+ export const GemmaModels = {
53
+ Gemma_3_27B_It: "gemma-3-27b-it",
54
+ Gemma_3_12B_It: "gemma-3-12b-it",
55
+ Gemma_3_4B_It: "gemma-3-4b-it",
56
+ Gemma_3n_E2B_It: "gemma-3n-e2b-it",
57
+ Gemma_3n_E4B_It: "gemma-3n-e4b-it",
58
+ Gemma_4_26B_A4B_It: "gemma-4-26b-a4b-it",
59
+ Gemma_4_31B_It: "gemma-4-31b-it",
60
+ } as const;
61
+
62
+ export const GoogleEmbeddingModels: Record<string, string> = {
63
+ Gemini_Embedding: "gemini-embedding-exp",
64
+ Gemini_Embedding_001: "gemini-embedding-001",
65
+ };
66
+
67
+ // ─── Modality arrays ──────────────────────────────────────────────────────────
68
+
69
+ export const GoogleTextModels: string[] = [
70
+ GoogleModels.Gemini_31_Pro_Preview,
71
+ GoogleModels.Gemini_31_Flash_Lite_Preview,
72
+ GoogleModels.Gemini_25_Pro,
73
+ GoogleModels.Gemini_25_Flash,
74
+ GoogleModels.Gemini_25_Flash_Lite,
75
+ GoogleModels.Gemini_20_Flash,
76
+ ];
77
+
78
+ // Models that support thinkingLevel (Gemini 3.x series)
79
+ export const GoogleThinkingLevelModels: string[] = [
80
+ GoogleModels.Gemini_31_Pro_Preview,
81
+ GoogleModels.Gemini_31_Flash_Lite_Preview,
82
+ GoogleModels.Gemini_3_Flash_Preview,
83
+ ];
84
+
85
+ // Models that support thinkingBudget (Gemini 2.5 series)
86
+ export const GoogleThinkingBudgetModels: string[] = [
87
+ GoogleModels.Gemini_25_Pro,
88
+ GoogleModels.Gemini_25_Flash,
89
+ GoogleModels.Gemini_25_Flash_Lite,
90
+ GoogleModels.Gemini_25_Flash_Preview,
91
+ GoogleModels.Gemini_25_Flash_Preview_0417,
92
+ GoogleModels.Gemini_25_Pro_Preview,
93
+ ];
94
+
95
+ // Live API only — not compatible with generateContent (text completions)
96
+ export const GoogleLiveApiModels: string[] = [
97
+ GoogleModels.Gemini_31_Flash_Live_Preview,
98
+ GoogleModels.Gemini_25_Flash_Live,
99
+ GoogleModels.Gemini_25_Flash_Native_Audio,
100
+ GoogleModels.Gemini_20_Flash_Live,
101
+ ];
102
+
103
+ // Limited availability — exist in catalog but return empty or restricted responses
104
+ export const GoogleLimitedModels: string[] = [
105
+ GoogleModels.Gemini_3_Flash_Preview,
106
+ ];
107
+
108
+ // All deprecated/legacy models — metadata is embedded in GeminiPricing entries
109
+ const GoogleAllDeprecatedModels: string[] = [
110
+ // Deprecated previews (shutdownDate + replacedBy in GeminiPricing)
111
+ GoogleModels.Gemini_25_Flash_Preview,
112
+ GoogleModels.Gemini_25_Flash_Preview_0417,
113
+ GoogleModels.Gemini_25_Pro_Preview,
114
+ // Legacy (Gemini 1.5 — returning 404)
115
+ GoogleModels.Gemini_15_Flash,
116
+ GoogleModels.Gemini_15_Flash_8B,
117
+ GoogleModels.Gemini_15_Pro,
118
+ ];
119
+
120
+ export const GemmaTextModels: string[] = [
121
+ GemmaModels.Gemma_3_27B_It,
122
+ GemmaModels.Gemma_3_12B_It,
123
+ GemmaModels.Gemma_3_4B_It,
124
+ GemmaModels.Gemma_3n_E2B_It,
125
+ GemmaModels.Gemma_3n_E4B_It,
126
+ GemmaModels.Gemma_4_26B_A4B_It,
127
+ GemmaModels.Gemma_4_31B_It,
128
+ ];
129
+
130
+ export const GoogleImageModels: string[] = [
131
+ GoogleModels.Gemini_31_Flash_Image_Preview,
132
+ GoogleModels.Gemini_3_Pro_Image_Preview,
133
+ GoogleModels.Gemini_25_Flash_Image,
134
+ GoogleModels.Gemini_25_Flash_Image_Preview,
135
+ GoogleModels.Gemini_20_Flash_Preview_Image_Generation,
136
+ GoogleModels.Imagen_3,
137
+ GoogleModels.Imagen_4_Fast,
138
+ GoogleModels.Imagen_4_Ultra,
139
+ ];
140
+
141
+ export const GoogleVideoModels: string[] = [
142
+ GoogleModels.Veo_2,
143
+ GoogleModels.Veo_3,
144
+ GoogleModels.Veo_3_Fast,
145
+ GoogleModels.Veo_3_1,
146
+ GoogleModels.Veo_3_1_Fast,
147
+ ];
148
+
149
+ export const GoogleTTSModels: string[] = [
150
+ GoogleModels.Gemini_25_Flash_TTS,
151
+ GoogleModels.Gemini_25_Pro_TTS,
152
+ GoogleModels.Gemini_20_Flash_TTS,
153
+ ];
154
+
155
+ export const GoogleEmbeddingModelsList: string[] = [
156
+ GoogleEmbeddingModels.Gemini_Embedding,
157
+ GoogleEmbeddingModels.Gemini_Embedding_001,
158
+ ];
159
+
160
+ // ─── Pricing ──────────────────────────────────────────────────────────────────
161
+
162
+ export interface GeminiModelPricing extends ModelPricing {
20
163
  input_audio?: number;
21
164
  input_gt_200k?: number;
22
- output?: number;
23
- output_audio?: number;
24
165
  output_gt_200k?: number;
25
166
  context_caching?: number;
26
167
  context_caching_audio?: number;
27
168
  context_caching_gt_200k?: number;
28
- context_caching_storage?: number; // per 1M tokens per hour
29
- image_generation?: number;
30
- video_generation?: number;
169
+ context_caching_storage?: number;
31
170
  thinking_output?: number;
32
171
  }
33
172
 
34
173
  export const GeminiPricing: Record<string, GeminiModelPricing> = {
35
- // ── Gemini 3.x ────────────────────────────────────────────────────────────
36
- [Models.google.Gemini_31_Pro_Preview]: {
37
- input: 2,
38
- input_gt_200k: 4,
39
- output: 12,
40
- output_gt_200k: 18,
41
- context_caching: 0.2,
42
- context_caching_gt_200k: 0.4,
43
- context_caching_storage: 4.5,
44
- },
45
- // gemini-3.1-flash-image-preview: text/image input, text+image output
46
- [Models.google.Gemini_31_Flash_Image_Preview]: {
47
- input: 0.5,
48
- output: 3,
49
- image_generation: 0.045, // per 0.5K image ($60/1M tokens × 747 tokens)
174
+ [GoogleModels.Gemini_31_Pro_Preview]: {
175
+ input: 2, input_gt_200k: 4, output: 12, output_gt_200k: 18,
176
+ context_caching: 0.2, context_caching_gt_200k: 0.4, context_caching_storage: 4.5,
50
177
  },
51
- // gemini-3.1-flash-lite-preview: audio input costs 2× text
52
- [Models.google.Gemini_31_Flash_Lite_Preview]: {
53
- input: 0.25,
54
- input_audio: 0.5,
55
- output: 1.5,
56
- context_caching: 0.025,
57
- context_caching_audio: 0.05,
58
- context_caching_storage: 1.0,
178
+ [GoogleModels.Gemini_31_Flash_Image_Preview]: {
179
+ input: 0.25, output: 60.0, image_generation: 0.045, image_generation_per_1m_tokens: 60.0,
59
180
  },
60
- // gemini-3.1-flash-live-preview: Live API, per-modality rates
61
- // Input: $0.75 text, $3.00 audio/video, $1.00 image
62
- // Output: $4.50 text, $12.00 audio
63
- [Models.google.Gemini_31_Flash_Live_Preview]: {
64
- input: 0.75, // text
65
- input_audio: 3.0, // audio / video
66
- output: 4.5, // text
67
- output_audio: 12.0, // audio
181
+ [GoogleModels.Gemini_31_Flash_Lite_Preview]: {
182
+ input: 0.25, input_audio: 0.5, output: 1.5,
183
+ context_caching: 0.025, context_caching_audio: 0.05, context_caching_storage: 1.0,
68
184
  },
69
- // gemini-3-flash-preview: audio input costs 2× text
70
- [Models.google.Gemini_3_Flash_Preview]: {
71
- input: 0.5,
72
- input_audio: 1.0,
73
- output: 3.0,
74
- context_caching: 0.05,
75
- context_caching_audio: 0.10,
76
- context_caching_storage: 1.0,
185
+ [GoogleModels.Gemini_31_Flash_Live_Preview]: {
186
+ input: 0.75, input_audio: 3.0, output: 4.5, output_audio: 12.0,
77
187
  },
78
- // gemini-3-pro-image-preview: text+image input, text+image output
79
- [Models.google.Gemini_3_Pro_Image_Preview]: {
80
- input: 2,
81
- output: 12,
82
- image_generation: 0.134, // per 1K/2K image ($120/1M tokens × 1120 tokens)
188
+ [GoogleModels.Gemini_3_Flash_Preview]: {
189
+ input: 0.5, input_audio: 1.0, output: 3.0,
190
+ context_caching: 0.05, context_caching_audio: 0.10, context_caching_storage: 1.0,
191
+ limitedAvailability: true,
83
192
  },
84
-
85
- // ── Gemini 2.5 ────────────────────────────────────────────────────────────
86
- [Models.google.Gemini_25_Pro]: {
87
- input: 1.25,
88
- input_gt_200k: 2.5,
89
- output: 10.0,
90
- output_gt_200k: 15.0,
91
- context_caching: 0.125,
92
- context_caching_gt_200k: 0.25,
93
- context_caching_storage: 4.5,
94
- },
95
- // gemini-2.5-flash: audio input costs 3.3× text; audio caching 3.3× text
96
- [Models.google.Gemini_25_Flash]: {
97
- input: 0.3,
98
- input_audio: 1.0,
99
- output: 2.5,
100
- context_caching: 0.03,
101
- context_caching_audio: 0.1,
102
- context_caching_storage: 1.0,
193
+ [GoogleModels.Gemini_3_Pro_Image_Preview]: {
194
+ input: 2, output: 12, image_generation: 0.134,
103
195
  },
104
- // gemini-2.5-flash-lite: audio input costs 3× text; audio caching 3× text
105
- [Models.google.Gemini_25_Flash_Lite]: {
106
- input: 0.1,
107
- input_audio: 0.3,
108
- output: 0.4,
109
- context_caching: 0.01,
110
- context_caching_audio: 0.03,
111
- context_caching_storage: 1.0,
196
+ [GoogleModels.Gemini_25_Pro]: {
197
+ input: 1.25, input_gt_200k: 2.5, output: 10.0, output_gt_200k: 15.0,
198
+ context_caching: 0.125, context_caching_gt_200k: 0.25, context_caching_storage: 4.5,
112
199
  },
113
- // gemini-2.5-flash-preview-05-20: same modality splits as 2.5 Flash
114
- [Models.google.Gemini_25_Flash_Preview]: {
115
- input: 0.3,
116
- input_audio: 1.0,
117
- output: 2.5,
118
- context_caching: 0.03,
119
- context_caching_audio: 0.1,
120
- context_caching_storage: 1.0,
200
+ [GoogleModels.Gemini_25_Flash]: {
201
+ input: 0.3, input_audio: 1.0, output: 2.5,
202
+ context_caching: 0.03, context_caching_audio: 0.1, context_caching_storage: 1.0,
121
203
  },
122
- [Models.google.Gemini_25_Pro_Preview]: {
123
- input: 1.25,
124
- input_gt_200k: 2.5,
125
- output: 10.0,
126
- output_gt_200k: 15.0,
127
- context_caching: 0.125,
128
- context_caching_gt_200k: 0.25,
129
- context_caching_storage: 4.5,
204
+ [GoogleModels.Gemini_25_Flash_Lite]: {
205
+ input: 0.1, input_audio: 0.3, output: 0.4,
206
+ context_caching: 0.01, context_caching_audio: 0.03, context_caching_storage: 1.0,
130
207
  },
131
- // gemini-2.5-flash-image: image output model, per-image pricing
132
- [Models.google.Gemini_25_Flash_Image]: {
133
- input: 0.3,
134
- output: 0.039, // per image ($30/1M tokens × 1290 tokens)
208
+ [GoogleModels.Gemini_25_Flash_Preview_0417]: { input: 0.15, output: 0.60, context_caching: 0.0375, deprecated: true, deprecationDate: "2025-11-18", replacedBy: GoogleModels.Gemini_3_Flash_Preview },
209
+ [GoogleModels.Gemini_25_Flash_Preview]: {
210
+ input: 0.15, input_audio: 0.5, output: 0.60, context_caching: 0.0375, deprecated: true, deprecationDate: "2025-11-18", replacedBy: GoogleModels.Gemini_3_Flash_Preview,
135
211
  },
136
- // gemini-2.5-flash-live / gemini-2.5-flash-native-audio-preview-12-2025:
137
- // Live API models audio I/O costs dramatically more than text
138
- // Input: $0.50 text, $3.00 audio/video
139
- // Output: $2.00 text, $12.00 audio
140
- [Models.google.Gemini_25_Flash_Live]: {
141
- input: 0.5,
142
- input_audio: 3.0,
143
- output: 2.0,
144
- output_audio: 12.0,
212
+ [GoogleModels.Gemini_25_Pro_Preview]: {
213
+ input: 1.25, input_gt_200k: 2.5, output: 10.0, output_gt_200k: 15.0,
214
+ context_caching: 0.125, context_caching_gt_200k: 0.25, context_caching_storage: 4.5,
215
+ deprecated: true, deprecationDate: "2025-12-02", replacedBy: GoogleModels.Gemini_31_Pro_Preview,
145
216
  },
146
- [Models.google.Gemini_25_Flash_Native_Audio]: {
147
- input: 0.5,
148
- input_audio: 3.0,
149
- output: 2.0,
150
- output_audio: 12.0,
217
+ [GoogleModels.Gemini_25_Flash_Image]: {
218
+ input: 0.3, output: 30.0, image_generation: 0.039, image_generation_per_1m_tokens: 30.0,
151
219
  },
152
- // TTS models: text-only input, audio-only output
153
- [Models.google.Gemini_25_Flash_TTS]: {
154
- input: 0.5,
155
- output_audio: 10.0,
220
+ [GoogleModels.Gemini_25_Flash_Image_Preview]: {
221
+ input: 0.3, output: 30.0, image_generation: 0.039, image_generation_per_1m_tokens: 30.0,
156
222
  },
157
- [Models.google.Gemini_25_Pro_TTS]: {
158
- input: 1.0,
159
- output_audio: 20.0,
160
- },
161
-
162
- // ── Gemini 2.0 (deprecated) ───────────────────────────────────────────────
163
- // gemini-2.0-flash: audio input costs 7× text; audio caching costs 7× text
164
- [Models.google.Gemini_20_Flash]: {
165
- input: 0.1,
166
- input_audio: 0.7,
167
- output: 0.4,
168
- context_caching: 0.025,
169
- context_caching_audio: 0.175,
170
- context_caching_storage: 1.0,
171
- },
172
- [Models.google.Gemini_20_Flash_Preview_Image_Generation]: {
173
- input: 0.1,
174
- output: 0.4,
175
- image_generation: 0.039,
176
- },
177
-
178
- // ── Gemini 1.5 (legacy) ───────────────────────────────────────────────────
179
- [Models.google.Gemini_15_Flash]: {
180
- input: 0.075,
181
- output: 0.3,
182
- context_caching: 0.01875,
183
- },
184
- [Models.google.Gemini_15_Flash_8B]: {
185
- input: 0.0375,
186
- output: 0.15,
187
- context_caching: 0.01,
188
- },
189
- [Models.google.Gemini_15_Pro]: {
190
- input: 1.25,
191
- output: 5.0,
192
- context_caching: 0.3125,
193
- },
194
-
195
- // ── Image generation ──────────────────────────────────────────────────────
196
- [Models.google.Imagen_3]: {
197
- image_generation: 0.04, // $0.04/image (Imagen 4 Standard)
198
- },
199
- [Models.google.Imagen_4_Fast]: {
200
- image_generation: 0.02,
201
- },
202
- [Models.google.Imagen_4_Ultra]: {
203
- image_generation: 0.06,
204
- },
205
-
206
- // ── Video generation ──────────────────────────────────────────────────────
207
- [Models.google.Veo_2]: {
208
- video_generation: 0.35, // per second
209
- },
210
- [Models.google.Veo_3]: {
211
- video_generation: 0.4,
212
- },
213
- [Models.google.Veo_3_Fast]: {
214
- video_generation: 0.1, // 720p base rate; 1080p=$0.12, 4k=$0.30 not expressible here
215
- },
216
- [Models.google.Veo_3_1]: {
217
- video_generation: 0.4, // 720p/1080p; 4k=$0.60 not expressible as single scalar
218
- },
219
- [Models.google.Veo_3_1_Fast]: {
220
- video_generation: 0.1, // 720p base; 1080p=$0.12, 4k=$0.30
223
+ [GoogleModels.Gemini_25_Flash_Live]: { input: 0.5, input_audio: 3.0, output: 2.0, output_audio: 12.0 },
224
+ [GoogleModels.Gemini_25_Flash_Native_Audio]: { input: 0.5, input_audio: 3.0, output: 2.0, output_audio: 12.0 },
225
+ [GoogleModels.Gemini_25_Flash_TTS]: { input: 0.5, output_audio: 10.0, output: 10.0 },
226
+ [GoogleModels.Gemini_25_Pro_TTS]: { input: 1.0, output_audio: 20.0, output: 20.0 },
227
+ [GoogleModels.Gemini_20_Flash_TTS]: { input: 0.1, output_audio: 4.0, output: 4.0 },
228
+ [GoogleModels.Gemini_20_Flash]: {
229
+ input: 0.1, input_audio: 0.7, output: 0.4,
230
+ context_caching: 0.025, context_caching_audio: 0.175, context_caching_storage: 1.0,
221
231
  },
232
+ [GoogleModels.Gemini_20_Flash_Preview_Image_Generation]: { input: 0.1, output: 0.4, image_generation: 0.039 },
233
+ [GoogleModels.Gemini_20_Flash_Live]: { input: 0.1, output: 0.4 },
234
+ [GoogleModels.Gemini_15_Flash]: { input: 0.075, output: 0.3, context_caching: 0.01875, deprecated: true },
235
+ [GoogleModels.Gemini_15_Flash_8B]:{ input: 0.0375, output: 0.15, context_caching: 0.01, deprecated: true },
236
+ [GoogleModels.Gemini_15_Pro]: { input: 1.25, output: 5.0, context_caching: 0.3125, deprecated: true },
237
+ [GoogleModels.Imagen_3]: { image_generation: 0.04 },
238
+ [GoogleModels.Imagen_4_Fast]: { image_generation: 0.02 },
239
+ [GoogleModels.Imagen_4_Ultra]: { image_generation: 0.06 },
240
+ [GoogleModels.Veo_2]: { video_generation: 0.35 },
241
+ [GoogleModels.Veo_3]: { video_generation: 0.4 },
242
+ [GoogleModels.Veo_3_Fast]: { video_generation: 0.1 },
243
+ [GoogleModels.Veo_3_1]: { video_generation: 0.4 },
244
+ [GoogleModels.Veo_3_1_Fast]: { video_generation: 0.1 },
245
+ [GoogleEmbeddingModels.Gemini_Embedding]: { input: 0 },
246
+ [GoogleEmbeddingModels.Gemini_Embedding_001]: { input: 0.15 },
247
+ };
222
248
 
223
- // ── Embeddings ────────────────────────────────────────────────────────────
224
- [EmbeddingModels.google.Gemini_Embedding]: {
225
- input: 0, // Free of charge
226
- },
227
- [EmbeddingModels.google.Gemini_Embedding_001]: {
228
- input: 0.15,
229
- },
249
+ // ─── Gemma pricing (free via Google AI) ──────────────────────────────────────
250
+ export const GemmaPricing: Record<string, GeminiModelPricing> = {
251
+ [GemmaModels.Gemma_3_27B_It]: { input: 0.0, output: 0.0 },
252
+ [GemmaModels.Gemma_3_12B_It]: { input: 0.0, output: 0.0 },
253
+ [GemmaModels.Gemma_3_4B_It]: { input: 0.0, output: 0.0 },
254
+ [GemmaModels.Gemma_3n_E2B_It]: { input: 0.0, output: 0.0 },
255
+ [GemmaModels.Gemma_3n_E4B_It]: { input: 0.0, output: 0.0 },
256
+ [GemmaModels.Gemma_4_26B_A4B_It]: { input: 0.0, output: 0.0 },
257
+ [GemmaModels.Gemma_4_31B_It]: { input: 0.0, output: 0.0 },
230
258
  };
231
259
 
232
- /**
233
- * @deprecated Use GeminiPricing instead.
234
- * Kept as alias for backwards compatibility.
235
- */
260
+ /** @deprecated Use GeminiPricing instead. */
236
261
  export const GeminiTextPricing = GeminiPricing;
262
+
263
+ // ─── Catalog ──────────────────────────────────────────────────────────────────
264
+ // Metadata (deprecated, deprecationDate, limitedAvailability, replacedBy) is
265
+ // read directly from the GeminiPricing entries — no need for separate groups.
266
+
267
+ export const GOOGLE_MODEL_CATALOG: ModelCatalogEntry[] = [
268
+ ...completions([...GoogleTextModels, ...GoogleLimitedModels, ...GoogleAllDeprecatedModels], "google", GeminiPricing),
269
+ ...liveApi(GoogleLiveApiModels, "google", GeminiPricing),
270
+ ...embeddings(GoogleEmbeddingModelsList, "google", GeminiPricing),
271
+ ...images(GoogleImageModels, "google", GeminiPricing),
272
+ ...videos(GoogleVideoModels, "google", GeminiPricing),
273
+ ...completions(GemmaTextModels, "google", GemmaPricing),
274
+ ...audios(GoogleTTSModels, "google", GeminiPricing),
275
+ ];
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Groq pricing (USD per 1M tokens)
3
+ * Source: https://groq.com/pricing
4
+ */
5
+ export const GroqTextPricing: Record<string, { input: number; output: number; cached_input?: number }> = {
6
+ // Llama 4
7
+ "meta-llama/llama-4-scout-17b-16e-instruct": { input: 0.11, output: 0.34 },
8
+ "meta-llama/llama-4-maverick-17b-128e-instruct": { input: 0.20, output: 0.60 },
9
+ // Llama Guard / Prompt Guard
10
+ "llama-guard-3-8b": { input: 0.20, output: 0.20 },
11
+ "meta-llama/llama-guard-4-12b": { input: 0.20, output: 0.20 },
12
+ "meta-llama/llama-prompt-guard-2-22m": { input: 0.03, output: 0.03 },
13
+ "meta-llama/llama-prompt-guard-2-86m": { input: 0.04, output: 0.04 },
14
+ // Llama 3.3
15
+ "llama-3.3-70b-versatile": { input: 0.59, output: 0.79 },
16
+ "llama-3.3-70b-specdec": { input: 0.59, output: 0.99 },
17
+ // Llama 3.1
18
+ "llama-3.1-8b-instant": { input: 0.05, output: 0.08 },
19
+ "llama3-70b-8192": { input: 0.59, output: 0.79 },
20
+ "llama3-8b-8192": { input: 0.05, output: 0.08 },
21
+ // DeepSeek
22
+ "deepseek-r1-distill-llama-70b": { input: 0.75, output: 0.99 },
23
+ // Gemma
24
+ "gemma2-9b-it": { input: 0.20, output: 0.20 },
25
+ // Mistral
26
+ "mistral-saba-24b": { input: 0.79, output: 0.79 },
27
+ // Compound
28
+ "compound-beta": { input: 0.0, output: 0.0 },
29
+ // Groq compound (newer aliases)
30
+ "groq/compound": { input: 0.0, output: 0.0 },
31
+ "groq/compound-mini": { input: 0.0, output: 0.0 },
32
+ "compound-beta-mini": { input: 0.0, output: 0.0 },
33
+ // Allam (free)
34
+ "allam-2-7b": { input: 0.0, output: 0.0 },
35
+ // Qwen
36
+ "qwen-qwq-32b": { input: 0.29, output: 0.39 },
37
+ "qwen-2.5-32b": { input: 0.79, output: 0.79 },
38
+ "qwen-2.5-coder-32b": { input: 0.79, output: 0.79 },
39
+ "qwen/qwen3-32b": { input: 0.29, output: 0.59 },
40
+ // MoonshotAI
41
+ "moonshotai/kimi-k2-instruct": { input: 1.0, output: 3.0 },
42
+ "moonshotai/kimi-k2-instruct-0905": { input: 1.0, output: 3.0 },
43
+ // OpenAI OSS models on Groq
44
+ "openai/gpt-oss-120b": { input: 0.15, output: 0.60 },
45
+ "openai/gpt-oss-20b": { input: 0.075, output: 0.30 },
46
+ "openai/gpt-oss-safeguard-20b": { input: 0.075, output: 0.30 },
47
+ // Canopy Labs Orpheus (TTS/speech)
48
+ "canopylabs/orpheus-arabic-saudi": { input: 40.0, output: 0.0 },
49
+ "canopylabs/orpheus-v1-english": { input: 0.0, output: 0.0 },
50
+ // Audio / TTS (free)
51
+ "whisper-large-v3": { input: 0.0, output: 0.0 },
52
+ "whisper-large-v3-turbo": { input: 0.0, output: 0.0 },
53
+ "distil-whisper-large-v3-en": { input: 0.0, output: 0.0 },
54
+ "playai-tts": { input: 0.0, output: 0.0 },
55
+ "playai-tts-arabic": { input: 0.0, output: 0.0 },
56
+ };
@@ -1,6 +1,43 @@
1
- export { OpenAiTextPricing } from "./openai";
2
- export { GeminiTextPricing } from "./google";
3
- export { AnthropicTextPricing } from "./anthropic";
4
- export { XaiTextPricing, XaiImagePricing, XaiVideoPricing } from "./xai";
5
- export { ALL_MODEL_CATALOG, OPENAI_MODEL_CATALOG, ANTHROPIC_MODEL_CATALOG, GOOGLE_MODEL_CATALOG, XAI_MODEL_CATALOG, USAGE_MARKUP_PERCENT } from "./models";
1
+ // ─── Per-provider model IDs, pricing, and catalogs ───────────────────────────
2
+ export {
3
+ OpenAiModels, OpenAiEmbeddingModels,
4
+ OpenAiTextPricing, OPENAI_MODEL_CATALOG,
5
+ OpenAiReasoningModels, OpenAiChatModels, OpenAiEmbeddingModelsList,
6
+ OpenAiResponsesOnlyModels, OpenAiImageModels, OpenAiVideoModels,
7
+ OpenAiTTSModels, OpenAiTranscriptionModels, OpenAiRealtimeModels,
8
+ } from "./openai";
9
+
10
+ export {
11
+ AnthropicModels,
12
+ AnthropicTextPricing, ANTHROPIC_MODEL_CATALOG,
13
+ } from "./anthropic";
14
+
15
+ export {
16
+ GoogleModels, GoogleEmbeddingModels,
17
+ GeminiPricing, GeminiTextPricing, GOOGLE_MODEL_CATALOG,
18
+ GoogleTextModels, GoogleImageModels, GoogleVideoModels,
19
+ GoogleTTSModels, GoogleEmbeddingModelsList,
20
+ } from "./google";
21
+
22
+ export {
23
+ XaiModels,
24
+ XaiTextPricing, XaiImagePricing, XaiVideoPricing, XAI_MODEL_CATALOG,
25
+ XaiTextModels, XaiImageModels, XaiVideoModels,
26
+ } from "./xai";
27
+
28
+ // ─── Other provider pricing ───────────────────────────────────────────────────
29
+ export { GroqTextPricing } from "./groq";
30
+ export { DeepSeekTextPricing } from "./deepseek";
31
+ export { CerebrasTextPricing } from "./cerebras";
32
+ export { MistralTextPricing } from "./mistral";
33
+ export { NvidiaTextPricing, NvidiaImagePricing } from "./nvidia";
34
+ export { GitHubModelsTextPricing } from "./github";
35
+ export { OpenRouterTextPricing } from "./openrouter";
36
+ export { LlamaTextPricing } from "./llama";
37
+ export { CopilotTextPricing, CopilotModelMultipliers } from "./copilot";
38
+ export { FireworksTextPricing } from "./fireworks";
39
+
40
+ // ─── Combined catalog ─────────────────────────────────────────────────────────
41
+ export { ALL_MODEL_CATALOG, USAGE_MARKUP_PERCENT } from "./models";
6
42
  export type { ModelCatalogEntry, ModelType, ModelPricing as CatalogModelPricing } from "./types";
43
+ export { completions, embeddings, images, videos, audios, transactions, liveApi } from "./types";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Meta Llama API pricing (USD per 1M tokens)
3
+ * Source: https://llama.developer.meta.com/docs/
4
+ * Free models available directly from Meta.
5
+ */
6
+ export const LlamaTextPricing: Record<string, { input: number; output: number }> = {
7
+ // Free models
8
+ "llama-3.3-70b-instruct": { input: 0.0, output: 0.0 },
9
+ "llama-3.3-8b-instruct": { input: 0.0, output: 0.0 },
10
+ "llama-4-scout-17b-16e-instruct": { input: 0.0, output: 0.0 },
11
+ "llama-4-maverick-17b-128e-instruct": { input: 0.0, output: 0.0 },
12
+ // Cerebras-hosted Llama 4 (free)
13
+ "cerebras-llama-4-maverick-17b-128e-instruct": { input: 0.0, output: 0.0 },
14
+ "cerebras-llama-4-scout-17b-16e-instruct": { input: 0.0, output: 0.0 },
15
+ // Groq-hosted Llama 4 (free)
16
+ "groq-llama-4-maverick-17b-128e-instruct": { input: 0.0, output: 0.0 },
17
+ "groq-llama-4-scout-17b-16e-instruct": { input: 0.0, output: 0.0 },
18
+ };
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Mistral AI pricing (USD per 1M tokens)
3
+ * Source: https://mistral.ai/technology/#pricing
4
+ */
5
+ export const MistralTextPricing: Record<string, { input: number; output: number; cached_input?: number }> = {
6
+ // Mistral Large (latest = 2512 as of 2026-04, price reduced from $2/$6)
7
+ // Source: openrouter.ai/api/v1/models (mistral-large-2512 = $0.5/$1.5)
8
+ "mistral-large-latest": { input: 0.5, output: 1.5 },
9
+ "mistral-large-2512": { input: 0.5, output: 1.5 },
10
+ "mistral-large-2411": { input: 2.0, output: 6.0 },
11
+ // Mistral Small (latest = 2603 as of 2026-04, price updated)
12
+ // Source: openrouter.ai/api/v1/models (mistral-small-2603 = $0.15/$0.60)
13
+ "mistral-small-latest": { input: 0.15, output: 0.6 },
14
+ "mistral-small-2603": { input: 0.15, output: 0.6 },
15
+ "mistral-small-2501": { input: 0.1, output: 0.3 },
16
+ // Mistral Medium
17
+ "mistral-medium-latest": { input: 0.4, output: 2.0 },
18
+ // Codestral (code model)
19
+ "codestral-latest": { input: 0.3, output: 0.9 },
20
+ "codestral-2501": { input: 0.3, output: 0.9 },
21
+ // Devstral (free coding assistant)
22
+ "devstral-small-latest": { input: 0.0, output: 0.0 },
23
+ "labs-devstral-small-2512": { input: 0.0, output: 0.0 },
24
+ // Pixtral (multimodal)
25
+ "pixtral-large-latest": { input: 2.0, output: 6.0 },
26
+ "pixtral-12b-2409": { input: 0.15, output: 0.15 },
27
+ // Ministral
28
+ "ministral-3b-latest": { input: 0.04, output: 0.04 },
29
+ "ministral-8b-latest": { input: 0.1, output: 0.1 },
30
+ // Mistral NeMo
31
+ "open-mistral-nemo": { input: 0.15, output: 0.15 },
32
+ // Embeddings
33
+ "mistral-embed": { input: 0.1, output: 0.0 },
34
+ };