@just-every/ensemble 0.2.87 → 0.2.88

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 (215) hide show
  1. package/dist/cjs/config/tool_execution.cjs +47 -0
  2. package/dist/cjs/config/tool_execution.d.ts +12 -0
  3. package/dist/cjs/config/tool_execution.d.ts.map +1 -0
  4. package/dist/cjs/config/tool_execution.js.map +1 -0
  5. package/dist/cjs/core/ensemble_embed.cjs +35 -0
  6. package/dist/cjs/core/ensemble_embed.d.ts +3 -0
  7. package/dist/cjs/core/ensemble_embed.d.ts.map +1 -0
  8. package/dist/cjs/core/ensemble_embed.js.map +1 -0
  9. package/dist/cjs/core/ensemble_image.cjs +13 -0
  10. package/dist/cjs/core/ensemble_image.d.ts +3 -0
  11. package/dist/cjs/core/ensemble_image.d.ts.map +1 -0
  12. package/dist/cjs/core/ensemble_image.js.map +1 -0
  13. package/dist/cjs/core/ensemble_listen.cjs +162 -0
  14. package/dist/cjs/core/ensemble_listen.d.ts +5 -0
  15. package/dist/cjs/core/ensemble_listen.d.ts.map +1 -0
  16. package/dist/cjs/core/ensemble_listen.js.map +1 -0
  17. package/dist/cjs/core/ensemble_live.cjs +387 -0
  18. package/dist/cjs/core/ensemble_live.d.ts +14 -0
  19. package/dist/cjs/core/ensemble_live.d.ts.map +1 -0
  20. package/dist/cjs/core/ensemble_live.js.map +1 -0
  21. package/dist/cjs/core/ensemble_request.cjs +409 -0
  22. package/dist/cjs/core/ensemble_request.d.ts +4 -0
  23. package/dist/cjs/core/ensemble_request.d.ts.map +1 -0
  24. package/dist/cjs/core/ensemble_request.js.map +1 -0
  25. package/dist/cjs/core/ensemble_voice.cjs +284 -0
  26. package/dist/cjs/core/ensemble_voice.d.ts +4 -0
  27. package/dist/cjs/core/ensemble_voice.d.ts.map +1 -0
  28. package/dist/cjs/core/ensemble_voice.js.map +1 -0
  29. package/dist/cjs/data/model_data.cjs +1460 -0
  30. package/dist/cjs/data/model_data.d.ts +71 -0
  31. package/dist/cjs/data/model_data.d.ts.map +1 -0
  32. package/dist/cjs/data/model_data.js.map +1 -0
  33. package/dist/cjs/index.cjs +139 -0
  34. package/dist/cjs/index.d.ts +37 -0
  35. package/dist/cjs/index.d.ts.map +1 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/model_providers/base_provider.cjs +46 -0
  38. package/dist/cjs/model_providers/base_provider.d.ts +13 -0
  39. package/dist/cjs/model_providers/base_provider.d.ts.map +1 -0
  40. package/dist/cjs/model_providers/base_provider.js.map +1 -0
  41. package/dist/cjs/model_providers/claude.cjs +782 -0
  42. package/dist/cjs/model_providers/claude.d.ts +12 -0
  43. package/dist/cjs/model_providers/claude.d.ts.map +1 -0
  44. package/dist/cjs/model_providers/claude.js.map +1 -0
  45. package/dist/cjs/model_providers/deepseek.cjs +129 -0
  46. package/dist/cjs/model_providers/deepseek.d.ts +8 -0
  47. package/dist/cjs/model_providers/deepseek.d.ts.map +1 -0
  48. package/dist/cjs/model_providers/deepseek.js.map +1 -0
  49. package/dist/cjs/model_providers/elevenlabs.cjs +140 -0
  50. package/dist/cjs/model_providers/elevenlabs.d.ts +37 -0
  51. package/dist/cjs/model_providers/elevenlabs.d.ts.map +1 -0
  52. package/dist/cjs/model_providers/elevenlabs.js.map +1 -0
  53. package/dist/cjs/model_providers/gemini.cjs +1654 -0
  54. package/dist/cjs/model_providers/gemini.d.ts +22 -0
  55. package/dist/cjs/model_providers/gemini.d.ts.map +1 -0
  56. package/dist/cjs/model_providers/gemini.js.map +1 -0
  57. package/dist/cjs/model_providers/grok.cjs +25 -0
  58. package/dist/cjs/model_providers/grok.d.ts +8 -0
  59. package/dist/cjs/model_providers/grok.d.ts.map +1 -0
  60. package/dist/cjs/model_providers/grok.js.map +1 -0
  61. package/dist/cjs/model_providers/model_provider.cjs +296 -0
  62. package/dist/cjs/model_providers/model_provider.d.ts +10 -0
  63. package/dist/cjs/model_providers/model_provider.d.ts.map +1 -0
  64. package/dist/cjs/model_providers/model_provider.js.map +1 -0
  65. package/dist/cjs/model_providers/openai.cjs +1117 -0
  66. package/dist/cjs/model_providers/openai.d.ts +19 -0
  67. package/dist/cjs/model_providers/openai.d.ts.map +1 -0
  68. package/dist/cjs/model_providers/openai.js.map +1 -0
  69. package/dist/cjs/model_providers/openai_chat.cjs +787 -0
  70. package/dist/cjs/model_providers/openai_chat.d.ts +20 -0
  71. package/dist/cjs/model_providers/openai_chat.d.ts.map +1 -0
  72. package/dist/cjs/model_providers/openai_chat.js.map +1 -0
  73. package/dist/cjs/model_providers/openrouter.cjs +22 -0
  74. package/dist/cjs/model_providers/openrouter.d.ts +6 -0
  75. package/dist/cjs/model_providers/openrouter.d.ts.map +1 -0
  76. package/dist/cjs/model_providers/openrouter.js.map +1 -0
  77. package/dist/cjs/model_providers/test_provider.cjs +236 -0
  78. package/dist/cjs/model_providers/test_provider.d.ts +29 -0
  79. package/dist/cjs/model_providers/test_provider.d.ts.map +1 -0
  80. package/dist/cjs/model_providers/test_provider.js.map +1 -0
  81. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  82. package/dist/cjs/types/api_types.cjs +3 -0
  83. package/dist/cjs/types/api_types.d.ts +249 -0
  84. package/dist/cjs/types/api_types.d.ts.map +1 -0
  85. package/dist/cjs/types/api_types.js.map +1 -0
  86. package/dist/cjs/types/errors.cjs +76 -0
  87. package/dist/cjs/types/errors.d.ts +34 -0
  88. package/dist/cjs/types/errors.d.ts.map +1 -0
  89. package/dist/cjs/types/errors.js.map +1 -0
  90. package/dist/cjs/types/types.cjs +3 -0
  91. package/dist/cjs/types/types.d.ts +638 -0
  92. package/dist/cjs/types/types.d.ts.map +1 -0
  93. package/dist/cjs/types/types.js.map +1 -0
  94. package/dist/cjs/utils/agent.cjs +384 -0
  95. package/dist/cjs/utils/agent.d.ts +48 -0
  96. package/dist/cjs/utils/agent.d.ts.map +1 -0
  97. package/dist/cjs/utils/agent.js.map +1 -0
  98. package/dist/cjs/utils/audio_stream_player.cjs +342 -0
  99. package/dist/cjs/utils/audio_stream_player.d.ts +37 -0
  100. package/dist/cjs/utils/audio_stream_player.d.ts.map +1 -0
  101. package/dist/cjs/utils/audio_stream_player.js.map +1 -0
  102. package/dist/cjs/utils/citation_tracker.cjs +25 -0
  103. package/dist/cjs/utils/citation_tracker.d.ts +12 -0
  104. package/dist/cjs/utils/citation_tracker.d.ts.map +1 -0
  105. package/dist/cjs/utils/citation_tracker.js.map +1 -0
  106. package/dist/cjs/utils/config_manager.cjs +105 -0
  107. package/dist/cjs/utils/config_manager.d.ts +31 -0
  108. package/dist/cjs/utils/config_manager.d.ts.map +1 -0
  109. package/dist/cjs/utils/config_manager.js.map +1 -0
  110. package/dist/cjs/utils/cost_tracker.cjs +226 -0
  111. package/dist/cjs/utils/cost_tracker.d.ts +33 -0
  112. package/dist/cjs/utils/cost_tracker.d.ts.map +1 -0
  113. package/dist/cjs/utils/cost_tracker.js.map +1 -0
  114. package/dist/cjs/utils/create_tool_function.cjs +182 -0
  115. package/dist/cjs/utils/create_tool_function.d.ts +3 -0
  116. package/dist/cjs/utils/create_tool_function.d.ts.map +1 -0
  117. package/dist/cjs/utils/create_tool_function.js.map +1 -0
  118. package/dist/cjs/utils/delta_buffer.cjs +65 -0
  119. package/dist/cjs/utils/delta_buffer.d.ts +14 -0
  120. package/dist/cjs/utils/delta_buffer.d.ts.map +1 -0
  121. package/dist/cjs/utils/delta_buffer.js.map +1 -0
  122. package/dist/cjs/utils/ensemble_result.cjs +167 -0
  123. package/dist/cjs/utils/ensemble_result.d.ts +33 -0
  124. package/dist/cjs/utils/ensemble_result.d.ts.map +1 -0
  125. package/dist/cjs/utils/ensemble_result.js.map +1 -0
  126. package/dist/cjs/utils/event_controller.cjs +59 -0
  127. package/dist/cjs/utils/event_controller.d.ts +13 -0
  128. package/dist/cjs/utils/event_controller.d.ts.map +1 -0
  129. package/dist/cjs/utils/event_controller.js.map +1 -0
  130. package/dist/cjs/utils/external_models.cjs +42 -0
  131. package/dist/cjs/utils/external_models.d.ts +9 -0
  132. package/dist/cjs/utils/external_models.d.ts.map +1 -0
  133. package/dist/cjs/utils/external_models.js.map +1 -0
  134. package/dist/cjs/utils/image_to_text.cjs +58 -0
  135. package/dist/cjs/utils/image_to_text.d.ts +3 -0
  136. package/dist/cjs/utils/image_to_text.d.ts.map +1 -0
  137. package/dist/cjs/utils/image_to_text.js.map +1 -0
  138. package/dist/cjs/utils/image_utils.cjs +168 -0
  139. package/dist/cjs/utils/image_utils.d.ts +18 -0
  140. package/dist/cjs/utils/image_utils.d.ts.map +1 -0
  141. package/dist/cjs/utils/image_utils.js.map +1 -0
  142. package/dist/cjs/utils/image_validation.cjs +31 -0
  143. package/dist/cjs/utils/image_validation.d.ts +3 -0
  144. package/dist/cjs/utils/image_validation.d.ts.map +1 -0
  145. package/dist/cjs/utils/image_validation.js.map +1 -0
  146. package/dist/cjs/utils/llm_logger.cjs +31 -0
  147. package/dist/cjs/utils/llm_logger.d.ts +8 -0
  148. package/dist/cjs/utils/llm_logger.d.ts.map +1 -0
  149. package/dist/cjs/utils/llm_logger.js.map +1 -0
  150. package/dist/cjs/utils/message_history.cjs +560 -0
  151. package/dist/cjs/utils/message_history.d.ts +65 -0
  152. package/dist/cjs/utils/message_history.d.ts.map +1 -0
  153. package/dist/cjs/utils/message_history.js.map +1 -0
  154. package/dist/cjs/utils/model_class_config.cjs +105 -0
  155. package/dist/cjs/utils/model_class_config.d.ts +12 -0
  156. package/dist/cjs/utils/model_class_config.d.ts.map +1 -0
  157. package/dist/cjs/utils/model_class_config.js.map +1 -0
  158. package/dist/cjs/utils/pause_controller.cjs +90 -0
  159. package/dist/cjs/utils/pause_controller.d.ts +14 -0
  160. package/dist/cjs/utils/pause_controller.d.ts.map +1 -0
  161. package/dist/cjs/utils/pause_controller.js.map +1 -0
  162. package/dist/cjs/utils/quota_tracker.cjs +311 -0
  163. package/dist/cjs/utils/quota_tracker.d.ts +22 -0
  164. package/dist/cjs/utils/quota_tracker.d.ts.map +1 -0
  165. package/dist/cjs/utils/quota_tracker.js.map +1 -0
  166. package/dist/cjs/utils/retry_handler.cjs +131 -0
  167. package/dist/cjs/utils/retry_handler.d.ts +15 -0
  168. package/dist/cjs/utils/retry_handler.d.ts.map +1 -0
  169. package/dist/cjs/utils/retry_handler.js.map +1 -0
  170. package/dist/cjs/utils/running_tool_tracker.cjs +133 -0
  171. package/dist/cjs/utils/running_tool_tracker.d.ts +42 -0
  172. package/dist/cjs/utils/running_tool_tracker.d.ts.map +1 -0
  173. package/dist/cjs/utils/running_tool_tracker.js.map +1 -0
  174. package/dist/cjs/utils/sequential_queue.cjs +73 -0
  175. package/dist/cjs/utils/sequential_queue.d.ts +13 -0
  176. package/dist/cjs/utils/sequential_queue.d.ts.map +1 -0
  177. package/dist/cjs/utils/sequential_queue.js.map +1 -0
  178. package/dist/cjs/utils/stream_handler.cjs +73 -0
  179. package/dist/cjs/utils/stream_handler.d.ts +16 -0
  180. package/dist/cjs/utils/stream_handler.d.ts.map +1 -0
  181. package/dist/cjs/utils/stream_handler.js.map +1 -0
  182. package/dist/cjs/utils/summary_utils.cjs +211 -0
  183. package/dist/cjs/utils/summary_utils.d.ts +7 -0
  184. package/dist/cjs/utils/summary_utils.d.ts.map +1 -0
  185. package/dist/cjs/utils/summary_utils.js.map +1 -0
  186. package/dist/cjs/utils/test_utils.cjs +212 -0
  187. package/dist/cjs/utils/test_utils.d.ts +58 -0
  188. package/dist/cjs/utils/test_utils.d.ts.map +1 -0
  189. package/dist/cjs/utils/test_utils.js.map +1 -0
  190. package/dist/cjs/utils/tool_execution_manager.cjs +139 -0
  191. package/dist/cjs/utils/tool_execution_manager.d.ts +7 -0
  192. package/dist/cjs/utils/tool_execution_manager.d.ts.map +1 -0
  193. package/dist/cjs/utils/tool_execution_manager.js.map +1 -0
  194. package/dist/cjs/utils/tool_parameter_utils.cjs +168 -0
  195. package/dist/cjs/utils/tool_parameter_utils.d.ts +5 -0
  196. package/dist/cjs/utils/tool_parameter_utils.d.ts.map +1 -0
  197. package/dist/cjs/utils/tool_parameter_utils.js.map +1 -0
  198. package/dist/cjs/utils/tool_result_processor.cjs +363 -0
  199. package/dist/cjs/utils/tool_result_processor.d.ts +11 -0
  200. package/dist/cjs/utils/tool_result_processor.d.ts.map +1 -0
  201. package/dist/cjs/utils/tool_result_processor.js.map +1 -0
  202. package/dist/cjs/utils/verification.cjs +59 -0
  203. package/dist/cjs/utils/verification.d.ts +7 -0
  204. package/dist/cjs/utils/verification.d.ts.map +1 -0
  205. package/dist/cjs/utils/verification.js.map +1 -0
  206. package/dist/tsconfig.tsbuildinfo +1 -1
  207. package/dist/utils/audio_stream_player.d.ts +2 -0
  208. package/dist/utils/audio_stream_player.d.ts.map +1 -1
  209. package/dist/utils/audio_stream_player.js +83 -1
  210. package/dist/utils/audio_stream_player.js.map +1 -1
  211. package/dist/utils/cost_tracker.d.ts +7 -0
  212. package/dist/utils/cost_tracker.d.ts.map +1 -1
  213. package/dist/utils/cost_tracker.js +29 -0
  214. package/dist/utils/cost_tracker.js.map +1 -1
  215. package/package.json +18 -3
