phi-drift / core /config.py
crexs's picture
sync: update core/config.py
18a2271 verified
Raw
History Blame Contribute Delete
5.33 kB
"""DRIFT config shim backed by the Project DRIFT state-root adapter."""
from __future__ import annotations
import os
try:
from dotenv import load_dotenv
except Exception:
def load_dotenv(*_args, **_kwargs) -> bool: # type: ignore[misc]
return False
from infj_bot.config_adapter import (
CONFIG_DIR as CONFIG_DIR,
DATA_DIR as DATA_DIR,
DATA_ROOT as DATA_ROOT,
STATE_ROOT as STATE_ROOT,
SQLITE_DIR as SQLITE_DIR,
MEMORY_DIR as MEMORY_DIR,
CHROMA_DIR as CHROMA_DIR,
PERSIST_DIRECTORY as PERSIST_DIRECTORY,
COLD_STORAGE_DIR as COLD_STORAGE_DIR,
RECON_DIR as RECON_DIR,
EVALS_DIR as EVALS_DIR,
LOGS_DIR as LOGS_DIR,
PROJECT_ROOT as PROJECT_ROOT,
BEING_DB as BEING_DB,
BODY_DB as BODY_DB,
ARCHITECTURE_DB as ARCHITECTURE_DB,
ASPIRATIONS_DB as ASPIRATIONS_DB,
COGNITIVE_FACTORY_DB as COGNITIVE_FACTORY_DB,
CONSISTENCY_EVAL_DB as CONSISTENCY_EVAL_DB,
EMOTIONAL_FIELD_DB as EMOTIONAL_FIELD_DB,
EXPLORER_DB as EXPLORER_DB,
GOALS_DB as GOALS_DB,
GROWTH_DB as GROWTH_DB,
HEALTH_DB as HEALTH_DB,
HUMANITY_DB as HUMANITY_DB,
HOMEOSTASIS_DB as HOMEOSTASIS_DB,
IIT_DB as IIT_DB,
INTUITION_DB as INTUITION_DB,
METACOGNITION_DB as METACOGNITION_DB,
MODE_DISCRIMINATION_DB as MODE_DISCRIMINATION_DB,
PHYSICS_DB as PHYSICS_DB,
PREFS_DB as PREFS_DB,
PREDICTOR_DB as PREDICTOR_DB,
RELATIONSHIP_DB as RELATIONSHIP_DB,
RELIABILITY_DB as RELIABILITY_DB,
SCHEDULER_DB as SCHEDULER_DB,
SELF_EVAL_DB as SELF_EVAL_DB,
SELF_MODIFY_AUDIT_DB as SELF_MODIFY_AUDIT_DB,
SELF_MODIFY_DB as SELF_MODIFY_DB,
SHADOW_DB as SHADOW_DB,
TEMPORAL_DB as TEMPORAL_DB,
VALUES_DB as VALUES_DB,
WORKSPACE_DB as WORKSPACE_DB,
HISTORY_PATH as HISTORY_PATH,
TOOL_AUDIT_PATH as TOOL_AUDIT_PATH,
)
# Load project-root .env first, then canonical config dir .env
from infj_bot.config_adapter import PROJECT_ROOT_PATH
load_dotenv(PROJECT_ROOT_PATH / ".env", override=False)
load_dotenv(CONFIG_DIR / ".env", override=False)
API_KEY = (
os.getenv("API_KEY") or os.getenv("GEMINI_API_KEY") or os.getenv("GOOGLE_API_KEY")
)
REFLECTION_INTERVAL = int(os.getenv("REFLECTION_INTERVAL", "10"))
DRIFT_PRIMARY_MODEL = os.getenv(
"DRIFT_PRIMARY_MODEL", os.getenv("INFJ_PRIMARY_MODEL", "gemini-2.5-flash")
)
DRIFT_CRITIC_MODEL = os.getenv(
"DRIFT_CRITIC_MODEL", os.getenv("INFJ_CRITIC_MODEL", "gemini-2.5-flash")
)
_authorized_raw = os.getenv(
"DRIFT_AUTHORIZED_TARGETS", os.getenv("INFJ_AUTHORIZED_TARGETS", "")
)
DEFAULT_AUTHORIZED_TARGETS = set(
d.strip().lower() for d in _authorized_raw.split(",") if d.strip()
)
DRIFT_LOCAL_MODEL = os.getenv(
"DRIFT_LOCAL_MODEL", os.getenv("INFJ_LOCAL_MODEL", "qwen3:4b")
)
DRIFT_USE_LOCAL_FALLBACK = os.getenv(
"DRIFT_USE_LOCAL_FALLBACK",
os.getenv("INFJ_USE_LOCAL_FALLBACK", "true"),
).lower() in ("1", "true", "yes", "on")
OLLAMA_HOST = os.getenv("OLLAMA_HOST", "http://localhost:11434")
# Prefer local models (when available) over cloud for latency-sensitive usage.
DRIFT_PREFER_LOCAL = os.getenv(
"DRIFT_PREFER_LOCAL", os.getenv("INFJ_PREFER_LOCAL", "true")
).lower() in ("1", "true", "yes", "on")
# Runtime tuning: smaller history reduces prompt size and latency.
DRIFT_HISTORY_SIZE = int(
os.getenv("DRIFT_HISTORY_SIZE", os.getenv("INFJ_HISTORY_SIZE", "16"))
)
# Simple in-memory generation cache size to avoid repeat calls for identical prompts.
DRIFT_GEN_CACHE_SIZE = int(os.getenv("DRIFT_GEN_CACHE_SIZE", "128"))
# Groq High-Speed Inference Config
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
DRIFT_GROQ_MODEL = os.getenv("DRIFT_GROQ_MODEL", "llama-3.3-70b-versatile")
DRIFT_USE_GROQ = os.getenv("DRIFT_USE_GROQ", "true").lower() in (
"1",
"true",
"yes",
"on",
)
# Moonshot Kimi Config
KIMI_API_KEY = os.getenv("KIMI_API_KEY")
DRIFT_KIMI_MODEL = os.getenv("DRIFT_KIMI_MODEL", "moonshot-v1-8k")
DRIFT_USE_KIMI = os.getenv("DRIFT_USE_KIMI", "false").lower() in (
"1",
"true",
"yes",
"on",
)
KIMI_BASE_URL = os.getenv("KIMI_BASE_URL", "https://api.moonshot.cn/v1")
# Embedding config (use local hash-based embeddings on CPU for speed)
DRIFT_USE_LOCAL_EMBEDDINGS = os.getenv(
"DRIFT_USE_LOCAL_EMBEDDINGS", "false"
).lower() in ("1", "true", "yes", "on")
# Memory pruning config
MAX_MEMORIES = int(os.getenv("INFJ_MAX_MEMORIES", "2500"))
PRUNING_THRESHOLD = float(os.getenv("INFJ_PRUNING_THRESHOLD", "0.15"))
PRUNE_EVERY_N_TURNS = int(os.getenv("INFJ_PRUNE_EVERY_N_TURNS", "10"))
BACKGROUND_PRUNE_INTERVAL_SECONDS = int(
os.getenv("INFJ_PRUNE_INTERVAL_SEC", "1800")
) # 30 min
# Strong Continuous Mode Config
STRONG_CONTINUOUS_MODE = os.getenv("STRONG_CONTINUOUS_MODE", "true").lower() in (
"1",
"true",
"yes",
"on",
)
BACKGROUND_CYCLE_SECONDS = int(os.getenv("BACKGROUND_CYCLE_SECONDS", "20"))
SHADOW_INFLUENCE_WEIGHT = float(os.getenv("SHADOW_INFLUENCE_WEIGHT", "0.7"))
HOMEOSTASIS_DECAY_SLOW = os.getenv("HOMEOSTASIS_DECAY_SLOW", "true").lower() in (
"1",
"true",
"yes",
"on",
)
# Hugging Face Pro Inference Config
HF_PRO_TOKEN = os.getenv("HF_PRO_TOKEN")
DRIFT_HF_MODEL = os.getenv("DRIFT_HF_MODEL", "meta-llama/Meta-Llama-3-8B-Instruct")
DRIFT_USE_HF = os.getenv("DRIFT_USE_HF", "false").lower() in ("1", "true", "yes", "on")