@just-every/ensemble 0.2.162 → 0.2.164

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 (32) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/data/model_data.cjs +342 -150
  3. package/dist/cjs/data/model_data.d.ts +4 -0
  4. package/dist/cjs/data/model_data.d.ts.map +1 -1
  5. package/dist/cjs/data/model_data.js.map +1 -1
  6. package/dist/cjs/model_providers/gemini.cjs +15 -0
  7. package/dist/cjs/model_providers/gemini.d.ts.map +1 -1
  8. package/dist/cjs/model_providers/gemini.js.map +1 -1
  9. package/dist/cjs/model_providers/model_provider.cjs +1 -1
  10. package/dist/cjs/model_providers/model_provider.js.map +1 -1
  11. package/dist/cjs/model_providers/openai.cjs +74 -27
  12. package/dist/cjs/model_providers/openai.d.ts.map +1 -1
  13. package/dist/cjs/model_providers/openai.js.map +1 -1
  14. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  15. package/dist/cjs/types/types.d.ts +1 -1
  16. package/dist/cjs/types/types.d.ts.map +1 -1
  17. package/dist/data/model_data.d.ts +4 -0
  18. package/dist/data/model_data.d.ts.map +1 -1
  19. package/dist/data/model_data.js +342 -150
  20. package/dist/data/model_data.js.map +1 -1
  21. package/dist/model_providers/gemini.d.ts.map +1 -1
  22. package/dist/model_providers/gemini.js +15 -0
  23. package/dist/model_providers/gemini.js.map +1 -1
  24. package/dist/model_providers/model_provider.js +1 -1
  25. package/dist/model_providers/model_provider.js.map +1 -1
  26. package/dist/model_providers/openai.d.ts.map +1 -1
  27. package/dist/model_providers/openai.js +74 -27
  28. package/dist/model_providers/openai.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/dist/types/types.d.ts +1 -1
  31. package/dist/types/types.d.ts.map +1 -1
  32. package/package.json +2 -2
