diff --git a/skyvern/forge/sdk/workflow/models/block.py b/skyvern/forge/sdk/workflow/models/block.py index dad887b4..1f095321 100644 --- a/skyvern/forge/sdk/workflow/models/block.py +++ b/skyvern/forge/sdk/workflow/models/block.py @@ -1581,7 +1581,12 @@ async def wrapper(): parameter_values = {} for parameter in self.parameters: value = workflow_run_context.get_value(parameter.key) - if not parameter.parameter_type.is_secret_or_credential(): + if not parameter.parameter_type.is_secret_or_credential() and not ( + # NOTE: skyvern credential is a 'credential_id' workflow parameter type + parameter.parameter_type == ParameterType.WORKFLOW + and parameter.workflow_parameter_type is not None + and parameter.workflow_parameter_type.is_credential_type() + ): parameter_values[parameter.key] = value continue if isinstance(value, dict): diff --git a/skyvern/forge/sdk/workflow/models/parameter.py b/skyvern/forge/sdk/workflow/models/parameter.py index 3201ad25..5ddde2fc 100644 --- a/skyvern/forge/sdk/workflow/models/parameter.py +++ b/skyvern/forge/sdk/workflow/models/parameter.py @@ -199,6 +199,9 @@ class WorkflowParameterType(StrEnum): FILE_URL = "file_url" CREDENTIAL_ID = "credential_id" + def is_credential_type(self) -> bool: + return self == WorkflowParameterType.CREDENTIAL_ID + def convert_value(self, value: Any) -> str | int | float | bool | dict | list | None: if value is None: return None