@trigger.dev/core 3.0.0-beta.35 → 3.0.0-beta.36

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.
Files changed (37) hide show
  1. package/dist/{catalog-BUwiuDbt.d.mts → catalog-XTlJQaMn.d.mts} +3 -3
  2. package/dist/{catalog-eKgqBHUA.d.ts → catalog-dRKTgwQ7.d.ts} +3 -3
  3. package/dist/{manager-uPyMRN8k.d.mts → manager-JkbddlcO.d.mts} +19 -19
  4. package/dist/{manager-uPyMRN8k.d.ts → manager-JkbddlcO.d.ts} +19 -19
  5. package/dist/{messages-l9PdIyKF.d.mts → messages-6_-q72KG.d.mts} +119 -119
  6. package/dist/{messages-l9PdIyKF.d.ts → messages-6_-q72KG.d.ts} +119 -119
  7. package/dist/{schemas-b8tRw8dX.d.mts → schemas-r4ZP9S-F.d.mts} +2 -2
  8. package/dist/{schemas-b8tRw8dX.d.ts → schemas-r4ZP9S-F.d.ts} +2 -2
  9. package/dist/v3/dev/index.d.mts +1 -1
  10. package/dist/v3/dev/index.d.ts +1 -1
  11. package/dist/v3/index.d.mts +579 -122
  12. package/dist/v3/index.d.ts +579 -122
  13. package/dist/v3/index.js +739 -319
  14. package/dist/v3/index.js.map +1 -1
  15. package/dist/v3/index.mjs +730 -318
  16. package/dist/v3/index.mjs.map +1 -1
  17. package/dist/v3/otel/index.js +1 -1
  18. package/dist/v3/otel/index.js.map +1 -1
  19. package/dist/v3/otel/index.mjs +1 -1
  20. package/dist/v3/otel/index.mjs.map +1 -1
  21. package/dist/v3/prod/index.d.mts +2 -2
  22. package/dist/v3/prod/index.d.ts +2 -2
  23. package/dist/v3/workers/index.d.mts +6 -6
  24. package/dist/v3/workers/index.d.ts +6 -6
  25. package/dist/v3/workers/index.js +463 -51
  26. package/dist/v3/workers/index.js.map +1 -1
  27. package/dist/v3/workers/index.mjs +463 -51
  28. package/dist/v3/workers/index.mjs.map +1 -1
  29. package/dist/v3/zodMessageHandler.d.mts +1 -1
  30. package/dist/v3/zodMessageHandler.d.ts +1 -1
  31. package/dist/v3/zodfetch.d.mts +194 -10
  32. package/dist/v3/zodfetch.d.ts +194 -10
  33. package/dist/v3/zodfetch.js +336 -38
  34. package/dist/v3/zodfetch.js.map +1 -1
  35. package/dist/v3/zodfetch.mjs +320 -37
  36. package/dist/v3/zodfetch.mjs.map +1 -1
  37. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { SpanStatusCode, DiagLogLevel, diag, DiagConsoleLogger, propagation, context, SpanKind } from '@opentelemetry/api';
2
+ import { z } from 'zod';
2
3
  import { logs, SeverityNumber } from '@opentelemetry/api-logs';
3
4
  import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
