@trigger.dev/core 3.0.0-beta.32 → 3.0.0-beta.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/v3/index.js +27 -24
- package/dist/v3/index.js.map +1 -1
- package/dist/v3/index.mjs +27 -24
- package/dist/v3/index.mjs.map +1 -1
- package/dist/v3/workers/index.js +6 -1
- package/dist/v3/workers/index.js.map +1 -1
- package/dist/v3/workers/index.mjs +6 -1
- package/dist/v3/workers/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/v3/workers/taskExecutor.ts","../../../src/v3/errors.ts","../../../src/v3/otel/index.ts","../../../src/v3/otel/tracingSDK.ts","../../../src/v3/limits.ts","../../../src/v3/semanticInternalAttributes.ts","../../../src/v3/utils/flattenAttributes.ts","../../../src/v3/utils/platform.ts","../../../src/v3/utils/globals.ts","../../../src/v3/taskContext/index.ts","../../../src/v3/task-context-api.ts","../../../src/v3/taskContext/otelProcessors.ts","../../../src/v3/utils/getEnv.ts","../../../src/v3/schemas/api.ts","../../../src/v3/schemas/resources.ts","../../../src/v3/schemas/schemas.ts","../../../src/v3/schemas/common.ts","../../../src/v3/apiClient/index.ts","../../../src/v3/zodfetch.ts","../../../src/v3/apiErrors.ts","../../../src/v3/utils/retries.ts","../../../src/v3/apiClientManager/index.ts","../../../src/v3/apiClientManager-api.ts","../../../src/v3/utils/ioSerialization.ts","../../../src/v3/utils/styleAttributes.ts","../../../src/v3/clock/preciseWallClock.ts","../../../src/v3/logger/taskLogger.ts","../../../src/v3/icons.ts","../../../src/v3/clock/simpleClock.ts","../../../src/v3/clock/index.ts","../../../src/v3/clock-api.ts","../../../src/v3/consoleInterceptor.ts","../../../src/v3/task-catalog/standardTaskCatalog.ts"],"names":["SpanKind","parseError","error","Error","type","name","message","stackTrace","stack","raw","JSON","stringify","e","String","SpanStatusCode","DiagConsoleLogger","DiagLogLevel","diag","logs","OTLPLogExporter","OTLPTraceExporter","registerInstrumentations","Resource","detectResourcesSync","processDetectorSync","BatchLogRecordProcessor","LoggerProvider","SimpleLogRecordProcessor","BatchSpanProcessor","NodeTracerProvider","SimpleSpanProcessor","SemanticResourceAttributes","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOG_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_LINK_COUNT_LIMIT","OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OFFLOAD_IO_PACKET_LENGTH_LIMIT","SemanticInternalAttributes","ENVIRONMENT_ID","ENVIRONMENT_TYPE","ORGANIZATION_ID","ORGANIZATION_SLUG","ORGANIZATION_NAME","PROJECT_ID","PROJECT_REF","PROJECT_NAME","PROJECT_DIR","ATTEMPT_ID","ATTEMPT_NUMBER","RUN_ID","RUN_IS_TEST","BATCH_ID","TASK_SLUG","TASK_PATH","TASK_EXPORT_NAME","QUEUE_NAME","QUEUE_ID","SPAN_PARTIAL","SPAN_ID","OUTPUT","OUTPUT_TYPE","STYLE","STYLE_ICON","STYLE_VARIANT","STYLE_ACCESSORY","METADATA","TRIGGER","PAYLOAD","PAYLOAD_TYPE","SHOW","SHOW_ACTIONS","WORKER_ID","WORKER_VERSION","CLI_VERSION","SDK_VERSION","SDK_LANGUAGE","RETRY_AT","RETRY_DELAY","RETRY_COUNT","LINK_TITLE","IDEMPOTENCY_KEY","NULL_SENTINEL","flattenAttributes","obj","prefix","result","undefined","key","value","Object","entries","newPrefix","Array","isArray","i","length","assign","isRecord","_globalThis","globalThis","global","GLOBAL_TRIGGER_DOT_DEV_KEY","Symbol","for","_global","registerGlobal","instance","allowOverride","api","err","getGlobal","unregisterGlobal","API_NAME","TaskContextAPI","getInstance","_instance","isInsideTask","ctx","worker","attributes","contextAttributes","workerAttributes","id","version","attempt","number","task","filePath","exportName","queue","environment","organization","project","ref","run","isTest","slug","batch","idempotencyKey","disable","setGlobalTaskContext","taskContext","TaskContextSpanProcessor","constructor","innerProcessor","_innerProcessor","onStart","span","parentContext","setAttributes","onEnd","shutdown","forceFlush","TaskContextLogProcessor","onEmit","logRecord","context","getEnvVar","process","env","AsyncResourceDetector","_resolved","_promise","Promise","resolver","_resolver","detect","_config","resolveWithAttributes","TracingSDK","config","asyncResourceDetector","setLogLevel","diagLogLevel","envResourceAttributesSerialized","envResourceAttributes","parse","commonResources","detectors","merge","CLOUD_PROVIDER","resource","traceProvider","forceFlushTimeoutMillis","spanLimits","attributeCountLimit","attributeValueLengthLimit","eventCountLimit","attributePerEventCountLimit","linkCountLimit","attributePerLinkCountLimit","spanExporter","url","timeoutMillis","addSpanProcessor","maxExportBatchSize","parseInt","scheduledDelayMillis","exportTimeoutMillis","maxQueueSize","register","instrumentations","tracerProvider","logExporter","loggerProvider","logRecordLimits","addLogRecordProcessor","_logProvider","_spanExporter","_traceProvider","setGlobalLoggerProvider","getLogger","bind","getTracer","flush","level","NONE","ERROR","WARN","INFO","DEBUG","VERBOSE","ALL","setLogger","recordSpanException","recordException","setStatus","code","z","TaskRunBuiltInError","object","literal","string","TaskRunCustomErrorObject","TaskRunStringError","TaskRunErrorCodes","COULD_NOT_FIND_EXECUTOR","COULD_NOT_FIND_TASK","CONFIGURED_INCORRECTLY","TASK_ALREADY_RUNNING","TASK_EXECUTION_FAILED","TASK_EXECUTION_ABORTED","TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE","TASK_RUN_CANCELLED","TASK_OUTPUT_ERROR","HANDLE_ERROR_ERROR","GRACEFUL_EXIT_TIMEOUT","TaskRunInternalError","enum","optional","TaskRunError","discriminatedUnion","TaskRun","payload","payloadType","any","tags","array","boolean","default","createdAt","coerce","date","TaskRunExecutionTask","TaskRunExecutionAttempt","startedAt","backgroundWorkerId","backgroundWorkerTaskId","status","TaskRunExecutionEnvironment","TaskRunExecutionOrganization","TaskRunExecutionProject","TaskRunExecutionQueue","TaskRunExecutionBatch","TaskRunExecution","TaskRunContext","omit","TaskRunExecutionRetry","timestamp","delay","unknown","TaskRunFailedExecutionResult","ok","retry","skippedRetrying","TaskRunSuccessfulExecutionResult","output","outputType","TaskRunExecutionResult","BatchTaskRunExecutionResult","items","EnvironmentType","MachineCpu","union","MachineMemory","Machine","cpu","memory","TaskRunExecutionPayload","execution","traceContext","record","ProdTaskRunExecution","extend","contentHash","ProdTaskRunExecutionPayload","FixedWindowRateLimit","limit","window","seconds","minutes","hours","SlidingWindowRateLimit","RateLimitOptions","RetryOptions","maxAttempts","int","factor","minTimeoutInMs","maxTimeoutInMs","randomize","QueueOptions","concurrencyLimit","min","max","rateLimit","TaskMetadata","packageVersion","machine","partial","triggerSource","TaskFileMetadata","TaskMetadataWithFilePath","PostStartCauses","PreStopCauses","RegexSchema","custom","val","test","Config","triggerDirectories","triggerUrl","projectDir","tsconfigPath","retries","enabledInDev","additionalPackages","additionalFiles","dependenciesToBundle","logLevel","enableConsoleLogging","postInstall","WaitReason","TaskResource","BackgroundWorkerMetadata","cliPackageVersion","tasks","ImageDetailsMetadata","imageTag","WhoAmIResponseSchema","userId","email","dashboardUrl","GetProjectResponseBody","externalRef","title","GetProjectsResponseBody","GetProjectEnvResponse","apiKey","apiUrl","CreateBackgroundWorkerRequestBody","localOnly","metadata","CreateBackgroundWorkerResponse","TriggerTaskRequestBody","options","dependentAttempt","dependentBatch","lockToVersion","concurrencyKey","TriggerTaskResponse","BatchTriggerTaskRequestBody","BatchTriggerTaskResponse","batchId","runs","GetBatchResponseBody","taskRunId","GetEnvironmentVariablesResponseBody","variables","StartDeploymentIndexingRequestBody","imageReference","selfHosted","StartDeploymentIndexingResponseBody","ExternalBuildData","buildId","buildToken","projectId","InitializeDeploymentResponseBody","shortCode","externalBuildData","nullable","registryHost","InitializeDeploymentRequestBody","DeploymentErrorData","GetDeploymentResponseBody","errorData","CreateUploadPayloadUrlResponseBody","presignedUrl","ReplayRunResponse","CanceledRunResponse","ScheduledTaskPayload","scheduleId","lastTimestamp","externalId","upcoming","CreateScheduleOptions","cron","deduplicationKey","ScheduleObject","active","nullish","generator","expression","description","nextRun","environments","userName","DeletedScheduleObject","ListSchedulesResult","data","pagination","currentPage","totalPages","count","ListScheduleOptions","page","perPage","RunStatus","AttemptStatus","RetrieveRunResponse","taskIdentifier","updatedAt","attempts","completedAt","propagation","fromZodError","APIError","headers","makeMessage","param","msg","generate","errorResponse","APIConnectionError","cause","castToError","BadRequestError","AuthenticationError","PermissionDeniedError","NotFoundError","ConflictError","UnprocessableEntityError","RateLimitError","InternalServerError","defaultRetryOptions","defaultFetchRetryOptions","byStatus","strategy","connectionError","timeout","calculateNextRetryDelay","opts","random","Math","pow","round","zodfetch","schema","requestInit","_doZodFetch","response","fetch","requestInitWithCache","responseHeaders","createResponseHeaders","retryResult","shouldRetry","resolve","setTimeout","errText","text","catch","errJSON","safeJsonParse","errMessage","jsonBody","json","parsedResult","safeParse","success","retryOptions","shouldRetryForOptions","shouldRetryHeader","get","Proxy","fromEntries","target","toString","toLowerCase","withCache","cache","_","Request","zodFetchOptions","ApiClient","baseUrl","accessToken","replace","getRunResult","runId","method","getBatchResults","triggerTask","taskId","body","spanParentAsLink","batchTriggerTask","createUploadPayloadUrl","filename","getPayloadUrl","retrieveRun","replayRun","cancelRun","createSchedule","listSchedules","searchParams","URLSearchParams","append","size","retrieveSchedule","updateSchedule","deactivateSchedule","activateSchedule","deleteSchedule","Authorization","inject","APIClientManagerAPI","setGlobalAPIClientConfiguration","baseURL","store","secretKey","client","apiClientManager","parsePacket","dataType","loadSuperJSON","stringifyIO","conditionallyExportPacket","packet","pathPrefix","tracer","needsOffloading","packetRequiresOffloading","exportPacket","startActiveSpan","byteLength","byteSize","Buffer","getPacketExtension","presignedResponse","uploadResponse","statusText","conditionallyImportPacket","importPacket","setAttribute","createPacketAttributes","dataKey","dataTypeKey","parsed","jsonified","safeReplacer","RegExp","Set","from","Map","forEach","v","k","accessoryAttributes","accessory","TaskExecutor","_tracingSDK","tracingSDK","_tracer","_consoleInterceptor","consoleInterceptor","projectConfig","_importedConfig","importedConfig","_handleErrorFn","handleErrorFn","execute","attemptMessage","originalPacket","intercept","console","parsedPayload","initOutput","payloadPacket","stringifiedOutput","finalOutput","stringifyError","runError","handleErrorResult","handleErrorError","kind","CONSUMER","style","extractContext","init","runFn","fns","middlewareFn","middleware","next","initFn","onSuccess","onSuccessFn","onFailure","onFailureFn","onStartFn","cleanupFn","cleanup","retriesConfig","handleError","retryDelayInMs","retryAt","Date","now","skipRetrying","getTime","PreciseDate","PreciseWallClock","_origin","clockTime","origin","hrtime","preciseDate","preciseNow","elapsedHrTime","elapsedNanoseconds","BigInt","getFullTime","dateStruct","toStruct","nanos","reset","SeverityNumber","iconStringForSeverity","severityNumber","UNSPECIFIED","TRACE","TRACE2","TRACE3","TRACE4","DEBUG2","DEBUG3","DEBUG4","INFO2","INFO3","INFO4","WARN2","WARN3","WARN4","ERROR2","ERROR3","ERROR4","FATAL","FATAL2","FATAL3","FATAL4","SimpleClock","nowStruct","SIMPLE_CLOCK","ClockAPI","setGlobalClock","clock","logLevels","OtelTaskLogger","_level","indexOf","debug","properties","log","info","warn","trace","fn","severityText","safeJsonProcess","icon","logger","emit","jsonErrorReplacer","util","_getTimestampInHrTime","getTimestampInHrTime_fn","ConsoleInterceptor","sendToStdIO","callback","originalConsole","args","format","stderr","write","stdout","tryParseJSON","getLogMessage","fallback","StandardTaskCatalog","_taskMetadata","_taskFunctions","_taskFileMetadata","registerTaskMetadata","set","updateTaskMetadata","updates","existingMetadata","existingFunctions","registerTaskFileMetadata","getAllTaskMetadata","fileMetadata","push","getTaskMetadata","getTask","taskExists","has"],"mappings":"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","sourcesContent":["import { SpanKind } from \"@opentelemetry/api\";\nimport { ConsoleInterceptor } from \"../consoleInterceptor\";\nimport { parseError } from \"../errors\";\nimport { TracingSDK, recordSpanException } from \"../otel\";\nimport {\n BackgroundWorkerProperties,\n Config,\n TaskRunContext,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionResult,\n TaskRunExecutionRetry,\n} from \"../schemas\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { taskContext } from \"../task-context-api\";\nimport { TriggerTracer } from \"../tracer\";\nimport { HandleErrorFunction, ProjectConfig, TaskMetadataWithFunctions } from \"../types\";\nimport {\n conditionallyExportPacket,\n conditionallyImportPacket,\n createPacketAttributes,\n parsePacket,\n stringifyIO,\n} from \"../utils/ioSerialization\";\nimport { calculateNextRetryDelay } from \"../utils/retries\";\nimport { accessoryAttributes } from \"../utils/styleAttributes\";\n\nexport type TaskExecutorOptions = {\n tracingSDK: TracingSDK;\n tracer: TriggerTracer;\n consoleInterceptor: ConsoleInterceptor;\n projectConfig: Config;\n importedConfig: ProjectConfig | undefined;\n handleErrorFn: HandleErrorFunction | undefined;\n};\n\nexport class TaskExecutor {\n private _tracingSDK: TracingSDK;\n private _tracer: TriggerTracer;\n private _consoleInterceptor: ConsoleInterceptor;\n private _config: Config;\n private _importedConfig: ProjectConfig | undefined;\n private _handleErrorFn: HandleErrorFunction | undefined;\n\n constructor(\n public task: TaskMetadataWithFunctions,\n options: TaskExecutorOptions\n ) {\n this._tracingSDK = options.tracingSDK;\n this._tracer = options.tracer;\n this._consoleInterceptor = options.consoleInterceptor;\n this._config = options.projectConfig;\n this._importedConfig = options.importedConfig;\n this._handleErrorFn = options.handleErrorFn;\n }\n\n async execute(\n execution: TaskRunExecution,\n worker: BackgroundWorkerProperties,\n traceContext: Record<string, unknown>\n ): Promise<TaskRunExecutionResult> {\n const ctx = TaskRunContext.parse(execution);\n const attemptMessage = `Attempt ${execution.attempt.number}`;\n\n const originalPacket = {\n data: execution.run.payload,\n dataType: execution.run.payloadType,\n };\n\n taskContext.setGlobalTaskContext({\n ctx,\n worker,\n });\n\n this._tracingSDK.asyncResourceDetector.resolveWithAttributes({\n ...taskContext.attributes,\n [SemanticInternalAttributes.SDK_VERSION]: this.task.packageVersion,\n [SemanticInternalAttributes.SDK_LANGUAGE]: \"typescript\",\n });\n\n const result = await this._tracer.startActiveSpan(\n attemptMessage,\n async (span) => {\n return await this._consoleInterceptor.intercept(console, async () => {\n let parsedPayload: any;\n let initOutput: any;\n\n try {\n const payloadPacket = await conditionallyImportPacket(originalPacket, this._tracer);\n\n parsedPayload = await parsePacket(payloadPacket);\n\n if (execution.attempt.number === 1) {\n await this.#callOnStartFunctions(parsedPayload, ctx);\n }\n\n initOutput = await this.#callInitFunctions(parsedPayload, ctx);\n\n const output = await this.#callRun(parsedPayload, ctx, initOutput);\n\n await this.#callOnSuccessFunctions(parsedPayload, output, ctx, initOutput);\n\n try {\n const stringifiedOutput = await stringifyIO(output);\n\n const finalOutput = await conditionallyExportPacket(\n stringifiedOutput,\n `${execution.attempt.id}/output`,\n this._tracer\n );\n\n const attributes = await createPacketAttributes(\n finalOutput,\n SemanticInternalAttributes.OUTPUT,\n SemanticInternalAttributes.OUTPUT_TYPE\n );\n\n if (attributes) {\n span.setAttributes(attributes);\n }\n\n return {\n ok: true,\n id: execution.run.id,\n output: finalOutput.data,\n outputType: finalOutput.dataType,\n } satisfies TaskRunExecutionResult;\n } catch (stringifyError) {\n recordSpanException(span, stringifyError);\n\n return {\n ok: false,\n id: execution.run.id,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_OUTPUT_ERROR,\n message:\n stringifyError instanceof Error\n ? stringifyError.message\n : typeof stringifyError === \"string\"\n ? stringifyError\n : undefined,\n },\n } satisfies TaskRunExecutionResult;\n }\n } catch (runError) {\n try {\n const handleErrorResult = await this.#handleError(\n execution,\n runError,\n parsedPayload,\n ctx\n );\n\n recordSpanException(span, handleErrorResult.error ?? runError);\n\n if (handleErrorResult.status !== \"retry\") {\n await this.#callOnFailureFunctions(\n parsedPayload,\n handleErrorResult.error ?? runError,\n ctx,\n initOutput\n );\n }\n\n return {\n id: execution.run.id,\n ok: false,\n error: handleErrorResult.error\n ? parseError(handleErrorResult.error)\n : parseError(runError),\n retry: handleErrorResult.status === \"retry\" ? handleErrorResult.retry : undefined,\n skippedRetrying: handleErrorResult.status === \"skipped\",\n } satisfies TaskRunExecutionResult;\n } catch (handleErrorError) {\n recordSpanException(span, handleErrorError);\n\n return {\n ok: false,\n id: execution.run.id,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.HANDLE_ERROR_ERROR,\n message:\n handleErrorError instanceof Error\n ? handleErrorError.message\n : typeof handleErrorError === \"string\"\n ? handleErrorError\n : undefined,\n },\n } satisfies TaskRunExecutionResult;\n }\n } finally {\n await this.#callTaskCleanup(parsedPayload, ctx, initOutput);\n }\n });\n },\n {\n kind: SpanKind.CONSUMER,\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"attempt\",\n ...accessoryAttributes({\n items: [\n {\n text: ctx.task.filePath,\n },\n {\n text: `${ctx.task.exportName}.run()`,\n },\n ],\n style: \"codepath\",\n }),\n },\n },\n this._tracer.extractContext(traceContext)\n );\n\n return result;\n }\n\n async #callRun(payload: unknown, ctx: TaskRunContext, init: unknown) {\n const runFn = this.task.fns.run;\n const middlewareFn = this.task.fns.middleware;\n\n if (!runFn) {\n throw new Error(\"Task does not have a run function\");\n }\n\n if (!middlewareFn) {\n return runFn(payload, { ctx });\n }\n\n return middlewareFn(payload, { ctx, next: async () => runFn(payload, { ctx, init }) });\n }\n\n async #callInitFunctions(payload: unknown, ctx: TaskRunContext) {\n await this.#callConfigInit(payload, ctx);\n\n const initFn = this.task.fns.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\n \"init\",\n async (span) => {\n return await initFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n }\n\n async #callConfigInit(payload: unknown, ctx: TaskRunContext) {\n const initFn = this._importedConfig?.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\n \"config.init\",\n async (span) => {\n return await initFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n }\n\n async #callOnSuccessFunctions(\n payload: unknown,\n output: any,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n await this.#callOnSuccessFunction(\n this.task.fns.onSuccess,\n \"task.onSuccess\",\n payload,\n output,\n ctx,\n initOutput\n );\n\n await this.#callOnSuccessFunction(\n this._importedConfig?.onSuccess,\n \"config.onSuccess\",\n payload,\n output,\n ctx,\n initOutput\n );\n }\n\n async #callOnSuccessFunction(\n onSuccessFn: TaskMetadataWithFunctions[\"fns\"][\"onSuccess\"],\n name: string,\n payload: unknown,\n output: any,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onSuccessFn) {\n return;\n }\n\n try {\n await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onSuccessFn(payload, output, { ctx, init: initOutput });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch {\n // Ignore errors from onSuccess functions\n }\n }\n\n async #callOnFailureFunctions(\n payload: unknown,\n error: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n await this.#callOnFailureFunction(\n this.task.fns.onFailure,\n \"task.onFailure\",\n payload,\n error,\n ctx,\n initOutput\n );\n\n await this.#callOnFailureFunction(\n this._importedConfig?.onFailure,\n \"config.onFailure\",\n payload,\n error,\n ctx,\n initOutput\n );\n }\n\n async #callOnFailureFunction(\n onFailureFn: TaskMetadataWithFunctions[\"fns\"][\"onFailure\"],\n name: string,\n payload: unknown,\n error: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onFailureFn) {\n return;\n }\n\n try {\n return await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onFailureFn(payload, error, { ctx, init: initOutput });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch (e) {\n // Ignore errors from onFailure functions\n }\n }\n\n async #callOnStartFunctions(payload: unknown, ctx: TaskRunContext) {\n await this.#callOnStartFunction(\n this._importedConfig?.onStart,\n \"config.onStart\",\n payload,\n ctx,\n {}\n );\n\n await this.#callOnStartFunction(this.task.fns.onStart, \"task.onStart\", payload, ctx, {});\n }\n\n async #callOnStartFunction(\n onStartFn: TaskMetadataWithFunctions[\"fns\"][\"onStart\"],\n name: string,\n payload: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onStartFn) {\n return;\n }\n\n try {\n await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onStartFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch {\n // Ignore errors from onStart functions\n }\n }\n\n async #callTaskCleanup(payload: unknown, ctx: TaskRunContext, init: unknown) {\n const cleanupFn = this.task.fns.cleanup;\n\n if (!cleanupFn) {\n return;\n }\n\n return this._tracer.startActiveSpan(\"cleanup\", async (span) => {\n return await cleanupFn(payload, { ctx, init });\n });\n }\n\n async #handleError(\n execution: TaskRunExecution,\n error: unknown,\n payload: any,\n ctx: TaskRunContext\n ): Promise<\n | { status: \"retry\"; retry: TaskRunExecutionRetry; error?: unknown }\n | { status: \"skipped\"; error?: unknown } // skipped is different than noop, it means that the task was skipped from retrying, instead of just not retrying\n | { status: \"noop\"; error?: unknown }\n > {\n const retriesConfig = this._importedConfig?.retries ?? this._config.retries;\n\n const retry = this.task.retry ?? retriesConfig?.default;\n\n if (!retry) {\n return { status: \"noop\" };\n }\n\n const delay = calculateNextRetryDelay(retry, execution.attempt.number);\n\n if (\n execution.environment.type === \"DEVELOPMENT\" &&\n typeof retriesConfig?.enabledInDev === \"boolean\" &&\n !retriesConfig.enabledInDev\n ) {\n return { status: \"skipped\" };\n }\n\n return this._tracer.startActiveSpan(\n \"handleError()\",\n async (span) => {\n const handleErrorResult = this.task.fns.handleError\n ? await this.task.fns.handleError(payload, error, {\n ctx,\n retry,\n retryDelayInMs: delay,\n retryAt: delay ? new Date(Date.now() + delay) : undefined,\n })\n : this._importedConfig\n ? await this._handleErrorFn?.(payload, error, {\n ctx,\n retry,\n retryDelayInMs: delay,\n retryAt: delay ? new Date(Date.now() + delay) : undefined,\n })\n : undefined;\n\n // If handleErrorResult\n if (!handleErrorResult) {\n return typeof delay === \"undefined\"\n ? { status: \"noop\" }\n : { status: \"retry\", retry: { timestamp: Date.now() + delay, delay } };\n }\n\n if (handleErrorResult.skipRetrying) {\n return { status: \"skipped\", error: handleErrorResult.error };\n }\n\n if (typeof handleErrorResult.retryAt !== \"undefined\") {\n return {\n status: \"retry\",\n retry: {\n timestamp: handleErrorResult.retryAt.getTime(),\n delay: handleErrorResult.retryAt.getTime() - Date.now(),\n },\n error: handleErrorResult.error,\n };\n }\n\n if (typeof handleErrorResult.retryDelayInMs === \"number\") {\n return {\n status: \"retry\",\n retry: {\n timestamp: Date.now() + handleErrorResult.retryDelayInMs,\n delay: handleErrorResult.retryDelayInMs,\n },\n error: handleErrorResult.error,\n };\n }\n\n if (handleErrorResult.retry && typeof handleErrorResult.retry === \"object\") {\n const delay = calculateNextRetryDelay(handleErrorResult.retry, execution.attempt.number);\n\n return typeof delay === \"undefined\"\n ? { status: \"noop\", error: handleErrorResult.error }\n : {\n status: \"retry\",\n retry: { timestamp: Date.now() + delay, delay },\n error: handleErrorResult.error,\n };\n }\n\n return { status: \"noop\", error: handleErrorResult.error };\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"exclamation-circle\",\n },\n }\n );\n }\n}\n","import { z } from \"zod\";\nimport { TaskRunError } from \"./schemas/common\";\nimport nodePath from \"node:path\";\n\nexport function parseError(error: unknown): TaskRunError {\n if (error instanceof Error) {\n return {\n type: \"BUILT_IN_ERROR\",\n name: error.name,\n message: error.message,\n stackTrace: error.stack ?? \"\",\n };\n }\n\n if (typeof error === \"string\") {\n return {\n type: \"STRING_ERROR\",\n raw: error,\n };\n }\n\n try {\n return {\n type: \"CUSTOM_ERROR\",\n raw: JSON.stringify(error),\n };\n } catch (e) {\n return {\n type: \"CUSTOM_ERROR\",\n raw: String(error),\n };\n }\n}\n\nexport function createErrorTaskError(error: TaskRunError): any {\n switch (error.type) {\n case \"BUILT_IN_ERROR\": {\n const e = new Error(error.message);\n\n e.name = error.name;\n e.stack = error.stackTrace;\n\n return e;\n }\n case \"STRING_ERROR\": {\n return error.raw;\n }\n case \"CUSTOM_ERROR\": {\n return JSON.parse(error.raw);\n }\n case \"INTERNAL_ERROR\": {\n return new Error(`trigger.dev internal error (${error.code})`);\n }\n }\n}\n\nexport function createJsonErrorObject(error: TaskRunError) {\n switch (error.type) {\n case \"BUILT_IN_ERROR\": {\n return {\n name: error.name,\n message: error.message,\n stackTrace: error.stackTrace,\n };\n }\n case \"STRING_ERROR\": {\n return {\n message: error.raw,\n };\n }\n case \"CUSTOM_ERROR\": {\n return {\n message: error.raw,\n };\n }\n case \"INTERNAL_ERROR\": {\n return {\n message: `trigger.dev internal error (${error.code})`,\n };\n }\n }\n}\n\nexport function correctErrorStackTrace(\n stackTrace: string,\n projectDir?: string,\n options?: { removeFirstLine?: boolean }\n) {\n const [errorLine, ...traceLines] = stackTrace.split(\"\\n\");\n\n return [\n options?.removeFirstLine ? undefined : errorLine,\n ...traceLines.map((line) => correctStackTraceLine(line, projectDir)),\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nconst LINES_TO_IGNORE = [\n /ConsoleInterceptor/,\n /TriggerTracer/,\n /TaskExecutor/,\n /EXECUTE_TASK_RUN/,\n /@trigger.dev\\/core/,\n /safeJsonProcess/,\n /__entryPoint.ts/,\n];\n\nfunction correctStackTraceLine(line: string, projectDir?: string) {\n if (LINES_TO_IGNORE.some((regex) => regex.test(line))) {\n return;\n }\n\n // Check to see if the path is inside the project directory\n if (projectDir && !line.includes(projectDir)) {\n return;\n }\n\n return line.trim();\n}\n\nexport function groupTaskMetadataIssuesByTask(tasks: any, issues: z.ZodIssue[]) {\n return issues.reduce(\n (acc, issue) => {\n if (issue.path.length === 0) {\n return acc;\n }\n\n const taskIndex = issue.path[1];\n\n if (typeof taskIndex !== \"number\") {\n return acc;\n }\n\n const task = tasks[taskIndex];\n\n if (!task) {\n return acc;\n }\n\n const restOfPath = issue.path.slice(2);\n\n const taskId = task.id;\n const taskName = task.exportName;\n const filePath = task.filePath;\n\n const key = taskIndex;\n\n const existing = acc[key] ?? {\n id: taskId,\n exportName: taskName,\n filePath,\n issues: [] as Array<{ message: string; path?: string }>,\n };\n\n existing.issues.push({\n message: issue.message,\n path: restOfPath.length === 0 ? undefined : restOfPath.join(\".\"),\n });\n\n return {\n ...acc,\n [key]: existing,\n };\n },\n {} as Record<\n number,\n {\n id: any;\n exportName: string;\n filePath: string;\n issues: Array<{ message: string; path?: string }>;\n }\n >\n );\n}\n","import { Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nexport { TracingSDK, type TracingSDKConfig, type TracingDiagnosticLogLevel } from \"./tracingSDK\";\n\nexport function recordSpanException(span: Span, error: unknown) {\n if (error instanceof Error) {\n span.recordException(error);\n } else if (typeof error === \"string\") {\n span.recordException(new Error(error));\n } else {\n span.recordException(new Error(JSON.stringify(error)));\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n}\n","import { DiagConsoleLogger, DiagLogLevel, TracerProvider, diag } from \"@opentelemetry/api\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport { OTLPLogExporter } from \"@opentelemetry/exporter-logs-otlp-http\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport {\n registerInstrumentations,\n type InstrumentationOption,\n} from \"@opentelemetry/instrumentation\";\nimport {\n DetectorSync,\n IResource,\n Resource,\n ResourceAttributes,\n ResourceDetectionConfig,\n detectResourcesSync,\n processDetectorSync,\n} from \"@opentelemetry/resources\";\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n SimpleLogRecordProcessor,\n} from \"@opentelemetry/sdk-logs\";\nimport {\n BatchSpanProcessor,\n NodeTracerProvider,\n SimpleSpanProcessor,\n SpanExporter,\n} from \"@opentelemetry/sdk-trace-node\";\nimport { SemanticResourceAttributes } from \"@opentelemetry/semantic-conventions\";\nimport {\n OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n OTEL_LINK_COUNT_LIMIT,\n OTEL_LOG_ATTRIBUTE_COUNT_LIMIT,\n OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_EVENT_COUNT_LIMIT,\n} from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TaskContextLogProcessor, TaskContextSpanProcessor } from \"../taskContext/otelProcessors\";\nimport { getEnvVar } from \"../utils/getEnv\";\n\nclass AsyncResourceDetector implements DetectorSync {\n private _promise: Promise<ResourceAttributes>;\n private _resolver?: (value: ResourceAttributes) => void;\n private _resolved: boolean = false;\n\n constructor() {\n this._promise = new Promise((resolver) => {\n this._resolver = resolver;\n });\n }\n\n detect(_config?: ResourceDetectionConfig): Resource {\n return new Resource({}, this._promise);\n }\n\n resolveWithAttributes(attributes: ResourceAttributes) {\n if (!this._resolver) {\n throw new Error(\"Resolver not available\");\n }\n\n if (this._resolved) {\n return;\n }\n\n this._resolved = true;\n this._resolver(attributes);\n }\n}\n\nexport type TracingDiagnosticLogLevel =\n | \"none\"\n | \"error\"\n | \"warn\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"all\";\n\nexport type TracingSDKConfig = {\n url: string;\n forceFlushTimeoutMillis?: number;\n resource?: IResource;\n instrumentations?: InstrumentationOption[];\n diagLogLevel?: TracingDiagnosticLogLevel;\n};\n\nexport class TracingSDK {\n public readonly asyncResourceDetector = new AsyncResourceDetector();\n private readonly _logProvider: LoggerProvider;\n private readonly _spanExporter: SpanExporter;\n private readonly _traceProvider: NodeTracerProvider;\n\n public readonly getLogger: LoggerProvider[\"getLogger\"];\n public readonly getTracer: TracerProvider[\"getTracer\"];\n\n constructor(private readonly config: TracingSDKConfig) {\n setLogLevel(config.diagLogLevel ?? \"none\");\n\n const envResourceAttributesSerialized = getEnvVar(\"OTEL_RESOURCE_ATTRIBUTES\");\n const envResourceAttributes = envResourceAttributesSerialized\n ? JSON.parse(envResourceAttributesSerialized)\n : {};\n\n const commonResources = detectResourcesSync({\n detectors: [this.asyncResourceDetector, processDetectorSync],\n })\n .merge(\n new Resource({\n [SemanticResourceAttributes.CLOUD_PROVIDER]: \"trigger.dev\",\n [SemanticInternalAttributes.TRIGGER]: true,\n })\n )\n .merge(config.resource ?? new Resource({}))\n .merge(new Resource(envResourceAttributes));\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: config.forceFlushTimeoutMillis ?? 500,\n resource: commonResources,\n spanLimits: {\n attributeCountLimit: OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n attributeValueLengthLimit: OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n eventCountLimit: OTEL_SPAN_EVENT_COUNT_LIMIT,\n attributePerEventCountLimit: OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n linkCountLimit: OTEL_LINK_COUNT_LIMIT,\n attributePerLinkCountLimit: OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: `${config.url}/v1/traces`,\n timeoutMillis: config.forceFlushTimeoutMillis ?? 1000,\n });\n\n traceProvider.addSpanProcessor(\n new TaskContextSpanProcessor(\n getEnvVar(\"OTEL_BATCH_PROCESSING_ENABLED\") === \"1\"\n ? new BatchSpanProcessor(spanExporter, {\n maxExportBatchSize: parseInt(getEnvVar(\"OTEL_SPAN_MAX_EXPORT_BATCH_SIZE\") ?? \"64\"),\n scheduledDelayMillis: parseInt(\n getEnvVar(\"OTEL_SPAN_SCHEDULED_DELAY_MILLIS\") ?? \"200\"\n ),\n exportTimeoutMillis: parseInt(\n getEnvVar(\"OTEL_SPAN_EXPORT_TIMEOUT_MILLIS\") ?? \"30000\"\n ),\n maxQueueSize: parseInt(getEnvVar(\"OTEL_SPAN_MAX_QUEUE_SIZE\") ?? \"512\"),\n })\n : new SimpleSpanProcessor(spanExporter)\n )\n );\n\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: config.instrumentations ?? [],\n tracerProvider: traceProvider,\n });\n\n const logExporter = new OTLPLogExporter({\n url: `${config.url}/v1/logs`,\n });\n\n // To start a logger, you first need to initialize the Logger provider.\n const loggerProvider = new LoggerProvider({\n resource: commonResources,\n logRecordLimits: {\n attributeCountLimit: OTEL_LOG_ATTRIBUTE_COUNT_LIMIT,\n attributeValueLengthLimit: OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n },\n });\n\n loggerProvider.addLogRecordProcessor(\n new TaskContextLogProcessor(\n getEnvVar(\"OTEL_BATCH_PROCESSING_ENABLED\") === \"1\"\n ? new BatchLogRecordProcessor(logExporter, {\n maxExportBatchSize: parseInt(getEnvVar(\"OTEL_LOG_MAX_EXPORT_BATCH_SIZE\") ?? \"64\"),\n scheduledDelayMillis: parseInt(getEnvVar(\"OTEL_LOG_SCHEDULED_DELAY_MILLIS\") ?? \"200\"),\n exportTimeoutMillis: parseInt(getEnvVar(\"OTEL_LOG_EXPORT_TIMEOUT_MILLIS\") ?? \"30000\"),\n maxQueueSize: parseInt(getEnvVar(\"OTEL_LOG_MAX_QUEUE_SIZE\") ?? \"512\"),\n })\n : new SimpleLogRecordProcessor(logExporter)\n )\n );\n\n this._logProvider = loggerProvider;\n this._spanExporter = spanExporter;\n this._traceProvider = traceProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n\n this.getLogger = loggerProvider.getLogger.bind(loggerProvider);\n this.getTracer = traceProvider.getTracer.bind(traceProvider);\n }\n\n public async flush() {\n await this._traceProvider.forceFlush();\n await this._logProvider.forceFlush();\n }\n\n public async shutdown() {\n await this._traceProvider.shutdown();\n await this._logProvider.shutdown();\n }\n}\n\nfunction setLogLevel(level: TracingDiagnosticLogLevel) {\n let diagLogLevel: DiagLogLevel;\n\n switch (level) {\n case \"none\":\n diagLogLevel = DiagLogLevel.NONE;\n break;\n case \"error\":\n diagLogLevel = DiagLogLevel.ERROR;\n break;\n case \"warn\":\n diagLogLevel = DiagLogLevel.WARN;\n break;\n case \"info\":\n diagLogLevel = DiagLogLevel.INFO;\n break;\n case \"debug\":\n diagLogLevel = DiagLogLevel.DEBUG;\n break;\n case \"verbose\":\n diagLogLevel = DiagLogLevel.VERBOSE;\n break;\n case \"all\":\n diagLogLevel = DiagLogLevel.ALL;\n break;\n default:\n diagLogLevel = DiagLogLevel.NONE;\n }\n\n diag.setLogger(new DiagConsoleLogger(), diagLogLevel);\n}\n","import { AttributeValue, Attributes } from \"@opentelemetry/api\";\n\nexport const OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = 256;\nexport const OTEL_LOG_ATTRIBUTE_COUNT_LIMIT = 256;\nexport const OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;\nexport const OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;\nexport const OTEL_SPAN_EVENT_COUNT_LIMIT = 10;\nexport const OTEL_LINK_COUNT_LIMIT = 2;\nexport const OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 10;\nexport const OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 10;\nexport const OFFLOAD_IO_PACKET_LENGTH_LIMIT = 128 * 1024;\n\nexport function imposeAttributeLimits(attributes: Attributes): Attributes {\n const newAttributes: Attributes = {};\n\n for (const [key, value] of Object.entries(attributes)) {\n if (calculateAttributeValueLength(value) > OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) {\n continue;\n }\n\n if (Object.keys(newAttributes).length >= OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) {\n break;\n }\n\n newAttributes[key] = value;\n }\n\n return newAttributes;\n}\n\nfunction calculateAttributeValueLength(value: AttributeValue | undefined | null): number {\n if (value === undefined || value === null) {\n return 0;\n }\n\n if (typeof value === \"string\") {\n return value.length;\n }\n\n if (typeof value === \"number\") {\n return 8;\n }\n\n if (typeof value === \"boolean\") {\n return 4;\n }\n\n if (Array.isArray(value)) {\n return value.reduce((acc: number, v) => acc + calculateAttributeValueLength(v), 0);\n }\n\n return 0;\n}\n","export const SemanticInternalAttributes = {\n ENVIRONMENT_ID: \"ctx.environment.id\",\n ENVIRONMENT_TYPE: \"ctx.environment.type\",\n ORGANIZATION_ID: \"ctx.organization.id\",\n ORGANIZATION_SLUG: \"ctx.organization.slug\",\n ORGANIZATION_NAME: \"ctx.organization.name\",\n PROJECT_ID: \"ctx.project.id\",\n PROJECT_REF: \"ctx.project.ref\",\n PROJECT_NAME: \"ctx.project.title\",\n PROJECT_DIR: \"project.dir\",\n ATTEMPT_ID: \"ctx.attempt.id\",\n ATTEMPT_NUMBER: \"ctx.attempt.number\",\n RUN_ID: \"ctx.run.id\",\n RUN_IS_TEST: \"ctx.run.isTest\",\n BATCH_ID: \"ctx.batch.id\",\n TASK_SLUG: \"ctx.task.id\",\n TASK_PATH: \"ctx.task.filePath\",\n TASK_EXPORT_NAME: \"ctx.task.exportName\",\n QUEUE_NAME: \"ctx.queue.name\",\n QUEUE_ID: \"ctx.queue.id\",\n SPAN_PARTIAL: \"$span.partial\",\n SPAN_ID: \"$span.span_id\",\n OUTPUT: \"$output\",\n OUTPUT_TYPE: \"$mime_type_output\",\n STYLE: \"$style\",\n STYLE_ICON: \"$style.icon\",\n STYLE_VARIANT: \"$style.variant\",\n STYLE_ACCESSORY: \"$style.accessory\",\n METADATA: \"$metadata\",\n TRIGGER: \"$trigger\",\n PAYLOAD: \"$payload\",\n PAYLOAD_TYPE: \"$mime_type_payload\",\n SHOW: \"$show\",\n SHOW_ACTIONS: \"$show.actions\",\n WORKER_ID: \"worker.id\",\n WORKER_VERSION: \"worker.version\",\n CLI_VERSION: \"cli.version\",\n SDK_VERSION: \"sdk.version\",\n SDK_LANGUAGE: \"sdk.language\",\n RETRY_AT: \"retry.at\",\n RETRY_DELAY: \"retry.delay\",\n RETRY_COUNT: \"retry.count\",\n LINK_TITLE: \"$link.title\",\n IDEMPOTENCY_KEY: \"ctx.run.idempotencyKey\",\n};\n","import { Attributes } from \"@opentelemetry/api\";\n\nexport const NULL_SENTINEL = \"$@null((\";\n\nexport function flattenAttributes(\n obj: Record<string, unknown> | Array<unknown> | string | boolean | number | null | undefined,\n prefix?: string\n): Attributes {\n const result: Attributes = {};\n\n // Check if obj is null or undefined\n if (obj === undefined) {\n return result;\n }\n\n if (obj === null) {\n result[prefix || \"\"] = NULL_SENTINEL;\n return result;\n }\n\n if (typeof obj === \"string\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n if (typeof obj === \"number\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n if (typeof obj === \"boolean\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n const newPrefix = `${prefix ? `${prefix}.` : \"\"}${Array.isArray(obj) ? `[${key}]` : key}`;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n if (typeof value[i] === \"object\" && value[i] !== null) {\n // update null check here as well\n Object.assign(result, flattenAttributes(value[i], `${newPrefix}.[${i}]`));\n } else {\n if (value[i] === null) {\n result[`${newPrefix}.[${i}]`] = NULL_SENTINEL;\n } else {\n result[`${newPrefix}.[${i}]`] = value[i];\n }\n }\n }\n } else if (isRecord(value)) {\n // update null check here\n Object.assign(result, flattenAttributes(value, newPrefix));\n } else {\n if (typeof value === \"number\" || typeof value === \"string\" || typeof value === \"boolean\") {\n result[newPrefix] = value;\n } else if (value === null) {\n result[newPrefix] = NULL_SENTINEL;\n }\n }\n }\n\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function unflattenAttributes(\n obj: Attributes\n): Record<string, unknown> | string | number | boolean | null | undefined {\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj)) {\n return obj;\n }\n\n if (\n typeof obj === \"object\" &&\n obj !== null &&\n Object.keys(obj).length === 1 &&\n Object.keys(obj)[0] === \"\"\n ) {\n return rehydrateNull(obj[\"\"]) as any;\n }\n\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const parts = key.split(\".\").reduce((acc, part) => {\n if (part.includes(\"[\")) {\n // Handling nested array indices\n const subparts = part.split(/\\[|\\]/).filter((p) => p !== \"\");\n acc.push(...subparts);\n } else {\n acc.push(part);\n }\n return acc;\n }, [] as string[]);\n\n let current: any = result;\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n const nextPart = parts[i + 1];\n const isArray = /^\\d+$/.test(nextPart);\n if (isArray && !Array.isArray(current[part])) {\n current[part] = [];\n } else if (!isArray && current[part] === undefined) {\n current[part] = {};\n }\n current = current[part];\n }\n const lastPart = parts[parts.length - 1];\n current[lastPart] = rehydrateNull(value);\n }\n\n // Convert the result to an array if all top-level keys are numeric indices\n if (Object.keys(result).every((k) => /^\\d+$/.test(k))) {\n const maxIndex = Math.max(...Object.keys(result).map((k) => parseInt(k)));\n const arrayResult = Array(maxIndex + 1);\n for (const key in result) {\n arrayResult[parseInt(key)] = result[key];\n }\n return arrayResult as any;\n }\n\n return result;\n}\n\nexport function primitiveValueOrflattenedAttributes(\n obj: Record<string, unknown> | Array<unknown> | string | boolean | number | undefined,\n prefix: string | undefined\n): Attributes | string | number | boolean | undefined {\n if (\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\" ||\n obj === null ||\n obj === undefined\n ) {\n return obj;\n }\n\n const attributes = flattenAttributes(obj, prefix);\n\n if (\n prefix !== undefined &&\n typeof attributes[prefix] !== \"undefined\" &&\n attributes[prefix] !== null\n ) {\n return attributes[prefix] as unknown as Attributes;\n }\n\n return attributes;\n}\n\nfunction rehydrateNull(value: any): any {\n if (value === NULL_SENTINEL) {\n return null;\n }\n\n return value;\n}\n","export const _globalThis = typeof globalThis === \"object\" ? globalThis : global;\n","import { ApiClientConfiguration } from \"../apiClientManager/types\";\nimport { Clock } from \"../clock/clock\";\nimport type { RuntimeManager } from \"../runtime/manager\";\nimport { TaskCatalog } from \"../task-catalog/catalog\";\nimport { TaskContext } from \"../taskContext/types\";\nimport { _globalThis } from \"./platform\";\n\nconst GLOBAL_TRIGGER_DOT_DEV_KEY = Symbol.for(`dev.trigger.ts.api`);\n\nconst _global = _globalThis as TriggerDotDevGlobal;\n\nexport function registerGlobal<Type extends keyof TriggerDotDevGlobalAPI>(\n type: Type,\n instance: TriggerDotDevGlobalAPI[Type],\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_TRIGGER_DOT_DEV_KEY] = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] ?? {});\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`trigger.dev: Attempted duplicate registration of API: ${type}`);\n return false;\n }\n\n api[type] = instance;\n\n return true;\n}\n\nexport function getGlobal<Type extends keyof TriggerDotDevGlobalAPI>(\n type: Type\n): TriggerDotDevGlobalAPI[Type] | undefined {\n return _global[GLOBAL_TRIGGER_DOT_DEV_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof TriggerDotDevGlobalAPI) {\n const api = _global[GLOBAL_TRIGGER_DOT_DEV_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype TriggerDotDevGlobal = {\n [GLOBAL_TRIGGER_DOT_DEV_KEY]?: TriggerDotDevGlobalAPI;\n};\n\ntype TriggerDotDevGlobalAPI = {\n runtime?: RuntimeManager;\n logger?: any;\n clock?: Clock;\n [\"task-catalog\"]?: TaskCatalog;\n [\"task-context\"]?: TaskContext;\n [\"api-client\"]?: ApiClientConfiguration;\n};\n","import { Attributes } from \"@opentelemetry/api\";\nimport { BackgroundWorkerProperties, TaskRunContext } from \"../schemas\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { TaskContext } from \"./types\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\n\nconst API_NAME = \"task-context\";\n\nexport class TaskContextAPI {\n private static _instance?: TaskContextAPI;\n\n private constructor() {}\n\n public static getInstance(): TaskContextAPI {\n if (!this._instance) {\n this._instance = new TaskContextAPI();\n }\n\n return this._instance;\n }\n\n get isInsideTask(): boolean {\n return this.#getTaskContext() !== undefined;\n }\n\n get ctx(): TaskRunContext | undefined {\n return this.#getTaskContext()?.ctx;\n }\n\n get worker(): BackgroundWorkerProperties | undefined {\n return this.#getTaskContext()?.worker;\n }\n\n get attributes(): Attributes {\n if (this.ctx) {\n return {\n ...this.contextAttributes,\n ...this.workerAttributes,\n };\n }\n\n return {};\n }\n\n get workerAttributes(): Attributes {\n if (this.worker) {\n return {\n [SemanticInternalAttributes.WORKER_ID]: this.worker.id,\n [SemanticInternalAttributes.WORKER_VERSION]: this.worker.version,\n };\n }\n\n return {};\n }\n\n get contextAttributes(): Attributes {\n if (this.ctx) {\n return {\n [SemanticInternalAttributes.ATTEMPT_ID]: this.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: this.ctx.attempt.number,\n [SemanticInternalAttributes.TASK_SLUG]: this.ctx.task.id,\n [SemanticInternalAttributes.TASK_PATH]: this.ctx.task.filePath,\n [SemanticInternalAttributes.TASK_EXPORT_NAME]: this.ctx.task.exportName,\n [SemanticInternalAttributes.QUEUE_NAME]: this.ctx.queue.name,\n [SemanticInternalAttributes.QUEUE_ID]: this.ctx.queue.id,\n [SemanticInternalAttributes.ENVIRONMENT_ID]: this.ctx.environment.id,\n [SemanticInternalAttributes.ENVIRONMENT_TYPE]: this.ctx.environment.type,\n [SemanticInternalAttributes.ORGANIZATION_ID]: this.ctx.organization.id,\n [SemanticInternalAttributes.PROJECT_ID]: this.ctx.project.id,\n [SemanticInternalAttributes.PROJECT_REF]: this.ctx.project.ref,\n [SemanticInternalAttributes.PROJECT_NAME]: this.ctx.project.name,\n [SemanticInternalAttributes.RUN_ID]: this.ctx.run.id,\n [SemanticInternalAttributes.RUN_IS_TEST]: this.ctx.run.isTest,\n [SemanticInternalAttributes.ORGANIZATION_SLUG]: this.ctx.organization.slug,\n [SemanticInternalAttributes.ORGANIZATION_NAME]: this.ctx.organization.name,\n [SemanticInternalAttributes.BATCH_ID]: this.ctx.batch?.id,\n [SemanticInternalAttributes.IDEMPOTENCY_KEY]: this.ctx.run.idempotencyKey,\n };\n }\n\n return {};\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalTaskContext(taskContext: TaskContext): boolean {\n return registerGlobal(API_NAME, taskContext);\n }\n\n #getTaskContext(): TaskContext | undefined {\n return getGlobal(API_NAME);\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TaskContextAPI } from \"./taskContext\";\n/** Entrypoint for logger API */\nexport const taskContext = TaskContextAPI.getInstance();\n","import { LogRecord, LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { Span, SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { Context } from \"@opentelemetry/api\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { taskContext } from \"../task-context-api\";\n\nexport class TaskContextSpanProcessor implements SpanProcessor {\n private _innerProcessor: SpanProcessor;\n\n constructor(innerProcessor: SpanProcessor) {\n this._innerProcessor = innerProcessor;\n }\n\n // Called when a span starts\n onStart(span: Span, parentContext: Context): void {\n if (taskContext.ctx) {\n span.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContext.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContext.ctx.attempt.number,\n },\n SemanticInternalAttributes.METADATA\n )\n );\n }\n\n this._innerProcessor.onStart(span, parentContext);\n }\n\n // Delegate the rest of the methods to the wrapped processor\n\n onEnd(span: Span): void {\n this._innerProcessor.onEnd(span);\n }\n\n shutdown(): Promise<void> {\n return this._innerProcessor.shutdown();\n }\n\n forceFlush(): Promise<void> {\n return this._innerProcessor.forceFlush();\n }\n}\n\nexport class TaskContextLogProcessor implements LogRecordProcessor {\n private _innerProcessor: LogRecordProcessor;\n\n constructor(innerProcessor: LogRecordProcessor) {\n this._innerProcessor = innerProcessor;\n }\n forceFlush(): Promise<void> {\n return this._innerProcessor.forceFlush();\n }\n onEmit(logRecord: LogRecord, context?: Context | undefined): void {\n // Adds in the context attributes to the log record\n if (taskContext.ctx) {\n logRecord.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContext.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContext.ctx.attempt.number,\n },\n SemanticInternalAttributes.METADATA\n )\n );\n }\n\n this._innerProcessor.onEmit(logRecord, context);\n }\n shutdown(): Promise<void> {\n return this._innerProcessor.shutdown();\n }\n}\n","export function getEnvVar(name: string): string | undefined {\n // This could run in a non-Node.js environment (Bun, Deno, CF Worker, etc.), so don't just assume process.env is a thing\n if (typeof process !== \"undefined\" && typeof process.env === \"object\" && process.env !== null) {\n return process.env[name];\n }\n}\n","import { z } from \"zod\";\nimport { BackgroundWorkerMetadata, ImageDetailsMetadata } from \"./resources\";\nimport { QueueOptions } from \"./schemas\";\n\nexport const WhoAmIResponseSchema = z.object({\n userId: z.string(),\n email: z.string().email(),\n dashboardUrl: z.string(),\n});\n\nexport type WhoAmIResponse = z.infer<typeof WhoAmIResponseSchema>;\n\nexport const GetProjectResponseBody = z.object({\n id: z.string(),\n externalRef: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.coerce.date(),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n createdAt: z.coerce.date(),\n }),\n});\n\nexport type GetProjectResponseBody = z.infer<typeof GetProjectResponseBody>;\n\nexport const GetProjectsResponseBody = z.array(GetProjectResponseBody);\n\nexport type GetProjectsResponseBody = z.infer<typeof GetProjectsResponseBody>;\n\nexport const GetProjectEnvResponse = z.object({\n apiKey: z.string(),\n name: z.string(),\n apiUrl: z.string(),\n});\n\nexport type GetProjectEnvResponse = z.infer<typeof GetProjectEnvResponse>;\n\nexport const CreateBackgroundWorkerRequestBody = z.object({\n localOnly: z.boolean(),\n metadata: BackgroundWorkerMetadata,\n});\n\nexport type CreateBackgroundWorkerRequestBody = z.infer<typeof CreateBackgroundWorkerRequestBody>;\n\nexport const CreateBackgroundWorkerResponse = z.object({\n id: z.string(),\n version: z.string(),\n contentHash: z.string(),\n});\n\nexport type CreateBackgroundWorkerResponse = z.infer<typeof CreateBackgroundWorkerResponse>;\n\nexport const TriggerTaskRequestBody = z.object({\n payload: z.any(),\n context: z.any(),\n options: z\n .object({\n dependentAttempt: z.string().optional(),\n dependentBatch: z.string().optional(),\n lockToVersion: z.string().optional(),\n queue: QueueOptions.optional(),\n concurrencyKey: z.string().optional(),\n idempotencyKey: z.string().optional(),\n test: z.boolean().optional(),\n payloadType: z.string().optional(),\n })\n .optional(),\n});\n\nexport type TriggerTaskRequestBody = z.infer<typeof TriggerTaskRequestBody>;\n\nexport const TriggerTaskResponse = z.object({\n id: z.string(),\n});\n\nexport type TriggerTaskResponse = z.infer<typeof TriggerTaskResponse>;\n\nexport const BatchTriggerTaskRequestBody = z.object({\n items: TriggerTaskRequestBody.array(),\n dependentAttempt: z.string().optional(),\n});\n\nexport type BatchTriggerTaskRequestBody = z.infer<typeof BatchTriggerTaskRequestBody>;\n\nexport const BatchTriggerTaskResponse = z.object({\n batchId: z.string(),\n runs: z.string().array(),\n});\n\nexport type BatchTriggerTaskResponse = z.infer<typeof BatchTriggerTaskResponse>;\n\nexport const GetBatchResponseBody = z.object({\n id: z.string(),\n items: z.array(\n z.object({\n id: z.string(),\n taskRunId: z.string(),\n status: z.enum([\"PENDING\", \"CANCELED\", \"COMPLETED\", \"FAILED\"]),\n })\n ),\n});\n\nexport type GetBatchResponseBody = z.infer<typeof GetBatchResponseBody>;\n\nexport const GetEnvironmentVariablesResponseBody = z.object({\n variables: z.record(z.string()),\n});\n\nexport type GetEnvironmentVariablesResponseBody = z.infer<\n typeof GetEnvironmentVariablesResponseBody\n>;\n\nexport const StartDeploymentIndexingRequestBody = z.object({\n imageReference: z.string(),\n selfHosted: z.boolean().optional(),\n});\n\nexport type StartDeploymentIndexingRequestBody = z.infer<typeof StartDeploymentIndexingRequestBody>;\n\nexport const StartDeploymentIndexingResponseBody = z.object({\n id: z.string(),\n contentHash: z.string(),\n});\n\nexport type StartDeploymentIndexingResponseBody = z.infer<\n typeof StartDeploymentIndexingResponseBody\n>;\n\nexport const ExternalBuildData = z.object({\n buildId: z.string(),\n buildToken: z.string(),\n projectId: z.string(),\n});\n\nexport type ExternalBuildData = z.infer<typeof ExternalBuildData>;\n\nexport const InitializeDeploymentResponseBody = z.object({\n id: z.string(),\n contentHash: z.string(),\n shortCode: z.string(),\n version: z.string(),\n imageTag: z.string(),\n externalBuildData: ExternalBuildData.optional().nullable(),\n registryHost: z.string().optional(),\n});\n\nexport type InitializeDeploymentResponseBody = z.infer<typeof InitializeDeploymentResponseBody>;\n\nexport const InitializeDeploymentRequestBody = z.object({\n contentHash: z.string(),\n userId: z.string().optional(),\n});\n\nexport type InitializeDeploymentRequestBody = z.infer<typeof InitializeDeploymentRequestBody>;\n\nexport const DeploymentErrorData = z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n});\n\nexport const GetDeploymentResponseBody = z.object({\n id: z.string(),\n status: z.enum([\n \"PENDING\",\n \"BUILDING\",\n \"DEPLOYING\",\n \"DEPLOYED\",\n \"FAILED\",\n \"CANCELED\",\n \"TIMED_OUT\",\n ]),\n contentHash: z.string(),\n shortCode: z.string(),\n version: z.string(),\n imageReference: z.string().optional(),\n errorData: DeploymentErrorData.optional().nullable(),\n worker: z\n .object({\n id: z.string(),\n version: z.string(),\n tasks: z.array(\n z.object({\n id: z.string(),\n slug: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n })\n ),\n })\n .optional(),\n});\n\nexport type GetDeploymentResponseBody = z.infer<typeof GetDeploymentResponseBody>;\n\nexport const CreateUploadPayloadUrlResponseBody = z.object({\n presignedUrl: z.string(),\n});\n\nexport type CreateUploadPayloadUrlResponseBody = z.infer<typeof CreateUploadPayloadUrlResponseBody>;\n\nexport const ReplayRunResponse = z.object({\n id: z.string(),\n});\n\nexport type ReplayRunResponse = z.infer<typeof ReplayRunResponse>;\n\nexport const CanceledRunResponse = z.object({\n message: z.string(),\n});\n\nexport type CanceledRunResponse = z.infer<typeof CanceledRunResponse>;\n\nexport const ScheduledTaskPayload = z.object({\n /** The schedule id associated with this run (you can have many schedules for the same task).\n You can use this to remove the schedule, update it, etc */\n scheduleId: z.string(),\n /** When the task was scheduled to run.\n * Note this will be slightly different from `new Date()` because it takes a few ms to run the task. */\n timestamp: z.date(),\n /** When the task was last run (it has been).\n This can be undefined if it's never been run */\n lastTimestamp: z.date().optional(),\n /** You can optionally provide an external id when creating the schedule.\n Usually you would use a userId or some other unique identifier.\n This defaults to undefined if you didn't provide one. */\n externalId: z.string().optional(),\n /** The next 5 dates this task is scheduled to run */\n upcoming: z.array(z.date()),\n});\n\nexport type ScheduledTaskPayload = z.infer<typeof ScheduledTaskPayload>;\n\nexport const CreateScheduleOptions = z.object({\n /** The id of the task you want to attach to. */\n task: z.string(),\n /** The schedule in CRON format.\n * \n * ```txt\n* * * * * *\n┬ ┬ ┬ ┬ ┬\n│ │ │ │ |\n│ │ │ │ └ day of week (0 - 7, 1L - 7L) (0 or 7 is Sun)\n│ │ │ └───── month (1 - 12)\n│ │ └────────── day of month (1 - 31, L)\n│ └─────────────── hour (0 - 23)\n└──────────────────── minute (0 - 59)\n * ```\n\n\"L\" means the last. In the \"day of week\" field, 1L means the last Monday of the month. In the day of month field, L means the last day of the month.\n\n */\n cron: z.string(),\n /** (Optional) You can only create one schedule with this key. If you use it twice, the second call will update the schedule.\n *\n * This is useful if you don't want to create duplicate schedules for a user. */\n deduplicationKey: z.string().optional(),\n /** Optionally, you can specify your own IDs (like a user ID) and then use it inside the run function of your task.\n *\n * This allows you to have per-user CRON tasks.\n */\n externalId: z.string().optional(),\n});\n\nexport type CreateScheduleOptions = z.infer<typeof CreateScheduleOptions>;\n\nexport const UpdateScheduleOptions = CreateScheduleOptions;\n\nexport type UpdateScheduleOptions = z.infer<typeof UpdateScheduleOptions>;\n\nexport const ScheduleObject = z.object({\n id: z.string(),\n task: z.string(),\n active: z.boolean(),\n deduplicationKey: z.string().nullish(),\n externalId: z.string().nullish(),\n generator: z.object({\n type: z.literal(\"CRON\"),\n expression: z.string(),\n description: z.string(),\n }),\n nextRun: z.coerce.date().nullish(),\n environments: z.array(\n z.object({\n id: z.string(),\n type: z.string(),\n userName: z.string().nullish(),\n })\n ),\n});\n\nexport type ScheduleObject = z.infer<typeof ScheduleObject>;\n\nexport const DeletedScheduleObject = z.object({\n id: z.string(),\n});\n\nexport type DeletedScheduleObject = z.infer<typeof DeletedScheduleObject>;\n\nexport const ListSchedulesResult = z.object({\n data: z.array(ScheduleObject),\n pagination: z.object({\n currentPage: z.number(),\n totalPages: z.number(),\n count: z.number(),\n }),\n});\n\nexport type ListSchedulesResult = z.infer<typeof ListSchedulesResult>;\n\nexport const ListScheduleOptions = z.object({\n page: z.number().optional(),\n perPage: z.number().optional(),\n});\n\nexport type ListScheduleOptions = z.infer<typeof ListScheduleOptions>;\n\nexport const RunStatus = z.enum([\n \"PENDING\",\n \"EXECUTING\",\n \"PAUSED\",\n \"COMPLETED\",\n \"FAILED\",\n \"CANCELED\",\n]);\n\nexport type RunStatus = z.infer<typeof RunStatus>;\n\nexport const AttemptStatus = z.enum([\n \"PENDING\",\n \"EXECUTING\",\n \"PAUSED\",\n \"COMPLETED\",\n \"FAILED\",\n \"CANCELED\",\n]);\n\nexport type AttemptStatus = z.infer<typeof AttemptStatus>;\n\nexport const RetrieveRunResponse = z.object({\n id: z.string(),\n status: RunStatus,\n taskIdentifier: z.string(),\n idempotencyKey: z.string().optional(),\n version: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n attempts: z.array(\n z\n .object({\n id: z.string(),\n status: AttemptStatus,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n startedAt: z.coerce.date().optional(),\n completedAt: z.coerce.date().optional(),\n })\n .optional()\n ),\n});\n\nexport type RetrieveRunResponse = z.infer<typeof RetrieveRunResponse>;\n","import { z } from \"zod\";\nimport { QueueOptions, RetryOptions, Machine } from \"./schemas\";\n\nexport const TaskResource = z.object({\n id: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n triggerSource: z.string().optional(),\n});\n\nexport type TaskResource = z.infer<typeof TaskResource>;\n\nexport const BackgroundWorkerMetadata = z.object({\n packageVersion: z.string(),\n contentHash: z.string(),\n cliPackageVersion: z.string().optional(),\n tasks: z.array(TaskResource),\n});\n\nexport type BackgroundWorkerMetadata = z.infer<typeof BackgroundWorkerMetadata>;\n\nexport const ImageDetailsMetadata = z.object({\n contentHash: z.string(),\n imageTag: z.string(),\n});\n\nexport type ImageDetailsMetadata = z.infer<typeof ImageDetailsMetadata>;\n","import { z } from \"zod\";\nimport { RequireKeys } from \"../types\";\nimport { TaskRunExecution } from \"./common\";\n\n/*\n WARNING: Never import anything from ./messages here. If it's needed in both, put it here instead.\n*/\n\nexport const EnvironmentType = z.enum([\"PRODUCTION\", \"STAGING\", \"DEVELOPMENT\", \"PREVIEW\"]);\nexport type EnvironmentType = z.infer<typeof EnvironmentType>;\n\nexport const MachineCpu = z\n .union([z.literal(0.25), z.literal(0.5), z.literal(1), z.literal(2), z.literal(4)])\n .default(0.5);\n\nexport type MachineCpu = z.infer<typeof MachineCpu>;\n\nexport const MachineMemory = z\n .union([z.literal(0.25), z.literal(0.5), z.literal(1), z.literal(2), z.literal(4), z.literal(8)])\n .default(1);\n\nexport type MachineMemory = z.infer<typeof MachineMemory>;\n\nexport const Machine = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n cpu: MachineCpu,\n memory: MachineMemory,\n});\n\nexport type Machine = z.infer<typeof Machine>;\n\nexport const TaskRunExecutionPayload = z.object({\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n environment: z.record(z.string()).optional(),\n});\n\nexport type TaskRunExecutionPayload = z.infer<typeof TaskRunExecutionPayload>;\n\nexport const ProdTaskRunExecution = TaskRunExecution.extend({\n worker: z.object({\n id: z.string(),\n contentHash: z.string(),\n version: z.string(),\n }),\n});\n\nexport type ProdTaskRunExecution = z.infer<typeof ProdTaskRunExecution>;\n\nexport const ProdTaskRunExecutionPayload = z.object({\n execution: ProdTaskRunExecution,\n traceContext: z.record(z.unknown()),\n environment: z.record(z.string()).optional(),\n});\n\nexport type ProdTaskRunExecutionPayload = z.infer<typeof ProdTaskRunExecutionPayload>;\n\nexport const FixedWindowRateLimit = z.object({\n type: z.literal(\"fixed-window\"),\n limit: z.number(),\n window: z.union([\n z.object({\n seconds: z.number(),\n }),\n z.object({\n minutes: z.number(),\n }),\n z.object({\n hours: z.number(),\n }),\n ]),\n});\n\nexport const SlidingWindowRateLimit = z.object({\n type: z.literal(\"sliding-window\"),\n limit: z.number(),\n window: z.union([\n z.object({\n seconds: z.number(),\n }),\n z.object({\n minutes: z.number(),\n }),\n z.object({\n hours: z.number(),\n }),\n ]),\n});\n\nexport const RateLimitOptions = z.discriminatedUnion(\"type\", [\n FixedWindowRateLimit,\n SlidingWindowRateLimit,\n]);\n\nexport type RateLimitOptions = z.infer<typeof RateLimitOptions>;\n\nexport const RetryOptions = z.object({\n /** The number of attempts before giving up */\n maxAttempts: z.number().int().optional(),\n /** The exponential factor to use when calculating the next retry time.\n *\n * Each subsequent retry will be calculated as `previousTimeout * factor`\n */\n factor: z.number().optional(),\n /** The minimum time to wait before retrying */\n minTimeoutInMs: z.number().int().optional(),\n /** The maximum time to wait before retrying */\n maxTimeoutInMs: z.number().int().optional(),\n /** Randomize the timeout between retries.\n *\n * This can be useful to prevent the thundering herd problem where all retries happen at the same time.\n */\n randomize: z.boolean().optional(),\n});\n\nexport type RetryOptions = z.infer<typeof RetryOptions>;\n\nexport const QueueOptions = z.object({\n /** You can define a shared queue and then pass the name in to your task.\n * \n * @example\n * \n * ```ts\n * const myQueue = queue({\n name: \"my-queue\",\n concurrencyLimit: 1,\n });\n\n export const task1 = task({\n id: \"task-1\",\n queue: {\n name: \"my-queue\",\n },\n run: async (payload: { message: string }) => {\n // ...\n },\n });\n\n export const task2 = task({\n id: \"task-2\",\n queue: {\n name: \"my-queue\",\n },\n run: async (payload: { message: string }) => {\n // ...\n },\n });\n * ```\n */\n name: z.string().optional(),\n /** An optional property that specifies the maximum number of concurrent run executions.\n *\n * If this property is omitted, the task can potentially use up the full concurrency of an environment. */\n concurrencyLimit: z.number().int().min(0).max(1000).optional(),\n /** @deprecated This feature is coming soon */\n rateLimit: RateLimitOptions.optional(),\n});\n\nexport type QueueOptions = z.infer<typeof QueueOptions>;\n\nexport const TaskMetadata = z.object({\n id: z.string(),\n packageVersion: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n triggerSource: z.string().optional(),\n});\n\nexport type TaskMetadata = z.infer<typeof TaskMetadata>;\n\nexport const TaskFileMetadata = z.object({\n filePath: z.string(),\n exportName: z.string(),\n});\n\nexport type TaskFileMetadata = z.infer<typeof TaskFileMetadata>;\n\nexport const TaskMetadataWithFilePath = TaskMetadata.merge(TaskFileMetadata);\n\nexport type TaskMetadataWithFilePath = z.infer<typeof TaskMetadataWithFilePath>;\n\nexport const PostStartCauses = z.enum([\"index\", \"create\", \"restore\"]);\nexport type PostStartCauses = z.infer<typeof PostStartCauses>;\n\nexport const PreStopCauses = z.enum([\"terminate\"]);\nexport type PreStopCauses = z.infer<typeof PreStopCauses>;\n\nconst RegexSchema = z.custom<RegExp>((val) => {\n try {\n // Check to see if val is a regex\n return typeof (val as RegExp).test === \"function\";\n } catch {\n return false;\n }\n});\n\nexport const Config = z.object({\n project: z.string(),\n triggerDirectories: z.string().array().optional(),\n triggerUrl: z.string().optional(),\n projectDir: z.string().optional(),\n tsconfigPath: z.string().optional(),\n retries: z\n .object({\n enabledInDev: z.boolean().default(true),\n default: RetryOptions.optional(),\n })\n .optional(),\n additionalPackages: z.string().array().optional(),\n additionalFiles: z.string().array().optional(),\n dependenciesToBundle: z.array(z.union([z.string(), RegexSchema])).optional(),\n logLevel: z.string().optional(),\n enableConsoleLogging: z.boolean().optional(),\n postInstall: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof Config>;\nexport type ResolvedConfig = RequireKeys<\n Config,\n \"triggerDirectories\" | \"triggerUrl\" | \"projectDir\" | \"tsconfigPath\"\n>;\n\nexport const WaitReason = z.enum([\"WAIT_FOR_DURATION\", \"WAIT_FOR_TASK\", \"WAIT_FOR_BATCH\"]);\n\nexport type WaitReason = z.infer<typeof WaitReason>;\n","import { z } from \"zod\";\n\nexport const TaskRunBuiltInError = z.object({\n type: z.literal(\"BUILT_IN_ERROR\"),\n name: z.string(),\n message: z.string(),\n stackTrace: z.string(),\n});\n\nexport type TaskRunBuiltInError = z.infer<typeof TaskRunBuiltInError>;\n\nexport const TaskRunCustomErrorObject = z.object({\n type: z.literal(\"CUSTOM_ERROR\"),\n raw: z.string(),\n});\n\nexport type TaskRunCustomErrorObject = z.infer<typeof TaskRunCustomErrorObject>;\n\nexport const TaskRunStringError = z.object({\n type: z.literal(\"STRING_ERROR\"),\n raw: z.string(),\n});\n\nexport type TaskRunStringError = z.infer<typeof TaskRunStringError>;\n\nexport const TaskRunErrorCodes = {\n COULD_NOT_FIND_EXECUTOR: \"COULD_NOT_FIND_EXECUTOR\",\n COULD_NOT_FIND_TASK: \"COULD_NOT_FIND_TASK\",\n CONFIGURED_INCORRECTLY: \"CONFIGURED_INCORRECTLY\",\n TASK_ALREADY_RUNNING: \"TASK_ALREADY_RUNNING\",\n TASK_EXECUTION_FAILED: \"TASK_EXECUTION_FAILED\",\n TASK_EXECUTION_ABORTED: \"TASK_EXECUTION_ABORTED\",\n TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE: \"TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE\",\n TASK_RUN_CANCELLED: \"TASK_RUN_CANCELLED\",\n TASK_OUTPUT_ERROR: \"TASK_OUTPUT_ERROR\",\n HANDLE_ERROR_ERROR: \"HANDLE_ERROR_ERROR\",\n GRACEFUL_EXIT_TIMEOUT: \"GRACEFUL_EXIT_TIMEOUT\",\n} as const;\n\nexport const TaskRunInternalError = z.object({\n type: z.literal(\"INTERNAL_ERROR\"),\n code: z.enum([\n \"COULD_NOT_FIND_EXECUTOR\",\n \"COULD_NOT_FIND_TASK\",\n \"CONFIGURED_INCORRECTLY\",\n \"TASK_ALREADY_RUNNING\",\n \"TASK_EXECUTION_FAILED\",\n \"TASK_EXECUTION_ABORTED\",\n \"TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE\",\n \"TASK_RUN_CANCELLED\",\n \"TASK_OUTPUT_ERROR\",\n \"HANDLE_ERROR_ERROR\",\n \"GRACEFUL_EXIT_TIMEOUT\",\n ]),\n message: z.string().optional(),\n});\n\nexport type TaskRunInternalError = z.infer<typeof TaskRunInternalError>;\n\nexport const TaskRunError = z.discriminatedUnion(\"type\", [\n TaskRunBuiltInError,\n TaskRunCustomErrorObject,\n TaskRunStringError,\n TaskRunInternalError,\n]);\n\nexport type TaskRunError = z.infer<typeof TaskRunError>;\n\nexport const TaskRun = z.object({\n id: z.string(),\n payload: z.string(),\n payloadType: z.string(),\n context: z.any(),\n tags: z.array(z.string()),\n isTest: z.boolean().default(false),\n createdAt: z.coerce.date(),\n idempotencyKey: z.string().optional(),\n});\n\nexport type TaskRun = z.infer<typeof TaskRun>;\n\nexport const TaskRunExecutionTask = z.object({\n id: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n});\n\nexport type TaskRunExecutionTask = z.infer<typeof TaskRunExecutionTask>;\n\nexport const TaskRunExecutionAttempt = z.object({\n id: z.string(),\n number: z.number(),\n startedAt: z.coerce.date(),\n backgroundWorkerId: z.string(),\n backgroundWorkerTaskId: z.string(),\n status: z.string(),\n});\n\nexport type TaskRunExecutionAttempt = z.infer<typeof TaskRunExecutionAttempt>;\n\nexport const TaskRunExecutionEnvironment = z.object({\n id: z.string(),\n slug: z.string(),\n type: z.enum([\"PRODUCTION\", \"STAGING\", \"DEVELOPMENT\", \"PREVIEW\"]),\n});\n\nexport type TaskRunExecutionEnvironment = z.infer<typeof TaskRunExecutionEnvironment>;\n\nexport const TaskRunExecutionOrganization = z.object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionOrganization = z.infer<typeof TaskRunExecutionOrganization>;\n\nexport const TaskRunExecutionProject = z.object({\n id: z.string(),\n ref: z.string(),\n slug: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionProject = z.infer<typeof TaskRunExecutionProject>;\n\nexport const TaskRunExecutionQueue = z.object({\n id: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionQueue = z.infer<typeof TaskRunExecutionQueue>;\n\nexport const TaskRunExecutionBatch = z.object({\n id: z.string(),\n});\n\nexport const TaskRunExecution = z.object({\n task: TaskRunExecutionTask,\n attempt: TaskRunExecutionAttempt,\n run: TaskRun,\n queue: TaskRunExecutionQueue,\n environment: TaskRunExecutionEnvironment,\n organization: TaskRunExecutionOrganization,\n project: TaskRunExecutionProject,\n batch: TaskRunExecutionBatch.optional(),\n});\n\nexport type TaskRunExecution = z.infer<typeof TaskRunExecution>;\n\nexport const TaskRunContext = z.object({\n task: TaskRunExecutionTask,\n attempt: TaskRunExecutionAttempt.omit({\n backgroundWorkerId: true,\n backgroundWorkerTaskId: true,\n }),\n run: TaskRun.omit({ payload: true, payloadType: true }),\n queue: TaskRunExecutionQueue,\n environment: TaskRunExecutionEnvironment,\n organization: TaskRunExecutionOrganization,\n project: TaskRunExecutionProject,\n batch: TaskRunExecutionBatch.optional(),\n});\n\nexport type TaskRunContext = z.infer<typeof TaskRunContext>;\n\nexport const TaskRunExecutionRetry = z.object({\n timestamp: z.number(),\n delay: z.number(),\n error: z.unknown().optional(),\n});\n\nexport type TaskRunExecutionRetry = z.infer<typeof TaskRunExecutionRetry>;\n\nexport const TaskRunFailedExecutionResult = z.object({\n ok: z.literal(false),\n id: z.string(),\n error: TaskRunError,\n retry: TaskRunExecutionRetry.optional(),\n skippedRetrying: z.boolean().optional(),\n});\n\nexport type TaskRunFailedExecutionResult = z.infer<typeof TaskRunFailedExecutionResult>;\n\nexport const TaskRunSuccessfulExecutionResult = z.object({\n ok: z.literal(true),\n id: z.string(),\n output: z.string().optional(),\n outputType: z.string(),\n});\n\nexport type TaskRunSuccessfulExecutionResult = z.infer<typeof TaskRunSuccessfulExecutionResult>;\n\nexport const TaskRunExecutionResult = z.discriminatedUnion(\"ok\", [\n TaskRunSuccessfulExecutionResult,\n TaskRunFailedExecutionResult,\n]);\n\nexport type TaskRunExecutionResult = z.infer<typeof TaskRunExecutionResult>;\n\nexport const BatchTaskRunExecutionResult = z.object({\n id: z.string(),\n items: TaskRunExecutionResult.array(),\n});\n\nexport type BatchTaskRunExecutionResult = z.infer<typeof BatchTaskRunExecutionResult>;\n","import { context, propagation } from \"@opentelemetry/api\";\nimport { ZodFetchOptions, zodfetch } from \"../zodfetch\";\nimport {\n BatchTaskRunExecutionResult,\n BatchTriggerTaskRequestBody,\n BatchTriggerTaskResponse,\n CanceledRunResponse,\n CreateScheduleOptions,\n CreateUploadPayloadUrlResponseBody,\n DeletedScheduleObject,\n ListScheduleOptions,\n ListSchedulesResult,\n ReplayRunResponse,\n RetrieveRunResponse,\n ScheduleObject,\n TaskRunExecutionResult,\n TriggerTaskRequestBody,\n TriggerTaskResponse,\n UpdateScheduleOptions,\n} from \"../schemas\";\nimport { taskContext } from \"../task-context-api\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\nimport { APIError } from \"../apiErrors\";\n\nexport type TriggerOptions = {\n spanParentAsLink?: boolean;\n};\n\nconst zodFetchOptions: ZodFetchOptions = {\n retry: {\n maxAttempts: 3,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 30_000,\n factor: 2,\n randomize: false,\n },\n};\n\n/**\n * Trigger.dev v3 API client\n */\nexport class ApiClient {\n private readonly baseUrl: string;\n\n constructor(\n baseUrl: string,\n private readonly accessToken: string\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async getRunResult(runId: string): Promise<TaskRunExecutionResult | undefined> {\n try {\n return await zodfetch(\n TaskRunExecutionResult,\n `${this.baseUrl}/api/v1/runs/${runId}/result`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n } catch (error) {\n if (error instanceof APIError) {\n if (error.status === 404) {\n return undefined;\n }\n }\n\n throw error;\n }\n }\n\n async getBatchResults(batchId: string): Promise<BatchTaskRunExecutionResult | undefined> {\n return await zodfetch(\n BatchTaskRunExecutionResult,\n `${this.baseUrl}/api/v1/batches/${batchId}/results`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n triggerTask(taskId: string, body: TriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(\n TriggerTaskResponse,\n `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`,\n {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\n },\n zodFetchOptions\n );\n }\n\n batchTriggerTask(taskId: string, body: BatchTriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(\n BatchTriggerTaskResponse,\n `${this.baseUrl}/api/v1/tasks/${taskId}/batch`,\n {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\n },\n zodFetchOptions\n );\n }\n\n createUploadPayloadUrl(filename: string) {\n return zodfetch(\n CreateUploadPayloadUrlResponseBody,\n `${this.baseUrl}/api/v1/packets/${filename}`,\n {\n method: \"PUT\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n getPayloadUrl(filename: string) {\n return zodfetch(\n CreateUploadPayloadUrlResponseBody,\n `${this.baseUrl}/api/v1/packets/${filename}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n retrieveRun(runId: string) {\n return zodfetch(\n RetrieveRunResponse,\n `${this.baseUrl}/api/v3/runs/${runId}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n replayRun(runId: string) {\n return zodfetch(\n ReplayRunResponse,\n `${this.baseUrl}/api/v1/runs/${runId}/replay`,\n {\n method: \"POST\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n cancelRun(runId: string) {\n return zodfetch(\n CanceledRunResponse,\n `${this.baseUrl}/api/v2/runs/${runId}/cancel`,\n {\n method: \"POST\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n createSchedule(options: CreateScheduleOptions) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n body: JSON.stringify(options),\n });\n }\n\n listSchedules(options?: ListScheduleOptions) {\n const searchParams = new URLSearchParams();\n\n if (options?.page) {\n searchParams.append(\"page\", options.page.toString());\n }\n\n if (options?.perPage) {\n searchParams.append(\"perPage\", options.perPage.toString());\n }\n\n return zodfetch(\n ListSchedulesResult,\n `${this.baseUrl}/api/v1/schedules${searchParams.size > 0 ? `?${searchParams}` : \"\"}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n }\n );\n }\n\n retrieveSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"GET\",\n headers: this.#getHeaders(false),\n });\n }\n\n updateSchedule(scheduleId: string, options: UpdateScheduleOptions) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"PUT\",\n headers: this.#getHeaders(false),\n body: JSON.stringify(options),\n });\n }\n\n deactivateSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}/deactivate`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n });\n }\n\n activateSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}/activate`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n });\n }\n\n deleteSchedule(scheduleId: string) {\n return zodfetch(DeletedScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"DELETE\",\n headers: this.#getHeaders(false),\n });\n }\n\n #getHeaders(spanParentAsLink: boolean) {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.accessToken}`,\n };\n\n // Only inject the context if we are inside a task\n if (taskContext.isInsideTask) {\n propagation.inject(context.active(), headers);\n\n if (spanParentAsLink) {\n headers[\"x-trigger-span-parent-as-link\"] = \"1\";\n }\n }\n\n return headers;\n }\n}\n","import { z } from \"zod\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { APIConnectionError, APIError } from \"./apiErrors\";\nimport { RetryOptions } from \"./schemas\";\nimport { calculateNextRetryDelay } from \"./utils/retries\";\n\nexport const defaultRetryOptions = {\n maxAttempts: 3,\n factor: 2,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: false,\n} satisfies RetryOptions;\n\nexport type ZodFetchOptions = {\n retry?: RetryOptions;\n};\n\nexport async function zodfetch<TResponseBody extends any>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: ZodFetchOptions\n): Promise<TResponseBody> {\n return await _doZodFetch(schema, url, requestInit, options);\n}\n\nasync function _doZodFetch<TResponseBody extends any>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: ZodFetchOptions,\n attempt = 1\n): Promise<TResponseBody> {\n try {\n const response = await fetch(url, requestInitWithCache(requestInit));\n\n const responseHeaders = createResponseHeaders(response.headers);\n\n if (!response.ok) {\n const retryResult = shouldRetry(response, attempt, options?.retry);\n\n if (retryResult.retry) {\n await new Promise((resolve) => setTimeout(resolve, retryResult.delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n } else {\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJsonParse(errText);\n const errMessage = errJSON ? undefined : errText;\n\n throw APIError.generate(response.status, errJSON, errMessage, responseHeaders);\n }\n }\n\n const jsonBody = await response.json();\n const parsedResult = schema.safeParse(jsonBody);\n\n if (parsedResult.success) {\n return parsedResult.data;\n }\n\n throw fromZodError(parsedResult.error);\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n if (options?.retry) {\n const retry = { ...defaultRetryOptions, ...options.retry };\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n if (delay) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n }\n }\n\n throw new APIConnectionError({ cause: castToError(error) });\n }\n}\n\nfunction castToError(err: any): Error {\n if (err instanceof Error) return err;\n return new Error(err);\n}\n\ntype ShouldRetryResult =\n | {\n retry: false;\n }\n | {\n retry: true;\n delay: number;\n };\n\nfunction shouldRetry(\n response: Response,\n attempt: number,\n retryOptions?: RetryOptions\n): ShouldRetryResult {\n function shouldRetryForOptions(): ShouldRetryResult {\n const retry = { ...defaultRetryOptions, ...retryOptions };\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n if (delay) {\n return { retry: true, delay };\n } else {\n return { retry: false };\n }\n }\n\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get(\"x-should-retry\");\n\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === \"true\") return shouldRetryForOptions();\n if (shouldRetryHeader === \"false\") return { retry: false };\n\n // Retry on request timeouts.\n if (response.status === 408) return shouldRetryForOptions();\n\n // Retry on lock timeouts.\n if (response.status === 409) return shouldRetryForOptions();\n\n // Retry on rate limits.\n if (response.status === 429) return shouldRetryForOptions();\n\n // Retry internal errors.\n if (response.status >= 500) return shouldRetryForOptions();\n\n return { retry: false };\n}\n\nfunction safeJsonParse(text: string): any {\n try {\n return JSON.parse(text);\n } catch (e) {\n return undefined;\n }\n}\n\nfunction createResponseHeaders(headers: Response[\"headers\"]): Record<string, string> {\n return new Proxy(\n Object.fromEntries(\n // @ts-ignore\n headers.entries()\n ),\n {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n }\n );\n}\n\nfunction requestInitWithCache(requestInit?: RequestInit): RequestInit {\n try {\n const withCache: RequestInit = {\n ...requestInit,\n cache: \"no-cache\",\n };\n\n const _ = new Request(\"http://localhost\", withCache);\n\n return withCache;\n } catch (error) {\n return requestInit ?? {};\n }\n}\n","export type APIHeaders = Record<string, string | null | undefined>;\n\nexport class APIError extends Error {\n readonly status: number | undefined;\n readonly headers: APIHeaders | undefined;\n readonly error: Object | undefined;\n\n readonly code: string | null | undefined;\n readonly param: string | null | undefined;\n readonly type: string | undefined;\n\n constructor(\n status: number | undefined,\n error: Object | undefined,\n message: string | undefined,\n headers: APIHeaders | undefined\n ) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n\n const data = error as Record<string, any>;\n this.error = data;\n this.code = data?.[\"code\"];\n this.param = data?.[\"param\"];\n this.type = data?.[\"type\"];\n }\n\n private static makeMessage(status: number | undefined, error: any, message: string | undefined) {\n const msg = error?.message\n ? typeof error.message === \"string\"\n ? error.message\n : JSON.stringify(error.message)\n : error\n ? JSON.stringify(error)\n : message;\n\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return \"(no status code or body)\";\n }\n\n static generate(\n status: number | undefined,\n errorResponse: Object | undefined,\n message: string | undefined,\n headers: APIHeaders | undefined\n ) {\n if (!status) {\n return new APIConnectionError({ cause: castToError(errorResponse) });\n }\n\n const error = (errorResponse as Record<string, any>)?.[\"error\"];\n\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n\n return new APIError(status, error, message, headers);\n }\n}\n\nexport class APIConnectionError extends APIError {\n override readonly status: undefined = undefined;\n\n constructor({ message, cause }: { message?: string; cause?: Error | undefined }) {\n super(undefined, undefined, message || \"Connection error.\", undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause) this.cause = cause;\n }\n}\n\nexport class BadRequestError extends APIError {\n override readonly status: 400 = 400;\n}\n\nexport class AuthenticationError extends APIError {\n override readonly status: 401 = 401;\n}\n\nexport class PermissionDeniedError extends APIError {\n override readonly status: 403 = 403;\n}\n\nexport class NotFoundError extends APIError {\n override readonly status: 404 = 404;\n}\n\nexport class ConflictError extends APIError {\n override readonly status: 409 = 409;\n}\n\nexport class UnprocessableEntityError extends APIError {\n override readonly status: 422 = 422;\n}\n\nexport class RateLimitError extends APIError {\n override readonly status: 429 = 429;\n}\n\nexport class InternalServerError extends APIError {}\n\nfunction castToError(err: any): Error {\n if (err instanceof Error) return err;\n return new Error(err);\n}\n","import { calculateResetAt as calculateResetAtInternal } from \"../../retry\";\nimport { FetchRetryOptions, type RetryOptions } from \"../schemas\";\n\nexport const defaultRetryOptions = {\n maxAttempts: 3,\n factor: 2,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport const defaultFetchRetryOptions = {\n byStatus: {\n \"429,408,409,5xx\": {\n strategy: \"backoff\",\n ...defaultRetryOptions,\n },\n },\n connectionError: defaultRetryOptions,\n timeout: defaultRetryOptions,\n} satisfies FetchRetryOptions;\n\n/**\n *\n * @param options\n * @param attempt - The current attempt number. If the first attempt has failed, this will be 1.\n * @returns\n */\nexport function calculateNextRetryDelay(options: RetryOptions, attempt: number) {\n const opts = { ...defaultRetryOptions, ...options };\n\n if (attempt >= opts.maxAttempts) {\n return;\n }\n\n const { factor, minTimeoutInMs, maxTimeoutInMs, randomize } = opts;\n\n const random = randomize ? Math.random() + 1 : 1;\n\n const timeout = Math.min(maxTimeoutInMs, random * minTimeoutInMs * Math.pow(factor, attempt - 1));\n\n // Round to the nearest integer\n return Math.round(timeout);\n}\n\nexport function calculateResetAt(\n resets: string | undefined | null,\n format:\n | \"unix_timestamp\"\n | \"iso_8601\"\n | \"iso_8601_duration_openai_variant\"\n | \"unix_timestamp_in_ms\",\n now: number = Date.now()\n): number | undefined {\n const resetAt = calculateResetAtInternal(resets, format, new Date(now));\n\n return resetAt?.getTime();\n}\n","import { ApiClient } from \"../apiClient\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport { ApiClientConfiguration } from \"./types\";\n\nconst API_NAME = \"api-client\";\n\nexport class APIClientManagerAPI {\n private static _instance?: APIClientManagerAPI;\n\n private constructor() {}\n\n public static getInstance(): APIClientManagerAPI {\n if (!this._instance) {\n this._instance = new APIClientManagerAPI();\n }\n\n return this._instance;\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalAPIClientConfiguration(config: ApiClientConfiguration): boolean {\n return registerGlobal(API_NAME, config);\n }\n\n get baseURL(): string | undefined {\n const store = this.#getConfig();\n return store?.baseURL ?? getEnvVar(\"TRIGGER_API_URL\") ?? \"https://api.trigger.dev\";\n }\n\n get accessToken(): string | undefined {\n const store = this.#getConfig();\n return store?.secretKey ?? getEnvVar(\"TRIGGER_SECRET_KEY\");\n }\n\n get client(): ApiClient | undefined {\n if (!this.baseURL || !this.accessToken) {\n return undefined;\n }\n\n return new ApiClient(this.baseURL, this.accessToken);\n }\n\n #getConfig(): ApiClientConfiguration | undefined {\n return getGlobal(API_NAME);\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { APIClientManagerAPI } from \"./apiClientManager\";\n/** Entrypoint for logger API */\nexport const apiClientManager = APIClientManagerAPI.getInstance();\n\nexport type { ApiClientConfiguration } from \"./apiClientManager/types\";\n","import { Attributes, Span } from \"@opentelemetry/api\";\nimport { OFFLOAD_IO_PACKET_LENGTH_LIMIT, imposeAttributeLimits } from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"./flattenAttributes\";\nimport { apiClientManager } from \"../apiClientManager-api\";\n\nexport type IOPacket = {\n data?: string | undefined;\n dataType: string;\n};\n\nexport async function parsePacket(value: IOPacket): Promise<any> {\n if (!value.data) {\n return undefined;\n }\n\n switch (value.dataType) {\n case \"application/json\":\n return JSON.parse(value.data);\n case \"application/super+json\":\n const { parse } = await loadSuperJSON();\n\n return parse(value.data);\n case \"text/plain\":\n return value.data;\n case \"application/store\":\n throw new Error(\n `Cannot parse an application/store packet (${value.data}). Needs to be imported first.`\n );\n default:\n return value.data;\n }\n}\n\nexport async function stringifyIO(value: any): Promise<IOPacket> {\n if (value === undefined) {\n return { dataType: \"application/json\" };\n }\n\n if (typeof value === \"string\") {\n return { data: value, dataType: \"text/plain\" };\n }\n\n try {\n const { stringify } = await loadSuperJSON();\n const data = stringify(value);\n\n return { data, dataType: \"application/super+json\" };\n } catch {\n return { data: value, dataType: \"application/json\" };\n }\n}\n\nexport async function conditionallyExportPacket(\n packet: IOPacket,\n pathPrefix: string,\n tracer?: TriggerTracer\n): Promise<IOPacket> {\n if (apiClientManager.client) {\n const { needsOffloading, size } = packetRequiresOffloading(packet);\n\n if (needsOffloading) {\n if (!tracer) {\n return await exportPacket(packet, pathPrefix);\n } else {\n const result = await tracer.startActiveSpan(\n \"store.uploadOutput\",\n async (span) => {\n return await exportPacket(packet, pathPrefix);\n },\n {\n attributes: {\n byteLength: size,\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-upload\",\n },\n }\n );\n\n return result ?? packet;\n }\n }\n }\n\n return packet;\n}\n\nexport function packetRequiresOffloading(packet: IOPacket): {\n needsOffloading: boolean;\n size: number;\n} {\n if (!packet.data) {\n return {\n needsOffloading: false,\n size: 0,\n };\n }\n\n const byteSize = Buffer.byteLength(packet.data, \"utf8\");\n\n return {\n needsOffloading: byteSize >= OFFLOAD_IO_PACKET_LENGTH_LIMIT,\n size: byteSize,\n };\n}\n\nasync function exportPacket(packet: IOPacket, pathPrefix: string): Promise<IOPacket> {\n // Offload the output\n const filename = `${pathPrefix}.${getPacketExtension(packet.dataType)}`;\n\n const presignedResponse = await apiClientManager.client!.createUploadPayloadUrl(filename);\n\n const uploadResponse = await fetch(presignedResponse.presignedUrl, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": packet.dataType,\n },\n body: packet.data,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(\n `Failed to upload output to ${presignedResponse.presignedUrl}: ${uploadResponse.statusText}`\n );\n }\n\n return {\n data: filename,\n dataType: \"application/store\",\n };\n\n return packet;\n}\n\nexport async function conditionallyImportPacket(\n packet: IOPacket,\n tracer?: TriggerTracer\n): Promise<IOPacket> {\n if (packet.dataType !== \"application/store\") {\n return packet;\n }\n\n if (!tracer) {\n return await importPacket(packet);\n } else {\n const result = await tracer.startActiveSpan(\n \"store.downloadPayload\",\n async (span) => {\n return await importPacket(packet, span);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-download\",\n },\n }\n );\n\n return result ?? packet;\n }\n}\n\nasync function importPacket(packet: IOPacket, span?: Span): Promise<IOPacket> {\n if (!packet.data) {\n return packet;\n }\n\n if (!apiClientManager.client) {\n return packet;\n }\n\n const presignedResponse = await apiClientManager.client.getPayloadUrl(packet.data);\n\n const response = await fetch(presignedResponse.presignedUrl);\n\n if (!response.ok) {\n throw new Error(\n `Failed to import packet ${presignedResponse.presignedUrl}: ${response.statusText}`\n );\n }\n\n const data = await response.text();\n\n span?.setAttribute(\"size\", Buffer.byteLength(data, \"utf8\"));\n\n return {\n data,\n dataType: response.headers.get(\"content-type\") ?? \"application/json\",\n };\n\n return packet;\n}\n\nexport async function createPacketAttributes(\n packet: IOPacket,\n dataKey: string,\n dataTypeKey: string\n): Promise<Attributes | undefined> {\n if (!packet.data) {\n return;\n }\n\n switch (packet.dataType) {\n case \"application/json\":\n return {\n ...flattenAttributes(packet, dataKey),\n [dataTypeKey]: packet.dataType,\n };\n case \"application/super+json\":\n const { parse } = await loadSuperJSON();\n\n if (typeof packet.data === \"undefined\" || packet.data === null) {\n return;\n }\n\n try {\n const parsed = parse(packet.data) as any;\n const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));\n\n const result = {\n ...flattenAttributes(jsonified, dataKey),\n [dataTypeKey]: \"application/json\",\n };\n\n return result;\n } catch (e) {\n return;\n }\n\n case \"application/store\":\n return {\n [dataKey]: packet.data,\n [dataTypeKey]: packet.dataType,\n };\n case \"text/plain\":\n return {\n [dataKey]: packet.data,\n [dataTypeKey]: packet.dataType,\n };\n default:\n return;\n }\n}\n\nexport async function createPacketAttributesAsJson(\n data: any,\n dataType: string\n): Promise<Attributes> {\n if (\n typeof data === \"string\" ||\n typeof data === \"number\" ||\n typeof data === \"boolean\" ||\n data === null ||\n data === undefined\n ) {\n return data;\n }\n\n switch (dataType) {\n case \"application/json\":\n return imposeAttributeLimits(flattenAttributes(data, undefined));\n case \"application/super+json\":\n const { deserialize } = await loadSuperJSON();\n\n const deserialized = deserialize(data) as any;\n const jsonify = safeJsonParse(JSON.stringify(deserialized, safeReplacer));\n\n return imposeAttributeLimits(flattenAttributes(jsonify, undefined));\n case \"application/store\":\n return data;\n default:\n return {};\n }\n}\n\nexport async function prettyPrintPacket(rawData: any, dataType?: string): Promise<string> {\n if (rawData === undefined) {\n return \"\";\n }\n\n if (dataType === \"application/super+json\") {\n if (typeof rawData === \"string\") {\n rawData = safeJsonParse(rawData);\n }\n const { deserialize } = await loadSuperJSON();\n\n return await prettyPrintPacket(deserialize(rawData), \"application/json\");\n }\n\n if (dataType === \"application/json\") {\n if (typeof rawData === \"string\") {\n rawData = safeJsonParse(rawData);\n }\n return JSON.stringify(rawData, safeReplacer, 2);\n }\n\n if (typeof rawData === \"string\") {\n return rawData;\n }\n\n return JSON.stringify(rawData, safeReplacer, 2);\n}\n\nfunction safeReplacer(key: string, value: any) {\n // If it is a BigInt\n if (typeof value === \"bigint\") {\n return value.toString(); // Convert to string\n }\n\n // if it is a Regex\n if (value instanceof RegExp) {\n return value.toString(); // Convert to string\n }\n\n // if it is a Set\n if (value instanceof Set) {\n return Array.from(value); // Convert to array\n }\n\n // if it is a Map, convert it to an object\n if (value instanceof Map) {\n const obj: Record<string, any> = {};\n value.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n }\n\n return value; // Otherwise return the value as is\n}\n\nfunction getPacketExtension(outputType: string): string {\n switch (outputType) {\n case \"application/json\":\n return \"json\";\n case \"application/super+json\":\n return \"json\";\n case \"text/plain\":\n return \"txt\";\n default:\n return \"txt\";\n }\n}\n\nasync function loadSuperJSON(): Promise<typeof import(\"superjson\")> {\n return await import(\"superjson\");\n}\n\nfunction safeJsonParse(value: string): any {\n try {\n return JSON.parse(value);\n } catch {\n return;\n }\n}\n","import { Attributes } from \"@opentelemetry/api\";\nimport { Accessory } from \"../schemas\";\nimport { flattenAttributes } from \"./flattenAttributes\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\n\nexport function accessoryAttributes(accessory: Accessory): Attributes {\n return flattenAttributes(accessory, SemanticInternalAttributes.STYLE_ACCESSORY);\n}\n","import { PreciseDate } from \"@google-cloud/precise-date\";\nimport { Clock, ClockTime } from \"./clock\";\n\nexport type PreciseWallClockOptions = {\n origin?: ClockTime;\n now?: PreciseDate;\n};\n\nexport class PreciseWallClock implements Clock {\n private _origin: {\n clockTime: ClockTime;\n preciseDate: PreciseDate;\n };\n\n get #originClockTime() {\n return this._origin.clockTime;\n }\n\n get #originPreciseDate() {\n return this._origin.preciseDate;\n }\n\n constructor(options: PreciseWallClockOptions = {}) {\n this._origin = {\n clockTime: options.origin ?? process.hrtime(),\n preciseDate: options.now ?? new PreciseDate(),\n };\n }\n\n preciseNow(): [number, number] {\n const elapsedHrTime = process.hrtime(this.#originClockTime);\n const elapsedNanoseconds = BigInt(elapsedHrTime[0]) * BigInt(1e9) + BigInt(elapsedHrTime[1]);\n\n const preciseDate = new PreciseDate(this.#originPreciseDate.getFullTime() + elapsedNanoseconds);\n const dateStruct = preciseDate.toStruct();\n\n return [dateStruct.seconds, dateStruct.nanos];\n }\n\n reset() {\n this._origin = {\n clockTime: process.hrtime(),\n preciseDate: new PreciseDate(),\n };\n }\n}\n","import { Attributes, Span, SpanOptions } from \"@opentelemetry/api\";\nimport { Logger, SeverityNumber } from \"@opentelemetry/api-logs\";\nimport { iconStringForSeverity } from \"../icons\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { ClockTime } from \"../clock/clock\";\nimport { clock } from \"../clock-api\";\n\nexport type LogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\" | \"log\";\n\nexport const logLevels: Array<LogLevel> = [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\nexport type TaskLoggerConfig = {\n logger: Logger;\n tracer: TriggerTracer;\n level: LogLevel;\n};\n\nexport interface TaskLogger {\n debug(message: string, properties?: Record<string, unknown>): void;\n log(message: string, properties?: Record<string, unknown>): void;\n info(message: string, properties?: Record<string, unknown>): void;\n warn(message: string, properties?: Record<string, unknown>): void;\n error(message: string, properties?: Record<string, unknown>): void;\n trace<T>(name: string, fn: (span: Span) => Promise<T>, options?: SpanOptions): Promise<T>;\n}\n\nexport class OtelTaskLogger implements TaskLogger {\n private readonly _level: number;\n\n constructor(private readonly _config: TaskLoggerConfig) {\n this._level = logLevels.indexOf(_config.level);\n }\n\n debug(message: string, properties?: Record<string, unknown>) {\n if (this._level < 4) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"debug\", SeverityNumber.DEBUG, properties);\n }\n\n log(message: string, properties?: Record<string, unknown>) {\n if (this._level < 3) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"log\", SeverityNumber.INFO, properties);\n }\n\n info(message: string, properties?: Record<string, unknown>) {\n if (this._level < 3) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"info\", SeverityNumber.INFO, properties);\n }\n\n warn(message: string, properties?: Record<string, unknown>) {\n if (this._level < 2) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"warn\", SeverityNumber.WARN, properties);\n }\n\n error(message: string, properties?: Record<string, unknown>) {\n if (this._level < 1) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"error\", SeverityNumber.ERROR, properties);\n }\n\n #emitLog(\n message: string,\n timestamp: ClockTime,\n severityText: string,\n severityNumber: SeverityNumber,\n properties?: Record<string, unknown>\n ) {\n let attributes: Attributes = { ...flattenAttributes(safeJsonProcess(properties)) };\n\n const icon = iconStringForSeverity(severityNumber);\n if (icon !== undefined) {\n attributes[SemanticInternalAttributes.STYLE_ICON] = icon;\n }\n\n this._config.logger.emit({\n severityNumber,\n severityText,\n body: message,\n attributes,\n timestamp,\n });\n }\n\n trace<T>(name: string, fn: (span: Span) => Promise<T>, options?: SpanOptions): Promise<T> {\n return this._config.tracer.startActiveSpan(name, fn, options);\n }\n\n #getTimestampInHrTime(): ClockTime {\n return clock.preciseNow();\n }\n}\n\nexport class NoopTaskLogger implements TaskLogger {\n debug() {}\n log() {}\n info() {}\n warn() {}\n error() {}\n trace<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n return fn({} as Span);\n }\n}\n\nfunction safeJsonProcess(value?: Record<string, unknown>): Record<string, unknown> | undefined {\n try {\n return JSON.parse(JSON.stringify(value, jsonErrorReplacer));\n } catch {\n return value;\n }\n}\n\nfunction jsonErrorReplacer(key: string, value: unknown) {\n if (value instanceof Error) {\n return {\n name: value.name,\n message: value.message,\n stack: value.stack,\n };\n }\n\n return value;\n}\n","import { SeverityNumber } from \"@opentelemetry/api-logs\";\n\nexport function iconStringForSeverity(severityNumber: SeverityNumber) {\n switch (severityNumber) {\n case SeverityNumber.UNSPECIFIED:\n return undefined;\n case SeverityNumber.TRACE:\n case SeverityNumber.TRACE2:\n case SeverityNumber.TRACE3:\n case SeverityNumber.TRACE4:\n return \"trace\";\n case SeverityNumber.DEBUG:\n case SeverityNumber.DEBUG2:\n case SeverityNumber.DEBUG3:\n case SeverityNumber.DEBUG4:\n return \"debug\";\n case SeverityNumber.INFO:\n case SeverityNumber.INFO2:\n case SeverityNumber.INFO3:\n case SeverityNumber.INFO4:\n return \"info\";\n case SeverityNumber.WARN:\n case SeverityNumber.WARN2:\n case SeverityNumber.WARN3:\n case SeverityNumber.WARN4:\n return \"warn\";\n case SeverityNumber.ERROR:\n case SeverityNumber.ERROR2:\n case SeverityNumber.ERROR3:\n case SeverityNumber.ERROR4:\n return \"error\";\n case SeverityNumber.FATAL:\n case SeverityNumber.FATAL2:\n case SeverityNumber.FATAL3:\n case SeverityNumber.FATAL4:\n return \"fatal\";\n }\n}\n","import { PreciseDate } from \"@google-cloud/precise-date\";\nimport { Clock } from \"./clock\";\n\nexport class SimpleClock implements Clock {\n preciseNow(): [number, number] {\n const now = new PreciseDate();\n const nowStruct = now.toStruct();\n\n return [nowStruct.seconds, nowStruct.nanos];\n }\n\n reset() {\n // do nothing\n }\n}\n","const API_NAME = \"clock\";\n\nimport { getGlobal, registerGlobal } from \"../utils/globals\";\nimport type { Clock, ClockTime } from \"./clock\";\nimport { SimpleClock } from \"./simpleClock\";\n\nconst SIMPLE_CLOCK = new SimpleClock();\n\nexport class ClockAPI {\n private static _instance?: ClockAPI;\n\n private constructor() {}\n\n public static getInstance(): ClockAPI {\n if (!this._instance) {\n this._instance = new ClockAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalClock(clock: Clock): boolean {\n return registerGlobal(API_NAME, clock);\n }\n\n public preciseNow(): ClockTime {\n return this.#getClock().preciseNow();\n }\n\n public reset(): void {\n this.#getClock().reset();\n }\n\n #getClock(): Clock {\n return getGlobal(API_NAME) ?? SIMPLE_CLOCK;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ClockAPI } from \"./clock\";\n/** Entrypoint for clock API */\nexport const clock = ClockAPI.getInstance();\n","import type * as logsAPI from \"@opentelemetry/api-logs\";\nimport { SeverityNumber } from \"@opentelemetry/api-logs\";\nimport util from \"node:util\";\nimport { iconStringForSeverity } from \"./icons\";\nimport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nimport { flattenAttributes } from \"./utils/flattenAttributes\";\nimport { ClockTime } from \"./clock/clock\";\nimport { clock } from \"./clock-api\";\n\nexport class ConsoleInterceptor {\n constructor(\n private readonly logger: logsAPI.Logger,\n private readonly sendToStdIO: boolean\n ) {}\n\n // Intercept the console and send logs to the OpenTelemetry logger\n // during the execution of the callback\n async intercept<T>(console: Console, callback: () => Promise<T>): Promise<T> {\n // Save the original console methods\n const originalConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n };\n\n // Override the console methods\n console.log = this.log.bind(this);\n console.info = this.info.bind(this);\n console.warn = this.warn.bind(this);\n console.error = this.error.bind(this);\n console.debug = this.debug.bind(this);\n\n try {\n return await callback();\n } finally {\n // Restore the original console methods\n console.log = originalConsole.log;\n console.info = originalConsole.info;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n console.debug = originalConsole.debug;\n }\n }\n\n debug(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.DEBUG, this.#getTimestampInHrTime(), \"Debug\", ...args);\n }\n\n log(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.INFO, this.#getTimestampInHrTime(), \"Log\", ...args);\n }\n\n info(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.INFO, this.#getTimestampInHrTime(), \"Info\", ...args);\n }\n\n warn(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.WARN, this.#getTimestampInHrTime(), \"Warn\", ...args);\n }\n\n error(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.ERROR, this.#getTimestampInHrTime(), \"Error\", ...args);\n }\n\n #handleLog(\n severityNumber: SeverityNumber,\n timestamp: ClockTime,\n severityText: string,\n ...args: unknown[]\n ): void {\n const body = util.format(...args);\n\n if (this.sendToStdIO) {\n if (severityNumber === SeverityNumber.ERROR) {\n process.stderr.write(body);\n } else {\n process.stdout.write(body);\n }\n }\n\n const parsed = tryParseJSON(body);\n\n if (parsed.ok) {\n this.logger.emit({\n severityNumber,\n severityText,\n body: getLogMessage(parsed.value, severityText),\n attributes: { ...this.#getAttributes(severityNumber), ...flattenAttributes(parsed.value) },\n timestamp,\n });\n\n return;\n }\n\n this.logger.emit({\n severityNumber,\n severityText,\n body,\n attributes: this.#getAttributes(severityNumber),\n timestamp,\n });\n }\n\n #getTimestampInHrTime(): ClockTime {\n return clock.preciseNow();\n }\n\n #getAttributes(severityNumber: SeverityNumber): logsAPI.LogAttributes {\n const icon = iconStringForSeverity(severityNumber);\n let result: logsAPI.LogAttributes = {};\n\n if (icon !== undefined) {\n result[SemanticInternalAttributes.STYLE_ICON] = icon;\n }\n\n return result;\n }\n}\n\nfunction getLogMessage(value: Record<string, unknown>, fallback: string): string {\n if (typeof value[\"message\"] === \"string\") {\n return value[\"message\"];\n }\n\n if (typeof value[\"msg\"] === \"string\") {\n return value[\"msg\"];\n }\n\n if (typeof value[\"body\"] === \"string\") {\n return value[\"body\"];\n }\n\n if (typeof value[\"error\"] === \"string\") {\n return value[\"error\"];\n }\n\n return fallback;\n}\n\nfunction tryParseJSON(\n value: string\n): { ok: true; value: Record<string, unknown> } | { ok: false; value: string } {\n try {\n const parsed = JSON.parse(value);\n\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return { ok: true, value: parsed };\n }\n\n return { ok: false, value };\n } catch (e) {\n return { ok: false, value };\n }\n}\n","import { TaskFileMetadata, TaskMetadata, TaskMetadataWithFilePath } from \"../schemas\";\nimport { TaskMetadataWithFunctions } from \"../types\";\nimport { TaskCatalog } from \"./catalog\";\n\nexport class StandardTaskCatalog implements TaskCatalog {\n private _taskMetadata: Map<string, TaskMetadata> = new Map();\n private _taskFunctions: Map<string, TaskMetadataWithFunctions[\"fns\"]> = new Map();\n private _taskFileMetadata: Map<string, TaskFileMetadata> = new Map();\n\n registerTaskMetadata(task: TaskMetadataWithFunctions): void {\n const { fns, ...metadata } = task;\n\n this._taskMetadata.set(task.id, metadata);\n this._taskFunctions.set(task.id, fns);\n }\n\n updateTaskMetadata(id: string, updates: Partial<TaskMetadataWithFunctions>): void {\n const existingMetadata = this._taskMetadata.get(id);\n\n if (existingMetadata) {\n this._taskMetadata.set(id, {\n ...existingMetadata,\n ...updates,\n });\n }\n\n if (updates.fns) {\n const existingFunctions = this._taskFunctions.get(id);\n\n if (existingFunctions) {\n this._taskFunctions.set(id, {\n ...existingFunctions,\n ...updates.fns,\n });\n }\n }\n }\n\n registerTaskFileMetadata(id: string, metadata: TaskFileMetadata): void {\n this._taskFileMetadata.set(id, metadata);\n }\n\n // Return all the tasks, without the functions\n getAllTaskMetadata(): Array<TaskMetadataWithFilePath> {\n const result: Array<TaskMetadataWithFilePath> = [];\n\n for (const [id, metadata] of this._taskMetadata) {\n const fileMetadata = this._taskFileMetadata.get(id);\n\n if (!fileMetadata) {\n continue;\n }\n\n result.push({\n ...metadata,\n ...fileMetadata,\n });\n }\n\n return result;\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n const metadata = this._taskMetadata.get(id);\n const fileMetadata = this._taskFileMetadata.get(id);\n\n if (!metadata || !fileMetadata) {\n return undefined;\n }\n\n return {\n ...metadata,\n ...fileMetadata,\n };\n }\n\n getTask(id: string): TaskMetadataWithFunctions | undefined {\n const metadata = this._taskMetadata.get(id);\n const fileMetadata = this._taskFileMetadata.get(id);\n const fns = this._taskFunctions.get(id);\n\n if (!metadata || !fns || !fileMetadata) {\n return undefined;\n }\n\n return {\n ...metadata,\n ...fileMetadata,\n fns,\n };\n }\n\n taskExists(id: string): boolean {\n return this._taskMetadata.has(id);\n }\n\n disable() {\n // noop\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/v3/workers/taskExecutor.ts","../../../src/v3/errors.ts","../../../src/v3/otel/index.ts","../../../src/v3/otel/tracingSDK.ts","../../../src/v3/limits.ts","../../../src/v3/semanticInternalAttributes.ts","../../../src/v3/utils/flattenAttributes.ts","../../../src/v3/utils/platform.ts","../../../src/v3/utils/globals.ts","../../../src/v3/taskContext/index.ts","../../../src/v3/task-context-api.ts","../../../src/v3/taskContext/otelProcessors.ts","../../../src/v3/utils/getEnv.ts","../../../src/v3/schemas/api.ts","../../../src/v3/schemas/resources.ts","../../../src/v3/schemas/schemas.ts","../../../src/v3/schemas/common.ts","../../../src/v3/apiClient/index.ts","../../../src/v3/zodfetch.ts","../../../src/v3/apiErrors.ts","../../../src/v3/utils/retries.ts","../../../package.json","../../../src/v3/apiClientManager/index.ts","../../../src/v3/apiClientManager-api.ts","../../../src/v3/utils/ioSerialization.ts","../../../src/v3/utils/styleAttributes.ts","../../../src/v3/clock/preciseWallClock.ts","../../../src/v3/logger/taskLogger.ts","../../../src/v3/icons.ts","../../../src/v3/clock/simpleClock.ts","../../../src/v3/clock/index.ts","../../../src/v3/clock-api.ts","../../../src/v3/consoleInterceptor.ts","../../../src/v3/task-catalog/standardTaskCatalog.ts"],"names":["SpanKind","parseError","error","Error","type","name","message","stackTrace","stack","raw","JSON","stringify","e","String","SpanStatusCode","DiagConsoleLogger","DiagLogLevel","diag","logs","OTLPLogExporter","OTLPTraceExporter","registerInstrumentations","Resource","detectResourcesSync","processDetectorSync","BatchLogRecordProcessor","LoggerProvider","SimpleLogRecordProcessor","BatchSpanProcessor","NodeTracerProvider","SimpleSpanProcessor","SemanticResourceAttributes","OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT","OTEL_LOG_ATTRIBUTE_COUNT_LIMIT","OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT","OTEL_SPAN_EVENT_COUNT_LIMIT","OTEL_LINK_COUNT_LIMIT","OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT","OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT","OFFLOAD_IO_PACKET_LENGTH_LIMIT","SemanticInternalAttributes","ENVIRONMENT_ID","ENVIRONMENT_TYPE","ORGANIZATION_ID","ORGANIZATION_SLUG","ORGANIZATION_NAME","PROJECT_ID","PROJECT_REF","PROJECT_NAME","PROJECT_DIR","ATTEMPT_ID","ATTEMPT_NUMBER","RUN_ID","RUN_IS_TEST","BATCH_ID","TASK_SLUG","TASK_PATH","TASK_EXPORT_NAME","QUEUE_NAME","QUEUE_ID","SPAN_PARTIAL","SPAN_ID","OUTPUT","OUTPUT_TYPE","STYLE","STYLE_ICON","STYLE_VARIANT","STYLE_ACCESSORY","METADATA","TRIGGER","PAYLOAD","PAYLOAD_TYPE","SHOW","SHOW_ACTIONS","WORKER_ID","WORKER_VERSION","CLI_VERSION","SDK_VERSION","SDK_LANGUAGE","RETRY_AT","RETRY_DELAY","RETRY_COUNT","LINK_TITLE","IDEMPOTENCY_KEY","NULL_SENTINEL","flattenAttributes","obj","prefix","result","undefined","key","value","Object","entries","newPrefix","Array","isArray","i","length","assign","isRecord","_globalThis","globalThis","global","GLOBAL_TRIGGER_DOT_DEV_KEY","Symbol","for","_global","registerGlobal","instance","allowOverride","api","err","getGlobal","unregisterGlobal","API_NAME","TaskContextAPI","getInstance","_instance","isInsideTask","ctx","worker","attributes","contextAttributes","workerAttributes","id","version","attempt","number","task","filePath","exportName","queue","environment","organization","project","ref","run","isTest","slug","batch","idempotencyKey","disable","setGlobalTaskContext","taskContext","TaskContextSpanProcessor","constructor","innerProcessor","_innerProcessor","onStart","span","parentContext","setAttributes","onEnd","shutdown","forceFlush","TaskContextLogProcessor","onEmit","logRecord","context","getEnvVar","process","env","AsyncResourceDetector","_resolved","_promise","Promise","resolver","_resolver","detect","_config","resolveWithAttributes","TracingSDK","config","asyncResourceDetector","setLogLevel","diagLogLevel","envResourceAttributesSerialized","envResourceAttributes","parse","commonResources","detectors","merge","CLOUD_PROVIDER","resource","traceProvider","forceFlushTimeoutMillis","spanLimits","attributeCountLimit","attributeValueLengthLimit","eventCountLimit","attributePerEventCountLimit","linkCountLimit","attributePerLinkCountLimit","spanExporter","url","timeoutMillis","addSpanProcessor","maxExportBatchSize","parseInt","scheduledDelayMillis","exportTimeoutMillis","maxQueueSize","register","instrumentations","tracerProvider","logExporter","loggerProvider","logRecordLimits","addLogRecordProcessor","_logProvider","_spanExporter","_traceProvider","setGlobalLoggerProvider","getLogger","bind","getTracer","flush","level","NONE","ERROR","WARN","INFO","DEBUG","VERBOSE","ALL","setLogger","recordSpanException","recordException","setStatus","code","z","TaskRunBuiltInError","object","literal","string","TaskRunCustomErrorObject","TaskRunStringError","TaskRunErrorCodes","COULD_NOT_FIND_EXECUTOR","COULD_NOT_FIND_TASK","CONFIGURED_INCORRECTLY","TASK_ALREADY_RUNNING","TASK_EXECUTION_FAILED","TASK_EXECUTION_ABORTED","TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE","TASK_RUN_CANCELLED","TASK_OUTPUT_ERROR","HANDLE_ERROR_ERROR","GRACEFUL_EXIT_TIMEOUT","TaskRunInternalError","enum","optional","TaskRunError","discriminatedUnion","TaskRun","payload","payloadType","any","tags","array","boolean","default","createdAt","coerce","date","TaskRunExecutionTask","TaskRunExecutionAttempt","startedAt","backgroundWorkerId","backgroundWorkerTaskId","status","TaskRunExecutionEnvironment","TaskRunExecutionOrganization","TaskRunExecutionProject","TaskRunExecutionQueue","TaskRunExecutionBatch","TaskRunExecution","TaskRunContext","omit","TaskRunExecutionRetry","timestamp","delay","unknown","TaskRunFailedExecutionResult","ok","retry","skippedRetrying","TaskRunSuccessfulExecutionResult","output","outputType","TaskRunExecutionResult","BatchTaskRunExecutionResult","items","EnvironmentType","MachineCpu","union","MachineMemory","Machine","cpu","memory","TaskRunExecutionPayload","execution","traceContext","record","ProdTaskRunExecution","extend","contentHash","ProdTaskRunExecutionPayload","FixedWindowRateLimit","limit","window","seconds","minutes","hours","SlidingWindowRateLimit","RateLimitOptions","RetryOptions","maxAttempts","int","factor","minTimeoutInMs","maxTimeoutInMs","randomize","QueueOptions","concurrencyLimit","min","max","rateLimit","TaskMetadata","packageVersion","machine","partial","triggerSource","TaskFileMetadata","TaskMetadataWithFilePath","PostStartCauses","PreStopCauses","RegexSchema","custom","val","test","Config","triggerDirectories","triggerUrl","projectDir","tsconfigPath","retries","enabledInDev","additionalPackages","additionalFiles","dependenciesToBundle","logLevel","enableConsoleLogging","postInstall","WaitReason","TaskResource","BackgroundWorkerMetadata","cliPackageVersion","tasks","ImageDetailsMetadata","imageTag","WhoAmIResponseSchema","userId","email","dashboardUrl","GetProjectResponseBody","externalRef","title","GetProjectsResponseBody","GetProjectEnvResponse","apiKey","apiUrl","CreateBackgroundWorkerRequestBody","localOnly","metadata","CreateBackgroundWorkerResponse","TriggerTaskRequestBody","options","dependentAttempt","dependentBatch","lockToVersion","concurrencyKey","TriggerTaskResponse","BatchTriggerTaskRequestBody","BatchTriggerTaskResponse","batchId","runs","GetBatchResponseBody","taskRunId","GetEnvironmentVariablesResponseBody","variables","StartDeploymentIndexingRequestBody","imageReference","selfHosted","StartDeploymentIndexingResponseBody","ExternalBuildData","buildId","buildToken","projectId","InitializeDeploymentResponseBody","shortCode","externalBuildData","nullable","registryHost","InitializeDeploymentRequestBody","DeploymentErrorData","GetDeploymentResponseBody","errorData","CreateUploadPayloadUrlResponseBody","presignedUrl","ReplayRunResponse","CanceledRunResponse","ScheduledTaskPayload","scheduleId","lastTimestamp","externalId","upcoming","CreateScheduleOptions","cron","deduplicationKey","ScheduleObject","active","nullish","generator","expression","description","nextRun","environments","userName","DeletedScheduleObject","ListSchedulesResult","data","pagination","currentPage","totalPages","count","ListScheduleOptions","page","perPage","RunStatus","AttemptStatus","RetrieveRunResponse","taskIdentifier","updatedAt","attempts","completedAt","propagation","fromZodError","APIError","headers","makeMessage","param","msg","generate","errorResponse","APIConnectionError","cause","castToError","BadRequestError","AuthenticationError","PermissionDeniedError","NotFoundError","ConflictError","UnprocessableEntityError","RateLimitError","InternalServerError","defaultRetryOptions","defaultFetchRetryOptions","byStatus","strategy","connectionError","timeout","calculateNextRetryDelay","opts","random","Math","pow","round","zodfetch","schema","requestInit","_doZodFetch","response","fetch","requestInitWithCache","responseHeaders","createResponseHeaders","retryResult","shouldRetry","resolve","setTimeout","errText","text","catch","errJSON","safeJsonParse","errMessage","jsonBody","json","parsedResult","safeParse","success","retryOptions","shouldRetryForOptions","shouldRetryHeader","get","Proxy","fromEntries","target","toString","toLowerCase","withCache","cache","_","Request","zodFetchOptions","ApiClient","baseUrl","accessToken","replace","getRunResult","runId","method","getBatchResults","triggerTask","taskId","body","spanParentAsLink","batchTriggerTask","createUploadPayloadUrl","filename","getPayloadUrl","retrieveRun","replayRun","cancelRun","createSchedule","listSchedules","searchParams","URLSearchParams","append","size","retrieveSchedule","updateSchedule","deactivateSchedule","activateSchedule","deleteSchedule","Authorization","inject","APIClientManagerAPI","setGlobalAPIClientConfiguration","baseURL","store","secretKey","client","apiClientManager","parsePacket","dataType","loadSuperJSON","stringifyIO","conditionallyExportPacket","packet","pathPrefix","tracer","needsOffloading","packetRequiresOffloading","exportPacket","startActiveSpan","byteLength","byteSize","Buffer","getPacketExtension","presignedResponse","uploadResponse","statusText","conditionallyImportPacket","importPacket","setAttribute","createPacketAttributes","dataKey","dataTypeKey","parsed","jsonified","safeReplacer","RegExp","Set","from","Map","forEach","v","k","accessoryAttributes","accessory","TaskExecutor","_tracingSDK","tracingSDK","_tracer","_consoleInterceptor","consoleInterceptor","projectConfig","_importedConfig","importedConfig","_handleErrorFn","handleErrorFn","execute","attemptMessage","originalPacket","intercept","console","parsedPayload","initOutput","payloadPacket","stringifiedOutput","finalOutput","stringifyError","runError","handleErrorResult","handleErrorError","kind","CONSUMER","style","extractContext","init","runFn","fns","middlewareFn","middleware","next","initFn","onSuccess","onSuccessFn","onFailure","onFailureFn","onStartFn","cleanupFn","cleanup","retriesConfig","handleError","retryDelayInMs","retryAt","Date","now","skipRetrying","getTime","PreciseDate","PreciseWallClock","_origin","clockTime","origin","hrtime","preciseDate","preciseNow","elapsedHrTime","elapsedNanoseconds","BigInt","getFullTime","dateStruct","toStruct","nanos","reset","SeverityNumber","iconStringForSeverity","severityNumber","UNSPECIFIED","TRACE","TRACE2","TRACE3","TRACE4","DEBUG2","DEBUG3","DEBUG4","INFO2","INFO3","INFO4","WARN2","WARN3","WARN4","ERROR2","ERROR3","ERROR4","FATAL","FATAL2","FATAL3","FATAL4","SimpleClock","nowStruct","SIMPLE_CLOCK","ClockAPI","setGlobalClock","clock","logLevels","OtelTaskLogger","_level","indexOf","debug","properties","log","info","warn","trace","fn","severityText","safeJsonProcess","icon","logger","emit","jsonErrorReplacer","util","_getTimestampInHrTime","getTimestampInHrTime_fn","ConsoleInterceptor","sendToStdIO","callback","originalConsole","args","format","stderr","write","stdout","tryParseJSON","getLogMessage","fallback","StandardTaskCatalog","_taskMetadata","_taskFunctions","_taskFileMetadata","registerTaskMetadata","set","updateTaskMetadata","updates","existingMetadata","existingFunctions","registerTaskFileMetadata","getAllTaskMetadata","fileMetadata","push","getTaskMetadata","getTask","taskExists","has"],"mappings":"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","sourcesContent":["import { SpanKind } from \"@opentelemetry/api\";\nimport { ConsoleInterceptor } from \"../consoleInterceptor\";\nimport { parseError } from \"../errors\";\nimport { TracingSDK, recordSpanException } from \"../otel\";\nimport {\n BackgroundWorkerProperties,\n Config,\n TaskRunContext,\n TaskRunErrorCodes,\n TaskRunExecution,\n TaskRunExecutionResult,\n TaskRunExecutionRetry,\n} from \"../schemas\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { taskContext } from \"../task-context-api\";\nimport { TriggerTracer } from \"../tracer\";\nimport { HandleErrorFunction, ProjectConfig, TaskMetadataWithFunctions } from \"../types\";\nimport {\n conditionallyExportPacket,\n conditionallyImportPacket,\n createPacketAttributes,\n parsePacket,\n stringifyIO,\n} from \"../utils/ioSerialization\";\nimport { calculateNextRetryDelay } from \"../utils/retries\";\nimport { accessoryAttributes } from \"../utils/styleAttributes\";\n\nexport type TaskExecutorOptions = {\n tracingSDK: TracingSDK;\n tracer: TriggerTracer;\n consoleInterceptor: ConsoleInterceptor;\n projectConfig: Config;\n importedConfig: ProjectConfig | undefined;\n handleErrorFn: HandleErrorFunction | undefined;\n};\n\nexport class TaskExecutor {\n private _tracingSDK: TracingSDK;\n private _tracer: TriggerTracer;\n private _consoleInterceptor: ConsoleInterceptor;\n private _config: Config;\n private _importedConfig: ProjectConfig | undefined;\n private _handleErrorFn: HandleErrorFunction | undefined;\n\n constructor(\n public task: TaskMetadataWithFunctions,\n options: TaskExecutorOptions\n ) {\n this._tracingSDK = options.tracingSDK;\n this._tracer = options.tracer;\n this._consoleInterceptor = options.consoleInterceptor;\n this._config = options.projectConfig;\n this._importedConfig = options.importedConfig;\n this._handleErrorFn = options.handleErrorFn;\n }\n\n async execute(\n execution: TaskRunExecution,\n worker: BackgroundWorkerProperties,\n traceContext: Record<string, unknown>\n ): Promise<TaskRunExecutionResult> {\n const ctx = TaskRunContext.parse(execution);\n const attemptMessage = `Attempt ${execution.attempt.number}`;\n\n const originalPacket = {\n data: execution.run.payload,\n dataType: execution.run.payloadType,\n };\n\n taskContext.setGlobalTaskContext({\n ctx,\n worker,\n });\n\n this._tracingSDK.asyncResourceDetector.resolveWithAttributes({\n ...taskContext.attributes,\n [SemanticInternalAttributes.SDK_VERSION]: this.task.packageVersion,\n [SemanticInternalAttributes.SDK_LANGUAGE]: \"typescript\",\n });\n\n const result = await this._tracer.startActiveSpan(\n attemptMessage,\n async (span) => {\n return await this._consoleInterceptor.intercept(console, async () => {\n let parsedPayload: any;\n let initOutput: any;\n\n try {\n const payloadPacket = await conditionallyImportPacket(originalPacket, this._tracer);\n\n parsedPayload = await parsePacket(payloadPacket);\n\n if (execution.attempt.number === 1) {\n await this.#callOnStartFunctions(parsedPayload, ctx);\n }\n\n initOutput = await this.#callInitFunctions(parsedPayload, ctx);\n\n const output = await this.#callRun(parsedPayload, ctx, initOutput);\n\n await this.#callOnSuccessFunctions(parsedPayload, output, ctx, initOutput);\n\n try {\n const stringifiedOutput = await stringifyIO(output);\n\n const finalOutput = await conditionallyExportPacket(\n stringifiedOutput,\n `${execution.attempt.id}/output`,\n this._tracer\n );\n\n const attributes = await createPacketAttributes(\n finalOutput,\n SemanticInternalAttributes.OUTPUT,\n SemanticInternalAttributes.OUTPUT_TYPE\n );\n\n if (attributes) {\n span.setAttributes(attributes);\n }\n\n return {\n ok: true,\n id: execution.run.id,\n output: finalOutput.data,\n outputType: finalOutput.dataType,\n } satisfies TaskRunExecutionResult;\n } catch (stringifyError) {\n recordSpanException(span, stringifyError);\n\n return {\n ok: false,\n id: execution.run.id,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.TASK_OUTPUT_ERROR,\n message:\n stringifyError instanceof Error\n ? stringifyError.message\n : typeof stringifyError === \"string\"\n ? stringifyError\n : undefined,\n },\n } satisfies TaskRunExecutionResult;\n }\n } catch (runError) {\n try {\n const handleErrorResult = await this.#handleError(\n execution,\n runError,\n parsedPayload,\n ctx\n );\n\n recordSpanException(span, handleErrorResult.error ?? runError);\n\n if (handleErrorResult.status !== \"retry\") {\n await this.#callOnFailureFunctions(\n parsedPayload,\n handleErrorResult.error ?? runError,\n ctx,\n initOutput\n );\n }\n\n return {\n id: execution.run.id,\n ok: false,\n error: handleErrorResult.error\n ? parseError(handleErrorResult.error)\n : parseError(runError),\n retry: handleErrorResult.status === \"retry\" ? handleErrorResult.retry : undefined,\n skippedRetrying: handleErrorResult.status === \"skipped\",\n } satisfies TaskRunExecutionResult;\n } catch (handleErrorError) {\n recordSpanException(span, handleErrorError);\n\n return {\n ok: false,\n id: execution.run.id,\n error: {\n type: \"INTERNAL_ERROR\",\n code: TaskRunErrorCodes.HANDLE_ERROR_ERROR,\n message:\n handleErrorError instanceof Error\n ? handleErrorError.message\n : typeof handleErrorError === \"string\"\n ? handleErrorError\n : undefined,\n },\n } satisfies TaskRunExecutionResult;\n }\n } finally {\n await this.#callTaskCleanup(parsedPayload, ctx, initOutput);\n }\n });\n },\n {\n kind: SpanKind.CONSUMER,\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"attempt\",\n ...accessoryAttributes({\n items: [\n {\n text: ctx.task.filePath,\n },\n {\n text: `${ctx.task.exportName}.run()`,\n },\n ],\n style: \"codepath\",\n }),\n },\n },\n this._tracer.extractContext(traceContext)\n );\n\n return result;\n }\n\n async #callRun(payload: unknown, ctx: TaskRunContext, init: unknown) {\n const runFn = this.task.fns.run;\n const middlewareFn = this.task.fns.middleware;\n\n if (!runFn) {\n throw new Error(\"Task does not have a run function\");\n }\n\n if (!middlewareFn) {\n return runFn(payload, { ctx });\n }\n\n return middlewareFn(payload, { ctx, next: async () => runFn(payload, { ctx, init }) });\n }\n\n async #callInitFunctions(payload: unknown, ctx: TaskRunContext) {\n await this.#callConfigInit(payload, ctx);\n\n const initFn = this.task.fns.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\n \"init\",\n async (span) => {\n return await initFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n }\n\n async #callConfigInit(payload: unknown, ctx: TaskRunContext) {\n const initFn = this._importedConfig?.init;\n\n if (!initFn) {\n return {};\n }\n\n return this._tracer.startActiveSpan(\n \"config.init\",\n async (span) => {\n return await initFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n }\n\n async #callOnSuccessFunctions(\n payload: unknown,\n output: any,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n await this.#callOnSuccessFunction(\n this.task.fns.onSuccess,\n \"task.onSuccess\",\n payload,\n output,\n ctx,\n initOutput\n );\n\n await this.#callOnSuccessFunction(\n this._importedConfig?.onSuccess,\n \"config.onSuccess\",\n payload,\n output,\n ctx,\n initOutput\n );\n }\n\n async #callOnSuccessFunction(\n onSuccessFn: TaskMetadataWithFunctions[\"fns\"][\"onSuccess\"],\n name: string,\n payload: unknown,\n output: any,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onSuccessFn) {\n return;\n }\n\n try {\n await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onSuccessFn(payload, output, { ctx, init: initOutput });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch {\n // Ignore errors from onSuccess functions\n }\n }\n\n async #callOnFailureFunctions(\n payload: unknown,\n error: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n await this.#callOnFailureFunction(\n this.task.fns.onFailure,\n \"task.onFailure\",\n payload,\n error,\n ctx,\n initOutput\n );\n\n await this.#callOnFailureFunction(\n this._importedConfig?.onFailure,\n \"config.onFailure\",\n payload,\n error,\n ctx,\n initOutput\n );\n }\n\n async #callOnFailureFunction(\n onFailureFn: TaskMetadataWithFunctions[\"fns\"][\"onFailure\"],\n name: string,\n payload: unknown,\n error: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onFailureFn) {\n return;\n }\n\n try {\n return await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onFailureFn(payload, error, { ctx, init: initOutput });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch (e) {\n // Ignore errors from onFailure functions\n }\n }\n\n async #callOnStartFunctions(payload: unknown, ctx: TaskRunContext) {\n await this.#callOnStartFunction(\n this._importedConfig?.onStart,\n \"config.onStart\",\n payload,\n ctx,\n {}\n );\n\n await this.#callOnStartFunction(this.task.fns.onStart, \"task.onStart\", payload, ctx, {});\n }\n\n async #callOnStartFunction(\n onStartFn: TaskMetadataWithFunctions[\"fns\"][\"onStart\"],\n name: string,\n payload: unknown,\n ctx: TaskRunContext,\n initOutput: any\n ) {\n if (!onStartFn) {\n return;\n }\n\n try {\n await this._tracer.startActiveSpan(\n name,\n async (span) => {\n return await onStartFn(payload, { ctx });\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"function\",\n },\n }\n );\n } catch {\n // Ignore errors from onStart functions\n }\n }\n\n async #callTaskCleanup(payload: unknown, ctx: TaskRunContext, init: unknown) {\n const cleanupFn = this.task.fns.cleanup;\n\n if (!cleanupFn) {\n return;\n }\n\n return this._tracer.startActiveSpan(\"cleanup\", async (span) => {\n return await cleanupFn(payload, { ctx, init });\n });\n }\n\n async #handleError(\n execution: TaskRunExecution,\n error: unknown,\n payload: any,\n ctx: TaskRunContext\n ): Promise<\n | { status: \"retry\"; retry: TaskRunExecutionRetry; error?: unknown }\n | { status: \"skipped\"; error?: unknown } // skipped is different than noop, it means that the task was skipped from retrying, instead of just not retrying\n | { status: \"noop\"; error?: unknown }\n > {\n const retriesConfig = this._importedConfig?.retries ?? this._config.retries;\n\n const retry = this.task.retry ?? retriesConfig?.default;\n\n if (!retry) {\n return { status: \"noop\" };\n }\n\n const delay = calculateNextRetryDelay(retry, execution.attempt.number);\n\n if (\n execution.environment.type === \"DEVELOPMENT\" &&\n typeof retriesConfig?.enabledInDev === \"boolean\" &&\n !retriesConfig.enabledInDev\n ) {\n return { status: \"skipped\" };\n }\n\n return this._tracer.startActiveSpan(\n \"handleError()\",\n async (span) => {\n const handleErrorResult = this.task.fns.handleError\n ? await this.task.fns.handleError(payload, error, {\n ctx,\n retry,\n retryDelayInMs: delay,\n retryAt: delay ? new Date(Date.now() + delay) : undefined,\n })\n : this._importedConfig\n ? await this._handleErrorFn?.(payload, error, {\n ctx,\n retry,\n retryDelayInMs: delay,\n retryAt: delay ? new Date(Date.now() + delay) : undefined,\n })\n : undefined;\n\n // If handleErrorResult\n if (!handleErrorResult) {\n return typeof delay === \"undefined\"\n ? { status: \"noop\" }\n : { status: \"retry\", retry: { timestamp: Date.now() + delay, delay } };\n }\n\n if (handleErrorResult.skipRetrying) {\n return { status: \"skipped\", error: handleErrorResult.error };\n }\n\n if (typeof handleErrorResult.retryAt !== \"undefined\") {\n return {\n status: \"retry\",\n retry: {\n timestamp: handleErrorResult.retryAt.getTime(),\n delay: handleErrorResult.retryAt.getTime() - Date.now(),\n },\n error: handleErrorResult.error,\n };\n }\n\n if (typeof handleErrorResult.retryDelayInMs === \"number\") {\n return {\n status: \"retry\",\n retry: {\n timestamp: Date.now() + handleErrorResult.retryDelayInMs,\n delay: handleErrorResult.retryDelayInMs,\n },\n error: handleErrorResult.error,\n };\n }\n\n if (handleErrorResult.retry && typeof handleErrorResult.retry === \"object\") {\n const delay = calculateNextRetryDelay(handleErrorResult.retry, execution.attempt.number);\n\n return typeof delay === \"undefined\"\n ? { status: \"noop\", error: handleErrorResult.error }\n : {\n status: \"retry\",\n retry: { timestamp: Date.now() + delay, delay },\n error: handleErrorResult.error,\n };\n }\n\n return { status: \"noop\", error: handleErrorResult.error };\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"exclamation-circle\",\n },\n }\n );\n }\n}\n","import { z } from \"zod\";\nimport { TaskRunError } from \"./schemas/common\";\nimport nodePath from \"node:path\";\n\nexport function parseError(error: unknown): TaskRunError {\n if (error instanceof Error) {\n return {\n type: \"BUILT_IN_ERROR\",\n name: error.name,\n message: error.message,\n stackTrace: error.stack ?? \"\",\n };\n }\n\n if (typeof error === \"string\") {\n return {\n type: \"STRING_ERROR\",\n raw: error,\n };\n }\n\n try {\n return {\n type: \"CUSTOM_ERROR\",\n raw: JSON.stringify(error),\n };\n } catch (e) {\n return {\n type: \"CUSTOM_ERROR\",\n raw: String(error),\n };\n }\n}\n\nexport function createErrorTaskError(error: TaskRunError): any {\n switch (error.type) {\n case \"BUILT_IN_ERROR\": {\n const e = new Error(error.message);\n\n e.name = error.name;\n e.stack = error.stackTrace;\n\n return e;\n }\n case \"STRING_ERROR\": {\n return error.raw;\n }\n case \"CUSTOM_ERROR\": {\n return JSON.parse(error.raw);\n }\n case \"INTERNAL_ERROR\": {\n return new Error(`trigger.dev internal error (${error.code})`);\n }\n }\n}\n\nexport function createJsonErrorObject(error: TaskRunError) {\n switch (error.type) {\n case \"BUILT_IN_ERROR\": {\n return {\n name: error.name,\n message: error.message,\n stackTrace: error.stackTrace,\n };\n }\n case \"STRING_ERROR\": {\n return {\n message: error.raw,\n };\n }\n case \"CUSTOM_ERROR\": {\n return {\n message: error.raw,\n };\n }\n case \"INTERNAL_ERROR\": {\n return {\n message: `trigger.dev internal error (${error.code})`,\n };\n }\n }\n}\n\nexport function correctErrorStackTrace(\n stackTrace: string,\n projectDir?: string,\n options?: { removeFirstLine?: boolean }\n) {\n const [errorLine, ...traceLines] = stackTrace.split(\"\\n\");\n\n return [\n options?.removeFirstLine ? undefined : errorLine,\n ...traceLines.map((line) => correctStackTraceLine(line, projectDir)),\n ]\n .filter(Boolean)\n .join(\"\\n\");\n}\n\nconst LINES_TO_IGNORE = [\n /ConsoleInterceptor/,\n /TriggerTracer/,\n /TaskExecutor/,\n /EXECUTE_TASK_RUN/,\n /@trigger.dev\\/core/,\n /safeJsonProcess/,\n /__entryPoint.ts/,\n];\n\nfunction correctStackTraceLine(line: string, projectDir?: string) {\n if (LINES_TO_IGNORE.some((regex) => regex.test(line))) {\n return;\n }\n\n // Check to see if the path is inside the project directory\n if (projectDir && !line.includes(projectDir)) {\n return;\n }\n\n return line.trim();\n}\n\nexport function groupTaskMetadataIssuesByTask(tasks: any, issues: z.ZodIssue[]) {\n return issues.reduce(\n (acc, issue) => {\n if (issue.path.length === 0) {\n return acc;\n }\n\n const taskIndex = issue.path[1];\n\n if (typeof taskIndex !== \"number\") {\n return acc;\n }\n\n const task = tasks[taskIndex];\n\n if (!task) {\n return acc;\n }\n\n const restOfPath = issue.path.slice(2);\n\n const taskId = task.id;\n const taskName = task.exportName;\n const filePath = task.filePath;\n\n const key = taskIndex;\n\n const existing = acc[key] ?? {\n id: taskId,\n exportName: taskName,\n filePath,\n issues: [] as Array<{ message: string; path?: string }>,\n };\n\n existing.issues.push({\n message: issue.message,\n path: restOfPath.length === 0 ? undefined : restOfPath.join(\".\"),\n });\n\n return {\n ...acc,\n [key]: existing,\n };\n },\n {} as Record<\n number,\n {\n id: any;\n exportName: string;\n filePath: string;\n issues: Array<{ message: string; path?: string }>;\n }\n >\n );\n}\n","import { Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nexport { TracingSDK, type TracingSDKConfig, type TracingDiagnosticLogLevel } from \"./tracingSDK\";\n\nexport function recordSpanException(span: Span, error: unknown) {\n if (error instanceof Error) {\n span.recordException(error);\n } else if (typeof error === \"string\") {\n span.recordException(new Error(error));\n } else {\n span.recordException(new Error(JSON.stringify(error)));\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR });\n}\n","import { DiagConsoleLogger, DiagLogLevel, TracerProvider, diag } from \"@opentelemetry/api\";\nimport { logs } from \"@opentelemetry/api-logs\";\nimport { OTLPLogExporter } from \"@opentelemetry/exporter-logs-otlp-http\";\nimport { OTLPTraceExporter } from \"@opentelemetry/exporter-trace-otlp-http\";\nimport {\n registerInstrumentations,\n type InstrumentationOption,\n} from \"@opentelemetry/instrumentation\";\nimport {\n DetectorSync,\n IResource,\n Resource,\n ResourceAttributes,\n ResourceDetectionConfig,\n detectResourcesSync,\n processDetectorSync,\n} from \"@opentelemetry/resources\";\nimport {\n BatchLogRecordProcessor,\n LoggerProvider,\n SimpleLogRecordProcessor,\n} from \"@opentelemetry/sdk-logs\";\nimport {\n BatchSpanProcessor,\n NodeTracerProvider,\n SimpleSpanProcessor,\n SpanExporter,\n} from \"@opentelemetry/sdk-trace-node\";\nimport { SemanticResourceAttributes } from \"@opentelemetry/semantic-conventions\";\nimport {\n OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n OTEL_LINK_COUNT_LIMIT,\n OTEL_LOG_ATTRIBUTE_COUNT_LIMIT,\n OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n OTEL_SPAN_EVENT_COUNT_LIMIT,\n} from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TaskContextLogProcessor, TaskContextSpanProcessor } from \"../taskContext/otelProcessors\";\nimport { getEnvVar } from \"../utils/getEnv\";\n\nclass AsyncResourceDetector implements DetectorSync {\n private _promise: Promise<ResourceAttributes>;\n private _resolver?: (value: ResourceAttributes) => void;\n private _resolved: boolean = false;\n\n constructor() {\n this._promise = new Promise((resolver) => {\n this._resolver = resolver;\n });\n }\n\n detect(_config?: ResourceDetectionConfig): Resource {\n return new Resource({}, this._promise);\n }\n\n resolveWithAttributes(attributes: ResourceAttributes) {\n if (!this._resolver) {\n throw new Error(\"Resolver not available\");\n }\n\n if (this._resolved) {\n return;\n }\n\n this._resolved = true;\n this._resolver(attributes);\n }\n}\n\nexport type TracingDiagnosticLogLevel =\n | \"none\"\n | \"error\"\n | \"warn\"\n | \"info\"\n | \"debug\"\n | \"verbose\"\n | \"all\";\n\nexport type TracingSDKConfig = {\n url: string;\n forceFlushTimeoutMillis?: number;\n resource?: IResource;\n instrumentations?: InstrumentationOption[];\n diagLogLevel?: TracingDiagnosticLogLevel;\n};\n\nexport class TracingSDK {\n public readonly asyncResourceDetector = new AsyncResourceDetector();\n private readonly _logProvider: LoggerProvider;\n private readonly _spanExporter: SpanExporter;\n private readonly _traceProvider: NodeTracerProvider;\n\n public readonly getLogger: LoggerProvider[\"getLogger\"];\n public readonly getTracer: TracerProvider[\"getTracer\"];\n\n constructor(private readonly config: TracingSDKConfig) {\n setLogLevel(config.diagLogLevel ?? \"none\");\n\n const envResourceAttributesSerialized = getEnvVar(\"OTEL_RESOURCE_ATTRIBUTES\");\n const envResourceAttributes = envResourceAttributesSerialized\n ? JSON.parse(envResourceAttributesSerialized)\n : {};\n\n const commonResources = detectResourcesSync({\n detectors: [this.asyncResourceDetector, processDetectorSync],\n })\n .merge(\n new Resource({\n [SemanticResourceAttributes.CLOUD_PROVIDER]: \"trigger.dev\",\n [SemanticInternalAttributes.TRIGGER]: true,\n })\n )\n .merge(config.resource ?? new Resource({}))\n .merge(new Resource(envResourceAttributes));\n\n const traceProvider = new NodeTracerProvider({\n forceFlushTimeoutMillis: config.forceFlushTimeoutMillis ?? 500,\n resource: commonResources,\n spanLimits: {\n attributeCountLimit: OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,\n attributeValueLengthLimit: OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n eventCountLimit: OTEL_SPAN_EVENT_COUNT_LIMIT,\n attributePerEventCountLimit: OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT,\n linkCountLimit: OTEL_LINK_COUNT_LIMIT,\n attributePerLinkCountLimit: OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT,\n },\n });\n\n const spanExporter = new OTLPTraceExporter({\n url: `${config.url}/v1/traces`,\n timeoutMillis: config.forceFlushTimeoutMillis ?? 1000,\n });\n\n traceProvider.addSpanProcessor(\n new TaskContextSpanProcessor(\n getEnvVar(\"OTEL_BATCH_PROCESSING_ENABLED\") === \"1\"\n ? new BatchSpanProcessor(spanExporter, {\n maxExportBatchSize: parseInt(getEnvVar(\"OTEL_SPAN_MAX_EXPORT_BATCH_SIZE\") ?? \"64\"),\n scheduledDelayMillis: parseInt(\n getEnvVar(\"OTEL_SPAN_SCHEDULED_DELAY_MILLIS\") ?? \"200\"\n ),\n exportTimeoutMillis: parseInt(\n getEnvVar(\"OTEL_SPAN_EXPORT_TIMEOUT_MILLIS\") ?? \"30000\"\n ),\n maxQueueSize: parseInt(getEnvVar(\"OTEL_SPAN_MAX_QUEUE_SIZE\") ?? \"512\"),\n })\n : new SimpleSpanProcessor(spanExporter)\n )\n );\n\n traceProvider.register();\n\n registerInstrumentations({\n instrumentations: config.instrumentations ?? [],\n tracerProvider: traceProvider,\n });\n\n const logExporter = new OTLPLogExporter({\n url: `${config.url}/v1/logs`,\n });\n\n // To start a logger, you first need to initialize the Logger provider.\n const loggerProvider = new LoggerProvider({\n resource: commonResources,\n logRecordLimits: {\n attributeCountLimit: OTEL_LOG_ATTRIBUTE_COUNT_LIMIT,\n attributeValueLengthLimit: OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT,\n },\n });\n\n loggerProvider.addLogRecordProcessor(\n new TaskContextLogProcessor(\n getEnvVar(\"OTEL_BATCH_PROCESSING_ENABLED\") === \"1\"\n ? new BatchLogRecordProcessor(logExporter, {\n maxExportBatchSize: parseInt(getEnvVar(\"OTEL_LOG_MAX_EXPORT_BATCH_SIZE\") ?? \"64\"),\n scheduledDelayMillis: parseInt(getEnvVar(\"OTEL_LOG_SCHEDULED_DELAY_MILLIS\") ?? \"200\"),\n exportTimeoutMillis: parseInt(getEnvVar(\"OTEL_LOG_EXPORT_TIMEOUT_MILLIS\") ?? \"30000\"),\n maxQueueSize: parseInt(getEnvVar(\"OTEL_LOG_MAX_QUEUE_SIZE\") ?? \"512\"),\n })\n : new SimpleLogRecordProcessor(logExporter)\n )\n );\n\n this._logProvider = loggerProvider;\n this._spanExporter = spanExporter;\n this._traceProvider = traceProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n\n this.getLogger = loggerProvider.getLogger.bind(loggerProvider);\n this.getTracer = traceProvider.getTracer.bind(traceProvider);\n }\n\n public async flush() {\n await this._traceProvider.forceFlush();\n await this._logProvider.forceFlush();\n }\n\n public async shutdown() {\n await this._traceProvider.shutdown();\n await this._logProvider.shutdown();\n }\n}\n\nfunction setLogLevel(level: TracingDiagnosticLogLevel) {\n let diagLogLevel: DiagLogLevel;\n\n switch (level) {\n case \"none\":\n diagLogLevel = DiagLogLevel.NONE;\n break;\n case \"error\":\n diagLogLevel = DiagLogLevel.ERROR;\n break;\n case \"warn\":\n diagLogLevel = DiagLogLevel.WARN;\n break;\n case \"info\":\n diagLogLevel = DiagLogLevel.INFO;\n break;\n case \"debug\":\n diagLogLevel = DiagLogLevel.DEBUG;\n break;\n case \"verbose\":\n diagLogLevel = DiagLogLevel.VERBOSE;\n break;\n case \"all\":\n diagLogLevel = DiagLogLevel.ALL;\n break;\n default:\n diagLogLevel = DiagLogLevel.NONE;\n }\n\n diag.setLogger(new DiagConsoleLogger(), diagLogLevel);\n}\n","import { AttributeValue, Attributes } from \"@opentelemetry/api\";\n\nexport const OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT = 256;\nexport const OTEL_LOG_ATTRIBUTE_COUNT_LIMIT = 256;\nexport const OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;\nexport const OTEL_LOG_ATTRIBUTE_VALUE_LENGTH_LIMIT = 1028;\nexport const OTEL_SPAN_EVENT_COUNT_LIMIT = 10;\nexport const OTEL_LINK_COUNT_LIMIT = 2;\nexport const OTEL_ATTRIBUTE_PER_LINK_COUNT_LIMIT = 10;\nexport const OTEL_ATTRIBUTE_PER_EVENT_COUNT_LIMIT = 10;\nexport const OFFLOAD_IO_PACKET_LENGTH_LIMIT = 128 * 1024;\n\nexport function imposeAttributeLimits(attributes: Attributes): Attributes {\n const newAttributes: Attributes = {};\n\n for (const [key, value] of Object.entries(attributes)) {\n if (calculateAttributeValueLength(value) > OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT) {\n continue;\n }\n\n if (Object.keys(newAttributes).length >= OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT) {\n break;\n }\n\n newAttributes[key] = value;\n }\n\n return newAttributes;\n}\n\nfunction calculateAttributeValueLength(value: AttributeValue | undefined | null): number {\n if (value === undefined || value === null) {\n return 0;\n }\n\n if (typeof value === \"string\") {\n return value.length;\n }\n\n if (typeof value === \"number\") {\n return 8;\n }\n\n if (typeof value === \"boolean\") {\n return 4;\n }\n\n if (Array.isArray(value)) {\n return value.reduce((acc: number, v) => acc + calculateAttributeValueLength(v), 0);\n }\n\n return 0;\n}\n","export const SemanticInternalAttributes = {\n ENVIRONMENT_ID: \"ctx.environment.id\",\n ENVIRONMENT_TYPE: \"ctx.environment.type\",\n ORGANIZATION_ID: \"ctx.organization.id\",\n ORGANIZATION_SLUG: \"ctx.organization.slug\",\n ORGANIZATION_NAME: \"ctx.organization.name\",\n PROJECT_ID: \"ctx.project.id\",\n PROJECT_REF: \"ctx.project.ref\",\n PROJECT_NAME: \"ctx.project.title\",\n PROJECT_DIR: \"project.dir\",\n ATTEMPT_ID: \"ctx.attempt.id\",\n ATTEMPT_NUMBER: \"ctx.attempt.number\",\n RUN_ID: \"ctx.run.id\",\n RUN_IS_TEST: \"ctx.run.isTest\",\n BATCH_ID: \"ctx.batch.id\",\n TASK_SLUG: \"ctx.task.id\",\n TASK_PATH: \"ctx.task.filePath\",\n TASK_EXPORT_NAME: \"ctx.task.exportName\",\n QUEUE_NAME: \"ctx.queue.name\",\n QUEUE_ID: \"ctx.queue.id\",\n SPAN_PARTIAL: \"$span.partial\",\n SPAN_ID: \"$span.span_id\",\n OUTPUT: \"$output\",\n OUTPUT_TYPE: \"$mime_type_output\",\n STYLE: \"$style\",\n STYLE_ICON: \"$style.icon\",\n STYLE_VARIANT: \"$style.variant\",\n STYLE_ACCESSORY: \"$style.accessory\",\n METADATA: \"$metadata\",\n TRIGGER: \"$trigger\",\n PAYLOAD: \"$payload\",\n PAYLOAD_TYPE: \"$mime_type_payload\",\n SHOW: \"$show\",\n SHOW_ACTIONS: \"$show.actions\",\n WORKER_ID: \"worker.id\",\n WORKER_VERSION: \"worker.version\",\n CLI_VERSION: \"cli.version\",\n SDK_VERSION: \"sdk.version\",\n SDK_LANGUAGE: \"sdk.language\",\n RETRY_AT: \"retry.at\",\n RETRY_DELAY: \"retry.delay\",\n RETRY_COUNT: \"retry.count\",\n LINK_TITLE: \"$link.title\",\n IDEMPOTENCY_KEY: \"ctx.run.idempotencyKey\",\n};\n","import { Attributes } from \"@opentelemetry/api\";\n\nexport const NULL_SENTINEL = \"$@null((\";\n\nexport function flattenAttributes(\n obj: Record<string, unknown> | Array<unknown> | string | boolean | number | null | undefined,\n prefix?: string\n): Attributes {\n const result: Attributes = {};\n\n // Check if obj is null or undefined\n if (obj === undefined) {\n return result;\n }\n\n if (obj === null) {\n result[prefix || \"\"] = NULL_SENTINEL;\n return result;\n }\n\n if (typeof obj === \"string\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n if (typeof obj === \"number\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n if (typeof obj === \"boolean\") {\n result[prefix || \"\"] = obj;\n return result;\n }\n\n for (const [key, value] of Object.entries(obj)) {\n const newPrefix = `${prefix ? `${prefix}.` : \"\"}${Array.isArray(obj) ? `[${key}]` : key}`;\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n if (typeof value[i] === \"object\" && value[i] !== null) {\n // update null check here as well\n Object.assign(result, flattenAttributes(value[i], `${newPrefix}.[${i}]`));\n } else {\n if (value[i] === null) {\n result[`${newPrefix}.[${i}]`] = NULL_SENTINEL;\n } else {\n result[`${newPrefix}.[${i}]`] = value[i];\n }\n }\n }\n } else if (isRecord(value)) {\n // update null check here\n Object.assign(result, flattenAttributes(value, newPrefix));\n } else {\n if (typeof value === \"number\" || typeof value === \"string\" || typeof value === \"boolean\") {\n result[newPrefix] = value;\n } else if (value === null) {\n result[newPrefix] = NULL_SENTINEL;\n }\n }\n }\n\n return result;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function unflattenAttributes(\n obj: Attributes\n): Record<string, unknown> | string | number | boolean | null | undefined {\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj)) {\n return obj;\n }\n\n if (\n typeof obj === \"object\" &&\n obj !== null &&\n Object.keys(obj).length === 1 &&\n Object.keys(obj)[0] === \"\"\n ) {\n return rehydrateNull(obj[\"\"]) as any;\n }\n\n if (Object.keys(obj).length === 0) {\n return;\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(obj)) {\n const parts = key.split(\".\").reduce((acc, part) => {\n if (part.includes(\"[\")) {\n // Handling nested array indices\n const subparts = part.split(/\\[|\\]/).filter((p) => p !== \"\");\n acc.push(...subparts);\n } else {\n acc.push(part);\n }\n return acc;\n }, [] as string[]);\n\n let current: any = result;\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n const nextPart = parts[i + 1];\n const isArray = /^\\d+$/.test(nextPart);\n if (isArray && !Array.isArray(current[part])) {\n current[part] = [];\n } else if (!isArray && current[part] === undefined) {\n current[part] = {};\n }\n current = current[part];\n }\n const lastPart = parts[parts.length - 1];\n current[lastPart] = rehydrateNull(value);\n }\n\n // Convert the result to an array if all top-level keys are numeric indices\n if (Object.keys(result).every((k) => /^\\d+$/.test(k))) {\n const maxIndex = Math.max(...Object.keys(result).map((k) => parseInt(k)));\n const arrayResult = Array(maxIndex + 1);\n for (const key in result) {\n arrayResult[parseInt(key)] = result[key];\n }\n return arrayResult as any;\n }\n\n return result;\n}\n\nexport function primitiveValueOrflattenedAttributes(\n obj: Record<string, unknown> | Array<unknown> | string | boolean | number | undefined,\n prefix: string | undefined\n): Attributes | string | number | boolean | undefined {\n if (\n typeof obj === \"string\" ||\n typeof obj === \"number\" ||\n typeof obj === \"boolean\" ||\n obj === null ||\n obj === undefined\n ) {\n return obj;\n }\n\n const attributes = flattenAttributes(obj, prefix);\n\n if (\n prefix !== undefined &&\n typeof attributes[prefix] !== \"undefined\" &&\n attributes[prefix] !== null\n ) {\n return attributes[prefix] as unknown as Attributes;\n }\n\n return attributes;\n}\n\nfunction rehydrateNull(value: any): any {\n if (value === NULL_SENTINEL) {\n return null;\n }\n\n return value;\n}\n","export const _globalThis = typeof globalThis === \"object\" ? globalThis : global;\n","import { ApiClientConfiguration } from \"../apiClientManager/types\";\nimport { Clock } from \"../clock/clock\";\nimport type { RuntimeManager } from \"../runtime/manager\";\nimport { TaskCatalog } from \"../task-catalog/catalog\";\nimport { TaskContext } from \"../taskContext/types\";\nimport { _globalThis } from \"./platform\";\n\nconst GLOBAL_TRIGGER_DOT_DEV_KEY = Symbol.for(`dev.trigger.ts.api`);\n\nconst _global = _globalThis as TriggerDotDevGlobal;\n\nexport function registerGlobal<Type extends keyof TriggerDotDevGlobalAPI>(\n type: Type,\n instance: TriggerDotDevGlobalAPI[Type],\n allowOverride = false\n): boolean {\n const api = (_global[GLOBAL_TRIGGER_DOT_DEV_KEY] = _global[GLOBAL_TRIGGER_DOT_DEV_KEY] ?? {});\n\n if (!allowOverride && api[type]) {\n // already registered an API of this type\n const err = new Error(`trigger.dev: Attempted duplicate registration of API: ${type}`);\n return false;\n }\n\n api[type] = instance;\n\n return true;\n}\n\nexport function getGlobal<Type extends keyof TriggerDotDevGlobalAPI>(\n type: Type\n): TriggerDotDevGlobalAPI[Type] | undefined {\n return _global[GLOBAL_TRIGGER_DOT_DEV_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof TriggerDotDevGlobalAPI) {\n const api = _global[GLOBAL_TRIGGER_DOT_DEV_KEY];\n\n if (api) {\n delete api[type];\n }\n}\n\ntype TriggerDotDevGlobal = {\n [GLOBAL_TRIGGER_DOT_DEV_KEY]?: TriggerDotDevGlobalAPI;\n};\n\ntype TriggerDotDevGlobalAPI = {\n runtime?: RuntimeManager;\n logger?: any;\n clock?: Clock;\n [\"task-catalog\"]?: TaskCatalog;\n [\"task-context\"]?: TaskContext;\n [\"api-client\"]?: ApiClientConfiguration;\n};\n","import { Attributes } from \"@opentelemetry/api\";\nimport { BackgroundWorkerProperties, TaskRunContext } from \"../schemas\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { TaskContext } from \"./types\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\n\nconst API_NAME = \"task-context\";\n\nexport class TaskContextAPI {\n private static _instance?: TaskContextAPI;\n\n private constructor() {}\n\n public static getInstance(): TaskContextAPI {\n if (!this._instance) {\n this._instance = new TaskContextAPI();\n }\n\n return this._instance;\n }\n\n get isInsideTask(): boolean {\n return this.#getTaskContext() !== undefined;\n }\n\n get ctx(): TaskRunContext | undefined {\n return this.#getTaskContext()?.ctx;\n }\n\n get worker(): BackgroundWorkerProperties | undefined {\n return this.#getTaskContext()?.worker;\n }\n\n get attributes(): Attributes {\n if (this.ctx) {\n return {\n ...this.contextAttributes,\n ...this.workerAttributes,\n };\n }\n\n return {};\n }\n\n get workerAttributes(): Attributes {\n if (this.worker) {\n return {\n [SemanticInternalAttributes.WORKER_ID]: this.worker.id,\n [SemanticInternalAttributes.WORKER_VERSION]: this.worker.version,\n };\n }\n\n return {};\n }\n\n get contextAttributes(): Attributes {\n if (this.ctx) {\n return {\n [SemanticInternalAttributes.ATTEMPT_ID]: this.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: this.ctx.attempt.number,\n [SemanticInternalAttributes.TASK_SLUG]: this.ctx.task.id,\n [SemanticInternalAttributes.TASK_PATH]: this.ctx.task.filePath,\n [SemanticInternalAttributes.TASK_EXPORT_NAME]: this.ctx.task.exportName,\n [SemanticInternalAttributes.QUEUE_NAME]: this.ctx.queue.name,\n [SemanticInternalAttributes.QUEUE_ID]: this.ctx.queue.id,\n [SemanticInternalAttributes.ENVIRONMENT_ID]: this.ctx.environment.id,\n [SemanticInternalAttributes.ENVIRONMENT_TYPE]: this.ctx.environment.type,\n [SemanticInternalAttributes.ORGANIZATION_ID]: this.ctx.organization.id,\n [SemanticInternalAttributes.PROJECT_ID]: this.ctx.project.id,\n [SemanticInternalAttributes.PROJECT_REF]: this.ctx.project.ref,\n [SemanticInternalAttributes.PROJECT_NAME]: this.ctx.project.name,\n [SemanticInternalAttributes.RUN_ID]: this.ctx.run.id,\n [SemanticInternalAttributes.RUN_IS_TEST]: this.ctx.run.isTest,\n [SemanticInternalAttributes.ORGANIZATION_SLUG]: this.ctx.organization.slug,\n [SemanticInternalAttributes.ORGANIZATION_NAME]: this.ctx.organization.name,\n [SemanticInternalAttributes.BATCH_ID]: this.ctx.batch?.id,\n [SemanticInternalAttributes.IDEMPOTENCY_KEY]: this.ctx.run.idempotencyKey,\n };\n }\n\n return {};\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalTaskContext(taskContext: TaskContext): boolean {\n return registerGlobal(API_NAME, taskContext);\n }\n\n #getTaskContext(): TaskContext | undefined {\n return getGlobal(API_NAME);\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TaskContextAPI } from \"./taskContext\";\n/** Entrypoint for logger API */\nexport const taskContext = TaskContextAPI.getInstance();\n","import { LogRecord, LogRecordProcessor } from \"@opentelemetry/sdk-logs\";\nimport { Span, SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { Context } from \"@opentelemetry/api\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { taskContext } from \"../task-context-api\";\n\nexport class TaskContextSpanProcessor implements SpanProcessor {\n private _innerProcessor: SpanProcessor;\n\n constructor(innerProcessor: SpanProcessor) {\n this._innerProcessor = innerProcessor;\n }\n\n // Called when a span starts\n onStart(span: Span, parentContext: Context): void {\n if (taskContext.ctx) {\n span.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContext.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContext.ctx.attempt.number,\n },\n SemanticInternalAttributes.METADATA\n )\n );\n }\n\n this._innerProcessor.onStart(span, parentContext);\n }\n\n // Delegate the rest of the methods to the wrapped processor\n\n onEnd(span: Span): void {\n this._innerProcessor.onEnd(span);\n }\n\n shutdown(): Promise<void> {\n return this._innerProcessor.shutdown();\n }\n\n forceFlush(): Promise<void> {\n return this._innerProcessor.forceFlush();\n }\n}\n\nexport class TaskContextLogProcessor implements LogRecordProcessor {\n private _innerProcessor: LogRecordProcessor;\n\n constructor(innerProcessor: LogRecordProcessor) {\n this._innerProcessor = innerProcessor;\n }\n forceFlush(): Promise<void> {\n return this._innerProcessor.forceFlush();\n }\n onEmit(logRecord: LogRecord, context?: Context | undefined): void {\n // Adds in the context attributes to the log record\n if (taskContext.ctx) {\n logRecord.setAttributes(\n flattenAttributes(\n {\n [SemanticInternalAttributes.ATTEMPT_ID]: taskContext.ctx.attempt.id,\n [SemanticInternalAttributes.ATTEMPT_NUMBER]: taskContext.ctx.attempt.number,\n },\n SemanticInternalAttributes.METADATA\n )\n );\n }\n\n this._innerProcessor.onEmit(logRecord, context);\n }\n shutdown(): Promise<void> {\n return this._innerProcessor.shutdown();\n }\n}\n","export function getEnvVar(name: string): string | undefined {\n // This could run in a non-Node.js environment (Bun, Deno, CF Worker, etc.), so don't just assume process.env is a thing\n if (typeof process !== \"undefined\" && typeof process.env === \"object\" && process.env !== null) {\n return process.env[name];\n }\n}\n","import { z } from \"zod\";\nimport { BackgroundWorkerMetadata, ImageDetailsMetadata } from \"./resources\";\nimport { QueueOptions } from \"./schemas\";\n\nexport const WhoAmIResponseSchema = z.object({\n userId: z.string(),\n email: z.string().email(),\n dashboardUrl: z.string(),\n});\n\nexport type WhoAmIResponse = z.infer<typeof WhoAmIResponseSchema>;\n\nexport const GetProjectResponseBody = z.object({\n id: z.string(),\n externalRef: z.string(),\n name: z.string(),\n slug: z.string(),\n createdAt: z.coerce.date(),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n createdAt: z.coerce.date(),\n }),\n});\n\nexport type GetProjectResponseBody = z.infer<typeof GetProjectResponseBody>;\n\nexport const GetProjectsResponseBody = z.array(GetProjectResponseBody);\n\nexport type GetProjectsResponseBody = z.infer<typeof GetProjectsResponseBody>;\n\nexport const GetProjectEnvResponse = z.object({\n apiKey: z.string(),\n name: z.string(),\n apiUrl: z.string(),\n});\n\nexport type GetProjectEnvResponse = z.infer<typeof GetProjectEnvResponse>;\n\nexport const CreateBackgroundWorkerRequestBody = z.object({\n localOnly: z.boolean(),\n metadata: BackgroundWorkerMetadata,\n});\n\nexport type CreateBackgroundWorkerRequestBody = z.infer<typeof CreateBackgroundWorkerRequestBody>;\n\nexport const CreateBackgroundWorkerResponse = z.object({\n id: z.string(),\n version: z.string(),\n contentHash: z.string(),\n});\n\nexport type CreateBackgroundWorkerResponse = z.infer<typeof CreateBackgroundWorkerResponse>;\n\nexport const TriggerTaskRequestBody = z.object({\n payload: z.any(),\n context: z.any(),\n options: z\n .object({\n dependentAttempt: z.string().optional(),\n dependentBatch: z.string().optional(),\n lockToVersion: z.string().optional(),\n queue: QueueOptions.optional(),\n concurrencyKey: z.string().optional(),\n idempotencyKey: z.string().optional(),\n test: z.boolean().optional(),\n payloadType: z.string().optional(),\n })\n .optional(),\n});\n\nexport type TriggerTaskRequestBody = z.infer<typeof TriggerTaskRequestBody>;\n\nexport const TriggerTaskResponse = z.object({\n id: z.string(),\n});\n\nexport type TriggerTaskResponse = z.infer<typeof TriggerTaskResponse>;\n\nexport const BatchTriggerTaskRequestBody = z.object({\n items: TriggerTaskRequestBody.array(),\n dependentAttempt: z.string().optional(),\n});\n\nexport type BatchTriggerTaskRequestBody = z.infer<typeof BatchTriggerTaskRequestBody>;\n\nexport const BatchTriggerTaskResponse = z.object({\n batchId: z.string(),\n runs: z.string().array(),\n});\n\nexport type BatchTriggerTaskResponse = z.infer<typeof BatchTriggerTaskResponse>;\n\nexport const GetBatchResponseBody = z.object({\n id: z.string(),\n items: z.array(\n z.object({\n id: z.string(),\n taskRunId: z.string(),\n status: z.enum([\"PENDING\", \"CANCELED\", \"COMPLETED\", \"FAILED\"]),\n })\n ),\n});\n\nexport type GetBatchResponseBody = z.infer<typeof GetBatchResponseBody>;\n\nexport const GetEnvironmentVariablesResponseBody = z.object({\n variables: z.record(z.string()),\n});\n\nexport type GetEnvironmentVariablesResponseBody = z.infer<\n typeof GetEnvironmentVariablesResponseBody\n>;\n\nexport const StartDeploymentIndexingRequestBody = z.object({\n imageReference: z.string(),\n selfHosted: z.boolean().optional(),\n});\n\nexport type StartDeploymentIndexingRequestBody = z.infer<typeof StartDeploymentIndexingRequestBody>;\n\nexport const StartDeploymentIndexingResponseBody = z.object({\n id: z.string(),\n contentHash: z.string(),\n});\n\nexport type StartDeploymentIndexingResponseBody = z.infer<\n typeof StartDeploymentIndexingResponseBody\n>;\n\nexport const ExternalBuildData = z.object({\n buildId: z.string(),\n buildToken: z.string(),\n projectId: z.string(),\n});\n\nexport type ExternalBuildData = z.infer<typeof ExternalBuildData>;\n\nexport const InitializeDeploymentResponseBody = z.object({\n id: z.string(),\n contentHash: z.string(),\n shortCode: z.string(),\n version: z.string(),\n imageTag: z.string(),\n externalBuildData: ExternalBuildData.optional().nullable(),\n registryHost: z.string().optional(),\n});\n\nexport type InitializeDeploymentResponseBody = z.infer<typeof InitializeDeploymentResponseBody>;\n\nexport const InitializeDeploymentRequestBody = z.object({\n contentHash: z.string(),\n userId: z.string().optional(),\n});\n\nexport type InitializeDeploymentRequestBody = z.infer<typeof InitializeDeploymentRequestBody>;\n\nexport const DeploymentErrorData = z.object({\n name: z.string(),\n message: z.string(),\n stack: z.string().optional(),\n});\n\nexport const GetDeploymentResponseBody = z.object({\n id: z.string(),\n status: z.enum([\n \"PENDING\",\n \"BUILDING\",\n \"DEPLOYING\",\n \"DEPLOYED\",\n \"FAILED\",\n \"CANCELED\",\n \"TIMED_OUT\",\n ]),\n contentHash: z.string(),\n shortCode: z.string(),\n version: z.string(),\n imageReference: z.string().optional(),\n errorData: DeploymentErrorData.optional().nullable(),\n worker: z\n .object({\n id: z.string(),\n version: z.string(),\n tasks: z.array(\n z.object({\n id: z.string(),\n slug: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n })\n ),\n })\n .optional(),\n});\n\nexport type GetDeploymentResponseBody = z.infer<typeof GetDeploymentResponseBody>;\n\nexport const CreateUploadPayloadUrlResponseBody = z.object({\n presignedUrl: z.string(),\n});\n\nexport type CreateUploadPayloadUrlResponseBody = z.infer<typeof CreateUploadPayloadUrlResponseBody>;\n\nexport const ReplayRunResponse = z.object({\n id: z.string(),\n});\n\nexport type ReplayRunResponse = z.infer<typeof ReplayRunResponse>;\n\nexport const CanceledRunResponse = z.object({\n message: z.string(),\n});\n\nexport type CanceledRunResponse = z.infer<typeof CanceledRunResponse>;\n\nexport const ScheduledTaskPayload = z.object({\n /** The schedule id associated with this run (you can have many schedules for the same task).\n You can use this to remove the schedule, update it, etc */\n scheduleId: z.string(),\n /** When the task was scheduled to run.\n * Note this will be slightly different from `new Date()` because it takes a few ms to run the task. */\n timestamp: z.date(),\n /** When the task was last run (it has been).\n This can be undefined if it's never been run */\n lastTimestamp: z.date().optional(),\n /** You can optionally provide an external id when creating the schedule.\n Usually you would use a userId or some other unique identifier.\n This defaults to undefined if you didn't provide one. */\n externalId: z.string().optional(),\n /** The next 5 dates this task is scheduled to run */\n upcoming: z.array(z.date()),\n});\n\nexport type ScheduledTaskPayload = z.infer<typeof ScheduledTaskPayload>;\n\nexport const CreateScheduleOptions = z.object({\n /** The id of the task you want to attach to. */\n task: z.string(),\n /** The schedule in CRON format.\n * \n * ```txt\n* * * * * *\n┬ ┬ ┬ ┬ ┬\n│ │ │ │ |\n│ │ │ │ └ day of week (0 - 7, 1L - 7L) (0 or 7 is Sun)\n│ │ │ └───── month (1 - 12)\n│ │ └────────── day of month (1 - 31, L)\n│ └─────────────── hour (0 - 23)\n└──────────────────── minute (0 - 59)\n * ```\n\n\"L\" means the last. In the \"day of week\" field, 1L means the last Monday of the month. In the day of month field, L means the last day of the month.\n\n */\n cron: z.string(),\n /** (Optional) You can only create one schedule with this key. If you use it twice, the second call will update the schedule.\n *\n * This is useful if you don't want to create duplicate schedules for a user. */\n deduplicationKey: z.string().optional(),\n /** Optionally, you can specify your own IDs (like a user ID) and then use it inside the run function of your task.\n *\n * This allows you to have per-user CRON tasks.\n */\n externalId: z.string().optional(),\n});\n\nexport type CreateScheduleOptions = z.infer<typeof CreateScheduleOptions>;\n\nexport const UpdateScheduleOptions = CreateScheduleOptions;\n\nexport type UpdateScheduleOptions = z.infer<typeof UpdateScheduleOptions>;\n\nexport const ScheduleObject = z.object({\n id: z.string(),\n task: z.string(),\n active: z.boolean(),\n deduplicationKey: z.string().nullish(),\n externalId: z.string().nullish(),\n generator: z.object({\n type: z.literal(\"CRON\"),\n expression: z.string(),\n description: z.string(),\n }),\n nextRun: z.coerce.date().nullish(),\n environments: z.array(\n z.object({\n id: z.string(),\n type: z.string(),\n userName: z.string().nullish(),\n })\n ),\n});\n\nexport type ScheduleObject = z.infer<typeof ScheduleObject>;\n\nexport const DeletedScheduleObject = z.object({\n id: z.string(),\n});\n\nexport type DeletedScheduleObject = z.infer<typeof DeletedScheduleObject>;\n\nexport const ListSchedulesResult = z.object({\n data: z.array(ScheduleObject),\n pagination: z.object({\n currentPage: z.number(),\n totalPages: z.number(),\n count: z.number(),\n }),\n});\n\nexport type ListSchedulesResult = z.infer<typeof ListSchedulesResult>;\n\nexport const ListScheduleOptions = z.object({\n page: z.number().optional(),\n perPage: z.number().optional(),\n});\n\nexport type ListScheduleOptions = z.infer<typeof ListScheduleOptions>;\n\nexport const RunStatus = z.enum([\n \"PENDING\",\n \"EXECUTING\",\n \"PAUSED\",\n \"COMPLETED\",\n \"FAILED\",\n \"CANCELED\",\n]);\n\nexport type RunStatus = z.infer<typeof RunStatus>;\n\nexport const AttemptStatus = z.enum([\n \"PENDING\",\n \"EXECUTING\",\n \"PAUSED\",\n \"COMPLETED\",\n \"FAILED\",\n \"CANCELED\",\n]);\n\nexport type AttemptStatus = z.infer<typeof AttemptStatus>;\n\nexport const RetrieveRunResponse = z.object({\n id: z.string(),\n status: RunStatus,\n taskIdentifier: z.string(),\n idempotencyKey: z.string().optional(),\n version: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n attempts: z.array(\n z\n .object({\n id: z.string(),\n status: AttemptStatus,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n startedAt: z.coerce.date().optional(),\n completedAt: z.coerce.date().optional(),\n })\n .optional()\n ),\n});\n\nexport type RetrieveRunResponse = z.infer<typeof RetrieveRunResponse>;\n","import { z } from \"zod\";\nimport { QueueOptions, RetryOptions, Machine } from \"./schemas\";\n\nexport const TaskResource = z.object({\n id: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n triggerSource: z.string().optional(),\n});\n\nexport type TaskResource = z.infer<typeof TaskResource>;\n\nexport const BackgroundWorkerMetadata = z.object({\n packageVersion: z.string(),\n contentHash: z.string(),\n cliPackageVersion: z.string().optional(),\n tasks: z.array(TaskResource),\n});\n\nexport type BackgroundWorkerMetadata = z.infer<typeof BackgroundWorkerMetadata>;\n\nexport const ImageDetailsMetadata = z.object({\n contentHash: z.string(),\n imageTag: z.string(),\n});\n\nexport type ImageDetailsMetadata = z.infer<typeof ImageDetailsMetadata>;\n","import { z } from \"zod\";\nimport { RequireKeys } from \"../types\";\nimport { TaskRunExecution } from \"./common\";\n\n/*\n WARNING: Never import anything from ./messages here. If it's needed in both, put it here instead.\n*/\n\nexport const EnvironmentType = z.enum([\"PRODUCTION\", \"STAGING\", \"DEVELOPMENT\", \"PREVIEW\"]);\nexport type EnvironmentType = z.infer<typeof EnvironmentType>;\n\nexport const MachineCpu = z\n .union([z.literal(0.25), z.literal(0.5), z.literal(1), z.literal(2), z.literal(4)])\n .default(0.5);\n\nexport type MachineCpu = z.infer<typeof MachineCpu>;\n\nexport const MachineMemory = z\n .union([z.literal(0.25), z.literal(0.5), z.literal(1), z.literal(2), z.literal(4), z.literal(8)])\n .default(1);\n\nexport type MachineMemory = z.infer<typeof MachineMemory>;\n\nexport const Machine = z.object({\n version: z.literal(\"v1\").default(\"v1\"),\n cpu: MachineCpu,\n memory: MachineMemory,\n});\n\nexport type Machine = z.infer<typeof Machine>;\n\nexport const TaskRunExecutionPayload = z.object({\n execution: TaskRunExecution,\n traceContext: z.record(z.unknown()),\n environment: z.record(z.string()).optional(),\n});\n\nexport type TaskRunExecutionPayload = z.infer<typeof TaskRunExecutionPayload>;\n\nexport const ProdTaskRunExecution = TaskRunExecution.extend({\n worker: z.object({\n id: z.string(),\n contentHash: z.string(),\n version: z.string(),\n }),\n});\n\nexport type ProdTaskRunExecution = z.infer<typeof ProdTaskRunExecution>;\n\nexport const ProdTaskRunExecutionPayload = z.object({\n execution: ProdTaskRunExecution,\n traceContext: z.record(z.unknown()),\n environment: z.record(z.string()).optional(),\n});\n\nexport type ProdTaskRunExecutionPayload = z.infer<typeof ProdTaskRunExecutionPayload>;\n\nexport const FixedWindowRateLimit = z.object({\n type: z.literal(\"fixed-window\"),\n limit: z.number(),\n window: z.union([\n z.object({\n seconds: z.number(),\n }),\n z.object({\n minutes: z.number(),\n }),\n z.object({\n hours: z.number(),\n }),\n ]),\n});\n\nexport const SlidingWindowRateLimit = z.object({\n type: z.literal(\"sliding-window\"),\n limit: z.number(),\n window: z.union([\n z.object({\n seconds: z.number(),\n }),\n z.object({\n minutes: z.number(),\n }),\n z.object({\n hours: z.number(),\n }),\n ]),\n});\n\nexport const RateLimitOptions = z.discriminatedUnion(\"type\", [\n FixedWindowRateLimit,\n SlidingWindowRateLimit,\n]);\n\nexport type RateLimitOptions = z.infer<typeof RateLimitOptions>;\n\nexport const RetryOptions = z.object({\n /** The number of attempts before giving up */\n maxAttempts: z.number().int().optional(),\n /** The exponential factor to use when calculating the next retry time.\n *\n * Each subsequent retry will be calculated as `previousTimeout * factor`\n */\n factor: z.number().optional(),\n /** The minimum time to wait before retrying */\n minTimeoutInMs: z.number().int().optional(),\n /** The maximum time to wait before retrying */\n maxTimeoutInMs: z.number().int().optional(),\n /** Randomize the timeout between retries.\n *\n * This can be useful to prevent the thundering herd problem where all retries happen at the same time.\n */\n randomize: z.boolean().optional(),\n});\n\nexport type RetryOptions = z.infer<typeof RetryOptions>;\n\nexport const QueueOptions = z.object({\n /** You can define a shared queue and then pass the name in to your task.\n * \n * @example\n * \n * ```ts\n * const myQueue = queue({\n name: \"my-queue\",\n concurrencyLimit: 1,\n });\n\n export const task1 = task({\n id: \"task-1\",\n queue: {\n name: \"my-queue\",\n },\n run: async (payload: { message: string }) => {\n // ...\n },\n });\n\n export const task2 = task({\n id: \"task-2\",\n queue: {\n name: \"my-queue\",\n },\n run: async (payload: { message: string }) => {\n // ...\n },\n });\n * ```\n */\n name: z.string().optional(),\n /** An optional property that specifies the maximum number of concurrent run executions.\n *\n * If this property is omitted, the task can potentially use up the full concurrency of an environment. */\n concurrencyLimit: z.number().int().min(0).max(1000).optional(),\n /** @deprecated This feature is coming soon */\n rateLimit: RateLimitOptions.optional(),\n});\n\nexport type QueueOptions = z.infer<typeof QueueOptions>;\n\nexport const TaskMetadata = z.object({\n id: z.string(),\n packageVersion: z.string(),\n queue: QueueOptions.optional(),\n retry: RetryOptions.optional(),\n machine: Machine.partial().optional(),\n triggerSource: z.string().optional(),\n});\n\nexport type TaskMetadata = z.infer<typeof TaskMetadata>;\n\nexport const TaskFileMetadata = z.object({\n filePath: z.string(),\n exportName: z.string(),\n});\n\nexport type TaskFileMetadata = z.infer<typeof TaskFileMetadata>;\n\nexport const TaskMetadataWithFilePath = TaskMetadata.merge(TaskFileMetadata);\n\nexport type TaskMetadataWithFilePath = z.infer<typeof TaskMetadataWithFilePath>;\n\nexport const PostStartCauses = z.enum([\"index\", \"create\", \"restore\"]);\nexport type PostStartCauses = z.infer<typeof PostStartCauses>;\n\nexport const PreStopCauses = z.enum([\"terminate\"]);\nexport type PreStopCauses = z.infer<typeof PreStopCauses>;\n\nconst RegexSchema = z.custom<RegExp>((val) => {\n try {\n // Check to see if val is a regex\n return typeof (val as RegExp).test === \"function\";\n } catch {\n return false;\n }\n});\n\nexport const Config = z.object({\n project: z.string(),\n triggerDirectories: z.string().array().optional(),\n triggerUrl: z.string().optional(),\n projectDir: z.string().optional(),\n tsconfigPath: z.string().optional(),\n retries: z\n .object({\n enabledInDev: z.boolean().default(true),\n default: RetryOptions.optional(),\n })\n .optional(),\n additionalPackages: z.string().array().optional(),\n additionalFiles: z.string().array().optional(),\n dependenciesToBundle: z.array(z.union([z.string(), RegexSchema])).optional(),\n logLevel: z.string().optional(),\n enableConsoleLogging: z.boolean().optional(),\n postInstall: z.string().optional(),\n});\n\nexport type Config = z.infer<typeof Config>;\nexport type ResolvedConfig = RequireKeys<\n Config,\n \"triggerDirectories\" | \"triggerUrl\" | \"projectDir\" | \"tsconfigPath\"\n>;\n\nexport const WaitReason = z.enum([\"WAIT_FOR_DURATION\", \"WAIT_FOR_TASK\", \"WAIT_FOR_BATCH\"]);\n\nexport type WaitReason = z.infer<typeof WaitReason>;\n","import { z } from \"zod\";\n\nexport const TaskRunBuiltInError = z.object({\n type: z.literal(\"BUILT_IN_ERROR\"),\n name: z.string(),\n message: z.string(),\n stackTrace: z.string(),\n});\n\nexport type TaskRunBuiltInError = z.infer<typeof TaskRunBuiltInError>;\n\nexport const TaskRunCustomErrorObject = z.object({\n type: z.literal(\"CUSTOM_ERROR\"),\n raw: z.string(),\n});\n\nexport type TaskRunCustomErrorObject = z.infer<typeof TaskRunCustomErrorObject>;\n\nexport const TaskRunStringError = z.object({\n type: z.literal(\"STRING_ERROR\"),\n raw: z.string(),\n});\n\nexport type TaskRunStringError = z.infer<typeof TaskRunStringError>;\n\nexport const TaskRunErrorCodes = {\n COULD_NOT_FIND_EXECUTOR: \"COULD_NOT_FIND_EXECUTOR\",\n COULD_NOT_FIND_TASK: \"COULD_NOT_FIND_TASK\",\n CONFIGURED_INCORRECTLY: \"CONFIGURED_INCORRECTLY\",\n TASK_ALREADY_RUNNING: \"TASK_ALREADY_RUNNING\",\n TASK_EXECUTION_FAILED: \"TASK_EXECUTION_FAILED\",\n TASK_EXECUTION_ABORTED: \"TASK_EXECUTION_ABORTED\",\n TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE: \"TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE\",\n TASK_RUN_CANCELLED: \"TASK_RUN_CANCELLED\",\n TASK_OUTPUT_ERROR: \"TASK_OUTPUT_ERROR\",\n HANDLE_ERROR_ERROR: \"HANDLE_ERROR_ERROR\",\n GRACEFUL_EXIT_TIMEOUT: \"GRACEFUL_EXIT_TIMEOUT\",\n} as const;\n\nexport const TaskRunInternalError = z.object({\n type: z.literal(\"INTERNAL_ERROR\"),\n code: z.enum([\n \"COULD_NOT_FIND_EXECUTOR\",\n \"COULD_NOT_FIND_TASK\",\n \"CONFIGURED_INCORRECTLY\",\n \"TASK_ALREADY_RUNNING\",\n \"TASK_EXECUTION_FAILED\",\n \"TASK_EXECUTION_ABORTED\",\n \"TASK_PROCESS_EXITED_WITH_NON_ZERO_CODE\",\n \"TASK_RUN_CANCELLED\",\n \"TASK_OUTPUT_ERROR\",\n \"HANDLE_ERROR_ERROR\",\n \"GRACEFUL_EXIT_TIMEOUT\",\n ]),\n message: z.string().optional(),\n});\n\nexport type TaskRunInternalError = z.infer<typeof TaskRunInternalError>;\n\nexport const TaskRunError = z.discriminatedUnion(\"type\", [\n TaskRunBuiltInError,\n TaskRunCustomErrorObject,\n TaskRunStringError,\n TaskRunInternalError,\n]);\n\nexport type TaskRunError = z.infer<typeof TaskRunError>;\n\nexport const TaskRun = z.object({\n id: z.string(),\n payload: z.string(),\n payloadType: z.string(),\n context: z.any(),\n tags: z.array(z.string()),\n isTest: z.boolean().default(false),\n createdAt: z.coerce.date(),\n idempotencyKey: z.string().optional(),\n});\n\nexport type TaskRun = z.infer<typeof TaskRun>;\n\nexport const TaskRunExecutionTask = z.object({\n id: z.string(),\n filePath: z.string(),\n exportName: z.string(),\n});\n\nexport type TaskRunExecutionTask = z.infer<typeof TaskRunExecutionTask>;\n\nexport const TaskRunExecutionAttempt = z.object({\n id: z.string(),\n number: z.number(),\n startedAt: z.coerce.date(),\n backgroundWorkerId: z.string(),\n backgroundWorkerTaskId: z.string(),\n status: z.string(),\n});\n\nexport type TaskRunExecutionAttempt = z.infer<typeof TaskRunExecutionAttempt>;\n\nexport const TaskRunExecutionEnvironment = z.object({\n id: z.string(),\n slug: z.string(),\n type: z.enum([\"PRODUCTION\", \"STAGING\", \"DEVELOPMENT\", \"PREVIEW\"]),\n});\n\nexport type TaskRunExecutionEnvironment = z.infer<typeof TaskRunExecutionEnvironment>;\n\nexport const TaskRunExecutionOrganization = z.object({\n id: z.string(),\n slug: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionOrganization = z.infer<typeof TaskRunExecutionOrganization>;\n\nexport const TaskRunExecutionProject = z.object({\n id: z.string(),\n ref: z.string(),\n slug: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionProject = z.infer<typeof TaskRunExecutionProject>;\n\nexport const TaskRunExecutionQueue = z.object({\n id: z.string(),\n name: z.string(),\n});\n\nexport type TaskRunExecutionQueue = z.infer<typeof TaskRunExecutionQueue>;\n\nexport const TaskRunExecutionBatch = z.object({\n id: z.string(),\n});\n\nexport const TaskRunExecution = z.object({\n task: TaskRunExecutionTask,\n attempt: TaskRunExecutionAttempt,\n run: TaskRun,\n queue: TaskRunExecutionQueue,\n environment: TaskRunExecutionEnvironment,\n organization: TaskRunExecutionOrganization,\n project: TaskRunExecutionProject,\n batch: TaskRunExecutionBatch.optional(),\n});\n\nexport type TaskRunExecution = z.infer<typeof TaskRunExecution>;\n\nexport const TaskRunContext = z.object({\n task: TaskRunExecutionTask,\n attempt: TaskRunExecutionAttempt.omit({\n backgroundWorkerId: true,\n backgroundWorkerTaskId: true,\n }),\n run: TaskRun.omit({ payload: true, payloadType: true }),\n queue: TaskRunExecutionQueue,\n environment: TaskRunExecutionEnvironment,\n organization: TaskRunExecutionOrganization,\n project: TaskRunExecutionProject,\n batch: TaskRunExecutionBatch.optional(),\n});\n\nexport type TaskRunContext = z.infer<typeof TaskRunContext>;\n\nexport const TaskRunExecutionRetry = z.object({\n timestamp: z.number(),\n delay: z.number(),\n error: z.unknown().optional(),\n});\n\nexport type TaskRunExecutionRetry = z.infer<typeof TaskRunExecutionRetry>;\n\nexport const TaskRunFailedExecutionResult = z.object({\n ok: z.literal(false),\n id: z.string(),\n error: TaskRunError,\n retry: TaskRunExecutionRetry.optional(),\n skippedRetrying: z.boolean().optional(),\n});\n\nexport type TaskRunFailedExecutionResult = z.infer<typeof TaskRunFailedExecutionResult>;\n\nexport const TaskRunSuccessfulExecutionResult = z.object({\n ok: z.literal(true),\n id: z.string(),\n output: z.string().optional(),\n outputType: z.string(),\n});\n\nexport type TaskRunSuccessfulExecutionResult = z.infer<typeof TaskRunSuccessfulExecutionResult>;\n\nexport const TaskRunExecutionResult = z.discriminatedUnion(\"ok\", [\n TaskRunSuccessfulExecutionResult,\n TaskRunFailedExecutionResult,\n]);\n\nexport type TaskRunExecutionResult = z.infer<typeof TaskRunExecutionResult>;\n\nexport const BatchTaskRunExecutionResult = z.object({\n id: z.string(),\n items: TaskRunExecutionResult.array(),\n});\n\nexport type BatchTaskRunExecutionResult = z.infer<typeof BatchTaskRunExecutionResult>;\n","import { context, propagation } from \"@opentelemetry/api\";\nimport { ZodFetchOptions, zodfetch } from \"../zodfetch\";\nimport {\n BatchTaskRunExecutionResult,\n BatchTriggerTaskRequestBody,\n BatchTriggerTaskResponse,\n CanceledRunResponse,\n CreateScheduleOptions,\n CreateUploadPayloadUrlResponseBody,\n DeletedScheduleObject,\n ListScheduleOptions,\n ListSchedulesResult,\n ReplayRunResponse,\n RetrieveRunResponse,\n ScheduleObject,\n TaskRunExecutionResult,\n TriggerTaskRequestBody,\n TriggerTaskResponse,\n UpdateScheduleOptions,\n} from \"../schemas\";\nimport { taskContext } from \"../task-context-api\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport { SafeAsyncLocalStorage } from \"../utils/safeAsyncLocalStorage\";\nimport { APIError } from \"../apiErrors\";\nimport { version } from \"../../../package.json\";\n\nexport type TriggerOptions = {\n spanParentAsLink?: boolean;\n};\n\nconst zodFetchOptions: ZodFetchOptions = {\n retry: {\n maxAttempts: 3,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 30_000,\n factor: 2,\n randomize: false,\n },\n};\n\n/**\n * Trigger.dev v3 API client\n */\nexport class ApiClient {\n private readonly baseUrl: string;\n\n constructor(\n baseUrl: string,\n private readonly accessToken: string\n ) {\n this.baseUrl = baseUrl.replace(/\\/$/, \"\");\n }\n\n async getRunResult(runId: string): Promise<TaskRunExecutionResult | undefined> {\n try {\n return await zodfetch(\n TaskRunExecutionResult,\n `${this.baseUrl}/api/v1/runs/${runId}/result`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n } catch (error) {\n if (error instanceof APIError) {\n if (error.status === 404) {\n return undefined;\n }\n }\n\n throw error;\n }\n }\n\n async getBatchResults(batchId: string): Promise<BatchTaskRunExecutionResult | undefined> {\n return await zodfetch(\n BatchTaskRunExecutionResult,\n `${this.baseUrl}/api/v1/batches/${batchId}/results`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n triggerTask(taskId: string, body: TriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(\n TriggerTaskResponse,\n `${this.baseUrl}/api/v1/tasks/${taskId}/trigger`,\n {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\n },\n zodFetchOptions\n );\n }\n\n batchTriggerTask(taskId: string, body: BatchTriggerTaskRequestBody, options?: TriggerOptions) {\n return zodfetch(\n BatchTriggerTaskResponse,\n `${this.baseUrl}/api/v1/tasks/${taskId}/batch`,\n {\n method: \"POST\",\n headers: this.#getHeaders(options?.spanParentAsLink ?? false),\n body: JSON.stringify(body),\n },\n zodFetchOptions\n );\n }\n\n createUploadPayloadUrl(filename: string) {\n return zodfetch(\n CreateUploadPayloadUrlResponseBody,\n `${this.baseUrl}/api/v1/packets/${filename}`,\n {\n method: \"PUT\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n getPayloadUrl(filename: string) {\n return zodfetch(\n CreateUploadPayloadUrlResponseBody,\n `${this.baseUrl}/api/v1/packets/${filename}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n retrieveRun(runId: string) {\n return zodfetch(\n RetrieveRunResponse,\n `${this.baseUrl}/api/v3/runs/${runId}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n replayRun(runId: string) {\n return zodfetch(\n ReplayRunResponse,\n `${this.baseUrl}/api/v1/runs/${runId}/replay`,\n {\n method: \"POST\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n cancelRun(runId: string) {\n return zodfetch(\n CanceledRunResponse,\n `${this.baseUrl}/api/v2/runs/${runId}/cancel`,\n {\n method: \"POST\",\n headers: this.#getHeaders(false),\n },\n zodFetchOptions\n );\n }\n\n createSchedule(options: CreateScheduleOptions) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n body: JSON.stringify(options),\n });\n }\n\n listSchedules(options?: ListScheduleOptions) {\n const searchParams = new URLSearchParams();\n\n if (options?.page) {\n searchParams.append(\"page\", options.page.toString());\n }\n\n if (options?.perPage) {\n searchParams.append(\"perPage\", options.perPage.toString());\n }\n\n return zodfetch(\n ListSchedulesResult,\n `${this.baseUrl}/api/v1/schedules${searchParams.size > 0 ? `?${searchParams}` : \"\"}`,\n {\n method: \"GET\",\n headers: this.#getHeaders(false),\n }\n );\n }\n\n retrieveSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"GET\",\n headers: this.#getHeaders(false),\n });\n }\n\n updateSchedule(scheduleId: string, options: UpdateScheduleOptions) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"PUT\",\n headers: this.#getHeaders(false),\n body: JSON.stringify(options),\n });\n }\n\n deactivateSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}/deactivate`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n });\n }\n\n activateSchedule(scheduleId: string) {\n return zodfetch(ScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}/activate`, {\n method: \"POST\",\n headers: this.#getHeaders(false),\n });\n }\n\n deleteSchedule(scheduleId: string) {\n return zodfetch(DeletedScheduleObject, `${this.baseUrl}/api/v1/schedules/${scheduleId}`, {\n method: \"DELETE\",\n headers: this.#getHeaders(false),\n });\n }\n\n #getHeaders(spanParentAsLink: boolean) {\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.accessToken}`,\n \"trigger-version\": version,\n };\n\n // Only inject the context if we are inside a task\n if (taskContext.isInsideTask) {\n headers[\"x-trigger-worker\"] = \"true\";\n propagation.inject(context.active(), headers);\n\n if (spanParentAsLink) {\n headers[\"x-trigger-span-parent-as-link\"] = \"1\";\n }\n }\n\n return headers;\n }\n}\n","import { z } from \"zod\";\nimport { fromZodError } from \"zod-validation-error\";\nimport { APIConnectionError, APIError } from \"./apiErrors\";\nimport { RetryOptions } from \"./schemas\";\nimport { calculateNextRetryDelay } from \"./utils/retries\";\n\nexport const defaultRetryOptions = {\n maxAttempts: 3,\n factor: 2,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: false,\n} satisfies RetryOptions;\n\nexport type ZodFetchOptions = {\n retry?: RetryOptions;\n};\n\nexport async function zodfetch<TResponseBody extends any>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: ZodFetchOptions\n): Promise<TResponseBody> {\n return await _doZodFetch(schema, url, requestInit, options);\n}\n\nasync function _doZodFetch<TResponseBody extends any>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: ZodFetchOptions,\n attempt = 1\n): Promise<TResponseBody> {\n try {\n const response = await fetch(url, requestInitWithCache(requestInit));\n\n const responseHeaders = createResponseHeaders(response.headers);\n\n if (!response.ok) {\n const retryResult = shouldRetry(response, attempt, options?.retry);\n\n if (retryResult.retry) {\n await new Promise((resolve) => setTimeout(resolve, retryResult.delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n } else {\n const errText = await response.text().catch((e) => castToError(e).message);\n const errJSON = safeJsonParse(errText);\n const errMessage = errJSON ? undefined : errText;\n\n throw APIError.generate(response.status, errJSON, errMessage, responseHeaders);\n }\n }\n\n const jsonBody = await response.json();\n const parsedResult = schema.safeParse(jsonBody);\n\n if (parsedResult.success) {\n return parsedResult.data;\n }\n\n throw fromZodError(parsedResult.error);\n } catch (error) {\n if (error instanceof APIError) {\n throw error;\n }\n\n if (options?.retry) {\n const retry = { ...defaultRetryOptions, ...options.retry };\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n if (delay) {\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n return await _doZodFetch(schema, url, requestInit, options, attempt + 1);\n }\n }\n\n throw new APIConnectionError({ cause: castToError(error) });\n }\n}\n\nfunction castToError(err: any): Error {\n if (err instanceof Error) return err;\n return new Error(err);\n}\n\ntype ShouldRetryResult =\n | {\n retry: false;\n }\n | {\n retry: true;\n delay: number;\n };\n\nfunction shouldRetry(\n response: Response,\n attempt: number,\n retryOptions?: RetryOptions\n): ShouldRetryResult {\n function shouldRetryForOptions(): ShouldRetryResult {\n const retry = { ...defaultRetryOptions, ...retryOptions };\n\n const delay = calculateNextRetryDelay(retry, attempt);\n\n if (delay) {\n return { retry: true, delay };\n } else {\n return { retry: false };\n }\n }\n\n // Note this is not a standard header.\n const shouldRetryHeader = response.headers.get(\"x-should-retry\");\n\n // If the server explicitly says whether or not to retry, obey.\n if (shouldRetryHeader === \"true\") return shouldRetryForOptions();\n if (shouldRetryHeader === \"false\") return { retry: false };\n\n // Retry on request timeouts.\n if (response.status === 408) return shouldRetryForOptions();\n\n // Retry on lock timeouts.\n if (response.status === 409) return shouldRetryForOptions();\n\n // Retry on rate limits.\n if (response.status === 429) return shouldRetryForOptions();\n\n // Retry internal errors.\n if (response.status >= 500) return shouldRetryForOptions();\n\n return { retry: false };\n}\n\nfunction safeJsonParse(text: string): any {\n try {\n return JSON.parse(text);\n } catch (e) {\n return undefined;\n }\n}\n\nfunction createResponseHeaders(headers: Response[\"headers\"]): Record<string, string> {\n return new Proxy(\n Object.fromEntries(\n // @ts-ignore\n headers.entries()\n ),\n {\n get(target, name) {\n const key = name.toString();\n return target[key.toLowerCase()] || target[key];\n },\n }\n );\n}\n\nfunction requestInitWithCache(requestInit?: RequestInit): RequestInit {\n try {\n const withCache: RequestInit = {\n ...requestInit,\n cache: \"no-cache\",\n };\n\n const _ = new Request(\"http://localhost\", withCache);\n\n return withCache;\n } catch (error) {\n return requestInit ?? {};\n }\n}\n","export type APIHeaders = Record<string, string | null | undefined>;\n\nexport class APIError extends Error {\n readonly status: number | undefined;\n readonly headers: APIHeaders | undefined;\n readonly error: Object | undefined;\n\n readonly code: string | null | undefined;\n readonly param: string | null | undefined;\n readonly type: string | undefined;\n\n constructor(\n status: number | undefined,\n error: Object | undefined,\n message: string | undefined,\n headers: APIHeaders | undefined\n ) {\n super(`${APIError.makeMessage(status, error, message)}`);\n this.status = status;\n this.headers = headers;\n\n const data = error as Record<string, any>;\n this.error = data;\n this.code = data?.[\"code\"];\n this.param = data?.[\"param\"];\n this.type = data?.[\"type\"];\n }\n\n private static makeMessage(status: number | undefined, error: any, message: string | undefined) {\n const msg = error?.message\n ? typeof error.message === \"string\"\n ? error.message\n : JSON.stringify(error.message)\n : error\n ? JSON.stringify(error)\n : message;\n\n if (status && msg) {\n return `${status} ${msg}`;\n }\n if (status) {\n return `${status} status code (no body)`;\n }\n if (msg) {\n return msg;\n }\n return \"(no status code or body)\";\n }\n\n static generate(\n status: number | undefined,\n errorResponse: Object | undefined,\n message: string | undefined,\n headers: APIHeaders | undefined\n ) {\n if (!status) {\n return new APIConnectionError({ cause: castToError(errorResponse) });\n }\n\n const error = (errorResponse as Record<string, any>)?.[\"error\"];\n\n if (status === 400) {\n return new BadRequestError(status, error, message, headers);\n }\n\n if (status === 401) {\n return new AuthenticationError(status, error, message, headers);\n }\n\n if (status === 403) {\n return new PermissionDeniedError(status, error, message, headers);\n }\n\n if (status === 404) {\n return new NotFoundError(status, error, message, headers);\n }\n\n if (status === 409) {\n return new ConflictError(status, error, message, headers);\n }\n\n if (status === 422) {\n return new UnprocessableEntityError(status, error, message, headers);\n }\n\n if (status === 429) {\n return new RateLimitError(status, error, message, headers);\n }\n\n if (status >= 500) {\n return new InternalServerError(status, error, message, headers);\n }\n\n return new APIError(status, error, message, headers);\n }\n}\n\nexport class APIConnectionError extends APIError {\n override readonly status: undefined = undefined;\n\n constructor({ message, cause }: { message?: string; cause?: Error | undefined }) {\n super(undefined, undefined, message || \"Connection error.\", undefined);\n // in some environments the 'cause' property is already declared\n // @ts-ignore\n if (cause) this.cause = cause;\n }\n}\n\nexport class BadRequestError extends APIError {\n override readonly status: 400 = 400;\n}\n\nexport class AuthenticationError extends APIError {\n override readonly status: 401 = 401;\n}\n\nexport class PermissionDeniedError extends APIError {\n override readonly status: 403 = 403;\n}\n\nexport class NotFoundError extends APIError {\n override readonly status: 404 = 404;\n}\n\nexport class ConflictError extends APIError {\n override readonly status: 409 = 409;\n}\n\nexport class UnprocessableEntityError extends APIError {\n override readonly status: 422 = 422;\n}\n\nexport class RateLimitError extends APIError {\n override readonly status: 429 = 429;\n}\n\nexport class InternalServerError extends APIError {}\n\nfunction castToError(err: any): Error {\n if (err instanceof Error) return err;\n return new Error(err);\n}\n","import { calculateResetAt as calculateResetAtInternal } from \"../../retry\";\nimport { FetchRetryOptions, type RetryOptions } from \"../schemas\";\n\nexport const defaultRetryOptions = {\n maxAttempts: 3,\n factor: 2,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport const defaultFetchRetryOptions = {\n byStatus: {\n \"429,408,409,5xx\": {\n strategy: \"backoff\",\n ...defaultRetryOptions,\n },\n },\n connectionError: defaultRetryOptions,\n timeout: defaultRetryOptions,\n} satisfies FetchRetryOptions;\n\n/**\n *\n * @param options\n * @param attempt - The current attempt number. If the first attempt has failed, this will be 1.\n * @returns\n */\nexport function calculateNextRetryDelay(options: RetryOptions, attempt: number) {\n const opts = { ...defaultRetryOptions, ...options };\n\n if (attempt >= opts.maxAttempts) {\n return;\n }\n\n const { factor, minTimeoutInMs, maxTimeoutInMs, randomize } = opts;\n\n const random = randomize ? Math.random() + 1 : 1;\n\n const timeout = Math.min(maxTimeoutInMs, random * minTimeoutInMs * Math.pow(factor, attempt - 1));\n\n // Round to the nearest integer\n return Math.round(timeout);\n}\n\nexport function calculateResetAt(\n resets: string | undefined | null,\n format:\n | \"unix_timestamp\"\n | \"iso_8601\"\n | \"iso_8601_duration_openai_variant\"\n | \"unix_timestamp_in_ms\",\n now: number = Date.now()\n): number | undefined {\n const resetAt = calculateResetAtInternal(resets, format, new Date(now));\n\n return resetAt?.getTime();\n}\n","{\n \"name\": \"@trigger.dev/core\",\n \"version\": \"3.0.0-beta.33\",\n \"description\": \"Core code used across the Trigger.dev SDK and platform\",\n \"license\": \"MIT\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"module\": \"./dist/index.mjs\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"files\": [\n \"dist\"\n ],\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.mts\",\n \"default\": \"./dist/index.mjs\"\n },\n \"require\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\"\n },\n \"./v3\": {\n \"import\": {\n \"types\": \"./dist/v3/index.d.mts\",\n \"default\": \"./dist/v3/index.mjs\"\n },\n \"require\": \"./dist/v3/index.js\",\n \"types\": \"./dist/v3/index.d.ts\"\n },\n \"./v3/otel\": {\n \"import\": {\n \"types\": \"./dist/v3/otel/index.d.mts\",\n \"default\": \"./dist/v3/otel/index.mjs\"\n },\n \"require\": \"./dist/v3/otel/index.js\",\n \"types\": \"./dist/v3/otel/index.d.ts\"\n },\n \"./v3/zodMessageHandler\": {\n \"import\": {\n \"types\": \"./dist/v3/zodMessageHandler.d.mts\",\n \"default\": \"./dist/v3/zodMessageHandler.mjs\"\n },\n \"require\": \"./dist/v3/zodMessageHandler.js\",\n \"types\": \"./dist/v3/zodMessageHandler.d.ts\"\n },\n \"./v3/zodNamespace\": {\n \"import\": {\n \"types\": \"./dist/v3/zodNamespace.d.mts\",\n \"default\": \"./dist/v3/zodNamespace.mjs\"\n },\n \"require\": \"./dist/v3/zodNamespace.js\",\n \"types\": \"./dist/v3/zodNamespace.d.ts\"\n },\n \"./v3/zodSocket\": {\n \"import\": {\n \"types\": \"./dist/v3/zodSocket.d.mts\",\n \"default\": \"./dist/v3/zodSocket.mjs\"\n },\n \"require\": \"./dist/v3/zodSocket.js\",\n \"types\": \"./dist/v3/zodSocket.d.ts\"\n },\n \"./v3/zodIpc\": {\n \"import\": {\n \"types\": \"./dist/v3/zodIpc.d.mts\",\n \"default\": \"./dist/v3/zodIpc.mjs\"\n },\n \"require\": \"./dist/v3/zodIpc.js\",\n \"types\": \"./dist/v3/zodIpc.d.ts\"\n },\n \"./v3/utils/structuredLogger\": {\n \"import\": {\n \"types\": \"./dist/v3/utils/structuredLogger.d.mts\",\n \"default\": \"./dist/v3/utils/structuredLogger.mjs\"\n },\n \"require\": \"./dist/v3/utils/structuredLogger.js\",\n \"types\": \"./dist/v3/utils/structuredLogger.d.ts\"\n },\n \"./v3/dev\": {\n \"import\": {\n \"types\": \"./dist/v3/dev/index.d.mts\",\n \"default\": \"./dist/v3/dev/index.mjs\"\n },\n \"require\": \"./dist/v3/dev/index.js\",\n \"types\": \"./dist/v3/dev/index.d.ts\"\n },\n \"./v3/prod\": {\n \"import\": {\n \"types\": \"./dist/v3/prod/index.d.mts\",\n \"default\": \"./dist/v3/prod/index.mjs\"\n },\n \"require\": \"./dist/v3/prod/index.js\",\n \"types\": \"./dist/v3/prod/index.d.ts\"\n },\n \"./v3/workers\": {\n \"import\": {\n \"types\": \"./dist/v3/workers/index.d.mts\",\n \"default\": \"./dist/v3/workers/index.mjs\"\n },\n \"require\": \"./dist/v3/workers/index.js\",\n \"types\": \"./dist/v3/workers/index.d.ts\"\n },\n \"./package.json\": \"./package.json\"\n },\n \"typesVersions\": {\n \"*\": {\n \"v3\": [\n \"./dist/v3/index.d.ts\"\n ],\n \"v3/otel\": [\n \"./dist/v3/otel/index.d.ts\"\n ]\n }\n },\n \"sideEffects\": false,\n \"scripts\": {\n \"clean\": \"rimraf dist\",\n \"build\": \"npm run clean && npm run build:tsup\",\n \"build:tsup\": \"tsup --dts-resolve\",\n \"typecheck\": \"tsc --noEmit\",\n \"test\": \"jest\"\n },\n \"dependencies\": {\n \"@google-cloud/precise-date\": \"^4.0.0\",\n \"@opentelemetry/api\": \"^1.8.0\",\n \"@opentelemetry/api-logs\": \"^0.48.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"^0.49.1\",\n \"@opentelemetry/instrumentation\": \"^0.49.1\",\n \"@opentelemetry/resources\": \"^1.22.0\",\n \"@opentelemetry/sdk-logs\": \"^0.49.1\",\n \"@opentelemetry/sdk-node\": \"^0.49.1\",\n \"@opentelemetry/sdk-trace-base\": \"^1.22.0\",\n \"@opentelemetry/sdk-trace-node\": \"^1.22.0\",\n \"@opentelemetry/semantic-conventions\": \"^1.22.0\",\n \"humanize-duration\": \"^3.27.3\",\n \"superjson\": \"^2.2.1\",\n \"ulidx\": \"^2.2.1\",\n \"zod\": \"3.22.3\",\n \"zod-error\": \"1.5.0\",\n \"zod-validation-error\": \"^1.5.0\",\n \"socket.io-client\": \"4.7.4\"\n },\n \"devDependencies\": {\n \"@trigger.dev/tsconfig\": \"workspace:*\",\n \"@trigger.dev/tsup\": \"workspace:*\",\n \"@types/humanize-duration\": \"^3.27.1\",\n \"@types/jest\": \"^29.5.3\",\n \"@types/node\": \"20.12.7\",\n \"jest\": \"^29.6.2\",\n \"rimraf\": \"^3.0.2\",\n \"ts-jest\": \"^29.1.1\",\n \"tsup\": \"^8.0.1\",\n \"typescript\": \"^5.3.0\",\n \"socket.io\": \"4.7.4\"\n },\n \"engines\": {\n \"node\": \">=18.0.0\"\n }\n}","import { ApiClient } from \"../apiClient\";\nimport { getGlobal, registerGlobal, unregisterGlobal } from \"../utils/globals\";\nimport { getEnvVar } from \"../utils/getEnv\";\nimport { ApiClientConfiguration } from \"./types\";\n\nconst API_NAME = \"api-client\";\n\nexport class APIClientManagerAPI {\n private static _instance?: APIClientManagerAPI;\n\n private constructor() {}\n\n public static getInstance(): APIClientManagerAPI {\n if (!this._instance) {\n this._instance = new APIClientManagerAPI();\n }\n\n return this._instance;\n }\n\n public disable() {\n unregisterGlobal(API_NAME);\n }\n\n public setGlobalAPIClientConfiguration(config: ApiClientConfiguration): boolean {\n return registerGlobal(API_NAME, config);\n }\n\n get baseURL(): string | undefined {\n const store = this.#getConfig();\n return store?.baseURL ?? getEnvVar(\"TRIGGER_API_URL\") ?? \"https://api.trigger.dev\";\n }\n\n get accessToken(): string | undefined {\n const store = this.#getConfig();\n return store?.secretKey ?? getEnvVar(\"TRIGGER_SECRET_KEY\");\n }\n\n get client(): ApiClient | undefined {\n if (!this.baseURL || !this.accessToken) {\n return undefined;\n }\n\n return new ApiClient(this.baseURL, this.accessToken);\n }\n\n #getConfig(): ApiClientConfiguration | undefined {\n return getGlobal(API_NAME);\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { APIClientManagerAPI } from \"./apiClientManager\";\n/** Entrypoint for logger API */\nexport const apiClientManager = APIClientManagerAPI.getInstance();\n\nexport type { ApiClientConfiguration } from \"./apiClientManager/types\";\n","import { Attributes, Span } from \"@opentelemetry/api\";\nimport { OFFLOAD_IO_PACKET_LENGTH_LIMIT, imposeAttributeLimits } from \"../limits\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"./flattenAttributes\";\nimport { apiClientManager } from \"../apiClientManager-api\";\n\nexport type IOPacket = {\n data?: string | undefined;\n dataType: string;\n};\n\nexport async function parsePacket(value: IOPacket): Promise<any> {\n if (!value.data) {\n return undefined;\n }\n\n switch (value.dataType) {\n case \"application/json\":\n return JSON.parse(value.data);\n case \"application/super+json\":\n const { parse } = await loadSuperJSON();\n\n return parse(value.data);\n case \"text/plain\":\n return value.data;\n case \"application/store\":\n throw new Error(\n `Cannot parse an application/store packet (${value.data}). Needs to be imported first.`\n );\n default:\n return value.data;\n }\n}\n\nexport async function stringifyIO(value: any): Promise<IOPacket> {\n if (value === undefined) {\n return { dataType: \"application/json\" };\n }\n\n if (typeof value === \"string\") {\n return { data: value, dataType: \"text/plain\" };\n }\n\n try {\n const { stringify } = await loadSuperJSON();\n const data = stringify(value);\n\n return { data, dataType: \"application/super+json\" };\n } catch {\n return { data: value, dataType: \"application/json\" };\n }\n}\n\nexport async function conditionallyExportPacket(\n packet: IOPacket,\n pathPrefix: string,\n tracer?: TriggerTracer\n): Promise<IOPacket> {\n if (apiClientManager.client) {\n const { needsOffloading, size } = packetRequiresOffloading(packet);\n\n if (needsOffloading) {\n if (!tracer) {\n return await exportPacket(packet, pathPrefix);\n } else {\n const result = await tracer.startActiveSpan(\n \"store.uploadOutput\",\n async (span) => {\n return await exportPacket(packet, pathPrefix);\n },\n {\n attributes: {\n byteLength: size,\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-upload\",\n },\n }\n );\n\n return result ?? packet;\n }\n }\n }\n\n return packet;\n}\n\nexport function packetRequiresOffloading(packet: IOPacket): {\n needsOffloading: boolean;\n size: number;\n} {\n if (!packet.data) {\n return {\n needsOffloading: false,\n size: 0,\n };\n }\n\n const byteSize = Buffer.byteLength(packet.data, \"utf8\");\n\n return {\n needsOffloading: byteSize >= OFFLOAD_IO_PACKET_LENGTH_LIMIT,\n size: byteSize,\n };\n}\n\nasync function exportPacket(packet: IOPacket, pathPrefix: string): Promise<IOPacket> {\n // Offload the output\n const filename = `${pathPrefix}.${getPacketExtension(packet.dataType)}`;\n\n const presignedResponse = await apiClientManager.client!.createUploadPayloadUrl(filename);\n\n const uploadResponse = await fetch(presignedResponse.presignedUrl, {\n method: \"PUT\",\n headers: {\n \"Content-Type\": packet.dataType,\n },\n body: packet.data,\n });\n\n if (!uploadResponse.ok) {\n throw new Error(\n `Failed to upload output to ${presignedResponse.presignedUrl}: ${uploadResponse.statusText}`\n );\n }\n\n return {\n data: filename,\n dataType: \"application/store\",\n };\n\n return packet;\n}\n\nexport async function conditionallyImportPacket(\n packet: IOPacket,\n tracer?: TriggerTracer\n): Promise<IOPacket> {\n if (packet.dataType !== \"application/store\") {\n return packet;\n }\n\n if (!tracer) {\n return await importPacket(packet);\n } else {\n const result = await tracer.startActiveSpan(\n \"store.downloadPayload\",\n async (span) => {\n return await importPacket(packet, span);\n },\n {\n attributes: {\n [SemanticInternalAttributes.STYLE_ICON]: \"cloud-download\",\n },\n }\n );\n\n return result ?? packet;\n }\n}\n\nasync function importPacket(packet: IOPacket, span?: Span): Promise<IOPacket> {\n if (!packet.data) {\n return packet;\n }\n\n if (!apiClientManager.client) {\n return packet;\n }\n\n const presignedResponse = await apiClientManager.client.getPayloadUrl(packet.data);\n\n const response = await fetch(presignedResponse.presignedUrl);\n\n if (!response.ok) {\n throw new Error(\n `Failed to import packet ${presignedResponse.presignedUrl}: ${response.statusText}`\n );\n }\n\n const data = await response.text();\n\n span?.setAttribute(\"size\", Buffer.byteLength(data, \"utf8\"));\n\n return {\n data,\n dataType: response.headers.get(\"content-type\") ?? \"application/json\",\n };\n\n return packet;\n}\n\nexport async function createPacketAttributes(\n packet: IOPacket,\n dataKey: string,\n dataTypeKey: string\n): Promise<Attributes | undefined> {\n if (!packet.data) {\n return;\n }\n\n switch (packet.dataType) {\n case \"application/json\":\n return {\n ...flattenAttributes(packet, dataKey),\n [dataTypeKey]: packet.dataType,\n };\n case \"application/super+json\":\n const { parse } = await loadSuperJSON();\n\n if (typeof packet.data === \"undefined\" || packet.data === null) {\n return;\n }\n\n try {\n const parsed = parse(packet.data) as any;\n const jsonified = JSON.parse(JSON.stringify(parsed, safeReplacer));\n\n const result = {\n ...flattenAttributes(jsonified, dataKey),\n [dataTypeKey]: \"application/json\",\n };\n\n return result;\n } catch (e) {\n return;\n }\n\n case \"application/store\":\n return {\n [dataKey]: packet.data,\n [dataTypeKey]: packet.dataType,\n };\n case \"text/plain\":\n return {\n [dataKey]: packet.data,\n [dataTypeKey]: packet.dataType,\n };\n default:\n return;\n }\n}\n\nexport async function createPacketAttributesAsJson(\n data: any,\n dataType: string\n): Promise<Attributes> {\n if (\n typeof data === \"string\" ||\n typeof data === \"number\" ||\n typeof data === \"boolean\" ||\n data === null ||\n data === undefined\n ) {\n return data;\n }\n\n switch (dataType) {\n case \"application/json\":\n return imposeAttributeLimits(flattenAttributes(data, undefined));\n case \"application/super+json\":\n const { deserialize } = await loadSuperJSON();\n\n const deserialized = deserialize(data) as any;\n const jsonify = safeJsonParse(JSON.stringify(deserialized, safeReplacer));\n\n return imposeAttributeLimits(flattenAttributes(jsonify, undefined));\n case \"application/store\":\n return data;\n default:\n return {};\n }\n}\n\nexport async function prettyPrintPacket(rawData: any, dataType?: string): Promise<string> {\n if (rawData === undefined) {\n return \"\";\n }\n\n if (dataType === \"application/super+json\") {\n if (typeof rawData === \"string\") {\n rawData = safeJsonParse(rawData);\n }\n const { deserialize } = await loadSuperJSON();\n\n return await prettyPrintPacket(deserialize(rawData), \"application/json\");\n }\n\n if (dataType === \"application/json\") {\n if (typeof rawData === \"string\") {\n rawData = safeJsonParse(rawData);\n }\n return JSON.stringify(rawData, safeReplacer, 2);\n }\n\n if (typeof rawData === \"string\") {\n return rawData;\n }\n\n return JSON.stringify(rawData, safeReplacer, 2);\n}\n\nfunction safeReplacer(key: string, value: any) {\n // If it is a BigInt\n if (typeof value === \"bigint\") {\n return value.toString(); // Convert to string\n }\n\n // if it is a Regex\n if (value instanceof RegExp) {\n return value.toString(); // Convert to string\n }\n\n // if it is a Set\n if (value instanceof Set) {\n return Array.from(value); // Convert to array\n }\n\n // if it is a Map, convert it to an object\n if (value instanceof Map) {\n const obj: Record<string, any> = {};\n value.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n }\n\n return value; // Otherwise return the value as is\n}\n\nfunction getPacketExtension(outputType: string): string {\n switch (outputType) {\n case \"application/json\":\n return \"json\";\n case \"application/super+json\":\n return \"json\";\n case \"text/plain\":\n return \"txt\";\n default:\n return \"txt\";\n }\n}\n\nasync function loadSuperJSON(): Promise<typeof import(\"superjson\")> {\n return await import(\"superjson\");\n}\n\nfunction safeJsonParse(value: string): any {\n try {\n return JSON.parse(value);\n } catch {\n return;\n }\n}\n","import { Attributes } from \"@opentelemetry/api\";\nimport { Accessory } from \"../schemas\";\nimport { flattenAttributes } from \"./flattenAttributes\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\n\nexport function accessoryAttributes(accessory: Accessory): Attributes {\n return flattenAttributes(accessory, SemanticInternalAttributes.STYLE_ACCESSORY);\n}\n","import { PreciseDate } from \"@google-cloud/precise-date\";\nimport { Clock, ClockTime } from \"./clock\";\n\nexport type PreciseWallClockOptions = {\n origin?: ClockTime;\n now?: PreciseDate;\n};\n\nexport class PreciseWallClock implements Clock {\n private _origin: {\n clockTime: ClockTime;\n preciseDate: PreciseDate;\n };\n\n get #originClockTime() {\n return this._origin.clockTime;\n }\n\n get #originPreciseDate() {\n return this._origin.preciseDate;\n }\n\n constructor(options: PreciseWallClockOptions = {}) {\n this._origin = {\n clockTime: options.origin ?? process.hrtime(),\n preciseDate: options.now ?? new PreciseDate(),\n };\n }\n\n preciseNow(): [number, number] {\n const elapsedHrTime = process.hrtime(this.#originClockTime);\n const elapsedNanoseconds = BigInt(elapsedHrTime[0]) * BigInt(1e9) + BigInt(elapsedHrTime[1]);\n\n const preciseDate = new PreciseDate(this.#originPreciseDate.getFullTime() + elapsedNanoseconds);\n const dateStruct = preciseDate.toStruct();\n\n return [dateStruct.seconds, dateStruct.nanos];\n }\n\n reset() {\n this._origin = {\n clockTime: process.hrtime(),\n preciseDate: new PreciseDate(),\n };\n }\n}\n","import { Attributes, Span, SpanOptions } from \"@opentelemetry/api\";\nimport { Logger, SeverityNumber } from \"@opentelemetry/api-logs\";\nimport { iconStringForSeverity } from \"../icons\";\nimport { SemanticInternalAttributes } from \"../semanticInternalAttributes\";\nimport { TriggerTracer } from \"../tracer\";\nimport { flattenAttributes } from \"../utils/flattenAttributes\";\nimport { ClockTime } from \"../clock/clock\";\nimport { clock } from \"../clock-api\";\n\nexport type LogLevel = \"none\" | \"error\" | \"warn\" | \"info\" | \"debug\" | \"log\";\n\nexport const logLevels: Array<LogLevel> = [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\nexport type TaskLoggerConfig = {\n logger: Logger;\n tracer: TriggerTracer;\n level: LogLevel;\n};\n\nexport interface TaskLogger {\n debug(message: string, properties?: Record<string, unknown>): void;\n log(message: string, properties?: Record<string, unknown>): void;\n info(message: string, properties?: Record<string, unknown>): void;\n warn(message: string, properties?: Record<string, unknown>): void;\n error(message: string, properties?: Record<string, unknown>): void;\n trace<T>(name: string, fn: (span: Span) => Promise<T>, options?: SpanOptions): Promise<T>;\n}\n\nexport class OtelTaskLogger implements TaskLogger {\n private readonly _level: number;\n\n constructor(private readonly _config: TaskLoggerConfig) {\n this._level = logLevels.indexOf(_config.level);\n }\n\n debug(message: string, properties?: Record<string, unknown>) {\n if (this._level < 4) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"debug\", SeverityNumber.DEBUG, properties);\n }\n\n log(message: string, properties?: Record<string, unknown>) {\n if (this._level < 3) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"log\", SeverityNumber.INFO, properties);\n }\n\n info(message: string, properties?: Record<string, unknown>) {\n if (this._level < 3) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"info\", SeverityNumber.INFO, properties);\n }\n\n warn(message: string, properties?: Record<string, unknown>) {\n if (this._level < 2) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"warn\", SeverityNumber.WARN, properties);\n }\n\n error(message: string, properties?: Record<string, unknown>) {\n if (this._level < 1) return; // [\"none\", \"error\", \"warn\", \"info\", \"debug\"];\n\n this.#emitLog(message, this.#getTimestampInHrTime(), \"error\", SeverityNumber.ERROR, properties);\n }\n\n #emitLog(\n message: string,\n timestamp: ClockTime,\n severityText: string,\n severityNumber: SeverityNumber,\n properties?: Record<string, unknown>\n ) {\n let attributes: Attributes = { ...flattenAttributes(safeJsonProcess(properties)) };\n\n const icon = iconStringForSeverity(severityNumber);\n if (icon !== undefined) {\n attributes[SemanticInternalAttributes.STYLE_ICON] = icon;\n }\n\n this._config.logger.emit({\n severityNumber,\n severityText,\n body: message,\n attributes,\n timestamp,\n });\n }\n\n trace<T>(name: string, fn: (span: Span) => Promise<T>, options?: SpanOptions): Promise<T> {\n return this._config.tracer.startActiveSpan(name, fn, options);\n }\n\n #getTimestampInHrTime(): ClockTime {\n return clock.preciseNow();\n }\n}\n\nexport class NoopTaskLogger implements TaskLogger {\n debug() {}\n log() {}\n info() {}\n warn() {}\n error() {}\n trace<T>(name: string, fn: (span: Span) => Promise<T>): Promise<T> {\n return fn({} as Span);\n }\n}\n\nfunction safeJsonProcess(value?: Record<string, unknown>): Record<string, unknown> | undefined {\n try {\n return JSON.parse(JSON.stringify(value, jsonErrorReplacer));\n } catch {\n return value;\n }\n}\n\nfunction jsonErrorReplacer(key: string, value: unknown) {\n if (value instanceof Error) {\n return {\n name: value.name,\n message: value.message,\n stack: value.stack,\n };\n }\n\n return value;\n}\n","import { SeverityNumber } from \"@opentelemetry/api-logs\";\n\nexport function iconStringForSeverity(severityNumber: SeverityNumber) {\n switch (severityNumber) {\n case SeverityNumber.UNSPECIFIED:\n return undefined;\n case SeverityNumber.TRACE:\n case SeverityNumber.TRACE2:\n case SeverityNumber.TRACE3:\n case SeverityNumber.TRACE4:\n return \"trace\";\n case SeverityNumber.DEBUG:\n case SeverityNumber.DEBUG2:\n case SeverityNumber.DEBUG3:\n case SeverityNumber.DEBUG4:\n return \"debug\";\n case SeverityNumber.INFO:\n case SeverityNumber.INFO2:\n case SeverityNumber.INFO3:\n case SeverityNumber.INFO4:\n return \"info\";\n case SeverityNumber.WARN:\n case SeverityNumber.WARN2:\n case SeverityNumber.WARN3:\n case SeverityNumber.WARN4:\n return \"warn\";\n case SeverityNumber.ERROR:\n case SeverityNumber.ERROR2:\n case SeverityNumber.ERROR3:\n case SeverityNumber.ERROR4:\n return \"error\";\n case SeverityNumber.FATAL:\n case SeverityNumber.FATAL2:\n case SeverityNumber.FATAL3:\n case SeverityNumber.FATAL4:\n return \"fatal\";\n }\n}\n","import { PreciseDate } from \"@google-cloud/precise-date\";\nimport { Clock } from \"./clock\";\n\nexport class SimpleClock implements Clock {\n preciseNow(): [number, number] {\n const now = new PreciseDate();\n const nowStruct = now.toStruct();\n\n return [nowStruct.seconds, nowStruct.nanos];\n }\n\n reset() {\n // do nothing\n }\n}\n","const API_NAME = \"clock\";\n\nimport { getGlobal, registerGlobal } from \"../utils/globals\";\nimport type { Clock, ClockTime } from \"./clock\";\nimport { SimpleClock } from \"./simpleClock\";\n\nconst SIMPLE_CLOCK = new SimpleClock();\n\nexport class ClockAPI {\n private static _instance?: ClockAPI;\n\n private constructor() {}\n\n public static getInstance(): ClockAPI {\n if (!this._instance) {\n this._instance = new ClockAPI();\n }\n\n return this._instance;\n }\n\n public setGlobalClock(clock: Clock): boolean {\n return registerGlobal(API_NAME, clock);\n }\n\n public preciseNow(): ClockTime {\n return this.#getClock().preciseNow();\n }\n\n public reset(): void {\n this.#getClock().reset();\n }\n\n #getClock(): Clock {\n return getGlobal(API_NAME) ?? SIMPLE_CLOCK;\n }\n}\n","// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ClockAPI } from \"./clock\";\n/** Entrypoint for clock API */\nexport const clock = ClockAPI.getInstance();\n","import type * as logsAPI from \"@opentelemetry/api-logs\";\nimport { SeverityNumber } from \"@opentelemetry/api-logs\";\nimport util from \"node:util\";\nimport { iconStringForSeverity } from \"./icons\";\nimport { SemanticInternalAttributes } from \"./semanticInternalAttributes\";\nimport { flattenAttributes } from \"./utils/flattenAttributes\";\nimport { ClockTime } from \"./clock/clock\";\nimport { clock } from \"./clock-api\";\n\nexport class ConsoleInterceptor {\n constructor(\n private readonly logger: logsAPI.Logger,\n private readonly sendToStdIO: boolean\n ) {}\n\n // Intercept the console and send logs to the OpenTelemetry logger\n // during the execution of the callback\n async intercept<T>(console: Console, callback: () => Promise<T>): Promise<T> {\n // Save the original console methods\n const originalConsole = {\n log: console.log,\n info: console.info,\n warn: console.warn,\n error: console.error,\n debug: console.debug,\n };\n\n // Override the console methods\n console.log = this.log.bind(this);\n console.info = this.info.bind(this);\n console.warn = this.warn.bind(this);\n console.error = this.error.bind(this);\n console.debug = this.debug.bind(this);\n\n try {\n return await callback();\n } finally {\n // Restore the original console methods\n console.log = originalConsole.log;\n console.info = originalConsole.info;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n console.debug = originalConsole.debug;\n }\n }\n\n debug(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.DEBUG, this.#getTimestampInHrTime(), \"Debug\", ...args);\n }\n\n log(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.INFO, this.#getTimestampInHrTime(), \"Log\", ...args);\n }\n\n info(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.INFO, this.#getTimestampInHrTime(), \"Info\", ...args);\n }\n\n warn(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.WARN, this.#getTimestampInHrTime(), \"Warn\", ...args);\n }\n\n error(...args: unknown[]): void {\n this.#handleLog(SeverityNumber.ERROR, this.#getTimestampInHrTime(), \"Error\", ...args);\n }\n\n #handleLog(\n severityNumber: SeverityNumber,\n timestamp: ClockTime,\n severityText: string,\n ...args: unknown[]\n ): void {\n const body = util.format(...args);\n\n if (this.sendToStdIO) {\n if (severityNumber === SeverityNumber.ERROR) {\n process.stderr.write(body);\n } else {\n process.stdout.write(body);\n }\n }\n\n const parsed = tryParseJSON(body);\n\n if (parsed.ok) {\n this.logger.emit({\n severityNumber,\n severityText,\n body: getLogMessage(parsed.value, severityText),\n attributes: { ...this.#getAttributes(severityNumber), ...flattenAttributes(parsed.value) },\n timestamp,\n });\n\n return;\n }\n\n this.logger.emit({\n severityNumber,\n severityText,\n body,\n attributes: this.#getAttributes(severityNumber),\n timestamp,\n });\n }\n\n #getTimestampInHrTime(): ClockTime {\n return clock.preciseNow();\n }\n\n #getAttributes(severityNumber: SeverityNumber): logsAPI.LogAttributes {\n const icon = iconStringForSeverity(severityNumber);\n let result: logsAPI.LogAttributes = {};\n\n if (icon !== undefined) {\n result[SemanticInternalAttributes.STYLE_ICON] = icon;\n }\n\n return result;\n }\n}\n\nfunction getLogMessage(value: Record<string, unknown>, fallback: string): string {\n if (typeof value[\"message\"] === \"string\") {\n return value[\"message\"];\n }\n\n if (typeof value[\"msg\"] === \"string\") {\n return value[\"msg\"];\n }\n\n if (typeof value[\"body\"] === \"string\") {\n return value[\"body\"];\n }\n\n if (typeof value[\"error\"] === \"string\") {\n return value[\"error\"];\n }\n\n return fallback;\n}\n\nfunction tryParseJSON(\n value: string\n): { ok: true; value: Record<string, unknown> } | { ok: false; value: string } {\n try {\n const parsed = JSON.parse(value);\n\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return { ok: true, value: parsed };\n }\n\n return { ok: false, value };\n } catch (e) {\n return { ok: false, value };\n }\n}\n","import { TaskFileMetadata, TaskMetadata, TaskMetadataWithFilePath } from \"../schemas\";\nimport { TaskMetadataWithFunctions } from \"../types\";\nimport { TaskCatalog } from \"./catalog\";\n\nexport class StandardTaskCatalog implements TaskCatalog {\n private _taskMetadata: Map<string, TaskMetadata> = new Map();\n private _taskFunctions: Map<string, TaskMetadataWithFunctions[\"fns\"]> = new Map();\n private _taskFileMetadata: Map<string, TaskFileMetadata> = new Map();\n\n registerTaskMetadata(task: TaskMetadataWithFunctions): void {\n const { fns, ...metadata } = task;\n\n this._taskMetadata.set(task.id, metadata);\n this._taskFunctions.set(task.id, fns);\n }\n\n updateTaskMetadata(id: string, updates: Partial<TaskMetadataWithFunctions>): void {\n const existingMetadata = this._taskMetadata.get(id);\n\n if (existingMetadata) {\n this._taskMetadata.set(id, {\n ...existingMetadata,\n ...updates,\n });\n }\n\n if (updates.fns) {\n const existingFunctions = this._taskFunctions.get(id);\n\n if (existingFunctions) {\n this._taskFunctions.set(id, {\n ...existingFunctions,\n ...updates.fns,\n });\n }\n }\n }\n\n registerTaskFileMetadata(id: string, metadata: TaskFileMetadata): void {\n this._taskFileMetadata.set(id, metadata);\n }\n\n // Return all the tasks, without the functions\n getAllTaskMetadata(): Array<TaskMetadataWithFilePath> {\n const result: Array<TaskMetadataWithFilePath> = [];\n\n for (const [id, metadata] of this._taskMetadata) {\n const fileMetadata = this._taskFileMetadata.get(id);\n\n if (!fileMetadata) {\n continue;\n }\n\n result.push({\n ...metadata,\n ...fileMetadata,\n });\n }\n\n return result;\n }\n\n getTaskMetadata(id: string): TaskMetadataWithFilePath | undefined {\n const metadata = this._taskMetadata.get(id);\n const fileMetadata = this._taskFileMetadata.get(id);\n\n if (!metadata || !fileMetadata) {\n return undefined;\n }\n\n return {\n ...metadata,\n ...fileMetadata,\n };\n }\n\n getTask(id: string): TaskMetadataWithFunctions | undefined {\n const metadata = this._taskMetadata.get(id);\n const fileMetadata = this._taskFileMetadata.get(id);\n const fns = this._taskFunctions.get(id);\n\n if (!metadata || !fns || !fileMetadata) {\n return undefined;\n }\n\n return {\n ...metadata,\n ...fileMetadata,\n fns,\n };\n }\n\n taskExists(id: string): boolean {\n return this._taskMetadata.has(id);\n }\n\n disable() {\n // noop\n }\n}\n"]}
|