add flag for forcing code_gen for v2 task block runs (#3576)
This commit is contained in:
@@ -48,6 +48,7 @@ class AsyncExecutor(abc.ABC):
|
||||
browser_session_id: str | None,
|
||||
block_labels: list[str] | None,
|
||||
block_outputs: dict[str, Any] | None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> None:
|
||||
pass
|
||||
@@ -153,6 +154,7 @@ class BackgroundTaskExecutor(AsyncExecutor):
|
||||
browser_session_id: str | None,
|
||||
block_labels: list[str] | None,
|
||||
block_outputs: dict[str, Any] | None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> None:
|
||||
if background_tasks:
|
||||
@@ -173,6 +175,7 @@ class BackgroundTaskExecutor(AsyncExecutor):
|
||||
browser_session_id=browser_session_id,
|
||||
block_labels=block_labels,
|
||||
block_outputs=block_outputs,
|
||||
code_gen=code_gen,
|
||||
)
|
||||
else:
|
||||
LOG.warning("Background tasks not enabled, skipping workflow execution")
|
||||
|
||||
@@ -1008,6 +1008,7 @@ async def run_block(
|
||||
user_id=user_id,
|
||||
browser_session_id=browser_session_id,
|
||||
block_outputs=block_run_request.block_outputs,
|
||||
code_gen=block_run_request.code_gen,
|
||||
)
|
||||
|
||||
return BlockRunResponse(
|
||||
|
||||
@@ -238,6 +238,7 @@ class Block(BaseModel, abc.ABC):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
pass
|
||||
@@ -295,6 +296,7 @@ class Block(BaseModel, abc.ABC):
|
||||
parent_workflow_run_block_id: str | None = None,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_block_id = None
|
||||
@@ -344,6 +346,7 @@ class Block(BaseModel, abc.ABC):
|
||||
workflow_run_block_id,
|
||||
organization_id=organization_id,
|
||||
browser_session_id=browser_session_id,
|
||||
code_gen=code_gen,
|
||||
**kwargs,
|
||||
)
|
||||
except Exception as e:
|
||||
@@ -500,6 +503,7 @@ class BaseTaskBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_context = self.get_workflow_run_context(workflow_run_id)
|
||||
@@ -1307,6 +1311,7 @@ class ForLoopBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_context = self.get_workflow_run_context(workflow_run_id)
|
||||
@@ -1484,6 +1489,7 @@ async def wrapper():
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
await app.AGENT_FUNCTION.validate_code_block(organization_id=organization_id)
|
||||
@@ -1650,6 +1656,7 @@ class TextPromptBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
# Validate block execution
|
||||
@@ -1734,6 +1741,7 @@ class DownloadToS3Block(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
# get workflow run context
|
||||
@@ -1822,6 +1830,7 @@ class UploadToS3Block(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
# get workflow run context
|
||||
@@ -1988,6 +1997,7 @@ class FileUploadBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
# get workflow run context
|
||||
@@ -2404,6 +2414,7 @@ class SendEmailBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_context = self.get_workflow_run_context(workflow_run_id)
|
||||
@@ -2639,6 +2650,7 @@ class FileParserBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_context = self.get_workflow_run_context(workflow_run_id)
|
||||
@@ -2778,6 +2790,7 @@ class PDFParserBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
workflow_run_context = self.get_workflow_run_context(workflow_run_id)
|
||||
@@ -2878,6 +2891,7 @@ class WaitBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
# TODO: we need to support to interrupt the sleep when the workflow run failed/cancelled/terminated
|
||||
@@ -2922,6 +2936,7 @@ class ValidationBlock(BaseTaskBlock):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
task_order, _ = await self.get_task_order(workflow_run_id, 0)
|
||||
@@ -3024,6 +3039,7 @@ class TaskV2Block(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
from skyvern.forge.sdk.workflow.models.workflow import WorkflowRunStatus # noqa: PLC0415
|
||||
@@ -3095,6 +3111,7 @@ class TaskV2Block(Block):
|
||||
request_id=None,
|
||||
max_steps_override=self.max_steps,
|
||||
browser_session_id=browser_session_id,
|
||||
code_gen=code_gen,
|
||||
)
|
||||
finally:
|
||||
context: skyvern_context.SkyvernContext | None = skyvern_context.current()
|
||||
@@ -3212,6 +3229,7 @@ class HttpRequestBlock(Block):
|
||||
workflow_run_block_id: str,
|
||||
organization_id: str | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
**kwargs: dict,
|
||||
) -> BlockResult:
|
||||
"""Execute the HTTP request and return the response"""
|
||||
|
||||
@@ -273,6 +273,7 @@ class WorkflowService:
|
||||
block_labels: list[str] | None = None,
|
||||
block_outputs: dict[str, Any] | None = None,
|
||||
browser_session_id: str | None = None,
|
||||
code_gen: bool | None = None,
|
||||
) -> WorkflowRun:
|
||||
"""Execute a workflow."""
|
||||
organization_id = organization.organization_id
|
||||
@@ -400,6 +401,7 @@ class WorkflowService:
|
||||
workflow=workflow,
|
||||
workflow_run=workflow_run,
|
||||
block_labels=block_labels,
|
||||
code_gen=code_gen,
|
||||
)
|
||||
else:
|
||||
LOG.info(
|
||||
@@ -2580,9 +2582,18 @@ class WorkflowService:
|
||||
workflow: Workflow,
|
||||
workflow_run: WorkflowRun,
|
||||
block_labels: list[str] | None = None,
|
||||
code_gen: bool | None = None,
|
||||
) -> None:
|
||||
if block_labels:
|
||||
# Do not generate script if block_labels is provided
|
||||
LOG.info(
|
||||
"Generate script?",
|
||||
block_labels=block_labels,
|
||||
code_gen=code_gen,
|
||||
workflow_run_id=workflow_run.workflow_run_id,
|
||||
)
|
||||
|
||||
if block_labels and not code_gen:
|
||||
# Do not generate script if block_labels is provided, and an explicit code_gen
|
||||
# request is not made
|
||||
return None
|
||||
|
||||
existing_script, rendered_cache_key_value = await workflow_script_service.get_workflow_script(
|
||||
|
||||
Reference in New Issue
Block a user