shu/fix totp script gen (#3423)

This commit is contained in:
Shuchang Zheng
2025-09-12 12:41:23 -07:00
committed by GitHub
parent 8df506660e
commit dde6837df8
4 changed files with 16 additions and 3 deletions

View File

@@ -334,7 +334,7 @@ def _action_to_stmt(act: dict[str, Any], task: dict[str, Any], assign_to_output:
args.append( args.append(
cst.Arg( cst.Arg(
keyword=cst.Name("totp_identifier"), keyword=cst.Name("totp_identifier"),
value=cst.Name(task.get("totp_identifier")), value=_value(task.get("totp_identifier")),
whitespace_after_arg=cst.ParenthesizedWhitespace( whitespace_after_arg=cst.ParenthesizedWhitespace(
indent=True, indent=True,
last_line=cst.SimpleWhitespace(INDENT), last_line=cst.SimpleWhitespace(INDENT),
@@ -345,7 +345,7 @@ def _action_to_stmt(act: dict[str, Any], task: dict[str, Any], assign_to_output:
args.append( args.append(
cst.Arg( cst.Arg(
keyword=cst.Name("totp_url"), keyword=cst.Name("totp_url"),
value=cst.Name(task.get("totp_verification_url")), value=_value(task.get("totp_verification_url")),
whitespace_after_arg=cst.ParenthesizedWhitespace( whitespace_after_arg=cst.ParenthesizedWhitespace(
indent=True, indent=True,
last_line=cst.SimpleWhitespace(INDENT), last_line=cst.SimpleWhitespace(INDENT),

View File

@@ -30,6 +30,14 @@ async def poll_verification_code(
if not org_token: if not org_token:
LOG.error("Failed to get organization token when trying to get verification code") LOG.error("Failed to get organization token when trying to get verification code")
return None return None
LOG.info(
"Polling verification code",
task_id=task_id,
workflow_run_id=workflow_run_id,
workflow_permanent_id=workflow_permanent_id,
totp_verification_url=totp_verification_url,
totp_identifier=totp_identifier,
)
while True: while True:
await asyncio.sleep(10) await asyncio.sleep(10)
# check timeout # check timeout

View File

@@ -999,6 +999,8 @@ class ForgeAgent:
) )
detailed_agent_step_output.llm_response = json_response detailed_agent_step_output.llm_response = json_response
actions = parse_actions(task, step.step_id, step.order, scraped_page, json_response["actions"]) actions = parse_actions(task, step.step_id, step.order, scraped_page, json_response["actions"])
if context:
context.pop_totp_code(task.task_id)
except NoTOTPVerificationCodeFound: except NoTOTPVerificationCodeFound:
actions = [ actions = [
TerminateAction( TerminateAction(
@@ -3003,7 +3005,6 @@ class ForgeAgent:
browser_state, browser_state,
scraped_page, scraped_page,
verification_code_check=False, verification_code_check=False,
expire_verification_code=True,
) )
llm_key_override = task.llm_key llm_key_override = task.llm_key
if await is_cua_task(task=task): if await is_cua_task(task=task):

View File

@@ -39,6 +39,10 @@ class SkyvernContext:
def __str__(self) -> str: def __str__(self) -> str:
return self.__repr__() return self.__repr__()
def pop_totp_code(self, task_id: str) -> None:
if task_id in self.totp_codes:
self.totp_codes.pop(task_id)
_context: ContextVar[SkyvernContext | None] = ContextVar( _context: ContextVar[SkyvernContext | None] = ContextVar(
"Global context", "Global context",