| """Task definitions shared by the Supermail environment.""" |
|
|
| from __future__ import annotations |
|
|
| from dataclasses import dataclass, field |
|
|
| BENCHMARK_NAME = "supermail" |
|
|
| PRIORITY_OPTIONS = ("urgent", "normal", "spam") |
| CATEGORY_OPTIONS = ("billing", "delivery", "technical", "general") |
| ACTION_OPTIONS = ("respond_immediately", "assign_to_team", "ignore") |
|
|
| FIELD_OPTIONS = { |
| "priority": list(PRIORITY_OPTIONS), |
| "category": list(CATEGORY_OPTIONS), |
| "action": list(ACTION_OPTIONS), |
| } |
|
|
|
|
| @dataclass(frozen=True) |
| class TaskDefinition: |
| """Single deterministic support triage task.""" |
|
|
| task_id: str |
| difficulty: str |
| objective: str |
| email: str |
| context: dict[str, str] |
| expected: dict[str, str] |
| field_weights: dict[str, float] |
| max_attempts: int = 4 |
| benchmark: str = BENCHMARK_NAME |
| guidance: str = field( |
| default=( |
| "Read the email and submit only the labels required for this task." |
| ) |
| ) |
|
|
| @property |
| def required_fields(self) -> list[str]: |
| return list(self.expected.keys()) |
|
|