Spaces:
Running
Running
| import asyncio | |
| from dataclasses import dataclass, field | |
| from pydantic import BaseModel, Field | |
| from typing import Optional, Any | |
| # Search input schema for tools | |
| class SearchInput(BaseModel): | |
| query: str = Field(description="The search query or topic to look up") | |
| # Batch worker job dataclass | |
| class EmbeddingJob: | |
| """Batch embedding of multiple texts (for store_embeddings).""" | |
| job_id: str | |
| texts: list[str] | |
| done: asyncio.Event = field(default_factory=asyncio.Event) | |
| # Tutor query and response schemas | |
| class TutorQuery(BaseModel): | |
| query: str | |
| source_type: str = "web" | |
| material_id: Optional[str] = None | |
| session_id: Optional[str] = None # preferred | |
| memory_id: Optional[str] = None # legacy fallback | |
| class TutorResponse(BaseModel): | |
| answer: str | |
| source: str | |
| time_taken: float | |
| memory_id: str | |
| # Chat session models | |
| class SessionRequest(BaseModel): | |
| material_id: str | |
| title: Optional[str] = "Chat Session" | |
| class RenameSessionRequest(BaseModel): | |
| title: str | |
| class ExtractTitleRequest(BaseModel): | |
| query: str | |
| class SaveChatRequest(BaseModel): | |
| material_id: str | |
| messages: list[dict[str, Any]] | |