script video fix (#3388)
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user