aimevzulari's picture
Upload 19 files
bed5cc5 verified
"""
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}")