/** * Auth Handler for CLIProxyAPI * * Manages OAuth authentication for CLIProxy providers (Gemini, Codex, Antigravity). * CLIProxyAPI handles OAuth internally - we just need to: * 1. Check if auth exists (token files in CCS auth directory) * 2. Trigger OAuth flow by spawning binary with auth flag * 3. Auto-detect headless environments (SSH, no DISPLAY) * 4. Use --no-browser flag for headless, display OAuth URL for manual auth * * Token storage: ~/.ccs/cliproxy/auth// * Each provider has its own directory to avoid conflicts. * * This file is a facade that re-exports from the auth/ submodule. * The actual implementation is split across: * - auth/auth-types.ts - Types and OAuth configurations * - auth/token-manager.ts - Token storage/retrieval/validation * - auth/oauth-handler.ts - OAuth flow handling * - auth/environment-detector.ts - Headless detection and port management */ // Re-export types export type { AuthStatus, ProviderOAuthConfig, OAuthOptions } from './auth'; // Re-export configurations export { OAUTH_CALLBACK_PORTS, OAUTH_CONFIGS, PROVIDER_AUTH_PREFIXES, PROVIDER_TYPE_VALUES, getOAuthConfig, } from './auth'; // Re-export token management functions export { getProviderTokenDir, isTokenFileForProvider, isAuthenticated, getAuthStatus, getAllAuthStatus, clearAuth, displayAuthStatus, } from './auth'; // Re-export environment detection functions export { isHeadlessEnvironment, killProcessOnPort, getTimeoutTroubleshooting, showStep, } from './auth'; // Re-export OAuth handling functions export { triggerOAuth, ensureAuth } from './auth'; // Re-export account management initialization import { discoverExistingAccounts } from './account-manager'; /** * Initialize accounts registry from existing tokens * Should be called on startup to populate accounts from existing token files */ export function initializeAccounts(): void { discoverExistingAccounts(); }