terminate action when CUA verification code is not received (#2196)

This commit is contained in:
Shuchang Zheng
2025-04-20 06:35:21 +08:00
committed by GitHub
parent b56ac3f3bd
commit 63af3d984c

View File

@@ -4,7 +4,7 @@ import structlog
from openai.types.responses.response import Response as OpenAIResponse from openai.types.responses.response import Response as OpenAIResponse
from pydantic import ValidationError from pydantic import ValidationError
from skyvern.exceptions import UnsupportedActionType from skyvern.exceptions import NoTOTPVerificationCodeFound, UnsupportedActionType
from skyvern.forge import app from skyvern.forge import app
from skyvern.forge.prompts import prompt_engine from skyvern.forge.prompts import prompt_engine
from skyvern.forge.sdk.models import Step from skyvern.forge.sdk.models import Step
@@ -412,19 +412,28 @@ async def parse_cua_actions(
totp_verification_url=task.totp_verification_url, totp_verification_url=task.totp_verification_url,
totp_identifier=task.totp_identifier, totp_identifier=task.totp_identifier,
) )
verification_code = await poll_verification_code( try:
task.task_id, verification_code = await poll_verification_code(
task.organization_id, task.task_id,
workflow_run_id=task.workflow_run_id, task.organization_id,
totp_verification_url=task.totp_verification_url, workflow_run_id=task.workflow_run_id,
totp_identifier=task.totp_identifier, totp_verification_url=task.totp_verification_url,
) totp_identifier=task.totp_identifier,
reasoning = reasoning or f"Received verification code: {verification_code}" )
action = VerificationCodeAction( reasoning = reasoning or f"Received verification code: {verification_code}"
verification_code=verification_code, action = VerificationCodeAction(
reasoning=reasoning, verification_code=verification_code,
intention=reasoning, reasoning=reasoning,
) intention=reasoning,
)
except NoTOTPVerificationCodeFound:
reasoning_suffix = "No verification code found"
reasoning = f"{reasoning}. {reasoning_suffix}" if reasoning else reasoning_suffix
action = TerminateAction(
reasoning=reasoning,
intention=reasoning,
)
else: else:
action = TerminateAction( action = TerminateAction(
reasoning=reasoning, reasoning=reasoning,