Agent-4 / Config.py
Erog0291's picture
Create Config.py
4e4a989 verified
Raw History Blame Contribute Delete
5.1 kB
"""STEW v2 β€” Configuration. All values from Hugging Face Secrets / environment vars."""
import os
class Config:
# ── OpenRouter ─────────────────────────────────────────────────────────────
OPENROUTER_API_KEY = os.environ.get("OPENROUTER_API_KEY", "")
OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"
OPENROUTER_SITE_URL = os.environ.get("SPACE_URL", "https://huggingface.co")
OPENROUTER_APP_NAME = "STEW-Agent-v2"
# ── Models ─────────────────────────────────────────────────────────────────
MODELS = {
"owl-alpha" : "openrouter/owl-alpha",
"gpt-oss-120b" : "openai/gpt-oss-120b:free",
"nemotron-nano" : "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free",
"deepseek" : "deepseek/deepseek-chat-v3-0324:free",
"qwen3" : "qwen/qwen3-235b-a22b:free",
"mistral" : "mistralai/mistral-small-3.2-24b-instruct:free",
}
DEFAULT_MODEL = "owl-alpha"
FAST_MODEL = "mistral" # used for swarm speed
REASONING_MODEL = "gpt-oss-120b"
# ── Telegram ───────────────────────────────────────────────────────────────
TELEGRAM_BOT_TOKEN = os.environ.get("TELEGRAM_BOT_TOKEN", "")
SPACE_URL = os.environ.get("SPACE_URL", "")
TELEGRAM_WEBHOOK_PATH = "/telegram/webhook"
# ── Discord ────────────────────────────────────────────────────────────────
DISCORD_BOT_TOKEN = os.environ.get("DISCORD_BOT_TOKEN", "")
# ── GitHub ─────────────────────────────────────────────────────────────────
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN", "")
# ── Image Generation ───────────────────────────────────────────────────────
TOGETHER_API_KEY = os.environ.get("TOGETHER_API_KEY", "") # optional, free fallback used
# ── Google ─────────────────────────────────────────────────────────────────
GOOGLE_CLIENT_ID = os.environ.get("GOOGLE_CLIENT_ID", "")
GOOGLE_CLIENT_SECRET = os.environ.get("GOOGLE_CLIENT_SECRET", "")
GOOGLE_ACCESS_TOKEN = os.environ.get("GOOGLE_ACCESS_TOKEN", "")
GOOGLE_REFRESH_TOKEN = os.environ.get("GOOGLE_REFRESH_TOKEN", "")
GOOGLE_REDIRECT_URI = os.environ.get("GOOGLE_REDIRECT_URI", "")
GMAIL_CLIENT_ID = os.environ.get("GMAIL_CLIENT_ID", "")
GMAIL_CLIENT_SECRET = os.environ.get("GMAIL_CLIENT_SECRET", "")
# ── Integrations ───────────────────────────────────────────────────────────
NOTION_TOKEN = os.environ.get("NOTION_TOKEN", "")
SLACK_BOT_TOKEN = os.environ.get("SLACK_BOT_TOKEN", "")
SLACK_CLIENT_SECRET = os.environ.get("SLACK_CLIENT_SECRET", "")
# ── Storage paths ──────────────────────────────────────────────────────────
DB_PATH = "/tmp/stew_v2.db"
SCHEDULER_DB_URL = "sqlite:////tmp/stew_scheduler.db"
VECTOR_DB_PATH = "/tmp/stew_vector_db"
SKILLS_DIR = "/tmp/stew_skills"
FILES_DIR = "/tmp/stew_files"
IMAGES_DIR = "/tmp/stew_images"
# ── Limits ─────────────────────────────────────────────────────────────────
MAX_SWARM_AGENTS = 50
MAX_MEMORY_TURNS = 30
MAX_RESPONSE_TOKENS = 2048
CODE_EXEC_TIMEOUT = 30 # seconds
@classmethod
def validate(cls):
issues = []
if not cls.OPENROUTER_API_KEY: issues.append("⚠️ OPENROUTER_API_KEY missing")
if not cls.TELEGRAM_BOT_TOKEN: issues.append("⚠️ TELEGRAM_BOT_TOKEN missing")
if not cls.SPACE_URL: issues.append("⚠️ SPACE_URL missing (Telegram webhook won't register)")
for i in issues: print(i)
# Create required dirs
import os
for d in [cls.SKILLS_DIR, cls.FILES_DIR, cls.IMAGES_DIR]:
os.makedirs(d, exist_ok=True)
return issues