diff --git a/fern/generators.yml b/fern/generators.yml index 95cb8267..05548323 100644 --- a/fern/generators.yml +++ b/fern/generators.yml @@ -30,3 +30,7 @@ groups: repository: Skyvern-AI/skyvern-typescript config: namespaceExport: Skyvern + packageJson: + description: "The Skyvern TypeScript library provides convenient access to the Skyvern APIs from TypeScript." + publishConfig: + access: "public" diff --git a/pyproject.toml b/pyproject.toml index 229f71d1..de6885c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "skyvern" -version = "0.2.21" +version = "0.2.22" description = "" authors = [{ name = "Skyvern AI", email = "info@skyvern.com" }] requires-python = ">=3.11,<3.14" diff --git a/scripts/fern_build_python_sdk.sh b/scripts/fern_build_python_sdk.sh index c112806a..20c1f256 100755 --- a/scripts/fern_build_python_sdk.sh +++ b/scripts/fern_build_python_sdk.sh @@ -2,6 +2,9 @@ CURRENT_VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/') fern generate --group python-sdk --log-level debug --version "$CURRENT_VERSION" --preview + +rm -fr skyvern/client +mkdir -p skyvern/client cp -rf fern/.preview/fern-python-sdk/src/skyvern/* skyvern/client/ # Post-processing: Patch version.py to handle missing metadata gracefully diff --git a/scripts/fern_build_ts_sdk.sh b/scripts/fern_build_ts_sdk.sh index e1ee4925..f6fca99e 100755 --- a/scripts/fern_build_ts_sdk.sh +++ b/scripts/fern_build_ts_sdk.sh @@ -9,6 +9,8 @@ fern generate --group ts-sdk --log-level debug --version "$CURRENT_VERSION" --pr && npx tsc --project ./tsconfig.esm.json \ && node scripts/rename-to-esm-files.js dist/esm) +rm -fr skyvern-ts/client +mkdir -p skyvern-ts/client cp -rf fern/.preview/fern-typescript-sdk/* skyvern-ts/client/ # Post-processing: Update repository references the monorepo diff --git a/skyvern-ts/client/README.md b/skyvern-ts/client/README.md index 13e6bde0..f20a5ce9 100644 --- a/skyvern-ts/client/README.md +++ b/skyvern-ts/client/README.md @@ -39,7 +39,7 @@ following namespace: ```typescript import { Skyvern } from "@skyvern/client"; -const request: Skyvern.RunTaskRequest = { +const request: Skyvern.GetFoldersV1FoldersGetRequest = { ... }; ``` diff --git a/skyvern-ts/client/package-lock.json b/skyvern-ts/client/package-lock.json index 779a386b..f80c5471 100644 --- a/skyvern-ts/client/package-lock.json +++ b/skyvern-ts/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@skyvern/client", - "version": "0.2.21", + "version": "0.2.22", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@skyvern/client", - "version": "0.2.21", + "version": "0.2.22", "devDependencies": { "@biomejs/biome": "2.2.5", "@types/node": "^18.19.70", @@ -204,9 +204,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", - "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", "cpu": [ "ppc64" ], @@ -221,9 +221,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", - "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", "cpu": [ "arm" ], @@ -238,9 +238,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", - "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", "cpu": [ "arm64" ], @@ -255,9 +255,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", - "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", "cpu": [ "x64" ], @@ -272,9 +272,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", - "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", "cpu": [ "arm64" ], @@ -289,9 +289,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", - "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", "cpu": [ "x64" ], @@ -306,9 +306,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", - "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", "cpu": [ "arm64" ], @@ -323,9 +323,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", - "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", "cpu": [ "x64" ], @@ -340,9 +340,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", - "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", "cpu": [ "arm" ], @@ -357,9 +357,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", - "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", "cpu": [ "arm64" ], @@ -374,9 +374,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", - "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", "cpu": [ "ia32" ], @@ -391,9 +391,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", - "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", "cpu": [ "loong64" ], @@ -408,9 +408,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", - "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", "cpu": [ "mips64el" ], @@ -425,9 +425,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", - "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", "cpu": [ "ppc64" ], @@ -442,9 +442,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", - "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", "cpu": [ "riscv64" ], @@ -459,9 +459,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", - "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", "cpu": [ "s390x" ], @@ -476,9 +476,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", - "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", "cpu": [ "x64" ], @@ -493,9 +493,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", - "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", "cpu": [ "arm64" ], @@ -510,9 +510,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", - "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", "cpu": [ "x64" ], @@ -527,9 +527,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", - "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", "cpu": [ "arm64" ], @@ -544,9 +544,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", - "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", "cpu": [ "x64" ], @@ -561,9 +561,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", - "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", "cpu": [ "arm64" ], @@ -578,9 +578,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", - "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", "cpu": [ "x64" ], @@ -595,9 +595,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", - "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", "cpu": [ "arm64" ], @@ -612,9 +612,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", - "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", "cpu": [ "ia32" ], @@ -629,9 +629,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", - "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", "cpu": [ "x64" ], @@ -827,9 +827,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.0.tgz", + "integrity": "sha512-MX3DD/o2W36nlgQb8KA5QtUw/bK5aR9YDzNmX1PRHZAa6LF/MQCWMN477CgBMg8gH1vEiEZsjWRIZeL/7ttUVA==", "cpu": [ "arm" ], @@ -841,9 +841,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.0.tgz", + "integrity": "sha512-U4/R8ZvikDYLkl+hyAGP23SRHp3LwYSRy9SvJqsnva7TYLhVMy39RTVCYn1DdRNxXl1CyCQgE/mXKm9jaQT4ig==", "cpu": [ "arm64" ], @@ -855,9 +855,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.0.tgz", + "integrity": "sha512-nBG2BXRU3ifdK0HdqBKaT5VI6ScoIpABYZ+dWwQkIOYd8Suo4iykgPikjhsTd7NeHgJJ3OqlKYCcNkZtB1iLVQ==", "cpu": [ "arm64" ], @@ -869,9 +869,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.0.tgz", + "integrity": "sha512-QuZ5hYStB/vW7b8zQYtdIPpIfNNlUXtGk8zVTkoTMKzMhE2/6tVvcCWqdWqCVhx6eguJJjKjtZ9lAAG/D3yNeA==", "cpu": [ "x64" ], @@ -883,9 +883,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.0.tgz", + "integrity": "sha512-4yYPm1PJwK/HKI4FzElAPj2EAAFaaLUWzXV3S3edKy71JcEVzBCpgaXyEcDh3blBIjLml+aMkj6HEVGSuzpz+g==", "cpu": [ "arm64" ], @@ -897,9 +897,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.0.tgz", + "integrity": "sha512-1SvE5euwWV8JqFc4zEAqHbJbf2yJl00EoHVcnlFqLzjrIExYttLxfZeMDIXY6Yx+bskphrQakpChZKzE2JECEg==", "cpu": [ "x64" ], @@ -911,9 +911,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.0.tgz", + "integrity": "sha512-9tS4QyfU5NF5CdUugEi7kWbcGD7pbu6Fm8SunuePH6beeQgtcRZ9K9KVwKHEgfBHeeyrr5OvfV1qWs7PMDOf5w==", "cpu": [ "arm" ], @@ -925,9 +925,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.0.tgz", + "integrity": "sha512-U+0ovxGU9bVJIHfW+oALpHd0ho1YDwhj0yHASDzIj+bOeo+VzEpNtHxcjhFab0YcHUorIMoqyxckC98+81oTJw==", "cpu": [ "arm" ], @@ -939,9 +939,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.0.tgz", + "integrity": "sha512-Cp/TQ+wLjRTqTuiVwLz4XPZMo3ROl7EJYMF8HhMp8Uf+9kOOATB3/p4gGZPpuQ4BP7qEXG29ET24u9+F0ERYkQ==", "cpu": [ "arm64" ], @@ -953,9 +953,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.0.tgz", + "integrity": "sha512-SuGoAwhsSonrSTEZTiQOGC3+XZfq7rc/qAdAOBrYYIp8pu+Wh4EFFXl6+QYYNbNrHL3DnVoWACLwnfwlTa0neA==", "cpu": [ "arm64" ], @@ -967,9 +967,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.0.tgz", + "integrity": "sha512-EOKej1x0WoePnJWfg7ZbnUqiuiQunshzsKZSIfTHFDiCY9pnsr3Weit1GjcpGnun7H5HuRREqkT2c9CcKxNwSg==", "cpu": [ "loong64" ], @@ -981,9 +981,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.0.tgz", + "integrity": "sha512-YAvv2aMFlfiawJ97lutomuehG2Yowd4YgsAqI85XNiMK9eBA1vEMZHt3BShg8cUvak71BM+VFRHddqc+OrRdVA==", "cpu": [ "ppc64" ], @@ -995,9 +995,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.0.tgz", + "integrity": "sha512-DxZe/sMVaqN+s5kVk3Iq619Rgyl1JCTob7xOLSNC84mbzg3NYTSheqqrtVllYjLYo4wm9YyqjVS57miuzNyXbQ==", "cpu": [ "riscv64" ], @@ -1009,9 +1009,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.0.tgz", + "integrity": "sha512-N7+iZ0jEhwLY1FEsjbCR9lAxIZP0k+3Cghx9vSQWn+rcW8SgN8VcCmwJDoPDaGKTzWWB791U1s79BSLnEhUa0Q==", "cpu": [ "riscv64" ], @@ -1023,9 +1023,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.0.tgz", + "integrity": "sha512-MA/NVneZyIskjvXdh2NR9YcPi7eHWBlQOWP2X8OymzyeUEB0JfUpmbKQZngHmOlyleV2IoR5nHIgMSRjLskOnA==", "cpu": [ "s390x" ], @@ -1037,9 +1037,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.0.tgz", + "integrity": "sha512-iYEYzYpfaSCkunVD0LOYrD9OMc357be7+rBuCxW1qvsjCGl+95iWnYAFfyEoxAm6koasNN3tFxFYze5MKl5S3A==", "cpu": [ "x64" ], @@ -1051,9 +1051,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.0.tgz", + "integrity": "sha512-FoRekOqhRUKbJMsB5LvhQchDeFeNlS6UGUwi0p3860sxE4zE+lp07FnkuR+yQH0rSn6iLXsnr44jnorgl8mGlQ==", "cpu": [ "x64" ], @@ -1065,9 +1065,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.0.tgz", + "integrity": "sha512-mEN2k1zKO5PUzW8W15hKpLh+zZI2by1onX2GfI93OekGbKN5aTjWGo7yAjwRZLjhAgs2UQcXmEWbIw0R5B4RnQ==", "cpu": [ "arm64" ], @@ -1079,9 +1079,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.0.tgz", + "integrity": "sha512-V1dEKUXqevG0wxo6ysGrL7g2T6tndmo6Uqw5vzOqCXv+DHc8m0RRgcCm+96iigDniwpvV6o4HZtkRUnuTz9XiA==", "cpu": [ "arm64" ], @@ -1093,9 +1093,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.0.tgz", + "integrity": "sha512-93mJ8Hm9+vbhtu+A1VtmwptSqCYojtMQkBGDjLytCWC8muxmZLGo/MA/4CMAWf6+QpKlxTTMDAHdTC+kxn9ZcQ==", "cpu": [ "ia32" ], @@ -1107,9 +1107,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.0.tgz", + "integrity": "sha512-1OrYs0p/deXEFLUW1gvyjIabmsJKY3I/9fCUA1K6demaNc4iEhXDW6RnyPv/BWqb7NRmQ9+i+SKoi1HgJxWcwg==", "cpu": [ "x64" ], @@ -1121,9 +1121,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.0.tgz", + "integrity": "sha512-xtSei8paPcLy3GzeeOjoRrllJn6EN8PB+/bXnhZ4R0AaviJsRwtKxFZRVnfFXNZTTp0nLeDo+BcEuIfdZS14/A==", "cpu": [ "x64" ], @@ -1586,9 +1586,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.8.21", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz", - "integrity": "sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==", + "version": "2.8.25", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.25.tgz", + "integrity": "sha512-2NovHVesVF5TXefsGX1yzx1xgr7+m9JQenvz6FQY3qd+YXkKkYiv+vTCc7OriP9mcDZpTC5mAOYN4ocd29+erA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1660,9 +1660,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", - "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", + "version": "1.0.30001754", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", + "integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "dev": true, "funding": [ { @@ -1843,9 +1843,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.244", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.244.tgz", - "integrity": "sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==", + "version": "1.5.248", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.248.tgz", + "integrity": "sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==", "dev": true, "license": "ISC" }, @@ -1878,9 +1878,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", - "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1891,32 +1891,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.11", - "@esbuild/android-arm": "0.25.11", - "@esbuild/android-arm64": "0.25.11", - "@esbuild/android-x64": "0.25.11", - "@esbuild/darwin-arm64": "0.25.11", - "@esbuild/darwin-x64": "0.25.11", - "@esbuild/freebsd-arm64": "0.25.11", - "@esbuild/freebsd-x64": "0.25.11", - "@esbuild/linux-arm": "0.25.11", - "@esbuild/linux-arm64": "0.25.11", - "@esbuild/linux-ia32": "0.25.11", - "@esbuild/linux-loong64": "0.25.11", - "@esbuild/linux-mips64el": "0.25.11", - "@esbuild/linux-ppc64": "0.25.11", - "@esbuild/linux-riscv64": "0.25.11", - "@esbuild/linux-s390x": "0.25.11", - "@esbuild/linux-x64": "0.25.11", - "@esbuild/netbsd-arm64": "0.25.11", - "@esbuild/netbsd-x64": "0.25.11", - "@esbuild/openbsd-arm64": "0.25.11", - "@esbuild/openbsd-x64": "0.25.11", - "@esbuild/openharmony-arm64": "0.25.11", - "@esbuild/sunos-x64": "0.25.11", - "@esbuild/win32-arm64": "0.25.11", - "@esbuild/win32-ia32": "0.25.11", - "@esbuild/win32-x64": "0.25.11" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { @@ -2083,9 +2083,9 @@ "license": "ISC" }, "node_modules/graphql": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.11.0.tgz", - "integrity": "sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==", + "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": { @@ -2477,10 +2477,11 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "version": "4.53.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.0.tgz", + "integrity": "sha512-43Z5T+4YTdfYkkA6CStU2DUYh7Ha9dLtvK+K3n0yEE/QS+4i28vSxrQsM59KqpvmT4tbOwJsFnRGMj/tvmQwWw==", "dev": true, + "hasInstallScript": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -2493,28 +2494,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", + "@rollup/rollup-android-arm-eabi": "4.53.0", + "@rollup/rollup-android-arm64": "4.53.0", + "@rollup/rollup-darwin-arm64": "4.53.0", + "@rollup/rollup-darwin-x64": "4.53.0", + "@rollup/rollup-freebsd-arm64": "4.53.0", + "@rollup/rollup-freebsd-x64": "4.53.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.0", + "@rollup/rollup-linux-arm-musleabihf": "4.53.0", + "@rollup/rollup-linux-arm64-gnu": "4.53.0", + "@rollup/rollup-linux-arm64-musl": "4.53.0", + "@rollup/rollup-linux-loong64-gnu": "4.53.0", + "@rollup/rollup-linux-ppc64-gnu": "4.53.0", + "@rollup/rollup-linux-riscv64-gnu": "4.53.0", + "@rollup/rollup-linux-riscv64-musl": "4.53.0", + "@rollup/rollup-linux-s390x-gnu": "4.53.0", + "@rollup/rollup-linux-x64-gnu": "4.53.0", + "@rollup/rollup-linux-x64-musl": "4.53.0", + "@rollup/rollup-openharmony-arm64": "4.53.0", + "@rollup/rollup-win32-arm64-msvc": "4.53.0", + "@rollup/rollup-win32-ia32-msvc": "4.53.0", + "@rollup/rollup-win32-x64-gnu": "4.53.0", + "@rollup/rollup-win32-x64-msvc": "4.53.0", "fsevents": "~2.3.2" } }, @@ -2743,9 +2744,9 @@ } }, "node_modules/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3044,9 +3045,9 @@ } }, "node_modules/vite-node/node_modules/@types/node": { - "version": "24.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz", - "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==", + "version": "24.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.0.tgz", + "integrity": "sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A==", "dev": true, "license": "MIT", "optional": true, @@ -3096,9 +3097,9 @@ "peer": true }, "node_modules/vite-node/node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3302,9 +3303,9 @@ } }, "node_modules/vitest/node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.2.tgz", + "integrity": "sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/skyvern-ts/client/package.json b/skyvern-ts/client/package.json index 0d423aca..f85c98c3 100644 --- a/skyvern-ts/client/package.json +++ b/skyvern-ts/client/package.json @@ -1,6 +1,6 @@ { "name": "@skyvern/client", - "version": "0.2.21", + "version": "0.2.22", "private": false, "repository": "github:Skyvern-AI/skyvern", "type": "commonjs", @@ -61,5 +61,9 @@ "engines": { "node": ">=18.0.0" }, - "sideEffects": false + "sideEffects": false, + "description": "The Skyvern TypeScript library provides convenient access to the Skyvern APIs from TypeScript.", + "publishConfig": { + "access": "public" + } } diff --git a/skyvern-ts/client/reference.md b/skyvern-ts/client/reference.md index 64f98f80..d92184a3 100644 --- a/skyvern-ts/client/reference.md +++ b/skyvern-ts/client/reference.md @@ -27,10 +27,9 @@ Execute a single SDK action with the specified parameters ```typescript await client.runSdkAction({ - "x-user-agent": "x-user-agent", url: "url", action: { - type: "ai_click" + type: "ai_act" } }); @@ -69,6 +68,417 @@ await client.runSdkAction({ ## +## Workflows +
client.workflows.getFolders({ ...params }) -> Skyvern.Folder[] +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get all folders for the organization +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.getFolders({ + page: 1, + page_size: 1, + search: "search" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Skyvern.GetFoldersV1FoldersGetRequest` + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.workflows.createFolder({ ...params }) -> Skyvern.Folder +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Create a new folder to organize workflows +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.createFolder({ + title: "title" +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**request:** `Skyvern.FolderCreate` + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.workflows.getFolder(folderId) -> Skyvern.Folder +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Get a specific folder by ID +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.getFolder("fld_123"); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**folderId:** `string` — Folder ID + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.workflows.updateFolder(folderId, { ...params }) -> Skyvern.Folder +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Update a folder's title or description +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.updateFolder("fld_123"); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**folderId:** `string` — Folder ID + +
+
+ +
+
+ +**request:** `Skyvern.FolderUpdate` + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.workflows.deleteFolder(folderId, { ...params }) -> Record +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Delete a folder. Optionally delete all workflows in the folder. +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.deleteFolder("fld_123", { + delete_workflows: true +}); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**folderId:** `string` — Folder ID + +
+
+ +
+
+ +**request:** `Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest` + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ +
client.workflows.updateWorkflowFolder(workflowPermanentId, { ...params }) -> Skyvern.Workflow +
+
+ +#### 📝 Description + +
+
+ +
+
+ +Update a workflow's folder assignment for the latest version +
+
+
+
+ +#### 🔌 Usage + +
+
+ +
+
+ +```typescript +await client.workflows.updateWorkflowFolder("wpid_123"); + +``` +
+
+
+
+ +#### ⚙️ Parameters + +
+
+ +
+
+ +**workflowPermanentId:** `string` — Workflow permanent ID + +
+
+ +
+
+ +**request:** `Skyvern.UpdateWorkflowFolderRequest` + +
+
+ +
+
+ +**requestOptions:** `Workflows.RequestOptions` + +
+
+
+
+ + +
+
+
+ ## Scripts
client.scripts.runScript(scriptId) -> unknown
diff --git a/skyvern-ts/client/src/Client.ts b/skyvern-ts/client/src/Client.ts index 311990e7..6e3d04b1 100644 --- a/skyvern-ts/client/src/Client.ts +++ b/skyvern-ts/client/src/Client.ts @@ -2,6 +2,7 @@ import * as Skyvern from "./api/index.js"; import { Scripts } from "./api/resources/scripts/client/Client.js"; +import { Workflows } from "./api/resources/workflows/client/Client.js"; import type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.js"; import { mergeHeaders, mergeOnlyDefinedHeaders } from "./core/headers.js"; import * as core from "./core/index.js"; @@ -16,6 +17,7 @@ export declare namespace SkyvernClient { export class SkyvernClient { protected readonly _options: SkyvernClient.Options; + protected _workflows: Workflows | undefined; protected _scripts: Scripts | undefined; constructor(_options: SkyvernClient.Options = {}) { @@ -26,8 +28,8 @@ export class SkyvernClient { "x-api-key": _options?.apiKey, "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "@skyvern/client", - "X-Fern-SDK-Version": "0.2.21", - "User-Agent": "@skyvern/client/0.2.21", + "X-Fern-SDK-Version": "0.2.22", + "User-Agent": "@skyvern/client/0.2.22", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, }, @@ -36,6 +38,10 @@ export class SkyvernClient { }; } + public get workflows(): Workflows { + return (this._workflows ??= new Workflows(this._options)); + } + public get scripts(): Scripts { return (this._scripts ??= new Scripts(this._options)); } @@ -382,8 +388,8 @@ export class SkyvernClient { * Get all workflows with the latest version for the organization. * * Search semantics: - * - If `search_key` is provided, its value is used as a unified search term for both - * `workflows.title` and workflow parameter metadata (key, description, and default_value for + * - If `search_key` is provided, its value is used as a unified search term for + * `workflows.title`, `folders.title`, and workflow parameter metadata (key, description, and default_value for * `WorkflowParameterModel`). * - Falls back to deprecated `title` (title-only search) if `search_key` is not provided. * - Parameter metadata search excludes soft-deleted parameter rows across all parameter tables. @@ -401,6 +407,7 @@ export class SkyvernClient { * only_workflows: true, * search_key: "search_key", * title: "title", + * folder_id: "folder_id", * template: true * }) */ @@ -422,6 +429,8 @@ export class SkyvernClient { only_workflows: onlyWorkflows, search_key: searchKey, title, + folder_id: folderId, + status, template, } = request; const _queryParams: Record = {}; @@ -449,6 +458,18 @@ export class SkyvernClient { _queryParams.title = title; } + if (folderId != null) { + _queryParams.folder_id = folderId; + } + + if (status != null) { + if (Array.isArray(status)) { + _queryParams.status = status.map((item) => item); + } else { + _queryParams.status = status; + } + } + if (template != null) { _queryParams.template = template.toString(); } @@ -2209,17 +2230,13 @@ export class SkyvernClient { * @param {Skyvern.RunSdkActionRequest} request * @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration. * - * @throws {@link Skyvern.BadRequestError} - * @throws {@link Skyvern.ForbiddenError} - * @throws {@link Skyvern.NotFoundError} * @throws {@link Skyvern.UnprocessableEntityError} * * @example * await client.runSdkAction({ - * "x-user-agent": "x-user-agent", * url: "url", * action: { - * type: "ai_click" + * type: "ai_act" * } * }) */ @@ -2234,13 +2251,9 @@ export class SkyvernClient { request: Skyvern.RunSdkActionRequest, requestOptions?: SkyvernClient.RequestOptions, ): Promise> { - const { "x-user-agent": userAgent, ..._body } = request; const _headers: core.Fetcher.Args["headers"] = mergeHeaders( this._options?.headers, - mergeOnlyDefinedHeaders({ - "x-user-agent": userAgent != null ? userAgent : undefined, - "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey, - }), + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), requestOptions?.headers, ); const _response = await core.fetcher({ @@ -2255,7 +2268,7 @@ export class SkyvernClient { contentType: "application/json", queryParameters: requestOptions?.queryParams, requestType: "json", - body: _body, + body: request, timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000, maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries, abortSignal: requestOptions?.abortSignal, @@ -2266,12 +2279,6 @@ export class SkyvernClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { - case 400: - throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse); - case 403: - throw new Skyvern.ForbiddenError(_response.error.body as unknown, _response.rawResponse); - case 404: - throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse); case 422: throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse); default: diff --git a/skyvern-ts/client/src/api/client/requests/GetWorkflowsRequest.ts b/skyvern-ts/client/src/api/client/requests/GetWorkflowsRequest.ts index 42666a97..15a33632 100644 --- a/skyvern-ts/client/src/api/client/requests/GetWorkflowsRequest.ts +++ b/skyvern-ts/client/src/api/client/requests/GetWorkflowsRequest.ts @@ -1,5 +1,7 @@ // This file was auto-generated by Fern from our API Definition. +import type * as Skyvern from "../../index.js"; + /** * @example * { @@ -9,6 +11,7 @@ * only_workflows: true, * search_key: "search_key", * title: "title", + * folder_id: "folder_id", * template: true * } */ @@ -17,9 +20,12 @@ export interface GetWorkflowsRequest { page_size?: number; only_saved_tasks?: boolean; only_workflows?: boolean; - /** Unified search across workflow title and parameter metadata (key, description, default_value). */ + /** Unified search across workflow title, folder name, and parameter metadata (key, description, default_value). */ search_key?: string; /** Deprecated: use search_key instead. */ title?: string; + /** Filter workflows by folder ID */ + folder_id?: string; + status?: Skyvern.WorkflowStatus | Skyvern.WorkflowStatus[]; template?: boolean; } diff --git a/skyvern-ts/client/src/api/client/requests/RunSdkActionRequest.ts b/skyvern-ts/client/src/api/client/requests/RunSdkActionRequest.ts index 3ffc9f70..883ae910 100644 --- a/skyvern-ts/client/src/api/client/requests/RunSdkActionRequest.ts +++ b/skyvern-ts/client/src/api/client/requests/RunSdkActionRequest.ts @@ -5,15 +5,13 @@ import type * as Skyvern from "../../index.js"; /** * @example * { - * "x-user-agent": "x-user-agent", * url: "url", * action: { - * type: "ai_click" + * type: "ai_act" * } * } */ export interface RunSdkActionRequest { - "x-user-agent"?: string; /** The URL where the action should be executed */ url: string; /** The browser session ID */ @@ -23,5 +21,5 @@ export interface RunSdkActionRequest { /** Optional workflow run ID to continue an existing workflow run */ workflow_run_id?: string; /** The action to execute with its specific parameters */ - action: Skyvern.SdkAction; + action: Skyvern.RunSdkActionRequestAction; } diff --git a/skyvern-ts/client/src/api/resources/index.ts b/skyvern-ts/client/src/api/resources/index.ts index 7c69f0c4..9852fa96 100644 --- a/skyvern-ts/client/src/api/resources/index.ts +++ b/skyvern-ts/client/src/api/resources/index.ts @@ -1 +1,3 @@ export * as scripts from "./scripts/index.js"; +export * from "./workflows/client/requests/index.js"; +export * as workflows from "./workflows/index.js"; diff --git a/skyvern-ts/client/src/api/resources/workflows/client/Client.ts b/skyvern-ts/client/src/api/resources/workflows/client/Client.ts new file mode 100644 index 00000000..8089fcae --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/Client.ts @@ -0,0 +1,540 @@ +// This file was auto-generated by Fern from our API Definition. + +import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js"; +import { mergeHeaders, mergeOnlyDefinedHeaders } from "../../../../core/headers.js"; +import * as core from "../../../../core/index.js"; +import * as environments from "../../../../environments.js"; +import * as errors from "../../../../errors/index.js"; +import * as Skyvern from "../../../index.js"; + +export declare namespace Workflows { + export interface Options extends BaseClientOptions {} + + export interface RequestOptions extends BaseRequestOptions {} +} + +export class Workflows { + protected readonly _options: Workflows.Options; + + constructor(_options: Workflows.Options = {}) { + this._options = _options; + } + + /** + * Get all folders for the organization + * + * @param {Skyvern.GetFoldersV1FoldersGetRequest} request + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.getFolders({ + * page: 1, + * page_size: 1, + * search: "search" + * }) + */ + public getFolders( + request: Skyvern.GetFoldersV1FoldersGetRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__getFolders(request, requestOptions)); + } + + private async __getFolders( + request: Skyvern.GetFoldersV1FoldersGetRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): Promise> { + const { page, page_size: pageSize, search } = request; + const _queryParams: Record = {}; + if (page != null) { + _queryParams.page = page.toString(); + } + + if (pageSize != null) { + _queryParams.page_size = pageSize.toString(); + } + + if (search != null) { + _queryParams.search = search; + } + + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + "v1/folders", + ), + method: "GET", + headers: _headers, + queryParameters: { ..._queryParams, ...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.Folder[], 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 /v1/folders."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Create a new folder to organize workflows + * + * @param {Skyvern.FolderCreate} request + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.BadRequestError} + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.createFolder({ + * title: "title" + * }) + */ + public createFolder( + request: Skyvern.FolderCreate, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__createFolder(request, requestOptions)); + } + + private async __createFolder( + request: Skyvern.FolderCreate, + requestOptions?: Workflows.RequestOptions, + ): Promise> { + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + "v1/folders", + ), + 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.Folder, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 422: + throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse); + default: + throw new errors.SkyvernError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + rawResponse: _response.rawResponse, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.SkyvernError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + rawResponse: _response.rawResponse, + }); + case "timeout": + throw new errors.SkyvernTimeoutError("Timeout exceeded when calling POST /v1/folders."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Get a specific folder by ID + * + * @param {string} folderId - Folder ID + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.NotFoundError} + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.getFolder("fld_123") + */ + public getFolder( + folderId: string, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__getFolder(folderId, requestOptions)); + } + + private async __getFolder( + folderId: string, + requestOptions?: Workflows.RequestOptions, + ): Promise> { + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + `v1/folders/${core.url.encodePathParam(folderId)}`, + ), + 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.Folder, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 404: + throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse); + 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 /v1/folders/{folder_id}."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Update a folder's title or description + * + * @param {string} folderId - Folder ID + * @param {Skyvern.FolderUpdate} request + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.NotFoundError} + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.updateFolder("fld_123") + */ + public updateFolder( + folderId: string, + request: Skyvern.FolderUpdate = {}, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise(this.__updateFolder(folderId, request, requestOptions)); + } + + private async __updateFolder( + folderId: string, + request: Skyvern.FolderUpdate = {}, + requestOptions?: Workflows.RequestOptions, + ): Promise> { + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + `v1/folders/${core.url.encodePathParam(folderId)}`, + ), + method: "PUT", + 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.Folder, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 404: + throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse); + 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 PUT /v1/folders/{folder_id}."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Delete a folder. Optionally delete all workflows in the folder. + * + * @param {string} folderId - Folder ID + * @param {Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest} request + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.NotFoundError} + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.deleteFolder("fld_123", { + * delete_workflows: true + * }) + */ + public deleteFolder( + folderId: string, + request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise> { + return core.HttpResponsePromise.fromPromise(this.__deleteFolder(folderId, request, requestOptions)); + } + + private async __deleteFolder( + folderId: string, + request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): Promise>> { + const { delete_workflows: deleteWorkflows } = request; + const _queryParams: Record = {}; + if (deleteWorkflows != null) { + _queryParams.delete_workflows = deleteWorkflows.toString(); + } + + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + `v1/folders/${core.url.encodePathParam(folderId)}`, + ), + method: "DELETE", + headers: _headers, + queryParameters: { ..._queryParams, ...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 Record, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 404: + throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse); + 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 DELETE /v1/folders/{folder_id}."); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } + + /** + * Update a workflow's folder assignment for the latest version + * + * @param {string} workflowPermanentId - Workflow permanent ID + * @param {Skyvern.UpdateWorkflowFolderRequest} request + * @param {Workflows.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Skyvern.BadRequestError} + * @throws {@link Skyvern.NotFoundError} + * @throws {@link Skyvern.UnprocessableEntityError} + * + * @example + * await client.workflows.updateWorkflowFolder("wpid_123") + */ + public updateWorkflowFolder( + workflowPermanentId: string, + request: Skyvern.UpdateWorkflowFolderRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): core.HttpResponsePromise { + return core.HttpResponsePromise.fromPromise( + this.__updateWorkflowFolder(workflowPermanentId, request, requestOptions), + ); + } + + private async __updateWorkflowFolder( + workflowPermanentId: string, + request: Skyvern.UpdateWorkflowFolderRequest = {}, + requestOptions?: Workflows.RequestOptions, + ): Promise> { + const _headers: core.Fetcher.Args["headers"] = mergeHeaders( + this._options?.headers, + mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }), + requestOptions?.headers, + ); + const _response = await core.fetcher({ + url: core.url.join( + (await core.Supplier.get(this._options.baseUrl)) ?? + (await core.Supplier.get(this._options.environment)) ?? + environments.SkyvernEnvironment.Cloud, + `v1/workflows/${core.url.encodePathParam(workflowPermanentId)}/folder`, + ), + method: "PUT", + 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.Workflow, rawResponse: _response.rawResponse }; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse); + case 404: + throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse); + 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 PUT /v1/workflows/{workflow_permanent_id}/folder.", + ); + case "unknown": + throw new errors.SkyvernError({ + message: _response.error.errorMessage, + rawResponse: _response.rawResponse, + }); + } + } +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/index.ts b/skyvern-ts/client/src/api/resources/workflows/client/index.ts new file mode 100644 index 00000000..195f9aa8 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/index.ts @@ -0,0 +1 @@ +export * from "./requests/index.js"; diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/DeleteFolderV1FoldersFolderIdDeleteRequest.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/DeleteFolderV1FoldersFolderIdDeleteRequest.ts new file mode 100644 index 00000000..a0b05aa4 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/DeleteFolderV1FoldersFolderIdDeleteRequest.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * { + * delete_workflows: true + * } + */ +export interface DeleteFolderV1FoldersFolderIdDeleteRequest { + /** If true, also delete all workflows in this folder */ + delete_workflows?: boolean; +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderCreate.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderCreate.ts new file mode 100644 index 00000000..9f8672e6 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderCreate.ts @@ -0,0 +1,14 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * { + * title: "title" + * } + */ +export interface FolderCreate { + /** Folder title */ + title: string; + /** Folder description */ + description?: string; +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderUpdate.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderUpdate.ts new file mode 100644 index 00000000..a254c120 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/FolderUpdate.ts @@ -0,0 +1,12 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * {} + */ +export interface FolderUpdate { + /** Folder title */ + title?: string; + /** Folder description */ + description?: string; +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/GetFoldersV1FoldersGetRequest.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/GetFoldersV1FoldersGetRequest.ts new file mode 100644 index 00000000..461926b9 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/GetFoldersV1FoldersGetRequest.ts @@ -0,0 +1,18 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * { + * page: 1, + * page_size: 1, + * search: "search" + * } + */ +export interface GetFoldersV1FoldersGetRequest { + /** Page number */ + page?: number; + /** Number of folders per page */ + page_size?: number; + /** Search folders by title or description */ + search?: string; +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/UpdateWorkflowFolderRequest.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/UpdateWorkflowFolderRequest.ts new file mode 100644 index 00000000..52a60875 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/UpdateWorkflowFolderRequest.ts @@ -0,0 +1,10 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * @example + * {} + */ +export interface UpdateWorkflowFolderRequest { + /** Folder ID to assign workflow to. Set to null to remove from folder. */ + folder_id?: string; +} diff --git a/skyvern-ts/client/src/api/resources/workflows/client/requests/index.ts b/skyvern-ts/client/src/api/resources/workflows/client/requests/index.ts new file mode 100644 index 00000000..521e6501 --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/client/requests/index.ts @@ -0,0 +1,5 @@ +export type { DeleteFolderV1FoldersFolderIdDeleteRequest } from "./DeleteFolderV1FoldersFolderIdDeleteRequest.js"; +export type { FolderCreate } from "./FolderCreate.js"; +export type { FolderUpdate } from "./FolderUpdate.js"; +export type { GetFoldersV1FoldersGetRequest } from "./GetFoldersV1FoldersGetRequest.js"; +export type { UpdateWorkflowFolderRequest } from "./UpdateWorkflowFolderRequest.js"; diff --git a/skyvern-ts/client/src/api/resources/workflows/index.ts b/skyvern-ts/client/src/api/resources/workflows/index.ts new file mode 100644 index 00000000..914b8c3c --- /dev/null +++ b/skyvern-ts/client/src/api/resources/workflows/index.ts @@ -0,0 +1 @@ +export * from "./client/index.js"; diff --git a/skyvern-ts/client/src/api/types/ActAction.ts b/skyvern-ts/client/src/api/types/ActAction.ts new file mode 100644 index 00000000..f9e32383 --- /dev/null +++ b/skyvern-ts/client/src/api/types/ActAction.ts @@ -0,0 +1,18 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * AI act action parameters. + */ +export interface ActAction { + /** Natural language prompt for the action */ + intention?: string; + /** Additional context data */ + data?: ActAction.Data; +} + +export namespace ActAction { + /** + * Additional context data + */ + export type Data = string | Record; +} diff --git a/skyvern-ts/client/src/api/types/Action.ts b/skyvern-ts/client/src/api/types/Action.ts index bb8099a2..535cb02b 100644 --- a/skyvern-ts/client/src/api/types/Action.ts +++ b/skyvern-ts/client/src/api/types/Action.ts @@ -34,6 +34,7 @@ export interface Action { option?: Skyvern.SelectOption; is_checked?: boolean; verified?: boolean; + click_context?: Skyvern.ClickContext; totp_timing_info?: Record; created_at?: string; modified_at?: string; diff --git a/skyvern-ts/client/src/api/types/ClickAction.ts b/skyvern-ts/client/src/api/types/ClickAction.ts index 4983ff0f..484cf58f 100644 --- a/skyvern-ts/client/src/api/types/ClickAction.ts +++ b/skyvern-ts/client/src/api/types/ClickAction.ts @@ -1,5 +1,8 @@ // This file was auto-generated by Fern from our API Definition. +/** + * Click action parameters. + */ export interface ClickAction { /** CSS selector for the element */ selector?: string; diff --git a/skyvern-ts/client/src/api/types/ClickContext.ts b/skyvern-ts/client/src/api/types/ClickContext.ts new file mode 100644 index 00000000..b8fbb35b --- /dev/null +++ b/skyvern-ts/client/src/api/types/ClickContext.ts @@ -0,0 +1,6 @@ +// This file was auto-generated by Fern from our API Definition. + +export interface ClickContext { + thought?: string; + single_option_click?: boolean; +} diff --git a/skyvern-ts/client/src/api/types/ExtractAction.ts b/skyvern-ts/client/src/api/types/ExtractAction.ts index 6382cbbc..e26ddd3b 100644 --- a/skyvern-ts/client/src/api/types/ExtractAction.ts +++ b/skyvern-ts/client/src/api/types/ExtractAction.ts @@ -1,5 +1,8 @@ // This file was auto-generated by Fern from our API Definition. +/** + * Extract data action parameters. + */ export interface ExtractAction { /** Extraction prompt */ prompt?: string; diff --git a/skyvern-ts/client/src/api/types/Folder.ts b/skyvern-ts/client/src/api/types/Folder.ts new file mode 100644 index 00000000..57622c34 --- /dev/null +++ b/skyvern-ts/client/src/api/types/Folder.ts @@ -0,0 +1,17 @@ +// This file was auto-generated by Fern from our API Definition. + +/** + * Response model for a folder + */ +export interface Folder { + /** Folder title */ + title: string; + /** Folder description */ + description?: string; + folder_id: string; + organization_id: string; + /** Number of workflows in this folder */ + workflow_count?: number; + created_at: string; + modified_at: string; +} diff --git a/skyvern-ts/client/src/api/types/InputTextAction.ts b/skyvern-ts/client/src/api/types/InputTextAction.ts index 695615ec..0d6b81f6 100644 --- a/skyvern-ts/client/src/api/types/InputTextAction.ts +++ b/skyvern-ts/client/src/api/types/InputTextAction.ts @@ -1,5 +1,8 @@ // This file was auto-generated by Fern from our API Definition. +/** + * Input text action parameters. + */ export interface InputTextAction { /** CSS selector for the element */ selector?: string; diff --git a/skyvern-ts/client/src/api/types/SdkAction.ts b/skyvern-ts/client/src/api/types/RunSdkActionRequestAction.ts similarity index 51% rename from skyvern-ts/client/src/api/types/SdkAction.ts rename to skyvern-ts/client/src/api/types/RunSdkActionRequestAction.ts index 2bb07cba..12496e47 100644 --- a/skyvern-ts/client/src/api/types/SdkAction.ts +++ b/skyvern-ts/client/src/api/types/RunSdkActionRequestAction.ts @@ -2,13 +2,21 @@ import type * as Skyvern from "../index.js"; -export type SdkAction = - | Skyvern.SdkAction.AiClick - | Skyvern.SdkAction.AiInputText - | Skyvern.SdkAction.AiSelectOption - | Skyvern.SdkAction.Extract; +/** + * The action to execute with its specific parameters + */ +export type RunSdkActionRequestAction = + | Skyvern.RunSdkActionRequestAction.AiAct + | Skyvern.RunSdkActionRequestAction.AiClick + | Skyvern.RunSdkActionRequestAction.AiInputText + | Skyvern.RunSdkActionRequestAction.AiSelectOption + | Skyvern.RunSdkActionRequestAction.Extract; + +export namespace RunSdkActionRequestAction { + export interface AiAct extends Skyvern.ActAction { + type: "ai_act"; + } -export namespace SdkAction { export interface AiClick extends Skyvern.ClickAction { type: "ai_click"; } diff --git a/skyvern-ts/client/src/api/types/RunSdkActionResponse.ts b/skyvern-ts/client/src/api/types/RunSdkActionResponse.ts index c3c4352e..b5c6a0af 100644 --- a/skyvern-ts/client/src/api/types/RunSdkActionResponse.ts +++ b/skyvern-ts/client/src/api/types/RunSdkActionResponse.ts @@ -1,15 +1,11 @@ // This file was auto-generated by Fern from our API Definition. +/** + * Response from running an SDK action. + */ export interface RunSdkActionResponse { /** The workflow run ID used for this action */ workflow_run_id: string; /** The result from the action (e.g., selector, value, extracted data) */ - result?: RunSdkActionResponse.Result; -} - -export namespace RunSdkActionResponse { - /** - * The result from the action (e.g., selector, value, extracted data) - */ - export type Result = string | Record | unknown[] | number | boolean; + result?: unknown; } diff --git a/skyvern-ts/client/src/api/types/SelectOptionAction.ts b/skyvern-ts/client/src/api/types/SelectOptionAction.ts index 966ab094..fa5280fb 100644 --- a/skyvern-ts/client/src/api/types/SelectOptionAction.ts +++ b/skyvern-ts/client/src/api/types/SelectOptionAction.ts @@ -1,5 +1,8 @@ // This file was auto-generated by Fern from our API Definition. +/** + * Select option action parameters. + */ export interface SelectOptionAction { /** CSS selector for the element */ selector?: string; diff --git a/skyvern-ts/client/src/api/types/Workflow.ts b/skyvern-ts/client/src/api/types/Workflow.ts index 2d71599c..9a04ff95 100644 --- a/skyvern-ts/client/src/api/types/Workflow.ts +++ b/skyvern-ts/client/src/api/types/Workflow.ts @@ -25,6 +25,8 @@ export interface Workflow { cache_key?: string; run_sequentially?: boolean; sequential_key?: string; + folder_id?: string; + import_error?: string; created_at: string; modified_at: string; deleted_at?: string; diff --git a/skyvern-ts/client/src/api/types/WorkflowStatus.ts b/skyvern-ts/client/src/api/types/WorkflowStatus.ts index 3a98927d..1dfb7aa0 100644 --- a/skyvern-ts/client/src/api/types/WorkflowStatus.ts +++ b/skyvern-ts/client/src/api/types/WorkflowStatus.ts @@ -4,5 +4,7 @@ export const WorkflowStatus = { Published: "published", Draft: "draft", AutoGenerated: "auto_generated", + Importing: "importing", + ImportFailed: "import_failed", } as const; export type WorkflowStatus = (typeof WorkflowStatus)[keyof typeof WorkflowStatus]; diff --git a/skyvern-ts/client/src/api/types/index.ts b/skyvern-ts/client/src/api/types/index.ts index 07bbca99..c3d99ddf 100644 --- a/skyvern-ts/client/src/api/types/index.ts +++ b/skyvern-ts/client/src/api/types/index.ts @@ -1,3 +1,4 @@ +export * from "./ActAction.js"; export * from "./Action.js"; export * from "./ActionBlock.js"; export * from "./ActionBlockParametersItem.js"; @@ -20,6 +21,7 @@ export * from "./BitwardenSensitiveInformationParameterYaml.js"; export * from "./BlockType.js"; export * from "./BrowserSessionResponse.js"; export * from "./ClickAction.js"; +export * from "./ClickContext.js"; export * from "./CodeBlock.js"; export * from "./CodeBlockParametersItem.js"; export * from "./CodeBlockYaml.js"; @@ -50,6 +52,7 @@ export * from "./FileStorageType.js"; export * from "./FileType.js"; export * from "./FileUploadBlock.js"; export * from "./FileUploadBlockYaml.js"; +export * from "./Folder.js"; export * from "./ForLoopBlock.js"; export * from "./ForLoopBlockLoopBlocksItem.js"; export * from "./ForLoopBlockLoopOver.js"; @@ -83,12 +86,12 @@ export * from "./PdfParserBlock.js"; export * from "./PdfParserBlockYaml.js"; export * from "./ProxyLocation.js"; export * from "./RunEngine.js"; +export * from "./RunSdkActionRequestAction.js"; export * from "./RunSdkActionResponse.js"; export * from "./RunStatus.js"; export * from "./Script.js"; export * from "./ScriptFileCreate.js"; export * from "./ScriptRunResponse.js"; -export * from "./SdkAction.js"; export * from "./SelectOption.js"; export * from "./SelectOptionAction.js"; export * from "./SendEmailBlock.js"; diff --git a/skyvern-ts/client/src/version.ts b/skyvern-ts/client/src/version.ts index 1dda6e20..b639ce20 100644 --- a/skyvern-ts/client/src/version.ts +++ b/skyvern-ts/client/src/version.ts @@ -1 +1 @@ -export const SDK_VERSION = "0.2.21"; +export const SDK_VERSION = "0.2.22"; diff --git a/skyvern-ts/client/tests/wire/main.test.ts b/skyvern-ts/client/tests/wire/main.test.ts index 7fc0a08a..d42f0daf 100644 --- a/skyvern-ts/client/tests/wire/main.test.ts +++ b/skyvern-ts/client/tests/wire/main.test.ts @@ -568,6 +568,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -582,6 +584,7 @@ describe("SkyvernClient", () => { only_workflows: true, search_key: "search_key", title: "title", + folder_id: "folder_id", template: true, }); expect(response).toEqual([ @@ -637,6 +640,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -708,6 +713,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -774,6 +781,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -851,6 +860,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -917,6 +928,8 @@ describe("SkyvernClient", () => { cache_key: "cache_key", run_sequentially: true, sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", created_at: "2024-01-15T09:30:00Z", modified_at: "2024-01-15T09:30:00Z", deleted_at: "2024-01-15T09:30:00Z", @@ -2433,12 +2446,11 @@ describe("SkyvernClient", () => { test("run_sdk_action (1)", async () => { const server = mockServerPool.createServer(); const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "url", action: { type: "ai_click" } }; - const rawResponseBody = { workflow_run_id: "workflow_run_id", result: "result" }; + const rawRequestBody = { url: "url", action: { type: "ai_act" } }; + const rawResponseBody = { workflow_run_id: "workflow_run_id", result: { key: "value" } }; server .mockEndpoint() .post("/v1/sdk/run_action") - .header("x-user-agent", "x-user-agent") .jsonBody(rawRequestBody) .respondWith() .statusCode(200) @@ -2446,94 +2458,23 @@ describe("SkyvernClient", () => { .build(); const response = await client.runSdkAction({ - "x-user-agent": "x-user-agent", url: "url", action: { - type: "ai_click", + type: "ai_act", }, }); expect(response).toEqual({ workflow_run_id: "workflow_run_id", - result: "result", + result: { + key: "value", + }, }); }); test("run_sdk_action (2)", async () => { const server = mockServerPool.createServer(); const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "url", action: { type: "ai_click" } }; - const rawResponseBody = { key: "value" }; - server - .mockEndpoint() - .post("/v1/sdk/run_action") - .jsonBody(rawRequestBody) - .respondWith() - .statusCode(400) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.runSdkAction({ - url: "url", - action: { - type: "ai_click", - }, - }); - }).rejects.toThrow(Skyvern.BadRequestError); - }); - - test("run_sdk_action (3)", async () => { - const server = mockServerPool.createServer(); - const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "url", action: { type: "ai_click" } }; - const rawResponseBody = { key: "value" }; - server - .mockEndpoint() - .post("/v1/sdk/run_action") - .jsonBody(rawRequestBody) - .respondWith() - .statusCode(403) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.runSdkAction({ - url: "url", - action: { - type: "ai_click", - }, - }); - }).rejects.toThrow(Skyvern.ForbiddenError); - }); - - test("run_sdk_action (4)", async () => { - const server = mockServerPool.createServer(); - const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "url", action: { type: "ai_click" } }; - const rawResponseBody = { key: "value" }; - server - .mockEndpoint() - .post("/v1/sdk/run_action") - .jsonBody(rawRequestBody) - .respondWith() - .statusCode(404) - .jsonBody(rawResponseBody) - .build(); - - await expect(async () => { - return await client.runSdkAction({ - url: "url", - action: { - type: "ai_click", - }, - }); - }).rejects.toThrow(Skyvern.NotFoundError); - }); - - test("run_sdk_action (5)", async () => { - const server = mockServerPool.createServer(); - const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); - const rawRequestBody = { url: "url", action: { type: "ai_click" } }; + const rawRequestBody = { url: "url", action: { type: "ai_act" } }; const rawResponseBody = { key: "value" }; server .mockEndpoint() @@ -2548,7 +2489,7 @@ describe("SkyvernClient", () => { return await client.runSdkAction({ url: "url", action: { - type: "ai_click", + type: "ai_act", }, }); }).rejects.toThrow(Skyvern.UnprocessableEntityError); diff --git a/skyvern-ts/client/tests/wire/workflows.test.ts b/skyvern-ts/client/tests/wire/workflows.test.ts new file mode 100644 index 00000000..b548d701 --- /dev/null +++ b/skyvern-ts/client/tests/wire/workflows.test.ts @@ -0,0 +1,515 @@ +// This file was auto-generated by Fern from our API Definition. + +import * as Skyvern from "../../src/api/index"; +import { SkyvernClient } from "../../src/Client"; +import { mockServerPool } from "../mock-server/MockServerPool"; + +describe("Workflows", () => { + test("getFolders (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = [ + { + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + ]; + server.mockEndpoint().get("/v1/folders").respondWith().statusCode(200).jsonBody(rawResponseBody).build(); + + const response = await client.workflows.getFolders({ + page: 1, + page_size: 1, + search: "search", + }); + expect(response).toEqual([ + { + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + ]); + }); + + test("getFolders (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server.mockEndpoint().get("/v1/folders").respondWith().statusCode(422).jsonBody(rawResponseBody).build(); + + await expect(async () => { + return await client.workflows.getFolders(); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("createFolder (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { title: "title" }; + const rawResponseBody = { + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }; + server + .mockEndpoint() + .post("/v1/folders") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.workflows.createFolder({ + title: "title", + }); + expect(response).toEqual({ + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }); + }); + + test("createFolder (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { title: "x" }; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/v1/folders") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.createFolder({ + title: "x", + }); + }).rejects.toThrow(Skyvern.BadRequestError); + }); + + test("createFolder (3)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = { title: "x" }; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .post("/v1/folders") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.createFolder({ + title: "x", + }); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("getFolder (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }; + server + .mockEndpoint() + .get("/v1/folders/fld_123") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.workflows.getFolder("fld_123"); + expect(response).toEqual({ + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }); + }); + + test("getFolder (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .get("/v1/folders/folder_id") + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.getFolder("folder_id"); + }).rejects.toThrow(Skyvern.NotFoundError); + }); + + test("getFolder (3)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .get("/v1/folders/folder_id") + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.getFolder("folder_id"); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("updateFolder (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }; + server + .mockEndpoint() + .put("/v1/folders/fld_123") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.workflows.updateFolder("fld_123"); + expect(response).toEqual({ + title: "title", + description: "description", + folder_id: "folder_id", + organization_id: "organization_id", + workflow_count: 1, + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }); + }); + + test("updateFolder (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .put("/v1/folders/folder_id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.updateFolder("folder_id"); + }).rejects.toThrow(Skyvern.NotFoundError); + }); + + test("updateFolder (3)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .put("/v1/folders/folder_id") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.updateFolder("folder_id"); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("deleteFolder (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .delete("/v1/folders/fld_123") + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.workflows.deleteFolder("fld_123", { + delete_workflows: true, + }); + expect(response).toEqual({ + key: "value", + }); + }); + + test("deleteFolder (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .delete("/v1/folders/folder_id") + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.deleteFolder("folder_id"); + }).rejects.toThrow(Skyvern.NotFoundError); + }); + + test("deleteFolder (3)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .delete("/v1/folders/folder_id") + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.deleteFolder("folder_id"); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); + + test("updateWorkflowFolder (1)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { + workflow_id: "workflow_id", + organization_id: "organization_id", + title: "title", + workflow_permanent_id: "workflow_permanent_id", + version: 1, + is_saved_task: true, + description: "description", + workflow_definition: { + parameters: [ + { + parameter_type: "aws_secret", + key: "key", + aws_secret_parameter_id: "aws_secret_parameter_id", + workflow_id: "workflow_id", + aws_key: "aws_key", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + ], + blocks: [ + { + block_type: "action", + label: "label", + output_parameter: { + key: "key", + output_parameter_id: "output_parameter_id", + workflow_id: "workflow_id", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + }, + ], + }, + proxy_location: "RESIDENTIAL", + webhook_callback_url: "webhook_callback_url", + totp_verification_url: "totp_verification_url", + totp_identifier: "totp_identifier", + persist_browser_session: true, + model: { key: "value" }, + status: "published", + max_screenshot_scrolls: 1, + extra_http_headers: { key: "value" }, + run_with: "run_with", + ai_fallback: true, + cache_key: "cache_key", + run_sequentially: true, + sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + deleted_at: "2024-01-15T09:30:00Z", + }; + server + .mockEndpoint() + .put("/v1/workflows/wpid_123/folder") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(200) + .jsonBody(rawResponseBody) + .build(); + + const response = await client.workflows.updateWorkflowFolder("wpid_123"); + expect(response).toEqual({ + workflow_id: "workflow_id", + organization_id: "organization_id", + title: "title", + workflow_permanent_id: "workflow_permanent_id", + version: 1, + is_saved_task: true, + description: "description", + workflow_definition: { + parameters: [ + { + parameter_type: "aws_secret", + key: "key", + aws_secret_parameter_id: "aws_secret_parameter_id", + workflow_id: "workflow_id", + aws_key: "aws_key", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + ], + blocks: [ + { + block_type: "action", + label: "label", + output_parameter: { + key: "key", + output_parameter_id: "output_parameter_id", + workflow_id: "workflow_id", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + }, + }, + ], + }, + proxy_location: "RESIDENTIAL", + webhook_callback_url: "webhook_callback_url", + totp_verification_url: "totp_verification_url", + totp_identifier: "totp_identifier", + persist_browser_session: true, + model: { + key: "value", + }, + status: "published", + max_screenshot_scrolls: 1, + extra_http_headers: { + key: "value", + }, + run_with: "run_with", + ai_fallback: true, + cache_key: "cache_key", + run_sequentially: true, + sequential_key: "sequential_key", + folder_id: "folder_id", + import_error: "import_error", + created_at: "2024-01-15T09:30:00Z", + modified_at: "2024-01-15T09:30:00Z", + deleted_at: "2024-01-15T09:30:00Z", + }); + }); + + test("updateWorkflowFolder (2)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .put("/v1/workflows/workflow_permanent_id/folder") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(400) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.updateWorkflowFolder("workflow_permanent_id"); + }).rejects.toThrow(Skyvern.BadRequestError); + }); + + test("updateWorkflowFolder (3)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .put("/v1/workflows/workflow_permanent_id/folder") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(404) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.updateWorkflowFolder("workflow_permanent_id"); + }).rejects.toThrow(Skyvern.NotFoundError); + }); + + test("updateWorkflowFolder (4)", async () => { + const server = mockServerPool.createServer(); + const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl }); + const rawRequestBody = {}; + const rawResponseBody = { key: "value" }; + server + .mockEndpoint() + .put("/v1/workflows/workflow_permanent_id/folder") + .jsonBody(rawRequestBody) + .respondWith() + .statusCode(422) + .jsonBody(rawResponseBody) + .build(); + + await expect(async () => { + return await client.workflows.updateWorkflowFolder("workflow_permanent_id"); + }).rejects.toThrow(Skyvern.UnprocessableEntityError); + }); +}); diff --git a/skyvern/client/core/client_wrapper.py b/skyvern/client/core/client_wrapper.py index a9bae584..fc14a606 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/0.2.21", + "User-Agent": "skyvern/0.2.22", "X-Fern-Language": "Python", "X-Fern-SDK-Name": "skyvern", - "X-Fern-SDK-Version": "0.2.21", + "X-Fern-SDK-Version": "0.2.22", **(self.get_custom_headers() or {}), } if self._api_key is not None: diff --git a/uv.lock b/uv.lock index db82df98..4aa936c8 100644 --- a/uv.lock +++ b/uv.lock @@ -1567,6 +1567,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1f/8e/abdd3f14d735b2929290a018ecf133c901be4874b858dd1c604b9319f064/greenlet-3.2.4-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2523e5246274f54fdadbce8494458a2ebdcdbc7b802318466ac5606d3cded1f8", size = 587684, upload-time = "2025-08-07T13:18:25.164Z" }, { url = "https://files.pythonhosted.org/packages/5d/65/deb2a69c3e5996439b0176f6651e0052542bb6c8f8ec2e3fba97c9768805/greenlet-3.2.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1987de92fec508535687fb807a5cea1560f6196285a4cde35c100b8cd632cc52", size = 1116647, upload-time = "2025-08-07T13:42:38.655Z" }, { url = "https://files.pythonhosted.org/packages/3f/cc/b07000438a29ac5cfb2194bfc128151d52f333cee74dd7dfe3fb733fc16c/greenlet-3.2.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:55e9c5affaa6775e2c6b67659f3a71684de4c549b3dd9afca3bc773533d284fa", size = 1142073, upload-time = "2025-08-07T13:18:21.737Z" }, + { url = "https://files.pythonhosted.org/packages/67/24/28a5b2fa42d12b3d7e5614145f0bd89714c34c08be6aabe39c14dd52db34/greenlet-3.2.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c9c6de1940a7d828635fbd254d69db79e54619f165ee7ce32fda763a9cb6a58c", size = 1548385, upload-time = "2025-11-04T12:42:11.067Z" }, + { url = "https://files.pythonhosted.org/packages/6a/05/03f2f0bdd0b0ff9a4f7b99333d57b53a7709c27723ec8123056b084e69cd/greenlet-3.2.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03c5136e7be905045160b1b9fdca93dd6727b180feeafda6818e6496434ed8c5", size = 1613329, upload-time = "2025-11-04T12:42:12.928Z" }, { url = "https://files.pythonhosted.org/packages/d8/0f/30aef242fcab550b0b3520b8e3561156857c94288f0332a79928c31a52cf/greenlet-3.2.4-cp311-cp311-win_amd64.whl", hash = "sha256:9c40adce87eaa9ddb593ccb0fa6a07caf34015a29bf8d344811665b573138db9", size = 299100, upload-time = "2025-08-07T13:44:12.287Z" }, { url = "https://files.pythonhosted.org/packages/44/69/9b804adb5fd0671f367781560eb5eb586c4d495277c93bde4307b9e28068/greenlet-3.2.4-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3b67ca49f54cede0186854a008109d6ee71f66bd57bb36abd6d0a0267b540cdd", size = 274079, upload-time = "2025-08-07T13:15:45.033Z" }, { url = "https://files.pythonhosted.org/packages/46/e9/d2a80c99f19a153eff70bc451ab78615583b8dac0754cfb942223d2c1a0d/greenlet-3.2.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ddf9164e7a5b08e9d22511526865780a576f19ddd00d62f8a665949327fde8bb", size = 640997, upload-time = "2025-08-07T13:42:56.234Z" }, @@ -1576,6 +1578,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/19/0d/6660d55f7373b2ff8152401a83e02084956da23ae58cddbfb0b330978fe9/greenlet-3.2.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b3812d8d0c9579967815af437d96623f45c0f2ae5f04e366de62a12d83a8fb0", size = 607586, upload-time = "2025-08-07T13:18:28.544Z" }, { url = "https://files.pythonhosted.org/packages/8e/1a/c953fdedd22d81ee4629afbb38d2f9d71e37d23caace44775a3a969147d4/greenlet-3.2.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:abbf57b5a870d30c4675928c37278493044d7c14378350b3aa5d484fa65575f0", size = 1123281, upload-time = "2025-08-07T13:42:39.858Z" }, { url = "https://files.pythonhosted.org/packages/3f/c7/12381b18e21aef2c6bd3a636da1088b888b97b7a0362fac2e4de92405f97/greenlet-3.2.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:20fb936b4652b6e307b8f347665e2c615540d4b42b3b4c8a321d8286da7e520f", size = 1151142, upload-time = "2025-08-07T13:18:22.981Z" }, + { url = "https://files.pythonhosted.org/packages/27/45/80935968b53cfd3f33cf99ea5f08227f2646e044568c9b1555b58ffd61c2/greenlet-3.2.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee7a6ec486883397d70eec05059353b8e83eca9168b9f3f9a361971e77e0bcd0", size = 1564846, upload-time = "2025-11-04T12:42:15.191Z" }, + { url = "https://files.pythonhosted.org/packages/69/02/b7c30e5e04752cb4db6202a3858b149c0710e5453b71a3b2aec5d78a1aab/greenlet-3.2.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:326d234cbf337c9c3def0676412eb7040a35a768efc92504b947b3e9cfc7543d", size = 1633814, upload-time = "2025-11-04T12:42:17.175Z" }, { url = "https://files.pythonhosted.org/packages/e9/08/b0814846b79399e585f974bbeebf5580fbe59e258ea7be64d9dfb253c84f/greenlet-3.2.4-cp312-cp312-win_amd64.whl", hash = "sha256:a7d4e128405eea3814a12cc2605e0e6aedb4035bf32697f72deca74de4105e02", size = 299899, upload-time = "2025-08-07T13:38:53.448Z" }, { url = "https://files.pythonhosted.org/packages/49/e8/58c7f85958bda41dafea50497cbd59738c5c43dbbea5ee83d651234398f4/greenlet-3.2.4-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:1a921e542453fe531144e91e1feedf12e07351b1cf6c9e8a3325ea600a715a31", size = 272814, upload-time = "2025-08-07T13:15:50.011Z" }, { url = "https://files.pythonhosted.org/packages/62/dd/b9f59862e9e257a16e4e610480cfffd29e3fae018a68c2332090b53aac3d/greenlet-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd3c8e693bff0fff6ba55f140bf390fa92c994083f838fece0f63be121334945", size = 641073, upload-time = "2025-08-07T13:42:57.23Z" }, @@ -1585,6 +1589,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ee/43/3cecdc0349359e1a527cbf2e3e28e5f8f06d3343aaf82ca13437a9aa290f/greenlet-3.2.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:23768528f2911bcd7e475210822ffb5254ed10d71f4028387e5a99b4c6699671", size = 610497, upload-time = "2025-08-07T13:18:31.636Z" }, { url = "https://files.pythonhosted.org/packages/b8/19/06b6cf5d604e2c382a6f31cafafd6f33d5dea706f4db7bdab184bad2b21d/greenlet-3.2.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:00fadb3fedccc447f517ee0d3fd8fe49eae949e1cd0f6a611818f4f6fb7dc83b", size = 1121662, upload-time = "2025-08-07T13:42:41.117Z" }, { url = "https://files.pythonhosted.org/packages/a2/15/0d5e4e1a66fab130d98168fe984c509249c833c1a3c16806b90f253ce7b9/greenlet-3.2.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:d25c5091190f2dc0eaa3f950252122edbbadbb682aa7b1ef2f8af0f8c0afefae", size = 1149210, upload-time = "2025-08-07T13:18:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/1c/53/f9c440463b3057485b8594d7a638bed53ba531165ef0ca0e6c364b5cc807/greenlet-3.2.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6e343822feb58ac4d0a1211bd9399de2b3a04963ddeec21530fc426cc121f19b", size = 1564759, upload-time = "2025-11-04T12:42:19.395Z" }, + { url = "https://files.pythonhosted.org/packages/47/e4/3bb4240abdd0a8d23f4f88adec746a3099f0d86bfedb623f063b2e3b4df0/greenlet-3.2.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ca7f6f1f2649b89ce02f6f229d7c19f680a6238af656f61e0115b24857917929", size = 1634288, upload-time = "2025-11-04T12:42:21.174Z" }, { url = "https://files.pythonhosted.org/packages/0b/55/2321e43595e6801e105fcfdee02b34c0f996eb71e6ddffca6b10b7e1d771/greenlet-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:554b03b6e73aaabec3745364d6239e9e012d64c68ccd0b8430c64ccc14939a8b", size = 299685, upload-time = "2025-08-07T13:24:38.824Z" }, ] @@ -4742,7 +4748,7 @@ wheels = [ [[package]] name = "skyvern" -version = "0.2.21" +version = "0.2.22" source = { editable = "." } dependencies = [ { name = "aioboto3" },