cortex 0.2.... i think?

This commit is contained in:
serversdwn
2025-11-29 05:14:32 -05:00
parent ebe3e27095
commit cc014d0a73
6 changed files with 338 additions and 4 deletions

View File

@@ -24,6 +24,7 @@ from neomem_client import NeoMemClient
INTAKE_API_URL = os.getenv("INTAKE_API_URL", "http://intake:7080")
NEOMEM_API = os.getenv("NEOMEM_API", "http://neomem-api:8000")
RELEVANCE_THRESHOLD = float(os.getenv("RELEVANCE_THRESHOLD", "0.4"))
VERBOSE_DEBUG = os.getenv("VERBOSE_DEBUG", "false").lower() == "true"
# Tools available for future autonomy features
TOOLS_AVAILABLE = ["RAG", "WEB", "WEATHER", "CODEBRAIN", "POKERBRAIN"]
@@ -36,6 +37,31 @@ SESSION_STATE: Dict[str, Dict[str, Any]] = {}
# Logger
logger = logging.getLogger(__name__)
# Set logging level based on VERBOSE_DEBUG
if VERBOSE_DEBUG:
logger.setLevel(logging.DEBUG)
# Console handler
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter(
'%(asctime)s [CONTEXT] %(levelname)s: %(message)s',
datefmt='%H:%M:%S'
))
logger.addHandler(console_handler)
# File handler - append to log file
try:
os.makedirs('/app/logs', exist_ok=True)
file_handler = logging.FileHandler('/app/logs/cortex_verbose_debug.log', mode='a')
file_handler.setFormatter(logging.Formatter(
'%(asctime)s [CONTEXT] %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
))
logger.addHandler(file_handler)
logger.debug("VERBOSE_DEBUG mode enabled for context.py - logging to file")
except Exception as e:
logger.debug(f"VERBOSE_DEBUG mode enabled for context.py - file logging failed: {e}")
# -----------------------------
# Session initialization
@@ -236,17 +262,30 @@ async def collect_context(session_id: str, user_prompt: str) -> Dict[str, Any]:
if session_id not in SESSION_STATE:
SESSION_STATE[session_id] = _init_session(session_id)
logger.info(f"Initialized new session: {session_id}")
if VERBOSE_DEBUG:
logger.debug(f"[COLLECT_CONTEXT] New session state: {SESSION_STATE[session_id]}")
state = SESSION_STATE[session_id]
if VERBOSE_DEBUG:
logger.debug(f"[COLLECT_CONTEXT] Session {session_id} - User prompt: {user_prompt[:100]}...")
# B. Calculate time delta
now = datetime.now()
time_delta_seconds = (now - state["last_timestamp"]).total_seconds()
minutes_since_last_msg = round(time_delta_seconds / 60.0, 2)
if VERBOSE_DEBUG:
logger.debug(f"[COLLECT_CONTEXT] Time since last message: {minutes_since_last_msg:.2f} minutes")
# C. Gather Intake context (multilevel summaries)
intake_data = await _get_intake_context(session_id)
if VERBOSE_DEBUG:
import json
logger.debug(f"[COLLECT_CONTEXT] Intake data retrieved:")
logger.debug(json.dumps(intake_data, indent=2, default=str))
# D. Search NeoMem for relevant memories
rag_results = await _search_neomem(
query=user_prompt,
@@ -254,6 +293,13 @@ async def collect_context(session_id: str, user_prompt: str) -> Dict[str, Any]:
limit=5
)
if VERBOSE_DEBUG:
logger.debug(f"[COLLECT_CONTEXT] NeoMem search returned {len(rag_results)} results")
for idx, result in enumerate(rag_results, 1):
score = result.get("score", 0)
data_preview = str(result.get("payload", {}).get("data", ""))[:100]
logger.debug(f" [{idx}] Score: {score:.3f} - {data_preview}...")
# E. Update session state
state["last_user_message"] = user_prompt
state["last_timestamp"] = now
@@ -279,6 +325,13 @@ async def collect_context(session_id: str, user_prompt: str) -> Dict[str, Any]:
f"{minutes_since_last_msg:.1f} minutes since last message"
)
if VERBOSE_DEBUG:
logger.debug(f"[COLLECT_CONTEXT] Final context state assembled:")
logger.debug(f" - Message count: {state['message_count']}")
logger.debug(f" - Mode: {state['mode']}, Mood: {state['mood']}")
logger.debug(f" - Active project: {state['active_project']}")
logger.debug(f" - Tools available: {TOOLS_AVAILABLE}")
return context_state