diff --git a/lib/utils/api_key_manager/components/ai_providers.py b/lib/utils/api_key_manager/components/ai_providers.py index 1bc3d92e..441ef2f5 100644 --- a/lib/utils/api_key_manager/components/ai_providers.py +++ b/lib/utils/api_key_manager/components/ai_providers.py @@ -1,32 +1,245 @@ -"""AI providers setup component - Wrapper for the actual setup UI.""" +"""AI providers setup component.""" import streamlit as st from loguru import logger from typing import Dict, Any from ..manager import APIKeyManager -from .ai_providers_setup import render_ai_providers_setup # Import the refactored setup UI +from .base import render_navigation_buttons, render_step_indicator, render_tab_style +from ..wizard_state import next_step, update_progress +from datetime import datetime + +def validate_api_key(key: str) -> bool: + """Validate if an API key is properly formatted.""" + if not key: + return False + # Basic validation - check if key is not empty and has minimum length + return len(key.strip()) > 0 def render_ai_providers(api_key_manager: APIKeyManager) -> Dict[str, Any]: - """Renders the AI providers setup step by calling the dedicated setup function.""" - logger.debug("[render_ai_providers] Calling render_ai_providers_setup") + """Render the AI providers setup step.""" + logger.info("[render_ai_providers] Starting AI providers setup") try: - # The actual UI, saving, validation, and feedback are now handled within render_ai_providers_setup - # This function acts primarily as a placeholder in the step sequence if needed, - # or can be bypassed entirely if the main wizard calls render_ai_providers_setup directly. + # Initialize wizard state if not already initialized + if 'wizard_state' not in st.session_state: + st.session_state.wizard_state = { + 'current_step': 1, + 'total_steps': 6, + 'progress': 0, + 'completed_steps': set(), + 'last_updated': datetime.now() + } + logger.info("[render_ai_providers] Initialized wizard state") - # Store the manager instance if needed by other potential logic (unlikely now) - if 'api_key_manager' not in st.session_state: - st.session_state['api_key_manager'] = api_key_manager - - # Call the function that now contains all the rendering and logic for this step - component_state = render_ai_providers_setup(api_key_manager) + # Store API key manager in session state for update_progress + st.session_state['api_key_manager'] = api_key_manager + + # Main content + st.markdown(""" +
Configure your AI service providers for content generation
+Power your content with GPT-4 and GPT-3.5 models
+Leverage Google's powerful Gemini models
+Access Claude for advanced content generation
+Use Mistral's efficient language models
+