From 34aadb8c091053bfa44b83fe6aa45be6df27e5fa Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Wed, 28 Jan 2026 16:47:21 -0800 Subject: [PATCH] bump version to v1.0.11 (#4574) --- pyproject.toml | 2 +- skyvern-ts/client/README.md | 1 - skyvern-ts/client/package-lock.json | 652 +++++++++++++----- skyvern-ts/client/package.json | 2 +- skyvern-ts/client/pnpm-lock.yaml | 16 +- skyvern-ts/client/reference.md | 16 +- skyvern-ts/client/src/Client.ts | 329 ++++++++- .../api/client/requests/ChangeTierRequest.ts | 13 + .../requests/CheckoutSubscriptionRequest.ts | 13 + .../requests/CreateBrowserSessionRequest.ts | 15 +- .../src/api/client/requests/TotpCodeCreate.ts | 4 + .../client/src/api/client/requests/index.ts | 2 + skyvern-ts/client/src/api/types/Action.ts | 3 + .../client/src/api/types/ArtifactType.ts | 1 + .../src/api/types/BillingStateResponse.ts | 22 + skyvern-ts/client/src/api/types/BlockType.ts | 1 + .../src/api/types/BrowserSessionResponse.ts | 6 + .../src/api/types/ChangeTierResponse.ts | 7 + .../src/api/types/CheckoutSessionResponse.ts | 6 + skyvern-ts/client/src/api/types/Extensions.ts | 7 + .../api/types/ForLoopBlockLoopBlocksItem.ts | 5 + .../types/ForLoopBlockYamlLoopBlocksItem.ts | 7 +- .../client/src/api/types/HttpRequestBlock.ts | 2 + .../src/api/types/HttpRequestBlockYaml.ts | 2 + .../src/api/types/InputOrSelectContext.ts | 1 + skyvern-ts/client/src/api/types/PdfFormat.ts | 9 + .../src/api/types/PersistentBrowserType.ts | 7 + skyvern-ts/client/src/api/types/PlanTier.ts | 9 + .../src/api/types/PortalSessionResponse.ts | 5 + .../client/src/api/types/PrintPageBlock.ts | 21 + .../api/types/PrintPageBlockParametersItem.ts | 62 ++ .../src/api/types/PrintPageBlockYaml.ts | 19 + .../client/src/api/types/ProxyLocation.ts | 1 + .../client/src/api/types/TaskRunRequest.ts | 22 +- .../client/src/api/types/TaskRunResponse.ts | 2 + skyvern-ts/client/src/api/types/TotpCode.ts | 2 + .../src/api/types/WorkflowDefinition.ts | 1 + .../api/types/WorkflowDefinitionBlocksItem.ts | 5 + .../src/api/types/WorkflowDefinitionYaml.ts | 1 + .../types/WorkflowDefinitionYamlBlocksItem.ts | 5 + .../src/api/types/WorkflowRunRequest.ts | 22 +- .../src/api/types/WorkflowRunResponse.ts | 2 + skyvern-ts/client/src/api/types/index.ts | 11 + skyvern-ts/client/src/version.ts | 2 +- skyvern-ts/client/tests/wire/main.test.ts | 231 +++++++ skyvern/client/__init__.py | 78 +++ skyvern/client/client.py | 424 +++++++++++- skyvern/client/core/client_wrapper.py | 4 +- skyvern/client/raw_client.py | 548 ++++++++++++++- skyvern/client/types/__init__.py | 80 +++ skyvern/client/types/action.py | 3 + skyvern/client/types/artifact_type.py | 1 + .../client/types/billing_state_response.py | 36 + skyvern/client/types/block_type.py | 1 + .../client/types/browser_session_response.py | 17 + skyvern/client/types/change_tier_response.py | 21 + .../client/types/checkout_session_response.py | 20 + skyvern/client/types/extensions.py | 5 + .../types/for_loop_block_loop_blocks_item.py | 31 + .../for_loop_block_yaml_loop_blocks_item.py | 28 + skyvern/client/types/get_run_response.py | 6 + skyvern/client/types/http_request_block.py | 2 +- .../client/types/http_request_block_yaml.py | 2 +- .../client/types/input_or_select_context.py | 1 + skyvern/client/types/pdf_format.py | 5 + .../client/types/persistent_browser_type.py | 5 + skyvern/client/types/plan_tier.py | 5 + .../client/types/portal_session_response.py | 19 + skyvern/client/types/print_page_block.py | 48 ++ .../types/print_page_block_parameters_item.py | 277 ++++++++ skyvern/client/types/print_page_block_yaml.py | 38 + skyvern/client/types/task_run_request.py | 11 +- skyvern/client/types/task_run_response.py | 5 + skyvern/client/types/totp_code.py | 5 + skyvern/client/types/workflow_definition.py | 1 + .../types/workflow_definition_blocks_item.py | 31 + .../client/types/workflow_definition_yaml.py | 1 + .../workflow_definition_yaml_blocks_item.py | 28 + skyvern/client/types/workflow_run_request.py | 11 +- skyvern/client/types/workflow_run_response.py | 5 + tests/sdk/typescript_sdk/package-lock.json | 2 +- uv.lock | 2 +- 82 files changed, 3077 insertions(+), 304 deletions(-) create mode 100644 skyvern-ts/client/src/api/client/requests/ChangeTierRequest.ts create mode 100644 skyvern-ts/client/src/api/client/requests/CheckoutSubscriptionRequest.ts create mode 100644 skyvern-ts/client/src/api/types/BillingStateResponse.ts create mode 100644 skyvern-ts/client/src/api/types/ChangeTierResponse.ts create mode 100644 skyvern-ts/client/src/api/types/CheckoutSessionResponse.ts create mode 100644 skyvern-ts/client/src/api/types/Extensions.ts create mode 100644 skyvern-ts/client/src/api/types/PdfFormat.ts create mode 100644 skyvern-ts/client/src/api/types/PersistentBrowserType.ts create mode 100644 skyvern-ts/client/src/api/types/PlanTier.ts create mode 100644 skyvern-ts/client/src/api/types/PortalSessionResponse.ts create mode 100644 skyvern-ts/client/src/api/types/PrintPageBlock.ts create mode 100644 skyvern-ts/client/src/api/types/PrintPageBlockParametersItem.ts create mode 100644 skyvern-ts/client/src/api/types/PrintPageBlockYaml.ts create mode 100644 skyvern/client/types/billing_state_response.py create mode 100644 skyvern/client/types/change_tier_response.py create mode 100644 skyvern/client/types/checkout_session_response.py create mode 100644 skyvern/client/types/extensions.py create mode 100644 skyvern/client/types/pdf_format.py create mode 100644 skyvern/client/types/persistent_browser_type.py create mode 100644 skyvern/client/types/plan_tier.py create mode 100644 skyvern/client/types/portal_session_response.py create mode 100644 skyvern/client/types/print_page_block.py create mode 100644 skyvern/client/types/print_page_block_parameters_item.py create mode 100644 skyvern/client/types/print_page_block_yaml.py diff --git a/pyproject.toml b/pyproject.toml index 85214b99..e72ed8e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "skyvern" -version = "1.0.10" +version = "1.0.11" description = "" authors = [{ name = "Skyvern AI", email = "info@skyvern.com" }] requires-python = ">=3.11,<3.14" diff --git a/skyvern-ts/client/README.md b/skyvern-ts/client/README.md index 7fad6695..b1fa9680 100644 --- a/skyvern-ts/client/README.md +++ b/skyvern-ts/client/README.md @@ -1,6 +1,5 @@ # Skyvern TypeScript Library -[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2FSkyvern-AI%2Fskyvern-typescript) [![npm shield](https://img.shields.io/npm/v/@skyvern/client)](https://www.npmjs.com/package/@skyvern/client) The Skyvern TypeScript library provides convenient access to the Skyvern APIs from TypeScript. diff --git a/skyvern-ts/client/package-lock.json b/skyvern-ts/client/package-lock.json index d4265cff..6800023e 100644 --- a/skyvern-ts/client/package-lock.json +++ b/skyvern-ts/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@skyvern/client", - "version": "1.0.10", + "version": "1.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@skyvern/client", - "version": "1.0.10", + "version": "1.0.11", "dependencies": { "playwright": "^1.48.0" }, @@ -28,6 +28,7 @@ "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.5.tgz", "integrity": "sha512-zcIi+163Rc3HtyHbEO7CjeHq8DjQRs40HsGbW6vx2WI0tg8mYQOPouhvHSyEnCBAorfYNnKdR64/IxO7xQ5faw==", "dev": true, + "license": "MIT OR Apache-2.0", "bin": { "biome": "bin/biome" }, @@ -57,6 +58,7 @@ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -73,6 +75,7 @@ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "darwin" @@ -89,6 +92,7 @@ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -105,6 +109,7 @@ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -121,6 +126,7 @@ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -137,6 +143,7 @@ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "linux" @@ -153,6 +160,7 @@ "arm64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -169,6 +177,7 @@ "x64" ], "dev": true, + "license": "MIT OR Apache-2.0", "optional": true, "os": [ "win32" @@ -182,6 +191,7 @@ "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz", "integrity": "sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==", "dev": true, + "license": "ISC", "dependencies": { "cookie": "^0.7.2" } @@ -191,6 +201,7 @@ "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", "dev": true, + "license": "ISC", "dependencies": { "statuses": "^2.0.1" } @@ -203,6 +214,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -219,6 +231,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -235,6 +248,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -251,6 +265,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -267,6 +282,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -283,6 +299,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -299,6 +316,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -315,6 +333,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -331,6 +350,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -347,6 +367,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -363,6 +384,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -379,6 +401,7 @@ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -395,6 +418,7 @@ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -411,6 +435,7 @@ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -427,6 +452,7 @@ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -443,6 +469,7 @@ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -459,6 +486,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -475,6 +503,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -491,6 +520,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -507,6 +537,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -523,6 +554,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -539,6 +571,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" @@ -555,6 +588,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -571,6 +605,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -587,6 +622,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -603,6 +639,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -616,6 +653,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -625,6 +663,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -646,6 +685,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, + "license": "MIT", "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", @@ -673,6 +713,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -682,6 +723,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -699,6 +741,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -709,6 +752,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -718,6 +762,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -727,13 +772,15 @@ "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -744,6 +791,7 @@ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz", "integrity": "sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==", "dev": true, + "license": "MIT", "dependencies": { "@open-draft/deferred-promise": "^2.2.0", "@open-draft/logger": "^0.3.0", @@ -760,13 +808,15 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@open-draft/logger": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "dev": true, + "license": "MIT", "dependencies": { "is-node-process": "^1.2.0", "outvariant": "^1.4.0" @@ -776,289 +826,354 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz", - "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.0.tgz", + "integrity": "sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz", - "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.0.tgz", + "integrity": "sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz", - "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.0.tgz", + "integrity": "sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz", - "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.0.tgz", + "integrity": "sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz", - "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.0.tgz", + "integrity": "sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz", - "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.0.tgz", + "integrity": "sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz", - "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.0.tgz", + "integrity": "sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz", - "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.0.tgz", + "integrity": "sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz", - "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.0.tgz", + "integrity": "sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz", - "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.0.tgz", + "integrity": "sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz", - "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.0.tgz", + "integrity": "sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.0.tgz", + "integrity": "sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz", - "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.0.tgz", + "integrity": "sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.0.tgz", + "integrity": "sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz", - "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.0.tgz", + "integrity": "sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz", - "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.0.tgz", + "integrity": "sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz", - "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.0.tgz", + "integrity": "sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz", - "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.0.tgz", + "integrity": "sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz", - "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.0.tgz", + "integrity": "sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.0.tgz", + "integrity": "sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz", - "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.0.tgz", + "integrity": "sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openharmony" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz", - "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.0.tgz", + "integrity": "sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz", - "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.0.tgz", + "integrity": "sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz", - "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.0.tgz", + "integrity": "sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz", - "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.0.tgz", + "integrity": "sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1069,6 +1184,7 @@ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, + "license": "MIT", "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" @@ -1078,19 +1194,22 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1101,6 +1220,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -1110,19 +1230,22 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { "version": "18.19.130", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -1131,13 +1254,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vitest/expect": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", @@ -1154,6 +1279,7 @@ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -1166,6 +1292,7 @@ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/utils": "3.2.4", "pathe": "^2.0.3", @@ -1180,6 +1307,7 @@ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", @@ -1194,6 +1322,7 @@ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^4.0.3" }, @@ -1206,6 +1335,7 @@ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", @@ -1220,6 +1350,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -1229,25 +1360,29 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1258,13 +1393,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1277,6 +1414,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1286,6 +1424,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -1294,13 +1433,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1317,6 +1458,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -1330,6 +1472,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1342,6 +1485,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1356,6 +1500,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -1365,19 +1510,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1390,6 +1538,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" }, @@ -1402,6 +1551,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1418,6 +1568,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -1435,6 +1586,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -1447,6 +1599,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1456,6 +1609,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -1471,15 +1625,17 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.11", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.11.tgz", - "integrity": "sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==", + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", "dev": true, + "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" } @@ -1489,6 +1645,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1515,6 +1672,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -1533,21 +1691,23 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001761", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001761.tgz", - "integrity": "sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==", + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", "dev": true, "funding": [ { @@ -1562,13 +1722,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chai": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -1585,6 +1747,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -1597,10 +1760,11 @@ } }, "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 16" } @@ -1610,6 +1774,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -1619,6 +1784,7 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -1628,6 +1794,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -1642,6 +1809,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -1659,6 +1827,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -1670,19 +1839,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -1692,6 +1864,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -1709,27 +1882,31 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "dev": true + "version": "1.5.279", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.279.tgz", + "integrity": "sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/enhanced-resolve": { "version": "5.18.4", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1742,7 +1919,8 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esbuild": { "version": "0.27.2", @@ -1750,6 +1928,7 @@ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -1790,6 +1969,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1799,6 +1979,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1812,6 +1993,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -1824,6 +2006,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1833,6 +2016,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -1842,6 +2026,7 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } @@ -1851,6 +2036,7 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -1860,6 +2046,7 @@ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.0.0" } @@ -1868,7 +2055,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.0", @@ -1884,13 +2072,15 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1903,6 +2093,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1916,6 +2107,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -1924,19 +2116,22 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphql": { "version": "16.12.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.12.0.tgz", "integrity": "sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -1946,6 +2141,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1954,13 +2150,15 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1969,13 +2167,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1985,6 +2185,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -1999,6 +2200,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2013,25 +2215,29 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loader-runner": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.11.5" }, @@ -2044,13 +2250,15 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.21", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -2059,13 +2267,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -2079,6 +2289,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2088,6 +2299,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -2099,7 +2311,8 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/msw": { "version": "2.11.2", @@ -2107,6 +2320,7 @@ "integrity": "sha512-MI54hLCsrMwiflkcqlgYYNJJddY5/+S0SnONvhv1owOplvqohKSQyGejpNdUGyCwgs4IH7PqaNbPw/sKOEze9Q==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", @@ -2151,6 +2365,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, + "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -2166,6 +2381,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -2177,37 +2393,43 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/outvariant": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.16" } @@ -2216,13 +2438,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -2231,11 +2455,12 @@ } }, "node_modules/playwright": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", - "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.0.tgz", + "integrity": "sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==", + "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.57.0" + "playwright-core": "1.58.0" }, "bin": { "playwright": "cli.js" @@ -2248,9 +2473,10 @@ } }, "node_modules/playwright-core": { - "version": "1.57.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", - "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "version": "1.58.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.0.tgz", + "integrity": "sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==", + "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, @@ -2277,6 +2503,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -2291,6 +2518,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -2300,6 +2528,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2309,6 +2538,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2317,13 +2547,15 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.7.0.tgz", "integrity": "sha512-LPRKoHnLKd/r3dVxcwO7vhCW+orkOGj9ViueosEBK6ie89CijnfRlhaDhHq/3Hxu4CkWQtxwlBG0mzTQY6uQjw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rollup": { - "version": "4.53.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz", - "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==", + "version": "4.57.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.0.tgz", + "integrity": "sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.8" }, @@ -2335,28 +2567,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.53.5", - "@rollup/rollup-android-arm64": "4.53.5", - "@rollup/rollup-darwin-arm64": "4.53.5", - "@rollup/rollup-darwin-x64": "4.53.5", - "@rollup/rollup-freebsd-arm64": "4.53.5", - "@rollup/rollup-freebsd-x64": "4.53.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.53.5", - "@rollup/rollup-linux-arm-musleabihf": "4.53.5", - "@rollup/rollup-linux-arm64-gnu": "4.53.5", - "@rollup/rollup-linux-arm64-musl": "4.53.5", - "@rollup/rollup-linux-loong64-gnu": "4.53.5", - "@rollup/rollup-linux-ppc64-gnu": "4.53.5", - "@rollup/rollup-linux-riscv64-gnu": "4.53.5", - "@rollup/rollup-linux-riscv64-musl": "4.53.5", - "@rollup/rollup-linux-s390x-gnu": "4.53.5", - "@rollup/rollup-linux-x64-gnu": "4.53.5", - "@rollup/rollup-linux-x64-musl": "4.53.5", - "@rollup/rollup-openharmony-arm64": "4.53.5", - "@rollup/rollup-win32-arm64-msvc": "4.53.5", - "@rollup/rollup-win32-ia32-msvc": "4.53.5", - "@rollup/rollup-win32-x64-gnu": "4.53.5", - "@rollup/rollup-win32-x64-msvc": "4.53.5", + "@rollup/rollup-android-arm-eabi": "4.57.0", + "@rollup/rollup-android-arm64": "4.57.0", + "@rollup/rollup-darwin-arm64": "4.57.0", + "@rollup/rollup-darwin-x64": "4.57.0", + "@rollup/rollup-freebsd-arm64": "4.57.0", + "@rollup/rollup-freebsd-x64": "4.57.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.0", + "@rollup/rollup-linux-arm-musleabihf": "4.57.0", + "@rollup/rollup-linux-arm64-gnu": "4.57.0", + "@rollup/rollup-linux-arm64-musl": "4.57.0", + "@rollup/rollup-linux-loong64-gnu": "4.57.0", + "@rollup/rollup-linux-loong64-musl": "4.57.0", + "@rollup/rollup-linux-ppc64-gnu": "4.57.0", + "@rollup/rollup-linux-ppc64-musl": "4.57.0", + "@rollup/rollup-linux-riscv64-gnu": "4.57.0", + "@rollup/rollup-linux-riscv64-musl": "4.57.0", + "@rollup/rollup-linux-s390x-gnu": "4.57.0", + "@rollup/rollup-linux-x64-gnu": "4.57.0", + "@rollup/rollup-linux-x64-musl": "4.57.0", + "@rollup/rollup-openbsd-x64": "4.57.0", + "@rollup/rollup-openharmony-arm64": "4.57.0", + "@rollup/rollup-win32-arm64-msvc": "4.57.0", + "@rollup/rollup-win32-ia32-msvc": "4.57.0", + "@rollup/rollup-win32-x64-gnu": "4.57.0", + "@rollup/rollup-win32-x64-msvc": "4.57.0", "fsevents": "~2.3.2" } }, @@ -2378,13 +2613,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/schema-utils": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -2404,6 +2641,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -2416,6 +2654,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -2424,13 +2663,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -2443,6 +2684,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 12" } @@ -2452,6 +2694,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -2461,6 +2704,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2471,6 +2715,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -2479,13 +2724,15 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/statuses": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2494,19 +2741,22 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/strict-event-emitter": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2521,6 +2771,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2533,6 +2784,7 @@ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^9.0.1" }, @@ -2545,6 +2797,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -2557,6 +2810,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -2566,10 +2820,11 @@ } }, "node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -2588,6 +2843,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -2621,19 +2877,22 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, + "license": "MIT", "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" @@ -2650,6 +2909,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -2667,6 +2927,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2679,6 +2940,7 @@ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" } @@ -2688,6 +2950,7 @@ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -2697,6 +2960,7 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -2706,6 +2970,7 @@ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.19.tgz", "integrity": "sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==", "dev": true, + "license": "MIT", "dependencies": { "tldts-core": "^7.0.19" }, @@ -2717,13 +2982,15 @@ "version": "7.0.19", "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.19.tgz", "integrity": "sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -2736,6 +3003,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tldts": "^7.0.5" }, @@ -2748,6 +3016,7 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -2768,6 +3037,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -2780,6 +3050,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -2792,7 +3063,8 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/update-browserslist-db": { "version": "1.2.3", @@ -2813,6 +3085,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -2829,6 +3102,7 @@ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.1", @@ -2847,10 +3121,11 @@ } }, "node_modules/vite-node/node_modules/@types/node": { - "version": "25.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz", - "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==", + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.1.0.tgz", + "integrity": "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==", "dev": true, + "license": "MIT", "optional": true, "peer": true, "dependencies": { @@ -2862,6 +3137,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -2880,6 +3156,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -2893,6 +3170,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2905,14 +3183,16 @@ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, + "license": "MIT", "optional": true, "peer": true }, "node_modules/vite-node/node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -2987,6 +3267,7 @@ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", @@ -3059,6 +3340,7 @@ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", @@ -3085,6 +3367,7 @@ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" }, @@ -3103,6 +3386,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3116,6 +3400,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3124,10 +3409,11 @@ } }, "node_modules/vitest/node_modules/vite": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.0.tgz", - "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", @@ -3198,10 +3484,11 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "dev": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -3215,6 +3502,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.104.1.tgz", "integrity": "sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==", "dev": true, + "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -3263,6 +3551,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -3271,13 +3560,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/why-is-node-running": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -3294,6 +3585,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3308,6 +3600,7 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -3317,6 +3610,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -3335,6 +3629,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -3344,6 +3639,7 @@ "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, diff --git a/skyvern-ts/client/package.json b/skyvern-ts/client/package.json index 61e83a57..5b2b7e1e 100644 --- a/skyvern-ts/client/package.json +++ b/skyvern-ts/client/package.json @@ -1,6 +1,6 @@ { "name": "@skyvern/client", - "version": "1.0.10", + "version": "1.0.11", "private": false, "repository": { "type": "git", diff --git a/skyvern-ts/client/pnpm-lock.yaml b/skyvern-ts/client/pnpm-lock.yaml index e89f2f53..ac441002 100644 --- a/skyvern-ts/client/pnpm-lock.yaml +++ b/skyvern-ts/client/pnpm-lock.yaml @@ -7,7 +7,7 @@ importers: dependencies: playwright: specifier: ^1.48.0 - version: 1.57.0 + version: 1.58.0 devDependencies: '@biomejs/biome': specifier: 2.2.5 @@ -656,12 +656,12 @@ packages: picomatch@4.0.3: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - playwright-core@1.57.0: - resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + playwright-core@1.58.0: + resolution: {integrity: sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==} engines: {node: '>=18'} hasBin: true - playwright@1.57.0: - resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + playwright@1.58.0: + resolution: {integrity: sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==} engines: {node: '>=18'} hasBin: true postcss@8.5.6: @@ -1401,10 +1401,10 @@ snapshots: picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} - playwright-core@1.57.0: {} - playwright@1.57.0: + playwright-core@1.58.0: {} + playwright@1.58.0: dependencies: - playwright-core: 1.57.0 + playwright-core: 1.58.0 optionalDependencies: fsevents: 2.3.2 postcss@8.5.6: diff --git a/skyvern-ts/client/reference.md b/skyvern-ts/client/reference.md index 133f9410..933607e6 100644 --- a/skyvern-ts/client/reference.md +++ b/skyvern-ts/client/reference.md @@ -1,5 +1,5 @@ # Reference -
client.runSdkAction({ ...params }) -> Skyvern.RunSdkActionResponse +
client.changeTierApiV1BillingChangeTierPost({ ...params }) -> Skyvern.ChangeTierResponse
@@ -11,7 +11,10 @@
-Execute a single SDK action with the specified parameters +Redirect to Stripe Portal for tier changes. +Portal handles proration based on configured settings: +- Upgrades: Immediate proration charge +- Downgrades: Apply at end of billing period
@@ -26,11 +29,8 @@ Execute a single SDK action with the specified parameters
```typescript -await client.runSdkAction({ - url: "url", - action: { - type: "ai_act" - } +await client.changeTierApiV1BillingChangeTierPost({ + tier: "free" }); ``` @@ -47,7 +47,7 @@ await client.runSdkAction({
-**request:** `Skyvern.RunSdkActionRequest` +**request:** `Skyvern.ChangeTierRequest`
diff --git a/skyvern-ts/client/src/Client.ts b/skyvern-ts/client/src/Client.ts index 3ff8ec2c..488c5248 100644 --- a/skyvern-ts/client/src/Client.ts +++ b/skyvern-ts/client/src/Client.ts @@ -26,8 +26,8 @@ export class SkyvernClient { "x-api-key": _options?.apiKey, "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "@skyvern/client", - "X-Fern-SDK-Version": "1.0.10", - "User-Agent": "@skyvern/client/1.0.10", + "X-Fern-SDK-Version": "1.0.11", + "User-Agent": "@skyvern/client/1.0.11", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, }, @@ -2817,4 +2817,329 @@ export class SkyvernClient { }); } } + + /** + * Create a Stripe Checkout Session for subscribing to a tier. + * + * Frontend should redirect the user to the returned URL. + * After successful checkout, Stripe will send a webhook that we handle + * to store the subscription and initialize billing state. + * + * Returns 400 if org already has an active subscription (use portal instead). + * + * @param {Skyvern.CheckoutSubscriptionRequest} request + * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.createCheckoutSessionApiV1BillingCheckoutPost({ + * tier: "free" + * }) + */ + public createCheckoutSessionApiV1BillingCheckoutPost( + request: Skyvern.CheckoutSubscriptionRequest, + requestOptions?: SkyvernClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__createCheckoutSessionApiV1BillingCheckoutPost(request, requestOptions), + ); + } + + private async __createCheckoutSessionApiV1BillingCheckoutPost( + request: Skyvern.CheckoutSubscriptionRequest, + 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, + "api/v1/billing/checkout", + ), + 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.CheckoutSessionResponse, 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 /api/v1/billing/checkout."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Create a Stripe Customer Portal session for managing subscription. + * + * Frontend should redirect the user to the returned URL. + * The portal allows users to: + * - Update payment methods + * - Upgrade/downgrade plans + * - Cancel subscription + * - View invoices + * + * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.createPortalSessionApiV1BillingPortalPost() + */ + public createPortalSessionApiV1BillingPortalPost( + requestOptions?: SkyvernClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__createPortalSessionApiV1BillingPortalPost(requestOptions)); + } + + private async __createPortalSessionApiV1BillingPortalPost( + 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, + "api/v1/billing/portal", + ), + method: "POST", + headers: _headers, + queryParameters: requestOptions?.queryParams, + 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.PortalSessionResponse, 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 /api/v1/billing/portal."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.getOrganizationBillingApiV1BillingStateGet() + */ + public getOrganizationBillingApiV1BillingStateGet( + requestOptions?: SkyvernClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__getOrganizationBillingApiV1BillingStateGet(requestOptions)); + } + + private async __getOrganizationBillingApiV1BillingStateGet( + 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, + "api/v1/billing/state", + ), + method: "GET", + headers: _headers, + queryParameters: requestOptions?.queryParams, + 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.BillingStateResponse | undefined, + 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 GET /api/v1/billing/state."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Redirect to Stripe Portal for tier changes. + * Portal handles proration based on configured settings: + * - Upgrades: Immediate proration charge + * - Downgrades: Apply at end of billing period + * + * @param {Skyvern.ChangeTierRequest} request + * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.changeTierApiV1BillingChangeTierPost({ + * tier: "free" + * }) + */ + public changeTierApiV1BillingChangeTierPost( + request: Skyvern.ChangeTierRequest, + requestOptions?: SkyvernClient.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__changeTierApiV1BillingChangeTierPost(request, requestOptions), + ); + } + + private async __changeTierApiV1BillingChangeTierPost( + request: Skyvern.ChangeTierRequest, + 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, + "api/v1/billing/change-tier", + ), + 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.ChangeTierResponse, 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 /api/v1/billing/change-tier."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } } diff --git a/skyvern-ts/client/src/api/client/requests/ChangeTierRequest.ts b/skyvern-ts/client/src/api/client/requests/ChangeTierRequest.ts new file mode 100644 index 00000000..94557481 --- /dev/null +++ b/skyvern-ts/client/src/api/client/requests/ChangeTierRequest.ts @@ -0,0 +1,13 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../../index.js"; + +/** + * @example + * { + * tier: "free" + * } + */ +export interface ChangeTierRequest { + tier: Skyvern.PlanTier; +} diff --git a/skyvern-ts/client/src/api/client/requests/CheckoutSubscriptionRequest.ts b/skyvern-ts/client/src/api/client/requests/CheckoutSubscriptionRequest.ts new file mode 100644 index 00000000..0d70da49 --- /dev/null +++ b/skyvern-ts/client/src/api/client/requests/CheckoutSubscriptionRequest.ts @@ -0,0 +1,13 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../../index.js"; + +/** + * @example + * { + * tier: "free" + * } + */ +export interface CheckoutSubscriptionRequest { + tier: Skyvern.PlanTier; +} diff --git a/skyvern-ts/client/src/api/client/requests/CreateBrowserSessionRequest.ts b/skyvern-ts/client/src/api/client/requests/CreateBrowserSessionRequest.ts index 44fcaefa..41f764f3 100644 --- a/skyvern-ts/client/src/api/client/requests/CreateBrowserSessionRequest.ts +++ b/skyvern-ts/client/src/api/client/requests/CreateBrowserSessionRequest.ts @@ -22,16 +22,21 @@ export interface CreateBrowserSessionRequest { * - RESIDENTIAL_FR: France * - RESIDENTIAL_DE: Germany * - RESIDENTIAL_NZ: New Zealand + * - RESIDENTIAL_PH: Philippines * - RESIDENTIAL_ZA: South Africa * - RESIDENTIAL_AR: Argentina * - RESIDENTIAL_AU: Australia * - RESIDENTIAL_ISP: ISP proxy - * - US-CA: California - * - US-NY: New York - * - US-TX: Texas - * - US-FL: Florida - * - US-WA: Washington + * - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + * - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + * - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + * - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + * - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) * - NONE: No proxy */ proxy_location?: Skyvern.ProxyLocation; + /** A list of extensions to install in the browser session. */ + extensions?: Skyvern.Extensions[]; + /** The type of browser to use for the session. */ + browser_type?: Skyvern.PersistentBrowserType; } diff --git a/skyvern-ts/client/src/api/client/requests/TotpCodeCreate.ts b/skyvern-ts/client/src/api/client/requests/TotpCodeCreate.ts index a0f18edb..97791837 100644 --- a/skyvern-ts/client/src/api/client/requests/TotpCodeCreate.ts +++ b/skyvern-ts/client/src/api/client/requests/TotpCodeCreate.ts @@ -1,5 +1,7 @@ // This file was auto-generated by Fern from our API Definition. +import type * as Skyvern from "../../index.js"; + /** * @example * { @@ -22,4 +24,6 @@ export interface TotpCodeCreate { content: string; /** The timestamp when the TOTP code expires */ expired_at?: string; + /** Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. */ + type?: Skyvern.OtpType; } diff --git a/skyvern-ts/client/src/api/client/requests/index.ts b/skyvern-ts/client/src/api/client/requests/index.ts index 5215a6e3..b7c874ca 100644 --- a/skyvern-ts/client/src/api/client/requests/index.ts +++ b/skyvern-ts/client/src/api/client/requests/index.ts @@ -1,4 +1,6 @@ export type { BodyUploadFileV1UploadFilePost } from "./BodyUploadFileV1UploadFilePost.js"; +export type { ChangeTierRequest } from "./ChangeTierRequest.js"; +export type { CheckoutSubscriptionRequest } from "./CheckoutSubscriptionRequest.js"; export type { CreateBrowserProfileRequest } from "./CreateBrowserProfileRequest.js"; export type { CreateBrowserSessionRequest } from "./CreateBrowserSessionRequest.js"; export type { CreateCredentialRequest } from "./CreateCredentialRequest.js"; diff --git a/skyvern-ts/client/src/api/types/Action.ts b/skyvern-ts/client/src/api/types/Action.ts index 127e5236..8e747e70 100644 --- a/skyvern-ts/client/src/api/types/Action.ts +++ b/skyvern-ts/client/src/api/types/Action.ts @@ -21,6 +21,7 @@ export interface Action { element_id?: string; skyvern_element_hash?: string; skyvern_element_data?: Record; + screenshot_artifact_id?: string; tool_call_id?: string; xpath?: string; errors?: Skyvern.UserDefinedError[]; @@ -28,6 +29,8 @@ export interface Action { file_name?: string; file_url?: string; download?: boolean; + download_triggered?: boolean; + downloaded_files?: string[]; is_upload_file_tag?: boolean; text?: string; input_or_select_context?: Skyvern.InputOrSelectContext; diff --git a/skyvern-ts/client/src/api/types/ArtifactType.ts b/skyvern-ts/client/src/api/types/ArtifactType.ts index 60d70d14..f7990688 100644 --- a/skyvern-ts/client/src/api/types/ArtifactType.ts +++ b/skyvern-ts/client/src/api/types/ArtifactType.ts @@ -27,5 +27,6 @@ export const ArtifactType = { Trace: "trace", Har: "har", ScriptFile: "script_file", + Pdf: "pdf", } as const; export type ArtifactType = (typeof ArtifactType)[keyof typeof ArtifactType]; diff --git a/skyvern-ts/client/src/api/types/BillingStateResponse.ts b/skyvern-ts/client/src/api/types/BillingStateResponse.ts new file mode 100644 index 00000000..f07277bf --- /dev/null +++ b/skyvern-ts/client/src/api/types/BillingStateResponse.ts @@ -0,0 +1,22 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export interface BillingStateResponse { + billing_id: string; + organization_id: string; + plan_tier: Skyvern.PlanTier; + current_period_start?: string; + current_period_end?: string; + included_credits_this_period: number; + credits_consumed_this_period: number; + cached_credits_consumed_this_period: number; + overage_enabled: boolean; + browser_uptime_seconds_consumed: number; + topup_credits_total: number; + topup_credits_used: number; + topup_credits_remaining: number; + credits_remaining: number; + created_at: string; + modified_at: string; +} diff --git a/skyvern-ts/client/src/api/types/BlockType.ts b/skyvern-ts/client/src/api/types/BlockType.ts index bc468d93..18811e4c 100644 --- a/skyvern-ts/client/src/api/types/BlockType.ts +++ b/skyvern-ts/client/src/api/types/BlockType.ts @@ -23,5 +23,6 @@ export const BlockType = { PdfParser: "pdf_parser", HttpRequest: "http_request", HumanInteraction: "human_interaction", + PrintPage: "print_page", } as const; export type BlockType = (typeof BlockType)[keyof typeof BlockType]; diff --git a/skyvern-ts/client/src/api/types/BrowserSessionResponse.ts b/skyvern-ts/client/src/api/types/BrowserSessionResponse.ts index 5a57293f..8af63777 100644 --- a/skyvern-ts/client/src/api/types/BrowserSessionResponse.ts +++ b/skyvern-ts/client/src/api/types/BrowserSessionResponse.ts @@ -10,6 +10,8 @@ export interface BrowserSessionResponse { browser_session_id: string; /** ID of the organization that owns this session */ organization_id: string; + /** Current status of the browser session */ + status?: string; /** Type of the current runnable associated with this session (workflow, task etc) */ runnable_type?: string; /** ID of the current runnable */ @@ -20,6 +22,10 @@ export interface BrowserSessionResponse { browser_address?: string; /** Url for the browser session page */ app_url?: string; + /** A list of extensions installed in the browser session. */ + extensions?: Skyvern.Extensions[]; + /** The type of browser used for the session. */ + browser_type?: Skyvern.PersistentBrowserType; /** Whether the browser session supports VNC streaming */ vnc_streaming_supported?: boolean; /** The path where the browser session downloads files */ diff --git a/skyvern-ts/client/src/api/types/ChangeTierResponse.ts b/skyvern-ts/client/src/api/types/ChangeTierResponse.ts new file mode 100644 index 00000000..aa760d4a --- /dev/null +++ b/skyvern-ts/client/src/api/types/ChangeTierResponse.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface ChangeTierResponse { + status: string; + tier: string; + redirect_url?: string; +} diff --git a/skyvern-ts/client/src/api/types/CheckoutSessionResponse.ts b/skyvern-ts/client/src/api/types/CheckoutSessionResponse.ts new file mode 100644 index 00000000..5345417d --- /dev/null +++ b/skyvern-ts/client/src/api/types/CheckoutSessionResponse.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface CheckoutSessionResponse { + id: string; + url: string; +} diff --git a/skyvern-ts/client/src/api/types/Extensions.ts b/skyvern-ts/client/src/api/types/Extensions.ts new file mode 100644 index 00000000..e1cc2fe6 --- /dev/null +++ b/skyvern-ts/client/src/api/types/Extensions.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const Extensions = { + AdBlocker: "ad-blocker", + CaptchaSolver: "captcha-solver", +} as const; +export type Extensions = (typeof Extensions)[keyof typeof Extensions]; diff --git a/skyvern-ts/client/src/api/types/ForLoopBlockLoopBlocksItem.ts b/skyvern-ts/client/src/api/types/ForLoopBlockLoopBlocksItem.ts index 0fc7d079..b1fb205e 100644 --- a/skyvern-ts/client/src/api/types/ForLoopBlockLoopBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/ForLoopBlockLoopBlocksItem.ts @@ -18,6 +18,7 @@ export type ForLoopBlockLoopBlocksItem = | Skyvern.ForLoopBlockLoopBlocksItem.Login | Skyvern.ForLoopBlockLoopBlocksItem.Navigation | Skyvern.ForLoopBlockLoopBlocksItem.PdfParser + | Skyvern.ForLoopBlockLoopBlocksItem.PrintPage | Skyvern.ForLoopBlockLoopBlocksItem.SendEmail | Skyvern.ForLoopBlockLoopBlocksItem.Task | Skyvern.ForLoopBlockLoopBlocksItem.TaskV2 @@ -87,6 +88,10 @@ export namespace ForLoopBlockLoopBlocksItem { block_type: "pdf_parser"; } + export interface PrintPage extends Skyvern.PrintPageBlock { + block_type: "print_page"; + } + export interface SendEmail extends Skyvern.SendEmailBlock { block_type: "send_email"; } diff --git a/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts b/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts index d579f168..e8915d16 100644 --- a/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/ForLoopBlockYamlLoopBlocksItem.ts @@ -24,7 +24,8 @@ export type ForLoopBlockYamlLoopBlocksItem = | Skyvern.ForLoopBlockYamlLoopBlocksItem.PdfParser | Skyvern.ForLoopBlockYamlLoopBlocksItem.TaskV2 | Skyvern.ForLoopBlockYamlLoopBlocksItem.HttpRequest - | Skyvern.ForLoopBlockYamlLoopBlocksItem.Conditional; + | Skyvern.ForLoopBlockYamlLoopBlocksItem.Conditional + | Skyvern.ForLoopBlockYamlLoopBlocksItem.PrintPage; export namespace ForLoopBlockYamlLoopBlocksItem { export interface Task extends Skyvern.TaskBlockYaml { @@ -114,4 +115,8 @@ export namespace ForLoopBlockYamlLoopBlocksItem { export interface Conditional extends Skyvern.ConditionalBlockYaml { block_type: "conditional"; } + + export interface PrintPage extends Skyvern.PrintPageBlockYaml { + block_type: "print_page"; + } } diff --git a/skyvern-ts/client/src/api/types/HttpRequestBlock.ts b/skyvern-ts/client/src/api/types/HttpRequestBlock.ts index fb3bf909..944efb36 100644 --- a/skyvern-ts/client/src/api/types/HttpRequestBlock.ts +++ b/skyvern-ts/client/src/api/types/HttpRequestBlock.ts @@ -19,5 +19,7 @@ export interface HttpRequestBlock { files?: Record; timeout?: number; follow_redirects?: boolean; + download_filename?: string; + save_response_as_file?: boolean; parameters?: Skyvern.HttpRequestBlockParametersItem[]; } diff --git a/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts b/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts index 243910c2..86d30913 100644 --- a/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts +++ b/skyvern-ts/client/src/api/types/HttpRequestBlockYaml.ts @@ -15,5 +15,7 @@ export interface HttpRequestBlockYaml { files?: Record; timeout?: number; follow_redirects?: boolean; + download_filename?: string; + save_response_as_file?: boolean; parameter_keys?: string[]; } diff --git a/skyvern-ts/client/src/api/types/InputOrSelectContext.ts b/skyvern-ts/client/src/api/types/InputOrSelectContext.ts index ff2e27a8..377247fc 100644 --- a/skyvern-ts/client/src/api/types/InputOrSelectContext.ts +++ b/skyvern-ts/client/src/api/types/InputOrSelectContext.ts @@ -8,4 +8,5 @@ export interface InputOrSelectContext { is_location_input?: boolean; is_date_related?: boolean; date_format?: string; + is_text_captcha?: boolean; } diff --git a/skyvern-ts/client/src/api/types/PdfFormat.ts b/skyvern-ts/client/src/api/types/PdfFormat.ts new file mode 100644 index 00000000..358ea721 --- /dev/null +++ b/skyvern-ts/client/src/api/types/PdfFormat.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +export const PdfFormat = { + A4: "A4", + Letter: "Letter", + Legal: "Legal", + Tabloid: "Tabloid", +} as const; +export type PdfFormat = (typeof PdfFormat)[keyof typeof PdfFormat]; diff --git a/skyvern-ts/client/src/api/types/PersistentBrowserType.ts b/skyvern-ts/client/src/api/types/PersistentBrowserType.ts new file mode 100644 index 00000000..b9457eaf --- /dev/null +++ b/skyvern-ts/client/src/api/types/PersistentBrowserType.ts @@ -0,0 +1,7 @@ +// This file was auto-generated by Fern from our API Definition. + +export const PersistentBrowserType = { + Msedge: "msedge", + Chrome: "chrome", +} as const; +export type PersistentBrowserType = (typeof PersistentBrowserType)[keyof typeof PersistentBrowserType]; diff --git a/skyvern-ts/client/src/api/types/PlanTier.ts b/skyvern-ts/client/src/api/types/PlanTier.ts new file mode 100644 index 00000000..f971ca6b --- /dev/null +++ b/skyvern-ts/client/src/api/types/PlanTier.ts @@ -0,0 +1,9 @@ +// This file was auto-generated by Fern from our API Definition. + +/** Self-serve subscription tiers. Enterprise customers use manual billing (bypass). */ +export const PlanTier = { + Free: "free", + Hobby: "hobby", + Pro: "pro", +} as const; +export type PlanTier = (typeof PlanTier)[keyof typeof PlanTier]; diff --git a/skyvern-ts/client/src/api/types/PortalSessionResponse.ts b/skyvern-ts/client/src/api/types/PortalSessionResponse.ts new file mode 100644 index 00000000..75f54940 --- /dev/null +++ b/skyvern-ts/client/src/api/types/PortalSessionResponse.ts @@ -0,0 +1,5 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface PortalSessionResponse { + url: string; +} diff --git a/skyvern-ts/client/src/api/types/PrintPageBlock.ts b/skyvern-ts/client/src/api/types/PrintPageBlock.ts new file mode 100644 index 00000000..2babe623 --- /dev/null +++ b/skyvern-ts/client/src/api/types/PrintPageBlock.ts @@ -0,0 +1,21 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export interface PrintPageBlock { + /** Author-facing identifier for a block; unique within a workflow. */ + label: string; + /** Optional pointer to the next block label when constructing a DAG. Defaults to sequential order when omitted. */ + next_block_label?: string; + output_parameter: Skyvern.OutputParameter; + continue_on_failure?: boolean; + model?: Record; + disable_cache?: boolean; + next_loop_on_failure?: boolean; + include_timestamp?: boolean; + custom_filename?: string; + format?: string; + landscape?: boolean; + print_background?: boolean; + parameters?: Skyvern.PrintPageBlockParametersItem[]; +} diff --git a/skyvern-ts/client/src/api/types/PrintPageBlockParametersItem.ts b/skyvern-ts/client/src/api/types/PrintPageBlockParametersItem.ts new file mode 100644 index 00000000..ec8dfdc8 --- /dev/null +++ b/skyvern-ts/client/src/api/types/PrintPageBlockParametersItem.ts @@ -0,0 +1,62 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export type PrintPageBlockParametersItem = + | Skyvern.PrintPageBlockParametersItem.AwsSecret + | Skyvern.PrintPageBlockParametersItem.AzureSecret + | Skyvern.PrintPageBlockParametersItem.AzureVaultCredential + | Skyvern.PrintPageBlockParametersItem.BitwardenCreditCardData + | Skyvern.PrintPageBlockParametersItem.BitwardenLoginCredential + | Skyvern.PrintPageBlockParametersItem.BitwardenSensitiveInformation + | Skyvern.PrintPageBlockParametersItem.Context + | Skyvern.PrintPageBlockParametersItem.Credential + | Skyvern.PrintPageBlockParametersItem.Onepassword + | Skyvern.PrintPageBlockParametersItem.Output + | Skyvern.PrintPageBlockParametersItem.Workflow; + +export namespace PrintPageBlockParametersItem { + export interface AwsSecret extends Skyvern.AwsSecretParameter { + parameter_type: "aws_secret"; + } + + export interface AzureSecret extends Skyvern.AzureSecretParameter { + parameter_type: "azure_secret"; + } + + export interface AzureVaultCredential extends Skyvern.AzureVaultCredentialParameter { + parameter_type: "azure_vault_credential"; + } + + export interface BitwardenCreditCardData extends Skyvern.BitwardenCreditCardDataParameter { + parameter_type: "bitwarden_credit_card_data"; + } + + export interface BitwardenLoginCredential extends Skyvern.BitwardenLoginCredentialParameter { + parameter_type: "bitwarden_login_credential"; + } + + export interface BitwardenSensitiveInformation extends Skyvern.BitwardenSensitiveInformationParameter { + parameter_type: "bitwarden_sensitive_information"; + } + + export interface Context extends Skyvern.ContextParameter { + parameter_type: "context"; + } + + export interface Credential extends Skyvern.CredentialParameter { + parameter_type: "credential"; + } + + export interface Onepassword extends Skyvern.OnePasswordCredentialParameter { + parameter_type: "onepassword"; + } + + export interface Output extends Skyvern.OutputParameter { + parameter_type: "output"; + } + + export interface Workflow extends Skyvern.WorkflowParameter { + parameter_type: "workflow"; + } +} diff --git a/skyvern-ts/client/src/api/types/PrintPageBlockYaml.ts b/skyvern-ts/client/src/api/types/PrintPageBlockYaml.ts new file mode 100644 index 00000000..d19fdcaf --- /dev/null +++ b/skyvern-ts/client/src/api/types/PrintPageBlockYaml.ts @@ -0,0 +1,19 @@ +// This file was auto-generated by Fern from our API Definition. + +import type * as Skyvern from "../index.js"; + +export interface PrintPageBlockYaml { + /** 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; + include_timestamp?: boolean; + custom_filename?: string; + format?: Skyvern.PdfFormat; + landscape?: boolean; + print_background?: boolean; + parameter_keys?: string[]; +} diff --git a/skyvern-ts/client/src/api/types/ProxyLocation.ts b/skyvern-ts/client/src/api/types/ProxyLocation.ts index 5af753ec..63ed81a1 100644 --- a/skyvern-ts/client/src/api/types/ProxyLocation.ts +++ b/skyvern-ts/client/src/api/types/ProxyLocation.ts @@ -24,6 +24,7 @@ export const ProxyLocation = { ResidentialMx: "RESIDENTIAL_MX", ResidentialIt: "RESIDENTIAL_IT", ResidentialNl: "RESIDENTIAL_NL", + ResidentialPh: "RESIDENTIAL_PH", ResidentialIsp: "RESIDENTIAL_ISP", None: "NONE", } as const; diff --git a/skyvern-ts/client/src/api/types/TaskRunRequest.ts b/skyvern-ts/client/src/api/types/TaskRunRequest.ts index d2d481ba..ab5f743b 100644 --- a/skyvern-ts/client/src/api/types/TaskRunRequest.ts +++ b/skyvern-ts/client/src/api/types/TaskRunRequest.ts @@ -30,15 +30,16 @@ export interface TaskRunRequest { * - RESIDENTIAL_FR: France * - RESIDENTIAL_DE: Germany * - RESIDENTIAL_NZ: New Zealand + * - RESIDENTIAL_PH: Philippines * - RESIDENTIAL_ZA: South Africa * - RESIDENTIAL_AR: Argentina * - RESIDENTIAL_AU: Australia * - RESIDENTIAL_ISP: ISP proxy - * - US-CA: California - * - US-NY: New York - * - US-TX: Texas - * - US-FL: Florida - * - US-WA: Washington + * - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + * - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + * - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + * - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + * - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) * - NONE: No proxy * Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} */ @@ -102,15 +103,16 @@ export namespace TaskRunRequest { * - RESIDENTIAL_FR: France * - RESIDENTIAL_DE: Germany * - RESIDENTIAL_NZ: New Zealand + * - RESIDENTIAL_PH: Philippines * - RESIDENTIAL_ZA: South Africa * - RESIDENTIAL_AR: Argentina * - RESIDENTIAL_AU: Australia * - RESIDENTIAL_ISP: ISP proxy - * - US-CA: California - * - US-NY: New York - * - US-TX: Texas - * - US-FL: Florida - * - US-WA: Washington + * - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + * - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + * - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + * - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + * - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) * - NONE: No proxy * Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} */ diff --git a/skyvern-ts/client/src/api/types/TaskRunResponse.ts b/skyvern-ts/client/src/api/types/TaskRunResponse.ts index 01d37c9e..12b795a2 100644 --- a/skyvern-ts/client/src/api/types/TaskRunResponse.ts +++ b/skyvern-ts/client/src/api/types/TaskRunResponse.ts @@ -39,6 +39,8 @@ export interface TaskRunResponse { script_run?: Skyvern.ScriptRunResponse; /** The errors for the run */ errors?: Record[]; + /** Total number of steps executed in this run */ + step_count?: number; /** The original request parameters used to start this task run */ run_request?: Skyvern.TaskRunRequest; } diff --git a/skyvern-ts/client/src/api/types/TotpCode.ts b/skyvern-ts/client/src/api/types/TotpCode.ts index 0def1889..7501db33 100644 --- a/skyvern-ts/client/src/api/types/TotpCode.ts +++ b/skyvern-ts/client/src/api/types/TotpCode.ts @@ -17,6 +17,8 @@ export interface TotpCode { content: string; /** The timestamp when the TOTP code expires */ expired_at?: string; + /** Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. */ + type?: Skyvern.OtpType; /** The skyvern ID of the TOTP code. */ totp_code_id: string; /** The TOTP code extracted from the content. */ diff --git a/skyvern-ts/client/src/api/types/WorkflowDefinition.ts b/skyvern-ts/client/src/api/types/WorkflowDefinition.ts index c31961cc..24df8cd4 100644 --- a/skyvern-ts/client/src/api/types/WorkflowDefinition.ts +++ b/skyvern-ts/client/src/api/types/WorkflowDefinition.ts @@ -6,4 +6,5 @@ export interface WorkflowDefinition { version?: number; parameters: Skyvern.WorkflowDefinitionParametersItem[]; blocks: Skyvern.WorkflowDefinitionBlocksItem[]; + finally_block_label?: string; } diff --git a/skyvern-ts/client/src/api/types/WorkflowDefinitionBlocksItem.ts b/skyvern-ts/client/src/api/types/WorkflowDefinitionBlocksItem.ts index 6a68b87f..c9f8c545 100644 --- a/skyvern-ts/client/src/api/types/WorkflowDefinitionBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/WorkflowDefinitionBlocksItem.ts @@ -18,6 +18,7 @@ export type WorkflowDefinitionBlocksItem = | Skyvern.WorkflowDefinitionBlocksItem.Login | Skyvern.WorkflowDefinitionBlocksItem.Navigation | Skyvern.WorkflowDefinitionBlocksItem.PdfParser + | Skyvern.WorkflowDefinitionBlocksItem.PrintPage | Skyvern.WorkflowDefinitionBlocksItem.SendEmail | Skyvern.WorkflowDefinitionBlocksItem.Task | Skyvern.WorkflowDefinitionBlocksItem.TaskV2 @@ -87,6 +88,10 @@ export namespace WorkflowDefinitionBlocksItem { block_type: "pdf_parser"; } + export interface PrintPage extends Skyvern.PrintPageBlock { + block_type: "print_page"; + } + export interface SendEmail extends Skyvern.SendEmailBlock { block_type: "send_email"; } diff --git a/skyvern-ts/client/src/api/types/WorkflowDefinitionYaml.ts b/skyvern-ts/client/src/api/types/WorkflowDefinitionYaml.ts index fda743a6..0ac4a4e5 100644 --- a/skyvern-ts/client/src/api/types/WorkflowDefinitionYaml.ts +++ b/skyvern-ts/client/src/api/types/WorkflowDefinitionYaml.ts @@ -6,4 +6,5 @@ export interface WorkflowDefinitionYaml { version?: number; parameters: Skyvern.WorkflowDefinitionYamlParametersItem[]; blocks: Skyvern.WorkflowDefinitionYamlBlocksItem[]; + finally_block_label?: string; } diff --git a/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts b/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts index 4e637ac8..0c5cbd16 100644 --- a/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts +++ b/skyvern-ts/client/src/api/types/WorkflowDefinitionYamlBlocksItem.ts @@ -18,6 +18,7 @@ export type WorkflowDefinitionYamlBlocksItem = | Skyvern.WorkflowDefinitionYamlBlocksItem.Login | Skyvern.WorkflowDefinitionYamlBlocksItem.Navigation | Skyvern.WorkflowDefinitionYamlBlocksItem.PdfParser + | Skyvern.WorkflowDefinitionYamlBlocksItem.PrintPage | Skyvern.WorkflowDefinitionYamlBlocksItem.SendEmail | Skyvern.WorkflowDefinitionYamlBlocksItem.Task | Skyvern.WorkflowDefinitionYamlBlocksItem.TaskV2 @@ -87,6 +88,10 @@ export namespace WorkflowDefinitionYamlBlocksItem { block_type: "pdf_parser"; } + export interface PrintPage extends Skyvern.PrintPageBlockYaml { + block_type: "print_page"; + } + export interface SendEmail extends Skyvern.SendEmailBlockYaml { block_type: "send_email"; } diff --git a/skyvern-ts/client/src/api/types/WorkflowRunRequest.ts b/skyvern-ts/client/src/api/types/WorkflowRunRequest.ts index ab7a7a86..0608d5bb 100644 --- a/skyvern-ts/client/src/api/types/WorkflowRunRequest.ts +++ b/skyvern-ts/client/src/api/types/WorkflowRunRequest.ts @@ -22,15 +22,16 @@ export interface WorkflowRunRequest { * - RESIDENTIAL_FR: France * - RESIDENTIAL_DE: Germany * - RESIDENTIAL_NZ: New Zealand + * - RESIDENTIAL_PH: Philippines * - RESIDENTIAL_ZA: South Africa * - RESIDENTIAL_AR: Argentina * - RESIDENTIAL_AU: Australia * - RESIDENTIAL_ISP: ISP proxy - * - US-CA: California - * - US-NY: New York - * - US-TX: Texas - * - US-FL: Florida - * - US-WA: Washington + * - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + * - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + * - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + * - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + * - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) * - NONE: No proxy * Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} */ @@ -76,15 +77,16 @@ export namespace WorkflowRunRequest { * - RESIDENTIAL_FR: France * - RESIDENTIAL_DE: Germany * - RESIDENTIAL_NZ: New Zealand + * - RESIDENTIAL_PH: Philippines * - RESIDENTIAL_ZA: South Africa * - RESIDENTIAL_AR: Argentina * - RESIDENTIAL_AU: Australia * - RESIDENTIAL_ISP: ISP proxy - * - US-CA: California - * - US-NY: New York - * - US-TX: Texas - * - US-FL: Florida - * - US-WA: Washington + * - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + * - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + * - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + * - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + * - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) * - NONE: No proxy * Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} */ diff --git a/skyvern-ts/client/src/api/types/WorkflowRunResponse.ts b/skyvern-ts/client/src/api/types/WorkflowRunResponse.ts index 1e4a7441..db03bee8 100644 --- a/skyvern-ts/client/src/api/types/WorkflowRunResponse.ts +++ b/skyvern-ts/client/src/api/types/WorkflowRunResponse.ts @@ -39,6 +39,8 @@ export interface WorkflowRunResponse { script_run?: Skyvern.ScriptRunResponse; /** The errors for the run */ errors?: Record[]; + /** Total number of steps executed in this run */ + step_count?: number; /** Whether the workflow run was executed with agent or code */ run_with?: string; /** Whether to fallback to AI if code run fails. */ diff --git a/skyvern-ts/client/src/api/types/index.ts b/skyvern-ts/client/src/api/types/index.ts index dad9059b..e5da95b7 100644 --- a/skyvern-ts/client/src/api/types/index.ts +++ b/skyvern-ts/client/src/api/types/index.ts @@ -12,6 +12,7 @@ export * from "./AwsSecretParameterYaml.js"; export * from "./AzureSecretParameter.js"; export * from "./AzureVaultCredentialParameter.js"; export * from "./AzureVaultCredentialParameterYaml.js"; +export * from "./BillingStateResponse.js"; export * from "./BitwardenCreditCardDataParameter.js"; export * from "./BitwardenCreditCardDataParameterYaml.js"; export * from "./BitwardenLoginCredentialParameter.js"; @@ -25,6 +26,8 @@ export * from "./BranchConditionYaml.js"; export * from "./BranchCriteriaYaml.js"; export * from "./BrowserProfile.js"; export * from "./BrowserSessionResponse.js"; +export * from "./ChangeTierResponse.js"; +export * from "./CheckoutSessionResponse.js"; export * from "./ClickAction.js"; export * from "./ClickContext.js"; export * from "./CodeBlock.js"; @@ -43,6 +46,7 @@ export * from "./CredentialTypeOutput.js"; export * from "./CreditCardCredentialResponse.js"; export * from "./DownloadToS3Block.js"; export * from "./DownloadToS3BlockYaml.js"; +export * from "./Extensions.js"; export * from "./ExtractAction.js"; export * from "./ExtractionBlock.js"; export * from "./ExtractionBlockParametersItem.js"; @@ -91,8 +95,15 @@ export * from "./OtpType.js"; export * from "./OutputParameter.js"; export * from "./OutputParameterYaml.js"; export * from "./PasswordCredentialResponse.js"; +export * from "./PdfFormat.js"; export * from "./PdfParserBlock.js"; export * from "./PdfParserBlockYaml.js"; +export * from "./PersistentBrowserType.js"; +export * from "./PlanTier.js"; +export * from "./PortalSessionResponse.js"; +export * from "./PrintPageBlock.js"; +export * from "./PrintPageBlockParametersItem.js"; +export * from "./PrintPageBlockYaml.js"; export * from "./PromptAction.js"; export * from "./PromptBranchCriteria.js"; export * from "./ProxyLocation.js"; diff --git a/skyvern-ts/client/src/version.ts b/skyvern-ts/client/src/version.ts index 33d2314f..bf852646 100644 --- a/skyvern-ts/client/src/version.ts +++ b/skyvern-ts/client/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = "1.0.10"; +export const SDK_VERSION = "1.0.11"; diff --git a/skyvern-ts/client/tests/wire/main.test.ts b/skyvern-ts/client/tests/wire/main.test.ts index 9a8c48bd..0653a1a6 100644 --- a/skyvern-ts/client/tests/wire/main.test.ts +++ b/skyvern-ts/client/tests/wire/main.test.ts @@ -30,6 +30,7 @@ describe("SkyvernClient", () => { max_screenshot_scrolls: 1, script_run: { ai_fallback_triggered: true }, errors: [{ key: "value" }], + step_count: 1, run_request: { prompt: "Find the top 3 posts on Hacker News.", url: "url", @@ -101,6 +102,7 @@ describe("SkyvernClient", () => { key: "value", }, ], + step_count: 1, run_request: { prompt: "Find the top 3 posts on Hacker News.", url: "url", @@ -203,6 +205,7 @@ describe("SkyvernClient", () => { max_screenshot_scrolls: 1, script_run: { ai_fallback_triggered: true }, errors: [{ key: "value" }], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -275,6 +278,7 @@ describe("SkyvernClient", () => { key: "value", }, ], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -372,6 +376,7 @@ describe("SkyvernClient", () => { max_screenshot_scrolls: 1, script_run: { ai_fallback_triggered: true }, errors: [{ key: "value" }], + step_count: 1, run_request: { prompt: "Find the top 3 posts on Hacker News.", url: "url", @@ -431,6 +436,7 @@ describe("SkyvernClient", () => { key: "value", }, ], + step_count: 1, run_request: { prompt: "Find the top 3 posts on Hacker News.", url: "url", @@ -563,6 +569,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -634,6 +641,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -713,6 +721,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -782,6 +791,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -869,6 +879,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -935,6 +946,7 @@ describe("SkyvernClient", () => { }, }, ], + finally_block_label: "finally_block_label", }, proxy_location: "RESIDENTIAL", webhook_callback_url: "webhook_callback_url", @@ -1715,11 +1727,14 @@ describe("SkyvernClient", () => { { browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [{ url: "url" }], @@ -1744,11 +1759,14 @@ describe("SkyvernClient", () => { { browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [ @@ -1813,11 +1831,14 @@ describe("SkyvernClient", () => { const rawResponseBody = { browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [ @@ -1845,11 +1866,14 @@ describe("SkyvernClient", () => { expect(response).toEqual({ browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [ @@ -1976,11 +2000,14 @@ describe("SkyvernClient", () => { const rawResponseBody = { browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [ @@ -2007,11 +2034,14 @@ describe("SkyvernClient", () => { expect(response).toEqual({ browser_session_id: "pbs_123456", organization_id: "organization_id", + status: "status", runnable_type: "runnable_type", runnable_id: "runnable_id", timeout: 1, browser_address: "browser_address", app_url: "app_url", + extensions: ["ad-blocker"], + browser_type: "msedge", vnc_streaming_supported: true, download_path: "download_path", downloaded_files: [ @@ -2107,6 +2137,7 @@ describe("SkyvernClient", () => { source: "source", content: "Hello, your verification code is 123456", expired_at: "2024-01-15T09:30:00Z", + type: "totp", totp_code_id: "totp_code_id", code: "code", organization_id: "organization_id", @@ -2135,6 +2166,7 @@ describe("SkyvernClient", () => { source: "source", content: "Hello, your verification code is 123456", expired_at: "2024-01-15T09:30:00Z", + type: "totp", totp_code_id: "totp_code_id", code: "code", organization_id: "organization_id", @@ -2398,6 +2430,7 @@ describe("SkyvernClient", () => { max_screenshot_scrolls: 1, script_run: { ai_fallback_triggered: true }, errors: [{ key: "value" }], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -2463,6 +2496,7 @@ describe("SkyvernClient", () => { key: "value", }, ], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -2534,6 +2568,7 @@ describe("SkyvernClient", () => { max_screenshot_scrolls: 1, script_run: { ai_fallback_triggered: true }, errors: [{ key: "value" }], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -2599,6 +2634,7 @@ describe("SkyvernClient", () => { key: "value", }, ], + step_count: 1, run_with: "run_with", ai_fallback: true, run_request: { @@ -2958,4 +2994,199 @@ describe("SkyvernClient", () => { }); }).rejects.toThrow(Skyvern.UnprocessableEntityError); }); + + test("create_checkout_session_api_v1_billing_checkout_post (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { tier: "free" }; + const rawResponseBody = { id: "id", url: "url" }; + server + .mockEndpoint() + .post("/api/v1/billing/checkout") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.createCheckoutSessionApiV1BillingCheckoutPost({ + tier: "free", + }); + expect(response).toEqual({ + id: "id", + url: "url", + }); + }); + + test("create_checkout_session_api_v1_billing_checkout_post (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { tier: "free" }; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/api/v1/billing/checkout") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.createCheckoutSessionApiV1BillingCheckoutPost({ + tier: "free", + }); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("create_portal_session_api_v1_billing_portal_post (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { url: "url" }; + server + .mockEndpoint() + .post("/api/v1/billing/portal") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.createPortalSessionApiV1BillingPortalPost(); + expect(response).toEqual({ + url: "url", + }); + }); + + test("create_portal_session_api_v1_billing_portal_post (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/api/v1/billing/portal") + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.createPortalSessionApiV1BillingPortalPost(); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("get_organization_billing_api_v1_billing_state_get (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { + billing_id: "billing_id", + organization_id: "organization_id", + plan_tier: "free", + current_period_start: "2024-01-15T09:30:00Z", + current_period_end: "2024-01-15T09:30:00Z", + included_credits_this_period: 1, + credits_consumed_this_period: 1, + cached_credits_consumed_this_period: 1, + overage_enabled: true, + browser_uptime_seconds_consumed: 1, + topup_credits_total: 1, + topup_credits_used: 1, + topup_credits_remaining: 1, + credits_remaining: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }; + server + .mockEndpoint() + .get("/api/v1/billing/state") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.getOrganizationBillingApiV1BillingStateGet(); + expect(response).toEqual({ + billing_id: "billing_id", + organization_id: "organization_id", + plan_tier: "free", + current_period_start: "2024-01-15T09:30:00Z", + current_period_end: "2024-01-15T09:30:00Z", + included_credits_this_period: 1, + credits_consumed_this_period: 1, + cached_credits_consumed_this_period: 1, + overage_enabled: true, + browser_uptime_seconds_consumed: 1, + topup_credits_total: 1, + topup_credits_used: 1, + topup_credits_remaining: 1, + credits_remaining: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }); + }); + + test("get_organization_billing_api_v1_billing_state_get (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .get("/api/v1/billing/state") + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.getOrganizationBillingApiV1BillingStateGet(); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("change_tier_api_v1_billing_change_tier_post (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { tier: "free" }; + const rawResponseBody = { status: "status", tier: "tier", redirect_url: "redirect_url" }; + server + .mockEndpoint() + .post("/api/v1/billing/change-tier") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.changeTierApiV1BillingChangeTierPost({ + tier: "free", + }); + expect(response).toEqual({ + status: "status", + tier: "tier", + redirect_url: "redirect_url", + }); + }); + + test("change_tier_api_v1_billing_change_tier_post (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { tier: "free" }; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/api/v1/billing/change-tier") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.changeTierApiV1BillingChangeTierPost({ + tier: "free", + }); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); }); diff --git a/skyvern/client/__init__.py b/skyvern/client/__init__.py index 6b25f479..ccb78846 100644 --- a/skyvern/client/__init__.py +++ b/skyvern/client/__init__.py @@ -34,6 +34,7 @@ if typing.TYPE_CHECKING: AzureSecretParameter, AzureVaultCredentialParameter, AzureVaultCredentialParameterYaml, + BillingStateResponse, BitwardenCreditCardDataParameter, BitwardenCreditCardDataParameterYaml, BitwardenLoginCredentialParameter, @@ -50,6 +51,8 @@ if typing.TYPE_CHECKING: BranchCriteriaYamlCriteriaType, BrowserProfile, BrowserSessionResponse, + ChangeTierResponse, + CheckoutSessionResponse, ClickAction, ClickActionData, ClickContext, @@ -94,6 +97,7 @@ if typing.TYPE_CHECKING: CreditCardCredentialResponse, DownloadToS3Block, DownloadToS3BlockYaml, + Extensions, ExtractAction, ExtractActionData, ExtractActionExtractSchema, @@ -154,6 +158,7 @@ if typing.TYPE_CHECKING: ForLoopBlockLoopBlocksItem_Login, ForLoopBlockLoopBlocksItem_Navigation, ForLoopBlockLoopBlocksItem_PdfParser, + ForLoopBlockLoopBlocksItem_PrintPage, ForLoopBlockLoopBlocksItem_SendEmail, ForLoopBlockLoopBlocksItem_Task, ForLoopBlockLoopBlocksItem_TaskV2, @@ -190,6 +195,7 @@ if typing.TYPE_CHECKING: ForLoopBlockYamlLoopBlocksItem_Login, ForLoopBlockYamlLoopBlocksItem_Navigation, ForLoopBlockYamlLoopBlocksItem_PdfParser, + ForLoopBlockYamlLoopBlocksItem_PrintPage, ForLoopBlockYamlLoopBlocksItem_SendEmail, ForLoopBlockYamlLoopBlocksItem_Task, ForLoopBlockYamlLoopBlocksItem_TaskV2, @@ -278,8 +284,26 @@ if typing.TYPE_CHECKING: OutputParameter, OutputParameterYaml, PasswordCredentialResponse, + PdfFormat, PdfParserBlock, PdfParserBlockYaml, + PersistentBrowserType, + PlanTier, + PortalSessionResponse, + PrintPageBlock, + PrintPageBlockParametersItem, + PrintPageBlockParametersItem_AwsSecret, + PrintPageBlockParametersItem_AzureSecret, + PrintPageBlockParametersItem_AzureVaultCredential, + PrintPageBlockParametersItem_BitwardenCreditCardData, + PrintPageBlockParametersItem_BitwardenLoginCredential, + PrintPageBlockParametersItem_BitwardenSensitiveInformation, + PrintPageBlockParametersItem_Context, + PrintPageBlockParametersItem_Credential, + PrintPageBlockParametersItem_Onepassword, + PrintPageBlockParametersItem_Output, + PrintPageBlockParametersItem_Workflow, + PrintPageBlockYaml, PromptAction, PromptBranchCriteria, ProxyLocation, @@ -424,6 +448,7 @@ if typing.TYPE_CHECKING: WorkflowDefinitionBlocksItem_Login, WorkflowDefinitionBlocksItem_Navigation, WorkflowDefinitionBlocksItem_PdfParser, + WorkflowDefinitionBlocksItem_PrintPage, WorkflowDefinitionBlocksItem_SendEmail, WorkflowDefinitionBlocksItem_Task, WorkflowDefinitionBlocksItem_TaskV2, @@ -460,6 +485,7 @@ if typing.TYPE_CHECKING: WorkflowDefinitionYamlBlocksItem_Login, WorkflowDefinitionYamlBlocksItem_Navigation, WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_PrintPage, WorkflowDefinitionYamlBlocksItem_SendEmail, WorkflowDefinitionYamlBlocksItem_Task, WorkflowDefinitionYamlBlocksItem_TaskV2, @@ -532,6 +558,7 @@ _dynamic_imports: typing.Dict[str, str] = { "AzureVaultCredentialParameter": ".types", "AzureVaultCredentialParameterYaml": ".types", "BadRequestError": ".errors", + "BillingStateResponse": ".types", "BitwardenCreditCardDataParameter": ".types", "BitwardenCreditCardDataParameterYaml": ".types", "BitwardenLoginCredentialParameter": ".types", @@ -548,6 +575,8 @@ _dynamic_imports: typing.Dict[str, str] = { "BranchCriteriaYamlCriteriaType": ".types", "BrowserProfile": ".types", "BrowserSessionResponse": ".types", + "ChangeTierResponse": ".types", + "CheckoutSessionResponse": ".types", "ClickAction": ".types", "ClickActionData": ".types", "ClickContext": ".types", @@ -593,6 +622,7 @@ _dynamic_imports: typing.Dict[str, str] = { "CreditCardCredentialResponse": ".types", "DownloadToS3Block": ".types", "DownloadToS3BlockYaml": ".types", + "Extensions": ".types", "ExtractAction": ".types", "ExtractActionData": ".types", "ExtractActionExtractSchema": ".types", @@ -653,6 +683,7 @@ _dynamic_imports: typing.Dict[str, str] = { "ForLoopBlockLoopBlocksItem_Login": ".types", "ForLoopBlockLoopBlocksItem_Navigation": ".types", "ForLoopBlockLoopBlocksItem_PdfParser": ".types", + "ForLoopBlockLoopBlocksItem_PrintPage": ".types", "ForLoopBlockLoopBlocksItem_SendEmail": ".types", "ForLoopBlockLoopBlocksItem_Task": ".types", "ForLoopBlockLoopBlocksItem_TaskV2": ".types", @@ -689,6 +720,7 @@ _dynamic_imports: typing.Dict[str, str] = { "ForLoopBlockYamlLoopBlocksItem_Login": ".types", "ForLoopBlockYamlLoopBlocksItem_Navigation": ".types", "ForLoopBlockYamlLoopBlocksItem_PdfParser": ".types", + "ForLoopBlockYamlLoopBlocksItem_PrintPage": ".types", "ForLoopBlockYamlLoopBlocksItem_SendEmail": ".types", "ForLoopBlockYamlLoopBlocksItem_Task": ".types", "ForLoopBlockYamlLoopBlocksItem_TaskV2": ".types", @@ -779,8 +811,26 @@ _dynamic_imports: typing.Dict[str, str] = { "OutputParameter": ".types", "OutputParameterYaml": ".types", "PasswordCredentialResponse": ".types", + "PdfFormat": ".types", "PdfParserBlock": ".types", "PdfParserBlockYaml": ".types", + "PersistentBrowserType": ".types", + "PlanTier": ".types", + "PortalSessionResponse": ".types", + "PrintPageBlock": ".types", + "PrintPageBlockParametersItem": ".types", + "PrintPageBlockParametersItem_AwsSecret": ".types", + "PrintPageBlockParametersItem_AzureSecret": ".types", + "PrintPageBlockParametersItem_AzureVaultCredential": ".types", + "PrintPageBlockParametersItem_BitwardenCreditCardData": ".types", + "PrintPageBlockParametersItem_BitwardenLoginCredential": ".types", + "PrintPageBlockParametersItem_BitwardenSensitiveInformation": ".types", + "PrintPageBlockParametersItem_Context": ".types", + "PrintPageBlockParametersItem_Credential": ".types", + "PrintPageBlockParametersItem_Onepassword": ".types", + "PrintPageBlockParametersItem_Output": ".types", + "PrintPageBlockParametersItem_Workflow": ".types", + "PrintPageBlockYaml": ".types", "PromptAction": ".types", "PromptBranchCriteria": ".types", "ProxyLocation": ".types", @@ -928,6 +978,7 @@ _dynamic_imports: typing.Dict[str, str] = { "WorkflowDefinitionBlocksItem_Login": ".types", "WorkflowDefinitionBlocksItem_Navigation": ".types", "WorkflowDefinitionBlocksItem_PdfParser": ".types", + "WorkflowDefinitionBlocksItem_PrintPage": ".types", "WorkflowDefinitionBlocksItem_SendEmail": ".types", "WorkflowDefinitionBlocksItem_Task": ".types", "WorkflowDefinitionBlocksItem_TaskV2": ".types", @@ -964,6 +1015,7 @@ _dynamic_imports: typing.Dict[str, str] = { "WorkflowDefinitionYamlBlocksItem_Login": ".types", "WorkflowDefinitionYamlBlocksItem_Navigation": ".types", "WorkflowDefinitionYamlBlocksItem_PdfParser": ".types", + "WorkflowDefinitionYamlBlocksItem_PrintPage": ".types", "WorkflowDefinitionYamlBlocksItem_SendEmail": ".types", "WorkflowDefinitionYamlBlocksItem_Task": ".types", "WorkflowDefinitionYamlBlocksItem_TaskV2": ".types", @@ -1056,6 +1108,7 @@ __all__ = [ "AzureVaultCredentialParameter", "AzureVaultCredentialParameterYaml", "BadRequestError", + "BillingStateResponse", "BitwardenCreditCardDataParameter", "BitwardenCreditCardDataParameterYaml", "BitwardenLoginCredentialParameter", @@ -1072,6 +1125,8 @@ __all__ = [ "BranchCriteriaYamlCriteriaType", "BrowserProfile", "BrowserSessionResponse", + "ChangeTierResponse", + "CheckoutSessionResponse", "ClickAction", "ClickActionData", "ClickContext", @@ -1117,6 +1172,7 @@ __all__ = [ "CreditCardCredentialResponse", "DownloadToS3Block", "DownloadToS3BlockYaml", + "Extensions", "ExtractAction", "ExtractActionData", "ExtractActionExtractSchema", @@ -1177,6 +1233,7 @@ __all__ = [ "ForLoopBlockLoopBlocksItem_Login", "ForLoopBlockLoopBlocksItem_Navigation", "ForLoopBlockLoopBlocksItem_PdfParser", + "ForLoopBlockLoopBlocksItem_PrintPage", "ForLoopBlockLoopBlocksItem_SendEmail", "ForLoopBlockLoopBlocksItem_Task", "ForLoopBlockLoopBlocksItem_TaskV2", @@ -1213,6 +1270,7 @@ __all__ = [ "ForLoopBlockYamlLoopBlocksItem_Login", "ForLoopBlockYamlLoopBlocksItem_Navigation", "ForLoopBlockYamlLoopBlocksItem_PdfParser", + "ForLoopBlockYamlLoopBlocksItem_PrintPage", "ForLoopBlockYamlLoopBlocksItem_SendEmail", "ForLoopBlockYamlLoopBlocksItem_Task", "ForLoopBlockYamlLoopBlocksItem_TaskV2", @@ -1303,8 +1361,26 @@ __all__ = [ "OutputParameter", "OutputParameterYaml", "PasswordCredentialResponse", + "PdfFormat", "PdfParserBlock", "PdfParserBlockYaml", + "PersistentBrowserType", + "PlanTier", + "PortalSessionResponse", + "PrintPageBlock", + "PrintPageBlockParametersItem", + "PrintPageBlockParametersItem_AwsSecret", + "PrintPageBlockParametersItem_AzureSecret", + "PrintPageBlockParametersItem_AzureVaultCredential", + "PrintPageBlockParametersItem_BitwardenCreditCardData", + "PrintPageBlockParametersItem_BitwardenLoginCredential", + "PrintPageBlockParametersItem_BitwardenSensitiveInformation", + "PrintPageBlockParametersItem_Context", + "PrintPageBlockParametersItem_Credential", + "PrintPageBlockParametersItem_Onepassword", + "PrintPageBlockParametersItem_Output", + "PrintPageBlockParametersItem_Workflow", + "PrintPageBlockYaml", "PromptAction", "PromptBranchCriteria", "ProxyLocation", @@ -1452,6 +1528,7 @@ __all__ = [ "WorkflowDefinitionBlocksItem_Login", "WorkflowDefinitionBlocksItem_Navigation", "WorkflowDefinitionBlocksItem_PdfParser", + "WorkflowDefinitionBlocksItem_PrintPage", "WorkflowDefinitionBlocksItem_SendEmail", "WorkflowDefinitionBlocksItem_Task", "WorkflowDefinitionBlocksItem_TaskV2", @@ -1488,6 +1565,7 @@ __all__ = [ "WorkflowDefinitionYamlBlocksItem_Login", "WorkflowDefinitionYamlBlocksItem_Navigation", "WorkflowDefinitionYamlBlocksItem_PdfParser", + "WorkflowDefinitionYamlBlocksItem_PrintPage", "WorkflowDefinitionYamlBlocksItem_SendEmail", "WorkflowDefinitionYamlBlocksItem_Task", "WorkflowDefinitionYamlBlocksItem_TaskV2", diff --git a/skyvern/client/client.py b/skyvern/client/client.py index cfed952d..121c141f 100644 --- a/skyvern/client/client.py +++ b/skyvern/client/client.py @@ -13,12 +13,20 @@ from .environment import SkyvernEnvironment from .raw_client import AsyncRawSkyvern, RawSkyvern from .types.artifact import Artifact from .types.artifact_type import ArtifactType +from .types.billing_state_response import BillingStateResponse from .types.browser_profile import BrowserProfile from .types.browser_session_response import BrowserSessionResponse +from .types.change_tier_response import ChangeTierResponse +from .types.checkout_session_response import CheckoutSessionResponse from .types.create_credential_request_credential import CreateCredentialRequestCredential from .types.create_script_response import CreateScriptResponse from .types.credential_response import CredentialResponse +from .types.extensions import Extensions from .types.get_run_response import GetRunResponse +from .types.otp_type import OtpType +from .types.persistent_browser_type import PersistentBrowserType +from .types.plan_tier import PlanTier +from .types.portal_session_response import PortalSessionResponse from .types.proxy_location import ProxyLocation from .types.retry_run_webhook_request import RetryRunWebhookRequest from .types.run_engine import RunEngine @@ -185,15 +193,16 @@ class Skyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -344,15 +353,16 @@ class Skyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -1079,6 +1089,8 @@ class Skyvern: *, timeout: typing.Optional[int] = OMIT, proxy_location: typing.Optional[ProxyLocation] = OMIT, + extensions: typing.Optional[typing.Sequence[Extensions]] = OMIT, + browser_type: typing.Optional[PersistentBrowserType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BrowserSessionResponse: """ @@ -1103,17 +1115,24 @@ class Skyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy + extensions : typing.Optional[typing.Sequence[Extensions]] + A list of extensions to install in the browser session. + + browser_type : typing.Optional[PersistentBrowserType] + The type of browser to use for the session. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1132,7 +1151,11 @@ class Skyvern: client.create_browser_session() """ _response = self._raw_client.create_browser_session( - timeout=timeout, proxy_location=proxy_location, request_options=request_options + timeout=timeout, + proxy_location=proxy_location, + extensions=extensions, + browser_type=browser_type, + request_options=request_options, ) return _response.data @@ -1212,6 +1235,7 @@ class Skyvern: workflow_run_id: typing.Optional[str] = OMIT, source: typing.Optional[str] = OMIT, expired_at: typing.Optional[dt.datetime] = OMIT, + type: typing.Optional[OtpType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> TotpCode: """ @@ -1240,6 +1264,9 @@ class Skyvern: expired_at : typing.Optional[dt.datetime] The timestamp when the TOTP code expires + type : typing.Optional[OtpType] + Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1268,6 +1295,7 @@ class Skyvern: workflow_run_id=workflow_run_id, source=source, expired_at=expired_at, + type=type, request_options=request_options, ) return _response.data @@ -1893,6 +1921,144 @@ class Skyvern: ) return _response.data + def create_checkout_session_api_v1billing_checkout_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> CheckoutSessionResponse: + """ + Create a Stripe Checkout Session for subscribing to a tier. + + Frontend should redirect the user to the returned URL. + After successful checkout, Stripe will send a webhook that we handle + to store the subscription and initialize billing state. + + Returns 400 if org already has an active subscription (use portal instead). + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + CheckoutSessionResponse + Successful Response + + Examples + -------- + from skyvern import Skyvern + + client = Skyvern( + api_key="YOUR_API_KEY", + ) + client.create_checkout_session_api_v1billing_checkout_post( + tier="free", + ) + """ + _response = self._raw_client.create_checkout_session_api_v1billing_checkout_post( + tier=tier, request_options=request_options + ) + return _response.data + + def create_portal_session_api_v1billing_portal_post( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> PortalSessionResponse: + """ + Create a Stripe Customer Portal session for managing subscription. + + Frontend should redirect the user to the returned URL. + The portal allows users to: + - Update payment methods + - Upgrade/downgrade plans + - Cancel subscription + - View invoices + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + PortalSessionResponse + Successful Response + + Examples + -------- + from skyvern import Skyvern + + client = Skyvern( + api_key="YOUR_API_KEY", + ) + client.create_portal_session_api_v1billing_portal_post() + """ + _response = self._raw_client.create_portal_session_api_v1billing_portal_post(request_options=request_options) + return _response.data + + def get_organization_billing_api_v1billing_state_get( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> typing.Optional[BillingStateResponse]: + """ + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Optional[BillingStateResponse] + Successful Response + + Examples + -------- + from skyvern import Skyvern + + client = Skyvern( + api_key="YOUR_API_KEY", + ) + client.get_organization_billing_api_v1billing_state_get() + """ + _response = self._raw_client.get_organization_billing_api_v1billing_state_get(request_options=request_options) + return _response.data + + def change_tier_api_v1billing_change_tier_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> ChangeTierResponse: + """ + Redirect to Stripe Portal for tier changes. + Portal handles proration based on configured settings: + - Upgrades: Immediate proration charge + - Downgrades: Apply at end of billing period + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ChangeTierResponse + Successful Response + + Examples + -------- + from skyvern import Skyvern + + client = Skyvern( + api_key="YOUR_API_KEY", + ) + client.change_tier_api_v1billing_change_tier_post( + tier="free", + ) + """ + _response = self._raw_client.change_tier_api_v1billing_change_tier_post( + tier=tier, request_options=request_options + ) + return _response.data + @property def scripts(self): if self._scripts is None: @@ -2041,15 +2207,16 @@ class AsyncSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -2208,15 +2375,16 @@ class AsyncSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -3081,6 +3249,8 @@ class AsyncSkyvern: *, timeout: typing.Optional[int] = OMIT, proxy_location: typing.Optional[ProxyLocation] = OMIT, + extensions: typing.Optional[typing.Sequence[Extensions]] = OMIT, + browser_type: typing.Optional[PersistentBrowserType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> BrowserSessionResponse: """ @@ -3105,17 +3275,24 @@ class AsyncSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy + extensions : typing.Optional[typing.Sequence[Extensions]] + A list of extensions to install in the browser session. + + browser_type : typing.Optional[PersistentBrowserType] + The type of browser to use for the session. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -3142,7 +3319,11 @@ class AsyncSkyvern: asyncio.run(main()) """ _response = await self._raw_client.create_browser_session( - timeout=timeout, proxy_location=proxy_location, request_options=request_options + timeout=timeout, + proxy_location=proxy_location, + extensions=extensions, + browser_type=browser_type, + request_options=request_options, ) return _response.data @@ -3238,6 +3419,7 @@ class AsyncSkyvern: workflow_run_id: typing.Optional[str] = OMIT, source: typing.Optional[str] = OMIT, expired_at: typing.Optional[dt.datetime] = OMIT, + type: typing.Optional[OtpType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> TotpCode: """ @@ -3266,6 +3448,9 @@ class AsyncSkyvern: expired_at : typing.Optional[dt.datetime] The timestamp when the TOTP code expires + type : typing.Optional[OtpType] + Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -3302,6 +3487,7 @@ class AsyncSkyvern: workflow_run_id=workflow_run_id, source=source, expired_at=expired_at, + type=type, request_options=request_options, ) return _response.data @@ -4019,6 +4205,180 @@ class AsyncSkyvern: ) return _response.data + async def create_checkout_session_api_v1billing_checkout_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> CheckoutSessionResponse: + """ + Create a Stripe Checkout Session for subscribing to a tier. + + Frontend should redirect the user to the returned URL. + After successful checkout, Stripe will send a webhook that we handle + to store the subscription and initialize billing state. + + Returns 400 if org already has an active subscription (use portal instead). + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + CheckoutSessionResponse + Successful Response + + Examples + -------- + import asyncio + + from skyvern import AsyncSkyvern + + client = AsyncSkyvern( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.create_checkout_session_api_v1billing_checkout_post( + tier="free", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.create_checkout_session_api_v1billing_checkout_post( + tier=tier, request_options=request_options + ) + return _response.data + + async def create_portal_session_api_v1billing_portal_post( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> PortalSessionResponse: + """ + Create a Stripe Customer Portal session for managing subscription. + + Frontend should redirect the user to the returned URL. + The portal allows users to: + - Update payment methods + - Upgrade/downgrade plans + - Cancel subscription + - View invoices + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + PortalSessionResponse + Successful Response + + Examples + -------- + import asyncio + + from skyvern import AsyncSkyvern + + client = AsyncSkyvern( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.create_portal_session_api_v1billing_portal_post() + + + asyncio.run(main()) + """ + _response = await self._raw_client.create_portal_session_api_v1billing_portal_post( + request_options=request_options + ) + return _response.data + + async def get_organization_billing_api_v1billing_state_get( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> typing.Optional[BillingStateResponse]: + """ + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + typing.Optional[BillingStateResponse] + Successful Response + + Examples + -------- + import asyncio + + from skyvern import AsyncSkyvern + + client = AsyncSkyvern( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.get_organization_billing_api_v1billing_state_get() + + + asyncio.run(main()) + """ + _response = await self._raw_client.get_organization_billing_api_v1billing_state_get( + request_options=request_options + ) + return _response.data + + async def change_tier_api_v1billing_change_tier_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> ChangeTierResponse: + """ + Redirect to Stripe Portal for tier changes. + Portal handles proration based on configured settings: + - Upgrades: Immediate proration charge + - Downgrades: Apply at end of billing period + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + ChangeTierResponse + Successful Response + + Examples + -------- + import asyncio + + from skyvern import AsyncSkyvern + + client = AsyncSkyvern( + api_key="YOUR_API_KEY", + ) + + + async def main() -> None: + await client.change_tier_api_v1billing_change_tier_post( + tier="free", + ) + + + asyncio.run(main()) + """ + _response = await self._raw_client.change_tier_api_v1billing_change_tier_post( + tier=tier, request_options=request_options + ) + return _response.data + @property def scripts(self): if self._scripts is None: diff --git a/skyvern/client/core/client_wrapper.py b/skyvern/client/core/client_wrapper.py index 50605e7b..e7c9dc82 100644 --- a/skyvern/client/core/client_wrapper.py +++ b/skyvern/client/core/client_wrapper.py @@ -22,10 +22,10 @@ class BaseClientWrapper: def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { - "User-Agent": "skyvern/1.0.6", + "User-Agent": "skyvern/1.0.11", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "skyvern", - "X-Fern-SDK-Version": "1.0.6", + "X-Fern-SDK-Version": "1.0.11", **(self.get_custom_headers() or {}), } if self._api_key is not None: diff --git a/skyvern/client/raw_client.py b/skyvern/client/raw_client.py index 692c7172..1bb3e52b 100644 --- a/skyvern/client/raw_client.py +++ b/skyvern/client/raw_client.py @@ -19,12 +19,20 @@ from .errors.not_found_error import NotFoundError from .errors.unprocessable_entity_error import UnprocessableEntityError from .types.artifact import Artifact from .types.artifact_type import ArtifactType +from .types.billing_state_response import BillingStateResponse from .types.browser_profile import BrowserProfile from .types.browser_session_response import BrowserSessionResponse +from .types.change_tier_response import ChangeTierResponse +from .types.checkout_session_response import CheckoutSessionResponse from .types.create_credential_request_credential import CreateCredentialRequestCredential from .types.create_script_response import CreateScriptResponse from .types.credential_response import CredentialResponse +from .types.extensions import Extensions from .types.get_run_response import GetRunResponse +from .types.otp_type import OtpType +from .types.persistent_browser_type import PersistentBrowserType +from .types.plan_tier import PlanTier +from .types.portal_session_response import PortalSessionResponse from .types.proxy_location import ProxyLocation from .types.retry_run_webhook_request import RetryRunWebhookRequest from .types.run_engine import RunEngine @@ -114,15 +122,16 @@ class RawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -308,15 +317,16 @@ class RawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -1477,6 +1487,8 @@ class RawSkyvern: *, timeout: typing.Optional[int] = OMIT, proxy_location: typing.Optional[ProxyLocation] = OMIT, + extensions: typing.Optional[typing.Sequence[Extensions]] = OMIT, + browser_type: typing.Optional[PersistentBrowserType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[BrowserSessionResponse]: """ @@ -1501,17 +1513,24 @@ class RawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy + extensions : typing.Optional[typing.Sequence[Extensions]] + A list of extensions to install in the browser session. + + browser_type : typing.Optional[PersistentBrowserType] + The type of browser to use for the session. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1526,6 +1545,8 @@ class RawSkyvern: json={ "timeout": timeout, "proxy_location": proxy_location, + "extensions": extensions, + "browser_type": browser_type, }, headers={ "content-type": "application/json", @@ -1715,6 +1736,7 @@ class RawSkyvern: workflow_run_id: typing.Optional[str] = OMIT, source: typing.Optional[str] = OMIT, expired_at: typing.Optional[dt.datetime] = OMIT, + type: typing.Optional[OtpType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[TotpCode]: """ @@ -1743,6 +1765,9 @@ class RawSkyvern: expired_at : typing.Optional[dt.datetime] The timestamp when the TOTP code expires + type : typing.Optional[OtpType] + Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -1762,6 +1787,7 @@ class RawSkyvern: "source": source, "content": content, "expired_at": expired_at, + "type": type, }, headers={ "content-type": "application/json", @@ -2636,6 +2662,228 @@ 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 create_checkout_session_api_v1billing_checkout_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[CheckoutSessionResponse]: + """ + Create a Stripe Checkout Session for subscribing to a tier. + + Frontend should redirect the user to the returned URL. + After successful checkout, Stripe will send a webhook that we handle + to store the subscription and initialize billing state. + + Returns 400 if org already has an active subscription (use portal instead). + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[CheckoutSessionResponse] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "api/v1/billing/checkout", + method="POST", + json={ + "tier": tier, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + CheckoutSessionResponse, + parse_obj_as( + type_=CheckoutSessionResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 create_portal_session_api_v1billing_portal_post( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[PortalSessionResponse]: + """ + Create a Stripe Customer Portal session for managing subscription. + + Frontend should redirect the user to the returned URL. + The portal allows users to: + - Update payment methods + - Upgrade/downgrade plans + - Cancel subscription + - View invoices + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[PortalSessionResponse] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "api/v1/billing/portal", + method="POST", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + PortalSessionResponse, + parse_obj_as( + type_=PortalSessionResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 get_organization_billing_api_v1billing_state_get( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[typing.Optional[BillingStateResponse]]: + """ + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[typing.Optional[BillingStateResponse]] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "api/v1/billing/state", + method="GET", + request_options=request_options, + ) + try: + if _response is None or not _response.text.strip(): + return HttpResponse(response=_response, data=None) + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Optional[BillingStateResponse], + parse_obj_as( + type_=typing.Optional[BillingStateResponse], # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 change_tier_api_v1billing_change_tier_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> HttpResponse[ChangeTierResponse]: + """ + Redirect to Stripe Portal for tier changes. + Portal handles proration based on configured settings: + - Upgrades: Immediate proration charge + - Downgrades: Apply at end of billing period + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + HttpResponse[ChangeTierResponse] + Successful Response + """ + _response = self._client_wrapper.httpx_client.request( + "api/v1/billing/change-tier", + method="POST", + json={ + "tier": tier, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ChangeTierResponse, + parse_obj_as( + type_=ChangeTierResponse, # type: ignore + object_=_response.json(), + ), + ) + return HttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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) + class AsyncRawSkyvern: def __init__(self, *, client_wrapper: AsyncClientWrapper): @@ -2701,15 +2949,16 @@ class AsyncRawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -2895,15 +3144,16 @@ class AsyncRawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} @@ -4064,6 +4314,8 @@ class AsyncRawSkyvern: *, timeout: typing.Optional[int] = OMIT, proxy_location: typing.Optional[ProxyLocation] = OMIT, + extensions: typing.Optional[typing.Sequence[Extensions]] = OMIT, + browser_type: typing.Optional[PersistentBrowserType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[BrowserSessionResponse]: """ @@ -4088,17 +4340,24 @@ class AsyncRawSkyvern: - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy + extensions : typing.Optional[typing.Sequence[Extensions]] + A list of extensions to install in the browser session. + + browser_type : typing.Optional[PersistentBrowserType] + The type of browser to use for the session. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -4113,6 +4372,8 @@ class AsyncRawSkyvern: json={ "timeout": timeout, "proxy_location": proxy_location, + "extensions": extensions, + "browser_type": browser_type, }, headers={ "content-type": "application/json", @@ -4302,6 +4563,7 @@ class AsyncRawSkyvern: workflow_run_id: typing.Optional[str] = OMIT, source: typing.Optional[str] = OMIT, expired_at: typing.Optional[dt.datetime] = OMIT, + type: typing.Optional[OtpType] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[TotpCode]: """ @@ -4330,6 +4592,9 @@ class AsyncRawSkyvern: expired_at : typing.Optional[dt.datetime] The timestamp when the TOTP code expires + type : typing.Optional[OtpType] + Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. + request_options : typing.Optional[RequestOptions] Request-specific configuration. @@ -4349,6 +4614,7 @@ class AsyncRawSkyvern: "source": source, "content": content, "expired_at": expired_at, + "type": type, }, headers={ "content-type": "application/json", @@ -5222,3 +5488,225 @@ class AsyncRawSkyvern: except JSONDecodeError: 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 create_checkout_session_api_v1billing_checkout_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[CheckoutSessionResponse]: + """ + Create a Stripe Checkout Session for subscribing to a tier. + + Frontend should redirect the user to the returned URL. + After successful checkout, Stripe will send a webhook that we handle + to store the subscription and initialize billing state. + + Returns 400 if org already has an active subscription (use portal instead). + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[CheckoutSessionResponse] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "api/v1/billing/checkout", + method="POST", + json={ + "tier": tier, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + CheckoutSessionResponse, + parse_obj_as( + type_=CheckoutSessionResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 create_portal_session_api_v1billing_portal_post( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[PortalSessionResponse]: + """ + Create a Stripe Customer Portal session for managing subscription. + + Frontend should redirect the user to the returned URL. + The portal allows users to: + - Update payment methods + - Upgrade/downgrade plans + - Cancel subscription + - View invoices + + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[PortalSessionResponse] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "api/v1/billing/portal", + method="POST", + request_options=request_options, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + PortalSessionResponse, + parse_obj_as( + type_=PortalSessionResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 get_organization_billing_api_v1billing_state_get( + self, *, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[typing.Optional[BillingStateResponse]]: + """ + Parameters + ---------- + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[typing.Optional[BillingStateResponse]] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "api/v1/billing/state", + method="GET", + request_options=request_options, + ) + try: + if _response is None or not _response.text.strip(): + return AsyncHttpResponse(response=_response, data=None) + if 200 <= _response.status_code < 300: + _data = typing.cast( + typing.Optional[BillingStateResponse], + parse_obj_as( + type_=typing.Optional[BillingStateResponse], # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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 change_tier_api_v1billing_change_tier_post( + self, *, tier: PlanTier, request_options: typing.Optional[RequestOptions] = None + ) -> AsyncHttpResponse[ChangeTierResponse]: + """ + Redirect to Stripe Portal for tier changes. + Portal handles proration based on configured settings: + - Upgrades: Immediate proration charge + - Downgrades: Apply at end of billing period + + Parameters + ---------- + tier : PlanTier + + request_options : typing.Optional[RequestOptions] + Request-specific configuration. + + Returns + ------- + AsyncHttpResponse[ChangeTierResponse] + Successful Response + """ + _response = await self._client_wrapper.httpx_client.request( + "api/v1/billing/change-tier", + method="POST", + json={ + "tier": tier, + }, + headers={ + "content-type": "application/json", + }, + request_options=request_options, + omit=OMIT, + ) + try: + if 200 <= _response.status_code < 300: + _data = typing.cast( + ChangeTierResponse, + parse_obj_as( + type_=ChangeTierResponse, # type: ignore + object_=_response.json(), + ), + ) + return AsyncHttpResponse(response=_response, data=_data) + if _response.status_code == 422: + raise UnprocessableEntityError( + headers=dict(_response.headers), + body=typing.cast( + typing.Optional[typing.Any], + parse_obj_as( + type_=typing.Optional[typing.Any], # type: ignore + object_=_response.json(), + ), + ), + ) + _response_json = _response.json() + except JSONDecodeError: + 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) diff --git a/skyvern/client/types/__init__.py b/skyvern/client/types/__init__.py index f18c4ed2..771a9d20 100644 --- a/skyvern/client/types/__init__.py +++ b/skyvern/client/types/__init__.py @@ -35,6 +35,7 @@ if typing.TYPE_CHECKING: from .azure_secret_parameter import AzureSecretParameter from .azure_vault_credential_parameter import AzureVaultCredentialParameter from .azure_vault_credential_parameter_yaml import AzureVaultCredentialParameterYaml + from .billing_state_response import BillingStateResponse from .bitwarden_credit_card_data_parameter import BitwardenCreditCardDataParameter from .bitwarden_credit_card_data_parameter_yaml import BitwardenCreditCardDataParameterYaml from .bitwarden_login_credential_parameter import BitwardenLoginCredentialParameter @@ -53,6 +54,8 @@ if typing.TYPE_CHECKING: from .branch_criteria_yaml_criteria_type import BranchCriteriaYamlCriteriaType from .browser_profile import BrowserProfile from .browser_session_response import BrowserSessionResponse + from .change_tier_response import ChangeTierResponse + from .checkout_session_response import CheckoutSessionResponse from .click_action import ClickAction from .click_action_data import ClickActionData from .click_context import ClickContext @@ -101,6 +104,7 @@ if typing.TYPE_CHECKING: from .credit_card_credential_response import CreditCardCredentialResponse from .download_to_s3block import DownloadToS3Block from .download_to_s3block_yaml import DownloadToS3BlockYaml + from .extensions import Extensions from .extract_action import ExtractAction from .extract_action_data import ExtractActionData from .extract_action_extract_schema import ExtractActionExtractSchema @@ -166,6 +170,7 @@ if typing.TYPE_CHECKING: ForLoopBlockLoopBlocksItem_Login, ForLoopBlockLoopBlocksItem_Navigation, ForLoopBlockLoopBlocksItem_PdfParser, + ForLoopBlockLoopBlocksItem_PrintPage, ForLoopBlockLoopBlocksItem_SendEmail, ForLoopBlockLoopBlocksItem_Task, ForLoopBlockLoopBlocksItem_TaskV2, @@ -206,6 +211,7 @@ if typing.TYPE_CHECKING: ForLoopBlockYamlLoopBlocksItem_Login, ForLoopBlockYamlLoopBlocksItem_Navigation, ForLoopBlockYamlLoopBlocksItem_PdfParser, + ForLoopBlockYamlLoopBlocksItem_PrintPage, ForLoopBlockYamlLoopBlocksItem_SendEmail, ForLoopBlockYamlLoopBlocksItem_Task, ForLoopBlockYamlLoopBlocksItem_TaskV2, @@ -305,8 +311,28 @@ if typing.TYPE_CHECKING: from .output_parameter import OutputParameter from .output_parameter_yaml import OutputParameterYaml from .password_credential_response import PasswordCredentialResponse + from .pdf_format import PdfFormat from .pdf_parser_block import PdfParserBlock from .pdf_parser_block_yaml import PdfParserBlockYaml + from .persistent_browser_type import PersistentBrowserType + from .plan_tier import PlanTier + from .portal_session_response import PortalSessionResponse + from .print_page_block import PrintPageBlock + from .print_page_block_parameters_item import ( + PrintPageBlockParametersItem, + PrintPageBlockParametersItem_AwsSecret, + PrintPageBlockParametersItem_AzureSecret, + PrintPageBlockParametersItem_AzureVaultCredential, + PrintPageBlockParametersItem_BitwardenCreditCardData, + PrintPageBlockParametersItem_BitwardenLoginCredential, + PrintPageBlockParametersItem_BitwardenSensitiveInformation, + PrintPageBlockParametersItem_Context, + PrintPageBlockParametersItem_Credential, + PrintPageBlockParametersItem_Onepassword, + PrintPageBlockParametersItem_Output, + PrintPageBlockParametersItem_Workflow, + ) + from .print_page_block_yaml import PrintPageBlockYaml from .prompt_action import PromptAction from .prompt_branch_criteria import PromptBranchCriteria from .proxy_location import ProxyLocation @@ -464,6 +490,7 @@ if typing.TYPE_CHECKING: WorkflowDefinitionBlocksItem_Login, WorkflowDefinitionBlocksItem_Navigation, WorkflowDefinitionBlocksItem_PdfParser, + WorkflowDefinitionBlocksItem_PrintPage, WorkflowDefinitionBlocksItem_SendEmail, WorkflowDefinitionBlocksItem_Task, WorkflowDefinitionBlocksItem_TaskV2, @@ -504,6 +531,7 @@ if typing.TYPE_CHECKING: WorkflowDefinitionYamlBlocksItem_Login, WorkflowDefinitionYamlBlocksItem_Navigation, WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_PrintPage, WorkflowDefinitionYamlBlocksItem_SendEmail, WorkflowDefinitionYamlBlocksItem_Task, WorkflowDefinitionYamlBlocksItem_TaskV2, @@ -571,6 +599,7 @@ _dynamic_imports: typing.Dict[str, str] = { "AzureSecretParameter": ".azure_secret_parameter", "AzureVaultCredentialParameter": ".azure_vault_credential_parameter", "AzureVaultCredentialParameterYaml": ".azure_vault_credential_parameter_yaml", + "BillingStateResponse": ".billing_state_response", "BitwardenCreditCardDataParameter": ".bitwarden_credit_card_data_parameter", "BitwardenCreditCardDataParameterYaml": ".bitwarden_credit_card_data_parameter_yaml", "BitwardenLoginCredentialParameter": ".bitwarden_login_credential_parameter", @@ -587,6 +616,8 @@ _dynamic_imports: typing.Dict[str, str] = { "BranchCriteriaYamlCriteriaType": ".branch_criteria_yaml_criteria_type", "BrowserProfile": ".browser_profile", "BrowserSessionResponse": ".browser_session_response", + "ChangeTierResponse": ".change_tier_response", + "CheckoutSessionResponse": ".checkout_session_response", "ClickAction": ".click_action", "ClickActionData": ".click_action_data", "ClickContext": ".click_context", @@ -631,6 +662,7 @@ _dynamic_imports: typing.Dict[str, str] = { "CreditCardCredentialResponse": ".credit_card_credential_response", "DownloadToS3Block": ".download_to_s3block", "DownloadToS3BlockYaml": ".download_to_s3block_yaml", + "Extensions": ".extensions", "ExtractAction": ".extract_action", "ExtractActionData": ".extract_action_data", "ExtractActionExtractSchema": ".extract_action_extract_schema", @@ -691,6 +723,7 @@ _dynamic_imports: typing.Dict[str, str] = { "ForLoopBlockLoopBlocksItem_Login": ".for_loop_block_loop_blocks_item", "ForLoopBlockLoopBlocksItem_Navigation": ".for_loop_block_loop_blocks_item", "ForLoopBlockLoopBlocksItem_PdfParser": ".for_loop_block_loop_blocks_item", + "ForLoopBlockLoopBlocksItem_PrintPage": ".for_loop_block_loop_blocks_item", "ForLoopBlockLoopBlocksItem_SendEmail": ".for_loop_block_loop_blocks_item", "ForLoopBlockLoopBlocksItem_Task": ".for_loop_block_loop_blocks_item", "ForLoopBlockLoopBlocksItem_TaskV2": ".for_loop_block_loop_blocks_item", @@ -727,6 +760,7 @@ _dynamic_imports: typing.Dict[str, str] = { "ForLoopBlockYamlLoopBlocksItem_Login": ".for_loop_block_yaml_loop_blocks_item", "ForLoopBlockYamlLoopBlocksItem_Navigation": ".for_loop_block_yaml_loop_blocks_item", "ForLoopBlockYamlLoopBlocksItem_PdfParser": ".for_loop_block_yaml_loop_blocks_item", + "ForLoopBlockYamlLoopBlocksItem_PrintPage": ".for_loop_block_yaml_loop_blocks_item", "ForLoopBlockYamlLoopBlocksItem_SendEmail": ".for_loop_block_yaml_loop_blocks_item", "ForLoopBlockYamlLoopBlocksItem_Task": ".for_loop_block_yaml_loop_blocks_item", "ForLoopBlockYamlLoopBlocksItem_TaskV2": ".for_loop_block_yaml_loop_blocks_item", @@ -815,8 +849,26 @@ _dynamic_imports: typing.Dict[str, str] = { "OutputParameter": ".output_parameter", "OutputParameterYaml": ".output_parameter_yaml", "PasswordCredentialResponse": ".password_credential_response", + "PdfFormat": ".pdf_format", "PdfParserBlock": ".pdf_parser_block", "PdfParserBlockYaml": ".pdf_parser_block_yaml", + "PersistentBrowserType": ".persistent_browser_type", + "PlanTier": ".plan_tier", + "PortalSessionResponse": ".portal_session_response", + "PrintPageBlock": ".print_page_block", + "PrintPageBlockParametersItem": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_AwsSecret": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_AzureSecret": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_AzureVaultCredential": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_BitwardenCreditCardData": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_BitwardenLoginCredential": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_BitwardenSensitiveInformation": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_Context": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_Credential": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_Onepassword": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_Output": ".print_page_block_parameters_item", + "PrintPageBlockParametersItem_Workflow": ".print_page_block_parameters_item", + "PrintPageBlockYaml": ".print_page_block_yaml", "PromptAction": ".prompt_action", "PromptBranchCriteria": ".prompt_branch_criteria", "ProxyLocation": ".proxy_location", @@ -961,6 +1013,7 @@ _dynamic_imports: typing.Dict[str, str] = { "WorkflowDefinitionBlocksItem_Login": ".workflow_definition_blocks_item", "WorkflowDefinitionBlocksItem_Navigation": ".workflow_definition_blocks_item", "WorkflowDefinitionBlocksItem_PdfParser": ".workflow_definition_blocks_item", + "WorkflowDefinitionBlocksItem_PrintPage": ".workflow_definition_blocks_item", "WorkflowDefinitionBlocksItem_SendEmail": ".workflow_definition_blocks_item", "WorkflowDefinitionBlocksItem_Task": ".workflow_definition_blocks_item", "WorkflowDefinitionBlocksItem_TaskV2": ".workflow_definition_blocks_item", @@ -997,6 +1050,7 @@ _dynamic_imports: typing.Dict[str, str] = { "WorkflowDefinitionYamlBlocksItem_Login": ".workflow_definition_yaml_blocks_item", "WorkflowDefinitionYamlBlocksItem_Navigation": ".workflow_definition_yaml_blocks_item", "WorkflowDefinitionYamlBlocksItem_PdfParser": ".workflow_definition_yaml_blocks_item", + "WorkflowDefinitionYamlBlocksItem_PrintPage": ".workflow_definition_yaml_blocks_item", "WorkflowDefinitionYamlBlocksItem_SendEmail": ".workflow_definition_yaml_blocks_item", "WorkflowDefinitionYamlBlocksItem_Task": ".workflow_definition_yaml_blocks_item", "WorkflowDefinitionYamlBlocksItem_TaskV2": ".workflow_definition_yaml_blocks_item", @@ -1085,6 +1139,7 @@ __all__ = [ "AzureSecretParameter", "AzureVaultCredentialParameter", "AzureVaultCredentialParameterYaml", + "BillingStateResponse", "BitwardenCreditCardDataParameter", "BitwardenCreditCardDataParameterYaml", "BitwardenLoginCredentialParameter", @@ -1101,6 +1156,8 @@ __all__ = [ "BranchCriteriaYamlCriteriaType", "BrowserProfile", "BrowserSessionResponse", + "ChangeTierResponse", + "CheckoutSessionResponse", "ClickAction", "ClickActionData", "ClickContext", @@ -1145,6 +1202,7 @@ __all__ = [ "CreditCardCredentialResponse", "DownloadToS3Block", "DownloadToS3BlockYaml", + "Extensions", "ExtractAction", "ExtractActionData", "ExtractActionExtractSchema", @@ -1205,6 +1263,7 @@ __all__ = [ "ForLoopBlockLoopBlocksItem_Login", "ForLoopBlockLoopBlocksItem_Navigation", "ForLoopBlockLoopBlocksItem_PdfParser", + "ForLoopBlockLoopBlocksItem_PrintPage", "ForLoopBlockLoopBlocksItem_SendEmail", "ForLoopBlockLoopBlocksItem_Task", "ForLoopBlockLoopBlocksItem_TaskV2", @@ -1241,6 +1300,7 @@ __all__ = [ "ForLoopBlockYamlLoopBlocksItem_Login", "ForLoopBlockYamlLoopBlocksItem_Navigation", "ForLoopBlockYamlLoopBlocksItem_PdfParser", + "ForLoopBlockYamlLoopBlocksItem_PrintPage", "ForLoopBlockYamlLoopBlocksItem_SendEmail", "ForLoopBlockYamlLoopBlocksItem_Task", "ForLoopBlockYamlLoopBlocksItem_TaskV2", @@ -1329,8 +1389,26 @@ __all__ = [ "OutputParameter", "OutputParameterYaml", "PasswordCredentialResponse", + "PdfFormat", "PdfParserBlock", "PdfParserBlockYaml", + "PersistentBrowserType", + "PlanTier", + "PortalSessionResponse", + "PrintPageBlock", + "PrintPageBlockParametersItem", + "PrintPageBlockParametersItem_AwsSecret", + "PrintPageBlockParametersItem_AzureSecret", + "PrintPageBlockParametersItem_AzureVaultCredential", + "PrintPageBlockParametersItem_BitwardenCreditCardData", + "PrintPageBlockParametersItem_BitwardenLoginCredential", + "PrintPageBlockParametersItem_BitwardenSensitiveInformation", + "PrintPageBlockParametersItem_Context", + "PrintPageBlockParametersItem_Credential", + "PrintPageBlockParametersItem_Onepassword", + "PrintPageBlockParametersItem_Output", + "PrintPageBlockParametersItem_Workflow", + "PrintPageBlockYaml", "PromptAction", "PromptBranchCriteria", "ProxyLocation", @@ -1475,6 +1553,7 @@ __all__ = [ "WorkflowDefinitionBlocksItem_Login", "WorkflowDefinitionBlocksItem_Navigation", "WorkflowDefinitionBlocksItem_PdfParser", + "WorkflowDefinitionBlocksItem_PrintPage", "WorkflowDefinitionBlocksItem_SendEmail", "WorkflowDefinitionBlocksItem_Task", "WorkflowDefinitionBlocksItem_TaskV2", @@ -1511,6 +1590,7 @@ __all__ = [ "WorkflowDefinitionYamlBlocksItem_Login", "WorkflowDefinitionYamlBlocksItem_Navigation", "WorkflowDefinitionYamlBlocksItem_PdfParser", + "WorkflowDefinitionYamlBlocksItem_PrintPage", "WorkflowDefinitionYamlBlocksItem_SendEmail", "WorkflowDefinitionYamlBlocksItem_Task", "WorkflowDefinitionYamlBlocksItem_TaskV2", diff --git a/skyvern/client/types/action.py b/skyvern/client/types/action.py index a014f4c3..468eefa4 100644 --- a/skyvern/client/types/action.py +++ b/skyvern/client/types/action.py @@ -32,6 +32,7 @@ class Action(UniversalBaseModel): element_id: typing.Optional[str] = None skyvern_element_hash: typing.Optional[str] = None skyvern_element_data: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = None + screenshot_artifact_id: typing.Optional[str] = None tool_call_id: typing.Optional[str] = None xpath: typing.Optional[str] = None errors: typing.Optional[typing.List[UserDefinedError]] = None @@ -39,6 +40,8 @@ class Action(UniversalBaseModel): file_name: typing.Optional[str] = None file_url: typing.Optional[str] = None download: typing.Optional[bool] = None + download_triggered: typing.Optional[bool] = None + downloaded_files: typing.Optional[typing.List[str]] = None is_upload_file_tag: typing.Optional[bool] = None text: typing.Optional[str] = None input_or_select_context: typing.Optional[InputOrSelectContext] = None diff --git a/skyvern/client/types/artifact_type.py b/skyvern/client/types/artifact_type.py index 59ef5448..1ead5fe1 100644 --- a/skyvern/client/types/artifact_type.py +++ b/skyvern/client/types/artifact_type.py @@ -30,6 +30,7 @@ ArtifactType = typing.Union[ "trace", "har", "script_file", + "pdf", ], typing.Any, ] diff --git a/skyvern/client/types/billing_state_response.py b/skyvern/client/types/billing_state_response.py new file mode 100644 index 00000000..728f45a8 --- /dev/null +++ b/skyvern/client/types/billing_state_response.py @@ -0,0 +1,36 @@ +# This file was auto-generated by Fern from our API Definition. + +import datetime as dt +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .plan_tier import PlanTier + + +class BillingStateResponse(UniversalBaseModel): + billing_id: str + organization_id: str + plan_tier: PlanTier + current_period_start: typing.Optional[dt.datetime] = None + current_period_end: typing.Optional[dt.datetime] = None + included_credits_this_period: int + credits_consumed_this_period: int + cached_credits_consumed_this_period: int + overage_enabled: bool + browser_uptime_seconds_consumed: int + topup_credits_total: int + topup_credits_used: int + topup_credits_remaining: int + credits_remaining: int + created_at: dt.datetime + modified_at: dt.datetime + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/block_type.py b/skyvern/client/types/block_type.py index 7aa23bfb..d5eb4414 100644 --- a/skyvern/client/types/block_type.py +++ b/skyvern/client/types/block_type.py @@ -26,6 +26,7 @@ BlockType = typing.Union[ "pdf_parser", "http_request", "human_interaction", + "print_page", ], typing.Any, ] diff --git a/skyvern/client/types/browser_session_response.py b/skyvern/client/types/browser_session_response.py index 6df279b7..ba8e538a 100644 --- a/skyvern/client/types/browser_session_response.py +++ b/skyvern/client/types/browser_session_response.py @@ -5,7 +5,9 @@ import typing import pydantic from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .extensions import Extensions from .file_info import FileInfo +from .persistent_browser_type import PersistentBrowserType class BrowserSessionResponse(UniversalBaseModel): @@ -23,6 +25,11 @@ class BrowserSessionResponse(UniversalBaseModel): ID of the organization that owns this session """ + status: typing.Optional[str] = pydantic.Field(default=None) + """ + Current status of the browser session + """ + runnable_type: typing.Optional[str] = pydantic.Field(default=None) """ Type of the current runnable associated with this session (workflow, task etc) @@ -48,6 +55,16 @@ class BrowserSessionResponse(UniversalBaseModel): Url for the browser session page """ + extensions: typing.Optional[typing.List[Extensions]] = pydantic.Field(default=None) + """ + A list of extensions installed in the browser session. + """ + + browser_type: typing.Optional[PersistentBrowserType] = pydantic.Field(default=None) + """ + The type of browser used for the session. + """ + vnc_streaming_supported: typing.Optional[bool] = pydantic.Field(default=None) """ Whether the browser session supports VNC streaming diff --git a/skyvern/client/types/change_tier_response.py b/skyvern/client/types/change_tier_response.py new file mode 100644 index 00000000..8f701d79 --- /dev/null +++ b/skyvern/client/types/change_tier_response.py @@ -0,0 +1,21 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class ChangeTierResponse(UniversalBaseModel): + status: str + tier: str + redirect_url: typing.Optional[str] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/checkout_session_response.py b/skyvern/client/types/checkout_session_response.py new file mode 100644 index 00000000..adcc0e8d --- /dev/null +++ b/skyvern/client/types/checkout_session_response.py @@ -0,0 +1,20 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class CheckoutSessionResponse(UniversalBaseModel): + id: str + url: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/extensions.py b/skyvern/client/types/extensions.py new file mode 100644 index 00000000..d8b4b64e --- /dev/null +++ b/skyvern/client/types/extensions.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +Extensions = typing.Union[typing.Literal["ad-blocker", "captcha-solver"], typing.Any] 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 b4507066..6deaddb6 100644 --- a/skyvern/client/types/for_loop_block_loop_blocks_item.py +++ b/skyvern/client/types/for_loop_block_loop_blocks_item.py @@ -28,6 +28,7 @@ from .login_block_parameters_item import LoginBlockParametersItem from .navigation_block_data_schema import NavigationBlockDataSchema from .navigation_block_parameters_item import NavigationBlockParametersItem from .output_parameter import OutputParameter +from .print_page_block_parameters_item import PrintPageBlockParametersItem from .run_engine import RunEngine from .task_block_data_schema import TaskBlockDataSchema from .task_block_parameters_item import TaskBlockParametersItem @@ -358,6 +359,8 @@ class ForLoopBlockLoopBlocksItem_HttpRequest(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None + download_filename: typing.Optional[str] = None + save_response_as_file: typing.Optional[bool] = None parameters: typing.Optional[typing.List[HttpRequestBlockParametersItem]] = None if IS_PYDANTIC_V2: @@ -520,6 +523,32 @@ class ForLoopBlockLoopBlocksItem_PdfParser(UniversalBaseModel): extra = pydantic.Extra.allow +class ForLoopBlockLoopBlocksItem_PrintPage(UniversalBaseModel): + block_type: typing.Literal["print_page"] = "print_page" + label: str + next_block_label: typing.Optional[str] = None + output_parameter: OutputParameter + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[str] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameters: typing.Optional[typing.List[PrintPageBlockParametersItem]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + class ForLoopBlockLoopBlocksItem_SendEmail(UniversalBaseModel): block_type: typing.Literal["send_email"] = "send_email" label: str @@ -740,6 +769,7 @@ ForLoopBlockLoopBlocksItem = typing.Union[ ForLoopBlockLoopBlocksItem_Login, ForLoopBlockLoopBlocksItem_Navigation, ForLoopBlockLoopBlocksItem_PdfParser, + ForLoopBlockLoopBlocksItem_PrintPage, ForLoopBlockLoopBlocksItem_SendEmail, ForLoopBlockLoopBlocksItem_Task, ForLoopBlockLoopBlocksItem_TaskV2, @@ -758,6 +788,7 @@ update_forward_refs(ForLoopBlockLoopBlocksItem_HttpRequest) update_forward_refs(ForLoopBlockLoopBlocksItem_HumanInteraction) update_forward_refs(ForLoopBlockLoopBlocksItem_Login) update_forward_refs(ForLoopBlockLoopBlocksItem_Navigation) +update_forward_refs(ForLoopBlockLoopBlocksItem_PrintPage) update_forward_refs(ForLoopBlockLoopBlocksItem_Task) update_forward_refs(ForLoopBlockLoopBlocksItem_TextPrompt) update_forward_refs(ForLoopBlockLoopBlocksItem_Validation) 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 ad16d4f9..a3063028 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 @@ -12,6 +12,7 @@ from .branch_condition_yaml import BranchConditionYaml from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema from .file_storage_type import FileStorageType from .file_type import FileType +from .pdf_format import PdfFormat from .run_engine import RunEngine from .task_block_yaml_data_schema import TaskBlockYamlDataSchema @@ -535,6 +536,8 @@ class ForLoopBlockYamlLoopBlocksItem_HttpRequest(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None + download_filename: typing.Optional[str] = None + save_response_as_file: typing.Optional[bool] = None parameter_keys: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: @@ -566,6 +569,30 @@ class ForLoopBlockYamlLoopBlocksItem_Conditional(UniversalBaseModel): extra = pydantic.Extra.allow +class ForLoopBlockYamlLoopBlocksItem_PrintPage(UniversalBaseModel): + block_type: typing.Literal["print_page"] = "print_page" + label: str + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[PdfFormat] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + ForLoopBlockYamlLoopBlocksItem = typing.Union[ ForLoopBlockYamlLoopBlocksItem_Task, ForLoopBlockYamlLoopBlocksItem_ForLoop, @@ -589,5 +616,6 @@ ForLoopBlockYamlLoopBlocksItem = typing.Union[ ForLoopBlockYamlLoopBlocksItem_TaskV2, ForLoopBlockYamlLoopBlocksItem_HttpRequest, ForLoopBlockYamlLoopBlocksItem_Conditional, + ForLoopBlockYamlLoopBlocksItem_PrintPage, ] update_forward_refs(ForLoopBlockYamlLoopBlocksItem_ForLoop) diff --git a/skyvern/client/types/get_run_response.py b/skyvern/client/types/get_run_response.py index 8c371918..8898a7cb 100644 --- a/skyvern/client/types/get_run_response.py +++ b/skyvern/client/types/get_run_response.py @@ -36,6 +36,7 @@ class GetRunResponse_TaskV1(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_request: typing.Optional[TaskRunRequest] = None if IS_PYDANTIC_V2: @@ -68,6 +69,7 @@ class GetRunResponse_TaskV2(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_request: typing.Optional[TaskRunRequest] = None if IS_PYDANTIC_V2: @@ -100,6 +102,7 @@ class GetRunResponse_OpenaiCua(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_request: typing.Optional[TaskRunRequest] = None if IS_PYDANTIC_V2: @@ -132,6 +135,7 @@ class GetRunResponse_AnthropicCua(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_request: typing.Optional[TaskRunRequest] = None if IS_PYDANTIC_V2: @@ -164,6 +168,7 @@ class GetRunResponse_UiTars(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_request: typing.Optional[TaskRunRequest] = None if IS_PYDANTIC_V2: @@ -196,6 +201,7 @@ class GetRunResponse_WorkflowRun(UniversalBaseModel): max_screenshot_scrolls: typing.Optional[int] = None script_run: typing.Optional[ScriptRunResponse] = None errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None + step_count: typing.Optional[int] = None run_with: typing.Optional[str] = None ai_fallback: typing.Optional[bool] = None run_request: typing.Optional[WorkflowRunRequest] = None diff --git a/skyvern/client/types/http_request_block.py b/skyvern/client/types/http_request_block.py index 8d309c4d..31925854 100644 --- a/skyvern/client/types/http_request_block.py +++ b/skyvern/client/types/http_request_block.py @@ -33,9 +33,9 @@ class HttpRequestBlock(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None - parameters: typing.Optional[typing.List[HttpRequestBlockParametersItem]] = None download_filename: typing.Optional[str] = None save_response_as_file: typing.Optional[bool] = None + parameters: typing.Optional[typing.List[HttpRequestBlockParametersItem]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/skyvern/client/types/http_request_block_yaml.py b/skyvern/client/types/http_request_block_yaml.py index 39c976c7..7d6ef8eb 100644 --- a/skyvern/client/types/http_request_block_yaml.py +++ b/skyvern/client/types/http_request_block_yaml.py @@ -27,9 +27,9 @@ class HttpRequestBlockYaml(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None - parameter_keys: typing.Optional[typing.List[str]] = None download_filename: typing.Optional[str] = None save_response_as_file: typing.Optional[bool] = None + parameter_keys: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/skyvern/client/types/input_or_select_context.py b/skyvern/client/types/input_or_select_context.py index e3a01232..641b25dd 100644 --- a/skyvern/client/types/input_or_select_context.py +++ b/skyvern/client/types/input_or_select_context.py @@ -14,6 +14,7 @@ class InputOrSelectContext(UniversalBaseModel): is_location_input: typing.Optional[bool] = None is_date_related: typing.Optional[bool] = None date_format: typing.Optional[str] = None + is_text_captcha: typing.Optional[bool] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/skyvern/client/types/pdf_format.py b/skyvern/client/types/pdf_format.py new file mode 100644 index 00000000..8fa0ec82 --- /dev/null +++ b/skyvern/client/types/pdf_format.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PdfFormat = typing.Union[typing.Literal["A4", "Letter", "Legal", "Tabloid"], typing.Any] diff --git a/skyvern/client/types/persistent_browser_type.py b/skyvern/client/types/persistent_browser_type.py new file mode 100644 index 00000000..3fec4b8b --- /dev/null +++ b/skyvern/client/types/persistent_browser_type.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PersistentBrowserType = typing.Union[typing.Literal["msedge", "chrome"], typing.Any] diff --git a/skyvern/client/types/plan_tier.py b/skyvern/client/types/plan_tier.py new file mode 100644 index 00000000..5fc54bca --- /dev/null +++ b/skyvern/client/types/plan_tier.py @@ -0,0 +1,5 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +PlanTier = typing.Union[typing.Literal["free", "hobby", "pro"], typing.Any] diff --git a/skyvern/client/types/portal_session_response.py b/skyvern/client/types/portal_session_response.py new file mode 100644 index 00000000..491e3606 --- /dev/null +++ b/skyvern/client/types/portal_session_response.py @@ -0,0 +1,19 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel + + +class PortalSessionResponse(UniversalBaseModel): + url: str + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/print_page_block.py b/skyvern/client/types/print_page_block.py new file mode 100644 index 00000000..608de8d7 --- /dev/null +++ b/skyvern/client/types/print_page_block.py @@ -0,0 +1,48 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel, update_forward_refs +from .output_parameter import OutputParameter +from .print_page_block_parameters_item import PrintPageBlockParametersItem + + +class PrintPageBlock(UniversalBaseModel): + label: str = pydantic.Field() + """ + Author-facing identifier for a block; unique within a workflow. + """ + + next_block_label: typing.Optional[str] = pydantic.Field(default=None) + """ + Optional pointer to the next block label when constructing a DAG. Defaults to sequential order when omitted. + """ + + output_parameter: OutputParameter + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[str] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameters: typing.Optional[typing.List[PrintPageBlockParametersItem]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +from .context_parameter import ContextParameter # noqa: E402, F401, I001 + +update_forward_refs(PrintPageBlock) diff --git a/skyvern/client/types/print_page_block_parameters_item.py b/skyvern/client/types/print_page_block_parameters_item.py new file mode 100644 index 00000000..4b50e99c --- /dev/null +++ b/skyvern/client/types/print_page_block_parameters_item.py @@ -0,0 +1,277 @@ +# This file was auto-generated by Fern from our API Definition. + +from __future__ import annotations + +import datetime as dt +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel, update_forward_refs +from .context_parameter_value import ContextParameterValue +from .workflow_parameter_default_value import WorkflowParameterDefaultValue +from .workflow_parameter_type import WorkflowParameterType + + +class PrintPageBlockParametersItem_AwsSecret(UniversalBaseModel): + parameter_type: typing.Literal["aws_secret"] = "aws_secret" + key: str + description: typing.Optional[str] = None + aws_secret_parameter_id: str + workflow_id: str + aws_key: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_AzureSecret(UniversalBaseModel): + parameter_type: typing.Literal["azure_secret"] = "azure_secret" + key: str + description: typing.Optional[str] = None + azure_secret_parameter_id: str + workflow_id: str + azure_key: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_AzureVaultCredential(UniversalBaseModel): + parameter_type: typing.Literal["azure_vault_credential"] = "azure_vault_credential" + key: str + description: typing.Optional[str] = None + azure_vault_credential_parameter_id: str + workflow_id: str + vault_name: str + username_key: str + password_key: str + totp_secret_key: typing.Optional[str] = None + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_BitwardenCreditCardData(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_credit_card_data"] = "bitwarden_credit_card_data" + key: str + description: typing.Optional[str] = None + bitwarden_credit_card_data_parameter_id: str + workflow_id: str + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_item_id: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_BitwardenLoginCredential(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_login_credential"] = "bitwarden_login_credential" + key: str + description: typing.Optional[str] = None + bitwarden_login_credential_parameter_id: str + workflow_id: str + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + url_parameter_key: typing.Optional[str] = None + bitwarden_collection_id: typing.Optional[str] = None + bitwarden_item_id: typing.Optional[str] = None + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_BitwardenSensitiveInformation(UniversalBaseModel): + parameter_type: typing.Literal["bitwarden_sensitive_information"] = "bitwarden_sensitive_information" + key: str + description: typing.Optional[str] = None + bitwarden_sensitive_information_parameter_id: str + workflow_id: str + bitwarden_client_id_aws_secret_key: str + bitwarden_client_secret_aws_secret_key: str + bitwarden_master_password_aws_secret_key: str + bitwarden_collection_id: str + bitwarden_identity_key: str + bitwarden_identity_fields: typing.List[str] + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_Context(UniversalBaseModel): + parameter_type: typing.Literal["context"] = "context" + key: str + description: typing.Optional[str] = None + source: "ContextParameterSource" + value: typing.Optional[ContextParameterValue] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +from .context_parameter import ContextParameter # noqa: E402, F401, I001 +from .context_parameter_source import ContextParameterSource # noqa: E402, F401, I001 + + +class PrintPageBlockParametersItem_Credential(UniversalBaseModel): + parameter_type: typing.Literal["credential"] = "credential" + key: str + description: typing.Optional[str] = None + credential_parameter_id: str + workflow_id: str + credential_id: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_Onepassword(UniversalBaseModel): + parameter_type: typing.Literal["onepassword"] = "onepassword" + key: str + description: typing.Optional[str] = None + onepassword_credential_parameter_id: str + workflow_id: str + vault_id: str + item_id: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_Output(UniversalBaseModel): + parameter_type: typing.Literal["output"] = "output" + key: str + description: typing.Optional[str] = None + output_parameter_id: str + workflow_id: str + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class PrintPageBlockParametersItem_Workflow(UniversalBaseModel): + parameter_type: typing.Literal["workflow"] = "workflow" + key: str + description: typing.Optional[str] = None + workflow_parameter_id: str + workflow_parameter_type: WorkflowParameterType + workflow_id: str + default_value: typing.Optional[WorkflowParameterDefaultValue] = None + created_at: dt.datetime + modified_at: dt.datetime + deleted_at: typing.Optional[dt.datetime] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +PrintPageBlockParametersItem = typing.Union[ + PrintPageBlockParametersItem_AwsSecret, + PrintPageBlockParametersItem_AzureSecret, + PrintPageBlockParametersItem_AzureVaultCredential, + PrintPageBlockParametersItem_BitwardenCreditCardData, + PrintPageBlockParametersItem_BitwardenLoginCredential, + PrintPageBlockParametersItem_BitwardenSensitiveInformation, + PrintPageBlockParametersItem_Context, + PrintPageBlockParametersItem_Credential, + PrintPageBlockParametersItem_Onepassword, + PrintPageBlockParametersItem_Output, + PrintPageBlockParametersItem_Workflow, +] +update_forward_refs(PrintPageBlockParametersItem_Context) diff --git a/skyvern/client/types/print_page_block_yaml.py b/skyvern/client/types/print_page_block_yaml.py new file mode 100644 index 00000000..489415ec --- /dev/null +++ b/skyvern/client/types/print_page_block_yaml.py @@ -0,0 +1,38 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel +from .pdf_format import PdfFormat + + +class PrintPageBlockYaml(UniversalBaseModel): + label: str = pydantic.Field() + """ + Author-facing identifier; must be unique per workflow. + """ + + next_block_label: typing.Optional[str] = pydantic.Field(default=None) + """ + Optional pointer to the label of the next block. When omitted, it will default to sequential order. See [[s-4bnl]]. + """ + + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[PdfFormat] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/skyvern/client/types/task_run_request.py b/skyvern/client/types/task_run_request.py index 84a213dd..2f37de8d 100644 --- a/skyvern/client/types/task_run_request.py +++ b/skyvern/client/types/task_run_request.py @@ -48,15 +48,16 @@ class TaskRunRequest(UniversalBaseModel): - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} """ diff --git a/skyvern/client/types/task_run_response.py b/skyvern/client/types/task_run_response.py index 4521f2c1..623125ba 100644 --- a/skyvern/client/types/task_run_response.py +++ b/skyvern/client/types/task_run_response.py @@ -103,6 +103,11 @@ class TaskRunResponse(UniversalBaseModel): The errors for the run """ + step_count: typing.Optional[int] = pydantic.Field(default=None) + """ + Total number of steps executed in this run + """ + run_request: typing.Optional[TaskRunRequest] = pydantic.Field(default=None) """ The original request parameters used to start this task run diff --git a/skyvern/client/types/totp_code.py b/skyvern/client/types/totp_code.py index 2caff2ed..6eb7a6af 100644 --- a/skyvern/client/types/totp_code.py +++ b/skyvern/client/types/totp_code.py @@ -44,6 +44,11 @@ class TotpCode(UniversalBaseModel): The timestamp when the TOTP code expires """ + type: typing.Optional[OtpType] = pydantic.Field(default=None) + """ + Optional. If provided, forces extraction of this specific OTP type (totp or magic_link). Use this when the content contains multiple OTP types and you want to specify which one to extract. + """ + totp_code_id: str = pydantic.Field() """ The skyvern ID of the TOTP code. diff --git a/skyvern/client/types/workflow_definition.py b/skyvern/client/types/workflow_definition.py index 60abf11f..55d611f8 100644 --- a/skyvern/client/types/workflow_definition.py +++ b/skyvern/client/types/workflow_definition.py @@ -14,6 +14,7 @@ class WorkflowDefinition(UniversalBaseModel): version: typing.Optional[int] = None parameters: typing.List[WorkflowDefinitionParametersItem] blocks: typing.List[WorkflowDefinitionBlocksItem] + finally_block_label: typing.Optional[str] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/skyvern/client/types/workflow_definition_blocks_item.py b/skyvern/client/types/workflow_definition_blocks_item.py index fd18267c..3546da60 100644 --- a/skyvern/client/types/workflow_definition_blocks_item.py +++ b/skyvern/client/types/workflow_definition_blocks_item.py @@ -28,6 +28,7 @@ from .login_block_parameters_item import LoginBlockParametersItem from .navigation_block_data_schema import NavigationBlockDataSchema from .navigation_block_parameters_item import NavigationBlockParametersItem from .output_parameter import OutputParameter +from .print_page_block_parameters_item import PrintPageBlockParametersItem from .run_engine import RunEngine from .task_block_data_schema import TaskBlockDataSchema from .task_block_parameters_item import TaskBlockParametersItem @@ -359,6 +360,8 @@ class WorkflowDefinitionBlocksItem_HttpRequest(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None + download_filename: typing.Optional[str] = None + save_response_as_file: typing.Optional[bool] = None parameters: typing.Optional[typing.List[HttpRequestBlockParametersItem]] = None if IS_PYDANTIC_V2: @@ -521,6 +524,32 @@ class WorkflowDefinitionBlocksItem_PdfParser(UniversalBaseModel): extra = pydantic.Extra.allow +class WorkflowDefinitionBlocksItem_PrintPage(UniversalBaseModel): + block_type: typing.Literal["print_page"] = "print_page" + label: str + next_block_label: typing.Optional[str] = None + output_parameter: OutputParameter + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[str] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameters: typing.Optional[typing.List[PrintPageBlockParametersItem]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + class WorkflowDefinitionBlocksItem_SendEmail(UniversalBaseModel): block_type: typing.Literal["send_email"] = "send_email" label: str @@ -741,6 +770,7 @@ WorkflowDefinitionBlocksItem = typing.Union[ WorkflowDefinitionBlocksItem_Login, WorkflowDefinitionBlocksItem_Navigation, WorkflowDefinitionBlocksItem_PdfParser, + WorkflowDefinitionBlocksItem_PrintPage, WorkflowDefinitionBlocksItem_SendEmail, WorkflowDefinitionBlocksItem_Task, WorkflowDefinitionBlocksItem_TaskV2, @@ -759,6 +789,7 @@ update_forward_refs(WorkflowDefinitionBlocksItem_HttpRequest) update_forward_refs(WorkflowDefinitionBlocksItem_HumanInteraction) update_forward_refs(WorkflowDefinitionBlocksItem_Login) update_forward_refs(WorkflowDefinitionBlocksItem_Navigation) +update_forward_refs(WorkflowDefinitionBlocksItem_PrintPage) update_forward_refs(WorkflowDefinitionBlocksItem_Task) update_forward_refs(WorkflowDefinitionBlocksItem_TextPrompt) update_forward_refs(WorkflowDefinitionBlocksItem_Validation) diff --git a/skyvern/client/types/workflow_definition_yaml.py b/skyvern/client/types/workflow_definition_yaml.py index 2a73c5e1..b59071b1 100644 --- a/skyvern/client/types/workflow_definition_yaml.py +++ b/skyvern/client/types/workflow_definition_yaml.py @@ -14,6 +14,7 @@ class WorkflowDefinitionYaml(UniversalBaseModel): version: typing.Optional[int] = None parameters: typing.List[WorkflowDefinitionYamlParametersItem] blocks: typing.List[WorkflowDefinitionYamlBlocksItem] + finally_block_label: typing.Optional[str] = None if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/skyvern/client/types/workflow_definition_yaml_blocks_item.py b/skyvern/client/types/workflow_definition_yaml_blocks_item.py index 86d04e01..4ad08c9b 100644 --- a/skyvern/client/types/workflow_definition_yaml_blocks_item.py +++ b/skyvern/client/types/workflow_definition_yaml_blocks_item.py @@ -12,6 +12,7 @@ from .branch_condition_yaml import BranchConditionYaml from .extraction_block_yaml_data_schema import ExtractionBlockYamlDataSchema from .file_storage_type import FileStorageType from .file_type import FileType +from .pdf_format import PdfFormat from .run_engine import RunEngine from .task_block_yaml_data_schema import TaskBlockYamlDataSchema @@ -270,6 +271,8 @@ class WorkflowDefinitionYamlBlocksItem_HttpRequest(UniversalBaseModel): files: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None timeout: typing.Optional[int] = None follow_redirects: typing.Optional[bool] = None + download_filename: typing.Optional[str] = None + save_response_as_file: typing.Optional[bool] = None parameter_keys: typing.Optional[typing.List[str]] = None if IS_PYDANTIC_V2: @@ -395,6 +398,30 @@ class WorkflowDefinitionYamlBlocksItem_PdfParser(UniversalBaseModel): extra = pydantic.Extra.allow +class WorkflowDefinitionYamlBlocksItem_PrintPage(UniversalBaseModel): + block_type: typing.Literal["print_page"] = "print_page" + label: str + 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 + include_timestamp: typing.Optional[bool] = None + custom_filename: typing.Optional[str] = None + format: typing.Optional[PdfFormat] = None + landscape: typing.Optional[bool] = None + print_background: typing.Optional[bool] = None + parameter_keys: typing.Optional[typing.List[str]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + class WorkflowDefinitionYamlBlocksItem_SendEmail(UniversalBaseModel): block_type: typing.Literal["send_email"] = "send_email" label: str @@ -583,6 +610,7 @@ WorkflowDefinitionYamlBlocksItem = typing.Union[ WorkflowDefinitionYamlBlocksItem_Login, WorkflowDefinitionYamlBlocksItem_Navigation, WorkflowDefinitionYamlBlocksItem_PdfParser, + WorkflowDefinitionYamlBlocksItem_PrintPage, WorkflowDefinitionYamlBlocksItem_SendEmail, WorkflowDefinitionYamlBlocksItem_Task, WorkflowDefinitionYamlBlocksItem_TaskV2, diff --git a/skyvern/client/types/workflow_run_request.py b/skyvern/client/types/workflow_run_request.py index 1431dce2..b407af5a 100644 --- a/skyvern/client/types/workflow_run_request.py +++ b/skyvern/client/types/workflow_run_request.py @@ -38,15 +38,16 @@ class WorkflowRunRequest(UniversalBaseModel): - RESIDENTIAL_FR: France - RESIDENTIAL_DE: Germany - RESIDENTIAL_NZ: New Zealand + - RESIDENTIAL_PH: Philippines - RESIDENTIAL_ZA: South Africa - RESIDENTIAL_AR: Argentina - RESIDENTIAL_AU: Australia - RESIDENTIAL_ISP: ISP proxy - - US-CA: California - - US-NY: New York - - US-TX: Texas - - US-FL: Florida - - US-WA: Washington + - US-CA: California (deprecated, routes through RESIDENTIAL_ISP) + - US-NY: New York (deprecated, routes through RESIDENTIAL_ISP) + - US-TX: Texas (deprecated, routes through RESIDENTIAL_ISP) + - US-FL: Florida (deprecated, routes through RESIDENTIAL_ISP) + - US-WA: Washington (deprecated, routes through RESIDENTIAL_ISP) - NONE: No proxy Can also be a GeoTarget object for granular city/state targeting: {"country": "US", "subdivision": "CA", "city": "San Francisco"} """ diff --git a/skyvern/client/types/workflow_run_response.py b/skyvern/client/types/workflow_run_response.py index 0459d13a..b0476102 100644 --- a/skyvern/client/types/workflow_run_response.py +++ b/skyvern/client/types/workflow_run_response.py @@ -103,6 +103,11 @@ class WorkflowRunResponse(UniversalBaseModel): The errors for the run """ + step_count: typing.Optional[int] = pydantic.Field(default=None) + """ + Total number of steps executed in this run + """ + run_with: typing.Optional[str] = pydantic.Field(default=None) """ Whether the workflow run was executed with agent or code diff --git a/tests/sdk/typescript_sdk/package-lock.json b/tests/sdk/typescript_sdk/package-lock.json index a2130fe0..511c9404 100644 --- a/tests/sdk/typescript_sdk/package-lock.json +++ b/tests/sdk/typescript_sdk/package-lock.json @@ -21,7 +21,7 @@ }, "../../../skyvern-ts/client": { "name": "@skyvern/client", - "version": "1.0.10", + "version": "1.0.11", "dependencies": { "playwright": "^1.48.0" }, diff --git a/uv.lock b/uv.lock index e2df29c0..337e01dc 100644 --- a/uv.lock +++ b/uv.lock @@ -5130,7 +5130,7 @@ wheels = [ [[package]] name = "skyvern" -version = "1.0.10" +version = "1.0.11" source = { editable = "." } dependencies = [ { name = "aioboto3" },