Release TS/Python SDK 2.22 (#3942)

This commit is contained in:
Stanislav Novosad
2025-11-07 12:30:43 -07:00
committed by GitHub
parent a9c3d692ff
commit 65a9259160
39 changed files with 1932 additions and 355 deletions

View File

@@ -2,6 +2,7 @@
import * as Skyvern from "./api/index.js";
import { Scripts } from "./api/resources/scripts/client/Client.js";
import { Workflows } from "./api/resources/workflows/client/Client.js";
import type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.js";
import { mergeHeaders, mergeOnlyDefinedHeaders } from "./core/headers.js";
import * as core from "./core/index.js";
@@ -16,6 +17,7 @@ export declare namespace SkyvernClient {
export class SkyvernClient {
protected readonly _options: SkyvernClient.Options;
protected _workflows: Workflows | undefined;
protected _scripts: Scripts | undefined;
constructor(_options: SkyvernClient.Options = {}) {
@@ -26,8 +28,8 @@ export class SkyvernClient {
"x-api-key": _options?.apiKey,
"X-Fern-Language": "JavaScript",
"X-Fern-SDK-Name": "@skyvern/client",
"X-Fern-SDK-Version": "0.2.21",
"User-Agent": "@skyvern/client/0.2.21",
"X-Fern-SDK-Version": "0.2.22",
"User-Agent": "@skyvern/client/0.2.22",
"X-Fern-Runtime": core.RUNTIME.type,
"X-Fern-Runtime-Version": core.RUNTIME.version,
},
@@ -36,6 +38,10 @@ export class SkyvernClient {
};
}
public get workflows(): Workflows {
return (this._workflows ??= new Workflows(this._options));
}
public get scripts(): Scripts {
return (this._scripts ??= new Scripts(this._options));
}
@@ -382,8 +388,8 @@ export class SkyvernClient {
* Get all workflows with the latest version for the organization.
*
* Search semantics:
* - If `search_key` is provided, its value is used as a unified search term for both
* `workflows.title` and workflow parameter metadata (key, description, and default_value for
* - If `search_key` is provided, its value is used as a unified search term for
* `workflows.title`, `folders.title`, and workflow parameter metadata (key, description, and default_value for
* `WorkflowParameterModel`).
* - Falls back to deprecated `title` (title-only search) if `search_key` is not provided.
* - Parameter metadata search excludes soft-deleted parameter rows across all parameter tables.
@@ -401,6 +407,7 @@ export class SkyvernClient {
* only_workflows: true,
* search_key: "search_key",
* title: "title",
* folder_id: "folder_id",
* template: true
* })
*/
@@ -422,6 +429,8 @@ export class SkyvernClient {
only_workflows: onlyWorkflows,
search_key: searchKey,
title,
folder_id: folderId,
status,
template,
} = request;
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
@@ -449,6 +458,18 @@ export class SkyvernClient {
_queryParams.title = title;
}
if (folderId != null) {
_queryParams.folder_id = folderId;
}
if (status != null) {
if (Array.isArray(status)) {
_queryParams.status = status.map((item) => item);
} else {
_queryParams.status = status;
}
}
if (template != null) {
_queryParams.template = template.toString();
}
@@ -2209,17 +2230,13 @@ export class SkyvernClient {
* @param {Skyvern.RunSdkActionRequest} request
* @param {SkyvernClient.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.BadRequestError}
* @throws {@link Skyvern.ForbiddenError}
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.runSdkAction({
* "x-user-agent": "x-user-agent",
* url: "url",
* action: {
* type: "ai_click"
* type: "ai_act"
* }
* })
*/
@@ -2234,13 +2251,9 @@ export class SkyvernClient {
request: Skyvern.RunSdkActionRequest,
requestOptions?: SkyvernClient.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.RunSdkActionResponse>> {
const { "x-user-agent": userAgent, ..._body } = request;
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({
"x-user-agent": userAgent != null ? userAgent : undefined,
"x-api-key": requestOptions?.apiKey ?? this._options?.apiKey,
}),
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
@@ -2255,7 +2268,7 @@ export class SkyvernClient {
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: _body,
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
@@ -2266,12 +2279,6 @@ export class SkyvernClient {
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 400:
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
case 403:
throw new Skyvern.ForbiddenError(_response.error.body as unknown, _response.rawResponse);
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:

View File

@@ -1,5 +1,7 @@
// This file was auto-generated by Fern from our API Definition.
import type * as Skyvern from "../../index.js";
/**
* @example
* {
@@ -9,6 +11,7 @@
* only_workflows: true,
* search_key: "search_key",
* title: "title",
* folder_id: "folder_id",
* template: true
* }
*/
@@ -17,9 +20,12 @@ export interface GetWorkflowsRequest {
page_size?: number;
only_saved_tasks?: boolean;
only_workflows?: boolean;
/** Unified search across workflow title and parameter metadata (key, description, default_value). */
/** Unified search across workflow title, folder name, and parameter metadata (key, description, default_value). */
search_key?: string;
/** Deprecated: use search_key instead. */
title?: string;
/** Filter workflows by folder ID */
folder_id?: string;
status?: Skyvern.WorkflowStatus | Skyvern.WorkflowStatus[];
template?: boolean;
}

View File

@@ -5,15 +5,13 @@ import type * as Skyvern from "../../index.js";
/**
* @example
* {
* "x-user-agent": "x-user-agent",
* url: "url",
* action: {
* type: "ai_click"
* type: "ai_act"
* }
* }
*/
export interface RunSdkActionRequest {
"x-user-agent"?: string;
/** The URL where the action should be executed */
url: string;
/** The browser session ID */
@@ -23,5 +21,5 @@ export interface RunSdkActionRequest {
/** Optional workflow run ID to continue an existing workflow run */
workflow_run_id?: string;
/** The action to execute with its specific parameters */
action: Skyvern.SdkAction;
action: Skyvern.RunSdkActionRequestAction;
}

View File

@@ -1 +1,3 @@
export * as scripts from "./scripts/index.js";
export * from "./workflows/client/requests/index.js";
export * as workflows from "./workflows/index.js";

View File

@@ -0,0 +1,540 @@
// This file was auto-generated by Fern from our API Definition.
import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js";
import { mergeHeaders, mergeOnlyDefinedHeaders } from "../../../../core/headers.js";
import * as core from "../../../../core/index.js";
import * as environments from "../../../../environments.js";
import * as errors from "../../../../errors/index.js";
import * as Skyvern from "../../../index.js";
export declare namespace Workflows {
export interface Options extends BaseClientOptions {}
export interface RequestOptions extends BaseRequestOptions {}
}
export class Workflows {
protected readonly _options: Workflows.Options;
constructor(_options: Workflows.Options = {}) {
this._options = _options;
}
/**
* Get all folders for the organization
*
* @param {Skyvern.GetFoldersV1FoldersGetRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.getFolders({
* page: 1,
* page_size: 1,
* search: "search"
* })
*/
public getFolders(
request: Skyvern.GetFoldersV1FoldersGetRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder[]> {
return core.HttpResponsePromise.fromPromise(this.__getFolders(request, requestOptions));
}
private async __getFolders(
request: Skyvern.GetFoldersV1FoldersGetRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder[]>> {
const { page, page_size: pageSize, search } = request;
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
if (page != null) {
_queryParams.page = page.toString();
}
if (pageSize != null) {
_queryParams.page_size = pageSize.toString();
}
if (search != null) {
_queryParams.search = search;
}
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
"v1/folders",
),
method: "GET",
headers: _headers,
queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder[], rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling GET /v1/folders.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Create a new folder to organize workflows
*
* @param {Skyvern.FolderCreate} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.BadRequestError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.createFolder({
* title: "title"
* })
*/
public createFolder(
request: Skyvern.FolderCreate,
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__createFolder(request, requestOptions));
}
private async __createFolder(
request: Skyvern.FolderCreate,
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
"v1/folders",
),
method: "POST",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 400:
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling POST /v1/folders.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Get a specific folder by ID
*
* @param {string} folderId - Folder ID
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.getFolder("fld_123")
*/
public getFolder(
folderId: string,
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__getFolder(folderId, requestOptions));
}
private async __getFolder(
folderId: string,
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "GET",
headers: _headers,
queryParameters: requestOptions?.queryParams,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling GET /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Update a folder's title or description
*
* @param {string} folderId - Folder ID
* @param {Skyvern.FolderUpdate} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.updateFolder("fld_123")
*/
public updateFolder(
folderId: string,
request: Skyvern.FolderUpdate = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Folder> {
return core.HttpResponsePromise.fromPromise(this.__updateFolder(folderId, request, requestOptions));
}
private async __updateFolder(
folderId: string,
request: Skyvern.FolderUpdate = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Folder>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "PUT",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Folder, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling PUT /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Delete a folder. Optionally delete all workflows in the folder.
*
* @param {string} folderId - Folder ID
* @param {Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.deleteFolder("fld_123", {
* delete_workflows: true
* })
*/
public deleteFolder(
folderId: string,
request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Record<string, unknown>> {
return core.HttpResponsePromise.fromPromise(this.__deleteFolder(folderId, request, requestOptions));
}
private async __deleteFolder(
folderId: string,
request: Skyvern.DeleteFolderV1FoldersFolderIdDeleteRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Record<string, unknown>>> {
const { delete_workflows: deleteWorkflows } = request;
const _queryParams: Record<string, string | string[] | object | object[] | null> = {};
if (deleteWorkflows != null) {
_queryParams.delete_workflows = deleteWorkflows.toString();
}
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/folders/${core.url.encodePathParam(folderId)}`,
),
method: "DELETE",
headers: _headers,
queryParameters: { ..._queryParams, ...requestOptions?.queryParams },
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Record<string, unknown>, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError("Timeout exceeded when calling DELETE /v1/folders/{folder_id}.");
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
/**
* Update a workflow's folder assignment for the latest version
*
* @param {string} workflowPermanentId - Workflow permanent ID
* @param {Skyvern.UpdateWorkflowFolderRequest} request
* @param {Workflows.RequestOptions} requestOptions - Request-specific configuration.
*
* @throws {@link Skyvern.BadRequestError}
* @throws {@link Skyvern.NotFoundError}
* @throws {@link Skyvern.UnprocessableEntityError}
*
* @example
* await client.workflows.updateWorkflowFolder("wpid_123")
*/
public updateWorkflowFolder(
workflowPermanentId: string,
request: Skyvern.UpdateWorkflowFolderRequest = {},
requestOptions?: Workflows.RequestOptions,
): core.HttpResponsePromise<Skyvern.Workflow> {
return core.HttpResponsePromise.fromPromise(
this.__updateWorkflowFolder(workflowPermanentId, request, requestOptions),
);
}
private async __updateWorkflowFolder(
workflowPermanentId: string,
request: Skyvern.UpdateWorkflowFolderRequest = {},
requestOptions?: Workflows.RequestOptions,
): Promise<core.WithRawResponse<Skyvern.Workflow>> {
const _headers: core.Fetcher.Args["headers"] = mergeHeaders(
this._options?.headers,
mergeOnlyDefinedHeaders({ "x-api-key": requestOptions?.apiKey ?? this._options?.apiKey }),
requestOptions?.headers,
);
const _response = await core.fetcher({
url: core.url.join(
(await core.Supplier.get(this._options.baseUrl)) ??
(await core.Supplier.get(this._options.environment)) ??
environments.SkyvernEnvironment.Cloud,
`v1/workflows/${core.url.encodePathParam(workflowPermanentId)}/folder`,
),
method: "PUT",
headers: _headers,
contentType: "application/json",
queryParameters: requestOptions?.queryParams,
requestType: "json",
body: request,
timeoutMs: (requestOptions?.timeoutInSeconds ?? this._options?.timeoutInSeconds ?? 60) * 1000,
maxRetries: requestOptions?.maxRetries ?? this._options?.maxRetries,
abortSignal: requestOptions?.abortSignal,
});
if (_response.ok) {
return { data: _response.body as Skyvern.Workflow, rawResponse: _response.rawResponse };
}
if (_response.error.reason === "status-code") {
switch (_response.error.statusCode) {
case 400:
throw new Skyvern.BadRequestError(_response.error.body as unknown, _response.rawResponse);
case 404:
throw new Skyvern.NotFoundError(_response.error.body as unknown, _response.rawResponse);
case 422:
throw new Skyvern.UnprocessableEntityError(_response.error.body as unknown, _response.rawResponse);
default:
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.body,
rawResponse: _response.rawResponse,
});
}
}
switch (_response.error.reason) {
case "non-json":
throw new errors.SkyvernError({
statusCode: _response.error.statusCode,
body: _response.error.rawBody,
rawResponse: _response.rawResponse,
});
case "timeout":
throw new errors.SkyvernTimeoutError(
"Timeout exceeded when calling PUT /v1/workflows/{workflow_permanent_id}/folder.",
);
case "unknown":
throw new errors.SkyvernError({
message: _response.error.errorMessage,
rawResponse: _response.rawResponse,
});
}
}
}

View File

@@ -0,0 +1 @@
export * from "./requests/index.js";

View File

@@ -0,0 +1,12 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* delete_workflows: true
* }
*/
export interface DeleteFolderV1FoldersFolderIdDeleteRequest {
/** If true, also delete all workflows in this folder */
delete_workflows?: boolean;
}

View File

@@ -0,0 +1,14 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* title: "title"
* }
*/
export interface FolderCreate {
/** Folder title */
title: string;
/** Folder description */
description?: string;
}

View File

@@ -0,0 +1,12 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {}
*/
export interface FolderUpdate {
/** Folder title */
title?: string;
/** Folder description */
description?: string;
}

View File

@@ -0,0 +1,18 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {
* page: 1,
* page_size: 1,
* search: "search"
* }
*/
export interface GetFoldersV1FoldersGetRequest {
/** Page number */
page?: number;
/** Number of folders per page */
page_size?: number;
/** Search folders by title or description */
search?: string;
}

View File

@@ -0,0 +1,10 @@
// This file was auto-generated by Fern from our API Definition.
/**
* @example
* {}
*/
export interface UpdateWorkflowFolderRequest {
/** Folder ID to assign workflow to. Set to null to remove from folder. */
folder_id?: string;
}

View File

@@ -0,0 +1,5 @@
export type { DeleteFolderV1FoldersFolderIdDeleteRequest } from "./DeleteFolderV1FoldersFolderIdDeleteRequest.js";
export type { FolderCreate } from "./FolderCreate.js";
export type { FolderUpdate } from "./FolderUpdate.js";
export type { GetFoldersV1FoldersGetRequest } from "./GetFoldersV1FoldersGetRequest.js";
export type { UpdateWorkflowFolderRequest } from "./UpdateWorkflowFolderRequest.js";

View File

@@ -0,0 +1 @@
export * from "./client/index.js";

View File

@@ -0,0 +1,18 @@
// This file was auto-generated by Fern from our API Definition.
/**
* AI act action parameters.
*/
export interface ActAction {
/** Natural language prompt for the action */
intention?: string;
/** Additional context data */
data?: ActAction.Data;
}
export namespace ActAction {
/**
* Additional context data
*/
export type Data = string | Record<string, unknown>;
}

View File

@@ -34,6 +34,7 @@ export interface Action {
option?: Skyvern.SelectOption;
is_checked?: boolean;
verified?: boolean;
click_context?: Skyvern.ClickContext;
totp_timing_info?: Record<string, unknown>;
created_at?: string;
modified_at?: string;

View File

@@ -1,5 +1,8 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Click action parameters.
*/
export interface ClickAction {
/** CSS selector for the element */
selector?: string;

View File

@@ -0,0 +1,6 @@
// This file was auto-generated by Fern from our API Definition.
export interface ClickContext {
thought?: string;
single_option_click?: boolean;
}

View File

@@ -1,5 +1,8 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Extract data action parameters.
*/
export interface ExtractAction {
/** Extraction prompt */
prompt?: string;

View File

@@ -0,0 +1,17 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Response model for a folder
*/
export interface Folder {
/** Folder title */
title: string;
/** Folder description */
description?: string;
folder_id: string;
organization_id: string;
/** Number of workflows in this folder */
workflow_count?: number;
created_at: string;
modified_at: string;
}

View File

@@ -1,5 +1,8 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Input text action parameters.
*/
export interface InputTextAction {
/** CSS selector for the element */
selector?: string;

View File

@@ -2,13 +2,21 @@
import type * as Skyvern from "../index.js";
export type SdkAction =
| Skyvern.SdkAction.AiClick
| Skyvern.SdkAction.AiInputText
| Skyvern.SdkAction.AiSelectOption
| Skyvern.SdkAction.Extract;
/**
* The action to execute with its specific parameters
*/
export type RunSdkActionRequestAction =
| Skyvern.RunSdkActionRequestAction.AiAct
| Skyvern.RunSdkActionRequestAction.AiClick
| Skyvern.RunSdkActionRequestAction.AiInputText
| Skyvern.RunSdkActionRequestAction.AiSelectOption
| Skyvern.RunSdkActionRequestAction.Extract;
export namespace RunSdkActionRequestAction {
export interface AiAct extends Skyvern.ActAction {
type: "ai_act";
}
export namespace SdkAction {
export interface AiClick extends Skyvern.ClickAction {
type: "ai_click";
}

View File

@@ -1,15 +1,11 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Response from running an SDK action.
*/
export interface RunSdkActionResponse {
/** The workflow run ID used for this action */
workflow_run_id: string;
/** The result from the action (e.g., selector, value, extracted data) */
result?: RunSdkActionResponse.Result;
}
export namespace RunSdkActionResponse {
/**
* The result from the action (e.g., selector, value, extracted data)
*/
export type Result = string | Record<string, unknown> | unknown[] | number | boolean;
result?: unknown;
}

View File

@@ -1,5 +1,8 @@
// This file was auto-generated by Fern from our API Definition.
/**
* Select option action parameters.
*/
export interface SelectOptionAction {
/** CSS selector for the element */
selector?: string;

View File

@@ -25,6 +25,8 @@ export interface Workflow {
cache_key?: string;
run_sequentially?: boolean;
sequential_key?: string;
folder_id?: string;
import_error?: string;
created_at: string;
modified_at: string;
deleted_at?: string;

View File

@@ -4,5 +4,7 @@ export const WorkflowStatus = {
Published: "published",
Draft: "draft",
AutoGenerated: "auto_generated",
Importing: "importing",
ImportFailed: "import_failed",
} as const;
export type WorkflowStatus = (typeof WorkflowStatus)[keyof typeof WorkflowStatus];

View File

@@ -1,3 +1,4 @@
export * from "./ActAction.js";
export * from "./Action.js";
export * from "./ActionBlock.js";
export * from "./ActionBlockParametersItem.js";
@@ -20,6 +21,7 @@ export * from "./BitwardenSensitiveInformationParameterYaml.js";
export * from "./BlockType.js";
export * from "./BrowserSessionResponse.js";
export * from "./ClickAction.js";
export * from "./ClickContext.js";
export * from "./CodeBlock.js";
export * from "./CodeBlockParametersItem.js";
export * from "./CodeBlockYaml.js";
@@ -50,6 +52,7 @@ export * from "./FileStorageType.js";
export * from "./FileType.js";
export * from "./FileUploadBlock.js";
export * from "./FileUploadBlockYaml.js";
export * from "./Folder.js";
export * from "./ForLoopBlock.js";
export * from "./ForLoopBlockLoopBlocksItem.js";
export * from "./ForLoopBlockLoopOver.js";
@@ -83,12 +86,12 @@ export * from "./PdfParserBlock.js";
export * from "./PdfParserBlockYaml.js";
export * from "./ProxyLocation.js";
export * from "./RunEngine.js";
export * from "./RunSdkActionRequestAction.js";
export * from "./RunSdkActionResponse.js";
export * from "./RunStatus.js";
export * from "./Script.js";
export * from "./ScriptFileCreate.js";
export * from "./ScriptRunResponse.js";
export * from "./SdkAction.js";
export * from "./SelectOption.js";
export * from "./SelectOptionAction.js";
export * from "./SendEmailBlock.js";

View File

@@ -1 +1 @@
export const SDK_VERSION = "0.2.21";
export const SDK_VERSION = "0.2.22";