|
|
|
|
|
from pydantic import BaseModel, EmailStr |
|
from typing import List, Literal, Optional, Union |
|
|
|
|
|
|
|
class FetchEmailsParams(BaseModel): |
|
email: str |
|
query: str |
|
|
|
|
|
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] |
|
|