@@ -6,201 +6,163 @@ const external_models_js_1 = require("../utils/external_models.cjs");
6
6
  exports.MODEL_CLASSES = {
7
7
  standard: {
8
8
  models: [
9
- 'gpt-5-mini',
10
- 'gemini-2.5-flash-preview-05-20',
9
+ 'gpt-5.2-chat-latest',
11
10
  'gemini-2.5-flash',
12
- 'gemini-3-pro',
13
- 'claude-sonnet-4-5-20250514',
14
- 'grok-3-mini',
15
- 'grok-4-1-fast-non-reasoning',
16
- 'grok-4-fast-non-reasoning',
11
+ 'claude-sonnet-4-5-20250929',
12
+ 'grok-4',
17
13
  ],
18
14
  random: true,
19
15
  },
20
16
  mini: {
21
17
  models: [
22
18
  'gpt-5-nano',
23
- 'gemini-2.5-flash-lite-preview-06-17',
24
19
  'gemini-2.5-flash-lite',
25
- 'claude-haiku-4-5-20250514',
20
+ 'claude-haiku-4-5-20251001',
26
21
  'grok-3-mini',
27
- 'mistral/ministral-8b',
28
- 'openai/gpt-oss-20b',
29
22
  ],
30
23
  random: true,
31
24
  },
32
25
  reasoning: {
33
26
  models: [
34
- 'gpt-5-max',
35
- 'gpt-5.1',
36
- 'gemini-2.5-pro-preview-06-05',
27
+ 'gpt-5.2',
37
28
  'gemini-2.5-pro',
38
- 'gemini-3-pro',
39
- 'claude-opus-4-1-20250805',
40
- 'grok-4',
29
+ 'claude-sonnet-4-5-20250929',
41
30
  'grok-4-1-fast-reasoning',
42
- 'grok-4-fast-reasoning',
43
- 'mistralai/magistral-medium-2506:thinking',
44
- 'qwen3-235b-a22b-thinking-2507',
31
+ ],
32
+ random: true,
33
+ },
34
+ reasoning_high: {
35
+ models: [
36
+ 'gpt-5.2-pro',
37
+ 'gemini-3-pro-preview',
38
+ 'claude-opus-4-5-20251101',
39
+ 'grok-4',
45
40
  ],
46
41
  random: true,
47
42
  },
48
43
  reasoning_mini: {
49
44
  models: [
50
- 'gemini-2.5-flash-preview-05-20-medium',
45
+ 'gpt-5-mini',
51
46
  'gemini-2.5-flash',
47
+ 'claude-sonnet-4-5-20250929',
52
48
  'grok-3-mini',
53
- 'o3-low',
54
- 'openai/gpt-oss-120b',
55
49
  ],
56
50
  random: true,
57
51
  },
58
52
  monologue: {
59
53
  models: [
60
- 'gpt-5-chat-latest',
61
- 'gemini-2.5-pro-preview-06-05',
62
- 'gemini-2.5-flash-preview-05-20-medium',
63
- 'o3-medium',
64
- 'claude-sonnet-4-5-20250514',
54
+ 'gpt-5.2-chat-latest',
55
+ 'gemini-3-pro-preview',
56
+ 'claude-sonnet-4-5-20250929',
57
+ 'grok-4',
65
58
  ],
66
59
  random: true,
67
60
  },
68
61
  metacognition: {
69
62
  models: [
70
- 'gpt-5',
71
- 'gpt-5-mini',
72
- 'gemini-2.5-pro-preview-06-05',
73
- 'gemini-2.5-flash-preview-05-20-high',
74
- 'claude-sonnet-4-5-20250514',
75
- 'grok-3-mini',
63
+ 'gpt-5.2',
64
+ 'gemini-3-pro-preview',
65
+ 'claude-opus-4-5-20251101',
66
+ 'grok-4',
76
67
  ],
77
68
  random: true,
78
69
  },
79
70
  code: {
80
71
  models: [
81
- 'gpt-5',
82
- 'gpt-5.1-codex',
83
- 'gpt-5.1-codex-mini',
84
- 'o3-high',
85
- 'gemini-2.5-pro-preview-06-05-medium',
86
- 'gemini-2.5-flash-preview-05-20-max',
87
- 'claude-opus-4-1-20250805',
88
- 'claude-sonnet-4-5-20250514',
89
- 'grok-4-medium',
90
- 'grok-4-1-fast-reasoning',
72
+ 'gpt-5.1-codex-max',
73
+ 'gemini-3-pro-preview',
74
+ 'claude-opus-4-5-20251101',
75
+ 'grok-4',
91
76
  'qwen3-coder',
92
77
  ],
93
78
  random: true,
94
79
  },
95
80
  writing: {
96
81
  models: [
97
- 'gpt-5-mini',
98
- 'gemini-2.5-flash-lite-preview-06-17',
82
+ 'gpt-5.2-chat-latest',
83
+ 'gemini-2.5-flash',
84
+ 'claude-sonnet-4-5-20250929',
85
+ 'grok-4',
99
86
  ],
100
87
  random: true,
101
88
  },
102
89
  summary: {
103
90
  models: [
104
- 'gpt-5-mini',
105
- 'gemini-2.5-flash-lite-preview-06-17',
91
+ 'gpt-5-nano',
92
+ 'gemini-2.5-flash-lite',
93
+ 'claude-haiku-4-5-20251001',
94
+ 'grok-3-mini',
106
95
  ],
107
96
  random: true,
108
97
  },
109
98
  vision: {
110
99
  models: [
111
- 'gpt-5',
112
- 'o3-high',
113
- 'gemini-2.5-pro-preview-06-05',
114
- 'claude-opus-4-1-20250805',
100
+ 'gpt-5.2',
101
+ 'gemini-3-pro-preview',
102
+ 'claude-opus-4-5-20251101',
115
103
  'grok-4',
116
- 'grok-2-vision',
117
104
  ],
118
105
  random: true,
119
106
  },
120
107
  vision_mini: {
121
108
  models: [
122
- 'gpt-5-mini-medium',
123
- 'o3-low',
124
- 'gemini-2.5-flash-lite-preview-06-17',
125
- 'gemini-2.5-flash-preview-05-20',
126
- 'claude-sonnet-4-5-20250514',
109
+ 'gpt-5-mini',
110
+ 'gemini-2.5-flash',
111
+ 'claude-haiku-4-5-20251001',
112
+ 'grok-3-mini',
127
113
  ],
128
114
  random: true,
129
115
  },
130
116
  search: {
131
117
  models: [
132
- 'gpt-5-mini',
133
118
  'o3-deep-research',
134
- 'gemini-2.5-flash-lite-preview-06-17',
135
119
  'perplexity/sonar-deep-research',
136
120
  ],
137
121
  random: true,
138
122
  },
139
123
  long: {
140
124
  models: [
141
- 'gpt-4.1',
142
- 'gpt-4.1-nano',
143
- 'gpt-4.1-mini',
144
- 'gemini-2.5-pro-preview-06-05',
145
- 'gemini-2.5-pro',
146
- 'gemini-3-pro',
147
- 'gemini-2.5-flash-preview-05-20-medium',
148
- 'gemini-2.5-flash-preview-05-20-low',
149
- 'gemini-2.5-flash',
150
- 'gemini-2.5-flash-lite-preview-06-17',
151
- 'gemini-2.5-flash-lite',
125
+ 'gpt-5.2',
126
+ 'gemini-3-pro-preview',
127
+ 'claude-opus-4-5-20251101',
128
+ 'grok-4',
152
129
  ],
153
130
  random: true,
154
- description: 'Models with very large context windows (near 1M tokens) for processing long documents',
131
+ description: 'Models with very large context windows for processing long documents',
155
132
  },
156
133
  image_generation: {
157
134
  models: [
158
- 'gpt-image-1',
159
- 'gemini-2.5-flash-image-preview',
160
- 'gemini-2.5-flash-image',
135
+ 'gpt-image-1.5',
161
136
  'gemini-3-pro-image-preview',
162
137
  'seedream-4',
163
138
  'luma-photon-1',
164
- 'luma-photon-flash-1',
165
139
  'ideogram-3.0',
166
140
  'midjourney-v7',
167
141
  'flux-kontext-pro',
168
142
  'stability-ultra',
169
143
  'runway-gen4-image',
170
- 'runway-gen4-image-turbo',
171
- 'flux-pro-1.1',
172
- 'flux-schnell',
173
- 'sd3.5-large',
174
- 'sd3.5-large-turbo',
175
- 'sd3.5-medium',
176
- 'sd3.5-flash',
177
144
  'recraft-v3',
178
145
  ],
179
146
  },
180
147
  embedding: {
181
148
  models: [
182
- 'text-embedding-3-small',
183
- 'gemini-embedding-exp-03-07',
149
+ 'text-embedding-3-large',
150
+ 'text-embedding-004',
184
151
  ],
185
152
  description: 'Vector embedding models for semantic search and RAG',
186
153
  },
187
154
  voice: {
188
155
  models: [
189
- 'gpt-4o-mini-tts',
190
- 'tts-1',
191
156
  'tts-1-hd',
192
157
  'eleven_multilingual_v2',
193
- 'eleven_turbo_v2_5',
194
- 'eleven_flash_v2_5',
195
- 'gemini-2.5-flash-preview-tts',
196
158
  'gemini-2.5-pro-preview-tts',
197
- 'gemini-2.5-flash-native-audio-preview',
198
159
  ],
199
160
  description: 'Text-to-Speech models for voice generation',
200
161
  },
201
162
  transcription: {
202
163
  models: [
203
- 'gemini-2.0-flash-live-001',
164
+ 'gpt-4o-transcribe',
165
+ 'gemini-2.5-flash-native-audio-preview-12-2025',
204
166
  ],
205
167
  description: 'Speech-to-Text models for audio transcription with real-time streaming',
206
168
  },
@@ -355,6 +317,23 @@ exports.MODEL_REGISTRY = [
355
317
  class: 'embedding',
356
318
  description: "Google's experimental embedding model optimized for semantic similarity",
357
319
  },
320
+ {
321
+ id: 'text-embedding-004',
322
+ provider: 'google',
323
+ cost: {
324
+ input_per_million: 0,
325
+ output_per_million: 0,
326
+ },
327
+ features: {
328
+ input_modality: ['text'],
329
+ output_modality: ['embedding'],
330
+ input_token_limit: 8191,
331
+ },
332
+ embedding: true,
333
+ dim: 768,
334
+ class: 'embedding',
335
+ description: "Google's stable text embedding model (text-embedding-004)",
336
+ },
358
337
  {
359
338
  id: 'meta-llama/llama-4-maverick',
360
339
  provider: 'openrouter',
@@ -840,19 +819,89 @@ exports.MODEL_REGISTRY = [
840
819
  class: 'standard',
841
820
  description: 'Latest premium GPT model from OpenAI',
842
821
  },
822
+ {
823
+ id: 'gpt-5.2',
824
+ aliases: ['gpt-5.2-2025-12-11'],
825
+ provider: 'openai',
826
+ cost: {
827
+ input_per_million: 1.75,
828
+ cached_input_per_million: 0.175,
829
+ output_per_million: 14.0,
830
+ },
831
+ features: {
832
+ context_length: 400000,
833
+ max_output_tokens: 128000,
834
+ input_modality: ['text', 'image'],
835
+ output_modality: ['text'],
836
+ tool_use: true,
837
+ streaming: true,
838
+ json_output: true,
839
+ },
840
+ class: 'reasoning',
841
+ score: 96,
842
+ scores: {
843
+ monologue: 97,
844
+ code: 95,
845
+ reasoning: 94,
846
+ },
847
+ description: 'Frontier flagship model for complex, multi-step tasks (400k/128k).',
848
+ },
849
+ {
850
+ id: 'gpt-5.2-pro',
851
+ aliases: ['gpt-5.2-pro-2025-12-11'],
852
+ provider: 'openai',
853
+ cost: {
854
+ input_per_million: 21.0,
855
+ output_per_million: 168.0,
856
+ },
857
+ features: {
858
+ context_length: 400000,
859
+ max_output_tokens: 128000,
860
+ input_modality: ['text', 'image'],
861
+ output_modality: ['text'],
862
+ tool_use: true,
863
+ streaming: true,
864
+ json_output: true,
865
+ },
866
+ class: 'reasoning',
867
+ score: 99,
868
+ description: 'Highest-accuracy GPT-5.2 variant for the hardest problems (400k/128k).',
869
+ },
870
+ {
871
+ id: 'gpt-5.2-chat-latest',
872
+ provider: 'openai',
873
+ cost: {
874
+ input_per_million: 1.75,
875
+ cached_input_per_million: 0.175,
876
+ output_per_million: 14.0,
877
+ },
878
+ features: {
879
+ context_length: 128000,
880
+ max_output_tokens: 16384,
881
+ input_modality: ['text', 'image'],
882
+ output_modality: ['text'],
883
+ tool_use: true,
884
+ streaming: true,
885
+ json_output: true,
886
+ },
887
+ class: 'standard',
888
+ score: 94,
889
+ description: 'ChatGPT-optimized GPT-5.2 chat model (128k/16k).',
890
+ },
843
891
  {
844
892
  id: 'gpt-5',
845
893
  aliases: ['gpt-5-2025-08-07'],
846
894
  provider: 'openai',
847
895
  cost: {
848
896
  input_per_million: 1.25,
849
- cached_input_per_million: 0.13,
897
+ cached_input_per_million: 0.125,
850
898
  output_per_million: 10.0,
851
899
  },
852
900
  features: {
853
901
  context_length: 400000,
854
- input_modality: ['text', 'image', 'audio'],
855
- output_modality: ['text', 'image', 'audio'],
902
+ max_output_tokens: 128000,
903
+ input_modality: ['text', 'image'],
904
+ output_modality: ['text'],
856
905
  tool_use: true,
857
906
  streaming: true,
858
907
  json_output: true,
@@ -860,11 +909,54 @@ exports.MODEL_REGISTRY = [
860
909
  class: 'reasoning',
861
910
  score: 95,
862
911
  scores: {
863
- monologue: 98,
912
+ monologue: 96,
864
913
  code: 95,
865
914
  reasoning: 92,
866
915
  },
867
- description: 'The best model for coding and agentic tasks across domains',
916
+ description: 'Frontier flagship model for complex, multi-step tasks (400k/128k).',
917
+ },
918
+ {
919
+ id: 'gpt-5-pro',
920
+ aliases: ['gpt-5-pro-2025-10-06'],
921
+ provider: 'openai',
922
+ cost: {
923
+ input_per_million: 15.0,
924
+ output_per_million: 120.0,
925
+ },
926
+ features: {
927
+ context_length: 400000,
928
+ max_output_tokens: 272000,
929
+ input_modality: ['text', 'image'],
930
+ output_modality: ['text'],
931
+ tool_use: true,
932
+ streaming: true,
933
+ json_output: true,
934
+ },
935
+ class: 'reasoning',
936
+ score: 98,
937
+ description: 'High-accuracy GPT-5 variant for the hardest problems (400k/128k).',
938
+ },
939
+ {
940
+ id: 'gpt-5-chat-latest',
941
+ aliases: ['gpt-5-chat'],
942
+ provider: 'openai',
943
+ cost: {
944
+ input_per_million: 1.25,
945
+ cached_input_per_million: 0.125,
946
+ output_per_million: 10.0,
947
+ },
948
+ features: {
949
+ context_length: 128000,
950
+ max_output_tokens: 16384,
951
+ input_modality: ['text', 'image'],
952
+ output_modality: ['text'],
953
+ tool_use: true,
954
+ streaming: true,
955
+ json_output: true,
956
+ },
957
+ class: 'standard',
958
+ score: 92,
959
+ description: 'ChatGPT-optimized GPT-5 chat model (128k/16k).',
868
960
  },
869
961
  {
870
962
  id: 'gpt-5-mini',
@@ -872,13 +964,14 @@ exports.MODEL_REGISTRY = [
872
964
  provider: 'openai',
873
965
  cost: {
874
966
  input_per_million: 0.25,
875
- cached_input_per_million: 0.03,
967
+ cached_input_per_million: 0.025,
876
968
  output_per_million: 2.0,
877
969
  },
878
970
  features: {
879
971
  context_length: 400000,
880
- input_modality: ['text', 'image', 'audio'],
881
- output_modality: ['text', 'image', 'audio'],
972
+ max_output_tokens: 128000,
973
+ input_modality: ['text', 'image'],
974
+ output_modality: ['text'],
882
975
  tool_use: true,
883
976
  streaming: true,
884
977
  json_output: true,
@@ -886,11 +979,11 @@ exports.MODEL_REGISTRY = [
886
979
  class: 'standard',
887
980
  score: 88,
888
981
  scores: {
889
- monologue: 90,
982
+ monologue: 88,
890
983
  code: 87,
891
984
  reasoning: 85,
892
985
  },
893
- description: 'A faster, more cost-efficient version of GPT-5 for well-defined tasks',
986
+ description: 'A faster, more cost-efficient version of GPT-5 (400k/128k).',
894
987
  },
895
988
  {
896
989
  id: 'gpt-5-nano',
@@ -898,13 +991,14 @@ exports.MODEL_REGISTRY = [
898
991
  provider: 'openai',
899
992
  cost: {
900
993
  input_per_million: 0.05,
901
- cached_input_per_million: 0.01,
994
+ cached_input_per_million: 0.005,
902
995
  output_per_million: 0.4,
903
996
  },
904
997
  features: {
905
998
  context_length: 400000,
906
- input_modality: ['text', 'image', 'audio'],
907
- output_modality: ['text', 'image', 'audio'],
999
+ max_output_tokens: 128000,
1000
+ input_modality: ['text', 'image'],
1001
+ output_modality: ['text'],
908
1002
  tool_use: true,
909
1003
  streaming: true,
910
1004
  json_output: true,
@@ -912,75 +1006,93 @@ exports.MODEL_REGISTRY = [
912
1006
  class: 'mini',
913
1007
  score: 78,
914
1008
  scores: {
915
- monologue: 80,
1009
+ monologue: 78,
916
1010
  code: 76,
917
1011
  reasoning: 75,
918
1012
  },
919
- description: 'Fastest, most cost-efficient version of GPT-5',
1013
+ description: 'Fastest, most cost-efficient GPT-5 model (400k/128k).',
920
1014
  },
921
1015
  {
922
- id: 'gpt-5-chat-latest',
923
- aliases: ['gpt-5-chat'],
1016
+ id: 'gpt-5.1',
1017
+ aliases: ['gpt-5.1-2025-11-13'],
924
1018
  provider: 'openai',
925
1019
  cost: {
926
1020
  input_per_million: 1.25,
927
- cached_input_per_million: 0.13,
1021
+ cached_input_per_million: 0.125,
928
1022
  output_per_million: 10.0,
929
1023
  },
930
1024
  features: {
931
1025
  context_length: 400000,
932
- input_modality: ['text', 'image', 'audio'],
933
- output_modality: ['text', 'image', 'audio'],
1026
+ max_output_tokens: 128000,
1027
+ input_modality: ['text', 'image'],
1028
+ output_modality: ['text'],
934
1029
  tool_use: true,
935
1030
  streaming: true,
936
1031
  json_output: true,
937
1032
  },
938
1033
  class: 'reasoning',
939
1034
  score: 95,
940
- scores: {
941
- monologue: 98,
942
- code: 95,
943
- reasoning: 92,
944
- },
945
- description: 'GPT-5 model used in ChatGPT',
1035
+ description: 'Prior-gen GPT-5.1 flagship model (400k/128k).',
946
1036
  },
947
1037
  {
948
- id: 'gpt-5.1',
949
- aliases: ['gpt-5.1-chat-latest'],
1038
+ id: 'gpt-5.1-chat-latest',
950
1039
  provider: 'openai',
951
1040
  cost: {
952
1041
  input_per_million: 1.25,
1042
+ cached_input_per_million: 0.125,
953
1043
  output_per_million: 10.0,
1044
+ },
1045
+ features: {
1046
+ context_length: 128000,
1047
+ max_output_tokens: 16384,
1048
+ input_modality: ['text', 'image'],
1049
+ output_modality: ['text'],
1050
+ tool_use: true,
1051
+ streaming: true,
1052
+ json_output: true,
1053
+ },
1054
+ class: 'standard',
1055
+ score: 91,
1056
+ description: 'ChatGPT-optimized GPT-5.1 chat model (128k/16k).',
1057
+ },
1058
+ {
1059
+ id: 'gpt-5-codex',
1060
+ aliases: ['gpt-5-codex-2025-09-15'],
1061
+ provider: 'openai',
1062
+ cost: {
1063
+ input_per_million: 1.25,
954
1064
  cached_input_per_million: 0.125,
1065
+ output_per_million: 10.0,
955
1066
  },
956
1067
  features: {
957
- context_length: 256000,
958
- input_modality: ['text', 'image', 'audio', 'video'],
959
- output_modality: ['text', 'image', 'audio'],
1068
+ context_length: 400000,
1069
+ max_output_tokens: 128000,
1070
+ input_modality: ['text', 'image'],
1071
+ output_modality: ['text'],
960
1072
  tool_use: true,
961
1073
  streaming: true,
962
1074
  json_output: true,
963
1075
  },
964
- class: 'reasoning',
965
- score: 96,
966
- description: 'GPT-5.1 flagship multimodal model (Instant/Thinking modes, pricing TBD).',
1076
+ class: 'code',
1077
+ score: 90,
1078
+ description: 'Prior-gen Codex model for agentic coding (400k/128k).',
967
1079
  },
968
1080
  {
969
1081
  id: 'gpt-5.1-codex',
970
1082
  provider: 'openai',
971
1083
  cost: {
972
1084
  input_per_million: 1.25,
973
- output_per_million: 10.0,
974
1085
  cached_input_per_million: 0.125,
1086
+ output_per_million: 10.0,
975
1087
  },
976
1088
  features: {
977
1089
  context_length: 400000,
978
- input_modality: ['text'],
1090
+ max_output_tokens: 128000,
1091
+ input_modality: ['text', 'image'],
979
1092
  output_modality: ['text'],
980
1093
  tool_use: true,
981
1094
  streaming: true,
982
1095
  json_output: true,
983
- max_output_tokens: 128000,
984
1096
  },
985
1097
  class: 'code',
986
1098
  score: 92,
@@ -991,17 +1103,17 @@ exports.MODEL_REGISTRY = [
991
1103
  provider: 'openai',
992
1104
  cost: {
993
1105
  input_per_million: 0.25,
994
- output_per_million: 2.0,
995
1106
  cached_input_per_million: 0.025,
1107
+ output_per_million: 2.0,
996
1108
  },
997
1109
  features: {
998
1110
  context_length: 400000,
999
- input_modality: ['text'],
1111
+ max_output_tokens: 128000,
1112
+ input_modality: ['text', 'image'],
1000
1113
  output_modality: ['text'],
1001
1114
  tool_use: true,
1002
1115
  streaming: true,
1003
1116
  json_output: true,
1004
- max_output_tokens: 128000,
1005
1117
  },
1006
1118
  class: 'code',
1007
1119
  score: 86,
@@ -1011,21 +1123,22 @@ exports.MODEL_REGISTRY = [
1011
1123
  id: 'gpt-5.1-codex-max',
1012
1124
  provider: 'openai',
1013
1125
  cost: {
1014
- input_per_million: 5.0,
1015
- output_per_million: 15.0,
1126
+ input_per_million: 1.25,
1127
+ cached_input_per_million: 0.125,
1128
+ output_per_million: 10.0,
1016
1129
  },
1017
1130
  features: {
1018
- context_length: 10_000_000,
1019
- input_modality: ['text'],
1131
+ context_length: 400000,
1132
+ max_output_tokens: 128000,
1133
+ input_modality: ['text', 'image'],
1020
1134
  output_modality: ['text'],
1021
1135
  tool_use: true,
1022
1136
  streaming: true,
1023
1137
  json_output: true,
1024
- max_output_tokens: 128000,
1025
1138
  },
1026
1139
  class: 'code',
1027
1140
  score: 95,
1028
- description: 'GPT-5.1 Codex Max — multi-million context (IDE-only for now), pricing TBD.',
1141
+ description: 'GPT-5.1 Codex Max — most capable Codex model for coding agents (400k/128k).',
1029
1142
  },
1030
1143
  {
1031
1144
  id: 'gpt-4o',
@@ -1257,7 +1370,7 @@ exports.MODEL_REGISTRY = [
1257
1370
  },
1258
1371
  {
1259
1372
  id: 'claude-sonnet-4-5-20250514',
1260
- aliases: ['claude-sonnet-4-5', 'claude-sonnet-4.5', 'claude-sonnet-latest'],
1373
+ aliases: ['claude-sonnet-4.5-2025-05-14', 'claude-sonnet-4-5-may-2025'],
1261
1374
  provider: 'anthropic',
1262
1375
  cost: {
1263
1376
  input_per_million: 3.0,
@@ -1285,7 +1398,13 @@ exports.MODEL_REGISTRY = [
1285
1398
  },
1286
1399
  {
1287
1400
  id: 'claude-sonnet-4-5-20250929',
1288
- aliases: ['claude-sonnet-4-5-sep-2025', 'claude-sonnet-4.5-2025-09-29'],
1401
+ aliases: [
1402
+ 'claude-sonnet-4-5',
1403
+ 'claude-sonnet-4.5',
1404
+ 'claude-sonnet-latest',
1405
+ 'claude-sonnet-4-5-sep-2025',
1406
+ 'claude-sonnet-4.5-2025-09-29',
1407
+ ],
1289
1408
  provider: 'anthropic',
1290
1409
  cost: {
1291
1410
  input_per_million: {
@@ -1343,7 +1462,7 @@ exports.MODEL_REGISTRY = [
1343
1462
  },
1344
1463
  {
1345
1464
  id: 'claude-haiku-4-5-20250514',
1346
- aliases: ['claude-haiku-4-5', 'claude-haiku-4.5', 'claude-haiku-latest'],
1465
+ aliases: ['claude-haiku-4.5-2025-05-14', 'claude-haiku-4-5-may-2025'],
1347
1466
  provider: 'anthropic',
1348
1467
  cost: {
1349
1468
  input_per_million: 1.0,
@@ -1370,7 +1489,13 @@ exports.MODEL_REGISTRY = [
1370
1489
  },
1371
1490
  {
1372
1491
  id: 'claude-haiku-4-5-20251001',
1373
- aliases: ['claude-haiku-4-5-oct-2025', 'claude-haiku-4.5-2025-10-01'],
1492
+ aliases: [
1493
+ 'claude-haiku-4-5',
1494
+ 'claude-haiku-4.5',
1495
+ 'claude-haiku-latest',
1496
+ 'claude-haiku-4-5-oct-2025',
1497
+ 'claude-haiku-4.5-2025-10-01',
1498
+ ],
1374
1499
  provider: 'anthropic',
1375
1500
  cost: {
1376
1501
  input_per_million: 1.0,
@@ -1411,7 +1536,7 @@ exports.MODEL_REGISTRY = [
1411
1536
  },
1412
1537
  {
1413
1538
  id: 'claude-opus-4-1-20250805',
1414
- aliases: ['claude-opus-4-1', 'claude-opus-4.1', 'claude-4-opus', 'claude-opus'],
1539
+ aliases: ['claude-opus-4-1', 'claude-opus-4.1', 'claude-4-opus'],
1415
1540
  provider: 'anthropic',
1416
1541
  cost: {
1417
1542
  input_per_million: 15.0,
@@ -1437,6 +1562,35 @@ exports.MODEL_REGISTRY = [
1437
1562
  },
1438
1563
  description: 'Claude Opus 4.1 - Highest intelligence and capability with reasoning support',
1439
1564
  },
1565
+ {
1566
+ id: 'claude-opus-4-5-20251101',
1567
+ aliases: [
1568
+ 'claude-opus-4-5',
1569
+ 'claude-opus-4.5',
1570
+ 'claude-opus',
1571
+ 'claude-opus-latest',
1572
+ 'claude-4.5-opus',
1573
+ ],
1574
+ provider: 'anthropic',
1575
+ cost: {
1576
+ input_per_million: 15.0,
1577
+ output_per_million: 75.0,
1578
+ cached_input_per_million: 1.5,
1579
+ },
1580
+ features: {
1581
+ context_length: 200000,
1582
+ input_modality: ['text', 'image'],
1583
+ output_modality: ['text'],
1584
+ tool_use: true,
1585
+ streaming: true,
1586
+ json_output: true,
1587
+ reasoning_output: true,
1588
+ max_output_tokens: 32000,
1589
+ },
1590
+ class: 'reasoning',
1591
+ score: 96,
1592
+ description: 'Claude Opus 4.5 - Latest Opus model with strongest reasoning, code, and long-form capabilities.',
1593
+ },
1440
1594
  {
1441
1595
  id: 'gemini-2.5-pro-preview-06-05',
1442
1596
  aliases: ['gemini-2.5-pro', 'gemini-2.5-pro-exp-03-25', 'gemini-2.5-pro-preview-05-06'],
@@ -1460,8 +1614,8 @@ exports.MODEL_REGISTRY = [
1460
1614
  description: 'Paid preview of Gemini 2.5 Pro. State-of-the-art multipurpose model.',
1461
1615
  },
1462
1616
  {
1463
- id: 'gemini-2.5-flash-preview-05-20',
1464
- aliases: ['gemini-2.5-flash', 'gemini-2.5-flash-preview-04-17'],
1617
+ id: 'gemini-2.5-flash',
1618
+ aliases: ['gemini-2.5-flash-preview-05-20', 'gemini-2.5-flash-preview-04-17'],
1465
1619
  provider: 'google',
1466
1620
  cost: {
1467
1621
  input_per_million: {
@@ -1489,8 +1643,8 @@ exports.MODEL_REGISTRY = [
1489
1643
  description: 'Balanced multimodal model with large context, built for Agents.',
1490
1644
  },
1491
1645
  {
1492
- id: 'gemini-2.5-flash-lite-preview-06-17',
1493
- aliases: ['gemini-2.5-flash-lite'],
1646
+ id: 'gemini-2.5-flash-lite',
1647
+ aliases: ['gemini-2.5-flash-lite-preview-06-17'],
1494
1648
  provider: 'google',
1495
1649
  cost: {
1496
1650
  input_per_million: 0.05,
@@ -1611,11 +1765,48 @@ exports.MODEL_REGISTRY = [
1611
1765
  },
1612
1766
  description: 'Balanced multimodal model with large context, built for Agents.',
1613
1767
  },
1768
+ {
1769
+ id: 'gpt-image-1.5',
1770
+ aliases: ['gpt-image-1.5-2025-12-16'],
1771
+ provider: 'openai',
1772
+ cost: {
1773
+ per_image: 0.034,
1774
+ input_per_million: {
1775
+ text: 5.0,
1776
+ image: 8.0,
1777
+ },
1778
+ output_per_million: {
1779
+ text: 10.0,
1780
+ image: 32.0,
1781
+ },
1782
+ },
1783
+ features: {
1784
+ input_modality: ['text', 'image'],
1785
+ output_modality: ['image', 'text'],
1786
+ streaming: false,
1787
+ },
1788
+ class: 'image_generation',
1789
+ description: "OpenAI's GPT Image 1.5 model for text-to-image generation and editing. Pricing varies by quality (low/medium/high) and size (1024x1024, 1024x1536, 1536x1024).",
1790
+ },
1614
1791
  {
1615
1792
  id: 'gpt-image-1',
1616
1793
  provider: 'openai',
1617
1794
  cost: {
1618
- per_image: 0.042,
1795
+ per_image: 0.026,
1796
+ },
1797
+ features: {
1798
+ input_modality: ['text', 'image'],
1799
+ output_modality: ['image'],
1800
+ streaming: false,
1801
+ },
1802
+ class: 'image_generation',
1803
+ description: "OpenAI's GPT-Image-1 model for text-to-image generation. Supports quality levels (low/medium/high) and sizes (1024x1024, 1024x1536, 1536x1024).",
1804
+ },
1805
+ {
1806
+ id: 'gpt-image-1-mini',
1807
+ provider: 'openai',
1808
+ cost: {
1809
+ per_image: 0.011,
1619
1810
  },
1620
1811
  features: {
1621
1812
  input_modality: ['text', 'image'],
@@ -1623,7 +1814,7 @@ exports.MODEL_REGISTRY = [
1623
1814
  streaming: false,
1624
1815
  },
1625
1816
  class: 'image_generation',
1626
- 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).",
1817
+ description: "OpenAI's GPT-Image-1 Mini model. Cost-efficient variant with lower per-image pricing (low: $0.005-0.006, medium: $0.011-0.015) across sizes (1024x1024, 1024x1536, 1536x1024).",
1627
1818
  },
1628
1819
  {
1629
1820
  id: 'gpt-4o-mini-tts',
@@ -1749,6 +1940,7 @@ exports.MODEL_REGISTRY = [
1749
1940
  },
1750
1941
  {
1751
1942
  id: 'gemini-2.5-flash-native-audio-preview',
1943
+ aliases: ['gemini-2.5-flash-native-audio-preview-12-2025'],
1752
1944
  provider: 'google',
1753
1945
  cost: {
1754
1946
  input_per_million: 5.0,
@@ -2354,7 +2546,7 @@ function findModel(modelId) {
2354
2546
  const aliasMatch = exports.MODEL_REGISTRY.find(model => model.aliases?.includes(modelId));
2355
2547
  if (aliasMatch)
2356
2548
  return aliasMatch;
2357
- const suffixes = ['-low', '-medium', '-high', '-max'];
2549
+ const suffixes = ['-xhigh', '-minimal', '-low', '-medium', '-high', '-none', '-max'];
2358
2550
  for (const suffix of suffixes) {
2359
2551
  if (modelId.endsWith(suffix)) {
2360
2552
  const baseName = modelId.slice(0, -suffix.length);