mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-06-26 21:39:43 +02:00
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""Resolve ``@chat`` mentions into pointer references.
|
|
|
|
Chats are not KB-indexed, so a chat reference is a pointer only; its turns are
|
|
read on demand via the chat read tool, not injected here. Access checking is
|
|
delegated to the authoritative referenced-chat resolver so the rules live in one
|
|
place.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.agents.chat.runtime.referenced_chat_context.resolver import (
|
|
resolve_referenced_chats,
|
|
)
|
|
|
|
from .models import ChatReference
|
|
|
|
|
|
async def resolve_chat_references(
|
|
session: AsyncSession,
|
|
*,
|
|
search_space_id: int,
|
|
requesting_user_id: str | None,
|
|
current_chat_id: int,
|
|
thread_ids: list[int],
|
|
) -> list[ChatReference]:
|
|
"""Map ``@chat`` thread ids to access-checked pointers (titles only)."""
|
|
if not thread_ids:
|
|
return []
|
|
|
|
chats = await resolve_referenced_chats(
|
|
session,
|
|
search_space_id=search_space_id,
|
|
requesting_user_id=requesting_user_id,
|
|
current_chat_id=current_chat_id,
|
|
mentioned_thread_ids=thread_ids,
|
|
)
|
|
return [
|
|
ChatReference(entity_id=chat.thread_id, label=chat.title) for chat in chats
|
|
]
|
|
|
|
|
|
__all__ = ["resolve_chat_references"]
|