File size: 3,635 Bytes
bed5cc5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
"""
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}")