import streamlit as st import os import json import base64 import logging from datetime import datetime # Set page config - must be the first Streamlit command st.set_page_config( page_title="AI Writer - Content Generation Platform", page_icon="✍️", layout="wide", initial_sidebar_state="expanded", # Changed from collapsed to expanded menu_items={ 'Get Help': None, 'Report a bug': None, 'About': None } ) # Load and apply custom CSS with open('lib/workspace/alwrity_ui_styling.css', 'r') as f: css = f.read() st.markdown(f""" """, unsafe_allow_html=True) import os import json import base64 import logging import logging from datetime import datetime import os import json import base64 import logging from datetime import datetime # Configure logging logging.basicConfig( level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.StreamHandler(), # Output to console #logging.FileHandler('alwrity.log') # Output to file ] ) logger = logging.getLogger(__name__) from lib.utils.api_key_manager.api_key_manager import APIKeyManager, render from lib.utils.api_key_manager.validation import check_all_api_keys from dotenv import load_dotenv from lib.utils.ui_setup import setup_ui, setup_alwrity_ui def main(): """Main application entry point.""" # Initialize API key manager api_key_manager = APIKeyManager() # Setup UI setup_ui() #load_environment load_dotenv() logger.debug("Environment variables loaded") setup_environment_paths() logger.debug("Environment paths configured") # Check API keys and show setup if needed if not check_all_api_keys(api_key_manager): logger.info("API keys not verified") # Add CSS to hide sidebar during setup st.markdown(""" """, unsafe_allow_html=True) render(api_key_manager) return else: logger.info("All API keys verified") # Remove the CSS that hides the sidebar and ensure it's expanded st.markdown(""" """, unsafe_allow_html=True) # Set session state to ensure sidebar stays expanded if 'sidebar_expanded' not in st.session_state: st.session_state.sidebar_expanded = True # Force sidebar state st.sidebar.markdown(""" """, unsafe_allow_html=True) setup_alwrity_ui() def setup_environment_paths(): """Sets up environment paths for saving files and configurations.""" logger.debug("Setting up environment paths") try: os.environ["SEARCH_SAVE_FILE"] = os.path.join(os.getcwd(), "lib", "workspace", "alwrity_web_research", f"web_research_report_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}") os.environ["IMG_SAVE_DIR"] = os.path.join(os.getcwd(), "lib", "workspace", "alwrity_content") os.environ["CONTENT_SAVE_DIR"] = os.path.join(os.getcwd(), "lib", "workspace", "alwrity_content") os.environ["PROMPTS_DIR"] = os.path.join(os.getcwd(), "lib", "workspace", "alwrity_prompts") os.environ["ALWRITY_CONFIG"] = os.path.join(os.getcwd(), "lib", "workspace", "alwrity_config", "main_config.json") logger.info("Environment paths configured successfully") except Exception as e: logger.error(f"Error setting up environment paths: {str(e)}", exc_info=True) raise if __name__ == "__main__": main()