@@ -124,7 +124,7 @@ public async Task ParseDefaultModelFromTomlLines_HandlesInlineComments()
124124 }
125125
126126 [ Test ]
127- public async Task ParseModelsCache_ParsesListedAndHiddenModels ( )
127+ public async Task ParseModelsCache_ParsesCurrentUpstreamModelShape ( )
128128 {
129129 const string json = """
130130 {
@@ -135,16 +135,38 @@ public async Task ParseModelsCache_ParsesListedAndHiddenModels()
135135 "description": "Latest frontier agentic coding model.",
136136 "visibility": "list",
137137 "supported_in_api": true,
138+ "default_reasoning_summary": "none",
139+ "availability_nux": null,
140+ "upgrade": {
141+ "model": "gpt-5.4",
142+ "migration_markdown": "Introducing GPT-5.4"
143+ },
138144 "supported_reasoning_levels": [
139145 { "effort": "low" },
140146 { "effort": "high" }
141147 ]
142148 },
143149 {
144- "slug": "gpt-5.1-codex",
145- "display_name": "gpt-5.1-codex",
150+ "slug": "gpt-5.4",
151+ "display_name": "gpt-5.4",
152+ "description": "Latest frontier agentic coding model.",
153+ "visibility": "list",
154+ "supported_in_api": true,
155+ "default_reasoning_summary": "none",
156+ "availability_nux": null,
157+ "upgrade": null,
158+ "supported_reasoning_levels": [
159+ { "effort": "medium" },
160+ { "effort": "xhigh" }
161+ ]
162+ },
163+ {
164+ "slug": "gpt-5.1-codex-mini",
165+ "display_name": "gpt-5.1-codex-mini",
146166 "visibility": "hidden",
147167 "supported_in_api": false,
168+ "default_reasoning_summary": "auto",
169+ "availability_nux": null,
148170 "supported_reasoning_levels": []
149171 },
150172 {
@@ -157,14 +179,19 @@ public async Task ParseModelsCache_ParsesListedAndHiddenModels()
157179 using var document = JsonDocument . Parse ( json ) ;
158180 var parsed = CodexCliMetadataReader . ParseModelsCache ( document . RootElement ) ;
159181
160- await Assert . That ( parsed ) . Count ( ) . IsEqualTo ( 2 ) ;
182+ await Assert . That ( parsed ) . Count ( ) . IsEqualTo ( 3 ) ;
161183 await Assert . That ( parsed [ 0 ] . Slug ) . IsEqualTo ( "gpt-5.3-codex" ) ;
162184 await Assert . That ( parsed [ 0 ] . IsListed ) . IsTrue ( ) ;
163185 await Assert . That ( parsed [ 0 ] . IsApiSupported ) . IsTrue ( ) ;
164186 await Assert . That ( parsed [ 0 ] . SupportedReasoningEfforts ) . IsEquivalentTo ( [ "low" , "high" ] ) ;
165187
166- await Assert . That ( parsed [ 1 ] . Slug ) . IsEqualTo ( "gpt-5.1-codex" ) ;
167- await Assert . That ( parsed [ 1 ] . IsListed ) . IsFalse ( ) ;
168- await Assert . That ( parsed [ 1 ] . IsApiSupported ) . IsFalse ( ) ;
188+ await Assert . That ( parsed [ 1 ] . Slug ) . IsEqualTo ( "gpt-5.4" ) ;
189+ await Assert . That ( parsed [ 1 ] . IsListed ) . IsTrue ( ) ;
190+ await Assert . That ( parsed [ 1 ] . IsApiSupported ) . IsTrue ( ) ;
191+ await Assert . That ( parsed [ 1 ] . SupportedReasoningEfforts ) . IsEquivalentTo ( [ "medium" , "xhigh" ] ) ;
192+
193+ await Assert . That ( parsed [ 2 ] . Slug ) . IsEqualTo ( "gpt-5.1-codex-mini" ) ;
194+ await Assert . That ( parsed [ 2 ] . IsListed ) . IsFalse ( ) ;
195+ await Assert . That ( parsed [ 2 ] . IsApiSupported ) . IsFalse ( ) ;
169196 }
170197}
0 commit comments