@@ -95,7 +95,7 @@ function SendEmailNode({ id, data }: NodeProps) {
}}
value={inputs.subject}
placeholder="What is the gist?"
- className="nopan"
+ className="nopan text-xs"
/>
@@ -109,7 +109,7 @@ function SendEmailNode({ id, data }: NodeProps) {
}}
value={inputs.body}
placeholder="What would you like to say?"
- className="nopan"
+ className="nopan text-xs"
/>
@@ -397,8 +415,8 @@ function TaskNode({ id, data }: NodeProps) {
handleChange("totpIdentifier", event.target.value);
}}
value={inputs.totpIdentifier ?? ""}
- placeholder="Add an ID that links your TOTP to the task"
- className="nopan"
+ placeholder={fieldPlaceholders["totpIdentifier"]}
+ className="nopan text-xs"
/>
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/types.ts b/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/types.ts
index d1a69d08..ae96ebc3 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/types.ts
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/TaskNode/types.ts
@@ -41,6 +41,7 @@ export const taskNodeDefaultData: TaskNodeData = {
export function isTaskNode(node: Node): node is TaskNode {
return node.type === "task";
}
+
export const helpTooltipContent = {
base: "Tell Skyvern what to do. This is the core of your task block, so make sure your prompt tells Skyvern when it has completed its task, any guardrails, and if there are cases where it should terminate the task early. Define placeholder values using the “parameters” drop down that you predefine or redefine run-to-run. This allows you to make a workflow generalizable to a variety of use cases that change with every run.",
extraction:
@@ -48,4 +49,27 @@ export const helpTooltipContent = {
limits:
"Give Skyvern limitations, such as number of retries on failure, the number of maximum steps, the option to download and append suffix identifiers, and return message for errors Skyvern encounters.",
totp: "Link your internal TOTP storage system to relay 2FA codes we encounter straight to Skyvern. If you have multiple tasks running simultaneously, make sure to link an identifier so Skyvern knows which TOTP URL goes with which task.",
+} as const;
+
+export const fieldPlaceholders = {
+ url: "https://",
+ navigationGoal: "Tell Skyvern what to do.",
+ dataExtractionGoal: "What data do you need to extract?",
+ maxRetries: "Default: 3",
+ maxStepsOverride: "Default: 10",
+ downloadSuffix: "Suffix for file downloads",
+ label: "Task",
+ totpVerificationUrl: "Provide your 2FA endpoint",
+ totpIdentifier: "Add an ID that links your TOTP to the task",
+};
+
+export const errorMappingExampleValue = {
+ sample_invalid_credentials: "if the credentials are incorrect, terminate",
+};
+
+export const dataSchemaExampleValue = {
+ type: "object",
+ properties: {
+ sample: { type: "string" },
+ },
};
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/TextPromptNode/TextPromptNode.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/TextPromptNode/TextPromptNode.tsx
index 94563113..72148d58 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/TextPromptNode/TextPromptNode.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/TextPromptNode/TextPromptNode.tsx
@@ -75,7 +75,7 @@ function TextPromptNode({ id, data }: NodeProps) {
}}
value={inputs.prompt}
placeholder="What do you want to generate?"
- className="nopan"
+ className="nopan text-xs"
/>
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/UploadNode/UploadNode.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/UploadNode/UploadNode.tsx
index 74d4fe68..fe3ca317 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/UploadNode/UploadNode.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/UploadNode/UploadNode.tsx
@@ -55,7 +55,7 @@ function UploadNode({ id, data }: NodeProps) {