import os from datetime import timedelta from dotenv import load_dotenv load_dotenv() class Config: SECRET_KEY = os.environ.get("SECRET_KEY") or "dev-secret-key-change-in-production" Flask_ENV = os.environ.get("FLASK_ENV") or "development" Flask_DEBUG = os.environ.get("FLASK_DEBUG", "True").lower() == "true" Flask_HOST = os.environ.get("FLASK_HOST", "0.0.0.0") Flask_PORT = int(os.environ.get("FLASK_PORT", 5000)) DATABASE_URL = ( os.environ.get("DATABASE_URL") or "mysql+pymysql://sentclaw:sentclaw123@localhost:3306/sentclaw" ) REDIS_URL = os.environ.get("REDIS_URL") or "redis://:redis123@localhost:6379/0" JWT_SECRET_KEY = ( os.environ.get("JWT_SECRET_KEY") or "jwt-secret-key-change-in-production" ) JWT_ACCESS_TOKEN_EXPIRES = timedelta( seconds=int(os.environ.get("JWT_ACCESS_TOKEN_EXPIRES", 3600)) ) CORS_ORIGINS = os.environ.get( "CORS_ORIGINS", "http://localhost:5173,http://localhost:3000" ).split(",") UPLOAD_FOLDER = os.environ.get("UPLOAD_FOLDER", "uploads") MAX_CONTENT_LENGTH = int(os.environ.get("MAX_CONTENT_LENGTH", 16777216)) LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO") LOG_FILE = os.environ.get("LOG_FILE", "logs/app.log") LLM_TIMEOUT = 30 LLM_MAX_RETRIES = 3 MCP_TIMEOUT = 10 AGENT_MAX_ITERATIONS = 10 AGENT_THINKING_TIMEOUT = 60 MEMORY_WINDOW_SIZE = 10 MEMORY_COMPRESSION_THRESHOLD = 0.8 class DevelopmentConfig(Config): DEBUG = True class ProductionConfig(Config): DEBUG = False class TestingConfig(Config): TESTING = True DATABASE_URL = "sqlite:///:memory:" config_by_name = { "development": DevelopmentConfig, "production": ProductionConfig, "testing": TestingConfig, }