70 lines
1.7 KiB
Python
70 lines
1.7 KiB
Python
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,
|
|
}
|