from typing import Generic, TypeVar from pydantic import BaseModel, ConfigDict, Field # Action Input Models class ExtractAction(BaseModel): query: str extract_links: bool = Field( default=False, description='Set True to true if the query requires links, else false to safe tokens' ) start_from_char: int = Field( default=0, description='Use this for long markdowns to start from a specific character (not index in browser_state)' ) class SearchAction(BaseModel): query: str engine: str = Field( default='duckduckgo', description='duckduckgo, google, bing (use duckduckgo by default because less captchas)' ) # Backward compatibility alias SearchAction = SearchAction class NavigateAction(BaseModel): url: str new_tab: bool = Field(default=False) # Backward compatibility alias GoToUrlAction = NavigateAction class ClickElementAction(BaseModel): index: int = Field(ge=1, description='from browser_state. All interactive elements work except