import CodexBarCore@MainActorextension StatusItemController { func runCodexLoginFlow() async { // This menu action still follows the ambient Codex login behavior. Managed-account authentication is // implemented separately, but wiring add/switch/re-auth UI through that service needs its own account-aware // flow so this entry point does not silently change what "Switch Account" means for existing users. self.codexAccountPromotionCoordinator.setLiveReauthenticationInProgress(true) defer { self.codexAccountPromotionCoordinator.setLiveReauthenticationInProgress(false) } #if DEBUG let result = if let override = self._test_codexAmbientLoginRunnerOverride { await override(120) } else { await CodexLoginRunner.run(timeout: 120) } #else let result = await CodexLoginRunner.run(timeout: 120) #endif guard !Task.isCancelled else { return } self.loginPhase = .idle self.presentCodexLoginResult(result) let outcome = self.describe(result.outcome) let length = result.output.count self.loginLogger.info("Codex login", metadata: ["outcome": outcome, "length": "\(length)"]) if case .success = result.outcome { self.postLoginNotification(for: .codex) } }}
import CodexBarCore
@MainActor
extension StatusItemController {
func runCodexLoginFlow() async {
// This menu action still follows the ambient Codex login behavior. Managed-account authentication is
// implemented separately, but wiring add/switch/re-auth UI through that service needs its own account-aware
// flow so this entry point does not silently change what "Switch Account" means for existing users.
self.codexAccountPromotionCoordinator.setLiveReauthenticationInProgress(true)
defer {
self.codexAccountPromotionCoordinator.setLiveReauthenticationInProgress(false)
}
#if DEBUG
let result =
if let override = self._test_codexAmbientLoginRunnerOverride {
await override(120)
} else {
await CodexLoginRunner.run(timeout: 120)
}
#else
let result = await CodexLoginRunner.run(timeout: 120)
#endif
guard !Task.isCancelled else { return }
self.loginPhase = .idle
self.presentCodexLoginResult(result)
let outcome = self.describe(result.outcome)
let length = result.output.count
self.loginLogger.info("Codex login", metadata: ["outcome": outcome, "length": "\(length)"])
if case .success = result.outcome {
self.postLoginNotification(for: .codex)
}
}
}