@trigger.dev/core 0.0.0-prerelease-20240219135254 → 0.0.0-prerelease-20240408121557

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.mjs CHANGED
@@ -1,8 +1,21 @@
1
1
  import { z } from 'zod';
2
- import { trace, propagation, context, SpanStatusCode } from '@opentelemetry/api';
2
+ import { SpanStatusCode, trace, propagation, context, DiagLogLevel, diag, DiagConsoleLogger, SpanKind } from '@opentelemetry/api';
3
3
  import { AsyncLocalStorage } from 'node:async_hooks';
4
+ import { io } from 'socket.io-client';
5
+ import { randomUUID } from 'crypto';
6
+ import nodePath from 'node:path';
4
7
  import { SeverityNumber, logs } from '@opentelemetry/api-logs';
8
+ import { PreciseDate } from '@google-cloud/precise-date';
9
+ import humanizeDuration from 'humanize-duration';
10
+ import { setTimeout as setTimeout$1 } from 'node:timers/promises';
5
11
  import util from 'node:util';
12
+ import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
13
+ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
14
+ import { registerInstrumentations } from '@opentelemetry/instrumentation';
15
+ import { Resource, detectResourcesSync, processDetectorSync } from '@opentelemetry/resources';
16
+ import { LoggerProvider, BatchLogRecordProcessor, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
17
+ import { NodeTracerProvider, BatchSpanProcessor, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-node';
18
+ import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';
6
19
 
7
20
  var __defProp = Object.defineProperty;
8
21
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -29,6 +42,14 @@ var __privateSet = (obj, member, value, setter) => {
29
42
  setter ? setter.call(obj, value) : member.set(obj, value);
30
43
  return value;
31
44
  };
45
+ var __privateWrapper = (obj, member, setter, getter) => ({
46
+ set _(value) {
47
+ __privateSet(obj, member, value, setter);
48
+ },
49
+ get _() {
50
+ return __privateGet(obj, member, getter);
51
+ }
52
+ });
32
53
  var __privateMethod = (obj, member, method) => {
33
54
  __accessCheck(obj, member, "access private method");
34
55
  return method;
@@ -46,48 +67,6 @@ var GetPersonalAccessTokenResponseSchema = z.object({
46
67
  obfuscatedToken: z.string()
47
68
  }).nullable()
48
69
  });
49
- var TaskResource = z.object({
50
- id: z.string(),
51
- filePath: z.string(),
52
- exportName: z.string()
53
- });
54
- var BackgroundWorkerMetadata = z.object({
55
- packageVersion: z.string(),
56
- contentHash: z.string(),
57
- cliPackageVersion: z.string(),
58
- tasks: z.array(TaskResource)
59
- });
60
-
61
- // src/v3/schemas/api.ts
62
- var WhoAmIResponseSchema = z.object({
63
- userId: z.string(),
64
- email: z.string().email()
65
- });
66
- var GetProjectDevResponse = z.object({
67
- apiKey: z.string(),
68
- name: z.string()
69
- });
70
- var CreateBackgroundWorkerRequestBody = z.object({
71
- localOnly: z.boolean(),
72
- metadata: BackgroundWorkerMetadata
73
- });
74
- var CreateBackgroundWorkerResponse = z.object({
75
- id: z.string(),
76
- version: z.string(),
77
- contentHash: z.string()
78
- });
79
- var BackgroundWorkerRecord = CreateBackgroundWorkerResponse;
80
- var TriggerTaskRequestBody = z.object({
81
- payload: z.any(),
82
- context: z.any(),
83
- options: z.object({
84
- parentAttempt: z.string().optional(),
85
- lockToCurrentVersion: z.boolean().optional()
86
- }).optional()
87
- });
88
- var TriggerTaskResponse = z.object({
89
- id: z.string()
90
- });
91
70
  var TaskRunBuiltInError = z.object({
92
71
  type: z.literal("BUILT_IN_ERROR"),
93
72
  name: z.string(),
@@ -103,13 +82,30 @@ var TaskRunStringError = z.object({
103
82
  raw: z.string()
104
83
  });
105
84
  var TaskRunErrorCodes = {
106
- COULD_NOT_FIND_EXECUTOR: "COULD_NOT_FIND_EXECUTOR"
85
+ COULD_NOT_FIND_EXECUTOR: "COULD_NOT_FIND_EXECUTOR",
86
+ CONFIGURED_INCORRECTLY: "CONFIGURED_INCORRECTLY",
87
+ TASK_ALREADY_RUNNING: "TASK_ALREADY_RUNNING",
88
+ TASK_EXECUTION_FAILED: "TASK_EXECUTION_FAILED",
89
+ TASK_EXECUTION_ABORTED: "TASK_EXECUTION_ABORTED",
90
+ TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE: "TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE",
91
+ TASK_RUN_CANCELLED: "TASK_RUN_CANCELLED",
92
+ TASK_OUTPUT_ERROR: "TASK_OUTPUT_ERROR",
93
+ HANDLE_ERROR_ERROR: "HANDLE_ERROR_ERROR"
107
94
  };
108
95
  var TaskRunInternalError = z.object({
109
96
  type: z.literal("INTERNAL_ERROR"),
110
97
  code: z.enum([
111
- "COULD_NOT_FIND_EXECUTOR"
112
- ])
98
+ "COULD_NOT_FIND_EXECUTOR",
99
+ "CONFIGURED_INCORRECTLY",
100
+ "TASK_ALREADY_RUNNING",
101
+ "TASK_EXECUTION_FAILED",
102
+ "TASK_EXECUTION_ABORTED",
103
+ "TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE",
104
+ "TASK_RUN_CANCELLED",
105
+ "TASK_OUTPUT_ERROR",
106
+ "HANDLE_ERROR_ERROR"
107
+ ]),
108
+ message: z.string().optional()
113
109
  });
114
110
  var TaskRunError = z.discriminatedUnion("type", [
115
111
  TaskRunBuiltInError,
@@ -123,6 +119,7 @@ var TaskRun = z.object({
123
119
  payloadType: z.string(),
124
120
  context: z.any(),
125
121
  tags: z.array(z.string()),
122
+ isTest: z.boolean().default(false),
126
123
  createdAt: z.coerce.date()
127
124
  });
128
125
  var TaskRunExecutionTask = z.object({
@@ -159,13 +156,22 @@ var TaskRunExecutionProject = z.object({
159
156
  slug: z.string(),
160
157
  name: z.string()
161
158
  });
159
+ var TaskRunExecutionQueue = z.object({
160
+ id: z.string(),
161
+ name: z.string()
162
+ });
163
+ var TaskRunExecutionBatch = z.object({
164
+ id: z.string()
165
+ });
162
166
  var TaskRunExecution = z.object({
163
167
  task: TaskRunExecutionTask,
164
168
  attempt: TaskRunExecutionAttempt,
165
169
  run: TaskRun,
170
+ queue: TaskRunExecutionQueue,
166
171
  environment: TaskRunExecutionEnvironment,
167
172
  organization: TaskRunExecutionOrganization,
168
- project: TaskRunExecutionProject
173
+ project: TaskRunExecutionProject,
174
+ batch: TaskRunExecutionBatch.optional()
169
175
  });
170
176
  var TaskRunContext = z.object({
171
177
  task: TaskRunExecutionTask,
@@ -177,33 +183,105 @@ var TaskRunContext = z.object({
177
183
  payload: true,
178
184
  payloadType: true
179
185
  }),
186
+ queue: TaskRunExecutionQueue,
180
187
  environment: TaskRunExecutionEnvironment,
181
188
  organization: TaskRunExecutionOrganization,
182
- project: TaskRunExecutionProject
189
+ project: TaskRunExecutionProject,
190
+ batch: TaskRunExecutionBatch.optional()
191
+ });
192
+ var TaskRunExecutionRetry = z.object({
193
+ timestamp: z.number(),
194
+ delay: z.number(),
195
+ error: z.unknown().optional()
183
196
  });
184
197
  var TaskRunFailedExecutionResult = z.object({
185
198
  ok: z.literal(false),
186
199
  id: z.string(),
187
- error: TaskRunError
200
+ error: TaskRunError,
201
+ retry: TaskRunExecutionRetry.optional(),
202
+ skippedRetrying: z.boolean().optional()
188
203
  });
189
204
  var TaskRunSuccessfulExecutionResult = z.object({
190
205
  ok: z.literal(true),
191
206
  id: z.string(),
192
- output: z.string(),
207
+ output: z.string().optional(),
193
208
  outputType: z.string()
194
209
  });
195
210
  var TaskRunExecutionResult = z.discriminatedUnion("ok", [
196
211
  TaskRunSuccessfulExecutionResult,
197
212
  TaskRunFailedExecutionResult
198
213
  ]);
214
+ var BatchTaskRunExecutionResult = z.object({
215
+ id: z.string(),
216
+ items: TaskRunExecutionResult.array()
217
+ });
218
+
219
+ // src/v3/schemas/messages.ts
220
+ var EnvironmentType = z.enum([
221
+ "PRODUCTION",
222
+ "STAGING",
223
+ "DEVELOPMENT",
224
+ "PREVIEW"
225
+ ]);
226
+ var MachineCpu = z.union([
227
+ z.literal(0.25),
228
+ z.literal(0.5),
229
+ z.literal(1),
230
+ z.literal(2),
231
+ z.literal(4)
232
+ ]).default(0.5);
233
+ var MachineMemory = z.union([
234
+ z.literal(0.25),
235
+ z.literal(0.5),
236
+ z.literal(1),
237
+ z.literal(2),
238
+ z.literal(4),
239
+ z.literal(8)
240
+ ]).default(1);
241
+ var Machine = z.object({
242
+ version: z.literal("v1").default("v1"),
243
+ cpu: MachineCpu,
244
+ memory: MachineMemory
245
+ });
199
246
  var TaskRunExecutionPayload = z.object({
200
247
  execution: TaskRunExecution,
201
- traceContext: z.record(z.unknown())
248
+ traceContext: z.record(z.unknown()),
249
+ environment: z.record(z.string()).optional()
250
+ });
251
+ var ProdTaskRunExecution = TaskRunExecution.extend({
252
+ worker: z.object({
253
+ id: z.string(),
254
+ contentHash: z.string(),
255
+ version: z.string()
256
+ })
257
+ });
258
+ var ProdTaskRunExecutionPayload = z.object({
259
+ execution: ProdTaskRunExecution,
260
+ traceContext: z.record(z.unknown()),
261
+ environment: z.record(z.string()).optional()
202
262
  });
203
263
  var BackgroundWorkerServerMessages = z.discriminatedUnion("type", [
204
264
  z.object({
205
265
  type: z.literal("EXECUTE_RUNS"),
206
266
  payloads: z.array(TaskRunExecutionPayload)
267
+ }),
268
+ z.object({
269
+ type: z.literal("CANCEL_ATTEMPT"),
270
+ taskAttemptId: z.string(),
271
+ taskRunId: z.string()
272
+ }),
273
+ z.object({
274
+ type: z.literal("SCHEDULE_ATTEMPT"),
275
+ image: z.string(),
276
+ version: z.string(),
277
+ machine: Machine,
278
+ // identifiers
279
+ id: z.string(),
280
+ envId: z.string(),
281
+ envType: EnvironmentType,
282
+ orgId: z.string(),
283
+ projectId: z.string(),
284
+ runId: z.string()
207
285
  })
208
286
  ]);
209
287
  var serverWebsocketMessages = {
@@ -221,15 +299,26 @@ var BackgroundWorkerClientMessages = z.discriminatedUnion("type", [
221
299
  z.object({
222
300
  version: z.literal("v1").default("v1"),
223
301
  type: z.literal("TASK_RUN_COMPLETED"),
224
- completion: TaskRunExecutionResult
302
+ completion: TaskRunExecutionResult,
303
+ execution: TaskRunExecution
304
+ }),
305
+ z.object({
306
+ version: z.literal("v1").default("v1"),
307
+ type: z.literal("TASK_HEARTBEAT"),
308
+ id: z.string()
225
309
  })
226
310
  ]);
311
+ var BackgroundWorkerProperties = z.object({
312
+ id: z.string(),
313
+ version: z.string(),
314
+ contentHash: z.string()
315
+ });
227
316
  var clientWebsocketMessages = {
228
317
  READY_FOR_TASKS: z.object({
229
318
  version: z.literal("v1").default("v1"),
230
319
  backgroundWorkerId: z.string()
231
320
  }),
232
- WORKER_DEPRECATED: z.object({
321
+ BACKGROUND_WORKER_DEPRECATED: z.object({
233
322
  version: z.literal("v1").default("v1"),
234
323
  backgroundWorkerId: z.string()
235
324
  }),
@@ -244,40 +333,1112 @@ var workerToChildMessages = {
244
333
  version: z.literal("v1").default("v1"),
245
334
  execution: TaskRunExecution,
246
335
  traceContext: z.record(z.unknown()),
247
- metadata: BackgroundWorkerRecord
336
+ metadata: BackgroundWorkerProperties
248
337
  }),
249
- TASK_RUN_COMPLETED: z.object({
338
+ TASK_RUN_COMPLETED_NOTIFICATION: z.object({
250
339
  version: z.literal("v1").default("v1"),
251
340
  completion: TaskRunExecutionResult,
252
341
  execution: TaskRunExecution
253
342
  }),
254
343
  CLEANUP: z.object({
255
344
  version: z.literal("v1").default("v1"),
256
- flush: z.boolean().default(false)
345
+ flush: z.boolean().default(false),
346
+ kill: z.boolean().default(true)
257
347
  })
258
348
  };
349
+ var FixedWindowRateLimit = z.object({
350
+ type: z.literal("fixed-window"),
351
+ limit: z.number(),
352
+ window: z.union([
353
+ z.object({
354
+ seconds: z.number()
355
+ }),
356
+ z.object({
357
+ minutes: z.number()
358
+ }),
359
+ z.object({
360
+ hours: z.number()
361
+ })
362
+ ])
363
+ });
364
+ var SlidingWindowRateLimit = z.object({
365
+ type: z.literal("sliding-window"),
366
+ limit: z.number(),
367
+ window: z.union([
368
+ z.object({
369
+ seconds: z.number()
370
+ }),
371
+ z.object({
372
+ minutes: z.number()
373
+ }),
374
+ z.object({
375
+ hours: z.number()
376
+ })
377
+ ])
378
+ });
379
+ var RateLimitOptions = z.discriminatedUnion("type", [
380
+ FixedWindowRateLimit,
381
+ SlidingWindowRateLimit
382
+ ]);
383
+ var RetryOptions = z.object({
384
+ /** The number of attempts before giving up */
385
+ maxAttempts: z.number().int().optional(),
386
+ /** The exponential factor to use when calculating the next retry time.
387
+ *
388
+ * Each subsequent retry will be calculated as `previousTimeout * factor`
389
+ */
390
+ factor: z.number().optional(),
391
+ /** The minimum time to wait before retrying */
392
+ minTimeoutInMs: z.number().int().optional(),
393
+ /** The maximum time to wait before retrying */
394
+ maxTimeoutInMs: z.number().int().optional(),
395
+ /** Randomize the timeout between retries.
396
+ *
397
+ * This can be useful to prevent the thundering herd problem where all retries happen at the same time.
398
+ */
399
+ randomize: z.boolean().optional()
400
+ });
401
+ var QueueOptions = z.object({
402
+ /** You can define a shared queue and then pass the name in to your task.
403
+ *
404
+ * @example
405
+ *
406
+ * ```ts
407
+ * const myQueue = queue({
408
+ name: "my-queue",
409
+ concurrencyLimit: 1,
410
+ });
411
+
412
+ export const task1 = task({
413
+ id: "task-1",
414
+ queue: {
415
+ name: "my-queue",
416
+ },
417
+ run: async (payload: { message: string }) => {
418
+ // ...
419
+ },
420
+ });
421
+
422
+ export const task2 = task({
423
+ id: "task-2",
424
+ queue: {
425
+ name: "my-queue",
426
+ },
427
+ run: async (payload: { message: string }) => {
428
+ // ...
429
+ },
430
+ });
431
+ * ```
432
+ */
433
+ name: z.string().optional(),
434
+ /** An optional property that specifies the maximum number of concurrent run executions.
435
+ *
436
+ * If this property is omitted, the task can potentially use up the full concurrency of an environment. */
437
+ concurrencyLimit: z.number().int().min(0).max(1e3).optional(),
438
+ /** @deprecated This feature is coming soon */
439
+ rateLimit: RateLimitOptions.optional()
440
+ });
259
441
  var TaskMetadata = z.object({
260
442
  id: z.string(),
261
443
  exportName: z.string(),
262
- packageVersion: z.string()
444
+ packageVersion: z.string(),
445
+ queue: QueueOptions.optional(),
446
+ retry: RetryOptions.optional(),
447
+ machine: Machine.partial().optional()
263
448
  });
264
449
  var TaskMetadataWithFilePath = TaskMetadata.extend({
265
450
  filePath: z.string()
266
451
  });
452
+ var UncaughtExceptionMessage = z.object({
453
+ version: z.literal("v1").default("v1"),
454
+ error: z.object({
455
+ name: z.string(),
456
+ message: z.string(),
457
+ stack: z.string().optional()
458
+ }),
459
+ origin: z.enum([
460
+ "uncaughtException",
461
+ "unhandledRejection"
462
+ ])
463
+ });
464
+ var TaskMetadataFailedToParseData = z.object({
465
+ version: z.literal("v1").default("v1"),
466
+ tasks: z.unknown(),
467
+ zodIssues: z.custom((v) => {
468
+ return Array.isArray(v) && v.every((issue) => typeof issue === "object" && "message" in issue);
469
+ })
470
+ });
267
471
  var childToWorkerMessages = {
268
472
  TASK_RUN_COMPLETED: z.object({
269
473
  version: z.literal("v1").default("v1"),
474
+ execution: TaskRunExecution,
270
475
  result: TaskRunExecutionResult
271
476
  }),
272
477
  TASKS_READY: z.object({
273
478
  version: z.literal("v1").default("v1"),
274
479
  tasks: TaskMetadataWithFilePath.array()
275
480
  }),
276
- READY_TO_DISPOSE: z.undefined()
481
+ TASKS_FAILED_TO_PARSE: TaskMetadataFailedToParseData,
482
+ TASK_HEARTBEAT: z.object({
483
+ version: z.literal("v1").default("v1"),
484
+ id: z.string()
485
+ }),
486
+ READY_TO_DISPOSE: z.undefined(),
487
+ WAIT_FOR_DURATION: z.object({
488
+ version: z.literal("v1").default("v1"),
489
+ ms: z.number()
490
+ }),
491
+ WAIT_FOR_TASK: z.object({
492
+ version: z.literal("v1").default("v1"),
493
+ id: z.string()
494
+ }),
495
+ WAIT_FOR_BATCH: z.object({
496
+ version: z.literal("v1").default("v1"),
497
+ id: z.string(),
498
+ runs: z.string().array()
499
+ }),
500
+ UNCAUGHT_EXCEPTION: UncaughtExceptionMessage
501
+ };
502
+ var ProdChildToWorkerMessages = {
503
+ TASK_RUN_COMPLETED: {
504
+ message: z.object({
505
+ version: z.literal("v1").default("v1"),
506
+ execution: TaskRunExecution,
507
+ result: TaskRunExecutionResult
508
+ })
509
+ },
510
+ TASKS_READY: {
511
+ message: z.object({
512
+ version: z.literal("v1").default("v1"),
513
+ tasks: TaskMetadataWithFilePath.array()
514
+ })
515
+ },
516
+ TASKS_FAILED_TO_PARSE: {
517
+ message: TaskMetadataFailedToParseData
518
+ },
519
+ TASK_HEARTBEAT: {
520
+ message: z.object({
521
+ version: z.literal("v1").default("v1"),
522
+ id: z.string()
523
+ })
524
+ },
525
+ READY_TO_DISPOSE: {
526
+ message: z.undefined()
527
+ },
528
+ READY_FOR_CHECKPOINT: {
529
+ message: z.object({
530
+ version: z.literal("v1").default("v1")
531
+ })
532
+ },
533
+ CANCEL_CHECKPOINT: {
534
+ message: z.object({
535
+ version: z.literal("v1").default("v1")
536
+ })
537
+ },
538
+ WAIT_FOR_DURATION: {
539
+ message: z.object({
540
+ version: z.literal("v1").default("v1"),
541
+ ms: z.number(),
542
+ now: z.number()
543
+ }),
544
+ callback: z.object({
545
+ willCheckpointAndRestore: z.boolean()
546
+ })
547
+ },
548
+ WAIT_FOR_TASK: {
549
+ message: z.object({
550
+ version: z.literal("v1").default("v1"),
551
+ friendlyId: z.string()
552
+ })
553
+ },
554
+ WAIT_FOR_BATCH: {
555
+ message: z.object({
556
+ version: z.literal("v1").default("v1"),
557
+ batchFriendlyId: z.string(),
558
+ runFriendlyIds: z.string().array()
559
+ })
560
+ },
561
+ UNCAUGHT_EXCEPTION: {
562
+ message: UncaughtExceptionMessage
563
+ }
564
+ };
565
+ var ProdWorkerToChildMessages = {
566
+ EXECUTE_TASK_RUN: {
567
+ message: z.object({
568
+ version: z.literal("v1").default("v1"),
569
+ execution: TaskRunExecution,
570
+ traceContext: z.record(z.unknown()),
571
+ metadata: BackgroundWorkerProperties
572
+ })
573
+ },
574
+ TASK_RUN_COMPLETED_NOTIFICATION: {
575
+ message: z.object({
576
+ version: z.literal("v1").default("v1"),
577
+ completion: TaskRunExecutionResult,
578
+ execution: TaskRunExecution
579
+ })
580
+ },
581
+ CLEANUP: {
582
+ message: z.object({
583
+ version: z.literal("v1").default("v1"),
584
+ flush: z.boolean().default(false),
585
+ kill: z.boolean().default(true)
586
+ }),
587
+ callback: z.void()
588
+ },
589
+ WAIT_COMPLETED_NOTIFICATION: {
590
+ message: z.object({
591
+ version: z.literal("v1").default("v1")
592
+ })
593
+ }
594
+ };
595
+
596
+ // src/v3/schemas/resources.ts
597
+ var TaskResource = z.object({
598
+ id: z.string(),
599
+ filePath: z.string(),
600
+ exportName: z.string(),
601
+ queue: QueueOptions.optional(),
602
+ retry: RetryOptions.optional(),
603
+ machine: Machine.partial().optional()
604
+ });
605
+ var BackgroundWorkerMetadata = z.object({
606
+ packageVersion: z.string(),
607
+ contentHash: z.string(),
608
+ cliPackageVersion: z.string().optional(),
609
+ tasks: z.array(TaskResource)
610
+ });
611
+ var ImageDetailsMetadata = z.object({
612
+ contentHash: z.string(),
613
+ imageTag: z.string()
614
+ });
615
+
616
+ // src/v3/schemas/api.ts
617
+ var WhoAmIResponseSchema = z.object({
618
+ userId: z.string(),
619
+ email: z.string().email(),
620
+ dashboardUrl: z.string()
621
+ });
622
+ var GetProjectResponseBody = z.object({
623
+ id: z.string(),
624
+ externalRef: z.string(),
625
+ name: z.string(),
626
+ slug: z.string(),
627
+ createdAt: z.coerce.date(),
628
+ organization: z.object({
629
+ id: z.string(),
630
+ title: z.string(),
631
+ slug: z.string(),
632
+ createdAt: z.coerce.date()
633
+ })
634
+ });
635
+ var GetProjectsResponseBody = z.array(GetProjectResponseBody);
636
+ var GetProjectEnvResponse = z.object({
637
+ apiKey: z.string(),
638
+ name: z.string(),
639
+ apiUrl: z.string()
640
+ });
641
+ var CreateBackgroundWorkerRequestBody = z.object({
642
+ localOnly: z.boolean(),
643
+ metadata: BackgroundWorkerMetadata
644
+ });
645
+ var CreateBackgroundWorkerResponse = z.object({
646
+ id: z.string(),
647
+ version: z.string(),
648
+ contentHash: z.string()
649
+ });
650
+ var TriggerTaskRequestBody = z.object({
651
+ payload: z.any(),
652
+ context: z.any(),
653
+ options: z.object({
654
+ dependentAttempt: z.string().optional(),
655
+ dependentBatch: z.string().optional(),
656
+ lockToVersion: z.string().optional(),
657
+ queue: QueueOptions.optional(),
658
+ concurrencyKey: z.string().optional(),
659
+ test: z.boolean().optional()
660
+ }).optional()
661
+ });
662
+ var TriggerTaskResponse = z.object({
663
+ id: z.string()
664
+ });
665
+ var BatchTriggerTaskRequestBody = z.object({
666
+ items: TriggerTaskRequestBody.array(),
667
+ dependentAttempt: z.string().optional()
668
+ });
669
+ var BatchTriggerTaskResponse = z.object({
670
+ batchId: z.string(),
671
+ runs: z.string().array()
672
+ });
673
+ var GetBatchResponseBody = z.object({
674
+ id: z.string(),
675
+ items: z.array(z.object({
676
+ id: z.string(),
677
+ taskRunId: z.string(),
678
+ status: z.enum([
679
+ "PENDING",
680
+ "CANCELED",
681
+ "COMPLETED",
682
+ "FAILED"
683
+ ])
684
+ }))
685
+ });
686
+ var GetEnvironmentVariablesResponseBody = z.object({
687
+ variables: z.record(z.string())
688
+ });
689
+ var StartDeploymentIndexingRequestBody = z.object({
690
+ imageReference: z.string()
691
+ });
692
+ var StartDeploymentIndexingResponseBody = z.object({
693
+ id: z.string(),
694
+ contentHash: z.string()
695
+ });
696
+ var ExternalBuildData = z.object({
697
+ buildId: z.string(),
698
+ buildToken: z.string(),
699
+ projectId: z.string()
700
+ });
701
+ var InitializeDeploymentResponseBody = z.object({
702
+ id: z.string(),
703
+ contentHash: z.string(),
704
+ shortCode: z.string(),
705
+ version: z.string(),
706
+ imageTag: z.string(),
707
+ externalBuildData: ExternalBuildData.optional().nullable(),
708
+ registryHost: z.string().optional()
709
+ });
710
+ var InitializeDeploymentRequestBody = z.object({
711
+ contentHash: z.string(),
712
+ userId: z.string().optional()
713
+ });
714
+ var DeploymentErrorData = z.object({
715
+ name: z.string(),
716
+ message: z.string(),
717
+ stack: z.string().optional()
718
+ });
719
+ var GetDeploymentResponseBody = z.object({
720
+ id: z.string(),
721
+ status: z.enum([
722
+ "PENDING",
723
+ "BUILDING",
724
+ "DEPLOYING",
725
+ "DEPLOYED",
726
+ "FAILED",
727
+ "CANCELED",
728
+ "TIMED_OUT"
729
+ ]),
730
+ contentHash: z.string(),
731
+ shortCode: z.string(),
732
+ version: z.string(),
733
+ imageReference: z.string().optional(),
734
+ errorData: DeploymentErrorData.optional().nullable(),
735
+ worker: z.object({
736
+ id: z.string(),
737
+ version: z.string(),
738
+ tasks: z.array(z.object({
739
+ id: z.string(),
740
+ slug: z.string(),
741
+ filePath: z.string(),
742
+ exportName: z.string()
743
+ }))
744
+ }).optional()
745
+ });
746
+ var CreateUploadPayloadUrlResponseBody = z.object({
747
+ presignedUrl: z.string()
748
+ });
749
+ var PostStartCauses = z.enum([
750
+ "index",
751
+ "create",
752
+ "restore"
753
+ ]);
754
+ var PreStopCauses = z.enum([
755
+ "terminate"
756
+ ]);
757
+ var RegexSchema = z.custom((val) => {
758
+ try {
759
+ return typeof val.test === "function";
760
+ } catch {
761
+ return false;
762
+ }
763
+ });
764
+ var Config = z.object({
765
+ project: z.string(),
766
+ triggerDirectories: z.string().array().optional(),
767
+ triggerUrl: z.string().optional(),
768
+ projectDir: z.string().optional(),
769
+ tsconfigPath: z.string().optional(),
770
+ retries: z.object({
771
+ enabledInDev: z.boolean().default(true),
772
+ default: RetryOptions.optional()
773
+ }).optional(),
774
+ additionalPackages: z.string().array().optional(),
775
+ additionalFiles: z.string().array().optional(),
776
+ dependenciesToBundle: z.array(z.union([
777
+ z.string(),
778
+ RegexSchema
779
+ ])).optional(),
780
+ logLevel: z.string().optional()
781
+ });
782
+ var WaitReason = z.enum([
783
+ "WAIT_FOR_DURATION",
784
+ "WAIT_FOR_TASK",
785
+ "WAIT_FOR_BATCH"
786
+ ]);
787
+ var ProviderToPlatformMessages = {
788
+ LOG: {
789
+ message: z.object({
790
+ version: z.literal("v1").default("v1"),
791
+ data: z.string()
792
+ })
793
+ },
794
+ LOG_WITH_ACK: {
795
+ message: z.object({
796
+ version: z.literal("v1").default("v1"),
797
+ data: z.string()
798
+ }),
799
+ callback: z.object({
800
+ status: z.literal("ok")
801
+ })
802
+ },
803
+ WORKER_CRASHED: {
804
+ message: z.object({
805
+ version: z.literal("v1").default("v1"),
806
+ runId: z.string(),
807
+ reason: z.string().optional(),
808
+ exitCode: z.number().optional(),
809
+ message: z.string().optional(),
810
+ logs: z.string().optional()
811
+ })
812
+ },
813
+ INDEXING_FAILED: {
814
+ message: z.object({
815
+ version: z.literal("v1").default("v1"),
816
+ deploymentId: z.string(),
817
+ error: z.object({
818
+ name: z.string(),
819
+ message: z.string(),
820
+ stack: z.string().optional()
821
+ })
822
+ })
823
+ }
824
+ };
825
+ var PlatformToProviderMessages = {
826
+ HEALTH: {
827
+ message: z.object({
828
+ version: z.literal("v1").default("v1")
829
+ }),
830
+ callback: z.object({
831
+ status: z.literal("ok")
832
+ })
833
+ },
834
+ INDEX: {
835
+ message: z.object({
836
+ version: z.literal("v1").default("v1"),
837
+ imageTag: z.string(),
838
+ shortCode: z.string(),
839
+ apiKey: z.string(),
840
+ apiUrl: z.string(),
841
+ // identifiers
842
+ envId: z.string(),
843
+ envType: EnvironmentType,
844
+ orgId: z.string(),
845
+ projectId: z.string(),
846
+ deploymentId: z.string()
847
+ }),
848
+ callback: z.discriminatedUnion("success", [
849
+ z.object({
850
+ success: z.literal(false),
851
+ error: z.object({
852
+ name: z.string(),
853
+ message: z.string(),
854
+ stack: z.string().optional()
855
+ })
856
+ }),
857
+ z.object({
858
+ success: z.literal(true)
859
+ })
860
+ ])
861
+ },
862
+ // TODO: this should be a shared queue message instead
863
+ RESTORE: {
864
+ message: z.object({
865
+ version: z.literal("v1").default("v1"),
866
+ type: z.enum([
867
+ "DOCKER",
868
+ "KUBERNETES"
869
+ ]),
870
+ location: z.string(),
871
+ reason: z.string().optional(),
872
+ imageRef: z.string(),
873
+ machine: Machine,
874
+ // identifiers
875
+ checkpointId: z.string(),
876
+ envId: z.string(),
877
+ envType: EnvironmentType,
878
+ orgId: z.string(),
879
+ projectId: z.string(),
880
+ runId: z.string()
881
+ })
882
+ },
883
+ DELETE: {
884
+ message: z.object({
885
+ version: z.literal("v1").default("v1"),
886
+ name: z.string()
887
+ }),
888
+ callback: z.object({
889
+ message: z.string()
890
+ })
891
+ },
892
+ GET: {
893
+ message: z.object({
894
+ version: z.literal("v1").default("v1"),
895
+ name: z.string()
896
+ })
897
+ }
898
+ };
899
+ var CoordinatorToPlatformMessages = {
900
+ LOG: {
901
+ message: z.object({
902
+ version: z.literal("v1").default("v1"),
903
+ metadata: z.any(),
904
+ text: z.string()
905
+ })
906
+ },
907
+ CREATE_WORKER: {
908
+ message: z.object({
909
+ version: z.literal("v1").default("v1"),
910
+ projectRef: z.string(),
911
+ envId: z.string(),
912
+ deploymentId: z.string(),
913
+ metadata: z.object({
914
+ cliPackageVersion: z.string().optional(),
915
+ contentHash: z.string(),
916
+ packageVersion: z.string(),
917
+ tasks: TaskResource.array()
918
+ })
919
+ }),
920
+ callback: z.discriminatedUnion("success", [
921
+ z.object({
922
+ success: z.literal(false)
923
+ }),
924
+ z.object({
925
+ success: z.literal(true)
926
+ })
927
+ ])
928
+ },
929
+ READY_FOR_EXECUTION: {
930
+ message: z.object({
931
+ version: z.literal("v1").default("v1"),
932
+ runId: z.string(),
933
+ totalCompletions: z.number()
934
+ }),
935
+ callback: z.discriminatedUnion("success", [
936
+ z.object({
937
+ success: z.literal(false)
938
+ }),
939
+ z.object({
940
+ success: z.literal(true),
941
+ payload: ProdTaskRunExecutionPayload
942
+ })
943
+ ])
944
+ },
945
+ READY_FOR_RESUME: {
946
+ message: z.object({
947
+ version: z.literal("v1").default("v1"),
948
+ attemptFriendlyId: z.string(),
949
+ type: WaitReason
950
+ })
951
+ },
952
+ TASK_RUN_COMPLETED: {
953
+ message: z.object({
954
+ version: z.literal("v1").default("v1"),
955
+ execution: ProdTaskRunExecution,
956
+ completion: TaskRunExecutionResult,
957
+ checkpoint: z.object({
958
+ docker: z.boolean(),
959
+ location: z.string()
960
+ }).optional()
961
+ })
962
+ },
963
+ TASK_HEARTBEAT: {
964
+ message: z.object({
965
+ version: z.literal("v1").default("v1"),
966
+ attemptFriendlyId: z.string()
967
+ })
968
+ },
969
+ CHECKPOINT_CREATED: {
970
+ message: z.object({
971
+ version: z.literal("v1").default("v1"),
972
+ attemptFriendlyId: z.string(),
973
+ docker: z.boolean(),
974
+ location: z.string(),
975
+ reason: z.discriminatedUnion("type", [
976
+ z.object({
977
+ type: z.literal("WAIT_FOR_DURATION"),
978
+ ms: z.number(),
979
+ now: z.number()
980
+ }),
981
+ z.object({
982
+ type: z.literal("WAIT_FOR_BATCH"),
983
+ batchFriendlyId: z.string(),
984
+ runFriendlyIds: z.string().array()
985
+ }),
986
+ z.object({
987
+ type: z.literal("WAIT_FOR_TASK"),
988
+ friendlyId: z.string()
989
+ }),
990
+ z.object({
991
+ type: z.literal("RETRYING_AFTER_FAILURE"),
992
+ attemptNumber: z.number()
993
+ })
994
+ ])
995
+ })
996
+ },
997
+ INDEXING_FAILED: {
998
+ message: z.object({
999
+ version: z.literal("v1").default("v1"),
1000
+ deploymentId: z.string(),
1001
+ error: z.object({
1002
+ name: z.string(),
1003
+ message: z.string(),
1004
+ stack: z.string().optional()
1005
+ })
1006
+ })
1007
+ }
1008
+ };
1009
+ var PlatformToCoordinatorMessages = {
1010
+ RESUME_AFTER_DEPENDENCY: {
1011
+ message: z.object({
1012
+ version: z.literal("v1").default("v1"),
1013
+ runId: z.string(),
1014
+ attemptId: z.string(),
1015
+ attemptFriendlyId: z.string(),
1016
+ completions: TaskRunExecutionResult.array(),
1017
+ executions: TaskRunExecution.array()
1018
+ })
1019
+ },
1020
+ RESUME_AFTER_DURATION: {
1021
+ message: z.object({
1022
+ version: z.literal("v1").default("v1"),
1023
+ attemptId: z.string(),
1024
+ attemptFriendlyId: z.string()
1025
+ })
1026
+ },
1027
+ REQUEST_ATTEMPT_CANCELLATION: {
1028
+ message: z.object({
1029
+ version: z.literal("v1").default("v1"),
1030
+ attemptId: z.string(),
1031
+ attemptFriendlyId: z.string()
1032
+ })
1033
+ },
1034
+ READY_FOR_RETRY: {
1035
+ message: z.object({
1036
+ version: z.literal("v1").default("v1"),
1037
+ runId: z.string()
1038
+ })
1039
+ }
1040
+ };
1041
+ var ClientToSharedQueueMessages = {
1042
+ READY_FOR_TASKS: {
1043
+ message: z.object({
1044
+ version: z.literal("v1").default("v1"),
1045
+ backgroundWorkerId: z.string()
1046
+ })
1047
+ },
1048
+ BACKGROUND_WORKER_DEPRECATED: {
1049
+ message: z.object({
1050
+ version: z.literal("v1").default("v1"),
1051
+ backgroundWorkerId: z.string()
1052
+ })
1053
+ },
1054
+ BACKGROUND_WORKER_MESSAGE: {
1055
+ message: z.object({
1056
+ version: z.literal("v1").default("v1"),
1057
+ backgroundWorkerId: z.string(),
1058
+ data: BackgroundWorkerClientMessages
1059
+ })
1060
+ }
1061
+ };
1062
+ var SharedQueueToClientMessages = {
1063
+ SERVER_READY: {
1064
+ message: z.object({
1065
+ version: z.literal("v1").default("v1"),
1066
+ id: z.string()
1067
+ })
1068
+ },
1069
+ BACKGROUND_WORKER_MESSAGE: {
1070
+ message: z.object({
1071
+ version: z.literal("v1").default("v1"),
1072
+ backgroundWorkerId: z.string(),
1073
+ data: BackgroundWorkerServerMessages
1074
+ })
1075
+ }
1076
+ };
1077
+ var ProdWorkerToCoordinatorMessages = {
1078
+ LOG: {
1079
+ message: z.object({
1080
+ version: z.literal("v1").default("v1"),
1081
+ text: z.string()
1082
+ }),
1083
+ callback: z.void()
1084
+ },
1085
+ INDEX_TASKS: {
1086
+ message: z.object({
1087
+ version: z.literal("v1").default("v1"),
1088
+ deploymentId: z.string(),
1089
+ tasks: TaskResource.array(),
1090
+ packageVersion: z.string()
1091
+ }),
1092
+ callback: z.discriminatedUnion("success", [
1093
+ z.object({
1094
+ success: z.literal(false)
1095
+ }),
1096
+ z.object({
1097
+ success: z.literal(true)
1098
+ })
1099
+ ])
1100
+ },
1101
+ READY_FOR_EXECUTION: {
1102
+ message: z.object({
1103
+ version: z.literal("v1").default("v1"),
1104
+ runId: z.string(),
1105
+ totalCompletions: z.number()
1106
+ })
1107
+ },
1108
+ READY_FOR_RESUME: {
1109
+ message: z.object({
1110
+ version: z.literal("v1").default("v1"),
1111
+ attemptFriendlyId: z.string(),
1112
+ type: WaitReason
1113
+ })
1114
+ },
1115
+ READY_FOR_CHECKPOINT: {
1116
+ message: z.object({
1117
+ version: z.literal("v1").default("v1")
1118
+ })
1119
+ },
1120
+ CANCEL_CHECKPOINT: {
1121
+ message: z.object({
1122
+ version: z.literal("v1").default("v1")
1123
+ })
1124
+ },
1125
+ TASK_HEARTBEAT: {
1126
+ message: z.object({
1127
+ version: z.literal("v1").default("v1"),
1128
+ attemptFriendlyId: z.string()
1129
+ })
1130
+ },
1131
+ TASK_RUN_COMPLETED: {
1132
+ message: z.object({
1133
+ version: z.literal("v1").default("v1"),
1134
+ execution: ProdTaskRunExecution,
1135
+ completion: TaskRunExecutionResult
1136
+ }),
1137
+ callback: z.object({
1138
+ willCheckpointAndRestore: z.boolean(),
1139
+ shouldExit: z.boolean()
1140
+ })
1141
+ },
1142
+ WAIT_FOR_DURATION: {
1143
+ message: z.object({
1144
+ version: z.literal("v1").default("v1"),
1145
+ ms: z.number(),
1146
+ now: z.number(),
1147
+ attemptFriendlyId: z.string()
1148
+ }),
1149
+ callback: z.object({
1150
+ willCheckpointAndRestore: z.boolean()
1151
+ })
1152
+ },
1153
+ WAIT_FOR_TASK: {
1154
+ message: z.object({
1155
+ version: z.literal("v1").default("v1"),
1156
+ friendlyId: z.string(),
1157
+ // This is the attempt that is waiting
1158
+ attemptFriendlyId: z.string()
1159
+ }),
1160
+ callback: z.object({
1161
+ willCheckpointAndRestore: z.boolean()
1162
+ })
1163
+ },
1164
+ WAIT_FOR_BATCH: {
1165
+ message: z.object({
1166
+ version: z.literal("v1").default("v1"),
1167
+ batchFriendlyId: z.string(),
1168
+ runFriendlyIds: z.string().array(),
1169
+ // This is the attempt that is waiting
1170
+ attemptFriendlyId: z.string()
1171
+ }),
1172
+ callback: z.object({
1173
+ willCheckpointAndRestore: z.boolean()
1174
+ })
1175
+ },
1176
+ INDEXING_FAILED: {
1177
+ message: z.object({
1178
+ version: z.literal("v1").default("v1"),
1179
+ deploymentId: z.string(),
1180
+ error: z.object({
1181
+ name: z.string(),
1182
+ message: z.string(),
1183
+ stack: z.string().optional()
1184
+ })
1185
+ })
1186
+ }
1187
+ };
1188
+ var CoordinatorToProdWorkerMessages = {
1189
+ RESUME_AFTER_DEPENDENCY: {
1190
+ message: z.object({
1191
+ version: z.literal("v1").default("v1"),
1192
+ attemptId: z.string(),
1193
+ completions: TaskRunExecutionResult.array(),
1194
+ executions: TaskRunExecution.array()
1195
+ })
1196
+ },
1197
+ RESUME_AFTER_DURATION: {
1198
+ message: z.object({
1199
+ version: z.literal("v1").default("v1"),
1200
+ attemptId: z.string()
1201
+ })
1202
+ },
1203
+ EXECUTE_TASK_RUN: {
1204
+ message: z.object({
1205
+ version: z.literal("v1").default("v1"),
1206
+ executionPayload: ProdTaskRunExecutionPayload
1207
+ })
1208
+ },
1209
+ REQUEST_ATTEMPT_CANCELLATION: {
1210
+ message: z.object({
1211
+ version: z.literal("v1").default("v1"),
1212
+ attemptId: z.string()
1213
+ })
1214
+ },
1215
+ REQUEST_EXIT: {
1216
+ message: z.object({
1217
+ version: z.literal("v1").default("v1")
1218
+ })
1219
+ },
1220
+ READY_FOR_RETRY: {
1221
+ message: z.object({
1222
+ version: z.literal("v1").default("v1"),
1223
+ runId: z.string()
1224
+ })
1225
+ }
277
1226
  };
1227
+ var ProdWorkerSocketData = z.object({
1228
+ contentHash: z.string(),
1229
+ projectRef: z.string(),
1230
+ envId: z.string(),
1231
+ runId: z.string(),
1232
+ attemptFriendlyId: z.string().optional(),
1233
+ podName: z.string(),
1234
+ deploymentId: z.string(),
1235
+ deploymentVersion: z.string()
1236
+ });
1237
+ var PRIMARY_VARIANT = "primary";
1238
+ var Variant = z.enum([
1239
+ PRIMARY_VARIANT
1240
+ ]);
1241
+ var AccessoryItem = z.object({
1242
+ text: z.string(),
1243
+ variant: z.string().optional(),
1244
+ url: z.string().optional()
1245
+ });
1246
+ var Accessory = z.object({
1247
+ items: z.array(AccessoryItem),
1248
+ style: z.enum([
1249
+ "codepath"
1250
+ ]).optional()
1251
+ });
1252
+ var TaskEventStyle = z.object({
1253
+ icon: z.string().optional(),
1254
+ variant: Variant.optional(),
1255
+ accessory: Accessory.optional()
1256
+ }).default({
1257
+ icon: void 0,
1258
+ variant: void 0
1259
+ });
1260
+ var stringPatternMatchers = [
1261
+ z.object({
1262
+ $endsWith: z.string()
1263
+ }),
1264
+ z.object({
1265
+ $startsWith: z.string()
1266
+ }),
1267
+ z.object({
1268
+ $ignoreCaseEquals: z.string()
1269
+ })
1270
+ ];
1271
+ var EventMatcher = z.union([
1272
+ /** Match against a string */
1273
+ z.array(z.string()),
1274
+ /** Match against a number */
1275
+ z.array(z.number()),
1276
+ /** Match against a boolean */
1277
+ z.array(z.boolean()),
1278
+ z.array(z.union([
1279
+ ...stringPatternMatchers,
1280
+ z.object({
1281
+ $exists: z.boolean()
1282
+ }),
1283
+ z.object({
1284
+ $isNull: z.boolean()
1285
+ }),
1286
+ z.object({
1287
+ $anythingBut: z.union([
1288
+ z.string(),
1289
+ z.number(),
1290
+ z.boolean()
1291
+ ])
1292
+ }),
1293
+ z.object({
1294
+ $anythingBut: z.union([
1295
+ z.array(z.string()),
1296
+ z.array(z.number()),
1297
+ z.array(z.boolean())
1298
+ ])
1299
+ }),
1300
+ z.object({
1301
+ $gt: z.number()
1302
+ }),
1303
+ z.object({
1304
+ $lt: z.number()
1305
+ }),
1306
+ z.object({
1307
+ $gte: z.number()
1308
+ }),
1309
+ z.object({
1310
+ $lte: z.number()
1311
+ }),
1312
+ z.object({
1313
+ $between: z.tuple([
1314
+ z.number(),
1315
+ z.number()
1316
+ ])
1317
+ }),
1318
+ z.object({
1319
+ $includes: z.union([
1320
+ z.string(),
1321
+ z.number(),
1322
+ z.boolean()
1323
+ ])
1324
+ }),
1325
+ z.object({
1326
+ $not: z.union([
1327
+ z.string(),
1328
+ z.number(),
1329
+ z.boolean()
1330
+ ])
1331
+ })
1332
+ ]))
1333
+ ]);
1334
+ var EventFilter = z.lazy(() => z.record(z.union([
1335
+ EventMatcher,
1336
+ EventFilter
1337
+ ])));
1338
+
1339
+ // src/v3/schemas/fetch.ts
1340
+ var FetchRetryHeadersStrategy = z.object({
1341
+ /** The `headers` strategy retries the request using info from the response headers. */
1342
+ strategy: z.literal("headers"),
1343
+ /** The header to use to determine the maximum number of times to retry the request. */
1344
+ limitHeader: z.string(),
1345
+ /** The header to use to determine the number of remaining retries. */
1346
+ remainingHeader: z.string(),
1347
+ /** The header to use to determine the time when the number of remaining retries will be reset. */
1348
+ resetHeader: z.string(),
1349
+ /** The event filter to use to determine if the request should be retried. */
1350
+ bodyFilter: EventFilter.optional(),
1351
+ /** The format of the `resetHeader` value. */
1352
+ resetFormat: z.enum([
1353
+ "unix_timestamp",
1354
+ "unix_timestamp_in_ms",
1355
+ "iso_8601",
1356
+ "iso_8601_duration_openai_variant"
1357
+ ]).default("unix_timestamp").optional()
1358
+ });
1359
+ var FetchRetryBackoffStrategy = RetryOptions.extend({
1360
+ /** The `backoff` strategy retries the request with an exponential backoff. */
1361
+ strategy: z.literal("backoff"),
1362
+ /** The event filter to use to determine if the request should be retried. */
1363
+ bodyFilter: EventFilter.optional()
1364
+ });
1365
+ var FetchRetryStrategy = z.discriminatedUnion("strategy", [
1366
+ FetchRetryHeadersStrategy,
1367
+ FetchRetryBackoffStrategy
1368
+ ]);
1369
+ var FetchRetryByStatusOptions = z.record(z.string(), FetchRetryStrategy);
1370
+ var FetchTimeoutOptions = z.object({
1371
+ /** The maximum time to wait for the request to complete. */
1372
+ durationInMs: z.number().optional(),
1373
+ retry: RetryOptions.optional()
1374
+ });
1375
+ var FetchRetryOptions = z.object({
1376
+ /** The retrying strategy for specific status codes. */
1377
+ byStatus: FetchRetryByStatusOptions.optional(),
1378
+ /** The timeout options for the request. */
1379
+ timeout: RetryOptions.optional(),
1380
+ /**
1381
+ * The retrying strategy for connection errors.
1382
+ */
1383
+ connectionError: RetryOptions.optional()
1384
+ });
1385
+ var ExceptionEventProperties = z.object({
1386
+ type: z.string().optional(),
1387
+ message: z.string().optional(),
1388
+ stacktrace: z.string().optional()
1389
+ });
1390
+ var ExceptionSpanEvent = z.object({
1391
+ name: z.literal("exception"),
1392
+ time: z.coerce.date(),
1393
+ properties: z.object({
1394
+ exception: ExceptionEventProperties
1395
+ })
1396
+ });
1397
+ var CancellationSpanEvent = z.object({
1398
+ name: z.literal("cancellation"),
1399
+ time: z.coerce.date(),
1400
+ properties: z.object({
1401
+ reason: z.string()
1402
+ })
1403
+ });
1404
+ var OtherSpanEvent = z.object({
1405
+ name: z.string(),
1406
+ time: z.coerce.date(),
1407
+ properties: z.record(z.unknown())
1408
+ });
1409
+ var SpanEvent = z.union([
1410
+ ExceptionSpanEvent,
1411
+ CancellationSpanEvent,
1412
+ OtherSpanEvent
1413
+ ]);
1414
+ var SpanEvents = z.array(SpanEvent);
1415
+ function isExceptionSpanEvent(event) {
1416
+ return event.name === "exception";
1417
+ }
1418
+ __name(isExceptionSpanEvent, "isExceptionSpanEvent");
1419
+ function isCancellationSpanEvent(event) {
1420
+ return event.name === "cancellation";
1421
+ }
1422
+ __name(isCancellationSpanEvent, "isCancellationSpanEvent");
1423
+ var SpanMessagingEvent = z.object({
1424
+ system: z.string().optional(),
1425
+ client_id: z.string().optional(),
1426
+ operation: z.enum([
1427
+ "publish",
1428
+ "create",
1429
+ "receive",
1430
+ "deliver"
1431
+ ]),
1432
+ message: z.any(),
1433
+ destination: z.string().optional()
1434
+ });
278
1435
 
279
1436
  // src/zodfetch.ts
280
- async function zodfetch(schema, url, requestInit) {
1437
+ async function zodfetch(schema, url, requestInit, options) {
1438
+ return await _doZodFetch(schema, url, requestInit, options);
1439
+ }
1440
+ __name(zodfetch, "zodfetch");
1441
+ async function _doZodFetch(schema, url, requestInit, options, attempt = 1) {
281
1442
  try {
282
1443
  const response = await fetch(url, requestInit);
283
1444
  if ((!requestInit || requestInit.method === "GET") && response.status === 404) {
@@ -286,7 +1447,7 @@ async function zodfetch(schema, url, requestInit) {
286
1447
  error: `404: ${response.statusText}`
287
1448
  };
288
1449
  }
289
- if (response.status >= 400 && response.status < 500) {
1450
+ if (response.status >= 400 && response.status < 500 && response.status !== 429) {
290
1451
  const body = await response.json();
291
1452
  if (!body.error) {
292
1453
  return {
@@ -299,6 +1460,27 @@ async function zodfetch(schema, url, requestInit) {
299
1460
  error: body.error
300
1461
  };
301
1462
  }
1463
+ if (response.status === 429 || response.status >= 500) {
1464
+ if (!options?.retry) {
1465
+ return {
1466
+ ok: false,
1467
+ error: `Failed to fetch ${url}, got status code ${response.status}`
1468
+ };
1469
+ }
1470
+ const retry = {
1471
+ ...defaultRetryOptions,
1472
+ ...options.retry
1473
+ };
1474
+ if (attempt > retry.maxAttempts) {
1475
+ return {
1476
+ ok: false,
1477
+ error: `Failed to fetch ${url}, got status code ${response.status}`
1478
+ };
1479
+ }
1480
+ const delay = calculateNextRetryDelay(retry, attempt);
1481
+ await new Promise((resolve) => setTimeout(resolve, delay));
1482
+ return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1483
+ }
302
1484
  if (response.status !== 200) {
303
1485
  return {
304
1486
  ok: false,
@@ -324,31 +1506,45 @@ async function zodfetch(schema, url, requestInit) {
324
1506
  error: parsedResult.error.message
325
1507
  };
326
1508
  } catch (error) {
1509
+ if (options?.retry) {
1510
+ const retry = {
1511
+ ...defaultRetryOptions,
1512
+ ...options.retry
1513
+ };
1514
+ if (attempt > retry.maxAttempts) {
1515
+ return {
1516
+ ok: false,
1517
+ error: error instanceof Error ? error.message : JSON.stringify(error)
1518
+ };
1519
+ }
1520
+ const delay = calculateNextRetryDelay(retry, attempt);
1521
+ await new Promise((resolve) => setTimeout(resolve, delay));
1522
+ return await _doZodFetch(schema, url, requestInit, options, attempt + 1);
1523
+ }
327
1524
  return {
328
1525
  ok: false,
329
1526
  error: error instanceof Error ? error.message : JSON.stringify(error)
330
1527
  };
331
1528
  }
332
1529
  }
333
- __name(zodfetch, "zodfetch");
334
- var _SafeAsyncLocalStorage = class _SafeAsyncLocalStorage {
335
- constructor() {
336
- this.storage = new AsyncLocalStorage();
1530
+ __name(_doZodFetch, "_doZodFetch");
1531
+
1532
+ // src/v3/utils/flattenAttributes.ts
1533
+ function flattenAttributes(obj, prefix) {
1534
+ const result = {};
1535
+ if (!obj) {
1536
+ return result;
337
1537
  }
338
- runWith(context3, fn) {
339
- return this.storage.run(context3, fn);
1538
+ if (typeof obj === "string") {
1539
+ result[prefix || ""] = obj;
1540
+ return result;
340
1541
  }
341
- getStore() {
342
- return this.storage.getStore();
1542
+ if (typeof obj === "number") {
1543
+ result[prefix || ""] = obj;
1544
+ return result;
343
1545
  }
344
- };
345
- __name(_SafeAsyncLocalStorage, "SafeAsyncLocalStorage");
346
- var SafeAsyncLocalStorage = _SafeAsyncLocalStorage;
347
-
348
- // src/v3/utils/flattenAttributes.ts
349
- function flattenAttributes(obj, prefix) {
350
- const result = {};
351
- if (obj == null) {
1546
+ if (typeof obj === "boolean") {
1547
+ result[prefix || ""] = obj;
352
1548
  return result;
353
1549
  }
354
1550
  for (const [key, value] of Object.entries(obj)) {
@@ -356,9 +1552,9 @@ function flattenAttributes(obj, prefix) {
356
1552
  if (Array.isArray(value)) {
357
1553
  for (let i = 0; i < value.length; i++) {
358
1554
  if (typeof value[i] === "object" && value[i] !== null) {
359
- Object.assign(result, flattenAttributes(value[i], `${newPrefix}.${i}`));
1555
+ Object.assign(result, flattenAttributes(value[i], `${newPrefix}.[${i}]`));
360
1556
  } else {
361
- result[`${newPrefix}.${i}`] = value[i];
1557
+ result[`${newPrefix}.[${i}]`] = value[i];
362
1558
  }
363
1559
  }
364
1560
  } else if (isRecord(value)) {
@@ -376,6 +1572,115 @@ function isRecord(value) {
376
1572
  return value !== null && typeof value === "object" && !Array.isArray(value);
377
1573
  }
378
1574
  __name(isRecord, "isRecord");
1575
+ function unflattenAttributes(obj) {
1576
+ if (typeof obj !== "object" || obj === null || Array.isArray(obj)) {
1577
+ return obj;
1578
+ }
1579
+ const result = {};
1580
+ for (const [key, value] of Object.entries(obj)) {
1581
+ const parts = key.split(".").reduce((acc, part) => {
1582
+ if (detectIsArrayIndex(part)) {
1583
+ acc.push(part);
1584
+ } else {
1585
+ acc.push(...part.split(/\.\[(.*?)\]/).filter(Boolean));
1586
+ }
1587
+ return acc;
1588
+ }, []);
1589
+ let current = result;
1590
+ for (let i = 0; i < parts.length - 1; i++) {
1591
+ const part = parts[i];
1592
+ const isArray = detectIsArrayIndex(part);
1593
+ const cleanPart = isArray ? part.substring(1, part.length - 1) : part;
1594
+ const nextIsArray = detectIsArrayIndex(parts[i + 1]);
1595
+ if (!current[cleanPart]) {
1596
+ current[cleanPart] = nextIsArray ? [] : {};
1597
+ }
1598
+ current = current[cleanPart];
1599
+ }
1600
+ const lastPart = parts[parts.length - 1];
1601
+ const cleanLastPart = detectIsArrayIndex(lastPart) ? parseInt(lastPart.substring(1, lastPart.length - 1), 10) : lastPart;
1602
+ current[cleanLastPart] = value;
1603
+ }
1604
+ return result;
1605
+ }
1606
+ __name(unflattenAttributes, "unflattenAttributes");
1607
+ function detectIsArrayIndex(key) {
1608
+ const match = key.match(/^\[(\d+)\]$/);
1609
+ if (match) {
1610
+ return true;
1611
+ }
1612
+ return false;
1613
+ }
1614
+ __name(detectIsArrayIndex, "detectIsArrayIndex");
1615
+ function primitiveValueOrflattenedAttributes(obj, prefix) {
1616
+ if (typeof obj === "string" || typeof obj === "number" || typeof obj === "boolean" || obj === null || obj === void 0) {
1617
+ return obj;
1618
+ }
1619
+ const attributes = flattenAttributes(obj, prefix);
1620
+ if (prefix !== void 0 && typeof attributes[prefix] !== "undefined" && attributes[prefix] !== null) {
1621
+ return attributes[prefix];
1622
+ }
1623
+ return attributes;
1624
+ }
1625
+ __name(primitiveValueOrflattenedAttributes, "primitiveValueOrflattenedAttributes");
1626
+ var _SafeAsyncLocalStorage = class _SafeAsyncLocalStorage {
1627
+ constructor() {
1628
+ this.storage = new AsyncLocalStorage();
1629
+ }
1630
+ runWith(context3, fn) {
1631
+ return this.storage.run(context3, fn);
1632
+ }
1633
+ getStore() {
1634
+ return this.storage.getStore();
1635
+ }
1636
+ };
1637
+ __name(_SafeAsyncLocalStorage, "SafeAsyncLocalStorage");
1638
+ var SafeAsyncLocalStorage = _SafeAsyncLocalStorage;
1639
+
1640
+ // src/v3/semanticInternalAttributes.ts
1641
+ var SemanticInternalAttributes = {
1642
+ ENVIRONMENT_ID: "ctx.environment.id",
1643
+ ENVIRONMENT_TYPE: "ctx.environment.type",
1644
+ ORGANIZATION_ID: "ctx.organization.id",
1645
+ ORGANIZATION_SLUG: "ctx.organization.slug",
1646
+ ORGANIZATION_NAME: "ctx.organization.name",
1647
+ PROJECT_ID: "ctx.project.id",
1648
+ PROJECT_REF: "ctx.project.ref",
1649
+ PROJECT_NAME: "ctx.project.title",
1650
+ PROJECT_DIR: "project.dir",
1651
+ ATTEMPT_ID: "ctx.attempt.id",
1652
+ ATTEMPT_NUMBER: "ctx.attempt.number",
1653
+ RUN_ID: "ctx.run.id",
1654
+ RUN_IS_TEST: "ctx.run.isTest",
1655
+ BATCH_ID: "ctx.batch.id",
1656
+ TASK_SLUG: "ctx.task.id",
1657
+ TASK_PATH: "ctx.task.filePath",
1658
+ TASK_EXPORT_NAME: "ctx.task.exportName",
1659
+ QUEUE_NAME: "ctx.queue.name",
1660
+ QUEUE_ID: "ctx.queue.id",
1661
+ SPAN_PARTIAL: "$span.partial",
1662
+ SPAN_ID: "$span.span_id",
1663
+ OUTPUT: "$output",
1664
+ OUTPUT_TYPE: "$mime_type_output",
1665
+ STYLE: "$style",
1666
+ STYLE_ICON: "$style.icon",
1667
+ STYLE_VARIANT: "$style.variant",
1668
+ STYLE_ACCESSORY: "$style.accessory",
1669
+ METADATA: "$metadata",
1670
+ TRIGGER: "$trigger",
1671
+ PAYLOAD: "$payload",
1672
+ PAYLOAD_TYPE: "$mime_type_payload",
1673
+ SHOW: "$show",
1674
+ SHOW_ACTIONS: "$show.actions",
1675
+ WORKER_ID: "worker.id",
1676
+ WORKER_VERSION: "worker.version",
1677
+ CLI_VERSION: "cli.version",
1678
+ SDK_VERSION: "sdk.version",
1679
+ SDK_LANGUAGE: "sdk.language",
1680
+ RETRY_AT: "retry.at",
1681
+ RETRY_DELAY: "retry.delay",
1682
+ RETRY_COUNT: "retry.count"
1683
+ };
379
1684
 
380
1685
  // src/v3/tasks/taskContextManager.ts
381
1686
  var _getStore, getStore_fn;
@@ -391,10 +1696,6 @@ var _TaskContextManager = class _TaskContextManager {
391
1696
  const store = __privateMethod(this, _getStore, getStore_fn).call(this);
392
1697
  return store?.ctx;
393
1698
  }
394
- get payload() {
395
- const store = __privateMethod(this, _getStore, getStore_fn).call(this);
396
- return store?.payload;
397
- }
398
1699
  get worker() {
399
1700
  const store = __privateMethod(this, _getStore, getStore_fn).call(this);
400
1701
  return store?.worker;
@@ -402,10 +1703,42 @@ var _TaskContextManager = class _TaskContextManager {
402
1703
  get attributes() {
403
1704
  if (this.ctx) {
404
1705
  return {
405
- ...flattenAttributes(this.ctx, "ctx"),
406
- ...flattenAttributes(this.payload, "payload"),
407
- ...flattenAttributes(this.worker, "worker"),
408
- "service.name": this.ctx.task.id
1706
+ ...this.contextAttributes,
1707
+ ...this.workerAttributes
1708
+ };
1709
+ }
1710
+ return {};
1711
+ }
1712
+ get workerAttributes() {
1713
+ if (this.worker) {
1714
+ return {
1715
+ [SemanticInternalAttributes.WORKER_ID]: this.worker.id,
1716
+ [SemanticInternalAttributes.WORKER_VERSION]: this.worker.version
1717
+ };
1718
+ }
1719
+ return {};
1720
+ }
1721
+ get contextAttributes() {
1722
+ if (this.ctx) {
1723
+ return {
1724
+ [SemanticInternalAttributes.ATTEMPT_ID]: this.ctx.attempt.id,
1725
+ [SemanticInternalAttributes.ATTEMPT_NUMBER]: this.ctx.attempt.number,
1726
+ [SemanticInternalAttributes.TASK_SLUG]: this.ctx.task.id,
1727
+ [SemanticInternalAttributes.TASK_PATH]: this.ctx.task.filePath,
1728
+ [SemanticInternalAttributes.TASK_EXPORT_NAME]: this.ctx.task.exportName,
1729
+ [SemanticInternalAttributes.QUEUE_NAME]: this.ctx.queue.name,
1730
+ [SemanticInternalAttributes.QUEUE_ID]: this.ctx.queue.id,
1731
+ [SemanticInternalAttributes.ENVIRONMENT_ID]: this.ctx.environment.id,
1732
+ [SemanticInternalAttributes.ENVIRONMENT_TYPE]: this.ctx.environment.type,
1733
+ [SemanticInternalAttributes.ORGANIZATION_ID]: this.ctx.organization.id,
1734
+ [SemanticInternalAttributes.PROJECT_ID]: this.ctx.project.id,
1735
+ [SemanticInternalAttributes.PROJECT_REF]: this.ctx.project.ref,
1736
+ [SemanticInternalAttributes.PROJECT_NAME]: this.ctx.project.name,
1737
+ [SemanticInternalAttributes.RUN_ID]: this.ctx.run.id,
1738
+ [SemanticInternalAttributes.RUN_IS_TEST]: this.ctx.run.isTest,
1739
+ [SemanticInternalAttributes.ORGANIZATION_SLUG]: this.ctx.organization.slug,
1740
+ [SemanticInternalAttributes.ORGANIZATION_NAME]: this.ctx.organization.name,
1741
+ [SemanticInternalAttributes.BATCH_ID]: this.ctx.batch?.id
409
1742
  };
410
1743
  }
411
1744
  return {};
@@ -421,37 +1754,165 @@ getStore_fn = /* @__PURE__ */ __name(function() {
421
1754
  __name(_TaskContextManager, "TaskContextManager");
422
1755
  var TaskContextManager = _TaskContextManager;
423
1756
  var taskContextManager = new TaskContextManager();
1757
+ var _TaskContextSpanProcessor = class _TaskContextSpanProcessor {
1758
+ constructor(innerProcessor) {
1759
+ this._innerProcessor = innerProcessor;
1760
+ }
1761
+ // Called when a span starts
1762
+ onStart(span, parentContext) {
1763
+ if (taskContextManager.ctx) {
1764
+ span.setAttributes(flattenAttributes({
1765
+ [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,
1766
+ [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.ctx.attempt.number
1767
+ }, SemanticInternalAttributes.METADATA));
1768
+ }
1769
+ this._innerProcessor.onStart(span, parentContext);
1770
+ }
1771
+ // Delegate the rest of the methods to the wrapped processor
1772
+ onEnd(span) {
1773
+ this._innerProcessor.onEnd(span);
1774
+ }
1775
+ shutdown() {
1776
+ return this._innerProcessor.shutdown();
1777
+ }
1778
+ forceFlush() {
1779
+ return this._innerProcessor.forceFlush();
1780
+ }
1781
+ };
1782
+ __name(_TaskContextSpanProcessor, "TaskContextSpanProcessor");
1783
+ var TaskContextSpanProcessor = _TaskContextSpanProcessor;
1784
+ var _TaskContextLogProcessor = class _TaskContextLogProcessor {
1785
+ constructor(innerProcessor) {
1786
+ this._innerProcessor = innerProcessor;
1787
+ }
1788
+ forceFlush() {
1789
+ return this._innerProcessor.forceFlush();
1790
+ }
1791
+ onEmit(logRecord, context3) {
1792
+ if (taskContextManager.ctx) {
1793
+ logRecord.setAttributes(flattenAttributes({
1794
+ [SemanticInternalAttributes.ATTEMPT_ID]: taskContextManager.ctx.attempt.id,
1795
+ [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContextManager.ctx.attempt.number
1796
+ }, SemanticInternalAttributes.METADATA));
1797
+ }
1798
+ this._innerProcessor.onEmit(logRecord, context3);
1799
+ }
1800
+ shutdown() {
1801
+ return this._innerProcessor.shutdown();
1802
+ }
1803
+ };
1804
+ __name(_TaskContextLogProcessor, "TaskContextLogProcessor");
1805
+ var TaskContextLogProcessor = _TaskContextLogProcessor;
1806
+
1807
+ // src/v3/utils/getEnv.ts
1808
+ function getEnvVar(name) {
1809
+ if (typeof process !== "undefined" && typeof process.env === "object" && process.env !== null) {
1810
+ return process.env[name];
1811
+ }
1812
+ }
1813
+ __name(getEnvVar, "getEnvVar");
424
1814
 
425
1815
  // src/v3/apiClient/index.ts
1816
+ var zodFetchOptions = {
1817
+ retry: {
1818
+ maxAttempts: 5,
1819
+ minTimeoutInMs: 1e3,
1820
+ maxTimeoutInMs: 3e4,
1821
+ factor: 2,
1822
+ randomize: false
1823
+ }
1824
+ };
426
1825
  var _getHeaders, getHeaders_fn;
427
1826
  var _ApiClient = class _ApiClient {
428
1827
  constructor(baseUrl, accessToken) {
429
1828
  __privateAdd(this, _getHeaders);
430
- this.baseUrl = baseUrl;
431
1829
  this.accessToken = accessToken;
1830
+ this.baseUrl = baseUrl.replace(/\/$/, "");
432
1831
  }
433
- triggerTask(taskId, options) {
1832
+ triggerTask(taskId, body, options) {
434
1833
  return zodfetch(TriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`, {
435
1834
  method: "POST",
436
- headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this),
437
- body: JSON.stringify(options)
438
- });
1835
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1836
+ body: JSON.stringify(body)
1837
+ }, zodFetchOptions);
1838
+ }
1839
+ batchTriggerTask(taskId, body, options) {
1840
+ return zodfetch(BatchTriggerTaskResponse, `${this.baseUrl}/api/v1/tasks/${taskId}/batch`, {
1841
+ method: "POST",
1842
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, options?.spanParentAsLink ?? false),
1843
+ body: JSON.stringify(body)
1844
+ }, zodFetchOptions);
1845
+ }
1846
+ createUploadPayloadUrl(filename) {
1847
+ return zodfetch(CreateUploadPayloadUrlResponseBody, `${this.baseUrl}/api/v1/packets/${filename}`, {
1848
+ method: "PUT",
1849
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1850
+ }, zodFetchOptions);
1851
+ }
1852
+ getPayloadUrl(filename) {
1853
+ return zodfetch(CreateUploadPayloadUrlResponseBody, `${this.baseUrl}/api/v1/packets/${filename}`, {
1854
+ method: "GET",
1855
+ headers: __privateMethod(this, _getHeaders, getHeaders_fn).call(this, false)
1856
+ }, zodFetchOptions);
439
1857
  }
440
1858
  };
441
1859
  _getHeaders = new WeakSet();
442
- getHeaders_fn = /* @__PURE__ */ __name(function() {
1860
+ getHeaders_fn = /* @__PURE__ */ __name(function(spanParentAsLink) {
443
1861
  const headers = {
444
1862
  "Content-Type": "application/json",
445
1863
  Authorization: `Bearer ${this.accessToken}`
446
1864
  };
447
1865
  if (taskContextManager.isInsideTask) {
448
1866
  propagation.inject(context.active(), headers);
1867
+ if (spanParentAsLink) {
1868
+ headers["x-trigger-span-parent-as-link"] = "1";
1869
+ }
449
1870
  }
450
1871
  return headers;
451
1872
  }, "#getHeaders");
452
1873
  __name(_ApiClient, "ApiClient");
453
1874
  var ApiClient = _ApiClient;
454
- var messageSchema = z.object({
1875
+ var _getStore2, getStore_fn2;
1876
+ var _ApiClientManager = class _ApiClientManager {
1877
+ constructor() {
1878
+ __privateAdd(this, _getStore2);
1879
+ __publicField(this, "_storage", new SafeAsyncLocalStorage());
1880
+ }
1881
+ get baseURL() {
1882
+ const store = __privateMethod(this, _getStore2, getStore_fn2).call(this);
1883
+ return store?.baseURL ?? getEnvVar("TRIGGER_API_URL") ?? "https://api.trigger.dev";
1884
+ }
1885
+ get accessToken() {
1886
+ const store = __privateMethod(this, _getStore2, getStore_fn2).call(this);
1887
+ return store?.accessToken ?? getEnvVar("TRIGGER_SECRET_KEY");
1888
+ }
1889
+ get client() {
1890
+ if (!this.baseURL || !this.accessToken) {
1891
+ return void 0;
1892
+ }
1893
+ return new ApiClient(this.baseURL, this.accessToken);
1894
+ }
1895
+ runWith(context3, fn) {
1896
+ return this._storage.runWith(context3, fn);
1897
+ }
1898
+ };
1899
+ _getStore2 = new WeakSet();
1900
+ getStore_fn2 = /* @__PURE__ */ __name(function() {
1901
+ return this._storage.getStore();
1902
+ }, "#getStore");
1903
+ __name(_ApiClientManager, "ApiClientManager");
1904
+ var ApiClientManager = _ApiClientManager;
1905
+ var apiClientManager = new ApiClientManager();
1906
+ var _ZodSchemaParsedError = class _ZodSchemaParsedError extends Error {
1907
+ constructor(error, payload) {
1908
+ super(error.message);
1909
+ this.error = error;
1910
+ this.payload = payload;
1911
+ }
1912
+ };
1913
+ __name(_ZodSchemaParsedError, "ZodSchemaParsedError");
1914
+ var ZodSchemaParsedError = _ZodSchemaParsedError;
1915
+ var ZodMessageSchema = z.object({
455
1916
  version: z.literal("v1").default("v1"),
456
1917
  type: z.string(),
457
1918
  payload: z.unknown()
@@ -471,12 +1932,14 @@ var _ZodMessageHandler = class _ZodMessageHandler {
471
1932
  }
472
1933
  const handler = __privateGet(this, _handlers)[parsedMessage.type];
473
1934
  if (!handler) {
474
- throw new Error(`Unknown message type: ${String(parsedMessage.type)}`);
1935
+ console.error(`No handler for message type: ${String(parsedMessage.type)}`);
1936
+ return;
475
1937
  }
476
- await handler(parsedMessage.payload);
1938
+ const ack = await handler(parsedMessage.payload);
1939
+ return ack;
477
1940
  }
478
1941
  parseMessage(message) {
479
- const parsedMessage = messageSchema.safeParse(message);
1942
+ const parsedMessage = ZodMessageSchema.safeParse(message);
480
1943
  if (!parsedMessage.success) {
481
1944
  throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);
482
1945
  }
@@ -493,6 +1956,38 @@ var _ZodMessageHandler = class _ZodMessageHandler {
493
1956
  payload: parsedPayload.data
494
1957
  };
495
1958
  }
1959
+ registerHandlers(emitter, logger2) {
1960
+ const log = logger2 ?? console;
1961
+ if (!__privateGet(this, _handlers)) {
1962
+ log.info("No handlers provided");
1963
+ return;
1964
+ }
1965
+ for (const eventName of Object.keys(__privateGet(this, _schema))) {
1966
+ emitter.on(eventName, async (message, callback) => {
1967
+ log.info(`handling ${eventName}`, {
1968
+ payload: message,
1969
+ hasCallback: !!callback
1970
+ });
1971
+ let ack;
1972
+ if ("payload" in message) {
1973
+ ack = await this.handleMessage({
1974
+ type: eventName,
1975
+ ...message
1976
+ });
1977
+ } else {
1978
+ const { version, ...payload } = message;
1979
+ ack = await this.handleMessage({
1980
+ type: eventName,
1981
+ version,
1982
+ payload
1983
+ });
1984
+ }
1985
+ if (callback && typeof callback === "function") {
1986
+ callback(ack);
1987
+ }
1988
+ });
1989
+ }
1990
+ }
496
1991
  };
497
1992
  _schema = new WeakMap();
498
1993
  _handlers = new WeakMap();
@@ -513,7 +2008,7 @@ var _ZodMessageSender = class _ZodMessageSender {
513
2008
  }
514
2009
  const parsedPayload = schema.safeParse(payload);
515
2010
  if (!parsedPayload.success) {
516
- throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2011
+ throw new ZodSchemaParsedError(parsedPayload.error, payload);
517
2012
  }
518
2013
  await __privateGet(this, _sender).call(this, {
519
2014
  type,
@@ -521,80 +2016,745 @@ var _ZodMessageSender = class _ZodMessageSender {
521
2016
  version: "v1"
522
2017
  });
523
2018
  }
2019
+ async forwardMessage(message) {
2020
+ const parsedMessage = ZodMessageSchema.safeParse(message);
2021
+ if (!parsedMessage.success) {
2022
+ throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);
2023
+ }
2024
+ const schema = __privateGet(this, _schema2)[parsedMessage.data.type];
2025
+ if (!schema) {
2026
+ throw new Error(`Unknown message type: ${parsedMessage.data.type}`);
2027
+ }
2028
+ const parsedPayload = schema.safeParse(parsedMessage.data.payload);
2029
+ if (!parsedPayload.success) {
2030
+ throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2031
+ }
2032
+ await __privateGet(this, _sender).call(this, {
2033
+ type: parsedMessage.data.type,
2034
+ payload: parsedPayload.data,
2035
+ version: "v1"
2036
+ });
2037
+ }
524
2038
  };
525
2039
  _schema2 = new WeakMap();
526
2040
  _sender = new WeakMap();
527
2041
  __name(_ZodMessageSender, "ZodMessageSender");
528
2042
  var ZodMessageSender = _ZodMessageSender;
529
-
530
- // src/v3/errors.ts
531
- function parseError(error) {
532
- if (error instanceof Error) {
533
- return {
534
- type: "BUILT_IN_ERROR",
535
- name: error.name,
536
- message: error.message,
537
- stackTrace: error.stack ?? ""
538
- };
2043
+ var messageSchema = z.object({
2044
+ version: z.literal("v1").default("v1"),
2045
+ type: z.string(),
2046
+ payload: z.unknown()
2047
+ });
2048
+ var _schema3, _handlers2;
2049
+ var _ZodSocketMessageHandler = class _ZodSocketMessageHandler {
2050
+ constructor(options) {
2051
+ __privateAdd(this, _schema3, void 0);
2052
+ __privateAdd(this, _handlers2, void 0);
2053
+ __privateSet(this, _schema3, options.schema);
2054
+ __privateSet(this, _handlers2, options.handlers);
539
2055
  }
540
- if (typeof error === "string") {
541
- return {
542
- type: "STRING_ERROR",
543
- raw: error
544
- };
2056
+ async handleMessage(message) {
2057
+ const parsedMessage = this.parseMessage(message);
2058
+ if (!__privateGet(this, _handlers2)) {
2059
+ throw new Error("No handlers provided");
2060
+ }
2061
+ const handler = __privateGet(this, _handlers2)[parsedMessage.type];
2062
+ if (!handler) {
2063
+ console.error(`No handler for message type: ${String(parsedMessage.type)}`);
2064
+ return;
2065
+ }
2066
+ const ack = await handler(parsedMessage.payload);
2067
+ return ack;
545
2068
  }
546
- try {
547
- return {
548
- type: "CUSTOM_ERROR",
549
- raw: JSON.stringify(error)
550
- };
551
- } catch (e) {
2069
+ parseMessage(message) {
2070
+ const parsedMessage = messageSchema.safeParse(message);
2071
+ if (!parsedMessage.success) {
2072
+ throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);
2073
+ }
2074
+ const schema = __privateGet(this, _schema3)[parsedMessage.data.type]["message"];
2075
+ if (!schema) {
2076
+ throw new Error(`Unknown message type: ${parsedMessage.data.type}`);
2077
+ }
2078
+ const parsedPayload = schema.safeParse(parsedMessage.data.payload);
2079
+ if (!parsedPayload.success) {
2080
+ throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2081
+ }
552
2082
  return {
553
- type: "CUSTOM_ERROR",
554
- raw: String(error)
2083
+ type: parsedMessage.data.type,
2084
+ payload: parsedPayload.data
555
2085
  };
556
2086
  }
557
- }
558
- __name(parseError, "parseError");
559
- function createErrorTaskError(error) {
560
- switch (error.type) {
561
- case "BUILT_IN_ERROR": {
562
- const e = new Error(error.message);
563
- e.name = error.name;
564
- e.stack = error.stackTrace;
565
- return e;
2087
+ registerHandlers(emitter, logger2) {
2088
+ const log = logger2 ?? console;
2089
+ if (!__privateGet(this, _handlers2)) {
2090
+ log.info("No handlers provided");
2091
+ return;
566
2092
  }
567
- case "STRING_ERROR": {
568
- return error.raw;
2093
+ for (const eventName of Object.keys(__privateGet(this, _handlers2))) {
2094
+ emitter.on(eventName, async (message, callback) => {
2095
+ log.info(`handling ${eventName}`, {
2096
+ payload: message,
2097
+ hasCallback: !!callback
2098
+ });
2099
+ let ack;
2100
+ try {
2101
+ if ("payload" in message) {
2102
+ ack = await this.handleMessage({
2103
+ type: eventName,
2104
+ ...message
2105
+ });
2106
+ } else {
2107
+ const { version, ...payload } = message;
2108
+ ack = await this.handleMessage({
2109
+ type: eventName,
2110
+ version,
2111
+ payload
2112
+ });
2113
+ }
2114
+ } catch (error) {
2115
+ log.error("Error while handling message", {
2116
+ error
2117
+ });
2118
+ return;
2119
+ }
2120
+ if (callback && typeof callback === "function") {
2121
+ callback(ack);
2122
+ }
2123
+ });
569
2124
  }
570
- case "CUSTOM_ERROR": {
571
- return JSON.parse(error.raw);
2125
+ }
2126
+ };
2127
+ _schema3 = new WeakMap();
2128
+ _handlers2 = new WeakMap();
2129
+ __name(_ZodSocketMessageHandler, "ZodSocketMessageHandler");
2130
+ var ZodSocketMessageHandler = _ZodSocketMessageHandler;
2131
+ var _schema4, _socket;
2132
+ var _ZodSocketMessageSender = class _ZodSocketMessageSender {
2133
+ constructor(options) {
2134
+ __privateAdd(this, _schema4, void 0);
2135
+ __privateAdd(this, _socket, void 0);
2136
+ __privateSet(this, _schema4, options.schema);
2137
+ __privateSet(this, _socket, options.socket);
2138
+ }
2139
+ send(type, payload) {
2140
+ const schema = __privateGet(this, _schema4)[type]["message"];
2141
+ if (!schema) {
2142
+ throw new Error(`Unknown message type: ${type}`);
572
2143
  }
573
- case "INTERNAL_ERROR": {
574
- return new Error(`trigger.dev internal error (${error.code})`);
2144
+ const parsedPayload = schema.safeParse(payload);
2145
+ if (!parsedPayload.success) {
2146
+ throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
575
2147
  }
2148
+ __privateGet(this, _socket).emit(type, {
2149
+ payload,
2150
+ version: "v1"
2151
+ });
2152
+ return;
576
2153
  }
577
- }
578
- __name(createErrorTaskError, "createErrorTaskError");
579
-
580
- // src/v3/utils/platform.ts
581
- var _globalThis = typeof globalThis === "object" ? globalThis : global;
582
-
583
- // src/v3/utils/globals.ts
584
- var GLOBAL_TRIGGER_DOT_DEV_KEY = Symbol.for(`dev.trigger.ts.api`);
585
- var _global = _globalThis;
586
- function registerGlobal(type, instance, allowOverride = false) {
587
- const api = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] ?? {};
588
- if (!allowOverride && api[type]) {
589
- return false;
2154
+ async sendWithAck(type, payload) {
2155
+ const schema = __privateGet(this, _schema4)[type]["message"];
2156
+ if (!schema) {
2157
+ throw new Error(`Unknown message type: ${type}`);
2158
+ }
2159
+ const parsedPayload = schema.safeParse(payload);
2160
+ if (!parsedPayload.success) {
2161
+ throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2162
+ }
2163
+ const callbackResult = await __privateGet(this, _socket).emitWithAck(type, {
2164
+ payload,
2165
+ version: "v1"
2166
+ });
2167
+ return callbackResult;
590
2168
  }
591
- api[type] = instance;
592
- return true;
593
- }
594
- __name(registerGlobal, "registerGlobal");
595
- function getGlobal(type) {
596
- return _global[GLOBAL_TRIGGER_DOT_DEV_KEY]?.[type];
597
- }
2169
+ };
2170
+ _schema4 = new WeakMap();
2171
+ _socket = new WeakMap();
2172
+ __name(_ZodSocketMessageSender, "ZodSocketMessageSender");
2173
+ var ZodSocketMessageSender = _ZodSocketMessageSender;
2174
+ var _sender2, _handler, _logger;
2175
+ var _ZodSocketConnection = class _ZodSocketConnection {
2176
+ constructor(opts) {
2177
+ __privateAdd(this, _sender2, void 0);
2178
+ __privateAdd(this, _handler, void 0);
2179
+ __privateAdd(this, _logger, void 0);
2180
+ const uri = `${opts.secure ? "wss" : "ws"}://${opts.host}:${opts.port ?? (opts.secure ? "443" : "80")}/${opts.namespace}`;
2181
+ const logger2 = new SimpleStructuredLogger(opts.namespace, LogLevel.info);
2182
+ logger2.log("new zod socket", {
2183
+ uri
2184
+ });
2185
+ this.socket = io(uri, {
2186
+ transports: [
2187
+ "websocket"
2188
+ ],
2189
+ auth: {
2190
+ token: opts.authToken
2191
+ },
2192
+ extraHeaders: opts.extraHeaders,
2193
+ reconnectionDelay: 500,
2194
+ reconnectionDelayMax: 1e3
2195
+ });
2196
+ __privateSet(this, _logger, logger2.child({
2197
+ socketId: this.socket.id
2198
+ }));
2199
+ __privateSet(this, _handler, new ZodSocketMessageHandler({
2200
+ schema: opts.serverMessages,
2201
+ handlers: opts.handlers
2202
+ }));
2203
+ __privateGet(this, _handler).registerHandlers(this.socket, __privateGet(this, _logger));
2204
+ __privateSet(this, _sender2, new ZodSocketMessageSender({
2205
+ schema: opts.clientMessages,
2206
+ socket: this.socket
2207
+ }));
2208
+ this.socket.on("connect_error", async (error) => {
2209
+ __privateGet(this, _logger).error(`connect_error: ${error}`);
2210
+ if (opts.onError) {
2211
+ await opts.onError(this.socket, error, __privateGet(this, _logger));
2212
+ }
2213
+ });
2214
+ this.socket.on("connect", async () => {
2215
+ __privateGet(this, _logger).info("connect");
2216
+ if (opts.onConnection) {
2217
+ await opts.onConnection(this.socket, __privateGet(this, _handler), __privateGet(this, _sender2), __privateGet(this, _logger));
2218
+ }
2219
+ });
2220
+ this.socket.on("disconnect", async (reason, description) => {
2221
+ __privateGet(this, _logger).info("disconnect", {
2222
+ reason,
2223
+ description
2224
+ });
2225
+ if (opts.onDisconnect) {
2226
+ await opts.onDisconnect(this.socket, reason, description, __privateGet(this, _logger));
2227
+ }
2228
+ });
2229
+ }
2230
+ close() {
2231
+ this.socket.close();
2232
+ }
2233
+ connect() {
2234
+ this.socket.connect();
2235
+ }
2236
+ get send() {
2237
+ return __privateGet(this, _sender2).send.bind(__privateGet(this, _sender2));
2238
+ }
2239
+ get sendWithAck() {
2240
+ return __privateGet(this, _sender2).sendWithAck.bind(__privateGet(this, _sender2));
2241
+ }
2242
+ };
2243
+ _sender2 = new WeakMap();
2244
+ _handler = new WeakMap();
2245
+ _logger = new WeakMap();
2246
+ __name(_ZodSocketConnection, "ZodSocketConnection");
2247
+ var ZodSocketConnection = _ZodSocketConnection;
2248
+
2249
+ // src/v3/zodNamespace.ts
2250
+ var LogLevel;
2251
+ (function(LogLevel2) {
2252
+ LogLevel2[LogLevel2["log"] = 0] = "log";
2253
+ LogLevel2[LogLevel2["error"] = 1] = "error";
2254
+ LogLevel2[LogLevel2["warn"] = 2] = "warn";
2255
+ LogLevel2[LogLevel2["info"] = 3] = "info";
2256
+ LogLevel2[LogLevel2["debug"] = 4] = "debug";
2257
+ })(LogLevel || (LogLevel = {}));
2258
+ var _structuredLog, structuredLog_fn;
2259
+ var _SimpleStructuredLogger = class _SimpleStructuredLogger {
2260
+ constructor(name, level = [
2261
+ "1",
2262
+ "true"
2263
+ ].includes(process.env.DEBUG ?? "") ? LogLevel.debug : LogLevel.info, fields) {
2264
+ __privateAdd(this, _structuredLog);
2265
+ this.name = name;
2266
+ this.level = level;
2267
+ this.fields = fields;
2268
+ }
2269
+ child(fields, level) {
2270
+ return new _SimpleStructuredLogger(this.name, level, {
2271
+ ...this.fields,
2272
+ ...fields
2273
+ });
2274
+ }
2275
+ log(message, ...args) {
2276
+ if (this.level < LogLevel.log)
2277
+ return;
2278
+ __privateMethod(this, _structuredLog, structuredLog_fn).call(this, console.log, message, "log", ...args);
2279
+ }
2280
+ error(message, ...args) {
2281
+ if (this.level < LogLevel.error)
2282
+ return;
2283
+ __privateMethod(this, _structuredLog, structuredLog_fn).call(this, console.error, message, "error", ...args);
2284
+ }
2285
+ warn(message, ...args) {
2286
+ if (this.level < LogLevel.warn)
2287
+ return;
2288
+ __privateMethod(this, _structuredLog, structuredLog_fn).call(this, console.warn, message, "warn", ...args);
2289
+ }
2290
+ info(message, ...args) {
2291
+ if (this.level < LogLevel.info)
2292
+ return;
2293
+ __privateMethod(this, _structuredLog, structuredLog_fn).call(this, console.info, message, "info", ...args);
2294
+ }
2295
+ debug(message, ...args) {
2296
+ if (this.level < LogLevel.debug)
2297
+ return;
2298
+ __privateMethod(this, _structuredLog, structuredLog_fn).call(this, console.debug, message, "debug", ...args);
2299
+ }
2300
+ };
2301
+ _structuredLog = new WeakSet();
2302
+ structuredLog_fn = /* @__PURE__ */ __name(function(loggerFunction, message, level, ...args) {
2303
+ const structuredLog = {
2304
+ ...args.length === 1 ? args[0] : args,
2305
+ ...this.fields,
2306
+ timestamp: /* @__PURE__ */ new Date(),
2307
+ name: this.name,
2308
+ message,
2309
+ level
2310
+ };
2311
+ loggerFunction(JSON.stringify(structuredLog));
2312
+ }, "#structuredLog");
2313
+ __name(_SimpleStructuredLogger, "SimpleStructuredLogger");
2314
+ var SimpleStructuredLogger = _SimpleStructuredLogger;
2315
+ var _logger2, _handler2;
2316
+ var _ZodNamespace = class _ZodNamespace {
2317
+ constructor(opts) {
2318
+ __privateAdd(this, _logger2, void 0);
2319
+ __privateAdd(this, _handler2, void 0);
2320
+ __privateSet(this, _logger2, opts.logger ?? new SimpleStructuredLogger(opts.name));
2321
+ __privateSet(this, _handler2, new ZodSocketMessageHandler({
2322
+ schema: opts.clientMessages,
2323
+ handlers: opts.handlers
2324
+ }));
2325
+ this.io = opts.io;
2326
+ this.namespace = this.io.of(opts.name);
2327
+ this.sender = new ZodMessageSender({
2328
+ schema: opts.serverMessages,
2329
+ sender: async (message) => {
2330
+ return new Promise((resolve, reject) => {
2331
+ try {
2332
+ this.namespace.emit(message.type, message.payload);
2333
+ resolve();
2334
+ } catch (err) {
2335
+ reject(err);
2336
+ }
2337
+ });
2338
+ }
2339
+ });
2340
+ if (opts.preAuth) {
2341
+ this.namespace.use(async (socket, next) => {
2342
+ const logger2 = __privateGet(this, _logger2).child({
2343
+ socketId: socket.id,
2344
+ socketStage: "preAuth"
2345
+ });
2346
+ if (typeof opts.preAuth === "function") {
2347
+ await opts.preAuth(socket, next, logger2);
2348
+ }
2349
+ });
2350
+ }
2351
+ if (opts.authToken) {
2352
+ this.namespace.use((socket, next) => {
2353
+ const logger2 = __privateGet(this, _logger2).child({
2354
+ socketId: socket.id,
2355
+ socketStage: "auth"
2356
+ });
2357
+ const { auth } = socket.handshake;
2358
+ if (!("token" in auth)) {
2359
+ logger2.error("no token");
2360
+ return socket.disconnect(true);
2361
+ }
2362
+ if (auth.token !== opts.authToken) {
2363
+ logger2.error("invalid token");
2364
+ return socket.disconnect(true);
2365
+ }
2366
+ logger2.info("success");
2367
+ next();
2368
+ });
2369
+ }
2370
+ if (opts.postAuth) {
2371
+ this.namespace.use(async (socket, next) => {
2372
+ const logger2 = __privateGet(this, _logger2).child({
2373
+ socketId: socket.id,
2374
+ socketStage: "auth"
2375
+ });
2376
+ if (typeof opts.postAuth === "function") {
2377
+ await opts.postAuth(socket, next, logger2);
2378
+ }
2379
+ });
2380
+ }
2381
+ this.namespace.on("connection", async (socket) => {
2382
+ const logger2 = __privateGet(this, _logger2).child({
2383
+ socketId: socket.id,
2384
+ socketStage: "connection"
2385
+ });
2386
+ logger2.info("connected");
2387
+ __privateGet(this, _handler2).registerHandlers(socket, logger2);
2388
+ socket.on("disconnect", async (reason, description) => {
2389
+ logger2.info("disconnect", {
2390
+ reason,
2391
+ description
2392
+ });
2393
+ if (opts.onDisconnect) {
2394
+ await opts.onDisconnect(socket, reason, description, logger2);
2395
+ }
2396
+ });
2397
+ socket.on("error", async (error) => {
2398
+ logger2.error("error", {
2399
+ error
2400
+ });
2401
+ if (opts.onError) {
2402
+ await opts.onError(socket, error, logger2);
2403
+ }
2404
+ });
2405
+ if (opts.onConnection) {
2406
+ await opts.onConnection(socket, __privateGet(this, _handler2), this.sender, logger2);
2407
+ }
2408
+ });
2409
+ }
2410
+ fetchSockets() {
2411
+ return this.namespace.fetchSockets();
2412
+ }
2413
+ };
2414
+ _logger2 = new WeakMap();
2415
+ _handler2 = new WeakMap();
2416
+ __name(_ZodNamespace, "ZodNamespace");
2417
+ var ZodNamespace = _ZodNamespace;
2418
+ var messageSchema2 = z.object({
2419
+ version: z.literal("v1").default("v1"),
2420
+ type: z.string(),
2421
+ payload: z.unknown()
2422
+ });
2423
+ var _schema5, _handlers3, _sender3, _a;
2424
+ var ZodIpcMessageHandler = (_a = class {
2425
+ constructor(options) {
2426
+ __privateAdd(this, _schema5, void 0);
2427
+ __privateAdd(this, _handlers3, void 0);
2428
+ __privateAdd(this, _sender3, void 0);
2429
+ __privateSet(this, _schema5, options.schema);
2430
+ __privateSet(this, _handlers3, options.handlers);
2431
+ __privateSet(this, _sender3, options.sender);
2432
+ }
2433
+ async handleMessage(message) {
2434
+ const parsedMessage = this.parseMessage(message);
2435
+ if (!__privateGet(this, _handlers3)) {
2436
+ throw new Error("No handlers provided");
2437
+ }
2438
+ const handler = __privateGet(this, _handlers3)[parsedMessage.type];
2439
+ if (!handler) {
2440
+ return;
2441
+ }
2442
+ const ack = await handler(parsedMessage.payload, __privateGet(this, _sender3));
2443
+ return ack;
2444
+ }
2445
+ parseMessage(message) {
2446
+ const parsedMessage = messageSchema2.safeParse(message);
2447
+ if (!parsedMessage.success) {
2448
+ throw new Error(`Failed to parse message: ${JSON.stringify(parsedMessage.error)}`);
2449
+ }
2450
+ const schema = __privateGet(this, _schema5)[parsedMessage.data.type]["message"];
2451
+ if (!schema) {
2452
+ throw new Error(`Unknown message type: ${parsedMessage.data.type}`);
2453
+ }
2454
+ const parsedPayload = schema.safeParse(parsedMessage.data.payload);
2455
+ if (!parsedPayload.success) {
2456
+ throw new Error(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2457
+ }
2458
+ return {
2459
+ type: parsedMessage.data.type,
2460
+ payload: parsedPayload.data
2461
+ };
2462
+ }
2463
+ }, _schema5 = new WeakMap(), _handlers3 = new WeakMap(), _sender3 = new WeakMap(), __name(_a, "ZodIpcMessageHandler"), _a);
2464
+ var Packet = z.discriminatedUnion("type", [
2465
+ z.object({
2466
+ type: z.literal("CONNECT"),
2467
+ sessionId: z.string().optional()
2468
+ }),
2469
+ z.object({
2470
+ type: z.literal("ACK"),
2471
+ message: z.any(),
2472
+ id: z.number()
2473
+ }),
2474
+ z.object({
2475
+ type: z.literal("EVENT"),
2476
+ message: z.any(),
2477
+ id: z.number().optional()
2478
+ })
2479
+ ]);
2480
+ var _sessionId, _messageCounter, _handler3, _acks, _registerHandlers, registerHandlers_fn, _handlePacket, handlePacket_fn, _sendPacket, sendPacket_fn;
2481
+ var _ZodIpcConnection = class _ZodIpcConnection {
2482
+ constructor(opts) {
2483
+ __privateAdd(this, _registerHandlers);
2484
+ __privateAdd(this, _handlePacket);
2485
+ __privateAdd(this, _sendPacket);
2486
+ __privateAdd(this, _sessionId, void 0);
2487
+ __privateAdd(this, _messageCounter, void 0);
2488
+ __privateAdd(this, _handler3, void 0);
2489
+ __privateAdd(this, _acks, void 0);
2490
+ this.opts = opts;
2491
+ __privateSet(this, _messageCounter, 0);
2492
+ __privateSet(this, _acks, /* @__PURE__ */ new Map());
2493
+ __privateSet(this, _handler3, new ZodIpcMessageHandler({
2494
+ schema: opts.listenSchema,
2495
+ handlers: opts.handlers,
2496
+ sender: {
2497
+ send: this.send.bind(this),
2498
+ sendWithAck: this.sendWithAck.bind(this)
2499
+ }
2500
+ }));
2501
+ __privateMethod(this, _registerHandlers, registerHandlers_fn).call(this);
2502
+ }
2503
+ async connect() {
2504
+ __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2505
+ type: "CONNECT"
2506
+ });
2507
+ }
2508
+ async send(type, payload) {
2509
+ const schema = this.opts.emitSchema[type]["message"];
2510
+ if (!schema) {
2511
+ throw new Error(`Unknown message type: ${type}`);
2512
+ }
2513
+ const parsedPayload = schema.safeParse(payload);
2514
+ if (!parsedPayload.success) {
2515
+ throw new ZodSchemaParsedError(parsedPayload.error, payload);
2516
+ }
2517
+ await __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2518
+ type: "EVENT",
2519
+ message: {
2520
+ type,
2521
+ payload,
2522
+ version: "v1"
2523
+ }
2524
+ });
2525
+ }
2526
+ async sendWithAck(type, payload, timeoutInMs) {
2527
+ const currentId = __privateWrapper(this, _messageCounter)._++;
2528
+ return new Promise(async (resolve, reject) => {
2529
+ const defaultTimeoutInMs = 2e3;
2530
+ const timeout = setTimeout(() => {
2531
+ reject(JSON.stringify({
2532
+ reason: "sendWithAck() timeout",
2533
+ timeoutInMs: timeoutInMs ?? defaultTimeoutInMs,
2534
+ type,
2535
+ payload
2536
+ }));
2537
+ }, timeoutInMs ?? defaultTimeoutInMs);
2538
+ __privateGet(this, _acks).set(currentId, {
2539
+ resolve,
2540
+ reject,
2541
+ timeout
2542
+ });
2543
+ const schema = this.opts.emitSchema[type]["message"];
2544
+ if (!schema) {
2545
+ clearTimeout(timeout);
2546
+ return reject(`Unknown message type: ${type}`);
2547
+ }
2548
+ const parsedPayload = schema.safeParse(payload);
2549
+ if (!parsedPayload.success) {
2550
+ clearTimeout(timeout);
2551
+ return reject(`Failed to parse message payload: ${JSON.stringify(parsedPayload.error)}`);
2552
+ }
2553
+ await __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2554
+ type: "EVENT",
2555
+ message: {
2556
+ type,
2557
+ payload,
2558
+ version: "v1"
2559
+ },
2560
+ id: currentId
2561
+ });
2562
+ });
2563
+ }
2564
+ };
2565
+ _sessionId = new WeakMap();
2566
+ _messageCounter = new WeakMap();
2567
+ _handler3 = new WeakMap();
2568
+ _acks = new WeakMap();
2569
+ _registerHandlers = new WeakSet();
2570
+ registerHandlers_fn = /* @__PURE__ */ __name(async function() {
2571
+ if (!this.opts.process.on) {
2572
+ return;
2573
+ }
2574
+ this.opts.process.on("message", async (message) => {
2575
+ __privateMethod(this, _handlePacket, handlePacket_fn).call(this, message);
2576
+ });
2577
+ }, "#registerHandlers");
2578
+ _handlePacket = new WeakSet();
2579
+ handlePacket_fn = /* @__PURE__ */ __name(async function(packet) {
2580
+ const parsedPacket = Packet.safeParse(packet);
2581
+ if (!parsedPacket.success) {
2582
+ return;
2583
+ }
2584
+ switch (parsedPacket.data.type) {
2585
+ case "ACK": {
2586
+ const ack = __privateGet(this, _acks).get(parsedPacket.data.id);
2587
+ if (!ack) {
2588
+ return;
2589
+ }
2590
+ clearTimeout(ack.timeout);
2591
+ ack.resolve(parsedPacket.data.message);
2592
+ break;
2593
+ }
2594
+ case "CONNECT": {
2595
+ if (!parsedPacket.data.sessionId) {
2596
+ const id = randomUUID();
2597
+ await __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2598
+ type: "CONNECT",
2599
+ sessionId: id
2600
+ });
2601
+ return;
2602
+ }
2603
+ if (__privateGet(this, _sessionId)) {
2604
+ return;
2605
+ }
2606
+ __privateSet(this, _sessionId, parsedPacket.data.sessionId);
2607
+ break;
2608
+ }
2609
+ case "EVENT": {
2610
+ const result = await __privateGet(this, _handler3).handleMessage(parsedPacket.data.message);
2611
+ if (typeof parsedPacket.data.id === "undefined") {
2612
+ return;
2613
+ }
2614
+ await __privateMethod(this, _sendPacket, sendPacket_fn).call(this, {
2615
+ type: "ACK",
2616
+ id: parsedPacket.data.id,
2617
+ message: result
2618
+ });
2619
+ break;
2620
+ }
2621
+ }
2622
+ }, "#handlePacket");
2623
+ _sendPacket = new WeakSet();
2624
+ sendPacket_fn = /* @__PURE__ */ __name(async function(packet1) {
2625
+ await this.opts.process.send?.(packet1);
2626
+ }, "#sendPacket");
2627
+ __name(_ZodIpcConnection, "ZodIpcConnection");
2628
+ var ZodIpcConnection = _ZodIpcConnection;
2629
+ function parseError(error) {
2630
+ if (error instanceof Error) {
2631
+ return {
2632
+ type: "BUILT_IN_ERROR",
2633
+ name: error.name,
2634
+ message: error.message,
2635
+ stackTrace: error.stack ?? ""
2636
+ };
2637
+ }
2638
+ if (typeof error === "string") {
2639
+ return {
2640
+ type: "STRING_ERROR",
2641
+ raw: error
2642
+ };
2643
+ }
2644
+ try {
2645
+ return {
2646
+ type: "CUSTOM_ERROR",
2647
+ raw: JSON.stringify(error)
2648
+ };
2649
+ } catch (e) {
2650
+ return {
2651
+ type: "CUSTOM_ERROR",
2652
+ raw: String(error)
2653
+ };
2654
+ }
2655
+ }
2656
+ __name(parseError, "parseError");
2657
+ function createErrorTaskError(error) {
2658
+ switch (error.type) {
2659
+ case "BUILT_IN_ERROR": {
2660
+ const e = new Error(error.message);
2661
+ e.name = error.name;
2662
+ e.stack = error.stackTrace;
2663
+ return e;
2664
+ }
2665
+ case "STRING_ERROR": {
2666
+ return error.raw;
2667
+ }
2668
+ case "CUSTOM_ERROR": {
2669
+ return JSON.parse(error.raw);
2670
+ }
2671
+ case "INTERNAL_ERROR": {
2672
+ return new Error(`trigger.dev internal error (${error.code})`);
2673
+ }
2674
+ }
2675
+ }
2676
+ __name(createErrorTaskError, "createErrorTaskError");
2677
+ function correctErrorStackTrace(stackTrace, projectDir, options) {
2678
+ const [errorLine, ...traceLines] = stackTrace.split("\n");
2679
+ return [
2680
+ options?.removeFirstLine ? void 0 : errorLine,
2681
+ ...traceLines.map((line) => correctStackTraceLine(line, projectDir))
2682
+ ].filter(Boolean).join("\n");
2683
+ }
2684
+ __name(correctErrorStackTrace, "correctErrorStackTrace");
2685
+ function correctStackTraceLine(line, projectDir) {
2686
+ const regex = /at (.*?) \(?file:\/\/(\/.*?\.ts):(\d+):(\d+)\)?/;
2687
+ const match = regex.exec(line);
2688
+ if (!match) {
2689
+ return;
2690
+ }
2691
+ const [_, identifier, path, lineNum, colNum] = match;
2692
+ if (!path) {
2693
+ return;
2694
+ }
2695
+ if (nodePath.basename(path) === "__entryPoint.ts") {
2696
+ return;
2697
+ }
2698
+ if (projectDir && !path.includes(projectDir)) {
2699
+ return;
2700
+ }
2701
+ return line;
2702
+ }
2703
+ __name(correctStackTraceLine, "correctStackTraceLine");
2704
+ function groupTaskMetadataIssuesByTask(tasks, issues) {
2705
+ return issues.reduce((acc, issue) => {
2706
+ if (issue.path.length === 0) {
2707
+ return acc;
2708
+ }
2709
+ const taskIndex = issue.path[1];
2710
+ if (typeof taskIndex !== "number") {
2711
+ return acc;
2712
+ }
2713
+ const task = tasks[taskIndex];
2714
+ if (!task) {
2715
+ return acc;
2716
+ }
2717
+ const restOfPath = issue.path.slice(2);
2718
+ const taskId = task.id;
2719
+ const taskName = task.exportName;
2720
+ const filePath = task.filePath;
2721
+ const key = taskIndex;
2722
+ const existing = acc[key] ?? {
2723
+ id: taskId,
2724
+ exportName: taskName,
2725
+ filePath,
2726
+ issues: []
2727
+ };
2728
+ existing.issues.push({
2729
+ message: issue.message,
2730
+ path: restOfPath.length === 0 ? void 0 : restOfPath.join(".")
2731
+ });
2732
+ return {
2733
+ ...acc,
2734
+ [key]: existing
2735
+ };
2736
+ }, {});
2737
+ }
2738
+ __name(groupTaskMetadataIssuesByTask, "groupTaskMetadataIssuesByTask");
2739
+
2740
+ // src/v3/utils/platform.ts
2741
+ var _globalThis = typeof globalThis === "object" ? globalThis : global;
2742
+
2743
+ // src/v3/utils/globals.ts
2744
+ var GLOBAL_TRIGGER_DOT_DEV_KEY = Symbol.for(`dev.trigger.ts.api`);
2745
+ var _global = _globalThis;
2746
+ function registerGlobal(type, instance, allowOverride = false) {
2747
+ const api = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] ?? {};
2748
+ if (!allowOverride && api[type]) {
2749
+ return false;
2750
+ }
2751
+ api[type] = instance;
2752
+ return true;
2753
+ }
2754
+ __name(registerGlobal, "registerGlobal");
2755
+ function getGlobal(type) {
2756
+ return _global[GLOBAL_TRIGGER_DOT_DEV_KEY]?.[type];
2757
+ }
598
2758
  __name(getGlobal, "getGlobal");
599
2759
  function unregisterGlobal(type) {
600
2760
  const api = _global[GLOBAL_TRIGGER_DOT_DEV_KEY];
@@ -608,6 +2768,11 @@ __name(unregisterGlobal, "unregisterGlobal");
608
2768
  var _NoopRuntimeManager = class _NoopRuntimeManager {
609
2769
  disable() {
610
2770
  }
2771
+ registerTasks() {
2772
+ }
2773
+ getTaskMetadata(id) {
2774
+ return void 0;
2775
+ }
611
2776
  waitForDuration(ms) {
612
2777
  return Promise.resolve();
613
2778
  }
@@ -615,7 +2780,20 @@ var _NoopRuntimeManager = class _NoopRuntimeManager {
615
2780
  return Promise.resolve();
616
2781
  }
617
2782
  waitForTask(params) {
618
- throw new Error("Method not implemented.");
2783
+ return Promise.resolve({
2784
+ ok: false,
2785
+ id: params.id,
2786
+ error: {
2787
+ type: "INTERNAL_ERROR",
2788
+ code: "CONFIGURED_INCORRECTLY"
2789
+ }
2790
+ });
2791
+ }
2792
+ waitForBatch(params) {
2793
+ return Promise.resolve({
2794
+ id: params.id,
2795
+ items: []
2796
+ });
619
2797
  }
620
2798
  };
621
2799
  __name(_NoopRuntimeManager, "NoopRuntimeManager");
@@ -644,6 +2822,9 @@ var _RuntimeAPI = class _RuntimeAPI {
644
2822
  waitForTask(params) {
645
2823
  return __privateMethod(this, _getRuntimeManager, getRuntimeManager_fn).call(this).waitForTask(params);
646
2824
  }
2825
+ waitForBatch(params) {
2826
+ return __privateMethod(this, _getRuntimeManager, getRuntimeManager_fn).call(this).waitForBatch(params);
2827
+ }
647
2828
  setGlobalRuntimeManager(runtimeManager) {
648
2829
  return registerGlobal(API_NAME, runtimeManager);
649
2830
  }
@@ -651,6 +2832,12 @@ var _RuntimeAPI = class _RuntimeAPI {
651
2832
  __privateMethod(this, _getRuntimeManager, getRuntimeManager_fn).call(this).disable();
652
2833
  unregisterGlobal(API_NAME);
653
2834
  }
2835
+ registerTasks(tasks) {
2836
+ __privateMethod(this, _getRuntimeManager, getRuntimeManager_fn).call(this).registerTasks(tasks);
2837
+ }
2838
+ getTaskMetadata(id) {
2839
+ return __privateMethod(this, _getRuntimeManager, getRuntimeManager_fn).call(this).getTaskMetadata(id);
2840
+ }
654
2841
  };
655
2842
  _getRuntimeManager = new WeakSet();
656
2843
  getRuntimeManager_fn = /* @__PURE__ */ __name(function() {
@@ -661,58 +2848,159 @@ var RuntimeAPI = _RuntimeAPI;
661
2848
 
662
2849
  // src/v3/runtime-api.ts
663
2850
  var runtime = RuntimeAPI.getInstance();
2851
+ function iconStringForSeverity(severityNumber) {
2852
+ switch (severityNumber) {
2853
+ case SeverityNumber.UNSPECIFIED:
2854
+ return void 0;
2855
+ case SeverityNumber.TRACE:
2856
+ case SeverityNumber.TRACE2:
2857
+ case SeverityNumber.TRACE3:
2858
+ case SeverityNumber.TRACE4:
2859
+ return "trace";
2860
+ case SeverityNumber.DEBUG:
2861
+ case SeverityNumber.DEBUG2:
2862
+ case SeverityNumber.DEBUG3:
2863
+ case SeverityNumber.DEBUG4:
2864
+ return "debug";
2865
+ case SeverityNumber.INFO:
2866
+ case SeverityNumber.INFO2:
2867
+ case SeverityNumber.INFO3:
2868
+ case SeverityNumber.INFO4:
2869
+ return "info";
2870
+ case SeverityNumber.WARN:
2871
+ case SeverityNumber.WARN2:
2872
+ case SeverityNumber.WARN3:
2873
+ case SeverityNumber.WARN4:
2874
+ return "warn";
2875
+ case SeverityNumber.ERROR:
2876
+ case SeverityNumber.ERROR2:
2877
+ case SeverityNumber.ERROR3:
2878
+ case SeverityNumber.ERROR4:
2879
+ return "error";
2880
+ case SeverityNumber.FATAL:
2881
+ case SeverityNumber.FATAL2:
2882
+ case SeverityNumber.FATAL3:
2883
+ case SeverityNumber.FATAL4:
2884
+ return "fatal";
2885
+ }
2886
+ }
2887
+ __name(iconStringForSeverity, "iconStringForSeverity");
2888
+ var _SimpleClock = class _SimpleClock {
2889
+ preciseNow() {
2890
+ const now = new PreciseDate();
2891
+ const nowStruct = now.toStruct();
2892
+ return [
2893
+ nowStruct.seconds,
2894
+ nowStruct.nanos
2895
+ ];
2896
+ }
2897
+ reset() {
2898
+ }
2899
+ };
2900
+ __name(_SimpleClock, "SimpleClock");
2901
+ var SimpleClock = _SimpleClock;
2902
+
2903
+ // src/v3/clock/index.ts
2904
+ var API_NAME2 = "clock";
2905
+ var SIMPLE_CLOCK = new SimpleClock();
2906
+ var _getClock, getClock_fn;
2907
+ var _ClockAPI = class _ClockAPI {
2908
+ constructor() {
2909
+ __privateAdd(this, _getClock);
2910
+ }
2911
+ static getInstance() {
2912
+ if (!this._instance) {
2913
+ this._instance = new _ClockAPI();
2914
+ }
2915
+ return this._instance;
2916
+ }
2917
+ setGlobalClock(clock2) {
2918
+ return registerGlobal(API_NAME2, clock2);
2919
+ }
2920
+ preciseNow() {
2921
+ return __privateMethod(this, _getClock, getClock_fn).call(this).preciseNow();
2922
+ }
2923
+ reset() {
2924
+ __privateMethod(this, _getClock, getClock_fn).call(this).reset();
2925
+ }
2926
+ };
2927
+ _getClock = new WeakSet();
2928
+ getClock_fn = /* @__PURE__ */ __name(function() {
2929
+ return getGlobal(API_NAME2) ?? SIMPLE_CLOCK;
2930
+ }, "#getClock");
2931
+ __name(_ClockAPI, "ClockAPI");
2932
+ var ClockAPI = _ClockAPI;
2933
+
2934
+ // src/v3/clock-api.ts
2935
+ var clock = ClockAPI.getInstance();
2936
+
2937
+ // src/v3/logger/taskLogger.ts
664
2938
  var logLevels = [
2939
+ "none",
665
2940
  "error",
666
2941
  "warn",
667
2942
  "log",
668
2943
  "info",
669
2944
  "debug"
670
2945
  ];
671
- var _emitLog, emitLog_fn;
2946
+ var _emitLog, emitLog_fn, _getTimestampInHrTime, getTimestampInHrTime_fn;
672
2947
  var _OtelTaskLogger = class _OtelTaskLogger {
673
2948
  constructor(_config) {
674
2949
  __privateAdd(this, _emitLog);
2950
+ __privateAdd(this, _getTimestampInHrTime);
675
2951
  this._config = _config;
676
2952
  this._level = logLevels.indexOf(_config.level);
677
2953
  }
678
2954
  debug(message, properties) {
679
- if (this._level < 4)
2955
+ if (this._level < 5)
680
2956
  return;
681
- __privateMethod(this, _emitLog, emitLog_fn).call(this, message, "debug", SeverityNumber.DEBUG, properties);
2957
+ __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "debug", SeverityNumber.DEBUG, properties);
682
2958
  }
683
2959
  log(message, properties) {
684
- if (this._level < 2)
2960
+ if (this._level < 3)
685
2961
  return;
686
- __privateMethod(this, _emitLog, emitLog_fn).call(this, message, "log", SeverityNumber.INFO, properties);
2962
+ __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "log", SeverityNumber.INFO, properties);
687
2963
  }
688
2964
  info(message, properties) {
689
- if (this._level < 3)
2965
+ if (this._level < 4)
690
2966
  return;
691
- __privateMethod(this, _emitLog, emitLog_fn).call(this, message, "info", SeverityNumber.INFO, properties);
2967
+ __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "info", SeverityNumber.INFO, properties);
692
2968
  }
693
2969
  warn(message, properties) {
694
- if (this._level < 1)
2970
+ if (this._level < 2)
695
2971
  return;
696
- __privateMethod(this, _emitLog, emitLog_fn).call(this, message, "warn", SeverityNumber.WARN, properties);
2972
+ __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "warn", SeverityNumber.WARN, properties);
697
2973
  }
698
2974
  error(message, properties) {
699
- if (this._level < 0)
2975
+ if (this._level < 1)
700
2976
  return;
701
- __privateMethod(this, _emitLog, emitLog_fn).call(this, message, "error", SeverityNumber.ERROR, properties);
2977
+ __privateMethod(this, _emitLog, emitLog_fn).call(this, message, __privateMethod(this, _getTimestampInHrTime, getTimestampInHrTime_fn).call(this), "error", SeverityNumber.ERROR, properties);
2978
+ }
2979
+ trace(name, fn, options) {
2980
+ return this._config.tracer.startActiveSpan(name, fn, options);
702
2981
  }
703
2982
  };
704
2983
  _emitLog = new WeakSet();
705
- emitLog_fn = /* @__PURE__ */ __name(function(message, severityText, severityNumber, properties) {
2984
+ emitLog_fn = /* @__PURE__ */ __name(function(message, timestamp, severityText, severityNumber, properties) {
2985
+ let attributes = {
2986
+ ...flattenAttributes(properties)
2987
+ };
2988
+ const icon = iconStringForSeverity(severityNumber);
2989
+ if (icon !== void 0) {
2990
+ attributes[SemanticInternalAttributes.STYLE_ICON] = icon;
2991
+ }
706
2992
  this._config.logger.emit({
707
2993
  severityNumber,
708
2994
  severityText,
709
2995
  body: message,
710
- attributes: {
711
- ...flattenAttributes(properties),
712
- "log.type": "logger"
713
- }
2996
+ attributes,
2997
+ timestamp
714
2998
  });
715
2999
  }, "#emitLog");
3000
+ _getTimestampInHrTime = new WeakSet();
3001
+ getTimestampInHrTime_fn = /* @__PURE__ */ __name(function() {
3002
+ return clock.preciseNow();
3003
+ }, "#getTimestampInHrTime");
716
3004
  __name(_OtelTaskLogger, "OtelTaskLogger");
717
3005
  var OtelTaskLogger = _OtelTaskLogger;
718
3006
  var _NoopTaskLogger = class _NoopTaskLogger {
@@ -726,12 +3014,15 @@ var _NoopTaskLogger = class _NoopTaskLogger {
726
3014
  }
727
3015
  error() {
728
3016
  }
3017
+ trace(name, fn) {
3018
+ return fn({});
3019
+ }
729
3020
  };
730
3021
  __name(_NoopTaskLogger, "NoopTaskLogger");
731
3022
  var NoopTaskLogger = _NoopTaskLogger;
732
3023
 
733
3024
  // src/v3/logger/index.ts
734
- var API_NAME2 = "logger";
3025
+ var API_NAME3 = "logger";
735
3026
  var NOOP_TASK_LOGGER = new NoopTaskLogger();
736
3027
  var _getTaskLogger, getTaskLogger_fn;
737
3028
  var _LoggerAPI = class _LoggerAPI {
@@ -745,10 +3036,10 @@ var _LoggerAPI = class _LoggerAPI {
745
3036
  return this._instance;
746
3037
  }
747
3038
  disable() {
748
- unregisterGlobal(API_NAME2);
3039
+ unregisterGlobal(API_NAME3);
749
3040
  }
750
3041
  setGlobalTaskLogger(taskLogger) {
751
- return registerGlobal(API_NAME2, taskLogger);
3042
+ return registerGlobal(API_NAME3, taskLogger);
752
3043
  }
753
3044
  debug(message, metadata) {
754
3045
  __privateMethod(this, _getTaskLogger, getTaskLogger_fn).call(this).debug(message, metadata);
@@ -765,10 +3056,13 @@ var _LoggerAPI = class _LoggerAPI {
765
3056
  error(message, metadata) {
766
3057
  __privateMethod(this, _getTaskLogger, getTaskLogger_fn).call(this).error(message, metadata);
767
3058
  }
3059
+ trace(name, fn) {
3060
+ return __privateMethod(this, _getTaskLogger, getTaskLogger_fn).call(this).trace(name, fn);
3061
+ }
768
3062
  };
769
3063
  _getTaskLogger = new WeakSet();
770
3064
  getTaskLogger_fn = /* @__PURE__ */ __name(function() {
771
- return getGlobal(API_NAME2) ?? NOOP_TASK_LOGGER;
3065
+ return getGlobal(API_NAME3) ?? NOOP_TASK_LOGGER;
772
3066
  }, "#getTaskLogger");
773
3067
  __name(_LoggerAPI, "LoggerAPI");
774
3068
  var LoggerAPI = _LoggerAPI;
@@ -776,47 +3070,145 @@ var LoggerAPI = _LoggerAPI;
776
3070
  // src/v3/logger-api.ts
777
3071
  var logger = LoggerAPI.getInstance();
778
3072
 
779
- // src/v3/semanticInternalAttributes.ts
780
- var SemanticInternalAttributes = {
781
- ENVIRONMENT_ID: "ctx.environment.id",
782
- ENVIRONMENT_TYPE: "ctx.environment.type",
783
- ORGANIZATION_ID: "ctx.organization.id",
784
- PROJECT_ID: "ctx.project.id",
785
- PROJECT_REF: "ctx.project.ref",
786
- ATTEMPT_ID: "ctx.attempt.id",
787
- ATTEMP_NUMBER: "ctx.attempt.number",
788
- RUN_ID: "ctx.run.id",
789
- TASK_SLUG: "ctx.task.id",
790
- TASK_PATH: "ctx.task.filePath",
791
- TASK_EXPORT_NAME: "ctx.task.exportName",
792
- SPAN_PARTIAL: "$span.partial",
793
- SPAN_ID: "$span.span_id",
794
- OUTPUT: "$output",
795
- STYLE: "$style",
796
- STYLE_ICON: "$style.icon",
797
- METADATA: "$metadata",
798
- TRIGGER: "$trigger",
799
- PAYLOAD: "$payload",
800
- WORKER_ID: "worker.id",
801
- WORKER_VERSION: "worker.version",
802
- CLI_VERSION: "cli.version",
803
- SDK_VERSION: "sdk.version",
804
- SDK_LANGUAGE: "sdk.language"
805
- };
3073
+ // src/v3/limits.ts
3074
+ var OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = 256;
3075
+ var OTEL_LOG_ATTRIBUTE_COUNT_LIMIT = 256;
3076
+ var OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;
3077
+ var OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;
3078
+ var OTEL_SPAN_EVENT_COUNT_LIMIT = 10;
3079
+ var OTEL_LINK_COUNT_LIMIT = 2;
3080
+ var OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 10;
3081
+ var OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 10;
3082
+ var OFFLOAD_IO_PACKET_LENGTH_LIMIT = 128 * 1024;
3083
+ function imposeAttributeLimits(attributes) {
3084
+ const newAttributes = {};
3085
+ for (const [key, value] of Object.entries(attributes)) {
3086
+ if (calculateAttributeValueLength(value) > OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) {
3087
+ continue;
3088
+ }
3089
+ if (Object.keys(newAttributes).length >= OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) {
3090
+ break;
3091
+ }
3092
+ newAttributes[key] = value;
3093
+ }
3094
+ return newAttributes;
3095
+ }
3096
+ __name(imposeAttributeLimits, "imposeAttributeLimits");
3097
+ function calculateAttributeValueLength(value) {
3098
+ if (value === void 0 || value === null) {
3099
+ return 0;
3100
+ }
3101
+ if (typeof value === "string") {
3102
+ return value.length;
3103
+ }
3104
+ if (typeof value === "number") {
3105
+ return 8;
3106
+ }
3107
+ if (typeof value === "boolean") {
3108
+ return 4;
3109
+ }
3110
+ if (Array.isArray(value)) {
3111
+ return value.reduce((acc, v) => acc + calculateAttributeValueLength(v), 0);
3112
+ }
3113
+ return 0;
3114
+ }
3115
+ __name(calculateAttributeValueLength, "calculateAttributeValueLength");
3116
+ function dateDifference(date1, date2) {
3117
+ return Math.abs(date1.getTime() - date2.getTime());
3118
+ }
3119
+ __name(dateDifference, "dateDifference");
3120
+ function formatDuration(start, end, options) {
3121
+ if (!start || !end) {
3122
+ return "\u2013";
3123
+ }
3124
+ return formatDurationMilliseconds(dateDifference(start, end), options);
3125
+ }
3126
+ __name(formatDuration, "formatDuration");
3127
+ function nanosecondsToMilliseconds(nanoseconds) {
3128
+ return nanoseconds / 1e6;
3129
+ }
3130
+ __name(nanosecondsToMilliseconds, "nanosecondsToMilliseconds");
3131
+ function millisecondsToNanoseconds(milliseconds) {
3132
+ return milliseconds * 1e6;
3133
+ }
3134
+ __name(millisecondsToNanoseconds, "millisecondsToNanoseconds");
3135
+ function formatDurationNanoseconds(nanoseconds, options) {
3136
+ return formatDurationMilliseconds(nanosecondsToMilliseconds(nanoseconds), options);
3137
+ }
3138
+ __name(formatDurationNanoseconds, "formatDurationNanoseconds");
3139
+ var aboveOneSecondUnits = [
3140
+ "d",
3141
+ "h",
3142
+ "m",
3143
+ "s"
3144
+ ];
3145
+ var belowOneSecondUnits = [
3146
+ "ms"
3147
+ ];
3148
+ function formatDurationMilliseconds(milliseconds, options) {
3149
+ let duration = humanizeDuration(milliseconds, {
3150
+ units: options?.units ? options.units : milliseconds < 1e3 ? belowOneSecondUnits : aboveOneSecondUnits,
3151
+ maxDecimalPoints: options?.maxDecimalPoints ?? 1,
3152
+ largest: 2
3153
+ });
3154
+ if (!options) {
3155
+ return duration;
3156
+ }
3157
+ switch (options.style) {
3158
+ case "short":
3159
+ duration = duration.replace(" milliseconds", "ms");
3160
+ duration = duration.replace(" millisecond", "ms");
3161
+ duration = duration.replace(" seconds", "s");
3162
+ duration = duration.replace(" second", "s");
3163
+ duration = duration.replace(" minutes", "m");
3164
+ duration = duration.replace(" minute", "m");
3165
+ duration = duration.replace(" hours", "h");
3166
+ duration = duration.replace(" hour", "h");
3167
+ duration = duration.replace(" days", "d");
3168
+ duration = duration.replace(" day", "d");
3169
+ duration = duration.replace(" weeks", "w");
3170
+ duration = duration.replace(" week", "w");
3171
+ duration = duration.replace(" months", "mo");
3172
+ duration = duration.replace(" month", "mo");
3173
+ duration = duration.replace(" years", "y");
3174
+ duration = duration.replace(" year", "y");
3175
+ }
3176
+ return duration;
3177
+ }
3178
+ __name(formatDurationMilliseconds, "formatDurationMilliseconds");
3179
+ function formatDurationInDays(milliseconds) {
3180
+ let duration = humanizeDuration(milliseconds, {
3181
+ maxDecimalPoints: 0,
3182
+ largest: 2,
3183
+ units: [
3184
+ "d"
3185
+ ]
3186
+ });
3187
+ return duration;
3188
+ }
3189
+ __name(formatDurationInDays, "formatDurationInDays");
806
3190
 
807
3191
  // src/v3/runtime/devRuntimeManager.ts
808
3192
  var _DevRuntimeManager = class _DevRuntimeManager {
809
- constructor(options) {
810
- this.options = options;
811
- this._taskWaits = /* @__PURE__ */ new Map();
3193
+ constructor() {
3194
+ __publicField(this, "_taskWaits", /* @__PURE__ */ new Map());
3195
+ __publicField(this, "_batchWaits", /* @__PURE__ */ new Map());
3196
+ __publicField(this, "_tasks", /* @__PURE__ */ new Map());
3197
+ __publicField(this, "_pendingCompletionNotifications", /* @__PURE__ */ new Map());
812
3198
  }
813
3199
  disable() {
814
3200
  }
3201
+ registerTasks(tasks) {
3202
+ for (const task of tasks) {
3203
+ this._tasks.set(task.id, task);
3204
+ }
3205
+ }
3206
+ getTaskMetadata(id) {
3207
+ return this._tasks.get(id);
3208
+ }
815
3209
  async waitForDuration(ms) {
816
- return this.options.tracer.startActiveSpan("wait for duration", async (span) => {
817
- return new Promise((resolve) => {
818
- setTimeout(resolve, ms);
819
- });
3210
+ return new Promise((resolve) => {
3211
+ setTimeout(resolve, ms);
820
3212
  });
821
3213
  }
822
3214
  async waitUntil(date) {
@@ -825,27 +3217,215 @@ var _DevRuntimeManager = class _DevRuntimeManager {
825
3217
  });
826
3218
  }
827
3219
  async waitForTask(params) {
828
- return this.options.tracer.startActiveSpan("wait for task", async (span) => {
829
- span.setAttribute("trigger.task.run.id", params.id);
830
- const promise = new Promise((resolve, reject) => {
831
- this._taskWaits.set(params.id, {
3220
+ const pendingCompletion = this._pendingCompletionNotifications.get(params.id);
3221
+ if (pendingCompletion) {
3222
+ this._pendingCompletionNotifications.delete(params.id);
3223
+ return pendingCompletion;
3224
+ }
3225
+ const promise = new Promise((resolve, reject) => {
3226
+ this._taskWaits.set(params.id, {
3227
+ resolve,
3228
+ reject
3229
+ });
3230
+ });
3231
+ return await promise;
3232
+ }
3233
+ async waitForBatch(params) {
3234
+ if (!params.runs.length) {
3235
+ return Promise.resolve({
3236
+ id: params.id,
3237
+ items: []
3238
+ });
3239
+ }
3240
+ const promise = Promise.all(params.runs.map((runId) => {
3241
+ return new Promise((resolve, reject) => {
3242
+ const pendingCompletion = this._pendingCompletionNotifications.get(runId);
3243
+ if (pendingCompletion) {
3244
+ this._pendingCompletionNotifications.delete(runId);
3245
+ if (pendingCompletion.ok) {
3246
+ resolve(pendingCompletion);
3247
+ } else {
3248
+ reject(pendingCompletion);
3249
+ }
3250
+ return;
3251
+ }
3252
+ this._taskWaits.set(runId, {
832
3253
  resolve,
833
3254
  reject
834
3255
  });
835
3256
  });
836
- return await promise;
837
- });
3257
+ }));
3258
+ const results = await promise;
3259
+ return {
3260
+ id: params.id,
3261
+ items: results
3262
+ };
838
3263
  }
839
3264
  resumeTask(completion, execution) {
840
3265
  const wait = this._taskWaits.get(execution.run.id);
841
- if (wait) {
3266
+ if (!wait) {
3267
+ this._pendingCompletionNotifications.set(execution.run.id, completion);
3268
+ return;
3269
+ }
3270
+ if (completion.ok) {
842
3271
  wait.resolve(completion);
843
- this._taskWaits.delete(execution.run.id);
3272
+ } else {
3273
+ wait.reject(completion);
844
3274
  }
3275
+ this._taskWaits.delete(execution.run.id);
845
3276
  }
846
3277
  };
847
3278
  __name(_DevRuntimeManager, "DevRuntimeManager");
848
3279
  var DevRuntimeManager = _DevRuntimeManager;
3280
+ var _ProdRuntimeManager = class _ProdRuntimeManager {
3281
+ constructor(ipc, options = {}) {
3282
+ this.ipc = ipc;
3283
+ this.options = options;
3284
+ this._taskWaits = /* @__PURE__ */ new Map();
3285
+ this._batchWaits = /* @__PURE__ */ new Map();
3286
+ this._tasks = /* @__PURE__ */ new Map();
3287
+ }
3288
+ disable() {
3289
+ }
3290
+ registerTasks(tasks) {
3291
+ for (const task of tasks) {
3292
+ this._tasks.set(task.id, task);
3293
+ }
3294
+ }
3295
+ getTaskMetadata(id) {
3296
+ return this._tasks.get(id);
3297
+ }
3298
+ async waitForDuration(ms) {
3299
+ const now = Date.now();
3300
+ const resolveAfterDuration = setTimeout$1(ms, "duration");
3301
+ if (ms <= this.waitThresholdInMs) {
3302
+ await resolveAfterDuration;
3303
+ return;
3304
+ }
3305
+ const waitForRestore = new Promise((resolve, reject) => {
3306
+ this._waitForRestore = {
3307
+ resolve,
3308
+ reject
3309
+ };
3310
+ });
3311
+ const { willCheckpointAndRestore } = await this.ipc.sendWithAck("WAIT_FOR_DURATION", {
3312
+ ms,
3313
+ now
3314
+ });
3315
+ if (!willCheckpointAndRestore) {
3316
+ await resolveAfterDuration;
3317
+ return;
3318
+ }
3319
+ this.ipc.send("READY_FOR_CHECKPOINT", {});
3320
+ await Promise.race([
3321
+ waitForRestore,
3322
+ resolveAfterDuration
3323
+ ]);
3324
+ this.ipc.send("CANCEL_CHECKPOINT", {});
3325
+ }
3326
+ resumeAfterRestore() {
3327
+ if (!this._waitForRestore) {
3328
+ return;
3329
+ }
3330
+ clock.reset();
3331
+ this._waitForRestore.resolve("restore");
3332
+ this._waitForRestore = void 0;
3333
+ }
3334
+ async waitUntil(date) {
3335
+ return this.waitForDuration(date.getTime() - Date.now());
3336
+ }
3337
+ async waitForTask(params) {
3338
+ const promise = new Promise((resolve, reject) => {
3339
+ this._taskWaits.set(params.id, {
3340
+ resolve,
3341
+ reject
3342
+ });
3343
+ });
3344
+ await this.ipc.send("WAIT_FOR_TASK", {
3345
+ friendlyId: params.id
3346
+ });
3347
+ return await promise;
3348
+ }
3349
+ async waitForBatch(params) {
3350
+ if (!params.runs.length) {
3351
+ return Promise.resolve({
3352
+ id: params.id,
3353
+ items: []
3354
+ });
3355
+ }
3356
+ const promise = Promise.all(params.runs.map((runId) => {
3357
+ return new Promise((resolve, reject) => {
3358
+ this._taskWaits.set(runId, {
3359
+ resolve,
3360
+ reject
3361
+ });
3362
+ });
3363
+ }));
3364
+ await this.ipc.send("WAIT_FOR_BATCH", {
3365
+ batchFriendlyId: params.id,
3366
+ runFriendlyIds: params.runs
3367
+ });
3368
+ const results = await promise;
3369
+ return {
3370
+ id: params.id,
3371
+ items: results
3372
+ };
3373
+ }
3374
+ resumeTask(completion, execution) {
3375
+ const wait = this._taskWaits.get(execution.run.id);
3376
+ if (!wait) {
3377
+ return;
3378
+ }
3379
+ if (completion.ok) {
3380
+ wait.resolve(completion);
3381
+ } else {
3382
+ wait.reject(completion);
3383
+ }
3384
+ this._taskWaits.delete(execution.run.id);
3385
+ }
3386
+ get waitThresholdInMs() {
3387
+ return this.options.waitThresholdInMs ?? 3e4;
3388
+ }
3389
+ };
3390
+ __name(_ProdRuntimeManager, "ProdRuntimeManager");
3391
+ var ProdRuntimeManager = _ProdRuntimeManager;
3392
+ var _originClockTime, originClockTime_get, _originPreciseDate, originPreciseDate_get;
3393
+ var _PreciseWallClock = class _PreciseWallClock {
3394
+ constructor(options = {}) {
3395
+ __privateAdd(this, _originClockTime);
3396
+ __privateAdd(this, _originPreciseDate);
3397
+ this._origin = {
3398
+ clockTime: options.origin ?? process.hrtime(),
3399
+ preciseDate: options.now ?? new PreciseDate()
3400
+ };
3401
+ }
3402
+ preciseNow() {
3403
+ const elapsedHrTime = process.hrtime(__privateGet(this, _originClockTime, originClockTime_get));
3404
+ const elapsedNanoseconds = BigInt(elapsedHrTime[0]) * BigInt(1e9) + BigInt(elapsedHrTime[1]);
3405
+ const preciseDate = new PreciseDate(__privateGet(this, _originPreciseDate, originPreciseDate_get).getFullTime() + elapsedNanoseconds);
3406
+ const dateStruct = preciseDate.toStruct();
3407
+ return [
3408
+ dateStruct.seconds,
3409
+ dateStruct.nanos
3410
+ ];
3411
+ }
3412
+ reset() {
3413
+ this._origin = {
3414
+ clockTime: process.hrtime(),
3415
+ preciseDate: new PreciseDate()
3416
+ };
3417
+ }
3418
+ };
3419
+ _originClockTime = new WeakSet();
3420
+ originClockTime_get = /* @__PURE__ */ __name(function() {
3421
+ return this._origin.clockTime;
3422
+ }, "#originClockTime");
3423
+ _originPreciseDate = new WeakSet();
3424
+ originPreciseDate_get = /* @__PURE__ */ __name(function() {
3425
+ return this._origin.preciseDate;
3426
+ }, "#originPreciseDate");
3427
+ __name(_PreciseWallClock, "PreciseWallClock");
3428
+ var PreciseWallClock = _PreciseWallClock;
849
3429
  var _TriggerTracer = class _TriggerTracer {
850
3430
  constructor(_config) {
851
3431
  this._config = _config;
@@ -874,7 +3454,8 @@ var _TriggerTracer = class _TriggerTracer {
874
3454
  const attributes = options?.attributes ?? {};
875
3455
  return this.tracer.startActiveSpan(name, {
876
3456
  ...options,
877
- attributes
3457
+ attributes,
3458
+ startTime: clock.preciseNow()
878
3459
  }, parentContext, async (span) => {
879
3460
  this.tracer.startSpan(name, {
880
3461
  ...options,
@@ -895,57 +3476,72 @@ var _TriggerTracer = class _TriggerTracer {
895
3476
  });
896
3477
  throw e;
897
3478
  } finally {
898
- span.end();
3479
+ span.end(clock.preciseNow());
3480
+ }
3481
+ });
3482
+ }
3483
+ startSpan(name, options, ctx) {
3484
+ const parentContext = ctx ?? context.active();
3485
+ const attributes = options?.attributes ?? {};
3486
+ const span = this.tracer.startSpan(name, options, ctx);
3487
+ this.tracer.startSpan(name, {
3488
+ ...options,
3489
+ attributes: {
3490
+ ...attributes,
3491
+ [SemanticInternalAttributes.SPAN_PARTIAL]: true,
3492
+ [SemanticInternalAttributes.SPAN_ID]: span.spanContext().spanId
899
3493
  }
900
- });
3494
+ }, parentContext).end();
3495
+ return span;
901
3496
  }
902
3497
  };
903
3498
  __name(_TriggerTracer, "TriggerTracer");
904
3499
  var TriggerTracer = _TriggerTracer;
905
- var _handleLog, handleLog_fn, _getAttributes, getAttributes_fn;
3500
+ var _handleLog, handleLog_fn, _getTimestampInHrTime2, getTimestampInHrTime_fn2, _getAttributes, getAttributes_fn;
906
3501
  var _ConsoleInterceptor = class _ConsoleInterceptor {
907
3502
  constructor(logger2) {
908
3503
  __privateAdd(this, _handleLog);
3504
+ __privateAdd(this, _getTimestampInHrTime2);
909
3505
  __privateAdd(this, _getAttributes);
910
3506
  this.logger = logger2;
911
3507
  }
912
3508
  // Intercept the console and send logs to the OpenTelemetry logger
913
3509
  // during the execution of the callback
914
- async intercept(console, callback) {
3510
+ async intercept(console2, callback) {
915
3511
  const originalConsole = {
916
- log: console.log,
917
- info: console.info,
918
- warn: console.warn,
919
- error: console.error
3512
+ log: console2.log,
3513
+ info: console2.info,
3514
+ warn: console2.warn,
3515
+ error: console2.error
920
3516
  };
921
- console.log = this.log.bind(this);
922
- console.info = this.info.bind(this);
923
- console.warn = this.warn.bind(this);
924
- console.error = this.error.bind(this);
3517
+ console2.log = this.log.bind(this);
3518
+ console2.info = this.info.bind(this);
3519
+ console2.warn = this.warn.bind(this);
3520
+ console2.error = this.error.bind(this);
925
3521
  try {
926
3522
  return await callback();
927
3523
  } finally {
928
- console.log = originalConsole.log;
929
- console.info = originalConsole.info;
930
- console.warn = originalConsole.warn;
931
- console.error = originalConsole.error;
3524
+ console2.log = originalConsole.log;
3525
+ console2.info = originalConsole.info;
3526
+ console2.warn = originalConsole.warn;
3527
+ console2.error = originalConsole.error;
932
3528
  }
933
3529
  }
934
3530
  log(...args) {
935
- __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.INFO, "Log", ...args);
3531
+ __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.INFO, __privateMethod(this, _getTimestampInHrTime2, getTimestampInHrTime_fn2).call(this), "Log", ...args);
936
3532
  }
937
3533
  info(...args) {
938
- __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.INFO, "Info", ...args);
3534
+ __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.INFO, __privateMethod(this, _getTimestampInHrTime2, getTimestampInHrTime_fn2).call(this), "Info", ...args);
939
3535
  }
940
3536
  warn(...args) {
941
- __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.WARN, "Warn", ...args);
3537
+ __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.WARN, __privateMethod(this, _getTimestampInHrTime2, getTimestampInHrTime_fn2).call(this), "Warn", ...args);
942
3538
  }
943
3539
  error(...args) {
944
- __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.ERROR, "Error", ...args);
3540
+ __privateMethod(this, _handleLog, handleLog_fn).call(this, SeverityNumber.ERROR, __privateMethod(this, _getTimestampInHrTime2, getTimestampInHrTime_fn2).call(this), "Error", ...args);
945
3541
  }
946
3542
  };
947
3543
  _handleLog = new WeakSet();
948
- handleLog_fn = /* @__PURE__ */ __name(function(severityNumber, severityText, ...args) {
3544
+ handleLog_fn = /* @__PURE__ */ __name(function(severityNumber, timestamp, severityText, ...args) {
949
3545
  const body = util.format(...args);
950
3546
  const parsed = tryParseJSON(body);
951
3547
  if (parsed.ok) {
@@ -954,9 +3550,10 @@ handleLog_fn = /* @__PURE__ */ __name(function(severityNumber, severityText, ...
954
3550
  severityText,
955
3551
  body: getLogMessage(parsed.value, severityText),
956
3552
  attributes: {
957
- ...__privateMethod(this, _getAttributes, getAttributes_fn).call(this),
3553
+ ...__privateMethod(this, _getAttributes, getAttributes_fn).call(this, severityNumber),
958
3554
  ...flattenAttributes(parsed.value)
959
- }
3555
+ },
3556
+ timestamp
960
3557
  });
961
3558
  return;
962
3559
  }
@@ -964,14 +3561,22 @@ handleLog_fn = /* @__PURE__ */ __name(function(severityNumber, severityText, ...
964
3561
  severityNumber,
965
3562
  severityText,
966
3563
  body,
967
- attributes: __privateMethod(this, _getAttributes, getAttributes_fn).call(this)
3564
+ attributes: __privateMethod(this, _getAttributes, getAttributes_fn).call(this, severityNumber),
3565
+ timestamp
968
3566
  });
969
3567
  }, "#handleLog");
3568
+ _getTimestampInHrTime2 = new WeakSet();
3569
+ getTimestampInHrTime_fn2 = /* @__PURE__ */ __name(function() {
3570
+ return clock.preciseNow();
3571
+ }, "#getTimestampInHrTime");
970
3572
  _getAttributes = new WeakSet();
971
- getAttributes_fn = /* @__PURE__ */ __name(function() {
972
- return {
973
- "log.type": "console"
974
- };
3573
+ getAttributes_fn = /* @__PURE__ */ __name(function(severityNumber1) {
3574
+ const icon = iconStringForSeverity(severityNumber1);
3575
+ let result = {};
3576
+ if (icon !== void 0) {
3577
+ result[SemanticInternalAttributes.STYLE_ICON] = icon;
3578
+ }
3579
+ return result;
975
3580
  }, "#getAttributes");
976
3581
  __name(_ConsoleInterceptor, "ConsoleInterceptor");
977
3582
  var ConsoleInterceptor = _ConsoleInterceptor;
@@ -1013,12 +3618,988 @@ function tryParseJSON(value) {
1013
3618
  }
1014
3619
  __name(tryParseJSON, "tryParseJSON");
1015
3620
 
3621
+ // src/retry.ts
3622
+ function calculateResetAt(resets, format, now = /* @__PURE__ */ new Date()) {
3623
+ if (!resets)
3624
+ return;
3625
+ switch (format) {
3626
+ case "iso_8601_duration_openai_variant": {
3627
+ return calculateISO8601DurationOpenAIVariantResetAt(resets, now);
3628
+ }
3629
+ case "iso_8601": {
3630
+ return calculateISO8601ResetAt(resets, now);
3631
+ }
3632
+ case "unix_timestamp": {
3633
+ return calculateUnixTimestampResetAt(resets, now);
3634
+ }
3635
+ case "unix_timestamp_in_ms": {
3636
+ return calculateUnixTimestampInMsResetAt(resets, now);
3637
+ }
3638
+ }
3639
+ }
3640
+ __name(calculateResetAt, "calculateResetAt");
3641
+ function calculateUnixTimestampResetAt(resets, now = /* @__PURE__ */ new Date()) {
3642
+ if (!resets)
3643
+ return void 0;
3644
+ const resetAt = parseInt(resets, 10);
3645
+ if (isNaN(resetAt))
3646
+ return void 0;
3647
+ return new Date(resetAt * 1e3);
3648
+ }
3649
+ __name(calculateUnixTimestampResetAt, "calculateUnixTimestampResetAt");
3650
+ function calculateUnixTimestampInMsResetAt(resets, now = /* @__PURE__ */ new Date()) {
3651
+ if (!resets)
3652
+ return void 0;
3653
+ const resetAt = parseInt(resets, 10);
3654
+ if (isNaN(resetAt))
3655
+ return void 0;
3656
+ return new Date(resetAt);
3657
+ }
3658
+ __name(calculateUnixTimestampInMsResetAt, "calculateUnixTimestampInMsResetAt");
3659
+ function calculateISO8601ResetAt(resets, now = /* @__PURE__ */ new Date()) {
3660
+ if (!resets)
3661
+ return void 0;
3662
+ const resetAt = new Date(resets);
3663
+ if (isNaN(resetAt.getTime()))
3664
+ return void 0;
3665
+ return resetAt;
3666
+ }
3667
+ __name(calculateISO8601ResetAt, "calculateISO8601ResetAt");
3668
+ function calculateISO8601DurationOpenAIVariantResetAt(resets, now = /* @__PURE__ */ new Date()) {
3669
+ if (!resets)
3670
+ return void 0;
3671
+ const pattern = /^(?:(\d+)d)?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+(?:\.\d+)?)s)?(?:(\d+)ms)?$/;
3672
+ const match = resets.match(pattern);
3673
+ if (!match)
3674
+ return void 0;
3675
+ const days = parseInt(match[1], 10) || 0;
3676
+ const hours = parseInt(match[2], 10) || 0;
3677
+ const minutes = parseInt(match[3], 10) || 0;
3678
+ const seconds = parseFloat(match[4]) || 0;
3679
+ const milliseconds = parseInt(match[5], 10) || 0;
3680
+ const resetAt = new Date(now);
3681
+ resetAt.setDate(resetAt.getDate() + days);
3682
+ resetAt.setHours(resetAt.getHours() + hours);
3683
+ resetAt.setMinutes(resetAt.getMinutes() + minutes);
3684
+ resetAt.setSeconds(resetAt.getSeconds() + Math.floor(seconds));
3685
+ resetAt.setMilliseconds(resetAt.getMilliseconds() + (seconds - Math.floor(seconds)) * 1e3 + milliseconds);
3686
+ return resetAt;
3687
+ }
3688
+ __name(calculateISO8601DurationOpenAIVariantResetAt, "calculateISO8601DurationOpenAIVariantResetAt");
3689
+
3690
+ // src/v3/utils/retries.ts
3691
+ var defaultRetryOptions = {
3692
+ maxAttempts: 3,
3693
+ factor: 2,
3694
+ minTimeoutInMs: 1e3,
3695
+ maxTimeoutInMs: 6e4,
3696
+ randomize: true
3697
+ };
3698
+ var defaultFetchRetryOptions = {
3699
+ byStatus: {
3700
+ "429,408,409,5xx": {
3701
+ strategy: "backoff",
3702
+ ...defaultRetryOptions
3703
+ }
3704
+ },
3705
+ connectionError: defaultRetryOptions,
3706
+ timeout: defaultRetryOptions
3707
+ };
3708
+ function calculateNextRetryDelay(options, attempt) {
3709
+ const opts = {
3710
+ ...defaultRetryOptions,
3711
+ ...options
3712
+ };
3713
+ if (attempt >= opts.maxAttempts) {
3714
+ return;
3715
+ }
3716
+ const { factor, minTimeoutInMs, maxTimeoutInMs, randomize } = opts;
3717
+ const random = randomize ? Math.random() + 1 : 1;
3718
+ const timeout = Math.min(maxTimeoutInMs, random * minTimeoutInMs * Math.pow(factor, attempt - 1));
3719
+ return Math.round(timeout);
3720
+ }
3721
+ __name(calculateNextRetryDelay, "calculateNextRetryDelay");
3722
+ function calculateResetAt2(resets, format, now = Date.now()) {
3723
+ const resetAt = calculateResetAt(resets, format, new Date(now));
3724
+ return resetAt?.getTime();
3725
+ }
3726
+ __name(calculateResetAt2, "calculateResetAt");
3727
+
3728
+ // src/v3/utils/styleAttributes.ts
3729
+ function accessoryAttributes(accessory) {
3730
+ return flattenAttributes(accessory, SemanticInternalAttributes.STYLE_ACCESSORY);
3731
+ }
3732
+ __name(accessoryAttributes, "accessoryAttributes");
3733
+
3734
+ // src/eventFilterMatches.ts
3735
+ function eventFilterMatches(payload, filter) {
3736
+ if (payload === void 0 || payload === null) {
3737
+ if (Object.entries(filter).length === 0) {
3738
+ return true;
3739
+ } else {
3740
+ return false;
3741
+ }
3742
+ }
3743
+ for (const [patternKey, patternValue] of Object.entries(filter)) {
3744
+ const payloadValue = payload[patternKey];
3745
+ if (Array.isArray(patternValue)) {
3746
+ if (patternValue.length === 0) {
3747
+ continue;
3748
+ }
3749
+ if (patternValue.every((item) => typeof item === "string")) {
3750
+ if (patternValue.includes(payloadValue)) {
3751
+ continue;
3752
+ }
3753
+ return false;
3754
+ }
3755
+ if (patternValue.every((item) => typeof item === "number")) {
3756
+ if (patternValue.includes(payloadValue)) {
3757
+ continue;
3758
+ }
3759
+ return false;
3760
+ }
3761
+ if (patternValue.every((item) => typeof item === "boolean")) {
3762
+ if (patternValue.includes(payloadValue)) {
3763
+ continue;
3764
+ }
3765
+ return false;
3766
+ }
3767
+ const objectArray = patternValue;
3768
+ if (!contentFiltersMatches(payloadValue, objectArray)) {
3769
+ return false;
3770
+ }
3771
+ continue;
3772
+ } else if (typeof patternValue === "object") {
3773
+ if (Array.isArray(payloadValue)) {
3774
+ if (!payloadValue.some((item) => eventFilterMatches(item, patternValue))) {
3775
+ return false;
3776
+ }
3777
+ } else {
3778
+ if (!eventFilterMatches(payloadValue, patternValue)) {
3779
+ return false;
3780
+ }
3781
+ }
3782
+ }
3783
+ }
3784
+ return true;
3785
+ }
3786
+ __name(eventFilterMatches, "eventFilterMatches");
3787
+ function contentFiltersMatches(actualValue, contentFilters) {
3788
+ for (const contentFilter of contentFilters) {
3789
+ if (typeof contentFilter === "object") {
3790
+ Object.entries(contentFilter)[0];
3791
+ if (!contentFilterMatches(actualValue, contentFilter)) {
3792
+ return false;
3793
+ }
3794
+ }
3795
+ }
3796
+ return true;
3797
+ }
3798
+ __name(contentFiltersMatches, "contentFiltersMatches");
3799
+ function contentFilterMatches(actualValue, contentFilter) {
3800
+ if ("$endsWith" in contentFilter) {
3801
+ if (typeof actualValue !== "string") {
3802
+ return false;
3803
+ }
3804
+ return actualValue.endsWith(contentFilter.$endsWith);
3805
+ }
3806
+ if ("$startsWith" in contentFilter) {
3807
+ if (typeof actualValue !== "string") {
3808
+ return false;
3809
+ }
3810
+ return actualValue.startsWith(contentFilter.$startsWith);
3811
+ }
3812
+ if ("$anythingBut" in contentFilter) {
3813
+ if (Array.isArray(contentFilter.$anythingBut)) {
3814
+ if (contentFilter.$anythingBut.includes(actualValue)) {
3815
+ return false;
3816
+ }
3817
+ }
3818
+ if (contentFilter.$anythingBut === actualValue) {
3819
+ return false;
3820
+ }
3821
+ return true;
3822
+ }
3823
+ if ("$exists" in contentFilter) {
3824
+ if (contentFilter.$exists) {
3825
+ return actualValue !== void 0;
3826
+ }
3827
+ return actualValue === void 0;
3828
+ }
3829
+ if ("$gt" in contentFilter) {
3830
+ if (typeof actualValue !== "number") {
3831
+ return false;
3832
+ }
3833
+ return actualValue > contentFilter.$gt;
3834
+ }
3835
+ if ("$lt" in contentFilter) {
3836
+ if (typeof actualValue !== "number") {
3837
+ return false;
3838
+ }
3839
+ return actualValue < contentFilter.$lt;
3840
+ }
3841
+ if ("$gte" in contentFilter) {
3842
+ if (typeof actualValue !== "number") {
3843
+ return false;
3844
+ }
3845
+ return actualValue >= contentFilter.$gte;
3846
+ }
3847
+ if ("$lte" in contentFilter) {
3848
+ if (typeof actualValue !== "number") {
3849
+ return false;
3850
+ }
3851
+ return actualValue <= contentFilter.$lte;
3852
+ }
3853
+ if ("$between" in contentFilter) {
3854
+ if (typeof actualValue !== "number") {
3855
+ return false;
3856
+ }
3857
+ return actualValue >= contentFilter.$between[0] && actualValue <= contentFilter.$between[1];
3858
+ }
3859
+ if ("$includes" in contentFilter) {
3860
+ if (Array.isArray(actualValue)) {
3861
+ return actualValue.includes(contentFilter.$includes);
3862
+ }
3863
+ return false;
3864
+ }
3865
+ if ("$ignoreCaseEquals" in contentFilter) {
3866
+ if (typeof actualValue !== "string") {
3867
+ return false;
3868
+ }
3869
+ return actualValue.localeCompare(contentFilter.$ignoreCaseEquals, void 0, {
3870
+ sensitivity: "accent"
3871
+ }) === 0;
3872
+ }
3873
+ if ("$isNull" in contentFilter) {
3874
+ if (contentFilter.$isNull) {
3875
+ return actualValue === null;
3876
+ }
3877
+ return actualValue !== null;
3878
+ }
3879
+ if ("$not" in contentFilter) {
3880
+ if (Array.isArray(actualValue)) {
3881
+ return !actualValue.includes(contentFilter.$not);
3882
+ } else if (typeof actualValue === "number" || typeof actualValue === "boolean" || typeof actualValue === "string") {
3883
+ return actualValue !== contentFilter.$not;
3884
+ }
3885
+ return false;
3886
+ }
3887
+ return true;
3888
+ }
3889
+ __name(contentFilterMatches, "contentFilterMatches");
3890
+
3891
+ // src/v3/utils/omit.ts
3892
+ function omit(obj, ...keys) {
3893
+ const result = {};
3894
+ for (const key in obj) {
3895
+ if (!keys.includes(key)) {
3896
+ result[key] = obj[key];
3897
+ }
3898
+ }
3899
+ return result;
3900
+ }
3901
+ __name(omit, "omit");
3902
+ var _a2;
3903
+ var AsyncResourceDetector = (_a2 = class {
3904
+ constructor() {
3905
+ __publicField(this, "_resolved", false);
3906
+ this._promise = new Promise((resolver) => {
3907
+ this._resolver = resolver;
3908
+ });
3909
+ }
3910
+ detect(_config) {
3911
+ return new Resource({}, this._promise);
3912
+ }
3913
+ resolveWithAttributes(attributes) {
3914
+ if (!this._resolver) {
3915
+ throw new Error("Resolver not available");
3916
+ }
3917
+ if (this._resolved) {
3918
+ return;
3919
+ }
3920
+ this._resolved = true;
3921
+ this._resolver(attributes);
3922
+ }
3923
+ }, __name(_a2, "AsyncResourceDetector"), _a2);
3924
+ var _TracingSDK = class _TracingSDK {
3925
+ constructor(config) {
3926
+ this.config = config;
3927
+ this.asyncResourceDetector = new AsyncResourceDetector();
3928
+ setLogLevel(config.diagLogLevel ?? "none");
3929
+ const envResourceAttributesSerialized = getEnvVar("OTEL_RESOURCE_ATTRIBUTES");
3930
+ const envResourceAttributes = envResourceAttributesSerialized ? JSON.parse(envResourceAttributesSerialized) : {};
3931
+ const commonResources = detectResourcesSync({
3932
+ detectors: [
3933
+ this.asyncResourceDetector,
3934
+ processDetectorSync
3935
+ ]
3936
+ }).merge(new Resource({
3937
+ [SemanticResourceAttributes.CLOUD_PROVIDER]: "trigger.dev",
3938
+ [SemanticInternalAttributes.TRIGGER]: true
3939
+ })).merge(config.resource ?? new Resource({})).merge(new Resource(envResourceAttributes));
3940
+ const traceProvider = new NodeTracerProvider({
3941
+ forceFlushTimeoutMillis: config.forceFlushTimeoutMillis ?? 500,
3942
+ resource: commonResources,
3943
+ spanLimits: {
3944
+ attributeCountLimit: OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
3945
+ attributeValueLengthLimit: OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,
3946
+ eventCountLimit: OTEL_SPAN_EVENT_COUNT_LIMIT,
3947
+ attributePerEventCountLimit: OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,
3948
+ linkCountLimit: OTEL_LINK_COUNT_LIMIT,
3949
+ attributePerLinkCountLimit: OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT
3950
+ }
3951
+ });
3952
+ const spanExporter = new OTLPTraceExporter({
3953
+ url: `${config.url}/v1/traces`,
3954
+ timeoutMillis: config.forceFlushTimeoutMillis ?? 1e3
3955
+ });
3956
+ traceProvider.addSpanProcessor(new TaskContextSpanProcessor(getEnvVar("OTEL_BATCH_PROCESSING_ENABLED") === "1" ? new BatchSpanProcessor(spanExporter, {
3957
+ maxExportBatchSize: parseInt(getEnvVar("OTEL_SPAN_MAX_EXPORT_BATCH_SIZE") ?? "64"),
3958
+ scheduledDelayMillis: parseInt(getEnvVar("OTEL_SPAN_SCHEDULED_DELAY_MILLIS") ?? "200"),
3959
+ exportTimeoutMillis: parseInt(getEnvVar("OTEL_SPAN_EXPORT_TIMEOUT_MILLIS") ?? "30000"),
3960
+ maxQueueSize: parseInt(getEnvVar("OTEL_SPAN_MAX_QUEUE_SIZE") ?? "512")
3961
+ }) : new SimpleSpanProcessor(spanExporter)));
3962
+ traceProvider.register();
3963
+ registerInstrumentations({
3964
+ instrumentations: config.instrumentations ?? [],
3965
+ tracerProvider: traceProvider
3966
+ });
3967
+ const logExporter = new OTLPLogExporter({
3968
+ url: `${config.url}/v1/logs`
3969
+ });
3970
+ const loggerProvider = new LoggerProvider({
3971
+ resource: commonResources,
3972
+ logRecordLimits: {
3973
+ attributeCountLimit: OTEL_LOG_ATTRIBUTE_COUNT_LIMIT,
3974
+ attributeValueLengthLimit: OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT
3975
+ }
3976
+ });
3977
+ loggerProvider.addLogRecordProcessor(new TaskContextLogProcessor(getEnvVar("OTEL_BATCH_PROCESSING_ENABLED") === "1" ? new BatchLogRecordProcessor(logExporter, {
3978
+ maxExportBatchSize: parseInt(getEnvVar("OTEL_LOG_MAX_EXPORT_BATCH_SIZE") ?? "64"),
3979
+ scheduledDelayMillis: parseInt(getEnvVar("OTEL_LOG_SCHEDULED_DELAY_MILLIS") ?? "200"),
3980
+ exportTimeoutMillis: parseInt(getEnvVar("OTEL_LOG_EXPORT_TIMEOUT_MILLIS") ?? "30000"),
3981
+ maxQueueSize: parseInt(getEnvVar("OTEL_LOG_MAX_QUEUE_SIZE") ?? "512")
3982
+ }) : new SimpleLogRecordProcessor(logExporter)));
3983
+ this._logProvider = loggerProvider;
3984
+ this._spanExporter = spanExporter;
3985
+ this._traceProvider = traceProvider;
3986
+ logs.setGlobalLoggerProvider(loggerProvider);
3987
+ this.getLogger = loggerProvider.getLogger.bind(loggerProvider);
3988
+ this.getTracer = traceProvider.getTracer.bind(traceProvider);
3989
+ }
3990
+ async flush() {
3991
+ await this._traceProvider.forceFlush();
3992
+ await this._logProvider.forceFlush();
3993
+ }
3994
+ async shutdown() {
3995
+ await this._traceProvider.shutdown();
3996
+ await this._logProvider.shutdown();
3997
+ }
3998
+ };
3999
+ __name(_TracingSDK, "TracingSDK");
4000
+ var TracingSDK = _TracingSDK;
4001
+ function setLogLevel(level) {
4002
+ let diagLogLevel;
4003
+ switch (level) {
4004
+ case "none":
4005
+ diagLogLevel = DiagLogLevel.NONE;
4006
+ break;
4007
+ case "error":
4008
+ diagLogLevel = DiagLogLevel.ERROR;
4009
+ break;
4010
+ case "warn":
4011
+ diagLogLevel = DiagLogLevel.WARN;
4012
+ break;
4013
+ case "info":
4014
+ diagLogLevel = DiagLogLevel.INFO;
4015
+ break;
4016
+ case "debug":
4017
+ diagLogLevel = DiagLogLevel.DEBUG;
4018
+ break;
4019
+ case "verbose":
4020
+ diagLogLevel = DiagLogLevel.VERBOSE;
4021
+ break;
4022
+ case "all":
4023
+ diagLogLevel = DiagLogLevel.ALL;
4024
+ break;
4025
+ default:
4026
+ diagLogLevel = DiagLogLevel.NONE;
4027
+ }
4028
+ diag.setLogger(new DiagConsoleLogger(), diagLogLevel);
4029
+ }
4030
+ __name(setLogLevel, "setLogLevel");
4031
+
4032
+ // src/v3/otel/index.ts
4033
+ function recordSpanException(span, error) {
4034
+ if (error instanceof Error) {
4035
+ span.recordException(error);
4036
+ } else if (typeof error === "string") {
4037
+ span.recordException(new Error(error));
4038
+ } else {
4039
+ span.recordException(new Error(JSON.stringify(error)));
4040
+ }
4041
+ span.setStatus({
4042
+ code: SpanStatusCode.ERROR
4043
+ });
4044
+ }
4045
+ __name(recordSpanException, "recordSpanException");
4046
+
4047
+ // src/v3/utils/ioSerialization.ts
4048
+ async function parsePacket(value) {
4049
+ if (!value.data) {
4050
+ return void 0;
4051
+ }
4052
+ switch (value.dataType) {
4053
+ case "application/json":
4054
+ return JSON.parse(value.data);
4055
+ case "application/super+json":
4056
+ const { parse } = await loadSuperJSON();
4057
+ return parse(value.data);
4058
+ case "text/plain":
4059
+ return value.data;
4060
+ case "application/store":
4061
+ throw new Error(`Cannot parse an application/store packet (${value.data}). Needs to be imported first.`);
4062
+ default:
4063
+ return value.data;
4064
+ }
4065
+ }
4066
+ __name(parsePacket, "parsePacket");
4067
+ async function stringifyIO(value) {
4068
+ if (value === void 0) {
4069
+ return {
4070
+ dataType: "application/json"
4071
+ };
4072
+ }
4073
+ if (typeof value === "string") {
4074
+ return {
4075
+ data: value,
4076
+ dataType: "text/plain"
4077
+ };
4078
+ }
4079
+ try {
4080
+ const { stringify } = await loadSuperJSON();
4081
+ const data = stringify(value);
4082
+ return {
4083
+ data,
4084
+ dataType: "application/super+json"
4085
+ };
4086
+ } catch {
4087
+ return {
4088
+ dataType: "application/json"
4089
+ };
4090
+ }
4091
+ }
4092
+ __name(stringifyIO, "stringifyIO");
4093
+ async function conditionallyExportPacket(packet, pathPrefix, tracer) {
4094
+ if (apiClientManager.client) {
4095
+ const { needsOffloading, size } = packetRequiresOffloading(packet);
4096
+ if (needsOffloading) {
4097
+ if (!tracer) {
4098
+ return await exportPacket(packet, pathPrefix);
4099
+ } else {
4100
+ const result = await tracer.startActiveSpan("store.uploadOutput", async (span) => {
4101
+ return await exportPacket(packet, pathPrefix);
4102
+ }, {
4103
+ attributes: {
4104
+ byteLength: size,
4105
+ [SemanticInternalAttributes.STYLE_ICON]: "cloud-upload"
4106
+ }
4107
+ });
4108
+ return result ?? packet;
4109
+ }
4110
+ }
4111
+ }
4112
+ return packet;
4113
+ }
4114
+ __name(conditionallyExportPacket, "conditionallyExportPacket");
4115
+ function packetRequiresOffloading(packet) {
4116
+ if (!packet.data) {
4117
+ return {
4118
+ needsOffloading: false,
4119
+ size: 0
4120
+ };
4121
+ }
4122
+ const byteSize = Buffer.byteLength(packet.data, "utf8");
4123
+ return {
4124
+ needsOffloading: byteSize >= OFFLOAD_IO_PACKET_LENGTH_LIMIT,
4125
+ size: byteSize
4126
+ };
4127
+ }
4128
+ __name(packetRequiresOffloading, "packetRequiresOffloading");
4129
+ async function exportPacket(packet, pathPrefix) {
4130
+ const filename = `${pathPrefix}.${getPacketExtension(packet.dataType)}`;
4131
+ const presignedResponse = await apiClientManager.client.createUploadPayloadUrl(filename);
4132
+ if (presignedResponse.ok) {
4133
+ const uploadResponse = await fetch(presignedResponse.data.presignedUrl, {
4134
+ method: "PUT",
4135
+ headers: {
4136
+ "Content-Type": packet.dataType
4137
+ },
4138
+ body: packet.data
4139
+ });
4140
+ if (!uploadResponse.ok) {
4141
+ throw new Error(`Failed to upload output to ${presignedResponse.data.presignedUrl}: ${uploadResponse.statusText}`);
4142
+ }
4143
+ return {
4144
+ data: filename,
4145
+ dataType: "application/store"
4146
+ };
4147
+ }
4148
+ return packet;
4149
+ }
4150
+ __name(exportPacket, "exportPacket");
4151
+ async function conditionallyImportPacket(packet, tracer) {
4152
+ if (packet.dataType !== "application/store") {
4153
+ return packet;
4154
+ }
4155
+ if (!tracer) {
4156
+ return await importPacket(packet);
4157
+ } else {
4158
+ const result = await tracer.startActiveSpan("store.downloadPayload", async (span) => {
4159
+ return await importPacket(packet, span);
4160
+ }, {
4161
+ attributes: {
4162
+ [SemanticInternalAttributes.STYLE_ICON]: "cloud-download"
4163
+ }
4164
+ });
4165
+ return result ?? packet;
4166
+ }
4167
+ }
4168
+ __name(conditionallyImportPacket, "conditionallyImportPacket");
4169
+ async function importPacket(packet, span) {
4170
+ if (!packet.data) {
4171
+ return packet;
4172
+ }
4173
+ if (!apiClientManager.client) {
4174
+ return packet;
4175
+ }
4176
+ const presignedResponse = await apiClientManager.client.getPayloadUrl(packet.data);
4177
+ if (presignedResponse.ok) {
4178
+ const response = await fetch(presignedResponse.data.presignedUrl);
4179
+ if (!response.ok) {
4180
+ throw new Error(`Failed to import packet ${presignedResponse.data.presignedUrl}: ${response.statusText}`);
4181
+ }
4182
+ const data = await response.text();
4183
+ span?.setAttribute("size", Buffer.byteLength(data, "utf8"));
4184
+ return {
4185
+ data,
4186
+ dataType: response.headers.get("content-type") ?? "application/json"
4187
+ };
4188
+ }
4189
+ return packet;
4190
+ }
4191
+ __name(importPacket, "importPacket");
4192
+ async function createPacketAttributes(packet, dataKey, dataTypeKey) {
4193
+ if (!packet.data) {
4194
+ return;
4195
+ }
4196
+ switch (packet.dataType) {
4197
+ case "application/json":
4198
+ return {
4199
+ ...flattenAttributes(packet, dataKey),
4200
+ [dataTypeKey]: packet.dataType
4201
+ };
4202
+ case "application/super+json":
4203
+ const { parse } = await loadSuperJSON();
4204
+ if (typeof packet.data === "undefined" || packet.data === null) {
4205
+ return;
4206
+ }
4207
+ try {
4208
+ const parsed = parse(packet.data);
4209
+ const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));
4210
+ return {
4211
+ ...flattenAttributes(jsonified, dataKey),
4212
+ [dataTypeKey]: "application/json"
4213
+ };
4214
+ } catch {
4215
+ return;
4216
+ }
4217
+ case "application/store":
4218
+ return {
4219
+ [dataKey]: packet.data,
4220
+ [dataTypeKey]: packet.dataType
4221
+ };
4222
+ case "text/plain":
4223
+ return {
4224
+ [dataKey]: packet.data,
4225
+ [dataTypeKey]: packet.dataType
4226
+ };
4227
+ default:
4228
+ return;
4229
+ }
4230
+ }
4231
+ __name(createPacketAttributes, "createPacketAttributes");
4232
+ async function createPacketAttributesAsJson(data, dataType) {
4233
+ if (typeof data === "string" || typeof data === "number" || typeof data === "boolean" || data === null || data === void 0) {
4234
+ return data;
4235
+ }
4236
+ switch (dataType) {
4237
+ case "application/json":
4238
+ return imposeAttributeLimits(flattenAttributes(data, void 0));
4239
+ case "application/super+json":
4240
+ const { deserialize } = await loadSuperJSON();
4241
+ const deserialized = deserialize(data);
4242
+ const jsonify = safeJsonParse(JSON.stringify(deserialized, safeReplacer));
4243
+ return imposeAttributeLimits(flattenAttributes(jsonify, void 0));
4244
+ case "application/store":
4245
+ return data;
4246
+ default:
4247
+ return {};
4248
+ }
4249
+ }
4250
+ __name(createPacketAttributesAsJson, "createPacketAttributesAsJson");
4251
+ async function prettyPrintPacket(rawData, dataType) {
4252
+ if (rawData === void 0) {
4253
+ return "";
4254
+ }
4255
+ if (dataType === "application/super+json") {
4256
+ const { deserialize } = await loadSuperJSON();
4257
+ return await prettyPrintPacket(deserialize(rawData), "application/json");
4258
+ }
4259
+ if (dataType === "application/json") {
4260
+ return JSON.stringify(rawData, safeReplacer, 2);
4261
+ }
4262
+ if (typeof rawData === "string") {
4263
+ return rawData;
4264
+ }
4265
+ return JSON.stringify(rawData, safeReplacer, 2);
4266
+ }
4267
+ __name(prettyPrintPacket, "prettyPrintPacket");
4268
+ function safeReplacer(key, value) {
4269
+ if (typeof value === "bigint") {
4270
+ return value.toString();
4271
+ }
4272
+ if (value instanceof RegExp) {
4273
+ return value.toString();
4274
+ }
4275
+ if (value instanceof Set) {
4276
+ return Array.from(value);
4277
+ }
4278
+ if (value instanceof Map) {
4279
+ const obj = {};
4280
+ value.forEach((v, k) => {
4281
+ obj[k] = v;
4282
+ });
4283
+ return obj;
4284
+ }
4285
+ return value;
4286
+ }
4287
+ __name(safeReplacer, "safeReplacer");
4288
+ function getPacketExtension(outputType) {
4289
+ switch (outputType) {
4290
+ case "application/json":
4291
+ return "json";
4292
+ case "application/super+json":
4293
+ return "json";
4294
+ case "text/plain":
4295
+ return "txt";
4296
+ default:
4297
+ return "txt";
4298
+ }
4299
+ }
4300
+ __name(getPacketExtension, "getPacketExtension");
4301
+ async function loadSuperJSON() {
4302
+ return await import('superjson');
4303
+ }
4304
+ __name(loadSuperJSON, "loadSuperJSON");
4305
+ function safeJsonParse(value) {
4306
+ try {
4307
+ return JSON.parse(value);
4308
+ } catch {
4309
+ return;
4310
+ }
4311
+ }
4312
+ __name(safeJsonParse, "safeJsonParse");
4313
+
4314
+ // src/v3/workers/taskExecutor.ts
4315
+ var _callRun, callRun_fn, _callTaskInit, callTaskInit_fn, _callTaskCleanup, callTaskCleanup_fn, _handleError, handleError_fn;
4316
+ var _TaskExecutor = class _TaskExecutor {
4317
+ constructor(task, options) {
4318
+ __privateAdd(this, _callRun);
4319
+ __privateAdd(this, _callTaskInit);
4320
+ __privateAdd(this, _callTaskCleanup);
4321
+ __privateAdd(this, _handleError);
4322
+ this.task = task;
4323
+ this._tracingSDK = options.tracingSDK;
4324
+ this._tracer = options.tracer;
4325
+ this._consoleInterceptor = options.consoleInterceptor;
4326
+ this._config = options.projectConfig;
4327
+ this._importedConfig = options.importedConfig;
4328
+ this._handleErrorFn = options.handleErrorFn;
4329
+ }
4330
+ async execute(execution, worker, traceContext) {
4331
+ const ctx = TaskRunContext.parse(execution);
4332
+ const attemptMessage = `Attempt ${execution.attempt.number}`;
4333
+ const originalPacket = {
4334
+ data: execution.run.payload,
4335
+ dataType: execution.run.payloadType
4336
+ };
4337
+ const result = await taskContextManager.runWith({
4338
+ ctx,
4339
+ worker
4340
+ }, async () => {
4341
+ this._tracingSDK.asyncResourceDetector.resolveWithAttributes({
4342
+ ...taskContextManager.attributes,
4343
+ [SemanticInternalAttributes.SDK_VERSION]: this.task.packageVersion,
4344
+ [SemanticInternalAttributes.SDK_LANGUAGE]: "typescript"
4345
+ });
4346
+ return await this._tracer.startActiveSpan(attemptMessage, async (span) => {
4347
+ return await this._consoleInterceptor.intercept(console, async () => {
4348
+ let parsedPayload;
4349
+ let initOutput;
4350
+ try {
4351
+ const payloadPacket = await conditionallyImportPacket(originalPacket, this._tracer);
4352
+ parsedPayload = await parsePacket(payloadPacket);
4353
+ initOutput = await __privateMethod(this, _callTaskInit, callTaskInit_fn).call(this, parsedPayload, ctx);
4354
+ const output = await __privateMethod(this, _callRun, callRun_fn).call(this, parsedPayload, ctx, initOutput);
4355
+ try {
4356
+ const stringifiedOutput = await stringifyIO(output);
4357
+ const finalOutput = await conditionallyExportPacket(stringifiedOutput, `${execution.attempt.id}/output`, this._tracer);
4358
+ const attributes = await createPacketAttributes(finalOutput, SemanticInternalAttributes.OUTPUT, SemanticInternalAttributes.OUTPUT_TYPE);
4359
+ if (attributes) {
4360
+ span.setAttributes(attributes);
4361
+ }
4362
+ return {
4363
+ ok: true,
4364
+ id: execution.attempt.id,
4365
+ output: finalOutput.data,
4366
+ outputType: finalOutput.dataType
4367
+ };
4368
+ } catch (stringifyError) {
4369
+ recordSpanException(span, stringifyError);
4370
+ return {
4371
+ ok: false,
4372
+ id: execution.attempt.id,
4373
+ error: {
4374
+ type: "INTERNAL_ERROR",
4375
+ code: TaskRunErrorCodes.TASK_OUTPUT_ERROR,
4376
+ message: stringifyError instanceof Error ? stringifyError.message : typeof stringifyError === "string" ? stringifyError : void 0
4377
+ }
4378
+ };
4379
+ }
4380
+ } catch (runError) {
4381
+ try {
4382
+ const handleErrorResult = await __privateMethod(this, _handleError, handleError_fn).call(this, execution, runError, parsedPayload, ctx);
4383
+ recordSpanException(span, handleErrorResult.error ?? runError);
4384
+ return {
4385
+ id: execution.attempt.id,
4386
+ ok: false,
4387
+ error: handleErrorResult.error ? parseError(handleErrorResult.error) : parseError(runError),
4388
+ retry: handleErrorResult.status === "retry" ? handleErrorResult.retry : void 0,
4389
+ skippedRetrying: handleErrorResult.status === "skipped"
4390
+ };
4391
+ } catch (handleErrorError) {
4392
+ recordSpanException(span, handleErrorError);
4393
+ return {
4394
+ ok: false,
4395
+ id: execution.attempt.id,
4396
+ error: {
4397
+ type: "INTERNAL_ERROR",
4398
+ code: TaskRunErrorCodes.HANDLE_ERROR_ERROR,
4399
+ message: handleErrorError instanceof Error ? handleErrorError.message : typeof handleErrorError === "string" ? handleErrorError : void 0
4400
+ }
4401
+ };
4402
+ }
4403
+ } finally {
4404
+ await __privateMethod(this, _callTaskCleanup, callTaskCleanup_fn).call(this, parsedPayload, ctx, initOutput);
4405
+ }
4406
+ });
4407
+ }, {
4408
+ kind: SpanKind.CONSUMER,
4409
+ attributes: {
4410
+ [SemanticInternalAttributes.STYLE_ICON]: "attempt",
4411
+ ...accessoryAttributes({
4412
+ items: [
4413
+ {
4414
+ text: ctx.task.filePath
4415
+ },
4416
+ {
4417
+ text: `${ctx.task.exportName}.run()`
4418
+ }
4419
+ ],
4420
+ style: "codepath"
4421
+ })
4422
+ }
4423
+ }, this._tracer.extractContext(traceContext));
4424
+ });
4425
+ return result;
4426
+ }
4427
+ };
4428
+ _callRun = new WeakSet();
4429
+ callRun_fn = /* @__PURE__ */ __name(async function(payload, ctx, init) {
4430
+ const runFn = this.task.fns.run;
4431
+ const middlewareFn = this.task.fns.middleware;
4432
+ if (!runFn) {
4433
+ throw new Error("Task does not have a run function");
4434
+ }
4435
+ if (!middlewareFn) {
4436
+ return runFn(payload, {
4437
+ ctx
4438
+ });
4439
+ }
4440
+ return middlewareFn(payload, {
4441
+ ctx,
4442
+ next: async () => runFn(payload, {
4443
+ ctx,
4444
+ init
4445
+ })
4446
+ });
4447
+ }, "#callRun");
4448
+ _callTaskInit = new WeakSet();
4449
+ callTaskInit_fn = /* @__PURE__ */ __name(async function(payload1, ctx1) {
4450
+ const initFn = this.task.fns.init;
4451
+ if (!initFn) {
4452
+ return {};
4453
+ }
4454
+ return this._tracer.startActiveSpan("init", async (span) => {
4455
+ return await initFn(payload1, {
4456
+ ctx: ctx1
4457
+ });
4458
+ });
4459
+ }, "#callTaskInit");
4460
+ _callTaskCleanup = new WeakSet();
4461
+ callTaskCleanup_fn = /* @__PURE__ */ __name(async function(payload2, ctx2, init1) {
4462
+ const cleanupFn = this.task.fns.cleanup;
4463
+ if (!cleanupFn) {
4464
+ return;
4465
+ }
4466
+ return this._tracer.startActiveSpan("cleanup", async (span) => {
4467
+ return await cleanupFn(payload2, {
4468
+ ctx: ctx2,
4469
+ init: init1
4470
+ });
4471
+ });
4472
+ }, "#callTaskCleanup");
4473
+ _handleError = new WeakSet();
4474
+ handleError_fn = /* @__PURE__ */ __name(async function(execution, error, payload3, ctx3) {
4475
+ const retriesConfig = this._importedConfig?.retries ?? this._config.retries;
4476
+ const retry = this.task.retry ?? retriesConfig?.default;
4477
+ if (!retry) {
4478
+ return {
4479
+ status: "noop"
4480
+ };
4481
+ }
4482
+ const delay = calculateNextRetryDelay(retry, execution.attempt.number);
4483
+ if (execution.environment.type === "DEVELOPMENT" && typeof retriesConfig?.enabledInDev === "boolean" && !retriesConfig.enabledInDev) {
4484
+ return {
4485
+ status: "skipped"
4486
+ };
4487
+ }
4488
+ return this._tracer.startActiveSpan("handleError()", async (span) => {
4489
+ const handleErrorResult = this.task.fns.handleError ? await this.task.fns.handleError(payload3, error, {
4490
+ ctx: ctx3,
4491
+ retry,
4492
+ retryDelayInMs: delay,
4493
+ retryAt: delay ? new Date(Date.now() + delay) : void 0
4494
+ }) : this._importedConfig ? await this._handleErrorFn?.(payload3, error, {
4495
+ ctx: ctx3,
4496
+ retry,
4497
+ retryDelayInMs: delay,
4498
+ retryAt: delay ? new Date(Date.now() + delay) : void 0
4499
+ }) : void 0;
4500
+ if (!handleErrorResult) {
4501
+ return typeof delay === "undefined" ? {
4502
+ status: "noop"
4503
+ } : {
4504
+ status: "retry",
4505
+ retry: {
4506
+ timestamp: Date.now() + delay,
4507
+ delay
4508
+ }
4509
+ };
4510
+ }
4511
+ if (handleErrorResult.skipRetrying) {
4512
+ return {
4513
+ status: "skipped",
4514
+ error: handleErrorResult.error
4515
+ };
4516
+ }
4517
+ if (typeof handleErrorResult.retryAt !== "undefined") {
4518
+ return {
4519
+ status: "retry",
4520
+ retry: {
4521
+ timestamp: handleErrorResult.retryAt.getTime(),
4522
+ delay: handleErrorResult.retryAt.getTime() - Date.now()
4523
+ },
4524
+ error: handleErrorResult.error
4525
+ };
4526
+ }
4527
+ if (typeof handleErrorResult.retryDelayInMs === "number") {
4528
+ return {
4529
+ status: "retry",
4530
+ retry: {
4531
+ timestamp: Date.now() + handleErrorResult.retryDelayInMs,
4532
+ delay: handleErrorResult.retryDelayInMs
4533
+ },
4534
+ error: handleErrorResult.error
4535
+ };
4536
+ }
4537
+ if (handleErrorResult.retry && typeof handleErrorResult.retry === "object") {
4538
+ const delay2 = calculateNextRetryDelay(handleErrorResult.retry, execution.attempt.number);
4539
+ return typeof delay2 === "undefined" ? {
4540
+ status: "noop",
4541
+ error: handleErrorResult.error
4542
+ } : {
4543
+ status: "retry",
4544
+ retry: {
4545
+ timestamp: Date.now() + delay2,
4546
+ delay: delay2
4547
+ },
4548
+ error: handleErrorResult.error
4549
+ };
4550
+ }
4551
+ return {
4552
+ status: "noop",
4553
+ error: handleErrorResult.error
4554
+ };
4555
+ }, {
4556
+ attributes: {
4557
+ [SemanticInternalAttributes.STYLE_ICON]: "exclamation-circle"
4558
+ }
4559
+ });
4560
+ }, "#handleError");
4561
+ __name(_TaskExecutor, "TaskExecutor");
4562
+ var TaskExecutor = _TaskExecutor;
4563
+
4564
+ // package.json
4565
+ var dependencies = {
4566
+ "@google-cloud/precise-date": "^4.0.0",
4567
+ "@opentelemetry/api": "^1.8.0",
4568
+ "@opentelemetry/api-logs": "^0.48.0",
4569
+ "@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
4570
+ "@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
4571
+ "@opentelemetry/instrumentation": "^0.49.1",
4572
+ "@opentelemetry/resources": "^1.22.0",
4573
+ "@opentelemetry/sdk-logs": "^0.49.1",
4574
+ "@opentelemetry/sdk-node": "^0.49.1",
4575
+ "@opentelemetry/sdk-trace-base": "^1.22.0",
4576
+ "@opentelemetry/sdk-trace-node": "^1.22.0",
4577
+ "@opentelemetry/semantic-conventions": "^1.22.0",
4578
+ "humanize-duration": "^3.27.3",
4579
+ "socket.io": "^4.7.4",
4580
+ "socket.io-client": "^4.7.4",
4581
+ superjson: "^2.2.1",
4582
+ ulidx: "^2.2.1",
4583
+ zod: "3.22.3",
4584
+ "zod-error": "1.5.0"
4585
+ };
4586
+
4587
+ // src/v3/utils/detectDependencyVersion.ts
4588
+ function detectDependencyVersion(dependency) {
4589
+ return dependencies[dependency];
4590
+ }
4591
+ __name(detectDependencyVersion, "detectDependencyVersion");
4592
+
1016
4593
  // src/v3/index.ts
1017
4594
  function parseTriggerTaskRequestBody(body) {
1018
4595
  return TriggerTaskRequestBody.safeParse(body);
1019
4596
  }
1020
4597
  __name(parseTriggerTaskRequestBody, "parseTriggerTaskRequestBody");
4598
+ function parseBatchTriggerTaskRequestBody(body) {
4599
+ return BatchTriggerTaskRequestBody.safeParse(body);
4600
+ }
4601
+ __name(parseBatchTriggerTaskRequestBody, "parseBatchTriggerTaskRequestBody");
1021
4602
 
1022
- export { ApiClient, BackgroundWorkerClientMessages, BackgroundWorkerMetadata, BackgroundWorkerRecord, BackgroundWorkerServerMessages, ConsoleInterceptor, CreateAuthorizationCodeResponseSchema, CreateBackgroundWorkerRequestBody, CreateBackgroundWorkerResponse, DevRuntimeManager, GetPersonalAccessTokenRequestSchema, GetPersonalAccessTokenResponseSchema, GetProjectDevResponse, OtelTaskLogger, SemanticInternalAttributes, TaskMetadata, TaskMetadataWithFilePath, TaskResource, TaskRun, TaskRunBuiltInError, TaskRunContext, TaskRunCustomErrorObject, TaskRunError, TaskRunErrorCodes, TaskRunExecution, TaskRunExecutionAttempt, TaskRunExecutionEnvironment, TaskRunExecutionOrganization, TaskRunExecutionPayload, TaskRunExecutionProject, TaskRunExecutionResult, TaskRunExecutionTask, TaskRunFailedExecutionResult, TaskRunInternalError, TaskRunStringError, TaskRunSuccessfulExecutionResult, TriggerTaskRequestBody, TriggerTaskResponse, TriggerTracer, WhoAmIResponseSchema, ZodMessageHandler, ZodMessageSender, childToWorkerMessages, clientWebsocketMessages, createErrorTaskError, flattenAttributes, logger, parseError, parseTriggerTaskRequestBody, runtime, serverWebsocketMessages, taskContextManager, workerToChildMessages };
4603
+ export { ApiClient, ApiClientManager, BackgroundWorkerClientMessages, BackgroundWorkerMetadata, BackgroundWorkerProperties, BackgroundWorkerServerMessages, BatchTaskRunExecutionResult, BatchTriggerTaskRequestBody, BatchTriggerTaskResponse, CancellationSpanEvent, ClientToSharedQueueMessages, Config, ConsoleInterceptor, CoordinatorToPlatformMessages, CoordinatorToProdWorkerMessages, CreateAuthorizationCodeResponseSchema, CreateBackgroundWorkerRequestBody, CreateBackgroundWorkerResponse, CreateUploadPayloadUrlResponseBody, DeploymentErrorData, DevRuntimeManager, PreciseWallClock as DurableClock, EnvironmentType, EventFilter, ExceptionEventProperties, ExceptionSpanEvent, ExternalBuildData, FetchRetryBackoffStrategy, FetchRetryByStatusOptions, FetchRetryHeadersStrategy, FetchRetryOptions, FetchRetryStrategy, FetchTimeoutOptions, FixedWindowRateLimit, GetBatchResponseBody, GetDeploymentResponseBody, GetEnvironmentVariablesResponseBody, GetPersonalAccessTokenRequestSchema, GetPersonalAccessTokenResponseSchema, GetProjectEnvResponse, GetProjectResponseBody, GetProjectsResponseBody, ImageDetailsMetadata, InitializeDeploymentRequestBody, InitializeDeploymentResponseBody, LogLevel, Machine, MachineCpu, MachineMemory, OFFLOAD_IO_PACKET_LENGTH_LIMIT, OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT, OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT, OTEL_LINK_COUNT_LIMIT, OTEL_LOG_ATTRIBUTE_COUNT_LIMIT, OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, OTEL_SPAN_EVENT_COUNT_LIMIT, OtelTaskLogger, OtherSpanEvent, PRIMARY_VARIANT, PlatformToCoordinatorMessages, PlatformToProviderMessages, PostStartCauses, PreStopCauses, ProdChildToWorkerMessages, ProdRuntimeManager, ProdTaskRunExecution, ProdTaskRunExecutionPayload, ProdWorkerSocketData, ProdWorkerToChildMessages, ProdWorkerToCoordinatorMessages, ProviderToPlatformMessages, QueueOptions, RateLimitOptions, RetryOptions, SemanticInternalAttributes, SharedQueueToClientMessages, SimpleStructuredLogger, SlidingWindowRateLimit, SpanEvent, SpanEvents, SpanMessagingEvent, StartDeploymentIndexingRequestBody, StartDeploymentIndexingResponseBody, TaskContextSpanProcessor, TaskEventStyle, TaskExecutor, TaskMetadata, TaskMetadataFailedToParseData, TaskMetadataWithFilePath, TaskResource, TaskRun, TaskRunBuiltInError, TaskRunContext, TaskRunCustomErrorObject, TaskRunError, TaskRunErrorCodes, TaskRunExecution, TaskRunExecutionAttempt, TaskRunExecutionBatch, TaskRunExecutionEnvironment, TaskRunExecutionOrganization, TaskRunExecutionPayload, TaskRunExecutionProject, TaskRunExecutionQueue, TaskRunExecutionResult, TaskRunExecutionRetry, TaskRunExecutionTask, TaskRunFailedExecutionResult, TaskRunInternalError, TaskRunStringError, TaskRunSuccessfulExecutionResult, TracingSDK, TriggerTaskRequestBody, TriggerTaskResponse, TriggerTracer, UncaughtExceptionMessage, WaitReason, WhoAmIResponseSchema, ZodIpcConnection, ZodMessageHandler, ZodMessageSchema, ZodMessageSender, ZodNamespace, ZodSchemaParsedError, ZodSocketConnection, ZodSocketMessageHandler, ZodSocketMessageSender, accessoryAttributes, apiClientManager, calculateNextRetryDelay, calculateResetAt2 as calculateResetAt, childToWorkerMessages, clientWebsocketMessages, clock, conditionallyExportPacket, conditionallyImportPacket, correctErrorStackTrace, createErrorTaskError, createPacketAttributes, createPacketAttributesAsJson, defaultFetchRetryOptions, defaultRetryOptions, detectDependencyVersion, eventFilterMatches, flattenAttributes, formatDuration, formatDurationInDays, formatDurationMilliseconds, formatDurationNanoseconds, getEnvVar, groupTaskMetadataIssuesByTask, iconStringForSeverity, imposeAttributeLimits, isCancellationSpanEvent, isExceptionSpanEvent, logLevels, logger, millisecondsToNanoseconds, nanosecondsToMilliseconds, omit, packetRequiresOffloading, parseBatchTriggerTaskRequestBody, parseError, parsePacket, parseTriggerTaskRequestBody, prettyPrintPacket, primitiveValueOrflattenedAttributes, recordSpanException, runtime, serverWebsocketMessages, stringPatternMatchers, stringifyIO, taskContextManager, unflattenAttributes, workerToChildMessages };
1023
4604
  //# sourceMappingURL=out.js.map
1024
4605
  //# sourceMappingURL=index.mjs.map