diff --git a/skyvern/forge/sdk/workflow/context_manager.py b/skyvern/forge/sdk/workflow/context_manager.py index 05ed1044..c3c37a69 100644 --- a/skyvern/forge/sdk/workflow/context_manager.py +++ b/skyvern/forge/sdk/workflow/context_manager.py @@ -179,12 +179,22 @@ class WorkflowRunContext: organization: Organization, ) -> None: LOG.info(f"Fetching credential parameter value for credential: {parameter.credential_id}") - db_credential = await app.DATABASE.get_credential( - parameter.credential_id, organization_id=organization.organization_id - ) - if db_credential is None: + + credential_id = None + if parameter.credential_id: + if self.has_parameter(parameter.credential_id) and self.has_value(parameter.credential_id): + credential_id = self.values[parameter.credential_id] + else: + credential_id = parameter.credential_id + + if credential_id is None: + LOG.error(f"Credential ID not found for credential: {parameter.credential_id}") raise CredentialParameterNotFoundError(parameter.credential_id) + db_credential = await app.DATABASE.get_credential(credential_id, organization_id=organization.organization_id) + if db_credential is None: + raise CredentialParameterNotFoundError(credential_id) + bitwarden_credential = await BitwardenService.get_credential_item(db_credential.item_id) credential_item = bitwarden_credential.credential diff --git a/skyvern/forge/sdk/workflow/models/parameter.py b/skyvern/forge/sdk/workflow/models/parameter.py index 9e4df855..104b7872 100644 --- a/skyvern/forge/sdk/workflow/models/parameter.py +++ b/skyvern/forge/sdk/workflow/models/parameter.py @@ -132,6 +132,7 @@ class WorkflowParameterType(StrEnum): BOOLEAN = "boolean" JSON = "json" FILE_URL = "file_url" + CREDENTIAL_ID = "credential_id" def convert_value(self, value: Any) -> str | int | float | bool | dict | list | None: if value is None: @@ -154,6 +155,8 @@ class WorkflowParameterType(StrEnum): return json.loads(value) elif self == WorkflowParameterType.FILE_URL: return value + elif self == WorkflowParameterType.CREDENTIAL_ID: + return value except Exception: raise InvalidWorkflowParameter(expected_parameter_type=self, value=str(value))