7a7f3be0d2
T01 (P1): requested_model column in call_logs - Migration 009_requested_model.sql: ALTER TABLE call_logs ADD COLUMN requested_model - callLogs.ts: INSERT + SELECT updated to include requestedModel field T02 (P1): Strip empty text blocks from nested tool_result.content - New stripEmptyTextBlocks() recursive helper in openai-to-claude.ts - Applied on tool_result content before forwarding to Anthropic - Prevents 400 'text content blocks must be non-empty' errors T03 (P1): Parse x-codex-5h-*/x-codex-7d-* headers for precise quota reset - parseCodexQuotaHeaders() in codex.ts extracts usage/limit/resetAt - getCodexResetTime() returns furthest-out reset timestamp for safe unblocking T04 (P1): X-Session-Id header for external sticky routing - extractExternalSessionId() in sessionManager.ts reads x-session-id, x-omniroute-session, session-id headers with 'ext:' prefix to avoid collisions T06 (P2): account_deactivated permanent expired status on 401 - ACCOUNT_DEACTIVATED_SIGNALS constant + isAccountDeactivated() in accountFallback.ts - Returns 1-year cooldown (effectively permanent) to prevent retrying dead accounts T07 (P2): X-Forwarded-For IP validation - New src/lib/ipUtils.ts with extractClientIp() and getClientIpFromRequest() - Skips 'unknown'/non-IP entries in X-Forwarded-For chain T10 (P2): credits_exhausted distinct account status - CREDITS_EXHAUSTED_SIGNALS + isCreditsExhausted() in accountFallback.ts - Returns 1h cooldown with creditsExhausted flag, distinct from rate_limit 429 T11 (P1): max reasoning_effort -> budget_tokens: 131072 - EFFORT_BUDGETS and THINKING_LEVEL_MAP updated with max: 131072, xhigh: 131072 - Reverse mapping now returns 'max' for full-budget responses - Unit test updated to expect 'max' (was 'high') T12 (P3): Model pricing updates - MiniMax M2.7 / MiniMax-M2.7 / minimax-m2.7-highspeed pricing added T15 (P1): Array content normalization for system/tool messages - normalizeContentToString() helper exported from openai-to-claude.ts - System messages with array content now correctly collapsed to string