diff --git a/src/cliproxy/auth/provider-refreshers/index.ts b/src/cliproxy/auth/provider-refreshers/index.ts index 232fe8c9..89df2ab2 100644 --- a/src/cliproxy/auth/provider-refreshers/index.ts +++ b/src/cliproxy/auth/provider-refreshers/index.ts @@ -35,6 +35,7 @@ export async function refreshToken( case 'iflow': case 'kiro': case 'ghcp': + case 'claude': return { success: false, error: `Token refresh not yet implemented for ${provider}`, diff --git a/src/web-server/routes/cliproxy-auth-routes.ts b/src/web-server/routes/cliproxy-auth-routes.ts index b72418d3..295d7070 100644 --- a/src/web-server/routes/cliproxy-auth-routes.ts +++ b/src/web-server/routes/cliproxy-auth-routes.ts @@ -71,6 +71,8 @@ router.get('/', async (_req: Request, res: Response): Promise => { iflow: 'iflow', kiro: 'kiro', copilot: 'ghcp', // CLIProxyAPI returns 'copilot', we map to 'ghcp' + anthropic: 'claude', // CLIProxyAPI returns 'anthropic', we map to 'claude' + claude: 'claude', }; // Update lastUsedAt for providers with recent activity diff --git a/ui/src/components/cliproxy/cliproxy-dialog.tsx b/ui/src/components/cliproxy/cliproxy-dialog.tsx index fa8fc3fb..3a848e0b 100644 --- a/ui/src/components/cliproxy/cliproxy-dialog.tsx +++ b/ui/src/components/cliproxy/cliproxy-dialog.tsx @@ -14,7 +14,7 @@ import { Label } from '@/components/ui/label'; import { useCreateVariant, useCliproxyAuth } from '@/hooks/use-cliproxy'; import { usePrivacy } from '@/contexts/privacy-context'; -const providers = ['gemini', 'codex', 'agy', 'qwen', 'iflow', 'kiro', 'ghcp'] as const; +const providers = ['gemini', 'codex', 'agy', 'qwen', 'iflow', 'kiro', 'ghcp', 'claude'] as const; const schema = z.object({ name: z @@ -41,6 +41,7 @@ const providerOptions = [ { value: 'iflow', label: 'iFlow' }, { value: 'kiro', label: 'Kiro (AWS)' }, { value: 'ghcp', label: 'GitHub Copilot (OAuth)' }, + { value: 'claude', label: 'Claude (Anthropic)' }, ]; export function CliproxyDialog({ open, onClose }: CliproxyDialogProps) { diff --git a/ui/src/components/setup/wizard/index.tsx b/ui/src/components/setup/wizard/index.tsx index 29e98e76..6c21af05 100644 --- a/ui/src/components/setup/wizard/index.tsx +++ b/ui/src/components/setup/wizard/index.tsx @@ -136,7 +136,15 @@ export function QuickSetupWizard({ open, onClose }: QuickSetupWizardProps) { try { await createMutation.mutateAsync({ name: variantName, - provider: selectedProvider as 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow', + provider: selectedProvider as + | 'gemini' + | 'codex' + | 'agy' + | 'qwen' + | 'iflow' + | 'kiro' + | 'ghcp' + | 'claude', model: modelName || undefined, account: selectedAccount?.id, }); diff --git a/ui/src/hooks/use-cliproxy-auth-flow.ts b/ui/src/hooks/use-cliproxy-auth-flow.ts index a91a05c3..4867c3a8 100644 --- a/ui/src/hooks/use-cliproxy-auth-flow.ts +++ b/ui/src/hooks/use-cliproxy-auth-flow.ts @@ -14,7 +14,7 @@ interface AuthFlowState { error: string | null; } -const VALID_PROVIDERS = ['gemini', 'codex', 'agy', 'qwen', 'iflow', 'kiro', 'ghcp']; +const VALID_PROVIDERS = ['gemini', 'codex', 'agy', 'qwen', 'iflow', 'kiro', 'ghcp', 'claude']; export function useCliproxyAuthFlow() { const [state, setState] = useState({ diff --git a/ui/src/lib/api-client.ts b/ui/src/lib/api-client.ts index 6f052997..db85b48e 100644 --- a/ui/src/lib/api-client.ts +++ b/ui/src/lib/api-client.ts @@ -47,7 +47,7 @@ export interface UpdateProfile { export interface Variant { name: string; - provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp'; + provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp' | 'claude'; settings: string; account?: string; port?: number; @@ -56,13 +56,13 @@ export interface Variant { export interface CreateVariant { name: string; - provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp'; + provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp' | 'claude'; model?: string; account?: string; } export interface UpdateVariant { - provider?: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp'; + provider?: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp' | 'claude'; model?: string; account?: string; } @@ -72,7 +72,7 @@ export interface OAuthAccount { id: string; email?: string; nickname?: string; - provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp'; + provider: 'gemini' | 'codex' | 'agy' | 'qwen' | 'iflow' | 'kiro' | 'ghcp' | 'claude'; isDefault: boolean; tokenFile: string; createdAt: string;