from typing import Any from pydantic import BaseModel class Chat(BaseModel): id: str name: str sn: str type: str is_public: bool | None = None members_count: int | None = None members: list[dict[str, Any]] | None = None class Message(BaseModel): id: str thread_sn: str | None = None time: int text: str sender_id: str file_snippets: str parts: list[dict[str, Any]] | None = None mentions: list[str] | None = None member_event: dict[str, Any] | None = None is_system: bool is_hidden: bool is_forward: bool is_quote: bool class ChatData(BaseModel): chat: Chat overlap_messages: list[Message] new_messages: list[Message] class IndexAPIRequest(BaseModel): data: ChatData class IndexAPIItem(BaseModel): page_content: str dense_content: str sparse_content: str message_ids: list[str] class IndexAPIResponse(BaseModel): results: list[IndexAPIItem] class SparseEmbeddingRequest(BaseModel): texts: list[str] class SparseVector(BaseModel): indices: list[int] values: list[float]