mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-09 08:22:19 +02:00
Squash Odysseus development history
This commit is contained in:
@@ -215,6 +215,60 @@ def _search_like(
|
||||
return _rows_to_results(db, shaped, query, context_messages)
|
||||
|
||||
|
||||
def search_session_titles(
|
||||
query: str,
|
||||
limit: int = 20,
|
||||
owner: str | None = None,
|
||||
include_archived: bool = False,
|
||||
context_messages: int = 1,
|
||||
include_legacy_owner: bool = True,
|
||||
db=None,
|
||||
) -> list[SessionSearchResult]:
|
||||
"""Find transcripts by session title when the title is the user's cue.
|
||||
|
||||
``search_session_messages`` intentionally searches message content. The
|
||||
agent-facing chat tool also receives short requests such as a session
|
||||
title, so provide a scoped title lookup without weakening its owner or
|
||||
archived-session boundaries.
|
||||
"""
|
||||
query = (query or "").strip()
|
||||
if not query:
|
||||
return []
|
||||
|
||||
limit = max(1, min(int(limit or 20), 100))
|
||||
context_messages = max(0, min(int(context_messages or 0), 3))
|
||||
owns_db = db is None
|
||||
if owns_db:
|
||||
db = SessionLocal()
|
||||
try:
|
||||
sessions = db.query(DBSession).filter(
|
||||
DBSession.name.ilike(f"%{_escape_like(query)}%", escape="\\"),
|
||||
~DBSession.name.like("SFT trace batch%"),
|
||||
)
|
||||
if not include_archived:
|
||||
sessions = sessions.filter(DBSession.archived == False)
|
||||
sessions = _owner_filter(sessions, owner, include_legacy_owner)
|
||||
sessions = sessions.order_by(DBSession.updated_at.desc()).limit(limit).all()
|
||||
|
||||
rows = []
|
||||
for session in sessions:
|
||||
message = (
|
||||
db.query(DBChatMessage)
|
||||
.filter(
|
||||
DBChatMessage.session_id == session.id,
|
||||
DBChatMessage.role.in_(SEARCH_ROLES),
|
||||
)
|
||||
.order_by(DBChatMessage.timestamp.desc())
|
||||
.first()
|
||||
)
|
||||
if message is not None:
|
||||
rows.append((message, session.name, _snippet(message.content or "", query)))
|
||||
return _rows_to_results(db, rows, query, context_messages)
|
||||
finally:
|
||||
if owns_db:
|
||||
db.close()
|
||||
|
||||
|
||||
def _fetch_messages_by_id(db, message_ids):
|
||||
"""Fetch (message, session_name) for many message ids in a single query.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user