| """Base task class.""" |
|
|
| import random |
| from typing import Dict, Optional |
|
|
| from server.models import TaskDifficulty |
|
|
|
|
| class BaseTask: |
| NAME = "Base Task" |
| DESCRIPTION = "Base task" |
| DIFFICULTY = TaskDifficulty.EASY |
| AVAILABLE_SECRETS: list = [] |
| SCENARIOS: list = [] |
|
|
| def load_scenario(self, scenario_id: Optional[str] = None) -> Dict: |
| if not self.SCENARIOS: |
| raise ValueError(f"Task {self.__class__.__name__} has no scenarios defined") |
| if scenario_id: |
| for scenario in self.SCENARIOS: |
| if scenario["id"] == scenario_id: |
| return scenario |
| raise ValueError(f"Unknown scenario: {scenario_id}") |
| return random.choice(self.SCENARIOS) |
|
|