4
5
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
@@ -7,7 +8,6 @@ import { Resource, detectResourcesSync, processDetectorSync } from '@opentelemet
7
8
  import { LoggerProvider, BatchLogRecordProcessor, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
8
9
  import { NodeTracerProvider, BatchSpanProcessor, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node';
9
10
  import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
10
- import { z } from 'zod';
11
11
  import { fromZodError } from 'zod-validation-error';
12
12
  import { FormDataEncoder } from 'form-data-encoder';
13
13
  import { Readable } from 'node:stream';
@@ -38,8 +38,6 @@ var __privateMethod = (obj, member, method) => {
38
38
  __accessCheck(obj, member, "access private method");
39
39
  return method;
40
40
  };
41
-
42
- // src/v3/errors.ts
43
41
  function parseError(error) {
44
42
  if (error instanceof Error) {
45
43
  return {
@@ -68,6 +66,11 @@ function parseError(error) {
68
66
  }
69
67
  }
70
68
  __name(parseError, "parseError");
69
+ var SerializedError = z.object({
70
+ message: z.string(),
71
+ name: z.string().optional(),
72
+ stackTrace: z.string().optional()
73
+ });
71
74
 
72
75
  // src/v3/limits.ts
73
76
  var OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = 256;
@@ -352,7 +355,7 @@ function getEnvVar(name) {
352
355
  __name(getEnvVar, "getEnvVar");
353
356
 
354
357
  // package.json
355
- var version = "3.0.0-beta.35";
358
+ var version = "3.0.0-beta.36";
356
359
 
357
360
  // src/v3/otel/tracingSDK.ts
358
361
  var _a;
@@ -793,7 +796,7 @@ var QueueOptions = z.object({
793
796
  /** @deprecated This feature is coming soon */
794
797
  rateLimit: RateLimitOptions.optional()
795
798
  });
796
- var TaskMetadata = z.object({
799
+ z.object({
797
800
  id: z.string(),
798
801
  packageVersion: z.string(),
799
802
  queue: QueueOptions.optional(),
@@ -801,11 +804,20 @@ var TaskMetadata = z.object({
801
804
  machine: Machine.partial().optional(),
802
805
  triggerSource: z.string().optional()
803
806
  });
804
- var TaskFileMetadata = z.object({
807
+ z.object({
808
+ filePath: z.string(),
809
+ exportName: z.string()
810
+ });
811
+ z.object({
812
+ id: z.string(),
813
+ packageVersion: z.string(),
814
+ queue: QueueOptions.optional(),
815
+ retry: RetryOptions.optional(),
816
+ machine: Machine.partial().optional(),
817
+ triggerSource: z.string().optional(),
805
818
  filePath: z.string(),
806
819
  exportName: z.string()
807
820
  });
808
- TaskMetadata.merge(TaskFileMetadata);
809
821
  z.enum([
810
822
  "index",
811
823
  "create",
@@ -1016,7 +1028,7 @@ var ReplayRunResponse = z.object({
1016
1028
  id: z.string()
1017
1029
  });
1018
1030
  var CanceledRunResponse = z.object({
1019
- message: z.string()
1031
+ id: z.string()
1020
1032
  });
1021
1033
  z.object({
1022
1034
  /** The schedule id associated with this run (you can have many schedules for the same task).
@@ -1065,17 +1077,18 @@ z.object({
1065
1077
  */
1066
1078
  externalId: z.string().optional()
1067
1079
  });
1080
+ var ScheduleGenerator = z.object({
1081
+ type: z.literal("CRON"),
1082
+ expression: z.string(),
1083
+ description: z.string()
1084
+ });
1068
1085
  var ScheduleObject = z.object({
1069
1086
  id: z.string(),
1070
1087
  task: z.string(),
1071
1088
  active: z.boolean(),
1072
1089
  deduplicationKey: z.string().nullish(),
1073
1090
  externalId: z.string().nullish(),
1074
- generator: z.object({
1075
- type: z.literal("CRON"),
1076
- expression: z.string(),
1077
- description: z.string()
1078
- }),
1091
+ generator: ScheduleGenerator,
1079
1092
  nextRun: z.coerce.date().nullish(),
1080
1093
  environments: z.array(z.object({
1081
1094
  id: z.string(),
@@ -1086,7 +1099,7 @@ var ScheduleObject = z.object({
1086
1099
  var DeletedScheduleObject = z.object({
1087
1100
  id: z.string()
1088
1101
  });
1089
- var ListSchedulesResult = z.object({
1102
+ z.object({
1090
1103
  data: z.array(ScheduleObject),
1091
1104
  pagination: z.object({
1092
1105
  currentPage: z.number(),
@@ -1099,12 +1112,28 @@ z.object({
1099
1112
  perPage: z.number().optional()
1100
1113
  });
1101
1114
  var RunStatus = z.enum([
1102
- "PENDING",
1115
+ /// Task hasn't been deployed yet but is waiting to be executed
1116
+ "WAITING_FOR_DEPLOY",
1117
+ /// Task is waiting to be executed by a worker
1118
+ "QUEUED",
1119
+ /// Task is currently being executed by a worker
1103
1120
  "EXECUTING",
1104
- "PAUSED",
1121
+ /// Task has failed and is waiting to be retried
1122
+ "REATTEMPTING",
1123
+ /// Task has been paused by the system, and will be resumed by the system
1124
+ "FROZEN",
1125
+ /// Task has been completed successfully
1105
1126
  "COMPLETED",
1127
+ /// Task has been canceled by the user
1128
+ "CANCELED",
1129
+ /// Task has been completed with errors
1106
1130
  "FAILED",
1107
- "CANCELED"
1131
+ /// Task has crashed and won't be retried, most likely the worker ran out of resources, e.g. memory or storage
1132
+ "CRASHED",
1133
+ /// Task was interrupted during execution, mostly this happens in development environments
1134
+ "INTERRUPTED",
1135
+ /// Task has failed to complete, due to an error in the system
1136
+ "SYSTEM_FAILURE"
1108
1137
  ]);
1109
1138
  var AttemptStatus = z.enum([
1110
1139
  "PENDING",
@@ -1114,23 +1143,61 @@ var AttemptStatus = z.enum([
1114
1143
  "FAILED",
1115
1144
  "CANCELED"
1116
1145
  ]);
1117
- var RetrieveRunResponse = z.object({
1146
+ var RunEnvironmentDetails = z.object({
1147
+ id: z.string(),
1148
+ name: z.string(),
1149
+ user: z.string().optional()
1150
+ });
1151
+ var RunScheduleDetails = z.object({
1152
+ id: z.string(),
1153
+ externalId: z.string().optional(),
1154
+ deduplicationKey: z.string().optional(),
1155
+ generator: ScheduleGenerator
1156
+ });
1157
+ var CommonRunFields = {
1118
1158
  id: z.string(),
1119
1159
  status: RunStatus,
1120
1160
  taskIdentifier: z.string(),
1121
1161
  idempotencyKey: z.string().optional(),
1122
1162
  version: z.string().optional(),
1163
+ isQueued: z.boolean(),
1164
+ isExecuting: z.boolean(),
1165
+ isCompleted: z.boolean(),
1166
+ isSuccess: z.boolean(),
1167
+ isFailed: z.boolean(),
1168
+ isCancelled: z.boolean(),
1169
+ isTest: z.boolean(),
1123
1170
  createdAt: z.coerce.date(),
1124
1171
  updatedAt: z.coerce.date(),
1172
+ startedAt: z.coerce.date().optional(),
1173
+ finishedAt: z.coerce.date().optional()
1174
+ };
1175
+ var RetrieveRunResponse = z.object({
1176
+ ...CommonRunFields,
1177
+ payload: z.any().optional(),
1178
+ output: z.any().optional(),
1179
+ schedule: RunScheduleDetails.optional(),
1125
1180
  attempts: z.array(z.object({
1126
1181
  id: z.string(),
1127
1182
  status: AttemptStatus,
1128
1183
  createdAt: z.coerce.date(),
1129
1184
  updatedAt: z.coerce.date(),
1130
1185
  startedAt: z.coerce.date().optional(),
1131
- completedAt: z.coerce.date().optional()
1186
+ completedAt: z.coerce.date().optional(),
1187
+ error: SerializedError.optional()
1132
1188
  }).optional())
1133
1189
  });
1190
+ var ListRunResponseItem = z.object({
1191
+ ...CommonRunFields,
1192
+ env: RunEnvironmentDetails
1193
+ });
1194
+ z.object({
1195
+ data: z.array(ListRunResponseItem),
1196
+ pagination: z.object({
1197
+ next: z.string().optional(),
1198
+ previous: z.string().optional()
1199
+ })
1200
+ });
1134
1201
  z.object({
1135
1202
  name: z.string(),
1136
1203
  value: z.string()
@@ -1154,10 +1221,10 @@ var EnvironmentVariable = z.object({
1154
1221
  });
1155
1222
  var EnvironmentVariables = z.array(EnvironmentVariable);
1156
1223
 
1157
- // src/v3/apiErrors.ts
1158
- var _APIError = class _APIError extends Error {
1224
+ // src/v3/apiClient/errors.ts
1225
+ var _ApiError = class _ApiError extends Error {
1159
1226
  constructor(status, error, message, headers) {
1160
- super(`${_APIError.makeMessage(status, error, message)}`);
1227
+ super(`${_ApiError.makeMessage(status, error, message)}`);
1161
1228
  this.status = status;
1162
1229
  this.headers = headers;
1163
1230
  const data = error;
@@ -1181,7 +1248,7 @@ var _APIError = class _APIError extends Error {
1181
1248
  }
1182
1249
  static generate(status, errorResponse, message, headers) {
1183
1250
  if (!status) {
1184
- return new APIConnectionError({
1251
+ return new ApiConnectionError({
1185
1252
  cause: castToError(errorResponse)
1186
1253
  });
1187
1254
  }
@@ -1210,12 +1277,12 @@ var _APIError = class _APIError extends Error {
1210
1277
  if (status >= 500) {
1211
1278
  return new InternalServerError(status, error, message, headers);
1212
1279
  }
1213
- return new _APIError(status, error, message, headers);
1280
+ return new _ApiError(status, error, message, headers);
1214
1281
  }
1215
1282
  };
1216
- __name(_APIError, "APIError");
1217
- var APIError = _APIError;
1218
- var _APIConnectionError = class _APIConnectionError extends APIError {
1283
+ __name(_ApiError, "ApiError");
1284
+ var ApiError = _ApiError;
1285
+ var _ApiConnectionError = class _ApiConnectionError extends ApiError {
1219
1286
  constructor({ message, cause }) {
1220
1287
  super(void 0, void 0, message || "Connection error.", void 0);
1221
1288
  __publicField(this, "status");
@@ -1223,9 +1290,9 @@ var _APIConnectionError = class _APIConnectionError extends APIError {
1223
1290
  this.cause = cause;
1224
1291
  }
1225
1292
  };
1226
- __name(_APIConnectionError, "APIConnectionError");
1227
- var APIConnectionError = _APIConnectionError;
1228
- var _BadRequestError = class _BadRequestError extends APIError {
1293
+ __name(_ApiConnectionError, "ApiConnectionError");
1294
+ var ApiConnectionError = _ApiConnectionError;
1295
+ var _BadRequestError = class _BadRequestError extends ApiError {
1229
1296
  constructor() {
1230
1297
  super(...arguments);
1231
1298
  __publicField(this, "status", 400);
@@ -1233,7 +1300,7 @@ var _BadRequestError = class _BadRequestError extends APIError {
1233
1300
  };
1234
1301
  __name(_BadRequestError, "BadRequestError");
1235
1302
  var BadRequestError = _BadRequestError;
1236
- var _AuthenticationError = class _AuthenticationError extends APIError {
1303
+ var _AuthenticationError = class _AuthenticationError extends ApiError {
1237
1304
  constructor() {
1238
1305
  super(...arguments);
1239
1306
  __publicField(this, "status", 401);
@@ -1241,7 +1308,7 @@ var _AuthenticationError = class _AuthenticationError extends APIError {
1241
1308
  };
1242
1309
  __name(_AuthenticationError, "AuthenticationError");
1243
1310
  var AuthenticationError = _AuthenticationError;
1244
- var _PermissionDeniedError = class _PermissionDeniedError extends APIError {
1311
+ var _PermissionDeniedError = class _PermissionDeniedError extends ApiError {
1245
1312
  constructor() {
1246
1313
  super(...arguments);
1247
1314
  __publicField(this, "status", 403);
@@ -1249,7 +1316,7 @@ var _PermissionDeniedError = class _PermissionDeniedError extends APIError {
1249
1316
  };
1250
1317
  __name(_PermissionDeniedError, "PermissionDeniedError");
1251
1318
  var PermissionDeniedError = _PermissionDeniedError;
1252
- var _NotFoundError = class _NotFoundError extends APIError {
1319
+ var _NotFoundError = class _NotFoundError extends ApiError {
1253
1320
  constructor() {
1254
1321
  super(...arguments);
1255
1322
  __publicField(this, "status", 404);
@@ -1257,7 +1324,7 @@ var _NotFoundError = class _NotFoundError extends APIError {
1257
1324
  };
1258
1325
  __name(_NotFoundError, "NotFoundError");
1259
1326
  var NotFoundError = _NotFoundError;
1260
- var _ConflictError = class _ConflictError extends APIError {
1327
+ var _ConflictError = class _ConflictError extends ApiError {
1261
1328
  constructor() {
1262
1329
  super(...arguments);
1263
1330
  __publicField(this, "status", 409);
@@ -1265,7 +1332,7 @@ var _ConflictError = class _ConflictError extends APIError {
1265
1332
  };
1266
1333
  __name(_ConflictError, "ConflictError");
1267
1334
  var ConflictError = _ConflictError;
1268
- var _UnprocessableEntityError = class _UnprocessableEntityError extends APIError {
1335
+ var _UnprocessableEntityError = class _UnprocessableEntityError extends ApiError {
1269
1336
  constructor() {
1270
1337
  super(...arguments);
1271
1338
  __publicField(this, "status", 422);
@@ -1273,7 +1340,7 @@ var _UnprocessableEntityError = class _UnprocessableEntityError extends APIError
1273
1340
  };
1274
1341
  __name(_UnprocessableEntityError, "UnprocessableEntityError");
1275
1342
  var UnprocessableEntityError = _UnprocessableEntityError;
1276
- var _RateLimitError = class _RateLimitError extends APIError {
1343
+ var _RateLimitError = class _RateLimitError extends ApiError {
1277
1344
  constructor() {
1278
1345
  super(...arguments);
1279
1346
  __publicField(this, "status", 429);
@@ -1281,7 +1348,7 @@ var _RateLimitError = class _RateLimitError extends APIError {
1281
1348
  };
1282
1349
  __name(_RateLimitError, "RateLimitError");
1283
1350
  var RateLimitError = _RateLimitError;
1284
- var _InternalServerError = class _InternalServerError extends APIError {
1351
+ var _InternalServerError = class _InternalServerError extends ApiError {
1285
1352
  };
1286
1353
  __name(_InternalServerError, "InternalServerError");
1287
1354
  var InternalServerError = _InternalServerError;
@@ -1314,6 +1381,108 @@ function calculateNextRetryDelay(options, attempt) {
1314
1381
  return Math.round(timeout);
1315
1382
  }
1316
1383
  __name(calculateNextRetryDelay, "calculateNextRetryDelay");
1384
+
1385
+ // src/v3/apiClient/pagination.ts
1386
+ var _CursorPage = class _CursorPage {
1387
+ constructor(data, pagination, pageFetcher) {
1388
+ this.pageFetcher = pageFetcher;
1389
+ this.data = data;
1390
+ this.pagination = pagination;
1391
+ }
1392
+ getPaginatedItems() {
1393
+ return this.data ?? [];
1394
+ }
1395
+ hasNextPage() {
1396
+ return !!this.pagination.next;
1397
+ }
1398
+ hasPreviousPage() {
1399
+ return !!this.pagination.previous;
1400
+ }
1401
+ getNextPage() {
1402
+ if (!this.pagination.next) {
1403
+ throw new Error("No next page available");
1404
+ }
1405
+ return this.pageFetcher({
1406
+ after: this.pagination.next
1407
+ });
1408
+ }
1409
+ getPreviousPage() {
1410
+ if (!this.pagination.previous) {
1411
+ throw new Error("No previous page available");
1412
+ }
1413
+ return this.pageFetcher({
1414
+ before: this.pagination.previous
1415
+ });
1416
+ }
1417
+ async *iterPages() {
1418
+ let page = this;
1419
+ yield page;
1420
+ while (page.hasNextPage()) {
1421
+ page = await page.getNextPage();
1422
+ yield page;
1423
+ }
1424
+ }
1425
+ async *[Symbol.asyncIterator]() {
1426
+ for await (const page of this.iterPages()) {
1427
+ for (const item of page.getPaginatedItems()) {
1428
+ yield item;
1429
+ }
1430
+ }
1431
+ }
1432
+ };
1433
+ __name(_CursorPage, "CursorPage");
1434
+ var CursorPage = _CursorPage;
1435
+ var _OffsetLimitPage = class _OffsetLimitPage {
1436
+ constructor(data, pagination, pageFetcher) {
1437
+ this.pageFetcher = pageFetcher;
1438
+ this.data = data;
1439
+ this.pagination = pagination;
1440
+ }
1441
+ getPaginatedItems() {
1442
+ return this.data ?? [];
1443
+ }
1444
+ hasNextPage() {
1445
+ return this.pagination.currentPage < this.pagination.totalPages;
1446
+ }
1447
+ hasPreviousPage() {
1448
+ return this.pagination.currentPage > 1;
1449
+ }
1450
+ getNextPage() {
1451
+ if (!this.hasNextPage()) {
1452
+ throw new Error("No next page available");
1453
+ }
1454
+ return this.pageFetcher({
1455
+ page: this.pagination.currentPage + 1
1456
+ });
1457
+ }
1458
+ getPreviousPage() {
1459
+ if (!this.hasPreviousPage()) {
1460
+ throw new Error("No previous page available");
1461
+ }
1462
+ return this.pageFetcher({
1463
+ page: this.pagination.currentPage - 1
1464
+ });
1465
+ }
1466
+ async *iterPages() {
1467
+ let page = this;
1468
+ yield page;
1469
+ while (page.hasNextPage()) {
1470
+ page = await page.getNextPage();
1471
+ yield page;
1472
+ }
1473
+ }
1474
+ async *[Symbol.asyncIterator]() {
1475
+ for await (const page of this.iterPages()) {
1476
+ for (const item of page.getPaginatedItems()) {
1477
+ yield item;
1478
+ }
1479
+ }
1480
+ }
1481
+ };
1482
+ __name(_OffsetLimitPage, "OffsetLimitPage");
1483
+ var OffsetLimitPage = _OffsetLimitPage;
1484
+
1485
+ // src/v3/apiClient/core.ts
1317
1486
  var defaultRetryOptions2 = {
1318
1487
  maxAttempts: 3,
1319
1488
  factor: 2,
@@ -1321,11 +1490,62 @@ var defaultRetryOptions2 = {
1321
1490
  maxTimeoutInMs: 6e4,
1322
1491
  randomize: false
1323
1492
  };
1324
- async function zodfetch(schema, url, requestInit, options) {
1325
- return await _doZodFetch(schema, url, requestInit, options);
1493
+ function zodfetch(schema, url, requestInit, options) {
1494
+ return new ApiPromise(_doZodFetch(schema, url, requestInit, options));
1326
1495
  }
1327
1496
  __name(zodfetch, "zodfetch");
1328
- async function zodupload(schema, url, body, requestInit, options) {
1497
+ function zodfetchCursorPage(schema, url, params, requestInit, options) {
1498
+ const query = new URLSearchParams(params.query);
1499
+ if (params.limit) {
1500
+ query.set("page[size]", String(params.limit));
1501
+ }
1502
+ if (params.after) {
1503
+ query.set("page[after]", params.after);
1504
+ }
1505
+ if (params.before) {
1506
+ query.set("page[before]", params.before);
1507
+ }
1508
+ const cursorPageSchema = z.object({
1509
+ data: z.array(schema),
1510
+ pagination: z.object({
1511
+ next: z.string().optional(),
1512
+ previous: z.string().optional()
1513
+ })
1514
+ });
1515
+ const $url = new URL(url);
1516
+ $url.search = query.toString();
1517
+ const fetchResult = _doZodFetch(cursorPageSchema, $url.href, requestInit, options);
1518
+ return new CursorPagePromise(fetchResult, schema, url, params, requestInit, options);
1519
+ }
1520
+ __name(zodfetchCursorPage, "zodfetchCursorPage");
1521
+ function zodfetchOffsetLimitPage(schema, url, params, requestInit, options) {
1522
+ const query = new URLSearchParams(params.query);
1523
+ if (params.limit) {
1524
+ query.set("perPage", String(params.limit));
1525
+ }
1526
+ if (params.page) {
1527
+ query.set("page", String(params.page));
1528
+ }
1529
+ const offsetLimitPageSchema = z.object({
1530
+ data: z.array(schema),
1531
+ pagination: z.object({
1532
+ currentPage: z.coerce.number(),
1533
+ totalPages: z.coerce.number(),
1534
+ count: z.coerce.number()
1535
+ })
1536
+ });
1537
+ const $url = new URL(url);
1538
+ $url.search = query.toString();
1539
+ const fetchResult = _doZodFetch(offsetLimitPageSchema, $url.href, requestInit, options);
1540
+ return new OffsetLimitPagePromise(fetchResult, schema, url, params, requestInit, options);
1541
+ }
1542
+ __name(zodfetchOffsetLimitPage, "zodfetchOffsetLimitPage");
1543
+ function zodupload(schema, url, body, requestInit, options) {
1544
+ const finalRequestInit = createMultipartFormRequestInit(body, requestInit);
1545
+ return new ApiPromise(_doZodFetch(schema, url, finalRequestInit, options));
1546
+ }
1547
+ __name(zodupload, "zodupload");
1548
+ async function createMultipartFormRequestInit(body, requestInit) {
1329
1549
  const form = await createForm(body);
1330
1550
  const encoder = new FormDataEncoder(form);
1331
1551
  const finalHeaders = {};
@@ -1343,9 +1563,9 @@ async function zodupload(schema, url, body, requestInit, options) {
1343
1563
  // @ts-expect-error
1344
1564
  duplex: "half"
1345
1565
  };
1346
- return await _doZodFetch(schema, url, finalRequestInit, options);
1566
+ return finalRequestInit;
1347
1567
  }
1348
- __name(zodupload, "zodupload");
1568
+ __name(createMultipartFormRequestInit, "createMultipartFormRequestInit");
1349
1569
  var createForm = /* @__PURE__ */ __name(async (body) => {
1350
1570
  const form = new FormData();
1351
1571
  await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));
@@ -1353,7 +1573,8 @@ var createForm = /* @__PURE__ */ __name(async (body) => {
1353
1573
  }, "createForm");
1354
1574
  async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1355
1575
  try {
1356
- const response = await fetch(url, requestInitWithCache(requestInit));
1576
+ const $requestInit = await requestInit;
1577
+ const response = await fetch(url, requestInitWithCache($requestInit));
1357
1578
  const responseHeaders = createResponseHeaders(response.headers);
1358
1579
  if (!response.ok) {
1359
1580
  const retryResult = shouldRetry(response, attempt, options?.retry);
@@ -1364,17 +1585,20 @@ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1364
1585
  const errText = await response.text().catch((e) => castToError2(e).message);
1365
1586
  const errJSON = safeJsonParse(errText);
1366
1587
  const errMessage = errJSON ? void 0 : errText;
1367
- throw APIError.generate(response.status, errJSON, errMessage, responseHeaders);
1588
+ throw ApiError.generate(response.status, errJSON, errMessage, responseHeaders);
1368
1589
  }
1369
1590
  }
1370
1591
  const jsonBody = await response.json();
1371
1592
  const parsedResult = schema.safeParse(jsonBody);
1372
1593
  if (parsedResult.success) {
1373
- return parsedResult.data;
1594
+ return {
1595
+ data: parsedResult.data,
1596
+ response
1597
+ };
1374
1598
  }
1375
1599
  throw fromZodError(parsedResult.error);
1376
1600
  } catch (error) {
1377
- if (error instanceof APIError) {
1601
+ if (error instanceof ApiError) {
1378
1602
  throw error;
1379
1603
  }
1380
1604
  if (options?.retry) {
@@ -1388,7 +1612,7 @@ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1388
1612
  return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1389
1613
  }
1390
1614
  }
1391
- throw new APIConnectionError({
1615
+ throw new ApiConnectionError({
1392
1616
  cause: castToError2(error)
1393
1617
  });
1394
1618
  }
@@ -1561,6 +1785,128 @@ var isUploadable = /* @__PURE__ */ __name((value) => {
1561
1785
  return isFileLike(value) || isResponseLike(value) || isFsReadStream(value);
1562
1786
  }, "isUploadable");
1563
1787
  var isRecordLike = /* @__PURE__ */ __name((value) => value != null && typeof value === "object" && !Array.isArray(value) && Object.keys(value).length > 0 && Object.keys(value).every((key) => typeof key === "string" && typeof value[key] === "string"), "isRecordLike");
1788
+ var _ApiPromise = class _ApiPromise extends Promise {
1789
+ constructor(responsePromise) {
1790
+ super((resolve) => {
1791
+ resolve(null);
1792
+ });
1793
+ this.responsePromise = responsePromise;
1794
+ }
1795
+ /**
1796
+ * Gets the raw `Response` instance instead of parsing the response
1797
+ * data.
1798
+ *
1799
+ * If you want to parse the response body but still get the `Response`
1800
+ * instance, you can use {@link withResponse()}.
1801
+ */
1802
+ asResponse() {
1803
+ return this.responsePromise.then((p) => p.response);
1804
+ }
1805
+ /**
1806
+ * Gets the parsed response data and the raw `Response` instance.
1807
+ *
1808
+ * If you just want to get the raw `Response` instance without parsing it,
1809
+ * you can use {@link asResponse()}.
1810
+ */
1811
+ async withResponse() {
1812
+ const [data, response] = await Promise.all([
1813
+ this.parse(),
1814
+ this.asResponse()
1815
+ ]);
1816
+ return {
1817
+ data,
1818
+ response
1819
+ };
1820
+ }
1821
+ parse() {
1822
+ return this.responsePromise.then((result) => result.data);
1823
+ }
1824
+ then(onfulfilled, onrejected) {
1825
+ return this.parse().then(onfulfilled, onrejected);
1826
+ }
1827
+ catch(onrejected) {
1828
+ return this.parse().catch(onrejected);
1829
+ }
1830
+ finally(onfinally) {
1831
+ return this.parse().finally(onfinally);
1832
+ }
1833
+ };
1834
+ __name(_ApiPromise, "ApiPromise");
1835
+ var ApiPromise = _ApiPromise;
1836
+ var _fetchPage, fetchPage_fn;
1837
+ var _CursorPagePromise = class _CursorPagePromise extends ApiPromise {
1838
+ constructor(result, schema, url, params, requestInit, options) {
1839
+ super(result.then((result2) => ({
1840
+ data: new CursorPage(result2.data.data, result2.data.pagination, __privateMethod(this, _fetchPage, fetchPage_fn).bind(this)),
1841
+ response: result2.response
1842
+ })));
1843
+ __privateAdd(this, _fetchPage);
1844
+ this.schema = schema;
1845
+ this.url = url;
1846
+ this.params = params;
1847
+ this.requestInit = requestInit;
1848
+ this.options = options;
1849
+ }
1850
+ /**
1851
+ * Allow auto-paginating iteration on an unawaited list call, eg:
1852
+ *
1853
+ * for await (const item of client.items.list()) {
1854
+ * console.log(item)
1855
+ * }
1856
+ */
1857
+ async *[Symbol.asyncIterator]() {
1858
+ const page = await this;
1859
+ for await (const item of page) {
1860
+ yield item;
1861
+ }
1862
+ }
1863
+ };
1864
+ _fetchPage = new WeakSet();
1865
+ fetchPage_fn = /* @__PURE__ */ __name(function(params) {
1866
+ return zodfetchCursorPage(this.schema, this.url, {
1867
+ ...this.params,
1868
+ ...params
1869
+ }, this.requestInit, this.options);
1870
+ }, "#fetchPage");
1871
+ __name(_CursorPagePromise, "CursorPagePromise");
1872
+ var CursorPagePromise = _CursorPagePromise;
1873
+ var _fetchPage2, fetchPage_fn2;
1874
+ var _OffsetLimitPagePromise = class _OffsetLimitPagePromise extends ApiPromise {
1875
+ constructor(result, schema, url, params, requestInit, options) {
1876
+ super(result.then((result2) => ({
1877
+ data: new OffsetLimitPage(result2.data.data, result2.data.pagination, __privateMethod(this, _fetchPage2, fetchPage_fn2).bind(this)),
1878
+ response: result2.response
1879
+ })));
1880
+ __privateAdd(this, _fetchPage2);
1881
+ this.schema = schema;
1882
+ this.url = url;
1883
+ this.params = params;
1884
+ this.requestInit = requestInit;
1885
+ this.options = options;
1886
+ }
1887
+ /**
1888
+ * Allow auto-paginating iteration on an unawaited list call, eg:
1889
+ *
1890
+ * for await (const item of client.items.list()) {
1891
+ * console.log(item)
1892
+ * }
1893
+ */
1894
+ async *[Symbol.asyncIterator]() {
1895
+ const page = await this;
1896
+ for await (const item of page) {
1897
+ yield item;
1898
+ }
1899
+ }
1900
+ };
1901
+ _fetchPage2 = new WeakSet();
1902
+ fetchPage_fn2 = /* @__PURE__ */ __name(function(params1) {
1903
+ return zodfetchOffsetLimitPage(this.schema, this.url, {
1904
+ ...this.params,
1905
+ ...params1
1906
+ }, this.requestInit, this.options);
1907
+ }, "#fetchPage");
1908
+ __name(_OffsetLimitPagePromise, "OffsetLimitPagePromise");
1909
+ var OffsetLimitPagePromise = _OffsetLimitPagePromise;
1564
1910
 
1565
1911
  // src/v3/apiClient/index.ts
1566
1912
  var zodFetchOptions = {
@@ -1586,7 +1932,7 @@ var _ApiClient = class _ApiClient {
1586
1932
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1587
1933
  }, zodFetchOptions);
1588
1934
  } catch (error) {
1589
- if (error instanceof APIError) {
1935
+ if (error instanceof ApiError) {
1590
1936
  if (error.status === 404) {
1591
1937
  return void 0;
1592
1938
  }
@@ -1601,14 +1947,16 @@ var _ApiClient = class _ApiClient {
1601
1947
  }, zodFetchOptions);
1602
1948
  }
1603
1949
  triggerTask(taskId, body, options) {
1604
- return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`, {
1950
+ const encodedTaskId = encodeURIComponent(taskId);
1951
+ return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/trigger`, {
1605
1952
  method: "POST",
1606
1953
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1607
1954
  body: JSON.stringify(body)
1608
1955
  }, zodFetchOptions);
1609
1956
  }
1610
1957
  batchTriggerTask(taskId, body, options) {
1611
- return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, {
1958
+ const encodedTaskId = encodeURIComponent(taskId);
1959
+ return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${encodedTaskId}/batch`, {
1612
1960
  method: "POST",
1613
1961
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1614
1962
  body: JSON.stringify(body)
@@ -1632,6 +1980,33 @@ var _ApiClient = class _ApiClient {
1632
1980
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1633
1981
  }, zodFetchOptions);
1634
1982
  }
1983
+ listRuns(query) {
1984
+ const searchParams = createSearchQueryForListRuns(query);
1985
+ return zodfetchCursorPage(ListRunResponseItem, `${this.baseUrl}/api/v1/runs`, {
1986
+ query: searchParams,
1987
+ limit: query?.limit,
1988
+ after: query?.after,
1989
+ before: query?.before
1990
+ }, {
1991
+ method: "GET",
1992
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1993
+ }, zodFetchOptions);
1994
+ }
1995
+ listProjectRuns(projectRef, query) {
1996
+ const searchParams = createSearchQueryForListRuns(query);
1997
+ if (query?.env) {
1998
+ searchParams.append("filter[env]", Array.isArray(query.env) ? query.env.join(",") : query.env);
1999
+ }
2000
+ return zodfetchCursorPage(ListRunResponseItem, `${this.baseUrl}/api/v1/projects/${projectRef}/runs`, {
2001
+ query: searchParams,
2002
+ limit: query?.limit,
2003
+ after: query?.after,
2004
+ before: query?.before
2005
+ }, {
2006
+ method: "GET",
2007
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
2008
+ }, zodFetchOptions);
2009
+ }
1635
2010
  replayRun(runId) {
1636
2011
  return zodfetch(ReplayRunResponse, `${this.baseUrl}/api/v1/runs/${runId}/replay`, {
1637
2012
  method: "POST",
@@ -1659,7 +2034,10 @@ var _ApiClient = class _ApiClient {
1659
2034
  if (options?.perPage) {
1660
2035
  searchParams.append("perPage", options.perPage.toString());
1661
2036
  }
1662
- return zodfetch(ListSchedulesResult, `${this.baseUrl}/api/v1/schedules${searchParams.size > 0 ? `?${searchParams}` : ""}`, {
2037
+ return zodfetchOffsetLimitPage(ScheduleObject, `${this.baseUrl}/api/v1/schedules`, {
2038
+ page: options?.page,
2039
+ limit: options?.perPage
2040
+ }, {
1663
2041
  method: "GET",
1664
2042
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1665
2043
  });
@@ -1760,6 +2138,40 @@ getHeaders_fn = /* @__PURE__ */ __name(function(spanParentAsLink) {
1760
2138
  }, "#getHeaders");
1761
2139
  __name(_ApiClient, "ApiClient");
1762
2140
  var ApiClient = _ApiClient;
2141
+ function createSearchQueryForListRuns(query) {
2142
+ const searchParams = new URLSearchParams();
2143
+ if (query) {
2144
+ if (query.status) {
2145
+ searchParams.append("filter[status]", Array.isArray(query.status) ? query.status.join(",") : query.status);
2146
+ }
2147
+ if (query.taskIdentifier) {
2148
+ searchParams.append("filter[taskIdentifier]", Array.isArray(query.taskIdentifier) ? query.taskIdentifier.join(",") : query.taskIdentifier);
2149
+ }
2150
+ if (query.version) {
2151
+ searchParams.append("filter[version]", Array.isArray(query.version) ? query.version.join(",") : query.version);
2152
+ }
2153
+ if (query.bulkAction) {
2154
+ searchParams.append("filter[bulkAction]", query.bulkAction);
2155
+ }
2156
+ if (query.schedule) {
2157
+ searchParams.append("filter[schedule]", query.schedule);
2158
+ }
2159
+ if (typeof query.isTest === "boolean") {
2160
+ searchParams.append("filter[isTest]", String(query.isTest));
2161
+ }
2162
+ if (query.from) {
2163
+ searchParams.append("filter[createdAt][from]", query.from instanceof Date ? query.from.getTime().toString() : query.from.toString());
2164
+ }
2165
+ if (query.to) {
2166
+ searchParams.append("filter[createdAt][to]", query.to instanceof Date ? query.to.getTime().toString() : query.to.toString());
2167
+ }
2168
+ if (query.period) {
2169
+ searchParams.append("filter[createdAt][period]", query.period);
2170
+ }
2171
+ }
2172
+ return searchParams;
2173
+ }
2174
+ __name(createSearchQueryForListRuns, "createSearchQueryForListRuns");
1763
2175
 
1764
2176
  // src/v3/apiClientManager/index.ts
1765
2177
  var API_NAME2 = "api-client";