@verial-ai/sdk 0.1.0 → 0.3.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/README.md +176 -0
- package/dist/cli/index.js +736 -293
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +300 -86
- package/dist/index.js +308 -34
- package/dist/index.js.map +1 -1
- package/package.json +15 -4
package/dist/index.js
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
// src/constants.ts
|
|
2
|
+
var DEFAULT_BASE_URL = "https://api.verial.ai";
|
|
3
|
+
var Status = {
|
|
4
|
+
Pending: "pending",
|
|
5
|
+
Active: "active",
|
|
6
|
+
Completed: "completed",
|
|
7
|
+
Failed: "failed",
|
|
8
|
+
Canceled: "canceled",
|
|
9
|
+
Provisioning: "provisioning",
|
|
10
|
+
TornDown: "torn_down"
|
|
11
|
+
};
|
|
12
|
+
var Verdict = {
|
|
13
|
+
Pass: "pass",
|
|
14
|
+
Fail: "fail",
|
|
15
|
+
Partial: "partial"
|
|
16
|
+
};
|
|
17
|
+
var SimulatorType = {
|
|
18
|
+
FHIR: "FHIR",
|
|
19
|
+
HL7: "HL7",
|
|
20
|
+
CDSHooks: "CDSHooks",
|
|
21
|
+
Voice: "Voice",
|
|
22
|
+
Fax: "Fax",
|
|
23
|
+
SFTP: "SFTP",
|
|
24
|
+
Email: "Email",
|
|
25
|
+
Message: "Message",
|
|
26
|
+
Payer: "Payer",
|
|
27
|
+
Clearinghouse: "Clearinghouse"
|
|
28
|
+
};
|
|
29
|
+
var ErrorCode = {
|
|
30
|
+
Unauthorized: "UNAUTHORIZED",
|
|
31
|
+
Forbidden: "FORBIDDEN",
|
|
32
|
+
ValidationError: "VALIDATION_ERROR",
|
|
33
|
+
BadRequest: "BAD_REQUEST",
|
|
34
|
+
NotFound: "NOT_FOUND",
|
|
35
|
+
Conflict: "CONFLICT",
|
|
36
|
+
RateLimited: "RATE_LIMITED",
|
|
37
|
+
InternalError: "INTERNAL_ERROR"
|
|
38
|
+
};
|
|
39
|
+
|
|
1
40
|
// src/errors.ts
|
|
2
41
|
var VerialError = class extends Error {
|
|
3
42
|
constructor(message) {
|
|
@@ -5,29 +44,134 @@ var VerialError = class extends Error {
|
|
|
5
44
|
this.name = "VerialError";
|
|
6
45
|
}
|
|
7
46
|
};
|
|
8
|
-
var
|
|
47
|
+
var APIError = class _APIError extends VerialError {
|
|
9
48
|
status;
|
|
10
49
|
code;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
50
|
+
requestId;
|
|
51
|
+
headers;
|
|
52
|
+
errors;
|
|
53
|
+
constructor(status, code, message, options) {
|
|
54
|
+
const parts = [message];
|
|
55
|
+
if (options?.requestId) parts.push(`(request_id: ${options.requestId})`);
|
|
56
|
+
super(parts.join(" "));
|
|
57
|
+
this.name = "APIError";
|
|
15
58
|
this.status = status;
|
|
16
59
|
this.code = code;
|
|
17
|
-
this.
|
|
60
|
+
this.requestId = options?.requestId;
|
|
61
|
+
this.headers = options?.headers;
|
|
62
|
+
this.errors = options?.errors;
|
|
63
|
+
}
|
|
64
|
+
static fromResponse(status, body, headers) {
|
|
65
|
+
const code = body.code ?? "UNKNOWN_ERROR";
|
|
66
|
+
const message = body.detail ?? body.message ?? "Unknown error";
|
|
67
|
+
const { requestId, errors } = body;
|
|
68
|
+
const opts = { requestId, headers, errors };
|
|
69
|
+
switch (status) {
|
|
70
|
+
case 401:
|
|
71
|
+
return new AuthenticationError(code, message, opts);
|
|
72
|
+
case 403:
|
|
73
|
+
return new PermissionDeniedError(code, message, opts);
|
|
74
|
+
case 404:
|
|
75
|
+
return new NotFoundError(code, message, opts);
|
|
76
|
+
case 409:
|
|
77
|
+
return new ConflictError(code, message, opts);
|
|
78
|
+
case 429: {
|
|
79
|
+
const retryAfter = parseRetryAfter(headers.get("retry-after"));
|
|
80
|
+
return new RateLimitError(code, message, { ...opts, retryAfter });
|
|
81
|
+
}
|
|
82
|
+
default:
|
|
83
|
+
if (status >= 400 && status < 500)
|
|
84
|
+
return new ValidationError(code, message, opts);
|
|
85
|
+
if (status >= 500)
|
|
86
|
+
return new InternalServerError(code, message, opts);
|
|
87
|
+
return new _APIError(status, code, message, opts);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
var AuthenticationError = class extends APIError {
|
|
92
|
+
constructor(code, message, options) {
|
|
93
|
+
super(401, code, message, options);
|
|
94
|
+
this.name = "AuthenticationError";
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
var PermissionDeniedError = class extends APIError {
|
|
98
|
+
constructor(code, message, options) {
|
|
99
|
+
super(403, code, message, options);
|
|
100
|
+
this.name = "PermissionDeniedError";
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
var NotFoundError = class extends APIError {
|
|
104
|
+
constructor(code, message, options) {
|
|
105
|
+
super(404, code, message, options);
|
|
106
|
+
this.name = "NotFoundError";
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var ConflictError = class extends APIError {
|
|
110
|
+
constructor(code, message, options) {
|
|
111
|
+
super(409, code, message, options);
|
|
112
|
+
this.name = "ConflictError";
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
var ValidationError = class extends APIError {
|
|
116
|
+
constructor(code, message, options) {
|
|
117
|
+
super(400, code, message, options);
|
|
118
|
+
this.name = "ValidationError";
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
var RateLimitError = class extends APIError {
|
|
122
|
+
retryAfter;
|
|
123
|
+
constructor(code, message, options) {
|
|
124
|
+
super(429, code, message, options);
|
|
125
|
+
this.name = "RateLimitError";
|
|
126
|
+
this.retryAfter = options?.retryAfter;
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
var InternalServerError = class extends APIError {
|
|
130
|
+
constructor(code, message, options) {
|
|
131
|
+
super(500, code, message, options);
|
|
132
|
+
this.name = "InternalServerError";
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
var APIConnectionError = class extends VerialError {
|
|
136
|
+
constructor(message, cause) {
|
|
137
|
+
super(message);
|
|
138
|
+
this.cause = cause;
|
|
139
|
+
this.name = "APIConnectionError";
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
var APITimeoutError = class extends VerialError {
|
|
143
|
+
constructor(message = "Request timed out") {
|
|
144
|
+
super(message);
|
|
145
|
+
this.name = "APITimeoutError";
|
|
18
146
|
}
|
|
19
147
|
};
|
|
148
|
+
var VerialApiError = APIError;
|
|
149
|
+
function parseRetryAfter(value) {
|
|
150
|
+
if (!value) return void 0;
|
|
151
|
+
const seconds = Number(value);
|
|
152
|
+
if (!Number.isNaN(seconds)) return seconds;
|
|
153
|
+
const date = Date.parse(value);
|
|
154
|
+
if (!Number.isNaN(date)) return Math.max(0, (date - Date.now()) / 1e3);
|
|
155
|
+
return void 0;
|
|
156
|
+
}
|
|
20
157
|
|
|
21
158
|
// src/client.ts
|
|
159
|
+
var RETRYABLE_STATUS_CODES = /* @__PURE__ */ new Set([408, 429, 500, 502, 503, 504]);
|
|
22
160
|
var VerialClient = class {
|
|
23
161
|
baseUrl;
|
|
24
162
|
apiKey;
|
|
163
|
+
maxRetries;
|
|
164
|
+
timeout;
|
|
165
|
+
hooks;
|
|
25
166
|
constructor(config) {
|
|
26
167
|
if (!config.apiKey) {
|
|
27
168
|
throw new VerialError("API key is required");
|
|
28
169
|
}
|
|
29
170
|
this.apiKey = config.apiKey;
|
|
30
|
-
this.baseUrl = config.baseUrl ??
|
|
171
|
+
this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
|
|
172
|
+
this.maxRetries = config.maxRetries ?? 2;
|
|
173
|
+
this.timeout = config.timeout ?? 6e4;
|
|
174
|
+
this.hooks = config.hooks ?? [];
|
|
31
175
|
}
|
|
32
176
|
async get(path, query) {
|
|
33
177
|
return this.request("GET", path, void 0, query);
|
|
@@ -55,21 +199,131 @@ var VerialClient = class {
|
|
|
55
199
|
Authorization: `Bearer ${this.apiKey}`,
|
|
56
200
|
"Content-Type": "application/json"
|
|
57
201
|
};
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
202
|
+
const serializedBody = body ? JSON.stringify(body) : void 0;
|
|
203
|
+
const requestInfo = { url, method, headers, body: serializedBody };
|
|
204
|
+
for (const hook of this.hooks) {
|
|
205
|
+
await hook.beforeRequest?.(requestInfo);
|
|
206
|
+
}
|
|
207
|
+
let lastError;
|
|
208
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
209
|
+
if (attempt > 0) {
|
|
210
|
+
const delay = this.getRetryDelay(attempt, lastError);
|
|
211
|
+
await sleep(delay);
|
|
212
|
+
}
|
|
213
|
+
const controller = new AbortController();
|
|
214
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
215
|
+
let res;
|
|
216
|
+
try {
|
|
217
|
+
res = await fetch(requestInfo.url, {
|
|
218
|
+
method: requestInfo.method,
|
|
219
|
+
headers: requestInfo.headers,
|
|
220
|
+
body: requestInfo.body,
|
|
221
|
+
signal: controller.signal
|
|
222
|
+
});
|
|
223
|
+
} catch (err) {
|
|
224
|
+
clearTimeout(timeoutId);
|
|
225
|
+
if (err instanceof DOMException && err.name === "AbortError") {
|
|
226
|
+
const timeoutError = new APITimeoutError(
|
|
227
|
+
`Request timed out after ${this.timeout}ms`
|
|
228
|
+
);
|
|
229
|
+
await this.runOnError(timeoutError, requestInfo);
|
|
230
|
+
throw timeoutError;
|
|
231
|
+
}
|
|
232
|
+
if (err instanceof TypeError) {
|
|
233
|
+
lastError = new APIConnectionError(
|
|
234
|
+
`Connection error: ${err.message}`,
|
|
235
|
+
err
|
|
236
|
+
);
|
|
237
|
+
if (attempt < this.maxRetries) continue;
|
|
238
|
+
await this.runOnError(lastError, requestInfo);
|
|
239
|
+
throw lastError;
|
|
240
|
+
}
|
|
241
|
+
throw err;
|
|
242
|
+
} finally {
|
|
243
|
+
clearTimeout(timeoutId);
|
|
244
|
+
}
|
|
245
|
+
if (res.ok) {
|
|
246
|
+
for (const hook of this.hooks) {
|
|
247
|
+
await hook.afterResponse?.(res, requestInfo);
|
|
248
|
+
}
|
|
249
|
+
return res.json();
|
|
250
|
+
}
|
|
251
|
+
const errorBody = await res.json().catch(() => ({}));
|
|
252
|
+
const apiError = APIError.fromResponse(
|
|
66
253
|
res.status,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
err.details
|
|
254
|
+
errorBody,
|
|
255
|
+
res.headers
|
|
70
256
|
);
|
|
257
|
+
if (attempt < this.maxRetries && RETRYABLE_STATUS_CODES.has(res.status)) {
|
|
258
|
+
lastError = apiError;
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
await this.runOnError(apiError, requestInfo);
|
|
262
|
+
throw apiError;
|
|
263
|
+
}
|
|
264
|
+
throw lastError ?? new APIConnectionError("Request failed after retries");
|
|
265
|
+
}
|
|
266
|
+
async runOnError(error, request) {
|
|
267
|
+
for (const hook of this.hooks) {
|
|
268
|
+
await hook.onError?.(error, request);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
getRetryDelay(attempt, lastError) {
|
|
272
|
+
if (lastError instanceof RateLimitError && lastError.retryAfter) {
|
|
273
|
+
return lastError.retryAfter * 1e3;
|
|
274
|
+
}
|
|
275
|
+
const baseDelay = Math.min(0.5 * Math.pow(2, attempt), 8);
|
|
276
|
+
const jitter = baseDelay * 0.2 * Math.random();
|
|
277
|
+
return (baseDelay + jitter) * 1e3;
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
function sleep(ms) {
|
|
281
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// src/pagination.ts
|
|
285
|
+
var Page = class _Page {
|
|
286
|
+
data;
|
|
287
|
+
_meta;
|
|
288
|
+
client;
|
|
289
|
+
path;
|
|
290
|
+
query;
|
|
291
|
+
constructor(response, client, path, query) {
|
|
292
|
+
this.data = response.data;
|
|
293
|
+
this._meta = response._meta;
|
|
294
|
+
this.client = client;
|
|
295
|
+
this.path = path;
|
|
296
|
+
this.query = query;
|
|
297
|
+
}
|
|
298
|
+
toJSON() {
|
|
299
|
+
return { data: this.data, _meta: this._meta };
|
|
300
|
+
}
|
|
301
|
+
hasNextPage() {
|
|
302
|
+
return this._meta.next !== null;
|
|
303
|
+
}
|
|
304
|
+
async getNextPage() {
|
|
305
|
+
if (!this.hasNextPage()) return null;
|
|
306
|
+
return _Page.fetch(this.client, this.path, {
|
|
307
|
+
...this.query,
|
|
308
|
+
cursor: this._meta.next,
|
|
309
|
+
limit: this._meta.limit.toString()
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
async *[Symbol.asyncIterator]() {
|
|
313
|
+
let page = this;
|
|
314
|
+
while (page) {
|
|
315
|
+
for (const item of page.data) {
|
|
316
|
+
yield item;
|
|
317
|
+
}
|
|
318
|
+
page = await page.getNextPage();
|
|
71
319
|
}
|
|
72
|
-
|
|
320
|
+
}
|
|
321
|
+
static async fetch(client, path, query) {
|
|
322
|
+
const response = await client.get(
|
|
323
|
+
path,
|
|
324
|
+
query
|
|
325
|
+
);
|
|
326
|
+
return new _Page(response, client, path, query);
|
|
73
327
|
}
|
|
74
328
|
};
|
|
75
329
|
|
|
@@ -79,7 +333,7 @@ var Benchmarks = class {
|
|
|
79
333
|
this.client = client;
|
|
80
334
|
}
|
|
81
335
|
async list(options = {}) {
|
|
82
|
-
return this.client
|
|
336
|
+
return Page.fetch(this.client, "/benchmarks", {
|
|
83
337
|
cursor: options.cursor,
|
|
84
338
|
limit: options.limit?.toString()
|
|
85
339
|
});
|
|
@@ -110,7 +364,7 @@ var Datasets = class {
|
|
|
110
364
|
this.client = client;
|
|
111
365
|
}
|
|
112
366
|
async list(options = {}) {
|
|
113
|
-
return this.client
|
|
367
|
+
return Page.fetch(this.client, "/datasets", {
|
|
114
368
|
cursor: options.cursor,
|
|
115
369
|
limit: options.limit?.toString()
|
|
116
370
|
});
|
|
@@ -141,7 +395,7 @@ var Environments = class {
|
|
|
141
395
|
this.client = client;
|
|
142
396
|
}
|
|
143
397
|
async list(options = {}) {
|
|
144
|
-
return this.client
|
|
398
|
+
return Page.fetch(this.client, "/environments", {
|
|
145
399
|
cursor: options.cursor,
|
|
146
400
|
limit: options.limit?.toString()
|
|
147
401
|
});
|
|
@@ -180,7 +434,7 @@ var EvalRuns = class {
|
|
|
180
434
|
this.client = client;
|
|
181
435
|
}
|
|
182
436
|
async list(options) {
|
|
183
|
-
return this.client
|
|
437
|
+
return Page.fetch(this.client, "/eval-runs", {
|
|
184
438
|
taskRunId: options.taskRunId,
|
|
185
439
|
cursor: options.cursor,
|
|
186
440
|
limit: options.limit?.toString()
|
|
@@ -197,7 +451,7 @@ var Evals = class {
|
|
|
197
451
|
this.client = client;
|
|
198
452
|
}
|
|
199
453
|
async list(options) {
|
|
200
|
-
return this.client
|
|
454
|
+
return Page.fetch(this.client, "/evals", {
|
|
201
455
|
taskId: options.taskId,
|
|
202
456
|
cursor: options.cursor,
|
|
203
457
|
limit: options.limit?.toString()
|
|
@@ -229,7 +483,7 @@ var Playgrounds = class {
|
|
|
229
483
|
this.client = client;
|
|
230
484
|
}
|
|
231
485
|
async list(options = {}) {
|
|
232
|
-
return this.client
|
|
486
|
+
return Page.fetch(this.client, "/playgrounds", {
|
|
233
487
|
cursor: options.cursor,
|
|
234
488
|
limit: options.limit?.toString()
|
|
235
489
|
});
|
|
@@ -253,7 +507,7 @@ var Runs = class {
|
|
|
253
507
|
this.client = client;
|
|
254
508
|
}
|
|
255
509
|
async list(options = {}) {
|
|
256
|
-
return this.client
|
|
510
|
+
return Page.fetch(this.client, "/runs", {
|
|
257
511
|
cursor: options.cursor,
|
|
258
512
|
limit: options.limit?.toString()
|
|
259
513
|
});
|
|
@@ -280,7 +534,7 @@ var Sandboxes = class {
|
|
|
280
534
|
this.client = client;
|
|
281
535
|
}
|
|
282
536
|
async list(options = {}) {
|
|
283
|
-
return this.client
|
|
537
|
+
return Page.fetch(this.client, "/sandboxes", {
|
|
284
538
|
playgroundId: options.playgroundId,
|
|
285
539
|
cursor: options.cursor,
|
|
286
540
|
limit: options.limit?.toString()
|
|
@@ -295,10 +549,14 @@ var Sandboxes = class {
|
|
|
295
549
|
return this.client.get(`/sandboxes/${options.id}`);
|
|
296
550
|
}
|
|
297
551
|
async listEvents(options) {
|
|
298
|
-
return
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
552
|
+
return Page.fetch(
|
|
553
|
+
this.client,
|
|
554
|
+
`/sandboxes/${options.id}/events`,
|
|
555
|
+
{
|
|
556
|
+
cursor: options.cursor,
|
|
557
|
+
limit: options.limit?.toString()
|
|
558
|
+
}
|
|
559
|
+
);
|
|
302
560
|
}
|
|
303
561
|
async teardown(options) {
|
|
304
562
|
return this.client.post(`/sandboxes/${options.id}/teardown`);
|
|
@@ -321,7 +579,7 @@ var Simulators = class {
|
|
|
321
579
|
this.client = client;
|
|
322
580
|
}
|
|
323
581
|
async list(options = {}) {
|
|
324
|
-
return this.client
|
|
582
|
+
return Page.fetch(this.client, "/simulators", {
|
|
325
583
|
environmentId: options.environmentId,
|
|
326
584
|
cursor: options.cursor,
|
|
327
585
|
limit: options.limit?.toString()
|
|
@@ -358,7 +616,7 @@ var TaskRuns = class {
|
|
|
358
616
|
this.client = client;
|
|
359
617
|
}
|
|
360
618
|
async list(options) {
|
|
361
|
-
return this.client
|
|
619
|
+
return Page.fetch(this.client, "/task-runs", {
|
|
362
620
|
runId: options.runId,
|
|
363
621
|
cursor: options.cursor,
|
|
364
622
|
limit: options.limit?.toString()
|
|
@@ -381,7 +639,7 @@ var Tasks = class {
|
|
|
381
639
|
this.client = client;
|
|
382
640
|
}
|
|
383
641
|
async list(options) {
|
|
384
|
-
return this.client
|
|
642
|
+
return Page.fetch(this.client, "/tasks", {
|
|
385
643
|
benchmarkId: options.benchmarkId,
|
|
386
644
|
cursor: options.cursor,
|
|
387
645
|
limit: options.limit?.toString()
|
|
@@ -438,6 +696,22 @@ var Verial = class {
|
|
|
438
696
|
}
|
|
439
697
|
};
|
|
440
698
|
export {
|
|
699
|
+
APIConnectionError,
|
|
700
|
+
APIError,
|
|
701
|
+
APITimeoutError,
|
|
702
|
+
AuthenticationError,
|
|
703
|
+
ConflictError,
|
|
704
|
+
DEFAULT_BASE_URL,
|
|
705
|
+
ErrorCode,
|
|
706
|
+
InternalServerError,
|
|
707
|
+
NotFoundError,
|
|
708
|
+
Page,
|
|
709
|
+
PermissionDeniedError,
|
|
710
|
+
RateLimitError,
|
|
711
|
+
SimulatorType,
|
|
712
|
+
Status,
|
|
713
|
+
ValidationError,
|
|
714
|
+
Verdict,
|
|
441
715
|
Verial,
|
|
442
716
|
VerialApiError,
|
|
443
717
|
VerialError
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/resources/benchmarks.ts","../src/resources/datasets.ts","../src/resources/environments.ts","../src/resources/eval-runs.ts","../src/resources/evals.ts","../src/resources/playgrounds.ts","../src/resources/runs.ts","../src/resources/sandboxes.ts","../src/resources/simulators.ts","../src/resources/task-runs.ts","../src/resources/tasks.ts","../src/index.ts"],"sourcesContent":["export class VerialError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VerialError\";\n }\n}\n\nexport class VerialApiError extends VerialError {\n readonly status: number;\n readonly code: string;\n readonly details?: unknown;\n\n constructor(\n status: number,\n code: string,\n message: string,\n details?: unknown,\n ) {\n super(message);\n this.name = \"VerialApiError\";\n this.status = status;\n this.code = code;\n this.details = details;\n }\n}\n","import { VerialApiError, VerialError } from \"./errors\";\n\nexport interface VerialClientConfig {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport class VerialClient {\n readonly baseUrl: string;\n private readonly apiKey: string;\n\n constructor(config: VerialClientConfig) {\n if (!config.apiKey) {\n throw new VerialError(\"API key is required\");\n }\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl ?? \"https://api.verial.ai\";\n }\n\n async get<T = unknown>(\n path: string,\n query?: Record<string, string | undefined>,\n ): Promise<T> {\n return this.request(\"GET\", path, undefined, query);\n }\n\n async post<T = unknown>(path: string, body?: unknown): Promise<T> {\n return this.request(\"POST\", path, body);\n }\n\n async patch<T = unknown>(path: string, body: unknown): Promise<T> {\n return this.request(\"PATCH\", path, body);\n }\n\n async delete<T = unknown>(path: string): Promise<T> {\n return this.request(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n query?: Record<string, string | undefined>,\n ): Promise<T> {\n let url = `${this.baseUrl}${path}`;\n\n if (query) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined) params.set(k, v);\n }\n const qs = params.toString();\n if (qs) url += `?${qs}`;\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n\n const res = await fetch(url, {\n method,\n headers,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!res.ok) {\n const err = (await res.json().catch(() => ({}))) as Record<\n string,\n unknown\n >;\n throw new VerialApiError(\n res.status,\n (err.code as string) ?? \"UNKNOWN\",\n (err.error as string) ?? res.statusText,\n err.details,\n );\n }\n\n return res.json() as Promise<T>;\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type Benchmark, type PaginatedResponse } from \"../types\";\n\nexport class Benchmarks {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Benchmark>> {\n return this.client.get(\"/benchmarks\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n environmentId: string;\n timeout?: number;\n concurrency?: number;\n }): Promise<Benchmark> {\n return this.client.post(\"/benchmarks\", {\n name: options.name,\n environment_id: options.environmentId,\n timeout: options.timeout,\n concurrency: options.concurrency,\n });\n }\n\n async get(options: { id: string }): Promise<Benchmark> {\n return this.client.get(`/benchmarks/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n timeout?: number;\n concurrency?: number;\n }): Promise<Benchmark> {\n const { id, ...body } = options;\n return this.client.patch(`/benchmarks/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/benchmarks/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type Dataset, type PaginatedResponse } from \"../types\";\n\nexport class Datasets {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Dataset>> {\n return this.client.get(\"/datasets\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n data?: unknown;\n config?: Record<string, unknown>;\n }): Promise<Dataset> {\n return this.client.post(\"/datasets\", options);\n }\n\n async get(options: { id: string }): Promise<Dataset> {\n return this.client.get(`/datasets/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n description?: string | null;\n data?: unknown;\n config?: Record<string, unknown>;\n }): Promise<Dataset> {\n const { id, ...body } = options;\n return this.client.patch(`/datasets/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/datasets/${options.id}`);\n }\n\n async generate(options: {\n id: string;\n prompt: string;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/datasets/${options.id}/generate`, {\n prompt: options.prompt,\n });\n }\n}\n","import { type VerialClient } from \"../client\";\nimport {\n type Environment,\n type EnvironmentSimulatorLink,\n type PaginatedResponse,\n} from \"../types\";\n\nexport class Environments {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Environment>> {\n return this.client.get(\"/environments\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n templateId?: string;\n }): Promise<Environment> {\n return this.client.post(\"/environments\", {\n name: options.name,\n template_id: options.templateId,\n });\n }\n\n async get(options: { id: string }): Promise<Environment> {\n return this.client.get(`/environments/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n description?: string | null;\n }): Promise<Environment> {\n const { id, ...body } = options;\n return this.client.patch(`/environments/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/environments/${options.id}`);\n }\n\n async addSimulator(options: {\n environmentId: string;\n simulatorId: string;\n }): Promise<EnvironmentSimulatorLink> {\n return this.client.post(\n `/environments/${options.environmentId}/simulators/${options.simulatorId}`,\n );\n }\n\n async removeSimulator(options: {\n environmentId: string;\n simulatorId: string;\n }): Promise<{ deleted: true }> {\n return this.client.delete(\n `/environments/${options.environmentId}/simulators/${options.simulatorId}`,\n );\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type EvalRun, type PaginatedResponse } from \"../types\";\n\nexport class EvalRuns {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n taskRunId: string;\n cursor?: string;\n limit?: number;\n }): Promise<PaginatedResponse<EvalRun>> {\n return this.client.get(\"/eval-runs\", {\n taskRunId: options.taskRunId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async get(options: { id: string }): Promise<EvalRun> {\n return this.client.get(`/eval-runs/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type Eval, type PaginatedResponse } from \"../types\";\n\nexport class Evals {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n taskId: string;\n cursor?: string;\n limit?: number;\n }): Promise<PaginatedResponse<Eval>> {\n return this.client.get(\"/evals\", {\n taskId: options.taskId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n taskId: string;\n label: string;\n assert: string;\n weight?: number;\n }): Promise<Eval> {\n return this.client.post(\"/evals\", {\n task_id: options.taskId,\n label: options.label,\n assert: options.assert,\n weight: options.weight,\n });\n }\n\n async get(options: { id: string }): Promise<Eval> {\n return this.client.get(`/evals/${options.id}`);\n }\n\n async update(options: {\n id: string;\n label?: string;\n assert?: string;\n weight?: number;\n }): Promise<Eval> {\n const { id, ...body } = options;\n return this.client.patch(`/evals/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/evals/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type PaginatedResponse, type Playground } from \"../types\";\n\nexport class Playgrounds {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Playground>> {\n return this.client.get(\"/playgrounds\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { environmentId: string }): Promise<Playground> {\n return this.client.post(\"/playgrounds\", {\n environment_id: options.environmentId,\n });\n }\n\n async get(options: { id: string }): Promise<Playground> {\n return this.client.get(`/playgrounds/${options.id}`);\n }\n\n async teardown(options: {\n id: string;\n }): Promise<{ id: string; status: string }> {\n return this.client.post(`/playgrounds/${options.id}/teardown`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type PaginatedResponse, type Run } from \"../types\";\n\nexport class Runs {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Run>> {\n return this.client.get(\"/runs\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { benchmarkId: string }): Promise<Run> {\n return this.client.post(\"/runs\", {\n benchmark_id: options.benchmarkId,\n });\n }\n\n async get(options: { id: string }): Promise<Run> {\n return this.client.get(`/runs/${options.id}`);\n }\n\n async complete(options: { id: string }): Promise<Run> {\n return this.client.post(`/runs/${options.id}/complete`);\n }\n\n async cancel(options: { id: string }): Promise<Run> {\n return this.client.post(`/runs/${options.id}/cancel`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport {\n type PaginatedResponse,\n type Sandbox,\n type SandboxEvent,\n} from \"../types\";\n\nexport class Sandboxes {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { playgroundId?: string; cursor?: string; limit?: number } = {},\n ): Promise<PaginatedResponse<Sandbox>> {\n return this.client.get(\"/sandboxes\", {\n playgroundId: options.playgroundId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { simulatorId: string }): Promise<Sandbox> {\n return this.client.post(\"/sandboxes\", {\n simulator_id: options.simulatorId,\n });\n }\n\n async get(options: { id: string }): Promise<Sandbox> {\n return this.client.get(`/sandboxes/${options.id}`);\n }\n\n async listEvents(options: {\n id: string;\n cursor?: string;\n limit?: number;\n }): Promise<PaginatedResponse<SandboxEvent>> {\n return this.client.get(`/sandboxes/${options.id}/events`, {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async teardown(options: {\n id: string;\n }): Promise<{ id: string; status: string }> {\n return this.client.post(`/sandboxes/${options.id}/teardown`);\n }\n\n async addDataset(options: {\n sandboxId: string;\n datasetId: string;\n }): Promise<{ sandbox_id: string; dataset_id: string; linked_at: string }> {\n return this.client.post(\n `/sandboxes/${options.sandboxId}/datasets/${options.datasetId}`,\n );\n }\n\n async removeDataset(options: {\n sandboxId: string;\n datasetId: string;\n }): Promise<{ deleted: true }> {\n return this.client.delete(\n `/sandboxes/${options.sandboxId}/datasets/${options.datasetId}`,\n );\n }\n}\n","import { type VerialClient } from \"../client\";\nimport {\n type PaginatedResponse,\n type Simulator,\n type SimulatorType,\n} from \"../types\";\n\nexport class Simulators {\n constructor(private client: VerialClient) {}\n\n async list(\n options: {\n environmentId?: string;\n cursor?: string;\n limit?: number;\n } = {},\n ): Promise<PaginatedResponse<Simulator>> {\n return this.client.get(\"/simulators\", {\n environmentId: options.environmentId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n type: SimulatorType;\n name: string;\n config?: Record<string, unknown>;\n }): Promise<Simulator> {\n return this.client.post(\"/simulators\", options);\n }\n\n async get(options: { id: string }): Promise<Simulator> {\n return this.client.get(`/simulators/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n config?: Record<string, unknown>;\n }): Promise<Simulator> {\n const { id, ...body } = options;\n return this.client.patch(`/simulators/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/simulators/${options.id}`);\n }\n\n async generateConfig(options: {\n id: string;\n prompt: string;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/simulators/${options.id}/config/generate`, {\n prompt: options.prompt,\n });\n }\n\n async generateData(options: {\n id: string;\n seed?: number;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/simulators/${options.id}/data/generate`, {\n seed: options.seed,\n });\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type PaginatedResponse, type TaskRun } from \"../types\";\n\nexport class TaskRuns {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n runId: string;\n cursor?: string;\n limit?: number;\n }): Promise<PaginatedResponse<TaskRun>> {\n return this.client.get(\"/task-runs\", {\n runId: options.runId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async get(options: { id: string }): Promise<TaskRun> {\n return this.client.get(`/task-runs/${options.id}`);\n }\n\n async complete(options: { id: string }): Promise<TaskRun> {\n return this.client.post(`/task-runs/${options.id}/complete`);\n }\n\n async cancel(options: { id: string }): Promise<TaskRun> {\n return this.client.post(`/task-runs/${options.id}/cancel`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { type PaginatedResponse, type Task } from \"../types\";\n\nexport class Tasks {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n benchmarkId: string;\n cursor?: string;\n limit?: number;\n }): Promise<PaginatedResponse<Task>> {\n return this.client.get(\"/tasks\", {\n benchmarkId: options.benchmarkId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n benchmarkId: string;\n name: string;\n instruction?: string;\n timeout?: number;\n trigger?: Record<string, unknown>;\n tags?: string[];\n }): Promise<Task> {\n return this.client.post(\"/tasks\", {\n benchmark_id: options.benchmarkId,\n name: options.name,\n instruction: options.instruction,\n timeout: options.timeout,\n trigger: options.trigger,\n tags: options.tags,\n });\n }\n\n async get(options: { id: string }): Promise<Task> {\n return this.client.get(`/tasks/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n instruction?: string;\n timeout?: number;\n trigger?: Record<string, unknown>;\n tags?: string[];\n }): Promise<Task> {\n const { id, ...body } = options;\n return this.client.patch(`/tasks/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/tasks/${options.id}`);\n }\n}\n","import { VerialClient } from \"./client\";\nimport { Benchmarks } from \"./resources/benchmarks\";\nimport { Datasets } from \"./resources/datasets\";\nimport { Environments } from \"./resources/environments\";\nimport { EvalRuns } from \"./resources/eval-runs\";\nimport { Evals } from \"./resources/evals\";\nimport { Playgrounds } from \"./resources/playgrounds\";\nimport { Runs } from \"./resources/runs\";\nimport { Sandboxes } from \"./resources/sandboxes\";\nimport { Simulators } from \"./resources/simulators\";\nimport { TaskRuns } from \"./resources/task-runs\";\nimport { Tasks } from \"./resources/tasks\";\n\nexport interface VerialConfig {\n apiKey: string;\n baseUrl?: string;\n}\n\nexport class Verial {\n readonly environments: Environments;\n readonly simulators: Simulators;\n readonly datasets: Datasets;\n readonly benchmarks: Benchmarks;\n readonly tasks: Tasks;\n readonly evals: Evals;\n readonly playgrounds: Playgrounds;\n readonly sandboxes: Sandboxes;\n readonly runs: Runs;\n readonly taskRuns: TaskRuns;\n readonly evalRuns: EvalRuns;\n\n constructor(config: VerialConfig) {\n const client = new VerialClient(config);\n this.environments = new Environments(client);\n this.simulators = new Simulators(client);\n this.datasets = new Datasets(client);\n this.benchmarks = new Benchmarks(client);\n this.tasks = new Tasks(client);\n this.evals = new Evals(client);\n this.playgrounds = new Playgrounds(client);\n this.sandboxes = new Sandboxes(client);\n this.runs = new Runs(client);\n this.taskRuns = new TaskRuns(client);\n this.evalRuns = new EvalRuns(client);\n }\n}\n\nexport { VerialApiError, VerialError } from \"./errors\";\nexport type * from \"./types\";\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/errors.ts","../src/client.ts","../src/pagination.ts","../src/resources/benchmarks.ts","../src/resources/datasets.ts","../src/resources/environments.ts","../src/resources/eval-runs.ts","../src/resources/evals.ts","../src/resources/playgrounds.ts","../src/resources/runs.ts","../src/resources/sandboxes.ts","../src/resources/simulators.ts","../src/resources/task-runs.ts","../src/resources/tasks.ts","../src/index.ts"],"sourcesContent":["export const DEFAULT_BASE_URL = \"https://api.verial.ai\";\n\nexport const Status = {\n Pending: \"pending\",\n Active: \"active\",\n Completed: \"completed\",\n Failed: \"failed\",\n Canceled: \"canceled\",\n Provisioning: \"provisioning\",\n TornDown: \"torn_down\",\n} as const;\n\nexport type Status = (typeof Status)[keyof typeof Status];\n\nexport const Verdict = {\n Pass: \"pass\",\n Fail: \"fail\",\n Partial: \"partial\",\n} as const;\n\nexport type Verdict = (typeof Verdict)[keyof typeof Verdict];\n\nexport const SimulatorType = {\n FHIR: \"FHIR\",\n HL7: \"HL7\",\n CDSHooks: \"CDSHooks\",\n Voice: \"Voice\",\n Fax: \"Fax\",\n SFTP: \"SFTP\",\n Email: \"Email\",\n Message: \"Message\",\n Payer: \"Payer\",\n Clearinghouse: \"Clearinghouse\",\n} as const;\n\nexport type SimulatorType = (typeof SimulatorType)[keyof typeof SimulatorType];\n\nexport const ErrorCode = {\n Unauthorized: \"UNAUTHORIZED\",\n Forbidden: \"FORBIDDEN\",\n ValidationError: \"VALIDATION_ERROR\",\n BadRequest: \"BAD_REQUEST\",\n NotFound: \"NOT_FOUND\",\n Conflict: \"CONFLICT\",\n RateLimited: \"RATE_LIMITED\",\n InternalError: \"INTERNAL_ERROR\",\n} as const;\n\nexport type ErrorCode = (typeof ErrorCode)[keyof typeof ErrorCode];\n","export class VerialError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"VerialError\";\n }\n}\n\nexport class APIError extends VerialError {\n readonly status: number;\n readonly code: string;\n readonly requestId?: string;\n readonly headers?: Headers;\n readonly errors?: Record<string, unknown>;\n\n constructor(\n status: number,\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n const parts = [message];\n if (options?.requestId) parts.push(`(request_id: ${options.requestId})`);\n super(parts.join(\" \"));\n\n this.name = \"APIError\";\n this.status = status;\n this.code = code;\n this.requestId = options?.requestId;\n this.headers = options?.headers;\n this.errors = options?.errors;\n }\n\n static fromResponse(\n status: number,\n body: {\n code?: string;\n detail?: string;\n message?: string;\n requestId?: string;\n errors?: Record<string, unknown>;\n },\n headers: Headers,\n ): APIError {\n const code = body.code ?? \"UNKNOWN_ERROR\";\n const message = body.detail ?? body.message ?? \"Unknown error\";\n const { requestId, errors } = body;\n\n const opts = { requestId, headers, errors };\n\n switch (status) {\n case 401:\n return new AuthenticationError(code, message, opts);\n case 403:\n return new PermissionDeniedError(code, message, opts);\n case 404:\n return new NotFoundError(code, message, opts);\n case 409:\n return new ConflictError(code, message, opts);\n case 429: {\n const retryAfter = parseRetryAfter(headers.get(\"retry-after\"));\n return new RateLimitError(code, message, { ...opts, retryAfter });\n }\n default:\n if (status >= 400 && status < 500)\n return new ValidationError(code, message, opts);\n if (status >= 500)\n return new InternalServerError(code, message, opts);\n return new APIError(status, code, message, opts);\n }\n }\n}\n\nexport class AuthenticationError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(401, code, message, options);\n this.name = \"AuthenticationError\";\n }\n}\n\nexport class PermissionDeniedError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(403, code, message, options);\n this.name = \"PermissionDeniedError\";\n }\n}\n\nexport class NotFoundError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(404, code, message, options);\n this.name = \"NotFoundError\";\n }\n}\n\nexport class ConflictError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(409, code, message, options);\n this.name = \"ConflictError\";\n }\n}\n\nexport class ValidationError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(400, code, message, options);\n this.name = \"ValidationError\";\n }\n}\n\nexport class RateLimitError extends APIError {\n readonly retryAfter?: number;\n\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n retryAfter?: number;\n },\n ) {\n super(429, code, message, options);\n this.name = \"RateLimitError\";\n this.retryAfter = options?.retryAfter;\n }\n}\n\nexport class InternalServerError extends APIError {\n constructor(\n code: string,\n message: string,\n options?: {\n requestId?: string;\n headers?: Headers;\n errors?: Record<string, unknown>;\n },\n ) {\n super(500, code, message, options);\n this.name = \"InternalServerError\";\n }\n}\n\nexport class APIConnectionError extends VerialError {\n constructor(message: string, public readonly cause?: Error) {\n super(message);\n this.name = \"APIConnectionError\";\n }\n}\n\nexport class APITimeoutError extends VerialError {\n constructor(message: string = \"Request timed out\") {\n super(message);\n this.name = \"APITimeoutError\";\n }\n}\n\n/** @deprecated Use APIError instead */\nexport const VerialApiError = APIError;\n\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (!Number.isNaN(seconds)) return seconds;\n const date = Date.parse(value);\n if (!Number.isNaN(date)) return Math.max(0, (date - Date.now()) / 1000);\n return undefined;\n}\n","import { DEFAULT_BASE_URL } from \"./constants\";\nimport {\n APIConnectionError,\n APIError,\n APITimeoutError,\n RateLimitError,\n VerialError,\n} from \"./errors\";\n\nconst RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);\n\nexport interface RequestInfo {\n url: string;\n method: string;\n headers: Record<string, string>;\n body?: string;\n}\n\nexport interface RequestHook {\n beforeRequest?(request: RequestInfo): void | Promise<void>;\n afterResponse?(\n response: Response,\n request: RequestInfo,\n ): void | Promise<void>;\n onError?(error: Error, request: RequestInfo): void | Promise<void>;\n}\n\nexport interface VerialClientConfig {\n apiKey: string;\n baseUrl?: string;\n maxRetries?: number;\n timeout?: number;\n hooks?: RequestHook[];\n}\n\nexport class VerialClient {\n readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly maxRetries: number;\n private readonly timeout: number;\n private readonly hooks: RequestHook[];\n\n constructor(config: VerialClientConfig) {\n if (!config.apiKey) {\n throw new VerialError(\"API key is required\");\n }\n this.apiKey = config.apiKey;\n this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;\n this.maxRetries = config.maxRetries ?? 2;\n this.timeout = config.timeout ?? 60_000;\n this.hooks = config.hooks ?? [];\n }\n\n async get<T = unknown>(\n path: string,\n query?: Record<string, string | undefined>,\n ): Promise<T> {\n return this.request(\"GET\", path, undefined, query);\n }\n\n async post<T = unknown>(path: string, body?: unknown): Promise<T> {\n return this.request(\"POST\", path, body);\n }\n\n async patch<T = unknown>(path: string, body: unknown): Promise<T> {\n return this.request(\"PATCH\", path, body);\n }\n\n async delete<T = unknown>(path: string): Promise<T> {\n return this.request(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n query?: Record<string, string | undefined>,\n ): Promise<T> {\n let url = `${this.baseUrl}${path}`;\n\n if (query) {\n const params = new URLSearchParams();\n for (const [k, v] of Object.entries(query)) {\n if (v !== undefined) params.set(k, v);\n }\n const qs = params.toString();\n if (qs) url += `?${qs}`;\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n\n const serializedBody = body ? JSON.stringify(body) : undefined;\n const requestInfo: RequestInfo = { url, method, headers, body: serializedBody };\n\n for (const hook of this.hooks) {\n await hook.beforeRequest?.(requestInfo);\n }\n\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= this.maxRetries; attempt++) {\n if (attempt > 0) {\n const delay = this.getRetryDelay(attempt, lastError);\n await sleep(delay);\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n let res: Response;\n try {\n res = await fetch(requestInfo.url, {\n method: requestInfo.method,\n headers: requestInfo.headers,\n body: requestInfo.body,\n signal: controller.signal,\n });\n } catch (err) {\n clearTimeout(timeoutId);\n if (err instanceof DOMException && err.name === \"AbortError\") {\n const timeoutError = new APITimeoutError(\n `Request timed out after ${this.timeout}ms`,\n );\n await this.runOnError(timeoutError, requestInfo);\n throw timeoutError;\n }\n if (err instanceof TypeError) {\n lastError = new APIConnectionError(\n `Connection error: ${err.message}`,\n err,\n );\n if (attempt < this.maxRetries) continue;\n await this.runOnError(lastError, requestInfo);\n throw lastError;\n }\n throw err;\n } finally {\n clearTimeout(timeoutId);\n }\n\n if (res.ok) {\n for (const hook of this.hooks) {\n await hook.afterResponse?.(res, requestInfo);\n }\n return res.json() as Promise<T>;\n }\n\n const errorBody = await res.json().catch(() => ({}));\n const apiError = APIError.fromResponse(\n res.status,\n errorBody,\n res.headers,\n );\n\n if (\n attempt < this.maxRetries &&\n RETRYABLE_STATUS_CODES.has(res.status)\n ) {\n lastError = apiError;\n continue;\n }\n\n await this.runOnError(apiError, requestInfo);\n throw apiError;\n }\n\n throw lastError ?? new APIConnectionError(\"Request failed after retries\");\n }\n\n private async runOnError(error: Error, request: RequestInfo): Promise<void> {\n for (const hook of this.hooks) {\n await hook.onError?.(error, request);\n }\n }\n\n private getRetryDelay(attempt: number, lastError?: Error): number {\n if (lastError instanceof RateLimitError && lastError.retryAfter) {\n return lastError.retryAfter * 1000;\n }\n const baseDelay = Math.min(0.5 * Math.pow(2, attempt), 8);\n const jitter = baseDelay * 0.2 * Math.random();\n return (baseDelay + jitter) * 1000;\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import type { VerialClient } from \"./client\";\n\nexport interface PageMeta {\n next: string | null;\n prev: string | null;\n limit: number;\n}\n\nexport class Page<T> implements AsyncIterable<T> {\n readonly data: T[];\n readonly _meta: PageMeta;\n\n private readonly client: VerialClient;\n private readonly path: string;\n private readonly query?: Record<string, string | undefined>;\n\n constructor(\n response: { data: T[]; _meta: PageMeta },\n client: VerialClient,\n path: string,\n query?: Record<string, string | undefined>,\n ) {\n this.data = response.data;\n this._meta = response._meta;\n this.client = client;\n this.path = path;\n this.query = query;\n }\n\n toJSON(): { data: T[]; _meta: PageMeta } {\n return { data: this.data, _meta: this._meta };\n }\n\n hasNextPage(): boolean {\n return this._meta.next !== null;\n }\n\n async getNextPage(): Promise<Page<T> | null> {\n if (!this.hasNextPage()) return null;\n return Page.fetch<T>(this.client, this.path, {\n ...this.query,\n cursor: this._meta.next!,\n limit: this._meta.limit.toString(),\n });\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let page: Page<T> | null = this; // eslint-disable-line @typescript-eslint/no-this-alias\n while (page) {\n for (const item of page.data) {\n yield item;\n }\n page = await page.getNextPage();\n }\n }\n\n static async fetch<T>(\n client: VerialClient,\n path: string,\n query?: Record<string, string | undefined>,\n ): Promise<Page<T>> {\n const response = await client.get<{ data: T[]; _meta: PageMeta }>(\n path,\n query,\n );\n return new Page<T>(response, client, path, query);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Benchmark } from \"../types\";\n\nexport class Benchmarks {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<Page<Benchmark>> {\n return Page.fetch<Benchmark>(this.client, \"/benchmarks\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n environmentId: string;\n timeout?: number;\n concurrency?: number;\n }): Promise<Benchmark> {\n return this.client.post(\"/benchmarks\", {\n name: options.name,\n environment_id: options.environmentId,\n timeout: options.timeout,\n concurrency: options.concurrency,\n });\n }\n\n async get(options: { id: string }): Promise<Benchmark> {\n return this.client.get(`/benchmarks/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n timeout?: number;\n concurrency?: number;\n }): Promise<Benchmark> {\n const { id, ...body } = options;\n return this.client.patch(`/benchmarks/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/benchmarks/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Dataset } from \"../types\";\n\nexport class Datasets {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<Page<Dataset>> {\n return Page.fetch<Dataset>(this.client, \"/datasets\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n data?: unknown;\n config?: Record<string, unknown>;\n }): Promise<Dataset> {\n return this.client.post(\"/datasets\", options);\n }\n\n async get(options: { id: string }): Promise<Dataset> {\n return this.client.get(`/datasets/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n description?: string | null;\n data?: unknown;\n config?: Record<string, unknown>;\n }): Promise<Dataset> {\n const { id, ...body } = options;\n return this.client.patch(`/datasets/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/datasets/${options.id}`);\n }\n\n async generate(options: {\n id: string;\n prompt: string;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/datasets/${options.id}/generate`, {\n prompt: options.prompt,\n });\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Environment, type EnvironmentSimulatorLink } from \"../types\";\n\nexport class Environments {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<Page<Environment>> {\n return Page.fetch<Environment>(this.client, \"/environments\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n name: string;\n templateId?: string;\n }): Promise<Environment> {\n return this.client.post(\"/environments\", {\n name: options.name,\n template_id: options.templateId,\n });\n }\n\n async get(options: { id: string }): Promise<Environment> {\n return this.client.get(`/environments/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n description?: string | null;\n }): Promise<Environment> {\n const { id, ...body } = options;\n return this.client.patch(`/environments/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/environments/${options.id}`);\n }\n\n async addSimulator(options: {\n environmentId: string;\n simulatorId: string;\n }): Promise<EnvironmentSimulatorLink> {\n return this.client.post(\n `/environments/${options.environmentId}/simulators/${options.simulatorId}`,\n );\n }\n\n async removeSimulator(options: {\n environmentId: string;\n simulatorId: string;\n }): Promise<{ deleted: true }> {\n return this.client.delete(\n `/environments/${options.environmentId}/simulators/${options.simulatorId}`,\n );\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type EvalRun } from \"../types\";\n\nexport class EvalRuns {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n taskRunId: string;\n cursor?: string;\n limit?: number;\n }): Promise<Page<EvalRun>> {\n return Page.fetch<EvalRun>(this.client, \"/eval-runs\", {\n taskRunId: options.taskRunId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async get(options: { id: string }): Promise<EvalRun> {\n return this.client.get(`/eval-runs/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Eval } from \"../types\";\n\nexport class Evals {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n taskId: string;\n cursor?: string;\n limit?: number;\n }): Promise<Page<Eval>> {\n return Page.fetch<Eval>(this.client, \"/evals\", {\n taskId: options.taskId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n taskId: string;\n label: string;\n assert: string;\n weight?: number;\n }): Promise<Eval> {\n return this.client.post(\"/evals\", {\n task_id: options.taskId,\n label: options.label,\n assert: options.assert,\n weight: options.weight,\n });\n }\n\n async get(options: { id: string }): Promise<Eval> {\n return this.client.get(`/evals/${options.id}`);\n }\n\n async update(options: {\n id: string;\n label?: string;\n assert?: string;\n weight?: number;\n }): Promise<Eval> {\n const { id, ...body } = options;\n return this.client.patch(`/evals/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/evals/${options.id}`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Playground } from \"../types\";\n\nexport class Playgrounds {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<Page<Playground>> {\n return Page.fetch<Playground>(this.client, \"/playgrounds\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { environmentId: string }): Promise<Playground> {\n return this.client.post(\"/playgrounds\", {\n environment_id: options.environmentId,\n });\n }\n\n async get(options: { id: string }): Promise<Playground> {\n return this.client.get(`/playgrounds/${options.id}`);\n }\n\n async teardown(options: {\n id: string;\n }): Promise<{ id: string; status: string }> {\n return this.client.post(`/playgrounds/${options.id}/teardown`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Run } from \"../types\";\n\nexport class Runs {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { cursor?: string; limit?: number } = {},\n ): Promise<Page<Run>> {\n return Page.fetch<Run>(this.client, \"/runs\", {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { benchmarkId: string }): Promise<Run> {\n return this.client.post(\"/runs\", {\n benchmark_id: options.benchmarkId,\n });\n }\n\n async get(options: { id: string }): Promise<Run> {\n return this.client.get(`/runs/${options.id}`);\n }\n\n async complete(options: { id: string }): Promise<Run> {\n return this.client.post(`/runs/${options.id}/complete`);\n }\n\n async cancel(options: { id: string }): Promise<Run> {\n return this.client.post(`/runs/${options.id}/cancel`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Sandbox, type SandboxEvent } from \"../types\";\n\nexport class Sandboxes {\n constructor(private client: VerialClient) {}\n\n async list(\n options: { playgroundId?: string; cursor?: string; limit?: number } = {},\n ): Promise<Page<Sandbox>> {\n return Page.fetch<Sandbox>(this.client, \"/sandboxes\", {\n playgroundId: options.playgroundId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: { simulatorId: string }): Promise<Sandbox> {\n return this.client.post(\"/sandboxes\", {\n simulator_id: options.simulatorId,\n });\n }\n\n async get(options: { id: string }): Promise<Sandbox> {\n return this.client.get(`/sandboxes/${options.id}`);\n }\n\n async listEvents(options: {\n id: string;\n cursor?: string;\n limit?: number;\n }): Promise<Page<SandboxEvent>> {\n return Page.fetch<SandboxEvent>(\n this.client,\n `/sandboxes/${options.id}/events`,\n {\n cursor: options.cursor,\n limit: options.limit?.toString(),\n },\n );\n }\n\n async teardown(options: {\n id: string;\n }): Promise<{ id: string; status: string }> {\n return this.client.post(`/sandboxes/${options.id}/teardown`);\n }\n\n async addDataset(options: {\n sandboxId: string;\n datasetId: string;\n }): Promise<{ sandbox_id: string; dataset_id: string; linked_at: string }> {\n return this.client.post(\n `/sandboxes/${options.sandboxId}/datasets/${options.datasetId}`,\n );\n }\n\n async removeDataset(options: {\n sandboxId: string;\n datasetId: string;\n }): Promise<{ deleted: true }> {\n return this.client.delete(\n `/sandboxes/${options.sandboxId}/datasets/${options.datasetId}`,\n );\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Simulator, type SimulatorType } from \"../types\";\n\nexport class Simulators {\n constructor(private client: VerialClient) {}\n\n async list(\n options: {\n environmentId?: string;\n cursor?: string;\n limit?: number;\n } = {},\n ): Promise<Page<Simulator>> {\n return Page.fetch<Simulator>(this.client, \"/simulators\", {\n environmentId: options.environmentId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n type: SimulatorType;\n name: string;\n config?: Record<string, unknown>;\n }): Promise<Simulator> {\n return this.client.post(\"/simulators\", options);\n }\n\n async get(options: { id: string }): Promise<Simulator> {\n return this.client.get(`/simulators/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n config?: Record<string, unknown>;\n }): Promise<Simulator> {\n const { id, ...body } = options;\n return this.client.patch(`/simulators/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/simulators/${options.id}`);\n }\n\n async generateConfig(options: {\n id: string;\n prompt: string;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/simulators/${options.id}/config/generate`, {\n prompt: options.prompt,\n });\n }\n\n async generateData(options: {\n id: string;\n seed?: number;\n }): Promise<Record<string, unknown>> {\n return this.client.post(`/simulators/${options.id}/data/generate`, {\n seed: options.seed,\n });\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type TaskRun } from \"../types\";\n\nexport class TaskRuns {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n runId: string;\n cursor?: string;\n limit?: number;\n }): Promise<Page<TaskRun>> {\n return Page.fetch<TaskRun>(this.client, \"/task-runs\", {\n runId: options.runId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async get(options: { id: string }): Promise<TaskRun> {\n return this.client.get(`/task-runs/${options.id}`);\n }\n\n async complete(options: { id: string }): Promise<TaskRun> {\n return this.client.post(`/task-runs/${options.id}/complete`);\n }\n\n async cancel(options: { id: string }): Promise<TaskRun> {\n return this.client.post(`/task-runs/${options.id}/cancel`);\n }\n}\n","import { type VerialClient } from \"../client\";\nimport { Page } from \"../pagination\";\nimport { type Task } from \"../types\";\n\nexport class Tasks {\n constructor(private client: VerialClient) {}\n\n async list(options: {\n benchmarkId: string;\n cursor?: string;\n limit?: number;\n }): Promise<Page<Task>> {\n return Page.fetch<Task>(this.client, \"/tasks\", {\n benchmarkId: options.benchmarkId,\n cursor: options.cursor,\n limit: options.limit?.toString(),\n });\n }\n\n async create(options: {\n benchmarkId: string;\n name: string;\n instruction?: string;\n timeout?: number;\n trigger?: Record<string, unknown>;\n tags?: string[];\n }): Promise<Task> {\n return this.client.post(\"/tasks\", {\n benchmark_id: options.benchmarkId,\n name: options.name,\n instruction: options.instruction,\n timeout: options.timeout,\n trigger: options.trigger,\n tags: options.tags,\n });\n }\n\n async get(options: { id: string }): Promise<Task> {\n return this.client.get(`/tasks/${options.id}`);\n }\n\n async update(options: {\n id: string;\n name?: string;\n instruction?: string;\n timeout?: number;\n trigger?: Record<string, unknown>;\n tags?: string[];\n }): Promise<Task> {\n const { id, ...body } = options;\n return this.client.patch(`/tasks/${id}`, body);\n }\n\n async delete(options: {\n id: string;\n }): Promise<{ id: string; deleted: true }> {\n return this.client.delete(`/tasks/${options.id}`);\n }\n}\n","import { VerialClient } from \"./client\";\nimport { Benchmarks } from \"./resources/benchmarks\";\nimport { Datasets } from \"./resources/datasets\";\nimport { Environments } from \"./resources/environments\";\nimport { EvalRuns } from \"./resources/eval-runs\";\nimport { Evals } from \"./resources/evals\";\nimport { Playgrounds } from \"./resources/playgrounds\";\nimport { Runs } from \"./resources/runs\";\nimport { Sandboxes } from \"./resources/sandboxes\";\nimport { Simulators } from \"./resources/simulators\";\nimport { TaskRuns } from \"./resources/task-runs\";\nimport { Tasks } from \"./resources/tasks\";\n\nexport type { RequestHook, RequestInfo } from \"./client\";\n\nexport interface VerialConfig {\n apiKey: string;\n baseUrl?: string;\n maxRetries?: number;\n timeout?: number;\n hooks?: import(\"./client\").RequestHook[];\n}\n\nexport class Verial {\n readonly environments: Environments;\n readonly simulators: Simulators;\n readonly datasets: Datasets;\n readonly benchmarks: Benchmarks;\n readonly tasks: Tasks;\n readonly evals: Evals;\n readonly playgrounds: Playgrounds;\n readonly sandboxes: Sandboxes;\n readonly runs: Runs;\n readonly taskRuns: TaskRuns;\n readonly evalRuns: EvalRuns;\n\n constructor(config: VerialConfig) {\n const client = new VerialClient(config);\n this.environments = new Environments(client);\n this.simulators = new Simulators(client);\n this.datasets = new Datasets(client);\n this.benchmarks = new Benchmarks(client);\n this.tasks = new Tasks(client);\n this.evals = new Evals(client);\n this.playgrounds = new Playgrounds(client);\n this.sandboxes = new Sandboxes(client);\n this.runs = new Runs(client);\n this.taskRuns = new TaskRuns(client);\n this.evalRuns = new EvalRuns(client);\n }\n}\n\nexport { DEFAULT_BASE_URL, ErrorCode, SimulatorType, Status, Verdict } from \"./constants\";\nexport { Page } from \"./pagination\";\nexport {\n APIConnectionError,\n APIError,\n APITimeoutError,\n AuthenticationError,\n ConflictError,\n InternalServerError,\n NotFoundError,\n PermissionDeniedError,\n RateLimitError,\n ValidationError,\n VerialApiError,\n VerialError,\n} from \"./errors\";\nexport type * from \"./types\";\n"],"mappings":"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","names":[]}
|