From 00f7128ffde51c59a9944fd589fa9f643a97b353 Mon Sep 17 00:00:00 2001 From: LawyZheng Date: Thu, 8 Jan 2026 14:00:22 +0800 Subject: [PATCH] support referen workflow output (#4414) --- .../workflows/editor/panels/WorkflowParameterEditPanel.tsx | 7 ++++++- skyvern/forge/sdk/workflow/context_manager.py | 2 ++ skyvern/forge/sdk/workflow/models/block.py | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx b/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx index 055047bb..05cb0ede 100644 --- a/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterEditPanel.tsx @@ -73,7 +73,12 @@ function WorkflowParameterEditPanel({ onSave, initialValues, }: Props) { - const reservedKeys = ["current_item", "current_value", "current_index"]; + const reservedKeys = [ + "current_item", + "current_value", + "current_index", + "workflow_run_outputs", + ]; const isCloud = useContext(CloudContext); const isEditMode = !!initialValues; const [key, setKey] = useState(initialValues?.key ?? ""); diff --git a/skyvern/forge/sdk/workflow/context_manager.py b/skyvern/forge/sdk/workflow/context_manager.py index b1b263a5..da9755f5 100644 --- a/skyvern/forge/sdk/workflow/context_manager.py +++ b/skyvern/forge/sdk/workflow/context_manager.py @@ -174,6 +174,7 @@ class WorkflowRunContext: self.parameters: dict[str, PARAMETER_TYPE] = {} self.values: dict[str, Any] = {} self.secrets: dict[str, Any] = {} + self.workflow_run_outputs: dict[str, Any] = {} self._aws_client = aws_client self.organization_id: str | None = None self.include_secrets_in_templates: bool = False @@ -895,6 +896,7 @@ class WorkflowRunContext: LOG.warning(f"Parameter {block_label} already has a value in workflow run context, overwriting") self.values[block_label] = block_reference_value + self.workflow_run_outputs[block_label] = block_reference_value async def set_parameter_values_for_output_parameter_dependent_blocks( self, diff --git a/skyvern/forge/sdk/workflow/models/block.py b/skyvern/forge/sdk/workflow/models/block.py index d9b87349..49e9d0ed 100644 --- a/skyvern/forge/sdk/workflow/models/block.py +++ b/skyvern/forge/sdk/workflow/models/block.py @@ -318,6 +318,8 @@ class Block(BaseModel, abc.ABC): if "workflow_run_id" not in template_data: template_data["workflow_run_id"] = workflow_run_context.workflow_run_id + template_data["workflow_run_outputs"] = workflow_run_context.workflow_run_outputs + if settings.WORKFLOW_TEMPLATING_STRICTNESS == "strict": if missing_variables := get_missing_variables(potential_template, template_data): raise MissingJinjaVariables(