7ae2e77a44
gates / consistency-and-conventions (push) Failing after 11s
Each provider now has its own key: AI_GEMINI_API_KEY and OPENROUTER_API_KEY. No more shared AI_API_KEY that caused cross-provider key leakage (gemini getting openrouter key → 400 error). resolve_key() sets AI_API_KEY internally from the active provider's key for adapter use. Config UI shows both keys.