| from pydantic import BaseModel, Field |
| from typing import List, Optional, Literal, Dict, Any |
|
|
| class Email(BaseModel): |
| id: str |
| subject: str |
| body: str |
|
|
| class TaskItem(BaseModel): |
| id: str |
| description: str |
| status: Literal["pending", "completed"] = "pending" |
|
|
| class CalendarEvent(BaseModel): |
| id: str |
| title: str |
| time: str |
|
|
| class Observation(BaseModel): |
| inbox: List[Email] |
| tasks: List[TaskItem] |
| calendar: List[CalendarEvent] |
|
|
| class Action(BaseModel): |
| action_type: Literal["classify_email", "extract_task", "schedule_meeting", "reply_email", "ignore_email"] |
| email_id: str |
| metadata: Optional[Dict[str, Any]] = Field(default_factory=dict) |
|
|
| class Reward(BaseModel): |
| value: float |
| info: str |
|
|
| class State(BaseModel): |
| observation: Observation |
| terminated: bool |
| step_count: int |
| total_reward: float |
|
|