File size: 1,825 Bytes
a82f275
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import os
from dotenv import load_dotenv

# ----------------------------
# Load .env
# ----------------------------
load_dotenv()


def get_env_var(name: str, required: bool = True, default: str | None = None) -> str | None:
    """Safely get an environment variable or raise a clear error if missing."""
    value = os.getenv(name, default)
    if required and not value:
        raise ValueError(f"Missing required environment variable: {name}")
    return value

# ----------------------------
# Detect which mode we're in
# ----------------------------
PROXY_TOKEN = os.getenv("PROXY_API_KEY")
PROXY_BASE_URL = os.getenv("PROXY_BASE_URL")

if PROXY_TOKEN and PROXY_BASE_URL:
    MODE = "proxy"
    os.environ["OPENAI_API_KEY"] = PROXY_TOKEN
    os.environ["OPENAI_BASE_URL"] = PROXY_BASE_URL
else:
    MODE = "direct"
    os.environ["OPENAI_API_KEY"] = get_env_var("OPENAI_API_KEY")
    if base_url := os.getenv("OPENAI_BASE_URL"):
        os.environ["OPENAI_BASE_URL"] = base_url

# ----------------------------
# Exported values
# ----------------------------
OPENAI_API_KEY = os.environ["OPENAI_API_KEY"]
OPENAI_BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1")

# ----------------------------
# Optional logging for clarity
# ----------------------------
print(f"[config] Mode: {MODE.upper()} | Base URL: {OPENAI_BASE_URL}")

LLM_MODEL = os.getenv("OPENAI_MODEL", "gpt-4o-mini")  # or gpt-4o, gpt-4o-mini
LLM_TEMPERATURE = float(os.getenv("LLM_TEMPERATURE", "0"))

# Hard blocks (defense-in-depth)
FORBIDDEN_KEYWORDS = {
    "ATTACH", "PRAGMA",
    "CREATE", "DROP", "ALTER", "VACUUM", "REINDEX", "TRIGGER",
    "INSERT", "UPDATE", "DELETE", "REPLACE",
    "GRANT", "REVOKE",
    "BEGIN", "END", "COMMIT", "ROLLBACK",
    "DETACH",
}
FORBIDDEN_TABLES = {"sqlite_master", "sqlite_temp_master"}