""" ML Training Command Classes This module implements commands for ML model training management. """ from typing import Optional, Dict, Any from dataclasses import dataclass, field from .base import TrixyCommand, CommandResponse, ValidationError @dataclass class TrainingStartCommand(TrixyCommand): """Command to start ML training.""" training_type: str = field(default="") # wakeword, voice_recognition model_name: str = field(default="") training_config: Dict[str, Any] = field(default_factory=dict) def validate(self) -> bool: if not self.training_type: raise ValidationError("TrainingStartCommand must have a training_type") return True def get_command_name(self) -> str: return "TrainingStartCommand" @dataclass class TrainingStopCommand(TrixyCommand): """Command to stop ML training.""" training_id: str = field(default="") def validate(self) -> bool: return True def get_command_name(self) -> str: return "TrainingStopCommand" @dataclass class TrainingStatusCommand(TrixyCommand): """Command to get training status.""" training_id: str = field(default="") def validate(self) -> bool: return True def get_command_name(self) -> str: return "TrainingStatusCommand" @dataclass class TrainingStartResponse(CommandResponse): """Response to training start command.""" training_started: bool = field(default=False) training_id: str = field(default="") def validate(self) -> bool: return True def get_response_name(self) -> str: return "TrainingStartResponse" @dataclass class TrainingStopResponse(CommandResponse): """Response to training stop command.""" training_stopped: bool = field(default=False) def validate(self) -> bool: return True def get_response_name(self) -> str: return "TrainingStopResponse" @dataclass class TrainingStatusResponse(CommandResponse): """Response to training status command.""" training_status: str = field(default="unknown") progress_data: Dict[str, Any] = field(default_factory=dict) def validate(self) -> bool: return True def get_response_name(self) -> str: return "TrainingStatusResponse" __all__ = [ "TrainingStartCommand", "TrainingStopCommand", "TrainingStatusCommand", "TrainingStartResponse", "TrainingStopResponse", "TrainingStatusResponse" ]