100 lines
2.5 KiB
Python
100 lines
2.5 KiB
Python
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
|
|
first_mes_override: Optional[str] = None
|
|
# After arc completion: "user" = injection only, player speaks next;
|
|
# "character" = injection then character opens the new arc.
|
|
new_arc_first: Optional[str] = None
|
|
|
|
|
|
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 RebindPersonaRequest(BaseModel):
|
|
persona_id: str
|
|
clear_history: bool = False
|
|
|
|
|
|
class QuestStatusPatch(BaseModel):
|
|
status: str
|
|
|
|
|
|
class RpgStateDebugPatch(BaseModel):
|
|
"""Debug override for relationship/stats (session-scoped to current player for now)."""
|
|
affinity: Optional[int] = None
|
|
lust: Optional[int] = None
|
|
stamina: Optional[int] = None
|
|
tension: Optional[int] = None
|
|
|
|
|
|
class SessionContextPatch(BaseModel):
|
|
"""Live-edit RPG / SD context fields for the active session."""
|
|
status_quo: Optional[str] = None
|
|
global_plot: Optional[str] = None
|
|
outfit_json: Optional[str] = None
|
|
scene_json: Optional[str] = None
|
|
facts_json: Optional[str] = None
|
|
plot_arc_json: Optional[str] = None
|
|
affinity: Optional[int] = None
|
|
lust: Optional[int] = None
|
|
stamina: Optional[int] = None
|
|
tension: Optional[int] = None
|
|
|
|
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 = ""
|