@@ -578,7 +578,7 @@ export const OpenAIOAuthPlugin: Plugin = async ({ client }: PluginInput) => {
578578 }
579579 // Unknown disabled reasons are treated as legacy/manual disables.
580580 // Explicit login revival is reserved for accounts we know were disabled by auth failure.
581- return undefined ;
581+ return "user" satisfies AccountDisabledReason ;
582582 } ) ( ) ;
583583 const targetCoolingDownUntil =
584584 typeof target . coolingDownUntil === "number" && Number . isFinite ( target . coolingDownUntil )
@@ -1681,6 +1681,15 @@ export const OpenAIOAuthPlugin: Plugin = async ({ client }: PluginInput) => {
16811681 }
16821682 } ;
16831683
1684+ const setCachedAccountManager = ( manager : AccountManager ) : AccountManager => {
1685+ if ( cachedAccountManager && cachedAccountManager !== manager ) {
1686+ staleAccountManagersForCleanup . add ( cachedAccountManager ) ;
1687+ }
1688+ cachedAccountManager = manager ;
1689+ accountManagerPromise = Promise . resolve ( manager ) ;
1690+ return manager ;
1691+ } ;
1692+
16841693 const invalidateAccountManagerCache = ( ) : void => {
16851694 if ( cachedAccountManager ) {
16861695 staleAccountManagersForCleanup . add ( cachedAccountManager ) ;
@@ -1751,8 +1760,7 @@ export const OpenAIOAuthPlugin: Plugin = async ({ client }: PluginInput) => {
17511760 // refresh tokens with stale in-memory state.
17521761 if ( cachedAccountManager ) {
17531762 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
1754- cachedAccountManager = reloadedManager ;
1755- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
1763+ setCachedAccountManager ( reloadedManager ) ;
17561764 }
17571765
17581766 await showToast ( `Switched to account ${ index + 1 } ` , "info" ) ;
@@ -1821,8 +1829,7 @@ export const OpenAIOAuthPlugin: Plugin = async ({ client }: PluginInput) => {
18211829 if ( ! accountManagerPromise ) {
18221830 accountManagerPromise = AccountManager . loadFromDisk ( authFallback ) ;
18231831 }
1824- let accountManager = await accountManagerPromise ;
1825- cachedAccountManager = accountManager ;
1832+ let accountManager = setCachedAccountManager ( await accountManagerPromise ) ;
18261833 const refreshToken = authFallback ?. refresh ?? "" ;
18271834 const needsPersist =
18281835 refreshToken &&
@@ -4050,10 +4057,9 @@ while (attempted.size < Math.max(1, accountCount)) {
40504057 return `Switched to ${ label } but failed to persist. Changes may be lost on restart.` ;
40514058 }
40524059
4053- if ( cachedAccountManager ) {
4060+ if ( cachedAccountManager ) {
40544061 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
4055- cachedAccountManager = reloadedManager ;
4056- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
4062+ setCachedAccountManager ( reloadedManager ) ;
40574063 }
40584064
40594065 const label = formatCommandAccountLabel ( account , targetIndex ) ;
@@ -5110,8 +5116,7 @@ while (attempted.size < Math.max(1, accountCount)) {
51105116
51115117 if ( cachedAccountManager ) {
51125118 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5113- cachedAccountManager = reloadedManager ;
5114- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5119+ setCachedAccountManager ( reloadedManager ) ;
51155120 }
51165121 }
51175122
@@ -5355,8 +5360,7 @@ while (attempted.size < Math.max(1, accountCount)) {
53555360
53565361 if ( cachedAccountManager ) {
53575362 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5358- cachedAccountManager = reloadedManager ;
5359- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5363+ setCachedAccountManager ( reloadedManager ) ;
53605364 }
53615365
53625366 const accountLabel = formatCommandAccountLabel ( account , targetIndex ) ;
@@ -5456,8 +5460,7 @@ while (attempted.size < Math.max(1, accountCount)) {
54565460
54575461 if ( cachedAccountManager ) {
54585462 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5459- cachedAccountManager = reloadedManager ;
5460- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5463+ setCachedAccountManager ( reloadedManager ) ;
54615464 }
54625465
54635466 const accountLabel = formatCommandAccountLabel ( account , targetIndex ) ;
@@ -5534,8 +5537,7 @@ while (attempted.size < Math.max(1, accountCount)) {
55345537
55355538 if ( cachedAccountManager ) {
55365539 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5537- cachedAccountManager = reloadedManager ;
5538- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5540+ setCachedAccountManager ( reloadedManager ) ;
55395541 }
55405542
55415543 const accountLabel = formatCommandAccountLabel ( account , targetIndex ) ;
@@ -5851,8 +5853,7 @@ while (attempted.size < Math.max(1, accountCount)) {
58515853
58525854 if ( cachedAccountManager ) {
58535855 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5854- cachedAccountManager = reloadedManager ;
5855- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5856+ setCachedAccountManager ( reloadedManager ) ;
58565857 }
58575858
58585859 const remaining = storage . accounts . length ;
@@ -5946,8 +5947,7 @@ while (attempted.size < Math.max(1, accountCount)) {
59465947 await saveAccounts ( storage ) ;
59475948 if ( cachedAccountManager ) {
59485949 const reloadedManager = await AccountManager . loadFromDisk ( ) ;
5949- cachedAccountManager = reloadedManager ;
5950- accountManagerPromise = Promise . resolve ( reloadedManager ) ;
5950+ setCachedAccountManager ( reloadedManager ) ;
59515951 }
59525952 results . push ( "" ) ;
59535953 results . push ( `Summary: ${ refreshedCount } refreshed, ${ failedCount } failed` ) ;
0 commit comments