mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-07-12 22:42:13 +02:00
feat(chat): allow @-mentioning chat threads in new-chat requests
Extend the chat contract so a turn can reference other conversations: add the "thread" kind to MentionedDocumentInfo and a mentioned_thread_ids field on NewChatRequest and RegenerateRequest.
This commit is contained in:
parent
bbd095bd7d
commit
7169c22d29
1 changed files with 28 additions and 8 deletions
|
|
@ -203,11 +203,12 @@ class NewChatUserImagePart(BaseModel):
|
||||||
class MentionedDocumentInfo(BaseModel):
|
class MentionedDocumentInfo(BaseModel):
|
||||||
"""Display metadata for a single ``@``-mention chip.
|
"""Display metadata for a single ``@``-mention chip.
|
||||||
|
|
||||||
Carries a knowledge-base document, knowledge-base folder, or
|
Carries a knowledge-base document, knowledge-base folder, connected
|
||||||
connected account (discriminated by ``kind``). Each kind uses its
|
account, or another chat thread (discriminated by ``kind``). Each
|
||||||
real identity fields: docs carry ``document_type``, folders carry
|
kind uses its real identity fields: docs carry ``document_type``,
|
||||||
only their folder id/title, and connectors carry ``connector_type``
|
folders carry only their folder id/title, connectors carry
|
||||||
plus account metadata.
|
``connector_type`` plus account metadata, and threads carry only
|
||||||
|
their thread id/title.
|
||||||
|
|
||||||
``kind`` defaults to ``"doc"`` so legacy clients and persisted rows
|
``kind`` defaults to ``"doc"`` so legacy clients and persisted rows
|
||||||
that predate folder mentions deserialise unchanged.
|
that predate folder mentions deserialise unchanged.
|
||||||
|
|
@ -216,13 +217,14 @@ class MentionedDocumentInfo(BaseModel):
|
||||||
id: int
|
id: int
|
||||||
title: str = Field(..., min_length=1, max_length=500)
|
title: str = Field(..., min_length=1, max_length=500)
|
||||||
document_type: str | None = Field(default=None, min_length=1, max_length=100)
|
document_type: str | None = Field(default=None, min_length=1, max_length=100)
|
||||||
kind: Literal["doc", "folder", "connector"] = Field(
|
kind: Literal["doc", "folder", "connector", "thread"] = Field(
|
||||||
default="doc",
|
default="doc",
|
||||||
description=(
|
description=(
|
||||||
"Discriminator for the chip's referent: ``doc`` is a "
|
"Discriminator for the chip's referent: ``doc`` is a "
|
||||||
"knowledge-base ``Document`` row, ``folder`` is a "
|
"knowledge-base ``Document`` row, ``folder`` is a "
|
||||||
"knowledge-base ``Folder`` row, and ``connector`` is a "
|
"knowledge-base ``Folder`` row, ``connector`` is a "
|
||||||
"concrete connected account."
|
"concrete connected account, and ``thread`` is another "
|
||||||
|
"``NewChatThread`` referenced as read-only context."
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
connector_type: str | None = Field(default=None, max_length=100)
|
connector_type: str | None = Field(default=None, max_length=100)
|
||||||
|
|
@ -273,6 +275,16 @@ class NewChatRequest(BaseModel):
|
||||||
"prefer the exact account the user selected."
|
"prefer the exact account the user selected."
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
mentioned_thread_ids: list[int] | None = Field(
|
||||||
|
default=None,
|
||||||
|
description=(
|
||||||
|
"Other chat thread IDs the user @-mentioned. Each is "
|
||||||
|
"resolved (access-checked, same search space) into a "
|
||||||
|
"read-only ``<referenced_chat_context>`` block prepended to "
|
||||||
|
"the agent query. Display chips persist via the "
|
||||||
|
"``mentioned_documents`` list (kind=``thread``)."
|
||||||
|
),
|
||||||
|
)
|
||||||
disabled_tools: list[str] | None = (
|
disabled_tools: list[str] | None = (
|
||||||
None # Optional list of tool names the user has disabled from the UI
|
None # Optional list of tool names the user has disabled from the UI
|
||||||
)
|
)
|
||||||
|
|
@ -343,6 +355,14 @@ class RegenerateRequest(BaseModel):
|
||||||
)
|
)
|
||||||
mentioned_connector_ids: list[int] | None = None
|
mentioned_connector_ids: list[int] | None = None
|
||||||
mentioned_connectors: list[MentionedDocumentInfo] | None = None
|
mentioned_connectors: list[MentionedDocumentInfo] | None = None
|
||||||
|
mentioned_thread_ids: list[int] | None = Field(
|
||||||
|
default=None,
|
||||||
|
description=(
|
||||||
|
"Other chat thread IDs the user @-mentioned on the edited "
|
||||||
|
"user turn. Only used when ``user_query`` is non-None (edit). "
|
||||||
|
"Mirrors ``NewChatRequest.mentioned_thread_ids``."
|
||||||
|
),
|
||||||
|
)
|
||||||
disabled_tools: list[str] | None = None
|
disabled_tools: list[str] | None = None
|
||||||
filesystem_mode: Literal["cloud", "desktop_local_folder"] = "cloud"
|
filesystem_mode: Literal["cloud", "desktop_local_folder"] = "cloud"
|
||||||
client_platform: Literal["web", "desktop"] = "web"
|
client_platform: Literal["web", "desktop"] = "web"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue