Publish npm package using Trusted Publisher (#3953)
This commit is contained in:
committed by
GitHub
parent
af88a7912b
commit
e3cd3eeae0
15
.github/workflows/ts-sdk-release.yml
vendored
15
.github/workflows/ts-sdk-release.yml
vendored
@@ -40,6 +40,9 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: check-version-change
|
||||
if: needs.check-version-change.outputs.version_changed == 'true' || github.event_name == 'workflow_dispatch'
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./skyvern-ts/client
|
||||
@@ -49,19 +52,21 @@ jobs:
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '18'
|
||||
node-version: '20'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
- name: Upgrade npm to a Trusted Publishing-capable version
|
||||
run: npm i -g npm@^11.5.1
|
||||
- name: Install Fern dependencies
|
||||
run: npm install -g patch-package
|
||||
- name: Install dependencies
|
||||
run: npm install
|
||||
run: npm ci
|
||||
- name: Build CJS
|
||||
run: npx tsc --project ./tsconfig.cjs.json
|
||||
- name: Build ESM
|
||||
run: npx tsc --project ./tsconfig.esm.json
|
||||
- name: Rename ESM files
|
||||
run: node scripts/rename-to-esm-files.js dist/esm
|
||||
- name: Publish to npm
|
||||
run: npm publish --access public
|
||||
- name: Publish to npm with provenance via OIDC
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
NPM_CONFIG_PROVENANCE: "true"
|
||||
run: npm publish --access public --provenance
|
||||
|
||||
@@ -34,3 +34,8 @@ groups:
|
||||
description: "The Skyvern TypeScript library provides convenient access to the Skyvern APIs from TypeScript."
|
||||
publishConfig:
|
||||
access: "public"
|
||||
provenance: true
|
||||
repository:
|
||||
type: git
|
||||
url: https://github.com/Skyvern-AI/skyvern.git
|
||||
directory: skyvern-ts/client
|
||||
|
||||
241
skyvern-ts/client/package-lock.json
generated
241
skyvern-ts/client/package-lock.json
generated
@@ -646,9 +646,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/ansi": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.1.tgz",
|
||||
"integrity": "sha512-yqq0aJW/5XPhi5xOAL1xRCpe1eh8UFVgYFpFsjEqmIR8rKLyP+HINvFXwUaxYICflJrVlxnp7lLN6As735kVpw==",
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz",
|
||||
"integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -656,14 +656,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/confirm": {
|
||||
"version": "5.1.19",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.19.tgz",
|
||||
"integrity": "sha512-wQNz9cfcxrtEnUyG5PndC8g3gZ7lGDBzmWiXZkX8ot3vfZ+/BLjR8EvyGX4YzQLeVqtAlY/YScZpW7CW8qMoDQ==",
|
||||
"version": "5.1.20",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.20.tgz",
|
||||
"integrity": "sha512-HDGiWh2tyRZa0M1ZnEIUCQro25gW/mN8ODByicQrbR1yHx4hT+IOpozCMi5TgBtUdklLwRI2mv14eNpftDluEw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/core": "^10.3.0",
|
||||
"@inquirer/type": "^3.0.9"
|
||||
"@inquirer/core": "^10.3.1",
|
||||
"@inquirer/type": "^3.0.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -678,20 +678,20 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/core": {
|
||||
"version": "10.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.0.tgz",
|
||||
"integrity": "sha512-Uv2aPPPSK5jeCplQmQ9xadnFx2Zhj9b5Dj7bU6ZeCdDNNY11nhYy4btcSdtDguHqCT2h5oNeQTcUNSGGLA7NTA==",
|
||||
"version": "10.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.1.tgz",
|
||||
"integrity": "sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@inquirer/ansi": "^1.0.1",
|
||||
"@inquirer/figures": "^1.0.14",
|
||||
"@inquirer/type": "^3.0.9",
|
||||
"@inquirer/ansi": "^1.0.2",
|
||||
"@inquirer/figures": "^1.0.15",
|
||||
"@inquirer/type": "^3.0.10",
|
||||
"cli-width": "^4.1.0",
|
||||
"mute-stream": "^2.0.0",
|
||||
"mute-stream": "^3.0.0",
|
||||
"signal-exit": "^4.1.0",
|
||||
"wrap-ansi": "^6.2.0",
|
||||
"yoctocolors-cjs": "^2.1.2"
|
||||
"yoctocolors-cjs": "^2.1.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
@@ -706,9 +706,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/figures": {
|
||||
"version": "1.0.14",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.14.tgz",
|
||||
"integrity": "sha512-DbFgdt+9/OZYFM+19dbpXOSeAstPy884FPy1KjDu4anWwymZeOYhMY1mdFri172htv6mvc/uvIAAi7b7tvjJBQ==",
|
||||
"version": "1.0.15",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz",
|
||||
"integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -716,9 +716,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@inquirer/type": {
|
||||
"version": "3.0.9",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.9.tgz",
|
||||
"integrity": "sha512-QPaNt/nmE2bLGQa9b7wwyRJoLZ7pN6rcyXvzU0YCmivmJyq1BVo94G98tStRWkoD1RgDX5C+dPlhhHzNdu/W/w==",
|
||||
"version": "3.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz",
|
||||
"integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
@@ -827,9 +827,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.2.tgz",
|
||||
"integrity": "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -841,9 +841,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.2.tgz",
|
||||
"integrity": "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -855,9 +855,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.53.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.0.tgz",
|
||||
"integrity": "sha512-nBG2BXRU3ifdK0HdqBKaT5VI6ScoIpABYZ+dWwQkIOYd8Suo4iykgPikjhsTd7NeHgJJ3OqlKYCcNkZtB1iLVQ==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.2.tgz",
|
||||
"integrity": "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -869,9 +869,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.2.tgz",
|
||||
"integrity": "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -883,9 +883,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-arm64": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.2.tgz",
|
||||
"integrity": "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -897,9 +897,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-x64": {
|
||||
"version": "4.53.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.0.tgz",
|
||||
"integrity": "sha512-1SvE5euwWV8JqFc4zEAqHbJbf2yJl00EoHVcnlFqLzjrIExYttLxfZeMDIXY6Yx+bskphrQakpChZKzE2JECEg==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.2.tgz",
|
||||
"integrity": "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -911,9 +911,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.2.tgz",
|
||||
"integrity": "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -925,9 +925,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.2.tgz",
|
||||
"integrity": "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -939,9 +939,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -953,9 +953,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.2.tgz",
|
||||
"integrity": "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -967,9 +967,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-loong64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
@@ -981,9 +981,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-ppc64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -995,9 +995,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -1009,9 +1009,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-musl": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.2.tgz",
|
||||
"integrity": "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -1023,9 +1023,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -1037,9 +1037,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1051,9 +1051,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.2.tgz",
|
||||
"integrity": "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1065,9 +1065,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-openharmony-arm64": {
|
||||
"version": "4.53.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.0.tgz",
|
||||
"integrity": "sha512-mEN2k1zKO5PUzW8W15hKpLh+zZI2by1onX2GfI93OekGbKN5aTjWGo7yAjwRZLjhAgs2UQcXmEWbIw0R5B4RnQ==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.2.tgz",
|
||||
"integrity": "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1079,9 +1079,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.2.tgz",
|
||||
"integrity": "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -1093,9 +1093,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.2.tgz",
|
||||
"integrity": "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -1107,9 +1107,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-gnu": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.2.tgz",
|
||||
"integrity": "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1121,9 +1121,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"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==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.2.tgz",
|
||||
"integrity": "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -1843,9 +1843,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.248",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.248.tgz",
|
||||
"integrity": "sha512-zsur2yunphlyAO4gIubdJEXCK6KOVvtpiuDfCIqbM9FjcnMYiyn0ICa3hWfPr0nc41zcLWobgy1iL7VvoOyA2Q==",
|
||||
"version": "1.5.249",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.249.tgz",
|
||||
"integrity": "sha512-5vcfL3BBe++qZ5kuFhD/p8WOM1N9m3nwvJPULJx+4xf2usSlZFJ0qoNYO2fOX4hi3ocuDcmDobtA+5SFr4OmBg==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
@@ -2317,13 +2317,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/mute-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
|
||||
"integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
|
||||
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": "^18.17.0 || >=20.5.0"
|
||||
"node": "^20.17.0 || >=22.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
@@ -2477,11 +2477,10 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.53.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.0.tgz",
|
||||
"integrity": "sha512-43Z5T+4YTdfYkkA6CStU2DUYh7Ha9dLtvK+K3n0yEE/QS+4i28vSxrQsM59KqpvmT4tbOwJsFnRGMj/tvmQwWw==",
|
||||
"version": "4.53.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.2.tgz",
|
||||
"integrity": "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/estree": "1.0.8"
|
||||
@@ -2494,28 +2493,28 @@
|
||||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@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",
|
||||
"@rollup/rollup-android-arm-eabi": "4.53.2",
|
||||
"@rollup/rollup-android-arm64": "4.53.2",
|
||||
"@rollup/rollup-darwin-arm64": "4.53.2",
|
||||
"@rollup/rollup-darwin-x64": "4.53.2",
|
||||
"@rollup/rollup-freebsd-arm64": "4.53.2",
|
||||
"@rollup/rollup-freebsd-x64": "4.53.2",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.53.2",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.53.2",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.53.2",
|
||||
"@rollup/rollup-linux-loong64-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-ppc64-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.53.2",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.53.2",
|
||||
"@rollup/rollup-linux-x64-musl": "4.53.2",
|
||||
"@rollup/rollup-openharmony-arm64": "4.53.2",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.53.2",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.53.2",
|
||||
"@rollup/rollup-win32-x64-gnu": "4.53.2",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.53.2",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
"name": "@skyvern/client",
|
||||
"version": "0.2.22",
|
||||
"private": false,
|
||||
"repository": "github:Skyvern-AI/skyvern",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Skyvern-AI/skyvern.git",
|
||||
"directory": "skyvern-ts/client"
|
||||
},
|
||||
"type": "commonjs",
|
||||
"main": "./dist/cjs/index.js",
|
||||
"module": "./dist/esm/index.mjs",
|
||||
@@ -64,6 +68,7 @@
|
||||
"sideEffects": false,
|
||||
"description": "The Skyvern TypeScript library provides convenient access to the Skyvern APIs from TypeScript.",
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
"access": "public",
|
||||
"provenance": true
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,6 +475,249 @@ await client.workflows.updateWorkflowFolder("wpid_123");
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</details>
|
||||
|
||||
## BrowserProfiles
|
||||
<details><summary><code>client.browserProfiles.<a href="/src/api/resources/browserProfiles/client/Client.ts">listBrowserProfiles</a>({ ...params }) -> Skyvern.BrowserProfile[]</code></summary>
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
#### 📝 Description
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
Get all browser profiles for the organization
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### 🔌 Usage
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
```typescript
|
||||
await client.browserProfiles.listBrowserProfiles({
|
||||
include_deleted: true
|
||||
});
|
||||
|
||||
```
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### ⚙️ Parameters
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**request:** `Skyvern.ListBrowserProfilesV1BrowserProfilesGetRequest`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**requestOptions:** `BrowserProfiles.RequestOptions`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</details>
|
||||
|
||||
<details><summary><code>client.browserProfiles.<a href="/src/api/resources/browserProfiles/client/Client.ts">createBrowserProfile</a>({ ...params }) -> Skyvern.BrowserProfile</code></summary>
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
#### 🔌 Usage
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
```typescript
|
||||
await client.browserProfiles.createBrowserProfile({
|
||||
name: "name"
|
||||
});
|
||||
|
||||
```
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### ⚙️ Parameters
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**request:** `Skyvern.CreateBrowserProfileRequest`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**requestOptions:** `BrowserProfiles.RequestOptions`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</details>
|
||||
|
||||
<details><summary><code>client.browserProfiles.<a href="/src/api/resources/browserProfiles/client/Client.ts">getBrowserProfile</a>(profileId) -> Skyvern.BrowserProfile</code></summary>
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
#### 📝 Description
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
Get a specific browser profile by ID
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### 🔌 Usage
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
```typescript
|
||||
await client.browserProfiles.getBrowserProfile("bp_123456");
|
||||
|
||||
```
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### ⚙️ Parameters
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**profileId:** `string` — The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**requestOptions:** `BrowserProfiles.RequestOptions`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</details>
|
||||
|
||||
<details><summary><code>client.browserProfiles.<a href="/src/api/resources/browserProfiles/client/Client.ts">deleteBrowserProfile</a>(profileId) -> void</code></summary>
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
#### 📝 Description
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
Delete a browser profile (soft delete)
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### 🔌 Usage
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
```typescript
|
||||
await client.browserProfiles.deleteBrowserProfile("bp_123456");
|
||||
|
||||
```
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
#### ⚙️ Parameters
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**profileId:** `string` — The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<dl>
|
||||
<dd>
|
||||
|
||||
**requestOptions:** `BrowserProfiles.RequestOptions`
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
</details>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import * as Skyvern from "./api/index.js";
|
||||
import { BrowserProfiles } from "./api/resources/browserProfiles/client/Client.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";
|
||||
@@ -18,6 +19,7 @@ export declare namespace SkyvernClient {
|
||||
export class SkyvernClient {
|
||||
protected readonly _options: SkyvernClient.Options;
|
||||
protected _workflows: Workflows | undefined;
|
||||
protected _browserProfiles: BrowserProfiles | undefined;
|
||||
protected _scripts: Scripts | undefined;
|
||||
|
||||
constructor(_options: SkyvernClient.Options = {}) {
|
||||
@@ -42,6 +44,10 @@ export class SkyvernClient {
|
||||
return (this._workflows ??= new Workflows(this._options));
|
||||
}
|
||||
|
||||
public get browserProfiles(): BrowserProfiles {
|
||||
return (this._browserProfiles ??= new BrowserProfiles(this._options));
|
||||
}
|
||||
|
||||
public get scripts(): Scripts {
|
||||
return (this._scripts ??= new Scripts(this._options));
|
||||
}
|
||||
@@ -530,25 +536,34 @@ export class SkyvernClient {
|
||||
/**
|
||||
* Create a new workflow
|
||||
*
|
||||
* @param {Skyvern.WorkflowRequest} request
|
||||
* @param {Skyvern.CreateWorkflowRequest} request
|
||||
* @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.createWorkflow({})
|
||||
* await client.createWorkflow({
|
||||
* folder_id: "folder_id",
|
||||
* body: {}
|
||||
* })
|
||||
*/
|
||||
public createWorkflow(
|
||||
request: Skyvern.WorkflowRequest,
|
||||
request: Skyvern.CreateWorkflowRequest,
|
||||
requestOptions?: SkyvernClient.RequestOptions,
|
||||
): core.HttpResponsePromise<Skyvern.Workflow> {
|
||||
return core.HttpResponsePromise.fromPromise(this.__createWorkflow(request, requestOptions));
|
||||
}
|
||||
|
||||
private async __createWorkflow(
|
||||
request: Skyvern.WorkflowRequest,
|
||||
request: Skyvern.CreateWorkflowRequest,
|
||||
requestOptions?: SkyvernClient.RequestOptions,
|
||||
): Promise<core.WithRawResponse<Skyvern.Workflow>> {
|
||||
const { folder_id: folderId, body: _body } = request;
|
||||
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
|
||||
if (folderId != null) {
|
||||
_queryParams.folder_id = folderId;
|
||||
}
|
||||
|
||||
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
|
||||
this._options?.headers,
|
||||
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
|
||||
@@ -564,9 +579,9 @@ export class SkyvernClient {
|
||||
method: "POST",
|
||||
headers: _headers,
|
||||
contentType: "application/json",
|
||||
queryParameters: requestOptions?.queryParams,
|
||||
queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
|
||||
requestType: "json",
|
||||
body: request,
|
||||
body: _body,
|
||||
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
|
||||
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
|
||||
abortSignal: requestOptions?.abortSignal,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import type * as Skyvern from "../../index.js";
|
||||
|
||||
/**
|
||||
* @example
|
||||
* {
|
||||
* folder_id: "folder_id",
|
||||
* body: {}
|
||||
* }
|
||||
*/
|
||||
export interface CreateWorkflowRequest {
|
||||
/** Optional folder ID to assign the workflow to */
|
||||
folder_id?: string;
|
||||
body: Skyvern.WorkflowRequest;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
export type { CreateBrowserSessionRequest } from "./CreateBrowserSessionRequest.js";
|
||||
export type { CreateCredentialRequest } from "./CreateCredentialRequest.js";
|
||||
export type { CreateScriptRequest } from "./CreateScriptRequest.js";
|
||||
export type { CreateWorkflowRequest } from "./CreateWorkflowRequest.js";
|
||||
export type { DeployScriptRequest } from "./DeployScriptRequest.js";
|
||||
export type { GetCredentialsRequest } from "./GetCredentialsRequest.js";
|
||||
export type { GetRunArtifactsRequest } from "./GetRunArtifactsRequest.js";
|
||||
|
||||
@@ -0,0 +1,343 @@
|
||||
// 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 BrowserProfiles {
|
||||
export interface Options extends BaseClientOptions {}
|
||||
|
||||
export interface RequestOptions extends BaseRequestOptions {}
|
||||
}
|
||||
|
||||
export class BrowserProfiles {
|
||||
protected readonly _options: BrowserProfiles.Options;
|
||||
|
||||
constructor(_options: BrowserProfiles.Options = {}) {
|
||||
this._options = _options;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all browser profiles for the organization
|
||||
*
|
||||
* @param {Skyvern.ListBrowserProfilesV1BrowserProfilesGetRequest} request
|
||||
* @param {BrowserProfiles.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.browserProfiles.listBrowserProfiles({
|
||||
* include_deleted: true
|
||||
* })
|
||||
*/
|
||||
public listBrowserProfiles(
|
||||
request: Skyvern.ListBrowserProfilesV1BrowserProfilesGetRequest = {},
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): core.HttpResponsePromise<Skyvern.BrowserProfile[]> {
|
||||
return core.HttpResponsePromise.fromPromise(this.__listBrowserProfiles(request, requestOptions));
|
||||
}
|
||||
|
||||
private async __listBrowserProfiles(
|
||||
request: Skyvern.ListBrowserProfilesV1BrowserProfilesGetRequest = {},
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): Promise<core.WithRawResponse<Skyvern.BrowserProfile[]>> {
|
||||
const { include_deleted: includeDeleted } = request;
|
||||
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
|
||||
if (includeDeleted != null) {
|
||||
_queryParams.include_deleted = includeDeleted.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/browser_profiles",
|
||||
),
|
||||
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.BrowserProfile[], 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/browser_profiles.");
|
||||
case "unknown":
|
||||
throw new errors.SkyvernError({
|
||||
message: _response.error.errorMessage,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Skyvern.CreateBrowserProfileRequest} request
|
||||
* @param {BrowserProfiles.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.browserProfiles.createBrowserProfile({
|
||||
* name: "name"
|
||||
* })
|
||||
*/
|
||||
public createBrowserProfile(
|
||||
request: Skyvern.CreateBrowserProfileRequest,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): core.HttpResponsePromise<Skyvern.BrowserProfile> {
|
||||
return core.HttpResponsePromise.fromPromise(this.__createBrowserProfile(request, requestOptions));
|
||||
}
|
||||
|
||||
private async __createBrowserProfile(
|
||||
request: Skyvern.CreateBrowserProfileRequest,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): Promise<core.WithRawResponse<Skyvern.BrowserProfile>> {
|
||||
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/browser_profiles",
|
||||
),
|
||||
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.BrowserProfile, rawResponse: _response.rawResponse };
|
||||
}
|
||||
|
||||
if (_response.error.reason === "status-code") {
|
||||
switch (_response.error.statusCode) {
|
||||
case 422:
|
||||
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
|
||||
default:
|
||||
throw new errors.SkyvernError({
|
||||
statusCode: _response.error.statusCode,
|
||||
body: _response.error.body,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
switch (_response.error.reason) {
|
||||
case "non-json":
|
||||
throw new errors.SkyvernError({
|
||||
statusCode: _response.error.statusCode,
|
||||
body: _response.error.rawBody,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
case "timeout":
|
||||
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling POST /v1/browser_profiles.");
|
||||
case "unknown":
|
||||
throw new errors.SkyvernError({
|
||||
message: _response.error.errorMessage,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a specific browser profile by ID
|
||||
*
|
||||
* @param {string} profileId - The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
* @param {BrowserProfiles.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.NotFoundError}
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.browserProfiles.getBrowserProfile("bp_123456")
|
||||
*/
|
||||
public getBrowserProfile(
|
||||
profileId: string,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): core.HttpResponsePromise<Skyvern.BrowserProfile> {
|
||||
return core.HttpResponsePromise.fromPromise(this.__getBrowserProfile(profileId, requestOptions));
|
||||
}
|
||||
|
||||
private async __getBrowserProfile(
|
||||
profileId: string,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): Promise<core.WithRawResponse<Skyvern.BrowserProfile>> {
|
||||
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/browser_profiles/${core.url.encodePathParam(profileId)}`,
|
||||
),
|
||||
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.BrowserProfile, 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/browser_profiles/{profile_id}.",
|
||||
);
|
||||
case "unknown":
|
||||
throw new errors.SkyvernError({
|
||||
message: _response.error.errorMessage,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a browser profile (soft delete)
|
||||
*
|
||||
* @param {string} profileId - The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
* @param {BrowserProfiles.RequestOptions} requestOptions - Request-specific configuration.
|
||||
*
|
||||
* @throws {@link Skyvern.NotFoundError}
|
||||
* @throws {@link Skyvern.UnprocessableEntityError}
|
||||
*
|
||||
* @example
|
||||
* await client.browserProfiles.deleteBrowserProfile("bp_123456")
|
||||
*/
|
||||
public deleteBrowserProfile(
|
||||
profileId: string,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): core.HttpResponsePromise<void> {
|
||||
return core.HttpResponsePromise.fromPromise(this.__deleteBrowserProfile(profileId, requestOptions));
|
||||
}
|
||||
|
||||
private async __deleteBrowserProfile(
|
||||
profileId: string,
|
||||
requestOptions?: BrowserProfiles.RequestOptions,
|
||||
): Promise<core.WithRawResponse<void>> {
|
||||
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/browser_profiles/${core.url.encodePathParam(profileId)}`,
|
||||
),
|
||||
method: "DELETE",
|
||||
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: undefined, 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/browser_profiles/{profile_id}.",
|
||||
);
|
||||
case "unknown":
|
||||
throw new errors.SkyvernError({
|
||||
message: _response.error.errorMessage,
|
||||
rawResponse: _response.rawResponse,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./requests/index.js";
|
||||
@@ -0,0 +1,18 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* @example
|
||||
* {
|
||||
* name: "name"
|
||||
* }
|
||||
*/
|
||||
export interface CreateBrowserProfileRequest {
|
||||
/** Name for the browser profile */
|
||||
name: string;
|
||||
/** Optional profile description */
|
||||
description?: string;
|
||||
/** Persistent browser session to convert into a profile */
|
||||
browser_session_id?: string;
|
||||
/** Workflow run whose persisted session should be captured */
|
||||
workflow_run_id?: string;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* @example
|
||||
* {
|
||||
* include_deleted: true
|
||||
* }
|
||||
*/
|
||||
export interface ListBrowserProfilesV1BrowserProfilesGetRequest {
|
||||
/** Include deleted browser profiles */
|
||||
include_deleted?: boolean;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export type { CreateBrowserProfileRequest } from "./CreateBrowserProfileRequest.js";
|
||||
export type { ListBrowserProfilesV1BrowserProfilesGetRequest } from "./ListBrowserProfilesV1BrowserProfilesGetRequest.js";
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./client/index.js";
|
||||
@@ -1,3 +1,5 @@
|
||||
export * from "./browserProfiles/client/requests/index.js";
|
||||
export * as browserProfiles from "./browserProfiles/index.js";
|
||||
export * as scripts from "./scripts/index.js";
|
||||
export * from "./workflows/client/requests/index.js";
|
||||
export * as workflows from "./workflows/index.js";
|
||||
|
||||
11
skyvern-ts/client/src/api/types/BrowserProfile.ts
Normal file
11
skyvern-ts/client/src/api/types/BrowserProfile.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
export interface BrowserProfile {
|
||||
browser_profile_id: string;
|
||||
organization_id: string;
|
||||
name: string;
|
||||
description?: string;
|
||||
created_at: string;
|
||||
modified_at: string;
|
||||
deleted_at?: string;
|
||||
}
|
||||
@@ -7,4 +7,5 @@ export interface InputOrSelectContext {
|
||||
is_search_bar?: boolean;
|
||||
is_location_input?: boolean;
|
||||
is_date_related?: boolean;
|
||||
date_format?: string;
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ export type RunSdkActionRequestAction =
|
||||
| Skyvern.RunSdkActionRequestAction.AiClick
|
||||
| Skyvern.RunSdkActionRequestAction.AiInputText
|
||||
| Skyvern.RunSdkActionRequestAction.AiSelectOption
|
||||
| Skyvern.RunSdkActionRequestAction.AiUploadFile
|
||||
| Skyvern.RunSdkActionRequestAction.Extract;
|
||||
|
||||
export namespace RunSdkActionRequestAction {
|
||||
@@ -29,6 +30,10 @@ export namespace RunSdkActionRequestAction {
|
||||
type: "ai_select_option";
|
||||
}
|
||||
|
||||
export interface AiUploadFile extends Skyvern.UploadFileAction {
|
||||
type: "ai_upload_file";
|
||||
}
|
||||
|
||||
export interface Extract extends Skyvern.ExtractAction {
|
||||
type: "extract";
|
||||
}
|
||||
|
||||
@@ -31,6 +31,8 @@ export interface TaskRunResponse {
|
||||
app_url?: string;
|
||||
/** ID of the Skyvern persistent browser session used for this run */
|
||||
browser_session_id?: string;
|
||||
/** ID of the browser profile used for this run */
|
||||
browser_profile_id?: string;
|
||||
/** The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot */
|
||||
max_screenshot_scrolls?: number;
|
||||
/** The script run result */
|
||||
|
||||
24
skyvern-ts/client/src/api/types/UploadFileAction.ts
Normal file
24
skyvern-ts/client/src/api/types/UploadFileAction.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
// This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
/**
|
||||
* Upload file action parameters.
|
||||
*/
|
||||
export interface UploadFileAction {
|
||||
/** CSS selector for the element */
|
||||
selector?: string;
|
||||
/** File URL for upload */
|
||||
file_url?: string;
|
||||
/** The intention or goal of the upload */
|
||||
intention?: string;
|
||||
/** Additional context data */
|
||||
data?: UploadFileAction.Data;
|
||||
/** Timeout in milliseconds */
|
||||
timeout?: number;
|
||||
}
|
||||
|
||||
export namespace UploadFileAction {
|
||||
/**
|
||||
* Additional context data
|
||||
*/
|
||||
export type Data = string | Record<string, unknown>;
|
||||
}
|
||||
@@ -21,4 +21,5 @@ export interface WorkflowCreateYamlRequest {
|
||||
cache_key?: string;
|
||||
run_sequentially?: boolean;
|
||||
sequential_key?: string;
|
||||
folder_id?: string;
|
||||
}
|
||||
|
||||
@@ -46,6 +46,8 @@ export interface WorkflowRunRequest {
|
||||
totp_identifier?: string;
|
||||
/** ID of a Skyvern browser session to reuse, having it continue from the current screen state */
|
||||
browser_session_id?: string;
|
||||
/** ID of a browser profile to reuse for this workflow run */
|
||||
browser_profile_id?: string;
|
||||
/** The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot. */
|
||||
max_screenshot_scrolls?: number;
|
||||
/** The extra HTTP headers for the requests in browser. */
|
||||
|
||||
@@ -31,6 +31,8 @@ export interface WorkflowRunResponse {
|
||||
app_url?: string;
|
||||
/** ID of the Skyvern persistent browser session used for this run */
|
||||
browser_session_id?: string;
|
||||
/** ID of the browser profile used for this run */
|
||||
browser_profile_id?: string;
|
||||
/** The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot */
|
||||
max_screenshot_scrolls?: number;
|
||||
/** The script run result */
|
||||
|
||||
@@ -19,6 +19,7 @@ export * from "./BitwardenLoginCredentialParameterYaml.js";
|
||||
export * from "./BitwardenSensitiveInformationParameter.js";
|
||||
export * from "./BitwardenSensitiveInformationParameterYaml.js";
|
||||
export * from "./BlockType.js";
|
||||
export * from "./BrowserProfile.js";
|
||||
export * from "./BrowserSessionResponse.js";
|
||||
export * from "./ClickAction.js";
|
||||
export * from "./ClickContext.js";
|
||||
@@ -113,6 +114,7 @@ export * from "./ThoughtScenario.js";
|
||||
export * from "./ThoughtType.js";
|
||||
export * from "./TotpCode.js";
|
||||
export * from "./TotpType.js";
|
||||
export * from "./UploadFileAction.js";
|
||||
export * from "./UploadToS3Block.js";
|
||||
export * from "./UploadToS3BlockYaml.js";
|
||||
export * from "./UrlBlock.js";
|
||||
|
||||
236
skyvern-ts/client/tests/wire/browserProfiles.test.ts
Normal file
236
skyvern-ts/client/tests/wire/browserProfiles.test.ts
Normal file
@@ -0,0 +1,236 @@
|
||||
// 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("BrowserProfiles", () => {
|
||||
test("listBrowserProfiles (1)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = [
|
||||
{
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
},
|
||||
];
|
||||
server
|
||||
.mockEndpoint()
|
||||
.get("/v1/browser_profiles")
|
||||
.respondWith()
|
||||
.statusCode(200)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
const response = await client.browserProfiles.listBrowserProfiles({
|
||||
include_deleted: true,
|
||||
});
|
||||
expect(response).toEqual([
|
||||
{
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
test("listBrowserProfiles (2)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.get("/v1/browser_profiles")
|
||||
.respondWith()
|
||||
.statusCode(422)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.listBrowserProfiles();
|
||||
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
|
||||
});
|
||||
|
||||
test("createBrowserProfile (1)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
const rawRequestBody = { name: "name" };
|
||||
const rawResponseBody = {
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
};
|
||||
server
|
||||
.mockEndpoint()
|
||||
.post("/v1/browser_profiles")
|
||||
.jsonBody(rawRequestBody)
|
||||
.respondWith()
|
||||
.statusCode(200)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
const response = await client.browserProfiles.createBrowserProfile({
|
||||
name: "name",
|
||||
});
|
||||
expect(response).toEqual({
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
});
|
||||
});
|
||||
|
||||
test("createBrowserProfile (2)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
const rawRequestBody = { name: "name" };
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.post("/v1/browser_profiles")
|
||||
.jsonBody(rawRequestBody)
|
||||
.respondWith()
|
||||
.statusCode(422)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.createBrowserProfile({
|
||||
name: "name",
|
||||
});
|
||||
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
|
||||
});
|
||||
|
||||
test("getBrowserProfile (1)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = {
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
};
|
||||
server
|
||||
.mockEndpoint()
|
||||
.get("/v1/browser_profiles/bp_123456")
|
||||
.respondWith()
|
||||
.statusCode(200)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
const response = await client.browserProfiles.getBrowserProfile("bp_123456");
|
||||
expect(response).toEqual({
|
||||
browser_profile_id: "browser_profile_id",
|
||||
organization_id: "organization_id",
|
||||
name: "name",
|
||||
description: "description",
|
||||
created_at: "2024-01-15T09:30:00Z",
|
||||
modified_at: "2024-01-15T09:30:00Z",
|
||||
deleted_at: "2024-01-15T09:30:00Z",
|
||||
});
|
||||
});
|
||||
|
||||
test("getBrowserProfile (2)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.get("/v1/browser_profiles/profile_id")
|
||||
.respondWith()
|
||||
.statusCode(404)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.getBrowserProfile("profile_id");
|
||||
}).rejects.toThrow(Skyvern.NotFoundError);
|
||||
});
|
||||
|
||||
test("getBrowserProfile (3)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.get("/v1/browser_profiles/profile_id")
|
||||
.respondWith()
|
||||
.statusCode(422)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.getBrowserProfile("profile_id");
|
||||
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
|
||||
});
|
||||
|
||||
test("deleteBrowserProfile (1)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
server.mockEndpoint().delete("/v1/browser_profiles/bp_123456").respondWith().statusCode(200).build();
|
||||
|
||||
const response = await client.browserProfiles.deleteBrowserProfile("bp_123456");
|
||||
expect(response).toEqual(undefined);
|
||||
});
|
||||
|
||||
test("deleteBrowserProfile (2)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.delete("/v1/browser_profiles/profile_id")
|
||||
.respondWith()
|
||||
.statusCode(404)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.deleteBrowserProfile("profile_id");
|
||||
}).rejects.toThrow(Skyvern.NotFoundError);
|
||||
});
|
||||
|
||||
test("deleteBrowserProfile (3)", async () => {
|
||||
const server = mockServerPool.createServer();
|
||||
const client = new SkyvernClient({ apiKey: "test", environment: server.baseUrl });
|
||||
|
||||
const rawResponseBody = { key: "value" };
|
||||
server
|
||||
.mockEndpoint()
|
||||
.delete("/v1/browser_profiles/profile_id")
|
||||
.respondWith()
|
||||
.statusCode(422)
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.browserProfiles.deleteBrowserProfile("profile_id");
|
||||
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
|
||||
});
|
||||
});
|
||||
@@ -26,6 +26,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: { ai_fallback_triggered: true },
|
||||
errors: [{ key: "value" }],
|
||||
@@ -90,6 +91,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: {
|
||||
ai_fallback_triggered: true,
|
||||
@@ -197,6 +199,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: { ai_fallback_triggered: true },
|
||||
errors: [{ key: "value" }],
|
||||
@@ -211,6 +214,7 @@ describe("SkyvernClient", () => {
|
||||
totp_url: "totp_url",
|
||||
totp_identifier: "totp_identifier",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
extra_http_headers: { key: "value" },
|
||||
browser_address: "browser_address",
|
||||
@@ -261,6 +265,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: {
|
||||
ai_fallback_triggered: true,
|
||||
@@ -283,6 +288,7 @@ describe("SkyvernClient", () => {
|
||||
totp_url: "totp_url",
|
||||
totp_identifier: "totp_identifier",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
extra_http_headers: {
|
||||
key: "value",
|
||||
@@ -362,6 +368,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: { ai_fallback_triggered: true },
|
||||
errors: [{ key: "value" }],
|
||||
@@ -414,6 +421,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: {
|
||||
ai_fallback_triggered: true,
|
||||
@@ -728,7 +736,10 @@ describe("SkyvernClient", () => {
|
||||
.jsonBody(rawResponseBody)
|
||||
.build();
|
||||
|
||||
const response = await client.createWorkflow({});
|
||||
const response = await client.createWorkflow({
|
||||
folder_id: "folder_id",
|
||||
body: {},
|
||||
});
|
||||
expect(response).toEqual({
|
||||
workflow_id: "workflow_id",
|
||||
organization_id: "organization_id",
|
||||
@@ -804,7 +815,9 @@ describe("SkyvernClient", () => {
|
||||
.build();
|
||||
|
||||
await expect(async () => {
|
||||
return await client.createWorkflow({});
|
||||
return await client.createWorkflow({
|
||||
body: {},
|
||||
});
|
||||
}).rejects.toThrow(Skyvern.UnprocessableEntityError);
|
||||
});
|
||||
|
||||
@@ -2070,6 +2083,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: { ai_fallback_triggered: true },
|
||||
errors: [{ key: "value" }],
|
||||
@@ -2084,6 +2098,7 @@ describe("SkyvernClient", () => {
|
||||
totp_url: "totp_url",
|
||||
totp_identifier: "totp_identifier",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
extra_http_headers: { key: "value" },
|
||||
browser_address: "browser_address",
|
||||
@@ -2127,6 +2142,7 @@ describe("SkyvernClient", () => {
|
||||
finished_at: "2024-01-15T09:30:00Z",
|
||||
app_url: "app_url",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
script_run: {
|
||||
ai_fallback_triggered: true,
|
||||
@@ -2149,6 +2165,7 @@ describe("SkyvernClient", () => {
|
||||
totp_url: "totp_url",
|
||||
totp_identifier: "totp_identifier",
|
||||
browser_session_id: "browser_session_id",
|
||||
browser_profile_id: "browser_profile_id",
|
||||
max_screenshot_scrolls: 1,
|
||||
extra_http_headers: {
|
||||
key: "value",
|
||||
|
||||
@@ -41,6 +41,7 @@ if typing.TYPE_CHECKING:
|
||||
BitwardenSensitiveInformationParameter,
|
||||
BitwardenSensitiveInformationParameterYaml,
|
||||
BlockType,
|
||||
BrowserProfile,
|
||||
BrowserSessionResponse,
|
||||
ClickAction,
|
||||
ClickActionData,
|
||||
@@ -468,7 +469,7 @@ if typing.TYPE_CHECKING:
|
||||
WorkflowStatus,
|
||||
)
|
||||
from .errors import BadRequestError, ForbiddenError, NotFoundError, UnprocessableEntityError
|
||||
from . import scripts, workflows
|
||||
from . import browser_profiles, scripts, workflows
|
||||
from .client import AsyncSkyvern, Skyvern
|
||||
from .environment import SkyvernEnvironment
|
||||
from .version import __version__
|
||||
@@ -509,6 +510,7 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"BitwardenSensitiveInformationParameter": ".types",
|
||||
"BitwardenSensitiveInformationParameterYaml": ".types",
|
||||
"BlockType": ".types",
|
||||
"BrowserProfile": ".types",
|
||||
"BrowserSessionResponse": ".types",
|
||||
"ClickAction": ".types",
|
||||
"ClickActionData": ".types",
|
||||
@@ -940,6 +942,7 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"WorkflowRunTimelineType": ".types",
|
||||
"WorkflowStatus": ".types",
|
||||
"__version__": ".version",
|
||||
"browser_profiles": ".browser_profiles",
|
||||
"scripts": ".scripts",
|
||||
"workflows": ".workflows",
|
||||
}
|
||||
@@ -1003,6 +1006,7 @@ __all__ = [
|
||||
"BitwardenSensitiveInformationParameter",
|
||||
"BitwardenSensitiveInformationParameterYaml",
|
||||
"BlockType",
|
||||
"BrowserProfile",
|
||||
"BrowserSessionResponse",
|
||||
"ClickAction",
|
||||
"ClickActionData",
|
||||
@@ -1434,6 +1438,7 @@ __all__ = [
|
||||
"WorkflowRunTimelineType",
|
||||
"WorkflowStatus",
|
||||
"__version__",
|
||||
"browser_profiles",
|
||||
"scripts",
|
||||
"workflows",
|
||||
]
|
||||
|
||||
4
skyvern/client/browser_profiles/__init__.py
Normal file
4
skyvern/client/browser_profiles/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
# isort: skip_file
|
||||
|
||||
379
skyvern/client/browser_profiles/client.py
Normal file
379
skyvern/client/browser_profiles/client.py
Normal file
@@ -0,0 +1,379 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
|
||||
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
||||
from ..core.request_options import RequestOptions
|
||||
from ..types.browser_profile import BrowserProfile
|
||||
from .raw_client import AsyncRawBrowserProfilesClient, RawBrowserProfilesClient
|
||||
|
||||
# this is used as the default value for optional parameters
|
||||
OMIT = typing.cast(typing.Any, ...)
|
||||
|
||||
|
||||
class BrowserProfilesClient:
|
||||
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
||||
self._raw_client = RawBrowserProfilesClient(client_wrapper=client_wrapper)
|
||||
|
||||
@property
|
||||
def with_raw_response(self) -> RawBrowserProfilesClient:
|
||||
"""
|
||||
Retrieves a raw implementation of this client that returns raw responses.
|
||||
|
||||
Returns
|
||||
-------
|
||||
RawBrowserProfilesClient
|
||||
"""
|
||||
return self._raw_client
|
||||
|
||||
def list_browser_profiles(
|
||||
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> typing.List[BrowserProfile]:
|
||||
"""
|
||||
Get all browser profiles for the organization
|
||||
|
||||
Parameters
|
||||
----------
|
||||
include_deleted : typing.Optional[bool]
|
||||
Include deleted browser profiles
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
typing.List[BrowserProfile]
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.browser_profiles.list_browser_profiles(
|
||||
include_deleted=True,
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.list_browser_profiles(
|
||||
include_deleted=include_deleted, request_options=request_options
|
||||
)
|
||||
return _response.data
|
||||
|
||||
def create_browser_profile(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
description: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
workflow_run_id: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> BrowserProfile:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Name for the browser profile
|
||||
|
||||
description : typing.Optional[str]
|
||||
Optional profile description
|
||||
|
||||
browser_session_id : typing.Optional[str]
|
||||
Persistent browser session to convert into a profile
|
||||
|
||||
workflow_run_id : typing.Optional[str]
|
||||
Workflow run whose persisted session should be captured
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
BrowserProfile
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.browser_profiles.create_browser_profile(
|
||||
name="name",
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.create_browser_profile(
|
||||
name=name,
|
||||
description=description,
|
||||
browser_session_id=browser_session_id,
|
||||
workflow_run_id=workflow_run_id,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
def get_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> BrowserProfile:
|
||||
"""
|
||||
Get a specific browser profile by ID
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
BrowserProfile
|
||||
Successfully retrieved browser profile
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.browser_profiles.get_browser_profile(
|
||||
profile_id="bp_123456",
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.get_browser_profile(profile_id, request_options=request_options)
|
||||
return _response.data
|
||||
|
||||
def delete_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> None:
|
||||
"""
|
||||
Delete a browser profile (soft delete)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
None
|
||||
|
||||
Examples
|
||||
--------
|
||||
from skyvern import Skyvern
|
||||
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.browser_profiles.delete_browser_profile(
|
||||
profile_id="bp_123456",
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.delete_browser_profile(profile_id, request_options=request_options)
|
||||
return _response.data
|
||||
|
||||
|
||||
class AsyncBrowserProfilesClient:
|
||||
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
||||
self._raw_client = AsyncRawBrowserProfilesClient(client_wrapper=client_wrapper)
|
||||
|
||||
@property
|
||||
def with_raw_response(self) -> AsyncRawBrowserProfilesClient:
|
||||
"""
|
||||
Retrieves a raw implementation of this client that returns raw responses.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncRawBrowserProfilesClient
|
||||
"""
|
||||
return self._raw_client
|
||||
|
||||
async def list_browser_profiles(
|
||||
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> typing.List[BrowserProfile]:
|
||||
"""
|
||||
Get all browser profiles for the organization
|
||||
|
||||
Parameters
|
||||
----------
|
||||
include_deleted : typing.Optional[bool]
|
||||
Include deleted browser profiles
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
typing.List[BrowserProfile]
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.browser_profiles.list_browser_profiles(
|
||||
include_deleted=True,
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.list_browser_profiles(
|
||||
include_deleted=include_deleted, request_options=request_options
|
||||
)
|
||||
return _response.data
|
||||
|
||||
async def create_browser_profile(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
description: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
workflow_run_id: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> BrowserProfile:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Name for the browser profile
|
||||
|
||||
description : typing.Optional[str]
|
||||
Optional profile description
|
||||
|
||||
browser_session_id : typing.Optional[str]
|
||||
Persistent browser session to convert into a profile
|
||||
|
||||
workflow_run_id : typing.Optional[str]
|
||||
Workflow run whose persisted session should be captured
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
BrowserProfile
|
||||
Successful Response
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.browser_profiles.create_browser_profile(
|
||||
name="name",
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.create_browser_profile(
|
||||
name=name,
|
||||
description=description,
|
||||
browser_session_id=browser_session_id,
|
||||
workflow_run_id=workflow_run_id,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
async def get_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> BrowserProfile:
|
||||
"""
|
||||
Get a specific browser profile by ID
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
BrowserProfile
|
||||
Successfully retrieved browser profile
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.browser_profiles.get_browser_profile(
|
||||
profile_id="bp_123456",
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.get_browser_profile(profile_id, request_options=request_options)
|
||||
return _response.data
|
||||
|
||||
async def delete_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> None:
|
||||
"""
|
||||
Delete a browser profile (soft delete)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
None
|
||||
|
||||
Examples
|
||||
--------
|
||||
import asyncio
|
||||
|
||||
from skyvern import AsyncSkyvern
|
||||
|
||||
client = AsyncSkyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.browser_profiles.delete_browser_profile(
|
||||
profile_id="bp_123456",
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.delete_browser_profile(profile_id, request_options=request_options)
|
||||
return _response.data
|
||||
507
skyvern/client/browser_profiles/raw_client.py
Normal file
507
skyvern/client/browser_profiles/raw_client.py
Normal file
@@ -0,0 +1,507 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
from json.decoder import JSONDecodeError
|
||||
|
||||
from ..core.api_error import ApiError
|
||||
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
|
||||
from ..core.http_response import AsyncHttpResponse, HttpResponse
|
||||
from ..core.jsonable_encoder import jsonable_encoder
|
||||
from ..core.pydantic_utilities import parse_obj_as
|
||||
from ..core.request_options import RequestOptions
|
||||
from ..errors.not_found_error import NotFoundError
|
||||
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
||||
from ..types.browser_profile import BrowserProfile
|
||||
|
||||
# this is used as the default value for optional parameters
|
||||
OMIT = typing.cast(typing.Any, ...)
|
||||
|
||||
|
||||
class RawBrowserProfilesClient:
|
||||
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
||||
self._client_wrapper = client_wrapper
|
||||
|
||||
def list_browser_profiles(
|
||||
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> HttpResponse[typing.List[BrowserProfile]]:
|
||||
"""
|
||||
Get all browser profiles for the organization
|
||||
|
||||
Parameters
|
||||
----------
|
||||
include_deleted : typing.Optional[bool]
|
||||
Include deleted browser profiles
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[typing.List[BrowserProfile]]
|
||||
Successful Response
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
"v1/browser_profiles",
|
||||
method="GET",
|
||||
params={
|
||||
"include_deleted": include_deleted,
|
||||
},
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
typing.List[BrowserProfile],
|
||||
parse_obj_as(
|
||||
type_=typing.List[BrowserProfile], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return HttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def create_browser_profile(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
description: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
workflow_run_id: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> HttpResponse[BrowserProfile]:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Name for the browser profile
|
||||
|
||||
description : typing.Optional[str]
|
||||
Optional profile description
|
||||
|
||||
browser_session_id : typing.Optional[str]
|
||||
Persistent browser session to convert into a profile
|
||||
|
||||
workflow_run_id : typing.Optional[str]
|
||||
Workflow run whose persisted session should be captured
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[BrowserProfile]
|
||||
Successful Response
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
"v1/browser_profiles",
|
||||
method="POST",
|
||||
json={
|
||||
"name": name,
|
||||
"description": description,
|
||||
"browser_session_id": browser_session_id,
|
||||
"workflow_run_id": workflow_run_id,
|
||||
},
|
||||
headers={
|
||||
"content-type": "application/json",
|
||||
},
|
||||
request_options=request_options,
|
||||
omit=OMIT,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
BrowserProfile,
|
||||
parse_obj_as(
|
||||
type_=BrowserProfile, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return HttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def get_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> HttpResponse[BrowserProfile]:
|
||||
"""
|
||||
Get a specific browser profile by ID
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[BrowserProfile]
|
||||
Successfully retrieved browser profile
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
f"v1/browser_profiles/{jsonable_encoder(profile_id)}",
|
||||
method="GET",
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
BrowserProfile,
|
||||
parse_obj_as(
|
||||
type_=BrowserProfile, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return HttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 404:
|
||||
raise NotFoundError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
def delete_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> HttpResponse[None]:
|
||||
"""
|
||||
Delete a browser profile (soft delete)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
HttpResponse[None]
|
||||
"""
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
f"v1/browser_profiles/{jsonable_encoder(profile_id)}",
|
||||
method="DELETE",
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
return HttpResponse(response=_response, data=None)
|
||||
if _response.status_code == 404:
|
||||
raise NotFoundError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
|
||||
class AsyncRawBrowserProfilesClient:
|
||||
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
||||
self._client_wrapper = client_wrapper
|
||||
|
||||
async def list_browser_profiles(
|
||||
self, *, include_deleted: typing.Optional[bool] = None, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> AsyncHttpResponse[typing.List[BrowserProfile]]:
|
||||
"""
|
||||
Get all browser profiles for the organization
|
||||
|
||||
Parameters
|
||||
----------
|
||||
include_deleted : typing.Optional[bool]
|
||||
Include deleted browser profiles
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[typing.List[BrowserProfile]]
|
||||
Successful Response
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
"v1/browser_profiles",
|
||||
method="GET",
|
||||
params={
|
||||
"include_deleted": include_deleted,
|
||||
},
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
typing.List[BrowserProfile],
|
||||
parse_obj_as(
|
||||
type_=typing.List[BrowserProfile], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return AsyncHttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def create_browser_profile(
|
||||
self,
|
||||
*,
|
||||
name: str,
|
||||
description: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
workflow_run_id: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
) -> AsyncHttpResponse[BrowserProfile]:
|
||||
"""
|
||||
Parameters
|
||||
----------
|
||||
name : str
|
||||
Name for the browser profile
|
||||
|
||||
description : typing.Optional[str]
|
||||
Optional profile description
|
||||
|
||||
browser_session_id : typing.Optional[str]
|
||||
Persistent browser session to convert into a profile
|
||||
|
||||
workflow_run_id : typing.Optional[str]
|
||||
Workflow run whose persisted session should be captured
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[BrowserProfile]
|
||||
Successful Response
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
"v1/browser_profiles",
|
||||
method="POST",
|
||||
json={
|
||||
"name": name,
|
||||
"description": description,
|
||||
"browser_session_id": browser_session_id,
|
||||
"workflow_run_id": workflow_run_id,
|
||||
},
|
||||
headers={
|
||||
"content-type": "application/json",
|
||||
},
|
||||
request_options=request_options,
|
||||
omit=OMIT,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
BrowserProfile,
|
||||
parse_obj_as(
|
||||
type_=BrowserProfile, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return AsyncHttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def get_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> AsyncHttpResponse[BrowserProfile]:
|
||||
"""
|
||||
Get a specific browser profile by ID
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[BrowserProfile]
|
||||
Successfully retrieved browser profile
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
f"v1/browser_profiles/{jsonable_encoder(profile_id)}",
|
||||
method="GET",
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
_data = typing.cast(
|
||||
BrowserProfile,
|
||||
parse_obj_as(
|
||||
type_=BrowserProfile, # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
)
|
||||
return AsyncHttpResponse(response=_response, data=_data)
|
||||
if _response.status_code == 404:
|
||||
raise NotFoundError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
|
||||
async def delete_browser_profile(
|
||||
self, profile_id: str, *, request_options: typing.Optional[RequestOptions] = None
|
||||
) -> AsyncHttpResponse[None]:
|
||||
"""
|
||||
Delete a browser profile (soft delete)
|
||||
|
||||
Parameters
|
||||
----------
|
||||
profile_id : str
|
||||
The ID of the browser profile to delete. browser_profile_id starts with `bp_`
|
||||
|
||||
request_options : typing.Optional[RequestOptions]
|
||||
Request-specific configuration.
|
||||
|
||||
Returns
|
||||
-------
|
||||
AsyncHttpResponse[None]
|
||||
"""
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
f"v1/browser_profiles/{jsonable_encoder(profile_id)}",
|
||||
method="DELETE",
|
||||
request_options=request_options,
|
||||
)
|
||||
try:
|
||||
if 200 <= _response.status_code < 300:
|
||||
return AsyncHttpResponse(response=_response, data=None)
|
||||
if _response.status_code == 404:
|
||||
raise NotFoundError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
if _response.status_code == 422:
|
||||
raise UnprocessableEntityError(
|
||||
headers=dict(_response.headers),
|
||||
body=typing.cast(
|
||||
typing.Optional[typing.Any],
|
||||
parse_obj_as(
|
||||
type_=typing.Optional[typing.Any], # type: ignore
|
||||
object_=_response.json(),
|
||||
),
|
||||
),
|
||||
)
|
||||
_response_json = _response.json()
|
||||
except JSONDecodeError:
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
|
||||
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
|
||||
@@ -35,6 +35,7 @@ from .types.workflow_run_timeline import WorkflowRunTimeline
|
||||
from .types.workflow_status import WorkflowStatus
|
||||
|
||||
if typing.TYPE_CHECKING:
|
||||
from .browser_profiles.client import AsyncBrowserProfilesClient, BrowserProfilesClient
|
||||
from .scripts.client import AsyncScriptsClient, ScriptsClient
|
||||
from .workflows.client import AsyncWorkflowsClient, WorkflowsClient
|
||||
# this is used as the default value for optional parameters
|
||||
@@ -108,6 +109,7 @@ class Skyvern:
|
||||
)
|
||||
self._raw_client = RawSkyvern(client_wrapper=self._client_wrapper)
|
||||
self._workflows: typing.Optional[WorkflowsClient] = None
|
||||
self._browser_profiles: typing.Optional[BrowserProfilesClient] = None
|
||||
self._scripts: typing.Optional[ScriptsClient] = None
|
||||
|
||||
@property
|
||||
@@ -297,6 +299,7 @@ class Skyvern:
|
||||
totp_url: typing.Optional[str] = OMIT,
|
||||
totp_identifier: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
browser_profile_id: typing.Optional[str] = OMIT,
|
||||
max_screenshot_scrolls: typing.Optional[int] = OMIT,
|
||||
extra_http_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = OMIT,
|
||||
browser_address: typing.Optional[str] = OMIT,
|
||||
@@ -363,6 +366,9 @@ class Skyvern:
|
||||
browser_session_id : typing.Optional[str]
|
||||
ID of a Skyvern browser session to reuse, having it continue from the current screen state
|
||||
|
||||
browser_profile_id : typing.Optional[str]
|
||||
ID of a browser profile to reuse for this workflow run
|
||||
|
||||
max_screenshot_scrolls : typing.Optional[int]
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot.
|
||||
|
||||
@@ -412,6 +418,7 @@ class Skyvern:
|
||||
totp_url=totp_url,
|
||||
totp_identifier=totp_identifier,
|
||||
browser_session_id=browser_session_id,
|
||||
browser_profile_id=browser_profile_id,
|
||||
max_screenshot_scrolls=max_screenshot_scrolls,
|
||||
extra_http_headers=extra_http_headers,
|
||||
browser_address=browser_address,
|
||||
@@ -575,6 +582,7 @@ class Skyvern:
|
||||
def create_workflow(
|
||||
self,
|
||||
*,
|
||||
folder_id: typing.Optional[str] = None,
|
||||
json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT,
|
||||
yaml_definition: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
@@ -584,6 +592,9 @@ class Skyvern:
|
||||
|
||||
Parameters
|
||||
----------
|
||||
folder_id : typing.Optional[str]
|
||||
Optional folder ID to assign the workflow to
|
||||
|
||||
json_definition : typing.Optional[WorkflowCreateYamlRequest]
|
||||
Workflow definition in JSON format
|
||||
|
||||
@@ -605,10 +616,15 @@ class Skyvern:
|
||||
client = Skyvern(
|
||||
api_key="YOUR_API_KEY",
|
||||
)
|
||||
client.create_workflow()
|
||||
client.create_workflow(
|
||||
folder_id="folder_id",
|
||||
)
|
||||
"""
|
||||
_response = self._raw_client.create_workflow(
|
||||
json_definition=json_definition, yaml_definition=yaml_definition, request_options=request_options
|
||||
folder_id=folder_id,
|
||||
json_definition=json_definition,
|
||||
yaml_definition=yaml_definition,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
@@ -1577,6 +1593,14 @@ class Skyvern:
|
||||
self._workflows = WorkflowsClient(client_wrapper=self._client_wrapper)
|
||||
return self._workflows
|
||||
|
||||
@property
|
||||
def browser_profiles(self):
|
||||
if self._browser_profiles is None:
|
||||
from .browser_profiles.client import BrowserProfilesClient # noqa: E402
|
||||
|
||||
self._browser_profiles = BrowserProfilesClient(client_wrapper=self._client_wrapper)
|
||||
return self._browser_profiles
|
||||
|
||||
@property
|
||||
def scripts(self):
|
||||
if self._scripts is None:
|
||||
@@ -1653,6 +1677,7 @@ class AsyncSkyvern:
|
||||
)
|
||||
self._raw_client = AsyncRawSkyvern(client_wrapper=self._client_wrapper)
|
||||
self._workflows: typing.Optional[AsyncWorkflowsClient] = None
|
||||
self._browser_profiles: typing.Optional[AsyncBrowserProfilesClient] = None
|
||||
self._scripts: typing.Optional[AsyncScriptsClient] = None
|
||||
|
||||
@property
|
||||
@@ -1850,6 +1875,7 @@ class AsyncSkyvern:
|
||||
totp_url: typing.Optional[str] = OMIT,
|
||||
totp_identifier: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
browser_profile_id: typing.Optional[str] = OMIT,
|
||||
max_screenshot_scrolls: typing.Optional[int] = OMIT,
|
||||
extra_http_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = OMIT,
|
||||
browser_address: typing.Optional[str] = OMIT,
|
||||
@@ -1916,6 +1942,9 @@ class AsyncSkyvern:
|
||||
browser_session_id : typing.Optional[str]
|
||||
ID of a Skyvern browser session to reuse, having it continue from the current screen state
|
||||
|
||||
browser_profile_id : typing.Optional[str]
|
||||
ID of a browser profile to reuse for this workflow run
|
||||
|
||||
max_screenshot_scrolls : typing.Optional[int]
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot.
|
||||
|
||||
@@ -1973,6 +2002,7 @@ class AsyncSkyvern:
|
||||
totp_url=totp_url,
|
||||
totp_identifier=totp_identifier,
|
||||
browser_session_id=browser_session_id,
|
||||
browser_profile_id=browser_profile_id,
|
||||
max_screenshot_scrolls=max_screenshot_scrolls,
|
||||
extra_http_headers=extra_http_headers,
|
||||
browser_address=browser_address,
|
||||
@@ -2160,6 +2190,7 @@ class AsyncSkyvern:
|
||||
async def create_workflow(
|
||||
self,
|
||||
*,
|
||||
folder_id: typing.Optional[str] = None,
|
||||
json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT,
|
||||
yaml_definition: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
@@ -2169,6 +2200,9 @@ class AsyncSkyvern:
|
||||
|
||||
Parameters
|
||||
----------
|
||||
folder_id : typing.Optional[str]
|
||||
Optional folder ID to assign the workflow to
|
||||
|
||||
json_definition : typing.Optional[WorkflowCreateYamlRequest]
|
||||
Workflow definition in JSON format
|
||||
|
||||
@@ -2195,13 +2229,18 @@ class AsyncSkyvern:
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
await client.create_workflow()
|
||||
await client.create_workflow(
|
||||
folder_id="folder_id",
|
||||
)
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
"""
|
||||
_response = await self._raw_client.create_workflow(
|
||||
json_definition=json_definition, yaml_definition=yaml_definition, request_options=request_options
|
||||
folder_id=folder_id,
|
||||
json_definition=json_definition,
|
||||
yaml_definition=yaml_definition,
|
||||
request_options=request_options,
|
||||
)
|
||||
return _response.data
|
||||
|
||||
@@ -3344,6 +3383,14 @@ class AsyncSkyvern:
|
||||
self._workflows = AsyncWorkflowsClient(client_wrapper=self._client_wrapper)
|
||||
return self._workflows
|
||||
|
||||
@property
|
||||
def browser_profiles(self):
|
||||
if self._browser_profiles is None:
|
||||
from .browser_profiles.client import AsyncBrowserProfilesClient # noqa: E402
|
||||
|
||||
self._browser_profiles = AsyncBrowserProfilesClient(client_wrapper=self._client_wrapper)
|
||||
return self._browser_profiles
|
||||
|
||||
@property
|
||||
def scripts(self):
|
||||
if self._scripts is None:
|
||||
|
||||
@@ -256,6 +256,7 @@ class RawSkyvern:
|
||||
totp_url: typing.Optional[str] = OMIT,
|
||||
totp_identifier: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
browser_profile_id: typing.Optional[str] = OMIT,
|
||||
max_screenshot_scrolls: typing.Optional[int] = OMIT,
|
||||
extra_http_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = OMIT,
|
||||
browser_address: typing.Optional[str] = OMIT,
|
||||
@@ -322,6 +323,9 @@ class RawSkyvern:
|
||||
browser_session_id : typing.Optional[str]
|
||||
ID of a Skyvern browser session to reuse, having it continue from the current screen state
|
||||
|
||||
browser_profile_id : typing.Optional[str]
|
||||
ID of a browser profile to reuse for this workflow run
|
||||
|
||||
max_screenshot_scrolls : typing.Optional[int]
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot.
|
||||
|
||||
@@ -360,6 +364,7 @@ class RawSkyvern:
|
||||
"totp_url": totp_url,
|
||||
"totp_identifier": totp_identifier,
|
||||
"browser_session_id": browser_session_id,
|
||||
"browser_profile_id": browser_profile_id,
|
||||
"max_screenshot_scrolls": max_screenshot_scrolls,
|
||||
"extra_http_headers": extra_http_headers,
|
||||
"browser_address": browser_address,
|
||||
@@ -624,6 +629,7 @@ class RawSkyvern:
|
||||
def create_workflow(
|
||||
self,
|
||||
*,
|
||||
folder_id: typing.Optional[str] = None,
|
||||
json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT,
|
||||
yaml_definition: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
@@ -633,6 +639,9 @@ class RawSkyvern:
|
||||
|
||||
Parameters
|
||||
----------
|
||||
folder_id : typing.Optional[str]
|
||||
Optional folder ID to assign the workflow to
|
||||
|
||||
json_definition : typing.Optional[WorkflowCreateYamlRequest]
|
||||
Workflow definition in JSON format
|
||||
|
||||
@@ -650,6 +659,9 @@ class RawSkyvern:
|
||||
_response = self._client_wrapper.httpx_client.request(
|
||||
"v1/workflows",
|
||||
method="POST",
|
||||
params={
|
||||
"folder_id": folder_id,
|
||||
},
|
||||
json={
|
||||
"json_definition": convert_and_respect_annotation_metadata(
|
||||
object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write"
|
||||
@@ -2360,6 +2372,7 @@ class AsyncRawSkyvern:
|
||||
totp_url: typing.Optional[str] = OMIT,
|
||||
totp_identifier: typing.Optional[str] = OMIT,
|
||||
browser_session_id: typing.Optional[str] = OMIT,
|
||||
browser_profile_id: typing.Optional[str] = OMIT,
|
||||
max_screenshot_scrolls: typing.Optional[int] = OMIT,
|
||||
extra_http_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = OMIT,
|
||||
browser_address: typing.Optional[str] = OMIT,
|
||||
@@ -2426,6 +2439,9 @@ class AsyncRawSkyvern:
|
||||
browser_session_id : typing.Optional[str]
|
||||
ID of a Skyvern browser session to reuse, having it continue from the current screen state
|
||||
|
||||
browser_profile_id : typing.Optional[str]
|
||||
ID of a browser profile to reuse for this workflow run
|
||||
|
||||
max_screenshot_scrolls : typing.Optional[int]
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot.
|
||||
|
||||
@@ -2464,6 +2480,7 @@ class AsyncRawSkyvern:
|
||||
"totp_url": totp_url,
|
||||
"totp_identifier": totp_identifier,
|
||||
"browser_session_id": browser_session_id,
|
||||
"browser_profile_id": browser_profile_id,
|
||||
"max_screenshot_scrolls": max_screenshot_scrolls,
|
||||
"extra_http_headers": extra_http_headers,
|
||||
"browser_address": browser_address,
|
||||
@@ -2728,6 +2745,7 @@ class AsyncRawSkyvern:
|
||||
async def create_workflow(
|
||||
self,
|
||||
*,
|
||||
folder_id: typing.Optional[str] = None,
|
||||
json_definition: typing.Optional[WorkflowCreateYamlRequest] = OMIT,
|
||||
yaml_definition: typing.Optional[str] = OMIT,
|
||||
request_options: typing.Optional[RequestOptions] = None,
|
||||
@@ -2737,6 +2755,9 @@ class AsyncRawSkyvern:
|
||||
|
||||
Parameters
|
||||
----------
|
||||
folder_id : typing.Optional[str]
|
||||
Optional folder ID to assign the workflow to
|
||||
|
||||
json_definition : typing.Optional[WorkflowCreateYamlRequest]
|
||||
Workflow definition in JSON format
|
||||
|
||||
@@ -2754,6 +2775,9 @@ class AsyncRawSkyvern:
|
||||
_response = await self._client_wrapper.httpx_client.request(
|
||||
"v1/workflows",
|
||||
method="POST",
|
||||
params={
|
||||
"folder_id": folder_id,
|
||||
},
|
||||
json={
|
||||
"json_definition": convert_and_respect_annotation_metadata(
|
||||
object_=json_definition, annotation=WorkflowCreateYamlRequest, direction="write"
|
||||
|
||||
@@ -42,6 +42,7 @@ if typing.TYPE_CHECKING:
|
||||
from .bitwarden_sensitive_information_parameter import BitwardenSensitiveInformationParameter
|
||||
from .bitwarden_sensitive_information_parameter_yaml import BitwardenSensitiveInformationParameterYaml
|
||||
from .block_type import BlockType
|
||||
from .browser_profile import BrowserProfile
|
||||
from .browser_session_response import BrowserSessionResponse
|
||||
from .click_action import ClickAction
|
||||
from .click_action_data import ClickActionData
|
||||
@@ -546,6 +547,7 @@ _dynamic_imports: typing.Dict[str, str] = {
|
||||
"BitwardenSensitiveInformationParameter": ".bitwarden_sensitive_information_parameter",
|
||||
"BitwardenSensitiveInformationParameterYaml": ".bitwarden_sensitive_information_parameter_yaml",
|
||||
"BlockType": ".block_type",
|
||||
"BrowserProfile": ".browser_profile",
|
||||
"BrowserSessionResponse": ".browser_session_response",
|
||||
"ClickAction": ".click_action",
|
||||
"ClickActionData": ".click_action_data",
|
||||
@@ -1030,6 +1032,7 @@ __all__ = [
|
||||
"BitwardenSensitiveInformationParameter",
|
||||
"BitwardenSensitiveInformationParameterYaml",
|
||||
"BlockType",
|
||||
"BrowserProfile",
|
||||
"BrowserSessionResponse",
|
||||
"ClickAction",
|
||||
"ClickActionData",
|
||||
|
||||
26
skyvern/client/types/browser_profile.py
Normal file
26
skyvern/client/types/browser_profile.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import datetime as dt
|
||||
import typing
|
||||
|
||||
import pydantic
|
||||
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
||||
|
||||
|
||||
class BrowserProfile(UniversalBaseModel):
|
||||
browser_profile_id: str
|
||||
organization_id: str
|
||||
name: str
|
||||
description: typing.Optional[str] = None
|
||||
created_at: dt.datetime
|
||||
modified_at: dt.datetime
|
||||
deleted_at: typing.Optional[dt.datetime] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
@@ -32,6 +32,7 @@ class GetRunResponse_TaskV1(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
@@ -63,6 +64,7 @@ class GetRunResponse_TaskV2(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
@@ -94,6 +96,7 @@ class GetRunResponse_OpenaiCua(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
@@ -125,6 +128,7 @@ class GetRunResponse_AnthropicCua(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
@@ -156,6 +160,7 @@ class GetRunResponse_UiTars(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
@@ -187,6 +192,7 @@ class GetRunResponse_WorkflowRun(UniversalBaseModel):
|
||||
finished_at: typing.Optional[dt.datetime] = None
|
||||
app_url: typing.Optional[str] = None
|
||||
browser_session_id: typing.Optional[str] = None
|
||||
browser_profile_id: typing.Optional[str] = None
|
||||
max_screenshot_scrolls: typing.Optional[int] = None
|
||||
script_run: typing.Optional[ScriptRunResponse] = None
|
||||
errors: typing.Optional[typing.List[typing.Dict[str, typing.Optional[typing.Any]]]] = None
|
||||
|
||||
@@ -13,6 +13,7 @@ class InputOrSelectContext(UniversalBaseModel):
|
||||
is_search_bar: typing.Optional[bool] = None
|
||||
is_location_input: typing.Optional[bool] = None
|
||||
is_date_related: typing.Optional[bool] = None
|
||||
date_format: typing.Optional[str] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
import typing
|
||||
|
||||
RunSdkActionResponseResult = typing.Union[
|
||||
str, typing.Dict[str, typing.Optional[typing.Any]], typing.List[typing.Optional[typing.Any]], float, bool
|
||||
]
|
||||
@@ -1,129 +0,0 @@
|
||||
# This file was auto-generated by Fern from our API Definition.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import typing
|
||||
|
||||
import pydantic
|
||||
from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
|
||||
from .click_action_data import ClickActionData
|
||||
from .extract_action_data import ExtractActionData
|
||||
from .extract_action_extract_schema import ExtractActionExtractSchema
|
||||
from .input_text_action_data import InputTextActionData
|
||||
from .select_option_action_data import SelectOptionActionData
|
||||
from .upload_file_action_data import UploadFileActionData
|
||||
|
||||
|
||||
class SdkAction_AiClick(UniversalBaseModel):
|
||||
type: typing.Literal["ai_click"] = "ai_click"
|
||||
selector: typing.Optional[str] = None
|
||||
intention: typing.Optional[str] = None
|
||||
data: typing.Optional[ClickActionData] = None
|
||||
timeout: typing.Optional[float] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
class SdkAction_AiInputText(UniversalBaseModel):
|
||||
type: typing.Literal["ai_input_text"] = "ai_input_text"
|
||||
selector: typing.Optional[str] = None
|
||||
value: typing.Optional[str] = None
|
||||
intention: typing.Optional[str] = None
|
||||
data: typing.Optional[InputTextActionData] = None
|
||||
totp_identifier: typing.Optional[str] = None
|
||||
totp_url: typing.Optional[str] = None
|
||||
timeout: typing.Optional[float] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
class SdkAction_AiSelectOption(UniversalBaseModel):
|
||||
type: typing.Literal["ai_select_option"] = "ai_select_option"
|
||||
selector: typing.Optional[str] = None
|
||||
value: typing.Optional[str] = None
|
||||
intention: typing.Optional[str] = None
|
||||
data: typing.Optional[SelectOptionActionData] = None
|
||||
timeout: typing.Optional[float] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
class SdkAction_AiUploadFile(UniversalBaseModel):
|
||||
type: typing.Literal["ai_upload_file"] = "ai_upload_file"
|
||||
selector: typing.Optional[str] = None
|
||||
file_url: typing.Optional[str] = None
|
||||
intention: typing.Optional[str] = None
|
||||
data: typing.Optional[UploadFileActionData] = None
|
||||
timeout: typing.Optional[float] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
class SdkAction_AiAct(UniversalBaseModel):
|
||||
type: typing.Literal["ai_act"] = "ai_act"
|
||||
intention: typing.Optional[str] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
class SdkAction_Extract(UniversalBaseModel):
|
||||
type: typing.Literal["extract"] = "extract"
|
||||
prompt: typing.Optional[str] = None
|
||||
extract_schema: typing.Optional[ExtractActionExtractSchema] = None
|
||||
error_code_mapping: typing.Optional[typing.Dict[str, typing.Optional[str]]] = None
|
||||
intention: typing.Optional[str] = None
|
||||
data: typing.Optional[ExtractActionData] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
else:
|
||||
|
||||
class Config:
|
||||
frozen = True
|
||||
smart_union = True
|
||||
extra = pydantic.Extra.allow
|
||||
|
||||
|
||||
SdkAction = typing.Union[
|
||||
SdkAction_AiClick,
|
||||
SdkAction_AiInputText,
|
||||
SdkAction_AiSelectOption,
|
||||
SdkAction_AiUploadFile,
|
||||
SdkAction_AiAct,
|
||||
SdkAction_Extract,
|
||||
]
|
||||
@@ -83,6 +83,11 @@ class TaskRunResponse(UniversalBaseModel):
|
||||
ID of the Skyvern persistent browser session used for this run
|
||||
"""
|
||||
|
||||
browser_profile_id: typing.Optional[str] = pydantic.Field(default=None)
|
||||
"""
|
||||
ID of the browser profile used for this run
|
||||
"""
|
||||
|
||||
max_screenshot_scrolls: typing.Optional[int] = pydantic.Field(default=None)
|
||||
"""
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot
|
||||
|
||||
@@ -30,6 +30,7 @@ class WorkflowCreateYamlRequest(UniversalBaseModel):
|
||||
cache_key: typing.Optional[str] = None
|
||||
run_sequentially: typing.Optional[bool] = None
|
||||
sequential_key: typing.Optional[str] = None
|
||||
folder_id: typing.Optional[str] = None
|
||||
|
||||
if IS_PYDANTIC_V2:
|
||||
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
||||
|
||||
@@ -72,6 +72,11 @@ class WorkflowRunRequest(UniversalBaseModel):
|
||||
ID of a Skyvern browser session to reuse, having it continue from the current screen state
|
||||
"""
|
||||
|
||||
browser_profile_id: typing.Optional[str] = pydantic.Field(default=None)
|
||||
"""
|
||||
ID of a browser profile to reuse for this workflow run
|
||||
"""
|
||||
|
||||
max_screenshot_scrolls: typing.Optional[int] = pydantic.Field(default=None)
|
||||
"""
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot.
|
||||
|
||||
@@ -83,6 +83,11 @@ class WorkflowRunResponse(UniversalBaseModel):
|
||||
ID of the Skyvern persistent browser session used for this run
|
||||
"""
|
||||
|
||||
browser_profile_id: typing.Optional[str] = pydantic.Field(default=None)
|
||||
"""
|
||||
ID of the browser profile used for this run
|
||||
"""
|
||||
|
||||
max_screenshot_scrolls: typing.Optional[int] = pydantic.Field(default=None)
|
||||
"""
|
||||
The maximum number of scrolls for the post action screenshot. When it's None or 0, it takes the current viewpoint screenshot
|
||||
|
||||
@@ -2,13 +2,13 @@ from typing import TYPE_CHECKING, Any
|
||||
|
||||
from playwright.async_api import Page
|
||||
|
||||
from skyvern.client.types.sdk_action import (
|
||||
SdkAction_AiAct,
|
||||
SdkAction_AiClick,
|
||||
SdkAction_AiInputText,
|
||||
SdkAction_AiSelectOption,
|
||||
SdkAction_AiUploadFile,
|
||||
SdkAction_Extract,
|
||||
from skyvern.client import (
|
||||
RunSdkActionRequestAction_AiAct,
|
||||
RunSdkActionRequestAction_AiClick,
|
||||
RunSdkActionRequestAction_AiInputText,
|
||||
RunSdkActionRequestAction_AiSelectOption,
|
||||
RunSdkActionRequestAction_AiUploadFile,
|
||||
RunSdkActionRequestAction_Extract,
|
||||
)
|
||||
from skyvern.config import settings
|
||||
from skyvern.core.script_generations.skyvern_page_ai import SkyvernPageAi
|
||||
@@ -43,7 +43,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
browser_session_id=self._browser.browser_session_id,
|
||||
browser_address=self._browser.browser_address,
|
||||
workflow_run_id=self._browser.workflow_run_id,
|
||||
action=SdkAction_AiClick(
|
||||
action=RunSdkActionRequestAction_AiClick(
|
||||
selector=selector,
|
||||
intention=intention,
|
||||
data=data,
|
||||
@@ -68,7 +68,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
await self._browser.sdk.ensure_has_server()
|
||||
response = await self._browser.client.run_sdk_action(
|
||||
url=self._page.url,
|
||||
action=SdkAction_AiInputText(
|
||||
action=RunSdkActionRequestAction_AiInputText(
|
||||
selector=selector,
|
||||
value=value,
|
||||
intention=intention,
|
||||
@@ -97,7 +97,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
await self._browser.sdk.ensure_has_server()
|
||||
response = await self._browser.client.run_sdk_action(
|
||||
url=self._page.url,
|
||||
action=SdkAction_AiSelectOption(
|
||||
action=RunSdkActionRequestAction_AiSelectOption(
|
||||
selector=selector,
|
||||
value=value,
|
||||
intention=intention,
|
||||
@@ -125,7 +125,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
await self._browser.sdk.ensure_has_server()
|
||||
response = await self._browser.client.run_sdk_action(
|
||||
url=self._page.url,
|
||||
action=SdkAction_AiUploadFile(
|
||||
action=RunSdkActionRequestAction_AiUploadFile(
|
||||
selector=selector,
|
||||
file_url=files,
|
||||
intention=intention,
|
||||
@@ -152,7 +152,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
await self._browser.sdk.ensure_has_server()
|
||||
response = await self._browser.client.run_sdk_action(
|
||||
url=self._page.url,
|
||||
action=SdkAction_Extract(
|
||||
action=RunSdkActionRequestAction_Extract(
|
||||
prompt=prompt,
|
||||
extract_schema=schema,
|
||||
error_code_mapping=error_code_mapping,
|
||||
@@ -175,7 +175,7 @@ class SdkSkyvernPageAi(SkyvernPageAi):
|
||||
await self._browser.sdk.ensure_has_server()
|
||||
response = await self._browser.client.run_sdk_action(
|
||||
url=self._page.url,
|
||||
action=SdkAction_AiAct(
|
||||
action=RunSdkActionRequestAction_AiAct(
|
||||
intention=prompt,
|
||||
),
|
||||
browser_session_id=self._browser.browser_session_id,
|
||||
|
||||
Reference in New Issue
Block a user