@@ -183,6 +183,9 @@ function resolveUsageCredentialProviderIds(params: {
183183 provider : UsageProviderId ;
184184} ) : string [ ] {
185185 const providerIds = new Set ( normalizeProviderIds ( [ params . provider ] ) ) ;
186+ if ( params . provider === "openai" ) {
187+ providerIds . add ( "openai-codex" ) ;
188+ }
186189 const providerIdSet = new Set ( providerIds ) ;
187190 try {
188191 const snapshot = loadManifestMetadataSnapshot ( {
@@ -211,6 +214,7 @@ function resolveUsageCredentialProviderIds(params: {
211214async function resolveOAuthToken ( params : {
212215 state : UsageAuthState ;
213216 provider : string ;
217+ usageProvider ?: UsageProviderId ;
214218} ) : Promise < ProviderAuth | null > {
215219 if ( ! params . state . allowAuthProfileStore ) {
216220 return null ;
@@ -241,7 +245,7 @@ async function resolveOAuthToken(params: {
241245 continue ;
242246 }
243247 return {
244- provider : params . provider as UsageProviderId ,
248+ provider : params . usageProvider ?? ( params . provider as UsageProviderId ) ,
245249 token : resolved . apiKey ,
246250 accountId :
247251 cred . type === "oauth" && "accountId" in cred
@@ -278,10 +282,26 @@ async function resolveProviderUsageAuthViaPlugin(params: {
278282 envDirect : options ?. envDirect ,
279283 } ) ,
280284 resolveOAuthToken : async ( options ) => {
281- const auth = await resolveOAuthToken ( {
282- state : params . state ,
283- provider : options ?. provider ?? params . provider ,
284- } ) ;
285+ const requestedProvider = options ?. provider ;
286+ const providers =
287+ requestedProvider &&
288+ normalizeProviderId ( requestedProvider ) !== normalizeProviderId ( params . provider )
289+ ? [ requestedProvider ]
290+ : resolveUsageCredentialProviderIds ( {
291+ state : params . state ,
292+ provider : params . provider ,
293+ } ) ;
294+ let auth : ProviderAuth | null = null ;
295+ for ( const provider of providers ) {
296+ auth = await resolveOAuthToken ( {
297+ state : params . state ,
298+ provider,
299+ usageProvider : params . provider ,
300+ } ) ;
301+ if ( auth ) {
302+ break ;
303+ }
304+ }
285305 return auth
286306 ? {
287307 token : auth . token ,
@@ -311,12 +331,18 @@ async function resolveProviderUsageAuthFallback(params: {
311331 state : UsageAuthState ;
312332 provider : UsageProviderId ;
313333} ) : Promise < ProviderAuth | null > {
314- const oauthToken = await resolveOAuthToken ( {
334+ for ( const provider of resolveUsageCredentialProviderIds ( {
315335 state : params . state ,
316336 provider : params . provider ,
317- } ) ;
318- if ( oauthToken ) {
319- return oauthToken ;
337+ } ) ) {
338+ const oauthToken = await resolveOAuthToken ( {
339+ state : params . state ,
340+ provider,
341+ usageProvider : params . provider ,
342+ } ) ;
343+ if ( oauthToken ) {
344+ return oauthToken ;
345+ }
320346 }
321347 if ( isOAuthOnlyUsageProvider ( params . provider ) ) {
322348 return null ;
0 commit comments