Files
miku-discord/bot/routes/models.py
koko210Serve e6c818f647 fix: merge context + topic into single field — one clear purpose
- Removed separate 'topic' field from BipolarTriggerRequest model
- Removed topic parameter from force_trigger_argument, force_trigger_argument_from_message_id, and run_argument
- trigger_context now doubles as the argument theme: if provided by user, it becomes the topic;
  if blank, a random topic is selected from the rotation pool
- Web UI: replaced two confusing fields (Context + Topic) with one clear field labeled
  'What should they argue about? (optional)' with a plain-English description
- JS: removed topic field reference, context.trim() ensures empty strings aren't sent
2026-04-30 12:30:49 +03:00

101 lines
2.3 KiB
Python

"""Shared Pydantic request/response models used across route modules."""
from typing import List, Optional
from pydantic import BaseModel
class MoodSetRequest(BaseModel):
mood: str
class ConversationResetRequest(BaseModel):
user_id: str
class CustomPromptRequest(BaseModel):
prompt: str
class ServerConfigRequest(BaseModel):
guild_id: int
guild_name: str
autonomous_channel_id: int
autonomous_channel_name: str
bedtime_channel_ids: List[int] = None
enabled_features: List[str] = None
class EvilMoodSetRequest(BaseModel):
mood: str
class LogConfigUpdateRequest(BaseModel):
component: Optional[str] = None
enabled: Optional[bool] = None
enabled_levels: Optional[List[str]] = None
class LogFilterUpdateRequest(BaseModel):
exclude_paths: Optional[List[str]] = None
exclude_status: Optional[List[int]] = None
include_slow_requests: Optional[bool] = True
slow_threshold_ms: Optional[int] = 1000
class BipolarTriggerRequest(BaseModel):
channel_id: str # String to handle large Discord IDs from JS
message_id: str = None # Optional: starting message ID (string)
context: str = "" # Optional: argument theme/context — tells them what to argue about
class ManualCropRequest(BaseModel):
x: int
y: int
width: int
height: int
class DescriptionUpdateRequest(BaseModel):
description: str
class AlbumCropRequest(BaseModel):
x: int
y: int
width: int
height: int
class AlbumDescriptionRequest(BaseModel):
description: str
class BulkDeleteRequest(BaseModel):
entry_ids: List[str]
class ChatMessage(BaseModel):
message: str
model_type: str = "text" # "text" or "vision"
use_system_prompt: bool = True
image_data: Optional[str] = None # Base64 encoded image for vision model
conversation_history: Optional[List[dict]] = None # Previous messages in conversation
mood: str = "neutral" # Miku's mood for this conversation
class MemoryDeleteRequest(BaseModel):
confirmation: str
class MemoryEditRequest(BaseModel):
content: str
metadata: Optional[dict] = None
class MemoryCreateRequest(BaseModel):
content: str
collection: str # 'declarative' or 'episodic'
user_id: Optional[str] = None
source: Optional[str] = None
metadata: Optional[dict] = None