from dataclasses import dataclass, field from typing import List, Optional, Dict, Any @dataclass class ExplainerScaffold: concept: Optional[str] = None ask: Optional[str] = None givens: List[str] = field(default_factory=list) target: Optional[str] = None setup_actions: List[str] = field(default_factory=list) intermediate_steps: List[str] = field(default_factory=list) first_move: Optional[str] = None next_hint: Optional[str] = None common_traps: List[str] = field(default_factory=list) variables_to_define: List[str] = field(default_factory=list) equations_to_form: List[str] = field(default_factory=list) answer_hidden: bool = True @dataclass class ExplainerResult: understood: bool = False topic: Optional[str] = None summary: Optional[str] = None teaching_points: List[str] = field(default_factory=list) scaffold: ExplainerScaffold = field(default_factory=ExplainerScaffold) meta: Dict[str, Any] = field(default_factory=dict)