diff --git a/cortex/context_loader.py b/cortex/context_loader.py index f1a1a7f..bf7974e 100644 --- a/cortex/context_loader.py +++ b/cortex/context_loader.py @@ -21,6 +21,7 @@ def load_context( include_short: bool = True, role_append: str = "", inject_datetime: bool = True, + mode: str = "chat", ) -> str: """ Build the system-prompt context block for a given tier and memory toggles. @@ -39,10 +40,18 @@ def load_context( inara_dir = persona_path() parts = [] - # ── 0. Current date and time (per-role toggle — injected first so it's prominent) ── + # ── 0. System block — date/time and session mode (injected first so it's prominent) ── + system_lines = [] if inject_datetime: now = datetime.now().astimezone() - parts.append(f"--- System ---\nCurrent date and time: {now.strftime('%A, %Y-%m-%d at %I:%M %p %Z')}") + system_lines.append(f"Current date and time: {now.strftime('%A, %Y-%m-%d at %I:%M %p %Z')}") + if mode == "otr": + system_lines.append( + "Current mode: Off The Record — " + "this conversation is private and will not be logged or included in memory distillation" + ) + if system_lines: + parts.append("--- System ---\n" + "\n".join(system_lines)) # ── 1. Core identity (always) ────────────────────────────────── for filename in _CORE: diff --git a/cortex/routers/chat.py b/cortex/routers/chat.py index bec1b48..39ef95e 100644 --- a/cortex/routers/chat.py +++ b/cortex/routers/chat.py @@ -95,6 +95,7 @@ async def _stream_chat(req: ChatRequest): include_long=req.include_long, include_mid=req.include_mid, include_short=req.include_short, + mode="otr" if req.off_record else "chat", ) history = load_session(session_id) history.append({"role": "user", "content": req.message})