""" Cursor Rules Generator - Configuration Settings This module contains the configuration settings for the Cursor Rules Generator application. """ import os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() class Settings: """Application settings.""" # Application settings APP_NAME = "Cursor Rules Generator" DEBUG = os.getenv("DEBUG", "False").lower() == "true" # API keys GEMINI_API_KEY = os.getenv("GEMINI_API_KEY", "") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "") OPENROUTER_API_KEY = os.getenv("OPENROUTER_API_KEY", "") # Default settings DEFAULT_PROVIDER = os.getenv("DEFAULT_PROVIDER", "gemini") DEFAULT_RULE_TYPE = os.getenv("DEFAULT_RULE_TYPE", "Always") # Storage settings STORAGE_TYPE = os.getenv("STORAGE_TYPE", "file") # "file" or "database" STORAGE_PATH = os.getenv("STORAGE_PATH", "./data") # Hugging Face deployment settings HF_SPACE_ID = os.getenv("HF_SPACE_ID", "") HF_TOKEN = os.getenv("HF_TOKEN", "") # API settings API_HOST = os.getenv("API_HOST", "0.0.0.0") API_PORT = int(os.getenv("API_PORT", "5000")) # CORS settings CORS_ORIGINS = os.getenv("CORS_ORIGINS", "*").split(",") # Rate limiting RATE_LIMIT_ENABLED = os.getenv("RATE_LIMIT_ENABLED", "True").lower() == "true" RATE_LIMIT = int(os.getenv("RATE_LIMIT", "100")) # requests per hour # Cache settings CACHE_ENABLED = os.getenv("CACHE_ENABLED", "True").lower() == "true" CACHE_EXPIRATION = int(os.getenv("CACHE_EXPIRATION", "3600")) # seconds # LLM provider settings GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta" OPENAI_API_URL = "https://api.openai.com/v1" OPENROUTER_API_URL = "https://openrouter.ai/api/v1" # LLM model settings DEFAULT_GEMINI_MODEL = os.getenv("DEFAULT_GEMINI_MODEL", "gemini-2.0-flash") DEFAULT_OPENAI_MODEL = os.getenv("DEFAULT_OPENAI_MODEL", "gpt-4o") DEFAULT_OPENROUTER_MODEL = os.getenv("DEFAULT_OPENROUTER_MODEL", "openai/gpt-4o") # Rule generation settings MAX_RULE_LENGTH = int(os.getenv("MAX_RULE_LENGTH", "10000")) DEFAULT_TEMPERATURE = float(os.getenv("DEFAULT_TEMPERATURE", "0.7")) @classmethod def get_api_key(cls, provider): """Get API key for the specified provider.""" if provider.lower() == "gemini": return cls.GEMINI_API_KEY elif provider.lower() == "openai": return cls.OPENAI_API_KEY elif provider.lower() == "openrouter": return cls.OPENROUTER_API_KEY else: raise ValueError(f"Unsupported provider: {provider}") @classmethod def get_api_url(cls, provider): """Get API URL for the specified provider.""" if provider.lower() == "gemini": return cls.GEMINI_API_URL elif provider.lower() == "openai": return cls.OPENAI_API_URL elif provider.lower() == "openrouter": return cls.OPENROUTER_API_URL else: raise ValueError(f"Unsupported provider: {provider}") @classmethod def get_default_model(cls, provider): """Get default model for the specified provider.""" if provider.lower() == "gemini": return cls.DEFAULT_GEMINI_MODEL elif provider.lower() == "openai": return cls.DEFAULT_OPENAI_MODEL elif provider.lower() == "openrouter": return cls.DEFAULT_OPENROUTER_MODEL else: raise ValueError(f"Unsupported provider: {provider}")