diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx
index aed355e0..eb9dca24 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx
@@ -5,8 +5,11 @@ import {
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
+import { Skeleton } from "@/components/ui/skeleton";
+import { useCredentialsQuery } from "@/routes/workflows/hooks/useCredentialsQuery";
+import CloudContext from "@/store/CloudContext";
+import { useContext, useId } from "react";
import { useWorkflowParametersState } from "../../useWorkflowParametersState";
-import { useId } from "react";
type Props = {
value?: string;
@@ -14,16 +17,67 @@ type Props = {
};
function CredentialParameterSelector({ value, onChange }: Props) {
- const [workflowParameters] = useWorkflowParametersState();
+ const [workflowParameters, setWorkflowParameters] =
+ useWorkflowParametersState();
const credentialParameters = workflowParameters.filter(
(parameter) => parameter.parameterType === "credential",
);
+ const isCloud = useContext(CloudContext);
+ const { data: credentials = [], isLoading } = useCredentialsQuery({
+ enabled: isCloud,
+ });
const noneItemValue = useId();
+ if (isCloud && isLoading) {
+ return ;
+ }
+
+ const credentialOptions = credentials.map((credential) => ({
+ label: credential.name,
+ value: credential.credential_id,
+ type: "credential",
+ }));
+
+ const credentialParameterOptions = credentialParameters.map((parameter) => ({
+ label: parameter.key,
+ value: parameter.key,
+ type: "parameter",
+ }));
+
+ const filteredCredentialParameterOptions = credentialParameterOptions.filter(
+ (option) =>
+ !credentialOptions.some(
+ (credential) => credential.value === option.value,
+ ),
+ );
+
+ const options = [...credentialOptions, ...filteredCredentialParameterOptions];
+
return (