diff --git a/skyvern/forge/agent.py b/skyvern/forge/agent.py index e1f5a8eb..1dcf09a5 100644 --- a/skyvern/forge/agent.py +++ b/skyvern/forge/agent.py @@ -75,10 +75,10 @@ from skyvern.schemas.runs import CUA_ENGINES, CUA_RUN_TYPES, RunEngine from skyvern.services import run_service from skyvern.utils.image_resizer import Resolution from skyvern.utils.prompt_engine import load_prompt_with_elements +from skyvern.webeye.actions.action_types import ActionType from skyvern.webeye.actions.actions import ( Action, ActionStatus, - ActionType, CompleteAction, CompleteVerifyResult, DecisiveAction, diff --git a/skyvern/forge/sdk/models.py b/skyvern/forge/sdk/models.py index f8057eb1..066c8e7c 100644 --- a/skyvern/forge/sdk/models.py +++ b/skyvern/forge/sdk/models.py @@ -5,7 +5,7 @@ from enum import StrEnum from pydantic import BaseModel -from skyvern.webeye.actions.actions import ActionType +from skyvern.webeye.actions.action_types import ActionType from skyvern.webeye.actions.models import AgentStepOutput diff --git a/skyvern/webeye/actions/action_types.py b/skyvern/webeye/actions/action_types.py new file mode 100644 index 00000000..bd91cd57 --- /dev/null +++ b/skyvern/webeye/actions/action_types.py @@ -0,0 +1,39 @@ +from enum import StrEnum + + +class ActionType(StrEnum): + CLICK = "click" + INPUT_TEXT = "input_text" + UPLOAD_FILE = "upload_file" + + # This action is not used in the current implementation. Click actions are used instead." + DOWNLOAD_FILE = "download_file" + + SELECT_OPTION = "select_option" + CHECKBOX = "checkbox" + WAIT = "wait" + NULL_ACTION = "null_action" + SOLVE_CAPTCHA = "solve_captcha" + TERMINATE = "terminate" + COMPLETE = "complete" + RELOAD_PAGE = "reload_page" + + EXTRACT = "extract" + VERIFICATION_CODE = "verification_code" + + SCROLL = "scroll" + KEYPRESS = "keypress" + TYPE = "type" + MOVE = "move" + DRAG = "drag" + LEFT_MOUSE = "left_mouse" + + def is_web_action(self) -> bool: + return self in [ + ActionType.CLICK, + ActionType.INPUT_TEXT, + ActionType.UPLOAD_FILE, + ActionType.DOWNLOAD_FILE, + ActionType.SELECT_OPTION, + ActionType.CHECKBOX, + ] diff --git a/skyvern/webeye/actions/actions.py b/skyvern/webeye/actions/actions.py index 703c598d..4d12b1e8 100644 --- a/skyvern/webeye/actions/actions.py +++ b/skyvern/webeye/actions/actions.py @@ -6,48 +6,12 @@ import structlog from litellm import ConfigDict from pydantic import BaseModel, Field +from skyvern.webeye.actions.action_types import ActionType + LOG = structlog.get_logger() T = TypeVar("T", bound="Action") -class ActionType(StrEnum): - CLICK = "click" - INPUT_TEXT = "input_text" - UPLOAD_FILE = "upload_file" - - # This action is not used in the current implementation. Click actions are used instead." - DOWNLOAD_FILE = "download_file" - - SELECT_OPTION = "select_option" - CHECKBOX = "checkbox" - WAIT = "wait" - NULL_ACTION = "null_action" - SOLVE_CAPTCHA = "solve_captcha" - TERMINATE = "terminate" - COMPLETE = "complete" - RELOAD_PAGE = "reload_page" - - EXTRACT = "extract" - VERIFICATION_CODE = "verification_code" - - SCROLL = "scroll" - KEYPRESS = "keypress" - TYPE = "type" - MOVE = "move" - DRAG = "drag" - LEFT_MOUSE = "left_mouse" - - def is_web_action(self) -> bool: - return self in [ - ActionType.CLICK, - ActionType.INPUT_TEXT, - ActionType.UPLOAD_FILE, - ActionType.DOWNLOAD_FILE, - ActionType.SELECT_OPTION, - ActionType.CHECKBOX, - ] - - class ActionStatus(StrEnum): pending = "pending" skipped = "skipped" diff --git a/skyvern/webeye/actions/caching.py b/skyvern/webeye/actions/caching.py index c04e5ba9..41424537 100644 --- a/skyvern/webeye/actions/caching.py +++ b/skyvern/webeye/actions/caching.py @@ -5,7 +5,8 @@ from skyvern.forge import app from skyvern.forge.prompts import prompt_engine from skyvern.forge.sdk.models import Step from skyvern.forge.sdk.schemas.tasks import Task -from skyvern.webeye.actions.actions import Action, ActionStatus, ActionType, SelectOption +from skyvern.webeye.actions.action_types import ActionType +from skyvern.webeye.actions.actions import Action, ActionStatus, SelectOption from skyvern.webeye.scraper.scraper import ScrapedPage LOG = structlog.get_logger() diff --git a/skyvern/webeye/actions/handler.py b/skyvern/webeye/actions/handler.py index 9ffa6bfa..b972d506 100644 --- a/skyvern/webeye/actions/handler.py +++ b/skyvern/webeye/actions/handler.py @@ -73,10 +73,10 @@ from skyvern.forge.sdk.services.bitwarden import BitwardenConstants from skyvern.schemas.runs import CUA_RUN_TYPES from skyvern.utils.prompt_engine import CheckPhoneNumberFormatResponse, load_prompt_with_elements from skyvern.webeye.actions import actions +from skyvern.webeye.actions.action_types import ActionType from skyvern.webeye.actions.actions import ( Action, ActionStatus, - ActionType, CheckboxAction, ClickAction, InputOrSelectContext, diff --git a/skyvern/webeye/actions/parse_actions.py b/skyvern/webeye/actions/parse_actions.py index ab8f599d..2c0e3805 100644 --- a/skyvern/webeye/actions/parse_actions.py +++ b/skyvern/webeye/actions/parse_actions.py @@ -11,9 +11,9 @@ from skyvern.forge.prompts import prompt_engine from skyvern.forge.sdk.models import Step from skyvern.forge.sdk.schemas.tasks import Task from skyvern.utils.image_resizer import Resolution, scale_coordinates +from skyvern.webeye.actions.action_types import ActionType from skyvern.webeye.actions.actions import ( Action, - ActionType, CheckboxAction, ClickAction, CompleteAction,