@trigger.dev/core 3.0.0-beta.1 → 3.0.0-beta.3

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/v3/index.js CHANGED
@@ -442,7 +442,7 @@ var QueueOptions = zod.z.object({
442
442
  /** An optional property that specifies the maximum number of concurrent run executions.
443
443
  *
444
444
  * If this property is omitted, the task can potentially use up the full concurrency of an environment. */
445
- concurrencyLimit: zod.z.number().int().min(1).max(1e3).optional(),
445
+ concurrencyLimit: zod.z.number().int().min(0).max(1e3).optional(),
446
446
  /** @deprecated This feature is coming soon */
447
447
  rateLimit: RateLimitOptions.optional()
448
448
  });
@@ -469,6 +469,13 @@ var UncaughtExceptionMessage = zod.z.object({
469
469
  "unhandledRejection"
470
470
  ])
471
471
  });
472
+ var TaskMetadataFailedToParseData = zod.z.object({
473
+ version: zod.z.literal("v1").default("v1"),
474
+ tasks: zod.z.unknown(),
475
+ zodIssues: zod.z.custom((v) => {
476
+ return Array.isArray(v) && v.every((issue) => typeof issue === "object" && "message" in issue);
477
+ })
478
+ });
472
479
  var childToWorkerMessages = {
473
480
  TASK_RUN_COMPLETED: zod.z.object({
474
481
  version: zod.z.literal("v1").default("v1"),
@@ -479,6 +486,7 @@ var childToWorkerMessages = {
479
486
  version: zod.z.literal("v1").default("v1"),
480
487
  tasks: TaskMetadataWithFilePath.array()
481
488
  }),
489
+ TASKS_FAILED_TO_PARSE: TaskMetadataFailedToParseData,
482
490
  TASK_HEARTBEAT: zod.z.object({
483
491
  version: zod.z.literal("v1").default("v1"),
484
492
  id: zod.z.string()
@@ -513,6 +521,9 @@ var ProdChildToWorkerMessages = {
513
521
  tasks: TaskMetadataWithFilePath.array()
514
522
  })
515
523
  },
524
+ TASKS_FAILED_TO_PARSE: {
525
+ message: TaskMetadataFailedToParseData
526
+ },
516
527
  TASK_HEARTBEAT: {
517
528
  message: zod.z.object({
518
529
  version: zod.z.literal("v1").default("v1"),
@@ -708,6 +719,11 @@ var InitializeDeploymentRequestBody = zod.z.object({
708
719
  contentHash: zod.z.string(),
709
720
  userId: zod.z.string().optional()
710
721
  });
722
+ var DeploymentErrorData = zod.z.object({
723
+ name: zod.z.string(),
724
+ message: zod.z.string(),
725
+ stack: zod.z.string().optional()
726
+ });
711
727
  var GetDeploymentResponseBody = zod.z.object({
712
728
  id: zod.z.string(),
713
729
  status: zod.z.enum([
@@ -723,11 +739,7 @@ var GetDeploymentResponseBody = zod.z.object({
723
739
  shortCode: zod.z.string(),
724
740
  version: zod.z.string(),
725
741
  imageReference: zod.z.string().optional(),
726
- errorData: zod.z.object({
727
- name: zod.z.string(),
728
- message: zod.z.string(),
729
- stack: zod.z.string().optional()
730
- }).optional().nullable(),
742
+ errorData: DeploymentErrorData.optional().nullable(),
731
743
  worker: zod.z.object({
732
744
  id: zod.z.string(),
733
745
  version: zod.z.string(),
@@ -772,7 +784,8 @@ var Config = zod.z.object({
772
784
  dependenciesToBundle: zod.z.array(zod.z.union([
773
785
  zod.z.string(),
774
786
  RegexSchema
775
- ])).optional()
787
+ ])).optional(),
788
+ logLevel: zod.z.string().optional()
776
789
  });
777
790
  var WaitReason = zod.z.enum([
778
791
  "WAIT_FOR_DURATION",
@@ -1407,7 +1420,11 @@ var SpanMessagingEvent = zod.z.object({
1407
1420
  });
1408
1421
 
1409
1422
  // src/zodfetch.ts
1410
- async function zodfetch(schema, url, requestInit) {
1423
+ async function zodfetch(schema, url, requestInit, options) {
1424
+ return await _doZodFetch(schema, url, requestInit, options);
1425
+ }
1426
+ __name(zodfetch, "zodfetch");
1427
+ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
1411
1428
  try {
1412
1429
  const response = await fetch(url, requestInit);
1413
1430
  if ((!requestInit || requestInit.method === "GET") && response.status === 404) {
@@ -1416,7 +1433,7 @@ async function zodfetch(schema, url, requestInit) {
1416
1433
  error: `404: ${response.statusText}`
1417
1434
  };
1418
1435
  }
1419
- if (response.status >= 400 && response.status < 500) {
1436
+ if (response.status >= 400 && response.status < 500 && response.status !== 429) {
1420
1437
  const body = await response.json();
1421
1438
  if (!body.error) {
1422
1439
  return {
@@ -1429,6 +1446,27 @@ async function zodfetch(schema, url, requestInit) {
1429
1446
  error: body.error
1430
1447
  };
1431
1448
  }
1449
+ if (response.status === 429 || response.status >= 500) {
1450
+ if (!options?.retry) {
1451
+ return {
1452
+ ok: false,
1453
+ error: `Failed to fetch ${url}, got status code ${response.status}`
1454
+ };
1455
+ }
1456
+ const retry = {
1457
+ ...defaultRetryOptions,
1458
+ ...options.retry
1459
+ };
1460
+ if (attempt > retry.maxAttempts) {
1461
+ return {
1462
+ ok: false,
1463
+ error: `Failed to fetch ${url}, got status code ${response.status}`
1464
+ };
1465
+ }
1466
+ const delay = calculateNextRetryDelay(retry, attempt);
1467
+ await new Promise((resolve) => setTimeout(resolve, delay));
1468
+ return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1469
+ }
1432
1470
  if (response.status !== 200) {
1433
1471
  return {
1434
1472
  ok: false,
@@ -1454,13 +1492,28 @@ async function zodfetch(schema, url, requestInit) {
1454
1492
  error: parsedResult.error.message
1455
1493
  };
1456
1494
  } catch (error) {
1495
+ if (options?.retry) {
1496
+ const retry = {
1497
+ ...defaultRetryOptions,
1498
+ ...options.retry
1499
+ };
1500
+ if (attempt > retry.maxAttempts) {
1501
+ return {
1502
+ ok: false,
1503
+ error: error instanceof Error ? error.message : JSON.stringify(error)
1504
+ };
1505
+ }
1506
+ const delay = calculateNextRetryDelay(retry, attempt);
1507
+ await new Promise((resolve) => setTimeout(resolve, delay));
1508
+ return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1509
+ }
1457
1510
  return {
1458
1511
  ok: false,
1459
1512
  error: error instanceof Error ? error.message : JSON.stringify(error)
1460
1513
  };
1461
1514
  }
1462
1515
  }
1463
- __name(zodfetch, "zodfetch");
1516
+ __name(_doZodFetch, "_doZodFetch");
1464
1517
 
1465
1518
  // src/v3/utils/flattenAttributes.ts
1466
1519
  function flattenAttributes(obj, prefix) {
@@ -1746,6 +1799,15 @@ function getEnvVar(name) {
1746
1799
  __name(getEnvVar, "getEnvVar");
1747
1800
 
1748
1801
  // src/v3/apiClient/index.ts
1802
+ var zodFetchOptions = {
1803
+ retry: {
1804
+ maxAttempts: 5,
1805
+ minTimeoutInMs: 1e3,
1806
+ maxTimeoutInMs: 3e4,
1807
+ factor: 2,
1808
+ randomize: false
1809
+ }
1810
+ };
1749
1811
  var _getHeaders, getHeaders_fn;
1750
1812
  var _ApiClient = class _ApiClient {
1751
1813
  constructor(baseUrl, accessToken) {
@@ -1758,26 +1820,26 @@ var _ApiClient = class _ApiClient {
1758
1820
  method: "POST",
1759
1821
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1760
1822
  body: JSON.stringify(body)
1761
- });
1823
+ }, zodFetchOptions);
1762
1824
  }
1763
1825
  batchTriggerTask(taskId, body, options) {
1764
1826
  return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, {
1765
1827
  method: "POST",
1766
1828
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1767
1829
  body: JSON.stringify(body)
1768
- });
1830
+ }, zodFetchOptions);
1769
1831
  }
1770
1832
  createUploadPayloadUrl(filename) {
1771
1833
  return zodfetch(CreateUploadPayloadUrlResponseBody, `${this.baseUrl}/api/v1/packets/${filename}`, {
1772
1834
  method: "PUT",
1773
1835
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1774
- });
1836
+ }, zodFetchOptions);
1775
1837
  }
1776
1838
  getPayloadUrl(filename) {
1777
1839
  return zodfetch(CreateUploadPayloadUrlResponseBody, `${this.baseUrl}/api/v1/packets/${filename}`, {
1778
1840
  method: "GET",
1779
1841
  headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1780
- });
1842
+ }, zodFetchOptions);
1781
1843
  }
1782
1844
  };
1783
1845
  _getHeaders = new WeakSet();
@@ -1827,6 +1889,15 @@ getStore_fn2 = /* @__PURE__ */ __name(function() {
1827
1889
  __name(_ApiClientManager, "ApiClientManager");
1828
1890
  var ApiClientManager = _ApiClientManager;
1829
1891
  var apiClientManager = new ApiClientManager();
1892
+ var _ZodSchemaParsedError = class _ZodSchemaParsedError extends Error {
1893
+ constructor(error, payload) {
1894
+ super(error.message);
1895
+ this.error = error;
1896
+ this.payload = payload;
1897
+ }
1898
+ };
1899
+ __name(_ZodSchemaParsedError, "ZodSchemaParsedError");
1900
+ var ZodSchemaParsedError = _ZodSchemaParsedError;
1830
1901
  var ZodMessageSchema = zod.z.object({
1831
1902
  version: zod.z.literal("v1").default("v1"),
1832
1903
  type: zod.z.string(),
@@ -1923,7 +1994,7 @@ var _ZodMessageSender = class _ZodMessageSender {
1923
1994
  }
1924
1995
  const parsedPayload = schema.safeParse(payload);
1925
1996
  if (!parsedPayload.success) {
1926
- throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
1997
+ throw new ZodSchemaParsedError(parsedPayload.error, payload);
1927
1998
  }
1928
1999
  await __privateGet(this, _sender).call(this, {
1929
2000
  type,
@@ -2427,7 +2498,7 @@ var _ZodIpcConnection = class _ZodIpcConnection {
2427
2498
  }
2428
2499
  const parsedPayload = schema.safeParse(payload);
2429
2500
  if (!parsedPayload.success) {
2430
- throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2501
+ throw new ZodSchemaParsedError(parsedPayload.error, payload);
2431
2502
  }
2432
2503
  await __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2433
2504
  type: "EVENT",
@@ -2616,6 +2687,41 @@ function correctStackTraceLine(line, projectDir) {
2616
2687
  return line;
2617
2688
  }
2618
2689
  __name(correctStackTraceLine, "correctStackTraceLine");
2690
+ function groupTaskMetadataIssuesByTask(tasks, issues) {
2691
+ return issues.reduce((acc, issue) => {
2692
+ if (issue.path.length === 0) {
2693
+ return acc;
2694
+ }
2695
+ const taskIndex = issue.path[1];
2696
+ if (typeof taskIndex !== "number") {
2697
+ return acc;
2698
+ }
2699
+ const task = tasks[taskIndex];
2700
+ if (!task) {
2701
+ return acc;
2702
+ }
2703
+ const restOfPath = issue.path.slice(2);
2704
+ const taskId = task.id;
2705
+ const taskName = task.exportName;
2706
+ const filePath = task.filePath;
2707
+ const key = taskIndex;
2708
+ const existing = acc[key] ?? {
2709
+ id: taskId,
2710
+ exportName: taskName,
2711
+ filePath,
2712
+ issues: []
2713
+ };
2714
+ existing.issues.push({
2715
+ message: issue.message,
2716
+ path: restOfPath.length === 0 ? void 0 : restOfPath.join(".")
2717
+ });
2718
+ return {
2719
+ ...acc,
2720
+ [key]: existing
2721
+ };
2722
+ }, {});
2723
+ }
2724
+ __name(groupTaskMetadataIssuesByTask, "groupTaskMetadataIssuesByTask");
2619
2725
 
2620
2726
  // src/v3/utils/platform.ts
2621
2727
  var _globalThis = typeof globalThis === "object" ? globalThis : global;
@@ -2816,6 +2922,7 @@ var clock = ClockAPI.getInstance();
2816
2922
 
2817
2923
  // src/v3/logger/taskLogger.ts
2818
2924
  var logLevels = [
2925
+ "none",
2819
2926
  "error",
2820
2927
  "warn",
2821
2928
  "log",
@@ -2831,27 +2938,27 @@ var _OtelTaskLogger = class _OtelTaskLogger {
2831
2938
  this._level = logLevels.indexOf(_config.level);
2832
2939
  }
2833
2940
  debug(message, properties) {
2834
- if (this._level < 4)
2941
+ if (this._level < 5)
2835
2942
  return;
2836
2943
  __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "debug", apiLogs.SeverityNumber.DEBUG, properties);
2837
2944
  }
2838
2945
  log(message, properties) {
2839
- if (this._level < 2)
2946
+ if (this._level < 3)
2840
2947
  return;
2841
2948
  __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "log", apiLogs.SeverityNumber.INFO, properties);
2842
2949
  }
2843
2950
  info(message, properties) {
2844
- if (this._level < 3)
2951
+ if (this._level < 4)
2845
2952
  return;
2846
2953
  __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "info", apiLogs.SeverityNumber.INFO, properties);
2847
2954
  }
2848
2955
  warn(message, properties) {
2849
- if (this._level < 1)
2956
+ if (this._level < 2)
2850
2957
  return;
2851
2958
  __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "warn", apiLogs.SeverityNumber.WARN, properties);
2852
2959
  }
2853
2960
  error(message, properties) {
2854
- if (this._level < 0)
2961
+ if (this._level < 1)
2855
2962
  return;
2856
2963
  __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "error", apiLogs.SeverityNumber.ERROR, properties);
2857
2964
  }
@@ -3955,11 +4062,18 @@ async function stringifyIO(value) {
3955
4062
  dataType: "text/plain"
3956
4063
  };
3957
4064
  }
3958
- const { stringify } = await loadSuperJSON();
3959
- return {
3960
- data: stringify(value),
3961
- dataType: "application/super+json"
3962
- };
4065
+ try {
4066
+ const { stringify } = await loadSuperJSON();
4067
+ const data = stringify(value);
4068
+ return {
4069
+ data,
4070
+ dataType: "application/super+json"
4071
+ };
4072
+ } catch {
4073
+ return {
4074
+ dataType: "application/json"
4075
+ };
4076
+ }
3963
4077
  }
3964
4078
  __name(stringifyIO, "stringifyIO");
3965
4079
  async function conditionallyExportPacket(packet, pathPrefix, tracer) {
@@ -4063,7 +4177,7 @@ async function importPacket(packet, span) {
4063
4177
  __name(importPacket, "importPacket");
4064
4178
  async function createPacketAttributes(packet, dataKey, dataTypeKey) {
4065
4179
  if (!packet.data) {
4066
- return {};
4180
+ return;
4067
4181
  }
4068
4182
  switch (packet.dataType) {
4069
4183
  case "application/json":
@@ -4073,12 +4187,19 @@ async function createPacketAttributes(packet, dataKey, dataTypeKey) {
4073
4187
  };
4074
4188
  case "application/super+json":
4075
4189
  const { parse } = await loadSuperJSON();
4076
- const parsed = parse(packet.data);
4077
- const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));
4078
- return {
4079
- ...flattenAttributes(jsonified, dataKey),
4080
- [dataTypeKey]: "application/json"
4081
- };
4190
+ if (typeof packet.data === "undefined" || packet.data === null) {
4191
+ return;
4192
+ }
4193
+ try {
4194
+ const parsed = parse(packet.data);
4195
+ const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));
4196
+ return {
4197
+ ...flattenAttributes(jsonified, dataKey),
4198
+ [dataTypeKey]: "application/json"
4199
+ };
4200
+ } catch {
4201
+ return;
4202
+ }
4082
4203
  case "application/store":
4083
4204
  return {
4084
4205
  [dataKey]: packet.data,
@@ -4086,15 +4207,15 @@ async function createPacketAttributes(packet, dataKey, dataTypeKey) {
4086
4207
  };
4087
4208
  case "text/plain":
4088
4209
  return {
4089
- [SemanticInternalAttributes.OUTPUT]: packet.data,
4090
- [SemanticInternalAttributes.OUTPUT_TYPE]: packet.dataType
4210
+ [dataKey]: packet.data,
4211
+ [dataTypeKey]: packet.dataType
4091
4212
  };
4092
4213
  default:
4093
- return {};
4214
+ return;
4094
4215
  }
4095
4216
  }
4096
4217
  __name(createPacketAttributes, "createPacketAttributes");
4097
- async function createPackageAttributesAsJson(data, dataType) {
4218
+ async function createPacketAttributesAsJson(data, dataType) {
4098
4219
  if (typeof data === "string" || typeof data === "number" || typeof data === "boolean" || data === null || data === void 0) {
4099
4220
  return data;
4100
4221
  }
@@ -4104,7 +4225,7 @@ async function createPackageAttributesAsJson(data, dataType) {
4104
4225
  case "application/super+json":
4105
4226
  const { deserialize } = await loadSuperJSON();
4106
4227
  const deserialized = deserialize(data);
4107
- const jsonify = JSON.parse(JSON.stringify(deserialized, safeReplacer));
4228
+ const jsonify = safeJsonParse(JSON.stringify(deserialized, safeReplacer));
4108
4229
  return imposeAttributeLimits(flattenAttributes(jsonify, void 0));
4109
4230
  case "application/store":
4110
4231
  return data;
@@ -4112,7 +4233,7 @@ async function createPackageAttributesAsJson(data, dataType) {
4112
4233
  return {};
4113
4234
  }
4114
4235
  }
4115
- __name(createPackageAttributesAsJson, "createPackageAttributesAsJson");
4236
+ __name(createPacketAttributesAsJson, "createPacketAttributesAsJson");
4116
4237
  async function prettyPrintPacket(rawData, dataType) {
4117
4238
  if (rawData === void 0) {
4118
4239
  return "";
@@ -4167,6 +4288,14 @@ async function loadSuperJSON() {
4167
4288
  return await import('superjson');
4168
4289
  }
4169
4290
  __name(loadSuperJSON, "loadSuperJSON");
4291
+ function safeJsonParse(value) {
4292
+ try {
4293
+ return JSON.parse(value);
4294
+ } catch {
4295
+ return;
4296
+ }
4297
+ }
4298
+ __name(safeJsonParse, "safeJsonParse");
4170
4299
 
4171
4300
  // src/v3/workers/taskExecutor.ts
4172
4301
  var _callRun, callRun_fn, _callTaskInit, callTaskInit_fn, _callTaskCleanup, callTaskCleanup_fn, _handleError, handleError_fn;
@@ -4212,7 +4341,10 @@ var _TaskExecutor = class _TaskExecutor {
4212
4341
  try {
4213
4342
  const stringifiedOutput = await stringifyIO(output);
4214
4343
  const finalOutput = await conditionallyExportPacket(stringifiedOutput, `${execution.attempt.id}/output`, this._tracer);
4215
- span.setAttributes(await createPacketAttributes(finalOutput, SemanticInternalAttributes.OUTPUT, SemanticInternalAttributes.OUTPUT_TYPE));
4344
+ const attributes = await createPacketAttributes(finalOutput, SemanticInternalAttributes.OUTPUT, SemanticInternalAttributes.OUTPUT_TYPE);
4345
+ if (attributes) {
4346
+ span.setAttributes(attributes);
4347
+ }
4216
4348
  return {
4217
4349
  ok: true,
4218
4350
  id: execution.attempt.id,
@@ -4473,6 +4605,7 @@ exports.CreateAuthorizationCodeResponseSchema = CreateAuthorizationCodeResponseS
4473
4605
  exports.CreateBackgroundWorkerRequestBody = CreateBackgroundWorkerRequestBody;
4474
4606
  exports.CreateBackgroundWorkerResponse = CreateBackgroundWorkerResponse;
4475
4607
  exports.CreateUploadPayloadUrlResponseBody = CreateUploadPayloadUrlResponseBody;
4608
+ exports.DeploymentErrorData = DeploymentErrorData;
4476
4609
  exports.DevRuntimeManager = DevRuntimeManager;
4477
4610
  exports.DurableClock = PreciseWallClock;
4478
4611
  exports.EnvironmentType = EnvironmentType;
@@ -4541,6 +4674,7 @@ exports.TaskContextSpanProcessor = TaskContextSpanProcessor;
4541
4674
  exports.TaskEventStyle = TaskEventStyle;
4542
4675
  exports.TaskExecutor = TaskExecutor;
4543
4676
  exports.TaskMetadata = TaskMetadata;
4677
+ exports.TaskMetadataFailedToParseData = TaskMetadataFailedToParseData;
4544
4678
  exports.TaskMetadataWithFilePath = TaskMetadataWithFilePath;
4545
4679
  exports.TaskResource = TaskResource;
4546
4680
  exports.TaskRun = TaskRun;
@@ -4576,6 +4710,7 @@ exports.ZodMessageHandler = ZodMessageHandler;
4576
4710
  exports.ZodMessageSchema = ZodMessageSchema;
4577
4711
  exports.ZodMessageSender = ZodMessageSender;
4578
4712
  exports.ZodNamespace = ZodNamespace;
4713
+ exports.ZodSchemaParsedError = ZodSchemaParsedError;
4579
4714
  exports.ZodSocketConnection = ZodSocketConnection;
4580
4715
  exports.ZodSocketMessageHandler = ZodSocketMessageHandler;
4581
4716
  exports.ZodSocketMessageSender = ZodSocketMessageSender;
@@ -4590,8 +4725,8 @@ exports.conditionallyExportPacket = conditionallyExportPacket;
4590
4725
  exports.conditionallyImportPacket = conditionallyImportPacket;
4591
4726
  exports.correctErrorStackTrace = correctErrorStackTrace;
4592
4727
  exports.createErrorTaskError = createErrorTaskError;
4593
- exports.createPackageAttributesAsJson = createPackageAttributesAsJson;
4594
4728
  exports.createPacketAttributes = createPacketAttributes;
4729
+ exports.createPacketAttributesAsJson = createPacketAttributesAsJson;
4595
4730
  exports.defaultFetchRetryOptions = defaultFetchRetryOptions;
4596
4731
  exports.defaultRetryOptions = defaultRetryOptions;
4597
4732
  exports.detectDependencyVersion = detectDependencyVersion;
@@ -4602,10 +4737,12 @@ exports.formatDurationInDays = formatDurationInDays;
4602
4737
  exports.formatDurationMilliseconds = formatDurationMilliseconds;
4603
4738
  exports.formatDurationNanoseconds = formatDurationNanoseconds;
4604
4739
  exports.getEnvVar = getEnvVar;
4740
+ exports.groupTaskMetadataIssuesByTask = groupTaskMetadataIssuesByTask;
4605
4741
  exports.iconStringForSeverity = iconStringForSeverity;
4606
4742
  exports.imposeAttributeLimits = imposeAttributeLimits;
4607
4743
  exports.isCancellationSpanEvent = isCancellationSpanEvent;
4608
4744
  exports.isExceptionSpanEvent = isExceptionSpanEvent;
4745
+ exports.logLevels = logLevels;
4609
4746
  exports.logger = logger;
4610
4747
  exports.millisecondsToNanoseconds = millisecondsToNanoseconds;
4611
4748
  exports.nanosecondsToMilliseconds = nanosecondsToMilliseconds;