@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/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 VerialApiError = class extends VerialError {
47
+ var APIError = class _APIError extends VerialError {
9
48
  status;
10
49
  code;
11
- details;
12
- constructor(status, code, message, details) {
13
- super(message);
14
- this.name = "VerialApiError";
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.details = details;
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 ?? "https://api.verial.ai";
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 res = await fetch(url, {
59
- method,
60
- headers,
61
- body: body ? JSON.stringify(body) : void 0
62
- });
63
- if (!res.ok) {
64
- const err = await res.json().catch(() => ({}));
65
- throw new VerialApiError(
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
- err.code ?? "UNKNOWN",
68
- err.error ?? res.statusText,
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
- return res.json();
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.get("/benchmarks", {
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.get("/datasets", {
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.get("/environments", {
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.get("/eval-runs", {
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.get("/evals", {
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.get("/playgrounds", {
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.get("/runs", {
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.get("/sandboxes", {
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 this.client.get(`/sandboxes/${options.id}/events`, {
299
- cursor: options.cursor,
300
- limit: options.limit?.toString()
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.get("/simulators", {
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.get("/task-runs", {
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.get("/tasks", {
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":[]}