add 1Password credential parameter support to workflow editor (#2657)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com>
This commit is contained in:
Prakash Maheshwaran
2025-06-12 12:54:58 -04:00
committed by GitHub
parent 39a830ef6c
commit 3559e2572c
9 changed files with 462 additions and 242 deletions

View File

@@ -48,6 +48,7 @@ import {
BlockYAML, BlockYAML,
ContextParameterYAML, ContextParameterYAML,
CredentialParameterYAML, CredentialParameterYAML,
OnePasswordCredentialParameterYAML,
ParameterYAML, ParameterYAML,
WorkflowCreateYAMLRequest, WorkflowCreateYAMLRequest,
WorkflowParameterYAML, WorkflowParameterYAML,
@@ -68,6 +69,12 @@ import {
} from "./nodes"; } from "./nodes";
import { WorkflowNodeLibraryPanel } from "./panels/WorkflowNodeLibraryPanel"; import { WorkflowNodeLibraryPanel } from "./panels/WorkflowNodeLibraryPanel";
import { WorkflowParametersPanel } from "./panels/WorkflowParametersPanel"; import { WorkflowParametersPanel } from "./panels/WorkflowParametersPanel";
import {
ParametersState,
parameterIsSkyvernCredential,
parameterIsOnePasswordCredential,
parameterIsBitwardenCredential,
} from "./types";
import "./reactFlowOverrideStyles.css"; import "./reactFlowOverrideStyles.css";
import { import {
convertEchoParameters, convertEchoParameters,
@@ -84,7 +91,7 @@ import {
nodeAdderNode, nodeAdderNode,
startNode, startNode,
} from "./workflowEditorUtils"; } from "./workflowEditorUtils";
import { parameterIsBitwardenCredential, ParametersState } from "./types";
import { useAutoPan } from "./useAutoPan"; import { useAutoPan } from "./useAutoPan";
function convertToParametersYAML( function convertToParametersYAML(
@@ -95,9 +102,22 @@ function convertToParametersYAML(
| ContextParameterYAML | ContextParameterYAML
| BitwardenSensitiveInformationParameterYAML | BitwardenSensitiveInformationParameterYAML
| BitwardenCreditCardDataParameterYAML | BitwardenCreditCardDataParameterYAML
| OnePasswordCredentialParameterYAML
| CredentialParameterYAML | CredentialParameterYAML
> { > {
return parameters.map((parameter) => { return parameters
.map(
(
parameter: ParametersState[number],
):
| WorkflowParameterYAML
| BitwardenLoginCredentialParameterYAML
| ContextParameterYAML
| BitwardenSensitiveInformationParameterYAML
| BitwardenCreditCardDataParameterYAML
| OnePasswordCredentialParameterYAML
| CredentialParameterYAML
| undefined => {
if (parameter.parameterType === WorkflowEditorParameterTypes.Workflow) { if (parameter.parameterType === WorkflowEditorParameterTypes.Workflow) {
return { return {
parameter_type: WorkflowParameterTypes.Workflow, parameter_type: WorkflowParameterTypes.Workflow,
@@ -121,20 +141,23 @@ function convertToParametersYAML(
parameter.parameterType === WorkflowEditorParameterTypes.Secret parameter.parameterType === WorkflowEditorParameterTypes.Secret
) { ) {
return { return {
parameter_type: WorkflowParameterTypes.Bitwarden_Sensitive_Information, parameter_type:
WorkflowParameterTypes.Bitwarden_Sensitive_Information,
key: parameter.key, key: parameter.key,
bitwarden_identity_key: parameter.identityKey, bitwarden_identity_key: parameter.identityKey,
bitwarden_identity_fields: parameter.identityFields, bitwarden_identity_fields: parameter.identityFields,
description: parameter.description || null, description: parameter.description || null,
bitwarden_collection_id: parameter.collectionId, bitwarden_collection_id: parameter.collectionId,
bitwarden_client_id_aws_secret_key: BITWARDEN_CLIENT_ID_AWS_SECRET_KEY, 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_CLIENT_SECRET_AWS_SECRET_KEY, BITWARDEN_CLIENT_SECRET_AWS_SECRET_KEY,
bitwarden_master_password_aws_secret_key: bitwarden_master_password_aws_secret_key:
BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY, BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY,
}; };
} else if ( } else if (
parameter.parameterType === WorkflowEditorParameterTypes.CreditCardData parameter.parameterType ===
WorkflowEditorParameterTypes.CreditCardData
) { ) {
return { return {
parameter_type: WorkflowParameterTypes.Bitwarden_Credit_Card_Data, parameter_type: WorkflowParameterTypes.Bitwarden_Credit_Card_Data,
@@ -142,7 +165,8 @@ function convertToParametersYAML(
description: parameter.description || null, description: parameter.description || null,
bitwarden_item_id: parameter.itemId, bitwarden_item_id: parameter.itemId,
bitwarden_collection_id: parameter.collectionId, bitwarden_collection_id: parameter.collectionId,
bitwarden_client_id_aws_secret_key: BITWARDEN_CLIENT_ID_AWS_SECRET_KEY, 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_CLIENT_SECRET_AWS_SECRET_KEY, BITWARDEN_CLIENT_SECRET_AWS_SECRET_KEY,
bitwarden_master_password_aws_secret_key: bitwarden_master_password_aws_secret_key:
@@ -164,7 +188,7 @@ function convertToParametersYAML(
bitwarden_master_password_aws_secret_key: bitwarden_master_password_aws_secret_key:
BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY, BITWARDEN_MASTER_PASSWORD_AWS_SECRET_KEY,
}; };
} else { } else if (parameterIsSkyvernCredential(parameter)) {
return { return {
parameter_type: WorkflowParameterTypes.Workflow, parameter_type: WorkflowParameterTypes.Workflow,
workflow_parameter_type: WorkflowParameterValueType.CredentialId, workflow_parameter_type: WorkflowParameterValueType.CredentialId,
@@ -172,9 +196,39 @@ function convertToParametersYAML(
key: parameter.key, key: parameter.key,
description: parameter.description || null, description: parameter.description || null,
}; };
} else if (parameterIsOnePasswordCredential(parameter)) {
return {
parameter_type: WorkflowParameterTypes.OnePassword,
key: parameter.key,
description: parameter.description || null,
vault_id: parameter.vaultId,
item_id: parameter.itemId,
};
} }
} }
}); return undefined;
},
)
.filter(
(
param:
| WorkflowParameterYAML
| BitwardenLoginCredentialParameterYAML
| ContextParameterYAML
| BitwardenSensitiveInformationParameterYAML
| BitwardenCreditCardDataParameterYAML
| OnePasswordCredentialParameterYAML
| CredentialParameterYAML
| undefined,
): param is
| WorkflowParameterYAML
| BitwardenLoginCredentialParameterYAML
| ContextParameterYAML
| BitwardenSensitiveInformationParameterYAML
| BitwardenCreditCardDataParameterYAML
| OnePasswordCredentialParameterYAML
| CredentialParameterYAML => param !== undefined,
);
} }
type Props = { type Props = {
@@ -207,7 +261,8 @@ function FlowRenderer({
useWorkflowPanelStore(); useWorkflowPanelStore();
const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);
const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges);
const [parameters, setParameters] = useState(initialParameters); const [parameters, setParameters] =
useState<ParametersState>(initialParameters);
const [title, setTitle] = useState(initialTitle); const [title, setTitle] = useState(initialTitle);
const nodesInitialized = useNodesInitialized(); const nodesInitialized = useNodesInitialized();
const { hasChanges, setHasChanges } = useWorkflowHasChangesStore(); const { hasChanges, setHasChanges } = useWorkflowHasChangesStore();

View File

@@ -14,6 +14,7 @@ import {
WorkflowParameterValueType, WorkflowParameterValueType,
WorkflowSettings, WorkflowSettings,
} from "../types/workflowTypes"; } from "../types/workflowTypes";
import { ParametersState } from "./types";
import { useGlobalWorkflowsQuery } from "../hooks/useGlobalWorkflowsQuery"; import { useGlobalWorkflowsQuery } from "../hooks/useGlobalWorkflowsQuery";
function WorkflowEditor() { function WorkflowEditor() {
@@ -74,7 +75,8 @@ function WorkflowEditor() {
initialTitle={workflow.title} initialTitle={workflow.title}
initialNodes={elements.nodes} initialNodes={elements.nodes}
initialEdges={elements.edges} initialEdges={elements.edges}
initialParameters={workflow.workflow_definition.parameters initialParameters={
workflow.workflow_definition.parameters
.filter((parameter) => isDisplayedInWorkflowEditor(parameter)) .filter((parameter) => isDisplayedInWorkflowEditor(parameter))
.map((parameter) => { .map((parameter) => {
if ( if (
@@ -139,7 +141,21 @@ function WorkflowEditor() {
credentialId: parameter.credential_id, credentialId: parameter.credential_id,
description: parameter.description, description: parameter.description,
}; };
} else { } else if (
parameter.parameter_type ===
WorkflowParameterTypes.OnePassword
) {
return {
key: parameter.key,
parameterType: WorkflowEditorParameterTypes.OnePassword,
vaultId: parameter.vault_id,
itemId: parameter.item_id,
description: parameter.description,
};
} else if (
parameter.parameter_type ===
WorkflowParameterTypes.Bitwarden_Login_Credential
) {
return { return {
key: parameter.key, key: parameter.key,
parameterType: WorkflowEditorParameterTypes.Credential, parameterType: WorkflowEditorParameterTypes.Credential,
@@ -149,7 +165,10 @@ function WorkflowEditor() {
description: parameter.description, description: parameter.description,
}; };
} }
})} return undefined;
})
.filter(Boolean) as ParametersState
}
workflow={workflow} workflow={workflow}
/> />
</ReactFlowProvider> </ReactFlowProvider>

View File

@@ -80,9 +80,11 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) {
string | undefined string | undefined
>(undefined); >(undefined);
const [credentialType, setCredentialType] = useState<"bitwarden" | "skyvern">( const [credentialType, setCredentialType] = useState<
"skyvern", "bitwarden" | "skyvern" | "onepassword"
); >("skyvern");
const [vaultId, setVaultId] = useState("");
const [itemId, setItemId] = useState("");
const [identityKey, setIdentityKey] = useState(""); const [identityKey, setIdentityKey] = useState("");
const [identityFields, setIdentityFields] = useState(""); const [identityFields, setIdentityFields] = useState("");
@@ -200,11 +202,14 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) {
<SwitchBar <SwitchBar
value={credentialType} value={credentialType}
onChange={(value) => { onChange={(value) => {
setCredentialType(value as "bitwarden" | "skyvern"); setCredentialType(
value as "bitwarden" | "skyvern" | "onepassword",
);
}} }}
options={[ options={[
{ label: "Skyvern", value: "skyvern" }, { label: "Skyvern", value: "skyvern" },
{ label: "Bitwarden", value: "bitwarden" }, { label: "Bitwarden", value: "bitwarden" },
{ label: "1Password", value: "onepassword" },
]} ]}
/> />
)} )}
@@ -237,6 +242,24 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) {
</div> </div>
</> </>
)} )}
{type === "credential" && credentialType === "onepassword" && (
<>
<div className="space-y-1">
<Label className="text-xs text-slate-300">Vault ID</Label>
<Input
value={vaultId}
onChange={(e) => setVaultId(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label className="text-xs text-slate-300">Item ID</Label>
<Input
value={itemId}
onChange={(e) => setItemId(e.target.value)}
/>
</div>
</>
)}
{type === "context" && ( {type === "context" && (
<div className="space-y-1"> <div className="space-y-1">
<Label className="text-xs text-slate-300">Source Parameter</Label> <Label className="text-xs text-slate-300">Source Parameter</Label>
@@ -387,6 +410,23 @@ function WorkflowParameterAddPanel({ type, onClose, onSave }: Props) {
description, description,
}); });
} }
if (type === "credential" && credentialType === "onepassword") {
if (vaultId.trim() === "" || itemId.trim() === "") {
toast({
variant: "destructive",
title: "Failed to add parameter",
description: "Vault ID and Item ID are required",
});
return;
}
onSave({
key,
parameterType: "onepassword",
vaultId,
itemId,
description,
});
}
if (type === "secret" || type === "creditCardData") { if (type === "secret" || type === "creditCardData") {
if (!bitwardenCollectionId) { if (!bitwardenCollectionId) {
toast({ toast({

View File

@@ -26,6 +26,7 @@ import { WorkflowParameterInput } from "../../WorkflowParameterInput";
import { import {
parameterIsBitwardenCredential, parameterIsBitwardenCredential,
parameterIsSkyvernCredential, parameterIsSkyvernCredential,
parameterIsOnePasswordCredential,
ParametersState, ParametersState,
} from "../types"; } from "../types";
import { getDefaultValueForParameterType } from "../workflowEditorUtils"; import { getDefaultValueForParameterType } from "../workflowEditorUtils";
@@ -78,8 +79,17 @@ function WorkflowParameterEditPanel({
const isSkyvernCredential = const isSkyvernCredential =
initialValues.parameterType === "credential" && initialValues.parameterType === "credential" &&
parameterIsSkyvernCredential(initialValues); parameterIsSkyvernCredential(initialValues);
const [credentialType, setCredentialType] = useState<"bitwarden" | "skyvern">( const isOnePasswordCredential =
isBitwardenCredential ? "bitwarden" : "skyvern", initialValues.parameterType === "onepassword" &&
parameterIsOnePasswordCredential(initialValues);
const [credentialType, setCredentialType] = useState<
"bitwarden" | "skyvern" | "onepassword"
>(
isBitwardenCredential
? "bitwarden"
: isOnePasswordCredential
? "onepassword"
: "skyvern",
); );
const [urlParameterKey, setUrlParameterKey] = useState( const [urlParameterKey, setUrlParameterKey] = useState(
isBitwardenCredential ? initialValues.urlParameterKey ?? "" : "", isBitwardenCredential ? initialValues.urlParameterKey ?? "" : "",
@@ -143,6 +153,12 @@ function WorkflowParameterEditPanel({
const [credentialId, setCredentialId] = useState( const [credentialId, setCredentialId] = useState(
isSkyvernCredential ? initialValues.credentialId : "", isSkyvernCredential ? initialValues.credentialId : "",
); );
const [vaultId, setVaultId] = useState(
isOnePasswordCredential ? initialValues.vaultId : "",
);
const [opItemId, setOpItemId] = useState(
isOnePasswordCredential ? initialValues.itemId : "",
);
const [bitwardenLoginCredentialItemId, setBitwardenLoginCredentialItemId] = const [bitwardenLoginCredentialItemId, setBitwardenLoginCredentialItemId] =
useState(isBitwardenCredential ? initialValues.itemId ?? "" : ""); useState(isBitwardenCredential ? initialValues.itemId ?? "" : "");
@@ -256,11 +272,14 @@ function WorkflowParameterEditPanel({
<SwitchBar <SwitchBar
value={credentialType} value={credentialType}
onChange={(value) => { onChange={(value) => {
setCredentialType(value as "bitwarden" | "skyvern"); setCredentialType(
value as "bitwarden" | "skyvern" | "onepassword",
);
}} }}
options={[ options={[
{ label: "Skyvern", value: "skyvern" }, { label: "Skyvern", value: "skyvern" },
{ label: "Bitwarden", value: "bitwarden" }, { label: "Bitwarden", value: "bitwarden" },
{ label: "1Password", value: "onepassword" },
]} ]}
/> />
)} )}
@@ -293,6 +312,24 @@ function WorkflowParameterEditPanel({
</div> </div>
</> </>
)} )}
{type === "credential" && credentialType === "onepassword" && (
<>
<div className="space-y-1">
<Label className="text-xs text-slate-300">Vault ID</Label>
<Input
value={vaultId}
onChange={(e) => setVaultId(e.target.value)}
/>
</div>
<div className="space-y-1">
<Label className="text-xs text-slate-300">Item ID</Label>
<Input
value={opItemId}
onChange={(e) => setOpItemId(e.target.value)}
/>
</div>
</>
)}
{type === "context" && ( {type === "context" && (
<div className="space-y-1"> <div className="space-y-1">
<Label className="text-xs text-slate-300">Source Parameter</Label> <Label className="text-xs text-slate-300">Source Parameter</Label>
@@ -430,6 +467,23 @@ function WorkflowParameterEditPanel({
description, description,
}); });
} }
if (type === "credential" && credentialType === "onepassword") {
if (vaultId.trim() === "" || opItemId.trim() === "") {
toast({
variant: "destructive",
title: "Failed to save parameter",
description: "Vault ID and Item ID are required",
});
return;
}
onSave({
key,
parameterType: "onepassword",
vaultId,
itemId: opItemId,
description,
});
}
if (type === "secret" || type === "creditCardData") { if (type === "secret" || type === "creditCardData") {
if (!collectionId) { if (!collectionId) {
toast({ toast({

View File

@@ -153,7 +153,10 @@ function WorkflowParametersPanel() {
active: true, active: true,
operation: "edit", operation: "edit",
parameter: parameter, parameter: parameter,
type: parameter.parameterType, type:
parameter.parameterType === "onepassword"
? WorkflowEditorParameterTypes.OnePassword
: parameter.parameterType,
}); });
}} }}
/> />

View File

@@ -16,6 +16,14 @@ export type SkyvernCredential = {
credentialId: string; credentialId: string;
}; };
export type OnePasswordCredential = {
key: string;
description?: string | null;
parameterType: "onepassword";
vaultId: string;
itemId: string;
};
export function parameterIsBitwardenCredential( export function parameterIsBitwardenCredential(
parameter: CredentialParameterState, parameter: CredentialParameterState,
): parameter is BitwardenLoginCredential { ): parameter is BitwardenLoginCredential {
@@ -28,9 +36,16 @@ export function parameterIsSkyvernCredential(
return "credentialId" in parameter; return "credentialId" in parameter;
} }
export function parameterIsOnePasswordCredential(
parameter: CredentialParameterState,
): parameter is OnePasswordCredential {
return "vaultId" in parameter && "itemId" in parameter;
}
export type CredentialParameterState = export type CredentialParameterState =
| BitwardenLoginCredential | BitwardenLoginCredential
| SkyvernCredential; | SkyvernCredential
| OnePasswordCredential;
export type ParametersState = Array< export type ParametersState = Array<
| { | {
@@ -53,6 +68,7 @@ export type ParametersState = Array<
identityFields: Array<string>; identityFields: Array<string>;
collectionId: string; collectionId: string;
description?: string | null; description?: string | null;
maybe?: boolean;
} }
| { | {
key: string; key: string;

View File

@@ -1614,7 +1614,8 @@ function getAvailableOutputParameterKeys(
function convertParametersToParameterYAML( function convertParametersToParameterYAML(
parameters: Array<Exclude<Parameter, OutputParameter>>, parameters: Array<Exclude<Parameter, OutputParameter>>,
): Array<ParameterYAML> { ): Array<ParameterYAML> {
return parameters.map((parameter) => { return parameters
.map((parameter) => {
const base = { const base = {
key: parameter.key, key: parameter.key,
description: parameter.description, description: parameter.description,
@@ -1695,8 +1696,17 @@ function convertParametersToParameterYAML(
credential_id: parameter.credential_id, credential_id: parameter.credential_id,
}; };
} }
case WorkflowParameterTypes.OnePassword: {
return {
...base,
parameter_type: WorkflowParameterTypes.OnePassword,
vault_id: parameter.vault_id,
item_id: parameter.item_id,
};
} }
}); }
})
.filter(Boolean);
} }
function convertBlocksToBlockYAML( function convertBlocksToBlockYAML(

View File

@@ -61,6 +61,17 @@ export type BitwardenCreditCardDataParameter = WorkflowParameterBase & {
deleted_at: string | null; deleted_at: string | null;
}; };
export type OnePasswordCredentialParameter = WorkflowParameterBase & {
parameter_type: "onepassword";
workflow_id: string;
onepassword_credential_parameter_id: string;
vault_id: string;
item_id: string;
created_at: string;
modified_at: string;
deleted_at: string | null;
};
export type CredentialParameter = WorkflowParameterBase & { export type CredentialParameter = WorkflowParameterBase & {
parameter_type: "credential"; parameter_type: "credential";
workflow_id: string; workflow_id: string;
@@ -118,6 +129,7 @@ export const WorkflowParameterTypes = {
Bitwarden_Login_Credential: "bitwarden_login_credential", Bitwarden_Login_Credential: "bitwarden_login_credential",
Bitwarden_Sensitive_Information: "bitwarden_sensitive_information", Bitwarden_Sensitive_Information: "bitwarden_sensitive_information",
Bitwarden_Credit_Card_Data: "bitwarden_credit_card_data", Bitwarden_Credit_Card_Data: "bitwarden_credit_card_data",
OnePassword: "onepassword",
Credential: "credential", Credential: "credential",
} as const; } as const;
@@ -132,6 +144,7 @@ export function isDisplayedInWorkflowEditor(
| BitwardenCreditCardDataParameter | BitwardenCreditCardDataParameter
| BitwardenLoginCredentialParameter | BitwardenLoginCredentialParameter
| BitwardenSensitiveInformationParameter | BitwardenSensitiveInformationParameter
| OnePasswordCredentialParameter
| CredentialParameter { | CredentialParameter {
return ( return (
parameter.parameter_type === WorkflowParameterTypes.Workflow || parameter.parameter_type === WorkflowParameterTypes.Workflow ||
@@ -142,6 +155,7 @@ export function isDisplayedInWorkflowEditor(
WorkflowParameterTypes.Bitwarden_Sensitive_Information || WorkflowParameterTypes.Bitwarden_Sensitive_Information ||
parameter.parameter_type === parameter.parameter_type ===
WorkflowParameterTypes.Bitwarden_Credit_Card_Data || WorkflowParameterTypes.Bitwarden_Credit_Card_Data ||
parameter.parameter_type === WorkflowParameterTypes.OnePassword ||
parameter.parameter_type === WorkflowParameterTypes.Credential parameter.parameter_type === WorkflowParameterTypes.Credential
); );
} }
@@ -153,6 +167,7 @@ export type Parameter =
| BitwardenLoginCredentialParameter | BitwardenLoginCredentialParameter
| BitwardenSensitiveInformationParameter | BitwardenSensitiveInformationParameter
| BitwardenCreditCardDataParameter | BitwardenCreditCardDataParameter
| OnePasswordCredentialParameter
| AWSSecretParameter | AWSSecretParameter
| CredentialParameter; | CredentialParameter;
@@ -222,6 +237,7 @@ export const WorkflowEditorParameterTypes = {
Secret: "secret", Secret: "secret",
Context: "context", Context: "context",
CreditCardData: "creditCardData", CreditCardData: "creditCardData",
OnePassword: "onepassword",
} as const; } as const;
export type WorkflowEditorParameterType = export type WorkflowEditorParameterType =

View File

@@ -23,11 +23,12 @@ export type ParameterYAML =
| WorkflowParameterYAML | WorkflowParameterYAML
| BitwardenLoginCredentialParameterYAML | BitwardenLoginCredentialParameterYAML
| AWSSecretParameterYAML | AWSSecretParameterYAML
| CredentialParameterYAML | BitwardenSensitiveInformationParameterYAML
| BitwardenCreditCardDataParameterYAML
| OnePasswordCredentialParameterYAML
| ContextParameterYAML | ContextParameterYAML
| OutputParameterYAML | OutputParameterYAML
| BitwardenSensitiveInformationParameterYAML | CredentialParameterYAML;
| BitwardenCreditCardDataParameterYAML;
export type ParameterYAMLBase = { export type ParameterYAMLBase = {
parameter_type: string; parameter_type: string;
@@ -78,6 +79,12 @@ export type BitwardenCreditCardDataParameterYAML = ParameterYAMLBase & {
bitwarden_master_password_aws_secret_key: string; bitwarden_master_password_aws_secret_key: string;
}; };
export type OnePasswordCredentialParameterYAML = ParameterYAMLBase & {
parameter_type: "onepassword";
vault_id: string;
item_id: string;
};
export type ContextParameterYAML = ParameterYAMLBase & { export type ContextParameterYAML = ParameterYAMLBase & {
parameter_type: "context"; parameter_type: "context";
source_parameter_key: string; source_parameter_key: string;