mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-06-17 02:05:22 -04:00
Fix issue 135 chat context bleed (#281)
* Fix issue 135 chat context bleed * Guard task delivery metadata access
This commit is contained in:
+18
-1
@@ -525,7 +525,24 @@ def setup_chat_routes(
|
||||
_doc_q = _doc_db.query(DBDocument).filter(DBDocument.id == active_doc_id)
|
||||
active_doc = _owner_session_filter(_doc_q, ctx.user).first()
|
||||
if active_doc:
|
||||
logger.info(f"[doc-inject] found by ID: title={active_doc.title!r}, lang={active_doc.language!r}, is_active={active_doc.is_active}, content_len={len(active_doc.current_content or '')}")
|
||||
doc_session = active_doc.session_id
|
||||
doc_owner = getattr(active_doc, "owner", None)
|
||||
if doc_owner and ctx.user and doc_owner != ctx.user:
|
||||
logger.warning(
|
||||
"[doc-inject] ignoring active_doc_id %s owned by another user",
|
||||
active_doc_id,
|
||||
)
|
||||
active_doc = None
|
||||
elif doc_session and doc_session != session:
|
||||
logger.warning(
|
||||
"[doc-inject] ignoring stale active_doc_id %s from session %s while in session %s",
|
||||
active_doc_id,
|
||||
doc_session,
|
||||
session,
|
||||
)
|
||||
active_doc = None
|
||||
else:
|
||||
logger.info(f"[doc-inject] found by ID: title={active_doc.title!r}, lang={active_doc.language!r}, is_active={active_doc.is_active}, content_len={len(active_doc.current_content or '')}")
|
||||
else:
|
||||
logger.warning(f"[doc-inject] NOT FOUND by ID {active_doc_id}")
|
||||
if not active_doc:
|
||||
|
||||
@@ -94,7 +94,6 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/api", tags=["sessions"])
|
||||
|
||||
|
||||
def _current_user_is_admin(request: Request, user: str | None) -> bool:
|
||||
if not user:
|
||||
return False
|
||||
@@ -142,6 +141,17 @@ def _persist_session_headers(session_id: str, headers: dict | None) -> None:
|
||||
db.close()
|
||||
|
||||
|
||||
_HIDDEN_SYSTEM_SESSION_NAMES = {
|
||||
"[Task] Chat Sessions Tidy",
|
||||
"[Task] Documents Tidy",
|
||||
"[Task] Memory Tidy",
|
||||
"[Task] Research Tidy",
|
||||
"[Task] Email Mark Boundaries",
|
||||
"[Task] Email Tags",
|
||||
"[Task] Skills Audit",
|
||||
}
|
||||
|
||||
|
||||
def _pick_endpoint_for_sort(owner=None):
|
||||
"""Pick model endpoint for auto-sort LLM call — uses utility endpoint setting, falls back to default."""
|
||||
from src.endpoint_resolver import resolve_endpoint
|
||||
@@ -265,7 +275,8 @@ def setup_session_routes(session_manager: SessionManager, config: dict, webhook_
|
||||
"message_count": msg_count_map.get(s.id, 0)}
|
||||
for s in user_sessions.values()
|
||||
if not s.archived
|
||||
and (s.name or "").strip() not in ("Nobody", "Incognito")]
|
||||
and (s.name or "").strip() not in ("Nobody", "Incognito")
|
||||
and (s.name or "").strip() not in _HIDDEN_SYSTEM_SESSION_NAMES]
|
||||
|
||||
return sessions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user