from pydantic_settings import BaseSettings class Settings(BaseSettings): # LLM ANTHROPIC_API_KEY: str # Gitea GITEA_URL: str = "http://gitea:3000" GITEA_EXTERNAL_URL: str = "https://ayuriel.duckdns.org" GITEA_TOKEN: str GITEA_WEBHOOK_SECRET: str # Discord DISCORD_TOKEN: str DISCORD_CHANNEL_ID: str = "" DISCORD_BOT_USER_ID: str = "" # LangGraph LANGGRAPH_URL: str = "http://langgraph-server:8123" # Agent AUTONOMY_LEVEL: str = "conservative" DEFAULT_REPO_OWNER: str = "quant" DEFAULT_REPO_NAME: str = "galaxis-po" AGENT_API_KEY: str = "" # Sandbox SANDBOX_IMAGE: str = "galaxis-sandbox:latest" SANDBOX_MEM_LIMIT: str = "4g" SANDBOX_CPU_COUNT: int = 2 SANDBOX_TIMEOUT: int = 600 SANDBOX_PIDS_LIMIT: int = 256 # Database TEST_DATABASE_URL: str = "" # Encryption FERNET_KEY: str = "" # Path access control WRITABLE_PATHS: list[str] = [ "backend/app/", "backend/tests/", "frontend/src/", "backend/alembic/versions/", "docs/", ] BLOCKED_PATHS: list[str] = [ ".env", "docker-compose.prod.yml", "quant.md", ] # Auto merge AUTO_MERGE: bool = False REQUIRE_TESTS: bool = True REQUIRE_E2E: bool = False MAX_FILES_CHANGED: int = 10 # Cost limits DAILY_COST_LIMIT_USD: float = 10.0 PER_TASK_COST_LIMIT_USD: float = 3.0 # Logging LOG_FORMAT: str = "json" model_config = {"env_file": ".env", "extra": "ignore"}