diff --git a/fern/openapi/skyvern_openapi.json b/fern/openapi/skyvern_openapi.json index 59900a37..c525f383 100644 --- a/fern/openapi/skyvern_openapi.json +++ b/fern/openapi/skyvern_openapi.json @@ -1310,12 +1310,12 @@ } } }, - "400": { - "description": "Folder not found" - }, "404": { "description": "Workflow not found" }, + "400": { + "description": "Folder not found" + }, "422": { "description": "Validation Error", "content": { @@ -1620,12 +1620,12 @@ } } }, - "400": { - "description": "Timeline not available for this run type" - }, "404": { "description": "Run not found" }, + "400": { + "description": "Timeline not available for this run type" + }, "422": { "description": "Validation Error", "content": { @@ -2266,12 +2266,12 @@ } } }, - "403": { - "description": "Unauthorized - Invalid or missing authentication" - }, "404": { "description": "Browser session not found" }, + "403": { + "description": "Unauthorized - Invalid or missing authentication" + }, "422": { "description": "Validation Error", "content": { @@ -2836,6 +2836,83 @@ ] } }, + "/v1/run/tasks/download_files": { + "post": { + "tags": [ + "Agent" + ], + "summary": "File Download Task", + "description": "Download a file from a website by navigating and clicking download buttons", + "operationId": "download_files_v1_run_tasks_download_files_post", + "parameters": [ + { + "name": "x-api-key", + "in": "header", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Skyvern API key for authentication. API key can be found at https://app.skyvern.com/settings.", + "title": "X-Api-Key" + }, + "description": "Skyvern API key for authentication. API key can be found at https://app.skyvern.com/settings." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DownloadFilesRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WorkflowRunResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-sdk-method-name": "download_files", + "x-fern-examples": [ + { + "code-samples": [ + { + "sdk": "python", + "code": "from skyvern import Skyvern\n\nskyvern = Skyvern(api_key=\"YOUR_API_KEY\")\nawait skyvern.download_files(\n url=\"https://example.com/downloads\",\n navigation_goal=\"Navigate to the downloads page and click the 'Download PDF' button\",\n download_suffix=\"report.pdf\"\n)\n" + }, + { + "sdk": "typescript", + "code": "import { SkyvernClient } from \"@skyvern/client\";\n\nconst skyvern = new SkyvernClient({ apiKey: \"YOUR_API_KEY\" });\nawait skyvern.downloadFiles({\n url: \"https://example.com/downloads\",\n navigation_goal: \"Navigate to the downloads page and click the 'Download PDF' button\",\n download_suffix: \"report.pdf\"\n});\n" + } + ] + } + ] + } + }, "/v1/scripts": { "post": { "tags": [ @@ -3837,6 +3914,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -4122,6 +4204,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "anyOf": [ { @@ -5612,7 +5699,7 @@ "type": "number", "title": "Timeout", "description": "Timeout in milliseconds", - "default": 10000 + "default": 5000 } }, "type": "object", @@ -5697,6 +5784,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "code": { "type": "string", "title": "Code" @@ -5810,6 +5902,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "code": { "type": "string", "title": "Code" @@ -5886,6 +5983,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "branch_conditions": { "items": { "$ref": "#/components/schemas/BranchCondition" @@ -5944,6 +6046,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "branch_conditions": { "items": { "$ref": "#/components/schemas/BranchConditionYAML" @@ -6146,8 +6253,8 @@ "anyOf": [ { "type": "integer", - "maximum": 1440, - "minimum": 5 + "maximum": 1440.0, + "minimum": 5.0 }, { "type": "null" @@ -6544,6 +6651,185 @@ "title": "DeployScriptRequest", "description": "Request model for deploying a script with updated files." }, + "DownloadFilesRequest": { + "properties": { + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Url", + "description": "Website URL" + }, + "webhook_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Webhook Url", + "description": "Webhook URL to send status updates" + }, + "proxy_location": { + "anyOf": [ + { + "$ref": "#/components/schemas/ProxyLocation" + }, + { + "type": "null" + } + ], + "description": "Proxy location to use" + }, + "totp_identifier": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Totp Identifier", + "description": "Identifier for TOTP (Time-based One-Time Password) if required" + }, + "totp_url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Totp Url", + "description": "TOTP URL to fetch one-time passwords" + }, + "browser_session_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Browser Session Id", + "description": "ID of the browser session to use, which is prefixed by `pbs_` e.g. `pbs_123456`", + "examples": [ + "pbs_123456" + ] + }, + "browser_profile_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Browser Profile Id", + "description": "ID of a browser profile to reuse for this run" + }, + "browser_address": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Browser Address", + "description": "The CDP address for the task.", + "examples": [ + "http://127.0.0.1:9222", + "ws://127.0.0.1:9222/devtools/browser/1234567890" + ] + }, + "extra_http_headers": { + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "title": "Extra Http Headers", + "description": "Additional HTTP headers to include in requests" + }, + "max_screenshot_scrolling_times": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Screenshot Scrolling Times", + "description": "Maximum number of times to scroll for screenshots" + }, + "navigation_goal": { + "type": "string", + "title": "Navigation Goal", + "description": "Instructions for navigating to and downloading the file" + }, + "download_suffix": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Download Suffix", + "description": "Suffix or complete filename for the downloaded file" + }, + "download_timeout": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "title": "Download Timeout", + "description": "Timeout in seconds for the download operation" + }, + "max_steps_per_run": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Max Steps Per Run", + "description": "Maximum number of steps to execute" + } + }, + "type": "object", + "required": [ + "navigation_goal" + ], + "title": "DownloadFilesRequest" + }, "DownloadToS3Block": { "properties": { "label": { @@ -6594,6 +6880,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "type": "string", "title": "Url" @@ -6649,6 +6940,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "type": "string", "title": "Url" @@ -6793,6 +7089,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -7072,6 +7373,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "data_extraction_goal": { "type": "string", "title": "Data Extraction Goal" @@ -7208,6 +7514,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -7493,6 +7804,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "navigation_goal": { "type": "string", "title": "Navigation Goal" @@ -7802,6 +8118,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "file_url": { "type": "string", "title": "File Url" @@ -7873,6 +8194,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "file_url": { "type": "string", "title": "File Url" @@ -7968,6 +8294,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "storage_type": { "$ref": "#/components/schemas/FileStorageType", "default": "s3" @@ -8110,6 +8441,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "storage_type": { "$ref": "#/components/schemas/FileStorageType", "default": "s3" @@ -8389,6 +8725,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "loop_blocks": { "items": { "oneOf": [ @@ -8618,6 +8959,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "loop_blocks": { "items": { "anyOf": [ @@ -8845,6 +9191,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "method": { "type": "string", "title": "Method", @@ -9005,6 +9356,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "method": { "type": "string", "title": "Method", @@ -9128,6 +9484,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -9457,6 +9818,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "instructions": { "type": "string", "title": "Instructions", @@ -9674,7 +10040,7 @@ "type": "number", "title": "Timeout", "description": "Timeout in milliseconds", - "default": 10000 + "default": 5000 } }, "type": "object", @@ -9781,6 +10147,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -10066,6 +10437,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "anyOf": [ { @@ -10204,10 +10580,6 @@ }, "LoginRequest": { "properties": { - "credential_type": { - "$ref": "#/components/schemas/skyvern__schemas__run_blocks__CredentialType", - "description": "Where to get the credential from" - }, "url": { "anyOf": [ { @@ -10218,19 +10590,7 @@ } ], "title": "Url", - "description": "Website url" - }, - "prompt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Prompt", - "description": "Login instructions. Skyvern has default prompt/instruction for login if this field is not provided." + "description": "Website URL" }, "webhook_url": { "anyOf": [ @@ -10242,7 +10602,7 @@ } ], "title": "Webhook Url", - "description": "Webhook URL to send login status updates" + "description": "Webhook URL to send status updates" }, "proxy_location": { "anyOf": [ @@ -10349,6 +10709,22 @@ "title": "Max Screenshot Scrolling Times", "description": "Maximum number of times to scroll for screenshots" }, + "credential_type": { + "$ref": "#/components/schemas/skyvern__schemas__run_blocks__CredentialType", + "description": "Where to get the credential from" + }, + "prompt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Prompt", + "description": "Login instructions. Skyvern has default prompt/instruction for login if this field is not provided." + }, "credential_id": { "anyOf": [ { @@ -10517,6 +10893,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -10796,6 +11177,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "navigation_goal": { "type": "string", "title": "Navigation Goal" @@ -11350,6 +11736,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "file_url": { "type": "string", "title": "File Url" @@ -11418,6 +11809,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "file_url": { "type": "string", "title": "File Url" @@ -11878,7 +12274,7 @@ "type": "number", "title": "Timeout", "description": "Timeout in milliseconds", - "default": 10000 + "default": 5000 } }, "type": "object", @@ -11935,6 +12331,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "smtp_host": { "$ref": "#/components/schemas/AWSSecretParameter" }, @@ -12032,6 +12433,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "smtp_host_secret_parameter_key": { "type": "string", "title": "Smtp Host Secret Parameter Key" @@ -12401,6 +12807,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -12686,6 +13097,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "anyOf": [ { @@ -13469,6 +13885,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "prompt": { "type": "string", "title": "Prompt" @@ -13567,6 +13988,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "prompt": { "type": "string", "title": "Prompt" @@ -13677,6 +14103,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "llm_key": { "anyOf": [ { @@ -13813,6 +14244,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "llm_key": { "anyOf": [ { @@ -14188,7 +14624,7 @@ "type": "number", "title": "Timeout", "description": "Timeout in milliseconds", - "default": 10000 + "default": 5000 } }, "type": "object", @@ -14245,6 +14681,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "path": { "anyOf": [ { @@ -14306,6 +14747,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "path": { "anyOf": [ { @@ -14374,6 +14820,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -14653,6 +15104,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "url": { "type": "string", "title": "Url" @@ -14677,8 +15133,8 @@ }, "confidence_float": { "type": "number", - "maximum": 1, - "minimum": 0, + "maximum": 1.0, + "minimum": 0.0, "title": "Confidence Float" } }, @@ -14740,6 +15196,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "task_type": { "type": "string", "title": "Task Type", @@ -15025,6 +15486,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "complete_criterion": { "anyOf": [ { @@ -15170,6 +15636,11 @@ "title": "Disable Cache", "default": false }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "wait_sec": { "type": "integer", "title": "Wait Sec" @@ -15283,6 +15754,11 @@ ], "title": "Model" }, + "next_loop_on_failure": { + "type": "boolean", + "title": "Next Loop On Failure", + "default": false + }, "wait_sec": { "type": "integer", "title": "Wait Sec", diff --git a/skyvern-ts/client/package-lock.json b/skyvern-ts/client/package-lock.json index 97ea6ecf..219774f7 100644 --- a/skyvern-ts/client/package-lock.json +++ b/skyvern-ts/client/package-lock.json @@ -1586,9 +1586,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.8.32", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.32.tgz", - "integrity": "sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.2.tgz", + "integrity": "sha512-PxSsosKQjI38iXkmb3d0Y32efqyA0uW4s41u4IVBsLlWLhCiYNpH/AfNOVWRqCQBlD8TFJTz6OUWNd4DFJCnmw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1609,9 +1609,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", - "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1629,11 +1629,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.8.25", - "caniuse-lite": "^1.0.30001754", - "electron-to-chromium": "^1.5.249", + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", - "update-browserslist-db": "^1.1.4" + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1660,9 +1660,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001757", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", - "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", + "version": "1.0.30001759", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001759.tgz", + "integrity": "sha512-Pzfx9fOKoKvevQf8oCXoyNRQ5QyxJj+3O0Rqx2V5oxT61KGx8+n6hV/IUyJeifUci2clnmmKVpvtiqRzgiWjSw==", "dev": true, "funding": [ { @@ -1843,9 +1843,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.263", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.263.tgz", - "integrity": "sha512-DrqJ11Knd+lo+dv+lltvfMDLU27g14LMdH2b0O3Pio4uk0x+z7OR+JrmyacTPN2M8w3BrZ7/RTwG3R9B7irPlg==", + "version": "1.5.265", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.265.tgz", + "integrity": "sha512-B7IkLR1/AE+9jR2LtVF/1/6PFhY5TlnEHnlrKmGk7PvkJibg5jr+mLXLLzq3QYl6PA1T/vLDthQPqIPAlS/PPA==", "dev": true, "license": "ISC" }, @@ -2990,9 +2990,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", - "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", "dev": true, "funding": [ { diff --git a/skyvern-ts/client/src/Client.ts b/skyvern-ts/client/src/Client.ts index 5e335983..3635e84b 100644 --- a/skyvern-ts/client/src/Client.ts +++ b/skyvern-ts/client/src/Client.ts @@ -2233,6 +2233,88 @@ export class SkyvernClient { } } + /** + * Download a file from a website by navigating and clicking download buttons + * + * @param {Skyvern.DownloadFilesRequest} request + * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.downloadFiles({ + * navigation_goal: "navigation_goal" + * }) + */ + public downloadFiles( + request: Skyvern.DownloadFilesRequest, + requestOptions?: SkyvernClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__downloadFiles(request, requestOptions)); + } + + private async __downloadFiles( + request: Skyvern.DownloadFilesRequest, + requestOptions?: SkyvernClient.RequestOptions, + ): Promise> { + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + "v1/run/tasks/download_files", + ), + method: "POST", + headers: _headers, + contentType: "application/json", + queryParameters: requestOptions?.queryParams, + requestType: "json", + body: request, + timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, + maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, + abortSignal: requestOptions?.abortSignal, + }); + if (_response.ok) { + return { data: _response.body as Skyvern.WorkflowRunResponse, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 422: + throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.SkyvernError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.SkyvernError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + rawResponse: _response.rawResponse, + }); + case "timeout": + throw new errors.SkyvernTimeoutError( + "Timeout exceeded when calling POST /v1/run/tasks/download_files.", + ); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + /** * Retrieves a paginated list of scripts for the current organization * diff --git a/skyvern-ts/client/src/api/client/requests/DownloadFilesRequest.ts b/skyvern-ts/client/src/api/client/requests/DownloadFilesRequest.ts new file mode 100644 index 00000000..332da04b --- /dev/null +++ b/skyvern-ts/client/src/api/client/requests/DownloadFilesRequest.ts @@ -0,0 +1,40 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../../index.js"; + +/** + * @example + * { + * navigation_goal: "navigation_goal" + * } + */ +export interface DownloadFilesRequest { + /** Website URL */ + url?: string; + /** Webhook URL to send status updates */ + webhook_url?: string; + /** Proxy location to use */ + proxy_location?: Skyvern.ProxyLocation; + /** Identifier for TOTP (Time-based One-Time Password) if required */ + totp_identifier?: string; + /** TOTP URL to fetch one-time passwords */ + totp_url?: string; + /** ID of the browser session to use, which is prefixed by `pbs_` e.g. `pbs_123456` */ + browser_session_id?: string; + /** ID of a browser profile to reuse for this run */ + browser_profile_id?: string; + /** The CDP address for the task. */ + browser_address?: string; + /** Additional HTTP headers to include in requests */ + extra_http_headers?: Record; + /** Maximum number of times to scroll for screenshots */ + max_screenshot_scrolling_times?: number; + /** Instructions for navigating to and downloading the file */ + navigation_goal: string; + /** Suffix or complete filename for the downloaded file */ + download_suffix?: string; + /** Timeout in seconds for the download operation */ + download_timeout?: number; + /** Maximum number of steps to execute */ + max_steps_per_run?: number; +} diff --git a/skyvern-ts/client/src/api/client/requests/LoginRequest.ts b/skyvern-ts/client/src/api/client/requests/LoginRequest.ts index 567f3931..d13bb9af 100644 --- a/skyvern-ts/client/src/api/client/requests/LoginRequest.ts +++ b/skyvern-ts/client/src/api/client/requests/LoginRequest.ts @@ -9,13 +9,9 @@ import type * as Skyvern from "../../index.js"; * } */ export interface LoginRequest { - /** Where to get the credential from */ - credential_type: Skyvern.SkyvernSchemasRunBlocksCredentialType; - /** Website url */ + /** Website URL */ url?: string; - /** Login instructions. Skyvern has default prompt/instruction for login if this field is not provided. */ - prompt?: string; - /** Webhook URL to send login status updates */ + /** Webhook URL to send status updates */ webhook_url?: string; /** Proxy location to use */ proxy_location?: Skyvern.ProxyLocation; @@ -33,6 +29,10 @@ export interface LoginRequest { extra_http_headers?: Record; /** Maximum number of times to scroll for screenshots */ max_screenshot_scrolling_times?: number; + /** Where to get the credential from */ + credential_type: Skyvern.SkyvernSchemasRunBlocksCredentialType; + /** Login instructions. Skyvern has default prompt/instruction for login if this field is not provided. */ + prompt?: string; /** ID of the Skyvern credential to use for login. */ credential_id?: string; /** Bitwarden collection ID. You can find it in the Bitwarden collection URL. e.g. `https://vault.bitwarden.com/vaults/collection_id/items` */ diff --git a/skyvern-ts/client/src/api/client/requests/index.ts b/skyvern-ts/client/src/api/client/requests/index.ts index c8065769..0e1cb35d 100644 --- a/skyvern-ts/client/src/api/client/requests/index.ts +++ b/skyvern-ts/client/src/api/client/requests/index.ts @@ -4,6 +4,7 @@ export type { CreateCredentialRequest } from "./CreateCredentialRequest.js"; export type { CreateScriptRequest } from "./CreateScriptRequest.js"; export type { CreateWorkflowRequest } from "./CreateWorkflowRequest.js"; export type { DeployScriptRequest } from "./DeployScriptRequest.js"; +export type { DownloadFilesRequest } from "./DownloadFilesRequest.js"; export type { GetCredentialsRequest } from "./GetCredentialsRequest.js"; export type { GetRunArtifactsRequest } from "./GetRunArtifactsRequest.js"; export type { GetScriptsRequest } from "./GetScriptsRequest.js"; diff --git a/skyvern-ts/client/src/api/types/ActionBlock.ts b/skyvern-ts/client/src/api/types/ActionBlock.ts index bcfbb3f7..e7ac06bd 100644 --- a/skyvern-ts/client/src/api/types/ActionBlock.ts +++ b/skyvern-ts/client/src/api/types/ActionBlock.ts @@ -11,6 +11,7 @@ export interface ActionBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/ActionBlockYaml.ts b/skyvern-ts/client/src/api/types/ActionBlockYaml.ts index 8b5de314..23276697 100644 --- a/skyvern-ts/client/src/api/types/ActionBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/ActionBlockYaml.ts @@ -9,6 +9,7 @@ export interface ActionBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; url?: string; title?: string; engine?: Skyvern.RunEngine; diff --git a/skyvern-ts/client/src/api/types/BranchCondition.ts b/skyvern-ts/client/src/api/types/BranchCondition.ts index 2768e265..98eeb5ec 100644 --- a/skyvern-ts/client/src/api/types/BranchCondition.ts +++ b/skyvern-ts/client/src/api/types/BranchCondition.ts @@ -6,7 +6,7 @@ import type * as Skyvern from "../index.js"; * Represents a single conditional branch edge within a ConditionalBlock. */ export interface BranchCondition { - criteria?: Skyvern.BranchCriteria; + criteria?: Skyvern.BranchConditionCriteria; next_block_label?: string; description?: string; is_default?: boolean; diff --git a/skyvern-ts/client/src/api/types/BranchConditionCriteria.ts b/skyvern-ts/client/src/api/types/BranchConditionCriteria.ts new file mode 100644 index 00000000..53cc8e08 --- /dev/null +++ b/skyvern-ts/client/src/api/types/BranchConditionCriteria.ts @@ -0,0 +1,11 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export type BranchConditionCriteria = Skyvern.BranchConditionCriteria.Jinja2Template; + +export namespace BranchConditionCriteria { + export interface Jinja2Template extends Skyvern.JinjaBranchCriteria { + criteria_type: "jinja2_template"; + } +} diff --git a/skyvern-ts/client/src/api/types/BranchConditionYaml.ts b/skyvern-ts/client/src/api/types/BranchConditionYaml.ts new file mode 100644 index 00000000..df79abff --- /dev/null +++ b/skyvern-ts/client/src/api/types/BranchConditionYaml.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export interface BranchConditionYaml { + criteria?: Skyvern.BranchCriteriaYaml; + next_block_label?: string; + description?: string; + is_default?: boolean; +} diff --git a/skyvern-ts/client/src/api/types/BranchCriteria.ts b/skyvern-ts/client/src/api/types/BranchCriteria.ts deleted file mode 100644 index c1defcd4..00000000 --- a/skyvern-ts/client/src/api/types/BranchCriteria.ts +++ /dev/null @@ -1,10 +0,0 @@ -// This file was auto-generated by Fern from our API Definition. - -/** - * Abstract interface describing how a branch condition should be evaluated. - */ -export interface BranchCriteria { - criteria_type: string; - expression: string; - description?: string; -} diff --git a/skyvern-ts/client/src/api/types/BranchCriteriaYaml.ts b/skyvern-ts/client/src/api/types/BranchCriteriaYaml.ts new file mode 100644 index 00000000..a5c8439e --- /dev/null +++ b/skyvern-ts/client/src/api/types/BranchCriteriaYaml.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface BranchCriteriaYaml { + criteria_type?: "jinja2_template"; + expression: string; + description?: string; +} diff --git a/skyvern-ts/client/src/api/types/CodeBlock.ts b/skyvern-ts/client/src/api/types/CodeBlock.ts index 4b65b48f..1ce7c2a2 100644 --- a/skyvern-ts/client/src/api/types/CodeBlock.ts +++ b/skyvern-ts/client/src/api/types/CodeBlock.ts @@ -11,6 +11,7 @@ export interface CodeBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; code: string; parameters?: Skyvern.CodeBlockParametersItem[]; } diff --git a/skyvern-ts/client/src/api/types/CodeBlockYaml.ts b/skyvern-ts/client/src/api/types/CodeBlockYaml.ts index c35f4993..0df2b3f2 100644 --- a/skyvern-ts/client/src/api/types/CodeBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/CodeBlockYaml.ts @@ -7,6 +7,7 @@ export interface CodeBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; code: string; parameter_keys?: string[]; } diff --git a/skyvern-ts/client/src/api/types/ConditionalBlock.ts b/skyvern-ts/client/src/api/types/ConditionalBlock.ts index 1c56e7ea..23f4be5c 100644 --- a/skyvern-ts/client/src/api/types/ConditionalBlock.ts +++ b/skyvern-ts/client/src/api/types/ConditionalBlock.ts @@ -14,5 +14,6 @@ export interface ConditionalBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; branch_conditions?: Skyvern.BranchCondition[]; } diff --git a/skyvern-ts/client/src/api/types/ConditionalBlockYaml.ts b/skyvern-ts/client/src/api/types/ConditionalBlockYaml.ts new file mode 100644 index 00000000..daa058a2 --- /dev/null +++ b/skyvern-ts/client/src/api/types/ConditionalBlockYaml.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export interface ConditionalBlockYaml { + /** Author-facing identifier; must be unique per workflow. */ + label: string; + /** Optional pointer to the label of the next block. When omitted, it will default to sequential order. See [[s-4bnl]]. */ + next_block_label?: string; + continue_on_failure?: boolean; + model?: Record; + next_loop_on_failure?: boolean; + branch_conditions?: Skyvern.BranchConditionYaml[]; +} diff --git a/skyvern-ts/client/src/api/types/DownloadToS3Block.ts b/skyvern-ts/client/src/api/types/DownloadToS3Block.ts index c4cf0e52..b79656b4 100644 --- a/skyvern-ts/client/src/api/types/DownloadToS3Block.ts +++ b/skyvern-ts/client/src/api/types/DownloadToS3Block.ts @@ -11,5 +11,6 @@ export interface DownloadToS3Block { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; url: string; } diff --git a/skyvern-ts/client/src/api/types/DownloadToS3BlockYaml.ts b/skyvern-ts/client/src/api/types/DownloadToS3BlockYaml.ts index d1ba0b74..9a92215a 100644 --- a/skyvern-ts/client/src/api/types/DownloadToS3BlockYaml.ts +++ b/skyvern-ts/client/src/api/types/DownloadToS3BlockYaml.ts @@ -7,5 +7,6 @@ export interface DownloadToS3BlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; url: string; } diff --git a/skyvern-ts/client/src/api/types/ExtractionBlock.ts b/skyvern-ts/client/src/api/types/ExtractionBlock.ts index fcec4117..6d361657 100644 --- a/skyvern-ts/client/src/api/types/ExtractionBlock.ts +++ b/skyvern-ts/client/src/api/types/ExtractionBlock.ts @@ -11,6 +11,7 @@ export interface ExtractionBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/ExtractionBlockYaml.ts b/skyvern-ts/client/src/api/types/ExtractionBlockYaml.ts index 6cd21f39..cd77d833 100644 --- a/skyvern-ts/client/src/api/types/ExtractionBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/ExtractionBlockYaml.ts @@ -9,6 +9,7 @@ export interface ExtractionBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; data_extraction_goal: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/FileDownloadBlock.ts b/skyvern-ts/client/src/api/types/FileDownloadBlock.ts index ff523f57..733bf3a8 100644 --- a/skyvern-ts/client/src/api/types/FileDownloadBlock.ts +++ b/skyvern-ts/client/src/api/types/FileDownloadBlock.ts @@ -11,6 +11,7 @@ export interface FileDownloadBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/FileDownloadBlockYaml.ts b/skyvern-ts/client/src/api/types/FileDownloadBlockYaml.ts index 4f5c2913..908e914b 100644 --- a/skyvern-ts/client/src/api/types/FileDownloadBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/FileDownloadBlockYaml.ts @@ -9,6 +9,7 @@ export interface FileDownloadBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; navigation_goal: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/FileParserBlock.ts b/skyvern-ts/client/src/api/types/FileParserBlock.ts index 4a75a898..3034ebb9 100644 --- a/skyvern-ts/client/src/api/types/FileParserBlock.ts +++ b/skyvern-ts/client/src/api/types/FileParserBlock.ts @@ -11,6 +11,7 @@ export interface FileParserBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; file_url: string; file_type: Skyvern.FileType; json_schema?: Record; diff --git a/skyvern-ts/client/src/api/types/FileParserBlockYaml.ts b/skyvern-ts/client/src/api/types/FileParserBlockYaml.ts index 466cec0a..1a81a777 100644 --- a/skyvern-ts/client/src/api/types/FileParserBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/FileParserBlockYaml.ts @@ -9,6 +9,7 @@ export interface FileParserBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; file_url: string; file_type: Skyvern.FileType; json_schema?: Record; diff --git a/skyvern-ts/client/src/api/types/FileUploadBlock.ts b/skyvern-ts/client/src/api/types/FileUploadBlock.ts index e2bc91c7..b7c16bc0 100644 --- a/skyvern-ts/client/src/api/types/FileUploadBlock.ts +++ b/skyvern-ts/client/src/api/types/FileUploadBlock.ts @@ -11,6 +11,7 @@ export interface FileUploadBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; storage_type?: Skyvern.FileStorageType; s3_bucket?: string; aws_access_key_id?: string; diff --git a/skyvern-ts/client/src/api/types/FileUploadBlockYaml.ts b/skyvern-ts/client/src/api/types/FileUploadBlockYaml.ts index 2438f503..bb4e804b 100644 --- a/skyvern-ts/client/src/api/types/FileUploadBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/FileUploadBlockYaml.ts @@ -9,6 +9,7 @@ export interface FileUploadBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; storage_type?: Skyvern.FileStorageType; s3_bucket?: string; aws_access_key_id?: string; diff --git a/skyvern-ts/client/src/api/types/ForLoopBlock.ts b/skyvern-ts/client/src/api/types/ForLoopBlock.ts index 07480f2c..eb331fbf 100644 --- a/skyvern-ts/client/src/api/types/ForLoopBlock.ts +++ b/skyvern-ts/client/src/api/types/ForLoopBlock.ts @@ -11,6 +11,7 @@ export interface ForLoopBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; loop_blocks: Skyvern.ForLoopBlockLoopBlocksItem[]; loop_over?: Skyvern.ForLoopBlockLoopOver; loop_variable_reference?: string; diff --git a/skyvern-ts/client/src/api/types/ForLoopBlockYaml.ts b/skyvern-ts/client/src/api/types/ForLoopBlockYaml.ts index bfcb22f7..58b27494 100644 --- a/skyvern-ts/client/src/api/types/ForLoopBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/ForLoopBlockYaml.ts @@ -9,6 +9,7 @@ export interface ForLoopBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; loop_blocks: Skyvern.ForLoopBlockYamlLoopBlocksItem[]; loop_over_parameter_key?: string; loop_variable_reference?: string; diff --git a/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts b/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts index 4b2d6333..d579f168 100644 --- a/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts @@ -23,7 +23,8 @@ export type ForLoopBlockYamlLoopBlocksItem = | Skyvern.ForLoopBlockYamlLoopBlocksItem.GotoUrl | Skyvern.ForLoopBlockYamlLoopBlocksItem.PdfParser | Skyvern.ForLoopBlockYamlLoopBlocksItem.TaskV2 - | Skyvern.ForLoopBlockYamlLoopBlocksItem.HttpRequest; + | Skyvern.ForLoopBlockYamlLoopBlocksItem.HttpRequest + | Skyvern.ForLoopBlockYamlLoopBlocksItem.Conditional; export namespace ForLoopBlockYamlLoopBlocksItem { export interface Task extends Skyvern.TaskBlockYaml { @@ -109,4 +110,8 @@ export namespace ForLoopBlockYamlLoopBlocksItem { export interface HttpRequest extends Skyvern.HttpRequestBlockYaml { block_type: "http_request"; } + + export interface Conditional extends Skyvern.ConditionalBlockYaml { + block_type: "conditional"; + } } diff --git a/skyvern-ts/client/src/api/types/HttpRequestBlock.ts b/skyvern-ts/client/src/api/types/HttpRequestBlock.ts index 3b97437d..704dfeda 100644 --- a/skyvern-ts/client/src/api/types/HttpRequestBlock.ts +++ b/skyvern-ts/client/src/api/types/HttpRequestBlock.ts @@ -11,6 +11,7 @@ export interface HttpRequestBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; method?: string; url?: string; headers?: Record; diff --git a/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts b/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts index d2602458..b0a7460c 100644 --- a/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts @@ -7,6 +7,7 @@ export interface HttpRequestBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; method?: string; url?: string; headers?: Record; diff --git a/skyvern-ts/client/src/api/types/HumanInteractionBlock.ts b/skyvern-ts/client/src/api/types/HumanInteractionBlock.ts index 7f863a4a..bdd5fefd 100644 --- a/skyvern-ts/client/src/api/types/HumanInteractionBlock.ts +++ b/skyvern-ts/client/src/api/types/HumanInteractionBlock.ts @@ -22,6 +22,7 @@ export interface HumanInteractionBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/HumanInteractionBlockYaml.ts b/skyvern-ts/client/src/api/types/HumanInteractionBlockYaml.ts index 03831e49..dffa86ab 100644 --- a/skyvern-ts/client/src/api/types/HumanInteractionBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/HumanInteractionBlockYaml.ts @@ -7,6 +7,7 @@ export interface HumanInteractionBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; instructions?: string; positive_descriptor?: string; negative_descriptor?: string; diff --git a/skyvern-ts/client/src/api/types/JinjaBranchCriteria.ts b/skyvern-ts/client/src/api/types/JinjaBranchCriteria.ts new file mode 100644 index 00000000..4d24b044 --- /dev/null +++ b/skyvern-ts/client/src/api/types/JinjaBranchCriteria.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * Jinja2-templated branch criteria (only supported criteria type for now). + */ +export interface JinjaBranchCriteria { + expression: string; + description?: string; +} diff --git a/skyvern-ts/client/src/api/types/LoginBlock.ts b/skyvern-ts/client/src/api/types/LoginBlock.ts index e199a636..65e835f8 100644 --- a/skyvern-ts/client/src/api/types/LoginBlock.ts +++ b/skyvern-ts/client/src/api/types/LoginBlock.ts @@ -11,6 +11,7 @@ export interface LoginBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/LoginBlockYaml.ts b/skyvern-ts/client/src/api/types/LoginBlockYaml.ts index 7e416c43..3cd9fde4 100644 --- a/skyvern-ts/client/src/api/types/LoginBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/LoginBlockYaml.ts @@ -9,6 +9,7 @@ export interface LoginBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; url?: string; title?: string; engine?: Skyvern.RunEngine; diff --git a/skyvern-ts/client/src/api/types/NavigationBlock.ts b/skyvern-ts/client/src/api/types/NavigationBlock.ts index c7853cc3..c81cfb07 100644 --- a/skyvern-ts/client/src/api/types/NavigationBlock.ts +++ b/skyvern-ts/client/src/api/types/NavigationBlock.ts @@ -11,6 +11,7 @@ export interface NavigationBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/NavigationBlockYaml.ts b/skyvern-ts/client/src/api/types/NavigationBlockYaml.ts index b478b945..8681a35d 100644 --- a/skyvern-ts/client/src/api/types/NavigationBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/NavigationBlockYaml.ts @@ -9,6 +9,7 @@ export interface NavigationBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; navigation_goal: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/PdfParserBlock.ts b/skyvern-ts/client/src/api/types/PdfParserBlock.ts index 890e81fd..a209f6d3 100644 --- a/skyvern-ts/client/src/api/types/PdfParserBlock.ts +++ b/skyvern-ts/client/src/api/types/PdfParserBlock.ts @@ -15,6 +15,7 @@ export interface PdfParserBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; file_url: string; json_schema?: Record; } diff --git a/skyvern-ts/client/src/api/types/PdfParserBlockYaml.ts b/skyvern-ts/client/src/api/types/PdfParserBlockYaml.ts index df65bfb9..a40fcd7c 100644 --- a/skyvern-ts/client/src/api/types/PdfParserBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/PdfParserBlockYaml.ts @@ -7,6 +7,7 @@ export interface PdfParserBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; file_url: string; json_schema?: Record; } diff --git a/skyvern-ts/client/src/api/types/SendEmailBlock.ts b/skyvern-ts/client/src/api/types/SendEmailBlock.ts index 856a8b1e..2f8de824 100644 --- a/skyvern-ts/client/src/api/types/SendEmailBlock.ts +++ b/skyvern-ts/client/src/api/types/SendEmailBlock.ts @@ -11,6 +11,7 @@ export interface SendEmailBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; smtp_host: Skyvern.AwsSecretParameter; smtp_port: Skyvern.AwsSecretParameter; smtp_username: Skyvern.AwsSecretParameter; diff --git a/skyvern-ts/client/src/api/types/SendEmailBlockYaml.ts b/skyvern-ts/client/src/api/types/SendEmailBlockYaml.ts index 486fbc69..548cd0f2 100644 --- a/skyvern-ts/client/src/api/types/SendEmailBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/SendEmailBlockYaml.ts @@ -7,6 +7,7 @@ export interface SendEmailBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; smtp_host_secret_parameter_key: string; smtp_port_secret_parameter_key: string; smtp_username_secret_parameter_key: string; diff --git a/skyvern-ts/client/src/api/types/TaskBlock.ts b/skyvern-ts/client/src/api/types/TaskBlock.ts index 93d9a146..ac6fb156 100644 --- a/skyvern-ts/client/src/api/types/TaskBlock.ts +++ b/skyvern-ts/client/src/api/types/TaskBlock.ts @@ -11,6 +11,7 @@ export interface TaskBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/TaskBlockYaml.ts b/skyvern-ts/client/src/api/types/TaskBlockYaml.ts index 144ccfe1..0bbf315e 100644 --- a/skyvern-ts/client/src/api/types/TaskBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/TaskBlockYaml.ts @@ -9,6 +9,7 @@ export interface TaskBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; url?: string; title?: string; engine?: Skyvern.RunEngine; diff --git a/skyvern-ts/client/src/api/types/TaskV2Block.ts b/skyvern-ts/client/src/api/types/TaskV2Block.ts index 61ef8942..5e39464c 100644 --- a/skyvern-ts/client/src/api/types/TaskV2Block.ts +++ b/skyvern-ts/client/src/api/types/TaskV2Block.ts @@ -11,6 +11,7 @@ export interface TaskV2Block { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; prompt: string; url?: string; totp_verification_url?: string; diff --git a/skyvern-ts/client/src/api/types/TaskV2BlockYaml.ts b/skyvern-ts/client/src/api/types/TaskV2BlockYaml.ts index 3f295627..96ce60bb 100644 --- a/skyvern-ts/client/src/api/types/TaskV2BlockYaml.ts +++ b/skyvern-ts/client/src/api/types/TaskV2BlockYaml.ts @@ -7,6 +7,7 @@ export interface TaskV2BlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; prompt: string; url?: string; totp_verification_url?: string; diff --git a/skyvern-ts/client/src/api/types/TextPromptBlock.ts b/skyvern-ts/client/src/api/types/TextPromptBlock.ts index f2e5221e..054ead44 100644 --- a/skyvern-ts/client/src/api/types/TextPromptBlock.ts +++ b/skyvern-ts/client/src/api/types/TextPromptBlock.ts @@ -11,6 +11,7 @@ export interface TextPromptBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; llm_key?: string; prompt: string; parameters?: Skyvern.TextPromptBlockParametersItem[]; diff --git a/skyvern-ts/client/src/api/types/TextPromptBlockYaml.ts b/skyvern-ts/client/src/api/types/TextPromptBlockYaml.ts index 2a4b65e9..56936453 100644 --- a/skyvern-ts/client/src/api/types/TextPromptBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/TextPromptBlockYaml.ts @@ -7,6 +7,7 @@ export interface TextPromptBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; llm_key?: string; prompt: string; parameter_keys?: string[]; diff --git a/skyvern-ts/client/src/api/types/UploadToS3Block.ts b/skyvern-ts/client/src/api/types/UploadToS3Block.ts index f28280c8..c4db4962 100644 --- a/skyvern-ts/client/src/api/types/UploadToS3Block.ts +++ b/skyvern-ts/client/src/api/types/UploadToS3Block.ts @@ -11,5 +11,6 @@ export interface UploadToS3Block { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; path?: string; } diff --git a/skyvern-ts/client/src/api/types/UploadToS3BlockYaml.ts b/skyvern-ts/client/src/api/types/UploadToS3BlockYaml.ts index e7b9e2ce..dc85a0f4 100644 --- a/skyvern-ts/client/src/api/types/UploadToS3BlockYaml.ts +++ b/skyvern-ts/client/src/api/types/UploadToS3BlockYaml.ts @@ -7,5 +7,6 @@ export interface UploadToS3BlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; path?: string; } diff --git a/skyvern-ts/client/src/api/types/UrlBlock.ts b/skyvern-ts/client/src/api/types/UrlBlock.ts index 565ea507..18da2f6c 100644 --- a/skyvern-ts/client/src/api/types/UrlBlock.ts +++ b/skyvern-ts/client/src/api/types/UrlBlock.ts @@ -11,6 +11,7 @@ export interface UrlBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/UrlBlockYaml.ts b/skyvern-ts/client/src/api/types/UrlBlockYaml.ts index db435e80..064acdbc 100644 --- a/skyvern-ts/client/src/api/types/UrlBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/UrlBlockYaml.ts @@ -7,5 +7,6 @@ export interface UrlBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; url: string; } diff --git a/skyvern-ts/client/src/api/types/ValidationBlock.ts b/skyvern-ts/client/src/api/types/ValidationBlock.ts index d1fe96b1..399393b0 100644 --- a/skyvern-ts/client/src/api/types/ValidationBlock.ts +++ b/skyvern-ts/client/src/api/types/ValidationBlock.ts @@ -11,6 +11,7 @@ export interface ValidationBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; task_type?: string; url?: string; title?: string; diff --git a/skyvern-ts/client/src/api/types/ValidationBlockYaml.ts b/skyvern-ts/client/src/api/types/ValidationBlockYaml.ts index 588f0ac9..c5042c04 100644 --- a/skyvern-ts/client/src/api/types/ValidationBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/ValidationBlockYaml.ts @@ -7,6 +7,7 @@ export interface ValidationBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; complete_criterion?: string; terminate_criterion?: string; error_code_mapping?: Record; diff --git a/skyvern-ts/client/src/api/types/WaitBlock.ts b/skyvern-ts/client/src/api/types/WaitBlock.ts index c0bd33f3..ab2f79f6 100644 --- a/skyvern-ts/client/src/api/types/WaitBlock.ts +++ b/skyvern-ts/client/src/api/types/WaitBlock.ts @@ -11,6 +11,7 @@ export interface WaitBlock { continue_on_failure?: boolean; model?: Record; disable_cache?: boolean; + next_loop_on_failure?: boolean; wait_sec: number; parameters?: Skyvern.WaitBlockParametersItem[]; } diff --git a/skyvern-ts/client/src/api/types/WaitBlockYaml.ts b/skyvern-ts/client/src/api/types/WaitBlockYaml.ts index 677176ed..dab5bbc4 100644 --- a/skyvern-ts/client/src/api/types/WaitBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/WaitBlockYaml.ts @@ -7,5 +7,6 @@ export interface WaitBlockYaml { next_block_label?: string; continue_on_failure?: boolean; model?: Record; + next_loop_on_failure?: boolean; wait_sec?: number; } diff --git a/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts b/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts index 6535b3a9..4e637ac8 100644 --- a/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts @@ -5,6 +5,7 @@ import type * as Skyvern from "../index.js"; export type WorkflowDefinitionYamlBlocksItem = | Skyvern.WorkflowDefinitionYamlBlocksItem.Action | Skyvern.WorkflowDefinitionYamlBlocksItem.Code + | Skyvern.WorkflowDefinitionYamlBlocksItem.Conditional | Skyvern.WorkflowDefinitionYamlBlocksItem.DownloadToS3 | Skyvern.WorkflowDefinitionYamlBlocksItem.Extraction | Skyvern.WorkflowDefinitionYamlBlocksItem.FileDownload @@ -34,6 +35,10 @@ export namespace WorkflowDefinitionYamlBlocksItem { block_type: "code"; } + export interface Conditional extends Skyvern.ConditionalBlockYaml { + block_type: "conditional"; + } + export interface DownloadToS3 extends Skyvern.DownloadToS3BlockYaml { block_type: "download_to_s3"; } diff --git a/skyvern-ts/client/src/api/types/index.ts b/skyvern-ts/client/src/api/types/index.ts index 3cce6808..125ff4ed 100644 --- a/skyvern-ts/client/src/api/types/index.ts +++ b/skyvern-ts/client/src/api/types/index.ts @@ -20,7 +20,9 @@ export * from "./BitwardenSensitiveInformationParameter.js"; export * from "./BitwardenSensitiveInformationParameterYaml.js"; export * from "./BlockType.js"; export * from "./BranchCondition.js"; -export * from "./BranchCriteria.js"; +export * from "./BranchConditionCriteria.js"; +export * from "./BranchConditionYaml.js"; +export * from "./BranchCriteriaYaml.js"; export * from "./BrowserProfile.js"; export * from "./BrowserSessionResponse.js"; export * from "./ClickAction.js"; @@ -29,6 +31,7 @@ export * from "./CodeBlock.js"; export * from "./CodeBlockParametersItem.js"; export * from "./CodeBlockYaml.js"; export * from "./ConditionalBlock.js"; +export * from "./ConditionalBlockYaml.js"; export * from "./ContextParameter.js"; export * from "./ContextParameterSource.js"; export * from "./ContextParameterYaml.js"; @@ -73,6 +76,7 @@ export * from "./HumanInteractionBlockParametersItem.js"; export * from "./HumanInteractionBlockYaml.js"; export * from "./InputOrSelectContext.js"; export * from "./InputTextAction.js"; +export * from "./JinjaBranchCriteria.js"; export * from "./LocateElementAction.js"; export * from "./LoginBlock.js"; export * from "./LoginBlockParametersItem.js"; diff --git a/skyvern-ts/client/tests/wire/main.test.ts b/skyvern-ts/client/tests/wire/main.test.ts index 20e3eb07..f1ed1f41 100644 --- a/skyvern-ts/client/tests/wire/main.test.ts +++ b/skyvern-ts/client/tests/wire/main.test.ts @@ -2490,6 +2490,142 @@ describe("SkyvernClient", () => { }).rejects.toThrow(Skyvern.UnprocessableEntityError); }); + test("download_files (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { navigation_goal: "navigation_goal" }; + const rawResponseBody = { + run_id: "tsk_123", + status: "created", + output: { key: "value" }, + downloaded_files: [ + { url: "url", checksum: "checksum", filename: "filename", modified_at: "2024-01-15T09:30:00Z" }, + ], + recording_url: "recording_url", + screenshot_urls: ["screenshot_urls"], + failure_reason: "failure_reason", + created_at: "2025-01-01T00:00:00Z", + modified_at: "2025-01-01T00:05:00Z", + queued_at: "2024-01-15T09:30:00Z", + started_at: "2024-01-15T09:30:00Z", + finished_at: "2024-01-15T09:30:00Z", + app_url: "app_url", + browser_session_id: "browser_session_id", + browser_profile_id: "browser_profile_id", + max_screenshot_scrolls: 1, + script_run: { ai_fallback_triggered: true }, + errors: [{ key: "value" }], + run_with: "run_with", + ai_fallback: true, + run_request: { + workflow_id: "wpid_123", + parameters: { key: "value" }, + title: "title", + proxy_location: "RESIDENTIAL", + webhook_url: "webhook_url", + totp_url: "totp_url", + totp_identifier: "totp_identifier", + browser_session_id: "browser_session_id", + browser_profile_id: "browser_profile_id", + max_screenshot_scrolls: 1, + extra_http_headers: { key: "value" }, + browser_address: "browser_address", + ai_fallback: true, + run_with: "run_with", + }, + }; + server + .mockEndpoint() + .post("/v1/run/tasks/download_files") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.downloadFiles({ + navigation_goal: "navigation_goal", + }); + expect(response).toEqual({ + run_id: "tsk_123", + status: "created", + output: { + key: "value", + }, + downloaded_files: [ + { + url: "url", + checksum: "checksum", + filename: "filename", + modified_at: "2024-01-15T09:30:00Z", + }, + ], + recording_url: "recording_url", + screenshot_urls: ["screenshot_urls"], + failure_reason: "failure_reason", + created_at: "2025-01-01T00:00:00Z", + modified_at: "2025-01-01T00:05:00Z", + queued_at: "2024-01-15T09:30:00Z", + started_at: "2024-01-15T09:30:00Z", + finished_at: "2024-01-15T09:30:00Z", + app_url: "app_url", + browser_session_id: "browser_session_id", + browser_profile_id: "browser_profile_id", + max_screenshot_scrolls: 1, + script_run: { + ai_fallback_triggered: true, + }, + errors: [ + { + key: "value", + }, + ], + run_with: "run_with", + ai_fallback: true, + run_request: { + workflow_id: "wpid_123", + parameters: { + key: "value", + }, + title: "title", + proxy_location: "RESIDENTIAL", + webhook_url: "webhook_url", + totp_url: "totp_url", + totp_identifier: "totp_identifier", + browser_session_id: "browser_session_id", + browser_profile_id: "browser_profile_id", + max_screenshot_scrolls: 1, + extra_http_headers: { + key: "value", + }, + browser_address: "browser_address", + ai_fallback: true, + run_with: "run_with", + }, + }); + }); + + test("download_files (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { navigation_goal: "navigation_goal" }; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/v1/run/tasks/download_files") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.downloadFiles({ + navigation_goal: "navigation_goal", + }); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + test("get_scripts (1)", async () => { const server = mockServerPool.createServer(); const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); diff --git a/skyvern/client/client.py b/skyvern/client/client.py index 803838c4..3bc60312 100644 --- a/skyvern/client/client.py +++ b/skyvern/client/client.py @@ -1525,7 +1525,7 @@ class Skyvern: ) return _response.data - def file_download( + def download_files( self, *, navigation_goal: str, @@ -1542,7 +1542,6 @@ class Skyvern: download_suffix: typing.Optional[str] = OMIT, download_timeout: typing.Optional[float] = OMIT, max_steps_per_run: typing.Optional[int] = OMIT, - parameter_keys: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> WorkflowRunResponse: """ @@ -1592,9 +1591,6 @@ class Skyvern: max_steps_per_run : typing.Optional[int] Maximum number of steps to execute - parameter_keys : typing.Optional[typing.Sequence[str]] - List of parameter keys to use in the workflow - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1610,11 +1606,11 @@ class Skyvern: client = Skyvern( api_key="YOUR_API_KEY", ) - client.file_download( + client.download_files( navigation_goal="navigation_goal", ) """ - _response = self._raw_client.file_download( + _response = self._raw_client.download_files( navigation_goal=navigation_goal, url=url, webhook_url=webhook_url, @@ -1629,7 +1625,6 @@ class Skyvern: download_suffix=download_suffix, download_timeout=download_timeout, max_steps_per_run=max_steps_per_run, - parameter_keys=parameter_keys, request_options=request_options, ) return _response.data @@ -3568,7 +3563,7 @@ class AsyncSkyvern: ) return _response.data - async def file_download( + async def download_files( self, *, navigation_goal: str, @@ -3585,7 +3580,6 @@ class AsyncSkyvern: download_suffix: typing.Optional[str] = OMIT, download_timeout: typing.Optional[float] = OMIT, max_steps_per_run: typing.Optional[int] = OMIT, - parameter_keys: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> WorkflowRunResponse: """ @@ -3635,9 +3629,6 @@ class AsyncSkyvern: max_steps_per_run : typing.Optional[int] Maximum number of steps to execute - parameter_keys : typing.Optional[typing.Sequence[str]] - List of parameter keys to use in the workflow - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -3658,14 +3649,14 @@ class AsyncSkyvern: async def main() -> None: - await client.file_download( + await client.download_files( navigation_goal="navigation_goal", ) asyncio.run(main()) """ - _response = await self._raw_client.file_download( + _response = await self._raw_client.download_files( navigation_goal=navigation_goal, url=url, webhook_url=webhook_url, @@ -3680,7 +3671,6 @@ class AsyncSkyvern: download_suffix=download_suffix, download_timeout=download_timeout, max_steps_per_run=max_steps_per_run, - parameter_keys=parameter_keys, request_options=request_options, ) return _response.data diff --git a/skyvern/client/raw_client.py b/skyvern/client/raw_client.py index 59cc55aa..d64067d6 100644 --- a/skyvern/client/raw_client.py +++ b/skyvern/client/raw_client.py @@ -2106,7 +2106,7 @@ class RawSkyvern: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - def file_download( + def download_files( self, *, navigation_goal: str, @@ -2123,7 +2123,6 @@ class RawSkyvern: download_suffix: typing.Optional[str] = OMIT, download_timeout: typing.Optional[float] = OMIT, max_steps_per_run: typing.Optional[int] = OMIT, - parameter_keys: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[WorkflowRunResponse]: """ @@ -2173,9 +2172,6 @@ class RawSkyvern: max_steps_per_run : typing.Optional[int] Maximum number of steps to execute - parameter_keys : typing.Optional[typing.Sequence[str]] - List of parameter keys to use in the workflow - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -2185,7 +2181,7 @@ class RawSkyvern: Successful Response """ _response = self._client_wrapper.httpx_client.request( - "v1/run/tasks/file_download", + "v1/run/tasks/download_files", method="POST", json={ "url": url, @@ -2202,7 +2198,6 @@ class RawSkyvern: "download_suffix": download_suffix, "download_timeout": download_timeout, "max_steps_per_run": max_steps_per_run, - "parameter_keys": parameter_keys, }, headers={ "content-type": "application/json", @@ -4627,7 +4622,7 @@ class AsyncRawSkyvern: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) - async def file_download( + async def download_files( self, *, navigation_goal: str, @@ -4644,7 +4639,6 @@ class AsyncRawSkyvern: download_suffix: typing.Optional[str] = OMIT, download_timeout: typing.Optional[float] = OMIT, max_steps_per_run: typing.Optional[int] = OMIT, - parameter_keys: typing.Optional[typing.Sequence[str]] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[WorkflowRunResponse]: """ @@ -4694,9 +4688,6 @@ class AsyncRawSkyvern: max_steps_per_run : typing.Optional[int] Maximum number of steps to execute - parameter_keys : typing.Optional[typing.Sequence[str]] - List of parameter keys to use in the workflow - request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -4706,7 +4697,7 @@ class AsyncRawSkyvern: Successful Response """ _response = await self._client_wrapper.httpx_client.request( - "v1/run/tasks/file_download", + "v1/run/tasks/download_files", method="POST", json={ "url": url, @@ -4723,7 +4714,6 @@ class AsyncRawSkyvern: "download_suffix": download_suffix, "download_timeout": download_timeout, "max_steps_per_run": max_steps_per_run, - "parameter_keys": parameter_keys, }, headers={ "content-type": "application/json", diff --git a/skyvern/client/types/action_block.py b/skyvern/client/types/action_block.py index 70abe42b..139876d8 100644 --- a/skyvern/client/types/action_block.py +++ b/skyvern/client/types/action_block.py @@ -27,6 +27,7 @@ class ActionBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/action_block_yaml.py b/skyvern/client/types/action_block_yaml.py index e637b990..1e0d3145 100644 --- a/skyvern/client/types/action_block_yaml.py +++ b/skyvern/client/types/action_block_yaml.py @@ -20,6 +20,7 @@ class ActionBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None diff --git a/skyvern/client/types/code_block.py b/skyvern/client/types/code_block.py index 9b8a131f..0615ccb5 100644 --- a/skyvern/client/types/code_block.py +++ b/skyvern/client/types/code_block.py @@ -25,6 +25,7 @@ class CodeBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameters: typing.Optional[typing.List[CodeBlockParametersItem]] = None diff --git a/skyvern/client/types/code_block_yaml.py b/skyvern/client/types/code_block_yaml.py index 59ec1c25..1860b5e1 100644 --- a/skyvern/client/types/code_block_yaml.py +++ b/skyvern/client/types/code_block_yaml.py @@ -19,6 +19,7 @@ class CodeBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameter_keys: typing.Optional[typing.List[str]] = None diff --git a/skyvern/client/types/conditional_block.py b/skyvern/client/types/conditional_block.py index 52d790fa..4d663e9b 100644 --- a/skyvern/client/types/conditional_block.py +++ b/skyvern/client/types/conditional_block.py @@ -27,6 +27,7 @@ class ConditionalBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchCondition]] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/conditional_block_yaml.py b/skyvern/client/types/conditional_block_yaml.py index 39723736..95caaae4 100644 --- a/skyvern/client/types/conditional_block_yaml.py +++ b/skyvern/client/types/conditional_block_yaml.py @@ -20,6 +20,7 @@ class ConditionalBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchConditionYaml]] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/download_to_s3block.py b/skyvern/client/types/download_to_s3block.py index 3dd75bf8..5b0a74ba 100644 --- a/skyvern/client/types/download_to_s3block.py +++ b/skyvern/client/types/download_to_s3block.py @@ -22,6 +22,7 @@ class DownloadToS3Block(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/download_to_s3block_yaml.py b/skyvern/client/types/download_to_s3block_yaml.py index ae150416..8b833577 100644 --- a/skyvern/client/types/download_to_s3block_yaml.py +++ b/skyvern/client/types/download_to_s3block_yaml.py @@ -19,6 +19,7 @@ class DownloadToS3BlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/extraction_block.py b/skyvern/client/types/extraction_block.py index 74426711..1405ec78 100644 --- a/skyvern/client/types/extraction_block.py +++ b/skyvern/client/types/extraction_block.py @@ -27,6 +27,7 @@ class ExtractionBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/extraction_block_yaml.py b/skyvern/client/types/extraction_block_yaml.py index 787765f6..3e98e42b 100644 --- a/skyvern/client/types/extraction_block_yaml.py +++ b/skyvern/client/types/extraction_block_yaml.py @@ -21,6 +21,7 @@ class ExtractionBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None data_extraction_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/file_download_block.py b/skyvern/client/types/file_download_block.py index c20c05bc..ae327e35 100644 --- a/skyvern/client/types/file_download_block.py +++ b/skyvern/client/types/file_download_block.py @@ -27,6 +27,7 @@ class FileDownloadBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/file_download_block_yaml.py b/skyvern/client/types/file_download_block_yaml.py index c0882fda..3c2a6b91 100644 --- a/skyvern/client/types/file_download_block_yaml.py +++ b/skyvern/client/types/file_download_block_yaml.py @@ -20,6 +20,7 @@ class FileDownloadBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/file_parser_block.py b/skyvern/client/types/file_parser_block.py index 21ad7e72..c6cbdb2f 100644 --- a/skyvern/client/types/file_parser_block.py +++ b/skyvern/client/types/file_parser_block.py @@ -23,6 +23,7 @@ class FileParserBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None diff --git a/skyvern/client/types/file_parser_block_yaml.py b/skyvern/client/types/file_parser_block_yaml.py index 473f539a..fea8c7a9 100644 --- a/skyvern/client/types/file_parser_block_yaml.py +++ b/skyvern/client/types/file_parser_block_yaml.py @@ -20,6 +20,7 @@ class FileParserBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None diff --git a/skyvern/client/types/file_upload_block.py b/skyvern/client/types/file_upload_block.py index 12bafd65..521b93a2 100644 --- a/skyvern/client/types/file_upload_block.py +++ b/skyvern/client/types/file_upload_block.py @@ -25,6 +25,7 @@ class FileUploadBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None diff --git a/skyvern/client/types/file_upload_block_yaml.py b/skyvern/client/types/file_upload_block_yaml.py index f6ba19bf..670bab19 100644 --- a/skyvern/client/types/file_upload_block_yaml.py +++ b/skyvern/client/types/file_upload_block_yaml.py @@ -22,6 +22,7 @@ class FileUploadBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None diff --git a/skyvern/client/types/for_loop_block.py b/skyvern/client/types/for_loop_block.py index 0b5c733a..34d75131 100644 --- a/skyvern/client/types/for_loop_block.py +++ b/skyvern/client/types/for_loop_block.py @@ -25,6 +25,7 @@ class ForLoopBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockLoopBlocksItem"] loop_over: typing.Optional[ForLoopBlockLoopOver] = None loop_variable_reference: typing.Optional[str] = None diff --git a/skyvern/client/types/for_loop_block_loop_blocks_item.py b/skyvern/client/types/for_loop_block_loop_blocks_item.py index 22aeadb1..d7592317 100644 --- a/skyvern/client/types/for_loop_block_loop_blocks_item.py +++ b/skyvern/client/types/for_loop_block_loop_blocks_item.py @@ -47,6 +47,7 @@ class ForLoopBlockLoopBlocksItem_Action(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -86,6 +87,7 @@ class ForLoopBlockLoopBlocksItem_Code(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameters: typing.Optional[typing.List[CodeBlockParametersItem]] = None @@ -107,6 +109,7 @@ class ForLoopBlockLoopBlocksItem_Conditional(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchCondition]] = None if IS_PYDANTIC_V2: @@ -127,6 +130,7 @@ class ForLoopBlockLoopBlocksItem_DownloadToS3(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -147,6 +151,7 @@ class ForLoopBlockLoopBlocksItem_Extraction(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -186,6 +191,7 @@ class ForLoopBlockLoopBlocksItem_FileDownload(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -225,6 +231,7 @@ class ForLoopBlockLoopBlocksItem_FileUpload(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None @@ -253,6 +260,7 @@ class ForLoopBlockLoopBlocksItem_FileUrlParser(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -275,6 +283,7 @@ class ForLoopBlockLoopBlocksItem_ForLoop(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockLoopBlocksItem"] loop_over: typing.Optional[ForLoopBlockLoopOver] = None loop_variable_reference: typing.Optional[str] = None @@ -301,6 +310,7 @@ class ForLoopBlockLoopBlocksItem_GotoUrl(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: str title: typing.Optional[str] = None @@ -340,6 +350,7 @@ class ForLoopBlockLoopBlocksItem_HttpRequest(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -366,6 +377,7 @@ class ForLoopBlockLoopBlocksItem_HumanInteraction(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -413,6 +425,7 @@ class ForLoopBlockLoopBlocksItem_Login(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -452,6 +465,7 @@ class ForLoopBlockLoopBlocksItem_Navigation(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -491,6 +505,7 @@ class ForLoopBlockLoopBlocksItem_PdfParser(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -512,6 +527,7 @@ class ForLoopBlockLoopBlocksItem_SendEmail(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host: AwsSecretParameter smtp_port: AwsSecretParameter smtp_username: AwsSecretParameter @@ -540,6 +556,7 @@ class ForLoopBlockLoopBlocksItem_Task(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -579,6 +596,7 @@ class ForLoopBlockLoopBlocksItem_TaskV2(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None @@ -604,6 +622,7 @@ class ForLoopBlockLoopBlocksItem_TextPrompt(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameters: typing.Optional[typing.List[TextPromptBlockParametersItem]] = None @@ -627,6 +646,7 @@ class ForLoopBlockLoopBlocksItem_UploadToS3(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: @@ -647,6 +667,7 @@ class ForLoopBlockLoopBlocksItem_Validation(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -686,6 +707,7 @@ class ForLoopBlockLoopBlocksItem_Wait(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: int parameters: typing.Optional[typing.List[WaitBlockParametersItem]] = None diff --git a/skyvern/client/types/for_loop_block_yaml.py b/skyvern/client/types/for_loop_block_yaml.py index fc9949b9..847dcb8c 100644 --- a/skyvern/client/types/for_loop_block_yaml.py +++ b/skyvern/client/types/for_loop_block_yaml.py @@ -21,6 +21,7 @@ class ForLoopBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] loop_over_parameter_key: typing.Optional[str] = None loop_variable_reference: typing.Optional[str] = None diff --git a/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py b/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py index e3ff79bb..ac242e6d 100644 --- a/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py +++ b/skyvern/client/types/for_loop_block_yaml_loop_blocks_item.py @@ -22,6 +22,7 @@ class ForLoopBlockYamlLoopBlocksItem_Task(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -58,6 +59,7 @@ class ForLoopBlockYamlLoopBlocksItem_ForLoop(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] loop_over_parameter_key: typing.Optional[str] = None loop_variable_reference: typing.Optional[str] = None @@ -82,6 +84,7 @@ class ForLoopBlockYamlLoopBlocksItem_Code(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameter_keys: typing.Optional[typing.List[str]] = None @@ -101,6 +104,7 @@ class ForLoopBlockYamlLoopBlocksItem_TextPrompt(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameter_keys: typing.Optional[typing.List[str]] = None @@ -122,6 +126,7 @@ class ForLoopBlockYamlLoopBlocksItem_DownloadToS3(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -140,6 +145,7 @@ class ForLoopBlockYamlLoopBlocksItem_UploadToS3(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: @@ -158,6 +164,7 @@ class ForLoopBlockYamlLoopBlocksItem_FileUpload(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None @@ -185,6 +192,7 @@ class ForLoopBlockYamlLoopBlocksItem_SendEmail(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host_secret_parameter_key: str smtp_port_secret_parameter_key: str smtp_username_secret_parameter_key: str @@ -211,6 +219,7 @@ class ForLoopBlockYamlLoopBlocksItem_FileUrlParser(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -231,6 +240,7 @@ class ForLoopBlockYamlLoopBlocksItem_Validation(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None complete_criterion: typing.Optional[str] = None terminate_criterion: typing.Optional[str] = None error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -253,6 +263,7 @@ class ForLoopBlockYamlLoopBlocksItem_Action(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -282,6 +293,7 @@ class ForLoopBlockYamlLoopBlocksItem_Navigation(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -316,6 +328,7 @@ class ForLoopBlockYamlLoopBlocksItem_Extraction(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None data_extraction_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -342,6 +355,7 @@ class ForLoopBlockYamlLoopBlocksItem_Login(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -373,6 +387,7 @@ class ForLoopBlockYamlLoopBlocksItem_Wait(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: typing.Optional[int] = None if IS_PYDANTIC_V2: @@ -391,6 +406,7 @@ class ForLoopBlockYamlLoopBlocksItem_HumanInteraction(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None instructions: typing.Optional[str] = None positive_descriptor: typing.Optional[str] = None negative_descriptor: typing.Optional[str] = None @@ -416,6 +432,7 @@ class ForLoopBlockYamlLoopBlocksItem_FileDownload(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -446,6 +463,7 @@ class ForLoopBlockYamlLoopBlocksItem_GotoUrl(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -464,6 +482,7 @@ class ForLoopBlockYamlLoopBlocksItem_PdfParser(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -483,6 +502,7 @@ class ForLoopBlockYamlLoopBlocksItem_TaskV2(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None @@ -507,6 +527,7 @@ class ForLoopBlockYamlLoopBlocksItem_HttpRequest(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -531,6 +552,7 @@ class ForLoopBlockYamlLoopBlocksItem_Conditional(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchConditionYaml]] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/http_request_block.py b/skyvern/client/types/http_request_block.py index 1d4f17bf..f9a9257d 100644 --- a/skyvern/client/types/http_request_block.py +++ b/skyvern/client/types/http_request_block.py @@ -25,6 +25,7 @@ class HttpRequestBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None diff --git a/skyvern/client/types/http_request_block_yaml.py b/skyvern/client/types/http_request_block_yaml.py index c11e2cc2..b3d93566 100644 --- a/skyvern/client/types/http_request_block_yaml.py +++ b/skyvern/client/types/http_request_block_yaml.py @@ -19,6 +19,7 @@ class HttpRequestBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None diff --git a/skyvern/client/types/human_interaction_block.py b/skyvern/client/types/human_interaction_block.py index dcb52ed7..e1e74a13 100644 --- a/skyvern/client/types/human_interaction_block.py +++ b/skyvern/client/types/human_interaction_block.py @@ -39,6 +39,7 @@ class HumanInteractionBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/human_interaction_block_yaml.py b/skyvern/client/types/human_interaction_block_yaml.py index 24851a06..efccee61 100644 --- a/skyvern/client/types/human_interaction_block_yaml.py +++ b/skyvern/client/types/human_interaction_block_yaml.py @@ -19,6 +19,7 @@ class HumanInteractionBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None instructions: typing.Optional[str] = None positive_descriptor: typing.Optional[str] = None negative_descriptor: typing.Optional[str] = None diff --git a/skyvern/client/types/login_block.py b/skyvern/client/types/login_block.py index ac95a3bd..b832bb35 100644 --- a/skyvern/client/types/login_block.py +++ b/skyvern/client/types/login_block.py @@ -27,6 +27,7 @@ class LoginBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/login_block_yaml.py b/skyvern/client/types/login_block_yaml.py index fdec8346..480f43c1 100644 --- a/skyvern/client/types/login_block_yaml.py +++ b/skyvern/client/types/login_block_yaml.py @@ -20,6 +20,7 @@ class LoginBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None diff --git a/skyvern/client/types/navigation_block.py b/skyvern/client/types/navigation_block.py index f8537102..ccdea056 100644 --- a/skyvern/client/types/navigation_block.py +++ b/skyvern/client/types/navigation_block.py @@ -27,6 +27,7 @@ class NavigationBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/navigation_block_yaml.py b/skyvern/client/types/navigation_block_yaml.py index 05bb32d7..c0bf45ff 100644 --- a/skyvern/client/types/navigation_block_yaml.py +++ b/skyvern/client/types/navigation_block_yaml.py @@ -20,6 +20,7 @@ class NavigationBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/pdf_parser_block.py b/skyvern/client/types/pdf_parser_block.py index 399df519..898dfb4f 100644 --- a/skyvern/client/types/pdf_parser_block.py +++ b/skyvern/client/types/pdf_parser_block.py @@ -27,6 +27,7 @@ class PdfParserBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None diff --git a/skyvern/client/types/pdf_parser_block_yaml.py b/skyvern/client/types/pdf_parser_block_yaml.py index 18dbfb16..89f33676 100644 --- a/skyvern/client/types/pdf_parser_block_yaml.py +++ b/skyvern/client/types/pdf_parser_block_yaml.py @@ -19,6 +19,7 @@ class PdfParserBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None diff --git a/skyvern/client/types/send_email_block.py b/skyvern/client/types/send_email_block.py index f548b5b2..02253f69 100644 --- a/skyvern/client/types/send_email_block.py +++ b/skyvern/client/types/send_email_block.py @@ -23,6 +23,7 @@ class SendEmailBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host: AwsSecretParameter smtp_port: AwsSecretParameter smtp_username: AwsSecretParameter diff --git a/skyvern/client/types/send_email_block_yaml.py b/skyvern/client/types/send_email_block_yaml.py index 70219e39..3ade6fdf 100644 --- a/skyvern/client/types/send_email_block_yaml.py +++ b/skyvern/client/types/send_email_block_yaml.py @@ -19,6 +19,7 @@ class SendEmailBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host_secret_parameter_key: str smtp_port_secret_parameter_key: str smtp_username_secret_parameter_key: str diff --git a/skyvern/client/types/task_block.py b/skyvern/client/types/task_block.py index 96f0ed98..afeb9869 100644 --- a/skyvern/client/types/task_block.py +++ b/skyvern/client/types/task_block.py @@ -27,6 +27,7 @@ class TaskBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/task_block_yaml.py b/skyvern/client/types/task_block_yaml.py index 1e4aa18c..f55bd08e 100644 --- a/skyvern/client/types/task_block_yaml.py +++ b/skyvern/client/types/task_block_yaml.py @@ -21,6 +21,7 @@ class TaskBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None diff --git a/skyvern/client/types/task_v2block.py b/skyvern/client/types/task_v2block.py index 3be1adcb..fd25ffcb 100644 --- a/skyvern/client/types/task_v2block.py +++ b/skyvern/client/types/task_v2block.py @@ -22,6 +22,7 @@ class TaskV2Block(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None diff --git a/skyvern/client/types/task_v2block_yaml.py b/skyvern/client/types/task_v2block_yaml.py index a1000a10..3536eb19 100644 --- a/skyvern/client/types/task_v2block_yaml.py +++ b/skyvern/client/types/task_v2block_yaml.py @@ -19,6 +19,7 @@ class TaskV2BlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None diff --git a/skyvern/client/types/text_prompt_block.py b/skyvern/client/types/text_prompt_block.py index 042beb5e..9e54f308 100644 --- a/skyvern/client/types/text_prompt_block.py +++ b/skyvern/client/types/text_prompt_block.py @@ -25,6 +25,7 @@ class TextPromptBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameters: typing.Optional[typing.List[TextPromptBlockParametersItem]] = None diff --git a/skyvern/client/types/text_prompt_block_yaml.py b/skyvern/client/types/text_prompt_block_yaml.py index a77d4e28..627f8551 100644 --- a/skyvern/client/types/text_prompt_block_yaml.py +++ b/skyvern/client/types/text_prompt_block_yaml.py @@ -19,6 +19,7 @@ class TextPromptBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameter_keys: typing.Optional[typing.List[str]] = None diff --git a/skyvern/client/types/upload_to_s3block.py b/skyvern/client/types/upload_to_s3block.py index 730a9fd6..e7dac9ec 100644 --- a/skyvern/client/types/upload_to_s3block.py +++ b/skyvern/client/types/upload_to_s3block.py @@ -22,6 +22,7 @@ class UploadToS3Block(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/upload_to_s3block_yaml.py b/skyvern/client/types/upload_to_s3block_yaml.py index bdf825b7..c904e0d4 100644 --- a/skyvern/client/types/upload_to_s3block_yaml.py +++ b/skyvern/client/types/upload_to_s3block_yaml.py @@ -19,6 +19,7 @@ class UploadToS3BlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/url_block.py b/skyvern/client/types/url_block.py index 0f69ed33..20166c71 100644 --- a/skyvern/client/types/url_block.py +++ b/skyvern/client/types/url_block.py @@ -27,6 +27,7 @@ class UrlBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: str title: typing.Optional[str] = None diff --git a/skyvern/client/types/url_block_yaml.py b/skyvern/client/types/url_block_yaml.py index c11444e9..c4d7e204 100644 --- a/skyvern/client/types/url_block_yaml.py +++ b/skyvern/client/types/url_block_yaml.py @@ -19,6 +19,7 @@ class UrlBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/validation_block.py b/skyvern/client/types/validation_block.py index f6e53e1c..5d616663 100644 --- a/skyvern/client/types/validation_block.py +++ b/skyvern/client/types/validation_block.py @@ -27,6 +27,7 @@ class ValidationBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None diff --git a/skyvern/client/types/validation_block_yaml.py b/skyvern/client/types/validation_block_yaml.py index 7b92ecd1..4bdd9434 100644 --- a/skyvern/client/types/validation_block_yaml.py +++ b/skyvern/client/types/validation_block_yaml.py @@ -19,6 +19,7 @@ class ValidationBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None complete_criterion: typing.Optional[str] = None terminate_criterion: typing.Optional[str] = None error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None diff --git a/skyvern/client/types/wait_block.py b/skyvern/client/types/wait_block.py index ccb84423..79947b70 100644 --- a/skyvern/client/types/wait_block.py +++ b/skyvern/client/types/wait_block.py @@ -25,6 +25,7 @@ class WaitBlock(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: int parameters: typing.Optional[typing.List[WaitBlockParametersItem]] = None diff --git a/skyvern/client/types/wait_block_yaml.py b/skyvern/client/types/wait_block_yaml.py index 9bfd2929..a5354594 100644 --- a/skyvern/client/types/wait_block_yaml.py +++ b/skyvern/client/types/wait_block_yaml.py @@ -19,6 +19,7 @@ class WaitBlockYaml(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: typing.Optional[int] = None if IS_PYDANTIC_V2: diff --git a/skyvern/client/types/workflow_definition_blocks_item.py b/skyvern/client/types/workflow_definition_blocks_item.py index f264a6d0..05f5403e 100644 --- a/skyvern/client/types/workflow_definition_blocks_item.py +++ b/skyvern/client/types/workflow_definition_blocks_item.py @@ -47,6 +47,7 @@ class WorkflowDefinitionBlocksItem_Action(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -86,6 +87,7 @@ class WorkflowDefinitionBlocksItem_Code(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameters: typing.Optional[typing.List[CodeBlockParametersItem]] = None @@ -107,6 +109,7 @@ class WorkflowDefinitionBlocksItem_Conditional(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchCondition]] = None if IS_PYDANTIC_V2: @@ -127,6 +130,7 @@ class WorkflowDefinitionBlocksItem_DownloadToS3(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -147,6 +151,7 @@ class WorkflowDefinitionBlocksItem_Extraction(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -186,6 +191,7 @@ class WorkflowDefinitionBlocksItem_FileDownload(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -225,6 +231,7 @@ class WorkflowDefinitionBlocksItem_FileUpload(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None @@ -253,6 +260,7 @@ class WorkflowDefinitionBlocksItem_FileUrlParser(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -275,6 +283,7 @@ class WorkflowDefinitionBlocksItem_ForLoop(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockLoopBlocksItem"] loop_over: typing.Optional[ForLoopBlockLoopOver] = None loop_variable_reference: typing.Optional[str] = None @@ -302,6 +311,7 @@ class WorkflowDefinitionBlocksItem_GotoUrl(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: str title: typing.Optional[str] = None @@ -341,6 +351,7 @@ class WorkflowDefinitionBlocksItem_HttpRequest(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -367,6 +378,7 @@ class WorkflowDefinitionBlocksItem_HumanInteraction(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -414,6 +426,7 @@ class WorkflowDefinitionBlocksItem_Login(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -453,6 +466,7 @@ class WorkflowDefinitionBlocksItem_Navigation(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -492,6 +506,7 @@ class WorkflowDefinitionBlocksItem_PdfParser(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -513,6 +528,7 @@ class WorkflowDefinitionBlocksItem_SendEmail(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host: AwsSecretParameter smtp_port: AwsSecretParameter smtp_username: AwsSecretParameter @@ -541,6 +557,7 @@ class WorkflowDefinitionBlocksItem_Task(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -580,6 +597,7 @@ class WorkflowDefinitionBlocksItem_TaskV2(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None @@ -605,6 +623,7 @@ class WorkflowDefinitionBlocksItem_TextPrompt(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameters: typing.Optional[typing.List[TextPromptBlockParametersItem]] = None @@ -628,6 +647,7 @@ class WorkflowDefinitionBlocksItem_UploadToS3(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: @@ -648,6 +668,7 @@ class WorkflowDefinitionBlocksItem_Validation(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None task_type: typing.Optional[str] = None url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -687,6 +708,7 @@ class WorkflowDefinitionBlocksItem_Wait(UniversalBaseModel): continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None disable_cache: typing.Optional[bool] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: int parameters: typing.Optional[typing.List[WaitBlockParametersItem]] = None diff --git a/skyvern/client/types/workflow_definition_yaml_blocks_item.py b/skyvern/client/types/workflow_definition_yaml_blocks_item.py index 0d803b08..2d616041 100644 --- a/skyvern/client/types/workflow_definition_yaml_blocks_item.py +++ b/skyvern/client/types/workflow_definition_yaml_blocks_item.py @@ -22,6 +22,7 @@ class WorkflowDefinitionYamlBlocksItem_Action(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -51,6 +52,7 @@ class WorkflowDefinitionYamlBlocksItem_Code(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None code: str parameter_keys: typing.Optional[typing.List[str]] = None @@ -70,6 +72,7 @@ class WorkflowDefinitionYamlBlocksItem_Conditional(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None branch_conditions: typing.Optional[typing.List[BranchConditionYaml]] = None if IS_PYDANTIC_V2: @@ -88,6 +91,7 @@ class WorkflowDefinitionYamlBlocksItem_DownloadToS3(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -106,6 +110,7 @@ class WorkflowDefinitionYamlBlocksItem_Extraction(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None data_extraction_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -132,6 +137,7 @@ class WorkflowDefinitionYamlBlocksItem_FileDownload(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -162,6 +168,7 @@ class WorkflowDefinitionYamlBlocksItem_FileUpload(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None storage_type: typing.Optional[FileStorageType] = None s3bucket: typing_extensions.Annotated[typing.Optional[str], FieldMetadata(alias="s3_bucket")] = None aws_access_key_id: typing.Optional[str] = None @@ -189,6 +196,7 @@ class WorkflowDefinitionYamlBlocksItem_FileUrlParser(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str file_type: FileType json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -209,6 +217,7 @@ class WorkflowDefinitionYamlBlocksItem_ForLoop(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None loop_blocks: typing.List["ForLoopBlockYamlLoopBlocksItem"] loop_over_parameter_key: typing.Optional[str] = None loop_variable_reference: typing.Optional[str] = None @@ -234,6 +243,7 @@ class WorkflowDefinitionYamlBlocksItem_GotoUrl(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: str if IS_PYDANTIC_V2: @@ -252,6 +262,7 @@ class WorkflowDefinitionYamlBlocksItem_HttpRequest(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None method: typing.Optional[str] = None url: typing.Optional[str] = None headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -276,6 +287,7 @@ class WorkflowDefinitionYamlBlocksItem_HumanInteraction(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None instructions: typing.Optional[str] = None positive_descriptor: typing.Optional[str] = None negative_descriptor: typing.Optional[str] = None @@ -301,6 +313,7 @@ class WorkflowDefinitionYamlBlocksItem_Login(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -332,6 +345,7 @@ class WorkflowDefinitionYamlBlocksItem_Navigation(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None navigation_goal: str url: typing.Optional[str] = None title: typing.Optional[str] = None @@ -366,6 +380,7 @@ class WorkflowDefinitionYamlBlocksItem_PdfParser(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None file_url: str json_schema: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None @@ -385,6 +400,7 @@ class WorkflowDefinitionYamlBlocksItem_SendEmail(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None smtp_host_secret_parameter_key: str smtp_port_secret_parameter_key: str smtp_username_secret_parameter_key: str @@ -411,6 +427,7 @@ class WorkflowDefinitionYamlBlocksItem_Task(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None url: typing.Optional[str] = None title: typing.Optional[str] = None engine: typing.Optional[RunEngine] = None @@ -447,6 +464,7 @@ class WorkflowDefinitionYamlBlocksItem_TaskV2(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None prompt: str url: typing.Optional[str] = None totp_verification_url: typing.Optional[str] = None @@ -471,6 +489,7 @@ class WorkflowDefinitionYamlBlocksItem_TextPrompt(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None llm_key: typing.Optional[str] = None prompt: str parameter_keys: typing.Optional[typing.List[str]] = None @@ -492,6 +511,7 @@ class WorkflowDefinitionYamlBlocksItem_UploadToS3(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None path: typing.Optional[str] = None if IS_PYDANTIC_V2: @@ -510,6 +530,7 @@ class WorkflowDefinitionYamlBlocksItem_Validation(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None complete_criterion: typing.Optional[str] = None terminate_criterion: typing.Optional[str] = None error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None @@ -532,6 +553,7 @@ class WorkflowDefinitionYamlBlocksItem_Wait(UniversalBaseModel): next_block_label: typing.Optional[str] = None continue_on_failure: typing.Optional[bool] = None model: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + next_loop_on_failure: typing.Optional[bool] = None wait_sec: typing.Optional[int] = None if IS_PYDANTIC_V2: diff --git a/skyvern/forge/sdk/routes/code_samples.py b/skyvern/forge/sdk/routes/code_samples.py index 48216118..bbf4c20e 100644 --- a/skyvern/forge/sdk/routes/code_samples.py +++ b/skyvern/forge/sdk/routes/code_samples.py @@ -160,19 +160,19 @@ await skyvern.login({ onepassword_item_id: "1PASSWORD ITEM ID" }); """ -FILE_DOWNLOAD_CODE_SAMPLE_PYTHON = """from skyvern import Skyvern +DOWNLOAD_FILES_CODE_SAMPLE_PYTHON = """from skyvern import Skyvern skyvern = Skyvern(api_key="YOUR_API_KEY") -await skyvern.file_download( +await skyvern.download_files( url="https://example.com/downloads", navigation_goal="Navigate to the downloads page and click the 'Download PDF' button", download_suffix="report.pdf" ) """ -FILE_DOWNLOAD_CODE_SAMPLE_TS = """import { SkyvernClient } from "@skyvern/client"; +DOWNLOAD_FILES_CODE_SAMPLE_TS = """import { SkyvernClient } from "@skyvern/client"; const skyvern = new SkyvernClient({ apiKey: "YOUR_API_KEY" }); -await skyvern.fileDownload({ +await skyvern.downloadFiles({ url: "https://example.com/downloads", navigation_goal: "Navigate to the downloads page and click the 'Download PDF' button", download_suffix: "report.pdf" diff --git a/skyvern/forge/sdk/routes/run_blocks.py b/skyvern/forge/sdk/routes/run_blocks.py index 035546ed..2d3cee3e 100644 --- a/skyvern/forge/sdk/routes/run_blocks.py +++ b/skyvern/forge/sdk/routes/run_blocks.py @@ -8,8 +8,8 @@ from skyvern.exceptions import MissingBrowserAddressError from skyvern.forge import app from skyvern.forge.sdk.core import skyvern_context from skyvern.forge.sdk.routes.code_samples import ( - FILE_DOWNLOAD_CODE_SAMPLE_PYTHON, - FILE_DOWNLOAD_CODE_SAMPLE_TS, + DOWNLOAD_FILES_CODE_SAMPLE_PYTHON, + DOWNLOAD_FILES_CODE_SAMPLE_TS, LOGIN_CODE_SAMPLE_BITWARDEN_PYTHON, LOGIN_CODE_SAMPLE_BITWARDEN_TS, LOGIN_CODE_SAMPLE_ONEPASSWORD_PYTHON, @@ -22,7 +22,7 @@ from skyvern.forge.sdk.schemas.organizations import Organization from skyvern.forge.sdk.services import org_auth_service from skyvern.forge.sdk.workflow.models.parameter import WorkflowParameterType from skyvern.forge.sdk.workflow.models.workflow import Workflow, WorkflowRequestBody -from skyvern.schemas.run_blocks import BaseRunBlockRequest, CredentialType, FileDownloadRequest, LoginRequest +from skyvern.schemas.run_blocks import BaseRunBlockRequest, CredentialType, DownloadFilesRequest, LoginRequest from skyvern.schemas.runs import ProxyLocation, RunType, WorkflowRunRequest, WorkflowRunResponse from skyvern.schemas.workflows import ( AzureVaultCredentialParameterYAML, @@ -283,16 +283,16 @@ async def login( @base_router.post( - "/run/tasks/file_download", + "/run/tasks/download_files", tags=["Agent"], response_model=WorkflowRunResponse, openapi_extra={ - "x-fern-sdk-method-name": "file_download", + "x-fern-sdk-method-name": "download_files", "x-fern-examples": [ { "code-samples": [ - {"sdk": "python", "code": FILE_DOWNLOAD_CODE_SAMPLE_PYTHON}, - {"sdk": "typescript", "code": FILE_DOWNLOAD_CODE_SAMPLE_TS}, + {"sdk": "python", "code": DOWNLOAD_FILES_CODE_SAMPLE_PYTHON}, + {"sdk": "typescript", "code": DOWNLOAD_FILES_CODE_SAMPLE_TS}, ] } ], @@ -300,24 +300,24 @@ async def login( description="Download a file from a website by navigating and clicking download buttons", summary="File Download Task", ) -async def file_download( +async def download_files( request: Request, background_tasks: BackgroundTasks, - file_download_request: FileDownloadRequest, + download_files_request: DownloadFilesRequest, organization: Organization = Depends(org_auth_service.get_current_org), x_api_key: Annotated[str | None, Header()] = None, ) -> WorkflowRunResponse: - url = _validate_url(file_download_request.url) - totp_verification_url = _validate_url(file_download_request.totp_url) - webhook_url = _validate_url(file_download_request.webhook_url) + url = _validate_url(download_files_request.url) + totp_verification_url = _validate_url(download_files_request.totp_url) + webhook_url = _validate_url(download_files_request.webhook_url) # 1. create empty workflow new_workflow = await app.WORKFLOW_SERVICE.create_empty_workflow( organization, "File Download", - proxy_location=file_download_request.proxy_location, - max_screenshot_scrolling_times=file_download_request.max_screenshot_scrolling_times, - extra_http_headers=file_download_request.extra_http_headers, + proxy_location=download_files_request.proxy_location, + max_screenshot_scrolling_times=download_files_request.max_screenshot_scrolling_times, + extra_http_headers=download_files_request.extra_http_headers, status=WorkflowStatus.auto_generated, ) @@ -327,13 +327,13 @@ async def file_download( label=label, title=label, url=url, - navigation_goal=file_download_request.navigation_goal, - max_steps_per_run=file_download_request.max_steps_per_run or 10, - parameter_keys=file_download_request.parameter_keys or [], + navigation_goal=download_files_request.navigation_goal, + max_steps_per_run=download_files_request.max_steps_per_run or 10, + parameter_keys=[], totp_verification_url=totp_verification_url, - totp_identifier=file_download_request.totp_identifier, - download_suffix=file_download_request.download_suffix, - download_timeout=file_download_request.download_timeout, + totp_identifier=download_files_request.totp_identifier, + download_suffix=download_files_request.download_suffix, + download_timeout=download_files_request.download_timeout, ) yaml_blocks = [file_download_block_yaml] workflow_definition_yaml = WorkflowDefinitionYAML( @@ -343,10 +343,10 @@ async def file_download( workflow_create_request = WorkflowCreateYAMLRequest( title=new_workflow.title, description=new_workflow.description, - proxy_location=file_download_request.proxy_location or ProxyLocation.RESIDENTIAL, + proxy_location=download_files_request.proxy_location or ProxyLocation.RESIDENTIAL, workflow_definition=workflow_definition_yaml, status=new_workflow.status, - max_screenshot_scrolls=file_download_request.max_screenshot_scrolling_times, + max_screenshot_scrolls=download_files_request.max_screenshot_scrolling_times, ) workflow = await app.WORKFLOW_SERVICE.create_workflow_from_request( organization=organization, @@ -363,9 +363,9 @@ async def file_download( new_workflow=new_workflow, workflow_id=workflow_id, organization=organization, - run_block_request=file_download_request, + run_block_request=download_files_request, webhook_url=webhook_url, totp_verification_url=totp_verification_url, - totp_identifier=file_download_request.totp_identifier, + totp_identifier=download_files_request.totp_identifier, x_api_key=x_api_key, ) diff --git a/skyvern/library/skyvern_browser_page.py b/skyvern/library/skyvern_browser_page.py index e9996fb5..ee80f7d1 100644 --- a/skyvern/library/skyvern_browser_page.py +++ b/skyvern/library/skyvern_browser_page.py @@ -157,15 +157,14 @@ class SkyvernPageRun: LOG.info("AI login workflow finished", run_id=workflow_run.run_id, status=workflow_run.status) return WorkflowRunResponse.model_validate(workflow_run.model_dump()) - async def file_download( + async def download_files( self, - navigation_goal: str, + prompt: str, *, url: str | None = None, download_suffix: str | None = None, download_timeout: float | None = None, max_steps_per_run: int | None = None, - parameter_keys: list[str] | None = None, webhook_url: str | None = None, totp_identifier: str | None = None, totp_url: str | None = None, @@ -175,12 +174,11 @@ class SkyvernPageRun: """Run a file download task in the context of this page and wait for it to finish. Args: - navigation_goal: Instructions for navigating to and downloading the file. + prompt: Instructions for navigating to and downloading the file. url: URL to navigate to for file download. If not provided, uses the current page URL. download_suffix: Suffix or complete filename for the downloaded file. download_timeout: Timeout in seconds for the download operation. max_steps_per_run: Maximum number of steps to execute. - parameter_keys: List of parameter keys to use in the workflow. webhook_url: URL to receive webhook notifications about download progress. totp_identifier: Identifier for TOTP authentication. totp_url: URL to fetch TOTP codes from. @@ -191,15 +189,14 @@ class SkyvernPageRun: WorkflowRunResponse containing the file download workflow execution results. """ - LOG.info("Starting AI file download workflow", navigation_goal=navigation_goal) + LOG.info("Starting AI file download workflow", navigation_goal=prompt) - workflow_run = await self._browser.skyvern.file_download( - navigation_goal=navigation_goal, + workflow_run = await self._browser.skyvern.download_files( + navigation_goal=prompt, url=url or self._get_page_url(), download_suffix=download_suffix, download_timeout=download_timeout, max_steps_per_run=max_steps_per_run, - parameter_keys=parameter_keys, webhook_url=webhook_url, totp_identifier=totp_identifier, totp_url=totp_url, diff --git a/skyvern/schemas/run_blocks.py b/skyvern/schemas/run_blocks.py index 066a650c..8baf4550 100644 --- a/skyvern/schemas/run_blocks.py +++ b/skyvern/schemas/run_blocks.py @@ -74,9 +74,8 @@ class LoginRequest(BaseRunBlockRequest): azure_vault_totp_secret_key: str | None = Field(default=None, description="Azure Vault TOTP secret key") -class FileDownloadRequest(BaseRunBlockRequest): +class DownloadFilesRequest(BaseRunBlockRequest): navigation_goal: str = Field(..., description="Instructions for navigating to and downloading the file") download_suffix: str | None = Field(default=None, description="Suffix or complete filename for the downloaded file") download_timeout: float | None = Field(default=None, description="Timeout in seconds for the download operation") max_steps_per_run: int | None = Field(default=None, description="Maximum number of steps to execute") - parameter_keys: list[str] | None = Field(default=None, description="List of parameter keys to use in the workflow")