from pydantic import BaseModel from typing import Optional class ChatRequest(BaseModel): message: str session_id: str persona_id: Optional[str] = "default" is_narrator_choice: bool = False skip_user_add: bool = False class MessageEditRequest(BaseModel): content: str truncate_after: bool = False class RegenerateRequest(BaseModel): session_id: str persona_id: Optional[str] = "default" message_id: Optional[int] = None class ForkSessionRequest(BaseModel): until_message_id: int class ChatResponse(BaseModel): reply: str session_id: str image_prompt: Optional[str] = None class PersonaCreate(BaseModel): persona_id: str name: str emoji: str = "🤖" description: str = "" prompt: str = "" sd_enabled: bool = False lora_name: str = "" lora_weight: float = 0.8 appearance_tags: str = "" personality: str = "" scenario: str = "" first_mes: str = "" mes_example: str = "" lorebook_json: str = "[]" avatar_path: str = "" class PersonaResponse(BaseModel): persona_id: str name: str emoji: str description: str prompt: str custom: bool = False sd_enabled: bool = False lora_name: str = "" lora_weight: float = 0.8 appearance_tags: str = "" personality: str = "" scenario: str = "" first_mes: str = "" mes_example: str = "" lorebook_json: str = "[]" avatar_path: str = ""