@@ -0,0 +1,1460 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MODEL_REGISTRY = exports.EMBEDDING_DIMENSIONS = exports.MODEL_CLASSES = void 0;
4
+ exports.findModel = findModel;
5
+ const external_models_js_1 = require("../utils/external_models.cjs");
6
+ exports.MODEL_CLASSES = {
7
+ standard: {
8
+ models: [
9
+ 'gpt-4.1',
10
+ 'gemini-2.5-flash-preview-05-20-low',
11
+ 'claude-3-5-haiku-latest',
12
+ 'grok-3-mini-fast',
13
+ 'deepseek-chat',
14
+ ],
15
+ random: true,
16
+ },
17
+ mini: {
18
+ models: [
19
+ 'gpt-4.1-nano',
20
+ 'claude-3-5-haiku-latest',
21
+ 'gemini-2.0-flash-lite',
22
+ 'grok-3-mini',
23
+ 'meta-llama/llama-4-scout',
24
+ 'mistral/ministral-8b',
25
+ ],
26
+ random: true,
27
+ },
28
+ reasoning: {
29
+ models: [
30
+ 'gemini-2.5-pro-preview-06-05',
31
+ 'gemini-2.5-flash-preview-05-20-max',
32
+ 'o4-mini-high',
33
+ 'o3-pro',
34
+ 'o3-high',
35
+ 'claude-opus-4-20250514-max',
36
+ 'claude-sonnet-4-20250514-max',
37
+ 'claude-3-7-sonnet-latest-max',
38
+ 'mistralai/magistral-medium-2506:thinking',
39
+ ],
40
+ random: true,
41
+ },
42
+ reasoning_mini: {
43
+ models: [
44
+ 'gemini-2.5-flash-preview-05-20-medium',
45
+ 'grok-3-mini-fast',
46
+ 'o3-low',
47
+ ],
48
+ random: true,
49
+ },
50
+ monologue: {
51
+ models: [
52
+ 'gemini-2.5-pro-preview-06-05',
53
+ 'gemini-2.5-flash-preview-05-20-medium',
54
+ 'o4-mini-low',
55
+ 'o3-medium',
56
+ 'claude-sonnet-4-20250514-medium',
57
+ ],
58
+ random: true,
59
+ },
60
+ metacognition: {
61
+ models: [
62
+ 'gemini-2.5-pro-preview-06-05',
63
+ 'gemini-2.5-flash-preview-05-20-high',
64
+ 'o3-high',
65
+ 'claude-sonnet-4-20250514-medium',
66
+ 'grok-3-mini-fast',
67
+ ],
68
+ random: true,
69
+ },
70
+ code: {
71
+ models: [
72
+ 'codex-mini-latest',
73
+ 'claude-opus-4-20250514-medium',
74
+ 'claude-sonnet-4-20250514-max',
75
+ 'o3-high',
76
+ 'gemini-2.5-flash-preview-05-20-medium',
77
+ ],
78
+ random: true,
79
+ },
80
+ writing: {
81
+ models: [
82
+ 'gemini-2.5-flash-preview-05-20-low',
83
+ 'gpt-4.1-mini',
84
+ ],
85
+ random: true,
86
+ },
87
+ summary: {
88
+ models: [
89
+ 'gemini-2.5-flash-preview-05-20-low',
90
+ 'gpt-4.1-mini',
91
+ ],
92
+ random: true,
93
+ },
94
+ vision: {
95
+ models: [
96
+ 'o4-mini-medium',
97
+ 'o3-medium',
98
+ 'gemini-2.5-flash-preview-05-20-max',
99
+ 'gemini-2.5-pro-preview-06-05',
100
+ 'claude-opus-4-20250514-low',
101
+ 'claude-sonnet-4-20250514-max',
102
+ ],
103
+ random: true,
104
+ },
105
+ vision_mini: {
106
+ models: [
107
+ 'gpt-4.1-mini',
108
+ 'gemini-2.5-flash-preview-05-20-low',
109
+ 'claude-sonnet-4-20250514-low',
110
+ ],
111
+ random: true,
112
+ },
113
+ search: {
114
+ models: [
115
+ 'gpt-4.1',
116
+ 'deepseek-reasoner',
117
+ 'gemini-2.5-flash-preview-05-20',
118
+ 'perplexity/sonar-deep-research',
119
+ ],
120
+ random: true,
121
+ },
122
+ image_generation: {
123
+ models: [
124
+ 'gpt-image-1',
125
+ 'imagen-3.0-generate-002',
126
+ ],
127
+ },
128
+ embedding: {
129
+ models: [
130
+ 'gemini-embedding-exp-03-07',
131
+ 'text-embedding-3-small',
132
+ ],
133
+ description: 'Vector embedding models for semantic search and RAG',
134
+ },
135
+ voice: {
136
+ models: [
137
+ 'gpt-4o-mini-tts',
138
+ 'tts-1',
139
+ 'tts-1-hd',
140
+ 'eleven_multilingual_v2',
141
+ 'eleven_turbo_v2_5',
142
+ 'eleven_flash_v2_5',
143
+ 'gemini-2.5-flash-preview-tts',
144
+ 'gemini-2.5-pro-preview-tts',
145
+ ],
146
+ description: 'Text-to-Speech models for voice generation',
147
+ },
148
+ transcription: {
149
+ models: [
150
+ 'gemini-2.0-flash-live-001',
151
+ ],
152
+ description: 'Speech-to-Text models for audio transcription with real-time streaming',
153
+ },
154
+ };
155
+ exports.EMBEDDING_DIMENSIONS = {
156
+ 'text-embedding-3-small': 1536,
157
+ 'text-embedding-3-large': 3072,
158
+ 'gemini-embedding-exp-03-07': 768,
159
+ };
160
+ exports.MODEL_REGISTRY = [
161
+ {
162
+ id: 'text-embedding-3-small',
163
+ provider: 'openai',
164
+ cost: {
165
+ input_per_million: 0.02,
166
+ output_per_million: 0,
167
+ },
168
+ features: {
169
+ input_modality: ['text'],
170
+ output_modality: ['embedding'],
171
+ },
172
+ embedding: true,
173
+ dim: 1536,
174
+ class: 'embedding',
175
+ description: "OpenAI's small embedding model, good balance of performance and cost",
176
+ },
177
+ {
178
+ id: 'text-embedding-3-large',
179
+ provider: 'openai',
180
+ cost: {
181
+ input_per_million: 0.13,
182
+ output_per_million: 0,
183
+ },
184
+ features: {
185
+ input_modality: ['text'],
186
+ output_modality: ['embedding'],
187
+ },
188
+ embedding: true,
189
+ dim: 3072,
190
+ class: 'embedding',
191
+ description: "OpenAI's large embedding model, good balance of performance and cost",
192
+ },
193
+ {
194
+ id: 'gemini-embedding-exp-03-07',
195
+ provider: 'google',
196
+ cost: {
197
+ input_per_million: 0,
198
+ output_per_million: 0,
199
+ },
200
+ features: {
201
+ input_modality: ['text'],
202
+ output_modality: ['embedding'],
203
+ },
204
+ embedding: true,
205
+ dim: 768,
206
+ class: 'embedding',
207
+ description: "Google's experimental embedding model optimized for semantic similarity",
208
+ },
209
+ {
210
+ id: 'meta-llama/llama-4-maverick',
211
+ provider: 'openrouter',
212
+ cost: {
213
+ input_per_million: 0.18,
214
+ output_per_million: 0.6,
215
+ },
216
+ features: {
217
+ context_length: 1048576,
218
+ input_modality: ['text', 'image'],
219
+ output_modality: ['text'],
220
+ tool_use: true,
221
+ streaming: true,
222
+ json_output: true,
223
+ },
224
+ class: 'standard',
225
+ score: 78,
226
+ scores: {
227
+ monologue: 72,
228
+ code: 64,
229
+ reasoning: 56,
230
+ },
231
+ description: 'Llama 4 Maverick 17B Instruct (128E) is a high-capacity multimodal language model from Meta, built on a mixture-of-experts (MoE) architecture with 128 experts and 17 billion active parameters per forward pass (400B total).',
232
+ },
233
+ {
234
+ id: 'meta-llama/llama-4-scout',
235
+ provider: 'openrouter',
236
+ cost: {
237
+ input_per_million: 0.08,
238
+ output_per_million: 0.3,
239
+ },
240
+ features: {
241
+ context_length: 327680,
242
+ input_modality: ['text'],
243
+ output_modality: ['text'],
244
+ tool_use: true,
245
+ streaming: true,
246
+ json_output: true,
247
+ },
248
+ class: 'mini',
249
+ score: 65,
250
+ description: 'Llama 4 Scout 17B Instruct (16E) is a mixture-of-experts (MoE) language model developed by Meta, activating 17 billion parameters out of a total of 109B.',
251
+ },
252
+ {
253
+ id: 'qwen/qwen3-235b-a22b',
254
+ provider: 'openrouter',
255
+ cost: {
256
+ input_per_million: 0.1,
257
+ output_per_million: 0.1,
258
+ },
259
+ features: {
260
+ context_length: 40960,
261
+ input_modality: ['text'],
262
+ output_modality: ['text'],
263
+ tool_use: true,
264
+ streaming: true,
265
+ json_output: true,
266
+ },
267
+ class: 'reasoning',
268
+ score: 83,
269
+ scores: {
270
+ monologue: 73,
271
+ code: 62,
272
+ reasoning: 57,
273
+ },
274
+ description: 'Qwen3-235B-A22B is a 235B parameter mixture-of-experts (MoE) model developed by Qwen, activating 22B parameters per forward pass.',
275
+ },
276
+ {
277
+ id: 'qwen/qwen-max',
278
+ provider: 'openrouter',
279
+ cost: {
280
+ input_per_million: 1.6,
281
+ output_per_million: 6.4,
282
+ },
283
+ features: {
284
+ context_length: 131072,
285
+ input_modality: ['text', 'image'],
286
+ output_modality: ['text'],
287
+ tool_use: true,
288
+ streaming: true,
289
+ json_output: true,
290
+ },
291
+ class: 'reasoning',
292
+ score: 80,
293
+ scores: {
294
+ monologue: 73,
295
+ code: 61,
296
+ reasoning: 57,
297
+ },
298
+ description: 'Qwen-Max, based on Qwen2.5, provides the best inference performance among Qwen models, especially for complex multi-step tasks.',
299
+ },
300
+ {
301
+ id: 'mistral/ministral-8b',
302
+ provider: 'openrouter',
303
+ cost: {
304
+ input_per_million: 0.1,
305
+ output_per_million: 0.1,
306
+ },
307
+ features: {
308
+ context_length: 131072,
309
+ input_modality: ['text'],
310
+ output_modality: ['text'],
311
+ tool_use: true,
312
+ streaming: true,
313
+ json_output: true,
314
+ },
315
+ class: 'standard',
316
+ score: 55,
317
+ description: 'Ministral 8B is a state-of-the-art language model optimized for on-device and edge computing. Designed for efficiency in knowledge-intensive tasks, commonsense reasoning, and function-calling.',
318
+ },
319
+ {
320
+ id: 'grok-3',
321
+ aliases: ['grok-3-2025-02-11'],
322
+ provider: 'xai',
323
+ cost: {
324
+ input_per_million: 3.0,
325
+ output_per_million: 15.0,
326
+ },
327
+ features: {
328
+ context_length: 131_072,
329
+ input_modality: ['text', 'image'],
330
+ output_modality: ['text'],
331
+ tool_use: true,
332
+ streaming: true,
333
+ json_output: true,
334
+ },
335
+ class: 'standard',
336
+ score: 78,
337
+ scores: {
338
+ monologue: 80,
339
+ code: 70,
340
+ reasoning: 65,
341
+ },
342
+ description: 'Flagship Grok-3 model for complex reasoning and generation',
343
+ },
344
+ {
345
+ id: 'grok-3-fast',
346
+ aliases: ['grok-3-fast-2025-04-11'],
347
+ provider: 'xai',
348
+ cost: {
349
+ input_per_million: 5.0,
350
+ output_per_million: 25.0,
351
+ },
352
+ features: {
353
+ context_length: 131_072,
354
+ input_modality: ['text', 'image'],
355
+ output_modality: ['text'],
356
+ tool_use: true,
357
+ streaming: true,
358
+ json_output: true,
359
+ },
360
+ class: 'standard',
361
+ score: 78,
362
+ scores: {
363
+ monologue: 80,
364
+ code: 70,
365
+ reasoning: 65,
366
+ },
367
+ description: 'Same Grok-3 weights on premium infra for lower latency',
368
+ },
369
+ {
370
+ id: 'grok-3-mini',
371
+ aliases: ['grok-3-mini-2025-04-11'],
372
+ provider: 'xai',
373
+ cost: {
374
+ input_per_million: 0.3,
375
+ output_per_million: 0.5,
376
+ },
377
+ features: {
378
+ context_length: 131_072,
379
+ input_modality: ['text', 'image'],
380
+ output_modality: ['text'],
381
+ tool_use: true,
382
+ streaming: true,
383
+ json_output: true,
384
+ },
385
+ class: 'mini',
386
+ score: 60,
387
+ scores: {
388
+ monologue: 62,
389
+ code: 55,
390
+ reasoning: 50,
391
+ },
392
+ description: 'Lightweight Grok-3 Mini—budget model for logic tasks',
393
+ },
394
+ {
395
+ id: 'grok-3-mini-fast',
396
+ aliases: ['grok-3-mini-fast-2025-04-11'],
397
+ provider: 'xai',
398
+ cost: {
399
+ input_per_million: 0.6,
400
+ output_per_million: 4.0,
401
+ },
402
+ features: {
403
+ context_length: 131_072,
404
+ input_modality: ['text', 'image'],
405
+ output_modality: ['text'],
406
+ tool_use: true,
407
+ streaming: true,
408
+ json_output: true,
409
+ },
410
+ class: 'mini',
411
+ score: 60,
412
+ scores: {
413
+ monologue: 62,
414
+ code: 55,
415
+ reasoning: 50,
416
+ },
417
+ description: 'Grok-3 Mini on accelerated hardware for latency-critical use',
418
+ },
419
+ {
420
+ id: 'gpt-4.1',
421
+ aliases: ['gpt-4.1-2025-04-14'],
422
+ provider: 'openai',
423
+ cost: {
424
+ input_per_million: 2.0,
425
+ cached_input_per_million: 0.5,
426
+ output_per_million: 8.0,
427
+ },
428
+ features: {
429
+ context_length: 1048576,
430
+ input_modality: ['text', 'image'],
431
+ output_modality: ['text'],
432
+ tool_use: true,
433
+ streaming: true,
434
+ json_output: true,
435
+ },
436
+ class: 'standard',
437
+ score: 82,
438
+ scores: {
439
+ monologue: 86,
440
+ code: 83,
441
+ reasoning: 71,
442
+ },
443
+ description: 'Flagship GPT model for complex tasks',
444
+ },
445
+ {
446
+ id: 'gpt-4.1-mini',
447
+ aliases: ['gpt-4.1-mini-2025-04-14'],
448
+ provider: 'openai',
449
+ cost: {
450
+ input_per_million: 0.4,
451
+ cached_input_per_million: 0.1,
452
+ output_per_million: 1.6,
453
+ },
454
+ features: {
455
+ context_length: 1048576,
456
+ input_modality: ['text', 'image'],
457
+ output_modality: ['text'],
458
+ tool_use: true,
459
+ streaming: true,
460
+ json_output: true,
461
+ },
462
+ class: 'mini',
463
+ score: 75,
464
+ description: 'Balanced for intelligence, speed, and cost',
465
+ },
466
+ {
467
+ id: 'gpt-4.1-nano',
468
+ aliases: ['gpt-4.1-nano-2025-04-14'],
469
+ provider: 'openai',
470
+ cost: {
471
+ input_per_million: 0.1,
472
+ cached_input_per_million: 0.025,
473
+ output_per_million: 0.4,
474
+ },
475
+ features: {
476
+ context_length: 1048576,
477
+ input_modality: ['text', 'image'],
478
+ output_modality: ['text'],
479
+ tool_use: true,
480
+ streaming: true,
481
+ json_output: true,
482
+ },
483
+ class: 'mini',
484
+ score: 60,
485
+ description: 'Fastest, most cost-effective GPT-4.1 model',
486
+ },
487
+ {
488
+ id: 'gpt-4.5-preview',
489
+ aliases: ['gpt-4.5-preview-2025-02-27'],
490
+ provider: 'openai',
491
+ cost: {
492
+ input_per_million: 75.0,
493
+ cached_input_per_million: 37.5,
494
+ output_per_million: 150.0,
495
+ },
496
+ features: {
497
+ context_length: 128000,
498
+ input_modality: ['text', 'image'],
499
+ output_modality: ['text'],
500
+ tool_use: true,
501
+ streaming: true,
502
+ json_output: true,
503
+ },
504
+ class: 'standard',
505
+ description: 'Latest premium GPT model from OpenAI',
506
+ },
507
+ {
508
+ id: 'gpt-4o',
509
+ aliases: ['gpt-4o-2024-08-06'],
510
+ provider: 'openai',
511
+ cost: {
512
+ input_per_million: 2.5,
513
+ cached_input_per_million: 1.25,
514
+ output_per_million: 10.0,
515
+ },
516
+ features: {
517
+ context_length: 128000,
518
+ input_modality: ['text', 'image', 'audio'],
519
+ output_modality: ['text', 'audio'],
520
+ tool_use: true,
521
+ streaming: true,
522
+ json_output: true,
523
+ },
524
+ class: 'standard',
525
+ score: 80,
526
+ description: 'OpenAI standard model with multimodal capabilities',
527
+ },
528
+ {
529
+ id: 'gpt-4o-mini',
530
+ aliases: ['gpt-4o-mini-2024-07-18'],
531
+ provider: 'openai',
532
+ cost: {
533
+ input_per_million: 0.15,
534
+ cached_input_per_million: 0.075,
535
+ output_per_million: 0.6,
536
+ },
537
+ features: {
538
+ context_length: 128000,
539
+ input_modality: ['text', 'image', 'audio'],
540
+ output_modality: ['text', 'audio'],
541
+ tool_use: true,
542
+ streaming: true,
543
+ json_output: true,
544
+ },
545
+ class: 'mini',
546
+ score: 65,
547
+ scores: {
548
+ monologue: 70,
549
+ code: 63,
550
+ reasoning: 60,
551
+ },
552
+ description: 'Smaller, faster version of GPT-4o',
553
+ },
554
+ {
555
+ id: 'gpt-4o-search-preview',
556
+ aliases: ['gpt-4o-search-preview-2025-03-11'],
557
+ provider: 'openai',
558
+ cost: {
559
+ input_per_million: 2.5,
560
+ output_per_million: 10.0,
561
+ },
562
+ features: {
563
+ context_length: 128000,
564
+ input_modality: ['text', 'image'],
565
+ output_modality: ['text'],
566
+ tool_use: true,
567
+ streaming: true,
568
+ json_output: true,
569
+ },
570
+ class: 'search',
571
+ description: 'GPT-4o with built-in search capabilities',
572
+ },
573
+ {
574
+ id: 'gpt-4o-mini-search-preview',
575
+ aliases: ['gpt-4o-mini-search-preview-2025-03-11'],
576
+ provider: 'openai',
577
+ cost: {
578
+ input_per_million: 0.15,
579
+ output_per_million: 0.6,
580
+ },
581
+ features: {
582
+ context_length: 128000,
583
+ input_modality: ['text', 'image'],
584
+ output_modality: ['text'],
585
+ tool_use: true,
586
+ streaming: true,
587
+ json_output: true,
588
+ },
589
+ class: 'search',
590
+ description: 'Smaller GPT-4o with built-in search capabilities',
591
+ },
592
+ {
593
+ id: 'o4-mini',
594
+ aliases: ['o4-mini-2025-04-16', 'o4-mini-low', 'o4-mini-medium', 'o4-mini-high'],
595
+ provider: 'openai',
596
+ cost: {
597
+ input_per_million: 1.1,
598
+ cached_input_per_million: 0.275,
599
+ output_per_million: 4.4,
600
+ },
601
+ features: {
602
+ context_length: 200000,
603
+ input_modality: ['text', 'image'],
604
+ output_modality: ['text'],
605
+ tool_use: true,
606
+ streaming: true,
607
+ json_output: true,
608
+ },
609
+ class: 'reasoning',
610
+ score: 80,
611
+ scores: {
612
+ monologue: 85,
613
+ code: 82,
614
+ reasoning: 76,
615
+ },
616
+ description: 'Faster, more affordable reasoning model',
617
+ },
618
+ {
619
+ id: 'o3',
620
+ aliases: ['o3-2025-04-16'],
621
+ provider: 'openai',
622
+ cost: {
623
+ input_per_million: 2,
624
+ cached_input_per_million: 0.5,
625
+ output_per_million: 8,
626
+ },
627
+ features: {
628
+ context_length: 200000,
629
+ input_modality: ['text', 'image'],
630
+ output_modality: ['text'],
631
+ tool_use: true,
632
+ streaming: true,
633
+ json_output: true,
634
+ },
635
+ class: 'reasoning',
636
+ score: 85,
637
+ scores: {
638
+ monologue: 87,
639
+ code: 84,
640
+ reasoning: 79,
641
+ },
642
+ description: 'Powerful reasoning model',
643
+ },
644
+ {
645
+ id: 'o3-pro',
646
+ aliases: ['o3-pro-2025-06-10'],
647
+ provider: 'openai',
648
+ cost: {
649
+ input_per_million: 20,
650
+ output_per_million: 80,
651
+ },
652
+ features: {
653
+ context_length: 200000,
654
+ input_modality: ['text', 'image'],
655
+ output_modality: ['text'],
656
+ tool_use: true,
657
+ json_output: true,
658
+ },
659
+ class: 'reasoning',
660
+ score: 85,
661
+ scores: {
662
+ monologue: 87,
663
+ code: 84,
664
+ reasoning: 79,
665
+ },
666
+ description: 'Most powerful reasoning model',
667
+ },
668
+ {
669
+ id: 'o1',
670
+ aliases: ['o1-2024-12-17'],
671
+ provider: 'openai',
672
+ cost: {
673
+ input_per_million: 15.0,
674
+ cached_input_per_million: 7.5,
675
+ output_per_million: 60.0,
676
+ },
677
+ features: {
678
+ context_length: 200000,
679
+ input_modality: ['text', 'image'],
680
+ output_modality: ['text'],
681
+ tool_use: true,
682
+ streaming: true,
683
+ json_output: true,
684
+ },
685
+ class: 'reasoning',
686
+ description: 'Advanced reasoning model from OpenAI',
687
+ },
688
+ {
689
+ id: 'o1-pro',
690
+ aliases: ['o1-pro-2025-03-19'],
691
+ provider: 'openai',
692
+ cost: {
693
+ input_per_million: 150.0,
694
+ output_per_million: 600.0,
695
+ },
696
+ features: {
697
+ context_length: 200000,
698
+ input_modality: ['text', 'image'],
699
+ output_modality: ['text'],
700
+ tool_use: true,
701
+ streaming: false,
702
+ json_output: true,
703
+ },
704
+ class: 'reasoning',
705
+ score: 90,
706
+ description: 'Premium O-series model from OpenAI, highest reasoning capability',
707
+ },
708
+ {
709
+ id: 'o4-mini',
710
+ aliases: ['o4-mini-2025-01-31', 'o1-mini', 'o1-mini-2024-09-12'],
711
+ provider: 'openai',
712
+ cost: {
713
+ input_per_million: 1.1,
714
+ cached_input_per_million: 0.55,
715
+ output_per_million: 4.4,
716
+ },
717
+ features: {
718
+ context_length: 200000,
719
+ input_modality: ['text', 'image'],
720
+ output_modality: ['text'],
721
+ tool_use: true,
722
+ streaming: true,
723
+ json_output: true,
724
+ },
725
+ class: 'reasoning',
726
+ score: 70,
727
+ description: 'Smaller O-series model with reasoning capabilities',
728
+ },
729
+ {
730
+ id: 'computer-use-preview',
731
+ aliases: ['computer-use-preview-2025-03-11'],
732
+ provider: 'openai',
733
+ cost: {
734
+ input_per_million: 3.0,
735
+ output_per_million: 12.0,
736
+ },
737
+ features: {
738
+ input_modality: ['text', 'image'],
739
+ output_modality: ['text'],
740
+ tool_use: true,
741
+ streaming: true,
742
+ json_output: true,
743
+ },
744
+ class: 'vision',
745
+ description: 'Model that can understand and control computer interfaces',
746
+ },
747
+ {
748
+ id: 'claude-3-7-sonnet-latest',
749
+ aliases: ['claude-3-7-sonnet'],
750
+ provider: 'anthropic',
751
+ cost: {
752
+ input_per_million: 3.0,
753
+ output_per_million: 15.0,
754
+ cached_input_per_million: 0.3,
755
+ },
756
+ features: {
757
+ context_length: 200000,
758
+ input_modality: ['text', 'image'],
759
+ output_modality: ['text'],
760
+ tool_use: true,
761
+ streaming: true,
762
+ json_output: true,
763
+ max_output_tokens: 64000,
764
+ },
765
+ class: 'reasoning',
766
+ score: 85,
767
+ scores: {
768
+ monologue: 83,
769
+ code: 77,
770
+ reasoning: 69,
771
+ },
772
+ description: 'Latest Claude model with strong reasoning capabilities (extended thinking internal)',
773
+ },
774
+ {
775
+ id: 'claude-3-5-haiku-latest',
776
+ aliases: ['claude-3-5-haiku'],
777
+ provider: 'anthropic',
778
+ cost: {
779
+ input_per_million: 0.8,
780
+ output_per_million: 4.0,
781
+ cached_input_per_million: 0.08,
782
+ },
783
+ features: {
784
+ context_length: 200000,
785
+ input_modality: ['text', 'image'],
786
+ output_modality: ['text'],
787
+ tool_use: true,
788
+ streaming: true,
789
+ json_output: true,
790
+ max_output_tokens: 8192,
791
+ },
792
+ class: 'mini',
793
+ score: 70,
794
+ scores: {
795
+ monologue: 66,
796
+ code: 63,
797
+ reasoning: 55,
798
+ },
799
+ description: 'Fast, cost-effective Claude model',
800
+ },
801
+ {
802
+ id: 'claude-cli',
803
+ provider: 'anthropic',
804
+ cost: {
805
+ input_per_million: 3.0,
806
+ output_per_million: 15.0,
807
+ cached_input_per_million: 0.3,
808
+ },
809
+ features: {
810
+ context_length: 200000,
811
+ input_modality: ['text', 'image'],
812
+ output_modality: ['text'],
813
+ tool_use: true,
814
+ streaming: true,
815
+ json_output: true,
816
+ },
817
+ class: 'reasoning',
818
+ description: 'Claude accessed via CLI (likely uses latest Sonnet or Haiku model)',
819
+ },
820
+ {
821
+ id: 'claude-opus-4-20250514',
822
+ aliases: ['claude-opus-4', 'claude-4-opus'],
823
+ provider: 'anthropic',
824
+ cost: {
825
+ input_per_million: 15.0,
826
+ output_per_million: 75.0,
827
+ cached_input_per_million: 1.5,
828
+ },
829
+ features: {
830
+ context_length: 200000,
831
+ input_modality: ['text', 'image'],
832
+ output_modality: ['text'],
833
+ tool_use: true,
834
+ streaming: true,
835
+ json_output: true,
836
+ max_output_tokens: 32000,
837
+ reasoning_output: true,
838
+ },
839
+ class: 'reasoning',
840
+ score: 95,
841
+ description: 'Claude Opus 4 - Highest level of intelligence and capability with extended thinking',
842
+ },
843
+ {
844
+ id: 'claude-sonnet-4-20250514',
845
+ aliases: ['claude-sonnet-4', 'claude-4-sonnet'],
846
+ provider: 'anthropic',
847
+ cost: {
848
+ input_per_million: 3.0,
849
+ output_per_million: 15.0,
850
+ cached_input_per_million: 0.3,
851
+ },
852
+ features: {
853
+ context_length: 200000,
854
+ input_modality: ['text', 'image'],
855
+ output_modality: ['text'],
856
+ tool_use: true,
857
+ streaming: true,
858
+ json_output: true,
859
+ max_output_tokens: 64000,
860
+ reasoning_output: true,
861
+ },
862
+ class: 'reasoning',
863
+ score: 90,
864
+ description: 'Claude Sonnet 4 - High intelligence and balanced performance with extended thinking',
865
+ },
866
+ {
867
+ id: 'gemini-2.5-pro-preview-06-05',
868
+ aliases: ['gemini-2.5-pro', 'gemini-2.5-pro-exp-03-25', 'gemini-2.5-pro-preview-05-06'],
869
+ provider: 'google',
870
+ cost: {
871
+ input_per_million: {
872
+ threshold_tokens: 200000,
873
+ price_below_threshold_per_million: 1.25,
874
+ price_above_threshold_per_million: 2.5,
875
+ },
876
+ output_per_million: {
877
+ threshold_tokens: 200000,
878
+ price_below_threshold_per_million: 10.0,
879
+ price_above_threshold_per_million: 15.0,
880
+ },
881
+ },
882
+ features: {
883
+ context_length: 1048576,
884
+ input_modality: ['text', 'image', 'video', 'audio'],
885
+ output_modality: ['text'],
886
+ tool_use: true,
887
+ streaming: true,
888
+ json_output: true,
889
+ max_output_tokens: 65536,
890
+ },
891
+ class: 'reasoning',
892
+ score: 80,
893
+ description: 'Paid preview of Gemini 2.5 Pro. State-of-the-art multipurpose model.',
894
+ },
895
+ {
896
+ id: 'gemini-2.5-flash-preview-05-20',
897
+ aliases: ['gemini-2.5-flash', 'gemini-2.5-flash-preview-04-17'],
898
+ provider: 'google',
899
+ cost: {
900
+ input_per_million: 0.15,
901
+ output_per_million: 3.5,
902
+ },
903
+ features: {
904
+ context_length: 1048576,
905
+ input_modality: ['text', 'image', 'video', 'audio'],
906
+ output_modality: ['text'],
907
+ tool_use: true,
908
+ streaming: true,
909
+ json_output: true,
910
+ max_output_tokens: 65536,
911
+ },
912
+ class: 'reasoning',
913
+ score: 75,
914
+ scores: {
915
+ monologue: 12,
916
+ code: 63,
917
+ reasoning: 78,
918
+ },
919
+ description: 'Balanced multimodal model with large context, built for Agents.',
920
+ },
921
+ {
922
+ id: 'gemini-2.0-flash-lite',
923
+ provider: 'google',
924
+ cost: {
925
+ input_per_million: 0.075,
926
+ output_per_million: 0.3,
927
+ },
928
+ features: {
929
+ context_length: 1048576,
930
+ input_modality: ['text', 'image', 'video', 'audio'],
931
+ output_modality: ['text'],
932
+ tool_use: true,
933
+ streaming: true,
934
+ json_output: true,
935
+ max_output_tokens: 8192,
936
+ },
937
+ class: 'standard',
938
+ score: 75,
939
+ scores: {
940
+ monologue: 70,
941
+ code: 55,
942
+ reasoning: 56,
943
+ },
944
+ description: 'Lite multimodal model with large context, built for Agents.',
945
+ },
946
+ {
947
+ id: 'gemini-2.0-flash',
948
+ provider: 'google',
949
+ cost: {
950
+ input_per_million: 0.1,
951
+ output_per_million: 0.4,
952
+ cached_input_per_million: 0.025,
953
+ },
954
+ features: {
955
+ context_length: 1048576,
956
+ input_modality: ['text', 'image', 'video', 'audio'],
957
+ output_modality: ['text'],
958
+ tool_use: true,
959
+ streaming: true,
960
+ json_output: true,
961
+ max_output_tokens: 8192,
962
+ },
963
+ class: 'standard',
964
+ score: 75,
965
+ scores: {
966
+ monologue: 70,
967
+ code: 55,
968
+ reasoning: 56,
969
+ },
970
+ description: 'Balanced multimodal model with large context, built for Agents.',
971
+ },
972
+ {
973
+ id: 'gpt-image-1',
974
+ provider: 'openai',
975
+ cost: {
976
+ per_image: 0.042,
977
+ },
978
+ features: {
979
+ input_modality: ['text', 'image'],
980
+ output_modality: ['image'],
981
+ streaming: false,
982
+ },
983
+ class: 'image_generation',
984
+ description: "OpenAI's GPT-Image-1 model for text-to-image generation. Supports quality levels (low: $0.011-0.016, medium: $0.042-0.063, high: $0.167-0.25) and sizes (1024x1024, 1024x1536, 1536x1024).",
985
+ },
986
+ {
987
+ id: 'gpt-4o-mini-tts',
988
+ provider: 'openai',
989
+ cost: {
990
+ input_per_million: 0.6,
991
+ output_per_million: 12.0,
992
+ },
993
+ features: {
994
+ input_modality: ['text'],
995
+ output_modality: ['audio'],
996
+ streaming: true,
997
+ },
998
+ class: 'voice',
999
+ description: "OpenAI's advanced text-to-speech model with natural-sounding output. Supports customizable tone, style, and emotion through instructions. 85% cheaper than ElevenLabs with estimated $0.015/minute of audio.",
1000
+ },
1001
+ {
1002
+ id: 'tts-1',
1003
+ provider: 'openai',
1004
+ cost: {
1005
+ input_per_million: 15.0,
1006
+ output_per_million: 0,
1007
+ },
1008
+ features: {
1009
+ input_modality: ['text'],
1010
+ output_modality: ['audio'],
1011
+ streaming: true,
1012
+ },
1013
+ class: 'voice',
1014
+ description: "OpenAI's standard text-to-speech model, optimized for real-time use. Supports 6 voices and multiple audio formats.",
1015
+ },
1016
+ {
1017
+ id: 'tts-1-hd',
1018
+ provider: 'openai',
1019
+ cost: {
1020
+ input_per_million: 30.0,
1021
+ output_per_million: 0,
1022
+ },
1023
+ features: {
1024
+ input_modality: ['text'],
1025
+ output_modality: ['audio'],
1026
+ streaming: true,
1027
+ },
1028
+ class: 'voice',
1029
+ description: "OpenAI's high-definition text-to-speech model for superior audio quality. Supports 6 voices and multiple audio formats.",
1030
+ },
1031
+ {
1032
+ id: 'eleven_multilingual_v2',
1033
+ provider: 'elevenlabs',
1034
+ cost: {
1035
+ input_per_million: 55,
1036
+ output_per_million: 0,
1037
+ },
1038
+ features: {
1039
+ input_modality: ['text'],
1040
+ output_modality: ['audio'],
1041
+ streaming: true,
1042
+ },
1043
+ class: 'voice',
1044
+ description: "ElevenLabs' multilingual high quality text-to-speech model supporting 29 languages with natural voice capabilities.",
1045
+ },
1046
+ {
1047
+ id: 'eleven_turbo_v2_5',
1048
+ provider: 'elevenlabs',
1049
+ cost: {
1050
+ input_per_million: 27.5,
1051
+ output_per_million: 0,
1052
+ },
1053
+ features: {
1054
+ input_modality: ['text'],
1055
+ output_modality: ['audio'],
1056
+ streaming: true,
1057
+ },
1058
+ class: 'voice',
1059
+ description: "ElevenLabs' turbo model optimized for low-latency text-to-speech with high quality output.",
1060
+ },
1061
+ {
1062
+ id: 'eleven_flash_v2_5',
1063
+ provider: 'elevenlabs',
1064
+ cost: {
1065
+ input_per_million: 27.5,
1066
+ output_per_million: 0,
1067
+ },
1068
+ features: {
1069
+ input_modality: ['text'],
1070
+ output_modality: ['audio'],
1071
+ streaming: true,
1072
+ },
1073
+ class: 'voice',
1074
+ description: "ElevenLabs' fastest model optimized for ultra low-latency text-to-speech.",
1075
+ },
1076
+ {
1077
+ id: 'gemini-2.5-flash-preview-tts',
1078
+ provider: 'google',
1079
+ cost: {
1080
+ input_per_million: 10.0,
1081
+ output_per_million: 0,
1082
+ },
1083
+ features: {
1084
+ input_modality: ['text'],
1085
+ output_modality: ['audio'],
1086
+ streaming: true,
1087
+ context_length: 32000,
1088
+ },
1089
+ class: 'voice',
1090
+ description: "Gemini's fast text-to-speech model with support for 24 languages and 30 distinct voices. Optimized for low-latency applications.",
1091
+ },
1092
+ {
1093
+ id: 'gemini-2.5-pro-preview-tts',
1094
+ provider: 'google',
1095
+ cost: {
1096
+ input_per_million: 20.0,
1097
+ output_per_million: 0,
1098
+ },
1099
+ features: {
1100
+ input_modality: ['text'],
1101
+ output_modality: ['audio'],
1102
+ streaming: true,
1103
+ context_length: 32000,
1104
+ },
1105
+ class: 'voice',
1106
+ description: "Gemini's advanced text-to-speech model with superior voice quality, expression control, and multi-speaker support for creating dynamic conversations.",
1107
+ },
1108
+ {
1109
+ id: 'codex-mini-latest',
1110
+ provider: 'openai',
1111
+ cost: {
1112
+ input_per_million: 1.5,
1113
+ cached_input_per_million: 0.375,
1114
+ output_per_million: 6.0,
1115
+ },
1116
+ features: {
1117
+ context_length: 200000,
1118
+ max_output_tokens: 100000,
1119
+ input_modality: ['text', 'image'],
1120
+ output_modality: ['text'],
1121
+ tool_use: false,
1122
+ streaming: true,
1123
+ json_output: true,
1124
+ reasoning_output: true,
1125
+ },
1126
+ class: 'code',
1127
+ description: 'Fine-tuned o4-mini model for Codex CLI with reasoning token support',
1128
+ },
1129
+ {
1130
+ id: 'perplexity/sonar',
1131
+ provider: 'openrouter',
1132
+ cost: {
1133
+ input_per_million: 1.0,
1134
+ output_per_million: 1.0,
1135
+ },
1136
+ features: {
1137
+ context_length: 32768,
1138
+ input_modality: ['text'],
1139
+ output_modality: ['text'],
1140
+ tool_use: true,
1141
+ streaming: true,
1142
+ json_output: true,
1143
+ },
1144
+ class: 'search',
1145
+ description: 'Lightweight, cost-effective search model designed for quick, grounded answers.',
1146
+ },
1147
+ {
1148
+ id: 'perplexity/sonar-pro',
1149
+ provider: 'openrouter',
1150
+ cost: {
1151
+ input_per_million: 3.0,
1152
+ output_per_million: 15.0,
1153
+ },
1154
+ features: {
1155
+ context_length: 32768,
1156
+ input_modality: ['text'],
1157
+ output_modality: ['text'],
1158
+ tool_use: true,
1159
+ streaming: true,
1160
+ json_output: true,
1161
+ },
1162
+ class: 'search',
1163
+ description: 'Advanced search model optimized for complex queries and deeper content understanding.',
1164
+ },
1165
+ {
1166
+ id: 'perplexity/sonar-reasoning',
1167
+ provider: 'openrouter',
1168
+ cost: {
1169
+ input_per_million: 1.0,
1170
+ output_per_million: 5.0,
1171
+ },
1172
+ features: {
1173
+ context_length: 32768,
1174
+ input_modality: ['text'],
1175
+ output_modality: ['text'],
1176
+ tool_use: true,
1177
+ streaming: true,
1178
+ json_output: true,
1179
+ },
1180
+ class: 'reasoning_mini',
1181
+ description: 'Quick problem-solving and reasoning model, ideal for evaluating complex queries.',
1182
+ },
1183
+ {
1184
+ id: 'perplexity/sonar-reasoning-pro',
1185
+ provider: 'openrouter',
1186
+ cost: {
1187
+ input_per_million: 2.0,
1188
+ output_per_million: 8.0,
1189
+ },
1190
+ features: {
1191
+ context_length: 32768,
1192
+ input_modality: ['text'],
1193
+ output_modality: ['text'],
1194
+ tool_use: true,
1195
+ streaming: true,
1196
+ json_output: true,
1197
+ },
1198
+ class: 'reasoning',
1199
+ description: 'Enhanced reasoning model with multi-step problem-solving capabilities and real-time search.',
1200
+ },
1201
+ {
1202
+ id: 'perplexity/sonar-deep-research',
1203
+ provider: 'openrouter',
1204
+ cost: {
1205
+ input_per_million: 2.0,
1206
+ output_per_million: 8.0,
1207
+ },
1208
+ features: {
1209
+ context_length: 32768,
1210
+ input_modality: ['text'],
1211
+ output_modality: ['text'],
1212
+ tool_use: true,
1213
+ streaming: true,
1214
+ json_output: true,
1215
+ },
1216
+ class: 'search',
1217
+ description: 'Best suited for exhaustive research, generating detailed reports and in-depth insights.',
1218
+ },
1219
+ {
1220
+ id: 'mistralai/magistral-small-2506',
1221
+ provider: 'openrouter',
1222
+ cost: {
1223
+ input_per_million: 0.5,
1224
+ output_per_million: 1.5,
1225
+ },
1226
+ features: {
1227
+ context_length: 40000,
1228
+ input_modality: ['text'],
1229
+ output_modality: ['text'],
1230
+ tool_use: true,
1231
+ streaming: true,
1232
+ json_output: true,
1233
+ },
1234
+ class: 'reasoning_mini',
1235
+ score: 72,
1236
+ description: 'Magistral Small is a 24B parameter instruction-tuned model based on Mistral-Small-3.1 (2503), enhanced through supervised fine-tuning on traces from Magistral Medium and further refined via reinforcement learning. It is optimized for reasoning and supports a wide multilingual range, including over 20 languages.',
1237
+ },
1238
+ {
1239
+ id: 'mistralai/magistral-medium-2506:thinking',
1240
+ provider: 'openrouter',
1241
+ cost: {
1242
+ input_per_million: 2.0,
1243
+ output_per_million: 5.0,
1244
+ },
1245
+ features: {
1246
+ context_length: 40960,
1247
+ input_modality: ['text'],
1248
+ output_modality: ['text'],
1249
+ tool_use: true,
1250
+ streaming: true,
1251
+ json_output: true,
1252
+ reasoning_output: true,
1253
+ },
1254
+ class: 'reasoning',
1255
+ score: 80,
1256
+ description: "Magistral is Mistral's first reasoning model. It is ideal for general purpose use requiring longer thought processing and better accuracy than with non-reasoning LLMs. From legal research and financial forecasting to software development and creative storytelling — this model solves multi-step challenges where transparency and precision are critical.",
1257
+ },
1258
+ {
1259
+ id: 'test-model',
1260
+ provider: 'test',
1261
+ cost: {
1262
+ input_per_million: 0,
1263
+ output_per_million: 0,
1264
+ },
1265
+ features: {
1266
+ context_length: 8192,
1267
+ input_modality: ['text'],
1268
+ output_modality: ['text'],
1269
+ tool_use: true,
1270
+ streaming: true,
1271
+ json_output: true,
1272
+ },
1273
+ class: 'standard',
1274
+ scores: {
1275
+ monologue: 50,
1276
+ code: 50,
1277
+ reasoning: 50,
1278
+ },
1279
+ description: 'Test model for unit testing purposes',
1280
+ },
1281
+ {
1282
+ id: 'dall-e-3',
1283
+ provider: 'openai',
1284
+ cost: {
1285
+ per_image: 0.04,
1286
+ },
1287
+ features: {
1288
+ input_modality: ['text'],
1289
+ output_modality: ['image'],
1290
+ },
1291
+ class: 'image_generation',
1292
+ description: "OpenAI's DALL-E 3 model for high-quality image generation",
1293
+ },
1294
+ {
1295
+ id: 'dall-e-2',
1296
+ provider: 'openai',
1297
+ cost: {
1298
+ per_image: 0.02,
1299
+ },
1300
+ features: {
1301
+ input_modality: ['text', 'image'],
1302
+ output_modality: ['image'],
1303
+ },
1304
+ class: 'image_generation',
1305
+ description: "OpenAI's DALL-E 2 model, supports image editing and variations",
1306
+ },
1307
+ {
1308
+ id: 'imagen-3.0-generate-002',
1309
+ aliases: ['imagen-3'],
1310
+ provider: 'google',
1311
+ cost: {
1312
+ per_image: 0.04,
1313
+ },
1314
+ features: {
1315
+ input_modality: ['text'],
1316
+ output_modality: ['image'],
1317
+ },
1318
+ class: 'image_generation',
1319
+ description: "Google's Imagen 3 model for high-quality image generation",
1320
+ },
1321
+ {
1322
+ id: 'imagen-2',
1323
+ provider: 'google',
1324
+ cost: {
1325
+ per_image: 0.02,
1326
+ },
1327
+ features: {
1328
+ input_modality: ['text'],
1329
+ output_modality: ['image'],
1330
+ },
1331
+ class: 'image_generation',
1332
+ description: "Google's Imagen 2 model for image generation",
1333
+ },
1334
+ {
1335
+ id: 'gemini-live-2.5-flash-preview',
1336
+ provider: 'google',
1337
+ cost: {
1338
+ input_per_million: {
1339
+ text: 0.5,
1340
+ audio: 3.0,
1341
+ video: 3.0,
1342
+ },
1343
+ output_per_million: {
1344
+ text: 2.0,
1345
+ audio: 12.0,
1346
+ },
1347
+ },
1348
+ features: {
1349
+ context_length: 32000,
1350
+ input_modality: ['text', 'audio', 'video'],
1351
+ output_modality: ['text', 'audio'],
1352
+ streaming: true,
1353
+ },
1354
+ class: 'transcription',
1355
+ description: 'Gemini Live API for real-time multimodal interaction with modality-specific pricing',
1356
+ },
1357
+ {
1358
+ id: 'gemini-2.0-flash-live-001',
1359
+ provider: 'google',
1360
+ cost: {
1361
+ input_per_million: {
1362
+ text: 0.35,
1363
+ audio: 2.1,
1364
+ video: 2.1,
1365
+ },
1366
+ output_per_million: {
1367
+ text: 1.5,
1368
+ audio: 8.5,
1369
+ },
1370
+ },
1371
+ features: {
1372
+ context_length: 32000,
1373
+ input_modality: ['text', 'audio', 'video'],
1374
+ output_modality: ['text', 'audio'],
1375
+ streaming: true,
1376
+ },
1377
+ class: 'transcription',
1378
+ description: 'Gemini 2.0 Flash Live API for real-time multimodal interaction',
1379
+ },
1380
+ {
1381
+ id: 'gpt-4o-transcribe',
1382
+ provider: 'openai',
1383
+ cost: {
1384
+ input_per_million: {
1385
+ audio: 6.0,
1386
+ },
1387
+ output_per_million: {
1388
+ text: 0,
1389
+ },
1390
+ },
1391
+ features: {
1392
+ context_length: 128000,
1393
+ input_modality: ['audio'],
1394
+ output_modality: ['text'],
1395
+ streaming: true,
1396
+ },
1397
+ class: 'transcription',
1398
+ description: 'GPT-4o transcription with incremental streaming output',
1399
+ },
1400
+ {
1401
+ id: 'gpt-4o-mini-transcribe',
1402
+ provider: 'openai',
1403
+ cost: {
1404
+ input_per_million: {
1405
+ audio: 6.0,
1406
+ },
1407
+ output_per_million: {
1408
+ text: 0,
1409
+ },
1410
+ },
1411
+ features: {
1412
+ context_length: 128000,
1413
+ input_modality: ['audio'],
1414
+ output_modality: ['text'],
1415
+ streaming: true,
1416
+ },
1417
+ class: 'transcription',
1418
+ description: 'GPT-4o Mini transcription with incremental streaming output',
1419
+ },
1420
+ {
1421
+ id: 'whisper-1',
1422
+ provider: 'openai',
1423
+ cost: {
1424
+ input_per_million: {
1425
+ audio: 6.0,
1426
+ },
1427
+ output_per_million: {
1428
+ text: 0,
1429
+ },
1430
+ },
1431
+ features: {
1432
+ context_length: 25600,
1433
+ input_modality: ['audio'],
1434
+ output_modality: ['text'],
1435
+ streaming: true,
1436
+ },
1437
+ class: 'transcription',
1438
+ description: 'OpenAI Whisper transcription with full-turn output',
1439
+ },
1440
+ ];
1441
+ function findModel(modelId) {
1442
+ const externalModel = (0, external_models_js_1.getExternalModel)(modelId);
1443
+ if (externalModel)
1444
+ return externalModel;
1445
+ const directMatch = exports.MODEL_REGISTRY.find(model => model.id === modelId);
1446
+ if (directMatch)
1447
+ return directMatch;
1448
+ const aliasMatch = exports.MODEL_REGISTRY.find(model => model.aliases?.includes(modelId));
1449
+ if (aliasMatch)
1450
+ return aliasMatch;
1451
+ const suffixes = ['-low', '-medium', '-high', '-max'];
1452
+ for (const suffix of suffixes) {
1453
+ if (modelId.endsWith(suffix)) {
1454
+ const baseName = modelId.slice(0, -suffix.length);
1455
+ return findModel(baseName);
1456
+ }
1457
+ }
1458
+ return undefined;
1459
+ }
1460
+ //# sourceMappingURL=model_data.js.map