File size: 987 Bytes
b0ee7e5 687083b b0ee7e5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# schemas.py
from pydantic import BaseModel, EmailStr
from typing import List, Literal, Optional, Union
class FetchEmailsParams(BaseModel):
query: str # Natural language query with sender and date info (e.g., "show me mails for last week from swiggy")
class ShowEmailParams(BaseModel):
message_id: str
class AnalyzeEmailsParams(BaseModel):
emails: List[dict]
class DraftReplyParams(BaseModel):
email: dict
tone: Optional[Literal["formal", "informal"]] = "formal"
class SendReplyParams(BaseModel):
message_id: str
reply_body: str
ToolParams = Union[
FetchEmailsParams,
ShowEmailParams,
AnalyzeEmailsParams,
DraftReplyParams,
SendReplyParams
]
class PlanStep(BaseModel):
action: Literal[
"fetch_emails",
"show_email",
"analyze_emails",
"draft_reply",
"send_reply",
"done",
]
parameters: Optional[ToolParams] = None
class Plan(BaseModel):
plan: List[PlanStep]
|