add workflow_run.script_run and mark ai_fallback_triggered when the script falls back to ai run (#3433)

This commit is contained in:
Shuchang Zheng
2025-09-14 22:53:52 -07:00
committed by GitHub
parent 975376698d
commit 720ebac72c
9 changed files with 74 additions and 2 deletions

View File

@@ -1672,6 +1672,7 @@ class AgentDB:
status: WorkflowRunStatus | None = None,
failure_reason: str | None = None,
webhook_failure_reason: str | None = None,
ai_fallback_triggered: bool | None = None,
) -> WorkflowRun:
async with self.Session() as session:
workflow_run = (
@@ -1690,6 +1691,8 @@ class AgentDB:
workflow_run.failure_reason = failure_reason
if webhook_failure_reason is not None:
workflow_run.webhook_failure_reason = webhook_failure_reason
if ai_fallback_triggered is not None:
workflow_run.script_run = {"ai_fallback_triggered": ai_fallback_triggered}
await session.commit()
await session.refresh(workflow_run)
await save_workflow_run_logs(workflow_run_id)
@@ -2936,6 +2939,7 @@ class AgentDB:
http_request_parameters: dict[str, Any] | None = None,
http_request_timeout: int | None = None,
http_request_follow_redirects: bool | None = None,
ai_fallback_triggered: bool | None = None,
) -> WorkflowRunBlock:
async with self.Session() as session:
workflow_run_block = (
@@ -2993,6 +2997,8 @@ class AgentDB:
workflow_run_block.http_request_timeout = http_request_timeout
if http_request_follow_redirects is not None:
workflow_run_block.http_request_follow_redirects = http_request_follow_redirects
if ai_fallback_triggered is not None:
workflow_run_block.script_run = {"ai_fallback_triggered": ai_fallback_triggered}
await session.commit()
await session.refresh(workflow_run_block)
else:

View File

@@ -283,6 +283,7 @@ class WorkflowRunModel(Base):
max_screenshot_scrolling_times = Column(Integer, nullable=True)
extra_http_headers = Column(JSON, nullable=True)
browser_address = Column(String, nullable=True)
script_run = Column(JSON, nullable=True)
queued_at = Column(DateTime, nullable=True)
started_at = Column(DateTime, nullable=True)

View File

@@ -50,7 +50,7 @@ from skyvern.forge.sdk.workflow.models.workflow import (
WorkflowRunStatus,
WorkflowStatus,
)
from skyvern.schemas.runs import ProxyLocation
from skyvern.schemas.runs import ProxyLocation, ScriptRunResponse
from skyvern.schemas.scripts import Script, ScriptBlock, ScriptFile
from skyvern.schemas.workflows import BlockStatus, BlockType
from skyvern.webeye.actions.actions import (
@@ -303,6 +303,7 @@ def convert_to_workflow_run(
max_screenshot_scrolls=workflow_run_model.max_screenshot_scrolling_times,
extra_http_headers=workflow_run_model.extra_http_headers,
browser_address=workflow_run_model.browser_address,
script_run=ScriptRunResponse.model_validate(workflow_run_model.script_run),
)

View File

@@ -10,7 +10,7 @@ from skyvern.forge.sdk.schemas.task_v2 import TaskV2
from skyvern.forge.sdk.workflow.exceptions import WorkflowDefinitionHasDuplicateBlockLabels
from skyvern.forge.sdk.workflow.models.block import BlockTypeVar
from skyvern.forge.sdk.workflow.models.parameter import PARAMETER_TYPE, OutputParameter
from skyvern.schemas.runs import ProxyLocation
from skyvern.schemas.runs import ProxyLocation, ScriptRunResponse
from skyvern.schemas.workflows import WorkflowStatus
from skyvern.utils.url_validators import validate_url
@@ -135,6 +135,7 @@ class WorkflowRun(BaseModel):
workflow_title: str | None = None
max_screenshot_scrolls: int | None = None
browser_address: str | None = None
script_run: ScriptRunResponse | None = None
queued_at: datetime | None = None
started_at: datetime | None = None
@@ -186,3 +187,4 @@ class WorkflowRunResponseBase(BaseModel):
browser_session_id: str | None = None
max_screenshot_scrolls: int | None = None
browser_address: str | None = None
script_run: ScriptRunResponse | None = None

View File

@@ -1445,6 +1445,7 @@ class WorkflowService:
max_screenshot_scrolls=workflow_run.max_screenshot_scrolls,
task_v2=task_v2,
browser_address=workflow_run.browser_address,
script_run=workflow_run.script_run,
)
async def clean_up_workflow(
@@ -1554,6 +1555,7 @@ class WorkflowService:
screenshot_urls=workflow_run_status_response.screenshot_urls,
failure_reason=workflow_run_status_response.failure_reason,
app_url=app_url,
script_run=workflow_run_status_response.script_run,
created_at=workflow_run_status_response.created_at,
modified_at=workflow_run_status_response.modified_at,
run_request=WorkflowRunRequest(