@@ -13,6 +13,8 @@ import {
1313 type ReasoningEffort ,
1414 type VerbosityLevel ,
1515 type ReasoningEffortExtended ,
16+ OpenAiServiceTier ,
17+ SERVICE_TIER_KEY ,
1618 type ServiceTier ,
1719 ApiProviderError ,
1820} from "@roo-code/types"
@@ -318,7 +320,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
318320 max_output_tokens ?: number
319321 store ?: boolean
320322 instructions ?: string
321- service_tier ?: ServiceTier
323+ [ SERVICE_TIER_KEY ] ?: ServiceTier
322324 include ?: string [ ]
323325 /** Prompt cache retention policy: "in_memory" (default) or "24h" for extended caching */
324326 prompt_cache_retention ?: "in_memory" | "24h"
@@ -369,8 +371,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
369371 ...( model . maxTokens ? { max_output_tokens : model . maxTokens } : { } ) ,
370372 // Include tier when selected and supported by the model, or when explicitly "default"
371373 ...( requestedTier &&
372- ( requestedTier === "default" || allowedTierNames . has ( requestedTier ) ) && {
373- service_tier : requestedTier ,
374+ ( requestedTier === OpenAiServiceTier . Default || allowedTierNames . has ( requestedTier ) ) && {
375+ [ SERVICE_TIER_KEY ] : requestedTier ,
374376 } ) ,
375377 // Enable extended prompt cache retention for models that support it.
376378 // This uses the OpenAI Responses API `prompt_cache_retention` parameter.
@@ -705,8 +707,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
705707 const parsed = JSON . parse ( data )
706708
707709 // Capture resolved service tier if present
708- if ( parsed . response ?. service_tier ) {
709- this . lastServiceTier = parsed . response . service_tier as ServiceTier
710+ if ( parsed . response ?. [ SERVICE_TIER_KEY ] ) {
711+ this . lastServiceTier = parsed . response [ SERVICE_TIER_KEY ] as ServiceTier
710712 }
711713 // Capture complete output array (includes reasoning items with encrypted_content)
712714 if ( parsed . response ?. output && Array . isArray ( parsed . response . output ) ) {
@@ -1016,8 +1018,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
10161018 }
10171019 } else if ( parsed . type === "response.completed" || parsed . type === "response.done" ) {
10181020 // Capture resolved service tier if present
1019- if ( parsed . response ?. service_tier ) {
1020- this . lastServiceTier = parsed . response . service_tier as ServiceTier
1021+ if ( parsed . response ?. [ SERVICE_TIER_KEY ] ) {
1022+ this . lastServiceTier = parsed . response [ SERVICE_TIER_KEY ] as ServiceTier
10211023 }
10221024 // Capture top-level response id
10231025 if ( parsed . response ?. id ) {
@@ -1146,8 +1148,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
11461148 */
11471149 private async * processEvent ( event : any , model : OpenAiNativeModel ) : ApiStream {
11481150 // Capture resolved service tier when available
1149- if ( event ?. response ?. service_tier ) {
1150- this . lastServiceTier = event . response . service_tier as ServiceTier
1151+ if ( event ?. response ?. [ SERVICE_TIER_KEY ] ) {
1152+ this . lastServiceTier = event . response [ SERVICE_TIER_KEY ] as ServiceTier
11511153 }
11521154 // Capture complete output array (includes reasoning items with encrypted_content)
11531155 if ( event ?. response ?. output && Array . isArray ( event . response . output ) ) {
@@ -1418,7 +1420,7 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
14181420 * If no tier or no overrides exist, the original ModelInfo is returned.
14191421 */
14201422 private applyServiceTierPricing ( info : ModelInfo , tier ?: ServiceTier ) : ModelInfo {
1421- if ( ! tier || tier === "default" ) return info
1423+ if ( ! tier || tier === OpenAiServiceTier . Default ) return info
14221424
14231425 // Find the tier with matching name in the tiers array
14241426 const tierInfo = info . tiers ?. find ( ( t ) => t . name === tier )
@@ -1512,8 +1514,8 @@ export class OpenAiNativeHandler extends BaseProvider implements SingleCompletio
15121514 // Include service tier if selected and supported
15131515 const requestedTier = ( this . options . openAiNativeServiceTier as ServiceTier | undefined ) || undefined
15141516 const allowedTierNames = new Set ( model . info . tiers ?. map ( ( t ) => t . name ) . filter ( Boolean ) || [ ] )
1515- if ( requestedTier && ( requestedTier === "default" || allowedTierNames . has ( requestedTier ) ) ) {
1516- requestBody . service_tier = requestedTier
1517+ if ( requestedTier && ( requestedTier === OpenAiServiceTier . Default || allowedTierNames . has ( requestedTier ) ) ) {
1518+ requestBody [ SERVICE_TIER_KEY ] = requestedTier
15171519 }
15181520
15191521 // Add reasoning if supported
0 commit comments