feature/codex-cli

This commit is contained in:
DhanushSantosh
2026-01-06 04:52:25 +05:30
parent 4d4025ca06
commit a57dcc170d
54 changed files with 5562 additions and 91 deletions

View File

@@ -2,13 +2,26 @@ import { useState, useCallback } from 'react';
import { createLogger } from '@automaker/utils/logger';
interface UseCliStatusOptions {
cliType: 'claude';
cliType: 'claude' | 'codex';
statusApi: () => Promise<any>;
setCliStatus: (status: any) => void;
setAuthStatus: (status: any) => void;
}
// Create logger once outside the hook to prevent infinite re-renders
const VALID_AUTH_METHODS = {
claude: [
'oauth_token_env',
'oauth_token',
'api_key',
'api_key_env',
'credentials_file',
'cli_authenticated',
'none',
],
codex: ['cli_authenticated', 'api_key', 'api_key_env', 'none'],
} as const;
// Create logger outside of the hook to avoid re-creating it on every render
const logger = createLogger('CliStatus');
export function useCliStatus({
@@ -38,29 +51,31 @@ export function useCliStatus({
if (result.auth) {
// Validate method is one of the expected values, default to "none"
const validMethods = [
'oauth_token_env',
'oauth_token',
'api_key',
'api_key_env',
'credentials_file',
'cli_authenticated',
'none',
] as const;
const validMethods = VALID_AUTH_METHODS[cliType] ?? ['none'] as const;
type AuthMethod = (typeof validMethods)[number];
const method: AuthMethod = validMethods.includes(result.auth.method as AuthMethod)
? (result.auth.method as AuthMethod)
: 'none';
const authStatus = {
authenticated: result.auth.authenticated,
method,
hasCredentialsFile: false,
oauthTokenValid: result.auth.hasStoredOAuthToken || result.auth.hasEnvOAuthToken,
apiKeyValid: result.auth.hasStoredApiKey || result.auth.hasEnvApiKey,
hasEnvOAuthToken: result.auth.hasEnvOAuthToken,
hasEnvApiKey: result.auth.hasEnvApiKey,
};
setAuthStatus(authStatus);
if (cliType === 'claude') {
setAuthStatus({
authenticated: result.auth.authenticated,
method,
hasCredentialsFile: false,
oauthTokenValid: result.auth.hasStoredOAuthToken || result.auth.hasEnvOAuthToken,
apiKeyValid: result.auth.hasStoredApiKey || result.auth.hasEnvApiKey,
hasEnvOAuthToken: result.auth.hasEnvOAuthToken,
hasEnvApiKey: result.auth.hasEnvApiKey,
});
} else {
setAuthStatus({
authenticated: result.auth.authenticated,
method,
hasAuthFile: result.auth.hasAuthFile ?? false,
hasApiKey: result.auth.hasApiKey ?? false,
hasEnvApiKey: result.auth.hasEnvApiKey ?? false,
});
}
}
}
} catch (error) {