-
+
- Error Messages
+ Engine
+
+
+
{
+ handleChange("engine", value);
+ }}
+ className="nopan w-52 text-xs"
+ />
+
+
+
+
+ Max Steps Override
-
{
- handleChange(
- "errorCodeMapping",
- checked
- ? JSON.stringify(errorMappingExampleValue, null, 2)
- : "null",
- );
- }}
- />
-
- {inputs.errorCodeMapping !== "null" && (
-
- {
- handleChange("errorCodeMapping", value);
- }}
- className="nowheel nopan"
- fontSize={8}
- />
-
- )}
-
-
-
-
-
- Include Action History
-
-
-
-
- {
- handleChange(
- "includeActionHistoryInVerification",
- checked,
- );
+ className="nopan w-52 text-xs"
+ min="0"
+ value={inputs.maxStepsOverride ?? ""}
+ onChange={(event) => {
+ const value =
+ event.target.value === ""
+ ? null
+ : Number(event.target.value);
+ handleChange("maxStepsOverride", value);
}}
/>
-
-
-
-
- Continue on Failure
-
-
+
+
+
+
+ Error Messages
+
+
+
+
{
+ handleChange(
+ "errorCodeMapping",
+ checked
+ ? JSON.stringify(
+ errorMappingExampleValue,
+ null,
+ 2,
+ )
+ : "null",
+ );
+ }}
+ />
+
+ {inputs.errorCodeMapping !== "null" && (
+
+ {
+ handleChange("errorCodeMapping", value);
+ }}
+ className="nowheel nopan"
+ fontSize={8}
+ />
+
+ )}
-
-
{
- handleChange("continueOnFailure", checked);
+
+
+
+
+ Include Action History
+
+
+
+
+ {
+ handleChange(
+ "includeActionHistoryInVerification",
+ checked,
+ );
+ }}
+ />
+
+
+
+
+
+ Continue on Failure
+
+
+
+
+ {
+ handleChange("continueOnFailure", checked);
+ }}
+ />
+
+
+
+
+
+ Cache Actions
+
+
+
+
+ {
+ handleChange("cacheActions", checked);
+ }}
+ />
+
+
+
+
+
+
+ Complete on Download
+
+
+
+
+ {
+ handleChange("allowDownloads", checked);
+ }}
+ />
+
+
+
+
+
+ File Suffix
+
+
+
+
{
+ handleChange("downloadSuffix", value);
}}
/>
-
-
-
-
- Cache Actions
-
-
-
-
-
{
- handleChange("cacheActions", checked);
+
+
+
+
+ 2FA Identifier
+
+
+
+
{
+ handleChange("totpIdentifier", value);
}}
+ value={inputs.totpIdentifier ?? ""}
+ placeholder={placeholders["navigation"]["totpIdentifier"]}
+ className="nopan text-xs"
/>
-
-
-
-
-
- Complete on Download
-
-
-
-
-
{
- handleChange("allowDownloads", checked);
+
+
+
+ 2FA Verification URL
+
+
+
+
{
+ handleChange("totpVerificationUrl", value);
}}
+ value={inputs.totpVerificationUrl ?? ""}
+ placeholder={placeholders["task"]["totpVerificationUrl"]}
+ className="nopan text-xs"
/>
-
-
-
- File Suffix
-
-
-
-
{
- handleChange("downloadSuffix", value);
- }}
- />
-
-
-
-
-
- 2FA Identifier
-
-
-
-
{
- handleChange("totpIdentifier", value);
- }}
- value={inputs.totpIdentifier ?? ""}
- placeholder={placeholders["navigation"]["totpIdentifier"]}
- className="nopan text-xs"
- />
-
-
-
-
- 2FA Verification URL
-
-
-
-
{
- handleChange("totpVerificationUrl", value);
- }}
- value={inputs.totpVerificationUrl ?? ""}
- placeholder={placeholders["task"]["totpVerificationUrl"]}
- className="nopan text-xs"
- />
-
-
-
-
-
+
+
+
+
-
+
+
+
);
}
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
index 34d149c7..b2df436d 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/NodeActionMenu.tsx
@@ -7,12 +7,14 @@ import {
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { DotsHorizontalIcon } from "@radix-ui/react-icons";
+import { OrgWalled } from "@/components/Orgwalled";
type Props = {
onDelete: () => void;
+ onShowScript?: () => void;
};
-function NodeActionMenu({ onDelete }: Props) {
+function NodeActionMenu({ onDelete, onShowScript }: Props) {
return (
@@ -28,6 +30,17 @@ function NodeActionMenu({ onDelete }: Props) {
>
Delete Block
+
+ {onShowScript && (
+ {
+ onShowScript();
+ }}
+ >
+ Show Script
+
+ )}
+
);
diff --git a/skyvern-frontend/src/routes/workflows/editor/nodes/components/NodeHeader.tsx b/skyvern-frontend/src/routes/workflows/editor/nodes/components/NodeHeader.tsx
index fc94cb5e..3a6e5e97 100644
--- a/skyvern-frontend/src/routes/workflows/editor/nodes/components/NodeHeader.tsx
+++ b/skyvern-frontend/src/routes/workflows/editor/nodes/components/NodeHeader.tsx
@@ -12,6 +12,7 @@ import { useCredentialGetter } from "@/hooks/useCredentialGetter";
import { useNodeLabelChangeHandler } from "@/routes/workflows/hooks/useLabelChangeHandler";
import { useDeleteNodeCallback } from "@/routes/workflows/hooks/useDeleteNodeCallback";
+import { useToggleScriptForNodeCallback } from "@/routes/workflows/hooks/useToggleScriptForNodeCallback";
import { useDebugSessionQuery } from "@/routes/workflows/hooks/useDebugSessionQuery";
import { useWorkflowRunQuery } from "@/routes/workflows/hooks/useWorkflowRunQuery";
import {
@@ -145,6 +146,7 @@ function NodeHeader({
});
const blockTitle = workflowBlockTitle[type];
const deleteNodeCallback = useDeleteNodeCallback();
+ const toggleScriptForNodeCallback = useToggleScriptForNodeCallback();
const credentialGetter = useCredentialGetter();
const navigate = useNavigate();
const queryClient = useQueryClient();
@@ -411,6 +413,9 @@ function NodeHeader({
onDelete={() => {
deleteNodeCallback(nodeId);
}}
+ onShowScript={() =>
+ toggleScriptForNodeCallback({ id: nodeId, show: true })
+ }
/>