feat: add shared runtime with FastAPI job server and safety pipeline

This commit is contained in:
Space-Banane
2026-05-27 17:43:51 +02:00
parent 84b0df520c
commit 10355bf11a
14 changed files with 1516 additions and 157 deletions

52
src/config.py Normal file
View File

@@ -0,0 +1,52 @@
from __future__ import annotations
import os
from dataclasses import dataclass
from pathlib import Path
from dotenv import load_dotenv
def _env_bool(name: str, default: bool = False) -> bool:
raw = os.getenv(name)
if raw is None:
return default
return raw.strip().lower() in {"1", "true", "yes", "on"}
@dataclass(frozen=True)
class AppConfig:
openai_api_key: str
screenjob_token: str
disable_ui: bool
default_model: str
safety_model: str
host: str
port: int
runs_dir: Path
db_path: Path
def load_app_config(cwd: Path) -> AppConfig:
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY", "").strip()
screenjob_token = os.getenv("SCREENJOB_TOKEN", "").strip()
default_model = os.getenv("SCREENJOB_DEFAULT_MODEL", "gpt-5.4-mini").strip() or "gpt-5.4-mini"
safety_model = os.getenv("SCREENJOB_SAFETY_MODEL", "gpt-5.4-mini").strip() or "gpt-5.4-mini"
host = os.getenv("SCREENJOB_HOST", "127.0.0.1").strip() or "127.0.0.1"
port = int(os.getenv("SCREENJOB_PORT", "8787").strip() or "8787")
runs_dir = cwd / "screenjob_runs"
db_path = cwd / "screenjob.db"
disable_ui = _env_bool("DISABLE_UI", default=False)
return AppConfig(
openai_api_key=openai_api_key,
screenjob_token=screenjob_token,
disable_ui=disable_ui,
default_model=default_model,
safety_model=safety_model,
host=host,
port=port,
runs_dir=runs_dir,
db_path=db_path,
)