from dataclasses import dataclass from datetime import datetime @dataclass class Adventure: id: str user_id: str status: str # 'awaiting_first_entry' | 'active' | 'complete' | 'error' language: str source_language: str competencies: list[str] max_entry_count: int entry_story_text_target_length: dict # {"min": int, "max": int} title: str description: str | None plot_summary: str | None genres: list[str] setting: list[str] vibes: list[str] protagonist: list[str] created_at: datetime deleted_at: datetime | None @dataclass class AdventureEntry: id: str adventure_id: str generated_from_choice_id: str | None status: str # 'generating' | 'complete' | 'error' entry_index: int story_text: str | None gamemaster_notes: str | None llm_data: dict | None story_text_linguistic_data: dict | None pipeline_timing: dict | None created_at: datetime @dataclass class AdventureEntryPossibleChoice: id: str entry_id: str index: int label: str text: str @dataclass class AdventureEntryPossibleChoiceDecision: id: str choice_id: str user_id: str created_at: datetime @dataclass class AdventureEntryTranslation: id: str entry_id: str component_type: str target_language: str translated_text: str @dataclass class AdventureEntryAudio: id: str entry_id: str component_type: str tts_provider: str tts_options: dict | None file_name: str