from typing import Optional from pydantic import BaseModel, model_validator # Action Input Models class SearchGoogleAction(BaseModel): query: str class GoToUrlAction(BaseModel): url: str class ClickElementAction(BaseModel): index: int xpath: Optional[str] = None class InputTextAction(BaseModel): index: int text: str xpath: Optional[str] = None class DoneAction(BaseModel): text: str success: bool class SwitchTabAction(BaseModel): page_id: int class OpenTabAction(BaseModel): url: str class ScrollAction(BaseModel): amount: Optional[int] = None # The number of pixels to scroll. If None, scroll down/up one page class SendKeysAction(BaseModel): keys: str class ExtractPageContentAction(BaseModel): value: str class NoParamsAction(BaseModel): """ Accepts absolutely anything in the incoming data and discards it, so the final parsed model is empty. """ @model_validator(mode='before') def ignore_all_inputs(cls, values): # No matter what the user sends, discard it and return empty. return {} class Config: # If you want to silently allow unknown fields at top-level, # set extra = 'allow' as well: extra = 'allow'