@@ -19,7 +19,9 @@ import {
1919 getProviderModels ,
2020 MODELS_TEMP_RANGE_0_1 ,
2121 MODELS_TEMP_RANGE_0_2 ,
22+ MODELS_WITH_REASONING_EFFORT ,
2223 MODELS_WITH_TEMPERATURE_SUPPORT ,
24+ MODELS_WITH_VERBOSITY ,
2325 PROVIDERS_WITH_TOOL_USAGE_CONTROL ,
2426 prepareToolsWithUsageControl ,
2527 supportsTemperature ,
@@ -144,6 +146,15 @@ describe('Model Capabilities', () => {
144146 'deepseek-chat' ,
145147 'azure/gpt-4.1' ,
146148 'azure/model-router' ,
149+ // GPT-5 models don't support temperature (removed in our implementation)
150+ 'gpt-5' ,
151+ 'gpt-5-mini' ,
152+ 'gpt-5-nano' ,
153+ 'gpt-5-chat-latest' ,
154+ 'azure/gpt-5' ,
155+ 'azure/gpt-5-mini' ,
156+ 'azure/gpt-5-nano' ,
157+ 'azure/gpt-5-chat-latest' ,
147158 ]
148159
149160 for ( const model of unsupportedModels ) {
@@ -198,6 +209,15 @@ describe('Model Capabilities', () => {
198209 expect ( getMaxTemperature ( 'azure/o3' ) ) . toBeUndefined ( )
199210 expect ( getMaxTemperature ( 'azure/o4-mini' ) ) . toBeUndefined ( )
200211 expect ( getMaxTemperature ( 'deepseek-r1' ) ) . toBeUndefined ( )
212+ // GPT-5 models don't support temperature (removed in our implementation)
213+ expect ( getMaxTemperature ( 'gpt-5' ) ) . toBeUndefined ( )
214+ expect ( getMaxTemperature ( 'gpt-5-mini' ) ) . toBeUndefined ( )
215+ expect ( getMaxTemperature ( 'gpt-5-nano' ) ) . toBeUndefined ( )
216+ expect ( getMaxTemperature ( 'gpt-5-chat-latest' ) ) . toBeUndefined ( )
217+ expect ( getMaxTemperature ( 'azure/gpt-5' ) ) . toBeUndefined ( )
218+ expect ( getMaxTemperature ( 'azure/gpt-5-mini' ) ) . toBeUndefined ( )
219+ expect ( getMaxTemperature ( 'azure/gpt-5-nano' ) ) . toBeUndefined ( )
220+ expect ( getMaxTemperature ( 'azure/gpt-5-chat-latest' ) ) . toBeUndefined ( )
201221 } )
202222
203223 it . concurrent ( 'should be case insensitive' , ( ) => {
@@ -266,6 +286,49 @@ describe('Model Capabilities', () => {
266286 expect ( MODELS_WITH_TEMPERATURE_SUPPORT ) . toContain ( 'claude-sonnet-4-0' ) // From 0-1 range
267287 }
268288 )
289+
290+ it . concurrent ( 'should have correct models in MODELS_WITH_REASONING_EFFORT' , ( ) => {
291+ // Should contain GPT-5 models that support reasoning effort
292+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'gpt-5' )
293+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'gpt-5-mini' )
294+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'gpt-5-nano' )
295+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'azure/gpt-5' )
296+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'azure/gpt-5-mini' )
297+ expect ( MODELS_WITH_REASONING_EFFORT ) . toContain ( 'azure/gpt-5-nano' )
298+
299+ // Should NOT contain non-reasoning GPT-5 models
300+ expect ( MODELS_WITH_REASONING_EFFORT ) . not . toContain ( 'gpt-5-chat-latest' )
301+ expect ( MODELS_WITH_REASONING_EFFORT ) . not . toContain ( 'azure/gpt-5-chat-latest' )
302+
303+ // Should NOT contain other models
304+ expect ( MODELS_WITH_REASONING_EFFORT ) . not . toContain ( 'gpt-4o' )
305+ expect ( MODELS_WITH_REASONING_EFFORT ) . not . toContain ( 'claude-sonnet-4-0' )
306+ expect ( MODELS_WITH_REASONING_EFFORT ) . not . toContain ( 'o1' )
307+ } )
308+
309+ it . concurrent ( 'should have correct models in MODELS_WITH_VERBOSITY' , ( ) => {
310+ // Should contain GPT-5 models that support verbosity
311+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'gpt-5' )
312+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'gpt-5-mini' )
313+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'gpt-5-nano' )
314+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'azure/gpt-5' )
315+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'azure/gpt-5-mini' )
316+ expect ( MODELS_WITH_VERBOSITY ) . toContain ( 'azure/gpt-5-nano' )
317+
318+ // Should NOT contain non-reasoning GPT-5 models
319+ expect ( MODELS_WITH_VERBOSITY ) . not . toContain ( 'gpt-5-chat-latest' )
320+ expect ( MODELS_WITH_VERBOSITY ) . not . toContain ( 'azure/gpt-5-chat-latest' )
321+
322+ // Should NOT contain other models
323+ expect ( MODELS_WITH_VERBOSITY ) . not . toContain ( 'gpt-4o' )
324+ expect ( MODELS_WITH_VERBOSITY ) . not . toContain ( 'claude-sonnet-4-0' )
325+ expect ( MODELS_WITH_VERBOSITY ) . not . toContain ( 'o1' )
326+ } )
327+
328+ it . concurrent ( 'should have same models in both reasoning effort and verbosity arrays' , ( ) => {
329+ // GPT-5 models that support reasoning effort should also support verbosity and vice versa
330+ expect ( MODELS_WITH_REASONING_EFFORT . sort ( ) ) . toEqual ( MODELS_WITH_VERBOSITY . sort ( ) )
331+ } )
269332 } )
270333} )
271334
0 commit comments