script video fix (#3388)

This commit is contained in:
Shuchang Zheng
2025-09-07 15:25:31 -07:00
committed by GitHub
parent a7127558f2
commit e7413e7375

View File

@@ -20,10 +20,11 @@ from skyvern.core.script_generations.skyvern_page import script_run_context_mana
from skyvern.exceptions import ScriptNotFound, WorkflowRunNotFound
from skyvern.forge import app
from skyvern.forge.prompts import prompt_engine
from skyvern.forge.sdk.artifact.models import ArtifactType
from skyvern.forge.sdk.core import skyvern_context
from skyvern.forge.sdk.models import StepStatus
from skyvern.forge.sdk.models import Step, StepStatus
from skyvern.forge.sdk.schemas.files import FileInfo
from skyvern.forge.sdk.schemas.tasks import TaskOutput, TaskStatus
from skyvern.forge.sdk.schemas.tasks import Task, TaskOutput, TaskStatus
from skyvern.forge.sdk.workflow.models.block import TaskBlock
from skyvern.forge.sdk.workflow.models.workflow import Workflow
from skyvern.schemas.runs import RunEngine
@@ -318,6 +319,10 @@ async def _create_workflow_block_run_and_task(
step_id = step.step_id
# reset the action order to 0
context.action_order = 0
await _create_video_artifact(
task=task,
step=step,
)
# Update workflow run block with task_id
await app.DATABASE.update_workflow_run_block(
@@ -342,6 +347,32 @@ async def _create_workflow_block_run_and_task(
return None, None, None
async def _create_video_artifact(
task: Task,
step: Step,
) -> None:
workflow_run_id = task.workflow_run_id
if not workflow_run_id:
return None
browser_state = app.BROWSER_MANAGER.get_for_workflow_run(workflow_run_id)
if not browser_state:
return None
if browser_state.browser_artifacts:
video_artifacts = await app.BROWSER_MANAGER.get_video_artifacts(
task_id=task.task_id, browser_state=browser_state
)
for idx, video_artifact in enumerate(video_artifacts):
if video_artifact.video_artifact_id:
continue
video_artifact_id = await app.ARTIFACT_MANAGER.create_artifact(
step=step,
artifact_type=ArtifactType.RECORDING,
data=video_artifact.video_data,
)
video_artifacts[idx].video_artifact_id = video_artifact_id
app.BROWSER_MANAGER.set_video_artifact_for_task(task, video_artifacts)
async def _record_output_parameter_value(
workflow_run_id: str,
workflow_id: str,