@corsair-dev/browseai 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.test.d.ts +2 -0
- package/dist/client.test.d.ts.map +1 -0
- package/dist/endpoints/index.d.ts +2 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/ops.d.ts +12 -0
- package/dist/endpoints/ops.d.ts.map +1 -0
- package/dist/endpoints/shared.d.ts +14 -0
- package/dist/endpoints/shared.d.ts.map +1 -0
- package/dist/endpoints/types.d.ts +588 -0
- package/dist/endpoints/types.d.ts.map +1 -0
- package/dist/endpoints.test.d.ts +2 -0
- package/dist/endpoints.test.d.ts.map +1 -0
- package/dist/error-handlers.d.ts +57 -0
- package/dist/error-handlers.d.ts.map +1 -0
- package/dist/error-handlers.test.d.ts +2 -0
- package/dist/error-handlers.test.d.ts.map +1 -0
- package/dist/index.d.ts +429 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/plugin.test.d.ts +2 -0
- package/dist/plugin.test.d.ts.map +1 -0
- package/dist/schema/database.d.ts +155 -0
- package/dist/schema/database.d.ts.map +1 -0
- package/dist/schema/index.d.ts +106 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema.test.d.ts +8 -0
- package/dist/schema.test.d.ts.map +1 -0
- package/dist/tsup.config.d.ts +3 -0
- package/dist/tsup.config.d.ts.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browse AI uses HTTP status on JSON envelopes (`statusCode` / `messageCode`).
|
|
3
|
+
*
|
|
4
|
+
* Every handler returns `maxRetries: 0`. `corsair/http` already retries
|
|
5
|
+
* idempotent 429s; replaying POST would duplicate tasks, monitors, bulk
|
|
6
|
+
* runs, and webhooks.
|
|
7
|
+
*
|
|
8
|
+
* | status | meaning |
|
|
9
|
+
* | ------ | ---------------- |
|
|
10
|
+
* | 400 | validation |
|
|
11
|
+
* | 401 | bad API key |
|
|
12
|
+
* | 403 | forbidden |
|
|
13
|
+
* | 404 | missing resource |
|
|
14
|
+
* | 429 | rate limited |
|
|
15
|
+
*
|
|
16
|
+
* @see https://docs.browse.ai/api/
|
|
17
|
+
*/
|
|
18
|
+
export declare const errorHandlers: {
|
|
19
|
+
RATE_LIMIT_ERROR: {
|
|
20
|
+
match: (error: Error) => boolean;
|
|
21
|
+
handler: (error: Error) => Promise<{
|
|
22
|
+
maxRetries: number;
|
|
23
|
+
headersRetryAfterMs: number | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
};
|
|
26
|
+
AUTH_ERROR: {
|
|
27
|
+
match: (error: Error) => boolean;
|
|
28
|
+
handler: () => Promise<{
|
|
29
|
+
maxRetries: number;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
PERMISSION_ERROR: {
|
|
33
|
+
match: (error: Error) => boolean;
|
|
34
|
+
handler: () => Promise<{
|
|
35
|
+
maxRetries: number;
|
|
36
|
+
}>;
|
|
37
|
+
};
|
|
38
|
+
NOT_FOUND_ERROR: {
|
|
39
|
+
match: (error: Error) => boolean;
|
|
40
|
+
handler: () => Promise<{
|
|
41
|
+
maxRetries: number;
|
|
42
|
+
}>;
|
|
43
|
+
};
|
|
44
|
+
BAD_REQUEST_ERROR: {
|
|
45
|
+
match: (error: Error) => boolean;
|
|
46
|
+
handler: () => Promise<{
|
|
47
|
+
maxRetries: number;
|
|
48
|
+
}>;
|
|
49
|
+
};
|
|
50
|
+
DEFAULT: {
|
|
51
|
+
match: () => true;
|
|
52
|
+
handler: () => Promise<{
|
|
53
|
+
maxRetries: number;
|
|
54
|
+
}>;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=error-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handlers.d.ts","sourceRoot":"","sources":["../error-handlers.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,aAAa;;uBAET,KAAK;yBAKG,KAAK;;;;;;uBASb,KAAK;;;;;;uBASL,KAAK;;;;;;uBAQL,KAAK;;;;;;uBAQL,KAAK;;;;;;;;;;;CAWS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handlers.test.d.ts","sourceRoot":"","sources":["../error-handlers.test.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import type { AuthTypes, BindEndpoints, CorsairEndpoint, CorsairErrorHandler, CorsairPlugin, CorsairPluginContext, KeyBuilderContext, PickAuth, PluginPermissionsConfig } from 'corsair/core';
|
|
2
|
+
import type { BrowseaiEndpointInputs, BrowseaiEndpointOutputs } from './endpoints/types';
|
|
3
|
+
import { BrowseaiSchema } from './schema';
|
|
4
|
+
export type BrowseaiPluginOptions = {
|
|
5
|
+
authType?: PickAuth<'api_key'>;
|
|
6
|
+
key?: string;
|
|
7
|
+
hooks?: InternalBrowseaiPlugin['hooks'];
|
|
8
|
+
errorHandlers?: CorsairErrorHandler;
|
|
9
|
+
permissions?: PluginPermissionsConfig<typeof browseaiEndpointsNested>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Browse AI authenticates with an API key as `Authorization: Bearer`.
|
|
13
|
+
*
|
|
14
|
+
* @see https://docs.browse.ai/api/
|
|
15
|
+
*/
|
|
16
|
+
export declare const browseaiAuthConfig: {
|
|
17
|
+
readonly api_key: {};
|
|
18
|
+
};
|
|
19
|
+
export type BrowseaiContext = CorsairPluginContext<typeof BrowseaiSchema, BrowseaiPluginOptions, undefined, typeof browseaiAuthConfig>;
|
|
20
|
+
export type BrowseaiKeyBuilderContext = KeyBuilderContext<BrowseaiPluginOptions>;
|
|
21
|
+
export type BrowseaiBoundEndpoints = BindEndpoints<typeof browseaiEndpointsNested>;
|
|
22
|
+
type BrowseaiEndpoint<K extends keyof BrowseaiEndpointOutputs> = CorsairEndpoint<BrowseaiContext, BrowseaiEndpointInputs[K], BrowseaiEndpointOutputs[K]>;
|
|
23
|
+
export type BrowseaiEndpoints = {
|
|
24
|
+
systemGetStatus: BrowseaiEndpoint<'systemGetStatus'>;
|
|
25
|
+
robotsList: BrowseaiEndpoint<'robotsList'>;
|
|
26
|
+
robotsRun: BrowseaiEndpoint<'robotsRun'>;
|
|
27
|
+
robotsBulkRun: BrowseaiEndpoint<'robotsBulkRun'>;
|
|
28
|
+
tasksList: BrowseaiEndpoint<'tasksList'>;
|
|
29
|
+
tasksGet: BrowseaiEndpoint<'tasksGet'>;
|
|
30
|
+
monitorsCreate: BrowseaiEndpoint<'monitorsCreate'>;
|
|
31
|
+
monitorsDelete: BrowseaiEndpoint<'monitorsDelete'>;
|
|
32
|
+
webhooksCreate: BrowseaiEndpoint<'webhooksCreate'>;
|
|
33
|
+
webhooksList: BrowseaiEndpoint<'webhooksList'>;
|
|
34
|
+
};
|
|
35
|
+
declare const browseaiEndpointsNested: {
|
|
36
|
+
readonly system: {
|
|
37
|
+
readonly getStatus: BrowseaiEndpoint<"systemGetStatus">;
|
|
38
|
+
};
|
|
39
|
+
readonly robots: {
|
|
40
|
+
readonly list: BrowseaiEndpoint<"robotsList">;
|
|
41
|
+
readonly run: BrowseaiEndpoint<"robotsRun">;
|
|
42
|
+
readonly bulkRun: BrowseaiEndpoint<"robotsBulkRun">;
|
|
43
|
+
};
|
|
44
|
+
readonly tasks: {
|
|
45
|
+
readonly list: BrowseaiEndpoint<"tasksList">;
|
|
46
|
+
readonly get: BrowseaiEndpoint<"tasksGet">;
|
|
47
|
+
};
|
|
48
|
+
readonly monitors: {
|
|
49
|
+
readonly create: BrowseaiEndpoint<"monitorsCreate">;
|
|
50
|
+
readonly delete: BrowseaiEndpoint<"monitorsDelete">;
|
|
51
|
+
};
|
|
52
|
+
readonly webhooks: {
|
|
53
|
+
readonly create: BrowseaiEndpoint<"webhooksCreate">;
|
|
54
|
+
readonly list: BrowseaiEndpoint<"webhooksList">;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
export declare const browseaiEndpointSchemas: {
|
|
58
|
+
readonly 'system.getStatus': {
|
|
59
|
+
readonly input: import("zod").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
60
|
+
readonly output: import("zod").ZodObject<{
|
|
61
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
62
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
63
|
+
tasksQueueStatus: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
64
|
+
}, import("zod/v4/core").$loose>;
|
|
65
|
+
};
|
|
66
|
+
readonly 'robots.list': {
|
|
67
|
+
readonly input: import("zod").ZodObject<{}, import("zod/v4/core").$strip>;
|
|
68
|
+
readonly output: import("zod").ZodObject<{
|
|
69
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
70
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
71
|
+
robots: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
72
|
+
totalCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
73
|
+
items: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
74
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
75
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
76
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
77
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
78
|
+
type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
79
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
80
|
+
label: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
81
|
+
required: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
82
|
+
encrypted: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
83
|
+
defaultValue: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>;
|
|
84
|
+
value: import("zod").ZodOptional<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>, import("zod").ZodNull]>>;
|
|
85
|
+
min: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
86
|
+
max: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
87
|
+
pattern: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
88
|
+
options: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
89
|
+
label: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
90
|
+
value: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
91
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
92
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
93
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
94
|
+
}, import("zod/v4/core").$loose>>>;
|
|
95
|
+
}, import("zod/v4/core").$loose>;
|
|
96
|
+
};
|
|
97
|
+
readonly 'robots.run': {
|
|
98
|
+
readonly input: import("zod").ZodObject<{
|
|
99
|
+
robotId: import("zod").ZodString;
|
|
100
|
+
recordVideo: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
101
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>;
|
|
102
|
+
}, import("zod/v4/core").$strip>;
|
|
103
|
+
readonly output: import("zod").ZodObject<{
|
|
104
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
105
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
106
|
+
result: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
107
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
108
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>>;
|
|
109
|
+
robotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
110
|
+
status: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
111
|
+
runByUserId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
112
|
+
robotBulkRunId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
113
|
+
runByTaskMonitorId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
114
|
+
runByAPI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
115
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
116
|
+
startedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
117
|
+
finishedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
118
|
+
userFriendlyError: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
119
|
+
triedRecordingVideo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
120
|
+
videoUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
121
|
+
videoRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
122
|
+
retriedOriginalTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
123
|
+
retriedTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
124
|
+
retriedByTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
125
|
+
capturedDataTemporaryUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
126
|
+
capturedTexts: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>;
|
|
127
|
+
capturedScreenshots: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
|
|
128
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
129
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
130
|
+
src: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
131
|
+
width: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
132
|
+
height: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
133
|
+
x: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
134
|
+
y: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
135
|
+
deviceScaleFactor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
136
|
+
full: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
137
|
+
comparedToScreenshotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
138
|
+
diffImageSrc: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
139
|
+
changePercentage: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
140
|
+
diffThreshold: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
141
|
+
fileRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
142
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
143
|
+
capturedLists: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>>>;
|
|
144
|
+
}, import("zod/v4/core").$loose>>>;
|
|
145
|
+
}, import("zod/v4/core").$loose>;
|
|
146
|
+
};
|
|
147
|
+
readonly 'robots.bulkRun': {
|
|
148
|
+
readonly input: import("zod").ZodObject<{
|
|
149
|
+
robotId: import("zod").ZodString;
|
|
150
|
+
title: import("zod").ZodOptional<import("zod").ZodString>;
|
|
151
|
+
inputParameters: import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>;
|
|
152
|
+
}, import("zod/v4/core").$strip>;
|
|
153
|
+
readonly output: import("zod").ZodObject<{
|
|
154
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
155
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
156
|
+
result: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
157
|
+
bulkRun: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
158
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
159
|
+
title: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
160
|
+
status: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
161
|
+
tasksCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
162
|
+
successfulTasks: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
163
|
+
failedTasks: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
164
|
+
robotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
165
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
166
|
+
}, import("zod/v4/core").$loose>>>;
|
|
167
|
+
}, import("zod/v4/core").$loose>>>;
|
|
168
|
+
}, import("zod/v4/core").$loose>;
|
|
169
|
+
};
|
|
170
|
+
readonly 'tasks.list': {
|
|
171
|
+
readonly input: import("zod").ZodObject<{
|
|
172
|
+
robotId: import("zod").ZodString;
|
|
173
|
+
page: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
174
|
+
pageSize: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
175
|
+
status: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
176
|
+
failed: "failed";
|
|
177
|
+
successful: "successful";
|
|
178
|
+
"in-progress": "in-progress";
|
|
179
|
+
}>>;
|
|
180
|
+
robotBulkRunId: import("zod").ZodOptional<import("zod").ZodString>;
|
|
181
|
+
sort: import("zod").ZodOptional<import("zod").ZodString>;
|
|
182
|
+
includeRetried: import("zod").ZodOptional<import("zod").ZodBoolean>;
|
|
183
|
+
fromDate: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
184
|
+
toDate: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
185
|
+
}, import("zod/v4/core").$strip>;
|
|
186
|
+
readonly output: import("zod").ZodObject<{
|
|
187
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
188
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
189
|
+
result: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
190
|
+
robotTasks: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
191
|
+
totalCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
192
|
+
pageNumber: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
193
|
+
hasMore: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
194
|
+
items: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
195
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
196
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>>;
|
|
197
|
+
robotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
198
|
+
status: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
199
|
+
runByUserId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
200
|
+
robotBulkRunId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
201
|
+
runByTaskMonitorId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
202
|
+
runByAPI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
203
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
204
|
+
startedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
205
|
+
finishedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
206
|
+
userFriendlyError: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
207
|
+
triedRecordingVideo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
208
|
+
videoUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
209
|
+
videoRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
210
|
+
retriedOriginalTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
211
|
+
retriedTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
212
|
+
retriedByTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
213
|
+
capturedDataTemporaryUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
214
|
+
capturedTexts: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>;
|
|
215
|
+
capturedScreenshots: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
|
|
216
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
217
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
218
|
+
src: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
219
|
+
width: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
220
|
+
height: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
221
|
+
x: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
222
|
+
y: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
223
|
+
deviceScaleFactor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
224
|
+
full: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
225
|
+
comparedToScreenshotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
226
|
+
diffImageSrc: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
227
|
+
changePercentage: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
228
|
+
diffThreshold: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
229
|
+
fileRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
230
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
231
|
+
capturedLists: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>>>;
|
|
232
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
233
|
+
}, import("zod/v4/core").$loose>>>;
|
|
234
|
+
}, import("zod/v4/core").$loose>>>;
|
|
235
|
+
}, import("zod/v4/core").$loose>;
|
|
236
|
+
};
|
|
237
|
+
readonly 'tasks.get': {
|
|
238
|
+
readonly input: import("zod").ZodObject<{
|
|
239
|
+
robotId: import("zod").ZodString;
|
|
240
|
+
taskId: import("zod").ZodString;
|
|
241
|
+
}, import("zod/v4/core").$strip>;
|
|
242
|
+
readonly output: import("zod").ZodObject<{
|
|
243
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
244
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
245
|
+
result: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
246
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
247
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>>;
|
|
248
|
+
robotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
249
|
+
status: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
250
|
+
runByUserId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
251
|
+
robotBulkRunId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
252
|
+
runByTaskMonitorId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
253
|
+
runByAPI: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
254
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
255
|
+
startedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
256
|
+
finishedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
257
|
+
userFriendlyError: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
258
|
+
triedRecordingVideo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
259
|
+
videoUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
260
|
+
videoRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
261
|
+
retriedOriginalTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
262
|
+
retriedTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
263
|
+
retriedByTaskId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
264
|
+
capturedDataTemporaryUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
265
|
+
capturedTexts: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>;
|
|
266
|
+
capturedScreenshots: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
|
|
267
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
268
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
269
|
+
src: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
270
|
+
width: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
271
|
+
height: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
272
|
+
x: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
273
|
+
y: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
274
|
+
deviceScaleFactor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
275
|
+
full: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
276
|
+
comparedToScreenshotId: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
277
|
+
diffImageSrc: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
278
|
+
changePercentage: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
279
|
+
diffThreshold: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
280
|
+
fileRemovedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
281
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
282
|
+
capturedLists: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodArray<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodBoolean]>>>>>>>;
|
|
283
|
+
}, import("zod/v4/core").$loose>>>;
|
|
284
|
+
}, import("zod/v4/core").$loose>;
|
|
285
|
+
};
|
|
286
|
+
readonly 'monitors.create': {
|
|
287
|
+
readonly input: import("zod").ZodObject<{
|
|
288
|
+
robotId: import("zod").ZodString;
|
|
289
|
+
name: import("zod").ZodString;
|
|
290
|
+
inputParameters: import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>;
|
|
291
|
+
notifyOnCapturedScreenshotChange: import("zod").ZodBoolean;
|
|
292
|
+
notifyOnCapturedTextChange: import("zod").ZodBoolean;
|
|
293
|
+
capturedScreenshotNotificationThreshold: import("zod").ZodNumber;
|
|
294
|
+
schedule: import("zod").ZodOptional<import("zod").ZodString>;
|
|
295
|
+
schedules: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
|
|
296
|
+
type: import("zod").ZodLiteral<"FIXED_INTERVAL">;
|
|
297
|
+
everyMinutes: import("zod").ZodNumber;
|
|
298
|
+
}, import("zod/v4/core").$strip>>>;
|
|
299
|
+
}, import("zod/v4/core").$strip>;
|
|
300
|
+
readonly output: import("zod").ZodObject<{
|
|
301
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
302
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
303
|
+
monitor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
304
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
305
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
306
|
+
status: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
307
|
+
pausedReason: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
308
|
+
inputParameters: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber, import("zod").ZodArray<import("zod").ZodString>]>>>>;
|
|
309
|
+
schedules: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
310
|
+
type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
311
|
+
everyMinutes: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
312
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
313
|
+
schedule: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
314
|
+
notifyOnCapturedScreenshotChange: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
315
|
+
notifyOnCapturedTextChange: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
316
|
+
capturedScreenshotNotificationThreshold: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
317
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
318
|
+
pausedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
319
|
+
updatedAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
320
|
+
}, import("zod/v4/core").$loose>>>;
|
|
321
|
+
}, import("zod/v4/core").$loose>;
|
|
322
|
+
};
|
|
323
|
+
readonly 'monitors.delete': {
|
|
324
|
+
readonly input: import("zod").ZodObject<{
|
|
325
|
+
robotId: import("zod").ZodString;
|
|
326
|
+
monitorId: import("zod").ZodString;
|
|
327
|
+
}, import("zod/v4/core").$strip>;
|
|
328
|
+
readonly output: import("zod").ZodObject<{
|
|
329
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
330
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
331
|
+
}, import("zod/v4/core").$loose>;
|
|
332
|
+
};
|
|
333
|
+
readonly 'webhooks.create': {
|
|
334
|
+
readonly input: import("zod").ZodObject<{
|
|
335
|
+
robotId: import("zod").ZodString;
|
|
336
|
+
hookUrl: import("zod").ZodString;
|
|
337
|
+
eventType: import("zod").ZodEnum<{
|
|
338
|
+
taskCapturedDataChanged: "taskCapturedDataChanged";
|
|
339
|
+
taskFinished: "taskFinished";
|
|
340
|
+
taskFinishedSuccessfully: "taskFinishedSuccessfully";
|
|
341
|
+
taskFinishedWithError: "taskFinishedWithError";
|
|
342
|
+
tableExportFinishedSuccessfully: "tableExportFinishedSuccessfully";
|
|
343
|
+
}>;
|
|
344
|
+
}, import("zod/v4/core").$strip>;
|
|
345
|
+
readonly output: import("zod").ZodObject<{
|
|
346
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
347
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
348
|
+
webhook: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
349
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
350
|
+
url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
351
|
+
webhookEvent: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
352
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
353
|
+
}, import("zod/v4/core").$loose>>>;
|
|
354
|
+
}, import("zod/v4/core").$loose>;
|
|
355
|
+
};
|
|
356
|
+
readonly 'webhooks.list': {
|
|
357
|
+
readonly input: import("zod").ZodObject<{
|
|
358
|
+
robotId: import("zod").ZodString;
|
|
359
|
+
}, import("zod/v4/core").$strip>;
|
|
360
|
+
readonly output: import("zod").ZodObject<{
|
|
361
|
+
statusCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
362
|
+
messageCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
363
|
+
webhooks: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
364
|
+
totalCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
365
|
+
items: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
366
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
367
|
+
url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
368
|
+
webhookEvent: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
369
|
+
createdAt: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
370
|
+
}, import("zod/v4/core").$loose>>>>;
|
|
371
|
+
}, import("zod/v4/core").$loose>>>;
|
|
372
|
+
}, import("zod/v4/core").$loose>;
|
|
373
|
+
};
|
|
374
|
+
};
|
|
375
|
+
declare const defaultAuthType: AuthTypes;
|
|
376
|
+
export declare const browseaiEndpointMeta: {
|
|
377
|
+
readonly 'system.getStatus': {
|
|
378
|
+
readonly riskLevel: "read";
|
|
379
|
+
readonly description: "Check Browse AI task-queue status";
|
|
380
|
+
};
|
|
381
|
+
readonly 'robots.list': {
|
|
382
|
+
readonly riskLevel: "read";
|
|
383
|
+
readonly description: "List robots on the account";
|
|
384
|
+
};
|
|
385
|
+
readonly 'robots.run': {
|
|
386
|
+
readonly riskLevel: "write";
|
|
387
|
+
readonly description: "Start a robot task";
|
|
388
|
+
};
|
|
389
|
+
readonly 'robots.bulkRun': {
|
|
390
|
+
readonly riskLevel: "write";
|
|
391
|
+
readonly description: "Start a bulk run of robot tasks";
|
|
392
|
+
};
|
|
393
|
+
readonly 'tasks.list': {
|
|
394
|
+
readonly riskLevel: "read";
|
|
395
|
+
readonly description: "List tasks for a robot";
|
|
396
|
+
};
|
|
397
|
+
readonly 'tasks.get': {
|
|
398
|
+
readonly riskLevel: "read";
|
|
399
|
+
readonly description: "Get a robot task by id";
|
|
400
|
+
};
|
|
401
|
+
readonly 'monitors.create': {
|
|
402
|
+
readonly riskLevel: "write";
|
|
403
|
+
readonly description: "Create a robot monitor";
|
|
404
|
+
};
|
|
405
|
+
readonly 'monitors.delete': {
|
|
406
|
+
readonly riskLevel: "write";
|
|
407
|
+
readonly description: "Delete a robot monitor";
|
|
408
|
+
};
|
|
409
|
+
readonly 'webhooks.create': {
|
|
410
|
+
readonly riskLevel: "write";
|
|
411
|
+
readonly description: "Create a robot webhook";
|
|
412
|
+
};
|
|
413
|
+
readonly 'webhooks.list': {
|
|
414
|
+
readonly riskLevel: "read";
|
|
415
|
+
readonly description: "List webhooks for a robot";
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
export type BaseBrowseaiPlugin<T extends BrowseaiPluginOptions> = CorsairPlugin<'browseai', typeof BrowseaiSchema, typeof browseaiEndpointsNested, Record<string, never>, T, typeof defaultAuthType>;
|
|
419
|
+
export type InternalBrowseaiPlugin = BaseBrowseaiPlugin<BrowseaiPluginOptions>;
|
|
420
|
+
export type ExternalBrowseaiPlugin<T extends BrowseaiPluginOptions> = BaseBrowseaiPlugin<T>;
|
|
421
|
+
/**
|
|
422
|
+
* Browse AI plugin.
|
|
423
|
+
*
|
|
424
|
+
* **No inbound webhooks.** Browse AI calls URLs you register on a robot;
|
|
425
|
+
* it does not POST events into Corsair.
|
|
426
|
+
*/
|
|
427
|
+
export declare function browseai<const T extends BrowseaiPluginOptions>(incomingOptions?: BrowseaiPluginOptions & T): ExternalBrowseaiPlugin<T>;
|
|
428
|
+
export type { BrowseaiEndpointInputs, BrowseaiEndpointOutputs, } from './endpoints/types';
|
|
429
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AuthMissingError as H}from"corsair/core";import{logEventFromContext as b}from"corsair/core";import{request as Q}from"corsair/http";var Z="https://api.browse.ai/v2",v={enabled:!0,maxRetries:3,initialRetryDelay:1e3,backoffMultiplier:2,headerNames:{retryAfter:"retry-after"}},X={...v,enabled:!1,maxRetries:0};function Y(t){return{BASE:Z,VERSION:"2",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:t,HEADERS:{Accept:"application/json"}}}function J(t){return t==="POST"||t==="PUT"||t==="PATCH"?X:v}async function G(t,s,e){let{schema:a,method:l="GET",body:F,query:K}=e,M=l==="POST"||l==="PUT"||l==="PATCH",V={method:l,url:t,body:M?F:void 0,mediaType:M?"application/json; charset=utf-8":void 0,query:K},$=await Q(Y(s),V,{rateLimitConfig:J(l)});return a.parse($)}async function d(t,s,e,a={}){return await G(s,t.key,{...a,schema:e})}function R(t){let s={};for(let e of Object.keys(t)){let a=t[e];a!==void 0&&(s[e]=a)}return s}function W(t){let s={};for(let e of Object.keys(t)){let a=t[e];a!==void 0&&(s[e]=a)}return s}function m(t,s=""){return`robots/${encodeURIComponent(t)}${s}`}function c(t,s){let e={};for(let l of s)t[l]!==void 0&&(e[l]=t[l]);let a=Object.keys(t).filter(l=>t[l]!==void 0);return a.length>0&&(e.fields=a),e}import{z as o}from"zod";import{z as r}from"zod";var n=r.string().nullable().optional(),i=r.number().nullable().optional(),h=r.boolean().nullable().optional(),tt=r.object({label:n,value:n}).loose(),et=r.object({type:n,name:n,label:n,required:h,encrypted:h,defaultValue:r.union([r.string(),r.number(),r.array(r.string())]).nullable().optional(),value:r.union([r.string(),r.number(),r.array(r.string()),r.null()]).optional(),min:i,max:i,pattern:n,options:r.array(tt).nullable().optional()}).loose(),y=r.record(r.string(),r.union([r.string(),r.number(),r.array(r.string())])),g=r.object({id:n,name:n,createdAt:i,inputParameters:r.array(et).nullable().optional()}).loose(),_=r.record(r.string(),r.union([r.string(),r.number(),r.boolean()]).nullable()),ot=r.object({id:n,name:n,src:n,width:i,height:i,x:i,y:i,deviceScaleFactor:i,full:n,comparedToScreenshotId:n,diffImageSrc:n,changePercentage:i,diffThreshold:i,fileRemovedAt:i}).loose(),k=r.object({id:n,inputParameters:y.nullable().optional(),robotId:n,status:n,runByUserId:n,robotBulkRunId:n,runByTaskMonitorId:n,runByAPI:h,createdAt:i,startedAt:i,finishedAt:i,userFriendlyError:n,triedRecordingVideo:h,videoUrl:n,videoRemovedAt:i,retriedOriginalTaskId:n,retriedTaskId:n,retriedByTaskId:n,capturedDataTemporaryUrl:n,capturedTexts:_.nullable().optional(),capturedScreenshots:r.record(r.string(),ot).nullable().optional(),capturedLists:r.record(r.string(),r.array(_)).nullable().optional()}).loose(),st=r.object({type:n,everyMinutes:i}).loose(),S=r.object({id:n,name:n,status:n,pausedReason:n,inputParameters:y.nullable().optional(),schedules:r.array(st).nullable().optional(),schedule:n,notifyOnCapturedScreenshotChange:h,notifyOnCapturedTextChange:h,capturedScreenshotNotificationThreshold:i,createdAt:i,pausedAt:i,updatedAt:i}).loose(),B=r.object({id:n,url:n,webhookEvent:n,createdAt:i}).loose(),T=r.object({id:n,title:n,status:n,tasksCount:i,successfulTasks:i,failedTasks:i,robotId:n,createdAt:i}).loose(),C=r.object({statusCode:i,messageCode:n,tasksQueueStatus:n}).loose();var rt=o.enum(["taskCapturedDataChanged","taskFinished","taskFinishedSuccessfully","taskFinishedWithError","tableExportFinishedSuccessfully"]),nt=o.enum(["failed","successful","in-progress"]),at=o.object({}),it=o.object({}),ut=o.object({robotId:o.string().min(1),recordVideo:o.boolean().optional(),inputParameters:y.optional()}),pt=o.object({robotId:o.string().min(1),title:o.string().min(1).max(200).optional(),inputParameters:o.array(y).min(1)}),lt=o.object({robotId:o.string().min(1),page:o.number().optional(),pageSize:o.number().optional(),status:nt.optional(),robotBulkRunId:o.string().optional(),sort:o.string().optional(),includeRetried:o.boolean().optional(),fromDate:o.number().optional(),toDate:o.number().optional()}),dt=o.object({robotId:o.string().min(1),taskId:o.string().min(1)}),ct=o.object({robotId:o.string().min(1),name:o.string().min(1).max(200),inputParameters:y,notifyOnCapturedScreenshotChange:o.boolean(),notifyOnCapturedTextChange:o.boolean(),capturedScreenshotNotificationThreshold:o.number(),schedule:o.string().optional(),schedules:o.array(o.object({type:o.literal("FIXED_INTERVAL"),everyMinutes:o.number()})).optional()}),bt=o.object({robotId:o.string().min(1),monitorId:o.string().min(1)}),mt=o.object({robotId:o.string().min(1),hookUrl:o.string().url(),eventType:rt}),wt=o.object({robotId:o.string().min(1)}),w=o.object({statusCode:o.number().nullable().optional(),messageCode:o.string().nullable().optional()}).loose(),ht=w.extend({robots:o.object({totalCount:o.number().nullable().optional(),items:o.array(g).nullable().optional()}).loose().nullable().optional()}),N=w.extend({result:k.nullable().optional()}),yt=w.extend({result:o.object({robotTasks:o.object({totalCount:o.number().nullable().optional(),pageNumber:o.number().nullable().optional(),hasMore:o.boolean().nullable().optional(),items:o.array(k).nullable().optional()}).loose().nullable().optional()}).loose().nullable().optional()}),ft=w.extend({result:o.object({bulkRun:T.nullable().optional()}).loose().nullable().optional()}),kt=w.extend({monitor:S.nullable().optional()}),Bt=w,Rt=w.extend({webhook:B.nullable().optional()}),gt=w.extend({webhooks:o.object({totalCount:o.number().nullable().optional(),items:o.array(B).nullable().optional()}).loose().nullable().optional()}),u={systemGetStatus:at,robotsList:it,robotsRun:ut,robotsBulkRun:pt,tasksList:lt,tasksGet:dt,monitorsCreate:ct,monitorsDelete:bt,webhooksCreate:mt,webhooksList:wt},p={systemGetStatus:C,robotsList:ht,robotsRun:N,robotsBulkRun:ft,tasksList:yt,tasksGet:N,monitorsCreate:kt,monitorsDelete:Bt,webhooksCreate:Rt,webhooksList:gt};var E=async(t,s)=>{u.systemGetStatus.parse(s);let e=await d(t,"status",p.systemGetStatus);return await b(t,"browseai.system.getStatus",c(s,[]),"completed"),e},I=async(t,s)=>{u.robotsList.parse(s);let e=await d(t,"robots",p.robotsList);return await b(t,"browseai.robots.list",{...c(s,[]),returned:e.robots?.items?.length??0},"completed"),e},x=async(t,s)=>{let e=u.robotsRun.parse(s),a=await d(t,m(e.robotId,"/tasks"),p.robotsRun,{method:"POST",body:R({recordVideo:e.recordVideo,inputParameters:e.inputParameters})});return await b(t,"browseai.robots.run",c(e,["robotId"]),"completed"),a},P=async(t,s)=>{let e=u.robotsBulkRun.parse(s),a=await d(t,m(e.robotId,"/bulk-runs"),p.robotsBulkRun,{method:"POST",body:R({title:e.title,inputParameters:e.inputParameters})});return await b(t,"browseai.robots.bulkRun",c(e,["robotId"]),"completed"),a},O=async(t,s)=>{let e=u.tasksList.parse(s),a=await d(t,m(e.robotId,"/tasks"),p.tasksList,{query:W({page:e.page,pageSize:e.pageSize,status:e.status,robotBulkRunId:e.robotBulkRunId,sort:e.sort,includeRetried:e.includeRetried,fromDate:e.fromDate,toDate:e.toDate})});return await b(t,"browseai.tasks.list",c(e,["robotId"]),"completed"),a},L=async(t,s)=>{let e=u.tasksGet.parse(s),a=await d(t,`${m(e.robotId,"/tasks")}/${encodeURIComponent(e.taskId)}`,p.tasksGet);return await b(t,"browseai.tasks.get",c(e,["robotId","taskId"]),"completed"),a},A=async(t,s)=>{let e=u.monitorsCreate.parse(s),a=await d(t,m(e.robotId,"/monitors"),p.monitorsCreate,{method:"POST",body:R({name:e.name,inputParameters:e.inputParameters,notifyOnCapturedScreenshotChange:e.notifyOnCapturedScreenshotChange,notifyOnCapturedTextChange:e.notifyOnCapturedTextChange,capturedScreenshotNotificationThreshold:e.capturedScreenshotNotificationThreshold,schedule:e.schedule,schedules:e.schedules})});return await b(t,"browseai.monitors.create",c(e,["robotId"]),"completed"),a},z=async(t,s)=>{let e=u.monitorsDelete.parse(s),a=await d(t,`${m(e.robotId,"/monitors")}/${encodeURIComponent(e.monitorId)}`,p.monitorsDelete,{method:"DELETE"});return await b(t,"browseai.monitors.delete",c(e,["robotId","monitorId"]),"completed"),a},j=async(t,s)=>{let e=u.webhooksCreate.parse(s),a=await d(t,m(e.robotId,"/webhooks"),p.webhooksCreate,{method:"POST",body:{hookUrl:e.hookUrl,eventType:e.eventType}});return await b(t,"browseai.webhooks.create",c(e,["robotId"]),"completed"),a},D=async(t,s)=>{let e=u.webhooksList.parse(s),a=await d(t,m(e.robotId,"/webhooks"),p.webhooksList);return await b(t,"browseai.webhooks.list",c(e,["robotId"]),"completed"),a};import{ApiError as f}from"corsair/http";var q={RATE_LIMIT_ERROR:{match:t=>{if(t instanceof f&&t.status===429)return!0;let s=t.message.toLowerCase();return s.includes("429")||s.includes("rate limit")},handler:async t=>({maxRetries:0,headersRetryAfterMs:t instanceof f?t.retryAfter:void 0})},AUTH_ERROR:{match:t=>{if(t instanceof f&&t.status===401)return!0;let s=t.message.toLowerCase();return s.includes("unauthorized")||s.includes("unauthenticated")},handler:async()=>({maxRetries:0})},PERMISSION_ERROR:{match:t=>t instanceof f&&t.status===403?!0:t.message.toLowerCase().includes("forbidden"),handler:async()=>({maxRetries:0})},NOT_FOUND_ERROR:{match:t=>t instanceof f&&t.status===404?!0:t.message.toLowerCase().includes("not found"),handler:async()=>({maxRetries:0})},BAD_REQUEST_ERROR:{match:t=>t instanceof f&&t.status===400?!0:t.message.toLowerCase().includes("bad request"),handler:async()=>({maxRetries:0})},DEFAULT:{match:()=>!0,handler:async()=>({maxRetries:0})}};var U={version:"1.0.0",entities:{bulkRun:T,monitor:S,robot:g,robotTask:k,systemStatus:C,webhook:B}};var St={api_key:{}},Tt={system:{getStatus:E},robots:{list:I,run:x,bulkRun:P},tasks:{list:O,get:L},monitors:{create:A,delete:z},webhooks:{create:j,list:D}},Ct={"system.getStatus":{input:u.systemGetStatus,output:p.systemGetStatus},"robots.list":{input:u.robotsList,output:p.robotsList},"robots.run":{input:u.robotsRun,output:p.robotsRun},"robots.bulkRun":{input:u.robotsBulkRun,output:p.robotsBulkRun},"tasks.list":{input:u.tasksList,output:p.tasksList},"tasks.get":{input:u.tasksGet,output:p.tasksGet},"monitors.create":{input:u.monitorsCreate,output:p.monitorsCreate},"monitors.delete":{input:u.monitorsDelete,output:p.monitorsDelete},"webhooks.create":{input:u.webhooksCreate,output:p.webhooksCreate},"webhooks.list":{input:u.webhooksList,output:p.webhooksList}},Et="api_key",It={"system.getStatus":{riskLevel:"read",description:"Check Browse AI task-queue status"},"robots.list":{riskLevel:"read",description:"List robots on the account"},"robots.run":{riskLevel:"write",description:"Start a robot task"},"robots.bulkRun":{riskLevel:"write",description:"Start a bulk run of robot tasks"},"tasks.list":{riskLevel:"read",description:"List tasks for a robot"},"tasks.get":{riskLevel:"read",description:"Get a robot task by id"},"monitors.create":{riskLevel:"write",description:"Create a robot monitor"},"monitors.delete":{riskLevel:"write",description:"Delete a robot monitor"},"webhooks.create":{riskLevel:"write",description:"Create a robot webhook"},"webhooks.list":{riskLevel:"read",description:"List webhooks for a robot"}};function Jt(t={}){let s={...t,authType:t.authType??Et};return{id:"browseai",authConfig:St,schema:U,options:s,hooks:s.hooks,endpoints:Tt,webhooks:{},endpointMeta:It,endpointSchemas:Ct,webhookSchemas:{},errorHandlers:{...q,...s.errorHandlers},keyBuilder:async(e,a)=>{if(a==="endpoint"&&s.key)return s.key;if(a==="endpoint"&&e.authType==="api_key"){let l=await e.keys.get_api_key();if(!l)throw new H("browseai","api_key");return l}throw new H("browseai",e.authType)}}}export{Jt as browseai,St as browseaiAuthConfig,It as browseaiEndpointMeta,Ct as browseaiEndpointSchemas};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.test.d.ts","sourceRoot":"","sources":["../plugin.test.ts"],"names":[],"mappings":""}
|