diff --git a/skyvern-frontend/src/routes/workflows/editor/FlowRenderer.tsx b/skyvern-frontend/src/routes/workflows/editor/FlowRenderer.tsx index f9aa274f..f452bc5e 100644 --- a/skyvern-frontend/src/routes/workflows/editor/FlowRenderer.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/FlowRenderer.tsx @@ -38,7 +38,6 @@ import { WorkflowApiResponse, WorkflowEditorParameterTypes, WorkflowParameterTypes, - WorkflowParameterValueType, WorkflowSettings, } from "../types/workflowTypes"; import { @@ -83,6 +82,7 @@ import { nodeAdderNode, startNode, } from "./workflowEditorUtils"; +import { parameterIsBitwardenCredential, ParametersState } from "./types"; function convertToParametersYAML( parameters: ParametersState, @@ -145,76 +145,33 @@ function convertToParametersYAML( bitwarden_master_password_aws_secret_key: BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY, }; - } else if ( - parameter.parameterType === WorkflowEditorParameterTypes.Credential - ) { - return { - parameter_type: WorkflowParameterTypes.Credential, - key: parameter.key, - description: parameter.description || null, - credential_id: parameter.credentialId, - }; } else { - return { - parameter_type: WorkflowParameterTypes.Bitwarden_Login_Credential, - key: parameter.key, - description: parameter.description || null, - bitwarden_collection_id: parameter.collectionId, - url_parameter_key: parameter.urlParameterKey, - bitwarden_client_id_aws_secret_key: BITWARDEN_CLIENT_ID_AWS_SECRET_KEY, - bitwarden_client_secret_aws_secret_key: - BITWARDEN_CLIENT_SECRET_AWS_SECRET_KEY, - bitwarden_master_password_aws_secret_key: - BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY, - }; + if (parameterIsBitwardenCredential(parameter)) { + return { + parameter_type: WorkflowParameterTypes.Bitwarden_Login_Credential, + key: parameter.key, + description: parameter.description || null, + bitwarden_collection_id: parameter.collectionId, + url_parameter_key: parameter.urlParameterKey, + bitwarden_client_id_aws_secret_key: + BITWARDEN_CLIENT_ID_AWS_SECRET_KEY, + bitwarden_client_secret_aws_secret_key: + BITWARDEN_CLIENT_SECRET_AWS_SECRET_KEY, + bitwarden_master_password_aws_secret_key: + BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY, + }; + } else { + return { + parameter_type: WorkflowParameterTypes.Credential, + key: parameter.key, + description: parameter.description || null, + credential_id: parameter.credentialId, + }; + } } }); } -export type ParametersState = Array< - | { - key: string; - parameterType: "workflow"; - dataType: WorkflowParameterValueType; - description?: string | null; - defaultValue: unknown; - } - | { - key: string; - parameterType: "bitwardenLoginCredential"; - collectionId: string; - urlParameterKey: string; - description?: string | null; - } - | { - key: string; - parameterType: "context"; - sourceParameterKey: string; - description?: string | null; - } - | { - key: string; - parameterType: "secret"; - identityKey: string; - identityFields: Array; - collectionId: string; - description?: string | null; - } - | { - key: string; - parameterType: "creditCardData"; - itemId: string; - collectionId: string; - description?: string | null; - } - | { - key: string; - parameterType: "credential"; - credentialId: string; - description?: string | null; - } ->; - type Props = { initialTitle: string; initialNodes: Array; diff --git a/skyvern-frontend/src/routes/workflows/editor/WorkflowEditor.tsx b/skyvern-frontend/src/routes/workflows/editor/WorkflowEditor.tsx index cafc110c..4d26f452 100644 --- a/skyvern-frontend/src/routes/workflows/editor/WorkflowEditor.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/WorkflowEditor.tsx @@ -129,8 +129,7 @@ function WorkflowEditor() { } else { return { key: parameter.key, - parameterType: - WorkflowEditorParameterTypes.BitwardenLoginCredential, + parameterType: WorkflowEditorParameterTypes.Credential, collectionId: parameter.bitwarden_collection_id, urlParameterKey: parameter.url_parameter_key, description: parameter.description, diff --git a/skyvern-frontend/src/routes/workflows/editor/WorkflowParametersStateContext.ts b/skyvern-frontend/src/routes/workflows/editor/WorkflowParametersStateContext.ts index 4b37f0a0..5ce6819a 100644 --- a/skyvern-frontend/src/routes/workflows/editor/WorkflowParametersStateContext.ts +++ b/skyvern-frontend/src/routes/workflows/editor/WorkflowParametersStateContext.ts @@ -1,5 +1,5 @@ import { createContext } from "react"; -import { ParametersState } from "./FlowRenderer"; +import { ParametersState } from "./types"; type WorkflowParametersState = [ ParametersState, 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 eb93f9eb..aed355e0 100644 --- a/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/nodes/LoginNode/CredentialParameterSelector.tsx @@ -16,9 +16,7 @@ type Props = { function CredentialParameterSelector({ value, onChange }: Props) { const [workflowParameters] = useWorkflowParametersState(); const credentialParameters = workflowParameters.filter( - (parameter) => - parameter.parameterType === "credential" || - parameter.parameterType === "bitwardenLoginCredential", + (parameter) => parameter.parameterType === "credential", ); const noneItemValue = useId(); diff --git a/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterAddPanel.tsx b/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterAddPanel.tsx index dae2ed56..def8a544 100644 --- a/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterAddPanel.tsx +++ b/skyvern-frontend/src/routes/workflows/editor/panels/WorkflowParameterAddPanel.tsx @@ -15,7 +15,7 @@ import { SelectValue, } from "@/components/ui/select"; import { Button } from "@/components/ui/button"; -import { ParametersState } from "../FlowRenderer"; +import { ParametersState } from "../types"; import { WorkflowParameterInput } from "../../WorkflowParameterInput"; import { Checkbox } from "@/components/ui/checkbox"; import { getDefaultValueForParameterType } from "../workflowEditorUtils"; @@ -24,6 +24,7 @@ import { SourceParameterKeySelector } from "../../components/SourceParameterKeyS import { ScrollArea, ScrollAreaViewport } from "@/components/ui/scroll-area"; import CloudContext from "@/store/CloudContext"; import { CredentialSelector } from "../../components/CredentialSelector"; +import { SwitchBar } from "@/components/SwitchBar"; type Props = { type: WorkflowEditorParameterType; @@ -47,9 +48,6 @@ function header(type: WorkflowEditorParameterType) { if (type === "credential") { return "Add Credential Parameter"; } - if (type === "bitwardenLoginCredential") { - return "Add Bitwarden Login Credential Parameter"; - } if (type === "secret") { return "Add Secret Parameter"; } @@ -78,6 +76,10 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) { string | undefined >(undefined); + const [credentialType, setCredentialType] = useState<"bitwarden" | "skyvern">( + "skyvern", + ); + const [identityKey, setIdentityKey] = useState(""); const [identityFields, setIdentityFields] = useState(""); const [itemId, setItemId] = useState(""); @@ -189,7 +191,19 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) { )} - {type === "bitwardenLoginCredential" && ( + {type === "credential" && ( + { + setCredentialType(value as "bitwarden" | "skyvern"); + }} + options={[ + { label: "Skyvern", value: "skyvern" }, + { label: "Bitwarden", value: "bitwarden" }, + ]} + /> + )} + {type === "credential" && credentialType === "bitwarden" && ( <>