sieve / models.py
jampuramprem's picture
Resolved some keyword errors
f892d0d
from pydantic import BaseModel
from typing import Optional, List, Dict, Any
from enum import Enum
class ActionType(str, Enum):
CLASSIFY = "classify"
RESPOND = "respond"
ESCALATE = "escalate"
ARCHIVE = "archive"
SKIP = "skip"
class Category(str, Enum):
BILLING = "billing"
TECHNICAL = "technical"
GENERAL = "general"
SPAM = "spam"
ACCOUNT = "account"
FEATURE_REQUEST = "feature_request"
class Urgency(str, Enum):
HIGH = "high"
MEDIUM = "medium"
LOW = "low"
class Action(BaseModel):
action_type: ActionType
category: Optional[Category] = None
urgency: Optional[Urgency] = None
response_text: Optional[str] = None
escalation_reason: Optional[str] = None
email_id: Optional[str] = None
class Email(BaseModel):
id: str
subject: str
body: str
sender: str
sender_tier: str = "standard"
received_minutes_ago: int = 0
class Observation(BaseModel):
current_email: Optional[Email] = None
email_queue: List[Email] = []
processed_count: int = 0
step_count: int = 0
task_id: str = ""
task_description: str = ""
available_actions: List[str] = []
context: Dict[str, Any] = {}
class Reward(BaseModel):
value: float
components: Dict[str, float] = {}
reason: str = ""
class StepResult(BaseModel):
observation: Observation
reward: Reward
done: bool
info: Dict[str, Any] = {}