add navigation, login, extraction workflow blocks (#1238)
This commit is contained in:
@@ -74,6 +74,9 @@ class BlockType(StrEnum):
|
||||
FILE_URL_PARSER = "file_url_parser"
|
||||
VALIDATION = "validation"
|
||||
ACTION = "action"
|
||||
NAVIGATION = "navigation"
|
||||
EXTRACTION = "extraction"
|
||||
LOGIN = "login"
|
||||
|
||||
|
||||
class BlockStatus(StrEnum):
|
||||
@@ -1336,6 +1339,18 @@ class ActionBlock(BaseTaskBlock):
|
||||
return await super().execute(workflow_run_id=workflow_run_id, kwargs=kwargs)
|
||||
|
||||
|
||||
class NavigationBlock(BaseTaskBlock):
|
||||
block_type: Literal[BlockType.NAVIGATION] = BlockType.NAVIGATION
|
||||
|
||||
|
||||
class ExtractionBlock(BaseTaskBlock):
|
||||
block_type: Literal[BlockType.EXTRACTION] = BlockType.EXTRACTION
|
||||
|
||||
|
||||
class LoginBlock(BaseTaskBlock):
|
||||
block_type: Literal[BlockType.LOGIN] = BlockType.LOGIN
|
||||
|
||||
|
||||
BlockSubclasses = Union[
|
||||
ForLoopBlock,
|
||||
TaskBlock,
|
||||
@@ -1347,5 +1362,8 @@ BlockSubclasses = Union[
|
||||
FileParserBlock,
|
||||
ValidationBlock,
|
||||
ActionBlock,
|
||||
NavigationBlock,
|
||||
ExtractionBlock,
|
||||
LoginBlock,
|
||||
]
|
||||
BlockTypeVar = Annotated[BlockSubclasses, Field(discriminator="block_type")]
|
||||
|
||||
@@ -233,6 +233,51 @@ class ActionBlockYAML(BlockYAML):
|
||||
cache_actions: bool = False
|
||||
|
||||
|
||||
class NavigationBlockYAML(BlockYAML):
|
||||
block_type: Literal[BlockType.NAVIGATION] = BlockType.NAVIGATION # type: ignore
|
||||
|
||||
url: str | None = None
|
||||
title: str = ""
|
||||
navigation_goal: str | None = None
|
||||
error_code_mapping: dict[str, str] | None = None
|
||||
max_retries: int = 0
|
||||
max_steps_per_run: int | None = None
|
||||
parameter_keys: list[str] | None = None
|
||||
complete_on_download: bool = False
|
||||
download_suffix: str | None = None
|
||||
totp_verification_url: str | None = None
|
||||
totp_identifier: str | None = None
|
||||
cache_actions: bool = False
|
||||
|
||||
|
||||
class ExtractionBlockYAML(BlockYAML):
|
||||
block_type: Literal[BlockType.EXTRACTION] = BlockType.EXTRACTION # type: ignore
|
||||
|
||||
url: str | None = None
|
||||
title: str = ""
|
||||
data_extraction_goal: str | None = None
|
||||
data_schema: dict[str, Any] | list | None = None
|
||||
max_retries: int = 0
|
||||
max_steps_per_run: int | None = None
|
||||
parameter_keys: list[str] | None = None
|
||||
cache_actions: bool = False
|
||||
|
||||
|
||||
class LoginBlockYAML(BlockYAML):
|
||||
block_type: Literal[BlockType.LOGIN] = BlockType.LOGIN # type: ignore
|
||||
|
||||
url: str | None = None
|
||||
title: str = ""
|
||||
navigation_goal: str | None = None
|
||||
error_code_mapping: dict[str, str] | None = None
|
||||
max_retries: int = 0
|
||||
max_steps_per_run: int | None = None
|
||||
parameter_keys: list[str] | None = None
|
||||
totp_verification_url: str | None = None
|
||||
totp_identifier: str | None = None
|
||||
cache_actions: bool = False
|
||||
|
||||
|
||||
PARAMETER_YAML_SUBCLASSES = (
|
||||
AWSSecretParameterYAML
|
||||
| BitwardenLoginCredentialParameterYAML
|
||||
@@ -255,6 +300,9 @@ BLOCK_YAML_SUBCLASSES = (
|
||||
| FileParserBlockYAML
|
||||
| ValidationBlockYAML
|
||||
| ActionBlockYAML
|
||||
| NavigationBlockYAML
|
||||
| ExtractionBlockYAML
|
||||
| LoginBlockYAML
|
||||
)
|
||||
BLOCK_YAML_TYPES = Annotated[BLOCK_YAML_SUBCLASSES, Field(discriminator="block_type")]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user