the error raised from the base validate_step_execution shouldn't be handled to fail the task (#422)

This commit is contained in:
Kerem Yilmaz 2024-06-05 13:30:09 -07:00 committed by GitHub
parent 3f3fbbc63d
commit fbe42994a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 4 deletions

View file

@ -266,7 +266,12 @@ class UnknownElementTreeFormat(SkyvernException):
class StepTerminationError(SkyvernException):
def __init__(self, step_id: str, reason: str) -> None:
super().__init__(f"Step {step_id} cannot be executed and task is terminated. Reason: {reason}")
super().__init__(f"Step {step_id} cannot be executed and task is failed. Reason: {reason}")
class StepUnableToExecuteError(SkyvernException):
def __init__(self, step_id: str, reason: str) -> None:
super().__init__(f"Step {step_id} cannot be executed and task execution is stopped. Reason: {reason}")
class UnsupportedActionType(SkyvernException):

View file

@ -18,6 +18,7 @@ from skyvern.exceptions import (
InvalidWorkflowTaskURLState,
MissingBrowserStatePage,
StepTerminationError,
StepUnableToExecuteError,
TaskNotFound,
)
from skyvern.forge import app
@ -328,9 +329,16 @@ class ForgeAgent:
return step, detailed_output, next_step
# TODO (kerem): Let's add other exceptions that we know about here as custom exceptions as well
except StepUnableToExecuteError:
LOG.error(
"Step cannot be executed. Task execution stopped",
task_id=task.task_id,
step_id=step.step_id,
)
raise
except StepTerminationError as e:
LOG.error(
"Step cannot be executed. Task terminated",
"Step cannot be executed. Task failed.",
task_id=task.task_id,
step_id=step.step_id,
)

View file

@ -1,6 +1,6 @@
from playwright.async_api import Page
from skyvern.exceptions import StepTerminationError
from skyvern.exceptions import StepUnableToExecuteError
from skyvern.forge import app
from skyvern.forge.async_operations import AsyncOperation
from skyvern.forge.sdk.models import Organization, Step, StepStatus
@ -34,7 +34,7 @@ class AgentFunction:
can_execute = has_valid_task_status and has_valid_step_status and has_no_running_steps
if not can_execute:
raise StepTerminationError(step_id=step.step_id, reason="Cannot execute step. Reasons: {reasons}")
raise StepUnableToExecuteError(step_id=step.step_id, reason=f"Cannot execute step. Reasons: {reasons}")
def generate_async_operations(
self,