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.exceptions import ScriptNotFound, WorkflowRunNotFound
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.artifact.models import ArtifactType
from skyvern.forge.sdk.core import skyvern_context 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.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.block import TaskBlock
from skyvern.forge.sdk.workflow.models.workflow import Workflow from skyvern.forge.sdk.workflow.models.workflow import Workflow
from skyvern.schemas.runs import RunEngine from skyvern.schemas.runs import RunEngine
@@ -318,6 +319,10 @@ async def _create_workflow_block_run_and_task(
step_id = step.step_id step_id = step.step_id
# reset the action order to 0 # reset the action order to 0
context.action_order = 0 context.action_order = 0
await _create_video_artifact(
task=task,
step=step,
)
# Update workflow run block with task_id # Update workflow run block with task_id
await app.DATABASE.update_workflow_run_block( await app.DATABASE.update_workflow_run_block(
@@ -342,6 +347,32 @@ async def _create_workflow_block_run_and_task(
return None, None, None 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( async def _record_output_parameter_value(
workflow_run_id: str, workflow_run_id: str,
workflow_id: str, workflow_id: str,