mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 06:42:03 +00:00
- Introduced a new method to check Codex authentication status, allowing for better handling of API keys and OAuth tokens. - Updated API key management to include OpenAI, enabling users to manage their keys more effectively. - Enhanced the CodexProvider to support session ID tracking and deduplication of text blocks in assistant messages. - Improved error handling and logging in authentication routes, providing clearer feedback to users. These changes improve the overall user experience and security of the Codex integration, ensuring smoother authentication processes and better management of API keys.
104 lines
3.0 KiB
TypeScript
104 lines
3.0 KiB
TypeScript
// @ts-nocheck
|
|
import { useMemo, useCallback } from 'react';
|
|
import { useSetupStore } from '@/store/setup-store';
|
|
import { getElectronAPI } from '@/lib/electron';
|
|
import { CliSetupStep } from './cli-setup-step';
|
|
import type { CodexAuthStatus } from '@/store/setup-store';
|
|
|
|
interface CodexSetupStepProps {
|
|
onNext: () => void;
|
|
onBack: () => void;
|
|
onSkip: () => void;
|
|
}
|
|
|
|
export function CodexSetupStep({ onNext, onBack, onSkip }: CodexSetupStepProps) {
|
|
const {
|
|
codexCliStatus,
|
|
codexAuthStatus,
|
|
setCodexCliStatus,
|
|
setCodexAuthStatus,
|
|
setCodexInstallProgress,
|
|
} = useSetupStore();
|
|
|
|
const statusApi = useCallback(
|
|
() => getElectronAPI().setup?.getCodexStatus() || Promise.reject(),
|
|
[]
|
|
);
|
|
|
|
const installApi = useCallback(
|
|
() => getElectronAPI().setup?.installCodex() || Promise.reject(),
|
|
[]
|
|
);
|
|
|
|
const verifyAuthApi = useCallback(
|
|
(method: 'cli' | 'api_key', apiKey?: string) =>
|
|
getElectronAPI().setup?.verifyCodexAuth(method, apiKey) || Promise.reject(),
|
|
[]
|
|
);
|
|
|
|
const config = useMemo(
|
|
() => ({
|
|
cliType: 'codex' as const,
|
|
displayName: 'Codex',
|
|
cliLabel: 'Codex CLI',
|
|
cliDescription: 'Use Codex CLI login',
|
|
apiKeyLabel: 'OpenAI API Key',
|
|
apiKeyDescription: 'Optional API key for Codex',
|
|
apiKeyProvider: 'openai' as const,
|
|
apiKeyPlaceholder: 'sk-...',
|
|
apiKeyDocsUrl: 'https://platform.openai.com/api-keys',
|
|
apiKeyDocsLabel: 'Get one from OpenAI',
|
|
apiKeyHelpText: "Don't have an API key?",
|
|
installCommands: {
|
|
macos: 'npm install -g @openai/codex',
|
|
windows: 'npm install -g @openai/codex',
|
|
},
|
|
cliLoginCommand: 'codex login',
|
|
testIds: {
|
|
installButton: 'install-codex-button',
|
|
verifyCliButton: 'verify-codex-cli-button',
|
|
verifyApiKeyButton: 'verify-codex-api-key-button',
|
|
apiKeyInput: 'openai-api-key-input',
|
|
saveApiKeyButton: 'save-openai-key-button',
|
|
deleteApiKeyButton: 'delete-openai-key-button',
|
|
nextButton: 'codex-next-button',
|
|
},
|
|
buildCliAuthStatus: (_previous: CodexAuthStatus | null) => ({
|
|
authenticated: true,
|
|
method: 'cli_authenticated',
|
|
hasAuthFile: true,
|
|
}),
|
|
buildApiKeyAuthStatus: (_previous: CodexAuthStatus | null) => ({
|
|
authenticated: true,
|
|
method: 'api_key',
|
|
hasApiKey: true,
|
|
}),
|
|
buildClearedAuthStatus: (_previous: CodexAuthStatus | null) => ({
|
|
authenticated: false,
|
|
method: 'none',
|
|
}),
|
|
statusApi,
|
|
installApi,
|
|
verifyAuthApi,
|
|
}),
|
|
[installApi, statusApi, verifyAuthApi]
|
|
);
|
|
|
|
return (
|
|
<CliSetupStep
|
|
config={config}
|
|
state={{
|
|
cliStatus: codexCliStatus,
|
|
authStatus: codexAuthStatus,
|
|
setCliStatus: setCodexCliStatus,
|
|
setAuthStatus: setCodexAuthStatus,
|
|
setInstallProgress: setCodexInstallProgress,
|
|
getStoreState: () => useSetupStore.getState().codexCliStatus,
|
|
}}
|
|
onNext={onNext}
|
|
onBack={onBack}
|
|
onSkip={onSkip}
|
|
/>
|
|
);
|
|
}
|