feat: add Codex OAuth login and fix channel config display

- Add OpenAI Codex Device Code Flow login (backend polling + frontend modal)
- Codex provider integrated into preset dropdown (hides URL/API key fields)
- Sync provider model catalogs with Hermes system
- Fix channel config not displaying on first visit (wait for data load)
- Fix sidebar model list not refreshing after adding provider
- Add autocomplete="off" to API key input to prevent browser autofill

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-17 23:11:57 +08:00
parent 26bb821e29
commit 9979871550
19 changed files with 722 additions and 6 deletions
@@ -0,0 +1,30 @@
import { request } from '../client'
export interface CodexStartResult {
session_id: string
user_code: string
verification_url: string
expires_in: number
}
export interface CodexPollResult {
status: 'pending' | 'approved' | 'expired' | 'error'
error: string | null
}
export interface CodexStatusResult {
authenticated: boolean
last_refresh?: string
}
export async function startCodexLogin(): Promise<CodexStartResult> {
return request<CodexStartResult>('/api/hermes/auth/codex/start', { method: 'POST' })
}
export async function pollCodexLogin(sessionId: string): Promise<CodexPollResult> {
return request<CodexPollResult>(`/api/hermes/auth/codex/poll/${sessionId}`)
}
export async function getCodexAuthStatus(): Promise<CodexStatusResult> {
return request<CodexStatusResult>('/api/hermes/auth/codex/status')
}